for (i = 0; i < n_deferred_plabels; i++)
{
ASM_OUTPUT_INTERNAL_LABEL (file, "L", CODE_LABEL_NUMBER (deferred_plabels[i].internal_label));
- ASM_OUTPUT_INT (file, deferred_plabels[i].symbol);
+ assemble_integer (deferred_plabels[i].symbol, 4, 1);
}
n_deferred_plabels = 0;
}
}
if (GET_CODE (x) == REG)
{
+ fputs (reg_names [REGNO (x)], file);
if (FP_REG_P (x) && GET_MODE_SIZE (GET_MODE (x)) <= 4 && (REGNO (x) & 1) == 0)
- fprintf (file, "%sL", reg_names [REGNO (x)]);
- else
- fprintf (file, "%s", reg_names [REGNO (x)]);
+ fputs ("L", file);
}
else if (GET_CODE (x) == MEM)
{
fprintf (FILE, "\t.word 0x%lx\n", l); \
} while (0)
-/* This is how to output an assembler line defining an `int' constant. */
+/* This is how to output an assembler line defining an `int' constant.
+
+ This is made more complicated by the fact that functions must be
+ prefixed by a P% as well as code label references for the exception
+ table -- otherwise the linker chokes. */
#define ASM_OUTPUT_INT(FILE,VALUE) \
{ fputs ("\t.word ", FILE); \
if (function_label_operand (VALUE, VOIDmode) \
&& !TARGET_PORTABLE_RUNTIME) \
fputs ("P%", FILE); \
+ if (in_section == in_named \
+ && ! strcmp (".gcc_except_table", in_named_name))\
+ fputs ("P%", FILE); \
output_addr_const (FILE, (VALUE)); \
fputs ("\n", FILE);}