1#!/bin/sh 2# 3# Copyright (c) International Business Machines Corp., 2000 4# 06/01 Robbie Williamson (robbiew@us.ibm.com) 5# Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz> 6# 7# This program is free software; you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation; either version 2 of the License, or 10# (at your option) any later version. 11# 12# This program is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 15# the GNU General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with this program; if not, write to the Free Software 19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20# 21#--------------------------------------------------------------------------- 22# 23# Tests the basic functionality of the `nm` command. 24# 25NM=${NM:=nm} 26 27TST_CNT=7 28TST_TESTFUNC=test 29TST_SETUP=setup 30TST_NEEDS_TMPDIR=1 31TST_NEEDS_CMDS="$NM" 32. tst_test.sh 33 34setup() 35{ 36 ROD cp "$TST_DATAROOT/lib.a" "." 37 ROD mkdir "dir" 38 ROD cp "$TST_DATAROOT/lib.a" "dir/" 39} 40 41test1() 42{ 43 EXPECT_PASS $NM -f posix -A "lib.a" \> nm.out 44 45 if grep -q "lib.a\[f2.o\]\:" nm.out; then 46 tst_res TPASS "Got correct listing" 47 else 48 tst_res TFAIL "Got incorrect listing" 49 cat nm.out 50 fi 51 52 EXPECT_PASS $NM -f posix -A "dir/lib.a" \> nm.out 53 54 if grep -q "dir/lib.a\[f2.o\]\:" nm.out; then 55 tst_res TPASS "Got correct listing" 56 else 57 tst_res TFAIL "Got incorrect listing" 58 cat nm.out 59 fi 60} 61 62test2() 63{ 64 EXPECT_PASS $NM -f posix -g $TST_DATAROOT/f1 \> nm.out 65 66 if grep -q "\w [a,b,d,f,t]" nm.out; then 67 tst_res TFAIL "Got internal symbols with -g" 68 cat nm.out 69 else 70 tst_res TPASS "Got only external symbols with -g" 71 fi 72} 73 74test3() 75{ 76 EXPECT_PASS $NM -f posix -t o $TST_DATAROOT/f1 \> nm.out 77 78 if awk '{print $3}' nm.out | grep -q "[8-9a-f]"; then 79 tst_res TFAIL "Got non-octal symbol values with -f" 80 cat nm.out 81 else 82 tst_res TPASS "Got an octal symbol values with -f" 83 fi 84} 85 86test4() 87{ 88 EXPECT_PASS $NM -f sysv $TST_DATAROOT/f1 \> nm.out 89 90 if grep -q "Name" nm.out; then 91 tst_res TPASS "Got SysV format with -f sysv" 92 else 93 tst_res TFAIL "Got wrong format with -f sysv" 94 cat nm.out 95 fi 96} 97 98test5() 99{ 100 EXPECT_PASS $NM -f bsd $TST_DATAROOT/f1 \> nm_bsd.out 101 EXPECT_PASS $NM -f posix $TST_DATAROOT/f1 \> nm_posix.out 102 103 ROD awk '{print $3 $2 $1}' nm_bsd.out \> nm1.out 104 ROD awk '{print $1 $2 $3}' nm_posix.out \> nm2.out 105 106 if diff nm1.out nm2.out > /dev/null; then 107 tst_res TPASS "Got BSD format with -f bsd" 108 else 109 tst_res TFAIL "Got wrong format with -f bsd" 110 cat nm_bsd.out 111 fi 112} 113 114test6() 115{ 116 EXPECT_PASS $NM -f sysv -u $TST_DATAROOT/f1 \> nm.out 117 118 if grep -q "Undefined symbols from" nm.out; then 119 tst_res TPASS "Got undefined symbols with -u" 120 else 121 tst_res TFAIL "Haven't got undefined symbols with -u" 122 cat nm.out 123 fi 124} 125 126test7() 127{ 128 EXPECT_PASS $NM -s $TST_DATAROOT/lib.a \> nm.out 129 130 if grep -q "index" nm.out; then 131 tst_res TPASS "Got index with -s" 132 else 133 tst_res TFAIL "Haven't got index with -s" 134 fi 135} 136 137tst_run 138