1# RUN: yaml2obj %s -o %t
2
3# No symbol matches, because pattern is implicitly enveloped in '^$'
4# RUN: llvm-objcopy --discard-all --regex -K 'ba' %t %t2
5# RUN: llvm-readobj --symbols %t2 | FileCheck %s --check-prefix=REGEX1
6
7# Symbol 'bar' matches
8# RUN: llvm-objcopy --discard-all --regex -K 'ba.*' %t %t3
9# RUN: llvm-readobj --symbols %t3 | FileCheck %s --check-prefix=REGEX2
10
11# All symbols match
12# RUN: llvm-objcopy --discard-all --regex -K '.*ba.*' %t %t4
13# RUN: llvm-readobj --symbols %t4 | FileCheck %s --check-prefix=REGEX3
14
15# All symbols match
16# RUN: llvm-objcopy --discard-all --regex -K '^([a-z]+)*ba.*$' %t %t5
17# RUN: cmp %t4 %t5
18
19!ELF
20FileHeader:
21  Class:           ELFCLASS64
22  Data:            ELFDATA2LSB
23  Type:            ET_REL
24  Machine:         EM_X86_64
25Sections:
26  - Name:            .text
27    Type:            SHT_PROGBITS
28    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
29    Address:         0x1000
30    AddressAlign:    0x0000000000000010
31    Size:            64
32Symbols:
33  - Name:     foobaz
34    Type:     STT_FUNC
35    Section:  .text
36    Value:    0x1000
37    Size:     8
38  - Name:     bar
39    Type:     STT_FUNC
40    Section:  .text
41    Value:    0x1008
42    Size:     8
43  - Name:     rebar
44    Type:     STT_FUNC
45    Section:  .text
46    Value:    0x1010
47    Size:     8
48
49#REGEX1:     Symbols [
50#REGEX1-NOT:   Name: foobaz
51#REGEX1-NOT:   Name: bar
52#REGEX1-NOT:   Name: rebar
53#REGEX1:     ]
54
55#REGEX2:     Symbols [
56#REGEX2-NOT:   Name: foobaz
57#REGEX2:       Name: bar
58#REGEX2-NOT:   Name: rebar
59#REGEX2:     ]
60
61#REGEX3: Symbols [
62#REGEX3:   Name: foobaz
63#REGEX3:   Name: bar
64#REGEX3:   Name: rebar
65#REGEX3: ]
66