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]

[PATCH]: Allow compilation by Sun cc


I've checked in this portion of Paul Hilfinger's patch for compiling with Sun cc.

2001-02-06  Michael Snyder  <msnyder@makita.cygnus.com>
        Submitted by Paul Hilfinger (hilfingr@gnat.com) 
        and Andrei Petrov (and@genesyslab.com).
        * findvar.c: Buffers of size MAX_REGISTER_RAW_SIZE or REGISTER_BYTES
        must be allocated dynamically, since these are no longer constants.
        * infcmd.c: Ditto.
        * regcache.c: Ditto.
        * remote.c: Ditto.
        * sol-thread.c: Ditto.
        * valops.c: Ditto.
        * config/sparc/sun4sol2.mh (MH_CFLAGS): Add -I/usr/include/v9, as a
        work-around for a missing Sun header file in solaris for sparc64.

Index: gdb/findvar.c
===================================================================
RCS file: /cvs/src/src/gdb/findvar.c,v
retrieving revision 1.15
diff -c -3 -p -r1.15 findvar.c
*** findvar.c   2000/07/30 01:48:25     1.15
--- findvar.c   2001/02/06 19:52:57
*************** value_of_register (int regnum)
*** 393,399 ****
    CORE_ADDR addr;
    int optim;
    register value_ptr reg_val;
!   char raw_buffer[MAX_REGISTER_RAW_SIZE];
    enum lval_type lval;
  
    get_saved_register (raw_buffer, &optim, &addr,
--- 393,399 ----
    CORE_ADDR addr;
    int optim;
    register value_ptr reg_val;
!   char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
    enum lval_type lval;
  
    get_saved_register (raw_buffer, &optim, &addr,
*************** addresses have not been bound by the dyn
*** 606,612 ****
      case LOC_BASEREG:
      case LOC_BASEREG_ARG:
        {
!       char buf[MAX_REGISTER_RAW_SIZE];
        get_saved_register (buf, NULL, NULL, frame, SYMBOL_BASEREG (var),
                            NULL);
        addr = extract_address (buf, REGISTER_RAW_SIZE (SYMBOL_BASEREG (var)));
--- 606,612 ----
      case LOC_BASEREG:
      case LOC_BASEREG_ARG:
        {
!       char *buf = (char*) alloca (MAX_REGISTER_RAW_SIZE);
        get_saved_register (buf, NULL, NULL, frame, SYMBOL_BASEREG (var),
                            NULL);
        addr = extract_address (buf, REGISTER_RAW_SIZE (SYMBOL_BASEREG (var)));
*************** addresses have not been bound by the dyn
*** 616,622 ****
  
      case LOC_THREAD_LOCAL_STATIC:
        {
!       char buf[MAX_REGISTER_RAW_SIZE];
  
        get_saved_register (buf, NULL, NULL, frame, SYMBOL_BASEREG (var),
                            NULL);
--- 616,622 ----
  
      case LOC_THREAD_LOCAL_STATIC:
        {
!       char *buf = (char*) alloca (MAX_REGISTER_RAW_SIZE);
  
        get_saved_register (buf, NULL, NULL, frame, SYMBOL_BASEREG (var),
                            NULL);
*************** addresses have not been bound by the dyn
*** 711,717 ****
  value_ptr
  value_from_register (struct type *type, int regnum, struct frame_info *frame)
  {
!   char raw_buffer[MAX_REGISTER_RAW_SIZE];
    CORE_ADDR addr;
    int optim;
    value_ptr v = allocate_value (type);
--- 711,717 ----
  value_ptr
  value_from_register (struct type *type, int regnum, struct frame_info *frame)
  {
!   char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
    CORE_ADDR addr;
    int optim;
    value_ptr v = allocate_value (type);
Index: gdb/infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.19
diff -c -3 -p -r1.19 infcmd.c
*** infcmd.c    2001/01/31 01:24:01     1.19
--- infcmd.c    2001/02/06 19:52:57
*************** do_registers_info (int regnum, int fpreg
*** 1467,1474 ****
  
    for (i = 0; i < numregs; i++)
      {
!       char raw_buffer[MAX_REGISTER_RAW_SIZE];
!       char virtual_buffer[MAX_REGISTER_VIRTUAL_SIZE];
  
        /* Decide between printing all regs, nonfloat regs, or specific reg.  */
        if (regnum == -1)
--- 1467,1474 ----
  
    for (i = 0; i < numregs; i++)
      {
!       char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
!       char *virtual_buffer = (char*) alloca (MAX_REGISTER_VIRTUAL_SIZE);
  
        /* Decide between printing all regs, nonfloat regs, or specific reg.  */
        if (regnum == -1)
Index: gdb/regcache.c
===================================================================
RCS file: /cvs/src/src/gdb/regcache.c,v
retrieving revision 1.14
diff -c -3 -p -r1.14 regcache.c
*** regcache.c  2001/01/09 00:12:48     1.14
--- regcache.c  2001/02/06 19:52:57
*************** write_register_bytes (int myregstart, ch
*** 558,564 ****
        /* The register partially overlaps the range being written.  */
        else
        {
!         char regbuf[MAX_REGISTER_RAW_SIZE];
          /* What's the overlap between this register's bytes and
               those the caller wants to write?  */
          int overlapstart = max (regstart, myregstart);
--- 558,564 ----
        /* The register partially overlaps the range being written.  */
        else
        {
!         char *regbuf = (char*) alloca (MAX_REGISTER_RAW_SIZE);
          /* What's the overlap between this register's bytes and
               those the caller wants to write?  */
          int overlapstart = max (regstart, myregstart);
Index: gdb/remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.36
diff -c -3 -p -r1.36 remote.c
*** remote.c    2001/02/02 19:14:33     1.36
--- remote.c    2001/02/06 19:52:58
*************** remote_wait (int pid, struct target_wait
*** 2604,2610 ****
          {
            int i;
            long regno;
!           char regs[MAX_REGISTER_RAW_SIZE];
  
            /* Expedited reply, containing Signal, {regno, reg} repeat */
            /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
--- 2604,2610 ----
          {
            int i;
            long regno;
!           char* regs = (char*) alloca (MAX_REGISTER_RAW_SIZE);
  
            /* Expedited reply, containing Signal, {regno, reg} repeat */
            /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
*************** remote_async_wait (int pid, struct targe
*** 2825,2831 ****
          {
            int i;
            long regno;
!           char regs[MAX_REGISTER_RAW_SIZE];
  
            /* Expedited reply, containing Signal, {regno, reg} repeat */
            /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
--- 2825,2831 ----
          {
            int i;
            long regno;
!           char* regs = (char*) alloca (MAX_REGISTER_RAW_SIZE);
  
            /* Expedited reply, containing Signal, {regno, reg} repeat */
            /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
Index: gdb/sol-thread.c
===================================================================
RCS file: /cvs/src/src/gdb/sol-thread.c,v
retrieving revision 1.20
diff -c -3 -p -r1.20 sol-thread.c
*** sol-thread.c        2001/01/24 21:01:02     1.20
--- sol-thread.c        2001/02/06 19:52:58
*************** sol_thread_store_registers (int regno)
*** 685,691 ****
    if (regno != -1)
      {                         /* Not writing all the regs */
        /* save new register value */
!       char old_value[REGISTER_SIZE];
        memcpy (old_value, &registers[REGISTER_BYTE (regno)], REGISTER_SIZE);
  
        val = p_td_thr_getgregs (&thandle, gregset);
--- 685,691 ----
    if (regno != -1)
      {                         /* Not writing all the regs */
        /* save new register value */
!       char* old_value = (char*) alloca (REGISTER_SIZE);
        memcpy (old_value, &registers[REGISTER_BYTE (regno)], REGISTER_SIZE);
  
        val = p_td_thr_getgregs (&thandle, gregset);
Index: gdb/valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.30
diff -c -3 -p -r1.30 valops.c
*** valops.c    2001/02/06 18:07:48     1.30
--- valops.c    2001/02/06 19:52:58
*************** value_assign (register value_ptr toval, 
*** 570,576 ****
  {
    register struct type *type;
    register value_ptr val;
!   char raw_buffer[MAX_REGISTER_RAW_SIZE];
    int use_buffer = 0;
  
    if (!toval->modifiable)
--- 570,576 ----
  {
    register struct type *type;
    register value_ptr val;
!   char *raw_buffer = (char*) alloca (MAX_REGISTER_RAW_SIZE);
    int use_buffer = 0;
  
    if (!toval->modifiable)
*************** CORE_ADDR
*** 1027,1033 ****
  push_word (CORE_ADDR sp, ULONGEST word)
  {
    register int len = REGISTER_SIZE;
!   char buffer[MAX_REGISTER_RAW_SIZE];
  
    store_unsigned_integer (buffer, len, word);
    if (INNER_THAN (1, 2))
--- 1027,1033 ----
  push_word (CORE_ADDR sp, ULONGEST word)
  {
    register int len = REGISTER_SIZE;
!   char *buffer = alloca (MAX_REGISTER_RAW_SIZE);
  
    store_unsigned_integer (buffer, len, word);
    if (INNER_THAN (1, 2))
*************** You must use a pointer to function type 
*** 1665,1671 ****
      SAVE_DUMMY_FRAME_TOS (sp);
  
    {
!     char retbuf[REGISTER_BYTES];
      char *name;
      struct symbol *symbol;
  
--- 1665,1671 ----
      SAVE_DUMMY_FRAME_TOS (sp);
  
    {
!     char *retbuf = (char*) alloca (REGISTER_BYTES);
      char *name;
      struct symbol *symbol;
  
Index: gdb/config/sparc/sun4sol2.mh
===================================================================
RCS file: /cvs/src/src/gdb/config/sparc/sun4sol2.mh,v
retrieving revision 1.3
diff -c -3 -p -r1.3 sun4sol2.mh
*** sun4sol2.mh 2000/10/24 20:05:36     1.3
--- sun4sol2.mh 2001/02/06 19:52:58
*************** NAT_FILE= nm-sun4sol2.h
*** 8,13 ****
--- 8,16 ----
  NATDEPFILES= corelow.o core-sol2.o solib.o solib-svr4.o fork-child.o procfs.o \
        proc-api.o proc-events.o proc-flags.o proc-why.o
  
+ # /usr/include/v9 is needed only by core-sol2.c when including 
+ # v9/sys/privregs.h, or rather the headers it in turn includes.
+ MH_CFLAGS=-I/usr/include/v9
  # If you are compiling with Sun's compiler, add the -xs option to CC
  # (e.g. `make CC="cc -xs"').
  # Sun's compilers require the -xs option to produce debug information
*************** NATDEPFILES= corelow.o core-sol2.o solib
*** 15,19 ****
  # files only, with undocumented pointers to it in the linked executable.
  # This is commented out because we don't assume that the Sun compiler
  # is in use.
! #MH_CFLAGS=-xs
  HOST_IPC=-DBSD_IPC
--- 18,22 ----
  # files only, with undocumented pointers to it in the linked executable.
  # This is commented out because we don't assume that the Sun compiler
  # is in use.
! #MH_CFLAGS=-xs -I/usr/include/v9
  HOST_IPC=-DBSD_IPC

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