blob: 9b7e3df1ca72fc281fae00649be2a1b4ac3565c9 [file] [log] [blame]
#!/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., 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:-${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