[gas] Handle m68k-uclinux like m68k-elf in EXTERN_FORCE_RELOC

Bernardo Innocenti bernie@develer.com
Thu Jan 15 23:51:00 GMT 2004


2004-01-16  Bernardo Innocenti  <bernie@develer.com>

	* config/tc-m68k.h (EXTERN_FORCE_RELOC): Handle m68k-uclinux specially,
	like m68k-elf.
	* config/tc-m68k.c (RELAXABLE_SYMBOL): Use EXTERN_FORCE_RELOC instead
	of hard-coded test for TARGET_OS=elf.

diff -Nru binutils-2.14.90.0.7.orig/gas/config/tc-m68k.c binutils-2.14.90.0.7/gas/config/tc-m68k.c
--- binutils-2.14.90.0.7.orig/gas/config/tc-m68k.c	2003-10-29 18:37:48.000000000 +0100
+++ binutils-2.14.90.0.7/gas/config/tc-m68k.c	2003-12-22 08:26:02.361994153 +0100
@@ -732,7 +732,7 @@
    libraries, and we can relax any external sym.  */
 
 #define relaxable_symbol(symbol) \
-  (!((S_IS_EXTERNAL (symbol) && strcmp (TARGET_OS, "elf") != 0)		\
+  (!((S_IS_EXTERNAL (symbol) && EXTERN_FORCE_RELOC) \
      || S_IS_WEAK (symbol)))
 
 /* Compute the relocation code for a fixup of SIZE bytes, using pc
diff -Nru binutils-2.14.90.0.7.orig/gas/config/tc-m68k.h binutils-2.14.90.0.7/gas/config/tc-m68k.h
--- binutils-2.14.90.0.7.orig/gas/config/tc-m68k.h	2003-08-21 17:28:48.000000000 +0200
+++ binutils-2.14.90.0.7/gas/config/tc-m68k.h	2003-12-22 08:22:53.982617970 +0100
@@ -169,8 +169,11 @@
 #define tc_fix_adjustable(X) tc_m68k_fix_adjustable(X)
 extern int tc_m68k_fix_adjustable PARAMS ((struct fix *));
 
-/* Target *-*-elf implies an embedded target.  No shared libs.  */
-#define EXTERN_FORCE_RELOC (strcmp (TARGET_OS, "elf") != 0)
+/* Target *-*-elf implies an embedded target.  No shared libs.
+   *-*-uclinux also requires special casing to prevent GAS from
+   generating unsupported R_68K_PC16 relocs.  */
+#define EXTERN_FORCE_RELOC \
+  ((strcmp (TARGET_OS, "elf") != 0) && (strcmp (TARGET_OS, "uclinux") != 0))
 
 /* Values passed to md_apply_fix3 don't include symbol values.  */
 #define MD_APPLY_SYM_VALUE(FIX) 0

-- 
  // Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/  http://www.develer.com/




More information about the Binutils mailing list