From fd574c4615e74de554c78fd2c42f368f0cbc7905 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 1 Dec 2003 06:28:56 +0000 Subject: [PATCH] * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Test hash table type rather than testing creator flavour. * emultempl/hppaelf.em (hppaelf_create_output_section_statements): Only create stub_file bfd if hash table creator is as expected. (gld${EMULATION_NAME}_finish): Test stub_file. --- ld/ChangeLog | 8 ++++++++ ld/emultempl/elf32.em | 2 +- ld/emultempl/hppaelf.em | 11 +++++++++-- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 97b220d..f8a9f89 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2003-12-01 Alan Modra + + * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Test + hash table type rather than testing creator flavour. + * emultempl/hppaelf.em (hppaelf_create_output_section_statements): + Only create stub_file bfd if hash table creator is as expected. + (gld${EMULATION_NAME}_finish): Test stub_file. + 2003-11-28 Marcel Moolenaar * emulparams/elf64_ia64_fbsd.sh (TEXT_START_ADDR): Define. diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index 6e1f815..c386be8 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -845,7 +845,7 @@ gld${EMULATION_NAME}_before_allocation (void) const char *rpath; asection *sinterp; - if (link_info.hash->creator->flavour == bfd_target_elf_flavour) + if (link_info.hash->type == bfd_link_elf_hash_table) _bfd_elf_tls_setup (output_bfd, &link_info); /* If we are going to make any variable assignments, we need to let diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em index 1ee43ac..e9445f2 100644 --- a/ld/emultempl/hppaelf.em +++ b/ld/emultempl/hppaelf.em @@ -66,6 +66,13 @@ hppaelf_after_parse (void) static void hppaelf_create_output_section_statements (void) { + extern const bfd_target bfd_elf32_hppa_linux_vec; + extern const bfd_target bfd_elf32_hppa_vec; + + if (link_info.hash->creator != &bfd_elf32_hppa_linux_vec + && link_info.hash->creator != &bfd_elf32_hppa_vec) + return; + stub_file = lang_add_input_file ("linker stubs", lang_input_file_is_fake_enum, NULL); @@ -256,7 +263,7 @@ gld${EMULATION_NAME}_finish (void) /* If generating a relocatable output file, then we don't have to examine the relocs. */ - if (! link_info.relocatable) + if (stub_file != NULL && !link_info.relocatable) { int ret = elf32_hppa_setup_section_lists (output_bfd, &link_info); @@ -298,7 +305,7 @@ gld${EMULATION_NAME}_finish (void) } /* Now build the linker stubs. */ - if (stub_file->the_bfd->sections != NULL) + if (stub_file != NULL && stub_file->the_bfd->sections != NULL) { if (! elf32_hppa_build_stubs (&link_info)) einfo ("%X%P: can not build stubs: %E\n"); -- 2.7.4