Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA] stabs: octal negative numbers
@ 2004-10-26 17:39 Jerome Guitton
  2004-10-26 17:50 ` Joel Brobecker
  2004-11-23 14:10 ` Jerome Guitton
  0 siblings, 2 replies; 14+ messages in thread
From: Jerome Guitton @ 2004-10-26 17:39 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 892 bytes --]

The patch in attachment adds support for parsing stabs that contains
negative numbers in octal, two's complement form. I have never
experienced the problem with C programs, but GCC generates those kind
of numbers for some Ada subtypes:

procedure Test_Case is

   type Base_Fixed_Point_Type is
     delta 1.0 / 16.0
       range (System.Min_Int / 2) * 1.0 / 16.0 ..
       (System.Max_Int / 2) * 1.0 / 16.0;

     subtype Fixed_Point_Subtype is
       Base_Fixed_Point_Type range -50.0 .. 50.0;

begin
   null;
end Test_Case;

The stabs generated for Fixed_Point_Subtype is:

.stabs  "test_case__fixed_point_subtype___XF_1_16:t(0,14)=@s64;r(0,12);01777777777777777776340;0000000001440;",128,0,10,0

(01777777777777777776340 is -800 on 64-bits).

Tested on an i686-linux host, with stabs+ format, no regressions.
Worth submitting an Ada test case, I guess.

Comments? OK to apply?

-- 
Jerome

[-- Attachment #2: stabsread.dif --]
[-- Type: text/plain, Size: 11149 bytes --]

2004-10-26  Jerome Guitton  <guitton@gnat.com>

	* stabsread.c (read_huge_number): Add support for reading octal
	signed number in twos complement, based on the size of this
	number.
	(read_range_type): Add support for reading octal signed bounds
	in twos complements, based on the size of the type.
	(read_type_number, read_cpp_abbrev, read_member_functions,
        read_cpp_abbrev, read_one_struct_field, read_baseclasses,
        read_struct_type, read_array_type, read_enum_type,
        read_sun_builtin_type, read_sun_floating_type): Update calls to
        read_huge_number.
        (read_type): Update call to read_range_type.

Index: stabsread.c
===================================================================
RCS file: /cvs/src/src/gdb/stabsread.c,v
retrieving revision 1.77
diff -u -p -r1.77 stabsread.c
--- stabsread.c	30 Apr 2004 14:40:54 -0000	1.77
+++ stabsread.c	26 Oct 2004 17:11:31 -0000
@@ -92,7 +92,7 @@ read_one_struct_field (struct field_info
 
 static struct type *dbx_alloc_type (int[2], struct objfile *);
 
-static long read_huge_number (char **, int, int *);
+static long read_huge_number (char **, int, int *, int);
 
 static struct type *error_type (char **, struct objfile *);
 
@@ -106,7 +106,7 @@ static int read_type_number (char **, in
 
 static struct type *read_type (char **, struct objfile *);
 
-static struct type *read_range_type (char **, int[2], struct objfile *);
+static struct type *read_range_type (char **, int[2], int, struct objfile *);
 
 static struct type *read_sun_builtin_type (char **, int[2], struct objfile *);
 
@@ -435,17 +435,17 @@ read_type_number (char **pp, int *typenu
   if (**pp == '(')
     {
       (*pp)++;
-      typenums[0] = read_huge_number (pp, ',', &nbits);
+      typenums[0] = read_huge_number (pp, ',', &nbits, 0);
       if (nbits != 0)
 	return -1;
-      typenums[1] = read_huge_number (pp, ')', &nbits);
+      typenums[1] = read_huge_number (pp, ')', &nbits, 0);
       if (nbits != 0)
 	return -1;
     }
   else
     {
       typenums[0] = 0;
-      typenums[1] = read_huge_number (pp, 0, &nbits);
+      typenums[1] = read_huge_number (pp, 0, &nbits, 0);
       if (nbits != 0)
 	return -1;
     }
@@ -1811,7 +1811,7 @@ again:
       break;
 
     case 'r':			/* Range type */
-      type = read_range_type (pp, typenums, objfile);
+      type = read_range_type (pp, typenums, type_size, objfile);
       if (typenums[0] != -1)
 	*dbx_lookup_type (typenums) = type;
       break;
@@ -2291,7 +2291,7 @@ read_member_functions (struct field_info
 		   the sign bit out, and usable as a valid index into
 		   the array.  Remove the sign bit here.  */
 		new_sublist->fn_field.voffset =
-		  (0x7fffffff & read_huge_number (pp, ';', &nbits)) + 2;
+		  (0x7fffffff & read_huge_number (pp, ';', &nbits, 0)) + 2;
 		if (nbits != 0)
 		  return 0;
 
@@ -2656,7 +2656,8 @@ read_cpp_abbrev (struct field_info *fip,
 
       {
 	int nbits;
-	FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits);
+	FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits,
+                                                            0);
 	if (nbits != 0)
 	  return 0;
       }
@@ -2729,13 +2730,13 @@ read_one_struct_field (struct field_info
 
   {
     int nbits;
-    FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits);
+    FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0);
     if (nbits != 0)
       {
 	stabs_general_complaint ("bad structure-type format");
 	return;
       }
-    FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits);
+    FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits, 0);
     if (nbits != 0)
       {
 	stabs_general_complaint ("bad structure-type format");
@@ -2931,7 +2932,7 @@ read_baseclasses (struct field_info *fip
   ALLOCATE_CPLUS_STRUCT_TYPE (type);
   {
     int nbits;
-    TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits);
+    TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0);
     if (nbits != 0)
       return 0;
   }
@@ -3005,7 +3006,7 @@ read_baseclasses (struct field_info *fip
 	   corresponding to this baseclass.  Always zero in the absence of
 	   multiple inheritance.  */
 
-	FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits);
+	FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits, 0);
 	if (nbits != 0)
 	  return 0;
       }
@@ -3310,7 +3311,7 @@ read_struct_type (char **pp, struct type
 
   {
     int nbits;
-    TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits);
+    TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0);
     if (nbits != 0)
       return error_type (pp, objfile);
   }
@@ -3368,7 +3369,7 @@ read_array_type (char **pp, struct type 
       (*pp)++;
       adjustable = 1;
     }
-  lower = read_huge_number (pp, ';', &nbits);
+  lower = read_huge_number (pp, ';', &nbits, 0);
 
   if (nbits != 0)
     return error_type (pp, objfile);
@@ -3378,7 +3379,7 @@ read_array_type (char **pp, struct type 
       (*pp)++;
       adjustable = 1;
     }
-  upper = read_huge_number (pp, ';', &nbits);
+  upper = read_huge_number (pp, ';', &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
 
@@ -3452,7 +3453,7 @@ read_enum_type (char **pp, struct type *
 	p++;
       name = obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
       *pp = p + 1;
-      n = read_huge_number (pp, ',', &nbits);
+      n = read_huge_number (pp, ',', &nbits, 0);
       if (nbits != 0)
 	return error_type (pp, objfile);
 
@@ -3564,17 +3565,17 @@ read_sun_builtin_type (char **pp, int ty
      by this type, except that unsigned short is 4 instead of 2.
      Since this information is redundant with the third number,
      we will ignore it.  */
-  read_huge_number (pp, ';', &nbits);
+  read_huge_number (pp, ';', &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
 
   /* The second number is always 0, so ignore it too. */
-  read_huge_number (pp, ';', &nbits);
+  read_huge_number (pp, ';', &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
 
   /* The third number is the number of bits for this type. */
-  type_bits = read_huge_number (pp, 0, &nbits);
+  type_bits = read_huge_number (pp, 0, &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
   /* The type *should* end with a semicolon.  If it are embedded
@@ -3607,12 +3608,12 @@ read_sun_floating_type (char **pp, int t
 
   /* The first number has more details about the type, for example
      FN_COMPLEX.  */
-  details = read_huge_number (pp, ';', &nbits);
+  details = read_huge_number (pp, ';', &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
 
   /* The second number is the number of bytes occupied by this type */
-  nbytes = read_huge_number (pp, ';', &nbits);
+  nbytes = read_huge_number (pp, ';', &nbits, 0);
   if (nbits != 0)
     return error_type (pp, objfile);
 
@@ -3635,22 +3636,30 @@ read_sun_floating_type (char **pp, int t
    and that character is skipped if it does match.
    If END is zero, *PP is left pointing to that character.
 
+   If TWOS_COMPLEMENT_BITS is set to a strictly positive value and if
+   the number is represented in an octal representation, assume that
+   it is represented in a 2's complement representation with a size of
+   TWOS_COMPLEMENT_BITS.
+
    If the number fits in a long, set *BITS to 0 and return the value.
    If not, set *BITS to be the number of bits in the number and return 0.
 
    If encounter garbage, set *BITS to -1 and return 0.  */
 
 static long
-read_huge_number (char **pp, int end, int *bits)
+read_huge_number (char **pp, int end, int *bits, int twos_complement_bits)
 {
   char *p = *pp;
   int sign = 1;
+  int sign_bit;
   long n = 0;
+  long sn = 0;
   int radix = 10;
   char overflow = 0;
   int nbits = 0;
   int c;
   long upper_limit;
+  int twos_complement_representation = radix == 8 && twos_complement_bits > 0;
 
   if (*p == '-')
     {
@@ -3671,12 +3680,36 @@ read_huge_number (char **pp, int end, in
   while ((c = *p++) >= '0' && c < ('0' + radix))
     {
       if (n <= upper_limit)
-	{
-	  n *= radix;
-	  n += c - '0';		/* FIXME this overflows anyway */
-	}
+        {
+          if (twos_complement_representation)
+            {
+              /* Octal, signed, twos complement representation. In this case,
+                 sn is the signed value, n is the corresponding absolute
+                 value. signed_bit is the position of the sign bit in the
+                 first three bits.  */
+              if (sn == 0)
+                {
+                  sign_bit = (twos_complement_bits % 3 + 2) % 3;
+                  sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit));
+                }
+              else
+                {
+                  sn *= radix;
+                  sn += c - '0';
+                }
+
+              if (sn < 0)
+                n = -sn;
+            }
+          else
+            {
+              /* unsigned representation */
+              n *= radix;
+              n += c - '0';		/* FIXME this overflows anyway */
+            }
+        }
       else
-	overflow = 1;
+        overflow = 1;
 
       /* This depends on large values being output in octal, which is
          what GCC does. */
@@ -3733,14 +3766,18 @@ read_huge_number (char **pp, int end, in
     {
       if (bits)
 	*bits = 0;
-      return n * sign;
+      if (twos_complement_representation)
+        return sn;
+      else
+        return n * sign;
     }
   /* It's *BITS which has the interesting information.  */
   return 0;
 }
 
 static struct type *
-read_range_type (char **pp, int typenums[2], struct objfile *objfile)
+read_range_type (char **pp, int typenums[2], int type_size,
+                 struct objfile *objfile)
 {
   char *orig_pp = *pp;
   int rangenums[2];
@@ -3769,8 +3806,8 @@ read_range_type (char **pp, int typenums
 
   /* The remaining two operands are usually lower and upper bounds
      of the range.  But in some special cases they mean something else.  */
-  n2 = read_huge_number (pp, ';', &n2bits);
-  n3 = read_huge_number (pp, ';', &n3bits);
+  n2 = read_huge_number (pp, ';', &n2bits, type_size);
+  n3 = read_huge_number (pp, ';', &n3bits, type_size);
 
   if (n2bits == -1 || n3bits == -1)
     return error_type (pp, objfile);
@@ -3786,8 +3823,19 @@ read_range_type (char **pp, int typenums
       /* Number of bits in the type.  */
       int nbits = 0;
 
+      /* If a type size attribute has been specified, the bounds of
+         the range should fit in this size. If the lower bounds needs
+         more bits than the upper bound, then the type is signed.  */
+      if (n2bits <= type_size && n3bits <= type_size)
+        {
+          if (n2bits == type_size && n2bits > n3bits)
+            got_signed = 1;
+          else
+            got_unsigned = 1;
+          nbits = type_size;
+        }
       /* Range from 0 to <large number> is an unsigned large integral type.  */
-      if ((n2bits == 0 && n2 == 0) && n3bits != 0)
+      else if ((n2bits == 0 && n2 == 0) && n3bits != 0)
 	{
 	  got_unsigned = 1;
 	  nbits = n3bits;

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA] stabs: octal negative numbers
  2004-10-26 17:39 [RFA] stabs: octal negative numbers Jerome Guitton
@ 2004-10-26 17:50 ` Joel Brobecker
  2004-11-23 14:10 ` Jerome Guitton
  1 sibling, 0 replies; 14+ messages in thread
From: Joel Brobecker @ 2004-10-26 17:50 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches

> Tested on an i686-linux host, with stabs+ format, no regressions.
> Worth submitting an Ada test case, I guess.

Speaking of Ada testcases, it might be time now to revisit how we
organize the gdb.ada subdirectory, because the current approach is
not going to scale well. I had a short private discussion with
Michael C about this, just to let him know that I was thinking
about this. I'll add this task on my TODO list.

-- 
Joel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA] stabs: octal negative numbers
  2004-10-26 17:39 [RFA] stabs: octal negative numbers Jerome Guitton
  2004-10-26 17:50 ` Joel Brobecker
@ 2004-11-23 14:10 ` Jerome Guitton
  2004-11-23 14:32   ` Elena Zannoni
  1 sibling, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-11-23 14:10 UTC (permalink / raw)
  To: gdb-patches

Ping?

Jerome Guitton (guitton@act-europe.fr):

> The patch in attachment adds support for parsing stabs that contains
> negative numbers in octal, two's complement form. I have never
> experienced the problem with C programs, but GCC generates those kind
> of numbers for some Ada subtypes:
> 
> procedure Test_Case is
> 
>    type Base_Fixed_Point_Type is
>      delta 1.0 / 16.0
>        range (System.Min_Int / 2) * 1.0 / 16.0 ..
>        (System.Max_Int / 2) * 1.0 / 16.0;
> 
>      subtype Fixed_Point_Subtype is
>        Base_Fixed_Point_Type range -50.0 .. 50.0;
> 
> begin
>    null;
> end Test_Case;
> 
> The stabs generated for Fixed_Point_Subtype is:
> 
> .stabs  "test_case__fixed_point_subtype___XF_1_16:t(0,14)=@s64;r(0,12);01777777777777777776340;0000000001440;",128,0,10,0
> 
> (01777777777777777776340 is -800 on 64-bits).
> 
> Tested on an i686-linux host, with stabs+ format, no regressions.
> Worth submitting an Ada test case, I guess.
> 
> Comments? OK to apply?
> 
> -- 
> Jerome

> 2004-10-26  Jerome Guitton  <guitton@gnat.com>
> 
> 	* stabsread.c (read_huge_number): Add support for reading octal
> 	signed number in twos complement, based on the size of this
> 	number.
> 	(read_range_type): Add support for reading octal signed bounds
> 	in twos complements, based on the size of the type.
> 	(read_type_number, read_cpp_abbrev, read_member_functions,
>         read_cpp_abbrev, read_one_struct_field, read_baseclasses,
>         read_struct_type, read_array_type, read_enum_type,
>         read_sun_builtin_type, read_sun_floating_type): Update calls to
>         read_huge_number.
>         (read_type): Update call to read_range_type.
> 
> Index: stabsread.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/stabsread.c,v
> retrieving revision 1.77
> diff -u -p -r1.77 stabsread.c
> --- stabsread.c	30 Apr 2004 14:40:54 -0000	1.77
> +++ stabsread.c	26 Oct 2004 17:11:31 -0000
> @@ -92,7 +92,7 @@ read_one_struct_field (struct field_info
>  
>  static struct type *dbx_alloc_type (int[2], struct objfile *);
>  
> -static long read_huge_number (char **, int, int *);
> +static long read_huge_number (char **, int, int *, int);
>  
>  static struct type *error_type (char **, struct objfile *);
>  
> @@ -106,7 +106,7 @@ static int read_type_number (char **, in
>  
>  static struct type *read_type (char **, struct objfile *);
>  
> -static struct type *read_range_type (char **, int[2], struct objfile *);
> +static struct type *read_range_type (char **, int[2], int, struct objfile *);
>  
>  static struct type *read_sun_builtin_type (char **, int[2], struct objfile *);
>  
> @@ -435,17 +435,17 @@ read_type_number (char **pp, int *typenu
>    if (**pp == '(')
>      {
>        (*pp)++;
> -      typenums[0] = read_huge_number (pp, ',', &nbits);
> +      typenums[0] = read_huge_number (pp, ',', &nbits, 0);
>        if (nbits != 0)
>  	return -1;
> -      typenums[1] = read_huge_number (pp, ')', &nbits);
> +      typenums[1] = read_huge_number (pp, ')', &nbits, 0);
>        if (nbits != 0)
>  	return -1;
>      }
>    else
>      {
>        typenums[0] = 0;
> -      typenums[1] = read_huge_number (pp, 0, &nbits);
> +      typenums[1] = read_huge_number (pp, 0, &nbits, 0);
>        if (nbits != 0)
>  	return -1;
>      }
> @@ -1811,7 +1811,7 @@ again:
>        break;
>  
>      case 'r':			/* Range type */
> -      type = read_range_type (pp, typenums, objfile);
> +      type = read_range_type (pp, typenums, type_size, objfile);
>        if (typenums[0] != -1)
>  	*dbx_lookup_type (typenums) = type;
>        break;
> @@ -2291,7 +2291,7 @@ read_member_functions (struct field_info
>  		   the sign bit out, and usable as a valid index into
>  		   the array.  Remove the sign bit here.  */
>  		new_sublist->fn_field.voffset =
> -		  (0x7fffffff & read_huge_number (pp, ';', &nbits)) + 2;
> +		  (0x7fffffff & read_huge_number (pp, ';', &nbits, 0)) + 2;
>  		if (nbits != 0)
>  		  return 0;
>  
> @@ -2656,7 +2656,8 @@ read_cpp_abbrev (struct field_info *fip,
>  
>        {
>  	int nbits;
> -	FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits);
> +	FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits,
> +                                                            0);
>  	if (nbits != 0)
>  	  return 0;
>        }
> @@ -2729,13 +2730,13 @@ read_one_struct_field (struct field_info
>  
>    {
>      int nbits;
> -    FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits);
> +    FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0);
>      if (nbits != 0)
>        {
>  	stabs_general_complaint ("bad structure-type format");
>  	return;
>        }
> -    FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits);
> +    FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits, 0);
>      if (nbits != 0)
>        {
>  	stabs_general_complaint ("bad structure-type format");
> @@ -2931,7 +2932,7 @@ read_baseclasses (struct field_info *fip
>    ALLOCATE_CPLUS_STRUCT_TYPE (type);
>    {
>      int nbits;
> -    TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits);
> +    TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0);
>      if (nbits != 0)
>        return 0;
>    }
> @@ -3005,7 +3006,7 @@ read_baseclasses (struct field_info *fip
>  	   corresponding to this baseclass.  Always zero in the absence of
>  	   multiple inheritance.  */
>  
> -	FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits);
> +	FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits, 0);
>  	if (nbits != 0)
>  	  return 0;
>        }
> @@ -3310,7 +3311,7 @@ read_struct_type (char **pp, struct type
>  
>    {
>      int nbits;
> -    TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits);
> +    TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0);
>      if (nbits != 0)
>        return error_type (pp, objfile);
>    }
> @@ -3368,7 +3369,7 @@ read_array_type (char **pp, struct type 
>        (*pp)++;
>        adjustable = 1;
>      }
> -  lower = read_huge_number (pp, ';', &nbits);
> +  lower = read_huge_number (pp, ';', &nbits, 0);
>  
>    if (nbits != 0)
>      return error_type (pp, objfile);
> @@ -3378,7 +3379,7 @@ read_array_type (char **pp, struct type 
>        (*pp)++;
>        adjustable = 1;
>      }
> -  upper = read_huge_number (pp, ';', &nbits);
> +  upper = read_huge_number (pp, ';', &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>  
> @@ -3452,7 +3453,7 @@ read_enum_type (char **pp, struct type *
>  	p++;
>        name = obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
>        *pp = p + 1;
> -      n = read_huge_number (pp, ',', &nbits);
> +      n = read_huge_number (pp, ',', &nbits, 0);
>        if (nbits != 0)
>  	return error_type (pp, objfile);
>  
> @@ -3564,17 +3565,17 @@ read_sun_builtin_type (char **pp, int ty
>       by this type, except that unsigned short is 4 instead of 2.
>       Since this information is redundant with the third number,
>       we will ignore it.  */
> -  read_huge_number (pp, ';', &nbits);
> +  read_huge_number (pp, ';', &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>  
>    /* The second number is always 0, so ignore it too. */
> -  read_huge_number (pp, ';', &nbits);
> +  read_huge_number (pp, ';', &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>  
>    /* The third number is the number of bits for this type. */
> -  type_bits = read_huge_number (pp, 0, &nbits);
> +  type_bits = read_huge_number (pp, 0, &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>    /* The type *should* end with a semicolon.  If it are embedded
> @@ -3607,12 +3608,12 @@ read_sun_floating_type (char **pp, int t
>  
>    /* The first number has more details about the type, for example
>       FN_COMPLEX.  */
> -  details = read_huge_number (pp, ';', &nbits);
> +  details = read_huge_number (pp, ';', &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>  
>    /* The second number is the number of bytes occupied by this type */
> -  nbytes = read_huge_number (pp, ';', &nbits);
> +  nbytes = read_huge_number (pp, ';', &nbits, 0);
>    if (nbits != 0)
>      return error_type (pp, objfile);
>  
> @@ -3635,22 +3636,30 @@ read_sun_floating_type (char **pp, int t
>     and that character is skipped if it does match.
>     If END is zero, *PP is left pointing to that character.
>  
> +   If TWOS_COMPLEMENT_BITS is set to a strictly positive value and if
> +   the number is represented in an octal representation, assume that
> +   it is represented in a 2's complement representation with a size of
> +   TWOS_COMPLEMENT_BITS.
> +
>     If the number fits in a long, set *BITS to 0 and return the value.
>     If not, set *BITS to be the number of bits in the number and return 0.
>  
>     If encounter garbage, set *BITS to -1 and return 0.  */
>  
>  static long
> -read_huge_number (char **pp, int end, int *bits)
> +read_huge_number (char **pp, int end, int *bits, int twos_complement_bits)
>  {
>    char *p = *pp;
>    int sign = 1;
> +  int sign_bit;
>    long n = 0;
> +  long sn = 0;
>    int radix = 10;
>    char overflow = 0;
>    int nbits = 0;
>    int c;
>    long upper_limit;
> +  int twos_complement_representation = radix == 8 && twos_complement_bits > 0;
>  
>    if (*p == '-')
>      {
> @@ -3671,12 +3680,36 @@ read_huge_number (char **pp, int end, in
>    while ((c = *p++) >= '0' && c < ('0' + radix))
>      {
>        if (n <= upper_limit)
> -	{
> -	  n *= radix;
> -	  n += c - '0';		/* FIXME this overflows anyway */
> -	}
> +        {
> +          if (twos_complement_representation)
> +            {
> +              /* Octal, signed, twos complement representation. In this case,
> +                 sn is the signed value, n is the corresponding absolute
> +                 value. signed_bit is the position of the sign bit in the
> +                 first three bits.  */
> +              if (sn == 0)
> +                {
> +                  sign_bit = (twos_complement_bits % 3 + 2) % 3;
> +                  sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit));
> +                }
> +              else
> +                {
> +                  sn *= radix;
> +                  sn += c - '0';
> +                }
> +
> +              if (sn < 0)
> +                n = -sn;
> +            }
> +          else
> +            {
> +              /* unsigned representation */
> +              n *= radix;
> +              n += c - '0';		/* FIXME this overflows anyway */
> +            }
> +        }
>        else
> -	overflow = 1;
> +        overflow = 1;
>  
>        /* This depends on large values being output in octal, which is
>           what GCC does. */
> @@ -3733,14 +3766,18 @@ read_huge_number (char **pp, int end, in
>      {
>        if (bits)
>  	*bits = 0;
> -      return n * sign;
> +      if (twos_complement_representation)
> +        return sn;
> +      else
> +        return n * sign;
>      }
>    /* It's *BITS which has the interesting information.  */
>    return 0;
>  }
>  
>  static struct type *
> -read_range_type (char **pp, int typenums[2], struct objfile *objfile)
> +read_range_type (char **pp, int typenums[2], int type_size,
> +                 struct objfile *objfile)
>  {
>    char *orig_pp = *pp;
>    int rangenums[2];
> @@ -3769,8 +3806,8 @@ read_range_type (char **pp, int typenums
>  
>    /* The remaining two operands are usually lower and upper bounds
>       of the range.  But in some special cases they mean something else.  */
> -  n2 = read_huge_number (pp, ';', &n2bits);
> -  n3 = read_huge_number (pp, ';', &n3bits);
> +  n2 = read_huge_number (pp, ';', &n2bits, type_size);
> +  n3 = read_huge_number (pp, ';', &n3bits, type_size);
>  
>    if (n2bits == -1 || n3bits == -1)
>      return error_type (pp, objfile);
> @@ -3786,8 +3823,19 @@ read_range_type (char **pp, int typenums
>        /* Number of bits in the type.  */
>        int nbits = 0;
>  
> +      /* If a type size attribute has been specified, the bounds of
> +         the range should fit in this size. If the lower bounds needs
> +         more bits than the upper bound, then the type is signed.  */
> +      if (n2bits <= type_size && n3bits <= type_size)
> +        {
> +          if (n2bits == type_size && n2bits > n3bits)
> +            got_signed = 1;
> +          else
> +            got_unsigned = 1;
> +          nbits = type_size;
> +        }
>        /* Range from 0 to <large number> is an unsigned large integral type.  */
> -      if ((n2bits == 0 && n2 == 0) && n3bits != 0)
> +      else if ((n2bits == 0 && n2 == 0) && n3bits != 0)
>  	{
>  	  got_unsigned = 1;
>  	  nbits = n3bits;


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA] stabs: octal negative numbers
  2004-11-23 14:10 ` Jerome Guitton
@ 2004-11-23 14:32   ` Elena Zannoni
  2004-11-23 14:38     ` Jerome Guitton
  0 siblings, 1 reply; 14+ messages in thread
From: Elena Zannoni @ 2004-11-23 14:32 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches



I have no problems with this as long as a testcase is added.



 > 
 > Jerome Guitton (guitton@act-europe.fr):
 > 
 > > The patch in attachment adds support for parsing stabs that contains
 > > negative numbers in octal, two's complement form. I have never
 > > experienced the problem with C programs, but GCC generates those kind
 > > of numbers for some Ada subtypes:
 > > 
 > > procedure Test_Case is
 > > 
 > >    type Base_Fixed_Point_Type is
 > >      delta 1.0 / 16.0
 > >        range (System.Min_Int / 2) * 1.0 / 16.0 ..
 > >        (System.Max_Int / 2) * 1.0 / 16.0;
 > > 
 > >      subtype Fixed_Point_Subtype is
 > >        Base_Fixed_Point_Type range -50.0 .. 50.0;
 > > 
 > > begin
 > >    null;
 > > end Test_Case;
 > > 
 > > The stabs generated for Fixed_Point_Subtype is:
 > > 
 > > .stabs  "test_case__fixed_point_subtype___XF_1_16:t(0,14)=@s64;r(0,12);01777777777777777776340;0000000001440;",128,0,10,0
 > > 
 > > (01777777777777777776340 is -800 on 64-bits).
 > > 
 > > Tested on an i686-linux host, with stabs+ format, no regressions.
 > > Worth submitting an Ada test case, I guess.
 > > 
 > > Comments? OK to apply?
 > > 
 > > -- 
 > > Jerome
 > 
 > > 2004-10-26  Jerome Guitton  <guitton@gnat.com>
 > > 
 > > 	* stabsread.c (read_huge_number): Add support for reading octal
 > > 	signed number in twos complement, based on the size of this
 > > 	number.
 > > 	(read_range_type): Add support for reading octal signed bounds
 > > 	in twos complements, based on the size of the type.
 > > 	(read_type_number, read_cpp_abbrev, read_member_functions,
 > >         read_cpp_abbrev, read_one_struct_field, read_baseclasses,
 > >         read_struct_type, read_array_type, read_enum_type,
 > >         read_sun_builtin_type, read_sun_floating_type): Update calls to
 > >         read_huge_number.
 > >         (read_type): Update call to read_range_type.
 > > 
 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA] stabs: octal negative numbers
  2004-11-23 14:32   ` Elena Zannoni
@ 2004-11-23 14:38     ` Jerome Guitton
  2004-11-25 19:20       ` [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers] Jerome Guitton
  0 siblings, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-11-23 14:38 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: gdb-patches

Elena Zannoni (ezannoni@redhat.com):

> I have no problems with this as long as a testcase is added.

OK, I will allocate some time to work on it this week, and I will
commit this change when the testcase is accepted.

Thank you for your review.

-- 
Jerome


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-23 14:38     ` Jerome Guitton
@ 2004-11-25 19:20       ` Jerome Guitton
  2004-11-28 17:49         ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-11-25 19:20 UTC (permalink / raw)
  To: gdb-patches; +Cc: Elena Zannoni

[-- Attachment #1: Type: text/plain, Size: 323 bytes --]

Jerome Guitton (guitton@act-europe.fr):

> OK, I will allocate some time to work on it this week, and I will
> commit this change when the testcase is accepted.

Test in attachement. OK to commit?

2004-11-25  Jerome Guitton  <guitton@gnat.com>

	* gdb.ada/fixed_points.c: New file.
	* gdb.ada/fixed_points.exp: New file.


[-- Attachment #2: fixed_points.exp --]
[-- Type: text/plain, Size: 1572 bytes --]

# Copyright 2004 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# 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.  

if $tracelevel then {
    strace $tracelevel
}

load_lib "ada.exp"

set testfile "fixed_points"
set srcfile ${testfile}.adb
set binfile ${objdir}/${subdir}/${testfile}

if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
  return -1
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

set bp_location [gdb_get_line_number "Set breakpoint here"]
send_gdb "break ${srcfile}:$bp_location\n"; gdb_expect -re "$gdb_prompt $"
send_gdb "run\n"; gdb_expect -re "$gdb_prompt $"

gdb_test "print base_object" \
         ".* = -50" \
         "p on a fixed point type"

gdb_test "print subtype_object" \
         ".* = -50" \
         "p on a subtype fixed point type"

gdb_test "print new_type_object" \
         ".* = -50" \
         "p on a new fixed point type"

[-- Attachment #3: fixed_points.adb --]
[-- Type: text/plain, Size: 688 bytes --]

with System;

procedure Fixed_Points is

   type Base_Fixed_Point_Type is
     delta 1.0 / 16.0
       range (System.Min_Int / 2) * 1.0 / 16.0 ..
       (System.Max_Int / 2) * 1.0 / 16.0;

     subtype Fixed_Point_Subtype is
       Base_Fixed_Point_Type range -50.0 .. 50.0;

     type New_Fixed_Point_Type is
       new Base_Fixed_Point_Type range -50.0 .. 50.0;

     Base_Object            : Base_Fixed_Point_Type := -50.0;
     Subtype_Object         : Fixed_Point_Subtype := -50.0;
     New_Type_Object        : New_Fixed_Point_Type := -50.0;
begin
   Base_Object := 1.0/16.0;   -- Set breakpoint here
   Subtype_Object := 1.0/16.0;
   New_Type_Object := 1.0/16.0;
end Fixed_Points;

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-25 19:20       ` [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers] Jerome Guitton
@ 2004-11-28 17:49         ` Daniel Jacobowitz
  2004-11-29 10:24           ` Jerome Guitton
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2004-11-28 17:49 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches, Elena Zannoni

On Thu, Nov 25, 2004 at 08:20:38PM +0100, Jerome Guitton wrote:
> Jerome Guitton (guitton@act-europe.fr):
> 
> > OK, I will allocate some time to work on it this week, and I will
> > commit this change when the testcase is accepted.
> 
> Test in attachement. OK to commit?

Couple of problems...

> send_gdb "break ${srcfile}:$bp_location\n"; gdb_expect -re "$gdb_prompt $"
> send_gdb "run\n"; gdb_expect -re "$gdb_prompt $"

Please don't hardcode "run".  Can you use
 "runto ${srcfile}:$bp_location"
instead of these two lines?


> with System;
> 
> procedure Fixed_Points is

Please add a copyright notice to this file.

-- 
Daniel Jacobowitz


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-28 17:49         ` Daniel Jacobowitz
@ 2004-11-29 10:24           ` Jerome Guitton
  2004-11-29 13:42             ` Daniel Jacobowitz
  0 siblings, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-11-29 10:24 UTC (permalink / raw)
  To: gdb-patches, Elena Zannoni

[-- Attachment #1: Type: text/plain, Size: 303 bytes --]

Daniel Jacobowitz (drow@false.org):

> Please don't hardcode "run".  Can you use
>  "runto ${srcfile}:$bp_location"
> instead of these two lines?

> Please add a copyright notice to this file.

Daniel,

Thank you for your review. I fixed these two problems; new files in
attachment. OK now?

-- 
Jerome

[-- Attachment #2: fixed_points.exp --]
[-- Type: text/plain, Size: 1480 bytes --]

# Copyright 2004 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# 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.  

if $tracelevel then {
    strace $tracelevel
}

load_lib "ada.exp"

set testfile "fixed_points"
set srcfile ${testfile}.adb
set binfile ${objdir}/${subdir}/${testfile}

if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } {
  return -1
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

set bp_location [gdb_get_line_number "Set breakpoint here"]
runto "${srcfile}:$bp_location"

gdb_test "print base_object" \
         ".* = -50" \
         "p on a fixed point type"

gdb_test "print subtype_object" \
         ".* = -50" \
         "p on a subtype fixed point type"

gdb_test "print new_type_object" \
         ".* = -50" \
         "p on a new fixed point type"

[-- Attachment #3: fixed_points.adb --]
[-- Type: text/plain, Size: 1467 bytes --]

--  Copyright 2004 Free Software Foundation, Inc.
--
--  This program is free software; you can redistribute it and/or modify
--  it under the terms of the GNU General Public License as published by
--  the Free Software Foundation; either version 2 of the License, or
--  (at your option) any later version.
--
--  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.

with System;

procedure Fixed_Points is

   type Base_Fixed_Point_Type is
     delta 1.0 / 16.0
       range (System.Min_Int / 2) * 1.0 / 16.0 ..
       (System.Max_Int / 2) * 1.0 / 16.0;

     subtype Fixed_Point_Subtype is
       Base_Fixed_Point_Type range -50.0 .. 50.0;

     type New_Fixed_Point_Type is
       new Base_Fixed_Point_Type range -50.0 .. 50.0;

     Base_Object            : Base_Fixed_Point_Type := -50.0;
     Subtype_Object         : Fixed_Point_Subtype := -50.0;
     New_Type_Object        : New_Fixed_Point_Type := -50.0;
begin
   Base_Object := 1.0/16.0;   -- Set breakpoint here
   Subtype_Object := 1.0/16.0;
   New_Type_Object := 1.0/16.0;
end Fixed_Points;

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-29 10:24           ` Jerome Guitton
@ 2004-11-29 13:42             ` Daniel Jacobowitz
  2004-11-29 15:21               ` Andrew Cagney
  0 siblings, 1 reply; 14+ messages in thread
From: Daniel Jacobowitz @ 2004-11-29 13:42 UTC (permalink / raw)
  To: Jerome Guitton; +Cc: gdb-patches, Elena Zannoni

On Mon, Nov 29, 2004 at 11:24:24AM +0100, Jerome Guitton wrote:
> Daniel Jacobowitz (drow@false.org):
> 
> > Please don't hardcode "run".  Can you use
> >  "runto ${srcfile}:$bp_location"
> > instead of these two lines?
> 
> > Please add a copyright notice to this file.
> 
> Daniel,
> 
> Thank you for your review. I fixed these two problems; new files in
> attachment. OK now?

Yes, this testcase is OK.  Thanks!

> 

-- 
Daniel Jacobowitz


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-29 13:42             ` Daniel Jacobowitz
@ 2004-11-29 15:21               ` Andrew Cagney
  2004-11-29 15:26                 ` Daniel Jacobowitz
  2004-11-29 17:24                 ` Jerome Guitton
  0 siblings, 2 replies; 14+ messages in thread
From: Andrew Cagney @ 2004-11-29 15:21 UTC (permalink / raw)
  To: Daniel Jacobowitz, Jerome Guitton; +Cc: gdb-patches, Elena Zannoni

Daniel Jacobowitz wrote:
> On Mon, Nov 29, 2004 at 11:24:24AM +0100, Jerome Guitton wrote:
> 
>>Daniel Jacobowitz (drow@false.org):
>>
>>
>>>Please don't hardcode "run".  Can you use
>>> "runto ${srcfile}:$bp_location"
>>>instead of these two lines?
>>
>>>Please add a copyright notice to this file.
>>
>>Daniel,
>>
>>Thank you for your review. I fixed these two problems; new files in
>>attachment. OK now?
> 
> 
> Yes, this testcase is OK.  Thanks!

Sigh.

Jerome, Daniel,

If this test is instead added to the gdb.stabs directory we'll get far 
better mileage - few, if anyone, has an Ada compiler, yet almost 
everyone has the ability to build/run the gdb.stabs testsuite.

Andrew



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-29 15:21               ` Andrew Cagney
@ 2004-11-29 15:26                 ` Daniel Jacobowitz
  2004-11-29 17:24                 ` Jerome Guitton
  1 sibling, 0 replies; 14+ messages in thread
From: Daniel Jacobowitz @ 2004-11-29 15:26 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Jerome Guitton, gdb-patches, Elena Zannoni

On Mon, Nov 29, 2004 at 10:19:57AM -0500, Andrew Cagney wrote:
> Daniel Jacobowitz wrote:
> >On Mon, Nov 29, 2004 at 11:24:24AM +0100, Jerome Guitton wrote:
> >
> >>Daniel Jacobowitz (drow@false.org):
> >>
> >>
> >>>Please don't hardcode "run".  Can you use
> >>>"runto ${srcfile}:$bp_location"
> >>>instead of these two lines?
> >>
> >>>Please add a copyright notice to this file.
> >>
> >>Daniel,
> >>
> >>Thank you for your review. I fixed these two problems; new files in
> >>attachment. OK now?
> >
> >
> >Yes, this testcase is OK.  Thanks!
> 
> Sigh.
> 
> Jerome, Daniel,
> 
> If this test is instead added to the gdb.stabs directory we'll get far 
> better mileage - few, if anyone, has an Ada compiler, yet almost 
> everyone has the ability to build/run the gdb.stabs testsuite.

Personally, I run the Ada tests every time I build GDB.  If you'd like
to hand-write a stabs test, of course, that'd be a nice complement to
the Ada test.

-- 
Daniel Jacobowitz


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-29 15:21               ` Andrew Cagney
  2004-11-29 15:26                 ` Daniel Jacobowitz
@ 2004-11-29 17:24                 ` Jerome Guitton
  2004-12-01 17:17                   ` Jerome Guitton
  1 sibling, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-11-29 17:24 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Daniel Jacobowitz, gdb-patches, Elena Zannoni

Andrew Cagney (cagney@gnu.org):

> If this test is instead added to the gdb.stabs directory we'll get far 
> better mileage - few, if anyone, has an Ada compiler, yet almost 
> everyone has the ability to build/run the gdb.stabs testsuite.

Well, it is still interesting to have this Ada test, as it also tests
that Ada fixed points debugging works properly. I guess we can have a
stabs test too.

I had a look at the gdb.stabs directory, and I did not understand how it
works. What are the .sed files used for?

-- 
Jerome


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-11-29 17:24                 ` Jerome Guitton
@ 2004-12-01 17:17                   ` Jerome Guitton
  2004-12-13 17:21                     ` Jerome Guitton
  0 siblings, 1 reply; 14+ messages in thread
From: Jerome Guitton @ 2004-12-01 17:17 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Daniel Jacobowitz, gdb-patches, Elena Zannoni

Jerome Guitton (guitton@act-europe.fr):

> > If this test is instead added to the gdb.stabs directory we'll get far 
> > better mileage - few, if anyone, has an Ada compiler, yet almost 
> > everyone has the ability to build/run the gdb.stabs testsuite.
> 
> Well, it is still interesting to have this Ada test, as it also tests
> that Ada fixed points debugging works properly. I guess we can have a
> stabs test too.

So here is my plan:
- I will check in my fix, now that it has been approved;
- I will check in the Ada test case, now that it has been approved;
- I will work on a stabs test.

OK? I don't know how to work a stabs test, so I need some help. Can someone
explain me how the ones in gdb.stabs work?

-- 
Jerome


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers]
  2004-12-01 17:17                   ` Jerome Guitton
@ 2004-12-13 17:21                     ` Jerome Guitton
  0 siblings, 0 replies; 14+ messages in thread
From: Jerome Guitton @ 2004-12-13 17:21 UTC (permalink / raw)
  To: gdb-patches; +Cc: Daniel Jacobowitz, Andrew Cagney, Elena Zannoni

Jerome Guitton (guitton@act-europe.fr):

> So here is my plan:
> - I will check in my fix, now that it has been approved;
> - I will check in the Ada test case, now that it has been approved;
> - I will work on a stabs test.

FYI:

The stabs fix and the Ada test are now checked in. I will allocate
some days on January to understand how the tests in gdb.stabs work.

-- 
Jerome


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2004-12-13 16:09 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-26 17:39 [RFA] stabs: octal negative numbers Jerome Guitton
2004-10-26 17:50 ` Joel Brobecker
2004-11-23 14:10 ` Jerome Guitton
2004-11-23 14:32   ` Elena Zannoni
2004-11-23 14:38     ` Jerome Guitton
2004-11-25 19:20       ` [RFA/testsuite] Ada fixed points [was stabs: octal negative numbers] Jerome Guitton
2004-11-28 17:49         ` Daniel Jacobowitz
2004-11-29 10:24           ` Jerome Guitton
2004-11-29 13:42             ` Daniel Jacobowitz
2004-11-29 15:21               ` Andrew Cagney
2004-11-29 15:26                 ` Daniel Jacobowitz
2004-11-29 17:24                 ` Jerome Guitton
2004-12-01 17:17                   ` Jerome Guitton
2004-12-13 17:21                     ` Jerome Guitton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox