mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-20 11:32:33 +00:00
Derive ELF section type from the name in some cases where GNU as does
so. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175327 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
abbf9df7f4
commit
42edeb1ba8
@ -413,7 +413,16 @@ bool ELFAsmParser::ParseDirectiveSection(StringRef, SMLoc) {
|
||||
|
||||
unsigned Type = ELF::SHT_PROGBITS;
|
||||
|
||||
if (!TypeName.empty()) {
|
||||
if (TypeName.empty()) {
|
||||
if (SectionName.startswith(".note"))
|
||||
Type = ELF::SHT_NOTE;
|
||||
else if (SectionName == ".init_array")
|
||||
Type = ELF::SHT_INIT_ARRAY;
|
||||
else if (SectionName == ".fini_array")
|
||||
Type = ELF::SHT_FINI_ARRAY;
|
||||
else if (SectionName == ".preinit_array")
|
||||
Type = ELF::SHT_PREINIT_ARRAY;
|
||||
} else {
|
||||
if (TypeName == "init_array")
|
||||
Type = ELF::SHT_INIT_ARRAY;
|
||||
else if (TypeName == "fini_array")
|
||||
|
62
test/MC/AsmParser/section_names.s
Normal file
62
test/MC/AsmParser/section_names.s
Normal file
@ -0,0 +1,62 @@
|
||||
# RUN: llvm-mc -triple i386-pc-linux-gnu -filetype=obj -o %t %s
|
||||
# RUN: elf-dump --dump-section-data < %t | FileCheck %s
|
||||
.section .nobits
|
||||
.byte 1
|
||||
.section .nobits2
|
||||
.byte 1
|
||||
.section .nobitsfoo
|
||||
.byte 1
|
||||
.section .init_array
|
||||
.byte 1
|
||||
.section .init_array2
|
||||
.byte 1
|
||||
.section .init_arrayfoo
|
||||
.byte 1
|
||||
.section .fini_array
|
||||
.byte 1
|
||||
.section .fini_array2
|
||||
.byte 1
|
||||
.section .fini_arrayfoo
|
||||
.byte 1
|
||||
.section .preinit_array
|
||||
.byte 1
|
||||
.section .preinit_array2
|
||||
.byte 1
|
||||
.section .preinit_arrayfoo
|
||||
.byte 1
|
||||
.section .note
|
||||
.byte 1
|
||||
.section .note2
|
||||
.byte 1
|
||||
.section .notefoo
|
||||
.byte 1
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.nobits'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.nobits2'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.nobitsfoo'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.init_array'
|
||||
# CHECK-NEXT: ('sh_type', 0x0000000e)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.init_array2'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.init_arrayfoo'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_array'
|
||||
# CHECK-NEXT: ('sh_type', 0x0000000f)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_array2'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.fini_arrayfoo'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_array'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000010)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_array2'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.preinit_arrayfoo'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000001)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.note'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000007)
|
||||
# CHECK: (('sh_name', 0x00000{{...}}) # '.note2'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000007)
|
||||
#CHECK: (('sh_name', 0x00000{{...}}) # '.notefoo'
|
||||
# CHECK-NEXT: ('sh_type', 0x00000007)
|
Loading…
x
Reference in New Issue
Block a user