On Thu, Jan 15, 2015 at 8:24 AM, Mike Stump <mikest...@comcast.net> wrote: > So, I was hoping that someone would step forward and review this. I’d like > for a reviewer to consider, is this the type of error messages we want to > vend to the poor user? It strikes me as, well, icky. Should -fPIE imply > -fPIC?
It is an optimization: https://gcc.gnu.org/ml/gcc-cvs/2014-12/msg00206.html If linker supports copy reloc in PIE, we turn off PIC for the data access. Since the symbol is undefined in this case, linker complains. > Exclusive of that issue, the patch is fine. I will check it in. Thanks. > On Jan 11, 2015, at 4:23 PM, H.J. Lu <hjl.to...@gmail.com> wrote: >> g++.dg/other/anon5.C is expected to fail to link. On Linux/x86 with PIE, >> there are additional messages linker: >> >> [hjl@gnu-tools-1 gcc]$ g++ -fPIE -pie >> /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.dg/other/anon5.C >> /tmp/ccwg53fj.o: In function `f()': anon5.C:(.text+0x7): undefined reference >> to `(anonymous namespace)::c::t' >> /usr/local/bin/ld: /tmp/ccwg53fj.o: relocation R_X86_64_PC32 against >> undefined symbol `_ZN12_GLOBAL__N_11c1tE' can not be used when making a >> shared object; recompile with -fPIC >> /usr/local/bin/ld: final link failed: Bad value >> collect2: error: ld returned 1 exit status >> [hjl@gnu-tools-1 gcc]$ >> >> This patch ignores additional messages on Linux/x86 with PIE. OK for >> trunk? >> >> Thanks. >> >> H.J. >> --- >> gcc/testsuite/g++.dg/other/anon5.C | 2 ++ >> 1 file changed, 2 insertions(+) >> >> 2015-01-11 H.J. Lu <hongjiu...@intel.com> >> >> * g++.dg/other/anon5.C: Ignore additional messages on Linux/x86 >> with PIE. >> >> diff --git a/gcc/testsuite/g++.dg/other/anon5.C >> b/gcc/testsuite/g++.dg/other/anon5.C >> index 81e9def..4e4cc44 100644 >> --- a/gcc/testsuite/g++.dg/other/anon5.C >> +++ b/gcc/testsuite/g++.dg/other/anon5.C >> @@ -3,6 +3,8 @@ >> // { dg-options "-g" } >> // Ignore additional message on powerpc-ibm-aix >> // { dg-prune-output "obtain more information" } */ >> +// Ignore additional messages on Linux/x86 with PIE >> +// { dg-prune-output "Bad value" } */ >> >> namespace { >> struct c -- H.J.