Skip to content

Commit 46346b2

Browse files
committed
fix review comments
1 parent 5e6b350 commit 46346b2

File tree

5 files changed

+159
-150
lines changed

5 files changed

+159
-150
lines changed

llvm/test/tools/llvm-symbolizer/Inputs/elf-ppc64le.yaml

Lines changed: 0 additions & 24 deletions
This file was deleted.

llvm/test/tools/llvm-symbolizer/Inputs/xcoff-32.yaml

Lines changed: 0 additions & 32 deletions
This file was deleted.

llvm/test/tools/llvm-symbolizer/Inputs/xcoff-64.yaml

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,54 @@
11
# Test archive member recognition by name (ELF format).
22

3-
# Generate object files from YAML using parameterization.
4-
RUN: yaml2obj -DSYMBOL=foo1 -o %t-1.o %S/Inputs/elf-ppc64le.yaml
5-
RUN: yaml2obj -DSYMBOL=foo2 -o %t-2.o %S/Inputs/elf-ppc64le.yaml
6-
7-
# Create archive with differently named members.
8-
RUN: rm -f %t.a
9-
RUN: llvm-ar crv %t.a %t-1.o %t-2.o
10-
11-
# Test symbolization by member name.
12-
RUN: llvm-symbolizer --default-arch=ppc64le --obj="%t.a(%{t:stem}.tmp-1.o)" 0x0 | FileCheck %s --check-prefix=CHECK-1
13-
RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp-1.o):ppc64le" 0x0 | FileCheck %s --check-prefix=CHECK-1
14-
RUN: llvm-symbolizer --default-arch=ppc64le --obj="%t.a(%{t:stem}.tmp-2.o)" 0x0 | FileCheck %s --check-prefix=CHECK-2
15-
RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp-2.o):ppc64le" 0x0 | FileCheck %s --check-prefix=CHECK-2
16-
CHECK-1: foo1
17-
CHECK-2: foo2
18-
19-
# Test error cases.
20-
RUN: not llvm-symbolizer --obj="%t.a(nonexistent.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
21-
CHECK-ERROR: error: {{.*}}no matching member{{.*}}
22-
23-
RUN: not llvm-symbolizer --obj="%t-1.o(%{t:stem}.tmp-1.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOTARCHIVE
24-
CHECK-NOTARCHIVE: error: '{{.*}}' is not a valid archive
25-
26-
RUN: not llvm-symbolizer --obj="%t.a()" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOSYMBOL
27-
CHECK-NOSYMBOL: {{.*}}no matching member{{.*}}
3+
# RUN: yaml2obj -DSYMBOL=foo1 %s -o %t-1.o
4+
# RUN: yaml2obj -DSYMBOL=foo2 %s -o %t-2.o
5+
6+
# RUN: rm -f %t.a
7+
# RUN: llvm-ar crv %t.a %t-1.o %t-2.o
8+
9+
## Test symbolization by member name with architecture via --default-arch flag.
10+
# RUN: llvm-symbolizer --default-arch=ppc64le --obj="%t.a(%{t:stem}.tmp-1.o)" 0x0 | FileCheck %s --check-prefix=CHECK-1
11+
# RUN: llvm-symbolizer --default-arch=ppc64le --obj="%t.a(%{t:stem}.tmp-2.o)" 0x0 | FileCheck %s --check-prefix=CHECK-2
12+
13+
## Test architecture specified via :arch suffix notation.
14+
# RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp-1.o):ppc64le" 0x0 | FileCheck %s --check-prefix=CHECK-1
15+
# RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp-2.o):ppc64le" 0x0 | FileCheck %s --check-prefix=CHECK-2
16+
17+
# CHECK-1: foo1
18+
# CHECK-2: foo2
19+
20+
## Test error cases.
21+
22+
# RUN: not llvm-symbolizer --obj="%t.a(nonexistent.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
23+
# CHECK-ERROR: error: {{.*}}no matching member{{.*}}
24+
25+
# RUN: not llvm-symbolizer --obj="%t-1.o(%{t:stem}.tmp-1.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOTARCHIVE
26+
# CHECK-NOTARCHIVE: error: '{{.*}}' is not a valid archive
27+
28+
# RUN: not llvm-symbolizer --obj="%t.a()" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOSYMBOL
29+
# CHECK-NOSYMBOL: {{.*}}no matching member{{.*}}
30+
31+
--- !ELF
32+
FileHeader:
33+
Class: ELFCLASS64
34+
Data: ELFDATA2LSB
35+
Type: ET_REL
36+
Machine: EM_PPC64
37+
Sections:
38+
- Name: .text
39+
Type: SHT_PROGBITS
40+
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
41+
AddressAlign: 0x10
42+
Content: '2000804E000000000000000000000000'
43+
Symbols:
44+
- Name: [[SYMBOL]].c
45+
Type: STT_FILE
46+
Index: SHN_ABS
47+
- Name: .text
48+
Type: STT_SECTION
49+
Section: .text
50+
- Name: [[SYMBOL]]
51+
Type: STT_FUNC
52+
Section: .text
53+
Binding: STB_GLOBAL
54+
Size: 0x10
Lines changed: 107 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,108 @@
11
# Test big archive recognition with same-named members (XCOFF format).
2-
# Big archives can contain multiple members with the same name but different
3-
# architectures. This test verifies llvm-symbolizer can disambiguate using
4-
# architecture specification.
5-
6-
# Generate object files.
7-
RUN: yaml2obj -o %t-32.o %S/Inputs/xcoff-32.yaml
8-
RUN: yaml2obj -o %t-64.o %S/Inputs/xcoff-64.yaml
9-
10-
# Create archive with same-named members using different modes.
11-
RUN: rm -f %t.a
12-
RUN: cp %t-32.o %t.o
13-
RUN: llvm-ar %if system-aix %{-X32%} crv %t.a %t.o
14-
RUN: cp %t-64.o %t.o
15-
RUN: llvm-ar %if system-aix %{-X64 rv%} %else %{qv%} %t.a %t.o
16-
17-
# Verify archive contains two members with same name.
18-
RUN: llvm-ar tv %if system-aix %{-X32_64%} %t.a | FileCheck %s --check-prefix=CHECK-ARCHIVE
19-
CHECK-ARCHIVE: {{.*}}symbolize-big-archive-xcoff.test.tmp.o{{$}}
20-
CHECK-ARCHIVE: {{.*}}symbolize-big-archive-xcoff.test.tmp.o{{$}}
21-
22-
# Test symbolization disambiguates between 32-bit and 64-bit members.
23-
RUN: llvm-symbolizer --default-arch=ppc --obj="%t.a(%{t:stem}.tmp.o)" 0x0 | FileCheck %s --check-prefix=CHECK-32
24-
RUN: llvm-symbolizer --default-arch=ppc64 --obj="%t.a(%{t:stem}.tmp.o)" 0x0 | FileCheck %s --check-prefix=CHECK-64
25-
RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp.o):ppc" 0x0 | FileCheck %s --check-prefix=CHECK-32
26-
RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp.o):ppc64" 0x0 | FileCheck %s --check-prefix=CHECK-64
27-
CHECK-32: foo32
28-
CHECK-64: foo64
29-
30-
# Test error cases.
31-
RUN: not llvm-symbolizer --obj="%t.a(nonexistent.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
32-
CHECK-ERROR: error: {{.*}}no matching member{{.*}}
33-
34-
RUN: not llvm-symbolizer --obj="%t.o(%{t:stem}.tmp.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOTARCHIVE
35-
CHECK-NOTARCHIVE: error: '{{.*}}' is not a valid archive
36-
37-
RUN: not llvm-symbolizer --obj="%t.a()" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOSYMBOL
38-
CHECK-NOSYMBOL: {{.*}}no matching member{{.*}}
2+
## Big archives can contain multiple members with the same name but different
3+
## architectures. This test verifies llvm-symbolizer can disambiguate using
4+
## architecture specification.
5+
6+
# RUN: yaml2obj --docnum=1 %s -o %t-32.o
7+
# RUN: yaml2obj --docnum=2 %s -o %t-64.o
8+
9+
# RUN: rm -f %t.a
10+
# RUN: cp %t-32.o %t.o
11+
# RUN: llvm-ar %if system-aix %{-X32%} crv %t.a %t.o
12+
# RUN: cp %t-64.o %t.o
13+
# RUN: llvm-ar %if system-aix %{-X64 rv%} %else %{qv%} %t.a %t.o
14+
15+
## Verify archive contains two members with same name.
16+
# RUN: llvm-ar tv %if system-aix %{-X32_64%} %t.a | FileCheck %s --check-prefix=CHECK-ARCHIVE
17+
# CHECK-ARCHIVE: {{.*}}symbolize-big-archive-xcoff.test.tmp.o{{$}}
18+
# CHECK-ARCHIVE: {{.*}}symbolize-big-archive-xcoff.test.tmp.o{{$}}
19+
20+
## Test symbolization disambiguates between 32-bit and 64-bit members
21+
## using architecture specified via --default-arch flag.
22+
# RUN: llvm-symbolizer --default-arch=ppc --obj="%t.a(%{t:stem}.tmp.o)" 0x0 | FileCheck %s --check-prefix=CHECK-32
23+
# RUN: llvm-symbolizer --default-arch=ppc64 --obj="%t.a(%{t:stem}.tmp.o)" 0x0 | FileCheck %s --check-prefix=CHECK-64
24+
25+
## Test architecture specified via :arch suffix notation.
26+
# RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp.o):ppc" 0x0 | FileCheck %s --check-prefix=CHECK-32
27+
# RUN: llvm-symbolizer --obj="%t.a(%{t:stem}.tmp.o):ppc64" 0x0 | FileCheck %s --check-prefix=CHECK-64
28+
29+
# CHECK-32: foo32
30+
# CHECK-64: foo64
31+
32+
## Test error cases.
33+
# RUN: not llvm-symbolizer --obj="%t.a(nonexistent.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
34+
# CHECK-ERROR: error: {{.*}}no matching member{{.*}}
35+
36+
# RUN: not llvm-symbolizer --obj="%t.o(%{t:stem}.tmp.o)" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOTARCHIVE
37+
# CHECK-NOTARCHIVE: error: '{{.*}}' is not a valid archive
38+
39+
# RUN: not llvm-symbolizer --obj="%t.a()" 0x1000 2>&1 | FileCheck %s --check-prefix=CHECK-NOSYMBOL
40+
# CHECK-NOSYMBOL: {{.*}}no matching member{{.*}}
41+
42+
## 32-bit XCOFF object
43+
--- !XCOFF
44+
FileHeader:
45+
MagicNumber: 0x1DF
46+
Sections:
47+
- Name: .text
48+
Flags: [ STYP_TEXT ]
49+
SectionData: 4E800020
50+
Symbols:
51+
- Name: .file
52+
Section: N_DEBUG
53+
StorageClass: C_FILE
54+
NumberOfAuxEntries: 1
55+
AuxEntries:
56+
- Type: AUX_FILE
57+
FileNameOrString: foo.c
58+
FileStringType: XFT_FN
59+
- Name: .foo32
60+
Section: .text
61+
StorageClass: C_EXT
62+
NumberOfAuxEntries: 1
63+
AuxEntries:
64+
- Type: AUX_CSECT
65+
SymbolType: XTY_LD
66+
StorageMappingClass: XMC_PR
67+
- Name: foo32
68+
Section: .text
69+
StorageClass: C_EXT
70+
NumberOfAuxEntries: 1
71+
AuxEntries:
72+
- Type: AUX_CSECT
73+
SymbolType: XTY_SD
74+
StorageMappingClass: XMC_PR
75+
76+
## 64-bit XCOFF object
77+
--- !XCOFF
78+
FileHeader:
79+
MagicNumber: 0x1F7
80+
Sections:
81+
- Name: .text
82+
Flags: [ STYP_TEXT ]
83+
SectionData: 4E800020
84+
Symbols:
85+
- Name: .file
86+
Section: N_DEBUG
87+
StorageClass: C_FILE
88+
NumberOfAuxEntries: 1
89+
AuxEntries:
90+
- Type: AUX_FILE
91+
FileNameOrString: foo.c
92+
FileStringType: XFT_FN
93+
- Name: .foo64
94+
Section: .text
95+
StorageClass: C_EXT
96+
NumberOfAuxEntries: 1
97+
AuxEntries:
98+
- Type: AUX_CSECT
99+
SymbolType: XTY_LD
100+
StorageMappingClass: XMC_PR
101+
- Name: foo64
102+
Section: .text
103+
StorageClass: C_EXT
104+
NumberOfAuxEntries: 1
105+
AuxEntries:
106+
- Type: AUX_CSECT
107+
SymbolType: XTY_SD
108+
StorageMappingClass: XMC_PR

0 commit comments

Comments
 (0)