| #!/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 pronram; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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:-`pwd`} |
| TCtmp=${TCtmp:-/tmp} |
| export DUMP=/usr/bin/objdump |
| |
| do_setup() |
| { |
| |
| /usr/bin/ar -cr $TCtmp/lib.a $TCsrc/test_arch.o |
| |
| echo 1; $DUMP -f $TCsrc/test > $TCtmp/er_dump_f |
| echo 2; $DUMP -h $TCsrc/test > $TCtmp/er_dump_h |
| echo 3; $DUMP -R $TCsrc/test > $TCtmp/er_dump_R |
| echo 4; $DUMP -r $TCsrc/test > $TCtmp/er_dump_r |
| echo 5; $DUMP -t $TCsrc/test > $TCtmp/er_dump_t |
| echo 6; $DUMP -f --show-raw-insn $TCsrc/test > $TCtmp/er_dump_fshow |
| echo 7; $DUMP -h --show-raw-insn $TCsrc/test > $TCtmp/er_dump_hshow |
| echo 7; $DUMP -s --show-raw-insn $TCsrc/test > $TCtmp/er_dump_sshow |
| echo 8; $DUMP -t --show-raw-insn $TCsrc/test > $TCtmp/er_dump_tshow |
| echo 9; $DUMP -R --show-raw-insn $TCsrc/test > $TCtmp/er_dump_Rshow |
| echo 10; $DUMP -r --show-raw-insn $TCsrc/test > $TCtmp/er_dump_rshow |
| echo 11; $DUMP -T $TCsrc/test > $TCtmp/er_dump_T |
| echo 12; $DUMP -a $TCtmp/lib.a > $TCtmp/er_dump_a |
| echo 13; $DUMP -a --show-raw-insn $TCtmp/lib.a > $TCtmp/er_dump_ashow |
| echo 14; $DUMP --debugging $TCsrc/test_D > $TCtmp/er_dump_D |
| } |
| |
| do_test() |
| { |
| #ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-f Dump each file header. |
| # |
| #CODE |
| |
| $DUMP -f $TCsrc/test > $TCtmp/ar_dump_f |
| |
| diff -bw $TCtmp/ar_dump_f $TCtmp/er_dump_f 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -f" |
| else |
| echo "FAIL - $DUMP -f" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_f |
| rm -f $TCtmp/er_dump_f |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-h Dump the section headers. |
| # |
| #CODE |
| |
| $DUMP -h $TCsrc/test > $TCtmp/ar_dump_h |
| |
| diff -bw $TCtmp/ar_dump_h $TCtmp/er_dump_h 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -h" |
| else |
| echo "FAIL - $DUMP -h" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_h |
| rm -f $TCtmp/er_dump_h |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-R Dump dynamic linking information and static shared library information, if |
| #available. |
| # |
| #CODE |
| |
| $DUMP -R $TCsrc/test > $TCtmp/ar_dump_R |
| |
| diff -bw $TCtmp/ar_dump_R $TCtmp/er_dump_R 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -R" |
| else |
| echo "FAIL - $DUMP -R" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_R |
| rm -f $TCtmp/er_dump_R |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| # -r Dump relocation information. |
| # |
| #CODE |
| |
| $DUMP -r $TCsrc/test > $TCtmp/ar_dump_r |
| |
| diff -bw $TCtmp/ar_dump_r $TCtmp/er_dump_r 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -r" |
| else |
| echo "FAIL - $DUMP -r" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_r |
| rm -f $TCtmp/er_dump_r |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-t Dump symbol table entries. |
| # |
| #CODE |
| |
| $DUMP -t $TCsrc/test > $TCtmp/ar_dump_t |
| |
| diff -bw $TCtmp/ar_dump_t $TCtmp/er_dump_t 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -t" |
| else |
| echo "FAIL - $DUMP -t" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_t |
| rm -f $TCtmp/er_dump_t |
| |
| |
| ##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 |
| |
| $DUMP -f --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_fshow |
| |
| diff -bw $TCtmp/ar_dump_fshow $TCtmp/er_dump_fshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -f --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -f --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_fshow |
| rm -f $TCtmp/er_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 |
| |
| $DUMP -h --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_hshow |
| |
| diff -bw $TCtmp/ar_dump_hshow $TCtmp/er_dump_hshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -h --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -h --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_hshow |
| rm -f $TCtmp/er_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 |
| |
| $DUMP -s --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_sshow |
| |
| diff -bw $TCtmp/ar_dump_sshow $TCtmp/er_dump_sshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -s --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -s --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_sshow |
| rm -f $TCtmp/er_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 |
| |
| $DUMP -t --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_tshow |
| |
| diff -bw $TCtmp/ar_dump_tshow $TCtmp/er_dump_tshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -t --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -t --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_tshow |
| rm -f $TCtmp/er_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. |
| # |
| # |
| $DUMP -R --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_Rshow |
| |
| diff -bw $TCtmp/ar_dump_Rshow $TCtmp/er_dump_Rshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -R --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -R --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_Rshow |
| rm -f $TCtmp/er_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 |
| |
| $DUMP -r --show-raw-insn $TCsrc/test > $TCtmp/ar_dump_rshow |
| |
| diff -bw $TCtmp/ar_dump_rshow $TCtmp/er_dump_rshow 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -r --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -r --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_rshow |
| rm -f $TCtmp/er_dump_rshow |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| # |
| #-T |
| # |
| #Dumps the dynamic symbol table entries - dumps all of .dynsym |
| # |
| # |
| #CODE |
| |
| $DUMP -T $TCsrc/test > $TCtmp/ar_dump_T |
| |
| diff -bw $TCtmp/ar_dump_T $TCtmp/er_dump_T 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP -T" |
| else |
| echo "FAIL - $DUMP -T" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_T |
| rm -f $TCtmp/er_dump_T |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #-a |
| # |
| #CODE |
| |
| $DUMP -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 "$DUMP -a" |
| else |
| echo "FAIL - $DUMP -a" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_a |
| rm -f $TCtmp/er_dump_a |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #- --show-raw-insn |
| # |
| #CODE |
| |
| $DUMP -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 "$DUMP -a --show-raw-insn" |
| else |
| echo "FAIL - $DUMP -a --show-raw-insn" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_ashow |
| rm -f $TCtmp/er_dump_ashow |
| |
| |
| ##ASSERTION POSIX NEXT_AVAILABLE C |
| #--debugging |
| # |
| #CODE |
| |
| $DUMP --debugging $TCsrc/test_D > $TCtmp/ar_dump_D |
| |
| diff -bw $TCtmp/ar_dump_D $TCtmp/er_dump_D 2>&1 1>/dev/null |
| |
| if [ $? -eq 0 ] |
| then |
| echo "$DUMP --debugging" |
| else |
| echo "FAIL - $DUMP --debugging" |
| exit 1 |
| fi |
| |
| rm -f $TCtmp/ar_dump_D |
| rm -f $TCtmp/er_dump_D |
| |
| echo PASS |
| exit 0 |
| } |
| |
| do_setup |
| do_test |
| rm -f $TCtmp/lib.a |