X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Femultempl%2Fpep.em;h=a0a7023e7067ae0c358130d843266cc613958de4;hb=a435742a7fb32f6320ce0e6074e2500e28378104;hp=699b86501c55a325d8348420dd34817f41364341;hpb=607b483327fdfc75fb193870b3c4e7445ce3f64d;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 699b86501c..a0a7023e70 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -831,11 +831,8 @@ gld${EMULATION_NAME}_handle_option (int optc) pe_dll_characteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE; break; case OPTION_BUILD_ID: - if (emit_build_id != NULL) - { - free ((char *) emit_build_id); - emit_build_id = NULL; - } + free ((char *) emit_build_id); + emit_build_id = NULL; if (optarg == NULL) optarg = DEFAULT_BUILD_ID_STYLE; if (strcmp (optarg, "none")) @@ -1491,7 +1488,6 @@ gld_${EMULATION_NAME}_after_open (void) struct bfd_symbol *s; struct bfd_link_hash_entry * blhe; const char *other_bfd_filename; - char *n; s = (relocs[i]->sym_ptr_ptr)[0]; @@ -1518,9 +1514,9 @@ gld_${EMULATION_NAME}_after_open (void) continue; /* Rename this implib to match the other one. */ - n = xmalloc (strlen (other_bfd_filename) + 1); - strcpy (n, other_bfd_filename); - bfd_set_filename (is->the_bfd->my_archive, n); + if (!bfd_set_filename (is->the_bfd->my_archive, + other_bfd_filename)) + einfo ("%F%P: %pB: %E\n", is->the_bfd); } free (relocs); @@ -1623,28 +1619,14 @@ gld_${EMULATION_NAME}_after_open (void) else /* sentinel */ seq = 'c'; - /* PR 25993: It is possible that is->the_bfd-filename == is->filename. - In which case calling bfd_set_filename on one will free the memory - pointed to by the other. */ - if (is->filename == bfd_get_filename (is->the_bfd)) - { - new_name = xmalloc (strlen (is->filename) + 3); - sprintf (new_name, "%s.%c", is->filename, seq); - bfd_set_filename (is->the_bfd, new_name); - is->filename = new_name; - } - else - { - new_name - = xmalloc (strlen (bfd_get_filename (is->the_bfd)) + 3); - sprintf (new_name, "%s.%c", - bfd_get_filename (is->the_bfd), seq); - bfd_set_filename (is->the_bfd, new_name); - - new_name = xmalloc (strlen (is->filename) + 3); - sprintf (new_name, "%s.%c", is->filename, seq); - is->filename = new_name; - } + new_name + = xmalloc (strlen (bfd_get_filename (is->the_bfd)) + 3); + sprintf (new_name, "%s.%c", + bfd_get_filename (is->the_bfd), seq); + is->filename = bfd_set_filename (is->the_bfd, new_name); + free (new_name); + if (!is->filename) + einfo ("%F%P: %pB: %E\n", is->the_bfd); } } }