From fc6141f097056f830a412afebed8d81a9d72b696 Mon Sep 17 00:00:00 2001
From: Nick Clifton <nickc@redhat.com>
Date: Wed, 20 Jun 2018 12:38:10 +0100
Subject: [PATCH] Change the ARM assembler's ADR and ADRl pseudo-ops so that
 they will only set the bottom bit of imported thumb function symbols if the
 -mthumb-interwork option is active.

For more information see the email thread starting here:
https://www.sourceware.org/ml/binutils/2018-05/msg00348.html

	PR 21458
	* tc-arm.c (do_adr): Only set the bottom bit of an imported thumb
	function symbol address if -mthumb-interwork is active.
	(do_adrl): Likewise.
	* doc/c-arm.texi: Update descriptions of the -mthumb-interwork
	option and the ADR and ADRL pseudo-ops.
	* NEWS: Mention the new behaviour of the ADR and ADRL pseudo-ops.
	* testsuite/gas/arm/pr21458.d: Add -mthumb-interwork option to
	assembler command line.
	* testsuite/gas/arm/adr.d: Likewise.
	* testsuite/gas/arm/adrl.d: Likewise.
---
 gas/ChangeLog                   | 14 ++++++++++++++
 gas/NEWS                        |  4 ++++
 gas/config/tc-arm.c             | 10 ++++++----
 gas/doc/c-arm.texi              | 17 ++++++++++++++++-
 gas/testsuite/gas/arm/adr.d     |  1 +
 gas/testsuite/gas/arm/adrl.d    |  1 +
 gas/testsuite/gas/arm/pr21458.d |  3 ++-
 7 files changed, 44 insertions(+), 6 deletions(-)

Index: git/gas/config/tc-arm.c
===================================================================
--- git.orig/gas/config/tc-arm.c
+++ git/gas/config/tc-arm.c
@@ -8410,11 +8410,12 @@ do_adr (void)
   inst.reloc.pc_rel = 1;
   inst.reloc.exp.X_add_number -= 8;
 
-  if (inst.reloc.exp.X_op == O_symbol
+  if (support_interwork
+      && inst.reloc.exp.X_op == O_symbol
       && inst.reloc.exp.X_add_symbol != NULL
       && S_IS_DEFINED (inst.reloc.exp.X_add_symbol)
       && THUMB_IS_FUNC (inst.reloc.exp.X_add_symbol))
-    inst.reloc.exp.X_add_number += 1;
+    inst.reloc.exp.X_add_number |= 1;
 }
 
 /* This is a pseudo-op of the form "adrl rd, label" to be converted
@@ -8434,11 +8435,12 @@ do_adrl (void)
   inst.size		       = INSN_SIZE * 2;
   inst.reloc.exp.X_add_number -= 8;
 
-  if (inst.reloc.exp.X_op == O_symbol
+  if (support_interwork
+      && inst.reloc.exp.X_op == O_symbol
       && inst.reloc.exp.X_add_symbol != NULL
       && S_IS_DEFINED (inst.reloc.exp.X_add_symbol)
       && THUMB_IS_FUNC (inst.reloc.exp.X_add_symbol))
-    inst.reloc.exp.X_add_number += 1;
+    inst.reloc.exp.X_add_number |= 1;
 }
 
 static void
Index: git/gas/doc/c-arm.texi
===================================================================
--- git.orig/gas/doc/c-arm.texi
+++ git/gas/doc/c-arm.texi
@@ -317,7 +317,8 @@ instructions; that is, it should behave
 @cindex @code{-mthumb-interwork} command line option, ARM
 @item -mthumb-interwork
 This option specifies that the output generated by the assembler should
-be marked as supporting interworking.
+be marked as supporting interworking.  It also affects the behaviour
+of the @code{ADR} and @code{ADRL} pseudo opcodes.
 
 @cindex @code{-mimplicit-it} command line option, ARM
 @item -mimplicit-it=never
@@ -1060,6 +1061,16 @@ out of range, or if it is not defined in
 the ADR instruction, then an error will be generated.  This instruction
 will not make use of the literal pool.
 
+If @var{label} is a thumb function symbol, and thumb interworking has
+been enabled via the @option{-mthumb-interwork} option then the bottom
+bit of the value stored into @var{register} will be set.  This allows
+the following sequence to work as expected:
+
+@smallexample
+  adr     r0, thumb_function
+  blx     r0
+@end smallexample
+
 @cindex @code{ADRL reg,<label>} pseudo op, ARM
 @item ADRL
 @smallexample
@@ -1076,6 +1087,10 @@ If the label is out of range, or if it i
 (and section) as the ADRL instruction, then an error will be generated.
 This instruction will not make use of the literal pool.
 
+If @var{label} is a thumb function symbol, and thumb interworking has
+been enabled via the @option{-mthumb-interwork} option then the bottom
+bit of the value stored into @var{register} will be set.
+
 @end table
 
 For information on the ARM or Thumb instruction sets, see @cite{ARM
Index: git/gas/testsuite/gas/arm/adr.d
===================================================================
--- git.orig/gas/testsuite/gas/arm/adr.d
+++ git/gas/testsuite/gas/arm/adr.d
@@ -1,3 +1,4 @@
+#as: -mthumb-interwork
 #objdump: -dr --prefix-addresses --show-raw-insn
 #name: ADR
 
Index: git/gas/testsuite/gas/arm/adrl.d
===================================================================
--- git.orig/gas/testsuite/gas/arm/adrl.d
+++ git/gas/testsuite/gas/arm/adrl.d
@@ -1,3 +1,4 @@
+#as: -mthumb-interwork
 #objdump: -dr --prefix-addresses --show-raw-insn
 #name: ADRL
 
Index: git/gas/ChangeLog
===================================================================
--- git.orig/gas/ChangeLog
+++ git/gas/ChangeLog
@@ -1,3 +1,17 @@
+2018-06-20  Nick Clifton  <nickc@redhat.com>
+
+       PR 21458
+       * tc-arm.c (do_adr): Only set the bottom bit of an imported thumb
+       function symbol address if -mthumb-interwork is active.
+       (do_adrl): Likewise.
+       * doc/c-arm.texi: Update descriptions of the -mthumb-interwork
+       option and the ADR and ADRL pseudo-ops.
+       * NEWS: Mention the new behaviour of the ADR and ADRL pseudo-ops.
+       * testsuite/gas/arm/pr21458.d: Add -mthumb-interwork option to
+       assembler command line.
+       * testsuite/gas/arm/adr.d: Likewise.
+       * testsuite/gas/arm/adrl.d: Likewise.
+
 2018-02-05  Nick Clifton  <nickc@redhat.com>
 
 	* po/ru.po: Updated Russian translation.
Index: git/gas/NEWS
===================================================================
--- git.orig/gas/NEWS
+++ git/gas/NEWS
@@ -1,5 +1,9 @@
 -*- text -*-
 
+* The ADR and ADRL pseudo-instructions supported by the ARM assembler
+  now only set the bottom bit of the address of thumb function symbols
+  if the -mthumb-interwork command line option is active.
+
 Changes in 2.30:
 
 * Add support for loaction views in DWARF debug line information.
Index: git/gas/testsuite/gas/arm/pr21458.d
===================================================================
--- git.orig/gas/testsuite/gas/arm/pr21458.d
+++ git/gas/testsuite/gas/arm/pr21458.d
@@ -1,8 +1,9 @@
+#as: -mthumb-interwork
 #objdump: -d --prefix-addresses --show-raw-insn
 #name: ADR(L) for Thumb functions
 #skip: *-*-pe *-wince-* *-*-coff *-*-vxworks
 
-# Test that using ADR(L) on thumb function symbols sets the T bit.
+# Test that using ADR(L) on thumb function symbols sets the T bit when -mthumb-interwork is active.
 
 .*: +file format .*arm.*
 
