Re: [PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-30 Thread Prakhar Bahuguna
On 30/05/2017 14:11:22, Christophe Lyon wrote:
> On 30 May 2017 at 09:44, Prakhar Bahuguna  wrote:
> > On 29/05/2017 14:23:05, Christophe Lyon wrote:
> >> On 19 May 2017 at 14:29, Prakhar Bahuguna  wrote:
> >> > On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:
> >> >> tls-disable-literal-pool.c should only be run if the toolchain and 
> >> >> target
> >> >> support native thread-local storage rather than emulated TLS. This 
> >> >> patch also
> >> >> improves the matching of the error message.
> >> >>
> >> >> testsuite/ChangeLog:
> >> >>
> >> >> 2017-05-11  Prakhar Bahuguna  
> >> >>
> >> >>   * gcc.target/arm/tls-disable-literal-pool.c: Change
> >> >>   require-effective-target to tls_native.
> >> >>   Move dg-error to return statement line and change to dg-message.
> >> >>
> >> >> Testing done: Regression testing for ARMv7-M with a TLS-enabled 
> >> >> toolchain and a
> >> >> TLS-disabled toolchain.
> >> >>
> >>
> >> Hi,
> >> Can you share more details on the configuration you used?
> >> In my testing, the only cortex-M config I have is arm-none-eabi
> >> --with-cpu=cortex-m3.
> >> Since arm-none-eabi means native-tls is disabled, this test is skipped.
> >> A constraint for me is that m3 was the only cortex-m cpu supported by qemu 
> >> the
> >> last time I checked.
> >>
> >> Thanks,
> >>
> >> Christophe
> >>
> >
> > Hi Christophe,
> >
> > For a regular arm-none-eabi build, TLS is indeed disabled and the test 
> > should
> > be skipped. The diagnostic and test is meant to catch instances where the
> > toolchain has been built with native TLS enabled. This can be done either by
> > explicitly passing the --enable-tls configure flag for arm-none-eabi, or by
> 
> This didn't occur to me: what does --target arm-none-eabi --enable-tls 
> actually
> means in terms of functionality? Do you use newlib +  a suitable kernel to
> provide thread support? Or are all the tls-related GCC tests compile-only,
> and we do not need a setup with proper thread support to actually test this?
> 

Hi Christophe, the test is compile-only. Threading isn't really a thing in the
context of bare-metal code on a microcontroller, but this diagnostic is there
to prevent the compiler from generating garbage assembly even if the user is
going out of their way to do something nonsensical. The test exists to validate
that the diagnostic triggers under such conditions.

> > using an arm-none-linux-gnueabi[hf] toolchain and testing against an 
> > M-profile
> > target.
> I guess you use a board for that? As I'm using qemu (user mode) for GCC 
> testing,
> I'm not sure how I could test such a configuration given that qemu
> does not support
> any v7m processor to my knowledge.

As above, the execution target does not matter as there is no code to execute.
The compiler should simply error out if told to compile code with thread-local
variables and literal pools disabled.

-- 

Prakhar Bahuguna


Re: [PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-30 Thread Christophe Lyon
On 30 May 2017 at 09:44, Prakhar Bahuguna  wrote:
> On 29/05/2017 14:23:05, Christophe Lyon wrote:
>> On 19 May 2017 at 14:29, Prakhar Bahuguna  wrote:
>> > On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:
>> >> tls-disable-literal-pool.c should only be run if the toolchain and target
>> >> support native thread-local storage rather than emulated TLS. This patch 
>> >> also
>> >> improves the matching of the error message.
>> >>
>> >> testsuite/ChangeLog:
>> >>
>> >> 2017-05-11  Prakhar Bahuguna  
>> >>
>> >>   * gcc.target/arm/tls-disable-literal-pool.c: Change
>> >>   require-effective-target to tls_native.
>> >>   Move dg-error to return statement line and change to dg-message.
>> >>
>> >> Testing done: Regression testing for ARMv7-M with a TLS-enabled toolchain 
>> >> and a
>> >> TLS-disabled toolchain.
>> >>
>>
>> Hi,
>> Can you share more details on the configuration you used?
>> In my testing, the only cortex-M config I have is arm-none-eabi
>> --with-cpu=cortex-m3.
>> Since arm-none-eabi means native-tls is disabled, this test is skipped.
>> A constraint for me is that m3 was the only cortex-m cpu supported by qemu 
>> the
>> last time I checked.
>>
>> Thanks,
>>
>> Christophe
>>
>
> Hi Christophe,
>
> For a regular arm-none-eabi build, TLS is indeed disabled and the test should
> be skipped. The diagnostic and test is meant to catch instances where the
> toolchain has been built with native TLS enabled. This can be done either by
> explicitly passing the --enable-tls configure flag for arm-none-eabi, or by

This didn't occur to me: what does --target arm-none-eabi --enable-tls actually
means in terms of functionality? Do you use newlib +  a suitable kernel to
provide thread support? Or are all the tls-related GCC tests compile-only,
and we do not need a setup with proper thread support to actually test this?

> using an arm-none-linux-gnueabi[hf] toolchain and testing against an M-profile
> target.
I guess you use a board for that? As I'm using qemu (user mode) for GCC testing,
I'm not sure how I could test such a configuration given that qemu
does not support
any v7m processor to my knowledge.


> Hope this helps,

Yes, thanks.

> --
>
> Prakhar Bahuguna


Re: [PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-30 Thread Prakhar Bahuguna
On 29/05/2017 14:23:05, Christophe Lyon wrote:
> On 19 May 2017 at 14:29, Prakhar Bahuguna  wrote:
> > On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:
> >> tls-disable-literal-pool.c should only be run if the toolchain and target
> >> support native thread-local storage rather than emulated TLS. This patch 
> >> also
> >> improves the matching of the error message.
> >>
> >> testsuite/ChangeLog:
> >>
> >> 2017-05-11  Prakhar Bahuguna  
> >>
> >>   * gcc.target/arm/tls-disable-literal-pool.c: Change
> >>   require-effective-target to tls_native.
> >>   Move dg-error to return statement line and change to dg-message.
> >>
> >> Testing done: Regression testing for ARMv7-M with a TLS-enabled toolchain 
> >> and a
> >> TLS-disabled toolchain.
> >>
> 
> Hi,
> Can you share more details on the configuration you used?
> In my testing, the only cortex-M config I have is arm-none-eabi
> --with-cpu=cortex-m3.
> Since arm-none-eabi means native-tls is disabled, this test is skipped.
> A constraint for me is that m3 was the only cortex-m cpu supported by qemu the
> last time I checked.
> 
> Thanks,
> 
> Christophe
> 

Hi Christophe,

For a regular arm-none-eabi build, TLS is indeed disabled and the test should
be skipped. The diagnostic and test is meant to catch instances where the
toolchain has been built with native TLS enabled. This can be done either by
explicitly passing the --enable-tls configure flag for arm-none-eabi, or by
using an arm-none-linux-gnueabi[hf] toolchain and testing against an M-profile
target.

Hope this helps,

-- 

Prakhar Bahuguna


Re: [PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-29 Thread Christophe Lyon
On 19 May 2017 at 14:29, Prakhar Bahuguna  wrote:
> On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:
>> tls-disable-literal-pool.c should only be run if the toolchain and target
>> support native thread-local storage rather than emulated TLS. This patch also
>> improves the matching of the error message.
>>
>> testsuite/ChangeLog:
>>
>> 2017-05-11  Prakhar Bahuguna  
>>
>>   * gcc.target/arm/tls-disable-literal-pool.c: Change
>>   require-effective-target to tls_native.
>>   Move dg-error to return statement line and change to dg-message.
>>
>> Testing done: Regression testing for ARMv7-M with a TLS-enabled toolchain 
>> and a
>> TLS-disabled toolchain.
>>

Hi,
Can you share more details on the configuration you used?
In my testing, the only cortex-M config I have is arm-none-eabi
--with-cpu=cortex-m3.
Since arm-none-eabi means native-tls is disabled, this test is skipped.
A constraint for me is that m3 was the only cortex-m cpu supported by qemu the
last time I checked.

Thanks,

Christophe

>> Okay for stage1?
>>
>> --
>>
>> Prakhar Bahuguna
>
>> From 84837978d480a1abcebe7b4d2ac21af0eb6645b4 Mon Sep 17 00:00:00 2001
>> From: Prakhar Bahuguna 
>> Date: Thu, 11 May 2017 13:24:39 +0100
>> Subject: [PATCH] Only test tls-disable-literal-pool.c if target supports
>>  native TLS
>>
>> This test should only be run if the toolchain and target support native
>> thread-local storage rather than emulated TLS.
>> ---
>>  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c | 5 ++---
>>  1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c 
>> b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
>> index fe14a6b132c..283201fdd97 100644
>> --- a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
>> +++ b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
>> @@ -1,5 +1,5 @@
>>  /* { dg-do compile } */
>> -/* { dg-require-effective-target tls } */
>> +/* { dg-require-effective-target tls_native } */
>>  /* { dg-require-effective-target arm_cortex_m } */
>>  /* { dg-require-effective-target arm_thumb2_ok } */
>>  /* { dg-options "-mslow-flash-data" } */
>> @@ -9,7 +9,6 @@ __thread int x = 0;
>>  int
>>  bar ()
>>  {
>> -  return x;
>> +  return x; /* { dg-message "sorry, unimplemented: accessing thread-local 
>> storage is not currently supported with -mpure-code or -mslow-flash-data" } 
>> */
>>  }
>>
>> -/* { dg-error "accessing thread-local storage is not currently supported 
>> with -mpure-code or -mslow-flash-data" "" { target *-*-* } 12 } */
>> --
>> 2.11.0
>>
>
> Ping.
>
> --
>
> Prakhar Bahuguna


Re: [PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-19 Thread Kyrill Tkachov

Hi Prakhar,

On 19/05/17 13:29, Prakhar Bahuguna wrote:

On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:

tls-disable-literal-pool.c should only be run if the toolchain and target
support native thread-local storage rather than emulated TLS. This patch also
improves the matching of the error message.

testsuite/ChangeLog:

2017-05-11  Prakhar Bahuguna  

* gcc.target/arm/tls-disable-literal-pool.c: Change
require-effective-target to tls_native.
Move dg-error to return statement line and change to dg-message.

Testing done: Regression testing for ARMv7-M with a TLS-enabled toolchain and a
TLS-disabled toolchain.

Okay for stage1?


Ok.
Thanks,
Kyrill



--

Prakhar Bahuguna
 From 84837978d480a1abcebe7b4d2ac21af0eb6645b4 Mon Sep 17 00:00:00 2001
From: Prakhar Bahuguna 
Date: Thu, 11 May 2017 13:24:39 +0100
Subject: [PATCH] Only test tls-disable-literal-pool.c if target supports
  native TLS

This test should only be run if the toolchain and target support native
thread-local storage rather than emulated TLS.
---
  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c 
b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
index fe14a6b132c..283201fdd97 100644
--- a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
+++ b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
@@ -1,5 +1,5 @@
  /* { dg-do compile } */
-/* { dg-require-effective-target tls } */
+/* { dg-require-effective-target tls_native } */
  /* { dg-require-effective-target arm_cortex_m } */
  /* { dg-require-effective-target arm_thumb2_ok } */
  /* { dg-options "-mslow-flash-data" } */
@@ -9,7 +9,6 @@ __thread int x = 0;
  int
  bar ()
  {
-  return x;
+  return x; /* { dg-message "sorry, unimplemented: accessing thread-local storage 
is not currently supported with -mpure-code or -mslow-flash-data" } */
  }
  
-/* { dg-error "accessing thread-local storage is not currently supported with -mpure-code or -mslow-flash-data" "" { target *-*-* } 12 } */

--
2.11.0


Ping.





[PING][PATCH, GCC/ARM] Only test tls-disable-literal-pool.c if target supports native TLS

2017-05-19 Thread Prakhar Bahuguna
On 11/05/2017 14:54:37, Prakhar Bahuguna wrote:
> tls-disable-literal-pool.c should only be run if the toolchain and target
> support native thread-local storage rather than emulated TLS. This patch also
> improves the matching of the error message.
> 
> testsuite/ChangeLog:
> 
> 2017-05-11  Prakhar Bahuguna  
> 
>   * gcc.target/arm/tls-disable-literal-pool.c: Change
>   require-effective-target to tls_native.
>   Move dg-error to return statement line and change to dg-message.
> 
> Testing done: Regression testing for ARMv7-M with a TLS-enabled toolchain and 
> a
> TLS-disabled toolchain.
> 
> Okay for stage1?
> 
> -- 
> 
> Prakhar Bahuguna

> From 84837978d480a1abcebe7b4d2ac21af0eb6645b4 Mon Sep 17 00:00:00 2001
> From: Prakhar Bahuguna 
> Date: Thu, 11 May 2017 13:24:39 +0100
> Subject: [PATCH] Only test tls-disable-literal-pool.c if target supports
>  native TLS
> 
> This test should only be run if the toolchain and target support native
> thread-local storage rather than emulated TLS.
> ---
>  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c 
> b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
> index fe14a6b132c..283201fdd97 100644
> --- a/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
> +++ b/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-require-effective-target tls } */
> +/* { dg-require-effective-target tls_native } */
>  /* { dg-require-effective-target arm_cortex_m } */
>  /* { dg-require-effective-target arm_thumb2_ok } */
>  /* { dg-options "-mslow-flash-data" } */
> @@ -9,7 +9,6 @@ __thread int x = 0;
>  int
>  bar ()
>  {
> -  return x;
> +  return x; /* { dg-message "sorry, unimplemented: accessing thread-local 
> storage is not currently supported with -mpure-code or -mslow-flash-data" } */
>  }
>  
> -/* { dg-error "accessing thread-local storage is not currently supported 
> with -mpure-code or -mslow-flash-data" "" { target *-*-* } 12 } */
> -- 
> 2.11.0
> 

Ping.

-- 

Prakhar Bahuguna