* config/tc-cris.h (tc_fix_adjustable): Allow only
authorHans-Peter Nilsson <hp@axis.com>
Thu, 29 Mar 2001 02:29:38 +0000 (02:29 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Thu, 29 Mar 2001 02:29:38 +0000 (02:29 +0000)
BFD_RELOC_CRIS_32_GOTREL of the PIC relocs.
* config/tc-cris.c (cris_get_pic_suffix): Correct reloc used in
example to valid.

gas/ChangeLog
gas/config/tc-cris.c
gas/config/tc-cris.h

index ca08411f9b6b8558e6632ff7fe0b9a4caa20c12f..714426420361df82b46006f52c7c2d8a9e4fcaa5 100644 (file)
@@ -1,3 +1,10 @@
+2001-03-29  Hans-Peter Nilsson  <hp@axis.com>
+
+       * config/tc-cris.h (tc_fix_adjustable): Allow only
+       BFD_RELOC_CRIS_32_GOTREL of the PIC relocs.
+       * config/tc-cris.c (cris_get_pic_suffix): Correct reloc used in
+       example to valid.
+
 2001-03-28  H.J. Lu  <hjl@gnu.org>
 
        * read.c (equals): Set to local for COFF only if it hasn't been
index 565d3f6cad144f1d743c6006e13b4c7145a24f92..24fecfbf6395eb308aa01690f42733dbcafdf467 100644 (file)
@@ -2570,7 +2570,7 @@ cris_get_pic_suffix (cPP, relocp, exprP)
              /* Allow complex expressions as the constant part.  It still
                 has to be a assembly-time constant or there will be an
                 error emitting the reloc.  This makes the PIC qualifiers
-                idempotent; foo:GOT+32 == foo+32:GOT.  The former we
+                idempotent; foo:GOTOFF+32 == foo+32:GOTOFF.  The former we
                 recognize here; the latter is parsed in the incoming
                 expression.  */
              exprP->X_add_symbol = make_expr_symbol (exprP);
index 8f6d7171e5976af65d183accf4024722b8e1c1e6..3c3bb5a976a7b5829d0ace0072a9719e28073fdb 100644 (file)
@@ -106,14 +106,17 @@ extern int md_cris_force_relocation PARAMS ((struct fix *));
 
 /* This is really a workaround for a bug in write.c that resolves relocs
    for weak symbols - it should be postponed to the link stage or later.
-   Also don't adjust fixups for global symbols for ELF.  */
-#define tc_fix_adjustable(X)                           \
- (((X)->fx_addsy == NULL                               \
-   || (! S_IS_WEAK ((X)->fx_addsy)                     \
-       && ! (OUTPUT_FLAVOR == bfd_target_elf_flavour   \
-            && S_IS_EXTERNAL ((X)->fx_addsy))))        \
-  && (X)->fx_r_type != BFD_RELOC_VTABLE_INHERIT                \
-  && (X)->fx_r_type != BFD_RELOC_VTABLE_ENTRY)
+   Also don't adjust fixups for global symbols for ELF, and no relocs
+   where the original symbol name must be kept.  */
+#define tc_fix_adjustable(X)                                   \
+ (((X)->fx_addsy == NULL                                       \
+   || (! S_IS_WEAK ((X)->fx_addsy)                             \
+       && ! (OUTPUT_FLAVOR == bfd_target_elf_flavour           \
+            && S_IS_EXTERNAL ((X)->fx_addsy))))                \
+  && (X)->fx_r_type != BFD_RELOC_VTABLE_INHERIT                        \
+  && (X)->fx_r_type != BFD_RELOC_VTABLE_ENTRY                  \
+  && (! IS_CRIS_PIC_RELOC ((X)->fx_r_type)                     \
+      || (X)->fx_r_type == BFD_RELOC_CRIS_32_GOTREL))
 
 /* When we have fixups against constant expressions, we get a GAS-specific
    section symbol at no extra charge for obscure reasons in