[U-Boot] [PATCH 1/2] Update i386 code (sc520_cdp)

Graeme Russ graeme.russ at gmail.com
Wed Sep 10 13:54:35 CEST 2008


Dear Wolfgang,

On Wed, Sep 10, 2008 at 7:32 AM, Wolfgang Denk <wd at denx.de> wrote:
> Dear "Graeme Russ",
>
> In message <d66caabb0809090408l32562cfch7672814b944dbede at mail.gmail.com> you wrote:
>>

>> >
>> > Including <asm/string.h> seems bogus to me as this is already done in
>> > <linux/string.h> which is  included  just  two  lines  above.  Please
>> > check.
>>
>> I've rechecked, but removing this include results in an implicit
>> declaration of function 'strncpy' on line 401 of /include/image.h
>
> But this makes no sense to me. That's the relevant code from
> "include/linux/string.h":
>
>  18 /*
>  19  * Include machine specific inline routines
>  20  */
>  21 #include <asm/string.h>
>  22
>  23 #ifndef __HAVE_ARCH_STRCPY
>  24 extern char * strcpy(char *,const char *);
>  25 #endif
>  26 #ifndef __HAVE_ARCH_STRNCPY
>  27 extern char * strncpy(char *,const char *, __kernel_size_t);
>  28 #endif
>
> You include <linux/string.h>, which in turn unconditionally  includes
> <asm/string.h>,  so including <asm/string.h> another time in makes no
> sense to me.
>
> Can you please dig a bit deeper  what's  happening  there?  "gcc  -E"
> might help...
>

OK, I've found the source of the confusion...

The warning occurs when compiling /examples/82559_eeprom.c (which is
only built for i386 architectures). This file #defines _PPC_STRING_H_
and _LINUX_STRING_H_. It is the #define _LINUX_STRING_H_ which
prevents the entire /include/linux/string.h from being processed, and
hence the necessity to include /include/asm/string.h

I don't know why _PPC_STRING_H_ is #defined - The only attachment to
_PPC_STRING_H_ is the OXC board (PPC platform) which uses
eepro100_eeprom.c which, according to lines 130-135 of
/examples/Makefile is '# Utility for resetting i82559 EEPROM', BUT,
eepro100_eeprom.c is not built for i386 and 82559_eeprom.c is not
built for PPC

So I guess it gets more confusing, not less

Back to /examples/82559_eeprom.c - If I remove #define
_LINUX_STRING_H_ from 82559_eeprom.c and the extra
/include/asm/string.h from /include/image.h, Make all succeeds with
only an ld warning (cannot find entry symbol 82559_eeprom; defaulting
to 0000000000040000)

Should I re-pull (rebase? - sorry, not up with all the lingo yet) the
master git repository, check the patch (with above changes) applies
cleanly and resubmit (after checking my email client) or does this all
warrant a closer inspection?

Also remember that I have had to disable SATA and PCI for the
sc520_cdp as mentioned previously and my primary interest is not in
the sc520_cdp (I don't own one, so I can't test this build) but rather
another sc520 based product I am trying to port linux to.

Regards,

Graeme


More information about the U-Boot mailing list