From 9941f8525d6a586843662352f28409efa18942c8 Mon Sep 17 00:00:00 2001
From: Paul Brook <paul@codesourcery.com>
Date: Mon, 12 Dec 2005 17:03:40 +0000
Subject: [PATCH] 2005-12-12  Paul Brook  <paul@codesourcery.com>

bfd/
	* bfd-in2.h: Regenerate.
	* elf32-arm.c (elf32_arm_reloc_map): Add BFD_RELOC_ARM_PCREL_CALL and
	BFD_RELOC_ARM_PCREL_JUMP.
	(check_use_blx): New function.
	(bfd_elf32_arm_process_before_allocation): Don't allocate glue if
	using BLX.
	(elf32_arm_final_link_relocate): Perform bl<->blx conversion for
	R_ARM_CALL and R_ARM_THM.
	(elf32_arm_get_eabi_attr_int): New function.
	(elf32_arm_size_dynamic_sections): Call check_use_blx.
	* libbfd.h: Regenerate.
	* reloc.c: Add BFD_RELOC_ARM_PCREL_CALL and BFD_RELOC_ARM_PCREL_JUMP.
gas/
	* config/tc-arm.c (do_branch): Generate EABI branch relocations.
	(do_bl): New function.
	(do_blx): Generate BFD_RELOC_ARM_PCREL_CALL relocation.
	(do_t_blx): Generate BFD_RELOC_THUMB_PCREL_BRANCH23.
	(insns): Use do_bl.
	(md_pcrel_from_section): Add BFD_RELOC_ARM_PCREL_CALL and
	BFD_RELOC_ARM_PCREL_JUMP.
	(md_apply_fix): Merge BFD_RELOC_ARM_PCREL_BRANCH and
	BFD_RELOC_ARM_PCREL_BLX cases.  Handle BFD_RELOC_ARM_PCREL_CALL and
	BFD_RELOC_ARM_PCREL_JUMP.
	(tc_gen_reloc): Handle BFD_RELOC_ARM_PCREL_CALL and
	BFD_RELOC_ARM_PCREL_JUMP.
	gas/testsuite/
	* gas/arm/pic.d: Allow R_ARM_CALL relocations.
include/elf/
	* arm.h (elf32_arm_get_eabi_attr_int): Add prototype.
ld/testsuite/
	* ld-arm/arm-call.d: New test.
	* ld-arm/arm-call1.s: New file.
	* ld-arm/arm-call1.s: New file.
	* ld-arm/arm-elf.exp: Add arm-call and mixed-app-v5.
	* ld-arm/arm.ld: Add .glue_7 and .ARM.attribues.
	* ld-arm/mixed-app-v5.d: New file.
	* ld-arm/mixed-app.r: Tweak expected output.
---
 include/elf/ChangeLog | 4 ++++
 include/elf/arm.h     | 1 +
 2 files changed, 5 insertions(+)

diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index af4947c7e..a62cb1fb5 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,7 @@
+2005-12-12  Paul Brook  <paul@codesourcery.com>
+
+	* arm.h (elf32_arm_get_eabi_attr_int): Add prototype.
+
 2005-11-11  Nick Clifton  <nickc@redhat.com>
 
 	PR 1150
diff --git a/include/elf/arm.h b/include/elf/arm.h
index 2d76ab643..9ad04205c 100644
--- a/include/elf/arm.h
+++ b/include/elf/arm.h
@@ -228,6 +228,7 @@ END_RELOC_NUMBERS (R_ARM_max)
 void elf32_arm_add_eabi_attr_int (bfd *, int, unsigned int);
 void elf32_arm_add_eabi_attr_string (bfd *, int, const char *);
 void elf32_arm_add_eabi_attr_compat (bfd *, unsigned int, const char *);
+int elf32_arm_get_eabi_attr_int (bfd *, int);
 
 void elf32_arm_set_eabi_attr_contents (bfd *, bfd_byte *, bfd_vma);
 bfd_vma elf32_arm_eabi_attr_size (bfd *);