diff mbox

[testsuite] PATCH: Ignore additional messages on Linux/x86 with PIE

Message ID 20150112002348.GA5842@gmail.com
State New
Headers show

Commit Message

H.J. Lu Jan. 12, 2015, 12:23 a.m. UTC
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.

Comments

Mike Stump Jan. 15, 2015, 4:24 p.m. UTC | #1
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
H.J. Lu Jan. 15, 2015, 4:30 p.m. UTC | #2
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
H.J. Lu Jan. 15, 2015, 5:19 p.m. UTC | #3
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 mbox

Patch

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