Index: lld/trunk/ELF/Writer.cpp =================================================================== --- lld/trunk/ELF/Writer.cpp +++ lld/trunk/ELF/Writer.cpp @@ -844,9 +844,9 @@ if (ScriptConfig->HasSections) return; - // __ehdr_start is the location of program headers. + // __ehdr_start is the location of ELF file headers. ElfSym::EhdrStart = - addOptionalSynthetic("__ehdr_start", Out::ProgramHeaders, 0); + addOptionalSynthetic("__ehdr_start", Out::ElfHeader, 0); auto Define = [](StringRef S, DefinedSynthetic *&Sym1, DefinedSynthetic *&Sym2) { @@ -1138,7 +1138,7 @@ // This is a bit of a hack. A value of 0 means undef, so we set it // to 1 t make __ehdr_start defined. The section number is not // particularly relevant. - Out::ProgramHeaders->SectionIndex = 1; + Out::ElfHeader->SectionIndex = 1; unsigned I = 1; for (OutputSectionBase *Sec : OutputSections) { Index: lld/trunk/test/ELF/ehdr_start.s =================================================================== --- lld/trunk/test/ELF/ehdr_start.s +++ lld/trunk/test/ELF/ehdr_start.s @@ -2,8 +2,16 @@ # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o # RUN: ld.lld %t.o -o %t -# RUN: llvm-objdump -t %t | FileCheck %s -# CHECK: 0000000000200040 .text 00000000 .hidden __ehdr_start +# RUN: llvm-readobj -symbols %t | FileCheck %s +# CHECK: Name: __ehdr_start (1) +# CHECK-NEXT: Value: 0x200000 +# CHECK-NEXT: Size: 0 +# CHECK-NEXT: Binding: Local (0x0) +# CHECK-NEXT: Type: None (0x0) +# CHECK-NEXT: Other [ (0x2) +# CHECK-NEXT: STV_HIDDEN (0x2) +# CHECK-NEXT: ] +# CHECK-NEXT: Section: .text (0x1) .text .global _start, __ehdr_start @@ -11,6 +19,12 @@ .quad __ehdr_start # RUN: ld.lld -r %t.o -o %t.r -# RUN: llvm-objdump -t %t.r | FileCheck %s --check-prefix=RELOCATABLE +# RUN: llvm-readobj -symbols %t.r | FileCheck %s --check-prefix=RELOCATABLE -# RELOCATABLE: 0000000000000000 *UND* 00000000 __ehdr_start +# RELOCATABLE: Name: __ehdr_start (1) +# RELOCATABLE-NEXT: Value: 0x0 +# RELOCATABLE-NEXT: Size: 0 +# RELOCATABLE-NEXT: Binding: Global (0x1) +# RELOCATABLE-NEXT: Type: None (0x0) +# RELOCATABLE-NEXT: Other: 0 +# RELOCATABLE-NEXT: Section: Undefined (0x0)