From c9d9bc85c82e1e0e8f17ef6e601da567c48cdb0d Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Sat, 4 May 1996 16:13:28 +0000 Subject: [PATCH] aout.h (ASM_OUTPUT_MI_THUNK): Delete. * aout.h (ASM_OUTPUT_MI_THUNK): Delete. (ASM_OUTPUT_OPTIONS): Define. (ASM_FILE_START): Call ASM_OUTPUT_OPTIONS. (BSS_SECTION_OP): Define. (ASM_OUTPUT_ALIGN): Don't output anything if byte alignment is wanted. (ASM_OUTPUT_ALIGNED_BSS): Define. From-SVN: r11923 --- gcc/config/arm/aout.h | 48 +++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/gcc/config/arm/aout.h b/gcc/config/arm/aout.h index 74814a18796..b47fada92b3 100644 --- a/gcc/config/arm/aout.h +++ b/gcc/config/arm/aout.h @@ -23,12 +23,18 @@ Boston, MA 02111-1307, USA. */ #define ARM_OS_NAME "(generic)" #endif +#define ASM_OUTPUT_OPTIONS(FILE) \ + output_options(FILE, \ + f_options, sizeof (f_options) / sizeof (f_options[0]), \ + W_options, sizeof (W_options) / sizeof (W_options[0])) + /* The text to go at the start of the assembler file */ -#define ASM_FILE_START(STREAM) \ -{ \ - extern char *version_string; \ - fprintf (STREAM,"%s Generated by gcc %s for ARM/%s\n", \ - ASM_COMMENT_START, version_string, ARM_OS_NAME); \ +#define ASM_FILE_START(STREAM) \ +{ \ + extern char *version_string; \ + fprintf (STREAM,"%s Generated by gcc %s for ARM/%s\n", \ + ASM_COMMENT_START, version_string, ARM_OS_NAME); \ + ASM_OUTPUT_OPTIONS(STREAM); \ fprintf (STREAM,"%srfp\t.req\t%sr9\n", REGISTER_PREFIX, REGISTER_PREFIX); \ fprintf (STREAM,"%ssl\t.req\t%sr10\n", REGISTER_PREFIX, REGISTER_PREFIX); \ fprintf (STREAM,"%sfp\t.req\t%sr11\n", REGISTER_PREFIX, REGISTER_PREFIX); \ @@ -44,6 +50,7 @@ Boston, MA 02111-1307, USA. */ /* Switch to the text or data segment. */ #define TEXT_SECTION_ASM_OP ".text" #define DATA_SECTION_ASM_OP ".data" +#define BSS_SECTION_ASM_OP ".bss" #define REGISTER_PREFIX "" #define USER_LABEL_PREFIX "_" @@ -227,7 +234,7 @@ do { char dstr[30]; \ \ if (amount == 2) \ fprintf (STREAM, "\t.even\n"); \ - else \ + else if (amount != 1) \ fprintf (STREAM, "\t.align\t%d\n", amount - 4); \ \ if (in_text_section ()) \ @@ -243,8 +250,12 @@ do { char dstr[30]; \ /* Output a local common block. /bin/as can't do this, so hack a `.space' into the bss segment. Note that this is *bad* practice. */ -#define ASM_OUTPUT_LOCAL(STREAM,NAME,SIZE,ROUNDED) \ - output_lcomm_directive (STREAM, NAME, SIZE, ROUNDED) +#define ASM_OUTPUT_ALIGNED_LOCAL(STREAM,NAME,SIZE,ALIGN) \ + output_lcomm_directive (STREAM, NAME, SIZE, ALIGN) + +/* Output a zero-initialized block. */ +#define ASM_OUTPUT_ALIGNED_BSS(STREAM,NAME,SIZE,ALIGN) \ + asm_output_aligned_bss(STREAM, NAME, SIZE, ALIGN) /* Output a source line for the debugger. */ /* #define ASM_OUTPUT_SOURCE_LINE(STREAM,LINE) */ @@ -261,25 +272,4 @@ do { char dstr[30]; \ #define ASM_COMMENT_START "@" #endif -/* Output code to add DELTA to the first argument, and then jump to FUNCTION. - Used for C++ multiple inheritance. */ -#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ -do { \ - int mi_delta = (DELTA); \ - char *mi_op = mi_delta < 0 ? "sub" : "add"; \ - unsigned int mi_mask = 0xff000000; \ - if (mi_delta < 0) mi_delta = -mi_delta; \ - while (mi_mask) \ - { \ - if (mi_delta & mi_mask) \ - fprintf (FILE, "\t%s %s, %s, #%d\n", \ - mi_op, reg_names[0], reg_names[0], mi_delta & mi_mask); \ - arm_increase_location (4); \ - mi_mask >>= 8; \ - } \ - fprintf (FILE, "\tldr pc, 1f\n1:"); \ - arm_increase_location (4); \ - ASM_OUTPUT_INT (FILE, XEXP (DECL_RTL (FUNCTION), 0)); \ -} while (0) - #include "arm/arm.h" -- 2.30.2