This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB 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] Check for POSIX_MADV_WILLNEED to support building against the LSB


On 11 June 2012 20:18, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
>> From: Michael Hope <michael.hope@linaro.org>
>> Date: Mon, 11 Jun 2012 18:16:51 +1200
>>
>> On 11 June 2012 17:59, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
>> >> Date: Mon, 11 Jun 2012 16:25:22 +1200
>> >> From: Michael Hope <michael.hope@linaro.org>
>> >>
>> >> The Linux Standard Base APIs include posix_madvise() but don't define
>> >> values for the 'advice' argument. ?Check to see if POSIX_MADV_WILLNEED
>> >> is defined before using.
>> >
>> > What real-world problem does this fix?
>>
>> Being able to build GDB using the LSB tools so that you can make a
>> binary release that works on any Linux distro from RHEL4 and above.
>> We use it for the linaro-toolchain-binaries.
>
> I fear you're using a broken toolchain, because...
>
>> > It makes no sense to have
>> > posix_madvise() but not define any values for the 'advice' argument.
>> > I'd say this is a "bug" in LSB. ?Either they should drop
>> > posix_madvise() from the standard, or include at least the 'advice'
>> > values required by POSIX.
>>
>> The LSB has a policy of not dropping functions. ?I can suggest that
>> they add the advise values for a later version but that will take some
>> time and won't cover existing LSB releases.
>
> Both posix_madvise():
>
> http://www.linuxbase.org/navigator/browse/int_single.php?cmd=list-by-name&Iname=posix_madvise&Ilibrary=libc
>
> and POSIX_MADV_WILLNEED:
>
> http://www.linuxbase.org/navigator/browse/headgroup.php?cmd=list-byheadgroup&HGid=56
>
> were added in LSB 3.2.

I've dug a bit deeper and there seems to be a bug in the LSB 3.2
release.  posix_madvise() was defined but the advice constants weren't
added to the header files.  See sys/mman.h in:
 http://ftp.linuxbase.org/pub/lsb/lsbdev/released-3.2.0/binary/amd64/lsb-build-base-3.2.2-1.x86_64.rpm

Ubuntu ships with this version.  I'll change our build system to use
4.1.3 in the 3.2 compatibility mode instead.

Ta,

-- Michael


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