libgcc: Use initarray section type for .init_stack

Message ID 050edd6f-0ad9-fbad-a9e5-03ec7b937971@linux.ibm.com
State New
Headers
Series libgcc: Use initarray section type for .init_stack |

Commit Message

Kewen.Lin March 20, 2023, 6:33 a.m. UTC
  Hi,

One of my workmates found there is a warning like:

  libgcc/config/rs6000/morestack.S:402: Warning: ignoring
    incorrect section type for .init_array.00000

when compiling libgcc/config/rs6000/morestack.S.

Since commit r13-6545 touched that file recently, which was
suspected to be responsible for this warning, I did some
investigation and found this is a warning staying for a long
time.  For section .init_stack*, it's preferred to use
section type SHT_INIT_ARRAY.  So this patch is use
"@init_array" to replace "@progbits".

Although the warning is trivial, Segher suggested me to
post this to fix it, in order to avoid any possible
misunderstanding/confusion on the warning.

As Alan confirmed, this doesn't require a premise check
on if the existing binutils supports "@init_array" or not,
"because if you want split-stack to work, you must link
with gold, any version of binutils that has gold has an
assembler that understands @init_array". (Thanks Alan!)

Bootstrapped and regtested on x86_64-redhat-linux
and powerpc64{,le}-linux-gnu.

Is it ok for trunk when next stage 1 comes?

BR,
Kewen
-----
libgcc/ChangeLog:

	* config/i386/morestack.S: Use @init_array rather than
	@progbits for section type of section .init_array.
	* config/rs6000/morestack.S: Likewise.
	* config/s390/morestack.S: Likewise.
---
 libgcc/config/i386/morestack.S   | 2 +-
 libgcc/config/rs6000/morestack.S | 2 +-
 libgcc/config/s390/morestack.S   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

--
2.31.1
  

Comments

Kewen.Lin May 17, 2023, 6:24 a.m. UTC | #1
Hi,

Gentle ping this:

https://gcc.gnu.org/pipermail/gcc-patches/2023-March/614228.html

BR,
Kewen

on 2023/3/20 14:33, Kewen.Lin via Gcc-patches wrote:
> Hi,
> 
> One of my workmates found there is a warning like:
> 
>   libgcc/config/rs6000/morestack.S:402: Warning: ignoring
>     incorrect section type for .init_array.00000
> 
> when compiling libgcc/config/rs6000/morestack.S.
> 
> Since commit r13-6545 touched that file recently, which was
> suspected to be responsible for this warning, I did some
> investigation and found this is a warning staying for a long
> time.  For section .init_stack*, it's preferred to use
> section type SHT_INIT_ARRAY.  So this patch is use
> "@init_array" to replace "@progbits".
> 
> Although the warning is trivial, Segher suggested me to
> post this to fix it, in order to avoid any possible
> misunderstanding/confusion on the warning.
> 
> As Alan confirmed, this doesn't require a premise check
> on if the existing binutils supports "@init_array" or not,
> "because if you want split-stack to work, you must link
> with gold, any version of binutils that has gold has an
> assembler that understands @init_array". (Thanks Alan!)
> 
> Bootstrapped and regtested on x86_64-redhat-linux
> and powerpc64{,le}-linux-gnu.
> 
> Is it ok for trunk when next stage 1 comes?
> 
> BR,
> Kewen
> -----
> libgcc/ChangeLog:
> 
> 	* config/i386/morestack.S: Use @init_array rather than
> 	@progbits for section type of section .init_array.
> 	* config/rs6000/morestack.S: Likewise.
> 	* config/s390/morestack.S: Likewise.
> ---
>  libgcc/config/i386/morestack.S   | 2 +-
>  libgcc/config/rs6000/morestack.S | 2 +-
>  libgcc/config/s390/morestack.S   | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/libgcc/config/i386/morestack.S b/libgcc/config/i386/morestack.S
> index 7ae99b50cf5..c822b71e2dd 100644
> --- a/libgcc/config/i386/morestack.S
> +++ b/libgcc/config/i386/morestack.S
> @@ -850,7 +850,7 @@ __morestack_make_guard:
>  # This is ELF specific.
> 
>  #if HAVE_INITFINI_ARRAY_SUPPORT
> -	.section	.init_array.00000,"aw",@progbits
> +	.section	.init_array.00000,"aw",@init_array
>  #else
>  	.section	.ctors.65535,"aw",@progbits
>  #endif
> diff --git a/libgcc/config/rs6000/morestack.S b/libgcc/config/rs6000/morestack.S
> index f2fea6abb10..dd1e27cd454 100644
> --- a/libgcc/config/rs6000/morestack.S
> +++ b/libgcc/config/rs6000/morestack.S
> @@ -399,7 +399,7 @@ ENTRY0(__morestack_make_guard)
> 
>  # Make __stack_split_initialize a high priority constructor.
>  #if HAVE_INITFINI_ARRAY_SUPPORT
> -	.section .init_array.00000,"aw",@progbits
> +	.section .init_array.00000,"aw",@init_array
>  #else
>  	.section .ctors.65535,"aw",@progbits
>  #endif
> diff --git a/libgcc/config/s390/morestack.S b/libgcc/config/s390/morestack.S
> index 09a49bb8851..f52e7a6510c 100644
> --- a/libgcc/config/s390/morestack.S
> +++ b/libgcc/config/s390/morestack.S
> @@ -597,7 +597,7 @@ __morestack_make_guard:
>  # Make __stack_split_initialize a high priority constructor.
> 
>  #if HAVE_INITFINI_ARRAY_SUPPORT
> -	.section .init_array.00000,"aw",@progbits
> +	.section .init_array.00000,"aw",@init_array
>  #else
>  	.section .ctors.65535,"aw",@progbits
>  #endif
> --
> 2.31.1
  
Andreas Krebbel May 25, 2023, 7:25 a.m. UTC | #2
On 3/20/23 07:33, Kewen.Lin wrote:
> Hi,
> 
> One of my workmates found there is a warning like:
> 
>   libgcc/config/rs6000/morestack.S:402: Warning: ignoring
>     incorrect section type for .init_array.00000
> 
> when compiling libgcc/config/rs6000/morestack.S.
> 
> Since commit r13-6545 touched that file recently, which was
> suspected to be responsible for this warning, I did some
> investigation and found this is a warning staying for a long
> time.  For section .init_stack*, it's preferred to use
> section type SHT_INIT_ARRAY.  So this patch is use
> "@init_array" to replace "@progbits".
> 
> Although the warning is trivial, Segher suggested me to
> post this to fix it, in order to avoid any possible
> misunderstanding/confusion on the warning.
> 
> As Alan confirmed, this doesn't require a premise check
> on if the existing binutils supports "@init_array" or not,
> "because if you want split-stack to work, you must link
> with gold, any version of binutils that has gold has an
> assembler that understands @init_array". (Thanks Alan!)
> 
> Bootstrapped and regtested on x86_64-redhat-linux
> and powerpc64{,le}-linux-gnu.
> 
> Is it ok for trunk when next stage 1 comes?
> 
> BR,
> Kewen
> -----
> libgcc/ChangeLog:
> 
> 	* config/i386/morestack.S: Use @init_array rather than
> 	@progbits for section type of section .init_array.
> 	* config/rs6000/morestack.S: Likewise.
> 	* config/s390/morestack.S: Likewise.

s390 parts are ok. I did run a bootstrap and regression. Looks all good. Thanks!

Andreas
  
Kewen.Lin May 31, 2023, 7:39 a.m. UTC | #3
Hi Andreas,

on 2023/5/25 15:25, Andreas Krebbel wrote:
> On 3/20/23 07:33, Kewen.Lin wrote:
>> Hi,
>>
>> One of my workmates found there is a warning like:
>>
>>   libgcc/config/rs6000/morestack.S:402: Warning: ignoring
>>     incorrect section type for .init_array.00000
>>
>> when compiling libgcc/config/rs6000/morestack.S.
>>
>> Since commit r13-6545 touched that file recently, which was
>> suspected to be responsible for this warning, I did some
>> investigation and found this is a warning staying for a long
>> time.  For section .init_stack*, it's preferred to use
>> section type SHT_INIT_ARRAY.  So this patch is use
>> "@init_array" to replace "@progbits".
>>
>> Although the warning is trivial, Segher suggested me to
>> post this to fix it, in order to avoid any possible
>> misunderstanding/confusion on the warning.
>>
>> As Alan confirmed, this doesn't require a premise check
>> on if the existing binutils supports "@init_array" or not,
>> "because if you want split-stack to work, you must link
>> with gold, any version of binutils that has gold has an
>> assembler that understands @init_array". (Thanks Alan!)
>>
>> Bootstrapped and regtested on x86_64-redhat-linux
>> and powerpc64{,le}-linux-gnu.
>>
>> Is it ok for trunk when next stage 1 comes?
>>
>> BR,
>> Kewen
>> -----
>> libgcc/ChangeLog:
>>
>> 	* config/i386/morestack.S: Use @init_array rather than
>> 	@progbits for section type of section .init_array.
>> 	* config/rs6000/morestack.S: Likewise.
>> 	* config/s390/morestack.S: Likewise.
> 
> s390 parts are ok. I did run a bootstrap and regression. Looks all good. Thanks!

Thanks for testing this on s390, really appreciate!

Hi Ian & Uros,

Do you have any concerns on this, or does it look good to you?

BR,
Kewen
  
Uros Bizjak May 31, 2023, 7:45 a.m. UTC | #4
On Wed, May 31, 2023 at 9:40 AM Kewen.Lin <linkw@linux.ibm.com> wrote:
>
> Hi Andreas,
>
> on 2023/5/25 15:25, Andreas Krebbel wrote:
> > On 3/20/23 07:33, Kewen.Lin wrote:
> >> Hi,
> >>
> >> One of my workmates found there is a warning like:
> >>
> >>   libgcc/config/rs6000/morestack.S:402: Warning: ignoring
> >>     incorrect section type for .init_array.00000
> >>
> >> when compiling libgcc/config/rs6000/morestack.S.
> >>
> >> Since commit r13-6545 touched that file recently, which was
> >> suspected to be responsible for this warning, I did some
> >> investigation and found this is a warning staying for a long
> >> time.  For section .init_stack*, it's preferred to use
> >> section type SHT_INIT_ARRAY.  So this patch is use
> >> "@init_array" to replace "@progbits".
> >>
> >> Although the warning is trivial, Segher suggested me to
> >> post this to fix it, in order to avoid any possible
> >> misunderstanding/confusion on the warning.
> >>
> >> As Alan confirmed, this doesn't require a premise check
> >> on if the existing binutils supports "@init_array" or not,
> >> "because if you want split-stack to work, you must link
> >> with gold, any version of binutils that has gold has an
> >> assembler that understands @init_array". (Thanks Alan!)
> >>
> >> Bootstrapped and regtested on x86_64-redhat-linux
> >> and powerpc64{,le}-linux-gnu.
> >>
> >> Is it ok for trunk when next stage 1 comes?
> >>
> >> BR,
> >> Kewen
> >> -----
> >> libgcc/ChangeLog:
> >>
> >>      * config/i386/morestack.S: Use @init_array rather than
> >>      @progbits for section type of section .init_array.
> >>      * config/rs6000/morestack.S: Likewise.
> >>      * config/s390/morestack.S: Likewise.
> >
> > s390 parts are ok. I did run a bootstrap and regression. Looks all good. Thanks!
>
> Thanks for testing this on s390, really appreciate!
>
> Hi Ian & Uros,
>
> Do you have any concerns on this, or does it look good to you?

LGTM, but morestack.S is mostly used for Go, so I'd defer to Ian for
the final approval.

Uros.
  
Ian Lance Taylor May 31, 2023, 4:57 p.m. UTC | #5
On Wed, May 31, 2023 at 12:41 AM Kewen.Lin via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> >> libgcc/ChangeLog:
> >>
> >>      * config/i386/morestack.S: Use @init_array rather than
> >>      @progbits for section type of section .init_array.
> >>      * config/rs6000/morestack.S: Likewise.
> >>      * config/s390/morestack.S: Likewise.
> >
> > s390 parts are ok. I did run a bootstrap and regression. Looks all good. Thanks!
>
> Thanks for testing this on s390, really appreciate!
>
> Hi Ian & Uros,
>
> Do you have any concerns on this, or does it look good to you?

This is OK.

Thanks.

Ian
  
Kewen.Lin June 5, 2023, 5:24 a.m. UTC | #6
on 2023/6/1 00:57, Ian Lance Taylor wrote:
> On Wed, May 31, 2023 at 12:41 AM Kewen.Lin via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>>>> libgcc/ChangeLog:
>>>>
>>>>      * config/i386/morestack.S: Use @init_array rather than
>>>>      @progbits for section type of section .init_array.
>>>>      * config/rs6000/morestack.S: Likewise.
>>>>      * config/s390/morestack.S: Likewise.
>>>
>>> s390 parts are ok. I did run a bootstrap and regression. Looks all good. Thanks!
>>
>> Thanks for testing this on s390, really appreciate!
>>
>> Hi Ian & Uros,
>>
>> Do you have any concerns on this, or does it look good to you?
> 
> This is OK.

Pushed in r14-1540-g83c3550ee96aa2, thanks all!

BR,
Kewen

> 
> Thanks.
> 
> Ian
  

Patch

diff --git a/libgcc/config/i386/morestack.S b/libgcc/config/i386/morestack.S
index 7ae99b50cf5..c822b71e2dd 100644
--- a/libgcc/config/i386/morestack.S
+++ b/libgcc/config/i386/morestack.S
@@ -850,7 +850,7 @@  __morestack_make_guard:
 # This is ELF specific.

 #if HAVE_INITFINI_ARRAY_SUPPORT
-	.section	.init_array.00000,"aw",@progbits
+	.section	.init_array.00000,"aw",@init_array
 #else
 	.section	.ctors.65535,"aw",@progbits
 #endif
diff --git a/libgcc/config/rs6000/morestack.S b/libgcc/config/rs6000/morestack.S
index f2fea6abb10..dd1e27cd454 100644
--- a/libgcc/config/rs6000/morestack.S
+++ b/libgcc/config/rs6000/morestack.S
@@ -399,7 +399,7 @@  ENTRY0(__morestack_make_guard)

 # Make __stack_split_initialize a high priority constructor.
 #if HAVE_INITFINI_ARRAY_SUPPORT
-	.section .init_array.00000,"aw",@progbits
+	.section .init_array.00000,"aw",@init_array
 #else
 	.section .ctors.65535,"aw",@progbits
 #endif
diff --git a/libgcc/config/s390/morestack.S b/libgcc/config/s390/morestack.S
index 09a49bb8851..f52e7a6510c 100644
--- a/libgcc/config/s390/morestack.S
+++ b/libgcc/config/s390/morestack.S
@@ -597,7 +597,7 @@  __morestack_make_guard:
 # Make __stack_split_initialize a high priority constructor.

 #if HAVE_INITFINI_ARRAY_SUPPORT
-	.section .init_array.00000,"aw",@progbits
+	.section .init_array.00000,"aw",@init_array
 #else
 	.section .ctors.65535,"aw",@progbits
 #endif