aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mn10300.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2001-05-16 01:48:51 +0000
committerAlexandre Oliva <aoliva@redhat.com>2001-05-16 01:48:51 +0000
commit7e8f4100307db7fcccfc2071ad92f389320d0ec5 (patch)
tree56c9666866b0efd707958e94e8d9bb40c83e72e4 /gas/config/tc-mn10300.c
parent2a0fa9433c462c02e2f71b73eb6f3d21d55fc795 (diff)
downloadgdb-7e8f4100307db7fcccfc2071ad92f389320d0ec5.zip
gdb-7e8f4100307db7fcccfc2071ad92f389320d0ec5.tar.gz
gdb-7e8f4100307db7fcccfc2071ad92f389320d0ec5.tar.bz2
* config/tc-mn10300.c (mn10300_force_relocation): Don't
optimize differences between symbols in code sections to constants. (mn10300_fix_adjustable): Don't adjust to section+offset relocations pointing at symbols in code sections.
Diffstat (limited to 'gas/config/tc-mn10300.c')
-rw-r--r--gas/config/tc-mn10300.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gas/config/tc-mn10300.c b/gas/config/tc-mn10300.c
index ab6781a..9f3ee5f 100644
--- a/gas/config/tc-mn10300.c
+++ b/gas/config/tc-mn10300.c
@@ -1993,6 +1993,15 @@ mn10300_force_relocation (fixp)
|| fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return 1;
+ /* Do not adjust relocations involving symbols in code sections,
+ because it breaks linker relaxations. This could be fixed in the
+ linker, but this fix is simpler, and it pretty much only affects
+ object size a little bit. */
+ if ((S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_CODE)
+ && fixp->fx_subsy
+ && S_GET_SEGMENT (fixp->fx_addsy) == S_GET_SEGMENT (fixp->fx_subsy))
+ return 1;
+
return 0;
}
@@ -2011,6 +2020,13 @@ mn10300_fix_adjustable (fixp)
|| fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return 0;
+ /* Do not adjust relocations involving symbols in code sections,
+ because it breaks linker relaxations. This could be fixed in the
+ linker, but this fix is simpler, and it pretty much only affects
+ object size a little bit. */
+ if (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_CODE)
+ return 0;
+
return 1;
}