On Sun, Aug 30, 2015 at 06:57:42PM -0700, Brent Hostetler wrote:
> I could use some help trying to build toybox.
> 
> 
> I have tried building the last three versions and get the same basic errors:
> 
> [rking@rkmini toybox-0.5.2]$ make defconfig
> cc -o kconfig/conf kconfig/conf.c kconfig/zconf.tab.c -DKBUILD_NO_NLS=1 \
>         -DPROJECT_NAME=\"ToyBox\"
> In file included from kconfig/zconf.tab.c:158:0:
> kconfig/zconf.hash.c:161:43: warning: ‘kconf_id_strings_contents’ is static
> but used in inline function ‘kconf_id_lookup’ which is not static
>  #define kconf_id_strings ((const char *) &kconf_id_strings_contents)
>                                            ^
> kconfig/zconf.hash.c:233:44: note: in expansion of macro ‘kconf_id_strings’
>                register const char *s = o + kconf_id_strings;
>                                             ^
> kconfig/zconf.hash.c:226:26: warning: ‘kconf_id_hash’ is static but used in
> inline function ‘kconf_id_lookup’ which is not static
>        register int key = kconf_id_hash (str, len);
>                           ^
> kconfig/zconf.hash.c:177:26: warning: ‘wordlist’ is static but declared in
> inline function ‘kconf_id_lookup’ which is not static
>    static struct kconf_id wordlist[] =
>                           ^
> /tmp/cc8dkAWm.o: In function `zconfparse':
> zconf.tab.c:(.text+0xa59): undefined reference to `kconf_id_lookup'

[snip]

> [rking@rkmini toybox-0.5.2]$ gcc --version
> gcc (GCC) 5.2.0
> Copyright (C) 2015 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Evidently, GCC 5.2, at least as shipped by your distro (Arch? I don't
know who else is that bleeding edge) has found a new way to break things:

refuse to accept use of static variables in non-static inline functions.

This is breaking kconfig (note: we use an old version from Linux 2.6.12
via Busybox that's going to get ripped out and replaced eventually).

I'm not sure about how much sense any of this makes, given that "static"
means different things depending on scope:
-an otherise global object is limited to per-file visibility
-a local object becomes persistent across calls to the function

But it *should* be possible to add a "static" to kconf_id_lookup (in
kconfig/zconf.hash.c_shipped); I have not tested this.

HTH,
Isaac
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to