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