PR binutils/12753

* nm.c (filter_symbols): Treat unique symbols as global symbols.
	* doc/binutils.texi (nm): Mention that some lowercase letters
	actually indicate global symbols.

	* lib/utils-lib.exp (run_dump_test): Allow nm as a program.
	* binutils-all/nm.exp: Test running "nm -g" on an object file
	containing a unique symbol.
This commit is contained in:
Nick Clifton 2011-05-18 16:35:03 +00:00
parent 1d06ead687
commit 0ba0c2b343
6 changed files with 55 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2011-05-18 Nick Clifton <nickc@redhat.com>
PR binutils/12753
* nm.c (filter_symbols): Treat unique symbols as global symbols.
* doc/binutils.texi (nm): Mention that some lowercase letters
actually indicate global symbols.
2011-05-15 Tristan Gingold <gingold@adacore.com>
* od-xcoff.c: New file.

View File

@ -724,7 +724,9 @@ hexadecimal by default.
@item
The symbol type. At least the following types are used; others are, as
well, depending on the object file format. If lowercase, the symbol is
local; if uppercase, the symbol is global (external).
usually local; if uppercase, the symbol is global (external). There
are however a few lowercase symbols that are shown for special global
symbols (@code{u}, @code{v} and @code{w}).
@c Some more detail on exactly what these symbol types are used for
@c would be nice.

View File

@ -436,6 +436,8 @@ filter_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
else if (external_only)
keep = ((sym->flags & BSF_GLOBAL) != 0
|| (sym->flags & BSF_WEAK) != 0
/* PR binutls/12753: Unique symbols are global too. */
|| (sym->flags & BSF_GNU_UNIQUE) != 0
|| bfd_is_und_section (sym->section)
|| bfd_is_com_section (sym->section));
else

View File

@ -1,3 +1,10 @@
2011-05-18 Nick Clifton <nickc@redhat.com>
PR binutils/12753
* lib/utils-lib.exp (run_dump_test): Allow nm as a program.
* binutils-all/nm.exp: Test running "nm -g" on an object file
containing a unique symbol.
2011-05-13 Alan Modra <amodra@gmail.com>
* binutils-all/objcopy.exp objcopy_text): Remove xfails for sh-rtems

View File

@ -98,6 +98,41 @@ if {![info exists vars(text_symbol)] \
pass "nm -g"
}
if [is_elf_format] {
# PR binutils/12753
# Test nm -g on a unique global symbol.
# Only some targets support unique symbols.
if {([istarget "i?86-*-*"]
|| [istarget "x86_64-*-*"]
|| [istarget "arm-*-*"]
|| [istarget "powerpc*-*-*"]
|| [istarget "sparc*-*-*"])} then {
if {![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.o]} then {
fail "nm -g on unique symbols (assembling)"
} else {
if [is_remote host] {
set tmpfile [remote_download host tmpdir/unique.o]
} else {
set tmpfile tmpdir/unique.o
}
set got [binutils_run $NM "$NMFLAGS -g $tmpfile"]
if [regexp "u foo" $got] then {
pass "nm -g on unique symbols"
} else {
fail "nm -g on unique symbols"
}
if { $verbose < 1 } {
remote_file host delete "tmpdir/unique.o"
}
}
}
}
# Test nm -P
# This test does not work correctly on ECOFF targets, because ECOFF

View File

@ -354,6 +354,7 @@ proc run_dump_test { name {extra_options {}} } {
}
strings { set program strings }
elfedit { set program elfedit }
nm { set program nm }
default {
perror "unrecognized program option $opts(PROG) in $file.d"
unresolved $testname