This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[RFA?] Windows cleanup


I should probably submit these as two patches.  One part cleans up some
cygwin ifdefs, the other eliminates _MSC_VER tests.

I think that all of these qualify as obvious fixes, given that I'm the
Cygwin maintainer and _MSC_VER is no longer supported, however, I'd
like someone to verify that I properly whacked the ifdefs since I can't
really test things like "nindy-share".

Thanks to Eli for pointing all of this out a while ago.  I love
eliminating obsolete stuff.

cgf

Wed May 30 23:02:44 2001  Christopher Faylor <cgf@cygnus.com>

	* gnu-regex.c: Eliminate obsolete check for _MSC_VER.
	* utils.c (quit): Ditto.
	* values.c (unpack_double): Ditto.
	* defs.h: Ditto.
	* m32-rom.c: Ditto.
	* p-exp.y: Ditto.
	* ser-e7kpc.c: Ditto.  Define WIN32_LEAN_AND_MEAN under _WIN32, for
	faster compilation.
	(get_ds_base): Remove _MSC_VER version of this function.
	* utils.c (notice_quit): Ditto.
	* values.c (unpack_double): Remove obsolete check for _MSC_VER.
	* nindy-share/ttyflush.c: Ditto.
	* rdi-share/host.h: Ditto.

        * main.c (captured_main): Eliminate special Cygwin checks.
        * ser-tcp.c: Remove unneeded __CYGWIN__ guard against system include.

Index: gnu-regex.c
===================================================================
RCS file: /cvs/uberbaum/gdb/gnu-regex.c,v
retrieving revision 1.5
diff -c -2 -0 -p -r1.5 gnu-regex.c
*** gnu-regex.c	2001/03/06 08:21:07	1.5
--- gnu-regex.c	2001/05/30 21:34:57
*************** static reg_errcode_t compile_range _RE_A
*** 1573,1627 ****
     relative address offset by the three bytes the jump itself occupies.  */
  #define STORE_JUMP(op, loc, to) \
    store_op1 (op, loc, (int) ((to) - (loc) - 3))
  
  /* Likewise, for a two-argument jump.  */
  #define STORE_JUMP2(op, loc, to, arg) \
    store_op2 (op, loc, (int) ((to) - (loc) - 3), arg)
  
  /* Like `STORE_JUMP', but for inserting.  Assume `b' is the buffer end.  */
  #define INSERT_JUMP(op, loc, to) \
    insert_op1 (op, loc, (int) ((to) - (loc) - 3), b)
  
  /* Like `STORE_JUMP2', but for inserting.  Assume `b' is the buffer end.  */
  #define INSERT_JUMP2(op, loc, to, arg) \
    insert_op2 (op, loc, (int) ((to) - (loc) - 3), arg, b)
  
  
  /* This is not an arbitrary limit: the arguments which represent offsets
     into the pattern are two bytes long.  So if 2^16 bytes turns out to
     be too small, many things would have to change.  */
! /* Any other compiler which, like MSC, has allocation limit below 2^16
!    bytes will have to use approach similar to what was done below for
!    MSC and drop MAX_BUF_SIZE a bit.  Otherwise you may end up
!    reallocating to 0 bytes.  Such thing is not going to work too well.
!    You have been warned!!  */
! #if defined _MSC_VER  && !defined WIN32
! /* Microsoft C 16-bit versions limit malloc to approx 65512 bytes.
!    The REALLOC define eliminates a flurry of conversion warnings,
!    but is not required. */
! # define MAX_BUF_SIZE  65500L
! # define REALLOC(p,s) realloc ((p), (size_t) (s))
! #else
! # define MAX_BUF_SIZE (1L << 16)
! # define REALLOC(p,s) realloc ((p), (s))
! #endif
  
  /* Extend the buffer by twice its current size via realloc and
     reset the pointers that pointed into the old block to point to the
     correct places in the new one.  If extending the buffer results in it
     being larger than MAX_BUF_SIZE, then flag memory exhausted.  */
  #define EXTEND_BUFFER()							\
    do { 									\
      unsigned char *old_buffer = bufp->buffer;				\
      if (bufp->allocated == MAX_BUF_SIZE) 				\
        return REG_ESIZE;							\
      bufp->allocated <<= 1;						\
      if (bufp->allocated > MAX_BUF_SIZE)					\
        bufp->allocated = MAX_BUF_SIZE; 					\
      bufp->buffer = (unsigned char *) REALLOC (bufp->buffer, bufp->allocated);\
      if (bufp->buffer == NULL)						\
        return REG_ESPACE;						\
      /* If the buffer moved, move all the pointers into it.  */		\
      if (old_buffer != bufp->buffer)					\
        {									\
          b = (b - old_buffer) + bufp->buffer;				\
--- 1573,1614 ----
     relative address offset by the three bytes the jump itself occupies.  */
  #define STORE_JUMP(op, loc, to) \
    store_op1 (op, loc, (int) ((to) - (loc) - 3))
  
  /* Likewise, for a two-argument jump.  */
  #define STORE_JUMP2(op, loc, to, arg) \
    store_op2 (op, loc, (int) ((to) - (loc) - 3), arg)
  
  /* Like `STORE_JUMP', but for inserting.  Assume `b' is the buffer end.  */
  #define INSERT_JUMP(op, loc, to) \
    insert_op1 (op, loc, (int) ((to) - (loc) - 3), b)
  
  /* Like `STORE_JUMP2', but for inserting.  Assume `b' is the buffer end.  */
  #define INSERT_JUMP2(op, loc, to, arg) \
    insert_op2 (op, loc, (int) ((to) - (loc) - 3), arg, b)
  
  
  /* This is not an arbitrary limit: the arguments which represent offsets
     into the pattern are two bytes long.  So if 2^16 bytes turns out to
     be too small, many things would have to change.  */
! #define MAX_BUF_SIZE (1L << 16)
! #define REALLOC(p,s) realloc ((p), (s))
  
  /* Extend the buffer by twice its current size via realloc and
     reset the pointers that pointed into the old block to point to the
     correct places in the new one.  If extending the buffer results in it
     being larger than MAX_BUF_SIZE, then flag memory exhausted.  */
  #define EXTEND_BUFFER()							\
    do { 									\
      unsigned char *old_buffer = bufp->buffer;				\
      if (bufp->allocated == MAX_BUF_SIZE) 				\
        return REG_ESIZE;							\
      bufp->allocated <<= 1;						\
      if (bufp->allocated > MAX_BUF_SIZE)					\
        bufp->allocated = MAX_BUF_SIZE; 					\
      bufp->buffer = (unsigned char *) REALLOC (bufp->buffer, bufp->allocated);\
      if (bufp->buffer == NULL)						\
        return REG_ESPACE;						\
      /* If the buffer moved, move all the pointers into it.  */		\
      if (old_buffer != bufp->buffer)					\
        {									\
          b = (b - old_buffer) + bufp->buffer;				\
Index: main.c
===================================================================
RCS file: /cvs/uberbaum/gdb/main.c,v
retrieving revision 1.10
diff -c -2 -0 -p -r1.10 main.c
*** main.c	2001/05/07 19:03:11	1.10
--- main.c	2001/05/30 21:34:58
*************** int dbx_commands = 0;
*** 73,116 ****
  struct ui_file *gdb_stdout;
  struct ui_file *gdb_stderr;
  struct ui_file *gdb_stdlog;
  struct ui_file *gdb_stdtarg;
  
  /* Used to initialize error() - defined in utils.c */
  
  extern void error_init (void);
  
  /* Whether to enable writing into executable and core files */
  extern int write_files;
  
  static void print_gdb_help (struct ui_file *);
  
  /* These two are used to set the external editor commands when gdb is farming
     out files to be edited by another program. */
  
  extern int enable_external_editor;
  extern char *external_editor_command;
  
- #ifdef __CYGWIN__
- #include <sys/cygwin.h>		/* for cygwin32_conv_to_posix_path */
- #endif
- 
  /* Call command_loop.  If it happens to return, pass that through as a
     non-zero return status. */
  
  static int
  captured_command_loop (void *data)
  {
    if (command_loop_hook == NULL)
      command_loop ();
    else
      command_loop_hook ();
    /* FIXME: cagney/1999-11-05: A correct command_loop() implementaton
       would clean things up (restoring the cleanup chain) to the state
       they were just prior to the call.  Technically, this means that
       the do_cleanups() below is redundant.  Unfortunately, many FUNCs
       are not that well behaved.  do_cleanups should either be replaced
       with a do_cleanups call (to cover the problem) or an assertion
       check to detect bad FUNCs code. */
    do_cleanups (ALL_CLEANUPS);
    /* If the command_loop returned, normally (rather than threw an
       error) we try to quit. If the quit is aborted, catch_errors()
--- 73,112 ----
*************** extern int gdbtk_test (char *);
*** 517,571 ****
      {
        /* Print all the junk at the top, with trailing "..." if we are about
           to read a symbol file (possibly slowly).  */
        print_gdb_version (gdb_stdout);
        if (symarg)
  	printf_filtered ("..");
        wrap_here ("");
        gdb_flush (gdb_stdout);	/* Force to screen during slow operations */
      }
  
    error_pre_print = "\n\n";
    quit_pre_print = error_pre_print;
  
    /* We may get more than one warning, don't double space all of them... */
    warning_pre_print = "\nwarning: ";
  
    /* Read and execute $HOME/.gdbinit file, if it exists.  This is done
       *before* all the command line arguments are processed; it sets
       global parameters, which are independent of what file you are
       debugging or what directory you are in.  */
- #ifdef __CYGWIN__
-   {
-     char *tmp = getenv ("HOME");
- 
-     if (tmp != NULL)
-       {
- 	homedir = (char *) alloca (PATH_MAX + 1);
- 	cygwin32_conv_to_posix_path (tmp, homedir);
-       }
-     else
-       homedir = NULL;
-   }
- #else
    homedir = getenv ("HOME");
- #endif
    if (homedir)
      {
        homeinit = (char *) alloca (strlen (homedir) +
  				  strlen (gdbinit) + 10);
        strcpy (homeinit, homedir);
        strcat (homeinit, "/");
        strcat (homeinit, gdbinit);
  
        if (!inhibit_gdbinit)
  	{
  	  catch_command_errors (source_command, homeinit, 0, RETURN_MASK_ALL);
  	}
  
        /* Do stats; no need to do them elsewhere since we'll only
           need them if homedir is set.  Make sure that they are
           zero in case one of them fails (this guarantees that they
           won't match if either exists).  */
  
        memset (&homebuf, 0, sizeof (struct stat));
        memset (&cwdbuf, 0, sizeof (struct stat));
--- 513,553 ----
Index: partial-stab.h
===================================================================
RCS file: /cvs/uberbaum/gdb/partial-stab.h,v
retrieving revision 1.7
diff -c -2 -0 -p -r1.7 partial-stab.h
*** partial-stab.h	2001/03/06 08:21:11	1.7
--- partial-stab.h	2001/05/30 21:34:59
*************** switch (CUR_SYMBOL_TYPE)
*** 583,626 ****
  #ifdef SOFUN_ADDRESS_MAYBE_MISSING
  	/* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
  	   value for the bottom of the text seg in those cases. */
  	if (pst && textlow_not_set)
  	  {
  	    pst->textlow =
  	      find_stab_function_addr (namestring, pst->filename, objfile);
  	    textlow_not_set = 0;
  	  }
  #endif
  	/* End kludge.  */
  
  	/* Keep track of the start of the last function so we
  	   can handle end of function symbols.  */
  	last_function_start = CUR_SYMBOL_VALUE;
  
  	/* In reordered executables this function may lie outside
  	   the bounds created by N_SO symbols.  If that's the case
  	   use the address of this function as the low bound for
  	   the partial symbol table.  */
! 	if (textlow_not_set
! 	    || (pst && CUR_SYMBOL_VALUE < pst->textlow
! 		&& CUR_SYMBOL_VALUE
! 		!= ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))))
  	  {
  	    pst->textlow = CUR_SYMBOL_VALUE;
  	    textlow_not_set = 0;
  	  }
  #endif /* DBXREAD_ONLY */
  	add_psymbol_to_list (namestring, p - namestring,
  			     VAR_NAMESPACE, LOC_BLOCK,
  			     &objfile->static_psymbols,
  			     0, CUR_SYMBOL_VALUE,
  			     psymtab_language, objfile);
  	continue;
  
  	/* Global functions were ignored here, but now they
  	   are put into the global psymtab like one would expect.
  	   They're also in the minimal symbol table.  */
        case 'F':
  	CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  #ifdef DBXREAD_ONLY
  	/* Kludges for ELF/STABS with Sun ACC */
  	last_function_name = namestring;
--- 583,627 ----
  #ifdef SOFUN_ADDRESS_MAYBE_MISSING
  	/* Do not fix textlow==0 for .o or NLM files, as 0 is a legit
  	   value for the bottom of the text seg in those cases. */
  	if (pst && textlow_not_set)
  	  {
  	    pst->textlow =
  	      find_stab_function_addr (namestring, pst->filename, objfile);
  	    textlow_not_set = 0;
  	  }
  #endif
  	/* End kludge.  */
  
  	/* Keep track of the start of the last function so we
  	   can handle end of function symbols.  */
  	last_function_start = CUR_SYMBOL_VALUE;
  
  	/* In reordered executables this function may lie outside
  	   the bounds created by N_SO symbols.  If that's the case
  	   use the address of this function as the low bound for
  	   the partial symbol table.  */
! 	if (pst
! 	    && (textlow_not_set
! 		|| (pst && CUR_SYMBOL_VALUE < pst->textlow
! 		  && CUR_SYMBOL_VALUE
! 		  != ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)))))
  	  {
  	    pst->textlow = CUR_SYMBOL_VALUE;
  	    textlow_not_set = 0;
  	  }
  #endif /* DBXREAD_ONLY */
  	add_psymbol_to_list (namestring, p - namestring,
  			     VAR_NAMESPACE, LOC_BLOCK,
  			     &objfile->static_psymbols,
  			     0, CUR_SYMBOL_VALUE,
  			     psymtab_language, objfile);
  	continue;
  
  	/* Global functions were ignored here, but now they
  	   are put into the global psymtab like one would expect.
  	   They're also in the minimal symbol table.  */
        case 'F':
  	CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
  #ifdef DBXREAD_ONLY
  	/* Kludges for ELF/STABS with Sun ACC */
  	last_function_name = namestring;
Index: ser-tcp.c
===================================================================
RCS file: /cvs/uberbaum/gdb/ser-tcp.c,v
retrieving revision 1.4
diff -c -2 -0 -p -r1.4 ser-tcp.c
*** ser-tcp.c	2001/04/05 02:02:13	1.4
--- ser-tcp.c	2001/05/30 21:34:59
***************
*** 12,54 ****
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
  
     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., 59 Temple Place - Suite 330,
     Boston, MA 02111-1307, USA.  */
  
  #include "defs.h"
  #include "serial.h"
  #include "ser-unix.h"
  
  #include <sys/types.h>
  #include <sys/time.h>
  #include <netinet/in.h>
  #include <arpa/inet.h>
  #include <netdb.h>
  #include <sys/socket.h>
- #ifndef __CYGWIN__
- #include <netinet/tcp.h>
- #endif
  
  #include <signal.h>
  #include "gdb_string.h"
  
  static int tcp_open (serial_t scb, const char *name);
  static void tcp_close (serial_t scb);
  
  void _initialize_ser_tcp (void);
  
  /* Open up a raw tcp socket */
  
  static int
  tcp_open (serial_t scb, const char *name)
  {
    char *port_str;
    int port;
    struct hostent *hostent;
    struct sockaddr_in sockaddr;
    int tmp;
    char hostname[100];
--- 12,51 ----
Index: utils.c
===================================================================
RCS file: /cvs/uberbaum/gdb/utils.c,v
retrieving revision 1.40
diff -c -2 -0 -p -r1.40 utils.c
*** utils.c	2001/04/19 23:56:13	1.40
--- utils.c	2001/05/30 21:35:01
*************** quit (void)
*** 851,918 ****
    if (quit_pre_print)
      fprintf_unfiltered (gdb_stderr, quit_pre_print);
  
  #ifdef __MSDOS__
    /* No steenking SIGINT will ever be coming our way when the
       program is resumed.  Don't lie.  */
    fprintf_unfiltered (gdb_stderr, "Quit\n");
  #else
    if (job_control
    /* If there is no terminal switching for this target, then we can't
       possibly get screwed by the lack of job control.  */
        || current_target.to_terminal_ours == NULL)
      fprintf_unfiltered (gdb_stderr, "Quit\n");
    else
      fprintf_unfiltered (gdb_stderr,
  	       "Quit (expect signal SIGINT when the program is resumed)\n");
  #endif
    return_to_top_level (RETURN_QUIT);
  }
  
- 
- #if defined(_MSC_VER)		/* should test for wingdb instead? */
- 
- /*
-  * Windows translates all keyboard and mouse events 
-  * into a message which is appended to the message 
-  * queue for the process.
-  */
- 
  void
  notice_quit (void)
  {
-   int k = win32pollquit ();
-   if (k == 1)
-     quit_flag = 1;
-   else if (k == 2)
-     immediate_quit = 1;
- }
- 
- #else /* !defined(_MSC_VER) */
- 
- void
- notice_quit (void)
- {
    /* Done by signals */
  }
- 
- #endif /* !defined(_MSC_VER) */
  
  /* Control C comes here */
  void
  request_quit (int signo)
  {
    quit_flag = 1;
    /* Restore the signal handler.  Harmless with BSD-style signals, needed
       for System V-style signals.  So just always do it, rather than worrying
       about USG defines and stuff like that.  */
    signal (signo, request_quit);
  
  #ifdef REQUEST_QUIT
    REQUEST_QUIT;
  #else
    if (immediate_quit)
      quit ();
  #endif
  }
  
  /* Memory management stuff (malloc friends).  */
--- 851,895 ----
Index: values.c
===================================================================
RCS file: /cvs/uberbaum/gdb/values.c,v
retrieving revision 1.17
diff -c -2 -0 -p -r1.17 values.c
*** values.c	2001/05/21 20:08:59	1.17
--- values.c	2001/05/30 21:35:03
*************** unpack_double (struct type *type, char *
*** 678,723 ****
  
    *invp = 0;			/* Assume valid.   */
    CHECK_TYPEDEF (type);
    code = TYPE_CODE (type);
    len = TYPE_LENGTH (type);
    nosign = TYPE_UNSIGNED (type);
    if (code == TYPE_CODE_FLT)
      {
  #ifdef INVALID_FLOAT
        if (INVALID_FLOAT (valaddr, len))
  	{
  	  *invp = 1;
  	  return 1.234567891011121314;
  	}
  #endif
        return extract_floating (valaddr, len);
      }
    else if (nosign)
      {
        /* Unsigned -- be sure we compensate for signed LONGEST.  */
- #if !defined (_MSC_VER) || (_MSC_VER > 900)
        return (ULONGEST) unpack_long (type, valaddr);
- #else
-       /* FIXME!!! msvc22 doesn't support unsigned __int64 -> double */
-       return (LONGEST) unpack_long (type, valaddr);
- #endif /* _MSC_VER */
      }
    else
      {
        /* Signed -- we are OK with unpack_long.  */
        return unpack_long (type, valaddr);
      }
  }
  
  /* Unpack raw data (copied from debugee, target byte order) at VALADDR
     as a CORE_ADDR, assuming the raw data is described by type TYPE.
     We don't assume any alignment for the raw data.  Return value is in
     host byte order.
  
     If you want functions and arrays to be coerced to pointers, and
     references to be dereferenced, call value_as_pointer() instead.
  
     C++: It is assumed that the front-end has taken care of
     all matters concerning pointers to members.  A pointer
     to member which reaches here is considered to be equivalent
     to an INT (or some size).  After all, it is only an offset.  */
--- 678,718 ----


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]