From: David Raeman <draeman@bbn.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/2] package/Makefile.in should grab HOST_DIR headers using -isystem instead of -I.
Date: Fri, 29 Jul 2016 15:35:19 -0400 [thread overview]
Message-ID: <004001d1e9d0$5773c7d0$065b5770$@bbn.com> (raw)
In-Reply-To: <CAMKF1spxedbMXzPnDU41nEFZdJ1qfc4Y0UqeQwxDaNmR4cmZHg@mail.gmail.com>
Hello,
On Fri, Jul 29, 2016 at 11:09 AM, Khem Raj <raj.khem@gmail.com> wrote:
> with specifying your own -isystem you will be introducing the issue too see
> this thread for more
> https://lists.fedoraproject.org/archives/list/devel at lists.fedoraproject.org/t
> hread/Q5SWCUUMWQ4EMS7CU2CBOZHV3WZYOOTT/
Yes, I see what you mean. GCC-6 is now using #include_next in its C++ standard library header files to help the C++ STL header files properly find their own special copy of stdlib.h. The behavior of #include_next will change depending on the order of the directories in the include search path. Based on these tickets, it looks like a problem is introduced if you use -isystem to specify a directory that gcc would already have considered as part of its default system include directories. Doing so causes that particular directory to be moved up earlier in the search order, so the internal use of #include_next ends up failing because it is relying on the "known" order of the default system include directories. Note that this is not a problem with the -I flag, because gcc will ignore the -I flag if the provided directory is in the default search path. It's only -isystem that might rearrange the order of default directories.
Here is another ticket in the GCC tracker for this issue, marked WONTFIX: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129. The recommendation is to not use -isystem for directories that gcc already includes in the default search path.
It's not clear to me that the specific use of -isystem introduced in this patch would violate this assertion. Are there configurations for buildroot where "$(HOST_DIR)/usr/include" can resolve to a default include directory as listed in https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html ? It's not possible for my particular use, but I don't know all the uses of buildroot well enough to make that statement in the blanket general case.
However, I still very much appreciate the overall point you make - that use of the flag can cause subtle and unintended consequences. If the maintainers choose to back the patch out, I can find another way to resolve my original issue by submitting a patch to u-boot to ensure it prefers its modified copy of libfdt.h instead of the possibly-installed system copy. I still believe the use of -isystem here is correct in a strict technical sense, because "$(HOST_DIR)/usr/include" is truly a system include directory at a non-standard location. But I understand that some packages incorrectly assume that -I is the only way to add include paths and don't anticipate the use of -isystem. Case in point, the Python package I just submitted a patch for.
Cheers,
David
next prev parent reply other threads:[~2016-07-29 19:35 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-25 19:52 [Buildroot] [PATCH 1/2] package/Makefile.in should grab HOST_DIR headers using -isystem instead of -I David Raeman
2016-07-25 19:52 ` [Buildroot] [PATCH 2/2] host-dtc: Install libftd and associated header files David Raeman
2016-07-25 20:01 ` Thomas Petazzoni
2016-07-25 20:26 ` David Raeman
2016-07-25 21:39 ` Yann E. MORIN
2016-07-25 21:52 ` [Buildroot] [PATCH 1/2] package/Makefile.in should grab HOST_DIR headers using -isystem instead of -I Yann E. MORIN
2016-07-25 21:57 ` Thomas Petazzoni
2016-07-28 22:00 ` Yann E. MORIN
2016-07-28 22:04 ` Khem Raj
2016-07-29 7:32 ` Thomas Petazzoni
2016-07-29 8:16 ` Khem Raj
2016-07-29 9:23 ` Thomas Petazzoni
2016-07-29 15:08 ` Khem Raj
2016-07-29 19:35 ` David Raeman [this message]
2016-07-29 21:15 ` Yann E. MORIN
2016-07-30 14:57 ` David Raeman
2016-08-05 4:32 ` Khem Raj
2016-08-05 4:30 ` Khem Raj
2016-08-02 21:39 ` Thomas Petazzoni
2016-07-29 0:09 ` David Raeman
2016-07-29 4:18 ` [Buildroot] [PATCH 1/1] host-python: Find headers provided by -isystem flag in CPPFLAGS David Raeman
2016-08-01 21:59 ` [Buildroot] [PATCH 1/2] package/Makefile.in should grab HOST_DIR headers using -isystem instead of -I Yann E. MORIN
2016-08-01 22:19 ` Yann E. MORIN
2016-08-02 12:21 ` David Raeman
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='004001d1e9d0$5773c7d0$065b5770$@bbn.com' \
--to=draeman@bbn.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