[PATCH] ELF: Add support for unique section ID to assembler

Fangrui Song i@maskray.me
Mon Feb 3 01:10:00 GMT 2020


On 2020-02-02, H.J. Lu wrote:
>On Sun, Feb 2, 2020@4:22 PM Alan Modra <amodra@gmail.com> wrote:
>>
>> On Sun, Feb 02, 2020@09:50:54AM -0800, H.J. Lu wrote:
>> > Clang's integrated assembler supports multiple section with the same
>> > name:
>> >
>> >       .section .text,"ax",@progbits,unique,1
>> >       nop
>> >       .section .text,"ax",@progbits,unique,2
>> >       nop
>> >
>> > "unique,N" assigns the number, N, as the section ID, to a section.  The
>> > valid values of the section ID are between 0 and 4294967295.  It can be
>> > used to distinguish different sections with the same section name.
>> >
>> > This is useful with -fno-unique-section-names -ffunction-sections.
>> > -ffunction-sections by default generates .text.foo, .text.bar, etc.
>> > Using the same string can save lots of space in .strtab.
>> >
>> > This patch adds section_id to bfd_section and reuses the linker
>> > internal bit in BFD section flags, SEC_LINKER_CREATED, for assmebler
>> > internal use to mark valid section_id.  It also updates objdump to
>> > compare section pointers if 2 sections comes from the same file since
>> > 2 different sections can have the same section name.
>>
>> Looks OK to me.
>>
>
>This is the patch I am checking in.  I updated documentation with
>
>iff --git a/gas/doc/as.texi b/gas/doc/as.texi
>index fa155096159..152bbfdd009 100644
>--- a/gas/doc/as.texi
>+++ b/gas/doc/as.texi
>@@ -6709,6 +6709,18 @@ this directive.  If that section used @code{G}, then the
>new section will use
> @code{G} with those same @var{GroupName} and @var{linkage} fields implicitly.
> If not, then the @code{?} symbol has no effect.
>
>+The optional @var{unique,@code{<number>}} argument must come last.  It
>+assigns @var{@code{<number>}} as a unique section ID to distinguish
>+different sections with the same section name like these:
>+
>+@smallexample
>+.section @var{name},"@var{flags}",@@@var{type},@var{unique,@code{<number>}}
>+.section @var{name},"@var{flags}"G,@@@var{type},@var{GroupName},[@var{linkage}]
>,@var{unique,@code{<number>}}
>+.section @var{name},"@var{flags}"MG,@@@var{type},@var{entsize},@var{GroupName}[
>,@var{linkage}],@var{unique,@code{<number>}}
>+@end smallexample
>+
>+The valid values of @var{@code{<number>}} are between 0 and 4294967295.
>+
> If no flags are specified, the default flags depend upon the section name.  If
> the section name is not recognized, the default will be for the section to have
> none of the above flags: it will not be allocated in memory, nor writable, nor
>
>
>-- 
>H.J.

Thanks for the patch! Looks good.

+     sections withe the same section name.  */

Typo. withe -> with



More information about the Binutils mailing list