blob: 233a4f2f003a45f2fefd7cb9c8743596a547e2b8 [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 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