# 1 "../../gcc/unwind-dw2-fde-darwin.c" # 1 "/Users/dannyb/gccstuff/gcc-pta-dev/build/gcc//" # 1 "" # 1 "" # 1 "../../gcc/unwind-dw2-fde-darwin.c" # 29 "../../gcc/unwind-dw2-fde-darwin.c" # 1 "./tconfig.h" 1 # 1 "./auto-host.h" 1 # 7 "./tconfig.h" 2 # 1 "../../gcc/../include/ansidecl.h" 1 # 9 "./tconfig.h" 2 # 30 "../../gcc/unwind-dw2-fde-darwin.c" 2 # 1 "../../gcc/tsystem.h" 1 # 47 "../../gcc/tsystem.h" # 1 "./include/stddef.h" 1 3 4 # 152 "./include/stddef.h" 3 4 typedef int ptrdiff_t; # 214 "./include/stddef.h" 3 4 typedef long unsigned int size_t; # 326 "./include/stddef.h" 3 4 typedef int wchar_t; # 48 "../../gcc/tsystem.h" 2 # 1 "./include/float.h" 1 3 4 # 49 "../../gcc/tsystem.h" 2 # 87 "../../gcc/tsystem.h" # 1 "./include/stdarg.h" 1 3 4 # 43 "./include/stdarg.h" 3 4 typedef __builtin_va_list __gnuc_va_list; # 105 "./include/stdarg.h" 3 4 typedef __gnuc_va_list va_list; # 88 "../../gcc/tsystem.h" 2 # 1 "/usr/include/stdio.h" 1 3 4 # 64 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/_types.h" 1 3 4 # 27 "/usr/include/_types.h" 3 4 # 1 "/usr/include/sys/_types.h" 1 3 4 # 26 "/usr/include/sys/_types.h" 3 4 # 1 "/usr/include/sys/cdefs.h" 1 3 4 # 27 "/usr/include/sys/_types.h" 2 3 4 # 1 "/usr/include/machine/_types.h" 1 3 4 # 28 "/usr/include/machine/_types.h" 3 4 # 1 "/usr/include/i386/_types.h" 1 3 4 # 31 "/usr/include/i386/_types.h" 3 4 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef short __int16_t; typedef unsigned short __uint16_t; typedef int __int32_t; typedef unsigned int __uint32_t; typedef long long __int64_t; typedef unsigned long long __uint64_t; typedef long __darwin_intptr_t; typedef unsigned int __darwin_natural_t; # 64 "/usr/include/i386/_types.h" 3 4 typedef int __darwin_ct_rune_t; typedef union { char __mbstate8[128]; long long _mbstateL; } __mbstate_t; typedef __mbstate_t __darwin_mbstate_t; typedef int __darwin_ptrdiff_t; typedef long unsigned int __darwin_size_t; typedef __builtin_va_list __darwin_va_list; typedef int __darwin_wchar_t; typedef __darwin_wchar_t __darwin_rune_t; typedef int __darwin_wint_t; typedef unsigned long __darwin_clock_t; typedef __uint32_t __darwin_socklen_t; typedef long __darwin_ssize_t; typedef long __darwin_time_t; # 29 "/usr/include/machine/_types.h" 2 3 4 # 28 "/usr/include/sys/_types.h" 2 3 4 struct mcontext; struct mcontext64; # 60 "/usr/include/sys/_types.h" 3 4 struct __darwin_pthread_handler_rec { void (*__routine)(void *); void *__arg; struct __darwin_pthread_handler_rec *__next; }; struct _opaque_pthread_attr_t { long __sig; char __opaque[36]; }; struct _opaque_pthread_cond_t { long __sig; char __opaque[24]; }; struct _opaque_pthread_condattr_t { long __sig; char __opaque[4]; }; struct _opaque_pthread_mutex_t { long __sig; char __opaque[40]; }; struct _opaque_pthread_mutexattr_t { long __sig; char __opaque[8]; }; struct _opaque_pthread_once_t { long __sig; char __opaque[4]; }; struct _opaque_pthread_rwlock_t { long __sig; char __opaque[124]; }; struct _opaque_pthread_rwlockattr_t { long __sig; char __opaque[12]; }; struct _opaque_pthread_t { long __sig; struct __darwin_pthread_handler_rec *__cleanup_stack; char __opaque[596]; }; # 96 "/usr/include/sys/_types.h" 3 4 typedef __int64_t __darwin_blkcnt_t; typedef __int32_t __darwin_blksize_t; typedef __int32_t __darwin_dev_t; typedef unsigned int __darwin_fsblkcnt_t; typedef unsigned int __darwin_fsfilcnt_t; typedef __uint32_t __darwin_gid_t; typedef __uint32_t __darwin_id_t; typedef __uint32_t __darwin_ino_t; typedef __darwin_natural_t __darwin_mach_port_name_t; typedef __darwin_mach_port_name_t __darwin_mach_port_t; typedef struct mcontext *__darwin_mcontext_t; typedef struct mcontext64 *__darwin_mcontext64_t; typedef __uint16_t __darwin_mode_t; typedef __int64_t __darwin_off_t; typedef __int32_t __darwin_pid_t; typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t; typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t; typedef unsigned long __darwin_pthread_key_t; typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t; typedef struct _opaque_pthread_once_t __darwin_pthread_once_t; typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t; typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t; typedef struct _opaque_pthread_t *__darwin_pthread_t; typedef __uint32_t __darwin_sigset_t; typedef __int32_t __darwin_suseconds_t; typedef __uint32_t __darwin_uid_t; typedef __uint32_t __darwin_useconds_t; typedef unsigned char __darwin_uuid_t[16]; struct sigaltstack { void *ss_sp; __darwin_size_t ss_size; int ss_flags; }; typedef struct sigaltstack __darwin_stack_t; struct ucontext { int uc_onstack; __darwin_sigset_t uc_sigmask; __darwin_stack_t uc_stack; struct ucontext *uc_link; __darwin_size_t uc_mcsize; __darwin_mcontext_t uc_mcontext; }; typedef struct ucontext __darwin_ucontext_t; struct ucontext64 { int uc_onstack; __darwin_sigset_t uc_sigmask; __darwin_stack_t uc_stack; struct ucontext64 *uc_link; __darwin_size_t uc_mcsize; __darwin_mcontext64_t uc_mcontext64; }; typedef struct ucontext64 __darwin_ucontext64_t; # 28 "/usr/include/_types.h" 2 3 4 typedef int __darwin_nl_item; typedef int __darwin_wctrans_t; typedef unsigned long __darwin_wctype_t; # 65 "/usr/include/stdio.h" 2 3 4 # 84 "/usr/include/stdio.h" 3 4 typedef __darwin_off_t fpos_t; # 98 "/usr/include/stdio.h" 3 4 struct __sbuf { unsigned char *_base; int _size; }; struct __sFILEX; # 132 "/usr/include/stdio.h" 3 4 typedef struct __sFILE { unsigned char *_p; int _r; int _w; short _flags; short _file; struct __sbuf _bf; int _lbfsize; void *_cookie; int (*_close)(void *); int (*_read) (void *, char *, int); fpos_t (*_seek) (void *, fpos_t, int); int (*_write)(void *, const char *, int); struct __sbuf _ub; struct __sFILEX *_extra; int _ur; unsigned char _ubuf[3]; unsigned char _nbuf[1]; struct __sbuf _lb; int _blksize; fpos_t _offset; } FILE; extern FILE __sF[]; # 248 "/usr/include/stdio.h" 3 4 void clearerr(FILE *); int fclose(FILE *); int feof(FILE *); int ferror(FILE *); int fflush(FILE *); int fgetc(FILE *); int fgetpos(FILE * , fpos_t *); char *fgets(char * , int, FILE *); FILE *fopen(const char * , const char * ); int fprintf(FILE * , const char * , ...) ; int fputc(int, FILE *); int fputs(const char * , FILE * ); size_t fread(void * , size_t, size_t, FILE * ); FILE *freopen(const char * , const char * , FILE * ) ; int fscanf(FILE * , const char * , ...) ; int fseek(FILE *, long, int); int fsetpos(FILE *, const fpos_t *); long ftell(FILE *); size_t fwrite(const void * , size_t, size_t, FILE * ) ; int getc(FILE *); int getchar(void); char *gets(char *); extern const int sys_nerr; extern const char *const sys_errlist[]; void perror(const char *); int printf(const char * , ...) ; int putc(int, FILE *); int putchar(int); int puts(const char *); int remove(const char *); int rename (const char *, const char *); void rewind(FILE *); int scanf(const char * , ...) ; void setbuf(FILE * , char * ); int setvbuf(FILE * , char * , int, size_t); int sprintf(char * , const char * , ...) ; int sscanf(const char * , const char * , ...) ; FILE *tmpfile(void); char *tmpnam(char *); int ungetc(int, FILE *); int vfprintf(FILE * , const char * , va_list) ; int vprintf(const char * , va_list) ; int vsprintf(char * , const char * , va_list) ; int asprintf(char **, const char *, ...) ; int vasprintf(char **, const char *, va_list) ; # 308 "/usr/include/stdio.h" 3 4 char *ctermid(char *); char *ctermid_r(char *); FILE *fdopen(int, const char *); char *fgetln(FILE *, size_t *); int fileno(FILE *); void flockfile(FILE *); const char *fmtcheck(const char *, const char *); int fpurge(FILE *); int fseeko(FILE *, fpos_t, int); fpos_t ftello(FILE *); int ftrylockfile(FILE *); void funlockfile(FILE *); int getc_unlocked(FILE *); int getchar_unlocked(void); int getw(FILE *); int pclose(FILE *); FILE *popen(const char *, const char *); int putc_unlocked(int, FILE *); int putchar_unlocked(int); int putw(int, FILE *); void setbuffer(FILE *, char *, int); int setlinebuf(FILE *); int snprintf(char * , size_t, const char * , ...) ; char *tempnam(const char *, const char *); int vfscanf(FILE * , const char * , va_list) ; int vscanf(const char * , va_list) ; int vsnprintf(char * , size_t, const char * , va_list) ; int vsscanf(const char * , const char * , va_list) ; FILE *zopen(const char *, const char *, int); FILE *funopen(const void *, int (*)(void *, char *, int), int (*)(void *, const char *, int), fpos_t (*)(void *, fpos_t, int), int (*)(void *)); # 372 "/usr/include/stdio.h" 3 4 int __srget(FILE *); int __svfscanf(FILE *, const char *, va_list) ; int __swbuf(int, FILE *); static __inline int __sputc(int _c, FILE *_p) { if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n')) return (*_p->_p++ = _c); else return (__swbuf(_c, _p)); } # 91 "../../gcc/tsystem.h" 2 # 1 "/usr/include/sys/types.h" 1 3 4 # 66 "/usr/include/sys/types.h" 3 4 # 1 "/usr/include/sys/appleapiopts.h" 1 3 4 # 67 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/machine/types.h" 1 3 4 # 32 "/usr/include/machine/types.h" 3 4 # 1 "/usr/include/i386/types.h" 1 3 4 # 64 "/usr/include/i386/types.h" 3 4 # 1 "/usr/include/i386/_types.h" 1 3 4 # 65 "/usr/include/i386/types.h" 2 3 4 typedef signed char int8_t; typedef unsigned char u_int8_t; typedef short int16_t; typedef unsigned short u_int16_t; typedef int int32_t; typedef unsigned int u_int32_t; typedef long long int64_t; typedef unsigned long long u_int64_t; typedef int32_t register_t; typedef __darwin_intptr_t intptr_t; typedef unsigned long int uintptr_t; typedef u_int64_t user_addr_t; typedef u_int64_t user_size_t; typedef int64_t user_ssize_t; typedef int64_t user_long_t; typedef u_int64_t user_ulong_t; typedef int64_t user_time_t; typedef u_int64_t syscall_arg_t; # 33 "/usr/include/machine/types.h" 2 3 4 # 73 "/usr/include/sys/types.h" 2 3 4 # 1 "/usr/include/machine/endian.h" 1 3 4 # 32 "/usr/include/machine/endian.h" 3 4 # 1 "/usr/include/i386/endian.h" 1 3 4 # 92 "/usr/include/i386/endian.h" 3 4 # 1 "/usr/include/sys/_endian.h" 1 3 4 # 88 "/usr/include/sys/_endian.h" 3 4 # 1 "/usr/include/stdint.h" 1 3 4 # 34 "/usr/include/stdint.h" 3 4 typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; typedef unsigned long long uint64_t; typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; # 91 "/usr/include/stdint.h" 3 4 typedef long long int intmax_t; # 100 "/usr/include/stdint.h" 3 4 typedef long long unsigned int uintmax_t; # 89 "/usr/include/sys/_endian.h" 2 3 4 # 1 "/usr/include/libkern/OSByteOrder.h" 1 3 4 # 54 "/usr/include/libkern/OSByteOrder.h" 3 4 # 1 "/usr/include/libkern/i386/OSByteOrder.h" 1 3 4 # 40 "/usr/include/libkern/i386/OSByteOrder.h" 3 4 static __inline__ uint16_t _OSSwapInt16( uint16_t data ) { return ((data << 8) | (data >> 8)); } static __inline__ uint32_t _OSSwapInt32( uint32_t data ) { __asm__ ("bswap %0" : "+r" (data)); return data; } static __inline__ uint64_t _OSSwapInt64( uint64_t data ) { __asm__ ("bswap %%eax\n\t" "bswap %%edx\n\t" "xchgl %%eax, %%edx" : "+A" (data)); return data; } # 88 "/usr/include/libkern/i386/OSByteOrder.h" 3 4 static __inline__ uint16_t OSReadSwapInt16( const volatile void * base, uintptr_t byteOffset ) { uint16_t result; result = *(volatile uint16_t *)((uintptr_t)base + byteOffset); return _OSSwapInt16(result); } static __inline__ uint32_t OSReadSwapInt32( const volatile void * base, uintptr_t byteOffset ) { uint32_t result; result = *(volatile uint32_t *)((uintptr_t)base + byteOffset); return _OSSwapInt32(result); } static __inline__ uint64_t OSReadSwapInt64( const volatile void * base, uintptr_t byteOffset ) { uint64_t result; result = *(volatile uint64_t *)((uintptr_t)base + byteOffset); return _OSSwapInt64(result); } static __inline__ void OSWriteSwapInt16( volatile void * base, uintptr_t byteOffset, uint16_t data ) { *(volatile uint16_t *)((uintptr_t)base + byteOffset) = _OSSwapInt16(data); } static __inline__ void OSWriteSwapInt32( volatile void * base, uintptr_t byteOffset, uint32_t data ) { *(volatile uint32_t *)((uintptr_t)base + byteOffset) = _OSSwapInt32(data); } static __inline__ void OSWriteSwapInt64( volatile void * base, uintptr_t byteOffset, uint64_t data ) { *(volatile uint64_t *)((uintptr_t)base + byteOffset) = _OSSwapInt64(data); } # 55 "/usr/include/libkern/OSByteOrder.h" 2 3 4 # 80 "/usr/include/libkern/OSByteOrder.h" 3 4 enum { OSUnknownByteOrder, OSLittleEndian, OSBigEndian }; static __inline__ int32_t OSHostByteOrder(void) { return OSLittleEndian; } # 109 "/usr/include/libkern/OSByteOrder.h" 3 4 static __inline__ uint16_t _OSReadInt16( const volatile void * base, uintptr_t byteOffset ) { return *(volatile uint16_t *)((uintptr_t)base + byteOffset); } static __inline__ uint32_t _OSReadInt32( const volatile void * base, uintptr_t byteOffset ) { return *(volatile uint32_t *)((uintptr_t)base + byteOffset); } static __inline__ uint64_t _OSReadInt64( const volatile void * base, uintptr_t byteOffset ) { return *(volatile uint64_t *)((uintptr_t)base + byteOffset); } static __inline__ void _OSWriteInt16( volatile void * base, uintptr_t byteOffset, uint16_t data ) { *(volatile uint16_t *)((uintptr_t)base + byteOffset) = data; } static __inline__ void _OSWriteInt32( volatile void * base, uintptr_t byteOffset, uint32_t data ) { *(volatile uint32_t *)((uintptr_t)base + byteOffset) = data; } static __inline__ void _OSWriteInt64( volatile void * base, uintptr_t byteOffset, uint64_t data ) { *(volatile uint64_t *)((uintptr_t)base + byteOffset) = data; } # 90 "/usr/include/sys/_endian.h" 2 3 4 uint16_t ntohs(uint16_t); uint16_t htons(uint16_t); uint32_t ntohl(uint32_t); uint32_t htonl(uint32_t); # 93 "/usr/include/i386/endian.h" 2 3 4 # 33 "/usr/include/machine/endian.h" 2 3 4 # 76 "/usr/include/sys/types.h" 2 3 4 typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned short ushort; typedef unsigned int uint; typedef u_int64_t u_quad_t; typedef int64_t quad_t; typedef quad_t * qaddr_t; typedef char * caddr_t; typedef int32_t daddr_t; typedef __darwin_dev_t dev_t; typedef u_int32_t fixpt_t; typedef __darwin_blkcnt_t blkcnt_t; typedef __darwin_blksize_t blksize_t; typedef __darwin_gid_t gid_t; typedef __uint32_t in_addr_t; typedef __uint16_t in_port_t; typedef __darwin_ino_t ino_t; typedef __int32_t key_t; typedef __darwin_mode_t mode_t; typedef __uint16_t nlink_t; typedef __darwin_id_t id_t; typedef __darwin_pid_t pid_t; typedef __darwin_off_t off_t; typedef int32_t segsz_t; typedef int32_t swblk_t; typedef __darwin_uid_t uid_t; # 185 "/usr/include/sys/types.h" 3 4 typedef __darwin_clock_t clock_t; # 197 "/usr/include/sys/types.h" 3 4 typedef __darwin_ssize_t ssize_t; typedef __darwin_time_t time_t; typedef __darwin_useconds_t useconds_t; typedef __darwin_suseconds_t suseconds_t; # 224 "/usr/include/sys/types.h" 3 4 typedef __int32_t fd_mask; # 248 "/usr/include/sys/types.h" 3 4 typedef struct fd_set { __int32_t fds_bits[(((1024) + (((sizeof(__int32_t) * 8)) - 1)) / ((sizeof(__int32_t) * 8)))]; } fd_set; # 296 "/usr/include/sys/types.h" 3 4 typedef __darwin_pthread_attr_t pthread_attr_t; typedef __darwin_pthread_cond_t pthread_cond_t; typedef __darwin_pthread_condattr_t pthread_condattr_t; typedef __darwin_pthread_mutex_t pthread_mutex_t; typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t; typedef __darwin_pthread_once_t pthread_once_t; typedef __darwin_pthread_rwlock_t pthread_rwlock_t; typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t; typedef __darwin_pthread_t pthread_t; typedef __darwin_pthread_key_t pthread_key_t; typedef __darwin_fsblkcnt_t fsblkcnt_t; typedef __darwin_fsfilcnt_t fsfilcnt_t; # 94 "../../gcc/tsystem.h" 2 # 1 "/usr/include/errno.h" 1 3 4 # 23 "/usr/include/errno.h" 3 4 # 1 "/usr/include/sys/errno.h" 1 3 4 # 68 "/usr/include/sys/errno.h" 3 4 extern int * __error(void); # 24 "/usr/include/errno.h" 2 3 4 # 97 "../../gcc/tsystem.h" 2 # 1 "/usr/include/string.h" 1 3 4 # 80 "/usr/include/string.h" 3 4 void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); void *memcpy(void *, const void *, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); char *stpcpy(char *, const char *); char *strcasestr(const char *, const char *); char *strcat(char *, const char *); char *strchr(const char *, int); int strcmp(const char *, const char *); int strcoll(const char *, const char *); char *strcpy(char *, const char *); size_t strcspn(const char *, const char *); char *strerror(int); int strerror_r(int, char *, size_t); size_t strlen(const char *); char *strncat(char *, const char *, size_t); int strncmp(const char *, const char *, size_t); char *strncpy(char *, const char *, size_t); char *strnstr(const char *, const char *, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); size_t strspn(const char *, const char *); char *strstr(const char *, const char *); char *strtok(char *, const char *); size_t strxfrm(char *, const char *, size_t); void *memccpy(void *, const void *, int, size_t); char *strtok_r(char *, const char *, char **); char *strdup(const char *); int bcmp(const void *, const void *, size_t); void bcopy(const void *, void *, size_t); void bzero(void *, size_t); int ffs(int); char *index(const char *, int); char *rindex(const char *, int); int strcasecmp(const char *, const char *); size_t strlcat(char *, const char *, size_t); size_t strlcpy(char *, const char *, size_t); void strmode(int, char *); int strncasecmp(const char *, const char *, size_t); char *strsep(char **, const char *); char *strsignal(int sig); void swab(const void * , void * , ssize_t); # 104 "../../gcc/tsystem.h" 2 # 1 "/usr/include/stdlib.h" 1 3 4 # 64 "/usr/include/stdlib.h" 3 4 # 1 "/usr/include/sys/wait.h" 1 3 4 # 73 "/usr/include/sys/wait.h" 3 4 typedef enum { P_ALL, P_PID, P_PGID } idtype_t; # 110 "/usr/include/sys/wait.h" 3 4 # 1 "/usr/include/sys/signal.h" 1 3 4 # 73 "/usr/include/sys/signal.h" 3 4 # 1 "/usr/include/machine/signal.h" 1 3 4 # 29 "/usr/include/machine/signal.h" 3 4 # 1 "/usr/include/i386/signal.h" 1 3 4 # 31 "/usr/include/i386/signal.h" 3 4 typedef int sig_atomic_t; # 46 "/usr/include/i386/signal.h" 3 4 struct sigcontext { int sc_onstack; int sc_mask; unsigned int sc_eax; unsigned int sc_ebx; unsigned int sc_ecx; unsigned int sc_edx; unsigned int sc_edi; unsigned int sc_esi; unsigned int sc_ebp; unsigned int sc_esp; unsigned int sc_ss; unsigned int sc_eflags; unsigned int sc_eip; unsigned int sc_cs; unsigned int sc_ds; unsigned int sc_es; unsigned int sc_fs; unsigned int sc_gs; }; # 30 "/usr/include/machine/signal.h" 2 3 4 # 74 "/usr/include/sys/signal.h" 2 3 4 # 139 "/usr/include/sys/signal.h" 3 4 typedef __darwin_mcontext_t mcontext_t; typedef __darwin_mcontext64_t mcontext64_t; # 161 "/usr/include/sys/signal.h" 3 4 typedef __darwin_sigset_t sigset_t; # 171 "/usr/include/sys/signal.h" 3 4 typedef __darwin_ucontext_t ucontext_t; typedef __darwin_ucontext64_t ucontext64_t; # 186 "/usr/include/sys/signal.h" 3 4 union sigval { int sival_int; void *sival_ptr; }; struct sigevent { int sigev_notify; int sigev_signo; union sigval sigev_value; void (*sigev_notify_function)(union sigval); pthread_attr_t *sigev_notify_attributes; }; typedef struct __siginfo { int si_signo; int si_errno; int si_code; pid_t si_pid; uid_t si_uid; int si_status; void *si_addr; union sigval si_value; long si_band; unsigned long pad[7]; } siginfo_t; # 297 "/usr/include/sys/signal.h" 3 4 union __sigaction_u { void (*__sa_handler)(int); void (*__sa_sigaction)(int, struct __siginfo *, void *); }; struct __sigaction { union __sigaction_u __sigaction_u; void (*sa_tramp)(void *, int, int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; }; struct sigaction { union __sigaction_u __sigaction_u; sigset_t sa_mask; int sa_flags; }; # 355 "/usr/include/sys/signal.h" 3 4 typedef void (*sig_t)(int); # 364 "/usr/include/sys/signal.h" 3 4 typedef __darwin_stack_t stack_t; # 377 "/usr/include/sys/signal.h" 3 4 struct sigvec { void (*sv_handler)(int); int sv_mask; int sv_flags; }; # 396 "/usr/include/sys/signal.h" 3 4 struct sigstack { char *ss_sp; int ss_onstack; }; # 418 "/usr/include/sys/signal.h" 3 4 void (*signal(int, void (*)(int)))(int); # 111 "/usr/include/sys/wait.h" 2 3 4 # 1 "/usr/include/sys/resource.h" 1 3 4 # 74 "/usr/include/sys/resource.h" 3 4 struct timeval { __darwin_time_t tv_sec; __darwin_suseconds_t tv_usec; }; # 90 "/usr/include/sys/resource.h" 3 4 typedef __int64_t rlim_t; # 135 "/usr/include/sys/resource.h" 3 4 struct rusage { struct timeval ru_utime; struct timeval ru_stime; # 146 "/usr/include/sys/resource.h" 3 4 long ru_maxrss; long ru_ixrss; long ru_idrss; long ru_isrss; long ru_minflt; long ru_majflt; long ru_nswap; long ru_inblock; long ru_oublock; long ru_msgsnd; long ru_msgrcv; long ru_nsignals; long ru_nvcsw; long ru_nivcsw; }; # 207 "/usr/include/sys/resource.h" 3 4 struct rlimit { rlim_t rlim_cur; rlim_t rlim_max; }; int getpriority(int, id_t); int getrlimit(int, struct rlimit *); int getrusage(int, struct rusage *); int setpriority(int, id_t, int); int setrlimit(int, const struct rlimit *); # 112 "/usr/include/sys/wait.h" 2 3 4 # 190 "/usr/include/sys/wait.h" 3 4 union wait { int w_status; struct { unsigned int w_Termsig:7, w_Coredump:1, w_Retcode:8, w_Filler:16; } w_T; struct { unsigned int w_Stopval:8, w_Stopsig:8, w_Filler:16; } w_S; }; # 240 "/usr/include/sys/wait.h" 3 4 pid_t wait(int *); pid_t waitpid(pid_t, int *, int); int waitid(idtype_t, id_t, siginfo_t *, int); pid_t wait3(int *, int, struct rusage *); pid_t wait4(pid_t, int *, int, struct rusage *); # 65 "/usr/include/stdlib.h" 2 3 4 # 1 "/usr/include/alloca.h" 1 3 4 # 35 "/usr/include/alloca.h" 3 4 void *alloca(size_t); # 67 "/usr/include/stdlib.h" 2 3 4 # 80 "/usr/include/stdlib.h" 3 4 typedef __darwin_ct_rune_t ct_rune_t; typedef __darwin_rune_t rune_t; # 96 "/usr/include/stdlib.h" 3 4 typedef struct { int quot; int rem; } div_t; typedef struct { long quot; long rem; } ldiv_t; typedef struct { long long quot; long long rem; } lldiv_t; # 133 "/usr/include/stdlib.h" 3 4 extern int __mb_cur_max; # 143 "/usr/include/stdlib.h" 3 4 void abort(void) __attribute__((__noreturn__)); int abs(int) __attribute__((__const__)); int atexit(void (*)(void)); double atof(const char *); int atoi(const char *); long atol(const char *); long long atoll(const char *); void *bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *)); void *calloc(size_t, size_t); div_t div(int, int) __attribute__((__const__)); void exit(int) __attribute__((__noreturn__)); void free(void *); char *getenv(const char *); long labs(long) __attribute__((__const__)); ldiv_t ldiv(long, long) __attribute__((__const__)); long long llabs(long long); lldiv_t lldiv(long long, long long); void *malloc(size_t); int mblen(const char *, size_t); size_t mbstowcs(wchar_t * , const char * , size_t); int mbtowc(wchar_t * , const char * , size_t); void qsort(void *, size_t, size_t, int (*)(const void *, const void *)); int rand(void); void *realloc(void *, size_t); void srand(unsigned); double strtod(const char *, char **); float strtof(const char *, char **); long strtol(const char *, char **, int); long double strtold(const char *, char **) ; long long strtoll(const char *, char **, int); unsigned long strtoul(const char *, char **, int); unsigned long long strtoull(const char *, char **, int); int system(const char *); size_t wcstombs(char * , const wchar_t * , size_t); int wctomb(char *, wchar_t); void _Exit(int) __attribute__((__noreturn__)); long a64l(const char *); double drand48(void); char *ecvt(double, int, int *, int *); double erand48(unsigned short[3]); char *fcvt(double, int, int *, int *); char *gcvt(double, int, char *); int getsubopt(char **, char * const *, char **); int grantpt(int); char *initstate(unsigned long, char *, long); long jrand48(unsigned short[3]); char *l64a(long); void lcong48(unsigned short[7]); long lrand48(void); char *mktemp(char *); int mkstemp(char *); long mrand48(void); long nrand48(unsigned short[3]); int posix_openpt(int); char *ptsname(int); int putenv(char *) ; long random(void); char *realpath(const char *, char *resolved_path); unsigned short *seed48(unsigned short[3]); int setenv(const char *, const char *, int) ; int setkey(const char *); char *setstate(const char *); void srand48(long); void srandom(unsigned long); int unlockpt(int); void unsetenv(const char *); # 260 "/usr/include/stdlib.h" 3 4 u_int32_t arc4random(void); void arc4random_addrandom(unsigned char *dat, int datlen); void arc4random_stir(void); char *cgetcap(char *, const char *, int); int cgetclose(void); int cgetent(char **, char **, const char *); int cgetfirst(char **, char **); int cgetmatch(const char *, const char *); int cgetnext(char **, char **); int cgetnum(char *, const char *, long *); int cgetset(const char *); int cgetstr(char *, const char *, char **); int cgetustr(char *, const char *, char **); int daemon(int, int); char *devname(dev_t, mode_t); char *devname_r(dev_t, mode_t, char *buf, int len); char *getbsize(int *, long *); int getloadavg(double [], int); const char *getprogname(void); int heapsort(void *, size_t, size_t, int (*)(const void *, const void *)); int mergesort(void *, size_t, size_t, int (*)(const void *, const void *)); void qsort_r(void *, size_t, size_t, void *, int (*)(void *, const void *, const void *)); int radixsort(const unsigned char **, int, const unsigned char *, unsigned); void setprogname(const char *); int sradixsort(const unsigned char **, int, const unsigned char *, unsigned); void sranddev(void); void srandomdev(void); int rand_r(unsigned *); void *reallocf(void *, size_t); long long strtoq(const char *, char **, int); unsigned long long strtouq(const char *, char **, int); extern char *suboptarg; void *valloc(size_t); # 105 "../../gcc/tsystem.h" 2 # 1 "/usr/include/unistd.h" 1 3 4 # 74 "/usr/include/unistd.h" 3 4 # 1 "/usr/include/sys/unistd.h" 1 3 4 # 130 "/usr/include/sys/unistd.h" 3 4 struct accessx_descriptor { unsigned ad_name_offset; int ad_flags; int ad_pad[2]; }; # 75 "/usr/include/unistd.h" 2 3 4 # 121 "/usr/include/unistd.h" 3 4 typedef __darwin_uuid_t uuid_t; # 388 "/usr/include/unistd.h" 3 4 void _exit(int) __attribute__((__noreturn__)); int access(const char *, int); unsigned int alarm(unsigned int); int chdir(const char *); int chown(const char *, uid_t, gid_t); int close(int); size_t confstr(int, char *, size_t); char *crypt(const char *, const char *); char *ctermid(char *); int dup(int); int dup2(int, int); int execl(const char *, const char *, ...); int execle(const char *, const char *, ...); int execlp(const char *, const char *, ...); int execv(const char *, char * const *); int execve(const char *, char * const *, char * const *); int execvp(const char *, char * const *); int fchown(int, uid_t, gid_t); int fchdir(int); pid_t fork(void); long fpathconf(int, int); int ftruncate(int, off_t); char *getcwd(char *, size_t); gid_t getegid(void); uid_t geteuid(void); gid_t getgid(void); int getgroups(int, gid_t []); long gethostid(void); int gethostname(char *, size_t); char *getlogin(void); int getlogin_r(char *, size_t); int getopt(int, char * const [], const char *); pid_t getpgid(pid_t); pid_t getpgrp(void); pid_t getpid(void); pid_t getppid(void); pid_t getsid(pid_t); uid_t getuid(void); char *getwd(char *); int isatty(int); int lchown(const char *, uid_t, gid_t) ; int link(const char *, const char *); int lockf(int, int, off_t); off_t lseek(int, off_t, int); int nice(int); long pathconf(const char *, int); int pause(void); int pipe(int [2]); ssize_t pread(int, void *, size_t, off_t); ssize_t pwrite(int, const void *, size_t, off_t); ssize_t read(int, void *, size_t); ssize_t readlink(const char * , char * , size_t); int rmdir(const char *); int setegid(gid_t); int seteuid(uid_t); int setgid(gid_t); int setpgid(pid_t, pid_t); int setpgrp(pid_t pid, pid_t pgrp); int setregid(gid_t, gid_t); int setreuid(uid_t, uid_t); pid_t setsid(void); int setuid(uid_t); unsigned int sleep(unsigned int); void swab(const void * , void * , ssize_t); int symlink(const char *, const char *); void sync(void); long sysconf(int); pid_t tcgetpgrp(int); int tcsetpgrp(int, pid_t); int truncate(const char *, off_t); char *ttyname(int); char *ttyname_r(int, char *, size_t); useconds_t ualarm(useconds_t, useconds_t); int unlink(const char *); int usleep(useconds_t); pid_t vfork(void); ssize_t write(int, const void *, size_t); extern char *optarg; extern int optind, opterr, optopt; # 1 "/usr/include/sys/select.h" 1 3 4 # 87 "/usr/include/sys/select.h" 3 4 struct timespec { time_t tv_sec; long tv_nsec; }; # 146 "/usr/include/sys/select.h" 3 4 # 1 "/usr/include/signal.h" 1 3 4 # 71 "/usr/include/signal.h" 3 4 extern const char *const sys_signame[32]; extern const char *const sys_siglist[32]; int raise(int); void (*bsd_signal(int, void (*)(int)))(int); int kill(pid_t, int); int killpg(pid_t, int); int pthread_kill(pthread_t, int); int pthread_sigmask(int, const sigset_t *, sigset_t *); int sigaction(int, const struct sigaction * , struct sigaction * ); int sigaddset(sigset_t *, int); int sigaltstack(const stack_t * , stack_t * ); int sigdelset(sigset_t *, int); int sigemptyset(sigset_t *); int sigfillset(sigset_t *); int sighold(int); int sigignore(int); int siginterrupt(int, int); int sigismember(const sigset_t *, int); int sigpause(int); int sigpending(sigset_t *); int sigprocmask(int, const sigset_t * , sigset_t * ); int sigrelse(int); void (*sigset(int, void (*)(int)))(int); int sigsuspend(const sigset_t *); int sigwait(const sigset_t * , int * ); void psignal(unsigned int, const char *); int sigblock(int); int sigreturn(struct sigcontext *); int sigsetmask(int); int sigvec(int, struct sigvec *, struct sigvec *); # 147 "/usr/include/sys/select.h" 2 3 4 # 1 "/usr/include/sys/time.h" 1 3 4 # 91 "/usr/include/sys/time.h" 3 4 struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 178 "/usr/include/sys/time.h" 3 4 struct timezone { int tz_minuteswest; int tz_dsttime; }; # 221 "/usr/include/sys/time.h" 3 4 struct clockinfo { int hz; int tick; int tickadj; int stathz; int profhz; }; # 1 "/usr/include/time.h" 1 3 4 # 95 "/usr/include/time.h" 3 4 struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long tm_gmtoff; char *tm_zone; }; # 1 "/usr/include/machine/_limits.h" 1 3 4 # 28 "/usr/include/machine/_limits.h" 3 4 # 1 "/usr/include/i386/_limits.h" 1 3 4 # 29 "/usr/include/machine/_limits.h" 2 3 4 # 110 "/usr/include/time.h" 2 3 4 extern char *tzname[]; extern int getdate_err; extern int daylight; char *asctime(const struct tm *); clock_t clock(void); char *ctime(const time_t *); double difftime(time_t, time_t); struct tm *getdate(const char *); struct tm *gmtime(const time_t *); struct tm *localtime(const time_t *); time_t mktime(struct tm *); size_t strftime(char * , size_t, const char * , const struct tm * ) ; char *strptime(const char * , const char * , struct tm * ); time_t time(time_t *); void tzset(void); char *asctime_r(const struct tm *, char *); char *ctime_r(const time_t *, char *); struct tm *gmtime_r(const time_t *, struct tm *); struct tm *localtime_r(const time_t *, struct tm *); time_t posix2time(time_t); char *timezone(int, int); void tzsetwall(void); time_t time2posix(time_t); time_t timelocal(struct tm * const); time_t timegm(struct tm * const); int nanosleep(const struct timespec *, struct timespec *) ; # 236 "/usr/include/sys/time.h" 2 3 4 int adjtime(const struct timeval *, struct timeval *); int futimes(int, const struct timeval *); int settimeofday(const struct timeval *, const struct timezone *); int getitimer(int, struct itimerval *); int gettimeofday(struct timeval * , struct timezone * ); int select(int, fd_set * , fd_set * , fd_set * , struct timeval * ); int setitimer(int, const struct itimerval * , struct itimerval * ); int utimes(const char *, const struct timeval *); # 149 "/usr/include/sys/select.h" 2 3 4 int pselect(int, fd_set * , fd_set * , fd_set * , const struct timespec * , const sigset_t * ); int select(int, fd_set * , fd_set * , fd_set * , struct timeval * ); # 484 "/usr/include/unistd.h" 2 3 4 void _Exit(int) __attribute__((__noreturn__)); int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t); int acct(const char *); int add_profil(char *, size_t, unsigned long, unsigned int); int async_daemon(void); void *brk(const void *); int chroot(const char *); int encrypt(char *, int); void endusershell(void); int execvP(const char *, const char *, char * const *); char *fflagstostr(unsigned long); int fsync(int); int getdtablesize(void); int getdomainname(char *, int); int getgrouplist(const char *, int, int *, int *); mode_t getmode(const void *, mode_t); int getpagesize(void) __attribute__((__const__)); char *getpass(const char *); int getpeereid(int, uid_t *, gid_t *); int getpgid(pid_t _pid); int getsgroups_np(int *, uuid_t); int getsid(pid_t _pid); char *getusershell(void); int getwgroups_np(int *, uuid_t); int initgroups(const char *, int); int iruserok(unsigned long, int, const char *, const char *); int issetugid(void); char *mkdtemp(char *); int mknod(const char *, mode_t, dev_t); int mkstemp(char *); int mkstemps(char *, int); char *mktemp(char *); int nfssvc(int, void *); int profil(char *, size_t, unsigned long, unsigned int); int pthread_setugid_np(uid_t, gid_t); int pthread_getugid_np( uid_t *, gid_t *); int rcmd(char **, int, const char *, const char *, const char *, int *); int reboot(int); int revoke(const char *); int rresvport(int *); int rresvport_af(int *, int); int ruserok(const char *, int, const char *, const char *); void *sbrk(int); int setdomainname(const char *, int); int setgroups(int, const gid_t *); void sethostid(long); int sethostname(const char *, int); int setkey(const char *); int setlogin(const char *); void *setmode(const char *); int setrgid(gid_t); int setruid(uid_t); int setsgroups_np(int, const uuid_t); void setusershell(void); int setwgroups_np(int, const uuid_t); int strtofflags(char **, unsigned long *, unsigned long *); int swapon(const char *); int syscall(int, ...); int ttyslot(void); int undelete(const char *); int unwhiteout(const char *); void *valloc(size_t); extern char *suboptarg; int getsubopt(char **, char * const *, char **); # 570 "/usr/include/unistd.h" 3 4 int getattrlist(const char*,void*,void*,size_t,unsigned long) ; int setattrlist(const char*,void*,void*,size_t,unsigned long) ; int exchangedata(const char*,const char*,unsigned long); int checkuseraccess(const char*,uid_t,gid_t*,int,int,unsigned long); int getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long); int searchfs(const char*,void*,void*,unsigned long,unsigned long,void*); int fsctl(const char *,unsigned long,void*,unsigned long); extern int optreset; # 106 "../../gcc/tsystem.h" 2 # 1 "./include/limits.h" 1 3 4 # 11 "./include/limits.h" 3 4 # 1 "./include/syslimits.h" 1 3 4 # 1 "./include/limits.h" 1 3 4 # 122 "./include/limits.h" 3 4 # 1 "/usr/include/limits.h" 1 3 4 # 63 "/usr/include/limits.h" 3 4 # 1 "/usr/include/machine/limits.h" 1 3 4 # 1 "/usr/include/i386/limits.h" 1 3 4 # 39 "/usr/include/i386/limits.h" 3 4 # 1 "/usr/include/i386/_limits.h" 1 3 4 # 40 "/usr/include/i386/limits.h" 2 3 4 # 9 "/usr/include/machine/limits.h" 2 3 4 # 64 "/usr/include/limits.h" 2 3 4 # 1 "/usr/include/sys/syslimits.h" 1 3 4 # 65 "/usr/include/limits.h" 2 3 4 # 123 "./include/limits.h" 2 3 4 # 8 "./include/syslimits.h" 2 3 4 # 12 "./include/limits.h" 2 3 4 # 109 "../../gcc/tsystem.h" 2 # 135 "../../gcc/tsystem.h" # 1 "../../gcc/../include/filenames.h" 1 # 136 "../../gcc/tsystem.h" 2 # 31 "../../gcc/unwind-dw2-fde-darwin.c" 2 # 1 "../../gcc/dwarf2.h" 1 # 45 "../../gcc/dwarf2.h" typedef struct { unsigned char li_length [4]; unsigned char li_version [2]; unsigned char li_prologue_length [4]; unsigned char li_min_insn_length [1]; unsigned char li_default_is_stmt [1]; unsigned char li_line_base [1]; unsigned char li_line_range [1]; unsigned char li_opcode_base [1]; } DWARF2_External_LineInfo; typedef struct { unsigned long li_length; unsigned short li_version; unsigned int li_prologue_length; unsigned char li_min_insn_length; unsigned char li_default_is_stmt; int li_line_base; unsigned char li_line_range; unsigned char li_opcode_base; } DWARF2_Internal_LineInfo; typedef struct { unsigned char pn_length [4]; unsigned char pn_version [2]; unsigned char pn_offset [4]; unsigned char pn_size [4]; } DWARF2_External_PubNames; typedef struct { unsigned long pn_length; unsigned short pn_version; unsigned long pn_offset; unsigned long pn_size; } DWARF2_Internal_PubNames; typedef struct { unsigned char cu_length [4]; unsigned char cu_version [2]; unsigned char cu_abbrev_offset [4]; unsigned char cu_pointer_size [1]; } DWARF2_External_CompUnit; typedef struct { unsigned long cu_length; unsigned short cu_version; unsigned long cu_abbrev_offset; unsigned char cu_pointer_size; } DWARF2_Internal_CompUnit; typedef struct { unsigned char ar_length [4]; unsigned char ar_version [2]; unsigned char ar_info_offset [4]; unsigned char ar_pointer_size [1]; unsigned char ar_segment_size [1]; } DWARF2_External_ARange; typedef struct { unsigned long ar_length; unsigned short ar_version; unsigned long ar_info_offset; unsigned char ar_pointer_size; unsigned char ar_segment_size; } DWARF2_Internal_ARange; enum dwarf_tag { DW_TAG_padding = 0x00, DW_TAG_array_type = 0x01, DW_TAG_class_type = 0x02, DW_TAG_entry_point = 0x03, DW_TAG_enumeration_type = 0x04, DW_TAG_formal_parameter = 0x05, DW_TAG_imported_declaration = 0x08, DW_TAG_label = 0x0a, DW_TAG_lexical_block = 0x0b, DW_TAG_member = 0x0d, DW_TAG_pointer_type = 0x0f, DW_TAG_reference_type = 0x10, DW_TAG_compile_unit = 0x11, DW_TAG_string_type = 0x12, DW_TAG_structure_type = 0x13, DW_TAG_subroutine_type = 0x15, DW_TAG_typedef = 0x16, DW_TAG_union_type = 0x17, DW_TAG_unspecified_parameters = 0x18, DW_TAG_variant = 0x19, DW_TAG_common_block = 0x1a, DW_TAG_common_inclusion = 0x1b, DW_TAG_inheritance = 0x1c, DW_TAG_inlined_subroutine = 0x1d, DW_TAG_module = 0x1e, DW_TAG_ptr_to_member_type = 0x1f, DW_TAG_set_type = 0x20, DW_TAG_subrange_type = 0x21, DW_TAG_with_stmt = 0x22, DW_TAG_access_declaration = 0x23, DW_TAG_base_type = 0x24, DW_TAG_catch_block = 0x25, DW_TAG_const_type = 0x26, DW_TAG_constant = 0x27, DW_TAG_enumerator = 0x28, DW_TAG_file_type = 0x29, DW_TAG_friend = 0x2a, DW_TAG_namelist = 0x2b, DW_TAG_namelist_item = 0x2c, DW_TAG_packed_type = 0x2d, DW_TAG_subprogram = 0x2e, DW_TAG_template_type_param = 0x2f, DW_TAG_template_value_param = 0x30, DW_TAG_thrown_type = 0x31, DW_TAG_try_block = 0x32, DW_TAG_variant_part = 0x33, DW_TAG_variable = 0x34, DW_TAG_volatile_type = 0x35, DW_TAG_dwarf_procedure = 0x36, DW_TAG_restrict_type = 0x37, DW_TAG_interface_type = 0x38, DW_TAG_namespace = 0x39, DW_TAG_imported_module = 0x3a, DW_TAG_unspecified_type = 0x3b, DW_TAG_partial_unit = 0x3c, DW_TAG_imported_unit = 0x3d, DW_TAG_condition = 0x3f, DW_TAG_shared_type = 0x40, DW_TAG_MIPS_loop = 0x4081, DW_TAG_HP_array_descriptor = 0x4090, DW_TAG_format_label = 0x4101, DW_TAG_function_template = 0x4102, DW_TAG_class_template = 0x4103, DW_TAG_GNU_BINCL = 0x4104, DW_TAG_GNU_EINCL = 0x4105, DW_TAG_upc_shared_type = 0x8765, DW_TAG_upc_strict_type = 0x8766, DW_TAG_upc_relaxed_type = 0x8767, DW_TAG_PGI_kanji_type = 0xA000, DW_TAG_PGI_interface_block = 0xA020 }; # 219 "../../gcc/dwarf2.h" enum dwarf_form { DW_FORM_addr = 0x01, DW_FORM_block2 = 0x03, DW_FORM_block4 = 0x04, DW_FORM_data2 = 0x05, DW_FORM_data4 = 0x06, DW_FORM_data8 = 0x07, DW_FORM_string = 0x08, DW_FORM_block = 0x09, DW_FORM_block1 = 0x0a, DW_FORM_data1 = 0x0b, DW_FORM_flag = 0x0c, DW_FORM_sdata = 0x0d, DW_FORM_strp = 0x0e, DW_FORM_udata = 0x0f, DW_FORM_ref_addr = 0x10, DW_FORM_ref1 = 0x11, DW_FORM_ref2 = 0x12, DW_FORM_ref4 = 0x13, DW_FORM_ref8 = 0x14, DW_FORM_ref_udata = 0x15, DW_FORM_indirect = 0x16 }; enum dwarf_attribute { DW_AT_sibling = 0x01, DW_AT_location = 0x02, DW_AT_name = 0x03, DW_AT_ordering = 0x09, DW_AT_subscr_data = 0x0a, DW_AT_byte_size = 0x0b, DW_AT_bit_offset = 0x0c, DW_AT_bit_size = 0x0d, DW_AT_element_list = 0x0f, DW_AT_stmt_list = 0x10, DW_AT_low_pc = 0x11, DW_AT_high_pc = 0x12, DW_AT_language = 0x13, DW_AT_member = 0x14, DW_AT_discr = 0x15, DW_AT_discr_value = 0x16, DW_AT_visibility = 0x17, DW_AT_import = 0x18, DW_AT_string_length = 0x19, DW_AT_common_reference = 0x1a, DW_AT_comp_dir = 0x1b, DW_AT_const_value = 0x1c, DW_AT_containing_type = 0x1d, DW_AT_default_value = 0x1e, DW_AT_inline = 0x20, DW_AT_is_optional = 0x21, DW_AT_lower_bound = 0x22, DW_AT_producer = 0x25, DW_AT_prototyped = 0x27, DW_AT_return_addr = 0x2a, DW_AT_start_scope = 0x2c, DW_AT_stride_size = 0x2e, DW_AT_upper_bound = 0x2f, DW_AT_abstract_origin = 0x31, DW_AT_accessibility = 0x32, DW_AT_address_class = 0x33, DW_AT_artificial = 0x34, DW_AT_base_types = 0x35, DW_AT_calling_convention = 0x36, DW_AT_count = 0x37, DW_AT_data_member_location = 0x38, DW_AT_decl_column = 0x39, DW_AT_decl_file = 0x3a, DW_AT_decl_line = 0x3b, DW_AT_declaration = 0x3c, DW_AT_discr_list = 0x3d, DW_AT_encoding = 0x3e, DW_AT_external = 0x3f, DW_AT_frame_base = 0x40, DW_AT_friend = 0x41, DW_AT_identifier_case = 0x42, DW_AT_macro_info = 0x43, DW_AT_namelist_items = 0x44, DW_AT_priority = 0x45, DW_AT_segment = 0x46, DW_AT_specification = 0x47, DW_AT_static_link = 0x48, DW_AT_type = 0x49, DW_AT_use_location = 0x4a, DW_AT_variable_parameter = 0x4b, DW_AT_virtuality = 0x4c, DW_AT_vtable_elem_location = 0x4d, DW_AT_allocated = 0x4e, DW_AT_associated = 0x4f, DW_AT_data_location = 0x50, DW_AT_stride = 0x51, DW_AT_entry_pc = 0x52, DW_AT_use_UTF8 = 0x53, DW_AT_extension = 0x54, DW_AT_ranges = 0x55, DW_AT_trampoline = 0x56, DW_AT_call_column = 0x57, DW_AT_call_file = 0x58, DW_AT_call_line = 0x59, DW_AT_description = 0x5a, DW_AT_binary_scale = 0x5b, DW_AT_decimal_scale = 0x5c, DW_AT_small = 0x5d, DW_AT_decimal_sign = 0x5e, DW_AT_digit_count = 0x5f, DW_AT_picture_string = 0x60, DW_AT_mutable = 0x61, DW_AT_threads_scaled = 0x62, DW_AT_explicit = 0x63, DW_AT_object_pointer = 0x64, DW_AT_endianity = 0x65, DW_AT_elemental = 0x66, DW_AT_pure = 0x67, DW_AT_recursive = 0x68, DW_AT_MIPS_fde = 0x2001, DW_AT_MIPS_loop_begin = 0x2002, DW_AT_MIPS_tail_loop_begin = 0x2003, DW_AT_MIPS_epilog_begin = 0x2004, DW_AT_MIPS_loop_unroll_factor = 0x2005, DW_AT_MIPS_software_pipeline_depth = 0x2006, DW_AT_MIPS_linkage_name = 0x2007, DW_AT_MIPS_stride = 0x2008, DW_AT_MIPS_abstract_name = 0x2009, DW_AT_MIPS_clone_origin = 0x200a, DW_AT_MIPS_has_inlines = 0x200b, DW_AT_HP_block_index = 0x2000, DW_AT_HP_unmodifiable = 0x2001, DW_AT_HP_actuals_stmt_list = 0x2010, DW_AT_HP_proc_per_section = 0x2011, DW_AT_HP_raw_data_ptr = 0x2012, DW_AT_HP_pass_by_reference = 0x2013, DW_AT_HP_opt_level = 0x2014, DW_AT_HP_prof_version_id = 0x2015, DW_AT_HP_opt_flags = 0x2016, DW_AT_HP_cold_region_low_pc = 0x2017, DW_AT_HP_cold_region_high_pc = 0x2018, DW_AT_HP_all_variables_modifiable = 0x2019, DW_AT_HP_linkage_name = 0x201a, DW_AT_HP_prof_flags = 0x201b, DW_AT_sf_names = 0x2101, DW_AT_src_info = 0x2102, DW_AT_mac_info = 0x2103, DW_AT_src_coords = 0x2104, DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106, DW_AT_GNU_vector = 0x2107, DW_AT_VMS_rtnbeg_pd_address = 0x2201, DW_AT_upc_threads_scaled = 0x3210, DW_AT_PGI_lbase = 0x3a00, DW_AT_PGI_soffset = 0x3a01, DW_AT_PGI_lstride = 0x3a02 }; enum dwarf_location_atom { DW_OP_addr = 0x03, DW_OP_deref = 0x06, DW_OP_const1u = 0x08, DW_OP_const1s = 0x09, DW_OP_const2u = 0x0a, DW_OP_const2s = 0x0b, DW_OP_const4u = 0x0c, DW_OP_const4s = 0x0d, DW_OP_const8u = 0x0e, DW_OP_const8s = 0x0f, DW_OP_constu = 0x10, DW_OP_consts = 0x11, DW_OP_dup = 0x12, DW_OP_drop = 0x13, DW_OP_over = 0x14, DW_OP_pick = 0x15, DW_OP_swap = 0x16, DW_OP_rot = 0x17, DW_OP_xderef = 0x18, DW_OP_abs = 0x19, DW_OP_and = 0x1a, DW_OP_div = 0x1b, DW_OP_minus = 0x1c, DW_OP_mod = 0x1d, DW_OP_mul = 0x1e, DW_OP_neg = 0x1f, DW_OP_not = 0x20, DW_OP_or = 0x21, DW_OP_plus = 0x22, DW_OP_plus_uconst = 0x23, DW_OP_shl = 0x24, DW_OP_shr = 0x25, DW_OP_shra = 0x26, DW_OP_xor = 0x27, DW_OP_bra = 0x28, DW_OP_eq = 0x29, DW_OP_ge = 0x2a, DW_OP_gt = 0x2b, DW_OP_le = 0x2c, DW_OP_lt = 0x2d, DW_OP_ne = 0x2e, DW_OP_skip = 0x2f, DW_OP_lit0 = 0x30, DW_OP_lit1 = 0x31, DW_OP_lit2 = 0x32, DW_OP_lit3 = 0x33, DW_OP_lit4 = 0x34, DW_OP_lit5 = 0x35, DW_OP_lit6 = 0x36, DW_OP_lit7 = 0x37, DW_OP_lit8 = 0x38, DW_OP_lit9 = 0x39, DW_OP_lit10 = 0x3a, DW_OP_lit11 = 0x3b, DW_OP_lit12 = 0x3c, DW_OP_lit13 = 0x3d, DW_OP_lit14 = 0x3e, DW_OP_lit15 = 0x3f, DW_OP_lit16 = 0x40, DW_OP_lit17 = 0x41, DW_OP_lit18 = 0x42, DW_OP_lit19 = 0x43, DW_OP_lit20 = 0x44, DW_OP_lit21 = 0x45, DW_OP_lit22 = 0x46, DW_OP_lit23 = 0x47, DW_OP_lit24 = 0x48, DW_OP_lit25 = 0x49, DW_OP_lit26 = 0x4a, DW_OP_lit27 = 0x4b, DW_OP_lit28 = 0x4c, DW_OP_lit29 = 0x4d, DW_OP_lit30 = 0x4e, DW_OP_lit31 = 0x4f, DW_OP_reg0 = 0x50, DW_OP_reg1 = 0x51, DW_OP_reg2 = 0x52, DW_OP_reg3 = 0x53, DW_OP_reg4 = 0x54, DW_OP_reg5 = 0x55, DW_OP_reg6 = 0x56, DW_OP_reg7 = 0x57, DW_OP_reg8 = 0x58, DW_OP_reg9 = 0x59, DW_OP_reg10 = 0x5a, DW_OP_reg11 = 0x5b, DW_OP_reg12 = 0x5c, DW_OP_reg13 = 0x5d, DW_OP_reg14 = 0x5e, DW_OP_reg15 = 0x5f, DW_OP_reg16 = 0x60, DW_OP_reg17 = 0x61, DW_OP_reg18 = 0x62, DW_OP_reg19 = 0x63, DW_OP_reg20 = 0x64, DW_OP_reg21 = 0x65, DW_OP_reg22 = 0x66, DW_OP_reg23 = 0x67, DW_OP_reg24 = 0x68, DW_OP_reg25 = 0x69, DW_OP_reg26 = 0x6a, DW_OP_reg27 = 0x6b, DW_OP_reg28 = 0x6c, DW_OP_reg29 = 0x6d, DW_OP_reg30 = 0x6e, DW_OP_reg31 = 0x6f, DW_OP_breg0 = 0x70, DW_OP_breg1 = 0x71, DW_OP_breg2 = 0x72, DW_OP_breg3 = 0x73, DW_OP_breg4 = 0x74, DW_OP_breg5 = 0x75, DW_OP_breg6 = 0x76, DW_OP_breg7 = 0x77, DW_OP_breg8 = 0x78, DW_OP_breg9 = 0x79, DW_OP_breg10 = 0x7a, DW_OP_breg11 = 0x7b, DW_OP_breg12 = 0x7c, DW_OP_breg13 = 0x7d, DW_OP_breg14 = 0x7e, DW_OP_breg15 = 0x7f, DW_OP_breg16 = 0x80, DW_OP_breg17 = 0x81, DW_OP_breg18 = 0x82, DW_OP_breg19 = 0x83, DW_OP_breg20 = 0x84, DW_OP_breg21 = 0x85, DW_OP_breg22 = 0x86, DW_OP_breg23 = 0x87, DW_OP_breg24 = 0x88, DW_OP_breg25 = 0x89, DW_OP_breg26 = 0x8a, DW_OP_breg27 = 0x8b, DW_OP_breg28 = 0x8c, DW_OP_breg29 = 0x8d, DW_OP_breg30 = 0x8e, DW_OP_breg31 = 0x8f, DW_OP_regx = 0x90, DW_OP_fbreg = 0x91, DW_OP_bregx = 0x92, DW_OP_piece = 0x93, DW_OP_deref_size = 0x94, DW_OP_xderef_size = 0x95, DW_OP_nop = 0x96, DW_OP_push_object_address = 0x97, DW_OP_call2 = 0x98, DW_OP_call4 = 0x99, DW_OP_call_ref = 0x9a, DW_OP_form_tls_address = 0x9b, DW_OP_call_frame_cfa = 0x9c, DW_OP_bit_piece = 0x9d, DW_OP_GNU_push_tls_address = 0xe0, DW_OP_HP_unknown = 0xe0, DW_OP_HP_is_value = 0xe1, DW_OP_HP_fltconst4 = 0xe2, DW_OP_HP_fltconst8 = 0xe3, DW_OP_HP_mod_range = 0xe4, DW_OP_HP_unmod_range = 0xe5, DW_OP_HP_tls = 0xe6 }; enum dwarf_type { DW_ATE_void = 0x0, DW_ATE_address = 0x1, DW_ATE_boolean = 0x2, DW_ATE_complex_float = 0x3, DW_ATE_float = 0x4, DW_ATE_signed = 0x5, DW_ATE_signed_char = 0x6, DW_ATE_unsigned = 0x7, DW_ATE_unsigned_char = 0x8, DW_ATE_imaginary_float = 0x9, DW_ATE_packed_decimal = 0xa, DW_ATE_numeric_string = 0xb, DW_ATE_edited = 0xc, DW_ATE_signed_fixed = 0xd, DW_ATE_unsigned_fixed = 0xe, DW_ATE_decimal_float = 0xf, DW_ATE_HP_float80 = 0x80, DW_ATE_HP_complex_float80 = 0x81, DW_ATE_HP_float128 = 0x82, DW_ATE_HP_complex_float128 = 0x83, DW_ATE_HP_floathpintel = 0x84, DW_ATE_HP_imaginary_float80 = 0x85, DW_ATE_HP_imaginary_float128 = 0x86 }; enum dwarf_decimal_sign_encoding { DW_DS_unsigned = 0x01, DW_DS_leading_overpunch = 0x02, DW_DS_trailing_overpunch = 0x03, DW_DS_leading_separate = 0x04, DW_DS_trailing_separate = 0x05 }; enum dwarf_endianity_encoding { DW_END_default = 0x00, DW_END_big = 0x01, DW_END_little = 0x02 }; enum dwarf_array_dim_ordering { DW_ORD_row_major = 0, DW_ORD_col_major = 1 }; enum dwarf_access_attribute { DW_ACCESS_public = 1, DW_ACCESS_protected = 2, DW_ACCESS_private = 3 }; enum dwarf_visibility_attribute { DW_VIS_local = 1, DW_VIS_exported = 2, DW_VIS_qualified = 3 }; enum dwarf_virtuality_attribute { DW_VIRTUALITY_none = 0, DW_VIRTUALITY_virtual = 1, DW_VIRTUALITY_pure_virtual = 2 }; enum dwarf_id_case { DW_ID_case_sensitive = 0, DW_ID_up_case = 1, DW_ID_down_case = 2, DW_ID_case_insensitive = 3 }; enum dwarf_calling_convention { DW_CC_normal = 0x1, DW_CC_program = 0x2, DW_CC_nocall = 0x3, DW_CC_GNU_renesas_sh = 0x40 }; enum dwarf_inline_attribute { DW_INL_not_inlined = 0, DW_INL_inlined = 1, DW_INL_declared_not_inlined = 2, DW_INL_declared_inlined = 3 }; enum dwarf_discrim_list { DW_DSC_label = 0, DW_DSC_range = 1 }; enum dwarf_line_number_ops { DW_LNS_extended_op = 0, DW_LNS_copy = 1, DW_LNS_advance_pc = 2, DW_LNS_advance_line = 3, DW_LNS_set_file = 4, DW_LNS_set_column = 5, DW_LNS_negate_stmt = 6, DW_LNS_set_basic_block = 7, DW_LNS_const_add_pc = 8, DW_LNS_fixed_advance_pc = 9, DW_LNS_set_prologue_end = 10, DW_LNS_set_epilogue_begin = 11, DW_LNS_set_isa = 12 }; enum dwarf_line_number_x_ops { DW_LNE_end_sequence = 1, DW_LNE_set_address = 2, DW_LNE_define_file = 3, DW_LNE_HP_negate_is_UV_update = 0x11, DW_LNE_HP_push_context = 0x12, DW_LNE_HP_pop_context = 0x13, DW_LNE_HP_set_file_line_column = 0x14, DW_LNE_HP_set_routine_name = 0x15, DW_LNE_HP_set_sequence = 0x16, DW_LNE_HP_negate_post_semantics = 0x17, DW_LNE_HP_negate_function_exit = 0x18, DW_LNE_HP_negate_front_end_logical = 0x19, DW_LNE_HP_define_proc = 0x20 }; enum dwarf_call_frame_info { DW_CFA_advance_loc = 0x40, DW_CFA_offset = 0x80, DW_CFA_restore = 0xc0, DW_CFA_nop = 0x00, DW_CFA_set_loc = 0x01, DW_CFA_advance_loc1 = 0x02, DW_CFA_advance_loc2 = 0x03, DW_CFA_advance_loc4 = 0x04, DW_CFA_offset_extended = 0x05, DW_CFA_restore_extended = 0x06, DW_CFA_undefined = 0x07, DW_CFA_same_value = 0x08, DW_CFA_register = 0x09, DW_CFA_remember_state = 0x0a, DW_CFA_restore_state = 0x0b, DW_CFA_def_cfa = 0x0c, DW_CFA_def_cfa_register = 0x0d, DW_CFA_def_cfa_offset = 0x0e, DW_CFA_def_cfa_expression = 0x0f, DW_CFA_expression = 0x10, DW_CFA_offset_extended_sf = 0x11, DW_CFA_def_cfa_sf = 0x12, DW_CFA_def_cfa_offset_sf = 0x13, DW_CFA_val_offset = 0x14, DW_CFA_val_offset_sf = 0x15, DW_CFA_val_expression = 0x16, DW_CFA_MIPS_advance_loc8 = 0x1d, DW_CFA_GNU_window_save = 0x2d, DW_CFA_GNU_args_size = 0x2e, DW_CFA_GNU_negative_offset_extended = 0x2f }; # 773 "../../gcc/dwarf2.h" enum dwarf_source_language { DW_LANG_C89 = 0x0001, DW_LANG_C = 0x0002, DW_LANG_Ada83 = 0x0003, DW_LANG_C_plus_plus = 0x0004, DW_LANG_Cobol74 = 0x0005, DW_LANG_Cobol85 = 0x0006, DW_LANG_Fortran77 = 0x0007, DW_LANG_Fortran90 = 0x0008, DW_LANG_Pascal83 = 0x0009, DW_LANG_Modula2 = 0x000a, DW_LANG_Java = 0x000b, DW_LANG_C99 = 0x000c, DW_LANG_Ada95 = 0x000d, DW_LANG_Fortran95 = 0x000e, DW_LANG_PLI = 0x000f, DW_LANG_ObjC = 0x0010, DW_LANG_ObjC_plus_plus = 0x0011, DW_LANG_UPC = 0x0012, DW_LANG_D = 0x0013, DW_LANG_Mips_Assembler = 0x8001, DW_LANG_Upc = 0x8765 }; enum dwarf_macinfo_record_type { DW_MACINFO_define = 1, DW_MACINFO_undef = 2, DW_MACINFO_start_file = 3, DW_MACINFO_end_file = 4, DW_MACINFO_vendor_ext = 255 }; # 34 "../../gcc/unwind-dw2-fde-darwin.c" 2 # 1 "./include/unwind.h" 1 3 4 # 46 "./include/unwind.h" 3 4 typedef unsigned _Unwind_Word __attribute__((__mode__(__word__))); typedef signed _Unwind_Sword __attribute__((__mode__(__word__))); typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__))); typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__))); typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__))); typedef enum { _URC_NO_REASON = 0, _URC_FOREIGN_EXCEPTION_CAUGHT = 1, _URC_FATAL_PHASE2_ERROR = 2, _URC_FATAL_PHASE1_ERROR = 3, _URC_NORMAL_STOP = 4, _URC_END_OF_STACK = 5, _URC_HANDLER_FOUND = 6, _URC_INSTALL_CONTEXT = 7, _URC_CONTINUE_UNWIND = 8 } _Unwind_Reason_Code; # 83 "./include/unwind.h" 3 4 struct _Unwind_Exception; typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code, struct _Unwind_Exception *); struct _Unwind_Exception { _Unwind_Exception_Class exception_class; _Unwind_Exception_Cleanup_Fn exception_cleanup; _Unwind_Word private_1; _Unwind_Word private_2; } __attribute__((__aligned__)); typedef int _Unwind_Action; # 115 "./include/unwind.h" 3 4 struct _Unwind_Context; extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *); typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *, void *); extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); extern void _Unwind_DeleteException (struct _Unwind_Exception *); extern void _Unwind_Resume (struct _Unwind_Exception *); extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow (struct _Unwind_Exception *); typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (struct _Unwind_Context *, void *); extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *); extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int); extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word); extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *); extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr); extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *); extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *); # 183 "./include/unwind.h" 3 4 typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn) (int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *, struct _Unwind_Context *); struct SjLj_Function_Context; extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *); extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *); extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException (struct _Unwind_Exception *); extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *); extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *); extern _Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *); # 225 "./include/unwind.h" 3 4 extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); extern void * _Unwind_FindEnclosingFunction (void *pc); # 35 "../../gcc/unwind-dw2-fde-darwin.c" 2 # 1 "../../gcc/unwind-pe.h" 1 # 73 "../../gcc/unwind-pe.h" static unsigned int size_of_encoded_value (unsigned char encoding) { if (encoding == 0xff) return 0; switch (encoding & 0x07) { case 0x00: return sizeof (void *); case 0x02: return 2; case 0x03: return 4; case 0x04: return 8; } abort (); } # 132 "../../gcc/unwind-pe.h" static const unsigned char * read_uleb128 (const unsigned char *p, _Unwind_Word *val) { unsigned int shift = 0; unsigned char byte; _Unwind_Word result; result = 0; do { byte = *p++; result |= ((_Unwind_Word)byte & 0x7f) << shift; shift += 7; } while (byte & 0x80); *val = result; return p; } static const unsigned char * read_sleb128 (const unsigned char *p, _Unwind_Sword *val) { unsigned int shift = 0; unsigned char byte; _Unwind_Word result; result = 0; do { byte = *p++; result |= ((_Unwind_Word)byte & 0x7f) << shift; shift += 7; } while (byte & 0x80); if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) result |= -(((_Unwind_Word)1L) << shift); *val = (_Unwind_Sword) result; return p; } static const unsigned char * read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base, const unsigned char *p, _Unwind_Ptr *val) { union unaligned { void *ptr; unsigned u2 __attribute__ ((mode (HI))); unsigned u4 __attribute__ ((mode (SI))); unsigned u8 __attribute__ ((mode (DI))); signed s2 __attribute__ ((mode (HI))); signed s4 __attribute__ ((mode (SI))); signed s8 __attribute__ ((mode (DI))); } __attribute__((__packed__)); const union unaligned *u = (const union unaligned *) p; _Unwind_Internal_Ptr result; if (encoding == 0x50) { _Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p; a = (a + sizeof (void *) - 1) & - sizeof(void *); result = *(_Unwind_Internal_Ptr *) a; p = (const unsigned char *) (_Unwind_Internal_Ptr) (a + sizeof (void *)); } else { switch (encoding & 0x0f) { case 0x00: result = (_Unwind_Internal_Ptr) u->ptr; p += sizeof (void *); break; case 0x01: { _Unwind_Word tmp; p = read_uleb128 (p, &tmp); result = (_Unwind_Internal_Ptr) tmp; } break; case 0x09: { _Unwind_Sword tmp; p = read_sleb128 (p, &tmp); result = (_Unwind_Internal_Ptr) tmp; } break; case 0x02: result = u->u2; p += 2; break; case 0x03: result = u->u4; p += 4; break; case 0x04: result = u->u8; p += 8; break; case 0x0A: result = u->s2; p += 2; break; case 0x0B: result = u->s4; p += 4; break; case 0x0C: result = u->s8; p += 8; break; default: abort (); } if (result != 0) { result += ((encoding & 0x70) == 0x10 ? (_Unwind_Internal_Ptr) u : base); if (encoding & 0x80) result = *(_Unwind_Internal_Ptr *) result; } } *val = result; return p; } # 38 "../../gcc/unwind-dw2-fde-darwin.c" 2 # 1 "../../gcc/unwind-dw2-fde.h" 1 # 39 "../../gcc/unwind-dw2-fde.h" struct fde_vector { const void *orig_data; size_t count; const struct dwarf_fde *array[]; }; struct object { void *pc_begin; void *tbase; void *dbase; union { const struct dwarf_fde *single; struct dwarf_fde **array; struct fde_vector *sort; } u; union { struct { unsigned long sorted : 1; unsigned long from_array : 1; unsigned long mixed_encoding : 1; unsigned long encoding : 8; unsigned long count : 21; } b; size_t i; } s; char *fde_end; struct object *next; }; struct old_object { void *pc_begin; void *pc_end; struct dwarf_fde *fde_begin; struct dwarf_fde **fde_array; size_t count; struct old_object *next; }; struct dwarf_eh_bases { void *tbase; void *dbase; void *func; }; extern void __register_frame_info_bases (const void *, struct object *, void *, void *); extern void __register_frame_info (const void *, struct object *); extern void __register_frame (void *); extern void __register_frame_info_table_bases (void *, struct object *, void *, void *); extern void __register_frame_info_table (void *, struct object *); extern void __register_frame_table (void *); extern void *__deregister_frame_info (const void *); extern void *__deregister_frame_info_bases (const void *); extern void __deregister_frame (void *); typedef int sword __attribute__ ((mode (SI))); typedef unsigned int uword __attribute__ ((mode (SI))); typedef unsigned int uaddr __attribute__ ((mode (pointer))); typedef int saddr __attribute__ ((mode (pointer))); typedef unsigned char ubyte; # 140 "../../gcc/unwind-dw2-fde.h" struct dwarf_cie { uword length; sword CIE_id; ubyte version; unsigned char augmentation[]; } __attribute__ ((packed, aligned (__alignof__ (void *)))); struct dwarf_fde { uword length; sword CIE_delta; unsigned char pc_begin[]; } __attribute__ ((packed, aligned (__alignof__ (void *)))); typedef struct dwarf_fde fde; static __inline__ const struct dwarf_cie * get_cie (const struct dwarf_fde *f) { return (void *)&f->CIE_delta - f->CIE_delta; } static __inline__ const fde * next_fde (const fde *f) { return (const fde *) ((char *) f + f->length + sizeof (f->length)); } extern const fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *); static __inline__ int last_fde (struct object *obj __attribute__ ((__unused__)), const fde *f) { return (char *)f == obj->fde_end || f->length == 0; } # 39 "../../gcc/unwind-dw2-fde-darwin.c" 2 typedef int __gthread_mutex_t; static const fde * _Unwind_Find_registered_FDE (void *pc, struct dwarf_eh_bases *bases); # 1 "../../gcc/unwind-dw2-fde.c" 1 # 49 "../../gcc/unwind-dw2-fde.c" static struct object *unseen_objects; static struct object *seen_objects; static __gthread_mutex_t object_mutex; # 77 "../../gcc/unwind-dw2-fde.c" void __register_frame_info_bases (const void *begin, struct object *ob, void *tbase, void *dbase) { if ((uword *) begin == 0 || *(uword *) begin == 0) return; ob->pc_begin = (void *)-1; ob->tbase = tbase; ob->dbase = dbase; ob->u.single = begin; ob->s.i = 0; ob->s.b.encoding = 0xff; ob->fde_end = ((void *)0); ; (void)(&object_mutex); ob->next = unseen_objects; unseen_objects = ob; (void)(&object_mutex); } void __register_frame_info (const void *begin, struct object *ob) { __register_frame_info_bases (begin, ob, 0, 0); } void __register_frame (void *begin) { struct object *ob; if (*(uword *) begin == 0) return; ob = malloc (sizeof (struct object)); __register_frame_info (begin, ob); } void __register_frame_info_table_bases (void *begin, struct object *ob, void *tbase, void *dbase) { ob->pc_begin = (void *)-1; ob->tbase = tbase; ob->dbase = dbase; ob->u.array = begin; ob->s.i = 0; ob->s.b.from_array = 1; ob->s.b.encoding = 0xff; ; (void)(&object_mutex); ob->next = unseen_objects; unseen_objects = ob; (void)(&object_mutex); } void __register_frame_info_table (void *begin, struct object *ob) { __register_frame_info_table_bases (begin, ob, 0, 0); } void __register_frame_table (void *begin) { struct object *ob = malloc (sizeof (struct object)); __register_frame_info_table (begin, ob); } # 173 "../../gcc/unwind-dw2-fde.c" void * __deregister_frame_info_bases (const void *begin) { struct object **p; struct object *ob = 0; if ((uword *) begin == 0 || *(uword *) begin == 0) return ob; ; (void)(&object_mutex); for (p = &unseen_objects; *p ; p = &(*p)->next) if ((*p)->u.single == begin) { ob = *p; *p = ob->next; goto out; } for (p = &seen_objects; *p ; p = &(*p)->next) if ((*p)->s.b.sorted) { if ((*p)->u.sort->orig_data == begin) { ob = *p; *p = ob->next; free (ob->u.sort); goto out; } } else { if ((*p)->u.single == begin) { ob = *p; *p = ob->next; goto out; } } out: (void)(&object_mutex); ((void)(!(ob) ? abort (), 0 : 0)); return (void *) ob; } void * __deregister_frame_info (const void *begin) { return __deregister_frame_info_bases (begin); } void __deregister_frame (void *begin) { if (*(uword *) begin != 0) free (__deregister_frame_info (begin)); } static _Unwind_Ptr base_from_object (unsigned char encoding, struct object *ob) { if (encoding == 0xff) return 0; switch (encoding & 0x70) { case 0x00: case 0x10: case 0x50: return 0; case 0x20: return (_Unwind_Ptr) ob->tbase; case 0x30: return (_Unwind_Ptr) ob->dbase; default: (abort ()); } } static int get_cie_encoding (const struct dwarf_cie *cie) { const unsigned char *aug, *p; _Unwind_Ptr dummy; _Unwind_Word utmp; _Unwind_Sword stmp; aug = cie->augmentation; if (aug[0] != 'z') return 0x00; p = aug + strlen ((const char *)aug) + 1; p = read_uleb128 (p, &utmp); p = read_sleb128 (p, &stmp); if (cie->version == 1) p++; else p = read_uleb128 (p, &utmp); aug++; p = read_uleb128 (p, &utmp); while (1) { if (*aug == 'R') return *p; else if (*aug == 'P') { p = read_encoded_value_with_base (*p & 0x7F, 0, p + 1, &dummy); } else if (*aug == 'L') p++; else return 0x00; aug++; } } static __inline__ int get_fde_encoding (const struct dwarf_fde *f) { return get_cie_encoding (get_cie (f)); } # 322 "../../gcc/unwind-dw2-fde.c" static int fde_unencoded_compare (struct object *ob __attribute__((unused)), const fde *x, const fde *y) { _Unwind_Ptr x_ptr = *(_Unwind_Ptr *) x->pc_begin; _Unwind_Ptr y_ptr = *(_Unwind_Ptr *) y->pc_begin; if (x_ptr > y_ptr) return 1; if (x_ptr < y_ptr) return -1; return 0; } static int fde_single_encoding_compare (struct object *ob, const fde *x, const fde *y) { _Unwind_Ptr base, x_ptr, y_ptr; base = base_from_object (ob->s.b.encoding, ob); read_encoded_value_with_base (ob->s.b.encoding, base, x->pc_begin, &x_ptr); read_encoded_value_with_base (ob->s.b.encoding, base, y->pc_begin, &y_ptr); if (x_ptr > y_ptr) return 1; if (x_ptr < y_ptr) return -1; return 0; } static int fde_mixed_encoding_compare (struct object *ob, const fde *x, const fde *y) { int x_encoding, y_encoding; _Unwind_Ptr x_ptr, y_ptr; x_encoding = get_fde_encoding (x); read_encoded_value_with_base (x_encoding, base_from_object (x_encoding, ob), x->pc_begin, &x_ptr); y_encoding = get_fde_encoding (y); read_encoded_value_with_base (y_encoding, base_from_object (y_encoding, ob), y->pc_begin, &y_ptr); if (x_ptr > y_ptr) return 1; if (x_ptr < y_ptr) return -1; return 0; } typedef int (*fde_compare_t) (struct object *, const fde *, const fde *); # 387 "../../gcc/unwind-dw2-fde.c" struct fde_accumulator { struct fde_vector *linear; struct fde_vector *erratic; }; static __inline__ int start_fde_sort (struct fde_accumulator *accu, size_t count) { size_t size; if (! count) return 0; size = sizeof (struct fde_vector) + sizeof (const fde *) * count; if ((accu->linear = malloc (size))) { accu->linear->count = 0; if ((accu->erratic = malloc (size))) accu->erratic->count = 0; return 1; } else return 0; } static __inline__ void fde_insert (struct fde_accumulator *accu, const fde *this_fde) { if (accu->linear) accu->linear->array[accu->linear->count++] = this_fde; } # 431 "../../gcc/unwind-dw2-fde.c" static __inline__ void fde_split (struct object *ob, fde_compare_t fde_compare, struct fde_vector *linear, struct fde_vector *erratic) { static const fde *marker; size_t count = linear->count; const fde **chain_end = ▮ size_t i, j, k; ((void)(!(sizeof (const fde *) == sizeof (const fde **)) ? abort (), 0 : 0)); for (i = 0; i < count; i++) { const fde **probe; for (probe = chain_end; probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0; probe = chain_end) { chain_end = (const fde **) erratic->array[probe - linear->array]; erratic->array[probe - linear->array] = ((void *)0); } erratic->array[i] = (const fde *) chain_end; chain_end = &linear->array[i]; } for (i = j = k = 0; i < count; i++) if (erratic->array[i]) linear->array[j++] = linear->array[i]; else erratic->array[k++] = linear->array[i]; linear->count = j; erratic->count = k; } static void frame_downheap (struct object *ob, fde_compare_t fde_compare, const fde **a, int lo, int hi) { int i, j; for (i = lo, j = 2*i+1; j < hi; j = 2*i+1) { if (j+1 < hi && fde_compare (ob, a[j], a[j+1]) < 0) ++j; if (fde_compare (ob, a[i], a[j]) < 0) { do { const fde * tmp = a[i]; a[i] = a[j]; a[j] = tmp; } while (0); i = j; } else break; } } static void frame_heapsort (struct object *ob, fde_compare_t fde_compare, struct fde_vector *erratic) { const fde ** a = erratic->array; size_t n = erratic->count; int m; for (m = n/2-1; m >= 0; --m) frame_downheap (ob, fde_compare, a, m, n); for (m = n-1; m >= 1; --m) { do { const fde * tmp = a[0]; a[0] = a[m]; a[m] = tmp; } while (0); frame_downheap (ob, fde_compare, a, 0, m); } } static __inline__ void fde_merge (struct object *ob, fde_compare_t fde_compare, struct fde_vector *v1, struct fde_vector *v2) { size_t i1, i2; const fde * fde2; i2 = v2->count; if (i2 > 0) { i1 = v1->count; do { i2--; fde2 = v2->array[i2]; while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0) { v1->array[i1+i2] = v1->array[i1-1]; i1--; } v1->array[i1+i2] = fde2; } while (i2 > 0); v1->count += v2->count; } } static __inline__ void end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count) { fde_compare_t fde_compare; ((void)(!(!accu->linear || accu->linear->count == count) ? abort (), 0 : 0)); if (ob->s.b.mixed_encoding) fde_compare = fde_mixed_encoding_compare; else if (ob->s.b.encoding == 0x00) fde_compare = fde_unencoded_compare; else fde_compare = fde_single_encoding_compare; if (accu->erratic) { fde_split (ob, fde_compare, accu->linear, accu->erratic); ((void)(!(accu->linear->count + accu->erratic->count == count) ? abort (), 0 : 0)); frame_heapsort (ob, fde_compare, accu->erratic); fde_merge (ob, fde_compare, accu->linear, accu->erratic); free (accu->erratic); } else { frame_heapsort (ob, fde_compare, accu->linear); } } static size_t classify_object_over_fdes (struct object *ob, const fde *this_fde) { const struct dwarf_cie *last_cie = 0; size_t count = 0; int encoding = 0x00; _Unwind_Ptr base = 0; for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { const struct dwarf_cie *this_cie; _Unwind_Ptr mask, pc_begin; if (this_fde->CIE_delta == 0) continue; this_cie = get_cie (this_fde); if (this_cie != last_cie) { last_cie = this_cie; encoding = get_cie_encoding (this_cie); base = base_from_object (encoding, ob); if (ob->s.b.encoding == 0xff) ob->s.b.encoding = encoding; else if (ob->s.b.encoding != encoding) ob->s.b.mixed_encoding = 1; } read_encoded_value_with_base (encoding, base, this_fde->pc_begin, &pc_begin); mask = size_of_encoded_value (encoding); if (mask < sizeof (void *)) mask = (1L << (mask << 3)) - 1; else mask = -1; if ((pc_begin & mask) == 0) continue; count += 1; if ((void *) pc_begin < ob->pc_begin) ob->pc_begin = (void *) pc_begin; } return count; } static void add_fdes (struct object *ob, struct fde_accumulator *accu, const fde *this_fde) { const struct dwarf_cie *last_cie = 0; int encoding = ob->s.b.encoding; _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { const struct dwarf_cie *this_cie; if (this_fde->CIE_delta == 0) continue; if (ob->s.b.mixed_encoding) { this_cie = get_cie (this_fde); if (this_cie != last_cie) { last_cie = this_cie; encoding = get_cie_encoding (this_cie); base = base_from_object (encoding, ob); } } if (encoding == 0x00) { if (*(_Unwind_Ptr *) this_fde->pc_begin == 0) continue; } else { _Unwind_Ptr pc_begin, mask; read_encoded_value_with_base (encoding, base, this_fde->pc_begin, &pc_begin); mask = size_of_encoded_value (encoding); if (mask < sizeof (void *)) mask = (1L << (mask << 3)) - 1; else mask = -1; if ((pc_begin & mask) == 0) continue; } fde_insert (accu, this_fde); } } static __inline__ void init_object (struct object* ob) { struct fde_accumulator accu; size_t count; count = ob->s.b.count; if (count == 0) { if (ob->s.b.from_array) { fde **p = ob->u.array; for (count = 0; *p; ++p) count += classify_object_over_fdes (ob, *p); } else count = classify_object_over_fdes (ob, ob->u.single); ob->s.b.count = count; if (ob->s.b.count != count) ob->s.b.count = 0; } if (!start_fde_sort (&accu, count)) return; if (ob->s.b.from_array) { fde **p; for (p = ob->u.array; *p; ++p) add_fdes (ob, &accu, *p); } else add_fdes (ob, &accu, ob->u.single); end_fde_sort (ob, &accu, count); accu.linear->orig_data = ob->u.single; ob->u.sort = accu.linear; ob->s.b.sorted = 1; } static const fde * linear_search_fdes (struct object *ob, const fde *this_fde, void *pc) { const struct dwarf_cie *last_cie = 0; int encoding = ob->s.b.encoding; _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) { const struct dwarf_cie *this_cie; _Unwind_Ptr pc_begin, pc_range; if (this_fde->CIE_delta == 0) continue; if (ob->s.b.mixed_encoding) { this_cie = get_cie (this_fde); if (this_cie != last_cie) { last_cie = this_cie; encoding = get_cie_encoding (this_cie); base = base_from_object (encoding, ob); } } if (encoding == 0x00) { pc_begin = ((_Unwind_Ptr *) this_fde->pc_begin)[0]; pc_range = ((_Unwind_Ptr *) this_fde->pc_begin)[1]; if (pc_begin == 0) continue; } else { _Unwind_Ptr mask; const unsigned char *p; p = read_encoded_value_with_base (encoding, base, this_fde->pc_begin, &pc_begin); read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range); mask = size_of_encoded_value (encoding); if (mask < sizeof (void *)) mask = (1L << (mask << 3)) - 1; else mask = -1; if ((pc_begin & mask) == 0) continue; } if ((_Unwind_Ptr) pc - pc_begin < pc_range) return this_fde; } return ((void *)0); } static __inline__ const fde * binary_search_unencoded_fdes (struct object *ob, void *pc) { struct fde_vector *vec = ob->u.sort; size_t lo, hi; for (lo = 0, hi = vec->count; lo < hi; ) { size_t i = (lo + hi) / 2; const fde *f = vec->array[i]; void *pc_begin; uaddr pc_range; pc_begin = ((void **) f->pc_begin)[0]; pc_range = ((uaddr *) f->pc_begin)[1]; if (pc < pc_begin) hi = i; else if (pc >= pc_begin + pc_range) lo = i + 1; else return f; } return ((void *)0); } static __inline__ const fde * binary_search_single_encoding_fdes (struct object *ob, void *pc) { struct fde_vector *vec = ob->u.sort; int encoding = ob->s.b.encoding; _Unwind_Ptr base = base_from_object (encoding, ob); size_t lo, hi; for (lo = 0, hi = vec->count; lo < hi; ) { size_t i = (lo + hi) / 2; const fde *f = vec->array[i]; _Unwind_Ptr pc_begin, pc_range; const unsigned char *p; p = read_encoded_value_with_base (encoding, base, f->pc_begin, &pc_begin); read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range); if ((_Unwind_Ptr) pc < pc_begin) hi = i; else if ((_Unwind_Ptr) pc >= pc_begin + pc_range) lo = i + 1; else return f; } return ((void *)0); } static __inline__ const fde * binary_search_mixed_encoding_fdes (struct object *ob, void *pc) { struct fde_vector *vec = ob->u.sort; size_t lo, hi; for (lo = 0, hi = vec->count; lo < hi; ) { size_t i = (lo + hi) / 2; const fde *f = vec->array[i]; _Unwind_Ptr pc_begin, pc_range; const unsigned char *p; int encoding; encoding = get_fde_encoding (f); p = read_encoded_value_with_base (encoding, base_from_object (encoding, ob), f->pc_begin, &pc_begin); read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range); if ((_Unwind_Ptr) pc < pc_begin) hi = i; else if ((_Unwind_Ptr) pc >= pc_begin + pc_range) lo = i + 1; else return f; } return ((void *)0); } static const fde * search_object (struct object* ob, void *pc) { if (! ob->s.b.sorted) { init_object (ob); if (pc < ob->pc_begin) return ((void *)0); } if (ob->s.b.sorted) { if (ob->s.b.mixed_encoding) return binary_search_mixed_encoding_fdes (ob, pc); else if (ob->s.b.encoding == 0x00) return binary_search_unencoded_fdes (ob, pc); else return binary_search_single_encoding_fdes (ob, pc); } else { if (ob->s.b.from_array) { fde **p; for (p = ob->u.array; *p ; p++) { const fde *f = linear_search_fdes (ob, *p, pc); if (f) return f; } return ((void *)0); } else return linear_search_fdes (ob, ob->u.single, pc); } } const fde * _Unwind_Find_registered_FDE (void *pc, struct dwarf_eh_bases *bases) { struct object *ob; const fde *f = ((void *)0); ; (void)(&object_mutex); for (ob = seen_objects; ob; ob = ob->next) if (pc >= ob->pc_begin) { f = search_object (ob, pc); if (f) goto fini; break; } while ((ob = unseen_objects)) { struct object **p; unseen_objects = ob->next; f = search_object (ob, pc); for (p = &seen_objects; *p ; p = &(*p)->next) if ((*p)->pc_begin < ob->pc_begin) break; ob->next = *p; *p = ob; if (f) goto fini; } fini: (void)(&object_mutex); if (f) { int encoding; _Unwind_Ptr func; bases->tbase = ob->tbase; bases->dbase = ob->dbase; encoding = ob->s.b.encoding; if (ob->s.b.mixed_encoding) encoding = get_fde_encoding (f); read_encoded_value_with_base (encoding, base_from_object (encoding, ob), f->pc_begin, &func); bases->func = (void *) func; } return f; } # 50 "../../gcc/unwind-dw2-fde-darwin.c" 2 extern void *_keymgr_get_and_lock_processwide_ptr (int); 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_64*, const char*, const char *, unsigned long *); struct km_object_info { struct object *seen_objects; struct object *unseen_objects; unsigned spare[2]; }; struct live_images { unsigned long this_size; struct mach_header *mh; unsigned long vm_slide; void (*destructor)(struct live_images *); struct live_images *next; unsigned int examined_p; void *fde; void *object_info; unsigned long info[2]; }; enum { EXAMINED_IMAGE_MASK = 1, ALLOCED_IMAGE_MASK = 2, IMAGE_IS_TEXT_MASK = 4, DESTRUCTOR_MAY_BE_CALLED_LIVE = 8 }; # 106 "../../gcc/unwind-dw2-fde-darwin.c" static void live_image_destructor (struct live_images *image) { if (image->object_info) { struct km_object_info *the_obj_info; the_obj_info = _keymgr_get_and_lock_processwide_ptr (302); if (the_obj_info) { seen_objects = the_obj_info->seen_objects; unseen_objects = the_obj_info->unseen_objects; __deregister_frame_info_bases (image->fde); the_obj_info->seen_objects = seen_objects; the_obj_info->unseen_objects = unseen_objects; } _keymgr_set_and_unlock_processwide_ptr (302, the_obj_info); free (image->object_info); image->object_info = ((void *)0); if (image->examined_p & ALLOCED_IMAGE_MASK) free (image->fde); image->fde = ((void *)0); } image->examined_p = 0; image->destructor = ((void *)0); } static __inline__ const fde * examine_objects (void *pc, struct dwarf_eh_bases *bases, int dont_alloc) { const fde *result = ((void *)0); struct live_images *image; image = _keymgr_get_and_lock_processwide_ptr (301); for (; image != ((void *)0); image = image->next) if ((image->examined_p & EXAMINED_IMAGE_MASK) == 0) { char *fde = ((void *)0); unsigned long sz; if (fde == ((void *)0)) { fde = getsectdatafromheader (image->mh, "__TEXT", "__eh_frame", &sz); if (fde != ((void *)0)) image->examined_p |= IMAGE_IS_TEXT_MASK; } if (fde != ((void *)0) && sz > 0) { char *real_fde = (fde + image->vm_slide); struct object *ob = ((void *)0); struct object panicob; if (! dont_alloc) ob = calloc (1, sizeof (struct object)); dont_alloc |= ob == ((void *)0); if (dont_alloc) ob = &panicob; ob->pc_begin = (void *)-1; ob->tbase = 0; ob->dbase = 0; ob->u.single = (struct dwarf_fde *)real_fde; ob->s.i = 0; ob->s.b.encoding = 0xff; ob->fde_end = real_fde + sz; image->fde = real_fde; result = search_object (ob, pc); if (! dont_alloc) { struct object **p; image->destructor = live_image_destructor; image->object_info = ob; image->examined_p |= (EXAMINED_IMAGE_MASK | DESTRUCTOR_MAY_BE_CALLED_LIVE); for (p = &seen_objects; *p ; p = &(*p)->next) if ((*p)->pc_begin < ob->pc_begin) break; ob->next = *p; *p = ob; } if (result) { int encoding; _Unwind_Ptr func; bases->tbase = ob->tbase; bases->dbase = ob->dbase; encoding = ob->s.b.encoding; if (ob->s.b.mixed_encoding) encoding = get_fde_encoding (result); read_encoded_value_with_base (encoding, base_from_object (encoding, ob), result->pc_begin, &func); bases->func = (void *) func; break; } } else image->examined_p |= EXAMINED_IMAGE_MASK; } _keymgr_unlock_processwide_ptr (301); return result; } const fde * _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases) { struct km_object_info *the_obj_info; const fde *ret = ((void *)0); the_obj_info = _keymgr_get_and_lock_processwide_ptr (302); if (! the_obj_info) the_obj_info = calloc (1, sizeof (*the_obj_info)); if (the_obj_info != ((void *)0)) { seen_objects = the_obj_info->seen_objects; unseen_objects = the_obj_info->unseen_objects; ret = _Unwind_Find_registered_FDE (pc, bases); } if (ret == ((void *)0)) ret = examine_objects (pc, bases, the_obj_info == ((void *)0)); if (the_obj_info != ((void *)0)) { the_obj_info->seen_objects = seen_objects; the_obj_info->unseen_objects = unseen_objects; } _keymgr_set_and_unlock_processwide_ptr (302, the_obj_info); return ret; }