72 lines · plain
1# REQUIRES: x862## Verify that the arguments --export-dynamic and --dynamic-list3## put the correct symbols in the dynamic symbol table.4 5# RUN: echo "{ *; };" > %t.list6 7# RUN: echo ".globl shared" > %t.s ; echo "shared = 0xDEADBEEF" >> %t.s8 9# RUN: llvm-mc -filetype=obj -triple=x86_64 %t.s -o %t-shared.o10# RUN: ld.lld --shared %t-shared.o -o %t.so11 12# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o13## Use --fatal-warnings to confirm no diagnostics are emitted.14# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %t.out15# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %texport.out --export-dynamic16# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %tlist.out --dynamic-list %t.list17 18# RUN: llvm-readelf --dyn-syms %t.out | FileCheck %s --check-prefix=NO-EXPORT19# RUN: llvm-readelf --dyn-syms %texport.out | FileCheck %s --check-prefix=EXPORT20# RUN: llvm-readelf --dyn-syms %tlist.out | FileCheck %s --check-prefix=EXPORT21 22# NO-EXPORT: Symbol table '.dynsym' contains 3 entries:23# NO-EXPORT: GLOBAL DEFAULT {{.*}} shared24# NO-EXPORT-NEXT: WEAK DEFAULT {{.*}} undef_weak25 26# EXPORT: Symbol table '.dynsym' contains 8 entries:27# EXPORT: GLOBAL DEFAULT {{.*}} shared28# EXPORT-NEXT: WEAK DEFAULT {{.*}} undef_weak29# EXPORT-NEXT: WEAK DEFAULT {{.*}} weak_default30# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} common31# EXPORT-NEXT: GLOBAL DEFAULT ABS abs32# EXPORT-NEXT: GLOBAL PROTECTED {{.*}} _start33# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} defsym34 35## --no-export-dynamic can cancel previous --export-dynamic.36# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o - --export-dynamic --no-export-dynamic | cmp %t.out -37 38.weak undef_weak39 40.weak weak_default41weak_default:42 43.weak weak_internal44.internal weak_internal45weak_internal:46 47.weak weak_hidden48.internal weak_hidden49weak_hidden:50 51.weak weak_protected52.internal weak_protected53weak_protected:54 55.globl shared56 57.local local58local:59 60.comm common, 1061 62.globl abs63abs = 0xDEADBEEF64 65.globl hidden66.hidden hidden67hidden:68 69.globl _start70.protected _start71_start:72