diff options
Diffstat (limited to 'lld')
-rw-r--r-- | lld/ELF/Writer.cpp | 3 | ||||
-rw-r--r-- | lld/test/ELF/relocatable-bss.s | 2 | ||||
-rw-r--r-- | lld/test/ELF/relocatable-comment.s | 27 | ||||
-rw-r--r-- | lld/test/ELF/relocatable.s | 6 |
4 files changed, 33 insertions, 5 deletions
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 941a6d81ff9..de9a2f9fe7d 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -267,7 +267,8 @@ template <class ELFT> void Writer<ELFT>::createSyntheticSections() { Out<ELFT>::VerDef = make<VersionDefinitionSection<ELFT>>(); // Initialize linker generated sections - Symtab<ELFT>::X->Sections.push_back(createCommentSection<ELFT>()); + if (!Config->Relocatable) + Symtab<ELFT>::X->Sections.push_back(createCommentSection<ELFT>()); if (Config->BuildId == BuildIdKind::Fast) In<ELFT>::BuildId = make<BuildIdFastHash<ELFT>>(); diff --git a/lld/test/ELF/relocatable-bss.s b/lld/test/ELF/relocatable-bss.s index 11078bc2415..0411bf339c4 100644 --- a/lld/test/ELF/relocatable-bss.s +++ b/lld/test/ELF/relocatable-bss.s @@ -20,7 +20,7 @@ # CHECK-NEXT: Version: # CHECK-NEXT: Entry: # CHECK-NEXT: ProgramHeaderOffset: -# CHECK-NEXT: SectionHeaderOffset: 0xB8 +# CHECK-NEXT: SectionHeaderOffset: 0xA8 # CHECK-NEXT: Flags [ # CHECK-NEXT: ] # CHECK-NEXT: HeaderSize: diff --git a/lld/test/ELF/relocatable-comment.s b/lld/test/ELF/relocatable-comment.s new file mode 100644 index 00000000000..8ec22c2f43d --- /dev/null +++ b/lld/test/ELF/relocatable-comment.s @@ -0,0 +1,27 @@ +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o +# RUN: ld.lld -r %t1.o -o %t +# RUN: llvm-readobj -s -section-data %t | FileCheck %s + +# CHECK: Name: .comment +# CHECK-NEXT: Type: SHT_PROGBITS +# CHECK-NEXT: Flags [ +# CHECK-NEXT: SHF_MERGE +# CHECK-NEXT: SHF_STRINGS +# CHECK-NEXT: ] +# CHECK-NEXT: Address: +# CHECK-NEXT: Offset: +# CHECK-NEXT: Size: 7 +# CHECK-NEXT: Link: +# CHECK-NEXT: Info: +# CHECK-NEXT: AddressAlignment: 1 +# CHECK-NEXT: EntrySize: 1 +# CHECK-NEXT: SectionData ( +# CHECK-NEXT: 0000: 666F6F62 617200 |foobar.| +# CHECK-NEXT: ) + + +# We used to crash creating a merge and non merge .comment sections. + + .section .comment,"MS",@progbits,1 + .asciz "foobar" diff --git a/lld/test/ELF/relocatable.s b/lld/test/ELF/relocatable.s index a0f63dd4b16..73cf4cccd83 100644 --- a/lld/test/ELF/relocatable.s +++ b/lld/test/ELF/relocatable.s @@ -30,15 +30,15 @@ # CHECK-NEXT: Version: 1 # CHECK-NEXT: Entry: 0x0 # CHECK-NEXT: ProgramHeaderOffset: 0x0 -# CHECK-NEXT: SectionHeaderOffset: 0x2D0 +# CHECK-NEXT: SectionHeaderOffset: 0x2C0 # CHECK-NEXT: Flags [ # CHECK-NEXT: ] # CHECK-NEXT: HeaderSize: 64 # CHECK-NEXT: ProgramHeaderEntrySize: 0 # CHECK-NEXT: ProgramHeaderCount: 0 # CHECK-NEXT: SectionHeaderEntrySize: 64 -# CHECK-NEXT: SectionHeaderCount: 8 -# CHECK-NEXT: StringTableSectionIndex: 6 +# CHECK-NEXT: SectionHeaderCount: 7 +# CHECK-NEXT: StringTableSectionIndex: 5 # CHECK-NEXT: } # CHECK: Relocations [ |