* elf32-arm.c (elf32_arm_howto_table_1): Correct bitsize of
authorAlan Modra <amodra@gmail.com>
Tue, 19 Jan 2010 03:49:43 +0000 (03:49 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 19 Jan 2010 03:49:43 +0000 (03:49 +0000)
R_ARM_THM_CALL entry.
(elf32_arm_final_link_relocate): Correct calculation of
reloc_signed_max when doing a R_ARM_THM_CALL, R_ARM_THM_XPC22,
or R_ARM_THM_JUMP24 relocation.

bfd/ChangeLog
bfd/elf32-arm.c

index 6daeaf56a719212f7424476832da5d161ccb7bf3..18019121d29b413cbd49d83ab29fe5f326855209 100644 (file)
@@ -1,3 +1,11 @@
+2010-01-19  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>
+
+       * elf32-arm.c (elf32_arm_howto_table_1): Correct bitsize of
+       R_ARM_THM_CALL entry.
+       (elf32_arm_final_link_relocate): Correct calculation of
+       reloc_signed_max when doing a R_ARM_THM_CALL, R_ARM_THM_XPC22,
+       or R_ARM_THM_JUMP24 relocation.
+
 2010-01-18  Alan Modra  <amodra@gmail.com>
 
        PR 11168
index 3e9759b8249b9a88794d89597e1675c6487117e7..8f00e211d7e3332a587481bd38f845e26da50c5c 100644 (file)
@@ -1,6 +1,6 @@
 /* 32-bit ELF support for ARM
    Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-   2008, 2009  Free Software Foundation, Inc.
+   2008, 2009, 2010  Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -222,7 +222,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
   HOWTO (R_ARM_THM_CALL,       /* type */
         1,                     /* rightshift */
         2,                     /* size (0 = byte, 1 = short, 2 = long) */
-        25,                    /* bitsize */
+        24,                    /* bitsize */
         TRUE,                  /* pc_relative */
         0,                     /* bitpos */
         complain_overflow_signed,/* complain_on_overflow */
@@ -7552,7 +7552,7 @@ elf32_arm_final_link_relocate (reloc_howto_type *           howto,
        bitsize = howto->bitsize;
        if (!thumb2)
          bitsize -= 2;
-       reloc_signed_max = ((1 << (bitsize - 1)) - 1) >> howto->rightshift;
+       reloc_signed_max = (1 << (bitsize - 1)) - 1;
        reloc_signed_min = ~reloc_signed_max;
 
        /* Assumes two's complement.  */