dwarf2out.c (FRAME_BEGIN_LABEL): New.
authorRichard Henderson <rth@redhat.com>
Fri, 5 Oct 2001 18:20:15 +0000 (11:20 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 5 Oct 2001 18:20:15 +0000 (11:20 -0700)
        * dwarf2out.c (FRAME_BEGIN_LABEL): New.
        (output_call_frame_info): Use it instead of __FRAME_BEGIN__ and
        the gas section-name-as-label feature.

From-SVN: r46037

gcc/ChangeLog
gcc/dwarf2out.c

index ee149b2b2d7ece603ba940f44be1e829da053041..2b24a20936db4bea2a9b6fdad938f678a52e55d6 100644 (file)
@@ -1,3 +1,9 @@
+2001-10-05  Richard Henderson  <rth@redhat.com>
+
+       * dwarf2out.c (FRAME_BEGIN_LABEL): New.
+       (output_call_frame_info): Use it instead of __FRAME_BEGIN__ and
+       the gas section-name-as-label feature.
+
 2001-10-05  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * doc/cppinternals.texi: Update.
index 062b9257433626590611a97d0337d3d71ecc9e2e..8857d9b365841bfa76290f1359b88a46f50be5de 100644 (file)
@@ -288,6 +288,7 @@ static void def_cfa_1                       PARAMS ((const char *, dw_cfa_location *));
 #ifndef FUNC_END_LABEL
 #define FUNC_END_LABEL         "LFE"
 #endif
+#define FRAME_BEGIN_LABEL      "Lframe"
 #define CIE_AFTER_SIZE_LABEL   "LSCIE"
 #define CIE_END_LABEL          "LECIE"
 #define CIE_LENGTH_LABEL       "LLCIE"
@@ -1708,7 +1709,7 @@ output_call_frame_info (for_eh)
   register unsigned int i;
   register dw_fde_ref fde;
   register dw_cfi_ref cfi;
-  char l1[20], l2[20];
+  char l1[20], l2[20], section_start_label[20];
   int any_lsda_needed = 0;
   char augmentation[6];
   int augmentation_size;
@@ -1747,11 +1748,13 @@ output_call_frame_info (for_eh)
       ASM_GLOBALIZE_LABEL (asm_out_file, IDENTIFIER_POINTER (label));
       ASM_OUTPUT_LABEL (asm_out_file, IDENTIFIER_POINTER (label));
 #endif
-      assemble_label ("__FRAME_BEGIN__");
     }
   else
     named_section_flags (DEBUG_FRAME_SECTION, SECTION_DEBUG);
 
+  ASM_GENERATE_INTERNAL_LABEL (section_start_label, FRAME_BEGIN_LABEL, for_eh);
+  ASM_OUTPUT_LABEL (asm_out_file, section_start_label);
+
   /* Output the CIE.  */
   ASM_GENERATE_INTERNAL_LABEL (l1, CIE_AFTER_SIZE_LABEL, for_eh);
   ASM_GENERATE_INTERNAL_LABEL (l2, CIE_END_LABEL, for_eh);
@@ -1882,19 +1885,10 @@ output_call_frame_info (for_eh)
                            "FDE Length");
       ASM_OUTPUT_LABEL (asm_out_file, l1);
 
-      /* ??? This always emits a 4 byte offset when for_eh is true, but it
-        emits a target dependent sized offset when for_eh is not true.
-        This inconsistency may confuse gdb.  The only case where we need a
-        non-4 byte offset is for the Irix6 N64 ABI, so we may lose SGI
-        compatibility if we emit a 4 byte offset.  We need a 4 byte offset
-        though in order to be compatible with the dwarf_fde struct in frame.c.
-        If the for_eh case is changed, then the struct in frame.c has
-        to be adjusted appropriately.  */
       if (for_eh)
-       dw2_asm_output_delta (4, l1, "__FRAME_BEGIN__", "FDE CIE offset");
+       dw2_asm_output_delta (4, l1, section_start_label, "FDE CIE offset");
       else
-       dw2_asm_output_offset (DWARF_OFFSET_SIZE,
-                              stripattributes (DEBUG_FRAME_SECTION),
+       dw2_asm_output_offset (DWARF_OFFSET_SIZE, section_start_label,
                               "FDE CIE offset");
 
       if (for_eh)