* dbxread.c (process_one_symbol): Do not adjust address of first
authorMark Kettenis <kettenis@gnu.org>
Thu, 18 Nov 2004 22:37:22 +0000 (22:37 +0000)
committerMark Kettenis <kettenis@gnu.org>
Thu, 18 Nov 2004 22:37:22 +0000 (22:37 +0000)
N_SLINE stab for a function for code generated by non-GCC
compilers.

gdb/ChangeLog
gdb/dbxread.c

index 95fbd89c6b0b3e2c7d72200382f4d45c16d8c042..47a248197457ea71cfc5843b49ade895204b71e2 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-18  Mark Kettenis  <kettenis@gnu.org>
+
+       * dbxread.c (process_one_symbol): Do not adjust address of first
+       N_SLINE stab for a function for code generated by non-GCC
+       compilers.
+
 2004-11-18  Kevin Buettner  <kevinb@redhat.com>
 
        * solib-null.c: New file.
index 9ac6a3c0b82c5ceee5dfc21251de2eb1531fa9a2..21f4399fa68f12f6339e93b97384f83dc0ed5fef 100644 (file)
@@ -2927,11 +2927,26 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
       /* Relocate for dynamic loading and for ELF acc fn-relative syms.  */
       valu += function_start_offset;
 
-      /* If this is the first SLINE note in the function, record it at
-        the start of the function instead of at the listed location.  */
+      /* GCC 2.95.3 emits the first N_SLINE stab somwehere in the
+        middle of the prologue instead of right at the start of the
+        function.  To deal with this we record the address for the
+        first N_SLINE stab to be the start of the function instead of
+        the listed location.  We really shouldn't to this.  When
+        compiling with optimization, this first N_SLINE stab might be
+        optimized away.  Other (non-GCC) compilers don't emit this
+        stab at all.  There is no real harm in having an extra
+        numbered line, although it can be a bit annoying for the
+        user.  However, it totally screws up our testsuite.
+
+        So for now, keep adjusting the address of the first N_SLINE
+        stab, but only for code compiled with GCC.  */
+
       if (within_function && sline_found_in_function == 0)
        {
-         record_line (current_subfile, desc, last_function_start);
+         if (processing_gcc_compilation == 2)
+           record_line (current_subfile, desc, last_function_start);
+         else
+           record_line (current_subfile, desc, valu);
          sline_found_in_function = 1;
        }
       else
This page took 0.03373 seconds and 4 git commands to generate.