1 # Copyright
(C
) 1993, 1994, 1996, 1997 Free Software Foundation
, Inc.
3 # This
program is free software
; you can redistribute it and
/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation
; either version
2 of the License
, or
6 #
(at your option
) any later version.
8 # This
program is distributed in the hope that it will be useful
,
9 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License
for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this
program; if not
, write to the Free Software
15 # Foundation
, Inc.
, 59 Temple Place
- Suite
330, Boston
, MA
02111-1307, USA.
17 # Please email
any bugs
, comments
, and
/or additions to this file to
:
18 # bug
-dejagnu@prep.ai.mit.edu
20 # This file was written by Rob Savoye
<rob@cygnus.com
>
21 # and rewritten by Ian Lance Taylor
<ian@cygnus.com
>
23 if ![is_remote host
] {
24 if {[which $NM
] == 0} then {
25 perror
"$NM does not exist"
30 send_user
"Version [binutil_version $NM]"
33 if {![binutils_assemble $srcdir
/$subdir
/bintest.s tmpdir
/bintest.o
]} then {
38 set tempfile
[remote_download host tmpdir
/bintest.o
]
40 set tempfile tmpdir
/bintest.o
43 # Test nm with no arguments.
45 # This test does not work correctly
on ECOFF targets
, because ECOFF
46 # stores most symbols twice
, which messes up the nm output.
47 setup_xfail
"alpha*-*-osf*" "alpha*-*-netware*"
48 setup_xfail
"mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
49 setup_xfail
"mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
51 # This test does not work correctly
on XCOFF targets
, because XCOFF
52 # does not enter static symbols in the symbol table.
53 setup_xfail
"*-*-aix*"
55 set got
[binutils_run $NM
"$NMFLAGS $tempfile"]
57 if [info exists vars
] then { unset vars
}
58 while {[regexp
"(\[a-zA-Z\]) (\[a-z_\]*_symbol)(.*)" $got all type symbol rest]} {
59 set vars
($symbol
) $type
63 if {![info exists vars
(text_symbol
)] \
64 || $vars
(text_symbol
) != "T" \
65 ||
![info exists vars
(data_symbol
)] \
66 || $vars
(data_symbol
) != "D" \
67 ||
![info exists vars
(common_symbol
)] \
68 || $vars
(common_symbol
) != "C" \
69 ||
![info exists vars
(external_symbol
)] \
70 || $vars
(external_symbol
) != "U" \
71 ||
![info exists vars
(static_text_symbol
)] \
72 || $vars
(static_text_symbol
) != "t" \
73 ||
![info exists vars
(static_data_symbol
)] \
74 || $vars
(static_data_symbol
) != "d"} {
75 fail
"nm (no arguments)"
77 pass
"nm (no arguments)"
82 set got
[binutils_run $NM
"$NMFLAGS -g $tempfile"]
84 if [info exists vars
] then { unset vars
}
85 while {[regexp
"(\[a-z_\]*_symbol)(.*)" $got all symbol rest]} {
90 if {![info exists vars
(text_symbol
)] \
91 ||
![info exists vars
(data_symbol
)] \
92 ||
![info exists vars
(common_symbol
)] \
93 ||
![info exists vars
(external_symbol
)] \
94 ||
[info exists vars
(static_text_symbol
)] \
95 ||
[info exists vars
(static_data_symbol
)]} {
103 # This test does not work correctly
on ECOFF targets
, because ECOFF
104 # stores most symbols twice
, which messes up the nm output.
105 setup_xfail
"alpha*-*-osf*" "alpha*-*-netware*"
106 setup_xfail
"mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
107 setup_xfail
"mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
109 # This test does not work correctly
on XCOFF targets
, because XCOFF
110 # does not enter static symbols in the symbol table.
111 setup_xfail
"*-*-aix*"
113 set got
[binutils_run $NM
"$NMFLAGS -P $tempfile"]
115 set want
"common_symbol C \[0\]*4.*data_symbol D \[0-9a-fA-F\]*.*external_symbol U.*static_data_symbol d \[0-9a-fA-F\]*.*static_text_symbol t \[0-9a-fA-F\]*.*text_symbol T \[0-9a-fA-F\]*"
117 if [regexp $want $got
] then {
123 # There are certainly other tests that could be run.