X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fcoff64-rs6000.c;h=068b2c20aa1a4486bc58a75342ef10f05887f0d1;hb=86fb1dece37497b267579ed4f062d280cd5760cd;hp=931a914cbf622bbb738e465788a86e50674102b4;hpb=f1f0d9ab14a55973f82d67fe1fa8195e80b325be;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c index 931a914cbf..068b2c20aa 100644 --- a/bfd/coff64-rs6000.c +++ b/bfd/coff64-rs6000.c @@ -424,7 +424,7 @@ _bfd_xcoff64_swap_aux_out (abfd, inp, type, class, indx, numaux, extp) switch (class) { case C_FILE: - if (ext->x_file.x_n.x_zeroes == 0) + if (in->x_file.x_n.x_zeroes == 0) { H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes); H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset); @@ -1730,6 +1730,22 @@ reloc_howto_type xcoff64_howto_table[] = 0xffff, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ + + /* Modifiable branch absolute. */ + HOWTO (R_RBA, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + 0, /* special_function */ + "R_RBA_16", /* name */ + true, /* partial_inplace */ + 0xffff, /* src_mask */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ + }; void @@ -1750,6 +1766,8 @@ xcoff64_rtype2howto (relent, internal) relent->howto = &xcoff64_howto_table[0x1d]; else if (R_RBR == internal->r_type) relent->howto = &xcoff64_howto_table[0x1e]; + else if (R_RBA == internal->r_type) + relent->howto = &xcoff64_howto_table[0x1f]; } /* Special case 32 bit */ else if (31 == (internal->r_size & 0x3f)) @@ -2712,7 +2730,8 @@ const bfd_target rs6000coff64_vec = _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */ @@ -2964,7 +2983,8 @@ const bfd_target aix5coff64_vec = _bfd_xcoff_bfd_link_hash_table_create,/* _bfd_link_hash_table_create */ _bfd_generic_link_hash_table_free, /* _bfd_link_hash_table_free */ _bfd_xcoff_bfd_link_add_symbols, /* _bfd_link_add_symbols */ - _bfd_xcoff_bfd_final_link, /* _bfd_filnal_link */ + _bfd_generic_link_just_syms, /* _bfd_link_just_syms */ + _bfd_xcoff_bfd_final_link, /* _bfd_final_link */ _bfd_generic_link_split_section, /* _bfd_link_split_section */ bfd_generic_gc_sections, /* _bfd_gc_sections */ bfd_generic_merge_sections, /* _bfd_merge_sections */