Fri Apr 15 11:53:46 1994 Stan Shebs (shebs@andros.cygnus.com)
authorStan Shebs <shebs@codesourcery.com>
Fri, 15 Apr 1994 21:55:49 +0000 (21:55 +0000)
committerStan Shebs <shebs@codesourcery.com>
Fri, 15 Apr 1994 21:55:49 +0000 (21:55 +0000)
* source.c (DIRNAME_SEPARATOR): New macro, replaces all references
to : in search path processing.
* defs.h (qsort): Rename argument in prototype.
* symtab.h (SAYMBOL_VALUE): Rename value field, avoids bugs in
some compilers.
* breakpoint.c, exec.c, mdebugread.c, mipsread.c, xcoffexec.c
(false): Eliminate usages.

gdb/ChangeLog
gdb/breakpoint.c
gdb/defs.h
gdb/mdebugread.c
gdb/source.c
gdb/symtab.h
gdb/xcoffexec.c

index 7780a4ae3a4620f5a7a2028d26ee61b1e0518d97..690aaa0da4ffbe2758dddc247bddfdbe9dd7b636 100644 (file)
@@ -1,3 +1,13 @@
+Fri Apr 15 11:53:46 1994  Stan Shebs  (shebs@andros.cygnus.com)
+
+       * source.c (DIRNAME_SEPARATOR): New macro, replaces all references
+       to : in search path processing.
+       * defs.h (qsort): Rename argument in prototype.
+       * symtab.h (SAYMBOL_VALUE): Rename value field, avoids bugs in
+       some compilers.
+       * breakpoint.c, exec.c, mdebugread.c, mipsread.c, xcoffexec.c
+       (false): Eliminate usages.
+
 Fri Apr 15 11:35:19 1994  Steve Chamberlain  (sac@cygnus.com)
 
        * h8500-tdep.c (initialize_h8500_tdep, large_command):
index 457ca912cd2ea92c2b968ba7590434da7ebb2d37..dc15de265dbe97310e81f3aa3d406d1adcbfc3ef 100644 (file)
@@ -2293,7 +2293,7 @@ can_use_hardware_watchpoint (b)
       if (!(v->lval == lval_memory)
          || v->lval == not_lval
          || (v->lval != not_lval
-             && v->modifiable == false))
+             && v->modifiable == 0))
        return 0;
       else
        if (v->lval == lval_memory)
index 1a49d8c01fe5aff451ec36b0aaee59e450f02a65..d3704346d53b574fea652f916f27f767ba9c0560 100644 (file)
@@ -520,24 +520,24 @@ enum val_prettyprint
 
 #else /* No BFD64 */
 
-/* Default to support for "long long" if the host compiler being used is gcc.
-   Config files must define CC_HAS_LONG_LONG to use other host compilers
-   that are capable of supporting "long long", and to cause gdb to use that
-   support.  Not defining CC_HAS_LONG_LONG will suppress use of "long long"
-   regardless of what compiler is used.
-
-   FIXME: For now, automatic selection of "long long" as the default when
-   gcc is used is disabled, pending further testing.  Concerns include the
-   impact on gdb performance and the universality of bugfree long long
-   support on platforms that do have gcc.  Compiling with FORCE_LONG_LONG
-   will select "long long" use for testing purposes.  -fnf */
+/* If all compilers for this host support "long long" and we want to
+   use it for LONGEST (the performance hit is about 10% on a testsuite
+   run based on one DECstation test), then the xm.h file can define
+   CC_HAS_LONG_LONG.
+
+   Using GCC 1.39 on BSDI with long long causes about 700 new
+   testsuite failures.  Using long long for LONGEST on the DECstation
+   causes 3 new FAILs in the testsuite and many heuristic fencepost
+   warnings.  These are not investigated, but a first guess would be
+   that the BSDI problems are GCC bugs in long long support and the
+   latter are GDB bugs.  */
 
 #ifndef CC_HAS_LONG_LONG
-#  if defined (__GNUC__) /*&& defined (FORCE_LONG_LONG)*/ /* See FIXME above */
+#  if defined (__GNUC__) && defined (FORCE_LONG_LONG)
 #    define CC_HAS_LONG_LONG 1
 #  endif
 #endif
-       
+
 /* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
    CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
    variables and we wish to make use of that support.  */
@@ -739,7 +739,7 @@ free PARAMS ((void *));                                     /* 4.10.3.2 */
 extern void
 qsort PARAMS ((void *base, size_t nmemb,               /* 4.10.5.2 */
               size_t size,
-              int (*comp)(const void *, const void *)));
+              int (*compar)(const void *, const void *)));
 
 #ifndef        MEM_FNS_DECLARED        /* Some non-ANSI use void *, not char *.  */
 extern PTR
index 81e694514ffe368599a4c0e455e9ece4d46bf2a0..cd0efa84d306cbdfd594c37e42ae877537cb4335 100644 (file)
@@ -3767,8 +3767,8 @@ elfmdebug_build_psymtabs (objfile, swap, sec, section_offsets)
   struct ecoff_debug_info *info;
 
   buf = alloca (swap->external_hdr_size);
-  if (bfd_get_section_contents (abfd, sec, buf, (file_ptr) 0,
-                               swap->external_hdr_size) == false)
+  if (!bfd_get_section_contents (abfd, sec, buf, (file_ptr) 0,
+                                swap->external_hdr_size))
     perror_with_name (bfd_get_filename (abfd));
 
   info = ((struct ecoff_debug_info *)
index 5a4733ff2127cb3893d15351ad5fb5c199d51dbd..ec569378306b3c6f70ef9427c0bd1eef119fa52c 100644 (file)
@@ -25,10 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "gdbcmd.h"
 #include "frame.h"
 
-#ifdef USG
 #include <sys/types.h>
-#endif
-
 #include <string.h>
 #include <sys/param.h>
 #include <sys/stat.h>
@@ -38,6 +35,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "symfile.h"
 #include "objfiles.h"
 
+#ifndef DIRNAME_SEPARATOR
+#define DIRNAME_SEPARATOR ':'
+#endif
+
 /* Prototypes for local functions. */
 
 static int
@@ -237,7 +238,10 @@ forget_cached_source_info ()
 void
 init_source_path ()
 {
-  source_path = savestring ("$cdir:$cwd", /* strlen of it */ 10);
+  char buf[20];
+
+  sprintf (buf, "$cdir%c$cwd", DIRNAME_SEPARATOR);
+  source_path = strsave (buf);
   forget_cached_source_info ();
 }
 
@@ -288,7 +292,7 @@ mod_path (dirname, which_path)
       struct stat st;
 
       {
-       char *colon = strchr (name, ':');
+       char *colon = strchr (name, DIRNAME_SEPARATOR);
        char *space = strchr (name, ' ');
        char *tab = strchr (name, '\t');
        if (colon == 0 && space == 0 && tab ==  0)
@@ -303,7 +307,7 @@ mod_path (dirname, which_path)
            if (tab != 0 && (p == 0 || tab < p))
              p = tab;
            dirname = p + 1;
-           while (*dirname == ':' || *dirname == ' ' || *dirname == '\t')
+           while (*dirname == DIRNAME_SEPARATOR || *dirname == ' ' || *dirname == '\t')
              ++dirname;
          }
       }
@@ -378,7 +382,7 @@ mod_path (dirname, which_path)
        while (1)
          {
            if (!strncmp (p, name, len)
-               && (p[len] == '\0' || p[len] == ':'))
+               && (p[len] == '\0' || p[len] == DIRNAME_SEPARATOR))
              {
                /* Found it in the search path, remove old copy */
                if (p > *which_path)
@@ -387,7 +391,7 @@ mod_path (dirname, which_path)
                  goto skip_dup;        /* Same dir twice in one cmd */
                strcpy (p, &p[len+1]);  /* Copy from next \0 or  : */
              }
-           p = strchr (p, ':');
+           p = strchr (p, DIRNAME_SEPARATOR);
            if (p != 0)
              ++p;
            else
@@ -395,6 +399,11 @@ mod_path (dirname, which_path)
          }
        if (p == 0)
          {
+           char tinybuf[2];
+
+           tinybuf[0] = DIRNAME_SEPARATOR;
+           tinybuf[1] = '\0';
+
            /* If we have already tacked on a name(s) in this command,                     be sure they stay on the front as we tack on some more.  */
            if (prefix)
              {
@@ -402,7 +411,7 @@ mod_path (dirname, which_path)
 
                c = old[prefix];
                old[prefix] = '\0';
-               temp = concat (old, ":", name, NULL);
+               temp = concat (old, tinybuf, name, NULL);
                old[prefix] = c;
                *which_path = concat (temp, "", &old[prefix], NULL);
                prefix = strlen (temp);
@@ -410,7 +419,7 @@ mod_path (dirname, which_path)
              }
            else
              {
-               *which_path = concat (name, (old[0]? ":" : old), old, NULL);
+               *which_path = concat (name, (old[0] ? tinybuf : old), old, NULL);
                prefix = strlen (name);
              }
            free (old);
@@ -448,7 +457,7 @@ source_info (ignore, from_tty)
 
 
 \f
-/* Open a file named STRING, searching path PATH (dir names sep by colons)
+/* Open a file named STRING, searching path PATH (dir names sep by some char)
    using mode MODE and protection bits PROT in the calls to open.
 
    If TRY_CWD_FIRST, try to open ./STRING before searching PATH.
@@ -503,7 +512,7 @@ openp (path, try_cwd_first, string, mode, prot, filename_opened)
   fd = -1;
   for (p = path; p; p = p1 ? p1 + 1 : 0)
     {
-      p1 = (char *) strchr (p, ':');
+      p1 = (char *) strchr (p, DIRNAME_SEPARATOR);
       if (p1)
        len = p1 - p;
       else
@@ -535,7 +544,7 @@ openp (path, try_cwd_first, string, mode, prot, filename_opened)
       strcat (filename+len, "/");
       strcat (filename, string);
 
-      fd = open (filename, mode, prot);
+      fd = open (filename, mode);
       if (fd >= 0) break;
     }
 
@@ -587,8 +596,8 @@ open_source_file (s)
       /* We cast strstr's result in case an ANSIhole has made it const,
         which produces a "required warning" when assigned to a nonconst. */
       p = (char *)strstr (source_path, "$cdir");
-      if (p && (p == path || p[-1] == ':')
-           && (p[cdir_len] == ':' || p[cdir_len] == '\0')) {
+      if (p && (p == path || p[-1] == DIRNAME_SEPARATOR)
+           && (p[cdir_len] == DIRNAME_SEPARATOR || p[cdir_len] == '\0')) {
        int len;
 
        path = (char *)
@@ -606,12 +615,12 @@ open_source_file (s)
       /* Didn't work.  Try using just the basename. */
       p = basename (s->filename);
       if (p != s->filename)
-       result = openp(path, 0, p, O_RDONLY,0, &s->fullname);
+       result = openp (path, 0, p, O_RDONLY, 0, &s->fullname);
     }
   if (result >= 0)
     {
-      fullname = s -> fullname;
-      s -> fullname = mstrsave (s -> objfile -> md, s -> fullname);
+      fullname = s->fullname;
+      s->fullname = mstrsave (s->objfile->md, s->fullname);
       free (fullname);
     }
   return result;
@@ -804,6 +813,8 @@ identify_source_line (s, line, mid_statement, pc)
   if (line > s->nlines)
     /* Don't index off the end of the line_charpos array.  */
     return 0;
+  /* FIXME-32x64: Need a version of print_address_numeric which does
+     not pass use_local to print_longest.  */
   printf_unfiltered ("\032\032%s:%d:%d:%s:0x%lx\n", s->fullname,
          line, s->line_charpos[line - 1],
          mid_statement ? "middle" : "beg",
@@ -1025,20 +1036,23 @@ list_command (arg, from_tty)
   if (*arg == '*')
     {
       if (sal.symtab == 0)
+       /* FIXME-32x64--assumes sal.pc fits in long.  */
        error ("No source file for address %s.",
                local_hex_string((unsigned long) sal.pc));
       sym = find_pc_function (sal.pc);
       if (sym)
        {
-         printf_filtered ("%s is in ",
-                          local_hex_string((unsigned long) sal.pc));
+         print_address_numeric (sal.pc, gdb_stdout);
+         printf_filtered (" is in ");
          fputs_filtered (SYMBOL_SOURCE_NAME (sym), gdb_stdout);
          printf_filtered (" (%s:%d).\n", sal.symtab->filename, sal.line);
        }
       else
-       printf_filtered ("%s is at %s:%d.\n",
-                        local_hex_string((unsigned long) sal.pc), 
-                        sal.symtab->filename, sal.line);
+       {
+         print_address_numeric (sal.pc, gdb_stdout);
+         printf_filtered (" is at %s:%d.\n",
+                          sal.symtab->filename, sal.line);
+       }
     }
 
   /* If line was not specified by just a line number,
@@ -1125,7 +1139,7 @@ line_info (arg, from_tty)
          printf_filtered ("\n");
        }
       else if (sal.line > 0
-         && find_line_pc_range (sal.symtab, sal.line, &start_pc, &end_pc))
+              && find_line_pc_range (sal, &start_pc, &end_pc))
        {
          if (start_pc == end_pc)
            {
index 24a807ab2b9d48a0d9466b6912a1c778ac49ac6f..cd1ad34ee2e686976fb77f4c2d644b40963f5d97 100644 (file)
@@ -64,7 +64,7 @@ struct general_symbol_info
       /* The fact that this is a long not a LONGEST mainly limits the
         range of a LOC_CONST.  Since LOC_CONST_BYTES exists, I'm not
         sure that is a big deal.  */
-      long value;
+      long ivalue;
 
       struct block *block;
 
@@ -110,7 +110,7 @@ struct general_symbol_info
 };
 
 #define SYMBOL_NAME(symbol)            (symbol)->ginfo.name
-#define SYMBOL_VALUE(symbol)           (symbol)->ginfo.value.value
+#define SYMBOL_VALUE(symbol)           (symbol)->ginfo.value.ivalue
 #define SYMBOL_VALUE_ADDRESS(symbol)   (symbol)->ginfo.value.address
 #define SYMBOL_VALUE_BYTES(symbol)     (symbol)->ginfo.value.bytes
 #define SYMBOL_BLOCK_VALUE(symbol)     (symbol)->ginfo.value.block
index 892e2d81e72836aeba01bc28597cf93298dbfac1..2d57f928201ad57bfdcd6dbb9511dfb051b706a1 100644 (file)
@@ -358,7 +358,7 @@ xfer_memory (memaddr, myaddr, len, write, target)
          {
            /* Entire transfer is within this section.  */
            res = xfer_fn (p->bfd, p->the_bfd_section, myaddr, memaddr - p->addr, len);
-           return (res != false)? len: 0;
+           return (res != 0) ? len : 0;
          }
        else if (p->endaddr <= memaddr)
          {
@@ -370,7 +370,7 @@ xfer_memory (memaddr, myaddr, len, write, target)
            /* This section overlaps the transfer.  Just do half.  */
            len = p->endaddr - memaddr;
            res = xfer_fn (p->bfd, p->the_bfd_section, myaddr, memaddr - p->addr, len);
-           return (res != false)? len: 0;
+           return (res != 0) ? len : 0;
          }
       else if (p->addr < nextsectaddr)
        nextsectaddr = p->addr;