diff mbox

[testsuite] PATCH: Add -fno-pie to gcc.target/i386/pr54445-2.c

Message ID 20150112003413.GA30204@gmail.com
State New
Headers show

Commit Message

H.J. Lu Jan. 12, 2015, 12:34 a.m. UTC
Since PIE is also PIC, we need to add -fno-pie to avoid PIC.  OK for trunk?

Thanks.

H.J.
---
 gcc/testsuite/gcc.target/i386/pr54445-2.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

2015-01-11  H.J. Lu  <hongjiu.lu@intel.com>

	* gcc.target/i386/pr54445-2.c: Add -fno-pie.

Comments

Uros Bizjak Jan. 15, 2015, 12:44 p.m. UTC | #1
On Mon, Jan 12, 2015 at 1:34 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> Since PIE is also PIC, we need to add -fno-pie to avoid PIC.  OK for trunk?
>
> Thanks.
>
> H.J.
> ---
>  gcc/testsuite/gcc.target/i386/pr54445-2.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> 2015-01-11  H.J. Lu  <hongjiu.lu@intel.com>
>
>         * gcc.target/i386/pr54445-2.c: Add -fno-pie.
>
> diff --git a/gcc/testsuite/gcc.target/i386/pr54445-2.c b/gcc/testsuite/gcc.target/i386/pr54445-2.c
> index 5151c13..4d49816 100644
> --- a/gcc/testsuite/gcc.target/i386/pr54445-2.c
> +++ b/gcc/testsuite/gcc.target/i386/pr54445-2.c
> @@ -1,5 +1,5 @@
>  /* { dg-do compile { target { *-*-linux* && { ! { ia32 } } } } } */
> -/* { dg-options "-O2 -fno-pic" } */
> +/* { dg-options "-O2 -fno-pic -fno-pie" } */
>
>  __thread unsigned char tls_array[64];

No. PI *executable* has nothing to do with the access to data.

Can you rather investigate why -fpie is generating:

    movzbl    %fs:-1+tls_array@tpoff(%rdi), %eax

instead of (expected)

    movzbl    %fs:tls_array@tpoff-1(%rdi), %eax

Uros.
H.J. Lu Jan. 15, 2015, 1 p.m. UTC | #2
On Thu, Jan 15, 2015 at 4:44 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Mon, Jan 12, 2015 at 1:34 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> Since PIE is also PIC, we need to add -fno-pie to avoid PIC.  OK for trunk?
>>
>> Thanks.
>>
>> H.J.
>> ---
>>  gcc/testsuite/gcc.target/i386/pr54445-2.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> 2015-01-11  H.J. Lu  <hongjiu.lu@intel.com>
>>
>>         * gcc.target/i386/pr54445-2.c: Add -fno-pie.
>>
>> diff --git a/gcc/testsuite/gcc.target/i386/pr54445-2.c b/gcc/testsuite/gcc.target/i386/pr54445-2.c
>> index 5151c13..4d49816 100644
>> --- a/gcc/testsuite/gcc.target/i386/pr54445-2.c
>> +++ b/gcc/testsuite/gcc.target/i386/pr54445-2.c
>> @@ -1,5 +1,5 @@
>>  /* { dg-do compile { target { *-*-linux* && { ! { ia32 } } } } } */
>> -/* { dg-options "-O2 -fno-pic" } */
>> +/* { dg-options "-O2 -fno-pic -fno-pie" } */
>>
>>  __thread unsigned char tls_array[64];
>
> No. PI *executable* has nothing to do with the access to data.
>
> Can you rather investigate why -fpie is generating:
>
>     movzbl    %fs:-1+tls_array@tpoff(%rdi), %eax
>
> instead of (expected)
>
>     movzbl    %fs:tls_array@tpoff-1(%rdi), %eax
>
> Uros.

They have the same encoding.  The differences are in the order of address
in the first operand due to different output orders of PLUS between
output_addr_const and output_pic_addr_const.
Uros Bizjak Jan. 15, 2015, 1:02 p.m. UTC | #3
On Thu, Jan 15, 2015 at 2:00 PM, H.J. Lu <hjl.tools@gmail.com> wrote:

>>>  gcc/testsuite/gcc.target/i386/pr54445-2.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> 2015-01-11  H.J. Lu  <hongjiu.lu@intel.com>
>>>
>>>         * gcc.target/i386/pr54445-2.c: Add -fno-pie.
>>>
>>> diff --git a/gcc/testsuite/gcc.target/i386/pr54445-2.c b/gcc/testsuite/gcc.target/i386/pr54445-2.c
>>> index 5151c13..4d49816 100644
>>> --- a/gcc/testsuite/gcc.target/i386/pr54445-2.c
>>> +++ b/gcc/testsuite/gcc.target/i386/pr54445-2.c
>>> @@ -1,5 +1,5 @@
>>>  /* { dg-do compile { target { *-*-linux* && { ! { ia32 } } } } } */
>>> -/* { dg-options "-O2 -fno-pic" } */
>>> +/* { dg-options "-O2 -fno-pic -fno-pie" } */
>>>
>>>  __thread unsigned char tls_array[64];
>>
>> No. PI *executable* has nothing to do with the access to data.
>>
>> Can you rather investigate why -fpie is generating:
>>
>>     movzbl    %fs:-1+tls_array@tpoff(%rdi), %eax
>>
>> instead of (expected)
>>
>>     movzbl    %fs:tls_array@tpoff-1(%rdi), %eax
>>
>> Uros.
>
> They have the same encoding.  The differences are in the order of address
> in the first operand due to different output orders of PLUS between
> output_addr_const and output_pic_addr_const.

Then we should improve scan string to accept both expressions.

Uros.
diff mbox

Patch

diff --git a/gcc/testsuite/gcc.target/i386/pr54445-2.c b/gcc/testsuite/gcc.target/i386/pr54445-2.c
index 5151c13..4d49816 100644
--- a/gcc/testsuite/gcc.target/i386/pr54445-2.c
+++ b/gcc/testsuite/gcc.target/i386/pr54445-2.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile { target { *-*-linux* && { ! { ia32 } } } } } */
-/* { dg-options "-O2 -fno-pic" } */
+/* { dg-options "-O2 -fno-pic -fno-pie" } */
 
 __thread unsigned char tls_array[64];