X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fldmisc.c;h=418e8d5c6eda8a3a570b90e39ce60eacd94939d4;hb=a78a19b15254de31c3d38b7e27469aaef0a30e97;hp=848e227b0523bc610e2f1bf237632af79614ea4c;hpb=1ff6de031241c59d0ff9fa01d3c0a4049b0e97c9;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 848e227b05..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. @@ -322,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; @@ -374,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; @@ -406,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; @@ -454,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') { @@ -470,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);