diff options
Diffstat (limited to 'bfd/coff64-rs6000.c')
-rw-r--r-- | bfd/coff64-rs6000.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c index 6be1583a4b..1a0ff59713 100644 --- a/bfd/coff64-rs6000.c +++ b/bfd/coff64-rs6000.c @@ -381,6 +381,7 @@ _bfd_xcoff64_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1) /* RS/6000 "csect" auxents */ case C_EXT: + case C_AIX_WEAKEXT: case C_HIDEXT: if (indx + 1 == numaux) { @@ -473,6 +474,7 @@ _bfd_xcoff64_swap_aux_out (abfd, inp, type, class, indx, numaux, extp) /* RS/6000 "csect" auxents */ case C_EXT: + case C_AIX_WEAKEXT: case C_HIDEXT: if (indx + 1 == numaux) { @@ -1133,7 +1135,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto, going to global linkage code, we can replace the load with a cror. */ if (NULL != h - && bfd_link_hash_defined == h->root.type + && (bfd_link_hash_defined == h->root.type + || bfd_link_hash_defweak == h->root.type) && section_offset + 8 <= input_section->size) { bfd_byte *pnext; @@ -1176,7 +1179,8 @@ xcoff64_reloc_type_br (input_bfd, input_section, output_bfd, rel, sym, howto, howto->dst_mask = howto->src_mask; if (h != NULL - && h->root.type == bfd_link_hash_defined + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) && bfd_is_abs_section (h->root.u.def.section) && section_offset + 4 <= input_section->size) { |