+ else if (bfd_is_abs_section (sym->section))
+ {
+ etir_output_check (abfd, section, curr_addr, 16);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STA_QW, -1);
+ _bfd_vms_output_quad (abfd, (uquad) sym->value);
+ _bfd_vms_output_flush (abfd);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STO_QW, -1);
+ _bfd_vms_output_flush (abfd);
+ }
+ else
+ {
+ etir_output_check (abfd, section, curr_addr, 32);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STA_PQ, -1);
+ _bfd_vms_output_long (abfd, (unsigned long) sec->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->addend
+ + (uquad) sym->value);
+ _bfd_vms_output_flush (abfd);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STO_OFF, -1);
+ _bfd_vms_output_flush (abfd);
+ }
+ break;
+
+ case ALPHA_R_HINT:
+ sto_imm (abfd, size, curr_data, curr_addr,
+ section->index, section->name);
+ break;
+
+ case ALPHA_R_LINKAGE:
+ etir_output_check (abfd, section, curr_addr, 64);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STC_LP_PSB, -1);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) PRIV (vms_linkage_index));
+ PRIV (vms_linkage_index) += 2;
+ hash = _bfd_vms_length_hash_symbol
+ (abfd, sym->name, EOBJ_S_C_SYMSIZ);
+ _bfd_vms_output_counted (abfd, hash);
+ _bfd_vms_output_byte (abfd, 0);
+ _bfd_vms_output_flush (abfd);
+ break;
+
+ case ALPHA_R_CODEADDR:
+ slen = strlen ((char *) sym->name);
+ hash = _bfd_vms_length_hash_symbol
+ (abfd, sym->name, EOBJ_S_C_SYMSIZ);
+ etir_output_check (abfd, section, curr_addr, slen);
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STO_CA, -1);
+ _bfd_vms_output_counted (abfd, hash);
+ _bfd_vms_output_flush (abfd);
+ break;
+
+ case ALPHA_R_NOP:
+ udata
+ = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
+ etir_output_check (abfd, section, curr_addr,
+ 32 + 1 + strlen (udata->origname));
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STC_NOP_GBL, -1);
+ _bfd_vms_output_long (abfd, (unsigned long) udata->lkindex);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->enbsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->address);
+ _bfd_vms_output_long (abfd, (unsigned long) 0x47ff041f);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->enbsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->addend);
+ _bfd_vms_output_counted
+ (abfd, _bfd_vms_length_hash_symbol
+ (abfd, udata->origname, EOBJ_S_C_SYMSIZ));
+ _bfd_vms_output_flush (abfd);
+ break;
+
+ case ALPHA_R_BSR:
+ (*_bfd_error_handler) (_("Spurious ALPHA_R_BSR reloc"));
+ break;
+
+ case ALPHA_R_LDA:
+ udata
+ = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
+ etir_output_check (abfd, section, curr_addr,
+ 32 + 1 + strlen (udata->origname));
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STC_LDA_GBL, -1);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->lkindex + 1);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->enbsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->address);
+ _bfd_vms_output_long (abfd, (unsigned long) 0x237B0000);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->bsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->addend);
+ _bfd_vms_output_counted
+ (abfd, _bfd_vms_length_hash_symbol
+ (abfd, udata->origname, EOBJ_S_C_SYMSIZ));
+ _bfd_vms_output_flush (abfd);
+ break;
+
+ case ALPHA_R_BOH:
+ udata
+ = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
+ etir_output_check (abfd, section, curr_addr,
+ 32 + 1 + strlen (udata->origname));
+ _bfd_vms_output_begin (abfd, ETIR_S_C_STC_BOH_GBL, -1);
+ _bfd_vms_output_long (abfd, (unsigned long) udata->lkindex);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->enbsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->address);
+ _bfd_vms_output_long (abfd, (unsigned long) 0xD3400000);
+ _bfd_vms_output_long
+ (abfd, (unsigned long) udata->enbsym->section->index);
+ _bfd_vms_output_quad (abfd, (uquad) rptr->addend);
+ _bfd_vms_output_counted
+ (abfd, _bfd_vms_length_hash_symbol
+ (abfd, udata->origname, EOBJ_S_C_SYMSIZ));
+ _bfd_vms_output_flush (abfd);
+ break;
+
+ default:
+ (*_bfd_error_handler) (_("Unhandled relocation %s"),
+ rptr->howto->name);
+ break;