[comp.unix.aux] Patch for GCC 1.37.1 under A/UX

coolidge@clitus.cs.uiuc.edu (John Coolidge) (03/13/90)

I've been getting error messages for some time when debugging code compiled
with gcc (currently using 1.37.1, but the errors are consistent since
1.36) and David Berry's patches (the apple.com set). I finally got tired
of the error messages and found the problem.

The patches add the following to final_start_function:

#if defined(SDB_DEBUGGING_INFO) && defined(AUX)
  next_block_index = 1;
  if (write_symbols == SDB_DEBUG)
    sdbout_begin_function (NOTE_LINE_NUMBER(first));
#endif

which is good, since this fixes some SDB line numbering problems under
AUX. The problem is that these lines in final_scan_insn:

#ifdef SDB_DEBUGGING_INFO
          if (write_symbols == SDB_DEBUG)
            sdbout_begin_function (last_linenum);
#endif

are left along. sdbout_begin_function is thus being called twice, which
is causing two bf (begin function) directives to be emitted. This makes
SDB marginally unhappy. The fix is simple:

*** ../gcc-1.37.1/final.c       Sat Dec  9 08:17:52 1989
--- final.c     Mon Mar 12 00:47:20 1990
***************
*** 558,564 ****
        break;
         f (NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG)
        {
! #ifdef SDB_DEBUGGING_INFO
          if (write_symbols == SDB_DEBUG)
            sdbout_begin_function (last_linenum);
  #endif
--- 566,572 ----
        break;
        if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG)
        {
! #if defined(SDB_DEBUGGING_INFO) && !defined(AUX)
          if (write_symbols == SDB_DEBUG)
            sdbout_begin_function (last_linenum);
  #endif

which simply makes the final_scan_insn outputting dependent on AUX. I've
compiled several things (including GCC) with this version of the code,
and it seems to make SDB much happier.

--John

--------------------------------------------------------------------------
John L. Coolidge     Internet:coolidge@cs.uiuc.edu   UUCP:uiucdcs!coolidge
Of course I don't speak for the U of I (or anyone else except myself)
Copyright 1990 John L. Coolidge. Copying allowed if (and only if) attributed.
You may redistribute this article if and only if your recipients may as well.