summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64bin0 -> 544 bytes
-rw-r--r--llvm/test/tools/llvm-readobj/program-headers.test35
-rw-r--r--llvm/tools/llvm-readobj/ELFDumper.cpp4
3 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64 b/llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64
new file mode 100644
index 00000000000..757d49055a7
--- /dev/null
+++ b/llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64
Binary files differ
diff --git a/llvm/test/tools/llvm-readobj/program-headers.test b/llvm/test/tools/llvm-readobj/program-headers.test
index 8e8855d8b8e..9bcd133bc44 100644
--- a/llvm/test/tools/llvm-readobj/program-headers.test
+++ b/llvm/test/tools/llvm-readobj/program-headers.test
@@ -7,6 +7,17 @@ RUN: | FileCheck %s -check-prefix ELF-MIPS
RUN: llvm-readobj -program-headers %p/../../Object/Inputs/program-headers.mips64 \
RUN: | FileCheck %s -check-prefix ELF-MIPS64
+## openbsd-phdrs.elf-x86-64 was generated using GNU ld (GNU Binutils for Ubuntu) 2.26.1.
+## llvm-mc -filetype=obj -triple=x86_64-pc-linux test.s -o main.o
+## ld -script linker.script main.o -o openbsd-phdrs.elf-x86-64
+##
+## test.s is an empty file.
+## linker.script:
+## PHDRS { text PT_LOAD FILEHDR PHDRS; foo 0x65a3dbe6; bar 0x65a3dbe7; }
+## SECTIONS { . = SIZEOF_HEADERS; .all : { *(.*) } : text }
+RUN: llvm-readobj -program-headers %p/../../Object/Inputs/openbsd-phdrs.elf-x86-64 \
+RUN: | FileCheck %s -check-prefix OPENBSD-X86-64
+
ELF-I386: ProgramHeaders [
ELF-I386-NEXT: ProgramHeader {
ELF-I386-NEXT: Type: PT_LOAD (0x1)
@@ -140,3 +151,27 @@ ELF-MIPS64-NEXT: ]
ELF-MIPS64-NEXT: Alignment: 65536
ELF-MIPS64-NEXT: }
ELF-MIPS64-NEXT: ]
+
+OPENBSD-X86-64: ProgramHeaders [
+OPENBSD-X86-64: ProgramHeader {
+OPENBSD-X86-64: Type: PT_OPENBSD_RANDOMIZE
+OPENBSD-X86-64-NEXT: Offset:
+OPENBSD-X86-64-NEXT: VirtualAddress:
+OPENBSD-X86-64-NEXT: PhysicalAddress:
+OPENBSD-X86-64-NEXT: FileSize:
+OPENBSD-X86-64-NEXT: MemSize:
+OPENBSD-X86-64-NEXT: Flags [
+OPENBSD-X86-64-NEXT: ]
+OPENBSD-X86-64-NEXT: Alignment:
+OPENBSD-X86-64-NEXT: }
+OPENBSD-X86-64-NEXT: ProgramHeader {
+OPENBSD-X86-64-NEXT: Type: PT_OPENBSD_WXNEEDED
+OPENBSD-X86-64-NEXT: Offset:
+OPENBSD-X86-64-NEXT: VirtualAddress:
+OPENBSD-X86-64-NEXT: PhysicalAddress:
+OPENBSD-X86-64-NEXT: FileSize:
+OPENBSD-X86-64-NEXT: MemSize:
+OPENBSD-X86-64-NEXT: Flags [
+OPENBSD-X86-64-NEXT: ]
+OPENBSD-X86-64-NEXT: Alignment:
+OPENBSD-X86-64-NEXT: }
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 318ad2a0abd..9c594a0e339 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -1154,6 +1154,10 @@ static const char *getElfSegmentType(unsigned Arch, unsigned Type) {
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_STACK);
LLVM_READOBJ_ENUM_CASE(ELF, PT_GNU_RELRO);
+
+ LLVM_READOBJ_ENUM_CASE(ELF, PT_OPENBSD_RANDOMIZE);
+ LLVM_READOBJ_ENUM_CASE(ELF, PT_OPENBSD_WXNEEDED);
+
default: return "";
}
}
OpenPOWER on IntegriCloud