forked from OSchip/llvm-project
Handle 0 sized sections like any other section.
This is a case where there is inconsistency among ELF linkers: * The spec says nothing special about empty sections. * BFD ld removes them. * Gold handles them like regular sections. We were outputting them but sometimes ignoring them. This would create odd looking outputs where a rw section could be in a ro segment for example. The bfd way of doing things is also strange for the case where a symbol points to the empty section. Now we match gold and what seems to be the intention of the spec. llvm-svn: 251988
This commit is contained in:
parent
d7a267b84b
commit
61362ce876
|
@ -698,27 +698,24 @@ template <class ELFT> void Writer<ELFT>::assignAddresses() {
|
|||
// Create phdrs as we assign VAs and file offsets to all output sections.
|
||||
SmallPtrSet<Elf_Phdr *, 8> Closed;
|
||||
for (OutputSectionBase<ELFT> *Sec : OutputSections) {
|
||||
if (Sec->getSize()) {
|
||||
uintX_t Flags = toPhdrFlags(Sec->getFlags());
|
||||
Elf_Phdr *Last = &Phdrs[PhdrIdx];
|
||||
if (Last->p_flags != Flags || !needsPhdr<ELFT>(Sec)) {
|
||||
// Flags changed. End current Phdr and potentially create a new one.
|
||||
if (Closed.insert(Last).second) {
|
||||
Last->p_filesz = FileOff - Last->p_offset;
|
||||
Last->p_memsz = VA - Last->p_vaddr;
|
||||
}
|
||||
uintX_t Flags = toPhdrFlags(Sec->getFlags());
|
||||
Elf_Phdr *Last = &Phdrs[PhdrIdx];
|
||||
if (Last->p_flags != Flags || !needsPhdr<ELFT>(Sec)) {
|
||||
// Flags changed. End current Phdr and potentially create a new one.
|
||||
if (Closed.insert(Last).second) {
|
||||
Last->p_filesz = FileOff - Last->p_offset;
|
||||
Last->p_memsz = VA - Last->p_vaddr;
|
||||
}
|
||||
|
||||
if (needsPhdr<ELFT>(Sec)) {
|
||||
VA = RoundUpToAlignment(VA, Target->getPageSize());
|
||||
FileOff = RoundUpToAlignment(FileOff, Target->getPageSize());
|
||||
Elf_Phdr *PH = &Phdrs[++PhdrIdx];
|
||||
setPhdr(PH, PT_LOAD, Flags, FileOff, VA, 0, Target->getPageSize());
|
||||
}
|
||||
if (needsPhdr<ELFT>(Sec)) {
|
||||
VA = RoundUpToAlignment(VA, Target->getPageSize());
|
||||
FileOff = RoundUpToAlignment(FileOff, Target->getPageSize());
|
||||
Elf_Phdr *PH = &Phdrs[++PhdrIdx];
|
||||
setPhdr(PH, PT_LOAD, Flags, FileOff, VA, 0, Target->getPageSize());
|
||||
}
|
||||
}
|
||||
|
||||
if (Sec->getSize() && (Sec->getFlags() & SHF_ALLOC) &&
|
||||
(Sec->getFlags() & SHF_TLS)) {
|
||||
if ((Sec->getFlags() & SHF_ALLOC) && (Sec->getFlags() & SHF_TLS)) {
|
||||
if (!TlsPhdr.p_vaddr)
|
||||
setPhdr(&TlsPhdr, PT_TLS, PF_R, FileOff, VA, 0, Sec->getAlign());
|
||||
if (Sec->getType() != SHT_NOBITS)
|
||||
|
@ -776,7 +773,7 @@ template <class ELFT> int Writer<ELFT>::getPhdrsNum() const {
|
|||
++I;
|
||||
uintX_t Last = PF_R;
|
||||
for (OutputSectionBase<ELFT> *Sec : OutputSections) {
|
||||
if (!Sec->getSize() || !needsPhdr<ELFT>(Sec))
|
||||
if (!needsPhdr<ELFT>(Sec))
|
||||
continue;
|
||||
if (Sec->getFlags() & SHF_TLS)
|
||||
Tls = true;
|
||||
|
|
|
@ -27,12 +27,12 @@ __start:
|
|||
# CHECK-NEXT: Version: 1
|
||||
# CHECK-NEXT: Entry: 0x20000
|
||||
# CHECK-NEXT: ProgramHeaderOffset: 0x34
|
||||
# CHECK-NEXT: SectionHeaderOffset: 0x10080
|
||||
# CHECK-NEXT: SectionHeaderOffset: 0x20070
|
||||
# CHECK-NEXT: Flags [ (0x0)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: HeaderSize: 52
|
||||
# CHECK-NEXT: ProgramHeaderEntrySize: 32
|
||||
# CHECK-NEXT: ProgramHeaderCount: 3
|
||||
# CHECK-NEXT: ProgramHeaderCount: 4
|
||||
# CHECK-NEXT: SectionHeaderEntrySize: 40
|
||||
# CHECK-NEXT: SectionHeaderCount: 9
|
||||
# CHECK-NEXT: StringTableSectionIndex: 7
|
||||
|
@ -59,8 +59,8 @@ __start:
|
|||
# CHECK-NEXT: Flags [ (0x2)
|
||||
# CHECK-NEXT: SHF_ALLOC (0x2)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x10094
|
||||
# CHECK-NEXT: Offset: 0x94
|
||||
# CHECK-NEXT: Address: 0x100B4
|
||||
# CHECK-NEXT: Offset: 0xB4
|
||||
# CHECK-NEXT: Size: 24
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -74,8 +74,8 @@ __start:
|
|||
# CHECK-NEXT: Flags [ (0x2)
|
||||
# CHECK-NEXT: SHF_ALLOC (0x2)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x100B0
|
||||
# CHECK-NEXT: Offset: 0xB0
|
||||
# CHECK-NEXT: Address: 0x100D0
|
||||
# CHECK-NEXT: Offset: 0xD0
|
||||
# CHECK-NEXT: Size: 24
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -106,8 +106,8 @@ __start:
|
|||
# CHECK-NEXT: SHF_ALLOC (0x2)
|
||||
# CHECK-NEXT: SHF_WRITE (0x1)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x20010
|
||||
# CHECK-NEXT: Offset: 0x10010
|
||||
# CHECK-NEXT: Address: 0x30000
|
||||
# CHECK-NEXT: Offset: 0x20000
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -122,8 +122,8 @@ __start:
|
|||
# CHECK-NEXT: SHF_ALLOC (0x2)
|
||||
# CHECK-NEXT: SHF_WRITE (0x1)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x20010
|
||||
# CHECK-NEXT: Offset: 0x10010
|
||||
# CHECK-NEXT: Address: 0x30000
|
||||
# CHECK-NEXT: Offset: 0x20000
|
||||
# CHECK-NEXT: Size: 0
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -137,7 +137,7 @@ __start:
|
|||
# CHECK-NEXT: Flags [ (0x0)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x0
|
||||
# CHECK-NEXT: Offset: 0x10010
|
||||
# CHECK-NEXT: Offset: 0x20000
|
||||
# CHECK-NEXT: Size: 32
|
||||
# CHECK-NEXT: Link: 8
|
||||
# CHECK-NEXT: Info: 1
|
||||
|
@ -151,7 +151,7 @@ __start:
|
|||
# CHECK-NEXT: Flags [ (0x0)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x0
|
||||
# CHECK-NEXT: Offset: 0x10030
|
||||
# CHECK-NEXT: Offset: 0x20020
|
||||
# CHECK-NEXT: Size: 68
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -165,7 +165,7 @@ __start:
|
|||
# CHECK-NEXT: Flags [ (0x0)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x0
|
||||
# CHECK-NEXT: Offset: 0x10074
|
||||
# CHECK-NEXT: Offset: 0x20064
|
||||
# CHECK-NEXT: Size: 9
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
|
@ -199,8 +199,8 @@ __start:
|
|||
# CHECK-NEXT: Offset: 0x34
|
||||
# CHECK-NEXT: VirtualAddress: 0x10034
|
||||
# CHECK-NEXT: PhysicalAddress: 0x10034
|
||||
# CHECK-NEXT: FileSize: 96
|
||||
# CHECK-NEXT: MemSize: 96
|
||||
# CHECK-NEXT: FileSize: 128
|
||||
# CHECK-NEXT: MemSize: 128
|
||||
# CHECK-NEXT: Flags [ (0x4)
|
||||
# CHECK-NEXT: PF_R (0x4)
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -211,8 +211,8 @@ __start:
|
|||
# CHECK-NEXT: Offset: 0x0
|
||||
# CHECK-NEXT: VirtualAddress: 0x10000
|
||||
# CHECK-NEXT: PhysicalAddress: 0x10000
|
||||
# CHECK-NEXT: FileSize: 200
|
||||
# CHECK-NEXT: MemSize: 200
|
||||
# CHECK-NEXT: FileSize: 232
|
||||
# CHECK-NEXT: MemSize: 232
|
||||
# CHECK-NEXT: Flags [ (0x4)
|
||||
# CHECK-NEXT: PF_R (0x4)
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -223,12 +223,25 @@ __start:
|
|||
# CHECK-NEXT: Offset: 0x10000
|
||||
# CHECK-NEXT: VirtualAddress: 0x20000
|
||||
# CHECK-NEXT: PhysicalAddress: 0x20000
|
||||
# CHECK-NEXT: FileSize: 16
|
||||
# CHECK-NEXT: MemSize: 16
|
||||
# CHECK-NEXT: FileSize: 12
|
||||
# CHECK-NEXT: MemSize: 12
|
||||
# CHECK-NEXT: Flags [ (0x5)
|
||||
# CHECK-NEXT: PF_R (0x4)
|
||||
# CHECK-NEXT: PF_X (0x1)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Alignment: 65536
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_LOAD (0x1)
|
||||
# CHECK-NEXT: Offset: 0x20000
|
||||
# CHECK-NEXT: VirtualAddress: 0x30000
|
||||
# CHECK-NEXT: PhysicalAddress: 0x30000
|
||||
# CHECK-NEXT: FileSize: 0
|
||||
# CHECK-NEXT: MemSize: 0
|
||||
# CHECK-NEXT: Flags [
|
||||
# CHECK-NEXT: PF_R
|
||||
# CHECK-NEXT: PF_W
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Alignment: 65536
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ]
|
||||
|
|
|
@ -40,7 +40,7 @@ _start:
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x100B0
|
||||
// CHECK-NEXT: Value: 0x11000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: .Lmyothervar
|
||||
// CHECK-NEXT: Value: 0x14C
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -45,7 +45,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: .Lmyvar
|
||||
// CHECK-NEXT: Value: 0x14C
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
|
|
@ -16,14 +16,14 @@
|
|||
# X86-64-NEXT: Type: Executable (0x2)
|
||||
# X86-64-NEXT: Machine: EM_X86_64 (0x3E)
|
||||
# X86-64-NEXT: Version: 1
|
||||
# X86-64-NEXT: Entry: 0x100B0
|
||||
# X86-64-NEXT: Entry:
|
||||
# X86-64-NEXT: ProgramHeaderOffset: 0x40
|
||||
# X86-64-NEXT: SectionHeaderOffset:
|
||||
# X86-64-NEXT: Flags [ (0x0)
|
||||
# X86-64-NEXT: ]
|
||||
# X86-64-NEXT: HeaderSize: 64
|
||||
# X86-64-NEXT: ProgramHeaderEntrySize: 56
|
||||
# X86-64-NEXT: ProgramHeaderCount: 2
|
||||
# X86-64-NEXT: ProgramHeaderCount:
|
||||
# X86-64-NEXT: SectionHeaderEntrySize: 64
|
||||
# X86-64-NEXT: SectionHeaderCount:
|
||||
# X86-64-NEXT: StringTableSectionIndex:
|
||||
|
@ -47,14 +47,14 @@
|
|||
# X86-NEXT: Type: Executable (0x2)
|
||||
# X86-NEXT: Machine: EM_386 (0x3)
|
||||
# X86-NEXT: Version: 1
|
||||
# X86-NEXT: Entry: 0x10074
|
||||
# X86-NEXT: Entry:
|
||||
# X86-NEXT: ProgramHeaderOffset: 0x34
|
||||
# X86-NEXT: SectionHeaderOffset:
|
||||
# X86-NEXT: Flags [ (0x0)
|
||||
# X86-NEXT: ]
|
||||
# X86-NEXT: HeaderSize: 52
|
||||
# X86-NEXT: ProgramHeaderEntrySize: 32
|
||||
# X86-NEXT: ProgramHeaderCount: 2
|
||||
# X86-NEXT: ProgramHeaderCount:
|
||||
# X86-NEXT: SectionHeaderEntrySize: 40
|
||||
# X86-NEXT: SectionHeaderCount:
|
||||
# X86-NEXT: StringTableSectionIndex:
|
||||
|
@ -78,14 +78,14 @@
|
|||
# PPC64-NEXT: Type: Executable (0x2)
|
||||
# PPC64-NEXT: Machine: EM_PPC64 (0x15)
|
||||
# PPC64-NEXT: Version: 1
|
||||
# PPC64-NEXT: Entry: 0x100000B0
|
||||
# PPC64-NEXT: Entry:
|
||||
# PPC64-NEXT: ProgramHeaderOffset: 0x40
|
||||
# PPC64-NEXT: SectionHeaderOffset:
|
||||
# PPC64-NEXT: Flags [ (0x0)
|
||||
# PPC64-NEXT: ]
|
||||
# PPC64-NEXT: HeaderSize: 64
|
||||
# PPC64-NEXT: ProgramHeaderEntrySize: 56
|
||||
# PPC64-NEXT: ProgramHeaderCount: 2
|
||||
# PPC64-NEXT: ProgramHeaderCount:
|
||||
# PPC64-NEXT: SectionHeaderEntrySize: 64
|
||||
# PPC64-NEXT: SectionHeaderCount:
|
||||
# PPC64-NEXT: StringTableSectionIndex:
|
||||
|
@ -109,9 +109,9 @@
|
|||
# MIPS-NEXT: Type: Executable (0x2)
|
||||
# MIPS-NEXT: Machine: EM_MIPS (0x8)
|
||||
# MIPS-NEXT: Version: 1
|
||||
# MIPS-NEXT: Entry: 0x100B0
|
||||
# MIPS-NEXT: Entry:
|
||||
# MIPS-NEXT: ProgramHeaderOffset: 0x34
|
||||
# MIPS-NEXT: SectionHeaderOffset: 0x11C
|
||||
# MIPS-NEXT: SectionHeaderOffset:
|
||||
# MIPS-NEXT: Flags [ (0x0)
|
||||
# MIPS-NEXT: ]
|
||||
|
||||
|
@ -135,9 +135,9 @@
|
|||
# MIPSEL-NEXT: Type: Executable (0x2)
|
||||
# MIPSEL-NEXT: Machine: EM_MIPS (0x8)
|
||||
# MIPSEL-NEXT: Version: 1
|
||||
# MIPSEL-NEXT: Entry: 0x100B0
|
||||
# MIPSEL-NEXT: Entry:
|
||||
# MIPSEL-NEXT: ProgramHeaderOffset: 0x34
|
||||
# MIPSEL-NEXT: SectionHeaderOffset: 0x11C
|
||||
# MIPSEL-NEXT: SectionHeaderOffset:
|
||||
# MIPSEL-NEXT: Flags [ (0x0)
|
||||
# MIPSEL-NEXT: ]
|
||||
|
||||
|
|
|
@ -149,8 +149,8 @@
|
|||
# PPC64-NEXT: Flags [
|
||||
# PPC64-NEXT: SHF_ALLOC
|
||||
# PPC64-NEXT: ]
|
||||
# PPC64-NEXT: Address: 0x180
|
||||
# PPC64-NEXT: Offset: 0x180
|
||||
# PPC64-NEXT: Address: 0x1B8
|
||||
# PPC64-NEXT: Offset: 0x1B8
|
||||
# PPC64-NEXT: Size: 36
|
||||
# PPC64-NEXT: Link: 1
|
||||
# PPC64-NEXT: Info: 0
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: blah
|
||||
// CHECK-NEXT: Value: 0x170
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -25,7 +25,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x170
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -34,7 +34,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: goo
|
||||
// CHECK-NEXT: Value: 0x170
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -43,7 +43,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x170
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -64,7 +64,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start@
|
||||
// CHECK-NEXT: Value: 0x170
|
||||
// CHECK-NEXT: Value: 0x1000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: blah
|
||||
// CHECK-NEXT: Value: 0x100B0
|
||||
// CHECK-NEXT: Value: 0x11000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -46,7 +46,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: foo
|
||||
// CHECK-NEXT: Value: 0x100B0
|
||||
// CHECK-NEXT: Value: 0x11000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -55,7 +55,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: goo
|
||||
// CHECK-NEXT: Value: 0x100B0
|
||||
// CHECK-NEXT: Value: 0x11000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Local
|
||||
// CHECK-NEXT: Type: None
|
||||
|
@ -64,7 +64,7 @@
|
|||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Name: _start
|
||||
// CHECK-NEXT: Value: 0x100B0
|
||||
// CHECK-NEXT: Value: 0x11000
|
||||
// CHECK-NEXT: Size: 0
|
||||
// CHECK-NEXT: Binding: Global
|
||||
// CHECK-NEXT: Type: None
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: SHF_STRINGS
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x120
|
||||
// CHECK-NEXT: Offset: 0x120
|
||||
// CHECK-NEXT: Address:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Link: 0
|
||||
// CHECK-NEXT: Info: 0
|
||||
|
@ -31,8 +31,8 @@
|
|||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: SHF_STRINGS
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x124
|
||||
// CHECK-NEXT: Offset: 0x124
|
||||
// CHECK-NEXT: Address:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Link: 0
|
||||
// CHECK-NEXT: Info: 0
|
||||
|
|
|
@ -26,8 +26,8 @@ zed:
|
|||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: SHF_STRINGS
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x120
|
||||
// CHECK-NEXT: Offset: 0x120
|
||||
// CHECK-NEXT: Address: 0x158
|
||||
// CHECK-NEXT: Offset: 0x158
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Link: 0
|
||||
// CHECK-NEXT: Info: 0
|
||||
|
@ -44,8 +44,8 @@ zed:
|
|||
// NOTAIL-NEXT: SHF_MERGE
|
||||
// NOTAIL-NEXT: SHF_STRINGS
|
||||
// NOTAIL-NEXT: ]
|
||||
// NOTAIL-NEXT: Address: 0x120
|
||||
// NOTAIL-NEXT: Offset: 0x120
|
||||
// NOTAIL-NEXT: Address: 0x158
|
||||
// NOTAIL-NEXT: Offset: 0x158
|
||||
// NOTAIL-NEXT: Size: 7
|
||||
// NOTAIL-NEXT: Link: 0
|
||||
// NOTAIL-NEXT: Info: 0
|
||||
|
@ -62,8 +62,8 @@ zed:
|
|||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: SHF_STRINGS
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x124
|
||||
// CHECK-NEXT: Offset: 0x124
|
||||
// CHECK-NEXT: Address: 0x15C
|
||||
// CHECK-NEXT: Offset: 0x15C
|
||||
// CHECK-NEXT: Size: 4
|
||||
// CHECK-NEXT: Link: 0
|
||||
// CHECK-NEXT: Info: 0
|
||||
|
@ -75,11 +75,11 @@ zed:
|
|||
|
||||
|
||||
// CHECK: Name: bar
|
||||
// CHECK-NEXT: Value: 0x121
|
||||
// CHECK-NEXT: Value: 0x159
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x120
|
||||
// CHECK-NEXT: Value: 0x158
|
||||
|
||||
// CHECK: Name: zed
|
||||
// CHECK-NEXT: Value: 0x124
|
||||
// CHECK-NEXT: Value: 0x15C
|
||||
// CHECK-NEXT: Size: 0
|
||||
|
|
|
@ -15,7 +15,7 @@ foo:
|
|||
// CHECK-NEXT: SHF_ALLOC
|
||||
// CHECK-NEXT: SHF_MERGE
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x120
|
||||
// CHECK-NEXT: Address: 0x158
|
||||
|
||||
// CHECK: Name: foo
|
||||
// CHECK-NEXT: Value: 0x122
|
||||
// CHECK-NEXT: Value: 0x15A
|
||||
|
|
|
@ -23,7 +23,7 @@ _start:
|
|||
# CHECK-NEXT: SHF_ALLOC
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address:
|
||||
# CHECK-NEXT: Offset: 0xE8
|
||||
# CHECK-NEXT: Offset: 0x120
|
||||
# CHECK-NEXT: Size:
|
||||
# CHECK-NEXT: Link:
|
||||
# CHECK-NEXT: Info:
|
||||
|
@ -37,8 +37,8 @@ _start:
|
|||
# CHECK-NEXT: Offset: 0x40
|
||||
# CHECK-NEXT: VirtualAddress: 0x10040
|
||||
# CHECK-NEXT: PhysicalAddress: 0x10040
|
||||
# CHECK-NEXT: FileSize: 168
|
||||
# CHECK-NEXT: MemSize: 168
|
||||
# CHECK-NEXT: FileSize: 224
|
||||
# CHECK-NEXT: MemSize: 224
|
||||
# CHECK-NEXT: Flags [ (0x4)
|
||||
# CHECK-NEXT: PF_R (0x4)
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -49,8 +49,8 @@ _start:
|
|||
# CHECK-NEXT: Offset: 0x0
|
||||
# CHECK-NEXT: VirtualAddress:
|
||||
# CHECK-NEXT: PhysicalAddress:
|
||||
# CHECK-NEXT: FileSize: 240
|
||||
# CHECK-NEXT: MemSize: 240
|
||||
# CHECK-NEXT: FileSize: 296
|
||||
# CHECK-NEXT: MemSize: 296
|
||||
# CHECK-NEXT: Flags [
|
||||
# CHECK-NEXT: PF_R
|
||||
# CHECK-NEXT: ]
|
||||
|
@ -61,6 +61,19 @@ _start:
|
|||
# CHECK-NEXT: Offset:
|
||||
# CHECK-NEXT: VirtualAddress:
|
||||
# CHECK-NEXT: PhysicalAddress:
|
||||
# CHECK-NEXT: FileSize: 0
|
||||
# CHECK-NEXT: MemSize: 0
|
||||
# CHECK-NEXT: Flags [
|
||||
# CHECK-NEXT: PF_R
|
||||
# CHECK-NEXT: PF_X
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Alignment:
|
||||
# CHECK-NEXT: }
|
||||
# CHECK-NEXT: ProgramHeader {
|
||||
# CHECK-NEXT: Type: PT_LOAD
|
||||
# CHECK-NEXT: Offset:
|
||||
# CHECK-NEXT: VirtualAddress:
|
||||
# CHECK-NEXT: PhysicalAddress:
|
||||
# CHECK-NEXT: FileSize: 16
|
||||
# CHECK-NEXT: MemSize: 16
|
||||
# CHECK-NEXT: Flags [
|
||||
|
|
|
@ -19,7 +19,7 @@ _start:
|
|||
// CHECK-NEXT: Flags [
|
||||
// CHECK-NEXT: SHF_ALLOC
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: Address: 0x100B0
|
||||
// CHECK-NEXT: Address: 0x100E8
|
||||
|
||||
// CHECK: Name: foobar
|
||||
// CHECK-NEXT: Type: SHT_PROGBITS
|
||||
|
|
Loading…
Reference in New Issue