George Rimar | 8825a5c | 2016-09-07 09:59:29 +0000 | [diff] [blame] | 1 | # REQUIRES: x86 |
George Rimar | 50dcece | 2016-07-16 12:26:39 +0000 | [diff] [blame] | 2 | |
| 3 | # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o |
Rui Ueyama | d14743e | 2016-11-23 05:14:01 +0000 | [diff] [blame] | 4 | # RUN: echo "LIBSAMPLE_1.0 { global:" > %t.script |
| 5 | # RUN: echo ' extern "C++" { "foo(int)"; "zed(int)"; "abc::abc()"; };' >> %t.script |
| 6 | # RUN: echo "};" >> %t.script |
| 7 | # RUN: echo "LIBSAMPLE_2.0 { global:" >> %t.script |
Rafael Espindola | 7e71415 | 2016-12-08 17:26:53 +0000 | [diff] [blame] | 8 | # RUN: echo ' extern "C" { _Z3bari; };' >> %t.script |
Rui Ueyama | d14743e | 2016-11-23 05:14:01 +0000 | [diff] [blame] | 9 | # RUN: echo "};" >> %t.script |
Han Shen | b56030e | 2018-05-15 17:02:35 +0000 | [diff] [blame] | 10 | # RUN: ld.lld --hash-style=sysv --version-script %t.script -soname fixed-length-string -shared %t.o -o %t.so |
George Rimar | 50dcece | 2016-07-16 12:26:39 +0000 | [diff] [blame] | 11 | # RUN: llvm-readobj -V -dyn-symbols %t.so | FileCheck --check-prefix=DSO %s |
| 12 | |
| 13 | # DSO: DynamicSymbols [ |
| 14 | # DSO-NEXT: Symbol { |
| 15 | # DSO-NEXT: Name: @ |
| 16 | # DSO-NEXT: Value: 0x0 |
| 17 | # DSO-NEXT: Size: 0 |
| 18 | # DSO-NEXT: Binding: Local |
| 19 | # DSO-NEXT: Type: None |
| 20 | # DSO-NEXT: Other: 0 |
| 21 | # DSO-NEXT: Section: Undefined |
| 22 | # DSO-NEXT: } |
| 23 | # DSO-NEXT: Symbol { |
| 24 | # DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0 |
| 25 | # DSO-NEXT: Value: 0x1001 |
| 26 | # DSO-NEXT: Size: 0 |
| 27 | # DSO-NEXT: Binding: Global |
| 28 | # DSO-NEXT: Type: Function |
| 29 | # DSO-NEXT: Other: 0 |
| 30 | # DSO-NEXT: Section: .text |
| 31 | # DSO-NEXT: } |
| 32 | # DSO-NEXT: Symbol { |
| 33 | # DSO-NEXT: Name: _Z3fooi@@LIBSAMPLE_1.0 |
| 34 | # DSO-NEXT: Value: 0x1000 |
| 35 | # DSO-NEXT: Size: 0 |
| 36 | # DSO-NEXT: Binding: Global |
| 37 | # DSO-NEXT: Type: Function |
| 38 | # DSO-NEXT: Other: 0 |
| 39 | # DSO-NEXT: Section: .text |
| 40 | # DSO-NEXT: } |
| 41 | # DSO-NEXT: Symbol { |
| 42 | # DSO-NEXT: Name: _Z3zedi@@LIBSAMPLE_1.0 |
| 43 | # DSO-NEXT: Value: 0x1002 |
| 44 | # DSO-NEXT: Size: 0 |
| 45 | # DSO-NEXT: Binding: Global (0x1) |
| 46 | # DSO-NEXT: Type: Function (0x2) |
| 47 | # DSO-NEXT: Other: 0 |
| 48 | # DSO-NEXT: Section: .text (0x6) |
| 49 | # DSO-NEXT: } |
Ed Maste | 5ad1cbe | 2016-09-07 17:51:00 +0000 | [diff] [blame] | 50 | # DSO-NEXT: Symbol { |
| 51 | # DSO-NEXT: Name: _ZN3abcC1Ev@@LIBSAMPLE_1.0 |
| 52 | # DSO-NEXT: Value: 0x1003 |
| 53 | # DSO-NEXT: Size: 0 |
| 54 | # DSO-NEXT: Binding: Global (0x1) |
| 55 | # DSO-NEXT: Type: Function (0x2) |
| 56 | # DSO-NEXT: Other: 0 |
| 57 | # DSO-NEXT: Section: .text (0x6) |
| 58 | # DSO-NEXT: } |
George Rimar | 31c25ae | 2016-09-15 12:44:38 +0000 | [diff] [blame] | 59 | # DSO-NEXT: Symbol { |
| 60 | # DSO-NEXT: Name: _ZN3abcC2Ev@@LIBSAMPLE_1.0 |
| 61 | # DSO-NEXT: Value: 0x1004 |
| 62 | # DSO-NEXT: Size: 0 |
| 63 | # DSO-NEXT: Binding: Global (0x1) |
| 64 | # DSO-NEXT: Type: Function (0x2) |
| 65 | # DSO-NEXT: Other: 0 |
| 66 | # DSO-NEXT: Section: .text (0x6) |
| 67 | # DSO-NEXT: } |
George Rimar | 50dcece | 2016-07-16 12:26:39 +0000 | [diff] [blame] | 68 | # DSO-NEXT: ] |
| 69 | # DSO-NEXT: Version symbols { |
| 70 | # DSO-NEXT: Section Name: .gnu.version |
Fangrui Song | 3d87323 | 2018-06-26 22:13:32 +0000 | [diff] [blame] | 71 | # DSO-NEXT: Address: 0x258 |
| 72 | # DSO-NEXT: Offset: 0x258 |
George Rimar | 50dcece | 2016-07-16 12:26:39 +0000 | [diff] [blame] | 73 | # DSO-NEXT: Link: 1 |
| 74 | # DSO-NEXT: Symbols [ |
| 75 | # DSO-NEXT: Symbol { |
| 76 | # DSO-NEXT: Version: 0 |
| 77 | # DSO-NEXT: Name: @ |
| 78 | # DSO-NEXT: } |
| 79 | # DSO-NEXT: Symbol { |
| 80 | # DSO-NEXT: Version: 3 |
| 81 | # DSO-NEXT: Name: _Z3bari@@LIBSAMPLE_2.0 |
| 82 | # DSO-NEXT: } |
| 83 | # DSO-NEXT: Symbol { |
| 84 | # DSO-NEXT: Version: 2 |
| 85 | # DSO-NEXT: Name: _Z3fooi@@LIBSAMPLE_1.0 |
| 86 | # DSO-NEXT: } |
| 87 | # DSO-NEXT: Symbol { |
| 88 | # DSO-NEXT: Version: 2 |
| 89 | # DSO-NEXT: Name: _Z3zedi@@LIBSAMPLE_1.0 |
| 90 | # DSO-NEXT: } |
Ed Maste | 5ad1cbe | 2016-09-07 17:51:00 +0000 | [diff] [blame] | 91 | # DSO-NEXT: Symbol { |
| 92 | # DSO-NEXT: Version: 2 |
| 93 | # DSO-NEXT: Name: _ZN3abcC1Ev@@LIBSAMPLE_1.0 |
| 94 | # DSO-NEXT: } |
George Rimar | 31c25ae | 2016-09-15 12:44:38 +0000 | [diff] [blame] | 95 | # DSO-NEXT: Symbol { |
| 96 | # DSO-NEXT: Version: 2 |
| 97 | # DSO-NEXT: Name: _ZN3abcC2Ev@@LIBSAMPLE_1.0 |
| 98 | # DSO-NEXT: } |
George Rimar | 50dcece | 2016-07-16 12:26:39 +0000 | [diff] [blame] | 99 | # DSO-NEXT: ] |
| 100 | # DSO-NEXT: } |
| 101 | |
| 102 | .text |
| 103 | .globl _Z3fooi |
| 104 | .type _Z3fooi,@function |
| 105 | _Z3fooi: |
| 106 | retq |
| 107 | |
| 108 | .globl _Z3bari |
| 109 | .type _Z3bari,@function |
| 110 | _Z3bari: |
| 111 | retq |
| 112 | |
| 113 | .globl _Z3zedi |
| 114 | .type _Z3zedi,@function |
| 115 | _Z3zedi: |
| 116 | retq |
Ed Maste | 5ad1cbe | 2016-09-07 17:51:00 +0000 | [diff] [blame] | 117 | |
| 118 | .globl _ZN3abcC1Ev |
| 119 | .type _ZN3abcC1Ev,@function |
| 120 | _ZN3abcC1Ev: |
| 121 | retq |
George Rimar | 31c25ae | 2016-09-15 12:44:38 +0000 | [diff] [blame] | 122 | |
| 123 | .globl _ZN3abcC2Ev |
| 124 | .type _ZN3abcC2Ev,@function |
| 125 | _ZN3abcC2Ev: |
| 126 | retq |