All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.