summaryrefslogtreecommitdiff
path: root/gcc/crtstuff.c
diff options
context:
space:
mode:
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-07 06:00:07 +0000
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-07 06:00:07 +0000
commita0c3f57468656239f0720772b25f80f98fec9386 (patch)
tree0a818627c9d2e5109f50615e83ad08d7572b1feb /gcc/crtstuff.c
parent3241194f8a468d69f4cfc4c6a8d78e5bc2c1736d (diff)
downloadgcc-a0c3f57468656239f0720772b25f80f98fec9386.tar.gz
Index: ChangeLog
2002-11-05 Geoffrey Keating <geoffk@apple.com> * config.gcc: Don't create crtbegin, crtend on Darwin; do create crt2.o. Rearrange t-darwin makefiles. * crtstuff.c [OBJECT_FORMAT_MACHO]: Delete. * unwind-dw2-fde-darwin.c: New. * unwind-dw2-fde-glibc.c: Correct comment. * unwind-dw2-fde.c (__register_frame_info_bases) [DWARF2_OBJECT_END_PTR_EXTENSION]: Clear fde_end. (classify_object_over_fdes): Use last_fde. (add_fdes): Likewise. (linear_search_fdes): Likewise. * unwind-dw2-fde.h (struct object) [DWARF2_OBJECT_END_PTR_EXTENSION]: Add fde_end field. (last_fde): New. * config/darwin.h (STARTFILE_SPEC): Include crt2.o not crtbegin.o. (ENDFILE_SPEC): No crtend.o. * config/t-darwin: New. * config/i386/t-darwin: Delete. * config/darwin-crt2.c: New. * config/rs6000/t-darwin: Delete contents duplicated in t-rs6000 or config/t-darwin. Index: testsuite/ChangeLog 2002-11-05 Geoffrey Keating <geoffk@apple.com> * g++.old-deja/g++.eh/badalloc1.C: XFAIL excess errors test on Darwin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58877 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/crtstuff.c')
-rw-r--r--gcc/crtstuff.c82
1 files changed, 0 insertions, 82 deletions
diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c
index 125e236ee9c..e5f5d78aeea 100644
--- a/gcc/crtstuff.c
+++ b/gcc/crtstuff.c
@@ -126,8 +126,6 @@ extern void *__deregister_frame_info_bases (void *)
/* Likewise for _Jv_RegisterClasses. */
extern void _Jv_RegisterClasses (void *) TARGET_ATTRIBUTE_WEAK;
-#ifndef OBJECT_FORMAT_MACHO
-
#ifdef OBJECT_FORMAT_ELF
/* Declare a pointer to void function type. */
@@ -542,83 +540,3 @@ __do_global_ctors (void)
#else /* ! CRT_BEGIN && ! CRT_END */
#error "One of CRT_BEGIN or CRT_END must be defined."
#endif
-
-#else /* OBJECT_FORMAT_MACHO */
-
-/* Crt stuff for Mach-O (NeXT and Darwin).
-
- The theory of this is that each dynamically-loadable module,
- including the main program itself, must have been positioned by
- dyld before any frame info can be registered. So we set up the
- registration functions as dyld hooks, using a "preregistration"
- function that is called directly from the system crt1.o. */
-
-#ifdef CRT_BEGIN
-
-/* Homemade decls substituting for getsect.h and dyld.h, so cross
- compilation works. */
-struct mach_header;
-extern char *getsectdatafromheader (struct mach_header *, const char *,
- const char *, unsigned long *);
-extern void _dyld_register_func_for_add_image
- (void (*) (struct mach_header *, unsigned long));
-extern void _dyld_register_func_for_remove_image
- (void (*) (struct mach_header *, unsigned long));
-
-extern void __darwin_gcc3_preregister_frame_info (void);
-
-static void
-unwind_dyld_add_image_hook (struct mach_header *mh,
- unsigned long vm_slide)
-{
- unsigned long sz;
- char *fde;
-
- fde = getsectdatafromheader (mh, "__TEXT", "__eh_frame", &sz);
- if (fde)
- {
- struct object *ob = (struct object *) malloc (sizeof (struct object));
-
- __register_frame_info (fde + vm_slide, ob);
- }
-}
-
-static void
-unwind_dyld_remove_image_hook (struct mach_header *mh,
- unsigned long vm_slide)
-{
- unsigned long sz;
- char *fde;
-
- fde = getsectdatafromheader (mh, "__TEXT", "__eh_frame", &sz);
-
- if (fde)
- __deregister_frame_info (fde + vm_slide);
-}
-
-/* Call this routine from the system crt1.o. The call is standard in
- Darwin 6.x (Mac OS X 10.2) and later; for earlier systems, you
- would need to modify crt.c in the Csu project. (This isn't great,
- but other alternatives run afoul of linker semantics. This
- function is declared as common and tested before being called, so
- that programs compiled by older GCCs still link and run.) */
-
-void
-__darwin_gcc3_preregister_frame_info ()
-{
- _dyld_register_func_for_add_image (unwind_dyld_add_image_hook);
- _dyld_register_func_for_remove_image (unwind_dyld_remove_image_hook);
-}
-
-#elif defined(CRT_END) /* ! CRT_BEGIN */
-
-/* Install a single zero word at the end of the __eh_frame section. */
-
-asm (".section __TEXT,__eh_frame");
-asm (".long 0");
-
-#else /* ! CRT_BEGIN && ! CRT_END */
-#error "One of CRT_BEGIN or CRT_END must be defined."
-#endif
-
-#endif /* OBJECT_FORMAT_MACHO */