1 #!/bin/sh 2 # 3 # Copyright (c) International Business Machines Corp., 2000 4 # 5 # This program 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 2 of the License, or 8 # (at your option) any later version. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 13 # the 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, write to the Free Software 17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 # 19 # 20 # 21 # FILE : objdump 22 # 23 # PURPOSE: Tests the functionality of the `objdump` command. 24 # 25 # HISTORY: 26 # 06/01 Robbie Williamson (robbiew (at] us.ibm.com) 27 # -Ported 28 # 29 # 30 #----------------------------------------------------------------------- 31 # 32 #---------------------------------------------------------------------- 33 #Uncomment line below for debug output. 34 #trace_logic=${trace_logic:-"set -x"} 35 $trace_logic 36 37 TCsrc=${TCsrc:-${0%/*}} 38 TCtmp=${TCtmp:-/tmp/objdump$$} 39 40 do_setup() 41 { 42 mkdir $TCtmp 43 ar -cr $TCtmp/lib.a $TCsrc/test_arch.obj 44 45 echo 1; objdump -f $TCsrc/test_arch_stripped > $TCtmp/er_dump_f 46 echo 2; objdump -h $TCsrc/test_arch_stripped > $TCtmp/er_dump_h 47 echo 3; objdump -R $TCsrc/test_arch_stripped > $TCtmp/er_dump_R 48 echo 4; objdump -r $TCsrc/test_arch_stripped > $TCtmp/er_dump_reloc 49 echo 5; objdump -t $TCsrc/test_arch_stripped > $TCtmp/er_dump_symbols 50 echo 6; objdump -f --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_fshow 51 echo 7; objdump -h --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_hshow 52 echo 7; objdump -s --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_sshow 53 echo 8; objdump -t --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_tshow 54 echo 9; objdump -R --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_Rshow 55 echo 10; objdump -r --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_rshow 56 echo 11; objdump -T $TCsrc/test_arch_stripped > $TCtmp/er_dump_dynamic_symbols 57 echo 12; objdump -a $TCtmp/lib.a > $TCtmp/er_dump_a 58 echo 13; objdump -a --show-raw-insn $TCtmp/lib.a > $TCtmp/er_dump_ashow 59 echo 14; objdump --debugging $TCsrc/test_arch_debug > $TCtmp/er_dump_debug 60 } 61 62 do_test() 63 { 64 #ASSERTION POSIX NEXT_AVAILABLE C 65 # 66 #-f Dump each file header. 67 # 68 #CODE 69 70 objdump -f $TCsrc/test_arch_stripped > $TCtmp/ar_dump_f 71 72 diff -bw $TCtmp/ar_dump_f $TCtmp/er_dump_f 2>&1 1>/dev/null 73 74 if [ $? -eq 0 ] 75 then 76 echo "objdump -f" 77 else 78 echo "FAIL - objdump -f" 79 exit 1 80 fi 81 82 rm -f $TCtmp/[ae]r_dump_f 83 84 ##ASSERTION POSIX NEXT_AVAILABLE C 85 # 86 #-h Dump the section headers. 87 # 88 #CODE 89 90 objdump -h $TCsrc/test_arch_stripped > $TCtmp/ar_dump_h 91 92 diff -bw $TCtmp/ar_dump_h $TCtmp/er_dump_h 2>&1 1>/dev/null 93 94 if [ $? -eq 0 ]; then 95 echo "objdump -h" 96 else 97 echo "FAIL - objdump -h" 98 exit 1 99 fi 100 101 rm -f $TCtmp/[ae]r_dump_h 102 103 ##ASSERTION POSIX NEXT_AVAILABLE C 104 # 105 #-R Dump dynamic linking information and static shared library information, if 106 #available. 107 # 108 #CODE 109 110 objdump -R $TCsrc/test_arch_stripped > $TCtmp/ar_dump_R 111 112 diff -bw $TCtmp/ar_dump_R $TCtmp/er_dump_R 2>&1 1>/dev/null 113 114 if [ $? -eq 0 ]; then 115 echo "objdump -R" 116 else 117 echo "FAIL - objdump -R" 118 exit 1 119 fi 120 121 rm -f $TCtmp/[ae]r_dump_R 122 123 ##ASSERTION POSIX NEXT_AVAILABLE C 124 # 125 # -r Dump relocation information. 126 # 127 #CODE 128 129 objdump -r $TCsrc/test_arch_stripped > $TCtmp/ar_dump_reloc 130 131 diff -bw $TCtmp/ar_dump_reloc $TCtmp/er_dump_reloc 2>&1 1>/dev/null 132 133 if [ $? -eq 0 ]; then 134 echo "objdump -r" 135 else 136 echo "FAIL - objdump -r" 137 exit 1 138 fi 139 140 rm -f $TCtmp/[ae]r_dump_reloc 141 142 ##ASSERTION POSIX NEXT_AVAILABLE C 143 # 144 #-t Dump symbol table entries. 145 # 146 #CODE 147 148 objdump -t $TCsrc/test_arch_stripped > $TCtmp/ar_dump_symbols 149 150 diff -bw $TCtmp/ar_dump_symbols $TCtmp/er_dump_symbols 2>&1 1>/dev/null 151 152 if [ $? -eq 0 ]; then 153 echo "objdump -t" 154 else 155 echo "FAIL - objdump -t" 156 exit 1 157 fi 158 159 rm -f $TCtmp/[ae]r_dump_symbols 160 161 162 ##ASSERTION POSIX NEXT_AVAILABLE C 163 # 164 #-f --show-raw-insn 165 # 166 #--show-raw-insn 167 # 168 #When disassembling instructions, print the instruction in hex as 169 #well as in symbolic form. This is the default except when 170 #--prefix-addresses is used. 171 # 172 #CODE 173 174 objdump -f --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_fshow 175 176 diff -bw $TCtmp/ar_dump_fshow $TCtmp/er_dump_fshow 2>&1 1>/dev/null 177 178 if [ $? -eq 0 ]; then 179 echo "objdump -f --show-raw-insn" 180 else 181 echo "FAIL - objdump -f --show-raw-insn" 182 exit 1 183 fi 184 185 rm -f $TCtmp/[ae]r_dump_fshow 186 187 ##ASSERTION POSIX NEXT_AVAILABLE C 188 # 189 #-h --show-raw-insn 190 # 191 #When disassembling instructions, print the instruction in hex as 192 #well as in symbolic form. This is the default except when 193 #--prefix-addresses is used. 194 # 195 #CODE 196 197 objdump -h --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_hshow 198 199 diff -bw $TCtmp/ar_dump_hshow $TCtmp/er_dump_hshow 2>&1 1>/dev/null 200 201 if [ $? -eq 0 ]; then 202 echo "objdump -h --show-raw-insn" 203 else 204 echo "FAIL - objdump -h --show-raw-insn" 205 exit 1 206 fi 207 208 rm -f $TCtmp/[ae]r_dump_hshow 209 210 ##ASSERTION POSIX NEXT_AVAILABLE C 211 # 212 #-s --show-raw-insn 213 # 214 #--show-raw-insn 215 # 216 #When disassembling instructions, print the instruction in hex as 217 #well as in symbolic form. This is the default except when 218 #--prefix-addresses is used. 219 # 220 # 221 #CODE 222 223 objdump -s --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_sshow 224 225 diff -bw $TCtmp/ar_dump_sshow $TCtmp/er_dump_sshow 2>&1 1>/dev/null 226 227 if [ $? -eq 0 ]; then 228 echo "objdump -s --show-raw-insn" 229 else 230 echo "FAIL - objdump -s --show-raw-insn" 231 exit 1 232 fi 233 234 rm -f $TCtmp/[ae]r_dump_sshow 235 236 ##ASSERTION POSIX NEXT_AVAILABLE C 237 # 238 #-t--show-raw-insn 239 # 240 #--show-raw-insn 241 # 242 #When disassembling instructions, print the instruction in hex as 243 #well as in symbolic form. This is the default except when 244 #--prefix-addresses is used. 245 # 246 # 247 #CODE 248 249 objdump -t --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_tshow 250 251 diff -bw $TCtmp/ar_dump_tshow $TCtmp/er_dump_tshow 2>&1 1>/dev/null 252 253 if [ $? -eq 0 ]; then 254 echo "objdump -t --show-raw-insn" 255 else 256 echo "FAIL - objdump -t --show-raw-insn" 257 exit 1 258 fi 259 260 rm -f $TCtmp/[ae]r_dump_tshow 261 262 ##ASSERTION POSIX NEXT_AVAILABLE C 263 # 264 #-R --show-raw-insn 265 # 266 #--show-raw-insn 267 # 268 #When disassembling instructions, print the instruction in hex as 269 #well as in symbolic form. This is the default except when 270 #--prefix-addresses is used. 271 # 272 # 273 objdump -R --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_Rshow 274 275 diff -bw $TCtmp/ar_dump_Rshow $TCtmp/er_dump_Rshow 2>&1 1>/dev/null 276 277 if [ $? -eq 0 ]; then 278 echo "objdump -R --show-raw-insn" 279 else 280 echo "FAIL - objdump -R --show-raw-insn" 281 exit 1 282 fi 283 284 rm -f $TCtmp/[ae]r_dump_Rshow 285 286 ##ASSERTION POSIX NEXT_AVAILABLE C 287 # 288 #-r --show-raw-insn 289 # 290 #--show-raw-insn 291 # 292 #When disassembling instructions, print the instruction in hex as 293 #well as in symbolic form. This is the default except when 294 #--prefix-addresses is used. 295 # 296 # 297 #CODE 298 299 objdump -r --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_rshow 300 301 diff -bw $TCtmp/ar_dump_rshow $TCtmp/er_dump_rshow 2>&1 1>/dev/null 302 303 if [ $? -eq 0 ]; then 304 echo "objdump -r --show-raw-insn" 305 else 306 echo "FAIL - objdump -r --show-raw-insn" 307 exit 1 308 fi 309 310 rm -f $TCtmp/[ae]r_dump_rshow 311 312 ##ASSERTION POSIX NEXT_AVAILABLE C 313 # 314 #-T 315 # 316 #Dumps the dynamic symbol table entries - dumps all of .dynsym 317 # 318 # 319 #CODE 320 321 objdump -T $TCsrc/test_arch_stripped > $TCtmp/ar_dump_dynamic_symbols 322 323 diff -bw $TCtmp/ar_dump_dynamic_symbols $TCtmp/er_dump_dynamic_symbols 2>&1 1>/dev/null 324 325 if [ $? -eq 0 ]; then 326 echo "objdump -T" 327 else 328 echo "FAIL - objdump -T" 329 exit 1 330 fi 331 332 rm -f $TCtmp/[ae]r_dump_dynamic_symbols 333 334 ##ASSERTION POSIX NEXT_AVAILABLE C 335 #-a 336 # 337 #CODE 338 339 objdump -a $TCtmp/lib.a > $TCtmp/ar_dump_a 340 341 diff -bw $TCtmp/ar_dump_a $TCtmp/er_dump_a 2>&1 1>/dev/null 342 343 if [ $? -eq 0 ]; then 344 echo "objdump -a" 345 else 346 echo "FAIL - objdump -a" 347 exit 1 348 fi 349 350 rm -f $TCtmp/[ae]r_dump_a 351 352 ##ASSERTION POSIX NEXT_AVAILABLE C 353 #- --show-raw-insn 354 # 355 #CODE 356 357 objdump -a --show-raw-insn $TCtmp/lib.a > $TCtmp/ar_dump_ashow 358 359 diff -bw $TCtmp/ar_dump_ashow $TCtmp/er_dump_ashow 2>&1 1>/dev/null 360 361 if [ $? -eq 0 ]; then 362 echo "objdump -a --show-raw-insn" 363 else 364 echo "FAIL - objdump -a --show-raw-insn" 365 exit 1 366 fi 367 368 rm -f $TCtmp/[ae]r_dump_ashow 369 370 ##ASSERTION POSIX NEXT_AVAILABLE C 371 #--debugging 372 # 373 #CODE 374 375 if ! objdump --debugging $TCsrc/test_arch_debug > $TCtmp/ar_dump_debug; then 376 echo "FAIL - objdump --debugging" 377 exit 1 378 else 379 diff -bw $TCtmp/ar_dump_debug $TCtmp/er_dump_debug 2>&1 1>/dev/null 380 if [ $? -eq 0 ]; then 381 echo "objdump --debugging" 382 else 383 echo "FAIL - objdump --debugging" 384 exit 1 385 fi 386 387 fi 388 389 rm -rf $TCtmp 390 391 echo PASS 392 exit 0 393 } 394 395 do_setup 396 do_test 397