Alan Modra <amodra@bigpond.net.au>
authorAlexandre Oliva <aoliva@redhat.com>
Thu, 12 Dec 2002 04:32:07 +0000 (04:32 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Thu, 12 Dec 2002 04:32:07 +0000 (04:32 +0000)
gas/ChangeLog
gas/config/tc-mn10300.h

index 0aee95827f1a2de8328a238825a2395288804558..1d2ac35353c68da1939f4a113a4f2de88f01e1a9 100644 (file)
@@ -1,3 +1,10 @@
+2002-12-12  Alexandre Oliva  <aoliva@redhat.com>,
+
+       Alan Modra  <amodra@bigpond.net.au>
+
+       * config/tc-mn10300.h (TC_VALIDATE_FIX_SUB): Define.
+       (TC_LINKRELAX_FIXUP): Add comments.
+
 2002-12-12  Alexandre Oliva  <aoliva@redhat.com>
 
        * config/tc-mn10300.c (set_arch_mach): Change argument type to
index 739cd8bc3eb65992407731b07d2a42f32333a80d..69b752e5ede4bbe2d898e372a1e2d02224fe9c33 100644 (file)
@@ -47,7 +47,24 @@ extern int mn10300_force_relocation PARAMS ((struct fix *));
   (! SEG_NORMAL (SEG)                          \
    || ((SEG)->flags & SEC_CODE) != 0)
 
-/* Fixup debug sections since we will never relax them.  */
+/* We validate subtract arguments within tc_gen_reloc(), so don't
+   report errors at this point.  */
+#define TC_VALIDATE_FIX_SUB(FIX) 1
+
+/* Fixup debug sections since we will never relax them.  Ideally, we
+   could do away with this and instead check every single fixup with
+   TC_FORCE_RELOCATION and TC_FORCE_RELOCATION_SUB_NAME, verifying
+   that the sections of the referenced symbols (and not the sections
+   in which the fixup appears) may be subject to relaxation.  We'd
+   still have to check the section in which the fixup appears, because
+   we want to do some simplifications in debugging info that might
+   break in real code.
+
+   Using the infrastructure in write.c to simplify subtraction fixups
+   would enable us to remove a lot of code from tc_gen_reloc(), but
+   this is simpler, faster, and produces almost the same effect.
+   Also, in the macros above, we can't check whether the fixup is in a
+   debugging section or not, so we have to use this for now.  */
 #define TC_LINKRELAX_FIXUP(seg) (seg->flags & SEC_ALLOC)
 
 #define md_operand(x)