diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64 | bin | 0 -> 544 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-readobj/program-headers.test | 35 | ||||
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 4 |
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 Binary files differnew file mode 100644 index 00000000000..757d49055a7 --- /dev/null +++ b/llvm/test/Object/Inputs/openbsd-phdrs.elf-x86-64 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 ""; } } |

