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