| #!/bin/sh |
| # |
| # Copyright (c) International Business Machines Corp., 2000 |
| # |
| # This program 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 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program 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, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| # |
| # |
| # FILE : objdump |
| # |
| # PURPOSE: Tests the functionality of the `objdump` command. |
| # |
| # HISTORY: |
| # 06/01 Robbie Williamson (robbiew@us.ibm.com) |
| # -Ported |
| # |
| # |
| #----------------------------------------------------------------------- |
| # |
| #---------------------------------------------------------------------- |
| #Uncomment line below for debug output. |
| #trace_logic=${trace_logic:-"set -x"} |
| $trace_logic |
| |
| TCsrc=${TCsrc:-${0%/*}} |
| TCtmp=${TCtmp:-/tmp/objdump$$} |
| |
| do_setup() |
| { |
| mkdir $TCtmp |
| ar -cr $TCtmp/lib.a $TCsrc/test_arch.obj |
| |
| echo 1; objdump -f $TCsrc/test_arch_stripped > $TCtmp/er_dump_f |
| echo 2; objdump -h $TCsrc/test_arch_stripped > $TCtmp/er_dump_h |
| echo 3; objdump -R $TCsrc/test_arch_stripped > $TCtmp/er_dump_R |
| echo 4; objdump -r $TCsrc/test_arch_stripped > $TCtmp/er_dump_reloc |
| echo 5; objdump -t $TCsrc/test_arch_stripped > $TCtmp/er_dump_symbols |
| echo 6; objdump -f --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_fshow |
| echo 7; objdump -h --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_hshow |
| echo 7; objdump -s --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_sshow |
| echo 8; objdump -t --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_tshow |
| echo 9; objdump -R --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_Rshow |
| echo 10; objdump -r --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/er_dump_rshow |
| echo 11; objdump -T $TCsrc/test_arch_stripped > $TCtmp/er_dump_dynamic_symbols |
| echo 12; objdump -a $TCtmp/lib.a > $TCtmp/er_dump_a |
| echo 13; objdump -a --show-raw-insn $TCtmp/lib.a > $TCtmp/er_dump_ashow |
| echo 14; objdump --debugging $TCsrc/test_arch_debug > $TCtmp/er_dump_debug |
| } |
| |
| do_test() |
| { |
| #ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-f Dump each file header. |
| # |
| #CODE |
| |
| objdump -f $TCsrc/test_arch_stripped > $TCtmp/ar_dump_f |
| |
| diff -bw $TCtmp/ar_dump_f $TCtmp/er_dump_f 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "objdump -f" |
| else |
| echo "FAIL - objdump -f" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_f |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-h Dump the section headers. |
| # |
| #CODE |
| |
| objdump -h $TCsrc/test_arch_stripped > $TCtmp/ar_dump_h |
| |
| diff -bw $TCtmp/ar_dump_h $TCtmp/er_dump_h 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -h" |
| else |
| echo "FAIL - objdump -h" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_h |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-R Dump dynamic linking information and static shared library information, if |
| #available. |
| # |
| #CODE |
| |
| objdump -R $TCsrc/test_arch_stripped > $TCtmp/ar_dump_R |
| |
| diff -bw $TCtmp/ar_dump_R $TCtmp/er_dump_R 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -R" |
| else |
| echo "FAIL - objdump -R" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_R |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| # -r Dump relocation information. |
| # |
| #CODE |
| |
| objdump -r $TCsrc/test_arch_stripped > $TCtmp/ar_dump_reloc |
| |
| diff -bw $TCtmp/ar_dump_reloc $TCtmp/er_dump_reloc 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -r" |
| else |
| echo "FAIL - objdump -r" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_reloc |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-t Dump symbol table entries. |
| # |
| #CODE |
| |
| objdump -t $TCsrc/test_arch_stripped > $TCtmp/ar_dump_symbols |
| |
| diff -bw $TCtmp/ar_dump_symbols $TCtmp/er_dump_symbols 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -t" |
| else |
| echo "FAIL - objdump -t" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_symbols |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-f --show-raw-insn |
| # |
| #--show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| #CODE |
| |
| objdump -f --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_fshow |
| |
| diff -bw $TCtmp/ar_dump_fshow $TCtmp/er_dump_fshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -f --show-raw-insn" |
| else |
| echo "FAIL - objdump -f --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_fshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-h --show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| #CODE |
| |
| objdump -h --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_hshow |
| |
| diff -bw $TCtmp/ar_dump_hshow $TCtmp/er_dump_hshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -h --show-raw-insn" |
| else |
| echo "FAIL - objdump -h --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_hshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-s --show-raw-insn |
| # |
| #--show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| # |
| #CODE |
| |
| objdump -s --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_sshow |
| |
| diff -bw $TCtmp/ar_dump_sshow $TCtmp/er_dump_sshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -s --show-raw-insn" |
| else |
| echo "FAIL - objdump -s --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_sshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-t--show-raw-insn |
| # |
| #--show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| # |
| #CODE |
| |
| objdump -t --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_tshow |
| |
| diff -bw $TCtmp/ar_dump_tshow $TCtmp/er_dump_tshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -t --show-raw-insn" |
| else |
| echo "FAIL - objdump -t --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_tshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-R --show-raw-insn |
| # |
| #--show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| # |
| objdump -R --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_Rshow |
| |
| diff -bw $TCtmp/ar_dump_Rshow $TCtmp/er_dump_Rshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -R --show-raw-insn" |
| else |
| echo "FAIL - objdump -R --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_Rshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-r --show-raw-insn |
| # |
| #--show-raw-insn |
| # |
| #When disassembling instructions, print the instruction in hex as |
| #well as in symbolic form. This is the default except when |
| #--prefix-addresses is used. |
| # |
| # |
| #CODE |
| |
| objdump -r --show-raw-insn $TCsrc/test_arch_stripped > $TCtmp/ar_dump_rshow |
| |
| diff -bw $TCtmp/ar_dump_rshow $TCtmp/er_dump_rshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -r --show-raw-insn" |
| else |
| echo "FAIL - objdump -r --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_rshow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-T |
| # |
| #Dumps the dynamic symbol table entries - dumps all of .dynsym |
| # |
| # |
| #CODE |
| |
| objdump -T $TCsrc/test_arch_stripped > $TCtmp/ar_dump_dynamic_symbols |
| |
| diff -bw $TCtmp/ar_dump_dynamic_symbols $TCtmp/er_dump_dynamic_symbols 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -T" |
| else |
| echo "FAIL - objdump -T" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_dynamic_symbols |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #-a |
| # |
| #CODE |
| |
| objdump -a $TCtmp/lib.a > $TCtmp/ar_dump_a |
| |
| diff -bw $TCtmp/ar_dump_a $TCtmp/er_dump_a 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -a" |
| else |
| echo "FAIL - objdump -a" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_a |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #- --show-raw-insn |
| # |
| #CODE |
| |
| objdump -a --show-raw-insn $TCtmp/lib.a > $TCtmp/ar_dump_ashow |
| |
| diff -bw $TCtmp/ar_dump_ashow $TCtmp/er_dump_ashow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ]; then |
| echo "objdump -a --show-raw-insn" |
| else |
| echo "FAIL - objdump -a --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/[ae]r_dump_ashow |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #--debugging |
| # |
| #CODE |
| |
| if ! objdump --debugging $TCsrc/test_arch_debug > $TCtmp/ar_dump_debug; then |
| echo "FAIL - objdump --debugging" |
| exit 1 |
| else |
| diff -bw $TCtmp/ar_dump_debug $TCtmp/er_dump_debug 2>&1 1>/dev/null |
| if [ $? -eq 0 ]; then |
| echo "objdump --debugging" |
| else |
| echo "FAIL - objdump --debugging" |
| exit 1 |
| fi |
| |
| fi |
| |
| rm -rf $TCtmp |
| |
| echo PASS |
| exit 0 |
| } |
| |
| do_setup |
| do_test |