X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Femultempl%2Fpep.em;h=a0a7023e7067ae0c358130d843266cc613958de4;hb=a435742a7fb32f6320ce0e6074e2500e28378104;hp=39ddd8f23ec1208882c40606c19ec5e540734d67;hpb=3edf7b9f2c79be0bffcc05d7a8b4364924255282;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 39ddd8f23e..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")) @@ -1327,7 +1324,7 @@ gld_${EMULATION_NAME}_after_open (void) bfd_hash_traverse (&link_info.hash->table, pr_sym, NULL); for (a = link_info.input_bfds; a; a = a->link.next) - printf ("*%s\n",a->filename); + printf ("*%s\n", bfd_get_filename (a)); } #endif @@ -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); @@ -1567,7 +1563,7 @@ gld_${EMULATION_NAME}_after_open (void) members, so look for the first element with a .dll extension, and use that for the remainder of the comparisons. */ - pnt = strrchr (is3->the_bfd->filename, '.'); + pnt = strrchr (bfd_get_filename (is3->the_bfd), '.'); if (pnt != NULL && filename_cmp (pnt, ".dll") == 0) break; } @@ -1584,12 +1580,12 @@ gld_${EMULATION_NAME}_after_open (void) { /* Skip static members, ie anything with a .obj extension. */ - pnt = strrchr (is2->the_bfd->filename, '.'); + pnt = strrchr (bfd_get_filename (is2->the_bfd), '.'); if (pnt != NULL && filename_cmp (pnt, ".obj") == 0) continue; - if (filename_cmp (is3->the_bfd->filename, - is2->the_bfd->filename)) + if (filename_cmp (bfd_get_filename (is3->the_bfd), + bfd_get_filename (is2->the_bfd))) { is_ms_arch = 0; break; @@ -1601,7 +1597,7 @@ gld_${EMULATION_NAME}_after_open (void) /* This fragment might have come from an .obj file in a Microsoft import, and not an actual import record. If this is the case, then leave the filename alone. */ - pnt = strrchr (is->the_bfd->filename, '.'); + pnt = strrchr (bfd_get_filename (is->the_bfd), '.'); if (is_ms_arch && (filename_cmp (pnt, ".dll") == 0)) { @@ -1623,26 +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 == is->the_bfd->filename) - { - 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 (is->the_bfd->filename) + 3); - sprintf (new_name, "%s.%c", is->the_bfd->filename, 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); } } }