This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Clean up use of CHARS in dbxout.c
- To: gcc-patches at gcc dot gnu dot org
- Subject: Clean up use of CHARS in dbxout.c
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Wed, 25 Jul 01 18:10:08 EDT
- Cc: rupp at gnat dot com
This patch makes the use of the CHARS macro much more precisely correspond to
the number of characters actually written. It also does some other, more
minor, cleanups that I noticed while doing the above cleanup.
Tested with bootstrap on aphaev56 --with-stabs.
Wed Jul 25 18:00:05 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* dbxout.c: Consistently use putc instead of fputc.
(print_wide_int): New function; call instead of direct fprintf.
(dbxout_type_index): Adjust calls of CHARS to be more accurate.
(dbxout_type_fields, dbxout_type_method_1): Likewise.
(dbxout_type_methods, dbxout_range_type, dbxout_type): Likewise.
(print_int_cst_octal): Likewise.
(print_octal): Show we wrote characters.
(dbxout_type): Set have_used_extensions in more places.
*** dbxout.c 2001/07/22 17:02:53 1.97
--- dbxout.c 2001/07/25 21:45:51
*************** static void dbxout_type PARAMS ((tree,
*** 307,310 ****
--- 307,311 ----
static void print_int_cst_octal PARAMS ((tree));
static void print_octal PARAMS ((unsigned HOST_WIDE_INT, int));
+ static void print_wide_int PARAMS ((HOST_WIDE_INT));
static void dbxout_type_name PARAMS ((tree));
static int dbxout_symbol_location PARAMS ((tree, tree, const char *, rtx));
*************** dbxout_function_end ()
*** 395,399 ****
fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
assemble_name (asmfile, lscope_label_name);
! fputc ('-', asmfile);
assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
fprintf (asmfile, "\n");
--- 396,400 ----
fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
assemble_name (asmfile, lscope_label_name);
! putc ('-', asmfile);
assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
fprintf (asmfile, "\n");
*************** dbxout_type_index (type)
*** 691,695 ****
struct typeinfo *t = &typevec[TYPE_SYMTAB_ADDRESS (type)];
fprintf (asmfile, "(%d,%d)", t->file_number, t->type_number);
! CHARS (7);
#endif
}
--- 692,696 ----
struct typeinfo *t = &typevec[TYPE_SYMTAB_ADDRESS (type)];
fprintf (asmfile, "(%d,%d)", t->file_number, t->type_number);
! CHARS (9);
#endif
}
*************** dbxout_type_fields (type)
*** 757,761 ****
{
fprintf (asmfile, ":");
! CHARS (2);
}
--- 758,762 ----
{
fprintf (asmfile, ":");
! CHARS (1);
}
*************** dbxout_type_fields (type)
*** 780,803 ****
if (TREE_STATIC (tem) && use_gnu_debug_info_extensions)
{
! const char *name =
! IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (tem));
have_used_extensions = 1;
! fprintf (asmfile, ":%s;", name);
! CHARS (strlen (name));
}
else
! /* If TEM is non-static, GDB won't understand it. */
! fprintf (asmfile, ",0,0;");
}
else
{
! fputc (',', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! int_bit_position (tem));
! fputc (',', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! tree_low_cst (DECL_SIZE (tem), 1));
! fputc (';', asmfile);
! CHARS (23);
}
}
--- 781,805 ----
if (TREE_STATIC (tem) && use_gnu_debug_info_extensions)
{
! tree name = DECL_ASSEMBLER_NAME (tem);
!
have_used_extensions = 1;
! fprintf (asmfile, ":%s;", IDENTIFIER_POINTER (name));
! CHARS (IDENTIFIER_LENGTH (name) + 2);
}
else
! {
! /* If TEM is non-static, GDB won't understand it. */
! fprintf (asmfile, ",0,0;");
! CHARS (5);
! }
}
else
{
! putc (',', asmfile);
! print_wide_int (int_bit_position (tem));
! putc (',', asmfile);
! print_wide_int (tree_low_cst (DECL_SIZE (tem), 1));
! putc (';', asmfile);
! CHARS (3);
}
}
*************** dbxout_type_method_1 (decl, debug_name)
*** 845,854 ****
if (DECL_VINDEX (decl) && host_integerp (DECL_VINDEX (decl), 0))
{
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! tree_low_cst (DECL_VINDEX (decl), 0));
! fputc (';', asmfile);
dbxout_type (DECL_CONTEXT (decl), 0);
fprintf (asmfile, ";");
! CHARS (8);
}
}
--- 847,856 ----
if (DECL_VINDEX (decl) && host_integerp (DECL_VINDEX (decl), 0))
{
! print_wide_int (tree_low_cst (DECL_VINDEX (decl), 0));
! putc (';', asmfile);
! CHARS (1);
dbxout_type (DECL_CONTEXT (decl), 0);
fprintf (asmfile, ";");
! CHARS (1);
}
}
*************** dbxout_type_methods (type)
*** 926,931 ****
continue;
! debug_name =
! IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl));
CONTIN;
--- 928,932 ----
continue;
! debug_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl));
CONTIN;
*************** dbxout_range_type (type)
*** 996,1016 ****
&& host_integerp (TYPE_MIN_VALUE (type), 0))
{
! fputc (';', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! tree_low_cst (TYPE_MIN_VALUE (type), 0));
}
else
! fprintf (asmfile, ";0");
if (TYPE_MAX_VALUE (type) != 0
&& host_integerp (TYPE_MAX_VALUE (type), 0))
{
! fputc (';', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! tree_low_cst (TYPE_MAX_VALUE (type), 0));
! fputc (';', asmfile);
}
else
! fprintf (asmfile, ";-1;");
}
--- 997,1024 ----
&& host_integerp (TYPE_MIN_VALUE (type), 0))
{
! putc (';', asmfile);
! CHARS (1);
! print_wide_int (tree_low_cst (TYPE_MIN_VALUE (type), 0));
}
else
! {
! fprintf (asmfile, ";0");
! CHARS (2);
! }
if (TYPE_MAX_VALUE (type) != 0
&& host_integerp (TYPE_MAX_VALUE (type), 0))
{
! putc (';', asmfile);
! CHARS (1);
! print_wide_int (tree_low_cst (TYPE_MAX_VALUE (type), 0));
! putc (';', asmfile);
! CHARS (1);
}
else
! {
! fprintf (asmfile, ";-1;");
! CHARS (4);
! }
}
*************** dbxout_type (type, full)
*** 1178,1183 ****
--- 1186,1193 ----
take care to make sure that `char' was type number 2. */
fprintf (asmfile, "r");
+ CHARS (1);
dbxout_type_index (type);
fprintf (asmfile, ";0;127;");
+ CHARS (7);
}
*************** dbxout_type (type, full)
*** 1195,1199 ****
if (use_gnu_debug_info_extensions
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
/* If we can use GDB extensions and the size is wider than a
--- 1205,1213 ----
if (use_gnu_debug_info_extensions
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! {
! have_used_extensions = 1;
! fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
! CHARS (5);
! }
/* If we can use GDB extensions and the size is wider than a
*************** dbxout_type (type, full)
*** 1223,1232 ****
--- 1237,1250 ----
{
fprintf (asmfile, "r");
+ CHARS (1);
dbxout_type_index (type);
fprintf (asmfile, ";");
+ CHARS (1);
print_int_cst_octal (TYPE_MIN_VALUE (type));
fprintf (asmfile, ";");
+ CHARS (1);
print_int_cst_octal (TYPE_MAX_VALUE (type));
fprintf (asmfile, ";");
+ CHARS (1);
}
*************** dbxout_type (type, full)
*** 1236,1240 ****
}
- CHARS (22);
break;
--- 1254,1257 ----
*************** dbxout_type (type, full)
*** 1243,1251 ****
to make sure that `int' was type number 1. */
fprintf (asmfile, "r");
dbxout_type_index (integer_type_node);
! fputc (';', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (type));
fputs (";0;", asmfile);
! CHARS (13);
break;
--- 1260,1270 ----
to make sure that `int' was type number 1. */
fprintf (asmfile, "r");
+ CHARS (1);
dbxout_type_index (integer_type_node);
! putc (';', asmfile);
! CHARS (1);
! print_wide_int (int_size_in_bytes (type));
fputs (";0;", asmfile);
! CHARS (3);
break;
*************** dbxout_type (type, full)
*** 1253,1260 ****
if (use_gnu_debug_info_extensions)
{
fputs ("@s", asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! BITS_PER_UNIT * int_size_in_bytes (type));
fputs (";-20;", asmfile);
}
else
--- 1272,1281 ----
if (use_gnu_debug_info_extensions)
{
+ have_used_extensions = 1;
fputs ("@s", asmfile);
! CHARS (2);
! print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
fputs (";-20;", asmfile);
+ CHARS (4);
}
else
*************** dbxout_type (type, full)
*** 1263,1270 ****
That is what pcc seems to do. */
fprintf (asmfile, "r");
dbxout_type_index (char_type_node);
fprintf (asmfile, ";0;%d;", TREE_UNSIGNED (type) ? 255 : 127);
}
- CHARS (9);
break;
--- 1284,1292 ----
That is what pcc seems to do. */
fprintf (asmfile, "r");
+ CHARS (1);
dbxout_type_index (char_type_node);
fprintf (asmfile, ";0;%d;", TREE_UNSIGNED (type) ? 255 : 127);
+ CHARS (7);
}
break;
*************** dbxout_type (type, full)
*** 1272,1283 ****
if (use_gnu_debug_info_extensions)
{
fputs ("@s", asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! BITS_PER_UNIT * int_size_in_bytes (type));
fputs (";-16;", asmfile);
}
else /* Define as enumeral type (False, True) */
! fprintf (asmfile, "eFalse:0,True:1,;");
! CHARS (17);
break;
--- 1294,1309 ----
if (use_gnu_debug_info_extensions)
{
+ have_used_extensions = 1;
fputs ("@s", asmfile);
! CHARS (2);
! print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
fputs (";-16;", asmfile);
+ CHARS (4);
}
else /* Define as enumeral type (False, True) */
! {
! fprintf (asmfile, "eFalse:0,True:1,;");
! CHARS (17);
! }
break;
*************** dbxout_type (type, full)
*** 1294,1303 ****
{
fprintf (asmfile, "r");
dbxout_type_index (type);
! fputc (';', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 2 * int_size_in_bytes (TREE_TYPE (type)));
fputs (";0;", asmfile);
! CHARS (12); /* The number is probably incorrect here. */
}
else
--- 1320,1330 ----
{
fprintf (asmfile, "r");
+ CHARS (1);
dbxout_type_index (type);
! putc (';', asmfile);
! CHARS (1);
! print_wide_int (2 * int_size_in_bytes (TREE_TYPE (type)));
fputs (";0;", asmfile);
! CHARS (3);
}
else
*************** dbxout_type (type, full)
*** 1305,1324 ****
/* Output a complex integer type as a structure,
pending some other way to do it. */
! fputc ('s', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (type));
!
fprintf (asmfile, "real:");
! CHARS (10);
dbxout_type (TREE_TYPE (type), 0);
! fprintf (asmfile, ",%d,%d;",
! 0, TYPE_PRECISION (TREE_TYPE (type)));
! CHARS (8);
fprintf (asmfile, "imag:");
CHARS (5);
dbxout_type (TREE_TYPE (type), 0);
! fprintf (asmfile, ",%d,%d;;",
! TYPE_PRECISION (TREE_TYPE (type)),
TYPE_PRECISION (TREE_TYPE (type)));
! CHARS (9);
}
break;
--- 1332,1350 ----
/* Output a complex integer type as a structure,
pending some other way to do it. */
! putc ('s', asmfile);
! CHARS (1);
! print_wide_int (int_size_in_bytes (type));
fprintf (asmfile, "real:");
! CHARS (5);
!
dbxout_type (TREE_TYPE (type), 0);
! fprintf (asmfile, ",0,%d;", TYPE_PRECISION (TREE_TYPE (type)));
! CHARS (7);
fprintf (asmfile, "imag:");
CHARS (5);
dbxout_type (TREE_TYPE (type), 0);
! fprintf (asmfile, ",%d,%d;;", TYPE_PRECISION (TREE_TYPE (type)),
TYPE_PRECISION (TREE_TYPE (type)));
! CHARS (10);
}
break;
*************** dbxout_type (type, full)
*** 1329,1339 ****
have_used_extensions = 1;
fputs ("@s", asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! BITS_PER_UNIT * int_size_in_bytes (type));
! fputc (';', asmfile);
/* Check if a bitstring type, which in Chill is
different from a [power]set. */
if (TYPE_STRING_FLAG (type))
! fprintf (asmfile, "@S;");
}
putc ('S', asmfile);
--- 1355,1370 ----
have_used_extensions = 1;
fputs ("@s", asmfile);
! CHARS (2);
! print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
! putc (';', asmfile);
! CHARS (1);
!
/* Check if a bitstring type, which in Chill is
different from a [power]set. */
if (TYPE_STRING_FLAG (type))
! {
! fprintf (asmfile, "@S;");
! CHARS (3);
! }
}
putc ('S', asmfile);
*************** dbxout_type (type, full)
*** 1348,1360 ****
have_used_extensions = 1;
fputs ("@s", asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! BITS_PER_UNIT * int_size_in_bytes (type));
! fputc (';', asmfile);
! fprintf (asmfile, "@S;");
! putc ('S', asmfile);
! CHARS (1);
dbxout_type (TYPE_DOMAIN (type), 0);
break;
}
/* Output "a" followed by a range type definition
for the index type of the array
--- 1379,1390 ----
have_used_extensions = 1;
fputs ("@s", asmfile);
! CHARS (2);
! print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
! fprintf (asmfile, ";@S;S");
! CHARS (5);
dbxout_type (TYPE_DOMAIN (type), 0);
break;
}
+
/* Output "a" followed by a range type definition
for the index type of the array
*************** dbxout_type (type, full)
*** 1367,1370 ****
--- 1397,1401 ----
have_used_extensions = 1;
fprintf (asmfile, "@S;");
+ CHARS (3);
}
tem = TYPE_DOMAIN (type);
*************** dbxout_type (type, full)
*** 1372,1384 ****
{
fprintf (asmfile, "ar");
dbxout_type_index (integer_type_node);
fprintf (asmfile, ";0;-1;");
}
else
{
fprintf (asmfile, "a");
dbxout_range_type (tem);
}
! CHARS (14);
dbxout_type (TREE_TYPE (type), 0);
break;
--- 1403,1418 ----
{
fprintf (asmfile, "ar");
+ CHARS (2);
dbxout_type_index (integer_type_node);
fprintf (asmfile, ";0;-1;");
+ CHARS (6);
}
else
{
fprintf (asmfile, "a");
+ CHARS (1);
dbxout_range_type (tem);
}
!
dbxout_type (TREE_TYPE (type), 0);
break;
*************** dbxout_type (type, full)
*** 1413,1417 ****
and let the definition come when the name is defined. */
fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asmfile);
! CHARS (3);
#if 0 /* This assertion is legitimately false in C++. */
/* We shouldn't be outputting a reference to a type before its
--- 1447,1451 ----
and let the definition come when the name is defined. */
fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asmfile);
! CHARS (2);
#if 0 /* This assertion is legitimately false in C++. */
/* We shouldn't be outputting a reference to a type before its
*************** dbxout_type (type, full)
*** 1424,1429 ****
dbxout_type_name (type);
else
! fprintf (asmfile, "$$%d", anonymous_type_number++);
fprintf (asmfile, ":");
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
break;
--- 1458,1468 ----
dbxout_type_name (type);
else
! {
! fprintf (asmfile, "$$%d", anonymous_type_number++);
! CHARS (5);
! }
!
fprintf (asmfile, ":");
+ CHARS (1);
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
break;
*************** dbxout_type (type, full)
*** 1431,1437 ****
/* Identify record or union, and print its size. */
! fputc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! int_size_in_bytes (type));
if (use_gnu_debug_info_extensions)
--- 1470,1476 ----
/* Identify record or union, and print its size. */
! putc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asmfile);
! CHARS (1);
! print_wide_int (int_size_in_bytes (type));
if (use_gnu_debug_info_extensions)
*************** dbxout_type (type, full)
*** 1453,1463 ****
putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile);
putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! (tree_low_cst (BINFO_OFFSET (child), 0)
! * BITS_PER_UNIT));
! fputc (',', asmfile);
! CHARS (15);
dbxout_type (BINFO_TYPE (child), 0);
putc (';', asmfile);
}
else
--- 1492,1503 ----
putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile);
putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile);
! CHARS (2);
! print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
! * BITS_PER_UNIT);
! putc (',', asmfile);
! CHARS (1);
dbxout_type (BINFO_TYPE (child), 0);
putc (';', asmfile);
+ CHARS (1);
}
else
*************** dbxout_type (type, full)
*** 1467,1488 ****
dbxout_type_name (BINFO_TYPE (child));
putc (':', asmfile);
dbxout_type (BINFO_TYPE (child), full);
! fputc (',', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! tree_low_cst (BINFO_OFFSET (child), 0)
! * BITS_PER_UNIT);
! fputc (',', asmfile);
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! (tree_low_cst (DECL_SIZE (TYPE_NAME
! (BINFO_TYPE (child))), 0)
! * BITS_PER_UNIT));
! fputc (';', asmfile);
! CHARS (20);
}
}
}
- CHARS (11);
-
/* Write out the field declarations. */
dbxout_type_fields (type);
--- 1507,1529 ----
dbxout_type_name (BINFO_TYPE (child));
putc (':', asmfile);
+ CHARS (1);
dbxout_type (BINFO_TYPE (child), full);
! putc (',', asmfile);
! CHARS (1);
! print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
! * BITS_PER_UNIT);
! putc (',', asmfile);
! CHARS (1);
! print_wide_int (tree_low_cst (DECL_SIZE
! (TYPE_NAME
! (BINFO_TYPE (child))),
! 0)
! * BITS_PER_UNIT);
! putc (';', asmfile);
! CHARS (1);
}
}
}
/* Write out the field declarations. */
dbxout_type_fields (type);
*************** dbxout_type (type, full)
*** 1494,1497 ****
--- 1535,1539 ----
putc (';', asmfile);
+ CHARS (1);
if (use_gnu_debug_info_extensions && TREE_CODE (type) == RECORD_TYPE
*************** dbxout_type (type, full)
*** 1503,1506 ****
--- 1545,1549 ----
/* Tell GDB+ that it may keep reading. */
putc ('~', asmfile);
+ CHARS (1);
/* We need to write out info about what field this class
*************** dbxout_type (type, full)
*** 1511,1518 ****
{
putc ('%', asmfile);
dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
}
putc (';', asmfile);
! CHARS (3);
}
break;
--- 1554,1563 ----
{
putc ('%', asmfile);
+ CHARS (1);
dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
}
+
putc (';', asmfile);
! CHARS (1);
}
break;
*************** dbxout_type (type, full)
*** 1529,1536 ****
{
fprintf (asmfile, "xe");
! CHARS (3);
dbxout_type_name (type);
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
! fprintf (asmfile, ":");
return;
}
--- 1574,1582 ----
{
fprintf (asmfile, "xe");
! CHARS (2);
dbxout_type_name (type);
typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
! putc (':', asmfile);
! CHARS (1);
return;
}
*************** dbxout_type (type, full)
*** 1540,1544 ****
if (use_gnu_debug_info_extensions
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
putc ('e', asmfile);
CHARS (1);
--- 1586,1594 ----
if (use_gnu_debug_info_extensions
&& TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! {
! fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
! CHARS (5);
! }
!
putc ('e', asmfile);
CHARS (1);
*************** dbxout_type (type, full)
*** 1546,1565 ****
{
fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0)
! fprintf (asmfile, HOST_WIDE_INT_PRINT_UNSIGNED,
! TREE_INT_CST_LOW (TREE_VALUE (tem)));
else if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == -1
&& (HOST_WIDE_INT) TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0)
! fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! TREE_INT_CST_LOW (TREE_VALUE (tem)));
else
print_int_cst_octal (TREE_VALUE (tem));
! fprintf (asmfile, ",");
! CHARS (20 + IDENTIFIER_LENGTH (TREE_PURPOSE (tem)));
if (TREE_CHAIN (tem) != 0)
! {
! CONTIN;
! }
}
putc (';', asmfile);
CHARS (1);
--- 1596,1614 ----
{
fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
+ CHARS (IDENTIFIER_LENGTH (TREE_PURPOSE (tem)) + 1);
if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0)
! print_wide_int (TREE_INT_CST_LOW (TREE_VALUE (tem)));
else if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == -1
&& (HOST_WIDE_INT) TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0)
! print_wide_int (TREE_INT_CST_LOW (TREE_VALUE (tem)));
else
print_int_cst_octal (TREE_VALUE (tem));
!
! putc (',', asmfile);
! CHARS (1);
if (TREE_CHAIN (tem) != 0)
! CONTIN;
}
+
putc (';', asmfile);
CHARS (1);
*************** dbxout_type (type, full)
*** 1590,1597 ****
}
else
! {
! /* Treat it as a function type. */
! dbxout_type (TREE_TYPE (type), 0);
! }
break;
--- 1639,1644 ----
}
else
! /* Treat it as a function type. */
! dbxout_type (TREE_TYPE (type), 0);
break;
*************** dbxout_type (type, full)
*** 1608,1616 ****
}
else
! {
! /* Should print as an int, because it is really
! just an offset. */
! dbxout_type (integer_type_node, 0);
! }
break;
--- 1655,1660 ----
}
else
! /* Should print as an int, because it is really just an offset. */
! dbxout_type (integer_type_node, 0);
break;
*************** print_int_cst_octal (c)
*** 1659,1662 ****
--- 1703,1707 ----
fprintf (asmfile, "0");
+ CHARS (1);
if (excess == 3)
*************** print_int_cst_octal (c)
*** 1677,1680 ****
--- 1722,1726 ----
fprintf (asmfile, "%o%01o", (int) beg, (int) middle);
+ CHARS (2);
print_octal (end, HOST_BITS_PER_WIDE_INT / 3);
}
*************** print_octal (value, digits)
*** 1690,1695 ****
--- 1736,1762 ----
for (i = digits - 1; i >= 0; i--)
fprintf (asmfile, "%01o", (int) ((value >> (3 * i)) & 7));
+
+ CHARS (digits);
}
+ /* Output C in decimal while adjusting the number of digits written. */
+
+ static void
+ print_wide_int (c)
+ HOST_WIDE_INT c;
+ {
+ int digs = 0;
+
+ fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, c);
+
+ if (c < 0)
+ digs++, c = -c;
+
+ while (c > 0)
+ c /= 10; digs++;
+
+ CHARS (digs);
+ }
+
/* Output the name of type TYPE, with no punctuation.
Such names can be set up either by typedef declarations
*************** dbxout_symbol_name (decl, suffix, letter
*** 2258,2262 ****
(suffix ? suffix : ""));
! if (letter) putc (letter, asmfile);
}
--- 2325,2330 ----
(suffix ? suffix : ""));
! if (letter)
! putc (letter, asmfile);
}
*************** dbxout_parms (parms)
*** 2480,2484 ****
if (DECL_NAME (parms))
{
! current_sym_nchars = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
--- 2548,2553 ----
if (DECL_NAME (parms))
{
! current_sym_nchars
! = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
*************** dbxout_block (block, depth, args)
*** 2716,2720 ****
assemble_name (asmfile, buf);
#if DBX_BLOCKS_FUNCTION_RELATIVE
! fputc ('-', asmfile);
assemble_name (asmfile, begin_label);
#endif
--- 2785,2789 ----
assemble_name (asmfile, buf);
#if DBX_BLOCKS_FUNCTION_RELATIVE
! putc ('-', asmfile);
assemble_name (asmfile, begin_label);
#endif
*************** dbxout_block (block, depth, args)
*** 2746,2750 ****
assemble_name (asmfile, buf);
#if DBX_BLOCKS_FUNCTION_RELATIVE
! fputc ('-', asmfile);
assemble_name (asmfile, begin_label);
#endif
--- 2815,2819 ----
assemble_name (asmfile, buf);
#if DBX_BLOCKS_FUNCTION_RELATIVE
! putc ('-', asmfile);
assemble_name (asmfile, begin_label);
#endif