PR27128, nm -P portable output format regression
binutils/ PR 27128 * nm.c (print_symname): Append version string to symbol name before printing the lot under control of "form". Append version to demangled names too. ld/ PR 27128 * testsuite/ld-elf/pr27128.s: New file. * testsuite/ld-elf/pr27128.t: Likewise. * testsuite/ld-elf/pr27128a.d: Likewise. * testsuite/ld-elf/pr27128b.d: Likewise. * testsuite/ld-elf/pr27128c.d: Likewise. * testsuite/ld-elf/pr27128d.d: Likewise. * testsuite/ld-elf/pr27128e.d: Likewise.
This commit is contained in:
parent
4ff509e75b
commit
cab3f4da68
@ -1,3 +1,10 @@
|
||||
2020-12-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 27128
|
||||
* nm.c (print_symname): Append version string to symbol name
|
||||
before printing the lot under control of "form". Append version
|
||||
to demangled names too.
|
||||
|
||||
2020-12-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elfedit (usage): Pass osabi to reconcat.
|
||||
|
||||
@ -407,21 +407,17 @@ static void
|
||||
print_symname (const char *form, struct extended_symbol_info *info,
|
||||
const char *name, bfd *abfd)
|
||||
{
|
||||
char *alloc = NULL;
|
||||
|
||||
if (name == NULL)
|
||||
name = info->sinfo->name;
|
||||
if (do_demangle && *name)
|
||||
{
|
||||
char *res = bfd_demangle (abfd, name, demangle_flags);
|
||||
|
||||
if (res != NULL)
|
||||
{
|
||||
printf (form, res);
|
||||
free (res);
|
||||
return;
|
||||
}
|
||||
alloc = bfd_demangle (abfd, name, demangle_flags);
|
||||
if (alloc != NULL)
|
||||
name = alloc;
|
||||
}
|
||||
|
||||
printf (form, name);
|
||||
if (info != NULL && info->elfinfo)
|
||||
{
|
||||
const char *version_string;
|
||||
@ -431,11 +427,17 @@ print_symname (const char *form, struct extended_symbol_info *info,
|
||||
= bfd_get_symbol_version_string (abfd, &info->elfinfo->symbol,
|
||||
FALSE, &hidden);
|
||||
if (version_string && version_string[0])
|
||||
printf ("%s%s",
|
||||
(hidden || bfd_is_und_section (info->elfinfo->symbol.section)
|
||||
? "@" : "@@"),
|
||||
version_string);
|
||||
{
|
||||
const char *at = "@@";
|
||||
if (hidden || bfd_is_und_section (info->elfinfo->symbol.section))
|
||||
at = "@";
|
||||
alloc = reconcat (alloc, name, at, version_string, NULL);
|
||||
if (alloc != NULL)
|
||||
name = alloc;
|
||||
}
|
||||
}
|
||||
printf (form, name);
|
||||
free (alloc);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
12
ld/ChangeLog
12
ld/ChangeLog
@ -1,3 +1,15 @@
|
||||
2020-12-31 H.J. Lu <hongjiu.lu@intel.com>
|
||||
Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 27128
|
||||
* testsuite/ld-elf/pr27128.s: New file.
|
||||
* testsuite/ld-elf/pr27128.t: Likewise.
|
||||
* testsuite/ld-elf/pr27128a.d: Likewise.
|
||||
* testsuite/ld-elf/pr27128b.d: Likewise.
|
||||
* testsuite/ld-elf/pr27128c.d: Likewise.
|
||||
* testsuite/ld-elf/pr27128d.d: Likewise.
|
||||
* testsuite/ld-elf/pr27128e.d: Likewise.
|
||||
|
||||
2020-12-24 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/ld-elf/retain7a.d: Don't run on hppa-linux.
|
||||
|
||||
13
ld/testsuite/ld-elf/pr27128.s
Normal file
13
ld/testsuite/ld-elf/pr27128.s
Normal file
@ -0,0 +1,13 @@
|
||||
.text
|
||||
.globl foo
|
||||
.type foo,%function
|
||||
foo:
|
||||
.space 16
|
||||
.size foo, .-foo
|
||||
.symver foo,foo@@VERS_2.0,remove
|
||||
.globl _Zrm1XS_
|
||||
.type _Zrm1XS_,%function
|
||||
_Zrm1XS_:
|
||||
.space 16
|
||||
.size _Zrm1XS_, .-_Zrm1XS_
|
||||
.symver _Zrm1XS_,_Zrm1XS_@@VERS_2.0,remove
|
||||
6
ld/testsuite/ld-elf/pr27128.t
Normal file
6
ld/testsuite/ld-elf/pr27128.t
Normal file
@ -0,0 +1,6 @@
|
||||
VERS_2.0 {
|
||||
global:
|
||||
foo; _Zrm1XS_;
|
||||
local:
|
||||
*;
|
||||
};
|
||||
16
ld/testsuite/ld-elf/pr27128a.d
Normal file
16
ld/testsuite/ld-elf/pr27128a.d
Normal file
@ -0,0 +1,16 @@
|
||||
#source: pr27128.s
|
||||
#ld: -shared -version-script pr27128.t
|
||||
#nm: -n -P
|
||||
#target: [check_shared_lib_support]
|
||||
#notarget: [is_underscore_target]
|
||||
# _Zrm1XS_ doesn't have an extra underscore.
|
||||
#xfail: hppa64-*-* tic6x-*-*
|
||||
# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
|
||||
|
||||
#...
|
||||
VERS_2\.0 A 0+
|
||||
#...
|
||||
foo@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#...
|
||||
_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#pass
|
||||
16
ld/testsuite/ld-elf/pr27128b.d
Normal file
16
ld/testsuite/ld-elf/pr27128b.d
Normal file
@ -0,0 +1,16 @@
|
||||
#source: pr27128.s
|
||||
#ld: -shared -version-script pr27128.t
|
||||
#nm: -n -D --format=posix
|
||||
#target: [check_shared_lib_support]
|
||||
#notarget: [is_underscore_target]
|
||||
# _Zrm1XS_ doesn't have an extra underscore.
|
||||
#xfail: hppa64-*-* tic6x-*-*
|
||||
# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
|
||||
|
||||
#...
|
||||
VERS_2\.0 A 0+
|
||||
#...
|
||||
foo@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#...
|
||||
_Zrm1XS_@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#pass
|
||||
16
ld/testsuite/ld-elf/pr27128c.d
Normal file
16
ld/testsuite/ld-elf/pr27128c.d
Normal file
@ -0,0 +1,16 @@
|
||||
#source: pr27128.s
|
||||
#ld: -shared -version-script pr27128.t
|
||||
#nm: -n --format=sysv
|
||||
#target: [check_shared_lib_support]
|
||||
#notarget: [is_underscore_target]
|
||||
# _Zrm1XS_ doesn't have an extra underscore.
|
||||
#xfail: hppa64-*-* tic6x-*-*
|
||||
# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
|
||||
|
||||
#...
|
||||
VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
|
||||
#...
|
||||
foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
|
||||
#...
|
||||
_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
|
||||
#pass
|
||||
16
ld/testsuite/ld-elf/pr27128d.d
Normal file
16
ld/testsuite/ld-elf/pr27128d.d
Normal file
@ -0,0 +1,16 @@
|
||||
#source: pr27128.s
|
||||
#ld: -shared -version-script pr27128.t
|
||||
#nm: -n -D --format=sysv
|
||||
#target: [check_shared_lib_support]
|
||||
#notarget: [is_underscore_target]
|
||||
# _Zrm1XS_ doesn't have an extra underscore.
|
||||
#xfail: hppa64-*-* tic6x-*-*
|
||||
# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
|
||||
|
||||
#...
|
||||
VERS_2\.0 +\|0+\| +A +\| +OBJECT\| +\| +\|\*ABS\*
|
||||
#...
|
||||
foo@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
|
||||
#...
|
||||
_Zrm1XS_@@VERS_2\.0 +\|[0-9a-f]+\| +T +\| +FUNC\|0+10\| +\|\.text
|
||||
#pass
|
||||
16
ld/testsuite/ld-elf/pr27128e.d
Normal file
16
ld/testsuite/ld-elf/pr27128e.d
Normal file
@ -0,0 +1,16 @@
|
||||
#source: pr27128.s
|
||||
#ld: -shared -version-script pr27128.t
|
||||
#nm: -n --demangle -D --format=posix
|
||||
#target: [check_shared_lib_support]
|
||||
#notarget: [is_underscore_target]
|
||||
# _Zrm1XS_ doesn't have an extra underscore.
|
||||
#xfail: hppa64-*-* tic6x-*-*
|
||||
# hppa64 uses dot-symbols, tic6x DYN lacks dynamic sections for this testcase
|
||||
|
||||
#...
|
||||
VERS_2\.0 A 0+
|
||||
#...
|
||||
foo@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#...
|
||||
operator%\(X, X\)@@VERS_2\.0 T [0-9a-f]+ 10
|
||||
#pass
|
||||
Loading…
Reference in New Issue
Block a user