diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/coff-arm.c | 17 |
2 files changed, 10 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9dcc885..48cea47 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +1999-05-25 Catherine Moore <clm@cygnus.com> + + * coff-arm.c (coff_arm_relocate_section): Don't emit + base file entries for pc-relative values. + 1999-05-25 DJ Delorie <dj@cygnus.com> * peicode.h (coff_swap_sym_in): When we create the actual section diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c index 594e757..52baa85 100644 --- a/bfd/coff-arm.c +++ b/bfd/coff-arm.c @@ -1,5 +1,5 @@ /* BFD back-end for ARM COFF files. - Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 1998 + Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc. Written by Cygnus Support. @@ -934,8 +934,6 @@ static const insn32 a2t1_ldr_insn = 0xe59fc000; static const insn32 a2t2_bx_r12_insn = 0xe12fff1c; static const insn32 a2t3_func_addr_insn = 0x00000001; -#define A2T3_OFFSET 8 - /* Thumb->ARM: Thumb->(non-interworking aware) ARM @@ -959,8 +957,6 @@ static const insn16 t2a1_bx_pc_insn = 0x4778; static const insn16 t2a2_noop_insn = 0x46c0; static const insn32 t2a3_b_insn = 0xea000000; -#define T2A3_OFFSET 8 - static const insn16 t2a1_push_insn = 0xb540; static const insn16 t2a2_ldr_insn = 0x4e03; static const insn16 t2a3_mov_insn = 0x46fe; @@ -1212,7 +1208,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, if (info->base_file) arm_emit_base_file_entry (info, output_bfd, s, - my_offset + A2T3_OFFSET); + my_offset + 8); } @@ -1319,6 +1315,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, /* Store the address of the function in the last word of the stub. */ bfd_put_32 (output_bfd, h_val, s->contents + my_offset + 16); + + if (info->base_file) + arm_emit_base_file_entry (info, output_bfd, s, my_offset + 16); } else { @@ -1341,9 +1340,6 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, t2a3_b_insn | ((ret_offset >> 2) & 0x00FFFFFF), s->contents + my_offset + 4); - if (info->base_file) - arm_emit_base_file_entry (info, output_bfd, s, - my_offset + T2A3_OFFSET); } } @@ -1366,9 +1362,6 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section, contents + rel->r_vaddr - input_section->vma); - if (info->base_file) - arm_emit_base_file_entry (info, output_bfd, input_section, rel->r_vaddr); - done = 1; } } |