forked from OSchip/llvm-project
Start linker scripts at 0.
We were implicitly creating space for the headers. That is not the behaviour of bfd, which requires the script to use SIZEOF_HEADERS. The difference is important for scripts that don't use SIZEOF_HEADERS and expect the first section to be at 0. llvm-svn: 282818
This commit is contained in:
parent
4b36e0c409
commit
be6073345e
|
@ -595,7 +595,7 @@ void LinkerScript<ELFT>::assignAddresses(std::vector<PhdrEntry<ELFT>> &Phdrs) {
|
|||
}
|
||||
|
||||
// Assign addresses as instructed by linker script SECTIONS sub-commands.
|
||||
Dot = getHeaderSize();
|
||||
Dot = 0;
|
||||
|
||||
for (const std::unique_ptr<BaseCommand> &Base : Opt.Commands) {
|
||||
if (auto *Cmd = dyn_cast<SymbolAssignment>(Base.get())) {
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
# RUN: ld.lld -o %t --script %t.script %t.o -shared
|
||||
# RUN: llvm-readobj -elf-output-style=GNU -l %t | FileCheck %s
|
||||
|
||||
# RUN: echo "SECTIONS {foo : {*(foo*)} }" > %t.script
|
||||
# RUN: ld.lld -o %t --script %t.script %t.o -shared
|
||||
# RUN: llvm-readobj -elf-output-style=GNU -l %t | FileCheck %s
|
||||
|
||||
# There is not enough address space available for the header, so just start the PT_LOAD
|
||||
# after it.
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
# CHECK: Sections:
|
||||
# CHECK-NEXT: Idx Name Size Address Type
|
||||
# CHECK-NEXT: 0 00000000 0000000000000000
|
||||
# CHECK-NEXT: 1 .text 00000001 00000000000000e8 TEXT DATA
|
||||
# CHECK-NEXT: 2 .foo 00000004 00000000000000e9 DATA
|
||||
# CHECK-NEXT: 3 .boo 00000004 00000000000000ed DATA
|
||||
# CHECK-NEXT: 1 .text 00000001 0000000000000000 TEXT DATA
|
||||
# CHECK-NEXT: 2 .foo 00000004 0000000000000001 DATA
|
||||
# CHECK-NEXT: 3 .boo 00000004 0000000000000005 DATA
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
|
|
Loading…
Reference in New Issue