diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-09-21 01:38:24 +0600 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2018-09-20 20:38:24 +0100 |
commit | 0b7fb27b698da38fd13108ecc914613f85f66f9d (patch) | |
tree | e5da332a4a269cbf732f9bd7cb04ba1727313251 /gcc | |
parent | 468e1ef4be47810052687c8193d106e591c74bc4 (diff) | |
download | gcc-0b7fb27b698da38fd13108ecc914613f85f66f9d.zip gcc-0b7fb27b698da38fd13108ecc914613f85f66f9d.tar.gz gcc-0b7fb27b698da38fd13108ecc914613f85f66f9d.tar.bz2 |
Fix and document -r option
The option has existed and been working for years,
make sure it implies the right extra options, and list
it in the documentation.
2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io>
gcc/
* gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib.
(VTABLE_VERIFICATION_SPEC): Likewise.
(SANITIZER_EARLY_SPEC): Likewise.
(SANITIZER_SPEC): Likewise.
* config/darwin.h (LINK_COMMAND_SPEC): Likewise.
* doc/invoke.texi (Link Options): Document -r.
gcc/cp/
* g++spec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/fortran/
* gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/go/
* gospec.c (lang_specific_driver): Handle -r like -nostdlib.
gcc/testsuite/
* g++.dg/ipa/pr64059.C: Removed now redundant -nostdlib.
* g++.dg/lto/20081109-1_0.C: Likewise.
* g++.dg/lto/20090302_0.C: Likewise.
* g++.dg/lto/pr45621_0.C: Likewise.
* g++.dg/lto/pr60567_0.C: Likewise.
* g++.dg/lto/pr62026.C: Likewise.
* gcc.dg/lto/pr45736_0.c: Likewise.
* gcc.dg/lto/pr52634_0.c: Likewise.
* gfortran.dg/lto/20091016-1_0.f90: Likewise.
* gfortran.dg/lto/pr79108_0.f90: Likewise.
From-SVN: r264451
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/darwin.h | 8 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/g++spec.c | 1 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 7 | ||||
-rw-r--r-- | gcc/fortran/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fortran/gfortranspec.c | 1 | ||||
-rw-r--r-- | gcc/gcc.c | 18 | ||||
-rw-r--r-- | gcc/go/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/go/gospec.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/pr64059.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/20081109-1_0.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/20090302_0.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr45621_0.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr60567_0.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr62026.C | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/pr45736_0.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/pr52634_0.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 | 2 |
21 files changed, 66 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 361dfc4..8be6771 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> + + * gcc.c (LINK_COMMAND_SPEC): Handle -r like -nostdlib. + (VTABLE_VERIFICATION_SPEC): Likewise. + (SANITIZER_EARLY_SPEC): Likewise. + (SANITIZER_SPEC): Likewise. + * config/darwin.h (LINK_COMMAND_SPEC): Likewise. + * doc/invoke.texi (Link Options): Document -r. + 2018-09-20 Richard Biener <rguenther@suse.de> PR middle-end/87054 diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index cd6d652..87f6102 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -180,20 +180,20 @@ extern GTY(()) int darwin_ms_struct; "%X %{s} %{t} %{Z} %{u*} \ %{e*} %{r} \ %{o*}%{!o:-o a.out} \ - %{!nostdlib:%{!nostartfiles:%S}} \ + %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \ %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ %{fgnu-tm: \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \ - %{!nostdlib:%{!nodefaultlibs:\ + %{!nostdlib:%{!r:%{!nodefaultlibs:\ %{%:sanitize(address): -lasan } \ %{%:sanitize(undefined): -lubsan } \ %(link_ssp) \ " DARWIN_EXPORT_DYNAMIC " %<rdynamic \ %(link_gcc_c_sequence) \ - }}\ - %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}" + }}}\ + %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} }}}}}}}" #define DSYMUTIL "\ndsymutil" diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c5072d5..0260ff6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> + + * g++spec.c (lang_specific_driver): Handle -r like -nostdlib. + 2018-09-20 Jason Merrill <jason@redhat.com> PR c++/87075 - ICE with constexpr array initialization. diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c index 443a174..8c81e09 100644 --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c @@ -184,6 +184,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, break; case OPT_c: + case OPT_r: case OPT_S: case OPT_E: case OPT_M: diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b3b50c2..e565f85 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -521,7 +521,7 @@ Objective-C and Objective-C++ Dialects}. @xref{Link Options,,Options for Linking}. @gccoptlist{@var{object-file-name} -fuse-ld=@var{linker} -l@var{library} @gol -nostartfiles -nodefaultlibs -nolibc -nostdlib @gol --pie -pthread -rdynamic @gol +-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 @@ -12586,6 +12586,11 @@ x86 Cygwin and MinGW targets. On some targets this option also sets flags for the preprocessor, so it should be used consistently for both compilation and linking. +@item -r +@opindex r +Produce a relocatable object as output. This is also known as partial +linking. + @item -rdynamic @opindex rdynamic Pass the flag @option{-export-dynamic} to the ELF linker, on targets diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 7cbda09..dbd05d2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> + + * gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib. + 2018-09-20 Janus Weil <janus@gcc.gnu.org> * gfortran.h (gfc_str_startswith): New macro. diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 4ba3a8d..7aa2dd7 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -243,6 +243,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, case OPT_nostdlib: case OPT_nodefaultlibs: case OPT_c: + case OPT_r: case OPT_S: case OPT_fsyntax_only: case OPT_E: @@ -980,20 +980,20 @@ proper position among the other output files. */ /* Linker command line options for -fsanitize= early on the command line. */ #ifndef SANITIZER_EARLY_SPEC #define SANITIZER_EARLY_SPEC "\ -%{!nostdlib:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_EARLY_SPEC "} \ +%{!nostdlib:%{!r:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_EARLY_SPEC "} \ %{%:sanitize(thread):" LIBTSAN_EARLY_SPEC "} \ - %{%:sanitize(leak):" LIBLSAN_EARLY_SPEC "}}}" + %{%:sanitize(leak):" LIBLSAN_EARLY_SPEC "}}}}" #endif /* Linker command line options for -fsanitize= late on the command line. */ #ifndef SANITIZER_SPEC #define SANITIZER_SPEC "\ -%{!nostdlib:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_SPEC "\ +%{!nostdlib:%{!r:%{!nodefaultlibs:%{%:sanitize(address):" LIBASAN_SPEC "\ %{static:%ecannot specify -static with -fsanitize=address}}\ %{%:sanitize(thread):" LIBTSAN_SPEC "\ %{static:%ecannot specify -static with -fsanitize=thread}}\ %{%:sanitize(undefined):" LIBUBSAN_SPEC "}\ - %{%:sanitize(leak):" LIBLSAN_SPEC "}}}" + %{%:sanitize(leak):" LIBLSAN_SPEC "}}}}" #endif #ifndef POST_LINK_SPEC @@ -1007,8 +1007,8 @@ proper position among the other output files. */ #ifndef VTABLE_VERIFICATION_SPEC #if ENABLE_VTABLE_VERIFY #define VTABLE_VERIFICATION_SPEC "\ -%{!nostdlib:%{fvtable-verify=std: -lvtv -u_vtable_map_vars_start -u_vtable_map_vars_end}\ - %{fvtable-verify=preinit: -lvtv -u_vtable_map_vars_start -u_vtable_map_vars_end}}" +%{!nostdlib:%{!r:%{fvtable-verify=std: -lvtv -u_vtable_map_vars_start -u_vtable_map_vars_end}\ + %{fvtable-verify=preinit: -lvtv -u_vtable_map_vars_start -u_vtable_map_vars_end}}}" #else #define VTABLE_VERIFICATION_SPEC "\ %{fvtable-verify=none:} \ @@ -1040,7 +1040,7 @@ proper position among the other output files. */ %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC \ "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \ "%X %{o*} %{e*} %{N} %{n} %{r}\ - %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} \ + %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \ %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \ VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \ %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ @@ -1048,8 +1048,8 @@ proper position among the other output files. */ %{fgnu-tm:%:include(libitm.spec)%(link_itm)}\ %(mflib) " STACK_SPLIT_SPEC "\ %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \ - %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ - %{!nostdlib:%{!nostartfiles:%E}} %{T*} \n%(post_link) }}}}}}" + %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\ + %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} \n%(post_link) }}}}}}" #endif #ifndef LINK_LIBGCC_SPEC diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index b032a27..3512922 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> + + * gospec.c (lang_specific_driver): Handle -r like -nostdlib. + 2018-08-27 Martin Liska <mliska@suse.cz> * go-gcc.cc (Gcc_backend::call_expression): Use new function diff --git a/gcc/go/gospec.c b/gcc/go/gospec.c index 7a10997..d265fc9 100644 --- a/gcc/go/gospec.c +++ b/gcc/go/gospec.c @@ -139,6 +139,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, switch (decoded_options[i].opt_index) { + case OPT_r: case OPT_nostdlib: case OPT_nodefaultlibs: library = -1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a0a08a4..bcac8dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2018-09-20 Allan Sandfeld Jensen <allan.jensen@qt.io> + + * g++.dg/ipa/pr64059.C: Removed now redundant -nostdlib. + * g++.dg/lto/20081109-1_0.C: Likewise. + * g++.dg/lto/20090302_0.C: Likewise. + * g++.dg/lto/pr45621_0.C: Likewise. + * g++.dg/lto/pr60567_0.C: Likewise. + * g++.dg/lto/pr62026.C: Likewise. + * gcc.dg/lto/pr45736_0.c: Likewise. + * gcc.dg/lto/pr52634_0.c: Likewise. + * gfortran.dg/lto/20091016-1_0.f90: Likewise. + * gfortran.dg/lto/pr79108_0.f90: Likewise. + 2018-09-20 Alexandre Oliva <oliva@adacore.com> PR middle-end/87054 diff --git a/gcc/testsuite/g++.dg/ipa/pr64059.C b/gcc/testsuite/g++.dg/ipa/pr64059.C index 0269b45..5701132 100644 --- a/gcc/testsuite/g++.dg/ipa/pr64059.C +++ b/gcc/testsuite/g++.dg/ipa/pr64059.C @@ -1,4 +1,4 @@ -// { dg-options "-r -nostdlib -O2 -flto -fno-devirtualize" } +// { dg-options "-r -O2 -flto -fno-devirtualize" } // { dg-require-effective-target lto } class A; diff --git a/gcc/testsuite/g++.dg/lto/20081109-1_0.C b/gcc/testsuite/g++.dg/lto/20081109-1_0.C index 3b58600..db0ba36 100644 --- a/gcc/testsuite/g++.dg/lto/20081109-1_0.C +++ b/gcc/testsuite/g++.dg/lto/20081109-1_0.C @@ -1,6 +1,6 @@ // { dg-lto-do link } // { dg-require-effective-target fpic } // { dg-lto-options {{-fPIC -flto -flto-partition=1to1}} } -// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -nostdlib -fno-exceptions -flinker-output=nolto-rel" } +// { dg-extra-ld-options "-fPIC -flto -flto-partition=1to1 -r -fno-exceptions -flinker-output=nolto-rel" } void func(); class Foo { }; void bar() { try { func(); } catch (Foo) { } }; diff --git a/gcc/testsuite/g++.dg/lto/20090302_0.C b/gcc/testsuite/g++.dg/lto/20090302_0.C index 3a61787..23e0127 100644 --- a/gcc/testsuite/g++.dg/lto/20090302_0.C +++ b/gcc/testsuite/g++.dg/lto/20090302_0.C @@ -1,6 +1,6 @@ /* { dg-lto-do link } */ /* { dg-require-effective-target fpic } */ -/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r -nostdlib}} } */ +/* { dg-lto-options {{-fPIC -flto -flto-partition=1to1 -r}} } */ /* { dg-extra-ld-options "-flinker-output=nolto-rel" } */ struct Foo { bool Mumble(); diff --git a/gcc/testsuite/g++.dg/lto/pr45621_0.C b/gcc/testsuite/g++.dg/lto/pr45621_0.C index f34b3b7..2055ebf 100644 --- a/gcc/testsuite/g++.dg/lto/pr45621_0.C +++ b/gcc/testsuite/g++.dg/lto/pr45621_0.C @@ -1,5 +1,5 @@ // { dg-lto-do assemble } -// { dg-extra-ld-options "-O2 -fipa-cp-clone -flto -nostdlib -r -flinker-output=nolto-rel" } +// { dg-extra-ld-options "-O2 -fipa-cp-clone -flto -r -flinker-output=nolto-rel" } #include "pr45621.h" void diff --git a/gcc/testsuite/g++.dg/lto/pr60567_0.C b/gcc/testsuite/g++.dg/lto/pr60567_0.C index 966a3c3..175b3aa 100644 --- a/gcc/testsuite/g++.dg/lto/pr60567_0.C +++ b/gcc/testsuite/g++.dg/lto/pr60567_0.C @@ -1,7 +1,7 @@ // PR lto/60567 // { dg-lto-do link } // { dg-lto-options { { -flto -fno-use-linker-plugin } } } -// { dg-extra-ld-options "-r -nostdlib" } +// { dg-extra-ld-options "-r" } #pragma implementation struct S {}; diff --git a/gcc/testsuite/g++.dg/lto/pr62026.C b/gcc/testsuite/g++.dg/lto/pr62026.C index 63766a8..0432e90 100644 --- a/gcc/testsuite/g++.dg/lto/pr62026.C +++ b/gcc/testsuite/g++.dg/lto/pr62026.C @@ -1,5 +1,5 @@ // { dg-lto-do link } -// { dg-lto-options {{-flto -O3 -r -nostdlib}} } +// { dg-lto-options {{-flto -O3 -r}} } class C; class F { virtual C m_fn1(); diff --git a/gcc/testsuite/gcc.dg/lto/pr45736_0.c b/gcc/testsuite/gcc.dg/lto/pr45736_0.c index d481c45..cb7811b 100644 --- a/gcc/testsuite/gcc.dg/lto/pr45736_0.c +++ b/gcc/testsuite/gcc.dg/lto/pr45736_0.c @@ -1,5 +1,5 @@ /* { dg-lto-do link } */ -/* { dg-lto-options {{-flto -r -nostdlib -O}} } */ +/* { dg-lto-options {{-flto -r -O}} } */ /* { dg-extra-ld-options "-flinker-output=nolto-rel" } */ extern void baz (void); diff --git a/gcc/testsuite/gcc.dg/lto/pr52634_0.c b/gcc/testsuite/gcc.dg/lto/pr52634_0.c index 7aba0cd..5e14ad9 100644 --- a/gcc/testsuite/gcc.dg/lto/pr52634_0.c +++ b/gcc/testsuite/gcc.dg/lto/pr52634_0.c @@ -1,7 +1,7 @@ /* { dg-require-weak "" } */ /* { dg-require-alias "" } */ /* { dg-lto-do link } */ -/* { dg-lto-options {{-flto -r -nostdlib -flto-partition=1to1}} */ +/* { dg-lto-options {{-flto -r -flto-partition=1to1}} */ /* { dg-extra-ld-options "-flinker-output=nolto-rel" } */ extern int cfliteValueCallBacks; void baz (int *); diff --git a/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 b/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 index 5e96e88..812ae9b 100644 --- a/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 +++ b/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 @@ -1,5 +1,5 @@ ! { dg-lto-do link } -! { dg-lto-options {{-flto -g -fPIC -r -nostdlib} {-O -flto -g -fPIC -r -nostdlib}} } +! { dg-lto-options {{-flto -g -fPIC -r} {-O -flto -g -fPIC -r}} } ! { dg-extra-ld-options "-flinker-output=nolto-rel" } FUNCTION makenumberstring(x) diff --git a/gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 b/gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 index 58412af..9c87850 100644 --- a/gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 +++ b/gcc/testsuite/gfortran.dg/lto/pr79108_0.f90 @@ -1,6 +1,6 @@ ! { dg-lto-do link } ! { dg-lto-options {{ -Ofast -flto --param ggc-min-expand=0 --param ggc-min-heapsize=0 }} } -! { dg-extra-ld-options "-r -nostdlib" } +! { dg-extra-ld-options "-r" } MODULE Errorcheck_mod CONTAINS |