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]

gdb under solaris7


The patch below lets to build gdb with SUNWspro cc compiler.
The problem is that gdb sources use on gnu c extension
'array of variable length'.
--
	Andrey 
Index: findvar.c
===================================================================
RCS file: /cvs/src/src/gdb/findvar.c,v
retrieving revision 1.15
diff -c -r1.15 findvar.c
*** findvar.c	2000/07/30 01:48:25	1.15
--- findvar.c	2000/08/30 20:00:03
***************
*** 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 = alloca(MAX_REGISTER_RAW_SIZE);
    enum lval_type lval;
  
    get_saved_register (raw_buffer, &optim, &addr,
***************
*** 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 = 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)));
***************
*** 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 = alloca(MAX_REGISTER_RAW_SIZE);
  
  	get_saved_register (buf, NULL, NULL, frame, SYMBOL_BASEREG (var),
  			    NULL);
***************
*** 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 = alloca(MAX_REGISTER_RAW_SIZE);
    CORE_ADDR addr;
    int optim;
    value_ptr v = allocate_value (type);
Index: infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.10
diff -c -r1.10 infcmd.c
*** infcmd.c	2000/08/01 14:48:00	1.10
--- infcmd.c	2000/08/30 20:00:04
***************
*** 1449,1456 ****
  
    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)
--- 1449,1456 ----
  
    for (i = 0; i < numregs; i++)
      {
!       char *raw_buffer = alloca(MAX_REGISTER_RAW_SIZE);
!       char *virtual_buffer = alloca(MAX_REGISTER_VIRTUAL_SIZE);
  
        /* Decide between printing all regs, nonfloat regs, or specific reg.  */
        if (regnum == -1)
Index: regcache.c
===================================================================
RCS file: /cvs/src/src/gdb/regcache.c,v
retrieving revision 1.9
diff -c -r1.9 regcache.c
*** regcache.c	2000/08/25 21:03:00	1.9
--- regcache.c	2000/08/30 20:00:04
***************
*** 502,508 ****
        /* 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);
--- 502,508 ----
        /* The register partially overlaps the range being written.  */
        else
  	{
! 	  char *regbuf = 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: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.22
diff -c -r1.22 remote.c
*** remote.c	2000/08/24 10:48:22	1.22
--- remote.c	2000/08/30 20:00:05
***************
*** 1238,1244 ****
    int i, value = 0;
    unsigned char *scan;
  
!   scan = (char *) ref;
    scan += 4;
    i = 4;
    while (i-- > 0)
--- 1238,1244 ----
    int i, value = 0;
    unsigned char *scan;
  
!   scan = (unsigned char *) ref;
    scan += 4;
    i = 4;
    while (i-- > 0)
***************
*** 1343,1349 ****
  
    while ((pkt < limit) && mask && *pkt)		/* packets are terminated with nulls */
      {
!       pkt = unpack_int (pkt, &tag);	/* tag */
        pkt = unpack_byte (pkt, &length);		/* length */
        if (!(tag & mask))	/* tags out of synch with mask */
  	{
--- 1343,1349 ----
  
    while ((pkt < limit) && mask && *pkt)		/* packets are terminated with nulls */
      {
!       pkt = unpack_int (pkt, (int *)&tag);	/* tag */
        pkt = unpack_byte (pkt, &length);		/* length */
        if (!(tag & mask))	/* tags out of synch with mask */
  	{
***************
*** 1892,1898 ****
         sect != 0;
         sect = sect->next)
      {
!       p = (unsigned char *) bfd_get_section_name (abfd, sect);
        len = strlen (p);
        if (strcmp (p + len - 4, "data") == 0)	/* ends in "data" */
  	if (data_base == 0 ||
--- 1892,1898 ----
         sect != 0;
         sect = sect->next)
      {
!       p = (char *) bfd_get_section_name (abfd, sect);
        len = strlen (p);
        if (strcmp (p + len - 4, "data") == 0)	/* ends in "data" */
  	if (data_base == 0 ||
***************
*** 2619,2625 ****
  	  {
  	    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
--- 2619,2625 ----
  	  {
  	    int i;
  	    long regno;
! 	    char *regs = alloca(MAX_REGISTER_RAW_SIZE);
  
  	    /* Expedited reply, containing Signal, {regno, reg} repeat */
  	    /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
***************
*** 2840,2846 ****
  	  {
  	    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
--- 2840,2846 ----
  	  {
  	    int i;
  	    long regno;
! 	    char *regs = alloca(MAX_REGISTER_RAW_SIZE);
  
  	    /* Expedited reply, containing Signal, {regno, reg} repeat */
  	    /*  format is:  'Tssn...:r...;n...:r...;n...:r...;#cc', where
***************
*** 3040,3046 ****
    char *buf = alloca (PBUFSIZ);
    int i;
    char *p;
!   char regs[REGISTER_BYTES];
  
    set_thread (inferior_pid, 1);
  
--- 3040,3046 ----
    char *buf = alloca (PBUFSIZ);
    int i;
    char *p;
!   char *regs = alloca(REGISTER_BYTES);
  
    set_thread (inferior_pid, 1);
  
Index: sol-thread.c
===================================================================
RCS file: /cvs/src/src/gdb/sol-thread.c,v
retrieving revision 1.12
diff -c -r1.12 sol-thread.c
*** sol-thread.c	2000/07/30 01:48:27	1.12
--- sol-thread.c	2000/08/30 20:00:06
***************
*** 682,688 ****
    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);
--- 682,688 ----
    if (regno != -1)
      {				/* Not writing all the regs */
        /* save new register value */
!       char *old_value = alloca(REGISTER_SIZE);
        memcpy (old_value, &registers[REGISTER_BYTE (regno)], REGISTER_SIZE);
  
        val = p_td_thr_getgregs (&thandle, gregset);
Index: sparc-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
retrieving revision 1.7
diff -c -r1.7 sparc-tdep.c
*** sparc-tdep.c	2000/08/10 23:53:45	1.7
--- sparc-tdep.c	2000/08/30 20:00:07
***************
*** 209,215 ****
     set up a simulated single-step, we undo our damage.  */
  
  void
! sparc_software_single_step (enum target_signal ignore,	/* pid, but we don't need it */
  			    int insert_breakpoints_p)
  {
    branch_type br;
--- 209,215 ----
     set up a simulated single-step, we undo our damage.  */
  
  void
! sparc_software_single_step (/*enum target_signal*/ uint ignore,	/* pid, but we don't need it */
  			    int insert_breakpoints_p)
  {
    branch_type br;
***************
*** 2899,2905 ****
        0xd203a048, 0x40000000, 0xd003a044, 0x01000000,
        0x91d02001, 0x01000000
      };
!   static LONGEST call_dummy_64[] = 
      { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL,
        0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL,
        0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL,
--- 2899,2905 ----
        0xd203a048, 0x40000000, 0xd003a044, 0x01000000,
        0x91d02001, 0x01000000
      };
!   static unsigned LONGEST call_dummy_64[] = 
      { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL,
        0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL,
        0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL,
Index: valops.c
===================================================================
RCS file: /cvs/src/src/gdb/valops.c,v
retrieving revision 1.24
diff -c -r1.24 valops.c
*** valops.c	2000/08/04 03:17:57	1.24
--- valops.c	2000/08/30 20:00:08
***************
*** 561,567 ****
  {
    register struct type *type;
    register value_ptr val;
!   char raw_buffer[MAX_REGISTER_RAW_SIZE];
    int use_buffer = 0;
  
    if (!toval->modifiable)
--- 561,567 ----
  {
    register struct type *type;
    register value_ptr val;
!   char *raw_buffer = alloca(MAX_REGISTER_RAW_SIZE);
    int use_buffer = 0;
  
    if (!toval->modifiable)
***************
*** 1018,1024 ****
  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))
--- 1018,1024 ----
  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))
***************
*** 1661,1667 ****
      SAVE_DUMMY_FRAME_TOS (sp);
  
    {
!     char retbuf[REGISTER_BYTES];
      char *name;
      struct symbol *symbol;
  
--- 1661,1667 ----
      SAVE_DUMMY_FRAME_TOS (sp);
  
    {
!     char *retbuf = alloca(REGISTER_BYTES);
      char *name;
      struct symbol *symbol;
  

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