From: vadim4j at gmail.com <vadim4j@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2] package/ndisc6: fix compilation for glibc < 2.19
Date: Sat, 16 May 2020 18:13:53 +0300 [thread overview]
Message-ID: <20200516151353.GA1424@archlinux> (raw)
In-Reply-To: <20200516161700.57b975ef@windsurf.home>
On Sat, May 16, 2020 at 04:17:00PM +0200, Thomas Petazzoni wrote:
> Hello Vadym,
>
> On Sat, 9 May 2020 22:09:47 +0300
> Vadym Kochan <vadim4j@gmail.com> wrote:
>
> > glibc version before 2.19 version allows to use BSD-mode via #define
> > _BSD_SOURCE, it defines another one
> >
> > __FAVOR_BSD
> >
> > which provides BSD-style tcp/udp headers where fields are different than
> > in GNU version.
> >
> > In glibc > 2.18 there is no such ability to use BSD mode, but it
> > supports both kinds of tcp/udp headers because of using __extension__
> > union.
> >
> > Since trace-{udp,tcp}.c uses BSD-style tcp/udp headers, it fails on
> > toolchains with glibc < 2.19 version.
> >
> > So fix it by defining __FAVOR_BSD define only for tcp/udp headers.
>
> Defining __FAVOR_BSD is not correct, and the whole explanation is a bit
> confused I believe.
>
> The <features.h> macros that start with two underscores, such as
> __FAVOR_BSD are internal defines, they are not meant to be defined/used
> by code using the C library, but only by the C library internally.
>
> Instead, what needs to be done is:
>
> #define _BSD_SOURCE
>
> next to the existing #define _DEFAULT_SOURCE.
>
> For one of the two files, #undef _GNU_SOURCE is present, which is good,
> it will have to be added as to the other file for that fix to work.
>
> From man feature_test_macros:
>
> _BSD_SOURCE (deprecated since glibc 2.20)
>
> Defining this macro with any value causes header files
> to expose BSD-derived definitions.
>
> In glibc versions up to and including 2.18, defining
> this macro also causes BSD definitions to be
> preferred in some situations where standards
> conflict, unless one or more of _SVID_SOURCE,
> _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE,
> _XOPEN_SOURCE_EXTENDED, or _GNU_SOURCE is defined, in
> which case BSD definitions are disfavored. Since glibc
> 2.19, _BSD_SOURCE no longer causes BSD defi? nitions to
> be preferred in case of conflicts.
>
> Since glibc 2.20, this macro is deprecated. It now has
> the same effect as defining _DEFAULT_SOURCE, but
> generates a compile-time warning (unless _DEFAULT_SOURCE
> is also defined). Use _DEFAULT_SOURCE instead. To
> allow code that requires _BSD_SOURCE in glibc 2.19 and
> earlier and _DEFAULT_SOURCE in glibc 2.20 and later to
> compile without warnings, define both _BSD_SOURCE and
> _DEFAULT_SOURCE.
>
> See the last paragraph? They see you should define both _BSD_SOURCE and
> _DEFAULT_SOURCE.
>
> Could you fix your patch, and the commit log, and send an updated
> version?
Sure!
>
> Thanks a lot!
>
> Thomas
> --
> Thomas Petazzoni, CTO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
prev parent reply other threads:[~2020-05-16 15:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-09 19:09 [Buildroot] [PATCH v2] package/ndisc6: fix compilation for glibc < 2.19 Vadym Kochan
2020-05-16 14:17 ` Thomas Petazzoni
2020-05-16 15:13 ` vadim4j at gmail.com [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200516151353.GA1424@archlinux \
--to=vadim4j@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox