From f84acb959b8cf80f817fa9d7842729379fe7d32e Mon Sep 17 00:00:00 2001 From: Denis Protivensky Date: Thu, 23 Jul 2015 11:46:59 +0000 Subject: [PATCH] [LinkerScript] Fix case when setting custom NONE segment llvm-svn: 243006 --- lld/lib/ReaderWriter/LinkerScript.cpp | 2 +- lld/test/elf/linkerscript/phdrs-custom-none.test | 36 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lld/test/elf/linkerscript/phdrs-custom-none.test diff --git a/lld/lib/ReaderWriter/LinkerScript.cpp b/lld/lib/ReaderWriter/LinkerScript.cpp index 858fa781..9eac3b6 100644 --- a/lld/lib/ReaderWriter/LinkerScript.cpp +++ b/lld/lib/ReaderWriter/LinkerScript.cpp @@ -2740,7 +2740,7 @@ std::error_code Sema::buildSectionToPHDR() { // Add NONE header to the map provided there's no user-defined // header with the same name. - if (!_sectionToPHDR.count(PHDR_NONE.name())) + if (!phdrs.count(PHDR_NONE.name())) phdrs[PHDR_NONE.name()] = &PHDR_NONE; // Match output sections to available headers. diff --git a/lld/test/elf/linkerscript/phdrs-custom-none.test b/lld/test/elf/linkerscript/phdrs-custom-none.test new file mode 100644 index 0000000..1c10297 --- /dev/null +++ b/lld/test/elf/linkerscript/phdrs-custom-none.test @@ -0,0 +1,36 @@ +/* +Test when PHDRS contains custom NONE segment. + +RUN: yaml2obj -format=elf %p/Inputs/simple.o.yaml -o=%t.o + +RUN: lld -flavor gnu -target x86_64 -T %s %t.o -static -o %t1 +RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix CUSTOM-NONE-SECS %s +RUN: llvm-readobj -program-headers %t1 | FileCheck -check-prefix CUSTOM-NONE-HDRS %s +*/ + +ENTRY(_start) + +PHDRS +{ + NONE PT_LOAD; +} + +SECTIONS +{ + .text : { *(.text) } :NONE + .data : { *(.data) } +} + +/* +CUSTOM-NONE-SECS: .text {{[0-9a-f]+}} 00000000004000b0 +CUSTOM-NONE-SECS: .data {{[0-9a-f]+}} 00000000004000dc + +CUSTOM-NONE-HDRS: ProgramHeader { +CUSTOM-NONE-HDRS: Type: PT_LOAD (0x1) +CUSTOM-NONE-HDRS: VirtualAddress: 0x400000 +CUSTOM-NONE-HDRS: Flags [ (0x5) +CUSTOM-NONE-HDRS: PF_R (0x4) +CUSTOM-NONE-HDRS: PF_X (0x1) +CUSTOM-NONE-HDRS: ] +CUSTOM-NONE-HDRS: } +*/ -- 2.7.4