Change section flag character for SHF_LINK_ORDER to "o".

GAS uses "m" as a compatibility alias for "M" (SHF_MERGE).

"o" is free, except on ia64, where it already means SHF_LINK_ORDER.

llvm-svn: 299479
This commit is contained in:
Evgeniy Stepanov 2017-04-04 22:35:08 +00:00
parent 69a9e931ce
commit 12de7b2446
9 changed files with 23 additions and 23 deletions

View File

@ -204,7 +204,7 @@ For example, the following code creates two sections named ``.text``.
The unique number is not present in the resulting object at all. It is just used The unique number is not present in the resulting object at all. It is just used
in the assembler to differentiate the sections. in the assembler to differentiate the sections.
The 'm' flag is mapped to SHF_LINK_ORDER. If it is present, a symbol The 'o' flag is mapped to SHF_LINK_ORDER. If it is present, a symbol
must be given that identifies the section to be placed is the must be given that identifies the section to be placed is the
.sh_link. .sh_link.
@ -212,14 +212,14 @@ must be given that identifies the section to be placed is the
.section .foo,"a",@progbits .section .foo,"a",@progbits
.Ltmp: .Ltmp:
.section .bar,"am",@progbits,.Ltmp .section .bar,"ao",@progbits,.Ltmp
which is equivalent to just which is equivalent to just
.. code-block:: gas .. code-block:: gas
.section .foo,"a",@progbits .section .foo,"a",@progbits
.section .bar,"am",@progbits,.foo .section .bar,"ao",@progbits,.foo
Target Specific Behaviour Target Specific Behaviour

View File

@ -298,7 +298,7 @@ static unsigned parseSectionFlags(StringRef flagsStr, bool *UseLastGroup) {
case 'w': case 'w':
flags |= ELF::SHF_WRITE; flags |= ELF::SHF_WRITE;
break; break;
case 'm': case 'o':
flags |= ELF::SHF_LINK_ORDER; flags |= ELF::SHF_LINK_ORDER;
break; break;
case 'M': case 'M':

View File

@ -104,7 +104,7 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &MAI, const Triple &T,
if (Flags & ELF::SHF_TLS) if (Flags & ELF::SHF_TLS)
OS << 'T'; OS << 'T';
if (Flags & ELF::SHF_LINK_ORDER) if (Flags & ELF::SHF_LINK_ORDER)
OS << 'm'; OS << 'o';
// If there are target-specific flags, print them. // If there are target-specific flags, print them.
Triple::ArchType Arch = T.getArch(); Triple::ArchType Arch = T.getArch();

View File

@ -4,23 +4,23 @@
@a = global i32 1 @a = global i32 1
@b = global i32 2, !associated !0 @b = global i32 2, !associated !0
!0 = !{i32* @a} !0 = !{i32* @a}
; CHECK-DAG: .section .data.b,"awm",@progbits,a ; CHECK-DAG: .section .data.b,"awo",@progbits,a
; Loop is OK. Also, normally -data-sections=0 would place @c and @d in the same section. !associated prevents that. ; Loop is OK. Also, normally -data-sections=0 would place @c and @d in the same section. !associated prevents that.
@c = global i32 2, !associated !2 @c = global i32 2, !associated !2
@d = global i32 2, !associated !1 @d = global i32 2, !associated !1
!1 = !{i32* @c} !1 = !{i32* @c}
!2 = !{i32* @d} !2 = !{i32* @d}
; CHECK-DAG: .section .data.c,"awm",@progbits,d ; CHECK-DAG: .section .data.c,"awo",@progbits,d
; CHECK-DAG: .section .data.d,"awm",@progbits,c ; CHECK-DAG: .section .data.d,"awo",@progbits,c
; BSS is OK. ; BSS is OK.
@e = global i32 0 @e = global i32 0
@f = global i32 0, !associated !3 @f = global i32 0, !associated !3
@g = global i32 1, !associated !3 @g = global i32 1, !associated !3
!3 = !{i32* @e} !3 = !{i32* @e}
; CHECK-DAG: .section .bss.f,"awm",@nobits,e ; CHECK-DAG: .section .bss.f,"awo",@nobits,e
; CHECK-DAG: .section .data.g,"awm",@progbits,e ; CHECK-DAG: .section .data.g,"awo",@progbits,e
; Explicit sections. ; Explicit sections.
@h = global i32 1, section "aaa" @h = global i32 1, section "aaa"
@ -29,9 +29,9 @@
@k = global i32 1, !associated !4 @k = global i32 1, !associated !4
!4 = !{i32* @h} !4 = !{i32* @h}
; CHECK-DAG: .section aaa,"aw",@progbits ; CHECK-DAG: .section aaa,"aw",@progbits
; CHECK-DAG: .section bbb,"awm",@progbits,h,unique,1 ; CHECK-DAG: .section bbb,"awo",@progbits,h,unique,1
; CHECK-DAG: .section bbb,"awm",@progbits,h,unique,2 ; CHECK-DAG: .section bbb,"awo",@progbits,h,unique,2
; CHECK-DAG: .section .data.k,"awm",@progbits,h ; CHECK-DAG: .section .data.k,"awo",@progbits,h
; Non-GlobalObject metadata. ; Non-GlobalObject metadata.
@l = global i32 1, section "ccc", !associated !5 @l = global i32 1, section "ccc", !associated !5

View File

@ -2,4 +2,4 @@
// CHECK: error: symbol is not in a section: foo // CHECK: error: symbol is not in a section: foo
.section .shf_metadata,"am",@progbits,foo .section .shf_metadata,"ao",@progbits,foo

View File

@ -3,4 +3,4 @@
// CHECK: error: symbol is not in a section: foo // CHECK: error: symbol is not in a section: foo
.quad foo .quad foo
.section .shf_metadata,"am",@progbits,foo .section .shf_metadata,"ao",@progbits,foo

View File

@ -3,4 +3,4 @@
// CHECK: error: symbol is not in a section: foo // CHECK: error: symbol is not in a section: foo
foo = 42 foo = 42
.section .shf_metadata,"am",@progbits,foo .section .shf_metadata,"ao",@progbits,foo

View File

@ -2,4 +2,4 @@
// CHECK: error: expected metadata symbol // CHECK: error: expected metadata symbol
.section .shf_metadata,"am",@progbits .section .shf_metadata,"ao",@progbits

View File

@ -163,12 +163,12 @@ bar:
.Lshf_metadata_target2_2: .Lshf_metadata_target2_2:
.quad 0 .quad 0
.section .shf_metadata1,"am",@progbits,.Lshf_metadata_target2_1 .section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1
.section .shf_metadata2,"am",@progbits,.Lshf_metadata_target2_2 .section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2
.section .shf_metadata3,"am",@progbits,.shf_metadata_target1 .section .shf_metadata3,"ao",@progbits,.shf_metadata_target1
// ASM: .section .shf_metadata1,"am",@progbits,.Lshf_metadata_target2_1 // ASM: .section .shf_metadata1,"ao",@progbits,.Lshf_metadata_target2_1
// ASM: .section .shf_metadata2,"am",@progbits,.Lshf_metadata_target2_2 // ASM: .section .shf_metadata2,"ao",@progbits,.Lshf_metadata_target2_2
// ASM: .section .shf_metadata3,"am",@progbits,.shf_metadata_target1 // ASM: .section .shf_metadata3,"ao",@progbits,.shf_metadata_target1
// CHECK: Section { // CHECK: Section {
// CHECK: Index: 22 // CHECK: Index: 22