X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Felf-vxworks.c;h=0984cc83e6dc2f7aa9490024b30490a45429e006;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=56fdec0e83fd49ad918e70c98478123729936204;hpb=0e1862bb401f47716446aef143b2bf7a4563f541;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf-vxworks.c b/bfd/elf-vxworks.c index 56fdec0e83..0984cc83e6 100644 --- a/bfd/elf-vxworks.c +++ b/bfd/elf-vxworks.c @@ -1,5 +1,5 @@ /* VxWorks support for ELF - Copyright (C) 2005-2015 Free Software Foundation, Inc. + Copyright (C) 2005-2020 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -14,9 +14,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. */ + along with this program. If not, see . */ /* This file provides routines used by all VxWorks targets. */ @@ -99,7 +97,7 @@ elf_vxworks_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info, | SEC_READONLY | SEC_LINKER_CREATED); if (s == NULL - || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align)) + || !bfd_set_section_alignment (s, bed->s->log_file_align)) return FALSE; *srelplt2_out = s; @@ -182,15 +180,15 @@ elf_vxworks_emit_relocs (bfd *output_bfd, && (*hash_ptr)->root.u.def.section->output_section != NULL) { /* This is a relocation from an executable or shared - library against a symbol in a different shared - library. We are creating a definition in the output - file but it does not come from any of our normal (.o) - files. ie. a PLT stub. Normally this would be a - relocation against against SHN_UNDEF with the VMA of - the PLT stub. This upsets the VxWorks loader. - Convert it to a section-relative relocation. This - gets some other symbols (for instance .dynbss), but - is conservatively correct. */ + library against a symbol in a different shared + library. We are creating a definition in the output + file but it does not come from any of our normal (.o) + files. ie. a PLT stub. Normally this would be a + relocation against against SHN_UNDEF with the VMA of + the PLT stub. This upsets the VxWorks loader. + Convert it to a section-relative relocation. This + gets some other symbols (for instance .dynbss), but + is conservatively correct. */ for (j = 0; j < bed->s->int_rels_per_ext_rel; j++) { asection *sec = (*hash_ptr)->root.u.def.section; @@ -214,9 +212,8 @@ elf_vxworks_emit_relocs (bfd *output_bfd, /* Set the sh_link and sh_info fields on the static plt relocation secton. */ -void -elf_vxworks_final_write_processing (bfd *abfd, - bfd_boolean linker ATTRIBUTE_UNUSED) +bfd_boolean +elf_vxworks_final_write_processing (bfd *abfd) { asection * sec; struct bfd_elf_section_data *d; @@ -224,13 +221,15 @@ elf_vxworks_final_write_processing (bfd *abfd, sec = bfd_get_section_by_name (abfd, ".rel.plt.unloaded"); if (!sec) sec = bfd_get_section_by_name (abfd, ".rela.plt.unloaded"); - if (!sec) - return; - d = elf_section_data (sec); - d->this_hdr.sh_link = elf_onesymtab (abfd); - sec = bfd_get_section_by_name (abfd, ".plt"); if (sec) - d->this_hdr.sh_info = elf_section_data (sec)->this_idx; + { + d = elf_section_data (sec); + d->this_hdr.sh_link = elf_onesymtab (abfd); + sec = bfd_get_section_by_name (abfd, ".plt"); + if (sec) + d->this_hdr.sh_info = elf_section_data (sec)->this_idx; + } + return _bfd_elf_final_write_processing (abfd); } /* Add the dynamic entries required by VxWorks. These point to the @@ -280,9 +279,7 @@ elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn) case DT_VX_WRS_TLS_DATA_ALIGN: sec = bfd_get_section_by_name (output_bfd, ".tls_data"); - dyn->d_un.d_val - = (bfd_size_type)1 << bfd_get_section_alignment (output_bfd, - sec); + dyn->d_un.d_val = (bfd_size_type) 1 << bfd_section_alignment (sec); break; case DT_VX_WRS_TLS_VARS_START: