* [PATCH 1/3] tools: Remove the out-of-date MinGW support codes
@ 2020-04-18 8:59 Bin Meng
2020-04-18 8:59 ` [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data() Bin Meng
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Bin Meng @ 2020-04-18 8:59 UTC (permalink / raw)
To: u-boot
From: Bin Meng <bin.meng@windriver.com>
MinGW build for U-Boot tools has been broken for years. The official
support of Windows build is now MSYS2. Remove the MinGW support codes.
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---
README | 10 -----
tools/mingw_support.c | 113 --------------------------------------------------
tools/mingw_support.h | 45 --------------------
tools/os_support.c | 7 ++--
tools/os_support.h | 3 --
5 files changed, 3 insertions(+), 175 deletions(-)
delete mode 100644 tools/mingw_support.c
delete mode 100644 tools/mingw_support.h
diff --git a/README b/README
index 19dae14..d0af6c6 100644
--- a/README
+++ b/README
@@ -3186,16 +3186,6 @@ necessary. For example using the ELDK on a 4xx CPU, please enter:
$ CROSS_COMPILE=ppc_4xx-
$ export CROSS_COMPILE
-Note: If you wish to generate Windows versions of the utilities in
- the tools directory you can use the MinGW toolchain
- (http://www.mingw.org). Set your HOST tools to the MinGW
- toolchain and execute 'make tools'. For example:
-
- $ make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools
-
- Binaries such as tools/mkimage.exe will be created which can
- be executed on computers running Windows.
-
U-Boot is intended to be simple to build. After installing the
sources you must configure U-Boot for one specific board type. This
is done by typing:
diff --git a/tools/mingw_support.c b/tools/mingw_support.c
deleted file mode 100644
index 2b17bf7..0000000
--- a/tools/mingw_support.c
+++ /dev/null
@@ -1,113 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright 2008 Extreme Engineering Solutions, Inc.
- *
- * mmap/munmap implementation derived from:
- * Clamav Native Windows Port : mmap win32 compatibility layer
- * Copyright (c) 2005-2006 Gianluigi Tiesi <sherpya@netfarm.it>
- * Parts by Kees Zeelenberg <kzlg@users.sourceforge.net> (LibGW32C)
- */
-
-#include "mingw_support.h"
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#include <io.h>
-
-int fsync(int fd)
-{
- return _commit(fd);
-}
-
-void *mmap(void *addr, size_t len, int prot, int flags, int fd, int offset)
-{
- void *map = NULL;
- HANDLE handle = INVALID_HANDLE_VALUE;
- DWORD cfm_flags = 0, mvf_flags = 0;
-
- switch (prot) {
- case PROT_READ | PROT_WRITE:
- cfm_flags = PAGE_READWRITE;
- mvf_flags = FILE_MAP_ALL_ACCESS;
- break;
- case PROT_WRITE:
- cfm_flags = PAGE_READWRITE;
- mvf_flags = FILE_MAP_WRITE;
- break;
- case PROT_READ:
- cfm_flags = PAGE_READONLY;
- mvf_flags = FILE_MAP_READ;
- break;
- default:
- return MAP_FAILED;
- }
-
- handle = CreateFileMappingA((HANDLE) _get_osfhandle(fd), NULL,
- cfm_flags, HIDWORD(len), LODWORD(len), NULL);
- if (!handle)
- return MAP_FAILED;
-
- map = MapViewOfFile(handle, mvf_flags, HIDWORD(offset),
- LODWORD(offset), len);
- CloseHandle(handle);
-
- if (!map)
- return MAP_FAILED;
-
- return map;
-}
-
-int munmap(void *addr, size_t len)
-{
- if (!UnmapViewOfFile(addr))
- return -1;
-
- return 0;
-}
-
-/* Reentrant string tokenizer. Generic version.
- Copyright (C) 1991,1996-1999,2001,2004,2007 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- */
-
-/* Parse S into tokens separated by characters in DELIM.
- If S is NULL, the saved pointer in SAVE_PTR is used as
- the next starting point. For example:
- char s[] = "-abc-=-def";
- char *sp;
- x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
- x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
- x = strtok_r(NULL, "=", &sp); // x = NULL
- // s = "abc\0-def\0"
-*/
-char *strtok_r(char *s, const char *delim, char **save_ptr)
-{
- char *token;
-
- if (s == NULL)
- s = *save_ptr;
-
- /* Scan leading delimiters. */
- s += strspn(s, delim);
- if (*s == '\0') {
- *save_ptr = s;
- return NULL;
- }
-
- /* Find the end of the token. */
- token = s;
- s = strpbrk (token, delim);
- if (s == NULL) {
- /* This token finishes the string. */
- *save_ptr = memchr(token, '\0', strlen(token));
- } else {
- /* Terminate the token and make *SAVE_PTR point past it. */
- *s = '\0';
- *save_ptr = s + 1;
- }
- return token;
-}
-
-#include "getline.c"
diff --git a/tools/mingw_support.h b/tools/mingw_support.h
deleted file mode 100644
index e0b8ac3..0000000
--- a/tools/mingw_support.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.0+ */
-/*
- * Copyright 2008 Extreme Engineering Solutions, Inc.
- */
-
-#ifndef __MINGW_SUPPORT_H_
-#define __WINGW_SUPPORT_H_ 1
-
-/* Defining __INSIDE_MSYS__ helps to prevent u-boot/mingw overlap */
-#define __INSIDE_MSYS__ 1
-
-#include <windows.h>
-
-/* mmap protections */
-#define PROT_READ 0x1 /* Page can be read */
-#define PROT_WRITE 0x2 /* Page can be written */
-#define PROT_EXEC 0x4 /* Page can be executed */
-#define PROT_NONE 0x0 /* Page can not be accessed */
-
-/* Sharing types (must choose one and only one of these) */
-#define MAP_SHARED 0x01 /* Share changes */
-#define MAP_PRIVATE 0x02 /* Changes are private */
-
-/* File perms */
-#ifndef S_IRGRP
-# define S_IRGRP 0
-#endif
-#ifndef S_IWGRP
-# define S_IWGRP 0
-#endif
-
-/* Windows 64-bit access macros */
-#define LODWORD(x) ((DWORD)((DWORDLONG)(x)))
-#define HIDWORD(x) ((DWORD)(((DWORDLONG)(x) >> 32) & 0xffffffff))
-
-typedef UINT uint;
-typedef ULONG ulong;
-
-int fsync(int fd);
-void *mmap(void *, size_t, int, int, int, int);
-int munmap(void *, size_t);
-char *strtok_r(char *s, const char *delim, char **save_ptr);
-#include "getline.h"
-
-#endif /* __MINGW_SUPPORT_H_ */
diff --git a/tools/os_support.c b/tools/os_support.c
index 21e43c8..6890c31 100644
--- a/tools/os_support.c
+++ b/tools/os_support.c
@@ -3,13 +3,12 @@
* Copyright 2009 Extreme Engineering Solutions, Inc.
*/
+#include "compiler.h"
+
/*
* Include additional files required for supporting different operating systems
*/
-#include "compiler.h"
-#ifdef __MINGW32__
-#include "mingw_support.c"
-#endif
+
#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
#include "getline.c"
#endif
diff --git a/tools/os_support.h b/tools/os_support.h
index 3a2106e..471d605 100644
--- a/tools/os_support.h
+++ b/tools/os_support.h
@@ -11,9 +11,6 @@
/*
* Include additional files required for supporting different operating systems
*/
-#ifdef __MINGW32__
-#include "mingw_support.h"
-#endif
#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
#include "getline.h"
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data()
2020-04-18 8:59 [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Bin Meng
@ 2020-04-18 8:59 ` Bin Meng
2020-04-24 17:12 ` Tom Rini
2020-04-18 8:59 ` [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data() Bin Meng
2020-04-24 17:12 ` [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Tom Rini
2 siblings, 1 reply; 6+ messages in thread
From: Bin Meng @ 2020-04-18 8:59 UTC (permalink / raw)
To: u-boot
From: Lihua Zhao <lihua.zhao@windriver.com>
Without calling munmap(), the follow-up call to open() the same file
with a flag O_TRUNC seems not to cause any issue on Linux, but it fails
on Windows with error like below:
Can't open kernel_fdt.itb.tmp: Permission denied
Fix this by unmapping the memory before closing fd in fit_import_data().
Signed-off-by: Lihua Zhao <lihua.zhao@windriver.com>
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---
tools/fit_image.c | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/tools/fit_image.c b/tools/fit_image.c
index dd61a81..05c1f00 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -556,21 +556,21 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
fprintf(stderr, "%s: Failed to allocate memory (%d bytes)\n",
__func__, size);
ret = -ENOMEM;
- goto err_has_fd;
+ goto err_munmap;
}
ret = fdt_open_into(old_fdt, fdt, size);
if (ret) {
debug("%s: Failed to expand FIT: %s\n", __func__,
fdt_strerror(errno));
ret = -EINVAL;
- goto err_has_fd;
+ goto err_munmap;
}
images = fdt_path_offset(fdt, FIT_IMAGES_PATH);
if (images < 0) {
debug("%s: Cannot find /images node: %d\n", __func__, images);
ret = -EINVAL;
- goto err_has_fd;
+ goto err_munmap;
}
for (node = fdt_first_subnode(fdt, images);
@@ -591,10 +591,12 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
debug("%s: Failed to write property: %s\n", __func__,
fdt_strerror(ret));
ret = -EINVAL;
- goto err_has_fd;
+ goto err_munmap;
}
}
+ munmap(old_fdt, sbuf.st_size);
+
/* Close the old fd so we can re-use it. */
close(fd);
@@ -609,22 +611,24 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
fprintf(stderr, "%s: Can't open %s: %s\n",
params->cmdname, fname, strerror(errno));
ret = -EIO;
- goto err_no_fd;
+ goto err;
}
if (write(fd, fdt, new_size) != new_size) {
debug("%s: Failed to write external data to file %s\n",
__func__, strerror(errno));
ret = -EIO;
- goto err_has_fd;
+ goto err;
}
- ret = 0;
-
-err_has_fd:
+ free(fdt);
close(fd);
-err_no_fd:
+ return 0;
+
+err_munmap:
munmap(old_fdt, sbuf.st_size);
+err:
free(fdt);
+ close(fd);
return ret;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data()
2020-04-18 8:59 [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Bin Meng
2020-04-18 8:59 ` [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data() Bin Meng
@ 2020-04-18 8:59 ` Bin Meng
2020-04-24 17:13 ` Tom Rini
2020-04-24 17:12 ` [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Tom Rini
2 siblings, 1 reply; 6+ messages in thread
From: Bin Meng @ 2020-04-18 8:59 UTC (permalink / raw)
To: u-boot
From: Bin Meng <bin.meng@windriver.com>
If given ptr to free() is NULL, no operation is performed.
Hence we can just free buf directly in fit_extract_data().
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---
tools/fit_image.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/fit_image.c b/tools/fit_image.c
index 05c1f00..965061d 100644
--- a/tools/fit_image.c
+++ b/tools/fit_image.c
@@ -527,8 +527,7 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
err_munmap:
munmap(fdt, sbuf.st_size);
err:
- if (buf)
- free(buf);
+ free(buf);
close(fd);
return ret;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 1/3] tools: Remove the out-of-date MinGW support codes
2020-04-18 8:59 [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Bin Meng
2020-04-18 8:59 ` [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data() Bin Meng
2020-04-18 8:59 ` [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data() Bin Meng
@ 2020-04-24 17:12 ` Tom Rini
2 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2020-04-24 17:12 UTC (permalink / raw)
To: u-boot
On Sat, Apr 18, 2020 at 01:59:09AM -0700, Bin Meng wrote:
> From: Bin Meng <bin.meng@windriver.com>
>
> MinGW build for U-Boot tools has been broken for years. The official
> support of Windows build is now MSYS2. Remove the MinGW support codes.
>
> Signed-off-by: Bin Meng <bin.meng@windriver.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200424/9777e8c3/attachment.sig>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data()
2020-04-18 8:59 ` [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data() Bin Meng
@ 2020-04-24 17:12 ` Tom Rini
0 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2020-04-24 17:12 UTC (permalink / raw)
To: u-boot
On Sat, Apr 18, 2020 at 01:59:10AM -0700, Bin Meng wrote:
> From: Lihua Zhao <lihua.zhao@windriver.com>
>
> Without calling munmap(), the follow-up call to open() the same file
> with a flag O_TRUNC seems not to cause any issue on Linux, but it fails
> on Windows with error like below:
>
> Can't open kernel_fdt.itb.tmp: Permission denied
>
> Fix this by unmapping the memory before closing fd in fit_import_data().
>
> Signed-off-by: Lihua Zhao <lihua.zhao@windriver.com>
> Signed-off-by: Bin Meng <bin.meng@windriver.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200424/9d19af36/attachment.sig>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data()
2020-04-18 8:59 ` [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data() Bin Meng
@ 2020-04-24 17:13 ` Tom Rini
0 siblings, 0 replies; 6+ messages in thread
From: Tom Rini @ 2020-04-24 17:13 UTC (permalink / raw)
To: u-boot
On Sat, Apr 18, 2020 at 01:59:11AM -0700, Bin Meng wrote:
> From: Bin Meng <bin.meng@windriver.com>
>
> If given ptr to free() is NULL, no operation is performed.
> Hence we can just free buf directly in fit_extract_data().
>
> Signed-off-by: Bin Meng <bin.meng@windriver.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200424/dc491123/attachment.sig>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-04-24 17:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-18 8:59 [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Bin Meng
2020-04-18 8:59 ` [PATCH 2/3] mkimage: fit: Unmmap the memory before closing fd in fit_import_data() Bin Meng
2020-04-24 17:12 ` Tom Rini
2020-04-18 8:59 ` [PATCH 3/3] mkimage: fit: Free buf directly in fit_extract_data() Bin Meng
2020-04-24 17:13 ` Tom Rini
2020-04-24 17:12 ` [PATCH 1/3] tools: Remove the out-of-date MinGW support codes Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox