From 59d8fe27225bbdeb958692a320caf77eb8fc9f17 Mon Sep 17 00:00:00 2001 From: Stan Shebs Date: Wed, 5 Jan 2005 18:39:43 +0000 Subject: unwind-dw2-fde-darwin.c (examine_objects): Use 64-bit Mach-O getters if ppc64. * unwind-dw2-fde-darwin.c (examine_objects): Use 64-bit Mach-O getters if ppc64. * config/darwin.c (darwin_asm_output_dwarf_delta): Obey size argument. * config/darwin.h (ASM_PREFERRED_EH_DATA_FORMAT): Use signed four-byte field for global code case. (STARTFILE_SPEC): Avoid crt2.o for 64-bit compilation. From-SVN: r92962 --- gcc/unwind-dw2-fde-darwin.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'gcc/unwind-dw2-fde-darwin.c') diff --git a/gcc/unwind-dw2-fde-darwin.c b/gcc/unwind-dw2-fde-darwin.c index 24cf3bc..12c9ed3 100644 --- a/gcc/unwind-dw2-fde-darwin.c +++ b/gcc/unwind-dw2-fde-darwin.c @@ -57,8 +57,11 @@ extern void _keymgr_set_and_unlock_processwide_ptr (int, void *); extern void _keymgr_unlock_processwide_ptr (int); struct mach_header; +struct mach_header_64; extern char *getsectdatafromheader (struct mach_header*, const char*, const char *, unsigned long *); +extern char *getsectdatafromheader_64 (struct mach_header*, const char*, + const char *, unsigned long *); /* This is referenced from KEYMGR_GCC3_DW2_OBJ_LIST. */ struct km_object_info { @@ -151,11 +154,21 @@ examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) char *fde; unsigned long sz; +#ifdef __ppc64__ + fde = getsectdatafromheader_64 ((struct mach_header_64 *) image->mh, + "__DATA", "__eh_frame", &sz); +#else fde = getsectdatafromheader (image->mh, "__DATA", "__eh_frame", &sz); +#endif if (fde == NULL) { +#ifdef __ppc64__ + fde = getsectdatafromheader_64 ((struct mach_header_64 *) image->mh, + "__TEXT", "__eh_frame", &sz); +#else fde = getsectdatafromheader (image->mh, "__TEXT", "__eh_frame", &sz); +#endif if (fde != NULL) image->examined_p |= IMAGE_IS_TEXT_MASK; } -- cgit v1.1