46 lines
1.8 KiB
Plaintext
46 lines
1.8 KiB
Plaintext
// This test verifies that loading an ELF file that has no section headers can
|
|
// load the dynamic symbol table using the DT_SYMTAB, DT_SYMENT, DT_HASH or
|
|
// the DT_GNU_HASH .dynamic key/value pairs that are loaded via the PT_DYNAMIC
|
|
// segment.
|
|
|
|
// REQUIRES: x86-registered-Target
|
|
// RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj \
|
|
// RUN: -o - - <<<".globl defined, undefined; defined:" | \
|
|
// RUN: ld.lld /dev/stdin -o - --hash-style=gnu -export-dynamic -shared \
|
|
// RUN: -o %t.gnu
|
|
// RUN: llvm-strip --strip-sections %t.gnu
|
|
// RUN: %lldb %t.gnu -b \
|
|
// RUN: -o "image dump objfile" \
|
|
// RUN: | FileCheck %s --dump-input=always --check-prefix=GNU
|
|
// GNU: (lldb) image dump objfile
|
|
// GNU: Dumping headers for 1 module(s).
|
|
// GNU: ObjectFileELF, file =
|
|
// GNU: ELF Header
|
|
// GNU: e_type = 0x0003 ET_DYN
|
|
// Make sure there are no section headers
|
|
// GNU: e_shnum = 0x00000000
|
|
// Make sure we were able to load the symbols
|
|
// GNU: Symtab, file = {{.*}}elf-dynsym.test.tmp.gnu, num_symbols = 2:
|
|
// GNU-DAG: undefined
|
|
// GNU-DAG: defined
|
|
|
|
// RUN: llvm-mc -triple=x86_64-pc-linux -filetype=obj \
|
|
// RUN: -o - - <<<".globl defined, undefined; defined:" | \
|
|
// RUN: ld.lld /dev/stdin -o - --hash-style=sysv -export-dynamic -shared \
|
|
// RUN: -o %t.sysv
|
|
// RUN: llvm-strip --strip-sections %t.sysv
|
|
// RUN: %lldb %t.sysv -b \
|
|
// RUN: -o "image dump objfile" \
|
|
// RUN: | FileCheck %s --dump-input=always --check-prefix=HASH
|
|
// HASH: (lldb) image dump objfile
|
|
// HASH: Dumping headers for 1 module(s).
|
|
// HASH: ObjectFileELF, file =
|
|
// HASH: ELF Header
|
|
// HASH: e_type = 0x0003 ET_DYN
|
|
// Make sure there are no section headers
|
|
// HASH: e_shnum = 0x00000000
|
|
// Make sure we were able to load the symbols
|
|
// HASH: Symtab, file = {{.*}}elf-dynsym.test.tmp.sysv, num_symbols = 2:
|
|
// HASH-DAG: undefined
|
|
// HASH-DAG: defined
|