[3/4] gcc: Add --nostdlib++ option
Commit Message
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>
---
gcc/c-family/c.opt | 4 ++++
gcc/cp/g++spec.c | 1 +
gcc/doc/invoke.texi | 8 ++++++--
gcc/gcc.c | 1 +
4 files changed, 12 insertions(+), 2 deletions(-)
@@ -2190,6 +2190,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
@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
switch (decoded_options[i].opt_index)
{
case OPT_nostdlib:
+ case OPT_nostdlib__:
case OPT_nodefaultlibs:
library = -1;
break;
@@ -236,7 +236,7 @@ in the following sections.
-ftemplate-backtrace-limit=@var{n} @gol
-ftemplate-depth=@var{n} @gol
-fno-threadsafe-statics -fuse-cxa-atexit @gol
--fno-weak -nostdinc++ @gol
+-fno-weak -nostdinc++ -nostdlib++ @gol
-fvisibility-inlines-hidden @gol
-fvisibility-ms-compat @gol
-fext-numeric-literals @gol
@@ -633,7 +633,7 @@ Objective-C and Objective-C++ Dialects}.
@item Linker Options
@xref{Link Options,,Options for Linking}.
@gccoptlist{@var{object-file-name} -fuse-ld=@var{linker} -l@var{library} @gol
--nostartfiles -nodefaultlibs -nolibc -nostdlib @gol
+-nostartfiles -nodefaultlibs -nolibc -nostdlib -nostdlib++ @gol
-e @var{entry} --entry=@var{entry} @gol
-pie -pthread -r -rdynamic @gol
-s -static -static-pie -static-libgcc -static-libstdc++ @gol
@@ -16125,6 +16125,10 @@ library subroutines.
constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
GNU Compiler Collection (GCC) Internals}.)
+@item -nostdlib++
+@opindex nostdlib++
+Do not use the standard system C++ runtime libraries when linking.
+
@item -e @var{entry}
@itemx --entry=@var{entry}
@opindex e
@@ -1167,6 +1167,7 @@ proper position among the other output files. */
%(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