Message ID | 20150112003413.GA30204@gmail.com |
---|---|
State | New |
Headers | show |
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.
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.
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 --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];