[PATCH]: procfs fix for 64-bits (ATTN: Nick Duffek
msnyder@cygnus.com
msnyder@cygnus.com
Wed May 3 12:55:00 GMT 2000
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)
{
More information about the Gdb-patches
mailing list