summaryrefslogtreecommitdiff
path: root/gcc/config/s390
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-01-26 20:18:12 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-01-26 20:18:12 -0800
commitcea3bd3e5a0a40eb90809bf90063da4911ba23b0 (patch)
treee5878dd8630022a33d8797b199100a5b12fc5c7f /gcc/config/s390
parent1f9131b7db56276783f0276f2083c208dbf05709 (diff)
downloadgcc-cea3bd3e5a0a40eb90809bf90063da4911ba23b0.tar.gz
Makefile.in (CRTSTUFF_CFLAGS): New.
* Makefile.in (CRTSTUFF_CFLAGS): New. (crtbegin.o, crtend.o, crtbeginS.o, crtendS.o, crtbeginT.o): Use it. * config.gcc (alpha-linux, alpha-freebsd, alpha-netbsd): Use plain crtstuff.c instead of alpha assembly version. * crtstuff.c (CRT_CALL_STATIC_FUNCTION): Rewrite to assume the entire dummy function sequence. Use FORCE_CODE_SECTION_ALIGN not FORCE_{INIT,FINI}_SECTION_ALIGN. (__do_global_dtors_aux): Mark used. (frame_dummy, __do_global_ctors_aux): Mark used. (fini_dummy, init_dummy): Remove. * config/alpha/crtbegin.asm: Remove file. * config/alpha/crtend.asm: Remove file. * config/alpha/t-crtbe: Remove file. * config/alpha/elf.h (CRT_CALL_STATIC_FUNCTION): New. (LINK_EH_SPEC): New. * config/cris/cris.h (CRT_CALL_STATIC_FUNCTION): Rewrite old FORCE_INIT_SECTION_ALIGN hack. Register __fini_start before calling constructors. * config/cris/linux.h (CRT_CALL_STATIC_FUNCTION): Undef. * config/i386/i386.h (CRT_CALL_STATIC_FUNCTION): New. * config/i386/linux.h (CRT_CALL_STATIC_FUNCTION): Replace old CRT_END_INIT_DUMMY hack. * config/i386/sol2.h (FORCE_CODE_SECTION_ALIGN): Replace FORCE_{INIT,FINI}_SECTION_ALIGN. * config/mcore/mcore-elf.h (FORCE_CODE_SECTION_ALIGN): Replace FORCE_{INIT,FINI}_SECTION_ALIGN. * config/s390/s390.h (CRT_CALL_STATIC_FUNCTION): Update for new invocation sequence. * config/sh/sh.h (CRT_CALL_STATIC_FUNCTION): Likewise. * doc/tm.texi (CRT_CALL_STATIC_FUNCTION): Update. (FORCE_CODE_SECTION_ALIGN): New. From-SVN: r49261
Diffstat (limited to 'gcc/config/s390')
-rw-r--r--gcc/config/s390/s390.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index 57e39aa5f86..99e1ef98530 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -1299,15 +1299,13 @@ extern struct rtx_def *s390_compare_op0, *s390_compare_op1;
/* S/390 constant pool breaks the devices in crtstuff.c to control section
in where code resides. We have to write it as asm code. */
#ifndef __s390x__
-#define CRT_CALL_STATIC_FUNCTION(func) \
- if (0) \
- func (); /* ... to avoid warnings. */ \
- else \
- asm \
- ("bras\t%%r2,1f\n\
-0: .long\t" #func " - 0b\n\
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \
+ asm (SECTION_OP "\n\
+ bras\t%%r2,1f\n\
+0: .long\t" USER_LABEL_PREFIX #FUNC " - 0b\n\
1: l\t%%r3,0(%%r2)\n\
- bas\t%%r14,0(%%r3,%%r2)" : : : "2", "3", "cc", "memory");
+ bas\t%%r14,0(%%r3,%%r2)\n\
+ .previous");
#endif
/* Constant Pool for all symbols operands which are changed with