/* Dwarf2 assembler output helper routines.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GCC.
if (BYTES_BIG_ENDIAN)
{
for (i = size - 1; i > 0; --i)
- fprintf (asm_out_file, "0x%x,", bytes[i]);
- fprintf (asm_out_file, "0x%x", bytes[0]);
+ fprintf (asm_out_file, "%#x,", bytes[i]);
+ fprintf (asm_out_file, "%#x", bytes[0]);
}
else
{
for (i = 0; i < size - 1; ++i)
- fprintf (asm_out_file, "0x%x,", bytes[i]);
- fprintf (asm_out_file, "0x%x", bytes[i]);
+ fprintf (asm_out_file, "%#x,", bytes[i]);
+ fprintf (asm_out_file, "%#x", bytes[i]);
}
}
va_end (ap);
}
+/* Output the difference between two symbols in instruction units
+ in a given size. */
+
+void
+dw2_asm_output_vms_delta (int size ATTRIBUTE_UNUSED,
+ const char *lab1, const char *lab2,
+ const char *comment, ...)
+{
+ va_list ap;
+
+ va_start (ap, comment);
+
+#ifndef ASM_OUTPUT_DWARF_VMS_DELTA
+ /* VMS Delta is only special on ia64-vms, but this funtion also gets
+ called on alpha-vms so it has to do something sane. */
+ dw2_asm_output_delta (size, lab1, lab2, comment);
+#else
+ ASM_OUTPUT_DWARF_VMS_DELTA (asm_out_file, size, lab1, lab2);
+ if (flag_debug_asm && comment)
+ {
+ fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
+ vfprintf (asm_out_file, comment, ap);
+ }
+ fputc ('\n', asm_out_file);
+#endif
+
+ va_end (ap);
+}
+
/* Output a section-relative reference to a LABEL, which was placed in
BASE. In general this can only be done for debugging symbols.
E.g. on most targets with the GNU linker, this is accomplished with
/* More bytes to follow. */
byte |= 0x80;
- fprintf (asm_out_file, "0x%x", byte);
+ fprintf (asm_out_file, "%#x", byte);
if (value == 0)
break;
fputc (',', asm_out_file);
if (byte_op)
{
- fprintf (asm_out_file, "0x%x", byte);
+ fprintf (asm_out_file, "%#x", byte);
if (work != 0)
fputc (',', asm_out_file);
}
if (more)
byte |= 0x80;
- fprintf (asm_out_file, "0x%x", byte);
+ fprintf (asm_out_file, "%#x", byte);
if (!more)
break;
fputc (',', asm_out_file);
if (byte_op)
{
- fprintf (asm_out_file, "0x%x", byte);
+ fprintf (asm_out_file, "%#x", byte);
if (more)
fputc (',', asm_out_file);
}
if (! indirect_pool)
/* We use strcmp, rather than just comparing pointers, so that the
sort order will not depend on the host system. */
- indirect_pool = splay_tree_new_ggc (splay_tree_compare_strings);
+ indirect_pool = splay_tree_new_ggc (splay_tree_compare_strings,
+ ggc_alloc_splay_tree_str_tree_node_splay_tree_s,
+ ggc_alloc_splay_tree_str_tree_node_splay_tree_node_s);
gcc_assert (GET_CODE (x) == SYMBOL_REF);
DECL_ARTIFICIAL (decl) = 1;
DECL_IGNORED_P (decl) = 1;
DECL_INITIAL (decl) = decl;
+ TREE_READONLY (decl) = 1;
if (TREE_PUBLIC (id))
{