| Index: bfd/elf32-hppa.c
|
| diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
|
| index dcf6df089124e485ca7c868e51e6ae8c9774803e..dc3053ce0700410912d6b97e9c1d5a87ddf9df21 100644
|
| --- a/bfd/elf32-hppa.c
|
| +++ b/bfd/elf32-hppa.c
|
| @@ -1,6 +1,6 @@
|
| /* BFD back-end for HP PA-RISC ELF files.
|
| Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001,
|
| - 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
| + 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
| Free Software Foundation, Inc.
|
|
|
| Original code by
|
| @@ -1005,14 +1005,14 @@ elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
|
| if (! _bfd_elf_create_dynamic_sections (abfd, info))
|
| return FALSE;
|
|
|
| - htab->splt = bfd_get_section_by_name (abfd, ".plt");
|
| - htab->srelplt = bfd_get_section_by_name (abfd, ".rela.plt");
|
| + htab->splt = bfd_get_linker_section (abfd, ".plt");
|
| + htab->srelplt = bfd_get_linker_section (abfd, ".rela.plt");
|
|
|
| - htab->sgot = bfd_get_section_by_name (abfd, ".got");
|
| - htab->srelgot = bfd_get_section_by_name (abfd, ".rela.got");
|
| + htab->sgot = bfd_get_linker_section (abfd, ".got");
|
| + htab->srelgot = bfd_get_linker_section (abfd, ".rela.got");
|
|
|
| - htab->sdynbss = bfd_get_section_by_name (abfd, ".dynbss");
|
| - htab->srelbss = bfd_get_section_by_name (abfd, ".rela.bss");
|
| + htab->sdynbss = bfd_get_linker_section (abfd, ".dynbss");
|
| + htab->srelbss = bfd_get_linker_section (abfd, ".rela.bss");
|
|
|
| /* hppa-linux needs _GLOBAL_OFFSET_TABLE_ to be visible from the main
|
| application, because __canonicalize_funcptr_for_compare needs it. */
|
| @@ -1898,13 +1898,6 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
|
| }
|
| }
|
|
|
| - if (eh->size == 0)
|
| - {
|
| - (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"),
|
| - eh->root.root.string);
|
| - return TRUE;
|
| - }
|
| -
|
| /* We must allocate the symbol in our .dynbss section, which will
|
| become part of the .bss section of the executable. There will be
|
| an entry for this symbol in the .dynsym section. The dynamic
|
| @@ -1922,7 +1915,7 @@ elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
|
| /* We must generate a COPY reloc to tell the dynamic linker to
|
| copy the initial value out of the dynamic object and into the
|
| runtime process image. */
|
| - if ((eh->root.u.def.section->flags & SEC_ALLOC) != 0)
|
| + if ((eh->root.u.def.section->flags & SEC_ALLOC) != 0 && eh->size != 0)
|
| {
|
| htab->srelbss->size += sizeof (Elf32_External_Rela);
|
| eh->needs_copy = 1;
|
| @@ -2232,7 +2225,7 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
| /* Set the contents of the .interp section to the interpreter. */
|
| if (info->executable)
|
| {
|
| - sec = bfd_get_section_by_name (dynobj, ".interp");
|
| + sec = bfd_get_linker_section (dynobj, ".interp");
|
| if (sec == NULL)
|
| abort ();
|
| sec->size = sizeof ELF_DYNAMIC_INTERPRETER;
|
| @@ -3741,10 +3734,10 @@ elf32_hppa_relocate_section (bfd *output_bfd,
|
| hh = hppa_elf_hash_entry (eh);
|
| }
|
|
|
| - if (sym_sec != NULL && elf_discarded_section (sym_sec))
|
| + if (sym_sec != NULL && discarded_section (sym_sec))
|
| RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
|
| - rela, relend,
|
| - elf_hppa_howto_table + r_type,
|
| + rela, 1, relend,
|
| + elf_hppa_howto_table + r_type, 0,
|
| contents);
|
|
|
| if (info->relocatable)
|
| @@ -4513,7 +4506,7 @@ elf32_hppa_finish_dynamic_sections (bfd *output_bfd,
|
| if (sgot != NULL && bfd_is_abs_section (sgot->output_section))
|
| return FALSE;
|
|
|
| - sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
|
| + sdyn = bfd_get_linker_section (dynobj, ".dynamic");
|
|
|
| if (htab->etab.dynamic_sections_created)
|
| {
|
|
|