X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fvms-alpha.c;h=d8b30823a2b7c247057f0fef6dc130f90067336d;hb=bd756351a6d3dcff9915c88c26dc0a5811907f90;hp=11817cfbec1f5c80deaf1cf1d1d82c3bea72d0ef;hpb=34a87bb07a4a3b2202fc25167a6b0f12575edc87;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c index 11817cfbec..d8b30823a2 100644 --- a/bfd/vms-alpha.c +++ b/bfd/vms-alpha.c @@ -1,5 +1,5 @@ /* vms.c -- BFD back-end for EVAX (openVMS/Alpha) files. - Copyright (C) 1996-2018 Free Software Foundation, Inc. + Copyright (C) 1996-2019 Free Software Foundation, Inc. Initial version written by Klaus Kaempf (kkaempf@rmi.de) Major rewrite by Adacore. @@ -4001,6 +4001,7 @@ _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED) break; case ALPHA_R_LINKAGE: + size = 16; etir_output_check (abfd, section, curr_addr, 64); _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_LP_PSB); _bfd_vms_output_long @@ -5157,6 +5158,7 @@ alpha_vms_slurp_relocs (bfd *abfd) asection *sec; struct vms_section_data_struct *vms_sec; arelent *reloc; + bfd_size_type size; /* Get section to which the relocation applies. */ if (cur_psect < 0 || cur_psect > (int)PRIV (section_count)) @@ -5237,7 +5239,11 @@ alpha_vms_slurp_relocs (bfd *abfd) reloc->address = cur_address; reloc->addend = cur_addend; - vaddr += bfd_get_reloc_size (reloc->howto); + if (reloc_code == ALPHA_R_LINKAGE) + size = 16; + else + size = bfd_get_reloc_size (reloc->howto); + vaddr += size; } cur_addend = 0; @@ -5496,8 +5502,8 @@ static reloc_howto_type alpha_howto_table[] = /* Hack. Linkage is done by linker. */ HOWTO (ALPHA_R_LINKAGE, /* Type. */ 0, /* Rightshift. */ - 8, /* Size (0 = byte, 1 = short, 2 = long). */ - 256, /* Bitsize. */ + 0, /* Size (0 = byte, 1 = short, 2 = long). */ + 0, /* Bitsize. */ FALSE, /* PC relative. */ 0, /* Bitpos. */ complain_overflow_dont,/* Complain_on_overflow. */ @@ -5601,7 +5607,7 @@ static reloc_howto_type alpha_howto_table[] = /* Return a pointer to a howto structure which, when invoked, will perform the relocation code on data from the architecture noted. */ -static const struct reloc_howto_struct * +static reloc_howto_type * alpha_vms_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, bfd_reloc_code_real_type code) {