aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/aout.h
diff options
context:
space:
mode:
authorRichard Earnshaw <erich@gnu.org>1996-05-04 16:13:28 +0000
committerRichard Earnshaw <erich@gnu.org>1996-05-04 16:13:28 +0000
commitc9d9bc85c82e1e0e8f17ef6e601da567c48cdb0d (patch)
treef5332881c3d741c1562025bc1f4c81389fd72e94 /gcc/config/arm/aout.h
parent4e574e82bba25741e67db5d1f2e1b00f8cff356a (diff)
downloadgcc-c9d9bc85c82e1e0e8f17ef6e601da567c48cdb0d.zip
gcc-c9d9bc85c82e1e0e8f17ef6e601da567c48cdb0d.tar.gz
gcc-c9d9bc85c82e1e0e8f17ef6e601da567c48cdb0d.tar.bz2
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
Diffstat (limited to 'gcc/config/arm/aout.h')
-rw-r--r--gcc/config/arm/aout.h48
1 files changed, 19 insertions, 29 deletions
diff --git a/gcc/config/arm/aout.h b/gcc/config/arm/aout.h
index 74814a1..b47fada 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"