1da0c48c4Sopenharmony_ci#! /bin/sh
2da0c48c4Sopenharmony_ci# Copyright (C) 2013 Red Hat, Inc.
3da0c48c4Sopenharmony_ci# This file is part of elfutils.
4da0c48c4Sopenharmony_ci#
5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify
6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by
7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or
8da0c48c4Sopenharmony_ci# (at your option) any later version.
9da0c48c4Sopenharmony_ci#
10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but
11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of
12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13da0c48c4Sopenharmony_ci# GNU General Public License for more details.
14da0c48c4Sopenharmony_ci#
15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License
16da0c48c4Sopenharmony_ci# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17da0c48c4Sopenharmony_ci
18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh
19da0c48c4Sopenharmony_ci
20da0c48c4Sopenharmony_ci# Tests readelf -s and readelf --elf-section -s
21da0c48c4Sopenharmony_ci# See also run-dwflsyms.sh
22da0c48c4Sopenharmony_ci#
23da0c48c4Sopenharmony_ci# - bar.c
24da0c48c4Sopenharmony_ci#
25da0c48c4Sopenharmony_ci# static int b1 = 1;
26da0c48c4Sopenharmony_ci# int b2 = 1;
27da0c48c4Sopenharmony_ci#
28da0c48c4Sopenharmony_ci# static int
29da0c48c4Sopenharmony_ci# foo (int a)
30da0c48c4Sopenharmony_ci# {
31da0c48c4Sopenharmony_ci#   return a + b2;
32da0c48c4Sopenharmony_ci# }
33da0c48c4Sopenharmony_ci#
34da0c48c4Sopenharmony_ci# int bar (int b)
35da0c48c4Sopenharmony_ci# {
36da0c48c4Sopenharmony_ci#   return b - foo (b - b1);
37da0c48c4Sopenharmony_ci# }
38da0c48c4Sopenharmony_ci#
39da0c48c4Sopenharmony_ci# - foo.c
40da0c48c4Sopenharmony_ci#
41da0c48c4Sopenharmony_ci# extern int bar (int b);
42da0c48c4Sopenharmony_ci# extern int b2;
43da0c48c4Sopenharmony_ci#
44da0c48c4Sopenharmony_ci# int
45da0c48c4Sopenharmony_ci# main (int argc, char ** argv)
46da0c48c4Sopenharmony_ci# {
47da0c48c4Sopenharmony_ci#   return bar (argc + b2);
48da0c48c4Sopenharmony_ci# }
49da0c48c4Sopenharmony_ci#
50da0c48c4Sopenharmony_ci# gcc -pie -g -c foo.c
51da0c48c4Sopenharmony_ci# gcc -pie -g -c bar.c
52da0c48c4Sopenharmony_ci# gcc -pie -g -o baz foo.o bar.o
53da0c48c4Sopenharmony_ci#
54da0c48c4Sopenharmony_ci# - testfilebaztab (dynsym + symtab)
55da0c48c4Sopenharmony_ci# cp baz testfilebaztab
56da0c48c4Sopenharmony_ci#
57da0c48c4Sopenharmony_ci# - testfilebazdbg (dynsym + .debug file)
58da0c48c4Sopenharmony_ci# eu-strip --remove-comment -f testfilebazdbg.debug baz
59da0c48c4Sopenharmony_ci# cp baz testfilebazdbg
60da0c48c4Sopenharmony_ci#
61da0c48c4Sopenharmony_ci#-  testfilebazdyn (dynsym only)
62da0c48c4Sopenharmony_ci# objcopy --remove-section=.gnu_debuglink baz testfilebazdyn
63da0c48c4Sopenharmony_ci#
64da0c48c4Sopenharmony_ci# - testfilebazmdb (dynsym + gnu_debugdata + .debug)
65da0c48c4Sopenharmony_ci#   This is how rpmbuild does it:
66da0c48c4Sopenharmony_ci# nm -D baz --format=posix --defined-only | awk '{ print $1 }' | sort > dynsyms
67da0c48c4Sopenharmony_ci# nm baz.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
68da0c48c4Sopenharmony_ci# comm -13 dynsyms funcsyms > keep_symbols
69da0c48c4Sopenharmony_ci# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=keep_symbols baz.debug mini_debuginfo
70da0c48c4Sopenharmony_ci# rm -f mini_debuginfo.xz
71da0c48c4Sopenharmony_ci# xz mini_debuginfo
72da0c48c4Sopenharmony_ci# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz baz
73da0c48c4Sopenharmony_ci# cp baz testfilebazmdb
74da0c48c4Sopenharmony_ci#
75da0c48c4Sopenharmony_ci# - testfilebazmin (dynsym + gnu_debugdata)
76da0c48c4Sopenharmony_ci# objcopy --remove-section=.gnu_debuglink baz testfilebazmin
77da0c48c4Sopenharmony_ci#
78da0c48c4Sopenharmony_ci#
79da0c48c4Sopenharmony_ci# Special auxiliary only, can happen with static binaries.
80da0c48c4Sopenharmony_ci# - start.c
81da0c48c4Sopenharmony_ci#
82da0c48c4Sopenharmony_ci# extern int main (int argc, char ** argv);
83da0c48c4Sopenharmony_ci# void _start (void) { for (;;) main (1, 0); }
84da0c48c4Sopenharmony_ci#
85da0c48c4Sopenharmony_ci# gcc -g -c start.c
86da0c48c4Sopenharmony_ci# gcc -static -nostdlib -o bas foo.o bar.o start.o
87da0c48c4Sopenharmony_ci#
88da0c48c4Sopenharmony_ci# eu-strip --remove-comment -f bas.debug bas
89da0c48c4Sopenharmony_ci# nm bas.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
90da0c48c4Sopenharmony_ci# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=funcsyms bas.debug mini_debuginfo
91da0c48c4Sopenharmony_ci# rm -f mini_debuginfo.xz
92da0c48c4Sopenharmony_ci# xz mini_debuginfo
93da0c48c4Sopenharmony_ci# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz bas
94da0c48c4Sopenharmony_ci# rm bas.debug
95da0c48c4Sopenharmony_ci# mv bas testfilebasmin
96da0c48c4Sopenharmony_ci#
97da0c48c4Sopenharmony_ci#
98da0c48c4Sopenharmony_ci# Make sure that find_aux_sym doesn't corrupt relocations, avoiding a kernel
99da0c48c4Sopenharmony_ci# heuristic that forces ET_EXEC->ET_DYN.  NB: ld.gold doesn't seem to produce
100da0c48c4Sopenharmony_ci# the mismatched load addrs between the main file and the mini_debuginfo, so
101da0c48c4Sopenharmony_ci# this is forcing ld.bfd.
102da0c48c4Sopenharmony_ci#
103da0c48c4Sopenharmony_ci# gcc -g -o bax foo.c bar.c -fuse-ld=bfd
104da0c48c4Sopenharmony_ci# eu-strip --remove-comment -f bax.debug bax
105da0c48c4Sopenharmony_ci# nm -D bax --format=posix --defined-only | awk '{ print $1 }' | sort > dynsyms
106da0c48c4Sopenharmony_ci# nm bax.debug --format=posix --defined-only | awk '{ if ($2 == "T" || $2 == "t") print $1 }' | sort > funcsyms
107da0c48c4Sopenharmony_ci# comm -13 dynsyms funcsyms > keep_symbols
108da0c48c4Sopenharmony_ci# objcopy -S --remove-section .gdb_index --remove-section .comment --keep-symbols=keep_symbols bax.debug mini_debuginfo
109da0c48c4Sopenharmony_ci# rm -f mini_debuginfo.xz
110da0c48c4Sopenharmony_ci# xz mini_debuginfo
111da0c48c4Sopenharmony_ci# objcopy --add-section .gnu_debugdata=mini_debuginfo.xz bax
112da0c48c4Sopenharmony_ci# objcopy --remove-section=.gnu_debuglink bax testfilebaxmin
113da0c48c4Sopenharmony_ci
114da0c48c4Sopenharmony_ci
115da0c48c4Sopenharmony_citestfiles testfilebaztab
116da0c48c4Sopenharmony_citestfiles testfilebazdbg testfilebazdbg.debug
117da0c48c4Sopenharmony_citestfiles testfilebazdyn
118da0c48c4Sopenharmony_citestfiles testfilebazmdb
119da0c48c4Sopenharmony_citestfiles testfilebazmin
120da0c48c4Sopenharmony_citestfiles testfilebasmin
121da0c48c4Sopenharmony_citestfiles testfilebaxmin
122da0c48c4Sopenharmony_ci
123da0c48c4Sopenharmony_citempfiles testfile.dynsym.in testfile.symtab.in testfile.minsym.in
124da0c48c4Sopenharmony_ci
125da0c48c4Sopenharmony_cicat > testfile.dynsym.in <<\EOF
126da0c48c4Sopenharmony_ci
127da0c48c4Sopenharmony_ciSymbol table [ 5] '.dynsym' contains 14 entries:
128da0c48c4Sopenharmony_ci 2 local symbols  String table: [ 6] '.dynstr'
129da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
130da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
131da0c48c4Sopenharmony_ci    1: 0000000000000238      0 SECTION LOCAL  DEFAULT        1 
132da0c48c4Sopenharmony_ci    2: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _ITM_deregisterTMCloneTable
133da0c48c4Sopenharmony_ci    3: 0000000000000000      0 FUNC    GLOBAL DEFAULT    UNDEF __libc_start_main@GLIBC_2.2.5 (2)
134da0c48c4Sopenharmony_ci    4: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF __gmon_start__
135da0c48c4Sopenharmony_ci    5: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _Jv_RegisterClasses
136da0c48c4Sopenharmony_ci    6: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _ITM_registerTMCloneTable
137da0c48c4Sopenharmony_ci    7: 0000000000000000      0 FUNC    WEAK   DEFAULT    UNDEF __cxa_finalize@GLIBC_2.2.5 (2)
138da0c48c4Sopenharmony_ci    8: 000000000020103c      0 NOTYPE  GLOBAL DEFAULT       25 _edata
139da0c48c4Sopenharmony_ci    9: 0000000000201040      0 NOTYPE  GLOBAL DEFAULT       26 _end
140da0c48c4Sopenharmony_ci   10: 0000000000000860    137 FUNC    GLOBAL DEFAULT       13 __libc_csu_init
141da0c48c4Sopenharmony_ci   11: 000000000020103c      0 NOTYPE  GLOBAL DEFAULT       26 __bss_start
142da0c48c4Sopenharmony_ci   12: 00000000000007f0     35 FUNC    GLOBAL DEFAULT       13 main
143da0c48c4Sopenharmony_ci   13: 00000000000008f0      2 FUNC    GLOBAL DEFAULT       13 __libc_csu_fini
144da0c48c4Sopenharmony_ciEOF
145da0c48c4Sopenharmony_ci
146da0c48c4Sopenharmony_cicat > testfile.symtab.in <<\EOF
147da0c48c4Sopenharmony_ci
148da0c48c4Sopenharmony_ciSymbol table [34] '.symtab' contains 76 entries:
149da0c48c4Sopenharmony_ci 54 local symbols  String table: [35] '.strtab'
150da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
151da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
152da0c48c4Sopenharmony_ci    1: 0000000000000238      0 SECTION LOCAL  DEFAULT        1 
153da0c48c4Sopenharmony_ci    2: 0000000000000254      0 SECTION LOCAL  DEFAULT        2 
154da0c48c4Sopenharmony_ci    3: 0000000000000274      0 SECTION LOCAL  DEFAULT        3 
155da0c48c4Sopenharmony_ci    4: 0000000000000298      0 SECTION LOCAL  DEFAULT        4 
156da0c48c4Sopenharmony_ci    5: 00000000000002d8      0 SECTION LOCAL  DEFAULT        5 
157da0c48c4Sopenharmony_ci    6: 0000000000000428      0 SECTION LOCAL  DEFAULT        6 
158da0c48c4Sopenharmony_ci    7: 00000000000004f2      0 SECTION LOCAL  DEFAULT        7 
159da0c48c4Sopenharmony_ci    8: 0000000000000510      0 SECTION LOCAL  DEFAULT        8 
160da0c48c4Sopenharmony_ci    9: 0000000000000530      0 SECTION LOCAL  DEFAULT        9 
161da0c48c4Sopenharmony_ci   10: 0000000000000638      0 SECTION LOCAL  DEFAULT       10 
162da0c48c4Sopenharmony_ci   11: 0000000000000680      0 SECTION LOCAL  DEFAULT       11 
163da0c48c4Sopenharmony_ci   12: 00000000000006a0      0 SECTION LOCAL  DEFAULT       12 
164da0c48c4Sopenharmony_ci   13: 00000000000006e0      0 SECTION LOCAL  DEFAULT       13 
165da0c48c4Sopenharmony_ci   14: 00000000000008f4      0 SECTION LOCAL  DEFAULT       14 
166da0c48c4Sopenharmony_ci   15: 0000000000000900      0 SECTION LOCAL  DEFAULT       15 
167da0c48c4Sopenharmony_ci   16: 0000000000000904      0 SECTION LOCAL  DEFAULT       16 
168da0c48c4Sopenharmony_ci   17: 0000000000000948      0 SECTION LOCAL  DEFAULT       17 
169da0c48c4Sopenharmony_ci   18: 0000000000200dd0      0 SECTION LOCAL  DEFAULT       18 
170da0c48c4Sopenharmony_ci   19: 0000000000200dd8      0 SECTION LOCAL  DEFAULT       19 
171da0c48c4Sopenharmony_ci   20: 0000000000200de0      0 SECTION LOCAL  DEFAULT       20 
172da0c48c4Sopenharmony_ci   21: 0000000000200de8      0 SECTION LOCAL  DEFAULT       21 
173da0c48c4Sopenharmony_ci   22: 0000000000200df0      0 SECTION LOCAL  DEFAULT       22 
174da0c48c4Sopenharmony_ci   23: 0000000000200fc0      0 SECTION LOCAL  DEFAULT       23 
175da0c48c4Sopenharmony_ci   24: 0000000000201000      0 SECTION LOCAL  DEFAULT       24 
176da0c48c4Sopenharmony_ci   25: 0000000000201030      0 SECTION LOCAL  DEFAULT       25 
177da0c48c4Sopenharmony_ci   26: 000000000020103c      0 SECTION LOCAL  DEFAULT       26 
178da0c48c4Sopenharmony_ci   27: 0000000000000000      0 SECTION LOCAL  DEFAULT       27 
179da0c48c4Sopenharmony_ci   28: 0000000000000000      0 SECTION LOCAL  DEFAULT       28 
180da0c48c4Sopenharmony_ci   29: 0000000000000000      0 SECTION LOCAL  DEFAULT       29 
181da0c48c4Sopenharmony_ci   30: 0000000000000000      0 SECTION LOCAL  DEFAULT       30 
182da0c48c4Sopenharmony_ci   31: 0000000000000000      0 SECTION LOCAL  DEFAULT       31 
183da0c48c4Sopenharmony_ci   32: 0000000000000000      0 SECTION LOCAL  DEFAULT       32 
184da0c48c4Sopenharmony_ci   33: 0000000000000000      0 FILE    LOCAL  DEFAULT      ABS crtstuff.c
185da0c48c4Sopenharmony_ci   34: 0000000000200de0      0 OBJECT  LOCAL  DEFAULT       20 __JCR_LIST__
186da0c48c4Sopenharmony_ci   35: 0000000000000710      0 FUNC    LOCAL  DEFAULT       13 deregister_tm_clones
187da0c48c4Sopenharmony_ci   36: 0000000000000740      0 FUNC    LOCAL  DEFAULT       13 register_tm_clones
188da0c48c4Sopenharmony_ci   37: 0000000000000780      0 FUNC    LOCAL  DEFAULT       13 __do_global_dtors_aux
189da0c48c4Sopenharmony_ci   38: 000000000020103c      1 OBJECT  LOCAL  DEFAULT       26 completed.6137
190da0c48c4Sopenharmony_ci   39: 0000000000200dd8      0 OBJECT  LOCAL  DEFAULT       19 __do_global_dtors_aux_fini_array_entry
191da0c48c4Sopenharmony_ci   40: 00000000000007c0      0 FUNC    LOCAL  DEFAULT       13 frame_dummy
192da0c48c4Sopenharmony_ci   41: 0000000000200dd0      0 OBJECT  LOCAL  DEFAULT       18 __frame_dummy_init_array_entry
193da0c48c4Sopenharmony_ci   42: 0000000000000000      0 FILE    LOCAL  DEFAULT      ABS foo.c
194da0c48c4Sopenharmony_ci   43: 0000000000000000      0 FILE    LOCAL  DEFAULT      ABS bar.c
195da0c48c4Sopenharmony_ci   44: 0000000000201034      4 OBJECT  LOCAL  DEFAULT       25 b1
196da0c48c4Sopenharmony_ci   45: 0000000000000814     20 FUNC    LOCAL  DEFAULT       13 foo
197da0c48c4Sopenharmony_ci   46: 0000000000000000      0 FILE    LOCAL  DEFAULT      ABS crtstuff.c
198da0c48c4Sopenharmony_ci   47: 0000000000000a58      0 OBJECT  LOCAL  DEFAULT       17 __FRAME_END__
199da0c48c4Sopenharmony_ci   48: 0000000000200de0      0 OBJECT  LOCAL  DEFAULT       20 __JCR_END__
200da0c48c4Sopenharmony_ci   49: 0000000000000000      0 FILE    LOCAL  DEFAULT      ABS 
201da0c48c4Sopenharmony_ci   50: 0000000000200dd8      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_end
202da0c48c4Sopenharmony_ci   51: 0000000000200df0      0 OBJECT  LOCAL  DEFAULT       22 _DYNAMIC
203da0c48c4Sopenharmony_ci   52: 0000000000200dd0      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_start
204da0c48c4Sopenharmony_ci   53: 0000000000201000      0 OBJECT  LOCAL  DEFAULT       24 _GLOBAL_OFFSET_TABLE_
205da0c48c4Sopenharmony_ci   54: 00000000000008f0      2 FUNC    GLOBAL DEFAULT       13 __libc_csu_fini
206da0c48c4Sopenharmony_ci   55: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _ITM_deregisterTMCloneTable
207da0c48c4Sopenharmony_ci   56: 0000000000201030      0 NOTYPE  WEAK   DEFAULT       25 data_start
208da0c48c4Sopenharmony_ci   57: 000000000020103c      0 NOTYPE  GLOBAL DEFAULT       25 _edata
209da0c48c4Sopenharmony_ci   58: 0000000000000828     44 FUNC    GLOBAL DEFAULT       13 bar
210da0c48c4Sopenharmony_ci   59: 00000000000008f4      0 FUNC    GLOBAL DEFAULT       14 _fini
211da0c48c4Sopenharmony_ci   60: 0000000000000000      0 FUNC    GLOBAL DEFAULT    UNDEF __libc_start_main@@GLIBC_2.2.5
212da0c48c4Sopenharmony_ci   61: 0000000000201030      0 NOTYPE  GLOBAL DEFAULT       25 __data_start
213da0c48c4Sopenharmony_ci   62: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF __gmon_start__
214da0c48c4Sopenharmony_ci   63: 0000000000200de8      0 OBJECT  GLOBAL HIDDEN        21 __dso_handle
215da0c48c4Sopenharmony_ci   64: 0000000000000900      4 OBJECT  GLOBAL DEFAULT       15 _IO_stdin_used
216da0c48c4Sopenharmony_ci   65: 0000000000201038      4 OBJECT  GLOBAL DEFAULT       25 b2
217da0c48c4Sopenharmony_ci   66: 0000000000000860    137 FUNC    GLOBAL DEFAULT       13 __libc_csu_init
218da0c48c4Sopenharmony_ci   67: 0000000000201040      0 NOTYPE  GLOBAL DEFAULT       26 _end
219da0c48c4Sopenharmony_ci   68: 00000000000006e0      0 FUNC    GLOBAL DEFAULT       13 _start
220da0c48c4Sopenharmony_ci   69: 000000000020103c      0 NOTYPE  GLOBAL DEFAULT       26 __bss_start
221da0c48c4Sopenharmony_ci   70: 00000000000007f0     35 FUNC    GLOBAL DEFAULT       13 main
222da0c48c4Sopenharmony_ci   71: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _Jv_RegisterClasses
223da0c48c4Sopenharmony_ci   72: 0000000000201040      0 OBJECT  GLOBAL HIDDEN        25 __TMC_END__
224da0c48c4Sopenharmony_ci   73: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF _ITM_registerTMCloneTable
225da0c48c4Sopenharmony_ci   74: 0000000000000000      0 FUNC    WEAK   DEFAULT    UNDEF __cxa_finalize@@GLIBC_2.2.5
226da0c48c4Sopenharmony_ci   75: 0000000000000680      0 FUNC    GLOBAL DEFAULT       11 _init
227da0c48c4Sopenharmony_ciEOF
228da0c48c4Sopenharmony_ci
229da0c48c4Sopenharmony_cicat > testfile.minsym.in <<\EOF
230da0c48c4Sopenharmony_ci
231da0c48c4Sopenharmony_ciSymbol table [28] '.symtab' contains 40 entries:
232da0c48c4Sopenharmony_ci 36 local symbols  String table: [29] '.strtab'
233da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
234da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
235da0c48c4Sopenharmony_ci    1: 0000000000000710      0 FUNC    LOCAL  DEFAULT       13 deregister_tm_clones
236da0c48c4Sopenharmony_ci    2: 0000000000000740      0 FUNC    LOCAL  DEFAULT       13 register_tm_clones
237da0c48c4Sopenharmony_ci    3: 0000000000000780      0 FUNC    LOCAL  DEFAULT       13 __do_global_dtors_aux
238da0c48c4Sopenharmony_ci    4: 0000000000200dd8      0 OBJECT  LOCAL  DEFAULT       19 __do_global_dtors_aux_fini_array_entry
239da0c48c4Sopenharmony_ci    5: 00000000000007c0      0 FUNC    LOCAL  DEFAULT       13 frame_dummy
240da0c48c4Sopenharmony_ci    6: 0000000000200dd0      0 OBJECT  LOCAL  DEFAULT       18 __frame_dummy_init_array_entry
241da0c48c4Sopenharmony_ci    7: 0000000000000814     20 FUNC    LOCAL  DEFAULT       13 foo
242da0c48c4Sopenharmony_ci    8: 0000000000200dd8      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_end
243da0c48c4Sopenharmony_ci    9: 0000000000200dd0      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_start
244da0c48c4Sopenharmony_ci   10: 0000000000000238      0 SECTION LOCAL  DEFAULT        1 
245da0c48c4Sopenharmony_ci   11: 0000000000000254      0 SECTION LOCAL  DEFAULT        2 
246da0c48c4Sopenharmony_ci   12: 0000000000000274      0 SECTION LOCAL  DEFAULT        3 
247da0c48c4Sopenharmony_ci   13: 0000000000000298      0 SECTION LOCAL  DEFAULT        4 
248da0c48c4Sopenharmony_ci   14: 00000000000002d8      0 SECTION LOCAL  DEFAULT        5 
249da0c48c4Sopenharmony_ci   15: 0000000000000428      0 SECTION LOCAL  DEFAULT        6 
250da0c48c4Sopenharmony_ci   16: 00000000000004f2      0 SECTION LOCAL  DEFAULT        7 
251da0c48c4Sopenharmony_ci   17: 0000000000000510      0 SECTION LOCAL  DEFAULT        8 
252da0c48c4Sopenharmony_ci   18: 0000000000000530      0 SECTION LOCAL  DEFAULT        9 
253da0c48c4Sopenharmony_ci   19: 0000000000000638      0 SECTION LOCAL  DEFAULT       10 
254da0c48c4Sopenharmony_ci   20: 0000000000000680      0 SECTION LOCAL  DEFAULT       11 
255da0c48c4Sopenharmony_ci   21: 00000000000006a0      0 SECTION LOCAL  DEFAULT       12 
256da0c48c4Sopenharmony_ci   22: 00000000000006e0      0 SECTION LOCAL  DEFAULT       13 
257da0c48c4Sopenharmony_ci   23: 00000000000008f4      0 SECTION LOCAL  DEFAULT       14 
258da0c48c4Sopenharmony_ci   24: 0000000000000900      0 SECTION LOCAL  DEFAULT       15 
259da0c48c4Sopenharmony_ci   25: 0000000000000904      0 SECTION LOCAL  DEFAULT       16 
260da0c48c4Sopenharmony_ci   26: 0000000000000948      0 SECTION LOCAL  DEFAULT       17 
261da0c48c4Sopenharmony_ci   27: 0000000000200dd0      0 SECTION LOCAL  DEFAULT       18 
262da0c48c4Sopenharmony_ci   28: 0000000000200dd8      0 SECTION LOCAL  DEFAULT       19 
263da0c48c4Sopenharmony_ci   29: 0000000000200de0      0 SECTION LOCAL  DEFAULT       20 
264da0c48c4Sopenharmony_ci   30: 0000000000200de8      0 SECTION LOCAL  DEFAULT       21 
265da0c48c4Sopenharmony_ci   31: 0000000000200df0      0 SECTION LOCAL  DEFAULT       22 
266da0c48c4Sopenharmony_ci   32: 0000000000200fc0      0 SECTION LOCAL  DEFAULT       23 
267da0c48c4Sopenharmony_ci   33: 0000000000201000      0 SECTION LOCAL  DEFAULT       24 
268da0c48c4Sopenharmony_ci   34: 0000000000201030      0 SECTION LOCAL  DEFAULT       25 
269da0c48c4Sopenharmony_ci   35: 000000000020103c      0 SECTION LOCAL  DEFAULT       26 
270da0c48c4Sopenharmony_ci   36: 0000000000000828     44 FUNC    GLOBAL DEFAULT       13 bar
271da0c48c4Sopenharmony_ci   37: 00000000000008f4      0 FUNC    GLOBAL DEFAULT       14 _fini
272da0c48c4Sopenharmony_ci   38: 00000000000006e0      0 FUNC    GLOBAL DEFAULT       13 _start
273da0c48c4Sopenharmony_ci   39: 0000000000000680      0 FUNC    GLOBAL DEFAULT       11 _init
274da0c48c4Sopenharmony_ciEOF
275da0c48c4Sopenharmony_ci
276da0c48c4Sopenharmony_ci# Display all symbol tables.
277da0c48c4Sopenharmony_cicat testfile.dynsym.in testfile.symtab.in \
278da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebaztab
279da0c48c4Sopenharmony_ci
280da0c48c4Sopenharmony_cicat testfile.dynsym.in testfile.symtab.in \
281da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf --syms testfilebaztab
282da0c48c4Sopenharmony_ci
283da0c48c4Sopenharmony_ci# Display just .dynsym
284da0c48c4Sopenharmony_cicat testfile.dynsym.in \
285da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf \
286da0c48c4Sopenharmony_ci    --symbols=.dynsym testfilebaztab
287da0c48c4Sopenharmony_cicat testfile.dynsym.in \
288da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf \
289da0c48c4Sopenharmony_ci    --syms=.dynsym testfilebaztab
290da0c48c4Sopenharmony_cicat testfile.dynsym.in \
291da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf \
292da0c48c4Sopenharmony_ci    --dyn-syms testfilebaztab
293da0c48c4Sopenharmony_ci
294da0c48c4Sopenharmony_ci# Display just .symtab
295da0c48c4Sopenharmony_cicat testfile.symtab.in \
296da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf \
297da0c48c4Sopenharmony_ci    --symbols=.symtab testfilebaztab
298da0c48c4Sopenharmony_ci
299da0c48c4Sopenharmony_cicat testfile.dynsym.in \
300da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdbg
301da0c48c4Sopenharmony_ci
302da0c48c4Sopenharmony_cicat testfile.symtab.in \
303da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdbg.debug
304da0c48c4Sopenharmony_ci
305da0c48c4Sopenharmony_cicat testfile.dynsym.in \
306da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazdyn
307da0c48c4Sopenharmony_ci
308da0c48c4Sopenharmony_cicat testfile.dynsym.in \
309da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazmdb
310da0c48c4Sopenharmony_ci
311da0c48c4Sopenharmony_cicat testfile.minsym.in \
312da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebazmdb
313da0c48c4Sopenharmony_ci
314da0c48c4Sopenharmony_cicat testfile.dynsym.in \
315da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf -s testfilebazmin
316da0c48c4Sopenharmony_ci
317da0c48c4Sopenharmony_cicat testfile.minsym.in \
318da0c48c4Sopenharmony_ci  | testrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebazmin
319da0c48c4Sopenharmony_ci
320da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -s testfilebasmin <<EOF
321da0c48c4Sopenharmony_ciEOF
322da0c48c4Sopenharmony_ci
323da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebasmin <<\EOF
324da0c48c4Sopenharmony_ci
325da0c48c4Sopenharmony_ciSymbol table [ 6] '.symtab' contains 9 entries:
326da0c48c4Sopenharmony_ci 6 local symbols  String table: [ 7] '.strtab'
327da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
328da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
329da0c48c4Sopenharmony_ci    1: 0000000000400168     18 FUNC    LOCAL  DEFAULT        2 foo
330da0c48c4Sopenharmony_ci    2: 0000000000400120      0 SECTION LOCAL  DEFAULT        1 
331da0c48c4Sopenharmony_ci    3: 0000000000400144      0 SECTION LOCAL  DEFAULT        2 
332da0c48c4Sopenharmony_ci    4: 00000000004001c0      0 SECTION LOCAL  DEFAULT        3 
333da0c48c4Sopenharmony_ci    5: 0000000000600258      0 SECTION LOCAL  DEFAULT        4 
334da0c48c4Sopenharmony_ci    6: 00000000004001a8     21 FUNC    GLOBAL DEFAULT        2 _start
335da0c48c4Sopenharmony_ci    7: 0000000000400144     33 FUNC    GLOBAL DEFAULT        2 main
336da0c48c4Sopenharmony_ci    8: 000000000040017a     44 FUNC    GLOBAL DEFAULT        2 bar
337da0c48c4Sopenharmony_ciEOF
338da0c48c4Sopenharmony_ci
339da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -s testfilebaxmin <<EOF
340da0c48c4Sopenharmony_ci
341da0c48c4Sopenharmony_ciSymbol table [ 5] '.dynsym' contains 3 entries:
342da0c48c4Sopenharmony_ci 1 local symbol  String table: [ 6] '.dynstr'
343da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
344da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
345da0c48c4Sopenharmony_ci    1: 0000000000000000      0 FUNC    GLOBAL DEFAULT    UNDEF __libc_start_main@GLIBC_2.2.5 (2)
346da0c48c4Sopenharmony_ci    2: 0000000000000000      0 NOTYPE  WEAK   DEFAULT    UNDEF __gmon_start__
347da0c48c4Sopenharmony_ciEOF
348da0c48c4Sopenharmony_ci
349da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --elf-section -s testfilebaxmin <<\EOF
350da0c48c4Sopenharmony_ci
351da0c48c4Sopenharmony_ciSymbol table [27] '.symtab' contains 42 entries:
352da0c48c4Sopenharmony_ci 35 local symbols  String table: [28] '.strtab'
353da0c48c4Sopenharmony_ci  Num:            Value   Size Type    Bind   Vis          Ndx Name
354da0c48c4Sopenharmony_ci    0: 0000000000000000      0 NOTYPE  LOCAL  DEFAULT    UNDEF 
355da0c48c4Sopenharmony_ci    1: 0000000000400430      0 FUNC    LOCAL  DEFAULT       13 deregister_tm_clones
356da0c48c4Sopenharmony_ci    2: 0000000000400460      0 FUNC    LOCAL  DEFAULT       13 register_tm_clones
357da0c48c4Sopenharmony_ci    3: 00000000004004a0      0 FUNC    LOCAL  DEFAULT       13 __do_global_dtors_aux
358da0c48c4Sopenharmony_ci    4: 0000000000600e18      0 OBJECT  LOCAL  DEFAULT       19 __do_global_dtors_aux_fini_array_entry
359da0c48c4Sopenharmony_ci    5: 00000000004004c0      0 FUNC    LOCAL  DEFAULT       13 frame_dummy
360da0c48c4Sopenharmony_ci    6: 0000000000600e10      0 OBJECT  LOCAL  DEFAULT       18 __frame_dummy_init_array_entry
361da0c48c4Sopenharmony_ci    7: 00000000004004f0     20 FUNC    LOCAL  DEFAULT       13 foo
362da0c48c4Sopenharmony_ci    8: 0000000000600e18      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_end
363da0c48c4Sopenharmony_ci    9: 0000000000600e10      0 NOTYPE  LOCAL  DEFAULT       18 __init_array_start
364da0c48c4Sopenharmony_ci   10: 0000000000400238      0 SECTION LOCAL  DEFAULT        1 
365da0c48c4Sopenharmony_ci   11: 0000000000400254      0 SECTION LOCAL  DEFAULT        2 
366da0c48c4Sopenharmony_ci   12: 0000000000400274      0 SECTION LOCAL  DEFAULT        3 
367da0c48c4Sopenharmony_ci   13: 0000000000400298      0 SECTION LOCAL  DEFAULT        4 
368da0c48c4Sopenharmony_ci   14: 00000000004002b8      0 SECTION LOCAL  DEFAULT        5 
369da0c48c4Sopenharmony_ci   15: 0000000000400300      0 SECTION LOCAL  DEFAULT        6 
370da0c48c4Sopenharmony_ci   16: 0000000000400338      0 SECTION LOCAL  DEFAULT        7 
371da0c48c4Sopenharmony_ci   17: 0000000000400340      0 SECTION LOCAL  DEFAULT        8 
372da0c48c4Sopenharmony_ci   18: 0000000000400360      0 SECTION LOCAL  DEFAULT        9 
373da0c48c4Sopenharmony_ci   19: 0000000000400378      0 SECTION LOCAL  DEFAULT       10 
374da0c48c4Sopenharmony_ci   20: 00000000004003a8      0 SECTION LOCAL  DEFAULT       11 
375da0c48c4Sopenharmony_ci   21: 00000000004003d0      0 SECTION LOCAL  DEFAULT       12 
376da0c48c4Sopenharmony_ci   22: 0000000000400400      0 SECTION LOCAL  DEFAULT       13 
377da0c48c4Sopenharmony_ci   23: 00000000004005c4      0 SECTION LOCAL  DEFAULT       14 
378da0c48c4Sopenharmony_ci   24: 00000000004005d0      0 SECTION LOCAL  DEFAULT       15 
379da0c48c4Sopenharmony_ci   25: 00000000004005e0      0 SECTION LOCAL  DEFAULT       16 
380da0c48c4Sopenharmony_ci   26: 0000000000400628      0 SECTION LOCAL  DEFAULT       17 
381da0c48c4Sopenharmony_ci   27: 0000000000600e10      0 SECTION LOCAL  DEFAULT       18 
382da0c48c4Sopenharmony_ci   28: 0000000000600e18      0 SECTION LOCAL  DEFAULT       19 
383da0c48c4Sopenharmony_ci   29: 0000000000600e20      0 SECTION LOCAL  DEFAULT       20 
384da0c48c4Sopenharmony_ci   30: 0000000000600e28      0 SECTION LOCAL  DEFAULT       21 
385da0c48c4Sopenharmony_ci   31: 0000000000600ff8      0 SECTION LOCAL  DEFAULT       22 
386da0c48c4Sopenharmony_ci   32: 0000000000601000      0 SECTION LOCAL  DEFAULT       23 
387da0c48c4Sopenharmony_ci   33: 0000000000601028      0 SECTION LOCAL  DEFAULT       24 
388da0c48c4Sopenharmony_ci   34: 0000000000601034      0 SECTION LOCAL  DEFAULT       25 
389da0c48c4Sopenharmony_ci   35: 00000000004005c0      2 FUNC    GLOBAL DEFAULT       13 __libc_csu_fini
390da0c48c4Sopenharmony_ci   36: 0000000000400504     40 FUNC    GLOBAL DEFAULT       13 bar
391da0c48c4Sopenharmony_ci   37: 00000000004005c4      0 FUNC    GLOBAL DEFAULT       14 _fini
392da0c48c4Sopenharmony_ci   38: 0000000000400550    101 FUNC    GLOBAL DEFAULT       13 __libc_csu_init
393da0c48c4Sopenharmony_ci   39: 0000000000400400      0 FUNC    GLOBAL DEFAULT       13 _start
394da0c48c4Sopenharmony_ci   40: 000000000040052c     35 FUNC    GLOBAL DEFAULT       13 main
395da0c48c4Sopenharmony_ci   41: 00000000004003a8      0 FUNC    GLOBAL DEFAULT       11 _init
396da0c48c4Sopenharmony_ciEOF
397da0c48c4Sopenharmony_ci
398da0c48c4Sopenharmony_ciexit 0
399