[U-Boot] [PATCH 2/2] tools/kwbimage.c: fix build on darwin

Anatolij Gustschin agust at denx.de
Fri Oct 31 00:27:45 CET 2014


On Thu, 30 Oct 2014 23:11:03 +0100
Anatolij Gustschin <agust at denx.de> wrote:

> On Fri, 24 Oct 2014 23:39:11 +0200
> andreas.devel at googlemail.com wrote:
> 
> > From: Andreas Bießmann <andreas.devel at googlemail.com>
> > 
> > kwbimage uses get_current_dir_name(3) which is a gnu extension and not
> > available on darwin host. Fix this by converting to portable getcwd(3)
> > function.
> > 
> > This patch fixes the following error:
> > ---8<---
> >   HOSTCC  tools/kwbimage.o
> > tools/kwbimage.c:399:16: warning: implicit declaration of function 'get_current_dir_name' is invalid in C99 [-Wimplicit-function-declaration]
> >                         char *cwd = get_current_dir_name();
> >                                     ^
> > tools/kwbimage.c:399:10: warning: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'int' [-Wint-conversion]
> >                         char *cwd = get_current_dir_name();
> >                               ^     ~~~~~~~~~~~~~~~~~~~~~~
> > 2 warnings generated.
> > ...
> > Undefined symbols for architecture x86_64:
> >   "_get_current_dir_name", referenced from:
> >       _image_headersz_v1 in kwbimage.o
> > ld: symbol(s) not found for architecture x86_64
> > --->8---
> > 
> > Signed-off-by: Andreas Bießmann <andreas.devel at googlemail.com>
> > Cc: Stefan Roese <sr at denx.de>
> > 
> > ---
> > 
> >  tools/kwbimage.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> Applied to u-boot-staging. Thanks!

Now I see

tools/kwbimage.c:402:4: warning: ignoring return value of ‘getcwd’,
declared with attribute warn_unused_result [-Wunused-result]

So, additionally applied:

diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 0a388c8..ec52f9e 100644
--- a/tools/kwbimage.c
+++ b/tools/kwbimage.c
@@ -398,13 +398,19 @@ static size_t image_headersz_v1(struct image_tool_params *params,
 		ret = stat(binarye->binary.file, &s);
 		if (ret < 0) {
 			char cwd[PATH_MAX];
+			char *dir = cwd;
+
 			memset(cwd, 0, sizeof(cwd));
-			getcwd(cwd, sizeof(cwd));
+			if (!getcwd(cwd, sizeof(cwd))) {
+				dir = "current working directory";
+				perror("getcwd() failed");
+			}
+
 			fprintf(stderr,
 				"Didn't find the file '%s' in '%s' which is mandatory to generate the image\n"
 				"This file generally contains the DDR3 training code, and should be extracted from an existing bootable\n"
 				"image for your board. See 'kwbimage -x' to extract it from an existing image.\n",
-				binarye->binary.file, cwd);
+				binarye->binary.file, dir);
 			return 0;
 		}
 


More information about the U-Boot mailing list