From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2] package/ndisc6: fix compilation for glibc < 2.19
Date: Sat, 16 May 2020 16:17:00 +0200 [thread overview]
Message-ID: <20200516161700.57b975ef@windsurf.home> (raw)
In-Reply-To: <20200509190947.453850-1-vadim4j@gmail.com>
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?
Thanks a lot!
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2020-05-16 14:17 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 [this message]
2020-05-16 15:13 ` vadim4j at gmail.com
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=20200516161700.57b975ef@windsurf.home \
--to=thomas.petazzoni@bootlin.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