Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / llvm-objcopy / ELF / keep-symbol.test
blob5ff9c0ddf56684870c707a6758c1190fe68e0a85
1 # RUN: yaml2obj %s -o %t
2 # RUN: llvm-objcopy --discard-all -K foo --keep-symbol bar %t %t2
3 # RUN: llvm-objcopy -K foo -N foo -N bar --keep-symbol bar -N baz %t %t3
4 # RUN: llvm-objcopy --discard-all --regex -K '^ba.*' %t %t4
5 # RUN: llvm-readobj --symbols %t2 | FileCheck %s
6 # RUN: llvm-readobj --symbols %t3 | FileCheck %s
7 # RUN: llvm-readobj --symbols %t4 | FileCheck %s --check-prefix=REGEX
9 # RUN: echo 'foo' > %t.symbols
10 # RUN: echo 'bar' >> %t.symbols
11 # RUN: echo '.* # no regex without --regex' >> %t.symbols
12 # RUN: llvm-objcopy --discard-all --keep-symbols %t.symbols %t %t5
13 # RUN: llvm-objcopy -K foo -N foo -N bar --keep-symbols %t.symbols -N baz %t %t6
14 # RUN: llvm-readobj --symbols %t5 | FileCheck %s
15 # RUN: llvm-readobj --symbols %t6 | FileCheck %s
17 # RUN: echo 'f.*' > %t.symbols.regex
18 # RUN: echo '.*ar' >> %t.symbols.regex
19 # RUN: llvm-objcopy --discard-all --keep-symbols %t.symbols.regex --regex %t %t7
20 # RUN: cmp %t6 %t7
22 !ELF
23 FileHeader:
24   Class:           ELFCLASS64
25   Data:            ELFDATA2LSB
26   Type:            ET_REL
27   Machine:         EM_X86_64
28 Sections:
29   - Name:            .text
30     Type:            SHT_PROGBITS
31     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
32     Address:         0x1000
33     AddressAlign:    0x0000000000000010
34     Size:            64
35 Symbols:
36   - Name:     foo
37     Type:     STT_FUNC
38     Section:  .text
39     Value:    0x1000
40     Size:     8
41   - Name:     bar
42     Type:     STT_FUNC
43     Section:  .text
44     Value:    0x1008
45     Size:     8
46   - Name:     baz
47     Type:     STT_FUNC
48     Section:  .text
49     Value:    0x1010
50     Size:     8
52 #CHECK: Symbols [
53 #CHECK-NEXT:  Symbol {
54 #CHECK-NEXT:    Name:
55 #CHECK-NEXT:    Value: 0x0
56 #CHECK-NEXT:    Size: 0
57 #CHECK-NEXT:    Binding: Local
58 #CHECK-NEXT:    Type: None
59 #CHECK-NEXT:    Other: 0
60 #CHECK-NEXT:    Section: Undefined
61 #CHECK-NEXT:  }
62 #CHECK-NEXT:  Symbol {
63 #CHECK-NEXT:    Name: foo
64 #CHECK-NEXT:    Value: 0x1000
65 #CHECK-NEXT:    Size: 8
66 #CHECK-NEXT:    Binding: Local
67 #CHECK-NEXT:    Type: Function
68 #CHECK-NEXT:    Other: 0
69 #CHECK-NEXT:    Section: .text
70 #CHECK-NEXT:  }
71 #CHECK-NEXT:  Symbol {
72 #CHECK-NEXT:    Name: bar
73 #CHECK-NEXT:    Value: 0x1008
74 #CHECK-NEXT:    Size: 8
75 #CHECK-NEXT:    Binding: Local
76 #CHECK-NEXT:    Type: Function
77 #CHECK-NEXT:    Other: 0
78 #CHECK-NEXT:    Section: .text
79 #CHECK-NEXT:  }
80 #CHECK-NEXT:]
82 #REGEX: Symbols [
83 #REGEX-NOT: foo
84 #REGEX: Name: bar
85 #REGEX: Name: baz
86 #REGEX: ]