X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fldmisc.c;h=418e8d5c6eda8a3a570b90e39ce60eacd94939d4;hb=f809832224cc45eb58812f6d4bb03cbf52fad980;hp=319f247e3bec7c42cb02d784138fa8c52c5d9783;hpb=cb7f4b298e5e0a3ab4fb6b13aa89e970478597bc;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 319f247e3b..418e8d5c6e 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -1,5 +1,5 @@ /* ldmisc.c - Copyright (C) 1991-2019 Free Software Foundation, Inc. + Copyright (C) 1991-2020 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. This file is part of the GNU Binutils. @@ -23,6 +23,7 @@ #include "bfd.h" #include "bfdlink.h" #include "libiberty.h" +#include "ctf-api.h" #include "safe-ctype.h" #include "filenames.h" #include "demangle.h" @@ -321,6 +322,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning) unsigned int linenumber; bfd_boolean discard_last; bfd_boolean done; + bfd_error_type last_bfd_error = bfd_get_error (); abfd = args[arg_no].reladdr.abfd; section = args[arg_no].reladdr.sec; @@ -373,13 +375,11 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning) abfd, functionname); last_bfd = abfd; - if (last_file != NULL) - free (last_file); + free (last_file); last_file = NULL; if (filename) last_file = xstrdup (filename); - if (last_function != NULL) - free (last_function); + free (last_function); last_function = xstrdup (functionname); } discard_last = FALSE; @@ -405,20 +405,15 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning) } if (!done) lfinfo (fp, "(%pA+0x%v)", section, offset); + bfd_set_error (last_bfd_error); if (discard_last) { last_bfd = NULL; - if (last_file != NULL) - { - free (last_file); - last_file = NULL; - } - if (last_function != NULL) - { - free (last_function); - last_function = NULL; - } + free (last_file); + last_file = NULL; + free (last_function); + last_function = NULL; } } break; @@ -453,10 +448,11 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning) fprintf (fp, "%s generated", program_name); else if (abfd->my_archive != NULL && !bfd_is_thin_archive (abfd->my_archive)) - fprintf (fp, "%s(%s)", abfd->my_archive->filename, - abfd->filename); + fprintf (fp, "%s(%s)", + bfd_get_filename (abfd->my_archive), + bfd_get_filename (abfd)); else - fprintf (fp, "%s", abfd->filename); + fprintf (fp, "%s", bfd_get_filename (abfd)); } else if (*fmt == 'I') { @@ -469,7 +465,8 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bfd_boolean is_warning) if (i->the_bfd != NULL && i->the_bfd->my_archive != NULL && !bfd_is_thin_archive (i->the_bfd->my_archive)) - fprintf (fp, "(%s)%s", i->the_bfd->my_archive->filename, + fprintf (fp, "(%s)%s", + bfd_get_filename (i->the_bfd->my_archive), i->local_sym_name); else fprintf (fp, "%s", i->filename);