aboutsummaryrefslogtreecommitdiff
path: root/tests/run-nm-syms.sh
blob: ddf0922250eb556d00021875b9c403d62b6e94b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#! /bin/sh
# Copyright (C) 2020 Red Hat, Inc.
# This file is part of elfutils.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# elfutils is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

. $srcdir/test-subr.sh

# void *SYM1;
# void *SYM2 = 0;
# extern void *SYM3;
# static void *SYM4;
#
# void *SYM6 = &SYM3;
# static void *SYM7 = &SYM3;
#
# void *SYM8 __attribute__((__weak__));
#
# void FUN1 (void) { }
# static void FUN2 (void) { }
# extern void FUN3 (void);
#
# void *FREF = FUN3;
#
# void __attribute__((__weak__)) FUN4 (void) { };
#
# int NUM0 = 0; __asm__(".type NUM0,%gnu_unique_object");
# int __thread NUM1 = 1;
#
# gcc -m64 -c syms.c -o testfilesyms64
# gcc -m32 -c syms.c -o testfilesyms32

testfiles testfilesyms32 testfilesyms64

testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms32 <<\EOF
00000008 D FREF
00000000 T FUN1
00000010 t FUN2
         U FUN3
00000020 W FUN4
00000008 u NUM0
00000000 D NUM1
00000004 C SYM1
00000000 B SYM2
         U SYM3
0000000c b SYM4
00000000 D SYM6
00000004 d SYM7
00000004 V SYM8
         U _GLOBAL_OFFSET_TABLE_
00000000 T __x86.get_pc_thunk.ax
EOF

testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms32 <<\EOF
FREF D 00000008 00000004
FUN1 T 00000000 00000010
FUN2 t 00000010 00000010
FUN3 U
FUN4 W 00000020 00000010
NUM0 u 00000008 00000004
NUM1 D 00000000 00000004
SYM1 C 00000004 00000004
SYM2 B 00000000 00000004
SYM3 U
SYM4 b 0000000c 00000004
SYM6 D 00000000 00000004
SYM7 d 00000004 00000004
SYM8 V 00000004 00000004
_GLOBAL_OFFSET_TABLE_ U
__x86.get_pc_thunk.ax T 00000000 00000000
EOF

testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms32 <<\EOF


Symbols from testfilesyms32:

Name                  Value    Class  Type     Size     Line Section

FREF                 |00000008|GLOBAL|OBJECT  |00000004|    |.data.rel
FUN1                 |00000000|GLOBAL|FUNC    |00000010|    |.text
FUN2                 |00000010|LOCAL |FUNC    |00000010|    |.text
FUN3                 |        |GLOBAL|NOTYPE  |        |    |UNDEF
FUN4                 |00000020|WEAK  |FUNC    |00000010|    |.text
NUM0                 |00000008|UNIQUE|OBJECT  |00000004|    |.bss
NUM1                 |00000000|GLOBAL|TLS     |00000004|    |.tdata
SYM1                 |00000004|GLOBAL|OBJECT  |00000004|    |COMMON
SYM2                 |00000000|GLOBAL|OBJECT  |00000004|    |.bss
SYM3                 |        |GLOBAL|NOTYPE  |        |    |UNDEF
SYM4                 |0000000c|LOCAL |OBJECT  |00000004|    |.bss
SYM6                 |00000000|GLOBAL|OBJECT  |00000004|    |.data.rel
SYM7                 |00000004|LOCAL |OBJECT  |00000004|    |.data.rel
SYM8                 |00000004|WEAK  |OBJECT  |00000004|    |.bss
_GLOBAL_OFFSET_TABLE_|        |GLOBAL|NOTYPE  |        |    |UNDEF
__x86.get_pc_thunk.ax|00000000|GLOBAL|FUNC    |00000000|    |.text.__x86.get_pc_thunk.ax
EOF

testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms64 <<\EOF
0000000000000010 D FREF
0000000000000000 T FUN1
0000000000000007 t FUN2
                 U FUN3
000000000000000e W FUN4
0000000000000010 u NUM0
0000000000000000 D NUM1
0000000000000008 C SYM1
0000000000000000 B SYM2
                 U SYM3
0000000000000018 b SYM4
0000000000000000 D SYM6
0000000000000008 d SYM7
0000000000000008 V SYM8
EOF

testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms64 <<\EOF
FREF D 0000000000000010 0000000000000008
FUN1 T 0000000000000000 0000000000000007
FUN2 t 0000000000000007 0000000000000007
FUN3 U
FUN4 W 000000000000000e 0000000000000007
NUM0 u 0000000000000010 0000000000000004
NUM1 D 0000000000000000 0000000000000004
SYM1 C 0000000000000008 0000000000000008
SYM2 B 0000000000000000 0000000000000008
SYM3 U
SYM4 b 0000000000000018 0000000000000008
SYM6 D 0000000000000000 0000000000000008
SYM7 d 0000000000000008 0000000000000008
SYM8 V 0000000000000008 0000000000000008
EOF

testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms64 <<\EOF


Symbols from testfilesyms64:

Name   Value            Class  Type     Size             Line Section

FREF  |0000000000000010|GLOBAL|OBJECT  |0000000000000008|    |.data.rel
FUN1  |0000000000000000|GLOBAL|FUNC    |0000000000000007|    |.text
FUN2  |0000000000000007|LOCAL |FUNC    |0000000000000007|    |.text
FUN3  |                |GLOBAL|NOTYPE  |                |    |UNDEF
FUN4  |000000000000000e|WEAK  |FUNC    |0000000000000007|    |.text
NUM0  |0000000000000010|UNIQUE|OBJECT  |0000000000000004|    |.bss
NUM1  |0000000000000000|GLOBAL|TLS     |0000000000000004|    |.tdata
SYM1  |0000000000000008|GLOBAL|OBJECT  |0000000000000008|    |COMMON
SYM2  |0000000000000000|GLOBAL|OBJECT  |0000000000000008|    |.bss
SYM3  |                |GLOBAL|NOTYPE  |                |    |UNDEF
SYM4  |0000000000000018|LOCAL |OBJECT  |0000000000000008|    |.bss
SYM6  |0000000000000000|GLOBAL|OBJECT  |0000000000000008|    |.data.rel
SYM7  |0000000000000008|LOCAL |OBJECT  |0000000000000008|    |.data.rel
SYM8  |0000000000000008|WEAK  |OBJECT  |0000000000000008|    |.bss
EOF

exit 0