aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-arm.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-06-14 02:45:12 +0000
committerAlan Modra <amodra@gmail.com>2011-06-14 02:45:12 +0000
commit7f6ab9f8b9a5164d34c5d0b85ad4bfb8d51d89fb (patch)
treea6bbfb3426ae13110d87c3a0b45b79498d0682ca /bfd/elf32-arm.c
parentc6431bc3708cda380b0bdc35d11827882e803f2d (diff)
downloadgdb-7f6ab9f8b9a5164d34c5d0b85ad4bfb8d51d89fb.zip
gdb-7f6ab9f8b9a5164d34c5d0b85ad4bfb8d51d89fb.tar.gz
gdb-7f6ab9f8b9a5164d34c5d0b85ad4bfb8d51d89fb.tar.bz2
PR ld/12851
* elflink.c (_bfd_elf_gc_mark_extra_sections): New function. (elf_gc_sweep): Don't treat debug and sections like .comment specially here. (bfd_elf_gc_sections): Treat note sections as gc roots only when not part of a group. Always call gc_mark_extra_sections. * elf-bfd.h (_bfd_elf_gc_mark_extra_sections): Declare. * elfxx-target.h (elf_backend_gc_mark_extra_sections): Default to _bfd_elf_gc_mark_extra_sections. * elf32-arm.c (elf32_arm_gc_mark_extra_sections): Call _bfd_elf_gc_mark_extra_sections. * elf32-tic6x.c (elf32_tic6x_gc_mark_extra_sections): Likewise.
Diffstat (limited to 'bfd/elf32-arm.c')
-rw-r--r--bfd/elf32-arm.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index f5b31c6..b0f315b 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -229,8 +229,8 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
bfd_elf_generic_reloc, /* special_function */
"R_ARM_THM_CALL", /* name */
FALSE, /* partial_inplace */
- 0x07ff07ff, /* src_mask */
- 0x07ff07ff, /* dst_mask */
+ 0x07ff2fff, /* src_mask */
+ 0x07ff2fff, /* dst_mask */
TRUE), /* pcrel_offset */
HOWTO (R_ARM_THM_PC8, /* type */
@@ -293,7 +293,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
HOWTO (R_ARM_XPC25, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
- 25, /* bitsize */
+ 24, /* bitsize */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
@@ -308,15 +308,15 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
HOWTO (R_ARM_THM_XPC22, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
- 22, /* bitsize */
+ 24, /* bitsize */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_ARM_THM_XPC22", /* name */
FALSE, /* partial_inplace */
- 0x07ff07ff, /* src_mask */
- 0x07ff07ff, /* dst_mask */
+ 0x07ff2fff, /* src_mask */
+ 0x07ff2fff, /* dst_mask */
TRUE), /* pcrel_offset */
/* Dynamic TLS relocations. */
@@ -12467,6 +12467,8 @@ elf32_arm_gc_mark_extra_sections (struct bfd_link_info *info,
Elf_Internal_Shdr **elf_shdrp;
bfd_boolean again;
+ _bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
+
/* Marking EH data may cause additional code sections to be marked,
requiring multiple passes. */
again = TRUE;