Tue Dec 15 10:05:56 1992 Ian Lance Taylor (ian@cygnus.com)
authorIan Lance Taylor <ian@airs.com>
Tue, 15 Dec 1992 18:12:37 +0000 (18:12 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 15 Dec 1992 18:12:37 +0000 (18:12 +0000)
* coffread.c (decode_type): catch negative tagndx fields generated
by SCO 3.2v4 cc.
* exec.c: comment out string following #endif.
* configure.in (i[34]86-*-sco3.2v4*): use host i386sco4.
* xm-i386sco.h: include <sys/types.h> and <sys/dir.h>, required by
<sys/user.h>.
* config/i386sco4.mh: new file; like i386sco.mh, but don't require
gcc, and define const to empty to avoid SCO 3.2v4 cc bug.

gdb/ChangeLog
gdb/coffread.c
gdb/config/i386sco4.mh [new file with mode: 0644]
gdb/configure.in
gdb/exec.c
gdb/xm-i386sco.h

index c248d25c0ba81cca7e4f2bb2dad43e22f0afa1bb..9fe599997c843abaca46c9636d3f237fb7d91560 100644 (file)
@@ -1,3 +1,14 @@
+Tue Dec 15 10:05:56 1992  Ian Lance Taylor  (ian@cygnus.com)
+
+       * coffread.c (decode_type): catch negative tagndx fields generated
+       by SCO 3.2v4 cc.
+       * exec.c: comment out string following #endif.
+       * configure.in (i[34]86-*-sco3.2v4*): use host i386sco4.        
+       * xm-i386sco.h: include <sys/types.h> and <sys/dir.h>, required by
+       <sys/user.h>.
+       * config/i386sco4.mh: new file; like i386sco.mh, but don't require
+       gcc, and define const to empty to avoid SCO 3.2v4 cc bug.
+
 Tue Dec 15 04:14:24 1992  Fred Fish  (fnf@cygnus.com)
 
        * complaints.c:  New file, code moved from utils.c.
index 6df64928776625635e5c645e72f5be464e401d68..6078b63c9946ad5a8e6d0330eb313bcf96430dd3 100644 (file)
@@ -1800,12 +1800,15 @@ decode_type (cs, c_type, aux)
      struct, union, and enum types.  EPI a29k coff
      fakes us out by producing aux entries with a nonzero
      x_tagndx for definitions of structs, unions, and enums, so we
-     have to check the c_sclass field.  */
+     have to check the c_sclass field.  SCO 3.2v4 cc gets confused
+     with pointers to pointers to defined structs, and generates
+     negative x_tagndx fields.  */
   if (cs->c_naux > 0 && aux->x_sym.x_tagndx.l != 0)
     {
-      if  (cs->c_sclass != C_STRTAG
-       && cs->c_sclass != C_UNTAG
-       && cs->c_sclass != C_ENTAG)
+      if (cs->c_sclass != C_STRTAG
+         && cs->c_sclass != C_UNTAG
+         && cs->c_sclass != C_ENTAG
+         && aux->x_sym.x_tagndx.l >= 0)
        {
          type = coff_alloc_type (aux->x_sym.x_tagndx.l);
          return type;
diff --git a/gdb/config/i386sco4.mh b/gdb/config/i386sco4.mh
new file mode 100644 (file)
index 0000000..8eb0657
--- /dev/null
@@ -0,0 +1,12 @@
+# Host: Intel 386 running SCO Unix 3.2v4
+XDEPFILES= i387-tdep.o
+XM_FILE= xm-i386sco.h
+NAT_FILE= nm-i386sco.h
+NATDEPFILES= infptrace.o inftarg.o fork-child.o coredep.o corelow.o i386v-nat.o
+XM_CLIBS= -lPW
+SYSV_DEFINE=-DSYSV
+REGEX=regex.o
+REGEX1=regex.o
+# The cc compiler mishandles const in cases like 
+# struct type ** const (c_builtin_types[]) = 
+MH_CFLAGS=-Dconst=
index c5c389d9481cd76fb530024da2f39b534a3f4987..54f9cff707e63a379d511a012cade2d6ca38ce65 100644 (file)
@@ -24,6 +24,7 @@ i[34]86-*-bsd*)               gdb_host=i386bsd ;;
 i[34]86-*-go32)                gdb_host=go32 ;;
 i[34]86-*-linux)       gdb_host=linux ;;
 i[34]86-*-mach)                gdb_host=i386mach ;;
+i[34]86-*-sco3.2v4*)   gdb_host=i386sco4 ;;
 i[34]86-*-sco*)                gdb_host=i386sco ;;
 i[34]86-*-solaris*)    gdb_host=i386sol2 ;;
 i[34]86-*-sunos*)      gdb_host=sun386 ;;
index 9e6167589b467c31788ad444fec6ff2feb051622..ef78097ea44760a21f091eec5e53046a0c14465f 100644 (file)
@@ -180,7 +180,7 @@ exec_file_command (args, from_tty)
        (*exec_file_display_hook) (filename);
     }
   else if (from_tty)
-    printf_filtered ("No exec file now.\n");
+    printf ("No exec file now.\n");
 }
 
 /* Set both the exec file and the symbol file, in one command.  
@@ -329,7 +329,7 @@ xfer_memory (memaddr, myaddr, len, write, target)
        wanna_xfer = coredata;
       }
 #endif                         /* REG_STACK_SEGMENT */
-#endif FIXME
+#endif /* FIXME */
 \f
 void
 print_section_info (t, abfd)
@@ -408,7 +408,7 @@ struct target_ops exec_ops = {
        "Use an executable file as a target.\n\
 Specify the filename of the executable file.",
        exec_file_command, exec_close, /* open, close */
-       child_attach, 0, 0, 0, /* attach, detach, resume, wait, */
+       find_default_attach, 0, 0, 0, /* attach, detach, resume, wait, */
        0, 0, /* fetch_registers, store_registers, */
        0, /* prepare_to_store, */
        xfer_memory, exec_files_info,
@@ -416,8 +416,10 @@ Specify the filename of the executable file.",
        0, 0, 0, 0, 0, /* terminal stuff */
        0, 0, /* kill, load */
        0, /* lookup sym */
-       child_create_inferior,
+       find_default_create_inferior,
        0, /* mourn_inferior */
+       0, /* can_run */
+       0, /* notice_signals */
        file_stratum, 0, /* next */
        0, 1, 0, 0, 0,  /* all mem, mem, stack, regs, exec */
        0, 0,                   /* section pointers */
index 88870cabd449a5ba5b35e4c8426bb01f505904d7..8641ef6e1ff20eee6f593ad5cc42aba19b1bcac6 100644 (file)
@@ -17,6 +17,10 @@ You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
+/* In 3.2v4 <sys/user.h> requires on <sys/dir.h>.  */
+#include <sys/types.h>
+#include <sys/dir.h>
+
 #include "xm-i386v.h"
 
 /* Apparently there is inconsistency among various System V's about what