Message ID | A614194ED15B4844BC4C9FB7F21FCD9270456A99@hhmail02.hh.imgtec.org |
---|---|
State | New |
Headers | show |
Hi Toma, > g++.dg/lto/pr69589_0.C is currently failing for mips-mti-elf with the following error: > > xg++: error: unrecognized command line option '-rdynamic' > > However, it passes just fine for mips-mti-linux-gnu. > I think that we should skip this test for mips-mti-elf. could it be that mips/sde.h is just missing -rdynamic handling in LINK_SPEC? At least some bare-metal targets using gld *do* support -rdynamic (cf. xtensa/elf.h and aarch64/aarch64-elf-raw.h)... That said, I like the general direction of this patch, even when the new keyword is only used in one place. > This patch achieves this by adding support for check_effective_target_rdynamic > and then using it in g++.dg/lto/pr69589_0.C. > > This patch also removes the existing dg-skip-if, as it is made redundant by the > effective target check. The latter is also more convenient, as we won't have to > keep tweaking the dg-skip-if for failing targets anymore. > > This is similar to my recent check_effective_target_gettimeofday patch, > which was greatly improved by Rainer Orth's review. > > Tested with mips-mti-elf and mips-mti-linux-gnu. > > Does this look good ? [...] > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp > index 2766af4..f46f0ba 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -1484,6 +1484,16 @@ proc check_effective_target_static_libgfortran { } { > } "-static"] > } > > +# Return 1 if we can use the -rdynamic option, 0 otherwise. > +# > +# When the target name changes, replace the cached result. I think this line isn't necessary. Just keep the first. Ok for mainline with that fixed. Thanks. Rainer
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes: > > g++.dg/lto/pr69589_0.C is currently failing for mips-mti-elf with the > following error: > > > > xg++: error: unrecognized command line option '-rdynamic' > > > > However, it passes just fine for mips-mti-linux-gnu. > > I think that we should skip this test for mips-mti-elf. > > could it be that mips/sde.h is just missing -rdynamic handling in > LINK_SPEC? At least some bare-metal targets using gld *do* support - > rdynamic (cf. xtensa/elf.h and aarch64/aarch64-elf-raw.h)... There's probably no harm in adding it in to mips/sde.h it just doesn't really add much value either. We have some (very subtle) ABI differences between ELF and Linux targets so I'm not sure it is worth trying to make sure all options exist/behave the same given such differences. Matthew
> > Ok for mainline with that fixed. > > Thanks. > Rainer > Committed as r246004. Thanks, Toma
Hi Toma, Thanks for fixing this! Do you have plan to backport the fix to gcc-6 branch? Regards, Renlin On 09/03/17 15:08, Toma Tabacu wrote: >> >> Ok for mainline with that fixed. >> >> Thanks. >> Rainer >> > > Committed as r246004. > > Thanks, > Toma >
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index 0dc4348..d75e078 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -2065,6 +2065,9 @@ Target supports @option{-mpe-aligned-commons}. @item pie Target supports @option{-pie}, @option{-fpie} and @option{-fPIE}. +@item rdynamic +Target supports @option{-rdynamic}. + @item section_anchors Target supports section anchors. diff --git a/gcc/testsuite/g++.dg/lto/pr69589_0.C b/gcc/testsuite/g++.dg/lto/pr69589_0.C index 11766f1..599d5d4 100644 --- a/gcc/testsuite/g++.dg/lto/pr69589_0.C +++ b/gcc/testsuite/g++.dg/lto/pr69589_0.C @@ -1,7 +1,7 @@ // { dg-lto-do link } // { dg-lto-options "-O2 -rdynamic" } // { dg-extra-ld-options "-r -nostdlib" } -// { dg-skip-if "Skip targets without -rdynamic support" { arm*-none-eabi aarch64*-*-elf nios2-*-elf } { "*" } { "" } } +// { dg-require-effective-target rdynamic } #pragma GCC visibility push(hidden) struct A { int &operator[] (long); }; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 2766af4..f46f0ba 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1484,6 +1484,16 @@ proc check_effective_target_static_libgfortran { } { } "-static"] } +# Return 1 if we can use the -rdynamic option, 0 otherwise. +# +# When the target name changes, replace the cached result. + +proc check_effective_target_rdynamic { } { + return [check_no_compiler_messages rdynamic executable { + int main() { return 0; } + } "-rdynamic"] +} + # Return 1 if cilk-plus is supported by the target, 0 otherwise. proc check_effective_target_cilkplus { } {