* config/tc-xtensa.c (xtensa_flush_pending_output): Check
authorBob Wilson <bob.wilson@acm.org>
Mon, 2 Apr 2007 20:05:47 +0000 (20:05 +0000)
committerBob Wilson <bob.wilson@acm.org>
Mon, 2 Apr 2007 20:05:47 +0000 (20:05 +0000)
outputting_stabs_line_debug.

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

index c3949f6ce0e17711c42e818349df45df9cc0b388..28c73bd57c278d4103024084c86b7e34181b51bf 100644 (file)
@@ -1,3 +1,8 @@
+2007-04-02  Sterling Augustine  <sterling@tensilica.com>
+
+       * config/tc-xtensa.c (xtensa_flush_pending_output): Check
+       outputting_stabs_line_debug.
+
 2007-03-26  Anatoly Sokolov <aesok@post.ru>
 
        * config/tc-avr.c (mcu_types): Add support for at90pwm1, at90usb82,
index e8877ed7143d9aa4abe937fe00315d361397d5f4..ca0db1da501191ba81f7852511e3072dc0f2fc69 100644 (file)
@@ -5093,6 +5093,15 @@ xtensa_unrecognized_line (int ch)
 void
 xtensa_flush_pending_output (void)
 {
+  /* This line fixes a bug where automatically generated gstabs info
+     separates a function label from its entry instruction, ending up
+     with the literal position between the function label and the entry
+     instruction and crashing code.  It only happens with --gstabs and
+     --text-section-literals, and when several other obscure relaxation
+     conditions are met.  */
+  if (outputting_stabs_line_debug)
+    return;
+
   if (cur_vinsn.inside_bundle)
     as_bad (_("missing closing brace"));