Change the readelf and objdump programs so that they will automatically follow links to separate debug info files.

* configure.ac (follow-debug-links): Add option to enable or
	disable the following of debug links by default.  Set the
	default for the option to be 'follow'.
	* dwarf.c (do_follow_links): Initialise with DEFAULT_FOR_FOLLOW_LINKS.
	(dwarf_select_sections_by_names): Add no-follow-links option.
	(dwarf_select_sections_by_letter): Add 'N' option.
	* objdump.c (usage): Add conditional text describing the
	follow links option.
	(slurp_symtab): Ensure that there is a NULL entry at the end
	of the symbol table.
	(slurp_dynamic_symtab): Likewise.
	(dump_bfd): When extending the symbol table, ensure that there
	is still a NULL entry at the end.
	* readelf.c (usage): Add conditional text describing the
	follow links option.
	* doc/binutils.texi: Update documentation for objcopy and
	readelf.
	* doc/debug.options.texi: Update documentation of the
	follow-links option.
	* config.in: Regenerate.
	* configure: Regenerate.
	* testsuite/binutils-all/compress.exp: Add the -WN option to
	objdump command lines that are not expecting to follow links.
	* testsuite/binutils-all/readelf.exp: Add the
	--debug-dump=no-follow-links option to tests that are not
	expecting to follow debug links.

gas	* testsuite/gas/mach-o/sections-1.d: Stop automatic debug link
        following.
	* testsuite/gas/xgate/insns-dwarf2.d: Likewise.

ld	* testsuite/ld-elf/sec64k.exp: Stop readelf from automatically
	following debug links.
This commit is contained in:
Nick Clifton 2021-02-12 14:52:22 +00:00
parent 96df3e28b8
commit c46b706620
18 changed files with 183 additions and 47 deletions

View file

@ -1,3 +1,33 @@
2021-02-12 Nick Clifton <nickc@redhat.com>
* configure.ac (follow-debug-links): Add option to enable or
disable the following of debug links by default. Set the
default for the option to be 'follow'.
* dwarf.c (do_follow_links): Initialise with DEFAULT_FOR_FOLLOW_LINKS.
(dwarf_select_sections_by_names): Add no-follow-links option.
(dwarf_select_sections_by_letter): Add 'N' option.
* objdump.c (usage): Add conditional text describing the
follow links option.
(slurp_symtab): Ensure that there is a NULL entry at the end
of the symbol table.
(slurp_dynamic_symtab): Likewise.
(dump_bfd): When extending the symbol table, ensure that there
is still a NULL entry at the end.
* readelf.c (usage): Add conditional text describing the
follow links option.
* doc/binutils.texi: Update documentation for objcopy and
readelf.
* doc/debug.options.texi: Update documentation of the
follow-links option.
* config.in: Regenerate.
* configure: Regenerate.
* testsuite/binutils-all/compress.exp: Add the -WN option to
objdump command lines that are not expecting to follow links.
* testsuite/binutils-all/readelf.exp: Add the
--debug-dump=no-follow-links option to tests that are not
expecting to follow debug links.
* NEWS: Mention the new behaviour.
2021-02-12 Alan Modra <amodra@gmail.com> 2021-02-12 Alan Modra <amodra@gmail.com>
* testsuite/binutils-all/objcopy.exp: Report "unsupported" when * testsuite/binutils-all/objcopy.exp: Report "unsupported" when

View file

@ -1,5 +1,12 @@
-*- text -*- -*- text -*-
* Readelf and objdump will now follow links to separate debug info files by
default. This behaviour can be stopped via the use of the new -wN or
--debug-dump=no-follow-links options for readelf and the -WN or
--dwarf=no-follow-links options for objdump. Also the old behaviour can be
restored by the use of the --enable-follow-debug-links=no configure time
option.
Changes in 2.36: Changes in 2.36:
* Update elfedit and readelf with LAM_U48 and LAM_U57 support. * Update elfedit and readelf with LAM_U48 and LAM_U57 support.

View file

@ -18,6 +18,9 @@
/* Should ar and ranlib use -D behavior by default? */ /* Should ar and ranlib use -D behavior by default? */
#undef DEFAULT_AR_DETERMINISTIC #undef DEFAULT_AR_DETERMINISTIC
/* Have readelf and objdump follow debug links by default */
#undef DEFAULT_FOR_FOLLOW_LINKS
/* Have nm use F and f for global and local ifunc symbols */ /* Have nm use F and f for global and local ifunc symbols */
#undef DEFAULT_F_FOR_IFUNC_SYMBOLS #undef DEFAULT_F_FOR_IFUNC_SYMBOLS

29
binutils/configure vendored
View file

@ -822,6 +822,7 @@ enable_targets
enable_deterministic_archives enable_deterministic_archives
enable_default_strings_all enable_default_strings_all
enable_f_for_ifunc_symbols enable_f_for_ifunc_symbols
enable_follow_debug_links
with_debuginfod with_debuginfod
enable_libctf enable_libctf
enable_werror enable_werror
@ -1489,6 +1490,9 @@ Optional Features:
--enable-f-for-ifunc-symbols --enable-f-for-ifunc-symbols
Have nm use F and f for global and local ifunc Have nm use F and f for global and local ifunc
symbols symbols
--enable-follow-debug-links
Have readelf and objdump follow debug links by
default
--enable-libctf Handle .ctf type-info sections [default=yes] --enable-libctf Handle .ctf type-info sections [default=yes]
--enable-werror treat compile warnings as errors --enable-werror treat compile warnings as errors
--enable-build-warnings enable build-time compiler warnings --enable-build-warnings enable build-time compiler warnings
@ -11577,7 +11581,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 11580 "configure" #line 11584 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -11683,7 +11687,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF cat > conftest.$ac_ext <<_LT_EOF
#line 11686 "configure" #line 11690 "configure"
#include "confdefs.h" #include "confdefs.h"
#if HAVE_DLFCN_H #if HAVE_DLFCN_H
@ -12359,6 +12363,27 @@ _ACEOF
# Check whether --enable-follow-debug-links was given.
if test "${enable_follow_debug_links+set}" = set; then :
enableval=$enable_follow_debug_links;
if test "${enableval}" = no; then
default_for_follow_links=0
else
default_for_follow_links=1
fi
else
default_for_follow_links=1
fi
cat >>confdefs.h <<_ACEOF
#define DEFAULT_FOR_FOLLOW_LINKS $default_for_follow_links
_ACEOF

View file

@ -82,6 +82,20 @@ fi], [default_f_for_ifunc=0])
AC_DEFINE_UNQUOTED(DEFAULT_F_FOR_IFUNC_SYMBOLS, $default_f_for_ifunc, AC_DEFINE_UNQUOTED(DEFAULT_F_FOR_IFUNC_SYMBOLS, $default_f_for_ifunc,
[Have nm use F and f for global and local ifunc symbols]) [Have nm use F and f for global and local ifunc symbols])
AC_ARG_ENABLE(follow-debug-links,
[AS_HELP_STRING([--enable-follow-debug-links],
[Have readelf and objdump follow debug links by default])], [
if test "${enableval}" = no; then
default_for_follow_links=0
else
default_for_follow_links=1
fi], [default_for_follow_links=1])
AC_DEFINE_UNQUOTED(DEFAULT_FOR_FOLLOW_LINKS, $default_for_follow_links,
[Have readelf and objdump follow debug links by default])
AC_DEBUGINFOD AC_DEBUGINFOD
GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections])

View file

@ -2187,8 +2187,10 @@ objdump [@option{-a}|@option{--archive-headers}]
[@option{-r}|@option{--reloc}] [@option{-r}|@option{--reloc}]
[@option{-R}|@option{--dynamic-reloc}] [@option{-R}|@option{--dynamic-reloc}]
[@option{-s}|@option{--full-contents}] [@option{-s}|@option{--full-contents}]
[@option{-W[lLiaprmfFsoORtUuTgAckK]}| [@option{-W[lLiaprmfFsoORtUuTgAck]}|
@option{--dwarf}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]] @option{--dwarf}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
[@option{-WK}|@option{--dwarf=follow-links}]
[@option{-WN}|@option{--dwarf=no-follow-links}]
[@option{--ctf=}@var{section}] [@option{--ctf=}@var{section}]
[@option{-G}|@option{--stabs}] [@option{-G}|@option{--stabs}]
[@option{-t}|@option{--syms}] [@option{-t}|@option{--syms}]
@ -2325,7 +2327,7 @@ will stop at the end of the function, otherwise it will stop when the
next symbol is encountered. If there are no matches for @var{symbol} next symbol is encountered. If there are no matches for @var{symbol}
then nothing will be displayed. then nothing will be displayed.
Note if the @option{--dwarf=follow-links} option has also been enabled Note if the @option{--dwarf=follow-links} option is enabled
then any symbol tables in linked debug info files will be read in and then any symbol tables in linked debug info files will be read in and
used when disassembling. used when disassembling.
@ -2347,7 +2349,7 @@ If the target is an ARM architecture this switch also has the effect
of forcing the disassembler to decode pieces of data found in code of forcing the disassembler to decode pieces of data found in code
sections as if they were instructions. sections as if they were instructions.
Note if the @option{--dwarf=follow-links} option has also been enabled Note if the @option{--dwarf=follow-links} option is enabled
then any symbol tables in linked debug info files will be read in and then any symbol tables in linked debug info files will be read in and
used when disassembling. used when disassembling.
@ -4753,8 +4755,10 @@ readelf [@option{-a}|@option{--all}]
[@option{-R} <number or name>|@option{--relocated-dump=}<number or name>] [@option{-R} <number or name>|@option{--relocated-dump=}<number or name>]
[@option{-z}|@option{--decompress}] [@option{-z}|@option{--decompress}]
[@option{-c}|@option{--archive-index}] [@option{-c}|@option{--archive-index}]
[@option{-w[lLiaprmfFsoORtUuTgAckK]}| [@option{-w[lLiaprmfFsoORtUuTgAck]}|
@option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links]] @option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]]
[@option{-wK}|@option{--debug-dump=follow-links}]
[@option{-wN}|@option{--debug-dump=no-follow-links}]
[@option{--dwarf-depth=@var{n}}] [@option{--dwarf-depth=@var{n}}]
[@option{--dwarf-start=@var{n}}] [@option{--dwarf-start=@var{n}}]
[@option{--ctf=}@var{section}] [@option{--ctf=}@var{section}]

View file

@ -61,6 +61,17 @@ In addition, when displaying DWARF attributes, if a form is found that
references the separate debug info file, then the referenced contents references the separate debug info file, then the referenced contents
will also be displayed. will also be displayed.
Note - in some distributions this option is enabled by default. It
can be disabled via the @option{N} debug option. The default can be
chosen when configuring the binutils via the
@option{--enable-follow-debug-links=yes} or
@option{--enable-follow-debug-links=no} options. If these are not
used then the default is to enable the following of debug links.
@item N
@itemx =no-follow-links
Disables the following of links to separate debug info files.
@item l @item l
@itemx =rawline @itemx =rawline
Displays the contents of the @samp{.debug_line} section in a raw Displays the contents of the @samp{.debug_line} section in a raw

View file

@ -99,7 +99,7 @@ int do_debug_addr;
int do_debug_cu_index; int do_debug_cu_index;
int do_wide; int do_wide;
int do_debug_links; int do_debug_links;
int do_follow_links; int do_follow_links = DEFAULT_FOR_FOLLOW_LINKS;
bfd_boolean do_checks; bfd_boolean do_checks;
int dwarf_cutoff_level = -1; int dwarf_cutoff_level = -1;
@ -11373,6 +11373,7 @@ dwarf_select_sections_by_names (const char *names)
{ "links", & do_debug_links, 1 }, { "links", & do_debug_links, 1 },
{ "loc", & do_debug_loc, 1 }, { "loc", & do_debug_loc, 1 },
{ "macro", & do_debug_macinfo, 1 }, { "macro", & do_debug_macinfo, 1 },
{ "no-follow-links", & do_follow_links, 0 },
{ "pubnames", & do_debug_pubnames, 1 }, { "pubnames", & do_debug_pubnames, 1 },
{ "pubtypes", & do_debug_pubtypes, 1 }, { "pubtypes", & do_debug_pubtypes, 1 },
/* This entry is for compatibility /* This entry is for compatibility
@ -11402,7 +11403,7 @@ dwarf_select_sections_by_names (const char *names)
if (strncmp (p, entry->option, len) == 0 if (strncmp (p, entry->option, len) == 0
&& (p[len] == ',' || p[len] == '\0')) && (p[len] == ',' || p[len] == '\0'))
{ {
* entry->variable |= entry->val; * entry->variable = entry->val;
/* The --debug-dump=frames-interp option also /* The --debug-dump=frames-interp option also
enables the --debug-dump=frames option. */ enables the --debug-dump=frames option. */
@ -11443,6 +11444,7 @@ dwarf_select_sections_by_letters (const char *letters)
case 'g': do_gdb_index = 1; break; case 'g': do_gdb_index = 1; break;
case 'i': do_debug_info = 1; break; case 'i': do_debug_info = 1; break;
case 'K': do_follow_links = 1; break; case 'K': do_follow_links = 1; break;
case 'N': do_follow_links = 0; break;
case 'k': do_debug_links = 1; break; case 'k': do_debug_links = 1; break;
case 'l': do_debug_lines |= FLAG_DEBUG_LINES_RAW; break; case 'l': do_debug_lines |= FLAG_DEBUG_LINES_RAW; break;
case 'L': do_debug_lines |= FLAG_DEBUG_LINES_DECODED; break; case 'L': do_debug_lines |= FLAG_DEBUG_LINES_DECODED; break;

View file

@ -229,13 +229,24 @@ usage (FILE *stream, int status)
-g, --debugging Display debug information in object file\n\ -g, --debugging Display debug information in object file\n\
-e, --debugging-tags Display debug information using ctags style\n\ -e, --debugging-tags Display debug information using ctags style\n\
-G, --stabs Display (in raw form) any STABS info in the file\n\ -G, --stabs Display (in raw form) any STABS info in the file\n\
-W[lLiaprmfFsoORtUuTgAckK] or\n\ -W[lLiaprmfFsoORtUuTgAck] or\n\
--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\ --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\
=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,\n\ =frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,\n\
=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\ =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\
=addr,=cu_index,=links,=follow-links]\n\ =addr,=cu_index,=links]\n\
Display DWARF info in the file\n\ Display DWARF info in the file\n\
")); "));
#if DEFAULT_FOR_FOLLOW_LINKS
fprintf (stream, _("\
-WK,--dwarf=follow-links Follow links to separate debug info files (default)\n\
-WN,--dwarf=no-follow-links Do not follow links to separate debug info files\n\
"));
#else
fprintf (stream, _("\
-WK,--dwarf=follow-links Follow links to separate debug info files\n\
-WN,--dwarf=no-follow-links Do not follow links to separate debug info files (default)\n\
"));
#endif
#ifdef ENABLE_LIBCTF #ifdef ENABLE_LIBCTF
fprintf (stream, _("\ fprintf (stream, _("\
--ctf=SECTION Display CTF info from SECTION\n\ --ctf=SECTION Display CTF info from SECTION\n\
@ -737,8 +748,9 @@ slurp_symtab (bfd *abfd)
non_fatal (_("failed to read symbol table from: %s"), bfd_get_filename (abfd)); non_fatal (_("failed to read symbol table from: %s"), bfd_get_filename (abfd));
bfd_fatal (_("error message was")); bfd_fatal (_("error message was"));
} }
if (storage) /* Add an extra entry (at the end) with a NULL pointer. */
{ storage += sizeof (asymbol *);
off_t filesize = bfd_get_file_size (abfd); off_t filesize = bfd_get_file_size (abfd);
/* qv PR 24707. */ /* qv PR 24707. */
@ -757,11 +769,11 @@ slurp_symtab (bfd *abfd)
} }
sy = (asymbol **) xmalloc (storage); sy = (asymbol **) xmalloc (storage);
}
symcount = bfd_canonicalize_symtab (abfd, sy); symcount = bfd_canonicalize_symtab (abfd, sy);
if (symcount < 0) if (symcount < 0)
bfd_fatal (bfd_get_filename (abfd)); bfd_fatal (bfd_get_filename (abfd));
/* assert (symcount < (storage / sizeof (asymbol *))) */
sy[symcount] = NULL;
return sy; return sy;
} }
@ -774,6 +786,7 @@ slurp_dynamic_symtab (bfd *abfd)
long storage; long storage;
storage = bfd_get_dynamic_symtab_upper_bound (abfd); storage = bfd_get_dynamic_symtab_upper_bound (abfd);
/* Add an extra entry (at the end) with a NULL pointer. */
if (storage < 0) if (storage < 0)
{ {
if (!(bfd_get_file_flags (abfd) & DYNAMIC)) if (!(bfd_get_file_flags (abfd) & DYNAMIC))
@ -786,12 +799,15 @@ slurp_dynamic_symtab (bfd *abfd)
bfd_fatal (bfd_get_filename (abfd)); bfd_fatal (bfd_get_filename (abfd));
} }
if (storage)
storage += sizeof (asymbol *);
sy = (asymbol **) xmalloc (storage); sy = (asymbol **) xmalloc (storage);
dynsymcount = bfd_canonicalize_dynamic_symtab (abfd, sy); dynsymcount = bfd_canonicalize_dynamic_symtab (abfd, sy);
if (dynsymcount < 0) if (dynsymcount < 0)
bfd_fatal (bfd_get_filename (abfd)); bfd_fatal (bfd_get_filename (abfd));
/* assert (symcount < (storage / sizeof (asymbol *))) */
sy[dynsymcount] = NULL;
return sy; return sy;
} }
@ -4899,10 +4915,12 @@ dump_bfd (bfd *abfd, bfd_boolean is_mainfile)
} }
else else
{ {
syms = xrealloc (syms, (symcount + old_symcount) * sizeof (asymbol *)); syms = xrealloc (syms, (symcount + old_symcount + 1) * sizeof (asymbol *));
memcpy (syms + old_symcount, memcpy (syms + old_symcount,
extra_syms, extra_syms,
symcount * sizeof (asymbol *)); symcount * sizeof (asymbol *));
/* Preserve the NULL entry at the end of the symbol table. */
syms[symcount + old_symcount] = NULL;
} }
} }

View file

@ -4624,12 +4624,23 @@ usage (FILE * stream)
-R --relocated-dump=<number|name>\n\ -R --relocated-dump=<number|name>\n\
Dump the contents of section <number|name> as relocated bytes\n\ Dump the contents of section <number|name> as relocated bytes\n\
-z --decompress Decompress section before dumping it\n\ -z --decompress Decompress section before dumping it\n\
-w[lLiaprmfFsoORtUuTgAckK] or\n\ -w[lLiaprmfFsoORtUuTgAck] or\n\
--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\ --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\
=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,\n\ =frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,\n\
=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\ =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\
=addr,=cu_index,=links,=follow-links]\n\ =addr,=cu_index,=links]\n\
Display the contents of DWARF debug sections\n")); Display the contents of DWARF debug sections\n"));
#if DEFAULT_FOR_FOLLOW_LINKS
fprintf (stream, _("\
-wK,--debug-dump=follow-links Follow links to separate debug info files (default)\n\
-wN,--debug-dump=no-follow-links Do not follow links to separate debug info files\n\
"));
#else
fprintf (stream, _("\
-wK,--debug-dump=follow-links Follow links to separate debug info files\n\
-wN,--debug-dump=no-follow-links Do not follow links to separate debug info files (default)\n\
"));
#endif
fprintf (stream, _("\ fprintf (stream, _("\
--dwarf-depth=N Do not display DIEs at depth N or greater\n\ --dwarf-depth=N Do not display DIEs at depth N or greater\n\
--dwarf-start=N Display DIEs starting with N, at the same depth\n\ --dwarf-start=N Display DIEs starting with N, at the same depth\n\

View file

@ -717,7 +717,7 @@ proc test_gnu_debuglink {} {
fail "$test (objcopy link decompress)" fail "$test (objcopy link decompress)"
return return
} }
set got [remote_exec host "$OBJDUMP -S tmpdir/testprog" "" "/dev/null" "tmpdir/testprog.decompress.dump"] set got [remote_exec host "$OBJDUMP -S -WN tmpdir/testprog" "" "/dev/null" "tmpdir/testprog.decompress.dump"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
fail "$test (objcopy dump decompress)" fail "$test (objcopy dump decompress)"
return return
@ -726,7 +726,7 @@ proc test_gnu_debuglink {} {
fail "$test (objcopy link compress)" fail "$test (objcopy link compress)"
return return
} }
set got [remote_exec host "$OBJDUMP -S tmpdir/testprog" "" "/dev/null" "tmpdir/testprog.compress.dump"] set got [remote_exec host "$OBJDUMP -S -WN tmpdir/testprog" "" "/dev/null" "tmpdir/testprog.compress.dump"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
fail "$test (objcopy dump compress)" fail "$test (objcopy dump compress)"
return return

View file

@ -606,7 +606,7 @@ if { [is_elf_format] } then {
set testfile tmpdir/debuglink.${obj} set testfile tmpdir/debuglink.${obj}
} }
set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Wk $testfile" "" "/dev/null" "objdump.out"] set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Wk -WN $testfile" "" "/dev/null" "objdump.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
fail "objdump -Wk (reason: unexpected output)" fail "objdump -Wk (reason: unexpected output)"
@ -615,7 +615,7 @@ if { [is_elf_format] } then {
} }
if { [regexp_diff objdump.out $srcdir/$subdir/objdump.Wk] } then { if { [regexp_diff objdump.out $srcdir/$subdir/objdump.Wk] } then {
fail "objdump -Wk" fail "objdump -Wk (reason: output does not match expectations)"
} else { } else {
pass "objdump -Wk" pass "objdump -Wk"
} }

View file

@ -507,7 +507,7 @@ if {![binutils_assemble $srcdir/$subdir/debuglink.s tmpdir/debuglink.o]} then {
set tempfile [remote_download host tmpdir/debuglink.o] set tempfile [remote_download host tmpdir/debuglink.o]
} }
readelf_test {--debug-dump=links} $tempfile readelf.k {} readelf_test {--debug-dump=links -wN} $tempfile readelf.k {}
# Check that debug link sections can be followed. # Check that debug link sections can be followed.
if {![binutils_assemble $srcdir/$subdir/linkdebug.s tmpdir/linkdebug.debug]} then { if {![binutils_assemble $srcdir/$subdir/linkdebug.s tmpdir/linkdebug.debug]} then {
@ -530,7 +530,7 @@ if {![binutils_assemble $srcdir/$subdir/dwo.s tmpdir/dwo.o]} then {
set tempfile [remote_download host tmpdir/dwo.o] set tempfile [remote_download host tmpdir/dwo.o]
} }
readelf_test {--debug-dump=links} $tempfile readelf.k2 {} readelf_test {--debug-dump=links --debug-dump=no-follow-links} $tempfile readelf.k2 {}
} }
if {![binutils_assemble $srcdir/$subdir/zero-sec.s tmpdir/zero-sec.o]} then { if {![binutils_assemble $srcdir/$subdir/zero-sec.s tmpdir/zero-sec.o]} then {
@ -555,6 +555,6 @@ if ![is_remote host] {
if {[catch "system \"bzip2 -dc $test > $tempfile\""] != 0} { if {[catch "system \"bzip2 -dc $test > $tempfile\""] != 0} {
untested "bzip2 -dc ($testname)" untested "bzip2 -dc ($testname)"
} else { } else {
readelf_test {--debug-dump=macro} $tempfile pr26112.r {} readelf_test {--debug-dump=macro -wN} $tempfile pr26112.r {}
} }
} }

View file

@ -1,3 +1,9 @@
2021-02-12 Nick Clifton <nickc@redhat.com>
* testsuite/gas/mach-o/sections-1.d: Stop automatic debug link
following.
* testsuite/gas/xgate/insns-dwarf2.d: Likewise.
2021-02-12 Alan Modra <amodra@gmail.com> 2021-02-12 Alan Modra <amodra@gmail.com>
* testsuite/gas/all/pr27381.err: Don't match source file name. * testsuite/gas/all/pr27381.err: Don't match source file name.

View file

@ -1,4 +1,4 @@
#objdump: -P section #objdump: -P section -WN
.*: +file format mach-o.* .*: +file format mach-o.*
#... #...
Section: __text __TEXT \(bfdname: .text\) Section: __text __TEXT \(bfdname: .text\)

View file

@ -1,4 +1,4 @@
#objdump: -S #objdump: -S -WN
#as: -gdwarf2 #as: -gdwarf2
#name: Dwarf2 test on insns.s #name: Dwarf2 test on insns.s
#source: insns.s #source: insns.s

View file

@ -1,3 +1,8 @@
2021-02-12 Nick Clifton <nickc@redhat.com>
* testsuite/ld-elf/sec64k.exp: Stop readelf from automatically
following debug links.
2021-02-11 Alan Modra <amodra@gmail.com> 2021-02-11 Alan Modra <amodra@gmail.com>
* NEWS: Mention arm-symbianelf removal. * NEWS: Mention arm-symbianelf removal.

View file

@ -135,7 +135,7 @@ if { ![istarget "m32r-*-*"] } then {
puts $ofd "#as: -ez80-adl" puts $ofd "#as: -ez80-adl"
} }
puts $ofd "#ld: -r" puts $ofd "#ld: -r"
puts $ofd "#readelf: -W -Ss" puts $ofd "#readelf: -W -wN -Ss"
puts $ofd "There are 680.. section headers.*:" puts $ofd "There are 680.. section headers.*:"
puts $ofd "#..." puts $ofd "#..."
puts $ofd " \\\[ 0\\\] .* 680\[0-9\]\[0-9\]\[ \]+0\[ \]+0" puts $ofd " \\\[ 0\\\] .* 680\[0-9\]\[0-9\]\[ \]+0\[ \]+0"
@ -190,7 +190,7 @@ if { ![istarget "d10v-*-*"]
if { [istarget "z80-*-*"] } then { if { [istarget "z80-*-*"] } then {
puts $ofd "#as: -ez80-adl" puts $ofd "#as: -ez80-adl"
} }
puts $ofd "#readelf: -W -Ss" puts $ofd "#readelf: -W -wN -Ss"
puts $ofd "There are 660.. section headers.*:" puts $ofd "There are 660.. section headers.*:"
puts $ofd "#..." puts $ofd "#..."
puts $ofd " \\\[ 0\\\] .* 660..\[ \]+0\[ \]+0" puts $ofd " \\\[ 0\\\] .* 660..\[ \]+0\[ \]+0"