llvm-project/lld/test/elf/dynamic.test

81 lines
2.3 KiB
Plaintext

# Checks functionality of dynamic executables
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
RUN: %p/Inputs/shared.so-x86-64 -o %t -e main --allow-shlib-undefined \
RUN: -rpath /l1:/l2 -rpath /l3
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
RUN: %p/Inputs/shared.so-x86-64 --output-filetype=yaml -o %t2 --allow-shlib-undefined \
RUN: --noinhibit-exec
RUN: llvm-objdump -p %t >> %t2
RUN: llvm-readobj -s -dyn-symbols -dynamic-table %t >> %t2
RUN: FileCheck %s < %t2
CHECK: name: main
CHECK: kind: R_X86_64_PC32
CHECK: offset: 18
CHECK: target: [[PLTNAME:[-a-zA-Z0-9_]+]]
CHECK: name: [[PLTNAME]]
CHECK: type: stub
CHECK: type: got
CHECK: references:
CHECK: kind: R_X86_64_JUMP_SLOT
CHECK: shared-library-atoms:
CHECK: name: foo
CHECK: load-name: shared.so-x86-64
CHECK: PHDR off 0x{{0+}}40
CHECK: INTERP
CHECK: flags r--
CHECK: Section {
CHECK: Name: .hash
CHECK-NEXT: Type: SHT_HASH
CHECK-NEXT: Flags [
CHECK-NEXT: SHF_ALLOC
CHECK-NEXT: ]
CHECK-NEXT: Address:
CHECK-NEXT: Offset:
CHECK-NEXT: Size: 32
CHECK-NEXT: Link:
CHECK-NEXT: Info:
CHECK-NEXT: AddressAlignment: 8
CHECK-NEXT: EntrySize:
CHECK-NEXT: }
CHECK: DynamicSymbols [
CHECK: Symbol {
CHECK: Name: foo
CHECK-NEXT: Value: 0
CHECK-NEXT: Size:
CHECK-NEXT: Binding: Global
CHECK-NEXT: Type: Function
CHECK: }
CHECK: Symbol {
CHECK: Name: i
CHECK-NEXT: Value: 0
CHECK-NEXT: Size:
CHECK-NEXT: Binding: Global
CHECK-NEXT: Type: Object
CHECK: }
CHECK: DynamicSection [ (15 entries)
CHECK: Tag Type Name/Value
CHECK: 0x0000000000000004 HASH
CHECK: 0x0000000000000005 STRTAB
CHECK: 0x0000000000000006 SYMTAB
CHECK: 0x000000000000000A STRSZ
CHECK: 0x000000000000000B SYMENT 24
CHECK: 0x0000000000000007 RELA
CHECK: 0x0000000000000008 RELASZ 24
CHECK: 0x0000000000000009 RELAENT 24
CHECK: 0x0000000000000002 PLTRELSZ 24
CHECK: 0x0000000000000003 PLTGOT
CHECK: 0x0000000000000014 PLTREL RELA
CHECK: 0x0000000000000017 JMPREL
CHECK: 0x0000000000000001 NEEDED SharedLibrary (shared.so-x86-64)
CHECK: 0x000000000000000F RPATH /l1:/l2:/l3
CHECK: 0x0000000000000000 NULL 0x0
CHECK: ]