mirror of
git://git.yoctoproject.org/poky
synced 2026-09-02 17:32:21 +00:00
I took 5 of our patches and submitted to upstream gcc. This highlighted that patches 0026 and 0018 should be merged together and some tweaks were made to try and make it acceptable to upstream. The other patches have their headers updated to match what was submitted. The libstdc++ option patch was also cleaned up ready for upstream as the documentation wasn't quite right. The CXXFLAGS_FOR_BUILD piece of 0026 is separated out into a new patch which can be submitted separately to upstream. Two of the patches have been merged, status updated accordinly. (From OE-Core rev: df9b8ec56ff29f14feb1fde6acbdf9c4667430cf) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
119 lines
4.3 KiB
Diff
119 lines
4.3 KiB
Diff
From: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
Subject: [PATCH 3/5] gcc: Add --nostdlib++ option
|
|
|
|
[gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
|
|
will not run correctly since by default the linker will try to link against libstdc++
|
|
which shouldn't exist yet. We need an option to disable -lstdc++
|
|
option whilst leaving -lc, -lgcc and other automatic library dependencies added by gcc
|
|
driver. This patch adds such an option which only disables the -lstdc++.]
|
|
|
|
[A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
|
|
do this officially, the likely answer is don't build libstdc++ separately.]
|
|
|
|
OpenEmbedded/Yocto Project builds libgcc and the other gcc runtime libraries
|
|
separately from the compiler and slightly differently to the standard gcc build.
|
|
|
|
In general this works well but in trying to build them separately we run into
|
|
an issue since we're using our gcc, not xgcc and there is no way to tell configure
|
|
to use libgcc but not look for libstdc++.
|
|
|
|
This adds such an option allowing such configurations to work.
|
|
|
|
2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
|
|
gcc/c-family/ChangeLog:
|
|
|
|
* c.opt: Add --nostdlib++ option
|
|
|
|
gcc/cp/ChangeLog:
|
|
|
|
* g++spec.c (lang_specific_driver): Add --nostdlib++ option
|
|
|
|
gcc/ChangeLog:
|
|
|
|
* doc/invoke.texi: Document --nostdlib++ option
|
|
* gcc.c: Add --nostdlib++ option
|
|
|
|
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
|
|
|
Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582724.html]
|
|
---
|
|
gcc/c-family/c.opt | 4 ++++
|
|
gcc/cp/g++spec.c | 1 +
|
|
gcc/doc/invoke.texi | 8 +++++++-
|
|
gcc/gcc.c | 1 +
|
|
4 files changed, 13 insertions(+), 1 deletion(-)
|
|
|
|
Index: gcc-11.2.0/gcc/c-family/c.opt
|
|
===================================================================
|
|
--- gcc-11.2.0.orig/gcc/c-family/c.opt
|
|
+++ gcc-11.2.0/gcc/c-family/c.opt
|
|
@@ -2153,6 +2153,10 @@ nostdinc++
|
|
C++ ObjC++
|
|
Do not search standard system include directories for C++.
|
|
|
|
+nostdlib++
|
|
+Driver
|
|
+Do not link standard C++ runtime library
|
|
+
|
|
o
|
|
C ObjC C++ ObjC++ Joined Separate
|
|
; Documented in common.opt
|
|
Index: gcc-11.2.0/gcc/cp/g++spec.c
|
|
===================================================================
|
|
--- gcc-11.2.0.orig/gcc/cp/g++spec.c
|
|
+++ gcc-11.2.0/gcc/cp/g++spec.c
|
|
@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_
|
|
switch (decoded_options[i].opt_index)
|
|
{
|
|
case OPT_nostdlib:
|
|
+ case OPT_nostdlib__:
|
|
case OPT_nodefaultlibs:
|
|
library = -1;
|
|
break;
|
|
Index: gcc-11.2.0/gcc/doc/invoke.texi
|
|
===================================================================
|
|
--- gcc-11.2.0.orig/gcc/doc/invoke.texi
|
|
+++ gcc-11.2.0/gcc/doc/invoke.texi
|
|
@@ -239,6 +239,7 @@ in the following sections.
|
|
-fno-weak -nostdinc++ @gol
|
|
-fvisibility-inlines-hidden @gol
|
|
-fvisibility-ms-compat @gol
|
|
+-nostdlib++ @gol
|
|
-fext-numeric-literals @gol
|
|
-flang-info-include-translate@r{[}=@var{header}@r{]} @gol
|
|
-flang-info-include-translate-not @gol
|
|
@@ -632,7 +633,7 @@ Objective-C and Objective-C++ Dialects}.
|
|
-pie -pthread -r -rdynamic @gol
|
|
-s -static -static-pie -static-libgcc -static-libstdc++ @gol
|
|
-static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
|
|
--shared -shared-libgcc -symbolic @gol
|
|
+-shared -shared-libgcc -symbolic -nostdlib++ @gol
|
|
-T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol
|
|
-u @var{symbol} -z @var{keyword}}
|
|
|
|
@@ -15721,6 +15722,11 @@ Specify that the program entry point is
|
|
interpreted by the linker; the GNU linker accepts either a symbol name
|
|
or an address.
|
|
|
|
+@item -nostdlib++
|
|
+@opindex nostdlib++
|
|
+Do not use the standard system C++ runtime libraries when linking.
|
|
+Only the libraries you specify will be passed to the linker.
|
|
+
|
|
@item -pie
|
|
@opindex pie
|
|
Produce a dynamically linked position independent executable on targets
|
|
Index: gcc-11.2.0/gcc/gcc.c
|
|
===================================================================
|
|
--- gcc-11.2.0.orig/gcc/gcc.c
|
|
+++ gcc-11.2.0/gcc/gcc.c
|
|
@@ -1162,6 +1162,7 @@ proper position among the other output f
|
|
%(mflib) " STACK_SPLIT_SPEC "\
|
|
%{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
|
|
%{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\
|
|
+ %{!nostdlib++:}\
|
|
%{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} \n%(post_link) }}}}}}"
|
|
#endif
|
|
|