Message ID | 20150112002348.GA5842@gmail.com |
---|---|
State | New |
Headers | show |
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? Exclusive of that issue, the patch is fine. On Jan 11, 2015, at 4:23 PM, H.J. Lu <hjl.tools@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.lu@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
On Thu, Jan 15, 2015 at 8:24 AM, Mike Stump <mikestump@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.tools@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.lu@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
On Thu, Jan 15, 2015 at 8:30 AM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Thu, Jan 15, 2015 at 8:24 AM, Mike Stump <mikestump@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. > FYI, I opened a linker bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17847 I will suppress the second linker message.
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