aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2001-03-29 02:29:38 +0000
committerHans-Peter Nilsson <hp@axis.com>2001-03-29 02:29:38 +0000
commitd551a338e2a48edc7f970822cb980954f7db3ee2 (patch)
treec7360c9c7acdaca8fc03e228e646a7cef01e187d /gas/config
parent2e94c4530460ddbbe83590c7ea01e1128e36c126 (diff)
downloadgdb-d551a338e2a48edc7f970822cb980954f7db3ee2.zip
gdb-d551a338e2a48edc7f970822cb980954f7db3ee2.tar.gz
gdb-d551a338e2a48edc7f970822cb980954f7db3ee2.tar.bz2
* 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.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-cris.c2
-rw-r--r--gas/config/tc-cris.h19
2 files changed, 12 insertions, 9 deletions
diff --git a/gas/config/tc-cris.c b/gas/config/tc-cris.c
index 565d3f6..24fecfb 100644
--- a/gas/config/tc-cris.c
+++ b/gas/config/tc-cris.c
@@ -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);
diff --git a/gas/config/tc-cris.h b/gas/config/tc-cris.h
index 8f6d717..3c3bb5a 100644
--- a/gas/config/tc-cris.h
+++ b/gas/config/tc-cris.h
@@ -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