Fix PR 994, core dump with section switching.
authorJim Wilson <wilson@tuliptree.org>
Wed, 23 Nov 2005 04:34:13 +0000 (04:34 +0000)
committerJim Wilson <wilson@tuliptree.org>
Wed, 23 Nov 2005 04:34:13 +0000 (04:34 +0000)
* config/tc-ia64.c (slot_index): Emit an error instead of a warning
when the frag chain is broken by section switching.

gas/ChangeLog
gas/config/tc-ia64.c

index 614dc785245c2b69b1e3610ac7b5cc57d4a72b7c..c403707f806e33d4ff454fb36b199c99f049db69 100644 (file)
@@ -3,6 +3,9 @@
        * config/tc-ia64.c (emit_one_bundle): Perform last_slot < 0 check
        even when manual_bundling isn't set.
 
+       * config/tc-ia64.c (slot_index): Emit an error instead of a warning
+       when the frag chain is broken by section switching.
+
 2005-11-18  Jie Zhang  <jie.zhang@analog.com>
 
        * config/bfin-defs.h (IS_BREG, IS_LREG): New macros.
index 699a64a7e234d3805cadd82cc1fc0e358e8a73bc..2ac758660ddeab33442abe2d749cfff734f875e0 100644 (file)
@@ -2895,24 +2895,11 @@ slot_index (slot_addr, slot_frag, first_addr, first_frag, before_relax)
       first_addr = (unsigned long) &first_frag->fr_literal;
 
       /* This can happen if there is section switching in the middle of a
-        function, causing the frag chain for the function to be broken.  */
+        function, causing the frag chain for the function to be broken.
+        It is too difficult to recover safely from this problem, so we just
+        exit with an error.  */
       if (first_frag == NULL)
-       {
-         /* We get six warnings for one problem, because of the loop in
-            fixup_unw_records, and because fixup_unw_records is called 3
-            times: once before creating the variant frag, once to estimate
-            its size, and once to relax it.  This is unreasonable, so we use
-            a static var to make sure we only emit the warning once.  */
-         static int warned = 0;
-
-         if (!warned)
-           {
-             as_warn ("Corrupted unwind info due to unsupported section switching");
-             warned = 1;
-           }
-
-         return index;
-       }
+       as_fatal ("Section switching in code is not supported.");
     }
 
   /* Add in the used part of the last frag.  */