OSDN Git Service

* config/arm/arm.c (arm_output_dwarf_dtprel,
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jun 2007 14:55:06 +0000 (14:55 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jun 2007 14:55:06 +0000 (14:55 +0000)
TARGET_ASM_OUTPUT_DWARF_DTPREL): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125619 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.c

index fd94652..13cb914 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-11  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/arm/arm.c (arm_output_dwarf_dtprel,
+       TARGET_ASM_OUTPUT_DWARF_DTPREL): New.
+
 2007-06-11  Bernd Schmidt  <bernd.schmidt@analog.com>
 
        * config/bfin/bfin.md (movdi_insn, movsi_insn, movv2hi_insn,
index 587b74f..cd287bf 100644 (file)
@@ -195,6 +195,7 @@ static bool arm_handle_option (size_t, const char *, int);
 static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode);
 static bool arm_cannot_copy_insn_p (rtx);
 static bool arm_tls_symbol_p (rtx x);
+static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
 
 \f
 /* Initialize the GCC target structure.  */
@@ -377,6 +378,11 @@ static bool arm_tls_symbol_p (rtx x);
 #undef TARGET_CANNOT_FORCE_CONST_MEM
 #define TARGET_CANNOT_FORCE_CONST_MEM arm_tls_referenced_p
 
+#ifdef HAVE_AS_TLS
+#undef TARGET_ASM_OUTPUT_DWARF_DTPREL
+#define TARGET_ASM_OUTPUT_DWARF_DTPREL arm_output_dwarf_dtprel
+#endif
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 \f
 /* Obstack for minipool constant handling.  */
@@ -16532,6 +16538,17 @@ arm_emit_tls_decoration (FILE *fp, rtx x)
   return TRUE;
 }
 
+/* ARM implementation of TARGET_ASM_OUTPUT_DWARF_DTPREL.  */
+
+static void
+arm_output_dwarf_dtprel (FILE *file, int size, rtx x)
+{
+  gcc_assert (size == 4);
+  fputs ("\t.word\t", file);
+  output_addr_const (file, x);
+  fputs ("(tlsldo)", file);
+}
+
 bool
 arm_output_addr_const_extra (FILE *fp, rtx x)
 {