Skip to content

Commit

Permalink
[llvm-readobj] - Teach readobj to print PT_OPENBSD_RANDOMIZE/PT_OPENB…
Browse files Browse the repository at this point in the history
…SD_WXNEEDED headers.

These are OpenBSD specific program headers and 
currently we support them in LLD.

Description of headers (just in case) available here:
http://man.openbsd.org/OpenBSD-current/man5/elf.5

OpenBSD commits were:
For PT_OPENBSD_RANDOMIZE:
openbsd/src@c494713
For PT_OPENBSD_WXNEEDED:
openbsd/src@2a5a8fc

Differential revision: https://reviews.llvm.org/D25616

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@284471 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
George Rimar committed Oct 18, 2016
1 parent a6faf3a commit f1fdd33
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 0 deletions.
Binary file added test/Object/Inputs/openbsd-phdrs.elf-x86-64
Binary file not shown.
35 changes: 35 additions & 0 deletions test/tools/llvm-readobj/program-headers.test
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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: }
4 changes: 4 additions & 0 deletions tools/llvm-readobj/ELFDumper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 "";
}
}
Expand Down

0 comments on commit f1fdd33

Please sign in to comment.