* Makefile.in (OTHERS): Add gcc.patch.
authorStu Grossman <grossman@cygnus>
Thu, 16 Jul 1992 20:40:36 +0000 (20:40 +0000)
committerStu Grossman <grossman@cygnus>
Thu, 16 Jul 1992 20:40:36 +0000 (20:40 +0000)
* partial-stab.h (N_SO):  Fix handling of redundant SOs (again...)

gdb/ChangeLog
gdb/Makefile.in
gdb/partial-stab.h

index e6d0241fa38250cb503d2ee0a1afe6354d6ccf5f..b9b929074691ee4076e7500ba6b23c3eb89a482b 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jul 16 13:37:09 1992  Stu Grossman  (grossman at cygnus.com)
+
+       * Makefile.in (OTHERS):  Add gcc.patch.
+       * partial-stab.h (N_SO):  Fix handling of redundant SOs (again...)
+
 Thu Jul 16 12:07:40 1992  Fred Fish  (fnf@cygnus.com)
 
        * dwarfread.c (LCC_PRODUCER):  Change to match current NCR
index d8399641ac38105367a251bb361c316bb3ab825c..071b04dada235bcad62f27a00665c6de96d4229b 100644 (file)
@@ -168,21 +168,12 @@ DIST=gdb
 LINT=/usr/5bin/lint
 LINTFLAGS= -I${BFD_DIR}
 
-# Select the default C++ demangling style to use.  The default is "auto",
-# which allows gdb to attempt to pick an appropriate demangling style for
-# the executable it has loaded.  It can be set to a specific style ("gnu",
-# "lucid", "cfront", etc) in which case gdb will never attempt to do auto
-# selection of the style unless you do an explicit "set demangle auto".
-# To select one of these as the default, set DEMANGLING_STYLE in the
-# appropriate target dependent makefile fragment.
-DEMANGLING_STYLE = "gnu"
-
-# Select demangler to use.
+# Select demangler to use.  Currently gdb only supports inclusion of a
+# single demangler.  The default demangler (cplus-dem.c) can demangle
+# several different styles that differ in only minor details.  See
+# demangle.c information about selecting styles.
 DEMANGLER = cplus-dem
 
-# Select options to use when compiling ${DEMANGLER}.c.
-DEMANGLE_OPTS = -DDEMANGLING_STYLE=${DEMANGLING_STYLE}
-
 # Host and target-dependent makefile fragments come in here.
 ####
 # End of host and target-dependent makefile fragments
@@ -262,7 +253,7 @@ OTHERS = Makefile.in depend alldeps.mak createtags munch configure.in \
         .gdbinit COPYING $(YYFILES) \
         copying.c Convex.notes copying.awk \
         saber.suppress standalone.c stuff.c kdb-start.c \
-        putenv.c
+        putenv.c gcc.patch
 
 # Subdirectories of gdb, which should be included in their entirety in
 # gdb-xxx.tar.Z:
@@ -710,15 +701,10 @@ gdb.cxref: $(SFILES)
 
 force_update:
 
-# Generate the demangler linked in with gdb.  Also create a standalone
-# demangler if so desired ("make demangle").
-
-${DEMANGLER}.o:        ${DEMANGLER}.c
-       ${CC} -c ${INTERNAL_CFLAGS} ${DEMANGLE_OPTS} \
-         `echo ${srcdir}/${DEMANGLER}.c | sed 's,^\./,,'`
+# Create a standalone demangler if so desired ("make demangle").
 
-demangle: ${DEMANGLER}.c
-       ${CC} -o $@ -DMAIN ${INTERNAL_CFLAGS} ${DEMANGLE_OPTS} \
+demangle: ${srcdir}/${DEMANGLER}.c
+       ${CC} -o $@ -DMAIN ${INTERNAL_CFLAGS} \
          `echo ${srcdir}/${DEMANGLER}.c | sed 's,^\./,,'`
 
 # GNU Make has an annoying habit of putting *all* the Makefile variables
index a0ad20d15916546487e3bce0bd918624ab478e2f..9af5b8d34b21afc4ed2517b745be2213a96ce672 100644 (file)
@@ -198,27 +198,35 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
        case N_SO: {
          unsigned long valu = CUR_SYMBOL_VALUE;
-         static int last_so_symnum = -10;
-         static int dir_so_symnum = -10;
-         int tmp;
+         static int prev_so_symnum = -10;
+         static int first_so_symnum;
          char *p;
          
+         past_first_source_file = 1;
+
+         if (prev_so_symnum != symnum - 1)
+           {                   /* Here if prev stab wasn't N_SO */
+             first_so_symnum = symnum;
+
+             if (pst)
+               {
+                 END_PSYMTAB (pst, psymtab_include_list, includes_used,
+                              symnum * symbol_size, valu,
+                              dependency_list, dependencies_used);
+                 pst = (struct partial_symtab *) 0;
+                 includes_used = 0;
+                 dependencies_used = 0;
+               }
+           }
+
+         prev_so_symnum = symnum;
+
          /* End the current partial symtab and start a new one */
 
          SET_NAMESTRING();
 
          valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
 
-         if (pst)
-           {
-             END_PSYMTAB (pst, psymtab_include_list, includes_used,
-                          symnum * symbol_size, valu,
-                          dependency_list, dependencies_used);
-             pst = (struct partial_symtab *) 0;
-             includes_used = 0;
-             dependencies_used = 0;
-           }
-
          /* Some compilers (including gcc) emit a pair of initial N_SOs.
             The first one is a directory name; the second the file name.
             If pst exists, is empty, and has a filename ending in '/',
@@ -226,30 +234,18 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
          p = strrchr (namestring, '/');
          if (p && *(p+1) == '\000')
-           {
-             dir_so_symnum = symnum;
-             continue;         /* Simply ignore directory name SOs */
-           }
+           continue;           /* Simply ignore directory name SOs */
 
          /* Some other compilers (C++ ones in particular) emit useless
-            SOs for non-existant .c files. */
-
-         if (last_so_symnum == symnum - 1)
-           continue;           /* Ignore repeated SOs */
-         last_so_symnum = symnum;
-
-         past_first_source_file = 1;
-
-         if (dir_so_symnum == symnum - 1) /* Was prev. SO a directory? */
-           tmp = dir_so_symnum;
-         else
-           tmp = symnum;
-         pst = START_PSYMTAB (objfile, section_offsets,
-                              namestring, valu,
-                              tmp * symbol_size,
-                              objfile -> global_psymbols.next,
-                              objfile -> static_psymbols.next);
-         dir_so_symnum = -10;
+            SOs for non-existant .c files.  We ignore all subsequent SOs that
+            immediately follow the first.  */
+
+         if (!pst)
+           pst = START_PSYMTAB (objfile, section_offsets,
+                                namestring, valu,
+                                first_so_symnum * symbol_size,
+                                objfile -> global_psymbols.next,
+                                objfile -> static_psymbols.next);
          continue;
        }