This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] ARM: Don't define _SYS_AUXV_H in sysdep.h


On 16 September 2014 14:47, Joseph S. Myers <joseph@codesourcery.com> wrote:
> On Tue, 16 Sep 2014, Will Newton wrote:
>
>> On 12 September 2014 10:04, Joseph S. Myers <joseph@codesourcery.com> wrote:
>> > On Fri, 12 Sep 2014, Will Newton wrote:
>> >
>> >> sysdep.h was defining _SYS_AUXV_H in order to avoid an include guard check
>> >> in hwcap.h. Unfortunately it didn't undefine it so it could leak out into
>> >> code and caused a build failure with -Wimplicit-function-declaration
>> >> building tst-auxv on ARM.
>> >>
>> >> ChangeLog:
>> >>
>> >> 2014-09-11  Will Newton  <will.newton@linaro.org>
>> >>
>> >>       * sysdeps/unix/sysv/linux/arm/bits/hwcap.h: Check for
>> >>       _LINUX_ARM_SYSDEP_H include guard too.
>> >
>> > Rather than referring to a guard for an internal header in an installed
>> > header, I think it would be better to test for _LIBC there.
>>
>> This approach (testing for the sysdep.h guard) is used in sparc and
>> powerpc at present. Testing _LIBC would work but
>
> OK for the original patch then, but please file a bug in Bugzilla to
> eliminate such ad hoc conditionals from installed headers.  In general
> installed headers should have as little as possible that's not actually
> relevant for use of the installed library, and the particular set of
> conditionals used in installed headers in such cases should be minimal
> (_LIBC and _LIBC_TEST?).

I submitted a bugzilla entry here:

https://sourceware.org/bugzilla/show_bug.cgi?id=17399

I am not sure if I got the wording 100% correct. I also added a brief
documentation of _LIBC and _LIBC_TEST here:

https://sourceware.org/glibc/wiki/Conditional%20Code

>> stdio-common/scanf15.c and stdio-common/scanf17.c both #undef _LIBC
>> and break things.
>
> Why does sysdep.h get included from these testcases anyway?  As well as
> moving away from defining _LIBC (and other internal defines) for tests
> unless needed for a particular test, it would also be good to move away
> from tests using the internal includes (if such an include is responsible
> here), instead making them use the versions of headers that actually get
> installed before looking for any other headers in the source tree or
> sysdeps directories.

The full error is:

In file included from ../sysdeps/unix/sysv/linux/arm/sysdep.h:43:0,
                 from ../sysdeps/unix/sysv/linux/lowlevellock-futex.h:22,
                 from ../sysdeps/nptl/lowlevellock.h:23,
                 from ../sysdeps/nptl/bits/stdio-lock.h:23,
                 from ../libio/libio.h:149,
                 from ../libio/stdio.h:74,
                 from scanf15.c:10:
../sysdeps/unix/sysv/linux/arm/bits/hwcap.h:20:3: error: #error "Never
include <bits/hwcap.h> directly; use <sys/auxv.h> instead."

-- 
Will Newton
Toolchain Working Group, Linaro


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]