From 3dccd7b794c78caf1a91142f275edf70c08334ca Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 30 Jun 2008 15:32:51 +0000 Subject: [PATCH] * elf32-arm.c (record_arm_to_thumb_glue, record_thumb_to_arm_glue): Expand comments. (arm_map_one_stub): Use | 1 when setting the low bit. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-arm.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3f6f5c76eb..3a22c3fdf4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2008-06-30 Daniel Jacobowitz + + * elf32-arm.c (record_arm_to_thumb_glue, record_thumb_to_arm_glue): + Expand comments. + (arm_map_one_stub): Use | 1 when setting the low bit. + 2008-06-29 Andreas Schwab * elf32-m68k.c (elf_m68k_relocate_section): Don't ignore existing diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index bb0dd427af..2faefdf421 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -3981,7 +3981,8 @@ record_arm_to_thumb_glue (struct bfd_link_info * link_info, /* The only trick here is using hash_table->arm_glue_size as the value. Even though the section isn't allocated yet, this is where we will be - putting it. */ + putting it. The +1 on the value marks that the stub has not been + output yet - not that it is a Thumb function. */ bh = NULL; val = globals->arm_glue_size + 1; _bfd_generic_link_add_one_symbol (link_info, globals->bfd_of_glue_owner, @@ -4047,6 +4048,10 @@ record_thumb_to_arm_glue (struct bfd_link_info *link_info, return; } + /* The only trick here is using hash_table->thumb_glue_size as the value. + Even though the section isn't allocated yet, this is where we will be + putting it. The +1 on the value marks that the stub has not been + output yet - not that it is a Thumb function. */ bh = NULL; val = hash_table->thumb_glue_size + 1; _bfd_generic_link_add_one_symbol (link_info, hash_table->bfd_of_glue_owner, @@ -11240,7 +11245,7 @@ arm_map_one_stub (struct bfd_hash_entry *gen_entry, return FALSE; break; case arm_thumb_thumb_stub_long_branch: - if (!elf32_arm_output_stub_sym (osi, stub_name, addr + 1, 16)) + if (!elf32_arm_output_stub_sym (osi, stub_name, addr | 1, 16)) return FALSE; if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr)) return FALSE; @@ -11248,7 +11253,7 @@ arm_map_one_stub (struct bfd_hash_entry *gen_entry, return FALSE; break; case arm_thumb_arm_v4t_stub_long_branch: - if (!elf32_arm_output_stub_sym (osi, stub_name, addr + 1, 20)) + if (!elf32_arm_output_stub_sym (osi, stub_name, addr | 1, 20)) return FALSE; if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr)) return FALSE;