This is the mail archive of the gdb-patches@sourceware.cygnus.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]

[PATCH]: procfs fix for 64-bits (ATTN: Nick Duffek


There's a potential source of conflict here between Solaris and
UnixWare, so I'd like Nick to check these changes out on UnixWare
(if possible both in 32-bit and 64-bit native modes) before I
check them in.  If they conflict, then we'll have to do something
like:
#ifdef UNIXWARE
typedef int cmd_t;
#else
typedef long cmd_t;
#endif

Solaris declares this set of /proc parameters to be long.
UnixWare declares them to be int.  For Sparc32 it doesn't
make a difference, but for Sparc64 it does.

2000-05-03  Michael Snyder  <msnyder@seadog.cygnus.com>

        * procfs.c (int cmd;) Change to long cmd; affects many functions.
        The Sun documentation for procfs calls for these arguments to
        be longs.
        * proc-api.c (write_with_trace): Change int arg to long.
        Change int opcode to long.

Index: procfs.c
===================================================================
RCS file: /cvs/src/src/gdb/procfs.c,v
retrieving revision 1.6
diff -p -r1.6 procfs.c
*** procfs.c	2000/04/27 01:04:52	1.6
--- procfs.c	2000/05/03 19:46:44
*************** proc_stop_process (pi)
*** 1391,1397 ****
    else
      {
  #ifdef NEW_PROC_API
!       int cmd = PCSTOP;
        win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
  #else	/* ioctl method */
        win = (ioctl (pi->ctl_fd, PIOCSTOP, &pi->prstatus) >= 0);
--- 1391,1397 ----
    else
      {
  #ifdef NEW_PROC_API
!       long cmd = PCSTOP;
        win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
  #else	/* ioctl method */
        win = (ioctl (pi->ctl_fd, PIOCSTOP, &pi->prstatus) >= 0);
*************** proc_wait_for_stop (pi)
*** 1435,1441 ****
  
  #ifdef NEW_PROC_API
    {
!     int cmd = PCWSTOP;
      win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
      /* We been runnin' and we stopped -- need to update status.  */
      pi->status_valid = 0;
--- 1435,1441 ----
  
  #ifdef NEW_PROC_API
    {
!     long cmd = PCWSTOP;
      win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
      /* We been runnin' and we stopped -- need to update status.  */
      pi->status_valid = 0;
*************** proc_run_process (pi, step, signo)
*** 1512,1518 ****
  
  #ifdef NEW_PROC_API
    {
!     int cmd[2];
  
      cmd[0]  = PCRUN;
      cmd[1]  = runflags;
--- 1512,1518 ----
  
  #ifdef NEW_PROC_API
    {
!     long cmd[2];
  
      cmd[0]  = PCRUN;
      cmd[1]  = runflags;
*************** proc_set_traced_signals (pi, sigset)
*** 1558,1564 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char sigset[sizeof (sigset_t)];
      } arg;
--- 1558,1564 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char sigset[sizeof (sigset_t)];
      } arg;
*************** proc_set_traced_faults (pi, fltset)
*** 1606,1612 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char fltset[sizeof (fltset_t)];
      } arg;
--- 1606,1612 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char fltset[sizeof (fltset_t)];
      } arg;
*************** proc_set_traced_sysentry (pi, sysset)
*** 1652,1658 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char sysset[sizeof (sysset_t)];
      } arg;
--- 1652,1658 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char sysset[sizeof (sysset_t)];
      } arg;
*************** proc_set_traced_sysexit (pi, sysset)
*** 1698,1704 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char sysset[sizeof (sysset_t)];
      } arg;
--- 1698,1704 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char sysset[sizeof (sysset_t)];
      } arg;
*************** proc_set_held_signals (pi, sighold)
*** 1744,1750 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char hold[sizeof (sigset_t)];
      } arg;
--- 1744,1750 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char hold[sizeof (sigset_t)];
      } arg;
*************** proc_clear_current_fault (pi)
*** 2162,2168 ****
  
  #ifdef NEW_PROC_API
    {
!     int cmd = PCCFAULT;
      win = (write (pi->ctl_fd, (void *) &cmd, sizeof (cmd)) == sizeof (cmd));
    }
  #else
--- 2162,2168 ----
  
  #ifdef NEW_PROC_API
    {
!     long cmd = PCCFAULT;
      win = (write (pi->ctl_fd, (void *) &cmd, sizeof (cmd)) == sizeof (cmd));
    }
  #else
*************** proc_set_current_signal (pi, signo)
*** 2192,2198 ****
  {
    int win;
    struct {
!     int cmd;
      /* Use char array to avoid alignment issues.  */
      char sinfo[sizeof (struct siginfo)];
    } arg;
--- 2192,2198 ----
  {
    int win;
    struct {
!     long cmd;
      /* Use char array to avoid alignment issues.  */
      char sinfo[sizeof (struct siginfo)];
    } arg;
*************** proc_clear_current_signal (pi)
*** 2262,2268 ****
  #ifdef NEW_PROC_API
    {
      struct {
!       int cmd;
        /* Use char array to avoid alignment issues.  */
        char sinfo[sizeof (struct siginfo)];
      } arg;
--- 2262,2268 ----
  #ifdef NEW_PROC_API
    {
      struct {
!       long cmd;
        /* Use char array to avoid alignment issues.  */
        char sinfo[sizeof (struct siginfo)];
      } arg;
*************** proc_set_gregs (pi)
*** 2422,2428 ****
      {
  #ifdef NEW_PROC_API
        struct {
! 	int cmd;
  	/* Use char array to avoid alignment issues.  */
  	char gregs[sizeof (gdb_gregset_t)];
        } arg;
--- 2422,2428 ----
      {
  #ifdef NEW_PROC_API
        struct {
! 	long cmd;
  	/* Use char array to avoid alignment issues.  */
  	char gregs[sizeof (gdb_gregset_t)];
        } arg;
*************** proc_set_fpregs (pi)
*** 2466,2472 ****
      {
  #ifdef NEW_PROC_API
        struct {
! 	int cmd;
  	/* Use char array to avoid alignment issues.  */
  	char fpregs[sizeof (gdb_fpregset_t)];
        } arg;
--- 2466,2472 ----
      {
  #ifdef NEW_PROC_API
        struct {
! 	long cmd;
  	/* Use char array to avoid alignment issues.  */
  	char fpregs[sizeof (gdb_fpregset_t)];
        } arg;
*************** proc_kill (pi, signo)
*** 2530,2536 ****
    else
      {
  #ifdef NEW_PROC_API
!       int cmd[2];
  
        cmd[0] = PCKILL;
        cmd[1] = signo;
--- 2530,2536 ----
    else
      {
  #ifdef NEW_PROC_API
!       long cmd[2];
  
        cmd[0] = PCKILL;
        cmd[1] = signo;
*************** proc_set_watchpoint (pi, addr, len, wfla
*** 2594,2600 ****
    return 0;
  #else
    struct {
!     int cmd;
      char watch[sizeof (prwatch_t)];
    } arg;
    prwatch_t *pwatch;
--- 2594,2600 ----
    return 0;
  #else
    struct {
!     long cmd;
      char watch[sizeof (prwatch_t)];
    } arg;
    prwatch_t *pwatch;
Index: proc-api.c
===================================================================
RCS file: /cvs/src/src/gdb/proc-api.c,v
retrieving revision 1.2
diff -p -r1.2 proc-api.c
*** proc-api.c	2000/04/27 00:53:41	1.2
--- proc-api.c	2000/05/03 19:46:44
*************** static off_t lseek_offset;
*** 440,453 ****
  int
  write_with_trace (fd, arg, len, file, line)
       int  fd;
!      int *arg;
       size_t len;
       char *file;
       int  line;
  {
    int  i;
    int ret;
!   int opcode = arg[0];
  
    if (procfs_trace)
      {
--- 440,453 ----
  int
  write_with_trace (fd, arg, len, file, line)
       int  fd;
!      long *arg;
       size_t len;
       char *file;
       int  line;
  {
    int  i;
    int ret;
!   long opcode = arg[0];
  
    if (procfs_trace)
      {

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