From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 588 invoked by alias); 18 May 2007 17:31:08 -0000 Received: (qmail 403 invoked by uid 22791); 18 May 2007 17:30:22 -0000 X-Spam-Status: No, hits=0.9 required=5.0 tests=AWL,DK_POLICY_SIGNSOME,SPF_PASS,TW_CL,TW_CP,TW_EG,TW_FC,TW_FX,TW_GJ,TW_GW,TW_KC,TW_LW,TW_MK,TW_PT,TW_QE,TW_RW,TW_RX,TW_TD,TW_TJ,TW_TP,TW_TR,TW_VR,TW_XF,TW_XM X-Spam-Check-By: sourceware.org Received: from igw1.br.ibm.com (HELO igw1.br.ibm.com) (32.104.18.24) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 18 May 2007 17:29:21 +0000 Received: from mailhub1.br.ibm.com (mailhub1 [9.18.232.109]) by igw1.br.ibm.com (Postfix) with ESMTP id 0823D148121 for ; Fri, 18 May 2007 14:17:25 -0300 (BRT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by mailhub1.br.ibm.com (8.13.8/8.13.8/NCO v8.3) with ESMTP id l4IHT2ax1294514 for ; Fri, 18 May 2007 14:29:03 -0300 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l4IHR0bH010113 for ; Fri, 18 May 2007 14:27:00 -0300 Received: from [9.12.241.107] ([9.12.241.107]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l4IHQMcN008931 for ; Fri, 18 May 2007 14:26:26 -0300 Subject: Frysk libunwind PowerPC support From: Jose Flavio Aguilar Paulino To: frysk@sourceware.org Content-Type: multipart/mixed; boundary="=-qu1J3sS+33fT4yLNrOyd" Date: Fri, 18 May 2007 20:28:00 -0000 Message-Id: <1179509373.5550.18.camel@kandinsky.prado> Mime-Version: 1.0 X-Mailer: Evolution 2.8.2 Mailing-List: contact frysk-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-owner@sourceware.org X-SW-Source: 2007-q2/txt/msg00175.txt.bz2 --=-qu1J3sS+33fT4yLNrOyd Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 28 Sorry the size of the patch --=-qu1J3sS+33fT4yLNrOyd Content-Disposition: attachment; filename=libunwind-ppc-support.diff Content-Type: text/x-patch; name=libunwind-ppc-support.diff; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 349265 Index: frysk/frysk-imports/libunwind/Makefile.am =================================================================== --- frysk.orig/frysk-imports/libunwind/Makefile.am 2007-05-11 17:24:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/Makefile.am 2007-05-18 13:13:55.000000000 -0300 @@ -9,6 +9,10 @@ else if ARCH_X86_64 include_HEADERS_tdep = include/libunwind-x86_64.h +else +if ARCH_PPC64 +include_HEADERS_tdep = include/libunwind-ppc64.h +endif # ARCH_PPC64 endif # ARCH_X86_64 endif # ARCH_X86 endif # ARCH_HPPA @@ -40,6 +44,8 @@ include/libunwind-x86.h include/tdep-x86/libunwind_i.h \ include/tdep-x86/jmpbuf.h include/tdep-x86/dwarf-config.h \ include/libunwind-x86_64.h include/tdep-x86_64/libunwind_i.h \ - include/tdep-x86_64/jmpbuf.h include/tdep-x86_64/dwarf-config.h + include/tdep-x86_64/jmpbuf.h include/tdep-x86_64/dwarf-config.h \ + include/libunwind-ppc64.h include/tdep-ppc64/dwarf-config.h \ + include/tdep-ppc64/jmpbuf.h include/tdep-ppc64/libunwind_i.h DISTCLEANFILES = include/libunwind.h include/tdep Index: frysk/frysk-imports/libunwind/src/ppc64/longjmp.S =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/longjmp.S 2007-04-05 04:31:52.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/longjmp.S 2007-05-18 13:13:55.000000000 -0300 @@ -32,7 +32,3 @@ .type _UI_longjmp_cont, @function _UI_longjmp_cont: .size _UI_longjmp_cont, .-_UI_longjmp_cont -#ifdef __linux__ - /* We do not need executable stack. */ - .section .note.GNU-stack,"",@progbits -#endif Index: frysk/frysk-imports/libunwind/tests/ppc64-test-wchar.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/tests/ppc64-test-wchar.c 2007-05-18 14:08:44.000000000 -0300 @@ -0,0 +1,20 @@ +#include +#include +main () +{ + wchar_t *wstring = + L"Now is the time for all good men to come to the aid of their country"; + int i; + int ret; + + printf("wcslen(wstring) = %d\n", wcslen(wstring)); + for (i = 0; i < wcslen (wstring); i++) + { + ret = printf ("%lc", wstring[i]); + if (ret != 1) { + printf("printf returned: %d\n", ret); + perror("Linux says"); + } + } + printf("\n"); +} Index: frysk/frysk-imports/libunwind/ChangeLog =================================================================== --- frysk.orig/frysk-imports/libunwind/ChangeLog 2007-04-25 12:39:10.000000000 -0300 +++ frysk/frysk-imports/libunwind/ChangeLog 2007-05-18 13:13:55.000000000 -0300 @@ -1,5 +1,12 @@ +2007-04-30 Nurdin Premji + + * src/mi/Gget_unwind_table.c (unw_get_unwind_table): Changed to return + UNW_ENOINFO instead of -1. Allows stepping to continue. + 2007-04-25 Nurdin Premji + * src/mi/Gget_unwind_table.c (unw_get_unwind_table): Cleaned up logging. + * include/libunwind-common.h.in (unw_get_unwind_table): Added. * src/elfxx.h (elf_map_image): map image using MAP_32BIT to avoid address truncation issues in cross-platform unwinding. Index: frysk/frysk-imports/libunwind/configure.in =================================================================== --- frysk.orig/frysk-imports/libunwind/configure.in 2007-03-30 16:58:12.000000000 -0300 +++ frysk/frysk-imports/libunwind/configure.in 2007-05-18 13:13:55.000000000 -0300 @@ -81,6 +81,7 @@ CPPFLAGS="${CPPFLAGS} -DUNW_REMOTE_ONLY" fi AC_CONFIG_LINKS(include/libunwind.h:include/libunwind-$target_arch.h + include/libunwind_i.h:include/libunwind_i.h include/tdep:include/tdep-$target_arch) AC_ARG_ENABLE(debug, Index: frysk/frysk-imports/libunwind/include/dwarf.h =================================================================== --- frysk.orig/frysk-imports/libunwind/include/dwarf.h 2007-03-21 14:37:49.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/dwarf.h 2007-05-18 13:13:55.000000000 -0300 @@ -26,19 +26,11 @@ #ifndef dwarf_h #define dwarf_h -#ifdef HAVE_CONFIG_H -#include -#endif - -#ifdef HAVE_ATOMIC_OPS_H -# include -#endif - #include struct dwarf_cursor; /* forward-declaration */ -#include "dwarf-config.h" +#include "tdep/dwarf-config.h" /* DWARF expression opcodes. */ @@ -205,9 +197,6 @@ #define DW_EH_PE_funcrel 0x40 /* start-of-procedure-relative */ #define DW_EH_PE_aligned 0x50 /* aligned pointer */ -extern struct mempool dwarf_reg_state_pool; -extern struct mempool dwarf_cie_info_pool; - typedef enum { DWARF_WHERE_UNDEF, /* register isn't saved at all */ Index: frysk/frysk-imports/libunwind/include/dwarf_i.h =================================================================== --- frysk.orig/frysk-imports/libunwind/include/dwarf_i.h 2007-03-21 14:37:49.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/dwarf_i.h 2007-05-18 13:13:55.000000000 -0300 @@ -6,6 +6,11 @@ because otherwise they'd generate unresolved references when the files are compiled with inlining disabled. */ +#include "mempool.h" + +extern struct mempool dwarf_reg_state_pool; +extern struct mempool dwarf_cie_info_pool; + #include "dwarf.h" #include "libunwind_i.h" @@ -19,6 +24,8 @@ #ifdef UNW_LOCAL_ONLY + + /* In the local-only case, we can let the compiler directly access memory and don't need to worry about differing byte-order. */ Index: frysk/frysk-imports/libunwind/include/libunwind-common.h.in =================================================================== --- frysk.orig/frysk-imports/libunwind/include/libunwind-common.h.in 2007-04-25 12:39:10.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/libunwind-common.h.in 2007-05-18 13:13:55.000000000 -0300 @@ -115,6 +115,13 @@ typedef unw_tdep_fpreg_t unw_fpreg_t; +/* Return 1 if register number R is a vector register, zero + otherwise. + This routine is signal-safe. */ +#define unw_is_vreg(r) unw_tdep_is_vreg(r) + +typedef unw_tdep_vreg_t unw_vreg_t; + typedef struct unw_addr_space *unw_addr_space_t; /* Each target may define it's own set of flags, but bits 0-15 are @@ -167,10 +174,14 @@ int (*access_reg) (unw_addr_space_t, unw_regnum_t, unw_word_t *, int, void *); - /* Access register number REG at address ADDR. */ + /* Access floating point register number REG at address ADDR. */ int (*access_fpreg) (unw_addr_space_t, unw_regnum_t, unw_fpreg_t *, int, void *); + /* Access vector register number REG at address ADDR. */ + int (*access_vreg) (unw_addr_space_t, unw_regnum_t, + unw_vreg_t *, int, void *); + int (*resume) (unw_addr_space_t, unw_cursor_t *, void *); /* Optional call back to obtain the name of a (static) procedure. @@ -179,6 +190,7 @@ NULL. */ int (*get_proc_name) (unw_addr_space_t, unw_word_t, char *, size_t, unw_word_t *, void *); + int validate; } unw_accessors_t; @@ -219,6 +231,8 @@ #define unw_set_reg UNW_OBJ(set_reg) #define unw_get_fpreg UNW_OBJ(get_fpreg) #define unw_set_fpreg UNW_OBJ(set_fpreg) +#define unw_get_vreg UNW_OBJ(get_vreg) +#define unw_set_vreg UNW_OBJ(set_vreg) #define unw_get_save_loc UNW_OBJ(get_save_loc) #define unw_is_signal_frame UNW_OBJ(is_signal_frame) #define unw_get_proc_name UNW_OBJ(get_proc_name) @@ -226,7 +240,7 @@ #define unw_regname UNW_ARCH_OBJ(regname) #define unw_flush_cache UNW_ARCH_OBJ(flush_cache) #define unw_strerror UNW_ARCH_OBJ(strerror) -#define unw_get_unwind_table UNW_ARCH_OBJ(get_unwind_table) +#define unw_get_unwind_table UNW_ARCH_OBJ(get_unwind_table) extern unw_addr_space_t unw_create_addr_space (unw_accessors_t *, int); extern void unw_destroy_addr_space (unw_addr_space_t); @@ -246,14 +260,16 @@ extern int unw_set_reg (unw_cursor_t *, int, unw_word_t); extern int unw_get_fpreg (unw_cursor_t *, int, unw_fpreg_t *); extern int unw_set_fpreg (unw_cursor_t *, int, unw_fpreg_t); +extern int unw_get_vreg (unw_cursor_t *, int, unw_vreg_t *); +extern int unw_set_vreg (unw_cursor_t *, int, unw_vreg_t); extern int unw_get_save_loc (unw_cursor_t *, int, unw_save_loc_t *); extern int unw_is_signal_frame (unw_cursor_t *); extern int unw_get_proc_name (unw_cursor_t *, char *, size_t, unw_word_t *); extern const char *unw_strerror (int); -extern int unw_get_unwind_table(unw_addr_space_t as, unw_word_t ip, - unw_proc_info_t *pi, int need_unwind_info, - void *image, size_t size, - unsigned long segbase, unsigned long mapoff, - void *arg); +extern int unw_get_unwind_table(unw_addr_space_t as, unw_word_t ip, + unw_proc_info_t *pi, int need_unwind_info, + void *image, size_t size, + unsigned long segbase, unsigned long mapoff, + void *arg); extern unw_addr_space_t unw_local_addr_space; Index: frysk/frysk-imports/libunwind/include/libunwind-ppc64.h =================================================================== --- frysk.orig/frysk-imports/libunwind/include/libunwind-ppc64.h 2007-04-04 17:41:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/libunwind-ppc64.h 2007-05-18 14:23:22.000000000 -0300 @@ -42,25 +42,44 @@ #define _U_TDEP_QP_TRUE 0 /* see libunwind-dynamic.h */ -/* This needs to be big enough to accommodate "struct cursor", while - leaving some slack for future expansion. Changing this value will - require recompiling all users of this library. Stack allocation is - relatively cheap and unwind-state copying is relatively rare, so we - want to err on making it rather too big than too small. - - XXX: how big should this be for ppc64? 127 was too small. */ - -#define UNW_TDEP_CURSOR_LEN 255 - +/* + * This needs to be big enough to accommodate "struct cursor", while + * leaving some slack for future expansion. Changing this value will + * require recompiling all users of this library. Stack allocation is + * relatively cheap and unwind-state copying is relatively rare, so we want + * to err on making it rather too big than too small. + * + * To simplify this whole process, we are at least initially taking the + * tack that UNW_PPC64_* map straight across to the .eh_frame column register + * numbers. These register numbers come from gcc's source in + * gcc/config/rs6000/rs6000.h + * + * UNW_TDEP_CURSOR_LEN is in terms of unw_word_t size. Since we have 115 + * elements in the loc array, each sized 2 * unw_word_t, plus the rest of + * the cursor struct, this puts us at about 2 * 115 + 40 = 270. Let's + * round that up to 280. + */ + +#define UNW_TDEP_CURSOR_LEN 280 + +#if __WORDSIZE==32 +typedef uint32_t unw_word_t; +typedef int32_t unw_sword_t; +#else typedef uint64_t unw_word_t; typedef int64_t unw_sword_t; +#endif typedef long double unw_tdep_fpreg_t; +typedef struct { + uint64_t halves[2]; +} unw_tdep_vreg_t; + typedef enum { UNW_PPC64_R0, - UNW_PPC64_R1, + UNW_PPC64_R1, /* called STACK_POINTER in gcc */ UNW_PPC64_R2, UNW_PPC64_R3, UNW_PPC64_R4, @@ -70,7 +89,7 @@ UNW_PPC64_R8, UNW_PPC64_R9, UNW_PPC64_R10, - UNW_PPC64_R11, + UNW_PPC64_R11, /* called STATIC_CHAIN in gcc */ UNW_PPC64_R12, UNW_PPC64_R13, UNW_PPC64_R14, @@ -90,22 +109,9 @@ UNW_PPC64_R28, UNW_PPC64_R29, UNW_PPC64_R30, - UNW_PPC64_R31, + UNW_PPC64_R31, /* called HARD_FRAME_POINTER in gcc */ - UNW_PPC64_NIP, - UNW_PPC64_MSR, - UNW_PPC64_ORIG_GPR3, - UNW_PPC64_CTR, - UNW_PPC64_LR, - UNW_PPC64_XER, - UNW_PPC64_CCR, - UNW_PPC64_MQ, - UNW_PPC64_TRAP, - UNW_PPC64_DAR, - UNW_PPC64_DSISR, - UNW_PPC64_RESULT, - - UNW_PPC64_F0 = 48, + UNW_PPC64_F0 = 32, UNW_PPC64_F1, UNW_PPC64_F2, UNW_PPC64_F3, @@ -137,14 +143,73 @@ UNW_PPC64_F29, UNW_PPC64_F30, UNW_PPC64_F31, - UNW_PPC64_FPSCR, - - /* XXX Add other regs here */ + /* Note that there doesn't appear to be an .eh_frame register column + for the FPSCR register. I don't know why this is. Since .eh_frame + info is what this implementation uses for unwinding, we have no way + to unwind this register, and so we will not expose an FPSCR register + number in the libunwind API. + */ + + UNW_PPC64_LR = 65, + UNW_PPC64_CTR = 66, + UNW_PPC64_ARG_POINTER = 67, + + UNW_PPC64_CR0 = 68, + UNW_PPC64_CR1, + UNW_PPC64_CR2, + UNW_PPC64_CR3, + UNW_PPC64_CR4, + /* CR5 .. CR7 are currently unused */ + UNW_PPC64_CR5, + UNW_PPC64_CR6, + UNW_PPC64_CR7, + + UNW_PPC64_XER = 76, + + UNW_PPC64_V0 = 77, + UNW_PPC64_V1, + UNW_PPC64_V2, + UNW_PPC64_V3, + UNW_PPC64_V4, + UNW_PPC64_V5, + UNW_PPC64_V6, + UNW_PPC64_V7, + UNW_PPC64_V8, + UNW_PPC64_V9, + UNW_PPC64_V10, + UNW_PPC64_V11, + UNW_PPC64_V12, + UNW_PPC64_V13, + UNW_PPC64_V14, + UNW_PPC64_V15, + UNW_PPC64_V16, + UNW_PPC64_V17, + UNW_PPC64_V18, + UNW_PPC64_V19, + UNW_PPC64_V20, + UNW_PPC64_V21, + UNW_PPC64_V22, + UNW_PPC64_V23, + UNW_PPC64_V24, + UNW_PPC64_V25, + UNW_PPC64_V26, + UNW_PPC64_V27, + UNW_PPC64_V28, + UNW_PPC64_V29, + UNW_PPC64_V30, + UNW_PPC64_V31, + + UNW_PPC64_VRSAVE = 109, + UNW_PPC64_VSCR = 110, + UNW_PPC64_SPE_ACC = 111, + UNW_PPC64_SPEFSCR = 112, /* frame info (read-only) */ - UNW_PPC64_CFA, + UNW_PPC64_FRAME_POINTER, + UNW_PPC64_NIP, - UNW_TDEP_LAST_REG = UNW_PPC64_F31, + + UNW_TDEP_LAST_REG = UNW_PPC64_NIP, UNW_TDEP_IP = UNW_PPC64_NIP, UNW_TDEP_SP = UNW_PPC64_R1, @@ -152,9 +217,12 @@ } ppc64_regnum_t; -/* XXX: the number of exception arguments. Not sure what is the value - for PPC64 at this time. */ -#define UNW_TDEP_NUM_EH_REGS 2 +/* + * According to David Edelsohn, GNU gcc uses R3, R4, R5, and maybe R6 for + * passing parameters to exception handlers. + */ + +#define UNW_TDEP_NUM_EH_REGS 4 typedef struct unw_tdep_save_loc { Index: frysk/frysk-imports/libunwind/include/tdep-ppc64/dwarf-config.h =================================================================== --- frysk.orig/frysk-imports/libunwind/include/tdep-ppc64/dwarf-config.h 2007-03-12 12:26:06.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/tdep-ppc64/dwarf-config.h 2007-05-18 13:13:55.000000000 -0300 @@ -30,10 +30,10 @@ #ifndef dwarf_config_h #define dwarf_config_h -/* XXX: For PPC64, 48 GPRs + 33 FPRs. */ -#define DWARF_NUM_PRESERVED_REGS 81 +/* For PPC64, 48 GPRs + 33 FPRs + 33 AltiVec + 1 SPE */ +#define DWARF_NUM_PRESERVED_REGS 115 -#define DWARF_REGNUM_MAP_LENGTH 81 +#define DWARF_REGNUM_MAP_LENGTH 115 /* Return TRUE if the ADDR_SPACE uses big-endian byte-order. */ #define dwarf_is_big_endian(addr_space) 1 Index: frysk/frysk-imports/libunwind/include/tdep-ppc64/libunwind_i.h =================================================================== --- frysk.orig/frysk-imports/libunwind/include/tdep-ppc64/libunwind_i.h 2007-04-04 17:41:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/include/tdep-ppc64/libunwind_i.h 2007-05-18 13:13:55.000000000 -0300 @@ -37,37 +37,36 @@ #include #include "elf64.h" -#include "mempool.h" #include "dwarf.h" struct unw_addr_space - { - struct unw_accessors acc; - unw_caching_policy_t caching_policy; +{ + struct unw_accessors acc; + unw_caching_policy_t caching_policy; #ifdef HAVE_ATOMIC_OPS_H - AO_t cache_generation; + AO_t cache_generation; #else - uint32_t cache_generation; + uint32_t cache_generation; #endif - unw_word_t dyn_generation; /* see dyn-common.h */ - unw_word_t dyn_info_list_addr; /* (cached) dyn_info_list_addr */ - struct dwarf_rs_cache global_cache; - }; + unw_word_t dyn_generation; /* see dyn-common.h */ + unw_word_t dyn_info_list_addr; /* (cached) dyn_info_list_addr */ + struct dwarf_rs_cache global_cache; +}; struct cursor - { - struct dwarf_cursor dwarf; /* must be first */ +{ + struct dwarf_cursor dwarf; /* must be first */ - /* Format of sigcontext structure and address at which it is - stored: */ - enum - { - PPC64_SCF_NONE, /* no signal frame encountered */ - PPC64_SCF_LINUX_RT_SIGFRAME /* POSIX ucontext_t */ - } - sigcontext_format; - unw_word_t sigcontext_addr; - }; + /* Format of sigcontext structure and address at which it is + stored: */ + enum + { + PPC64_SCF_NONE, /* no signal frame encountered */ + PPC64_SCF_LINUX_RT_SIGFRAME /* POSIX ucontext_t */ + } + sigcontext_format; + unw_word_t sigcontext_addr; +}; #define DWARF_GET_LOC(l) ((l).val) @@ -76,57 +75,141 @@ # define DWARF_IS_NULL_LOC(l) (DWARF_GET_LOC (l) == 0) # define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r) }) # define DWARF_IS_REG_LOC(l) 0 +# define DWARF_IS_FP_LOC(l) 0 +# define DWARF_IS_V_LOC(l) 0 +# define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) # define DWARF_REG_LOC(c,r) (DWARF_LOC((unw_word_t) \ tdep_uc_addr((c)->as_arg, (r)), 0)) -# define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) # define DWARF_FPREG_LOC(c,r) (DWARF_LOC((unw_word_t) \ tdep_uc_addr((c)->as_arg, (r)), 0)) +# define DWARF_VREG_LOC(c,r) (DWARF_LOC((unw_word_t) \ + tdep_uc_addr((c)->as_arg, (r)), 0)) #else /* !UNW_LOCAL_ONLY */ # define DWARF_LOC_TYPE_FP (1 << 0) # define DWARF_LOC_TYPE_REG (1 << 1) +# define DWARF_LOC_TYPE_V (1 << 2) # define DWARF_NULL_LOC DWARF_LOC (0, 0) # define DWARF_IS_NULL_LOC(l) \ ({ dwarf_loc_t _l = (l); _l.val == 0 && _l.type == 0; }) # define DWARF_LOC(r, t) ((dwarf_loc_t) { .val = (r), .type = (t) }) # define DWARF_IS_REG_LOC(l) (((l).type & DWARF_LOC_TYPE_REG) != 0) # define DWARF_IS_FP_LOC(l) (((l).type & DWARF_LOC_TYPE_FP) != 0) -# define DWARF_REG_LOC(c,r) DWARF_LOC((r), DWARF_LOC_TYPE_REG) +# define DWARF_IS_V_LOC(l) (((l).type & DWARF_LOC_TYPE_V) != 0) # define DWARF_MEM_LOC(c,m) DWARF_LOC ((m), 0) +# define DWARF_REG_LOC(c,r) DWARF_LOC((r), DWARF_LOC_TYPE_REG) # define DWARF_FPREG_LOC(c,r) DWARF_LOC((r), (DWARF_LOC_TYPE_REG \ | DWARF_LOC_TYPE_FP)) +# define DWARF_VREG_LOC(c,r) DWARF_LOC((r), (DWARF_LOC_TYPE_REG \ + | DWARF_LOC_TYPE_V)) #endif /* !UNW_LOCAL_ONLY */ static inline int -dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) +dwarf_getvr (struct dwarf_cursor *c, dwarf_loc_t loc, unw_vreg_t * val) { + unw_word_t *valp = (unw_word_t *) val; + unw_word_t addr; + int ret; + if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; -//# warning fix me - abort (); + assert (DWARF_IS_V_LOC (loc)); + assert (!DWARF_IS_FP_LOC (loc)); + + if (DWARF_IS_REG_LOC (loc)) + return (*c->as->acc.access_vreg) (c->as, DWARF_GET_LOC (loc), + val, 0, c->as_arg); + + addr = DWARF_GET_LOC (loc); + + if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, valp, + 0, c->as_arg)) < 0) + return ret; + + return (*c->as->acc.access_mem) (c->as, addr + 8, valp + 1, 0, c->as_arg); +} + +static inline int +dwarf_putvr (struct dwarf_cursor *c, dwarf_loc_t loc, unw_vreg_t val) +{ + unw_word_t *valp = (unw_word_t *) & val; + unw_word_t addr; + int ret; + + if (DWARF_IS_NULL_LOC (loc)) + return -UNW_EBADREG; + + assert (DWARF_IS_V_LOC (loc)); + assert (!DWARF_IS_FP_LOC (loc)); + + if (DWARF_IS_REG_LOC (loc)) + return (*c->as->acc.access_vreg) (c->as, DWARF_GET_LOC (loc), + &val, 1, c->as_arg); + + addr = DWARF_GET_LOC (loc); + if ((ret = (*c->as->acc.access_mem) (c->as, addr + 0, valp, + 1, c->as_arg)) < 0) + return ret; + + return (*c->as->acc.access_mem) (c->as, addr + 8, valp + 1, 1, c->as_arg); +} + +static inline int +dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t * val) +{ + unw_word_t *valp = (unw_word_t *) val; + unw_word_t addr; + + if (DWARF_IS_NULL_LOC (loc)) + return -UNW_EBADREG; + + assert (DWARF_IS_FP_LOC (loc)); + assert (!DWARF_IS_V_LOC (loc)); + + if (DWARF_IS_REG_LOC (loc)) + return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc), + val, 0, c->as_arg); + + addr = DWARF_GET_LOC (loc); + return (*c->as->acc.access_mem) (c->as, addr + 0, valp, 0, c->as_arg); + } static inline int dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) { + unw_word_t *valp = (unw_word_t *) & val; + unw_word_t addr; + if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; -//# warning fix me - abort (); + assert (DWARF_IS_FP_LOC (loc)); + assert (!DWARF_IS_V_LOC (loc)); + + if (DWARF_IS_REG_LOC (loc)) + return (*c->as->acc.access_fpreg) (c->as, DWARF_GET_LOC (loc), + &val, 1, c->as_arg); + + addr = DWARF_GET_LOC (loc); + + return (*c->as->acc.access_mem) (c->as, addr + 0, valp, 1, c->as_arg); } static inline int -dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) +dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t * val) { if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; -// if (DWARF_IS_FP_LOC (loc)) -//# warning fix me -// abort (); + /* If a code-generator were to save a value of type unw_word_t in a + floating-point register, we would have to support this case. I + suppose it could happen with MMX registers, but does it really + happen? */ + assert (!DWARF_IS_FP_LOC (loc)); + assert (!DWARF_IS_V_LOC (loc)); if (DWARF_IS_REG_LOC (loc)) return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), val, @@ -142,9 +225,12 @@ if (DWARF_IS_NULL_LOC (loc)) return -UNW_EBADREG; -// if (DWARF_IS_FP_LOC (loc)) -//# warning fix me -// abort (); + /* If a code-generator were to save a value of type unw_word_t in a + floating-point register, we would have to support this case. I + suppose it could happen with MMX registers, but does it really + happen? */ + assert (!DWARF_IS_FP_LOC (loc)); + assert (!DWARF_IS_V_LOC (loc)); if (DWARF_IS_REG_LOC (loc)) return (*c->as->acc.access_reg) (c->as, DWARF_GET_LOC (loc), &val, @@ -154,6 +240,8 @@ 1, c->as_arg); } + + #define tdep_needs_initialization UNW_OBJ(needs_initialization) #define tdep_init UNW_OBJ(init) /* Platforms that support UNW_INFO_FORMAT_TABLE need to define @@ -161,9 +249,10 @@ #define tdep_search_unwind_table dwarf_search_unwind_table #define tdep_uc_addr UNW_ARCH_OBJ(uc_addr) #define tdep_get_elf_image UNW_ARCH_OBJ(get_elf_image) +#define tdep_get_func_addr UNW_ARCH_OBJ(get_func_addr) #define tdep_access_reg UNW_OBJ(access_reg) #define tdep_access_fpreg UNW_OBJ(access_fpreg) -#define tdep_fetch_proc_info_post UNW_OBJ(fetch_proc_info_post) +#define tdep_access_vreg UNW_OBJ(access_vreg) #ifdef UNW_LOCAL_ONLY # define tdep_find_proc_info(c,ip,n) \ @@ -178,27 +267,34 @@ # define tdep_put_unwind_info(as,pi,arg) \ (*(as)->acc.put_unwind_info)((as), (pi), (arg)) #endif -#define tdep_fetch_proc_info_post(c, ip, need_unwind_info) 0 + +extern int tdep_fetch_proc_info_post (struct dwarf_cursor *c, unw_word_t ip, + int need_unwind_info); #define tdep_get_as(c) ((c)->dwarf.as) #define tdep_get_as_arg(c) ((c)->dwarf.as_arg) #define tdep_get_ip(c) ((c)->dwarf.ip) -#define tdep_big_endian(as) 0 +#define tdep_big_endian(as) 1 extern int tdep_needs_initialization; extern void tdep_init (void); extern int tdep_search_unwind_table (unw_addr_space_t as, unw_word_t ip, - unw_dyn_info_t *di, unw_proc_info_t *pi, + unw_dyn_info_t * di, + unw_proc_info_t * pi, int need_unwind_info, void *arg); -extern void *tdep_uc_addr (ucontext_t *uc, int reg); +extern void *tdep_uc_addr (ucontext_t * uc, int reg); extern int tdep_get_elf_image (unw_addr_space_t as, struct elf_image *ei, pid_t pid, unw_word_t ip, unsigned long *segbase, unsigned long *mapoff, - void *arg); + void *arg); extern int tdep_access_reg (struct cursor *c, unw_regnum_t reg, - unw_word_t *valp, int write); + unw_word_t * valp, int write); extern int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, - unw_fpreg_t *valp, int write); + unw_fpreg_t * valp, int write); +extern int tdep_access_vreg (struct cursor *c, unw_regnum_t reg, + unw_vreg_t * valp, int write); + +extern int tdep_get_func_addr (unw_addr_space_t as, unw_word_t addr, unw_word_t *func_addr, void *arg); #endif /* PPC64_LIBUNWIND_I_H */ Index: frysk/frysk-imports/libunwind/src/Makefile.am =================================================================== --- frysk.orig/frysk-imports/libunwind/src/Makefile.am 2007-04-25 12:39:11.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/Makefile.am 2007-05-18 14:06:15.000000000 -0300 @@ -42,7 +42,8 @@ # libraries: libunwind_la_SOURCES_common = \ $(libunwind_la_SOURCES_os) \ - mi/init.c mi/flush_cache.c mi/mempool.c mi/strerror.c + mi/init.c mi/flush_cache.c mi/mempool.c \ + mi/strerror.c # List of arch-independent files needed by generic library (libunwind-$ARCH): libunwind_la_SOURCES_generic = \ @@ -52,7 +53,8 @@ mi/Gput_dynamic_unwind_info.c mi/Gdestroy_addr_space.c \ mi/Gget_reg.c mi/Gset_reg.c \ mi/Gget_fpreg.c mi/Gset_fpreg.c \ - mi/Gset_caching_policy.c mi/Gget_unwind_table.c + mi/Gget_vreg.c mi/Gset_vreg.c \ + mi/Gset_caching_policy.c # List of arch-independent files needed by local-only library (libunwind): libunwind_la_SOURCES_local = \ @@ -212,21 +214,20 @@ $(libunwind_la_SOURCES_local) \ $(dwarf_SOURCES_local) \ dwarf/Lfind_proc_info-lsb.c \ - ppc64/Lcreate_addr_space.c ppc64/Lget_proc_info.c \ - ppc64/Lget_save_loc.c ppc64/Lglobal.c ppc64/Linit.c \ - ppc64/Linit_local.c ppc64/Linit_remote.c \ - ppc64/Lis_signal_frame.c ppc64/Lregs.c ppc64/Lresume.c \ - ppc64/Lstep.c + ppc64/Lglobal.c ppc64/Linit.c ppc64/Linit_local.c \ + ppc64/Lis_signal_frame.c ppc64/Lget_proc_info.c ppc64/Lregs.c \ + ppc64/Lresume.c ppc64/Lstep.c ppc64/Lfetch_proc_info_post.c # The list of files that go into libunwind-ppc64: libunwind_ppc64_la_SOURCES_ppc64 = $(libunwind_la_SOURCES_ppc64_common) \ $(libunwind_la_SOURCES_generic) \ $(dwarf_SOURCES_generic) \ - dwarf/Gfind_proc_info-lsb.c \ - ppc64/Gcreate_addr_space.c ppc64/Gget_proc_info.c \ - ppc64/Gget_save_loc.c ppc64/Gglobal.c ppc64/Ginit.c \ - ppc64/Ginit_local.c ppc64/Ginit_remote.c \ - ppc64/Gis_signal_frame.c ppc64/Gregs.c ppc64/Gresume.c \ + dwarf/Gfind_proc_info-lsb.c \ + ppc64/Gcreate_addr_space.c ppc64/Gfetch_proc_info_post.c \ + ppc64/Gget_func_addr.c ppc64/Gget_proc_info.c \ + ppc64/Gget_save_loc.c ppc64/Gglobal.c \ + ppc64/Ginit.c ppc64/Ginit_local.c ppc64/Ginit_remote.c \ + ppc64/Gis_signal_frame.c ppc64/Gregs.c ppc64/Gresume.c \ ppc64/Gstep.c if REMOTE_ONLY Index: frysk/frysk-imports/libunwind/src/dwarf/Gfde.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/dwarf/Gfde.c 2007-03-12 12:26:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/dwarf/Gfde.c 2007-05-18 13:13:55.000000000 -0300 @@ -240,7 +240,7 @@ *addrp = fde_end_addr = addr + u32val; cie_offset_addr = addr; - if ((ret = dwarf_reads32 (as, a, &addr, &cie_offset, arg)) < 0) + if ((ret = dwarf_readu32 (as, a, &addr, &cie_offset, arg)) < 0) return ret; if (is_cie_id (cie_offset)) @@ -265,7 +265,7 @@ *addrp = fde_end_addr = addr + u64val; cie_offset_addr = addr; - if ((ret = dwarf_reads64 (as, a, &addr, &cie_offset, arg)) < 0) + if ((ret = dwarf_readu64 (as, a, &addr, &cie_offset, arg)) < 0) return ret; if (is_cie_id (cie_offset)) Index: frysk/frysk-imports/libunwind/src/elfxx.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/elfxx.c 2007-03-12 12:26:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/elfxx.c 2007-05-18 13:13:55.000000000 -0300 @@ -39,16 +39,16 @@ static int -elf_w (lookup_symbol) (unw_word_t ip, struct elf_image *ei, +elf_w (lookup_symbol) (unw_addr_space_t as, unw_word_t ip, struct elf_image *ei, Elf_W (Addr) load_offset, - char *buf, size_t buf_len, unw_word_t *offp) + char *buf, size_t buf_len, unw_word_t *offp, void *arg) { size_t syment_size; Elf_W (Ehdr) *ehdr = ei->image; Elf_W (Sym) *sym, *symtab, *symtab_end; Elf_W (Off) soff, str_soff; Elf_W (Shdr) *shdr, *str_shdr; - Elf_W (Addr) val, min_dist = ~(Elf_W (Addr))0; + Elf_W (Addr) val, func_addr, min_dist = ~(Elf_W (Addr))0; Elf_W (Addr) val_max_below = 0; int i, ret = 0; char *strtab; @@ -107,7 +107,13 @@ val = sym->st_value; if (sym->st_shndx != SHN_ABS) val += load_offset; - + /* On some architectures, val doesn't point directly at + the function, but to a function descriptor instead. + This is true of PowerPC and maybe x86_64 (?) */ + ret = tdep_get_func_addr(as, val, &func_addr, arg); + if (ret != 0) + continue; + val = func_addr; if (ip < val) continue; if (val + sym->st_size < val_max_below) @@ -209,7 +215,7 @@ break; } - ret = elf_w (lookup_symbol) (ip, &ei, load_offset, buf, buf_len, offp); + ret = elf_w (lookup_symbol) (as, ip, &ei, load_offset, buf, buf_len, offp, arg); munmap (ei.image, ei.size); ei.image = NULL; Index: frysk/frysk-imports/libunwind/src/mi/Gget_unwind_table.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/mi/Gget_unwind_table.c 2007-04-25 12:39:11.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/mi/Gget_unwind_table.c 2007-05-18 13:13:55.000000000 -0300 @@ -73,7 +73,7 @@ Debug(99, "Traversed headers\n"); if (!ptxt || !peh_hdr) - return -1; + return -UNW_ENOINFO; if (pdyn) { @@ -140,7 +140,7 @@ *val = *(unw_word_t *) addr; Debug (16, "mem[%x] -> %x\n", addr, *val); } - Debug(99, "leaving local_access_mem"); + Debug(99, "leaving local_access_mem\n"); return 0; } @@ -149,8 +149,7 @@ unw_addr_space_t temp_local_addr_space = unw_create_addr_space(&temp_local_accessors, 0); - Debug(99, "is local address space null? %d", temp_local_addr_space == NULL); - /* (Optionally) read eh_frame_ptr: */ + /* (Optionally) read eh_frame_ptr: */ if ((ret = dwarf_read_encoded_pointer (temp_local_addr_space, &temp_local_accessors, &addr, hdr->eh_frame_ptr_enc, pi, &eh_frame_start, NULL)) < 0) Index: frysk/frysk-imports/libunwind/src/mi/Gget_vreg.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/mi/Gget_vreg.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,34 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2004-2005 Hewlett-Packard Co + Contributed by David Mosberger-Tang + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "libunwind_i.h" + +PROTECTED int +unw_get_vreg (unw_cursor_t *cursor, int regnum, unw_vreg_t *valp) +{ + struct cursor *c = (struct cursor *) cursor; + + return tdep_access_vreg (c, regnum, valp, 0); +} Index: frysk/frysk-imports/libunwind/src/mi/Gset_vreg.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/mi/Gset_vreg.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,34 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2004-2005 Hewlett-Packard Co + Contributed by David Mosberger-Tang + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "libunwind_i.h" + +PROTECTED int +unw_set_vreg (unw_cursor_t *cursor, int regnum, unw_vreg_t val) +{ + struct cursor *c = (struct cursor *) cursor; + + return tdep_access_vreg (c, regnum, &val, 1); +} Index: frysk/frysk-imports/libunwind/src/mi/mempool.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/mi/mempool.c 2007-03-21 14:37:45.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/mi/mempool.c 2007-05-18 13:13:55.000000000 -0300 @@ -24,6 +24,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "libunwind_i.h" +#include "mempool.h" #define MAX_ALIGN (sizeof (long double)) Index: frysk/frysk-imports/libunwind/src/ppc64/Gfetch_proc_info_post.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/Gfetch_proc_info_post.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,51 @@ +/* libunwind - a platform-independent unwind library + Copyright (c) 2006 Hewlett-Packard Development Company, L.P. + Contributed by Jan Kratochvil + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +#include "libunwind_i.h" + +HIDDEN int +tdep_fetch_proc_info_post (struct dwarf_cursor *c, unw_word_t ip, int need_unwind_info) +{ + struct cursor *cursor = (struct cursor *) c; + + /* Should happen only if `!need_unwind_info'. */ + if (!c->pi_valid) + return 0; + /* Should happen only if `!need_unwind_info'. */ + if (!c->pi.unwind_info) + return 0; + + /* Reset the value for this frame. */ + cursor->sigcontext_format = PPC64_SCF_NONE; + + /* Normal non-signal frames case. */ + if (!((struct dwarf_cie_info *) c->pi.unwind_info)->signal_frame) + return 0; + + cursor->sigcontext_format = PPC64_SCF_LINUX_RT_SIGFRAME; + cursor->sigcontext_addr = c->cfa; + + return 0; +} Index: frysk/frysk-imports/libunwind/src/ppc64/Gget_func_addr.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/Gget_func_addr.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,60 @@ +/* libunwind - a platform-independent unwind library + Copyright (C) 2002, 2004 Hewlett-Packard Co + Contributed by David Mosberger-Tang + +This file is part of libunwind. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + +/* This module was contributed by Corey Ashford cjashfor@us.ibm.com */ + +/* func_descr_t is defined in /usr/include/asm-ppc64/types.h, but is +visible only to kernel code. Let's use the same definition here, copied +from that .h file. If the definitiion in the above .h file changes, the +definition below must be changed to match it. */ + +typedef struct +{ + unsigned long entry; + unsigned long toc; + unsigned long env; +} func_descr_t; + +#include "unwind_i.h" + +int +tdep_get_func_addr (unw_addr_space_t as, unw_word_t addr, + unw_word_t *func_addr, void *arg) +{ + func_descr_t dummy; + unw_word_t offset; + unw_accessors_t *a; + + a = unw_get_accessors (as); + + /* + * This really is a fixed offset of zero, so this code is here in the + * event that someone decides to change the position of the entry + * component within the func_descr_t structure. (very unlikely) + */ + offset = ((void *) &dummy.entry - (void *) &dummy); + + return (a->access_mem) (as, addr + offset, func_addr, 0, arg) < 0; +} Index: frysk/frysk-imports/libunwind/src/ppc64/Gglobal.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Gglobal.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Gglobal.c 2007-05-18 14:15:48.000000000 -0300 @@ -1,10 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (c) 2003, 2005 Hewlett-Packard Development Company, L.P. - Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly (or made empty stubs) for - building frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. + Contributed by Corey Ashford This file is part of libunwind. @@ -33,42 +30,128 @@ HIDDEN pthread_mutex_t ppc64_lock = PTHREAD_MUTEX_INITIALIZER; HIDDEN int tdep_needs_initialization = 1; -/* See comments for svr4_dbx_register_map[] in gcc/config/i386/i386.c. */ - +/* The API register numbers are exactly the same as the .eh_frame + registers, for now at least. */ uint8_t dwarf_to_unw_regnum_map[DWARF_REGNUM_MAP_LENGTH] = { - UNW_PPC64_R0, - UNW_PPC64_R1, - UNW_PPC64_R2, - UNW_PPC64_R3, - UNW_PPC64_R4, - UNW_PPC64_R5, - UNW_PPC64_R6, - UNW_PPC64_R7, - UNW_PPC64_R8, - UNW_PPC64_R9, - UNW_PPC64_R10, - UNW_PPC64_R11, - UNW_PPC64_R12, - UNW_PPC64_R13, - UNW_PPC64_R14, - UNW_PPC64_R15, - UNW_PPC64_R16, - UNW_PPC64_R17, - UNW_PPC64_R18, - UNW_PPC64_R19, - UNW_PPC64_R20, - UNW_PPC64_R21, - UNW_PPC64_R22, - UNW_PPC64_R23, - UNW_PPC64_R24, - UNW_PPC64_R25, - UNW_PPC64_R26, - UNW_PPC64_R27, - UNW_PPC64_R28, - UNW_PPC64_R29, - UNW_PPC64_R30, - UNW_PPC64_R31 + [UNW_PPC64_R0]=UNW_PPC64_R0, + [UNW_PPC64_R1]=UNW_PPC64_R1, + [UNW_PPC64_R2]=UNW_PPC64_R2, + [UNW_PPC64_R3]=UNW_PPC64_R3, + [UNW_PPC64_R4]=UNW_PPC64_R4, + [UNW_PPC64_R5]=UNW_PPC64_R5, + [UNW_PPC64_R6]=UNW_PPC64_R6, + [UNW_PPC64_R7]=UNW_PPC64_R7, + [UNW_PPC64_R8]=UNW_PPC64_R8, + [UNW_PPC64_R9]=UNW_PPC64_R9, + [UNW_PPC64_R10]=UNW_PPC64_R10, + [UNW_PPC64_R11]=UNW_PPC64_R11, + [UNW_PPC64_R12]=UNW_PPC64_R12, + [UNW_PPC64_R13]=UNW_PPC64_R13, + [UNW_PPC64_R14]=UNW_PPC64_R14, + [UNW_PPC64_R15]=UNW_PPC64_R15, + [UNW_PPC64_R16]=UNW_PPC64_R16, + [UNW_PPC64_R17]=UNW_PPC64_R17, + [UNW_PPC64_R18]=UNW_PPC64_R18, + [UNW_PPC64_R19]=UNW_PPC64_R19, + [UNW_PPC64_R20]=UNW_PPC64_R20, + [UNW_PPC64_R21]=UNW_PPC64_R21, + [UNW_PPC64_R22]=UNW_PPC64_R22, + [UNW_PPC64_R23]=UNW_PPC64_R23, + [UNW_PPC64_R24]=UNW_PPC64_R24, + [UNW_PPC64_R25]=UNW_PPC64_R25, + [UNW_PPC64_R26]=UNW_PPC64_R26, + [UNW_PPC64_R27]=UNW_PPC64_R27, + [UNW_PPC64_R28]=UNW_PPC64_R28, + [UNW_PPC64_R29]=UNW_PPC64_R29, + [UNW_PPC64_R30]=UNW_PPC64_R30, + [UNW_PPC64_R31]=UNW_PPC64_R31, + + [UNW_PPC64_F0]=UNW_PPC64_F0, + [UNW_PPC64_F1]=UNW_PPC64_F1, + [UNW_PPC64_F2]=UNW_PPC64_F2, + [UNW_PPC64_F3]=UNW_PPC64_F3, + [UNW_PPC64_F4]=UNW_PPC64_F4, + [UNW_PPC64_F5]=UNW_PPC64_F5, + [UNW_PPC64_F6]=UNW_PPC64_F6, + [UNW_PPC64_F7]=UNW_PPC64_F7, + [UNW_PPC64_F8]=UNW_PPC64_F8, + [UNW_PPC64_F9]=UNW_PPC64_F9, + [UNW_PPC64_F10]=UNW_PPC64_F10, + [UNW_PPC64_F11]=UNW_PPC64_F11, + [UNW_PPC64_F12]=UNW_PPC64_F12, + [UNW_PPC64_F13]=UNW_PPC64_F13, + [UNW_PPC64_F14]=UNW_PPC64_F14, + [UNW_PPC64_F15]=UNW_PPC64_F15, + [UNW_PPC64_F16]=UNW_PPC64_F16, + [UNW_PPC64_F17]=UNW_PPC64_F17, + [UNW_PPC64_F18]=UNW_PPC64_F18, + [UNW_PPC64_F19]=UNW_PPC64_F19, + [UNW_PPC64_F20]=UNW_PPC64_F20, + [UNW_PPC64_F21]=UNW_PPC64_F21, + [UNW_PPC64_F22]=UNW_PPC64_F22, + [UNW_PPC64_F23]=UNW_PPC64_F23, + [UNW_PPC64_F24]=UNW_PPC64_F24, + [UNW_PPC64_F25]=UNW_PPC64_F25, + [UNW_PPC64_F26]=UNW_PPC64_F26, + [UNW_PPC64_F27]=UNW_PPC64_F27, + [UNW_PPC64_F28]=UNW_PPC64_F28, + [UNW_PPC64_F29]=UNW_PPC64_F29, + [UNW_PPC64_F30]=UNW_PPC64_F30, + [UNW_PPC64_F31]=UNW_PPC64_F31, + + [UNW_PPC64_LR]=UNW_PPC64_LR, + [UNW_PPC64_CTR]=UNW_PPC64_CTR, + [UNW_PPC64_ARG_POINTER]=UNW_PPC64_ARG_POINTER, + + [UNW_PPC64_CR0]=UNW_PPC64_CR0, + [UNW_PPC64_CR1]=UNW_PPC64_CR1, + [UNW_PPC64_CR2]=UNW_PPC64_CR2, + [UNW_PPC64_CR3]=UNW_PPC64_CR3, + [UNW_PPC64_CR4]=UNW_PPC64_CR4, + [UNW_PPC64_CR5]=UNW_PPC64_CR5, + [UNW_PPC64_CR6]=UNW_PPC64_CR6, + [UNW_PPC64_CR7]=UNW_PPC64_CR7, + + [UNW_PPC64_XER]=UNW_PPC64_XER, + + [UNW_PPC64_V0]=UNW_PPC64_V0, + [UNW_PPC64_V1]=UNW_PPC64_V1, + [UNW_PPC64_V2]=UNW_PPC64_V2, + [UNW_PPC64_V3]=UNW_PPC64_V3, + [UNW_PPC64_V4]=UNW_PPC64_V4, + [UNW_PPC64_V5]=UNW_PPC64_V5, + [UNW_PPC64_V6]=UNW_PPC64_V6, + [UNW_PPC64_V7]=UNW_PPC64_V7, + [UNW_PPC64_V8]=UNW_PPC64_V8, + [UNW_PPC64_V9]=UNW_PPC64_V9, + [UNW_PPC64_V10]=UNW_PPC64_V10, + [UNW_PPC64_V11]=UNW_PPC64_V11, + [UNW_PPC64_V12]=UNW_PPC64_V12, + [UNW_PPC64_V13]=UNW_PPC64_V13, + [UNW_PPC64_V14]=UNW_PPC64_V14, + [UNW_PPC64_V15]=UNW_PPC64_V15, + [UNW_PPC64_V16]=UNW_PPC64_V16, + [UNW_PPC64_V17]=UNW_PPC64_V17, + [UNW_PPC64_V18]=UNW_PPC64_V18, + [UNW_PPC64_V19]=UNW_PPC64_V19, + [UNW_PPC64_V20]=UNW_PPC64_V20, + [UNW_PPC64_V21]=UNW_PPC64_V21, + [UNW_PPC64_V22]=UNW_PPC64_V22, + [UNW_PPC64_V23]=UNW_PPC64_V23, + [UNW_PPC64_V24]=UNW_PPC64_V24, + [UNW_PPC64_V25]=UNW_PPC64_V25, + [UNW_PPC64_V26]=UNW_PPC64_V26, + [UNW_PPC64_V27]=UNW_PPC64_V27, + [UNW_PPC64_V28]=UNW_PPC64_V28, + [UNW_PPC64_V29]=UNW_PPC64_V29, + [UNW_PPC64_V30]=UNW_PPC64_V30, + [UNW_PPC64_V31]=UNW_PPC64_V31, + + [UNW_PPC64_VRSAVE]=UNW_PPC64_VRSAVE, + [UNW_PPC64_VSCR]=UNW_PPC64_VSCR, + [UNW_PPC64_SPE_ACC]=UNW_PPC64_SPE_ACC, + [UNW_PPC64_SPEFSCR]=UNW_PPC64_SPEFSCR, }; HIDDEN void Index: frysk/frysk-imports/libunwind/src/ppc64/Ginit.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Ginit.c 2007-04-04 17:41:07.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Ginit.c 2007-05-18 14:18:20.000000000 -0300 @@ -1,10 +1,7 @@ /* libunwind - a platform-independent unwind library - Copyright (C) 2002 Hewlett-Packard Co - Contributed by David Mosberger-Tang + Copyright (C) 2002, 2004 Hewlett-Packard Co - Copied from src/x86_64/, modified slightly (or made empty stubs) for - building frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. +Contributed by Corey Ashford This file is part of libunwind. @@ -29,8 +26,8 @@ #include #include -#include +#include "ucontext_i.h" #include "unwind_i.h" #ifdef UNW_REMOTE_ONLY @@ -44,11 +41,52 @@ PROTECTED unw_addr_space_t unw_local_addr_space = &local_addr_space; -static inline void * + +#define PAGE_SIZE 4096 +#define PAGE_START(a) ((a) & ~(PAGE_SIZE-1)) + + +static void * uc_addr (ucontext_t *uc, int reg) { - /* XXX: empty stub. */ - return NULL; + void *addr; + + if ((unsigned) (reg - UNW_PPC64_R0) < 32) + addr = &uc->uc_mcontext.gp_regs[reg - UNW_PPC64_R0]; + + else if ((unsigned) (reg - UNW_PPC64_F0) < 32) + addr = &uc->uc_mcontext.fp_regs[reg - UNW_PPC64_F0]; + + else if ((unsigned) (reg - UNW_PPC64_V0) < 32) + addr = (uc->uc_mcontext.v_regs == 0) ? NULL : &uc->uc_mcontext.v_regs->vrregs[reg - UNW_PPC64_V0][0]; + + else + { + unsigned gregs_idx; + + switch (reg) + { + case UNW_PPC64_NIP: + gregs_idx = NIP_IDX; + break; + case UNW_PPC64_CTR: + gregs_idx = CTR_IDX; + break; + case UNW_PPC64_LR: + gregs_idx = LINK_IDX; + break; + case UNW_PPC64_XER: + gregs_idx = XER_IDX; + break; + case UNW_PPC64_CR0: + gregs_idx = CCR_IDX; + break; + default: + return NULL; + } + addr = &uc->uc_mcontext.gp_regs[gregs_idx]; + } + return addr; } # ifdef UNW_LOCAL_ONLY @@ -59,14 +97,10 @@ return uc_addr (uc, reg); } -# endif /* UNW_LOCAL_ONLY */ +# endif /* UNW_LOCAL_ONLY */ HIDDEN unw_dyn_info_list_t _U_dyn_info_list; -/* XXX fix me: there is currently no way to locate the dyn-info list - by a remote unwinder. On ia64, this is done via a special - unwind-table entry. Perhaps something similar can be done with - DWARF2 unwind info. */ static void put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) @@ -82,42 +116,124 @@ return 0; } -#define PAGE_SIZE 4096 -#define PAGE_START(a) ((a) & ~(PAGE_SIZE-1)) - -/* Cache of already validated addresses */ -#define NLGA 4 -static unw_word_t last_good_addr[NLGA]; -static int lga_victim; - static int -validate_mem (unw_word_t addr) +access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, + void *arg) { - /* XXX: empty stub. */ + if (write) + { + Debug (12, "mem[%lx] <- %lx\n", addr, *val); + *(unw_word_t *) addr = *val; + } + else + { + *val = *(unw_word_t *) addr; + Debug (12, "mem[%lx] -> %lx\n", addr, *val); + } return 0; } static int -access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, - void *arg) +access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, + int write, void *arg) { - /* XXX: empty stub. */ + unw_word_t *addr; + ucontext_t *uc = arg; + + if ((unsigned int) (reg - UNW_PPC64_F0) < 32) + goto badreg; + if ((unsigned int) (reg - UNW_PPC64_V0) < 32) + goto badreg; + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + *(unw_word_t *) addr = *val; + Debug (12, "%s <- %lx\n", unw_regname (reg), *val); + } + else + { + *val = *(unw_word_t *) addr; + Debug (12, "%s -> %lx\n", unw_regname (reg), *val); + } return 0; + +badreg: + Debug (1, "bad register number %u\n", reg); + return -UNW_EBADREG; } static int -access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, - void *arg) +access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, + int write, void *arg) { - /* XXX: empty stub. */ + ucontext_t *uc = arg; + unw_fpreg_t *addr; + + if ((unsigned) (reg - UNW_PPC64_F0) > 32) + goto badreg; + + if ((unsigned) (reg - UNW_PPC64_V0) < 32) + goto badreg; + + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + Debug (12, "%s <- %016Lf\n", unw_regname (reg), *val); + *(unw_fpreg_t *) addr = *val; + } + else + { + *val = *(unw_fpreg_t *) addr; + Debug (12, "%s -> %016Lf\n", unw_regname (reg), *val); + } + return 0; + +badreg: + Debug (1, "bad register number %u\n", reg); + /* attempt to access a non-preserved register */ return -UNW_EBADREG; } static int -access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, - int write, void *arg) +access_vreg (unw_addr_space_t as, unw_regnum_t reg, unw_vreg_t *val, + int write, void *arg) { - /* XXX: empty stub. */ + ucontext_t *uc = arg; + unw_fpreg_t *addr; + + if ((unsigned) (reg - UNW_PPC64_V0) > 32) + goto badreg; + + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + Debug (12, "%s <- %016lx.%016lx\n", + unw_regname (reg), val->halves[0], val->halves[1]); + memcpy (addr, val, sizeof (unw_vreg_t)); + } + else + { + memcpy (val, addr, sizeof (unw_vreg_t)); + Debug (12, "%s -> %016lx.%016lx\n", + unw_regname (reg), val->halves[0], val->halves[1]); + } + return 0; + +badreg: + Debug (1, "bad register number %u\n", reg); + /* attempt to access a non-preserved register */ return -UNW_EBADREG; } @@ -140,12 +256,11 @@ local_addr_space.acc.access_mem = access_mem; local_addr_space.acc.access_reg = access_reg; local_addr_space.acc.access_fpreg = access_fpreg; + local_addr_space.acc.access_vreg = access_vreg; local_addr_space.acc.resume = ppc64_local_resume; local_addr_space.acc.get_proc_name = get_static_proc_name; unw_flush_cache (&local_addr_space, 0, 0); - bzero(last_good_addr, sizeof(unw_word_t) * NLGA); - lga_victim = 0; } #endif /* !UNW_REMOTE_ONLY */ Index: frysk/frysk-imports/libunwind/src/ppc64/Ginit.cpp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/Ginit.cpp 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,7154 @@ +# 1 "Ginit.c" +# 1 "" +# 1 "" +# 1 "Ginit.c" +# 26 "Ginit.c" +#include +# 26 "Ginit.c" +# 1 "/usr/include/stdlib.h" 1 3 4 +# 25 "/usr/include/stdlib.h" 3 4 +#include +# 25 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/features.h" 1 3 4 +# 323 "/usr/include/features.h" 3 4 +#include +# 323 "/usr/include/features.h" 3 4 +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 313 "/usr/include/sys/cdefs.h" 3 4 +#include +# 313 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 314 "/usr/include/sys/cdefs.h" 2 3 4 +# 324 "/usr/include/features.h" 2 3 4 +# 346 "/usr/include/features.h" 3 4 +#include +# 346 "/usr/include/features.h" 3 4 +# 1 "/usr/include/gnu/stubs.h" 1 3 4 + + + +#include +# 4 "/usr/include/gnu/stubs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 5 "/usr/include/gnu/stubs.h" 2 3 4 + + +#include +# 7 "/usr/include/gnu/stubs.h" 3 4 +# 1 "/usr/include/gnu/stubs-32.h" 1 3 4 +# 8 "/usr/include/gnu/stubs.h" 2 3 4 +# 347 "/usr/include/features.h" 2 3 4 +# 26 "/usr/include/stdlib.h" 2 3 4 + + + + + + + +#include +# 33 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 214 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 3 4 +typedef unsigned int size_t; +# 326 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 3 4 +typedef long int wchar_t; +# 34 "/usr/include/stdlib.h" 2 3 4 + + + + + + + + +#include +# 42 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/waitflags.h" 1 3 4 +# 43 "/usr/include/stdlib.h" 2 3 4 +#include +# 43 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/bits/waitstatus.h" 1 3 4 +# 65 "/usr/include/bits/waitstatus.h" 3 4 +#include +# 65 "/usr/include/bits/waitstatus.h" 3 4 +# 1 "/usr/include/endian.h" 1 3 4 +# 22 "/usr/include/endian.h" 3 4 +#include +# 37 "/usr/include/endian.h" 3 4 +#include +# 37 "/usr/include/endian.h" 3 4 +# 1 "/usr/include/bits/endian.h" 1 3 4 +# 38 "/usr/include/endian.h" 2 3 4 +# 66 "/usr/include/bits/waitstatus.h" 2 3 4 + +union wait + { + int w_status; + struct + { + + + + + + + + unsigned int:16; + unsigned int __w_retcode:8; + unsigned int __w_coredump:1; + unsigned int __w_termsig:7; + + } __wait_terminated; + struct + { + + + + + + + unsigned int:16; + unsigned int __w_stopsig:8; + unsigned int __w_stopval:8; + + } __wait_stopped; + }; +# 44 "/usr/include/stdlib.h" 2 3 4 +# 68 "/usr/include/stdlib.h" 3 4 +typedef union + { + union wait *__uptr; + int *__iptr; + } __WAIT_STATUS __attribute__ ((__transparent_union__)); +# 96 "/usr/include/stdlib.h" 3 4 + + +typedef struct + { + int quot; + int rem; + } div_t; + + + +typedef struct + { + long int quot; + long int rem; + } ldiv_t; + + + + + + + +__extension__ typedef struct + { + long long int quot; + long long int rem; + } lldiv_t; + + +# 140 "/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ; + + + + +extern double atof (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern int atoi (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ extern long long int atoll (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern double strtod (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern float strtof (__const char *__restrict __nptr, + char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern long double strtold (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern long int strtol (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern unsigned long int strtoul (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +__extension__ +extern long long int strtoq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtouq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ +extern long long int strtoll (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtoull (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +# 236 "/usr/include/stdlib.h" 3 4 +#include +# 236 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/xlocale.h" 1 3 4 +# 28 "/usr/include/xlocale.h" 3 4 +typedef struct __locale_struct +{ + + struct locale_data *__locales[13]; + + + const unsigned short int *__ctype_b; + const int *__ctype_tolower; + const int *__ctype_toupper; + + + const char *__names[13]; +} *__locale_t; +# 237 "/usr/include/stdlib.h" 2 3 4 + + + +extern long int strtol_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +extern unsigned long int strtoul_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +__extension__ +extern long long int strtoll_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +__extension__ +extern unsigned long long int strtoull_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +extern double strtod_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + +extern float strtof_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + +extern long double strtold_l (__const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + + + + + + +extern double __strtod_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern float __strtof_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern long double __strtold_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int __strtol_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +__extension__ +extern long long int __strtoll_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +__extension__ +extern unsigned long long int __strtoull_internal (__const char * + __restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 429 "/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ; + + +extern long int a64l (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + +#include +# 438 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/sys/types.h" 1 3 4 +# 27 "/usr/include/sys/types.h" 3 4 +#include + + + +#include +# 31 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/bits/types.h" 1 3 4 +# 27 "/usr/include/bits/types.h" 3 4 +#include +#include +# 28 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 29 "/usr/include/bits/types.h" 2 3 4 + + +#include +# 31 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 32 "/usr/include/bits/types.h" 2 3 4 + + +typedef unsigned char __u_char; +typedef unsigned short int __u_short; +typedef unsigned int __u_int; +typedef unsigned long int __u_long; + + +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef signed short int __int16_t; +typedef unsigned short int __uint16_t; +typedef signed int __int32_t; +typedef unsigned int __uint32_t; + + + + +__extension__ typedef signed long long int __int64_t; +__extension__ typedef unsigned long long int __uint64_t; + + + + + + + +__extension__ typedef long long int __quad_t; +__extension__ typedef unsigned long long int __u_quad_t; +# 134 "/usr/include/bits/types.h" 3 4 +#include +# 134 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/typesizes.h" 1 3 4 +# 135 "/usr/include/bits/types.h" 2 3 4 + + +__extension__ typedef __u_quad_t __dev_t; +__extension__ typedef unsigned int __uid_t; +__extension__ typedef unsigned int __gid_t; +__extension__ typedef unsigned long int __ino_t; +__extension__ typedef __u_quad_t __ino64_t; +__extension__ typedef unsigned int __mode_t; +__extension__ typedef unsigned int __nlink_t; +__extension__ typedef long int __off_t; +__extension__ typedef __quad_t __off64_t; +__extension__ typedef int __pid_t; +__extension__ typedef struct { int __val[2]; } __fsid_t; +__extension__ typedef long int __clock_t; +__extension__ typedef unsigned long int __rlim_t; +__extension__ typedef __u_quad_t __rlim64_t; +__extension__ typedef unsigned int __id_t; +__extension__ typedef long int __time_t; +__extension__ typedef unsigned int __useconds_t; +__extension__ typedef long int __suseconds_t; + +__extension__ typedef int __daddr_t; +__extension__ typedef long int __swblk_t; +__extension__ typedef int __key_t; + + +__extension__ typedef int __clockid_t; + + +__extension__ typedef void * __timer_t; + + +__extension__ typedef long int __blksize_t; + + + + +__extension__ typedef long int __blkcnt_t; +__extension__ typedef __quad_t __blkcnt64_t; + + +__extension__ typedef unsigned long int __fsblkcnt_t; +__extension__ typedef __u_quad_t __fsblkcnt64_t; + + +__extension__ typedef unsigned long int __fsfilcnt_t; +__extension__ typedef __u_quad_t __fsfilcnt64_t; + +__extension__ typedef int __ssize_t; + + + +typedef __off64_t __loff_t; +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + + +__extension__ typedef int __intptr_t; + + +__extension__ typedef unsigned int __socklen_t; +# 32 "/usr/include/sys/types.h" 2 3 4 + + + +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; + + + + +typedef __loff_t loff_t; + + + +typedef __ino_t ino_t; + + + + + + +typedef __ino64_t ino64_t; + + + + +typedef __dev_t dev_t; + + + + +typedef __gid_t gid_t; + + + + +typedef __mode_t mode_t; + + + + +typedef __nlink_t nlink_t; + + + + +typedef __uid_t uid_t; + + + + + +typedef __off_t off_t; + + + + + + +typedef __off64_t off64_t; + + + + +typedef __pid_t pid_t; + + + + +typedef __id_t id_t; + + + + +typedef __ssize_t ssize_t; + + + + + +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; + + + + + +typedef __key_t key_t; +# 133 "/usr/include/sys/types.h" 3 4 +#include +# 133 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 57 "/usr/include/time.h" 3 4 +#include + + + +typedef __clock_t clock_t; + + + +# 73 "/usr/include/time.h" 3 4 +#include + + + +typedef __time_t time_t; + + + +# 90 "/usr/include/time.h" 3 4 +#include + + +typedef __clockid_t clockid_t; +# 102 "/usr/include/time.h" 3 4 +#include + + +typedef __timer_t timer_t; +# 134 "/usr/include/sys/types.h" 2 3 4 + + + +typedef __useconds_t useconds_t; + + + +typedef __suseconds_t suseconds_t; + + + + + +#include +# 147 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 148 "/usr/include/sys/types.h" 2 3 4 + + + +typedef unsigned long int ulong; +typedef unsigned short int ushort; +typedef unsigned int uint; +# 195 "/usr/include/sys/types.h" 3 4 +typedef int int8_t __attribute__ ((__mode__ (__QI__))); +typedef int int16_t __attribute__ ((__mode__ (__HI__))); +typedef int int32_t __attribute__ ((__mode__ (__SI__))); +typedef int int64_t __attribute__ ((__mode__ (__DI__))); + + +typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); +typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); +typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); +typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); + +typedef int register_t __attribute__ ((__mode__ (__word__))); +# 217 "/usr/include/sys/types.h" 3 4 +#include + + +#include +# 220 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/sys/select.h" 1 3 4 +# 25 "/usr/include/sys/select.h" 3 4 +#include + + +#include + + +#include +# 31 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/select.h" 1 3 4 +# 32 "/usr/include/sys/select.h" 2 3 4 + + +#include +# 34 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 23 "/usr/include/bits/sigset.h" 3 4 +typedef int __sig_atomic_t; + + + + +typedef struct + { + unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; + } __sigset_t; +# 35 "/usr/include/sys/select.h" 2 3 4 + + + +typedef __sigset_t sigset_t; + + + + + +#include +# 44 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 117 "/usr/include/time.h" 3 4 +#include + + + +struct timespec + { + __time_t tv_sec; + long int tv_nsec; + }; +# 45 "/usr/include/sys/select.h" 2 3 4 + +#include +# 46 "/usr/include/sys/select.h" 3 4 +# 1 "/usr/include/bits/time.h" 1 3 4 +# 65 "/usr/include/bits/time.h" 3 4 +#include + + + +struct timeval + { + __time_t tv_sec; + __suseconds_t tv_usec; + }; +# 47 "/usr/include/sys/select.h" 2 3 4 +# 55 "/usr/include/sys/select.h" 3 4 +typedef long int __fd_mask; +# 67 "/usr/include/sys/select.h" 3 4 +typedef struct + { + + + + __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; + + + + + + } fd_set; + + + + + + +typedef __fd_mask fd_mask; +# 99 "/usr/include/sys/select.h" 3 4 + +# 109 "/usr/include/sys/select.h" 3 4 +extern int select (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + struct timeval *__restrict __timeout); +# 121 "/usr/include/sys/select.h" 3 4 +extern int pselect (int __nfds, fd_set *__restrict __readfds, + fd_set *__restrict __writefds, + fd_set *__restrict __exceptfds, + const struct timespec *__restrict __timeout, + const __sigset_t *__restrict __sigmask); + + + +# 221 "/usr/include/sys/types.h" 2 3 4 + + +#include +# 223 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/sys/sysmacros.h" 1 3 4 +# 23 "/usr/include/sys/sysmacros.h" 3 4 +#include + + + + + +__extension__ +extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major, + unsigned int __minor) + __attribute__ ((__nothrow__)); + + +__extension__ extern __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev) +{ + return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); +} + +__extension__ extern __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev) +{ + return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); +} + +__extension__ extern __inline unsigned long long int +__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) +{ + return ((__minor & 0xff) | ((__major & 0xfff) << 8) + | (((unsigned long long int) (__minor & ~0xff)) << 12) + | (((unsigned long long int) (__major & ~0xfff)) << 32)); +} +# 224 "/usr/include/sys/types.h" 2 3 4 + + + + +typedef __blksize_t blksize_t; + + + + + + +typedef __blkcnt_t blkcnt_t; + + + +typedef __fsblkcnt_t fsblkcnt_t; + + + +typedef __fsfilcnt_t fsfilcnt_t; +# 262 "/usr/include/sys/types.h" 3 4 +typedef __blkcnt64_t blkcnt64_t; +typedef __fsblkcnt64_t fsblkcnt64_t; +typedef __fsfilcnt64_t fsfilcnt64_t; + + + + + +#include +# 270 "/usr/include/sys/types.h" 3 4 +# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 +# 24 "/usr/include/bits/pthreadtypes.h" 3 4 +#include +# 24 "/usr/include/bits/pthreadtypes.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 25 "/usr/include/bits/pthreadtypes.h" 2 3 4 +# 51 "/usr/include/bits/pthreadtypes.h" 3 4 +typedef unsigned long int pthread_t; + + +typedef union +{ + char __size[36]; + long int __align; +} pthread_attr_t; +# 68 "/usr/include/bits/pthreadtypes.h" 3 4 +typedef struct __pthread_internal_slist +{ + struct __pthread_internal_slist *__next; +} __pthread_slist_t; + + + + + +typedef union +{ + struct __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; + + + + + + int __kind; + + + + + + unsigned int __nusers; + __extension__ union + { + int __spins; + __pthread_slist_t __list; + }; + + } __data; + char __size[24]; + long int __align; +} pthread_mutex_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + + + + +typedef union +{ +# 171 "/usr/include/bits/pthreadtypes.h" 3 4 + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + + + unsigned int __flags; + int __writer; + } __data; + + char __size[32]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[20]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 271 "/usr/include/sys/types.h" 2 3 4 + + + +# 439 "/usr/include/stdlib.h" 2 3 4 + + + + + + +extern long int random (void) __attribute__ ((__nothrow__)); + + +extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +struct random_data + { + int32_t *fptr; + int32_t *rptr; + int32_t *state; + int rand_type; + int rand_deg; + int rand_sep; + int32_t *end_ptr; + }; + +extern int random_r (struct random_data *__restrict __buf, + int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int rand (void) __attribute__ ((__nothrow__)); + +extern void srand (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + +extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__)); + + + + + + + +extern double drand48 (void) __attribute__ ((__nothrow__)); +extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) __attribute__ ((__nothrow__)); +extern long int nrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) __attribute__ ((__nothrow__)); +extern long int jrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) __attribute__ ((__nothrow__)); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +struct drand48_data + { + unsigned short int __x[3]; + unsigned short int __old_x[3]; + unsigned short int __c; + unsigned short int __init; + unsigned long long int __a; + }; + + +extern int drand48_r (struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + + + +extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + + + + +extern void *realloc (void *__ptr, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + +extern void free (void *__ptr) __attribute__ ((__nothrow__)); + + + + +extern void cfree (void *__ptr) __attribute__ ((__nothrow__)); + + + +#include +# 612 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/include/alloca.h" 1 3 4 +# 22 "/usr/include/alloca.h" 3 4 +#include + + +#include +# 25 "/usr/include/alloca.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 26 "/usr/include/alloca.h" 2 3 4 + + + + + + + +extern void *alloca (size_t __size) __attribute__ ((__nothrow__)); + + + + + + +# 613 "/usr/include/stdlib.h" 2 3 4 + + + + +extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern char *__secure_getenv (__const char *__name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (__const char *__name, __const char *__value, int __replace) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__)); + + + + + + +extern int clearenv (void) __attribute__ ((__nothrow__)); +# 698 "/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 709 "/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 719 "/usr/include/stdlib.h" 3 4 +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 729 "/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + + + +extern int system (__const char *__command) ; + + + + + + + +extern char *canonicalize_file_name (__const char *__name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 757 "/usr/include/stdlib.h" 3 4 +extern char *realpath (__const char *__restrict __name, + char *__restrict __resolved) __attribute__ ((__nothrow__)) ; + + + + + + +typedef int (*__compar_fn_t) (__const void *, __const void *); + + +typedef __compar_fn_t comparison_fn_t; + + + + + + +extern void *bsearch (__const void *__key, __const void *__base, + size_t __nmemb, size_t __size, __compar_fn_t __compar) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + + + +extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + +__extension__ extern long long int llabs (long long int __x) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + + + + +extern div_t div (int __numer, int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + +# 822 "/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ; + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ; + + + + +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); + + + + + + + +extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int mbtowc (wchar_t *__restrict __pwc, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ; + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)); + +extern size_t wcstombs (char *__restrict __s, + __const wchar_t *__restrict __pwcs, size_t __n) + __attribute__ ((__nothrow__)); + + + + + + + + +extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 910 "/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *__const *__restrict __tokens, + char **__restrict __valuep) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + +extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) __attribute__ ((__nothrow__)); + + + +extern int unlockpt (int __fd) __attribute__ ((__nothrow__)); + + + + +extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 978 "/usr/include/stdlib.h" 3 4 + +# 27 "Ginit.c" 2 +#include +# 27 "Ginit.c" +# 1 "/usr/include/string.h" 1 3 4 +# 26 "/usr/include/string.h" 3 4 +#include + + + + + + +#include +# 33 "/usr/include/string.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 34 "/usr/include/string.h" 2 3 4 + + + + +extern void *memcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, __const void *__src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, + int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern void *rawmemchr (__const void *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memrchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, __const char *__restrict __src, + size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + +#include + + +extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, + __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + + + + +extern char *strdup (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (__const char *__string, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +# 165 "/usr/include/string.h" 3 4 + + +extern char *strchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + +extern char *strrchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strchrnul (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strcspn (__const char *__s, __const char *__reject) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strpbrk (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strstr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *strtok (char *__restrict __s, __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + +extern char *__strtok_r (char *__restrict __s, + __const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + +extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + + + + +extern char *strcasestr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memmem (__const void *__haystack, size_t __haystacklen, + __const void *__needle, size_t __needlelen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern size_t strlen (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strnlen (__const char *__string, size_t __maxlen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strerror (int __errnum) __attribute__ ((__nothrow__)); + +# 281 "/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + +extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern void bcopy (__const void *__src, void *__dest, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *index (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern char *rindex (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + +extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + +__extension__ extern int ffsll (long long int __ll) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int strcasecmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int strcasecmp_l (__const char *__s1, __const char *__s2, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern int strncasecmp_l (__const char *__s1, __const char *__s2, + size_t __n, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + + + + +extern char *strsep (char **__restrict __stringp, + __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strsignal (int __sig) __attribute__ ((__nothrow__)); + + +extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 426 "/usr/include/string.h" 3 4 + +# 28 "Ginit.c" 2 + +#include "unwind_i.h" +# 29 "Ginit.c" +# 1 "unwind_i.h" 1 +# 33 "unwind_i.h" +#include +# 33 "unwind_i.h" +# 1 "/usr/include/memory.h" 1 3 4 +# 26 "/usr/include/memory.h" 3 4 +#include +# 34 "unwind_i.h" 2 +#include +# 34 "unwind_i.h" +# 1 "/usr/include/stdint.h" 1 3 4 +# 26 "/usr/include/stdint.h" 3 4 +#include +#include +# 27 "/usr/include/stdint.h" 3 4 +# 1 "/usr/include/bits/wchar.h" 1 3 4 +# 28 "/usr/include/stdint.h" 2 3 4 +#include +# 28 "/usr/include/stdint.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 29 "/usr/include/stdint.h" 2 3 4 +# 49 "/usr/include/stdint.h" 3 4 +typedef unsigned char uint8_t; +typedef unsigned short int uint16_t; + +typedef unsigned int uint32_t; + + + + + +__extension__ +typedef unsigned long long int uint64_t; + + + + + + +typedef signed char int_least8_t; +typedef short int int_least16_t; +typedef int int_least32_t; + + + +__extension__ +typedef long long int int_least64_t; + + + +typedef unsigned char uint_least8_t; +typedef unsigned short int uint_least16_t; +typedef unsigned int uint_least32_t; + + + +__extension__ +typedef unsigned long long int uint_least64_t; + + + + + + +typedef signed char int_fast8_t; + + + + + +typedef int int_fast16_t; +typedef int int_fast32_t; +__extension__ +typedef long long int int_fast64_t; + + + +typedef unsigned char uint_fast8_t; + + + + + +typedef unsigned int uint_fast16_t; +typedef unsigned int uint_fast32_t; +__extension__ +typedef unsigned long long int uint_fast64_t; +# 126 "/usr/include/stdint.h" 3 4 +typedef int intptr_t; + + +typedef unsigned int uintptr_t; +# 138 "/usr/include/stdint.h" 3 4 +__extension__ +typedef long long int intmax_t; +__extension__ +typedef unsigned long long int uintmax_t; +# 35 "unwind_i.h" 2 + +#include +# 36 "unwind_i.h" +# 1 "../../include/libunwind-ppc64.h" 1 +# 37 "../../include/libunwind-ppc64.h" +#include +# 37 "../../include/libunwind-ppc64.h" +# 1 "/usr/include/inttypes.h" 1 3 4 +# 26 "/usr/include/inttypes.h" 3 4 +#include + +#include + + + + + + +typedef long int __gwchar_t; +# 274 "/usr/include/inttypes.h" 3 4 + +# 288 "/usr/include/inttypes.h" 3 4 +typedef struct + { + long long int quot; + long long int rem; + } imaxdiv_t; + + + + + +extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + +extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + +extern intmax_t strtoimax (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) __attribute__ ((__nothrow__)); + + +extern uintmax_t strtoumax (__const char *__restrict __nptr, + char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__)); + + +extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr, + __gwchar_t **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)); + + +extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr, + __gwchar_t ** __restrict __endptr, int __base) + __attribute__ ((__nothrow__)); +# 459 "/usr/include/inttypes.h" 3 4 + +# 38 "../../include/libunwind-ppc64.h" 2 +#include +# 38 "../../include/libunwind-ppc64.h" +# 1 "/usr/include/ucontext.h" 1 3 4 +# 24 "/usr/include/ucontext.h" 3 4 +#include + + +#include +# 27 "/usr/include/ucontext.h" 3 4 +# 1 "/usr/include/sys/ucontext.h" 1 3 4 +# 22 "/usr/include/sys/ucontext.h" 3 4 +#include +#include +# 23 "/usr/include/sys/ucontext.h" 3 4 +# 1 "/usr/include/signal.h" 1 3 4 +# 29 "/usr/include/signal.h" 3 4 +#include + + + +#include +# 33 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/sigset.h" 1 3 4 +# 103 "/usr/include/bits/sigset.h" 3 4 +extern int __sigismember (__const __sigset_t *, int); +extern int __sigaddset (__sigset_t *, int); +extern int __sigdelset (__sigset_t *, int); +# 34 "/usr/include/signal.h" 2 3 4 + + + + + + + +typedef __sig_atomic_t sig_atomic_t; + +# 57 "/usr/include/signal.h" 3 4 +#include +#include +# 58 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/signum.h" 1 3 4 +# 59 "/usr/include/signal.h" 2 3 4 +# 75 "/usr/include/signal.h" 3 4 +typedef void (*__sighandler_t) (int); + + + + +extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + +extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + + +extern __sighandler_t signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +# 104 "/usr/include/signal.h" 3 4 + + + + + +extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + +extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__)); + + + + + + +extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__)); + + + + +extern int raise (int __sig) __attribute__ ((__nothrow__)); + + + + +extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +extern int gsignal (int __sig) __attribute__ ((__nothrow__)); + + + + +extern void psignal (int __sig, __const char *__s); +# 153 "/usr/include/signal.h" 3 4 +extern int __sigpause (int __sig_or_mask, int __is_sig); +# 162 "/usr/include/signal.h" 3 4 +extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); +# 181 "/usr/include/signal.h" 3 4 +extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); +# 196 "/usr/include/signal.h" 3 4 +typedef __sighandler_t sighandler_t; + + + + +typedef __sighandler_t sig_t; + + + + + + + +#include +# 209 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 210 "/usr/include/signal.h" 2 3 4 + + +#include +# 212 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/siginfo.h" 1 3 4 +# 25 "/usr/include/bits/siginfo.h" 3 4 +#include +# 25 "/usr/include/bits/siginfo.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 26 "/usr/include/bits/siginfo.h" 2 3 4 + + + + + + + +typedef union sigval + { + int sival_int; + void *sival_ptr; + } sigval_t; +# 51 "/usr/include/bits/siginfo.h" 3 4 +typedef struct siginfo + { + int si_signo; + int si_errno; + + int si_code; + + union + { + int _pad[((128 / sizeof (int)) - 3)]; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + } _kill; + + + struct + { + int si_tid; + int si_overrun; + sigval_t si_sigval; + } _timer; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + sigval_t si_sigval; + } _rt; + + + struct + { + __pid_t si_pid; + __uid_t si_uid; + int si_status; + __clock_t si_utime; + __clock_t si_stime; + } _sigchld; + + + struct + { + void *si_addr; + } _sigfault; + + + struct + { + long int si_band; + int si_fd; + } _sigpoll; + } _sifields; + } siginfo_t; +# 129 "/usr/include/bits/siginfo.h" 3 4 +enum +{ + SI_ASYNCNL = -60, + + SI_TKILL = -6, + + SI_SIGIO, + + SI_ASYNCIO, + + SI_MESGQ, + + SI_TIMER, + + SI_QUEUE, + + SI_USER, + + SI_KERNEL = 0x80 + +}; + + + +enum +{ + ILL_ILLOPC = 1, + + ILL_ILLOPN, + + ILL_ILLADR, + + ILL_ILLTRP, + + ILL_PRVOPC, + + ILL_PRVREG, + + ILL_COPROC, + + ILL_BADSTK + +}; + + +enum +{ + FPE_INTDIV = 1, + + FPE_INTOVF, + + FPE_FLTDIV, + + FPE_FLTOVF, + + FPE_FLTUND, + + FPE_FLTRES, + + FPE_FLTINV, + + FPE_FLTSUB + +}; + + +enum +{ + SEGV_MAPERR = 1, + + SEGV_ACCERR + +}; + + +enum +{ + BUS_ADRALN = 1, + + BUS_ADRERR, + + BUS_OBJERR + +}; + + +enum +{ + TRAP_BRKPT = 1, + + TRAP_TRACE + +}; + + +enum +{ + CLD_EXITED = 1, + + CLD_KILLED, + + CLD_DUMPED, + + CLD_TRAPPED, + + CLD_STOPPED, + + CLD_CONTINUED + +}; + + +enum +{ + POLL_IN = 1, + + POLL_OUT, + + POLL_MSG, + + POLL_ERR, + + POLL_PRI, + + POLL_HUP + +}; +# 273 "/usr/include/bits/siginfo.h" 3 4 +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[((64 / sizeof (int)) - 3)]; + + + + __pid_t _tid; + + struct + { + void (*_function) (sigval_t); + void *_attribute; + } _sigev_thread; + } _sigev_un; + } sigevent_t; + + + + + + +enum +{ + SIGEV_SIGNAL = 0, + + SIGEV_NONE, + + SIGEV_THREAD, + + + SIGEV_THREAD_ID = 4 + +}; +# 213 "/usr/include/signal.h" 2 3 4 + + + +extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigismember (__const sigset_t *__set, int __signo) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigandset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern int sigorset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +#include +# 246 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/sigaction.h" 1 3 4 +# 25 "/usr/include/bits/sigaction.h" 3 4 +struct sigaction + { + + + union + { + + __sighandler_t sa_handler; + + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; + + + + + + + + __sigset_t sa_mask; + + + int sa_flags; + + + void (*sa_restorer) (void); + }; +# 247 "/usr/include/signal.h" 2 3 4 + + +extern int sigprocmask (int __how, __const sigset_t *__restrict __set, + sigset_t *__restrict __oset) __attribute__ ((__nothrow__)); + + + + + + +extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1))); + + +extern int sigaction (int __sig, __const struct sigaction *__restrict __act, + struct sigaction *__restrict __oact) __attribute__ ((__nothrow__)); + + +extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) + __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int sigwaitinfo (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigtimedwait (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info, + __const struct timespec *__restrict __timeout) + __attribute__ ((__nonnull__ (1))); + + + +extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) + __attribute__ ((__nothrow__)); +# 304 "/usr/include/signal.h" 3 4 +extern __const char *__const _sys_siglist[65]; +extern __const char *__const sys_siglist[65]; + + +struct sigvec + { + __sighandler_t sv_handler; + int sv_mask; + + int sv_flags; + + }; +# 328 "/usr/include/signal.h" 3 4 +extern int sigvec (int __sig, __const struct sigvec *__vec, + struct sigvec *__ovec) __attribute__ ((__nothrow__)); + + + +#include +# 333 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/sigcontext.h" 1 3 4 +# 28 "/usr/include/bits/sigcontext.h" 3 4 +#include +# 28 "/usr/include/bits/sigcontext.h" 3 4 +# 1 "/usr/include/asm/sigcontext.h" 1 3 4 + + + + + +#include +# 6 "/usr/include/asm/sigcontext.h" 3 4 +# 1 "/usr/include/asm-ppc/sigcontext.h" 1 3 4 +# 10 "/usr/include/asm-ppc/sigcontext.h" 3 4 +#include +# 10 "/usr/include/asm-ppc/sigcontext.h" 3 4 +# 1 "/usr/include/asm/ptrace.h" 1 3 4 + + + + + +#include +# 6 "/usr/include/asm/ptrace.h" 3 4 +# 1 "/usr/include/asm-ppc/ptrace.h" 1 3 4 +# 29 "/usr/include/asm-ppc/ptrace.h" 3 4 +struct pt_regs { + unsigned long gpr[32]; + unsigned long nip; + unsigned long msr; + unsigned long orig_gpr3; + unsigned long ctr; + unsigned long link; + unsigned long xer; + unsigned long ccr; + + + + unsigned long mq; + + + unsigned long trap; + + + unsigned long dar; + unsigned long dsisr; + unsigned long result; +}; +# 7 "/usr/include/asm/ptrace.h" 2 3 4 +# 11 "/usr/include/asm-ppc/sigcontext.h" 2 3 4 + + + + +struct sigcontext { + unsigned long _unused[4]; + int signal; + + + + unsigned long handler; + unsigned long oldmask; + struct pt_regs *regs; +# 49 "/usr/include/asm-ppc/sigcontext.h" 3 4 +}; +# 7 "/usr/include/asm/sigcontext.h" 2 3 4 +# 29 "/usr/include/bits/sigcontext.h" 2 3 4 +# 334 "/usr/include/signal.h" 2 3 4 + + +extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__)); +# 346 "/usr/include/signal.h" 3 4 +extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__)); + +#include +# 348 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/sigstack.h" 1 3 4 +# 26 "/usr/include/bits/sigstack.h" 3 4 +struct sigstack + { + void *ss_sp; + int ss_onstack; + }; + + + +enum +{ + SS_ONSTACK = 1, + + SS_DISABLE + +}; +# 50 "/usr/include/bits/sigstack.h" 3 4 +typedef struct sigaltstack + { + void *ss_sp; + int ss_flags; + size_t ss_size; + } stack_t; +# 349 "/usr/include/signal.h" 2 3 4 + + +#include +# 351 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/sys/ucontext.h" 1 3 4 +# 352 "/usr/include/signal.h" 2 3 4 + + + + + +extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) + __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + + +extern int sigaltstack (__const struct sigaltstack *__restrict __ss, + struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__)); + + + + + + + +extern int sighold (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigrelse (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigignore (int __sig) __attribute__ ((__nothrow__)); + + +extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__)); + + + + + +#include +#include +# 387 "/usr/include/signal.h" 3 4 +# 1 "/usr/include/bits/sigthread.h" 1 3 4 +# 31 "/usr/include/bits/sigthread.h" 3 4 +extern int pthread_sigmask (int __how, + __const __sigset_t *__restrict __newmask, + __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__)); + + +extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__)); +# 388 "/usr/include/signal.h" 2 3 4 + + + + + + +extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__)); + +extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__)); + + + + +# 24 "/usr/include/sys/ucontext.h" 2 3 4 + + + +#include +# 27 "/usr/include/sys/ucontext.h" 3 4 +# 1 "/usr/include/bits/sigcontext.h" 1 3 4 +# 28 "/usr/include/sys/ucontext.h" 2 3 4 + + + + + + + +typedef unsigned long gregset_t[48]; + + +typedef struct _libc_fpstate +{ + double fpregs[32]; + double fpscr; + unsigned int _pad[2]; +} fpregset_t; + + + +typedef struct _libc_vrstate +{ + unsigned int vrregs[32][4]; + unsigned int vrsave; + unsigned int _pad[2]; + unsigned int vscr; +} vrregset_t; + + +typedef struct +{ + gregset_t gregs; + fpregset_t fpregs; + vrregset_t vrregs __attribute__((__aligned__(16))); +} mcontext_t; +# 135 "/usr/include/sys/ucontext.h" 3 4 +typedef struct ucontext + { + unsigned long int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; +# 164 "/usr/include/sys/ucontext.h" 3 4 + int uc_pad[7]; + union uc_regs_ptr { + struct pt_regs *regs; + mcontext_t *uc_regs; + } uc_mcontext; + sigset_t uc_sigmask; + char uc_reg_space[sizeof(mcontext_t) + 12]; + + + + + } ucontext_t; +# 28 "/usr/include/ucontext.h" 2 3 4 + + + + +extern int getcontext (ucontext_t *__ucp) __attribute__ ((__nothrow__)); + + +extern int setcontext (__const ucontext_t *__ucp) __attribute__ ((__nothrow__)); + + + +extern int swapcontext (ucontext_t *__restrict __oucp, + __const ucontext_t *__restrict __ucp) __attribute__ ((__nothrow__)); + + + + + + + +extern void makecontext (ucontext_t *__ucp, void (*__func) (void), + int __argc, ...) __attribute__ ((__nothrow__)); + + +# 39 "../../include/libunwind-ppc64.h" 2 +# 56 "../../include/libunwind-ppc64.h" +typedef uint32_t unw_word_t; +typedef int32_t unw_sword_t; + + + + + +typedef long double unw_tdep_fpreg_t; + +typedef struct { + uint64_t halves[2]; +} unw_vrreg_t; + +typedef enum + { + UNW_PPC64_R0, + UNW_PPC64_R1, + UNW_PPC64_R2, + UNW_PPC64_R3, + UNW_PPC64_R4, + UNW_PPC64_R5, + UNW_PPC64_R6, + UNW_PPC64_R7, + UNW_PPC64_R8, + UNW_PPC64_R9, + UNW_PPC64_R10, + UNW_PPC64_R11, + UNW_PPC64_R12, + UNW_PPC64_R13, + UNW_PPC64_R14, + UNW_PPC64_R15, + UNW_PPC64_R16, + UNW_PPC64_R17, + UNW_PPC64_R18, + UNW_PPC64_R19, + UNW_PPC64_R20, + UNW_PPC64_R21, + UNW_PPC64_R22, + UNW_PPC64_R23, + UNW_PPC64_R24, + UNW_PPC64_R25, + UNW_PPC64_R26, + UNW_PPC64_R27, + UNW_PPC64_R28, + UNW_PPC64_R29, + UNW_PPC64_R30, + UNW_PPC64_R31, + + + UNW_PPC64_F0 = 32, + UNW_PPC64_F1, + UNW_PPC64_F2, + UNW_PPC64_F3, + UNW_PPC64_F4, + UNW_PPC64_F5, + UNW_PPC64_F6, + UNW_PPC64_F7, + UNW_PPC64_F8, + UNW_PPC64_F9, + UNW_PPC64_F10, + UNW_PPC64_F11, + UNW_PPC64_F12, + UNW_PPC64_F13, + UNW_PPC64_F14, + UNW_PPC64_F15, + UNW_PPC64_F16, + UNW_PPC64_F17, + UNW_PPC64_F18, + UNW_PPC64_F19, + UNW_PPC64_F20, + UNW_PPC64_F21, + UNW_PPC64_F22, + UNW_PPC64_F23, + UNW_PPC64_F24, + UNW_PPC64_F25, + UNW_PPC64_F26, + UNW_PPC64_F27, + UNW_PPC64_F28, + UNW_PPC64_F29, + UNW_PPC64_F30, + UNW_PPC64_F31, + UNW_PPC64_FPSCR, + + UNW_PPC64_NIP = 64, + UNW_PPC64_MSR, + UNW_PPC64_ORIG_GPR3, + UNW_PPC64_CTR, + UNW_PPC64_LR, + UNW_PPC64_XER, + UNW_PPC64_CCR, + UNW_PPC64_MQ, + UNW_PPC64_TRAP, + UNW_PPC64_DAR, + UNW_PPC64_DSISR, + UNW_PPC64_RESULT, + + UNW_PPC64_V0 = 80, + UNW_PPC64_V1, + UNW_PPC64_V2, + UNW_PPC64_V3, + UNW_PPC64_V4, + UNW_PPC64_V5, + UNW_PPC64_V6, + UNW_PPC64_V7, + UNW_PPC64_V8, + UNW_PPC64_V9, + UNW_PPC64_V10, + UNW_PPC64_V11, + UNW_PPC64_V12, + UNW_PPC64_V13, + UNW_PPC64_V14, + UNW_PPC64_V15, + UNW_PPC64_V16, + UNW_PPC64_V17, + UNW_PPC64_V18, + UNW_PPC64_V19, + UNW_PPC64_V20, + UNW_PPC64_V21, + UNW_PPC64_V22, + UNW_PPC64_V23, + UNW_PPC64_V24, + UNW_PPC64_V25, + UNW_PPC64_V26, + UNW_PPC64_V27, + UNW_PPC64_V28, + UNW_PPC64_V29, + UNW_PPC64_V30, + UNW_PPC64_V31, + UNW_PPC64_VSAVE, + UNW_PPC64_VSCR, + + + + + UNW_PPC64_CFA, + + UNW_TDEP_LAST_REG = UNW_PPC64_VSCR, + + UNW_TDEP_IP = UNW_PPC64_NIP, + UNW_TDEP_SP = UNW_PPC64_R1, + UNW_TDEP_EH = UNW_PPC64_R12 + } +ppc64_regnum_t; + + + + + +typedef struct unw_tdep_save_loc + { + + } +unw_tdep_save_loc_t; + + +typedef ucontext_t unw_tdep_context_t; + + + + + + + +#include "libunwind-dynamic.h" +# 219 "../../include/libunwind-ppc64.h" +# 1 "../../include/libunwind-dynamic.h" 1 +# 60 "../../include/libunwind-dynamic.h" +typedef enum + { + UNW_DYN_STOP = 0, + UNW_DYN_SAVE_REG, + UNW_DYN_SPILL_FP_REL, + UNW_DYN_SPILL_SP_REL, + UNW_DYN_ADD, + UNW_DYN_POP_FRAMES, + UNW_DYN_LABEL_STATE, + UNW_DYN_COPY_STATE, + UNW_DYN_ALIAS + } +unw_dyn_operation_t; + +typedef enum + { + UNW_INFO_FORMAT_DYNAMIC, + UNW_INFO_FORMAT_TABLE, + UNW_INFO_FORMAT_REMOTE_TABLE, + } +unw_dyn_info_format_t; + +typedef struct unw_dyn_op + { + int8_t tag; + int8_t qp; + int16_t reg; + int32_t when; + unw_word_t val; + } +unw_dyn_op_t; + +typedef struct unw_dyn_region_info + { + struct unw_dyn_region_info *next; + int32_t insn_count; + uint32_t op_count; + unw_dyn_op_t op[1]; + } +unw_dyn_region_info_t; + +typedef struct unw_dyn_proc_info + { + unw_word_t name_ptr; + unw_word_t handler; + uint32_t flags; + int32_t pad0; + unw_dyn_region_info_t *regions; + } +unw_dyn_proc_info_t; + +typedef struct unw_dyn_table_info + { + unw_word_t name_ptr; + unw_word_t segbase; + unw_word_t table_len; + unw_word_t *table_data; + } +unw_dyn_table_info_t; + +typedef struct unw_dyn_remote_table_info + { + unw_word_t name_ptr; + unw_word_t segbase; + unw_word_t table_len; + unw_word_t table_data; + } +unw_dyn_remote_table_info_t; + +typedef struct unw_dyn_info + { + + struct unw_dyn_info *next; + struct unw_dyn_info *prev; + unw_word_t start_ip; + unw_word_t end_ip; + unw_word_t gp; + int32_t format; + int32_t pad; + union + { + unw_dyn_proc_info_t pi; + unw_dyn_table_info_t ti; + unw_dyn_remote_table_info_t rti; + } + u; + } +unw_dyn_info_t; + +typedef struct unw_dyn_info_list + { + uint32_t version; + uint32_t generation; + unw_dyn_info_t *first; + } +unw_dyn_info_list_t; +# 165 "../../include/libunwind-dynamic.h" +extern void _U_dyn_register (unw_dyn_info_t *); + + + +extern void _U_dyn_cancel (unw_dyn_info_t *); +# 220 "../../include/libunwind-ppc64.h" 2 + +typedef struct + { + + } +unw_tdep_proc_info_t; + +#include "libunwind-common.h" +# 227 "../../include/libunwind-ppc64.h" +# 1 "../../include/libunwind-common.h" 1 +# 46 "../../include/libunwind-common.h" +typedef enum + { + UNW_ESUCCESS = 0, + UNW_EUNSPEC, + UNW_ENOMEM, + UNW_EBADREG, + UNW_EREADONLYREG, + UNW_ESTOPUNWIND, + UNW_EINVALIDIP, + UNW_EBADFRAME, + UNW_EINVAL, + UNW_EBADVERSION, + UNW_ENOINFO + } +unw_error_t; +# 69 "../../include/libunwind-common.h" +typedef enum + { + UNW_REG_IP = UNW_TDEP_IP, + UNW_REG_SP = UNW_TDEP_SP, + UNW_REG_EH = UNW_TDEP_EH, + UNW_REG_LAST = UNW_TDEP_LAST_REG + } +unw_frame_regnum_t; + + + + +typedef enum + { + UNW_CACHE_NONE, + UNW_CACHE_GLOBAL, + UNW_CACHE_PER_THREAD + } +unw_caching_policy_t; + +typedef int unw_regnum_t; + + + + + +typedef struct unw_cursor + { + unw_word_t opaque[127]; + } +unw_cursor_t; + + +typedef unw_tdep_context_t unw_context_t; +# 115 "../../include/libunwind-common.h" +typedef unw_tdep_fpreg_t unw_fpreg_t; + +typedef struct unw_addr_space *unw_addr_space_t; + + + + + +typedef struct unw_proc_info + { + unw_word_t start_ip; + unw_word_t end_ip; + unw_word_t lsda; + unw_word_t handler; + unw_word_t gp; + unw_word_t flags; + + int format; + int unwind_info_size; + void *unwind_info; + unw_tdep_proc_info_t extra; + } +unw_proc_info_t; + + + + +typedef struct unw_accessors + { + + + int (*find_proc_info) (unw_addr_space_t, unw_word_t, unw_proc_info_t *, + int, void *); + + + + + void (*put_unwind_info) (unw_addr_space_t, unw_proc_info_t *, void *); + + + + int (*get_dyn_info_list_addr) (unw_addr_space_t, unw_word_t *, void *); + + + + + + int (*access_mem) (unw_addr_space_t, unw_word_t, unw_word_t *, int, + void *); + + + int (*access_reg) (unw_addr_space_t, unw_regnum_t, unw_word_t *, int, + void *); + + + int (*access_fpreg) (unw_addr_space_t, unw_regnum_t, + unw_fpreg_t *, int, void *); + + + int (*access_vrreg) (unw_addr_space_t, unw_regnum_t, + unw_vrreg_t *, int, void *); + + int (*resume) (unw_addr_space_t, unw_cursor_t *, void *); + + + + + + int (*get_proc_name) (unw_addr_space_t, unw_word_t, char *, size_t, + unw_word_t *, void *); + int validate; + } +unw_accessors_t; + +typedef enum unw_save_loc_type + { + UNW_SLT_NONE, + UNW_SLT_MEMORY, + UNW_SLT_REG + } +unw_save_loc_type_t; + +typedef struct unw_save_loc + { + unw_save_loc_type_t type; + union + { + unw_word_t addr; + unw_regnum_t regnum; + } + u; + unw_tdep_save_loc_t extra; + } +unw_save_loc_t; +# 234 "../../include/libunwind-common.h" +extern unw_addr_space_t _Uppc64_create_addr_space (unw_accessors_t *, int); +extern void _Uppc64_destroy_addr_space (unw_addr_space_t); +extern unw_accessors_t *_Uppc64_get_accessors (unw_addr_space_t); +extern void _Uppc64_flush_cache (unw_addr_space_t, unw_word_t, unw_word_t); +extern int _Uppc64_set_caching_policy (unw_addr_space_t, unw_caching_policy_t); +extern const char *_Uppc64_regname (unw_regnum_t); + +extern int _Uppc64_init_local (unw_cursor_t *, unw_context_t *); +extern int _Uppc64_init_remote (unw_cursor_t *, unw_addr_space_t, void *); +extern int _Uppc64_step (unw_cursor_t *); +extern int _Uppc64_resume (unw_cursor_t *); +extern int _Uppc64_get_proc_info (unw_cursor_t *, unw_proc_info_t *); +extern int _Uppc64_get_proc_info_by_ip (unw_addr_space_t, unw_word_t, + unw_proc_info_t *, void *); +extern int _Uppc64_get_reg (unw_cursor_t *, int, unw_word_t *); +extern int _Uppc64_set_reg (unw_cursor_t *, int, unw_word_t); +extern int _Uppc64_get_fpreg (unw_cursor_t *, int, unw_fpreg_t *); +extern int _Uppc64_set_fpreg (unw_cursor_t *, int, unw_fpreg_t); +extern int _Uppc64_get_save_loc (unw_cursor_t *, int, unw_save_loc_t *); +extern int _Uppc64_is_signal_frame (unw_cursor_t *); +extern int _Uppc64_get_proc_name (unw_cursor_t *, char *, size_t, unw_word_t *); +extern const char *_Uppc64_strerror (int); + +extern unw_addr_space_t _Uppc64_local_addr_space; +# 228 "../../include/libunwind-ppc64.h" 2 + + +extern int _Uppc64_is_fpreg (int); +# 37 "unwind_i.h" 2 + +#include +# 38 "unwind_i.h" +# 1 "../../include/libunwind_i.h" 1 +# 34 "../../include/libunwind_i.h" +#include "config.h" +# 34 "../../include/libunwind_i.h" +# 1 "../../include/config.h" 1 +# 35 "../../include/libunwind_i.h" 2 +# 46 "../../include/libunwind_i.h" +#include + +#include +# 48 "../../include/libunwind_i.h" +# 1 "/usr/include/assert.h" 1 3 4 +# 36 "/usr/include/assert.h" 3 4 +#include +# 49 "../../include/libunwind_i.h" 2 +#include +# 49 "../../include/libunwind_i.h" +# 1 "../../include/libunwind.h" 1 +# 50 "../../include/libunwind_i.h" 2 +#include +# 50 "../../include/libunwind_i.h" +# 1 "/usr/include/pthread.h" 1 3 4 +# 22 "/usr/include/pthread.h" 3 4 +#include +#include +# 23 "/usr/include/pthread.h" 3 4 +# 1 "/usr/include/sched.h" 1 3 4 +# 23 "/usr/include/sched.h" 3 4 +#include + + +#include + + +#include +# 29 "/usr/include/sched.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 30 "/usr/include/sched.h" 2 3 4 + + +#include +# 32 "/usr/include/sched.h" 3 4 +# 1 "/usr/include/bits/sched.h" 1 3 4 +# 65 "/usr/include/bits/sched.h" 3 4 +struct sched_param + { + int __sched_priority; + }; + + + + + +extern int clone (int (*__fn) (void *__arg), void *__child_stack, + int __flags, void *__arg, ...) __attribute__ ((__nothrow__)); + + +extern int unshare (int __flags) __attribute__ ((__nothrow__)); + + + + + + + + + + +struct __sched_param + { + int __sched_priority; + }; +# 104 "/usr/include/bits/sched.h" 3 4 +typedef unsigned long int __cpu_mask; + + + + + + +typedef struct +{ + __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; +} cpu_set_t; +# 33 "/usr/include/sched.h" 2 3 4 + + + + + + + +extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) + __attribute__ ((__nothrow__)); + + +extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__)); + + +extern int sched_setscheduler (__pid_t __pid, int __policy, + __const struct sched_param *__param) __attribute__ ((__nothrow__)); + + +extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__)); + + +extern int sched_yield (void) __attribute__ ((__nothrow__)); + + +extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__)); + + +extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__)); + + +extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__)); +# 76 "/usr/include/sched.h" 3 4 +extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, + __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); + + +extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, + cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); + + + +# 24 "/usr/include/pthread.h" 2 3 4 +#include +# 24 "/usr/include/pthread.h" 3 4 +# 1 "/usr/include/time.h" 1 3 4 +# 29 "/usr/include/time.h" 3 4 +#include + + + + + + + + + +#include +# 39 "/usr/include/time.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 40 "/usr/include/time.h" 2 3 4 + + + +#include +# 43 "/usr/include/time.h" 3 4 +# 1 "/usr/include/bits/time.h" 1 3 4 +# 44 "/usr/include/time.h" 2 3 4 +# 132 "/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 int tm_gmtoff; + __const char *tm_zone; + + + + +}; + + + + + + + + +struct itimerspec + { + struct timespec it_interval; + struct timespec it_value; + }; + + +struct sigevent; +# 181 "/usr/include/time.h" 3 4 + + + +extern clock_t clock (void) __attribute__ ((__nothrow__)); + + +extern time_t time (time_t *__timer) __attribute__ ((__nothrow__)); + + +extern double difftime (time_t __time1, time_t __time0) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__)); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + + + +extern char *strptime (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp) + __attribute__ ((__nothrow__)); + + + + + +#include + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp, + __locale_t __loc) __attribute__ ((__nothrow__)); + +extern char *strptime_l (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp, + __locale_t __loc) __attribute__ ((__nothrow__)); + + + + + + +extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + +extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + + + +extern struct tm *gmtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + +extern struct tm *localtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + + + +extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + + + + + +extern char *asctime_r (__const struct tm *__restrict __tp, + char *__restrict __buf) __attribute__ ((__nothrow__)); + + +extern char *ctime_r (__const time_t *__restrict __timer, + char *__restrict __buf) __attribute__ ((__nothrow__)); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) __attribute__ ((__nothrow__)); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (__const time_t *__when) __attribute__ ((__nothrow__)); +# 312 "/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); +# 327 "/usr/include/time.h" 3 4 +extern int nanosleep (__const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__)); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__)); + + +extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) + __attribute__ ((__nothrow__)); + + + + + + +extern int clock_nanosleep (clockid_t __clock_id, int __flags, + __const struct timespec *__req, + struct timespec *__rem); + + +extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__)); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) __attribute__ ((__nothrow__)); + + +extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__)); + + +extern int timer_settime (timer_t __timerid, int __flags, + __const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__)); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + __attribute__ ((__nothrow__)); + + +extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__)); +# 389 "/usr/include/time.h" 3 4 +extern int getdate_err; +# 398 "/usr/include/time.h" 3 4 +extern struct tm *getdate (__const char *__string); +# 412 "/usr/include/time.h" 3 4 +extern int getdate_r (__const char *__restrict __string, + struct tm *__restrict __resbufp); + + + +# 25 "/usr/include/pthread.h" 2 3 4 + + +#include +#include +#include +# 29 "/usr/include/pthread.h" 3 4 +# 1 "/usr/include/bits/setjmp.h" 1 3 4 +# 33 "/usr/include/bits/setjmp.h" 3 4 +#include +# 33 "/usr/include/bits/setjmp.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 34 "/usr/include/bits/setjmp.h" 2 3 4 +# 48 "/usr/include/bits/setjmp.h" 3 4 +typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16))); +# 30 "/usr/include/pthread.h" 2 3 4 +#include +# 30 "/usr/include/pthread.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 31 "/usr/include/pthread.h" 2 3 4 + + + +enum +{ + PTHREAD_CREATE_JOINABLE, + + PTHREAD_CREATE_DETACHED + +}; + + + +enum +{ + PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_ADAPTIVE_NP + + , + PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, + PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, + PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, + PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL + + + + , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP + +}; + + + + +enum +{ + PTHREAD_MUTEX_STALLED_NP, + PTHREAD_MUTEX_ROBUST_NP +}; + + + + + +enum +{ + PTHREAD_PRIO_NONE, + PTHREAD_PRIO_INHERIT, + PTHREAD_PRIO_PROTECT +}; +# 113 "/usr/include/pthread.h" 3 4 +enum +{ + PTHREAD_RWLOCK_PREFER_READER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NP, + PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, + PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP +}; +# 143 "/usr/include/pthread.h" 3 4 +enum +{ + PTHREAD_INHERIT_SCHED, + + PTHREAD_EXPLICIT_SCHED + +}; + + + +enum +{ + PTHREAD_SCOPE_SYSTEM, + + PTHREAD_SCOPE_PROCESS + +}; + + + +enum +{ + PTHREAD_PROCESS_PRIVATE, + + PTHREAD_PROCESS_SHARED + +}; +# 178 "/usr/include/pthread.h" 3 4 +struct _pthread_cleanup_buffer +{ + void (*__routine) (void *); + void *__arg; + int __canceltype; + struct _pthread_cleanup_buffer *__prev; +}; + + +enum +{ + PTHREAD_CANCEL_ENABLE, + + PTHREAD_CANCEL_DISABLE + +}; +enum +{ + PTHREAD_CANCEL_DEFERRED, + + PTHREAD_CANCEL_ASYNCHRONOUS + +}; +# 216 "/usr/include/pthread.h" 3 4 + + + + + +extern int pthread_create (pthread_t *__restrict __newthread, + __const pthread_attr_t *__restrict __attr, + void *(*__start_routine) (void *), + void *__restrict __arg) __attribute__ ((__nothrow__)); + + + + + +extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); + + + + + + + +extern int pthread_join (pthread_t __th, void **__thread_return); + + + + +extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, + __const struct timespec *__abstime); + + + + + + +extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__)); + + + +extern pthread_t pthread_self (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + +extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_destroy (pthread_attr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, + int *__detachstate) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, + int __detachstate) __attribute__ ((__nothrow__)); + + + +extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, + size_t *__guardsize) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setguardsize (pthread_attr_t *__attr, + size_t __guardsize) __attribute__ ((__nothrow__)); + + + +extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict + __attr, + struct sched_param *__restrict __param) + __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, + __const struct sched_param *__restrict + __param) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict + __attr, int *__restrict __policy) + __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) + __attribute__ ((__nothrow__)); + + +extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict + __attr, int *__restrict __inherit) + __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, + int __inherit) __attribute__ ((__nothrow__)); + + + +extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr, + int *__restrict __scope) __attribute__ ((__nothrow__)); + + +extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) + __attribute__ ((__nothrow__)); + + +extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict + __attr, void **__restrict __stackaddr) + __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + + + + +extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, + void *__stackaddr) + __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict + __attr, size_t *__restrict __stacksize) + __attribute__ ((__nothrow__)); + + + + +extern int pthread_attr_setstacksize (pthread_attr_t *__attr, + size_t __stacksize) __attribute__ ((__nothrow__)); + + + +extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr, + void **__restrict __stackaddr, + size_t *__restrict __stacksize) __attribute__ ((__nothrow__)); + + + + +extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, + size_t __stacksize) __attribute__ ((__nothrow__)); + + + + + +extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, + size_t __cpusetsize, + __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); + + + +extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr, + size_t __cpusetsize, + cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); + + + + + +extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_setschedparam (pthread_t __target_thread, int __policy, + __const struct sched_param *__param) + __attribute__ ((__nothrow__)); + + +extern int pthread_getschedparam (pthread_t __target_thread, + int *__restrict __policy, + struct sched_param *__restrict __param) + __attribute__ ((__nothrow__)); + + +extern int pthread_setschedprio (pthread_t __target_thread, int __prio) + __attribute__ ((__nothrow__)); + + + + +extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__)); + + +extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_yield (void) __attribute__ ((__nothrow__)); + + + + +extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, + __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); + + +extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, + cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); +# 448 "/usr/include/pthread.h" 3 4 +extern int pthread_once (pthread_once_t *__once_control, + void (*__init_routine) (void)); +# 460 "/usr/include/pthread.h" 3 4 +extern int pthread_setcancelstate (int __state, int *__oldstate); + + + +extern int pthread_setcanceltype (int __type, int *__oldtype); + + +extern int pthread_cancel (pthread_t __th); + + + + +extern void pthread_testcancel (void); + + + + +typedef struct +{ + struct + { + __jmp_buf __cancel_jmp_buf; + int __mask_was_saved; + } __cancel_jmp_buf[1]; + void *__pad[4]; +} __pthread_unwind_buf_t __attribute__ ((__aligned__)); +# 494 "/usr/include/pthread.h" 3 4 +struct __pthread_cleanup_frame +{ + void (*__cancel_routine) (void *); + void *__cancel_arg; + int __do_it; + int __cancel_type; +}; +# 634 "/usr/include/pthread.h" 3 4 +extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) + ; +# 645 "/usr/include/pthread.h" 3 4 +extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) + ; +# 668 "/usr/include/pthread.h" 3 4 +extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) + ; +# 680 "/usr/include/pthread.h" 3 4 +extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) + ; + + + +extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) + __attribute__ ((__noreturn__)) + + __attribute__ ((__weak__)) + + ; + + + +struct __jmp_buf_tag; +extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__)); + + + + + +extern int pthread_mutex_init (pthread_mutex_t *__mutex, + __const pthread_mutexattr_t *__mutexattr) + __attribute__ ((__nothrow__)); + + +extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)); + + +extern int pthread_mutex_trylock (pthread_mutex_t *_mutex) __attribute__ ((__nothrow__)); + + +extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)); + + + +extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, + __const struct timespec *__restrict + __abstime) __attribute__ ((__nothrow__)); + + + +extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)); + + + + +extern int pthread_mutex_getprioceiling (__const pthread_mutex_t * + __restrict __mutex, + int *__restrict __prioceiling) + __attribute__ ((__nothrow__)); + + + +extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, + int __prioceiling, + int *__restrict __old_ceiling) + __attribute__ ((__nothrow__)); + + + + + +extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __pshared) __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, + int __pshared) __attribute__ ((__nothrow__)); + + + +extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict + __attr, int *__restrict __kind) __attribute__ ((__nothrow__)); + + + + +extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) + __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __protocol) __attribute__ ((__nothrow__)); + + + +extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, + int __protocol) __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t * + __restrict __attr, + int *__restrict __prioceiling) + __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, + int __prioceiling) __attribute__ ((__nothrow__)); + + + + +extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr, + int *__robustness) __attribute__ ((__nothrow__)); + + +extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, + int __robustness) __attribute__ ((__nothrow__)); +# 813 "/usr/include/pthread.h" 3 4 +extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, + __const pthread_rwlockattr_t *__restrict + __attr) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + + +extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, + __const struct timespec *__restrict + __abstime) __attribute__ ((__nothrow__)); + + + +extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + + +extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, + __const struct timespec *__restrict + __abstime) __attribute__ ((__nothrow__)); + + + +extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)); + + + + + +extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pshared) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, + int __pshared) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t * + __restrict __attr, + int *__restrict __pref) __attribute__ ((__nothrow__)); + + +extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, + int __pref) __attribute__ ((__nothrow__)); + + + + + + + +extern int pthread_cond_init (pthread_cond_t *__restrict __cond, + __const pthread_condattr_t *__restrict + __cond_attr) __attribute__ ((__nothrow__)); + + +extern int pthread_cond_destroy (pthread_cond_t *__cond) __attribute__ ((__nothrow__)); + + +extern int pthread_cond_signal (pthread_cond_t *__cond) __attribute__ ((__nothrow__)); + + +extern int pthread_cond_broadcast (pthread_cond_t *__cond) __attribute__ ((__nothrow__)); + + + + + + +extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex); +# 910 "/usr/include/pthread.h" 3 4 +extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, + pthread_mutex_t *__restrict __mutex, + __const struct timespec *__restrict + __abstime); + + + + +extern int pthread_condattr_init (pthread_condattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_condattr_getpshared (__const pthread_condattr_t * + __restrict __attr, + int *__restrict __pshared) __attribute__ ((__nothrow__)); + + +extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, + int __pshared) __attribute__ ((__nothrow__)); + + + +extern int pthread_condattr_getclock (__const pthread_condattr_t * + __restrict __attr, + __clockid_t *__restrict __clock_id) + __attribute__ ((__nothrow__)); + + +extern int pthread_condattr_setclock (pthread_condattr_t *__attr, + __clockid_t __clock_id) __attribute__ ((__nothrow__)); +# 951 "/usr/include/pthread.h" 3 4 +extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) + __attribute__ ((__nothrow__)); + + +extern int pthread_spin_destroy (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)); + + +extern int pthread_spin_lock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)); + + +extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)); + + +extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)); + + + + + + +extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, + __const pthread_barrierattr_t *__restrict + __attr, unsigned int __count) __attribute__ ((__nothrow__)); + + +extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __attribute__ ((__nothrow__)); + + +extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __attribute__ ((__nothrow__)); + + + +extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __attribute__ ((__nothrow__)); + + +extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t * + __restrict __attr, + int *__restrict __pshared) __attribute__ ((__nothrow__)); + + +extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, + int __pshared) __attribute__ ((__nothrow__)); +# 1007 "/usr/include/pthread.h" 3 4 +extern int pthread_key_create (pthread_key_t *__key, + void (*__destr_function) (void *)) __attribute__ ((__nothrow__)); + + +extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__)); + + +extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__)); + + +extern int pthread_setspecific (pthread_key_t __key, + __const void *__pointer) __attribute__ ((__nothrow__)); + + + + +extern int pthread_getcpuclockid (pthread_t __thread_id, + __clockid_t *__clock_id) __attribute__ ((__nothrow__)); +# 1039 "/usr/include/pthread.h" 3 4 +extern int pthread_atfork (void (*__prepare) (void), + void (*__parent) (void), + void (*__child) (void)) __attribute__ ((__nothrow__)); + + +# 51 "../../include/libunwind_i.h" 2 +#include +#include +#include +#include +# 54 "../../include/libunwind_i.h" +# 1 "/usr/include/unistd.h" 1 3 4 +# 26 "/usr/include/unistd.h" 3 4 +#include + + +# 171 "/usr/include/unistd.h" 3 4 +#include +# 171 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/posix_opt.h" 1 3 4 +# 172 "/usr/include/unistd.h" 2 3 4 + + + +#include +# 175 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/environments.h" 1 3 4 +# 23 "/usr/include/bits/environments.h" 3 4 +#include +# 23 "/usr/include/bits/environments.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 24 "/usr/include/bits/environments.h" 2 3 4 +# 176 "/usr/include/unistd.h" 2 3 4 +# 186 "/usr/include/unistd.h" 3 4 +#include +# 195 "/usr/include/unistd.h" 3 4 +#include +# 195 "/usr/include/unistd.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 196 "/usr/include/unistd.h" 2 3 4 +# 243 "/usr/include/unistd.h" 3 4 +typedef __socklen_t socklen_t; +# 256 "/usr/include/unistd.h" 3 4 +extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int euidaccess (__const char *__name, int __type) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int eaccess (__const char *__name, int __type) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int faccessat (int __fd, __const char *__file, int __type, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; +# 299 "/usr/include/unistd.h" 3 4 +extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__)); +# 310 "/usr/include/unistd.h" 3 4 +extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) + __attribute__ ((__nothrow__)); + + + + + + +extern int close (int __fd); + + + + + + +extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ; + + + + + +extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; +# 341 "/usr/include/unistd.h" 3 4 +extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, + __off_t __offset) ; + + + + + + +extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, + __off_t __offset) ; +# 369 "/usr/include/unistd.h" 3 4 +extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, + __off64_t __offset) ; + + +extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, + __off64_t __offset) ; + + + + + + + +extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) ; +# 391 "/usr/include/unistd.h" 3 4 +extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__)); +# 403 "/usr/include/unistd.h" 3 4 +extern unsigned int sleep (unsigned int __seconds); + + + + + + +extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) + __attribute__ ((__nothrow__)); + + + + + + +extern int usleep (__useconds_t __useconds); +# 427 "/usr/include/unistd.h" 3 4 +extern int pause (void); + + + +extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) ; + + + + +extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern int fchownat (int __fd, __const char *__file, __uid_t __owner, + __gid_t __group, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + +extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int fchdir (int __fd) __attribute__ ((__nothrow__)) ; +# 469 "/usr/include/unistd.h" 3 4 +extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) ; + + + + + +extern char *get_current_dir_name (void) __attribute__ ((__nothrow__)); + + + + + + +extern char *getwd (char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ; + + + + +extern int dup (int __fd) __attribute__ ((__nothrow__)) ; + + +extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__)); + + +extern char **__environ; + +extern char **environ; + + + + + +extern int execve (__const char *__path, char *__const __argv[], + char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) + __attribute__ ((__nothrow__)); + + + + +extern int execv (__const char *__path, char *__const __argv[]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execle (__const char *__path, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execl (__const char *__path, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execvp (__const char *__file, char *__const __argv[]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int execlp (__const char *__file, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int nice (int __inc) __attribute__ ((__nothrow__)) ; + + + + +extern void _exit (int __status) __attribute__ ((__noreturn__)); + + + + + +#include +# 552 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/confname.h" 1 3 4 +# 26 "/usr/include/bits/confname.h" 3 4 +enum + { + _PC_LINK_MAX, + + _PC_MAX_CANON, + + _PC_MAX_INPUT, + + _PC_NAME_MAX, + + _PC_PATH_MAX, + + _PC_PIPE_BUF, + + _PC_CHOWN_RESTRICTED, + + _PC_NO_TRUNC, + + _PC_VDISABLE, + + _PC_SYNC_IO, + + _PC_ASYNC_IO, + + _PC_PRIO_IO, + + _PC_SOCK_MAXBUF, + + _PC_FILESIZEBITS, + + _PC_REC_INCR_XFER_SIZE, + + _PC_REC_MAX_XFER_SIZE, + + _PC_REC_MIN_XFER_SIZE, + + _PC_REC_XFER_ALIGN, + + _PC_ALLOC_SIZE_MIN, + + _PC_SYMLINK_MAX, + + _PC_2_SYMLINKS + + }; + + +enum + { + _SC_ARG_MAX, + + _SC_CHILD_MAX, + + _SC_CLK_TCK, + + _SC_NGROUPS_MAX, + + _SC_OPEN_MAX, + + _SC_STREAM_MAX, + + _SC_TZNAME_MAX, + + _SC_JOB_CONTROL, + + _SC_SAVED_IDS, + + _SC_REALTIME_SIGNALS, + + _SC_PRIORITY_SCHEDULING, + + _SC_TIMERS, + + _SC_ASYNCHRONOUS_IO, + + _SC_PRIORITIZED_IO, + + _SC_SYNCHRONIZED_IO, + + _SC_FSYNC, + + _SC_MAPPED_FILES, + + _SC_MEMLOCK, + + _SC_MEMLOCK_RANGE, + + _SC_MEMORY_PROTECTION, + + _SC_MESSAGE_PASSING, + + _SC_SEMAPHORES, + + _SC_SHARED_MEMORY_OBJECTS, + + _SC_AIO_LISTIO_MAX, + + _SC_AIO_MAX, + + _SC_AIO_PRIO_DELTA_MAX, + + _SC_DELAYTIMER_MAX, + + _SC_MQ_OPEN_MAX, + + _SC_MQ_PRIO_MAX, + + _SC_VERSION, + + _SC_PAGESIZE, + + + _SC_RTSIG_MAX, + + _SC_SEM_NSEMS_MAX, + + _SC_SEM_VALUE_MAX, + + _SC_SIGQUEUE_MAX, + + _SC_TIMER_MAX, + + + + + _SC_BC_BASE_MAX, + + _SC_BC_DIM_MAX, + + _SC_BC_SCALE_MAX, + + _SC_BC_STRING_MAX, + + _SC_COLL_WEIGHTS_MAX, + + _SC_EQUIV_CLASS_MAX, + + _SC_EXPR_NEST_MAX, + + _SC_LINE_MAX, + + _SC_RE_DUP_MAX, + + _SC_CHARCLASS_NAME_MAX, + + + _SC_2_VERSION, + + _SC_2_C_BIND, + + _SC_2_C_DEV, + + _SC_2_FORT_DEV, + + _SC_2_FORT_RUN, + + _SC_2_SW_DEV, + + _SC_2_LOCALEDEF, + + + _SC_PII, + + _SC_PII_XTI, + + _SC_PII_SOCKET, + + _SC_PII_INTERNET, + + _SC_PII_OSI, + + _SC_POLL, + + _SC_SELECT, + + _SC_UIO_MAXIOV, + + _SC_IOV_MAX = _SC_UIO_MAXIOV, + + _SC_PII_INTERNET_STREAM, + + _SC_PII_INTERNET_DGRAM, + + _SC_PII_OSI_COTS, + + _SC_PII_OSI_CLTS, + + _SC_PII_OSI_M, + + _SC_T_IOV_MAX, + + + + _SC_THREADS, + + _SC_THREAD_SAFE_FUNCTIONS, + + _SC_GETGR_R_SIZE_MAX, + + _SC_GETPW_R_SIZE_MAX, + + _SC_LOGIN_NAME_MAX, + + _SC_TTY_NAME_MAX, + + _SC_THREAD_DESTRUCTOR_ITERATIONS, + + _SC_THREAD_KEYS_MAX, + + _SC_THREAD_STACK_MIN, + + _SC_THREAD_THREADS_MAX, + + _SC_THREAD_ATTR_STACKADDR, + + _SC_THREAD_ATTR_STACKSIZE, + + _SC_THREAD_PRIORITY_SCHEDULING, + + _SC_THREAD_PRIO_INHERIT, + + _SC_THREAD_PRIO_PROTECT, + + _SC_THREAD_PROCESS_SHARED, + + + _SC_NPROCESSORS_CONF, + + _SC_NPROCESSORS_ONLN, + + _SC_PHYS_PAGES, + + _SC_AVPHYS_PAGES, + + _SC_ATEXIT_MAX, + + _SC_PASS_MAX, + + + _SC_XOPEN_VERSION, + + _SC_XOPEN_XCU_VERSION, + + _SC_XOPEN_UNIX, + + _SC_XOPEN_CRYPT, + + _SC_XOPEN_ENH_I18N, + + _SC_XOPEN_SHM, + + + _SC_2_CHAR_TERM, + + _SC_2_C_VERSION, + + _SC_2_UPE, + + + _SC_XOPEN_XPG2, + + _SC_XOPEN_XPG3, + + _SC_XOPEN_XPG4, + + + _SC_CHAR_BIT, + + _SC_CHAR_MAX, + + _SC_CHAR_MIN, + + _SC_INT_MAX, + + _SC_INT_MIN, + + _SC_LONG_BIT, + + _SC_WORD_BIT, + + _SC_MB_LEN_MAX, + + _SC_NZERO, + + _SC_SSIZE_MAX, + + _SC_SCHAR_MAX, + + _SC_SCHAR_MIN, + + _SC_SHRT_MAX, + + _SC_SHRT_MIN, + + _SC_UCHAR_MAX, + + _SC_UINT_MAX, + + _SC_ULONG_MAX, + + _SC_USHRT_MAX, + + + _SC_NL_ARGMAX, + + _SC_NL_LANGMAX, + + _SC_NL_MSGMAX, + + _SC_NL_NMAX, + + _SC_NL_SETMAX, + + _SC_NL_TEXTMAX, + + + _SC_XBS5_ILP32_OFF32, + + _SC_XBS5_ILP32_OFFBIG, + + _SC_XBS5_LP64_OFF64, + + _SC_XBS5_LPBIG_OFFBIG, + + + _SC_XOPEN_LEGACY, + + _SC_XOPEN_REALTIME, + + _SC_XOPEN_REALTIME_THREADS, + + + _SC_ADVISORY_INFO, + + _SC_BARRIERS, + + _SC_BASE, + + _SC_C_LANG_SUPPORT, + + _SC_C_LANG_SUPPORT_R, + + _SC_CLOCK_SELECTION, + + _SC_CPUTIME, + + _SC_THREAD_CPUTIME, + + _SC_DEVICE_IO, + + _SC_DEVICE_SPECIFIC, + + _SC_DEVICE_SPECIFIC_R, + + _SC_FD_MGMT, + + _SC_FIFO, + + _SC_PIPE, + + _SC_FILE_ATTRIBUTES, + + _SC_FILE_LOCKING, + + _SC_FILE_SYSTEM, + + _SC_MONOTONIC_CLOCK, + + _SC_MULTI_PROCESS, + + _SC_SINGLE_PROCESS, + + _SC_NETWORKING, + + _SC_READER_WRITER_LOCKS, + + _SC_SPIN_LOCKS, + + _SC_REGEXP, + + _SC_REGEX_VERSION, + + _SC_SHELL, + + _SC_SIGNALS, + + _SC_SPAWN, + + _SC_SPORADIC_SERVER, + + _SC_THREAD_SPORADIC_SERVER, + + _SC_SYSTEM_DATABASE, + + _SC_SYSTEM_DATABASE_R, + + _SC_TIMEOUTS, + + _SC_TYPED_MEMORY_OBJECTS, + + _SC_USER_GROUPS, + + _SC_USER_GROUPS_R, + + _SC_2_PBS, + + _SC_2_PBS_ACCOUNTING, + + _SC_2_PBS_LOCATE, + + _SC_2_PBS_MESSAGE, + + _SC_2_PBS_TRACK, + + _SC_SYMLOOP_MAX, + + _SC_STREAMS, + + _SC_2_PBS_CHECKPOINT, + + + _SC_V6_ILP32_OFF32, + + _SC_V6_ILP32_OFFBIG, + + _SC_V6_LP64_OFF64, + + _SC_V6_LPBIG_OFFBIG, + + + _SC_HOST_NAME_MAX, + + _SC_TRACE, + + _SC_TRACE_EVENT_FILTER, + + _SC_TRACE_INHERIT, + + _SC_TRACE_LOG, + + + _SC_LEVEL1_ICACHE_SIZE, + + _SC_LEVEL1_ICACHE_ASSOC, + + _SC_LEVEL1_ICACHE_LINESIZE, + + _SC_LEVEL1_DCACHE_SIZE, + + _SC_LEVEL1_DCACHE_ASSOC, + + _SC_LEVEL1_DCACHE_LINESIZE, + + _SC_LEVEL2_CACHE_SIZE, + + _SC_LEVEL2_CACHE_ASSOC, + + _SC_LEVEL2_CACHE_LINESIZE, + + _SC_LEVEL3_CACHE_SIZE, + + _SC_LEVEL3_CACHE_ASSOC, + + _SC_LEVEL3_CACHE_LINESIZE, + + _SC_LEVEL4_CACHE_SIZE, + + _SC_LEVEL4_CACHE_ASSOC, + + _SC_LEVEL4_CACHE_LINESIZE, + + + + _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, + + _SC_RAW_SOCKETS + + }; + + +enum + { + _CS_PATH, + + + _CS_V6_WIDTH_RESTRICTED_ENVS, + + + _CS_GNU_LIBC_VERSION, + + _CS_GNU_LIBPTHREAD_VERSION, + + + _CS_LFS_CFLAGS = 1000, + + _CS_LFS_LDFLAGS, + + _CS_LFS_LIBS, + + _CS_LFS_LINTFLAGS, + + _CS_LFS64_CFLAGS, + + _CS_LFS64_LDFLAGS, + + _CS_LFS64_LIBS, + + _CS_LFS64_LINTFLAGS, + + + _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, + + _CS_XBS5_ILP32_OFF32_LDFLAGS, + + _CS_XBS5_ILP32_OFF32_LIBS, + + _CS_XBS5_ILP32_OFF32_LINTFLAGS, + + _CS_XBS5_ILP32_OFFBIG_CFLAGS, + + _CS_XBS5_ILP32_OFFBIG_LDFLAGS, + + _CS_XBS5_ILP32_OFFBIG_LIBS, + + _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, + + _CS_XBS5_LP64_OFF64_CFLAGS, + + _CS_XBS5_LP64_OFF64_LDFLAGS, + + _CS_XBS5_LP64_OFF64_LIBS, + + _CS_XBS5_LP64_OFF64_LINTFLAGS, + + _CS_XBS5_LPBIG_OFFBIG_CFLAGS, + + _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, + + _CS_XBS5_LPBIG_OFFBIG_LIBS, + + _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, + + + _CS_POSIX_V6_ILP32_OFF32_CFLAGS, + + _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, + + _CS_POSIX_V6_ILP32_OFF32_LIBS, + + _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, + + _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, + + _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, + + _CS_POSIX_V6_ILP32_OFFBIG_LIBS, + + _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, + + _CS_POSIX_V6_LP64_OFF64_CFLAGS, + + _CS_POSIX_V6_LP64_OFF64_LDFLAGS, + + _CS_POSIX_V6_LP64_OFF64_LIBS, + + _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, + + _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, + + _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, + + _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, + + _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + + }; +# 553 "/usr/include/unistd.h" 2 3 4 + + +extern long int pathconf (__const char *__path, int __name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__)); + + +extern long int sysconf (int __name) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + +extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__)); + + + + +extern __pid_t getpid (void) __attribute__ ((__nothrow__)); + + +extern __pid_t getppid (void) __attribute__ ((__nothrow__)); + + + + +extern __pid_t getpgrp (void) __attribute__ ((__nothrow__)); +# 589 "/usr/include/unistd.h" 3 4 +extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); + +extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); + + + + + + +extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__)); +# 615 "/usr/include/unistd.h" 3 4 +extern int setpgrp (void) __attribute__ ((__nothrow__)); +# 632 "/usr/include/unistd.h" 3 4 +extern __pid_t setsid (void) __attribute__ ((__nothrow__)); + + + +extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__)); + + + +extern __uid_t getuid (void) __attribute__ ((__nothrow__)); + + +extern __uid_t geteuid (void) __attribute__ ((__nothrow__)); + + +extern __gid_t getgid (void) __attribute__ ((__nothrow__)); + + +extern __gid_t getegid (void) __attribute__ ((__nothrow__)); + + + + +extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) ; + + + +extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + + + +extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__)); + + + + +extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__)); + + + + +extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__)); + + + + + + +extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + +extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__)); + + + + +extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + + +extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) + __attribute__ ((__nothrow__)); + + + +extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) + __attribute__ ((__nothrow__)); + + + +extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) + __attribute__ ((__nothrow__)); + + + +extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) + __attribute__ ((__nothrow__)); + + + + + + +extern __pid_t fork (void) __attribute__ ((__nothrow__)); + + + + + + +extern __pid_t vfork (void) __attribute__ ((__nothrow__)); + + + + + +extern char *ttyname (int __fd) __attribute__ ((__nothrow__)); + + + +extern int ttyname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + +extern int isatty (int __fd) __attribute__ ((__nothrow__)); + + + + + +extern int ttyslot (void) __attribute__ ((__nothrow__)); + + + + +extern int link (__const char *__from, __const char *__to) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern int linkat (int __fromfd, __const char *__from, int __tofd, + __const char *__to, int __flags) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) ; + + + + +extern int symlink (__const char *__from, __const char *__to) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern ssize_t readlink (__const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern int symlinkat (__const char *__from, int __tofd, + __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + + +extern ssize_t readlinkat (int __fd, __const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) ; + + + +extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int unlinkat (int __fd, __const char *__name, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + +extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__)); + + +extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__)); + + + + + + +extern char *getlogin (void); + + + + + + + +extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); + + + + +extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 835 "/usr/include/unistd.h" 3 4 +#include +# 835 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/getopt.h" 1 3 4 +# 59 "/usr/include/getopt.h" 3 4 +extern char *optarg; +# 73 "/usr/include/getopt.h" 3 4 +extern int optind; + + + + +extern int opterr; + + + +extern int optopt; +# 152 "/usr/include/getopt.h" 3 4 +extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) + __attribute__ ((__nothrow__)); +# 836 "/usr/include/unistd.h" 2 3 4 + + + + + + + +extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sethostname (__const char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int sethostid (long int __id) __attribute__ ((__nothrow__)) ; + + + + + +extern int getdomainname (char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern int setdomainname (__const char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern int vhangup (void) __attribute__ ((__nothrow__)); + + +extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + + +extern int profil (unsigned short int *__sample_buffer, size_t __size, + size_t __offset, unsigned int __scale) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int acct (__const char *__name) __attribute__ ((__nothrow__)); + + + +extern char *getusershell (void) __attribute__ ((__nothrow__)); +extern void endusershell (void) __attribute__ ((__nothrow__)); +extern void setusershell (void) __attribute__ ((__nothrow__)); + + + + + +extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) ; + + + + + + +extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1))); +# 921 "/usr/include/unistd.h" 3 4 +extern int fsync (int __fd); + + + + + + +extern long int gethostid (void); + + +extern void sync (void) __attribute__ ((__nothrow__)); + + + + +extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int getdtablesize (void) __attribute__ ((__nothrow__)); + + + + +extern int truncate (__const char *__file, __off_t __length) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 958 "/usr/include/unistd.h" 3 4 +extern int truncate64 (__const char *__file, __off64_t __length) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 968 "/usr/include/unistd.h" 3 4 +extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) ; +# 978 "/usr/include/unistd.h" 3 4 +extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) ; +# 988 "/usr/include/unistd.h" 3 4 +extern int brk (void *__addr) __attribute__ ((__nothrow__)) ; + + + + + +extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__)); +# 1009 "/usr/include/unistd.h" 3 4 +extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__)); +# 1032 "/usr/include/unistd.h" 3 4 +extern int lockf (int __fd, int __cmd, __off_t __len) ; +# 1042 "/usr/include/unistd.h" 3 4 +extern int lockf64 (int __fd, int __cmd, __off64_t __len) ; +# 1063 "/usr/include/unistd.h" 3 4 +extern int fdatasync (int __fildes) __attribute__ ((__nothrow__)); + + + + + + + +extern char *crypt (__const char *__key, __const char *__salt) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void swab (__const void *__restrict __from, void *__restrict __to, + ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + +extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); +# 1101 "/usr/include/unistd.h" 3 4 + +# 55 "../../include/libunwind_i.h" 2 + + +#include +# 112 "../../include/libunwind_i.h" +#pragma weak pthread_mutex_init +#pragma weak pthread_mutex_lock +#pragma weak pthread_mutex_unlock +# 176 "../../include/libunwind_i.h" +typedef sigset_t intrmask_t; + +extern intrmask_t _UIppc64_full_mask; +# 212 "../../include/libunwind_i.h" +extern int _Uppc64_Ifind_dynamic_proc_info (unw_addr_space_t as, + unw_word_t ip, + unw_proc_info_t *pi, + int need_unwind_info, void *arg); +extern int _Uppc64_Iextract_dynamic_proc_info (unw_addr_space_t as, + unw_word_t ip, + unw_proc_info_t *pi, + unw_dyn_info_t *di, + int need_unwind_info, + void *arg); +extern void _Uppc64_Iput_dynamic_unwind_info (unw_addr_space_t as, + unw_proc_info_t *pi, void *arg); + + + + +extern int _Uppc64_Idyn_remote_find_proc_info (unw_addr_space_t as, + unw_word_t ip, + unw_proc_info_t *pi, + int need_unwind_info, + void *arg); +extern void _Uppc64_Idyn_remote_put_unwind_info (unw_addr_space_t as, + unw_proc_info_t *pi, + void *arg); +extern int _Uppc64_Idyn_validate_cache (unw_addr_space_t as, void *arg); + +extern unw_dyn_info_list_t _U_dyn_info_list; +extern pthread_mutex_t _U_dyn_info_list_lock; +# 267 "../../include/libunwind_i.h" +static inline __attribute__((always_inline)) void +print_error (const char *string) +{ + write (2, string, strlen (string)); +} + + + +extern void _UIppc64_mi_init (void); +extern unw_word_t _U_dyn_info_list_addr (void); + + + +struct elf_image + { + void *image; + size_t size; + }; + +#include "tdep/libunwind_i.h" +# 286 "../../include/libunwind_i.h" +# 1 "../../include/tdep/libunwind_i.h" 1 +# 36 "../../include/tdep/libunwind_i.h" +#include +#include + +#include "elf64.h" +# 39 "../../include/tdep/libunwind_i.h" +# 1 "../elf64.h" 1 + + + + +#include "elfxx.h" +# 5 "../elf64.h" +# 1 "../elfxx.h" 1 +# 26 "../elfxx.h" +#include +# 26 "../elfxx.h" +# 1 "/usr/include/elf.h" 1 3 4 +# 23 "/usr/include/elf.h" 3 4 +#include + + + + + +#include + + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + + + + + + +typedef struct +{ + unsigned char e_ident[(16)]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct +{ + unsigned char e_ident[(16)]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; +# 267 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct +{ + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; +# 374 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct +{ + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + + + + +typedef struct +{ + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct +{ + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; +# 487 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + + + + + + +typedef struct +{ + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct +{ + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct +{ + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; +# 532 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct +{ + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; +# 613 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Sword d_tag; + union + { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct +{ + Elf64_Sxword d_tag; + union + { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; +# 777 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; + +} Elf32_Verdef; + +typedef struct +{ + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; + +} Elf64_Verdef; +# 819 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word vda_name; + Elf32_Word vda_next; + +} Elf32_Verdaux; + +typedef struct +{ + Elf64_Word vda_name; + Elf64_Word vda_next; + +} Elf64_Verdaux; + + + + +typedef struct +{ + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + + Elf32_Word vn_aux; + Elf32_Word vn_next; + +} Elf32_Verneed; + +typedef struct +{ + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + + Elf64_Word vn_aux; + Elf64_Word vn_next; + +} Elf64_Verneed; +# 866 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; + +} Elf32_Vernaux; + +typedef struct +{ + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; + +} Elf64_Vernaux; +# 900 "/usr/include/elf.h" 3 4 +typedef struct +{ + uint32_t a_type; + union + { + uint32_t a_val; + + + + } a_un; +} Elf32_auxv_t; + +typedef struct +{ + uint64_t a_type; + union + { + uint64_t a_val; + + + + } a_un; +} Elf64_auxv_t; +# 978 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct +{ + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; +# 1026 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct +{ + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; +# 1372 "/usr/include/elf.h" 3 4 +typedef union +{ + struct + { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct + { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct +{ + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct +{ + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; +# 1448 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; +# 1600 "/usr/include/elf.h" 3 4 +typedef struct +{ + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct +{ + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; +# 1631 "/usr/include/elf.h" 3 4 +typedef Elf32_Addr Elf32_Conflict; +# 2602 "/usr/include/elf.h" 3 4 + +# 27 "../elfxx.h" 2 +#include +# 27 "../elfxx.h" +# 1 "/usr/include/fcntl.h" 1 3 4 +# 27 "/usr/include/fcntl.h" 3 4 +#include + + + + + + +#include +# 34 "/usr/include/fcntl.h" 3 4 +# 1 "/usr/include/bits/fcntl.h" 1 3 4 +# 26 "/usr/include/bits/fcntl.h" 3 4 +#include +# 138 "/usr/include/bits/fcntl.h" 3 4 +struct flock + { + short int l_type; + short int l_whence; + + __off_t l_start; + __off_t l_len; + + + + + __pid_t l_pid; + }; + + +struct flock64 + { + short int l_type; + short int l_whence; + __off64_t l_start; + __off64_t l_len; + __pid_t l_pid; + }; +# 183 "/usr/include/bits/fcntl.h" 3 4 + + + +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) + __attribute__ ((__nothrow__)); + + +# 35 "/usr/include/fcntl.h" 2 3 4 + + + +#include +# 38 "/usr/include/fcntl.h" 3 4 +# 1 "/usr/include/sys/stat.h" 1 3 4 +# 26 "/usr/include/sys/stat.h" 3 4 +#include + +#include +# 37 "/usr/include/sys/stat.h" 3 4 +#include +# 103 "/usr/include/sys/stat.h" 3 4 + + +#include +# 105 "/usr/include/sys/stat.h" 3 4 +# 1 "/usr/include/bits/stat.h" 1 3 4 +# 24 "/usr/include/bits/stat.h" 3 4 +#include +# 24 "/usr/include/bits/stat.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 25 "/usr/include/bits/stat.h" 2 3 4 +# 45 "/usr/include/bits/stat.h" 3 4 +struct stat + { + __dev_t st_dev; + + unsigned short int __pad1; + __ino_t st_ino; + + + + __mode_t st_mode; + __nlink_t st_nlink; + __uid_t st_uid; + __gid_t st_gid; + __dev_t st_rdev; + unsigned short int __pad2; + + __off_t st_size; + + + + __blksize_t st_blksize; + + + __blkcnt_t st_blocks; +# 79 "/usr/include/bits/stat.h" 3 4 + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +# 93 "/usr/include/bits/stat.h" 3 4 + unsigned long int __unused4; + unsigned long int __unused5; + }; + + + +struct stat64 + { + __dev_t st_dev; + __ino64_t st_ino; + __mode_t st_mode; + __nlink_t st_nlink; + __uid_t st_uid; + __gid_t st_gid; + __dev_t st_rdev; + unsigned short int __pad2; + __off64_t st_size; + __blksize_t st_blksize; + __blkcnt64_t st_blocks; + + + + + + + + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +# 133 "/usr/include/bits/stat.h" 3 4 + unsigned long int __unused4; + unsigned long int __unused5; + }; +# 106 "/usr/include/sys/stat.h" 2 3 4 +# 207 "/usr/include/sys/stat.h" 3 4 +extern int stat (__const char *__restrict __file, + struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); +# 226 "/usr/include/sys/stat.h" 3 4 +extern int stat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + + +extern int fstatat (int __fd, __const char *__restrict __file, + struct stat *__restrict __buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +# 250 "/usr/include/sys/stat.h" 3 4 +extern int fstatat64 (int __fd, __const char *__restrict __file, + struct stat64 *__restrict __buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + + + + + + +extern int lstat (__const char *__restrict __file, + struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +# 272 "/usr/include/sys/stat.h" 3 4 +extern int lstat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int chmod (__const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int lchmod (__const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__)); + + + + + +extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + + + + +extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__)); + + + + +extern __mode_t getumask (void) __attribute__ ((__nothrow__)); + + + +extern int mkdir (__const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkdirat (int __fd, __const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + +extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int mknodat (int __fd, __const char *__path, __mode_t __mode, + __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + +extern int mkfifo (__const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); +# 380 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); +extern int __xstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat (int __ver, int __fildes, __const char *__filename, + struct stat *__stat_buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); +# 413 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); +extern int __xstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename, + struct stat64 *__stat_buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); + +extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, + __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int __xmknodat (int __ver, int __fd, __const char *__path, + __mode_t __mode, __dev_t *__dev) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5))); + + + + +extern __inline__ int +__attribute__ ((__nothrow__)) stat (__const char *__path, struct stat *__statbuf) +{ + return __xstat (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) lstat (__const char *__path, struct stat *__statbuf) +{ + return __lxstat (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstat (int __fd, struct stat *__statbuf) +{ + return __fxstat (3, __fd, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag) + +{ + return __fxstatat (3, __fd, __filename, __statbuf, __flag); +} + + + +extern __inline__ int +__attribute__ ((__nothrow__)) mknod (__const char *__path, __mode_t __mode, __dev_t __dev) +{ + return __xmknod (1, __path, __mode, &__dev); +} + + + +extern __inline__ int +__attribute__ ((__nothrow__)) mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) + +{ + return __xmknodat (1, __fd, __path, __mode, &__dev); +} + + + + + +extern __inline__ int +__attribute__ ((__nothrow__)) stat64 (__const char *__path, struct stat64 *__statbuf) +{ + return __xstat64 (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) lstat64 (__const char *__path, struct stat64 *__statbuf) +{ + return __lxstat64 (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstat64 (int __fd, struct stat64 *__statbuf) +{ + return __fxstat64 (3, __fd, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag) + +{ + return __fxstatat64 (3, __fd, __filename, __statbuf, __flag); +} + + + + + + + +# 39 "/usr/include/fcntl.h" 2 3 4 +# 76 "/usr/include/fcntl.h" 3 4 +extern int fcntl (int __fd, int __cmd, ...); +# 85 "/usr/include/fcntl.h" 3 4 +extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); +# 95 "/usr/include/fcntl.h" 3 4 +extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); +# 109 "/usr/include/fcntl.h" 3 4 +extern int openat (int __fd, __const char *__file, int __oflag, ...) + __attribute__ ((__nonnull__ (2))); +# 120 "/usr/include/fcntl.h" 3 4 +extern int openat64 (int __fd, __const char *__file, int __oflag, ...) + __attribute__ ((__nonnull__ (2))); +# 130 "/usr/include/fcntl.h" 3 4 +extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); +# 140 "/usr/include/fcntl.h" 3 4 +extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); +# 176 "/usr/include/fcntl.h" 3 4 +extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len, + int __advise) __attribute__ ((__nothrow__)); +# 188 "/usr/include/fcntl.h" 3 4 +extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, + int __advise) __attribute__ ((__nothrow__)); +# 198 "/usr/include/fcntl.h" 3 4 +extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); +# 209 "/usr/include/fcntl.h" 3 4 +extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); + + + + +# 28 "../elfxx.h" 2 +#include + +#include +# 30 "../elfxx.h" +# 1 "/usr/include/sys/mman.h" 1 3 4 +# 23 "/usr/include/sys/mman.h" 3 4 +#include +#include + +#include +# 26 "/usr/include/sys/mman.h" 3 4 +# 1 "/usr/lib/gcc/powerpc64-suse-linux/4.1.0/include/stddef.h" 1 3 4 +# 27 "/usr/include/sys/mman.h" 2 3 4 +# 42 "/usr/include/sys/mman.h" 3 4 +#include +# 42 "/usr/include/sys/mman.h" 3 4 +# 1 "/usr/include/bits/mman.h" 1 3 4 +# 43 "/usr/include/sys/mman.h" 2 3 4 + + + + + +# 58 "/usr/include/sys/mman.h" 3 4 +extern void *mmap (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off_t __offset) __attribute__ ((__nothrow__)); +# 71 "/usr/include/sys/mman.h" 3 4 +extern void *mmap64 (void *__addr, size_t __len, int __prot, + int __flags, int __fd, __off64_t __offset) __attribute__ ((__nothrow__)); + + + + +extern int munmap (void *__addr, size_t __len) __attribute__ ((__nothrow__)); + + + + +extern int mprotect (void *__addr, size_t __len, int __prot) __attribute__ ((__nothrow__)); + + + + + + + +extern int msync (void *__addr, size_t __len, int __flags); + + + + +extern int madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__)); + + + +extern int posix_madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__)); + + + + +extern int mlock (__const void *__addr, size_t __len) __attribute__ ((__nothrow__)); + + +extern int munlock (__const void *__addr, size_t __len) __attribute__ ((__nothrow__)); + + + + +extern int mlockall (int __flags) __attribute__ ((__nothrow__)); + + + +extern int munlockall (void) __attribute__ ((__nothrow__)); + + + + + + + +extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, + int __flags, ...) __attribute__ ((__nothrow__)); + + + + + + +extern int mincore (void *__start, size_t __len, unsigned char *__vec) + __attribute__ ((__nothrow__)); + + + +extern int remap_file_pages (void *__start, size_t __size, int __prot, + size_t __pgoff, int __flags) __attribute__ ((__nothrow__)); + + + + +extern int shm_open (__const char *__name, int __oflag, mode_t __mode); + + +extern int shm_unlink (__const char *__name); + + +# 31 "../elfxx.h" 2 +#include + +#include "libunwind_i.h" +# 33 "../elfxx.h" +# 1 "../../include/libunwind_i.h" 1 +# 34 "../elfxx.h" 2 +# 45 "../elfxx.h" +static inline int +elf_map_image (struct elf_image *ei, const char *path) +{ + struct stat stat; + int fd; + + fd = open (path, 00); + if (fd < 0) + return -1; + + if (fstat (fd, &stat) < 0) + { + close (fd); + return -1; + } + + ei->size = stat.st_size; + ei->image = mmap (((void *)0), ei->size, 0x1, 0x002, fd, 0); + close (fd); + if (ei->image == ((void *) -1)) + return -1; + + return 0; +} + +extern int _Uelf64_valid_object (struct elf_image *ei); +extern int _Uelf64_get_proc_name (pid_t pid, unw_word_t ip, + char *buf, size_t len, + unw_word_t *offp); +# 6 "../elf64.h" 2 +# 40 "../../include/tdep/libunwind_i.h" 2 +#include "dwarf.h" +# 40 "../../include/tdep/libunwind_i.h" +# 1 "../../include/dwarf.h" 1 +# 29 "../../include/dwarf.h" +#include + +struct dwarf_cursor; + +#include "tdep/dwarf-config.h" +# 33 "../../include/dwarf.h" +# 1 "../../include/tdep/dwarf-config.h" 1 +# 45 "../../include/tdep/dwarf-config.h" +typedef struct dwarf_loc + { + unw_word_t val; + + unw_word_t type; + + } +dwarf_loc_t; +# 34 "../../include/dwarf.h" 2 + + + +typedef enum + { + 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_skip = 0x2f, + 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_lit0 = 0x30, + DW_OP_lit1, DW_OP_lit2, DW_OP_lit3, DW_OP_lit4, DW_OP_lit5, + DW_OP_lit6, DW_OP_lit7, DW_OP_lit8, DW_OP_lit9, DW_OP_lit10, + DW_OP_lit11, DW_OP_lit12, DW_OP_lit13, DW_OP_lit14, DW_OP_lit15, + DW_OP_lit16, DW_OP_lit17, DW_OP_lit18, DW_OP_lit19, DW_OP_lit20, + DW_OP_lit21, DW_OP_lit22, DW_OP_lit23, DW_OP_lit24, DW_OP_lit25, + DW_OP_lit26, DW_OP_lit27, DW_OP_lit28, DW_OP_lit29, DW_OP_lit30, + DW_OP_lit31, + DW_OP_reg0 = 0x50, + DW_OP_reg1, DW_OP_reg2, DW_OP_reg3, DW_OP_reg4, DW_OP_reg5, + DW_OP_reg6, DW_OP_reg7, DW_OP_reg8, DW_OP_reg9, DW_OP_reg10, + DW_OP_reg11, DW_OP_reg12, DW_OP_reg13, DW_OP_reg14, DW_OP_reg15, + DW_OP_reg16, DW_OP_reg17, DW_OP_reg18, DW_OP_reg19, DW_OP_reg20, + DW_OP_reg21, DW_OP_reg22, DW_OP_reg23, DW_OP_reg24, DW_OP_reg25, + DW_OP_reg26, DW_OP_reg27, DW_OP_reg28, DW_OP_reg29, DW_OP_reg30, + DW_OP_reg31, + DW_OP_breg0 = 0x70, + DW_OP_breg1, DW_OP_breg2, DW_OP_breg3, DW_OP_breg4, DW_OP_breg5, + DW_OP_breg6, DW_OP_breg7, DW_OP_breg8, DW_OP_breg9, DW_OP_breg10, + DW_OP_breg11, DW_OP_breg12, DW_OP_breg13, DW_OP_breg14, DW_OP_breg15, + DW_OP_breg16, DW_OP_breg17, DW_OP_breg18, DW_OP_breg19, DW_OP_breg20, + DW_OP_breg21, DW_OP_breg22, DW_OP_breg23, DW_OP_breg24, DW_OP_breg25, + DW_OP_breg26, DW_OP_breg27, DW_OP_breg28, DW_OP_breg29, DW_OP_breg30, + DW_OP_breg31, + 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_lo_user = 0xe0, + DW_OP_hi_user = 0xff + } +dwarf_expr_op_t; + + + + + + +typedef enum + { + 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_lo_user = 0x1c, + 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, + DW_CFA_hi_user = 0x3c + } +dwarf_cfa_t; +# 200 "../../include/dwarf.h" +typedef enum + { + DWARF_WHERE_UNDEF, + DWARF_WHERE_SAME, + DWARF_WHERE_CFAREL, + DWARF_WHERE_REG, + DWARF_WHERE_EXPR, + } +dwarf_where_t; + +typedef struct + { + dwarf_where_t where; + unw_word_t val; + } +dwarf_save_loc_t; +# 230 "../../include/dwarf.h" +typedef struct dwarf_reg_state + { + struct dwarf_reg_state *next; + dwarf_save_loc_t reg[81 + 2]; + unw_word_t ip; + unw_word_t ret_addr_column; + unsigned short lru_chain; + unsigned short coll_chain; + unsigned short hint; + } +dwarf_reg_state_t; + +typedef struct dwarf_cie_info + { + unw_word_t cie_instr_start; + unw_word_t cie_instr_end; + unw_word_t fde_instr_start; + unw_word_t fde_instr_end; + unw_word_t code_align; + unw_word_t data_align; + unw_word_t ret_addr_column; + unw_word_t handler; + uint16_t abi; + uint16_t tag; + uint8_t fde_encoding; + uint8_t lsda_encoding; + unsigned int sized_augmentation : 1; + unsigned int have_abi_marker : 1; + } +dwarf_cie_info_t; + +typedef struct dwarf_state_record + { + unsigned char fde_encoding; + unw_word_t args_size; + + dwarf_reg_state_t rs_initial; + dwarf_reg_state_t rs_current; + } +dwarf_state_record_t; + +typedef struct dwarf_cursor + { + void *as_arg; + unw_addr_space_t as; + + unw_word_t cfa; + unw_word_t ip; + unw_word_t args_size; + unw_word_t ret_addr_column; + unw_word_t eh_args[2]; + unsigned int eh_valid_mask; + + dwarf_loc_t loc[81]; + + unsigned int pi_valid :1; + unsigned int pi_is_dynamic :1; + unw_proc_info_t pi; + + short hint; + short prev_rs; + } +dwarf_cursor_t; + + + + + + + +typedef unsigned char unw_hash_index_t; + +struct dwarf_rs_cache + { + + + + pthread_mutex_t lock; + + unsigned short lru_head; + unsigned short lru_tail; + + + unsigned short hash[(1 << (7 + 1))]; + + uint32_t generation; + + + dwarf_reg_state_t buckets[(1 << 7)]; + }; +# 336 "../../include/dwarf.h" +extern int _Uppc64_dwarf_init (void); +extern int _Uppc64_dwarf_find_proc_info (unw_addr_space_t as, unw_word_t ip, + unw_proc_info_t *pi, + int need_unwind_info, void *arg); +extern int _Uppc64_dwarf_search_unwind_table (unw_addr_space_t as, + unw_word_t ip, + unw_dyn_info_t *di, + unw_proc_info_t *pi, + int need_unwind_info, void *arg); +extern void _Uppc64_dwarf_put_unwind_info (unw_addr_space_t as, + unw_proc_info_t *pi, void *arg); +extern int _Uppc64_dwarf_eval_expr (struct dwarf_cursor *c, unw_word_t *addr, + unw_word_t len, unw_word_t *valp, + int *is_register); +extern int _Uppc64_dwarf_extract_proc_info_from_fde (unw_addr_space_t as, + unw_accessors_t *a, + unw_word_t *fde_addr, + unw_proc_info_t *pi, + int need_unwind_info, + void *arg); +extern int _Uppc64_dwarf_find_save_locs (struct dwarf_cursor *c); +extern int _Uppc64_dwarf_create_state_record (struct dwarf_cursor *c, + dwarf_state_record_t *sr); +extern int _Uppc64_dwarf_make_proc_info (struct dwarf_cursor *c); +extern int _Uppc64_dwarf_read_encoded_pointer (unw_addr_space_t as, + unw_accessors_t *a, + unw_word_t *addr, + unsigned char encoding, + const unw_proc_info_t *pi, + unw_word_t *valp, void *arg); +extern int _Uppc64_dwarf_step (struct dwarf_cursor *c); +# 41 "../../include/tdep/libunwind_i.h" 2 + +struct unw_addr_space + { + struct unw_accessors acc; + unw_caching_policy_t caching_policy; + + + + uint32_t cache_generation; + + unw_word_t dyn_generation; + unw_word_t dyn_info_list_addr; + struct dwarf_rs_cache global_cache; + }; + +struct cursor + { + struct dwarf_cursor dwarf; + + + + enum + { + PPC64_SCF_NONE, + PPC64_SCF_LINUX_RT_SIGFRAME + } + sigcontext_format; + unw_word_t sigcontext_addr; + }; +# 100 "../../include/tdep/libunwind_i.h" +static inline int +dwarf_getfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t *val) +{ + if (({ dwarf_loc_t _l = (loc); _l.val == 0 && _l.type == 0; })) + return -UNW_EBADREG; + + + abort (); +} + +static inline int +dwarf_putfp (struct dwarf_cursor *c, dwarf_loc_t loc, unw_fpreg_t val) +{ + if (({ dwarf_loc_t _l = (loc); _l.val == 0 && _l.type == 0; })) + return -UNW_EBADREG; + + + abort (); +} + +static inline int +dwarf_get (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t *val) +{ + if (({ dwarf_loc_t _l = (loc); _l.val == 0 && _l.type == 0; })) + return -UNW_EBADREG; + + + + + + if ((((loc).type & (1 << 1)) != 0)) + return (*c->as->acc.access_reg) (c->as, ((loc).val), val, + 0, c->as_arg); + else + return (*c->as->acc.access_mem) (c->as, ((loc).val), val, + 0, c->as_arg); +} + +static inline int +dwarf_put (struct dwarf_cursor *c, dwarf_loc_t loc, unw_word_t val) +{ + if (({ dwarf_loc_t _l = (loc); _l.val == 0 && _l.type == 0; })) + return -UNW_EBADREG; + + + + + + if ((((loc).type & (1 << 1)) != 0)) + return (*c->as->acc.access_reg) (c->as, ((loc).val), &val, + 1, c->as_arg); + else + return (*c->as->acc.access_mem) (c->as, ((loc).val), &val, + 1, c->as_arg); +} +# 185 "../../include/tdep/libunwind_i.h" +extern int _Uppc64_needs_initialization; + +extern void _Uppc64_init (void); +extern int _Uppc64_dwarf_search_unwind_table (unw_addr_space_t as, unw_word_t ip, + unw_dyn_info_t *di, unw_proc_info_t *pi, + int need_unwind_info, void *arg); +extern void *_Uppc64_uc_addr (ucontext_t *uc, int reg); +extern int _Uppc64_get_elf_image (struct elf_image *ei, pid_t pid, unw_word_t ip, + unsigned long *segbase, unsigned long *mapoff); +extern int _Uppc64_access_reg (struct cursor *c, unw_regnum_t reg, + unw_word_t *valp, int write); +extern int _Uppc64_access_fpreg (struct cursor *c, unw_regnum_t reg, + unw_fpreg_t *valp, int write); +# 287 "../../include/libunwind_i.h" 2 +# 39 "unwind_i.h" 2 +#include +# 180 "unwind_i.h" +extern void _Uppc64_local_addr_space_init (void); +extern int _Uppc64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, + void *arg); +# 30 "Ginit.c" 2 +# 38 "Ginit.c" +static struct unw_addr_space local_addr_space; + +__attribute__((visibility ("protected"))) unw_addr_space_t _Uppc64_local_addr_space = &local_addr_space; + +static inline void * +uc_addr (ucontext_t *uc, int reg) +{ + void *addr; + + if ((unsigned) (reg - UNW_PPC64_R0) < 32) + + + addr = &uc->uc_mcontext.uc_regs->gregs[reg - UNW_PPC64_R0]; + + + + + else if ((unsigned) (reg - UNW_PPC64_F0) < 32) + + + addr = &uc->uc_mcontext.uc_regs->fpregs.fpregs[reg - UNW_PPC64_F0]; + + + + + else if ((unsigned) (reg - UNW_PPC64_V0) < 32) + + + addr = &uc->uc_mcontext.uc_regs->vrregs.vrregs[reg - UNW_PPC64_V0][0]; + + + + + else + addr = ((void *)0); + return addr; +} +# 86 "Ginit.c" +__attribute__((visibility ("hidden"))) unw_dyn_info_list_t _U_dyn_info_list; + + + + + + +static void +put_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg) +{ + +} + +static int +get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, + void *arg) +{ + *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list; + return 0; +} + +static int +access_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write, + void *arg) +{ + if (write) + { + ; + *(unw_word_t *) addr = *val; + } + else + { + *val = *(unw_word_t *) addr; + ; + } + return 0; +} + +static int +access_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write, + void *arg) +{ + unw_word_t *addr; + ucontext_t *uc = arg; + + if ((unsigned int) (reg - UNW_PPC64_F0) < 32) + goto badreg; + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + *(unw_word_t *) addr = *val; + ; + } + else + { + *val = *(unw_word_t *) addr; + ; + } + return 0; + + badreg: + ; + return -UNW_EBADREG; +} + +static int +access_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val, + int write, void *arg) +{ + ucontext_t *uc = arg; + unw_fpreg_t *addr; + + if ((unsigned) (reg - UNW_PPC64_F0) > 32) + goto badreg; + + if ((unsigned) (reg - UNW_PPC64_V0) < 32) + goto badreg; + + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + ; + + *(unw_fpreg_t *) addr = *val; + } + else + { + *val = *(unw_fpreg_t *) addr; + ; + + } + return 0; + + badreg: + ; + + return -UNW_EBADREG; +} + +static int +access_vrreg (unw_addr_space_t as, unw_regnum_t reg, unw_vrreg_t *val, + int write, void *arg) +{ + ucontext_t *uc = arg; + unw_fpreg_t *addr; + + if ((unsigned) (reg - UNW_PPC64_V0) > 32) + goto badreg; + + + addr = uc_addr (uc, reg); + if (!addr) + goto badreg; + + if (write) + { + ; + + memcpy(addr, val, sizeof(unw_vrreg_t)); + } + else + { + memcpy(val, addr, sizeof(unw_vrreg_t)); + ; + + } + return 0; + + badreg: + ; + + return -UNW_EBADREG; +} + +static int +get_static_proc_name (unw_addr_space_t as, unw_word_t ip, + char *buf, size_t buf_len, unw_word_t *offp, + void *arg) +{ + return _Uelf32_get_proc_name (getpid (), ip, buf, buf_len, offp); +} + +__attribute__((visibility ("hidden"))) void +_Uppc64_local_addr_space_init (void) +{ + memset (&local_addr_space, 0, sizeof (local_addr_space)); + local_addr_space.caching_policy = UNW_CACHE_GLOBAL; + local_addr_space.acc.find_proc_info = _Uppc64_dwarf_find_proc_info; + local_addr_space.acc.put_unwind_info = put_unwind_info; + local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr; + local_addr_space.acc.access_mem = access_mem; + local_addr_space.acc.access_reg = access_reg; + local_addr_space.acc.access_fpreg = access_fpreg; + local_addr_space.acc.access_vrreg = access_vrreg; + local_addr_space.acc.resume = _Uppc64_local_resume; + local_addr_space.acc.get_proc_name = get_static_proc_name; + _Uppc64_flush_cache (&local_addr_space, 0, 0); +} Index: frysk/frysk-imports/libunwind/src/ppc64/Ginit_remote.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Ginit_remote.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Ginit_remote.c 2007-05-18 13:13:55.000000000 -0300 @@ -1,10 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (c) 2003 Hewlett-Packard Development Company, L.P. - Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly (or made empty stubs) for - building frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. +Contributed by Corey Ashford This file is part of libunwind. Index: frysk/frysk-imports/libunwind/src/ppc64/Gis_signal_frame.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Gis_signal_frame.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Gis_signal_frame.c 2007-05-18 13:13:55.000000000 -0300 @@ -30,8 +30,39 @@ #include "unwind_i.h" PROTECTED int -unw_is_signal_frame (unw_cursor_t *cursor) +unw_is_signal_frame (unw_cursor_t * cursor) { - /* XXX: empty stub. */ - return 0; + struct cursor *c = (struct cursor *) cursor; + unw_word_t w0, w1, ip; + unw_addr_space_t as; + unw_accessors_t *a; + void *arg; + int ret; + + as = c->dwarf.as; + a = unw_get_accessors (as); + a->validate = 1; /* Don't trust the ip */ + arg = c->dwarf.as_arg; + + /* Check if return address points at sigreturn sequence. + on ppc64 Linux that is (see libc.so): + 0x38210080 addi r1, r1, 128 // pop the stack + 0x380000ac li r0, 172 // invoke system service 172 + 0x44000002 sc + */ + + ip = c->dwarf.ip; + if (ip == 0) + return 0; + + /* Read up two 8-byte words at the IP. We are only looking at 3 + consecutive 32-bit words, so the second 8-byte word needs to be + shifted right by 32 bits (think big-endian) */ + + if ((ret = (*a->access_mem) (as, ip, &w0, 0, arg)) < 0 + || (ret = (*a->access_mem) (as, ip + 8, &w1, 0, arg)) < 0) + return 0; + w1 >>= 32; + return (w0 == 0x38210080380000ac && w1 == 0x44000002); + } Index: frysk/frysk-imports/libunwind/src/ppc64/Gregs.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Gregs.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Gregs.c 2007-05-18 13:13:55.000000000 -0300 @@ -1,10 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (c) 2002-2004 Hewlett-Packard Development Company, L.P. - Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly (or made empty stubs) for - building frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. +Contributed by Corey Ashford This file is part of libunwind. @@ -33,14 +30,76 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp, int write) { - /* XXX: empty stub. */ - return -UNW_EBADREG; + struct dwarf_loc loc; + + switch (reg) + { + case UNW_TDEP_IP: + if (write) + { + c->dwarf.ip = *valp; /* update the IP cache */ + if (c->dwarf.pi_valid && (*valp < c->dwarf.pi.start_ip + || *valp >= c->dwarf.pi.end_ip)) + c->dwarf.pi_valid = 0; /* new IP outside of current proc */ + } + else + *valp = c->dwarf.ip; + return 0; + + case UNW_TDEP_SP: + if (write) + return -UNW_EREADONLYREG; + *valp = c->dwarf.cfa; + return 0; + + + default: + break; + } + + /* make sure it's not an FP or VR register */ + if ((((unsigned) (reg - UNW_PPC64_F0)) <= 31) || + (((unsigned) (reg - UNW_PPC64_V0)) <= 31)) + return -UNW_EBADREG; + + loc = c->dwarf.loc[reg]; + + if (write) + return dwarf_put (&c->dwarf, loc, *valp); + else + return dwarf_get (&c->dwarf, loc, valp); } HIDDEN int tdep_access_fpreg (struct cursor *c, unw_regnum_t reg, unw_fpreg_t *valp, int write) { - /* XXX: empty stub. */ - return -UNW_EBADREG; + struct dwarf_loc loc; + + if ((unsigned) (reg - UNW_PPC64_F0) >= 32) + return -UNW_EBADREG; + + loc = c->dwarf.loc[reg]; + + if (write) + return dwarf_putfp (&c->dwarf, loc, *valp); + else + return dwarf_getfp (&c->dwarf, loc, valp); +} + +HIDDEN int +tdep_access_vreg (struct cursor *c, unw_regnum_t reg, unw_vreg_t *valp, + int write) +{ + struct dwarf_loc loc; + + if ((unsigned) (reg - UNW_PPC64_V0) >= 32) + return -UNW_EBADREG; + + loc = c->dwarf.loc[reg]; + + if (write) + return dwarf_putvr (&c->dwarf, loc, *valp); + else + return dwarf_getvr (&c->dwarf, loc, valp); } Index: frysk/frysk-imports/libunwind/src/ppc64/Gstep.asm =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/Gstep.asm 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,2029 @@ + +Gstep.o: file format elf64-powerpc + +Disassembly of section .text: + +0000000000000000 <._Uppc64_step>: + 0: 7c 08 02 a6 mflr r0 + 4: fb e1 ff f8 std r31,-8(r1) + 8: f8 01 00 10 std r0,16(r1) + c: f8 21 f5 e1 stdu r1,-2592(r1) + 10: 7c 3f 0b 78 mr r31,r1 + 14: f8 7f 0a 50 std r3,2640(r31) + 18: e8 1f 0a 50 ld r0,2640(r31) + 1c: f8 1f 00 90 std r0,144(r31) + 20: e9 3f 00 90 ld r9,144(r31) + 24: e8 09 00 18 ld r0,24(r9) + 28: 2f a0 00 00 cmpdi cr7,r0,0 + 2c: 40 9e 00 10 bne- cr7,3c <._Uppc64_step+0x3c> + 30: 38 00 00 00 li r0,0 + 34: f8 1f 0a 00 std r0,2560(r31) + 38: 48 00 1d c4 b 1dfc <._Uppc64_step+0x1dfc> + 3c: e8 1f 00 90 ld r0,144(r31) + 40: 7c 03 03 78 mr r3,r0 + 44: 48 00 00 01 bl 44 <._Uppc64_step+0x44> + 48: 60 00 00 00 nop + 4c: 7c 60 1b 78 mr r0,r3 + 50: 90 1f 00 78 stw r0,120(r31) + 54: 80 1f 00 78 lwz r0,120(r31) + 58: 2f 80 00 00 cmpwi cr7,r0,0 + 5c: 40 9c 00 24 bge- cr7,80 <._Uppc64_step+0x80> + 60: 80 1f 00 78 lwz r0,120(r31) + 64: 39 20 ff f6 li r9,-10 + 68: 7f 80 48 00 cmpw cr7,r0,r9 + 6c: 41 9e 00 14 beq- cr7,80 <._Uppc64_step+0x80> + 70: 80 1f 00 78 lwz r0,120(r31) + 74: 7c 00 07 b4 extsw r0,r0 + 78: f8 1f 0a 00 std r0,2560(r31) + 7c: 48 00 1d 80 b 1dfc <._Uppc64_step+0x1dfc> + 80: 80 1f 00 78 lwz r0,120(r31) + 84: 7c 00 07 b4 extsw r0,r0 + 88: 78 00 0f e0 rldicl r0,r0,1,63 + 8c: 2f a0 00 00 cmpdi cr7,r0,0 + 90: 41 9e 1d 54 beq- cr7,1de4 <._Uppc64_step+0x1de4> + 94: e8 7f 0a 50 ld r3,2640(r31) + 98: 48 00 00 01 bl 98 <._Uppc64_step+0x98> + 9c: 60 00 00 00 nop + a0: 7c 60 1b 78 mr r0,r3 + a4: 2f a0 00 00 cmpdi cr7,r0,0 + a8: 41 9e 1c 00 beq- cr7,1ca8 <._Uppc64_step+0x1ca8> + ac: e9 3f 00 90 ld r9,144(r31) + b0: e9 29 00 10 ld r9,16(r9) + b4: 38 09 00 80 addi r0,r9,128 + b8: f8 1f 00 70 std r0,112(r31) + bc: e9 3f 00 90 ld r9,144(r31) + c0: 38 00 00 01 li r0,1 + c4: 90 09 07 d8 stw r0,2008(r9) + c8: e9 3f 00 90 ld r9,144(r31) + cc: e8 1f 00 70 ld r0,112(r31) + d0: f8 09 07 e0 std r0,2016(r9) + d4: e9 3f 00 70 ld r9,112(r31) + d8: 38 09 00 f0 addi r0,r9,240 + dc: f8 1f 09 78 std r0,2424(r31) + e0: 38 00 00 00 li r0,0 + e4: f8 1f 09 80 std r0,2432(r31) + e8: 39 3f 09 78 addi r9,r31,2424 + ec: e9 49 00 08 ld r10,8(r9) + f0: e9 29 00 00 ld r9,0(r9) + f4: 39 7f 09 c8 addi r11,r31,2504 + f8: f9 2b 00 00 std r9,0(r11) + fc: f9 4b 00 08 std r10,8(r11) + 100: e9 3f 00 70 ld r9,112(r31) + 104: 38 09 01 e8 addi r0,r9,488 + 108: f8 1f 09 68 std r0,2408(r31) + 10c: 38 00 00 00 li r0,0 + 110: f8 1f 09 70 std r0,2416(r31) + 114: 39 3f 09 68 addi r9,r31,2408 + 118: e9 49 00 08 ld r10,8(r9) + 11c: e9 29 00 00 ld r9,0(r9) + 120: 39 7f 09 d8 addi r11,r31,2520 + 124: f9 2b 00 00 std r9,0(r11) + 128: f9 4b 00 08 std r10,8(r11) + 12c: e8 1f 00 90 ld r0,144(r31) + 130: e9 3f 00 90 ld r9,144(r31) + 134: 39 69 00 10 addi r11,r9,16 + 138: 7c 03 03 78 mr r3,r0 + 13c: 39 3f 09 c8 addi r9,r31,2504 + 140: e8 89 00 00 ld r4,0(r9) + 144: e8 a9 00 08 ld r5,8(r9) + 148: 7d 66 5b 78 mr r6,r11 + 14c: 48 00 00 19 bl 164 <._Uppc64_step+0x164> + 150: 7c 60 1b 78 mr r0,r3 + 154: 90 1f 00 78 stw r0,120(r31) + 158: 80 1f 00 78 lwz r0,120(r31) + 15c: 2f 80 00 00 cmpwi cr7,r0,0 + 160: 40 9c 00 14 bge- cr7,174 <._Uppc64_step+0x174> + 164: 80 1f 00 78 lwz r0,120(r31) + 168: 7c 00 07 b4 extsw r0,r0 + 16c: f8 1f 0a 00 std r0,2560(r31) + 170: 48 00 1c 8c b 1dfc <._Uppc64_step+0x1dfc> + 174: e8 1f 00 90 ld r0,144(r31) + 178: e9 3f 00 90 ld r9,144(r31) + 17c: 39 69 00 18 addi r11,r9,24 + 180: 7c 03 03 78 mr r3,r0 + 184: 39 3f 09 d8 addi r9,r31,2520 + 188: e8 89 00 00 ld r4,0(r9) + 18c: e8 a9 00 08 ld r5,8(r9) + 190: 7d 66 5b 78 mr r6,r11 + 194: 48 00 00 19 bl 1ac <._Uppc64_step+0x1ac> + 198: 7c 60 1b 78 mr r0,r3 + 19c: 90 1f 00 78 stw r0,120(r31) + 1a0: 80 1f 00 78 lwz r0,120(r31) + 1a4: 2f 80 00 00 cmpwi cr7,r0,0 + 1a8: 40 9c 00 14 bge- cr7,1bc <._Uppc64_step+0x1bc> + 1ac: 80 1f 00 78 lwz r0,120(r31) + 1b0: 7c 00 07 b4 extsw r0,r0 + 1b4: f8 1f 0a 00 std r0,2560(r31) + 1b8: 48 00 1c 44 b 1dfc <._Uppc64_step+0x1dfc> + 1bc: e9 3f 00 70 ld r9,112(r31) + 1c0: 38 09 00 e8 addi r0,r9,232 + 1c4: f8 1f 09 58 std r0,2392(r31) + 1c8: 38 00 00 00 li r0,0 + 1cc: f8 1f 09 60 std r0,2400(r31) + 1d0: e9 7f 00 90 ld r11,144(r31) + 1d4: 39 3f 09 58 addi r9,r31,2392 + 1d8: e9 49 00 08 ld r10,8(r9) + 1dc: e9 29 00 00 ld r9,0(r9) + 1e0: 39 6b 00 58 addi r11,r11,88 + 1e4: f9 2b 00 00 std r9,0(r11) + 1e8: f9 4b 00 08 std r10,8(r11) + 1ec: e9 3f 00 70 ld r9,112(r31) + 1f0: 38 09 00 f0 addi r0,r9,240 + 1f4: f8 1f 09 48 std r0,2376(r31) + 1f8: 38 00 00 00 li r0,0 + 1fc: f8 1f 09 50 std r0,2384(r31) + 200: e9 7f 00 90 ld r11,144(r31) + 204: 39 3f 09 48 addi r9,r31,2376 + 208: e9 49 00 08 ld r10,8(r9) + 20c: e9 29 00 00 ld r9,0(r9) + 210: 39 6b 00 68 addi r11,r11,104 + 214: f9 2b 00 00 std r9,0(r11) + 218: f9 4b 00 08 std r10,8(r11) + 21c: e9 3f 00 70 ld r9,112(r31) + 220: 38 09 00 f8 addi r0,r9,248 + 224: f8 1f 09 38 std r0,2360(r31) + 228: 38 00 00 00 li r0,0 + 22c: f8 1f 09 40 std r0,2368(r31) + 230: e9 7f 00 90 ld r11,144(r31) + 234: 39 3f 09 38 addi r9,r31,2360 + 238: e9 49 00 08 ld r10,8(r9) + 23c: e9 29 00 00 ld r9,0(r9) + 240: 39 6b 00 78 addi r11,r11,120 + 244: f9 2b 00 00 std r9,0(r11) + 248: f9 4b 00 08 std r10,8(r11) + 24c: e9 3f 00 70 ld r9,112(r31) + 250: 38 09 01 00 addi r0,r9,256 + 254: f8 1f 09 28 std r0,2344(r31) + 258: 38 00 00 00 li r0,0 + 25c: f8 1f 09 30 std r0,2352(r31) + 260: e9 7f 00 90 ld r11,144(r31) + 264: 39 3f 09 28 addi r9,r31,2344 + 268: e9 49 00 08 ld r10,8(r9) + 26c: e9 29 00 00 ld r9,0(r9) + 270: 39 6b 00 88 addi r11,r11,136 + 274: f9 2b 00 00 std r9,0(r11) + 278: f9 4b 00 08 std r10,8(r11) + 27c: e9 3f 00 70 ld r9,112(r31) + 280: 38 09 01 08 addi r0,r9,264 + 284: f8 1f 09 18 std r0,2328(r31) + 288: 38 00 00 00 li r0,0 + 28c: f8 1f 09 20 std r0,2336(r31) + 290: e9 7f 00 90 ld r11,144(r31) + 294: 39 3f 09 18 addi r9,r31,2328 + 298: e9 49 00 08 ld r10,8(r9) + 29c: e9 29 00 00 ld r9,0(r9) + 2a0: 39 6b 00 98 addi r11,r11,152 + 2a4: f9 2b 00 00 std r9,0(r11) + 2a8: f9 4b 00 08 std r10,8(r11) + 2ac: e9 3f 00 70 ld r9,112(r31) + 2b0: 38 09 01 10 addi r0,r9,272 + 2b4: f8 1f 09 08 std r0,2312(r31) + 2b8: 38 00 00 00 li r0,0 + 2bc: f8 1f 09 10 std r0,2320(r31) + 2c0: e9 7f 00 90 ld r11,144(r31) + 2c4: 39 3f 09 08 addi r9,r31,2312 + 2c8: e9 49 00 08 ld r10,8(r9) + 2cc: e9 29 00 00 ld r9,0(r9) + 2d0: 39 6b 00 a8 addi r11,r11,168 + 2d4: f9 2b 00 00 std r9,0(r11) + 2d8: f9 4b 00 08 std r10,8(r11) + 2dc: e9 3f 00 70 ld r9,112(r31) + 2e0: 38 09 01 18 addi r0,r9,280 + 2e4: f8 1f 08 f8 std r0,2296(r31) + 2e8: 38 00 00 00 li r0,0 + 2ec: f8 1f 09 00 std r0,2304(r31) + 2f0: e9 7f 00 90 ld r11,144(r31) + 2f4: 39 3f 08 f8 addi r9,r31,2296 + 2f8: e9 49 00 08 ld r10,8(r9) + 2fc: e9 29 00 00 ld r9,0(r9) + 300: 39 6b 00 b8 addi r11,r11,184 + 304: f9 2b 00 00 std r9,0(r11) + 308: f9 4b 00 08 std r10,8(r11) + 30c: e9 3f 00 70 ld r9,112(r31) + 310: 38 09 01 20 addi r0,r9,288 + 314: f8 1f 08 e8 std r0,2280(r31) + 318: 38 00 00 00 li r0,0 + 31c: f8 1f 08 f0 std r0,2288(r31) + 320: e9 7f 00 90 ld r11,144(r31) + 324: 39 3f 08 e8 addi r9,r31,2280 + 328: e9 49 00 08 ld r10,8(r9) + 32c: e9 29 00 00 ld r9,0(r9) + 330: 39 6b 00 c8 addi r11,r11,200 + 334: f9 2b 00 00 std r9,0(r11) + 338: f9 4b 00 08 std r10,8(r11) + 33c: e9 3f 00 70 ld r9,112(r31) + 340: 38 09 01 28 addi r0,r9,296 + 344: f8 1f 08 d8 std r0,2264(r31) + 348: 38 00 00 00 li r0,0 + 34c: f8 1f 08 e0 std r0,2272(r31) + 350: e9 7f 00 90 ld r11,144(r31) + 354: 39 3f 08 d8 addi r9,r31,2264 + 358: e9 49 00 08 ld r10,8(r9) + 35c: e9 29 00 00 ld r9,0(r9) + 360: 39 6b 00 d8 addi r11,r11,216 + 364: f9 2b 00 00 std r9,0(r11) + 368: f9 4b 00 08 std r10,8(r11) + 36c: e9 3f 00 70 ld r9,112(r31) + 370: 38 09 01 30 addi r0,r9,304 + 374: f8 1f 08 c8 std r0,2248(r31) + 378: 38 00 00 00 li r0,0 + 37c: f8 1f 08 d0 std r0,2256(r31) + 380: e9 7f 00 90 ld r11,144(r31) + 384: 39 3f 08 c8 addi r9,r31,2248 + 388: e9 49 00 08 ld r10,8(r9) + 38c: e9 29 00 00 ld r9,0(r9) + 390: 39 6b 00 e8 addi r11,r11,232 + 394: f9 2b 00 00 std r9,0(r11) + 398: f9 4b 00 08 std r10,8(r11) + 39c: e9 3f 00 70 ld r9,112(r31) + 3a0: 38 09 01 38 addi r0,r9,312 + 3a4: f8 1f 08 b8 std r0,2232(r31) + 3a8: 38 00 00 00 li r0,0 + 3ac: f8 1f 08 c0 std r0,2240(r31) + 3b0: e9 7f 00 90 ld r11,144(r31) + 3b4: 39 3f 08 b8 addi r9,r31,2232 + 3b8: e9 49 00 08 ld r10,8(r9) + 3bc: e9 29 00 00 ld r9,0(r9) + 3c0: 39 6b 00 f8 addi r11,r11,248 + 3c4: f9 2b 00 00 std r9,0(r11) + 3c8: f9 4b 00 08 std r10,8(r11) + 3cc: e9 3f 00 70 ld r9,112(r31) + 3d0: 38 09 01 40 addi r0,r9,320 + 3d4: f8 1f 08 a8 std r0,2216(r31) + 3d8: 38 00 00 00 li r0,0 + 3dc: f8 1f 08 b0 std r0,2224(r31) + 3e0: e9 7f 00 90 ld r11,144(r31) + 3e4: 39 3f 08 a8 addi r9,r31,2216 + 3e8: e9 49 00 08 ld r10,8(r9) + 3ec: e9 29 00 00 ld r9,0(r9) + 3f0: 39 6b 01 08 addi r11,r11,264 + 3f4: f9 2b 00 00 std r9,0(r11) + 3f8: f9 4b 00 08 std r10,8(r11) + 3fc: e9 3f 00 70 ld r9,112(r31) + 400: 38 09 01 48 addi r0,r9,328 + 404: f8 1f 08 98 std r0,2200(r31) + 408: 38 00 00 00 li r0,0 + 40c: f8 1f 08 a0 std r0,2208(r31) + 410: e9 7f 00 90 ld r11,144(r31) + 414: 39 3f 08 98 addi r9,r31,2200 + 418: e9 49 00 08 ld r10,8(r9) + 41c: e9 29 00 00 ld r9,0(r9) + 420: 39 6b 01 18 addi r11,r11,280 + 424: f9 2b 00 00 std r9,0(r11) + 428: f9 4b 00 08 std r10,8(r11) + 42c: e9 3f 00 70 ld r9,112(r31) + 430: 38 09 01 50 addi r0,r9,336 + 434: f8 1f 08 88 std r0,2184(r31) + 438: 38 00 00 00 li r0,0 + 43c: f8 1f 08 90 std r0,2192(r31) + 440: e9 7f 00 90 ld r11,144(r31) + 444: 39 3f 08 88 addi r9,r31,2184 + 448: e9 49 00 08 ld r10,8(r9) + 44c: e9 29 00 00 ld r9,0(r9) + 450: 39 6b 01 28 addi r11,r11,296 + 454: f9 2b 00 00 std r9,0(r11) + 458: f9 4b 00 08 std r10,8(r11) + 45c: e9 3f 00 70 ld r9,112(r31) + 460: 38 09 01 58 addi r0,r9,344 + 464: f8 1f 08 78 std r0,2168(r31) + 468: 38 00 00 00 li r0,0 + 46c: f8 1f 08 80 std r0,2176(r31) + 470: e9 7f 00 90 ld r11,144(r31) + 474: 39 3f 08 78 addi r9,r31,2168 + 478: e9 49 00 08 ld r10,8(r9) + 47c: e9 29 00 00 ld r9,0(r9) + 480: 39 6b 01 38 addi r11,r11,312 + 484: f9 2b 00 00 std r9,0(r11) + 488: f9 4b 00 08 std r10,8(r11) + 48c: e9 3f 00 70 ld r9,112(r31) + 490: 38 09 01 60 addi r0,r9,352 + 494: f8 1f 08 68 std r0,2152(r31) + 498: 38 00 00 00 li r0,0 + 49c: f8 1f 08 70 std r0,2160(r31) + 4a0: e9 7f 00 90 ld r11,144(r31) + 4a4: 39 3f 08 68 addi r9,r31,2152 + 4a8: e9 49 00 08 ld r10,8(r9) + 4ac: e9 29 00 00 ld r9,0(r9) + 4b0: 39 6b 01 48 addi r11,r11,328 + 4b4: f9 2b 00 00 std r9,0(r11) + 4b8: f9 4b 00 08 std r10,8(r11) + 4bc: e9 3f 00 70 ld r9,112(r31) + 4c0: 38 09 01 68 addi r0,r9,360 + 4c4: f8 1f 08 58 std r0,2136(r31) + 4c8: 38 00 00 00 li r0,0 + 4cc: f8 1f 08 60 std r0,2144(r31) + 4d0: e9 7f 00 90 ld r11,144(r31) + 4d4: 39 3f 08 58 addi r9,r31,2136 + 4d8: e9 49 00 08 ld r10,8(r9) + 4dc: e9 29 00 00 ld r9,0(r9) + 4e0: 39 6b 01 58 addi r11,r11,344 + 4e4: f9 2b 00 00 std r9,0(r11) + 4e8: f9 4b 00 08 std r10,8(r11) + 4ec: e9 3f 00 70 ld r9,112(r31) + 4f0: 38 09 01 70 addi r0,r9,368 + 4f4: f8 1f 08 48 std r0,2120(r31) + 4f8: 38 00 00 00 li r0,0 + 4fc: f8 1f 08 50 std r0,2128(r31) + 500: e9 7f 00 90 ld r11,144(r31) + 504: 39 3f 08 48 addi r9,r31,2120 + 508: e9 49 00 08 ld r10,8(r9) + 50c: e9 29 00 00 ld r9,0(r9) + 510: 39 6b 01 68 addi r11,r11,360 + 514: f9 2b 00 00 std r9,0(r11) + 518: f9 4b 00 08 std r10,8(r11) + 51c: e9 3f 00 70 ld r9,112(r31) + 520: 38 09 01 78 addi r0,r9,376 + 524: f8 1f 08 38 std r0,2104(r31) + 528: 38 00 00 00 li r0,0 + 52c: f8 1f 08 40 std r0,2112(r31) + 530: e9 7f 00 90 ld r11,144(r31) + 534: 39 3f 08 38 addi r9,r31,2104 + 538: e9 49 00 08 ld r10,8(r9) + 53c: e9 29 00 00 ld r9,0(r9) + 540: 39 6b 01 78 addi r11,r11,376 + 544: f9 2b 00 00 std r9,0(r11) + 548: f9 4b 00 08 std r10,8(r11) + 54c: e9 3f 00 70 ld r9,112(r31) + 550: 38 09 01 80 addi r0,r9,384 + 554: f8 1f 08 28 std r0,2088(r31) + 558: 38 00 00 00 li r0,0 + 55c: f8 1f 08 30 std r0,2096(r31) + 560: e9 7f 00 90 ld r11,144(r31) + 564: 39 3f 08 28 addi r9,r31,2088 + 568: e9 49 00 08 ld r10,8(r9) + 56c: e9 29 00 00 ld r9,0(r9) + 570: 39 6b 01 88 addi r11,r11,392 + 574: f9 2b 00 00 std r9,0(r11) + 578: f9 4b 00 08 std r10,8(r11) + 57c: e9 3f 00 70 ld r9,112(r31) + 580: 38 09 01 88 addi r0,r9,392 + 584: f8 1f 08 18 std r0,2072(r31) + 588: 38 00 00 00 li r0,0 + 58c: f8 1f 08 20 std r0,2080(r31) + 590: e9 7f 00 90 ld r11,144(r31) + 594: 39 3f 08 18 addi r9,r31,2072 + 598: e9 49 00 08 ld r10,8(r9) + 59c: e9 29 00 00 ld r9,0(r9) + 5a0: 39 6b 01 98 addi r11,r11,408 + 5a4: f9 2b 00 00 std r9,0(r11) + 5a8: f9 4b 00 08 std r10,8(r11) + 5ac: e9 3f 00 70 ld r9,112(r31) + 5b0: 38 09 01 90 addi r0,r9,400 + 5b4: f8 1f 08 08 std r0,2056(r31) + 5b8: 38 00 00 00 li r0,0 + 5bc: f8 1f 08 10 std r0,2064(r31) + 5c0: e9 7f 00 90 ld r11,144(r31) + 5c4: 39 3f 08 08 addi r9,r31,2056 + 5c8: e9 49 00 08 ld r10,8(r9) + 5cc: e9 29 00 00 ld r9,0(r9) + 5d0: 39 6b 01 a8 addi r11,r11,424 + 5d4: f9 2b 00 00 std r9,0(r11) + 5d8: f9 4b 00 08 std r10,8(r11) + 5dc: e9 3f 00 70 ld r9,112(r31) + 5e0: 38 09 01 98 addi r0,r9,408 + 5e4: f8 1f 07 f8 std r0,2040(r31) + 5e8: 38 00 00 00 li r0,0 + 5ec: f8 1f 08 00 std r0,2048(r31) + 5f0: e9 7f 00 90 ld r11,144(r31) + 5f4: 39 3f 07 f8 addi r9,r31,2040 + 5f8: e9 49 00 08 ld r10,8(r9) + 5fc: e9 29 00 00 ld r9,0(r9) + 600: 39 6b 01 b8 addi r11,r11,440 + 604: f9 2b 00 00 std r9,0(r11) + 608: f9 4b 00 08 std r10,8(r11) + 60c: e9 3f 00 70 ld r9,112(r31) + 610: 38 09 01 a0 addi r0,r9,416 + 614: f8 1f 07 e8 std r0,2024(r31) + 618: 38 00 00 00 li r0,0 + 61c: f8 1f 07 f0 std r0,2032(r31) + 620: e9 7f 00 90 ld r11,144(r31) + 624: 39 3f 07 e8 addi r9,r31,2024 + 628: e9 49 00 08 ld r10,8(r9) + 62c: e9 29 00 00 ld r9,0(r9) + 630: 39 6b 01 c8 addi r11,r11,456 + 634: f9 2b 00 00 std r9,0(r11) + 638: f9 4b 00 08 std r10,8(r11) + 63c: e9 3f 00 70 ld r9,112(r31) + 640: 38 09 01 a8 addi r0,r9,424 + 644: f8 1f 07 d8 std r0,2008(r31) + 648: 38 00 00 00 li r0,0 + 64c: f8 1f 07 e0 std r0,2016(r31) + 650: e9 7f 00 90 ld r11,144(r31) + 654: 39 3f 07 d8 addi r9,r31,2008 + 658: e9 49 00 08 ld r10,8(r9) + 65c: e9 29 00 00 ld r9,0(r9) + 660: 39 6b 01 d8 addi r11,r11,472 + 664: f9 2b 00 00 std r9,0(r11) + 668: f9 4b 00 08 std r10,8(r11) + 66c: e9 3f 00 70 ld r9,112(r31) + 670: 38 09 01 b0 addi r0,r9,432 + 674: f8 1f 07 c8 std r0,1992(r31) + 678: 38 00 00 00 li r0,0 + 67c: f8 1f 07 d0 std r0,2000(r31) + 680: e9 7f 00 90 ld r11,144(r31) + 684: 39 3f 07 c8 addi r9,r31,1992 + 688: e9 49 00 08 ld r10,8(r9) + 68c: e9 29 00 00 ld r9,0(r9) + 690: 39 6b 01 e8 addi r11,r11,488 + 694: f9 2b 00 00 std r9,0(r11) + 698: f9 4b 00 08 std r10,8(r11) + 69c: e9 3f 00 70 ld r9,112(r31) + 6a0: 38 09 01 b8 addi r0,r9,440 + 6a4: f8 1f 07 b8 std r0,1976(r31) + 6a8: 38 00 00 00 li r0,0 + 6ac: f8 1f 07 c0 std r0,1984(r31) + 6b0: e9 7f 00 90 ld r11,144(r31) + 6b4: 39 3f 07 b8 addi r9,r31,1976 + 6b8: e9 49 00 08 ld r10,8(r9) + 6bc: e9 29 00 00 ld r9,0(r9) + 6c0: 39 6b 01 f8 addi r11,r11,504 + 6c4: f9 2b 00 00 std r9,0(r11) + 6c8: f9 4b 00 08 std r10,8(r11) + 6cc: e9 3f 00 70 ld r9,112(r31) + 6d0: 38 09 01 c0 addi r0,r9,448 + 6d4: f8 1f 07 a8 std r0,1960(r31) + 6d8: 38 00 00 00 li r0,0 + 6dc: f8 1f 07 b0 std r0,1968(r31) + 6e0: e9 7f 00 90 ld r11,144(r31) + 6e4: 39 3f 07 a8 addi r9,r31,1960 + 6e8: e9 49 00 08 ld r10,8(r9) + 6ec: e9 29 00 00 ld r9,0(r9) + 6f0: 39 6b 02 08 addi r11,r11,520 + 6f4: f9 2b 00 00 std r9,0(r11) + 6f8: f9 4b 00 08 std r10,8(r11) + 6fc: e9 3f 00 70 ld r9,112(r31) + 700: 38 09 01 c8 addi r0,r9,456 + 704: f8 1f 07 98 std r0,1944(r31) + 708: 38 00 00 00 li r0,0 + 70c: f8 1f 07 a0 std r0,1952(r31) + 710: e9 7f 00 90 ld r11,144(r31) + 714: 39 3f 07 98 addi r9,r31,1944 + 718: e9 49 00 08 ld r10,8(r9) + 71c: e9 29 00 00 ld r9,0(r9) + 720: 39 6b 02 18 addi r11,r11,536 + 724: f9 2b 00 00 std r9,0(r11) + 728: f9 4b 00 08 std r10,8(r11) + 72c: e9 3f 00 70 ld r9,112(r31) + 730: 38 09 01 d0 addi r0,r9,464 + 734: f8 1f 07 88 std r0,1928(r31) + 738: 38 00 00 00 li r0,0 + 73c: f8 1f 07 90 std r0,1936(r31) + 740: e9 7f 00 90 ld r11,144(r31) + 744: 39 3f 07 88 addi r9,r31,1928 + 748: e9 49 00 08 ld r10,8(r9) + 74c: e9 29 00 00 ld r9,0(r9) + 750: 39 6b 02 28 addi r11,r11,552 + 754: f9 2b 00 00 std r9,0(r11) + 758: f9 4b 00 08 std r10,8(r11) + 75c: e9 3f 00 70 ld r9,112(r31) + 760: 38 09 01 d8 addi r0,r9,472 + 764: f8 1f 07 78 std r0,1912(r31) + 768: 38 00 00 00 li r0,0 + 76c: f8 1f 07 80 std r0,1920(r31) + 770: e9 7f 00 90 ld r11,144(r31) + 774: 39 3f 07 78 addi r9,r31,1912 + 778: e9 49 00 08 ld r10,8(r9) + 77c: e9 29 00 00 ld r9,0(r9) + 780: 39 6b 02 38 addi r11,r11,568 + 784: f9 2b 00 00 std r9,0(r11) + 788: f9 4b 00 08 std r10,8(r11) + 78c: e9 3f 00 70 ld r9,112(r31) + 790: 38 09 01 e0 addi r0,r9,480 + 794: f8 1f 07 68 std r0,1896(r31) + 798: 38 00 00 00 li r0,0 + 79c: f8 1f 07 70 std r0,1904(r31) + 7a0: e9 7f 00 90 ld r11,144(r31) + 7a4: 39 3f 07 68 addi r9,r31,1896 + 7a8: e9 49 00 08 ld r10,8(r9) + 7ac: e9 29 00 00 ld r9,0(r9) + 7b0: 39 6b 02 48 addi r11,r11,584 + 7b4: f9 2b 00 00 std r9,0(r11) + 7b8: f9 4b 00 08 std r10,8(r11) + 7bc: e9 3f 00 70 ld r9,112(r31) + 7c0: 38 09 02 08 addi r0,r9,520 + 7c4: f8 1f 07 58 std r0,1880(r31) + 7c8: 38 00 00 00 li r0,0 + 7cc: f8 1f 07 60 std r0,1888(r31) + 7d0: e9 7f 00 90 ld r11,144(r31) + 7d4: 39 3f 07 58 addi r9,r31,1880 + 7d8: e9 49 00 08 ld r10,8(r9) + 7dc: e9 29 00 00 ld r9,0(r9) + 7e0: 39 6b 04 68 addi r11,r11,1128 + 7e4: f9 2b 00 00 std r9,0(r11) + 7e8: f9 4b 00 08 std r10,8(r11) + 7ec: e9 3f 00 70 ld r9,112(r31) + 7f0: 38 09 02 00 addi r0,r9,512 + 7f4: f8 1f 07 48 std r0,1864(r31) + 7f8: 38 00 00 00 li r0,0 + 7fc: f8 1f 07 50 std r0,1872(r31) + 800: e9 7f 00 90 ld r11,144(r31) + 804: 39 3f 07 48 addi r9,r31,1864 + 808: e9 49 00 08 ld r10,8(r9) + 80c: e9 29 00 00 ld r9,0(r9) + 810: 39 6b 04 78 addi r11,r11,1144 + 814: f9 2b 00 00 std r9,0(r11) + 818: f9 4b 00 08 std r10,8(r11) + 81c: e9 3f 00 70 ld r9,112(r31) + 820: 38 09 02 18 addi r0,r9,536 + 824: f8 1f 07 38 std r0,1848(r31) + 828: 38 00 00 00 li r0,0 + 82c: f8 1f 07 40 std r0,1856(r31) + 830: e9 7f 00 90 ld r11,144(r31) + 834: 39 3f 07 38 addi r9,r31,1848 + 838: e9 49 00 08 ld r10,8(r9) + 83c: e9 29 00 00 ld r9,0(r9) + 840: 39 6b 04 98 addi r11,r11,1176 + 844: f9 2b 00 00 std r9,0(r11) + 848: f9 4b 00 08 std r10,8(r11) + 84c: e9 3f 00 70 ld r9,112(r31) + 850: 38 09 02 10 addi r0,r9,528 + 854: f8 1f 07 28 std r0,1832(r31) + 858: 38 00 00 00 li r0,0 + 85c: f8 1f 07 30 std r0,1840(r31) + 860: e9 7f 00 90 ld r11,144(r31) + 864: 39 3f 07 28 addi r9,r31,1832 + 868: e9 49 00 08 ld r10,8(r9) + 86c: e9 29 00 00 ld r9,0(r9) + 870: 39 6b 05 18 addi r11,r11,1304 + 874: f9 2b 00 00 std r9,0(r11) + 878: f9 4b 00 08 std r10,8(r11) + 87c: e9 3f 00 70 ld r9,112(r31) + 880: 38 09 01 e8 addi r0,r9,488 + 884: f8 1f 07 18 std r0,1816(r31) + 888: 38 00 00 00 li r0,0 + 88c: f8 1f 07 20 std r0,1824(r31) + 890: e9 7f 00 90 ld r11,144(r31) + 894: 39 3f 07 18 addi r9,r31,1816 + 898: e9 49 00 08 ld r10,8(r9) + 89c: e9 29 00 00 ld r9,0(r9) + 8a0: 39 6b 07 78 addi r11,r11,1912 + 8a4: f9 2b 00 00 std r9,0(r11) + 8a8: f9 4b 00 08 std r10,8(r11) + 8ac: e9 22 00 00 ld r9,0(r2) + 8b0: e9 49 00 08 ld r10,8(r9) + 8b4: e9 29 00 00 ld r9,0(r9) + 8b8: 39 7f 07 08 addi r11,r31,1800 + 8bc: f9 2b 00 00 std r9,0(r11) + 8c0: f9 4b 00 08 std r10,8(r11) + 8c4: e9 7f 00 90 ld r11,144(r31) + 8c8: 39 3f 07 08 addi r9,r31,1800 + 8cc: e9 49 00 08 ld r10,8(r9) + 8d0: e9 29 00 00 ld r9,0(r9) + 8d4: 39 6b 07 68 addi r11,r11,1896 + 8d8: f9 2b 00 00 std r9,0(r11) + 8dc: f9 4b 00 08 std r10,8(r11) + 8e0: e9 3f 00 70 ld r9,112(r31) + 8e4: 38 09 02 68 addi r0,r9,616 + 8e8: f8 1f 06 f8 std r0,1784(r31) + 8ec: 38 00 00 00 li r0,0 + 8f0: f8 1f 07 00 std r0,1792(r31) + 8f4: e9 7f 00 90 ld r11,144(r31) + 8f8: 39 3f 06 f8 addi r9,r31,1784 + 8fc: e9 49 00 08 ld r10,8(r9) + 900: e9 29 00 00 ld r9,0(r9) + 904: 39 6b 02 58 addi r11,r11,600 + 908: f9 2b 00 00 std r9,0(r11) + 90c: f9 4b 00 08 std r10,8(r11) + 910: e9 3f 00 70 ld r9,112(r31) + 914: 38 09 02 70 addi r0,r9,624 + 918: f8 1f 06 e8 std r0,1768(r31) + 91c: 38 00 00 00 li r0,0 + 920: f8 1f 06 f0 std r0,1776(r31) + 924: e9 7f 00 90 ld r11,144(r31) + 928: 39 3f 06 e8 addi r9,r31,1768 + 92c: e9 49 00 08 ld r10,8(r9) + 930: e9 29 00 00 ld r9,0(r9) + 934: 39 6b 02 68 addi r11,r11,616 + 938: f9 2b 00 00 std r9,0(r11) + 93c: f9 4b 00 08 std r10,8(r11) + 940: e9 3f 00 70 ld r9,112(r31) + 944: 38 09 02 78 addi r0,r9,632 + 948: f8 1f 06 d8 std r0,1752(r31) + 94c: 38 00 00 00 li r0,0 + 950: f8 1f 06 e0 std r0,1760(r31) + 954: e9 7f 00 90 ld r11,144(r31) + 958: 39 3f 06 d8 addi r9,r31,1752 + 95c: e9 49 00 08 ld r10,8(r9) + 960: e9 29 00 00 ld r9,0(r9) + 964: 39 6b 02 78 addi r11,r11,632 + 968: f9 2b 00 00 std r9,0(r11) + 96c: f9 4b 00 08 std r10,8(r11) + 970: e9 3f 00 70 ld r9,112(r31) + 974: 38 09 02 80 addi r0,r9,640 + 978: f8 1f 06 c8 std r0,1736(r31) + 97c: 38 00 00 00 li r0,0 + 980: f8 1f 06 d0 std r0,1744(r31) + 984: e9 7f 00 90 ld r11,144(r31) + 988: 39 3f 06 c8 addi r9,r31,1736 + 98c: e9 49 00 08 ld r10,8(r9) + 990: e9 29 00 00 ld r9,0(r9) + 994: 39 6b 02 88 addi r11,r11,648 + 998: f9 2b 00 00 std r9,0(r11) + 99c: f9 4b 00 08 std r10,8(r11) + 9a0: e9 3f 00 70 ld r9,112(r31) + 9a4: 38 09 02 88 addi r0,r9,648 + 9a8: f8 1f 06 b8 std r0,1720(r31) + 9ac: 38 00 00 00 li r0,0 + 9b0: f8 1f 06 c0 std r0,1728(r31) + 9b4: e9 7f 00 90 ld r11,144(r31) + 9b8: 39 3f 06 b8 addi r9,r31,1720 + 9bc: e9 49 00 08 ld r10,8(r9) + 9c0: e9 29 00 00 ld r9,0(r9) + 9c4: 39 6b 02 98 addi r11,r11,664 + 9c8: f9 2b 00 00 std r9,0(r11) + 9cc: f9 4b 00 08 std r10,8(r11) + 9d0: e9 3f 00 70 ld r9,112(r31) + 9d4: 38 09 02 90 addi r0,r9,656 + 9d8: f8 1f 06 a8 std r0,1704(r31) + 9dc: 38 00 00 00 li r0,0 + 9e0: f8 1f 06 b0 std r0,1712(r31) + 9e4: e9 7f 00 90 ld r11,144(r31) + 9e8: 39 3f 06 a8 addi r9,r31,1704 + 9ec: e9 49 00 08 ld r10,8(r9) + 9f0: e9 29 00 00 ld r9,0(r9) + 9f4: 39 6b 02 a8 addi r11,r11,680 + 9f8: f9 2b 00 00 std r9,0(r11) + 9fc: f9 4b 00 08 std r10,8(r11) + a00: e9 3f 00 70 ld r9,112(r31) + a04: 38 09 02 98 addi r0,r9,664 + a08: f8 1f 06 98 std r0,1688(r31) + a0c: 38 00 00 00 li r0,0 + a10: f8 1f 06 a0 std r0,1696(r31) + a14: e9 7f 00 90 ld r11,144(r31) + a18: 39 3f 06 98 addi r9,r31,1688 + a1c: e9 49 00 08 ld r10,8(r9) + a20: e9 29 00 00 ld r9,0(r9) + a24: 39 6b 02 b8 addi r11,r11,696 + a28: f9 2b 00 00 std r9,0(r11) + a2c: f9 4b 00 08 std r10,8(r11) + a30: e9 3f 00 70 ld r9,112(r31) + a34: 38 09 02 a0 addi r0,r9,672 + a38: f8 1f 06 88 std r0,1672(r31) + a3c: 38 00 00 00 li r0,0 + a40: f8 1f 06 90 std r0,1680(r31) + a44: e9 7f 00 90 ld r11,144(r31) + a48: 39 3f 06 88 addi r9,r31,1672 + a4c: e9 49 00 08 ld r10,8(r9) + a50: e9 29 00 00 ld r9,0(r9) + a54: 39 6b 02 c8 addi r11,r11,712 + a58: f9 2b 00 00 std r9,0(r11) + a5c: f9 4b 00 08 std r10,8(r11) + a60: e9 3f 00 70 ld r9,112(r31) + a64: 38 09 02 a8 addi r0,r9,680 + a68: f8 1f 06 78 std r0,1656(r31) + a6c: 38 00 00 00 li r0,0 + a70: f8 1f 06 80 std r0,1664(r31) + a74: e9 7f 00 90 ld r11,144(r31) + a78: 39 3f 06 78 addi r9,r31,1656 + a7c: e9 49 00 08 ld r10,8(r9) + a80: e9 29 00 00 ld r9,0(r9) + a84: 39 6b 02 d8 addi r11,r11,728 + a88: f9 2b 00 00 std r9,0(r11) + a8c: f9 4b 00 08 std r10,8(r11) + a90: e9 3f 00 70 ld r9,112(r31) + a94: 38 09 02 b0 addi r0,r9,688 + a98: f8 1f 06 68 std r0,1640(r31) + a9c: 38 00 00 00 li r0,0 + aa0: f8 1f 06 70 std r0,1648(r31) + aa4: e9 7f 00 90 ld r11,144(r31) + aa8: 39 3f 06 68 addi r9,r31,1640 + aac: e9 49 00 08 ld r10,8(r9) + ab0: e9 29 00 00 ld r9,0(r9) + ab4: 39 6b 02 e8 addi r11,r11,744 + ab8: f9 2b 00 00 std r9,0(r11) + abc: f9 4b 00 08 std r10,8(r11) + ac0: e9 3f 00 70 ld r9,112(r31) + ac4: 38 09 02 b8 addi r0,r9,696 + ac8: f8 1f 06 58 std r0,1624(r31) + acc: 38 00 00 00 li r0,0 + ad0: f8 1f 06 60 std r0,1632(r31) + ad4: e9 7f 00 90 ld r11,144(r31) + ad8: 39 3f 06 58 addi r9,r31,1624 + adc: e9 49 00 08 ld r10,8(r9) + ae0: e9 29 00 00 ld r9,0(r9) + ae4: 39 6b 02 f8 addi r11,r11,760 + ae8: f9 2b 00 00 std r9,0(r11) + aec: f9 4b 00 08 std r10,8(r11) + af0: e9 3f 00 70 ld r9,112(r31) + af4: 38 09 02 c0 addi r0,r9,704 + af8: f8 1f 06 48 std r0,1608(r31) + afc: 38 00 00 00 li r0,0 + b00: f8 1f 06 50 std r0,1616(r31) + b04: e9 7f 00 90 ld r11,144(r31) + b08: 39 3f 06 48 addi r9,r31,1608 + b0c: e9 49 00 08 ld r10,8(r9) + b10: e9 29 00 00 ld r9,0(r9) + b14: 39 6b 03 08 addi r11,r11,776 + b18: f9 2b 00 00 std r9,0(r11) + b1c: f9 4b 00 08 std r10,8(r11) + b20: e9 3f 00 70 ld r9,112(r31) + b24: 38 09 02 c8 addi r0,r9,712 + b28: f8 1f 06 38 std r0,1592(r31) + b2c: 38 00 00 00 li r0,0 + b30: f8 1f 06 40 std r0,1600(r31) + b34: e9 7f 00 90 ld r11,144(r31) + b38: 39 3f 06 38 addi r9,r31,1592 + b3c: e9 49 00 08 ld r10,8(r9) + b40: e9 29 00 00 ld r9,0(r9) + b44: 39 6b 03 18 addi r11,r11,792 + b48: f9 2b 00 00 std r9,0(r11) + b4c: f9 4b 00 08 std r10,8(r11) + b50: e9 3f 00 70 ld r9,112(r31) + b54: 38 09 02 d0 addi r0,r9,720 + b58: f8 1f 06 28 std r0,1576(r31) + b5c: 38 00 00 00 li r0,0 + b60: f8 1f 06 30 std r0,1584(r31) + b64: e9 7f 00 90 ld r11,144(r31) + b68: 39 3f 06 28 addi r9,r31,1576 + b6c: e9 49 00 08 ld r10,8(r9) + b70: e9 29 00 00 ld r9,0(r9) + b74: 39 6b 03 28 addi r11,r11,808 + b78: f9 2b 00 00 std r9,0(r11) + b7c: f9 4b 00 08 std r10,8(r11) + b80: e9 3f 00 70 ld r9,112(r31) + b84: 38 09 02 d8 addi r0,r9,728 + b88: f8 1f 06 18 std r0,1560(r31) + b8c: 38 00 00 00 li r0,0 + b90: f8 1f 06 20 std r0,1568(r31) + b94: e9 7f 00 90 ld r11,144(r31) + b98: 39 3f 06 18 addi r9,r31,1560 + b9c: e9 49 00 08 ld r10,8(r9) + ba0: e9 29 00 00 ld r9,0(r9) + ba4: 39 6b 03 38 addi r11,r11,824 + ba8: f9 2b 00 00 std r9,0(r11) + bac: f9 4b 00 08 std r10,8(r11) + bb0: e9 3f 00 70 ld r9,112(r31) + bb4: 38 09 02 e0 addi r0,r9,736 + bb8: f8 1f 06 08 std r0,1544(r31) + bbc: 38 00 00 00 li r0,0 + bc0: f8 1f 06 10 std r0,1552(r31) + bc4: e9 7f 00 90 ld r11,144(r31) + bc8: 39 3f 06 08 addi r9,r31,1544 + bcc: e9 49 00 08 ld r10,8(r9) + bd0: e9 29 00 00 ld r9,0(r9) + bd4: 39 6b 03 48 addi r11,r11,840 + bd8: f9 2b 00 00 std r9,0(r11) + bdc: f9 4b 00 08 std r10,8(r11) + be0: e9 3f 00 70 ld r9,112(r31) + be4: 38 09 02 e8 addi r0,r9,744 + be8: f8 1f 05 f8 std r0,1528(r31) + bec: 38 00 00 00 li r0,0 + bf0: f8 1f 06 00 std r0,1536(r31) + bf4: e9 7f 00 90 ld r11,144(r31) + bf8: 39 3f 05 f8 addi r9,r31,1528 + bfc: e9 49 00 08 ld r10,8(r9) + c00: e9 29 00 00 ld r9,0(r9) + c04: 39 6b 03 58 addi r11,r11,856 + c08: f9 2b 00 00 std r9,0(r11) + c0c: f9 4b 00 08 std r10,8(r11) + c10: e9 3f 00 70 ld r9,112(r31) + c14: 38 09 02 f0 addi r0,r9,752 + c18: f8 1f 05 e8 std r0,1512(r31) + c1c: 38 00 00 00 li r0,0 + c20: f8 1f 05 f0 std r0,1520(r31) + c24: e9 7f 00 90 ld r11,144(r31) + c28: 39 3f 05 e8 addi r9,r31,1512 + c2c: e9 49 00 08 ld r10,8(r9) + c30: e9 29 00 00 ld r9,0(r9) + c34: 39 6b 03 68 addi r11,r11,872 + c38: f9 2b 00 00 std r9,0(r11) + c3c: f9 4b 00 08 std r10,8(r11) + c40: e9 3f 00 70 ld r9,112(r31) + c44: 38 09 02 f8 addi r0,r9,760 + c48: f8 1f 05 d8 std r0,1496(r31) + c4c: 38 00 00 00 li r0,0 + c50: f8 1f 05 e0 std r0,1504(r31) + c54: e9 7f 00 90 ld r11,144(r31) + c58: 39 3f 05 d8 addi r9,r31,1496 + c5c: e9 49 00 08 ld r10,8(r9) + c60: e9 29 00 00 ld r9,0(r9) + c64: 39 6b 03 78 addi r11,r11,888 + c68: f9 2b 00 00 std r9,0(r11) + c6c: f9 4b 00 08 std r10,8(r11) + c70: e9 3f 00 70 ld r9,112(r31) + c74: 38 09 03 00 addi r0,r9,768 + c78: f8 1f 05 c8 std r0,1480(r31) + c7c: 38 00 00 00 li r0,0 + c80: f8 1f 05 d0 std r0,1488(r31) + c84: e9 7f 00 90 ld r11,144(r31) + c88: 39 3f 05 c8 addi r9,r31,1480 + c8c: e9 49 00 08 ld r10,8(r9) + c90: e9 29 00 00 ld r9,0(r9) + c94: 39 6b 03 88 addi r11,r11,904 + c98: f9 2b 00 00 std r9,0(r11) + c9c: f9 4b 00 08 std r10,8(r11) + ca0: e9 3f 00 70 ld r9,112(r31) + ca4: 38 09 03 08 addi r0,r9,776 + ca8: f8 1f 05 b8 std r0,1464(r31) + cac: 38 00 00 00 li r0,0 + cb0: f8 1f 05 c0 std r0,1472(r31) + cb4: e9 7f 00 90 ld r11,144(r31) + cb8: 39 3f 05 b8 addi r9,r31,1464 + cbc: e9 49 00 08 ld r10,8(r9) + cc0: e9 29 00 00 ld r9,0(r9) + cc4: 39 6b 03 98 addi r11,r11,920 + cc8: f9 2b 00 00 std r9,0(r11) + ccc: f9 4b 00 08 std r10,8(r11) + cd0: e9 3f 00 70 ld r9,112(r31) + cd4: 38 09 03 10 addi r0,r9,784 + cd8: f8 1f 05 a8 std r0,1448(r31) + cdc: 38 00 00 00 li r0,0 + ce0: f8 1f 05 b0 std r0,1456(r31) + ce4: e9 7f 00 90 ld r11,144(r31) + ce8: 39 3f 05 a8 addi r9,r31,1448 + cec: e9 49 00 08 ld r10,8(r9) + cf0: e9 29 00 00 ld r9,0(r9) + cf4: 39 6b 03 a8 addi r11,r11,936 + cf8: f9 2b 00 00 std r9,0(r11) + cfc: f9 4b 00 08 std r10,8(r11) + d00: e9 3f 00 70 ld r9,112(r31) + d04: 38 09 03 18 addi r0,r9,792 + d08: f8 1f 05 98 std r0,1432(r31) + d0c: 38 00 00 00 li r0,0 + d10: f8 1f 05 a0 std r0,1440(r31) + d14: e9 7f 00 90 ld r11,144(r31) + d18: 39 3f 05 98 addi r9,r31,1432 + d1c: e9 49 00 08 ld r10,8(r9) + d20: e9 29 00 00 ld r9,0(r9) + d24: 39 6b 03 b8 addi r11,r11,952 + d28: f9 2b 00 00 std r9,0(r11) + d2c: f9 4b 00 08 std r10,8(r11) + d30: e9 3f 00 70 ld r9,112(r31) + d34: 38 09 03 20 addi r0,r9,800 + d38: f8 1f 05 88 std r0,1416(r31) + d3c: 38 00 00 00 li r0,0 + d40: f8 1f 05 90 std r0,1424(r31) + d44: e9 7f 00 90 ld r11,144(r31) + d48: 39 3f 05 88 addi r9,r31,1416 + d4c: e9 49 00 08 ld r10,8(r9) + d50: e9 29 00 00 ld r9,0(r9) + d54: 39 6b 03 c8 addi r11,r11,968 + d58: f9 2b 00 00 std r9,0(r11) + d5c: f9 4b 00 08 std r10,8(r11) + d60: e9 3f 00 70 ld r9,112(r31) + d64: 38 09 03 28 addi r0,r9,808 + d68: f8 1f 05 78 std r0,1400(r31) + d6c: 38 00 00 00 li r0,0 + d70: f8 1f 05 80 std r0,1408(r31) + d74: e9 7f 00 90 ld r11,144(r31) + d78: 39 3f 05 78 addi r9,r31,1400 + d7c: e9 49 00 08 ld r10,8(r9) + d80: e9 29 00 00 ld r9,0(r9) + d84: 39 6b 03 d8 addi r11,r11,984 + d88: f9 2b 00 00 std r9,0(r11) + d8c: f9 4b 00 08 std r10,8(r11) + d90: e9 3f 00 70 ld r9,112(r31) + d94: 38 09 03 30 addi r0,r9,816 + d98: f8 1f 05 68 std r0,1384(r31) + d9c: 38 00 00 00 li r0,0 + da0: f8 1f 05 70 std r0,1392(r31) + da4: e9 7f 00 90 ld r11,144(r31) + da8: 39 3f 05 68 addi r9,r31,1384 + dac: e9 49 00 08 ld r10,8(r9) + db0: e9 29 00 00 ld r9,0(r9) + db4: 39 6b 03 e8 addi r11,r11,1000 + db8: f9 2b 00 00 std r9,0(r11) + dbc: f9 4b 00 08 std r10,8(r11) + dc0: e9 3f 00 70 ld r9,112(r31) + dc4: 38 09 03 38 addi r0,r9,824 + dc8: f8 1f 05 58 std r0,1368(r31) + dcc: 38 00 00 00 li r0,0 + dd0: f8 1f 05 60 std r0,1376(r31) + dd4: e9 7f 00 90 ld r11,144(r31) + dd8: 39 3f 05 58 addi r9,r31,1368 + ddc: e9 49 00 08 ld r10,8(r9) + de0: e9 29 00 00 ld r9,0(r9) + de4: 39 6b 03 f8 addi r11,r11,1016 + de8: f9 2b 00 00 std r9,0(r11) + dec: f9 4b 00 08 std r10,8(r11) + df0: e9 3f 00 70 ld r9,112(r31) + df4: 38 09 03 40 addi r0,r9,832 + df8: f8 1f 05 48 std r0,1352(r31) + dfc: 38 00 00 00 li r0,0 + e00: f8 1f 05 50 std r0,1360(r31) + e04: e9 7f 00 90 ld r11,144(r31) + e08: 39 3f 05 48 addi r9,r31,1352 + e0c: e9 49 00 08 ld r10,8(r9) + e10: e9 29 00 00 ld r9,0(r9) + e14: 39 6b 04 08 addi r11,r11,1032 + e18: f9 2b 00 00 std r9,0(r11) + e1c: f9 4b 00 08 std r10,8(r11) + e20: e9 3f 00 70 ld r9,112(r31) + e24: 38 09 03 48 addi r0,r9,840 + e28: f8 1f 05 38 std r0,1336(r31) + e2c: 38 00 00 00 li r0,0 + e30: f8 1f 05 40 std r0,1344(r31) + e34: e9 7f 00 90 ld r11,144(r31) + e38: 39 3f 05 38 addi r9,r31,1336 + e3c: e9 49 00 08 ld r10,8(r9) + e40: e9 29 00 00 ld r9,0(r9) + e44: 39 6b 04 18 addi r11,r11,1048 + e48: f9 2b 00 00 std r9,0(r11) + e4c: f9 4b 00 08 std r10,8(r11) + e50: e9 3f 00 70 ld r9,112(r31) + e54: 38 09 03 50 addi r0,r9,848 + e58: f8 1f 05 28 std r0,1320(r31) + e5c: 38 00 00 00 li r0,0 + e60: f8 1f 05 30 std r0,1328(r31) + e64: e9 7f 00 90 ld r11,144(r31) + e68: 39 3f 05 28 addi r9,r31,1320 + e6c: e9 49 00 08 ld r10,8(r9) + e70: e9 29 00 00 ld r9,0(r9) + e74: 39 6b 04 28 addi r11,r11,1064 + e78: f9 2b 00 00 std r9,0(r11) + e7c: f9 4b 00 08 std r10,8(r11) + e80: e9 3f 00 70 ld r9,112(r31) + e84: 38 09 03 58 addi r0,r9,856 + e88: f8 1f 05 18 std r0,1304(r31) + e8c: 38 00 00 00 li r0,0 + e90: f8 1f 05 20 std r0,1312(r31) + e94: e9 7f 00 90 ld r11,144(r31) + e98: 39 3f 05 18 addi r9,r31,1304 + e9c: e9 49 00 08 ld r10,8(r9) + ea0: e9 29 00 00 ld r9,0(r9) + ea4: 39 6b 04 38 addi r11,r11,1080 + ea8: f9 2b 00 00 std r9,0(r11) + eac: f9 4b 00 08 std r10,8(r11) + eb0: e9 3f 00 70 ld r9,112(r31) + eb4: 38 09 03 60 addi r0,r9,864 + eb8: f8 1f 05 08 std r0,1288(r31) + ebc: 38 00 00 00 li r0,0 + ec0: f8 1f 05 10 std r0,1296(r31) + ec4: e9 7f 00 90 ld r11,144(r31) + ec8: 39 3f 05 08 addi r9,r31,1288 + ecc: e9 49 00 08 ld r10,8(r9) + ed0: e9 29 00 00 ld r9,0(r9) + ed4: 39 6b 04 48 addi r11,r11,1096 + ed8: f9 2b 00 00 std r9,0(r11) + edc: f9 4b 00 08 std r10,8(r11) + ee0: e9 3f 00 70 ld r9,112(r31) + ee4: 38 09 03 70 addi r0,r9,880 + ee8: f8 1f 04 f8 std r0,1272(r31) + eec: 38 00 00 00 li r0,0 + ef0: f8 1f 05 00 std r0,1280(r31) + ef4: 39 3f 04 f8 addi r9,r31,1272 + ef8: e9 49 00 08 ld r10,8(r9) + efc: e9 29 00 00 ld r9,0(r9) + f00: 39 7f 09 e8 addi r11,r31,2536 + f04: f9 2b 00 00 std r9,0(r11) + f08: f9 4b 00 08 std r10,8(r11) + f0c: e8 1f 00 90 ld r0,144(r31) + f10: 39 7f 09 a0 addi r11,r31,2464 + f14: 7c 03 03 78 mr r3,r0 + f18: 39 3f 09 e8 addi r9,r31,2536 + f1c: e8 89 00 00 ld r4,0(r9) + f20: e8 a9 00 08 ld r5,8(r9) + f24: 7d 66 5b 78 mr r6,r11 + f28: 48 00 00 19 bl f40 <._Uppc64_step+0xf40> + f2c: 7c 60 1b 78 mr r0,r3 + f30: 90 1f 00 78 stw r0,120(r31) + f34: 80 1f 00 78 lwz r0,120(r31) + f38: 2f 80 00 00 cmpwi cr7,r0,0 + f3c: 40 9c 00 14 bge- cr7,f50 <._Uppc64_step+0xf50> + f40: 80 1f 00 78 lwz r0,120(r31) + f44: 7c 00 07 b4 extsw r0,r0 + f48: f8 1f 0a 00 std r0,2560(r31) + f4c: 48 00 0e b0 b 1dfc <._Uppc64_step+0x1dfc> + f50: e8 1f 09 a0 ld r0,2464(r31) + f54: 2f a0 00 00 cmpdi cr7,r0,0 + f58: 41 9e 06 64 beq- cr7,15bc <._Uppc64_step+0x15bc> + f5c: e8 1f 09 a0 ld r0,2464(r31) + f60: f8 1f 04 e8 std r0,1256(r31) + f64: 38 00 00 00 li r0,0 + f68: f8 1f 04 f0 std r0,1264(r31) + f6c: e9 7f 00 90 ld r11,144(r31) + f70: 39 3f 04 e8 addi r9,r31,1256 + f74: e9 49 00 08 ld r10,8(r9) + f78: e9 29 00 00 ld r9,0(r9) + f7c: 39 6b 05 28 addi r11,r11,1320 + f80: f9 2b 00 00 std r9,0(r11) + f84: f9 4b 00 08 std r10,8(r11) + f88: e9 3f 09 a0 ld r9,2464(r31) + f8c: 38 09 00 10 addi r0,r9,16 + f90: f8 1f 04 d8 std r0,1240(r31) + f94: 38 00 00 00 li r0,0 + f98: f8 1f 04 e0 std r0,1248(r31) + f9c: e9 7f 00 90 ld r11,144(r31) + fa0: 39 3f 04 d8 addi r9,r31,1240 + fa4: e9 49 00 08 ld r10,8(r9) + fa8: e9 29 00 00 ld r9,0(r9) + fac: 39 6b 05 38 addi r11,r11,1336 + fb0: f9 2b 00 00 std r9,0(r11) + fb4: f9 4b 00 08 std r10,8(r11) + fb8: e9 3f 09 a0 ld r9,2464(r31) + fbc: 38 09 00 20 addi r0,r9,32 + fc0: f8 1f 04 c8 std r0,1224(r31) + fc4: 38 00 00 00 li r0,0 + fc8: f8 1f 04 d0 std r0,1232(r31) + fcc: e9 7f 00 90 ld r11,144(r31) + fd0: 39 3f 04 c8 addi r9,r31,1224 + fd4: e9 49 00 08 ld r10,8(r9) + fd8: e9 29 00 00 ld r9,0(r9) + fdc: 39 6b 05 48 addi r11,r11,1352 + fe0: f9 2b 00 00 std r9,0(r11) + fe4: f9 4b 00 08 std r10,8(r11) + fe8: e9 3f 09 a0 ld r9,2464(r31) + fec: 38 09 00 30 addi r0,r9,48 + ff0: f8 1f 04 b8 std r0,1208(r31) + ff4: 38 00 00 00 li r0,0 + ff8: f8 1f 04 c0 std r0,1216(r31) + ffc: e9 7f 00 90 ld r11,144(r31) + 1000: 39 3f 04 b8 addi r9,r31,1208 + 1004: e9 49 00 08 ld r10,8(r9) + 1008: e9 29 00 00 ld r9,0(r9) + 100c: 39 6b 05 58 addi r11,r11,1368 + 1010: f9 2b 00 00 std r9,0(r11) + 1014: f9 4b 00 08 std r10,8(r11) + 1018: e9 3f 09 a0 ld r9,2464(r31) + 101c: 38 09 00 40 addi r0,r9,64 + 1020: f8 1f 04 a8 std r0,1192(r31) + 1024: 38 00 00 00 li r0,0 + 1028: f8 1f 04 b0 std r0,1200(r31) + 102c: e9 7f 00 90 ld r11,144(r31) + 1030: 39 3f 04 a8 addi r9,r31,1192 + 1034: e9 49 00 08 ld r10,8(r9) + 1038: e9 29 00 00 ld r9,0(r9) + 103c: 39 6b 05 68 addi r11,r11,1384 + 1040: f9 2b 00 00 std r9,0(r11) + 1044: f9 4b 00 08 std r10,8(r11) + 1048: e9 3f 09 a0 ld r9,2464(r31) + 104c: 38 09 00 50 addi r0,r9,80 + 1050: f8 1f 04 98 std r0,1176(r31) + 1054: 38 00 00 00 li r0,0 + 1058: f8 1f 04 a0 std r0,1184(r31) + 105c: e9 7f 00 90 ld r11,144(r31) + 1060: 39 3f 04 98 addi r9,r31,1176 + 1064: e9 49 00 08 ld r10,8(r9) + 1068: e9 29 00 00 ld r9,0(r9) + 106c: 39 6b 05 78 addi r11,r11,1400 + 1070: f9 2b 00 00 std r9,0(r11) + 1074: f9 4b 00 08 std r10,8(r11) + 1078: e9 3f 09 a0 ld r9,2464(r31) + 107c: 38 09 00 60 addi r0,r9,96 + 1080: f8 1f 04 88 std r0,1160(r31) + 1084: 38 00 00 00 li r0,0 + 1088: f8 1f 04 90 std r0,1168(r31) + 108c: e9 7f 00 90 ld r11,144(r31) + 1090: 39 3f 04 88 addi r9,r31,1160 + 1094: e9 49 00 08 ld r10,8(r9) + 1098: e9 29 00 00 ld r9,0(r9) + 109c: 39 6b 05 88 addi r11,r11,1416 + 10a0: f9 2b 00 00 std r9,0(r11) + 10a4: f9 4b 00 08 std r10,8(r11) + 10a8: e9 3f 09 a0 ld r9,2464(r31) + 10ac: 38 09 00 70 addi r0,r9,112 + 10b0: f8 1f 04 78 std r0,1144(r31) + 10b4: 38 00 00 00 li r0,0 + 10b8: f8 1f 04 80 std r0,1152(r31) + 10bc: e9 7f 00 90 ld r11,144(r31) + 10c0: 39 3f 04 78 addi r9,r31,1144 + 10c4: e9 49 00 08 ld r10,8(r9) + 10c8: e9 29 00 00 ld r9,0(r9) + 10cc: 39 6b 05 98 addi r11,r11,1432 + 10d0: f9 2b 00 00 std r9,0(r11) + 10d4: f9 4b 00 08 std r10,8(r11) + 10d8: e9 3f 09 a0 ld r9,2464(r31) + 10dc: 38 09 00 80 addi r0,r9,128 + 10e0: f8 1f 04 68 std r0,1128(r31) + 10e4: 38 00 00 00 li r0,0 + 10e8: f8 1f 04 70 std r0,1136(r31) + 10ec: e9 7f 00 90 ld r11,144(r31) + 10f0: 39 3f 04 68 addi r9,r31,1128 + 10f4: e9 49 00 08 ld r10,8(r9) + 10f8: e9 29 00 00 ld r9,0(r9) + 10fc: 39 6b 05 a8 addi r11,r11,1448 + 1100: f9 2b 00 00 std r9,0(r11) + 1104: f9 4b 00 08 std r10,8(r11) + 1108: e9 3f 09 a0 ld r9,2464(r31) + 110c: 38 09 00 90 addi r0,r9,144 + 1110: f8 1f 04 58 std r0,1112(r31) + 1114: 38 00 00 00 li r0,0 + 1118: f8 1f 04 60 std r0,1120(r31) + 111c: e9 7f 00 90 ld r11,144(r31) + 1120: 39 3f 04 58 addi r9,r31,1112 + 1124: e9 49 00 08 ld r10,8(r9) + 1128: e9 29 00 00 ld r9,0(r9) + 112c: 39 6b 05 b8 addi r11,r11,1464 + 1130: f9 2b 00 00 std r9,0(r11) + 1134: f9 4b 00 08 std r10,8(r11) + 1138: e9 3f 09 a0 ld r9,2464(r31) + 113c: 38 09 00 a0 addi r0,r9,160 + 1140: f8 1f 04 48 std r0,1096(r31) + 1144: 38 00 00 00 li r0,0 + 1148: f8 1f 04 50 std r0,1104(r31) + 114c: e9 7f 00 90 ld r11,144(r31) + 1150: 39 3f 04 48 addi r9,r31,1096 + 1154: e9 49 00 08 ld r10,8(r9) + 1158: e9 29 00 00 ld r9,0(r9) + 115c: 39 6b 05 c8 addi r11,r11,1480 + 1160: f9 2b 00 00 std r9,0(r11) + 1164: f9 4b 00 08 std r10,8(r11) + 1168: e9 3f 09 a0 ld r9,2464(r31) + 116c: 38 09 00 b0 addi r0,r9,176 + 1170: f8 1f 04 38 std r0,1080(r31) + 1174: 38 00 00 00 li r0,0 + 1178: f8 1f 04 40 std r0,1088(r31) + 117c: e9 7f 00 90 ld r11,144(r31) + 1180: 39 3f 04 38 addi r9,r31,1080 + 1184: e9 49 00 08 ld r10,8(r9) + 1188: e9 29 00 00 ld r9,0(r9) + 118c: 39 6b 05 d8 addi r11,r11,1496 + 1190: f9 2b 00 00 std r9,0(r11) + 1194: f9 4b 00 08 std r10,8(r11) + 1198: e9 3f 09 a0 ld r9,2464(r31) + 119c: 38 09 00 c0 addi r0,r9,192 + 11a0: f8 1f 04 28 std r0,1064(r31) + 11a4: 38 00 00 00 li r0,0 + 11a8: f8 1f 04 30 std r0,1072(r31) + 11ac: e9 7f 00 90 ld r11,144(r31) + 11b0: 39 3f 04 28 addi r9,r31,1064 + 11b4: e9 49 00 08 ld r10,8(r9) + 11b8: e9 29 00 00 ld r9,0(r9) + 11bc: 39 6b 05 e8 addi r11,r11,1512 + 11c0: f9 2b 00 00 std r9,0(r11) + 11c4: f9 4b 00 08 std r10,8(r11) + 11c8: e9 3f 09 a0 ld r9,2464(r31) + 11cc: 38 09 00 d0 addi r0,r9,208 + 11d0: f8 1f 04 18 std r0,1048(r31) + 11d4: 38 00 00 00 li r0,0 + 11d8: f8 1f 04 20 std r0,1056(r31) + 11dc: e9 7f 00 90 ld r11,144(r31) + 11e0: 39 3f 04 18 addi r9,r31,1048 + 11e4: e9 49 00 08 ld r10,8(r9) + 11e8: e9 29 00 00 ld r9,0(r9) + 11ec: 39 6b 05 f8 addi r11,r11,1528 + 11f0: f9 2b 00 00 std r9,0(r11) + 11f4: f9 4b 00 08 std r10,8(r11) + 11f8: e9 3f 09 a0 ld r9,2464(r31) + 11fc: 38 09 00 e0 addi r0,r9,224 + 1200: f8 1f 04 08 std r0,1032(r31) + 1204: 38 00 00 00 li r0,0 + 1208: f8 1f 04 10 std r0,1040(r31) + 120c: e9 7f 00 90 ld r11,144(r31) + 1210: 39 3f 04 08 addi r9,r31,1032 + 1214: e9 49 00 08 ld r10,8(r9) + 1218: e9 29 00 00 ld r9,0(r9) + 121c: 39 6b 06 08 addi r11,r11,1544 + 1220: f9 2b 00 00 std r9,0(r11) + 1224: f9 4b 00 08 std r10,8(r11) + 1228: e9 3f 09 a0 ld r9,2464(r31) + 122c: 38 09 00 f0 addi r0,r9,240 + 1230: f8 1f 03 f8 std r0,1016(r31) + 1234: 38 00 00 00 li r0,0 + 1238: f8 1f 04 00 std r0,1024(r31) + 123c: e9 7f 00 90 ld r11,144(r31) + 1240: 39 3f 03 f8 addi r9,r31,1016 + 1244: e9 49 00 08 ld r10,8(r9) + 1248: e9 29 00 00 ld r9,0(r9) + 124c: 39 6b 06 18 addi r11,r11,1560 + 1250: f9 2b 00 00 std r9,0(r11) + 1254: f9 4b 00 08 std r10,8(r11) + 1258: e9 3f 09 a0 ld r9,2464(r31) + 125c: 38 09 01 00 addi r0,r9,256 + 1260: f8 1f 03 e8 std r0,1000(r31) + 1264: 38 00 00 00 li r0,0 + 1268: f8 1f 03 f0 std r0,1008(r31) + 126c: e9 7f 00 90 ld r11,144(r31) + 1270: 39 3f 03 e8 addi r9,r31,1000 + 1274: e9 49 00 08 ld r10,8(r9) + 1278: e9 29 00 00 ld r9,0(r9) + 127c: 39 6b 06 28 addi r11,r11,1576 + 1280: f9 2b 00 00 std r9,0(r11) + 1284: f9 4b 00 08 std r10,8(r11) + 1288: e9 3f 09 a0 ld r9,2464(r31) + 128c: 38 09 01 10 addi r0,r9,272 + 1290: f8 1f 03 d8 std r0,984(r31) + 1294: 38 00 00 00 li r0,0 + 1298: f8 1f 03 e0 std r0,992(r31) + 129c: e9 7f 00 90 ld r11,144(r31) + 12a0: 39 3f 03 d8 addi r9,r31,984 + 12a4: e9 49 00 08 ld r10,8(r9) + 12a8: e9 29 00 00 ld r9,0(r9) + 12ac: 39 6b 06 38 addi r11,r11,1592 + 12b0: f9 2b 00 00 std r9,0(r11) + 12b4: f9 4b 00 08 std r10,8(r11) + 12b8: e9 3f 09 a0 ld r9,2464(r31) + 12bc: 38 09 01 20 addi r0,r9,288 + 12c0: f8 1f 03 c8 std r0,968(r31) + 12c4: 38 00 00 00 li r0,0 + 12c8: f8 1f 03 d0 std r0,976(r31) + 12cc: e9 7f 00 90 ld r11,144(r31) + 12d0: 39 3f 03 c8 addi r9,r31,968 + 12d4: e9 49 00 08 ld r10,8(r9) + 12d8: e9 29 00 00 ld r9,0(r9) + 12dc: 39 6b 06 48 addi r11,r11,1608 + 12e0: f9 2b 00 00 std r9,0(r11) + 12e4: f9 4b 00 08 std r10,8(r11) + 12e8: e9 3f 09 a0 ld r9,2464(r31) + 12ec: 38 09 01 30 addi r0,r9,304 + 12f0: f8 1f 03 b8 std r0,952(r31) + 12f4: 38 00 00 00 li r0,0 + 12f8: f8 1f 03 c0 std r0,960(r31) + 12fc: e9 7f 00 90 ld r11,144(r31) + 1300: 39 3f 03 b8 addi r9,r31,952 + 1304: e9 49 00 08 ld r10,8(r9) + 1308: e9 29 00 00 ld r9,0(r9) + 130c: 39 6b 06 58 addi r11,r11,1624 + 1310: f9 2b 00 00 std r9,0(r11) + 1314: f9 4b 00 08 std r10,8(r11) + 1318: e9 3f 09 a0 ld r9,2464(r31) + 131c: 38 09 01 40 addi r0,r9,320 + 1320: f8 1f 03 a8 std r0,936(r31) + 1324: 38 00 00 00 li r0,0 + 1328: f8 1f 03 b0 std r0,944(r31) + 132c: e9 7f 00 90 ld r11,144(r31) + 1330: 39 3f 03 a8 addi r9,r31,936 + 1334: e9 49 00 08 ld r10,8(r9) + 1338: e9 29 00 00 ld r9,0(r9) + 133c: 39 6b 06 68 addi r11,r11,1640 + 1340: f9 2b 00 00 std r9,0(r11) + 1344: f9 4b 00 08 std r10,8(r11) + 1348: e9 3f 09 a0 ld r9,2464(r31) + 134c: 38 09 01 50 addi r0,r9,336 + 1350: f8 1f 03 98 std r0,920(r31) + 1354: 38 00 00 00 li r0,0 + 1358: f8 1f 03 a0 std r0,928(r31) + 135c: e9 7f 00 90 ld r11,144(r31) + 1360: 39 3f 03 98 addi r9,r31,920 + 1364: e9 49 00 08 ld r10,8(r9) + 1368: e9 29 00 00 ld r9,0(r9) + 136c: 39 6b 06 78 addi r11,r11,1656 + 1370: f9 2b 00 00 std r9,0(r11) + 1374: f9 4b 00 08 std r10,8(r11) + 1378: e9 3f 09 a0 ld r9,2464(r31) + 137c: 38 09 01 60 addi r0,r9,352 + 1380: f8 1f 03 88 std r0,904(r31) + 1384: 38 00 00 00 li r0,0 + 1388: f8 1f 03 90 std r0,912(r31) + 138c: e9 7f 00 90 ld r11,144(r31) + 1390: 39 3f 03 88 addi r9,r31,904 + 1394: e9 49 00 08 ld r10,8(r9) + 1398: e9 29 00 00 ld r9,0(r9) + 139c: 39 6b 06 88 addi r11,r11,1672 + 13a0: f9 2b 00 00 std r9,0(r11) + 13a4: f9 4b 00 08 std r10,8(r11) + 13a8: e9 3f 09 a0 ld r9,2464(r31) + 13ac: 38 09 01 70 addi r0,r9,368 + 13b0: f8 1f 03 78 std r0,888(r31) + 13b4: 38 00 00 00 li r0,0 + 13b8: f8 1f 03 80 std r0,896(r31) + 13bc: e9 7f 00 90 ld r11,144(r31) + 13c0: 39 3f 03 78 addi r9,r31,888 + 13c4: e9 49 00 08 ld r10,8(r9) + 13c8: e9 29 00 00 ld r9,0(r9) + 13cc: 39 6b 06 98 addi r11,r11,1688 + 13d0: f9 2b 00 00 std r9,0(r11) + 13d4: f9 4b 00 08 std r10,8(r11) + 13d8: e9 3f 09 a0 ld r9,2464(r31) + 13dc: 38 09 01 80 addi r0,r9,384 + 13e0: f8 1f 03 68 std r0,872(r31) + 13e4: 38 00 00 00 li r0,0 + 13e8: f8 1f 03 70 std r0,880(r31) + 13ec: e9 7f 00 90 ld r11,144(r31) + 13f0: 39 3f 03 68 addi r9,r31,872 + 13f4: e9 49 00 08 ld r10,8(r9) + 13f8: e9 29 00 00 ld r9,0(r9) + 13fc: 39 6b 06 a8 addi r11,r11,1704 + 1400: f9 2b 00 00 std r9,0(r11) + 1404: f9 4b 00 08 std r10,8(r11) + 1408: e9 3f 09 a0 ld r9,2464(r31) + 140c: 38 09 01 90 addi r0,r9,400 + 1410: f8 1f 03 58 std r0,856(r31) + 1414: 38 00 00 00 li r0,0 + 1418: f8 1f 03 60 std r0,864(r31) + 141c: e9 7f 00 90 ld r11,144(r31) + 1420: 39 3f 03 58 addi r9,r31,856 + 1424: e9 49 00 08 ld r10,8(r9) + 1428: e9 29 00 00 ld r9,0(r9) + 142c: 39 6b 06 b8 addi r11,r11,1720 + 1430: f9 2b 00 00 std r9,0(r11) + 1434: f9 4b 00 08 std r10,8(r11) + 1438: e9 3f 09 a0 ld r9,2464(r31) + 143c: 38 09 01 a0 addi r0,r9,416 + 1440: f8 1f 03 48 std r0,840(r31) + 1444: 38 00 00 00 li r0,0 + 1448: f8 1f 03 50 std r0,848(r31) + 144c: e9 7f 00 90 ld r11,144(r31) + 1450: 39 3f 03 48 addi r9,r31,840 + 1454: e9 49 00 08 ld r10,8(r9) + 1458: e9 29 00 00 ld r9,0(r9) + 145c: 39 6b 06 c8 addi r11,r11,1736 + 1460: f9 2b 00 00 std r9,0(r11) + 1464: f9 4b 00 08 std r10,8(r11) + 1468: e9 3f 09 a0 ld r9,2464(r31) + 146c: 38 09 01 b0 addi r0,r9,432 + 1470: f8 1f 03 38 std r0,824(r31) + 1474: 38 00 00 00 li r0,0 + 1478: f8 1f 03 40 std r0,832(r31) + 147c: e9 7f 00 90 ld r11,144(r31) + 1480: 39 3f 03 38 addi r9,r31,824 + 1484: e9 49 00 08 ld r10,8(r9) + 1488: e9 29 00 00 ld r9,0(r9) + 148c: 39 6b 06 d8 addi r11,r11,1752 + 1490: f9 2b 00 00 std r9,0(r11) + 1494: f9 4b 00 08 std r10,8(r11) + 1498: e9 3f 09 a0 ld r9,2464(r31) + 149c: 38 09 01 c0 addi r0,r9,448 + 14a0: f8 1f 03 28 std r0,808(r31) + 14a4: 38 00 00 00 li r0,0 + 14a8: f8 1f 03 30 std r0,816(r31) + 14ac: e9 7f 00 90 ld r11,144(r31) + 14b0: 39 3f 03 28 addi r9,r31,808 + 14b4: e9 49 00 08 ld r10,8(r9) + 14b8: e9 29 00 00 ld r9,0(r9) + 14bc: 39 6b 06 e8 addi r11,r11,1768 + 14c0: f9 2b 00 00 std r9,0(r11) + 14c4: f9 4b 00 08 std r10,8(r11) + 14c8: e9 3f 09 a0 ld r9,2464(r31) + 14cc: 38 09 01 d0 addi r0,r9,464 + 14d0: f8 1f 03 18 std r0,792(r31) + 14d4: 38 00 00 00 li r0,0 + 14d8: f8 1f 03 20 std r0,800(r31) + 14dc: e9 7f 00 90 ld r11,144(r31) + 14e0: 39 3f 03 18 addi r9,r31,792 + 14e4: e9 49 00 08 ld r10,8(r9) + 14e8: e9 29 00 00 ld r9,0(r9) + 14ec: 39 6b 06 f8 addi r11,r11,1784 + 14f0: f9 2b 00 00 std r9,0(r11) + 14f4: f9 4b 00 08 std r10,8(r11) + 14f8: e9 3f 09 a0 ld r9,2464(r31) + 14fc: 38 09 01 e0 addi r0,r9,480 + 1500: f8 1f 03 08 std r0,776(r31) + 1504: 38 00 00 00 li r0,0 + 1508: f8 1f 03 10 std r0,784(r31) + 150c: e9 7f 00 90 ld r11,144(r31) + 1510: 39 3f 03 08 addi r9,r31,776 + 1514: e9 49 00 08 ld r10,8(r9) + 1518: e9 29 00 00 ld r9,0(r9) + 151c: 39 6b 07 08 addi r11,r11,1800 + 1520: f9 2b 00 00 std r9,0(r11) + 1524: f9 4b 00 08 std r10,8(r11) + 1528: e9 3f 09 a0 ld r9,2464(r31) + 152c: 38 09 01 f0 addi r0,r9,496 + 1530: f8 1f 02 f8 std r0,760(r31) + 1534: 38 00 00 00 li r0,0 + 1538: f8 1f 03 00 std r0,768(r31) + 153c: e9 7f 00 90 ld r11,144(r31) + 1540: 39 3f 02 f8 addi r9,r31,760 + 1544: e9 49 00 08 ld r10,8(r9) + 1548: e9 29 00 00 ld r9,0(r9) + 154c: 39 6b 07 18 addi r11,r11,1816 + 1550: f9 2b 00 00 std r9,0(r11) + 1554: f9 4b 00 08 std r10,8(r11) + 1558: e9 3f 09 a0 ld r9,2464(r31) + 155c: 38 09 02 10 addi r0,r9,528 + 1560: f8 1f 02 e8 std r0,744(r31) + 1564: 38 00 00 00 li r0,0 + 1568: f8 1f 02 f0 std r0,752(r31) + 156c: e9 7f 00 90 ld r11,144(r31) + 1570: 39 3f 02 e8 addi r9,r31,744 + 1574: e9 49 00 08 ld r10,8(r9) + 1578: e9 29 00 00 ld r9,0(r9) + 157c: 39 6b 07 28 addi r11,r11,1832 + 1580: f9 2b 00 00 std r9,0(r11) + 1584: f9 4b 00 08 std r10,8(r11) + 1588: e9 3f 09 a0 ld r9,2464(r31) + 158c: 38 09 02 00 addi r0,r9,512 + 1590: f8 1f 02 d8 std r0,728(r31) + 1594: 38 00 00 00 li r0,0 + 1598: f8 1f 02 e0 std r0,736(r31) + 159c: e9 7f 00 90 ld r11,144(r31) + 15a0: 39 3f 02 d8 addi r9,r31,728 + 15a4: e9 49 00 08 ld r10,8(r9) + 15a8: e9 29 00 00 ld r9,0(r9) + 15ac: 39 6b 07 38 addi r11,r11,1848 + 15b0: f9 2b 00 00 std r9,0(r11) + 15b4: f9 4b 00 08 std r10,8(r11) + 15b8: 48 00 08 38 b 1df0 <._Uppc64_step+0x1df0> + 15bc: e9 22 00 08 ld r9,8(r2) + 15c0: e9 49 00 08 ld r10,8(r9) + 15c4: e9 29 00 00 ld r9,0(r9) + 15c8: 39 7f 02 c8 addi r11,r31,712 + 15cc: f9 2b 00 00 std r9,0(r11) + 15d0: f9 4b 00 08 std r10,8(r11) + 15d4: e9 7f 00 90 ld r11,144(r31) + 15d8: 39 3f 02 c8 addi r9,r31,712 + 15dc: e9 49 00 08 ld r10,8(r9) + 15e0: e9 29 00 00 ld r9,0(r9) + 15e4: 39 6b 05 28 addi r11,r11,1320 + 15e8: f9 2b 00 00 std r9,0(r11) + 15ec: f9 4b 00 08 std r10,8(r11) + 15f0: e9 22 00 10 ld r9,16(r2) + 15f4: e9 49 00 08 ld r10,8(r9) + 15f8: e9 29 00 00 ld r9,0(r9) + 15fc: 39 7f 02 b8 addi r11,r31,696 + 1600: f9 2b 00 00 std r9,0(r11) + 1604: f9 4b 00 08 std r10,8(r11) + 1608: e9 7f 00 90 ld r11,144(r31) + 160c: 39 3f 02 b8 addi r9,r31,696 + 1610: e9 49 00 08 ld r10,8(r9) + 1614: e9 29 00 00 ld r9,0(r9) + 1618: 39 6b 05 38 addi r11,r11,1336 + 161c: f9 2b 00 00 std r9,0(r11) + 1620: f9 4b 00 08 std r10,8(r11) + 1624: e9 22 00 18 ld r9,24(r2) + 1628: e9 49 00 08 ld r10,8(r9) + 162c: e9 29 00 00 ld r9,0(r9) + 1630: 39 7f 02 a8 addi r11,r31,680 + 1634: f9 2b 00 00 std r9,0(r11) + 1638: f9 4b 00 08 std r10,8(r11) + 163c: e9 7f 00 90 ld r11,144(r31) + 1640: 39 3f 02 a8 addi r9,r31,680 + 1644: e9 49 00 08 ld r10,8(r9) + 1648: e9 29 00 00 ld r9,0(r9) + 164c: 39 6b 05 48 addi r11,r11,1352 + 1650: f9 2b 00 00 std r9,0(r11) + 1654: f9 4b 00 08 std r10,8(r11) + 1658: e9 22 00 20 ld r9,32(r2) + 165c: e9 49 00 08 ld r10,8(r9) + 1660: e9 29 00 00 ld r9,0(r9) + 1664: 39 7f 02 98 addi r11,r31,664 + 1668: f9 2b 00 00 std r9,0(r11) + 166c: f9 4b 00 08 std r10,8(r11) + 1670: e9 7f 00 90 ld r11,144(r31) + 1674: 39 3f 02 98 addi r9,r31,664 + 1678: e9 49 00 08 ld r10,8(r9) + 167c: e9 29 00 00 ld r9,0(r9) + 1680: 39 6b 05 58 addi r11,r11,1368 + 1684: f9 2b 00 00 std r9,0(r11) + 1688: f9 4b 00 08 std r10,8(r11) + 168c: e9 22 00 28 ld r9,40(r2) + 1690: e9 49 00 08 ld r10,8(r9) + 1694: e9 29 00 00 ld r9,0(r9) + 1698: 39 7f 02 88 addi r11,r31,648 + 169c: f9 2b 00 00 std r9,0(r11) + 16a0: f9 4b 00 08 std r10,8(r11) + 16a4: e9 7f 00 90 ld r11,144(r31) + 16a8: 39 3f 02 88 addi r9,r31,648 + 16ac: e9 49 00 08 ld r10,8(r9) + 16b0: e9 29 00 00 ld r9,0(r9) + 16b4: 39 6b 05 68 addi r11,r11,1384 + 16b8: f9 2b 00 00 std r9,0(r11) + 16bc: f9 4b 00 08 std r10,8(r11) + 16c0: e9 22 00 30 ld r9,48(r2) + 16c4: e9 49 00 08 ld r10,8(r9) + 16c8: e9 29 00 00 ld r9,0(r9) + 16cc: 39 7f 02 78 addi r11,r31,632 + 16d0: f9 2b 00 00 std r9,0(r11) + 16d4: f9 4b 00 08 std r10,8(r11) + 16d8: e9 7f 00 90 ld r11,144(r31) + 16dc: 39 3f 02 78 addi r9,r31,632 + 16e0: e9 49 00 08 ld r10,8(r9) + 16e4: e9 29 00 00 ld r9,0(r9) + 16e8: 39 6b 05 78 addi r11,r11,1400 + 16ec: f9 2b 00 00 std r9,0(r11) + 16f0: f9 4b 00 08 std r10,8(r11) + 16f4: e9 22 00 38 ld r9,56(r2) + 16f8: e9 49 00 08 ld r10,8(r9) + 16fc: e9 29 00 00 ld r9,0(r9) + 1700: 39 7f 02 68 addi r11,r31,616 + 1704: f9 2b 00 00 std r9,0(r11) + 1708: f9 4b 00 08 std r10,8(r11) + 170c: e9 7f 00 90 ld r11,144(r31) + 1710: 39 3f 02 68 addi r9,r31,616 + 1714: e9 49 00 08 ld r10,8(r9) + 1718: e9 29 00 00 ld r9,0(r9) + 171c: 39 6b 05 88 addi r11,r11,1416 + 1720: f9 2b 00 00 std r9,0(r11) + 1724: f9 4b 00 08 std r10,8(r11) + 1728: e9 22 00 40 ld r9,64(r2) + 172c: e9 49 00 08 ld r10,8(r9) + 1730: e9 29 00 00 ld r9,0(r9) + 1734: 39 7f 02 58 addi r11,r31,600 + 1738: f9 2b 00 00 std r9,0(r11) + 173c: f9 4b 00 08 std r10,8(r11) + 1740: e9 7f 00 90 ld r11,144(r31) + 1744: 39 3f 02 58 addi r9,r31,600 + 1748: e9 49 00 08 ld r10,8(r9) + 174c: e9 29 00 00 ld r9,0(r9) + 1750: 39 6b 05 98 addi r11,r11,1432 + 1754: f9 2b 00 00 std r9,0(r11) + 1758: f9 4b 00 08 std r10,8(r11) + 175c: e9 22 00 48 ld r9,72(r2) + 1760: e9 49 00 08 ld r10,8(r9) + 1764: e9 29 00 00 ld r9,0(r9) + 1768: 39 7f 02 48 addi r11,r31,584 + 176c: f9 2b 00 00 std r9,0(r11) + 1770: f9 4b 00 08 std r10,8(r11) + 1774: e9 7f 00 90 ld r11,144(r31) + 1778: 39 3f 02 48 addi r9,r31,584 + 177c: e9 49 00 08 ld r10,8(r9) + 1780: e9 29 00 00 ld r9,0(r9) + 1784: 39 6b 05 a8 addi r11,r11,1448 + 1788: f9 2b 00 00 std r9,0(r11) + 178c: f9 4b 00 08 std r10,8(r11) + 1790: e9 22 00 50 ld r9,80(r2) + 1794: e9 49 00 08 ld r10,8(r9) + 1798: e9 29 00 00 ld r9,0(r9) + 179c: 39 7f 02 38 addi r11,r31,568 + 17a0: f9 2b 00 00 std r9,0(r11) + 17a4: f9 4b 00 08 std r10,8(r11) + 17a8: e9 7f 00 90 ld r11,144(r31) + 17ac: 39 3f 02 38 addi r9,r31,568 + 17b0: e9 49 00 08 ld r10,8(r9) + 17b4: e9 29 00 00 ld r9,0(r9) + 17b8: 39 6b 05 b8 addi r11,r11,1464 + 17bc: f9 2b 00 00 std r9,0(r11) + 17c0: f9 4b 00 08 std r10,8(r11) + 17c4: e9 22 00 58 ld r9,88(r2) + 17c8: e9 49 00 08 ld r10,8(r9) + 17cc: e9 29 00 00 ld r9,0(r9) + 17d0: 39 7f 02 28 addi r11,r31,552 + 17d4: f9 2b 00 00 std r9,0(r11) + 17d8: f9 4b 00 08 std r10,8(r11) + 17dc: e9 7f 00 90 ld r11,144(r31) + 17e0: 39 3f 02 28 addi r9,r31,552 + 17e4: e9 49 00 08 ld r10,8(r9) + 17e8: e9 29 00 00 ld r9,0(r9) + 17ec: 39 6b 05 c8 addi r11,r11,1480 + 17f0: f9 2b 00 00 std r9,0(r11) + 17f4: f9 4b 00 08 std r10,8(r11) + 17f8: e9 22 00 60 ld r9,96(r2) + 17fc: e9 49 00 08 ld r10,8(r9) + 1800: e9 29 00 00 ld r9,0(r9) + 1804: 39 7f 02 18 addi r11,r31,536 + 1808: f9 2b 00 00 std r9,0(r11) + 180c: f9 4b 00 08 std r10,8(r11) + 1810: e9 7f 00 90 ld r11,144(r31) + 1814: 39 3f 02 18 addi r9,r31,536 + 1818: e9 49 00 08 ld r10,8(r9) + 181c: e9 29 00 00 ld r9,0(r9) + 1820: 39 6b 05 d8 addi r11,r11,1496 + 1824: f9 2b 00 00 std r9,0(r11) + 1828: f9 4b 00 08 std r10,8(r11) + 182c: e9 22 00 68 ld r9,104(r2) + 1830: e9 49 00 08 ld r10,8(r9) + 1834: e9 29 00 00 ld r9,0(r9) + 1838: 39 7f 02 08 addi r11,r31,520 + 183c: f9 2b 00 00 std r9,0(r11) + 1840: f9 4b 00 08 std r10,8(r11) + 1844: e9 7f 00 90 ld r11,144(r31) + 1848: 39 3f 02 08 addi r9,r31,520 + 184c: e9 49 00 08 ld r10,8(r9) + 1850: e9 29 00 00 ld r9,0(r9) + 1854: 39 6b 05 e8 addi r11,r11,1512 + 1858: f9 2b 00 00 std r9,0(r11) + 185c: f9 4b 00 08 std r10,8(r11) + 1860: e9 22 00 70 ld r9,112(r2) + 1864: e9 49 00 08 ld r10,8(r9) + 1868: e9 29 00 00 ld r9,0(r9) + 186c: 39 7f 01 f8 addi r11,r31,504 + 1870: f9 2b 00 00 std r9,0(r11) + 1874: f9 4b 00 08 std r10,8(r11) + 1878: e9 7f 00 90 ld r11,144(r31) + 187c: 39 3f 01 f8 addi r9,r31,504 + 1880: e9 49 00 08 ld r10,8(r9) + 1884: e9 29 00 00 ld r9,0(r9) + 1888: 39 6b 05 f8 addi r11,r11,1528 + 188c: f9 2b 00 00 std r9,0(r11) + 1890: f9 4b 00 08 std r10,8(r11) + 1894: e9 22 00 78 ld r9,120(r2) + 1898: e9 49 00 08 ld r10,8(r9) + 189c: e9 29 00 00 ld r9,0(r9) + 18a0: 39 7f 01 e8 addi r11,r31,488 + 18a4: f9 2b 00 00 std r9,0(r11) + 18a8: f9 4b 00 08 std r10,8(r11) + 18ac: e9 7f 00 90 ld r11,144(r31) + 18b0: 39 3f 01 e8 addi r9,r31,488 + 18b4: e9 49 00 08 ld r10,8(r9) + 18b8: e9 29 00 00 ld r9,0(r9) + 18bc: 39 6b 06 08 addi r11,r11,1544 + 18c0: f9 2b 00 00 std r9,0(r11) + 18c4: f9 4b 00 08 std r10,8(r11) + 18c8: e9 22 00 80 ld r9,128(r2) + 18cc: e9 49 00 08 ld r10,8(r9) + 18d0: e9 29 00 00 ld r9,0(r9) + 18d4: 39 7f 01 d8 addi r11,r31,472 + 18d8: f9 2b 00 00 std r9,0(r11) + 18dc: f9 4b 00 08 std r10,8(r11) + 18e0: e9 7f 00 90 ld r11,144(r31) + 18e4: 39 3f 01 d8 addi r9,r31,472 + 18e8: e9 49 00 08 ld r10,8(r9) + 18ec: e9 29 00 00 ld r9,0(r9) + 18f0: 39 6b 06 18 addi r11,r11,1560 + 18f4: f9 2b 00 00 std r9,0(r11) + 18f8: f9 4b 00 08 std r10,8(r11) + 18fc: e9 22 00 88 ld r9,136(r2) + 1900: e9 49 00 08 ld r10,8(r9) + 1904: e9 29 00 00 ld r9,0(r9) + 1908: 39 7f 01 c8 addi r11,r31,456 + 190c: f9 2b 00 00 std r9,0(r11) + 1910: f9 4b 00 08 std r10,8(r11) + 1914: e9 7f 00 90 ld r11,144(r31) + 1918: 39 3f 01 c8 addi r9,r31,456 + 191c: e9 49 00 08 ld r10,8(r9) + 1920: e9 29 00 00 ld r9,0(r9) + 1924: 39 6b 06 28 addi r11,r11,1576 + 1928: f9 2b 00 00 std r9,0(r11) + 192c: f9 4b 00 08 std r10,8(r11) + 1930: e9 22 00 90 ld r9,144(r2) + 1934: e9 49 00 08 ld r10,8(r9) + 1938: e9 29 00 00 ld r9,0(r9) + 193c: 39 7f 01 b8 addi r11,r31,440 + 1940: f9 2b 00 00 std r9,0(r11) + 1944: f9 4b 00 08 std r10,8(r11) + 1948: e9 7f 00 90 ld r11,144(r31) + 194c: 39 3f 01 b8 addi r9,r31,440 + 1950: e9 49 00 08 ld r10,8(r9) + 1954: e9 29 00 00 ld r9,0(r9) + 1958: 39 6b 06 38 addi r11,r11,1592 + 195c: f9 2b 00 00 std r9,0(r11) + 1960: f9 4b 00 08 std r10,8(r11) + 1964: e9 22 00 98 ld r9,152(r2) + 1968: e9 49 00 08 ld r10,8(r9) + 196c: e9 29 00 00 ld r9,0(r9) + 1970: 39 7f 01 a8 addi r11,r31,424 + 1974: f9 2b 00 00 std r9,0(r11) + 1978: f9 4b 00 08 std r10,8(r11) + 197c: e9 7f 00 90 ld r11,144(r31) + 1980: 39 3f 01 a8 addi r9,r31,424 + 1984: e9 49 00 08 ld r10,8(r9) + 1988: e9 29 00 00 ld r9,0(r9) + 198c: 39 6b 06 48 addi r11,r11,1608 + 1990: f9 2b 00 00 std r9,0(r11) + 1994: f9 4b 00 08 std r10,8(r11) + 1998: e9 22 00 a0 ld r9,160(r2) + 199c: e9 49 00 08 ld r10,8(r9) + 19a0: e9 29 00 00 ld r9,0(r9) + 19a4: 39 7f 01 98 addi r11,r31,408 + 19a8: f9 2b 00 00 std r9,0(r11) + 19ac: f9 4b 00 08 std r10,8(r11) + 19b0: e9 7f 00 90 ld r11,144(r31) + 19b4: 39 3f 01 98 addi r9,r31,408 + 19b8: e9 49 00 08 ld r10,8(r9) + 19bc: e9 29 00 00 ld r9,0(r9) + 19c0: 39 6b 06 58 addi r11,r11,1624 + 19c4: f9 2b 00 00 std r9,0(r11) + 19c8: f9 4b 00 08 std r10,8(r11) + 19cc: e9 22 00 a8 ld r9,168(r2) + 19d0: e9 49 00 08 ld r10,8(r9) + 19d4: e9 29 00 00 ld r9,0(r9) + 19d8: 39 7f 01 88 addi r11,r31,392 + 19dc: f9 2b 00 00 std r9,0(r11) + 19e0: f9 4b 00 08 std r10,8(r11) + 19e4: e9 7f 00 90 ld r11,144(r31) + 19e8: 39 3f 01 88 addi r9,r31,392 + 19ec: e9 49 00 08 ld r10,8(r9) + 19f0: e9 29 00 00 ld r9,0(r9) + 19f4: 39 6b 06 68 addi r11,r11,1640 + 19f8: f9 2b 00 00 std r9,0(r11) + 19fc: f9 4b 00 08 std r10,8(r11) + 1a00: e9 22 00 b0 ld r9,176(r2) + 1a04: e9 49 00 08 ld r10,8(r9) + 1a08: e9 29 00 00 ld r9,0(r9) + 1a0c: 39 7f 01 78 addi r11,r31,376 + 1a10: f9 2b 00 00 std r9,0(r11) + 1a14: f9 4b 00 08 std r10,8(r11) + 1a18: e9 7f 00 90 ld r11,144(r31) + 1a1c: 39 3f 01 78 addi r9,r31,376 + 1a20: e9 49 00 08 ld r10,8(r9) + 1a24: e9 29 00 00 ld r9,0(r9) + 1a28: 39 6b 06 78 addi r11,r11,1656 + 1a2c: f9 2b 00 00 std r9,0(r11) + 1a30: f9 4b 00 08 std r10,8(r11) + 1a34: e9 22 00 b8 ld r9,184(r2) + 1a38: e9 49 00 08 ld r10,8(r9) + 1a3c: e9 29 00 00 ld r9,0(r9) + 1a40: 39 7f 01 68 addi r11,r31,360 + 1a44: f9 2b 00 00 std r9,0(r11) + 1a48: f9 4b 00 08 std r10,8(r11) + 1a4c: e9 7f 00 90 ld r11,144(r31) + 1a50: 39 3f 01 68 addi r9,r31,360 + 1a54: e9 49 00 08 ld r10,8(r9) + 1a58: e9 29 00 00 ld r9,0(r9) + 1a5c: 39 6b 06 88 addi r11,r11,1672 + 1a60: f9 2b 00 00 std r9,0(r11) + 1a64: f9 4b 00 08 std r10,8(r11) + 1a68: e9 22 00 c0 ld r9,192(r2) + 1a6c: e9 49 00 08 ld r10,8(r9) + 1a70: e9 29 00 00 ld r9,0(r9) + 1a74: 39 7f 01 58 addi r11,r31,344 + 1a78: f9 2b 00 00 std r9,0(r11) + 1a7c: f9 4b 00 08 std r10,8(r11) + 1a80: e9 7f 00 90 ld r11,144(r31) + 1a84: 39 3f 01 58 addi r9,r31,344 + 1a88: e9 49 00 08 ld r10,8(r9) + 1a8c: e9 29 00 00 ld r9,0(r9) + 1a90: 39 6b 06 98 addi r11,r11,1688 + 1a94: f9 2b 00 00 std r9,0(r11) + 1a98: f9 4b 00 08 std r10,8(r11) + 1a9c: e9 22 00 c8 ld r9,200(r2) + 1aa0: e9 49 00 08 ld r10,8(r9) + 1aa4: e9 29 00 00 ld r9,0(r9) + 1aa8: 39 7f 01 48 addi r11,r31,328 + 1aac: f9 2b 00 00 std r9,0(r11) + 1ab0: f9 4b 00 08 std r10,8(r11) + 1ab4: e9 7f 00 90 ld r11,144(r31) + 1ab8: 39 3f 01 48 addi r9,r31,328 + 1abc: e9 49 00 08 ld r10,8(r9) + 1ac0: e9 29 00 00 ld r9,0(r9) + 1ac4: 39 6b 06 a8 addi r11,r11,1704 + 1ac8: f9 2b 00 00 std r9,0(r11) + 1acc: f9 4b 00 08 std r10,8(r11) + 1ad0: e9 22 00 d0 ld r9,208(r2) + 1ad4: e9 49 00 08 ld r10,8(r9) + 1ad8: e9 29 00 00 ld r9,0(r9) + 1adc: 39 7f 01 38 addi r11,r31,312 + 1ae0: f9 2b 00 00 std r9,0(r11) + 1ae4: f9 4b 00 08 std r10,8(r11) + 1ae8: e9 7f 00 90 ld r11,144(r31) + 1aec: 39 3f 01 38 addi r9,r31,312 + 1af0: e9 49 00 08 ld r10,8(r9) + 1af4: e9 29 00 00 ld r9,0(r9) + 1af8: 39 6b 06 b8 addi r11,r11,1720 + 1afc: f9 2b 00 00 std r9,0(r11) + 1b00: f9 4b 00 08 std r10,8(r11) + 1b04: e9 22 00 d8 ld r9,216(r2) + 1b08: e9 49 00 08 ld r10,8(r9) + 1b0c: e9 29 00 00 ld r9,0(r9) + 1b10: 39 7f 01 28 addi r11,r31,296 + 1b14: f9 2b 00 00 std r9,0(r11) + 1b18: f9 4b 00 08 std r10,8(r11) + 1b1c: e9 7f 00 90 ld r11,144(r31) + 1b20: 39 3f 01 28 addi r9,r31,296 + 1b24: e9 49 00 08 ld r10,8(r9) + 1b28: e9 29 00 00 ld r9,0(r9) + 1b2c: 39 6b 06 c8 addi r11,r11,1736 + 1b30: f9 2b 00 00 std r9,0(r11) + 1b34: f9 4b 00 08 std r10,8(r11) + 1b38: e9 22 00 e0 ld r9,224(r2) + 1b3c: e9 49 00 08 ld r10,8(r9) + 1b40: e9 29 00 00 ld r9,0(r9) + 1b44: 39 7f 01 18 addi r11,r31,280 + 1b48: f9 2b 00 00 std r9,0(r11) + 1b4c: f9 4b 00 08 std r10,8(r11) + 1b50: e9 7f 00 90 ld r11,144(r31) + 1b54: 39 3f 01 18 addi r9,r31,280 + 1b58: e9 49 00 08 ld r10,8(r9) + 1b5c: e9 29 00 00 ld r9,0(r9) + 1b60: 39 6b 06 d8 addi r11,r11,1752 + 1b64: f9 2b 00 00 std r9,0(r11) + 1b68: f9 4b 00 08 std r10,8(r11) + 1b6c: e9 22 00 e8 ld r9,232(r2) + 1b70: e9 49 00 08 ld r10,8(r9) + 1b74: e9 29 00 00 ld r9,0(r9) + 1b78: 39 7f 01 08 addi r11,r31,264 + 1b7c: f9 2b 00 00 std r9,0(r11) + 1b80: f9 4b 00 08 std r10,8(r11) + 1b84: e9 7f 00 90 ld r11,144(r31) + 1b88: 39 3f 01 08 addi r9,r31,264 + 1b8c: e9 49 00 08 ld r10,8(r9) + 1b90: e9 29 00 00 ld r9,0(r9) + 1b94: 39 6b 06 e8 addi r11,r11,1768 + 1b98: f9 2b 00 00 std r9,0(r11) + 1b9c: f9 4b 00 08 std r10,8(r11) + 1ba0: e9 22 00 f0 ld r9,240(r2) + 1ba4: e9 49 00 08 ld r10,8(r9) + 1ba8: e9 29 00 00 ld r9,0(r9) + 1bac: 39 7f 00 f8 addi r11,r31,248 + 1bb0: f9 2b 00 00 std r9,0(r11) + 1bb4: f9 4b 00 08 std r10,8(r11) + 1bb8: e9 7f 00 90 ld r11,144(r31) + 1bbc: 39 3f 00 f8 addi r9,r31,248 + 1bc0: e9 49 00 08 ld r10,8(r9) + 1bc4: e9 29 00 00 ld r9,0(r9) + 1bc8: 39 6b 06 f8 addi r11,r11,1784 + 1bcc: f9 2b 00 00 std r9,0(r11) + 1bd0: f9 4b 00 08 std r10,8(r11) + 1bd4: e9 22 00 f8 ld r9,248(r2) + 1bd8: e9 49 00 08 ld r10,8(r9) + 1bdc: e9 29 00 00 ld r9,0(r9) + 1be0: 39 7f 00 e8 addi r11,r31,232 + 1be4: f9 2b 00 00 std r9,0(r11) + 1be8: f9 4b 00 08 std r10,8(r11) + 1bec: e9 7f 00 90 ld r11,144(r31) + 1bf0: 39 3f 00 e8 addi r9,r31,232 + 1bf4: e9 49 00 08 ld r10,8(r9) + 1bf8: e9 29 00 00 ld r9,0(r9) + 1bfc: 39 6b 07 08 addi r11,r11,1800 + 1c00: f9 2b 00 00 std r9,0(r11) + 1c04: f9 4b 00 08 std r10,8(r11) + 1c08: e9 22 01 00 ld r9,256(r2) + 1c0c: e9 49 00 08 ld r10,8(r9) + 1c10: e9 29 00 00 ld r9,0(r9) + 1c14: 39 7f 00 d8 addi r11,r31,216 + 1c18: f9 2b 00 00 std r9,0(r11) + 1c1c: f9 4b 00 08 std r10,8(r11) + 1c20: e9 7f 00 90 ld r11,144(r31) + 1c24: 39 3f 00 d8 addi r9,r31,216 + 1c28: e9 49 00 08 ld r10,8(r9) + 1c2c: e9 29 00 00 ld r9,0(r9) + 1c30: 39 6b 07 18 addi r11,r11,1816 + 1c34: f9 2b 00 00 std r9,0(r11) + 1c38: f9 4b 00 08 std r10,8(r11) + 1c3c: e9 22 01 08 ld r9,264(r2) + 1c40: e9 49 00 08 ld r10,8(r9) + 1c44: e9 29 00 00 ld r9,0(r9) + 1c48: 39 7f 00 c8 addi r11,r31,200 + 1c4c: f9 2b 00 00 std r9,0(r11) + 1c50: f9 4b 00 08 std r10,8(r11) + 1c54: e9 7f 00 90 ld r11,144(r31) + 1c58: 39 3f 00 c8 addi r9,r31,200 + 1c5c: e9 49 00 08 ld r10,8(r9) + 1c60: e9 29 00 00 ld r9,0(r9) + 1c64: 39 6b 07 28 addi r11,r11,1832 + 1c68: f9 2b 00 00 std r9,0(r11) + 1c6c: f9 4b 00 08 std r10,8(r11) + 1c70: e9 22 01 10 ld r9,272(r2) + 1c74: e9 49 00 08 ld r10,8(r9) + 1c78: e9 29 00 00 ld r9,0(r9) + 1c7c: 39 7f 00 b8 addi r11,r31,184 + 1c80: f9 2b 00 00 std r9,0(r11) + 1c84: f9 4b 00 08 std r10,8(r11) + 1c88: e9 7f 00 90 ld r11,144(r31) + 1c8c: 39 3f 00 b8 addi r9,r31,184 + 1c90: e9 49 00 08 ld r10,8(r9) + 1c94: e9 29 00 00 ld r9,0(r9) + 1c98: 39 6b 07 38 addi r11,r11,1848 + 1c9c: f9 2b 00 00 std r9,0(r11) + 1ca0: f9 4b 00 08 std r10,8(r11) + 1ca4: 48 00 01 4c b 1df0 <._Uppc64_step+0x1df0> + 1ca8: 38 00 00 00 li r0,0 + 1cac: f8 1f 00 88 std r0,136(r31) + 1cb0: 38 00 00 10 li r0,16 + 1cb4: f8 1f 00 80 std r0,128(r31) + 1cb8: e9 3f 00 90 ld r9,144(r31) + 1cbc: e9 29 00 10 ld r9,16(r9) + 1cc0: e8 1f 00 88 ld r0,136(r31) + 1cc4: 7c 09 02 14 add r0,r9,r0 + 1cc8: f8 1f 00 a8 std r0,168(r31) + 1ccc: 38 00 00 00 li r0,0 + 1cd0: f8 1f 00 b0 std r0,176(r31) + 1cd4: 39 3f 00 a8 addi r9,r31,168 + 1cd8: e9 49 00 08 ld r10,8(r9) + 1cdc: e9 29 00 00 ld r9,0(r9) + 1ce0: 39 7f 09 a8 addi r11,r31,2472 + 1ce4: f9 2b 00 00 std r9,0(r11) + 1ce8: f9 4b 00 08 std r10,8(r11) + 1cec: e8 1f 00 90 ld r0,144(r31) + 1cf0: e9 3f 00 90 ld r9,144(r31) + 1cf4: 39 69 00 10 addi r11,r9,16 + 1cf8: 7c 03 03 78 mr r3,r0 + 1cfc: 39 3f 09 a8 addi r9,r31,2472 + 1d00: e8 89 00 00 ld r4,0(r9) + 1d04: e8 a9 00 08 ld r5,8(r9) + 1d08: 7d 66 5b 78 mr r6,r11 + 1d0c: 48 00 00 19 bl 1d24 <._Uppc64_step+0x1d24> + 1d10: 7c 60 1b 78 mr r0,r3 + 1d14: 90 1f 00 78 stw r0,120(r31) + 1d18: 80 1f 00 78 lwz r0,120(r31) + 1d1c: 2f 80 00 00 cmpwi cr7,r0,0 + 1d20: 40 9c 00 14 bge- cr7,1d34 <._Uppc64_step+0x1d34> + 1d24: 80 1f 00 78 lwz r0,120(r31) + 1d28: 7c 00 07 b4 extsw r0,r0 + 1d2c: f8 1f 0a 00 std r0,2560(r31) + 1d30: 48 00 00 cc b 1dfc <._Uppc64_step+0x1dfc> + 1d34: e9 3f 00 90 ld r9,144(r31) + 1d38: e8 09 00 10 ld r0,16(r9) + 1d3c: 2f a0 00 00 cmpdi cr7,r0,0 + 1d40: 40 9e 00 10 bne- cr7,1d50 <._Uppc64_step+0x1d50> + 1d44: 38 00 00 00 li r0,0 + 1d48: f8 1f 0a 00 std r0,2560(r31) + 1d4c: 48 00 00 b0 b 1dfc <._Uppc64_step+0x1dfc> + 1d50: e9 3f 00 90 ld r9,144(r31) + 1d54: e9 29 00 10 ld r9,16(r9) + 1d58: e8 1f 00 80 ld r0,128(r31) + 1d5c: 7c 09 02 14 add r0,r9,r0 + 1d60: f8 1f 00 98 std r0,152(r31) + 1d64: 38 00 00 00 li r0,0 + 1d68: f8 1f 00 a0 std r0,160(r31) + 1d6c: 39 3f 00 98 addi r9,r31,152 + 1d70: e9 49 00 08 ld r10,8(r9) + 1d74: e9 29 00 00 ld r9,0(r9) + 1d78: 39 7f 09 b8 addi r11,r31,2488 + 1d7c: f9 2b 00 00 std r9,0(r11) + 1d80: f9 4b 00 08 std r10,8(r11) + 1d84: e8 1f 00 90 ld r0,144(r31) + 1d88: e9 3f 00 90 ld r9,144(r31) + 1d8c: 39 69 00 18 addi r11,r9,24 + 1d90: 7c 03 03 78 mr r3,r0 + 1d94: 39 3f 09 b8 addi r9,r31,2488 + 1d98: e8 89 00 00 ld r4,0(r9) + 1d9c: e8 a9 00 08 ld r5,8(r9) + 1da0: 7d 66 5b 78 mr r6,r11 + 1da4: 48 00 00 19 bl 1dbc <._Uppc64_step+0x1dbc> + 1da8: 7c 60 1b 78 mr r0,r3 + 1dac: 90 1f 00 78 stw r0,120(r31) + 1db0: 80 1f 00 78 lwz r0,120(r31) + 1db4: 2f 80 00 00 cmpwi cr7,r0,0 + 1db8: 40 9c 00 14 bge- cr7,1dcc <._Uppc64_step+0x1dcc> + 1dbc: 80 1f 00 78 lwz r0,120(r31) + 1dc0: 7c 00 07 b4 extsw r0,r0 + 1dc4: f8 1f 0a 00 std r0,2560(r31) + 1dc8: 48 00 00 34 b 1dfc <._Uppc64_step+0x1dfc> + 1dcc: e8 62 01 18 ld r3,280(r2) + 1dd0: 48 00 00 01 bl 1dd0 <._Uppc64_step+0x1dd0> + 1dd4: 60 00 00 00 nop + 1dd8: 38 00 00 01 li r0,1 + 1ddc: 90 1f 00 78 stw r0,120(r31) + 1de0: 48 00 00 10 b 1df0 <._Uppc64_step+0x1df0> + 1de4: e8 62 01 20 ld r3,288(r2) + 1de8: 48 00 00 01 bl 1de8 <._Uppc64_step+0x1de8> + 1dec: 60 00 00 00 nop + 1df0: 80 1f 00 78 lwz r0,120(r31) + 1df4: 7c 00 07 b4 extsw r0,r0 + 1df8: f8 1f 0a 00 std r0,2560(r31) + 1dfc: e8 1f 0a 00 ld r0,2560(r31) + 1e00: 7c 03 03 78 mr r3,r0 + 1e04: e8 21 00 00 ld r1,0(r1) + 1e08: e8 01 00 10 ld r0,16(r1) + 1e0c: 7c 08 03 a6 mtlr r0 + 1e10: eb e1 ff f8 ld r31,-8(r1) + 1e14: 4e 80 00 20 blr + 1e18: 00 00 00 00 .long 0x0 + 1e1c: 00 00 00 01 .long 0x1 + 1e20: 80 01 00 01 lwz r0,1(r1) + +0000000000001e24 <.dwarf_get>: + 1e24: 7c 08 02 a6 mflr r0 + 1e28: fb e1 ff f8 std r31,-8(r1) + 1e2c: f8 01 00 10 std r0,16(r1) + 1e30: f8 21 ff 61 stdu r1,-160(r1) + 1e34: 7c 3f 0b 78 mr r31,r1 + 1e38: f8 7f 00 d0 std r3,208(r31) + 1e3c: 39 3f 00 d8 addi r9,r31,216 + 1e40: f8 89 00 00 std r4,0(r9) + 1e44: f8 a9 00 08 std r5,8(r9) + 1e48: f8 df 00 e8 std r6,232(r31) + 1e4c: 39 3f 00 d8 addi r9,r31,216 + 1e50: e9 49 00 08 ld r10,8(r9) + 1e54: e9 29 00 00 ld r9,0(r9) + 1e58: f9 3f 00 70 std r9,112(r31) + 1e5c: f9 5f 00 78 std r10,120(r31) + 1e60: e8 1f 00 70 ld r0,112(r31) + 1e64: 2f a0 00 00 cmpdi cr7,r0,0 + 1e68: 40 9e 00 1c bne- cr7,1e84 <.dwarf_get+0x60> + 1e6c: e8 1f 00 78 ld r0,120(r31) + 1e70: 2f a0 00 00 cmpdi cr7,r0,0 + 1e74: 40 9e 00 10 bne- cr7,1e84 <.dwarf_get+0x60> + 1e78: 38 00 00 01 li r0,1 + 1e7c: f8 1f 00 88 std r0,136(r31) + 1e80: 48 00 00 0c b 1e8c <.dwarf_get+0x68> + 1e84: 38 00 00 00 li r0,0 + 1e88: f8 1f 00 88 std r0,136(r31) + 1e8c: e8 1f 00 88 ld r0,136(r31) + 1e90: 2f a0 00 00 cmpdi cr7,r0,0 + 1e94: 41 9e 00 10 beq- cr7,1ea4 <.dwarf_get+0x80> + 1e98: 38 00 ff fd li r0,-3 + 1e9c: f8 1f 00 80 std r0,128(r31) + 1ea0: 48 00 00 cc b 1f6c <.dwarf_get+0x148> + 1ea4: e8 1f 00 e0 ld r0,224(r31) + 1ea8: 54 00 07 bc rlwinm r0,r0,0,30,30 + 1eac: 2f a0 00 00 cmpdi cr7,r0,0 + 1eb0: 41 9e 00 64 beq- cr7,1f14 <.dwarf_get+0xf0> + 1eb4: e9 3f 00 d0 ld r9,208(r31) + 1eb8: e9 29 00 08 ld r9,8(r9) + 1ebc: e9 69 00 20 ld r11,32(r9) + 1ec0: e9 3f 00 d0 ld r9,208(r31) + 1ec4: e9 49 00 08 ld r10,8(r9) + 1ec8: e8 1f 00 d8 ld r0,216(r31) + 1ecc: 7c 00 07 b4 extsw r0,r0 + 1ed0: e9 3f 00 d0 ld r9,208(r31) + 1ed4: e9 29 00 00 ld r9,0(r9) + 1ed8: 7d 43 53 78 mr r3,r10 + 1edc: 7c 04 03 78 mr r4,r0 + 1ee0: e8 bf 00 e8 ld r5,232(r31) + 1ee4: 38 c0 00 00 li r6,0 + 1ee8: 7d 27 4b 78 mr r7,r9 + 1eec: e8 0b 00 00 ld r0,0(r11) + 1ef0: 7c 09 03 a6 mtctr r0 + 1ef4: f8 41 00 28 std r2,40(r1) + 1ef8: e8 4b 00 08 ld r2,8(r11) + 1efc: e9 6b 00 10 ld r11,16(r11) + 1f00: 4e 80 04 21 bctrl + 1f04: e8 41 00 28 ld r2,40(r1) + 1f08: 7c 60 1b 78 mr r0,r3 + 1f0c: f8 1f 00 80 std r0,128(r31) + 1f10: 48 00 00 5c b 1f6c <.dwarf_get+0x148> + 1f14: e9 3f 00 d0 ld r9,208(r31) + 1f18: e9 29 00 08 ld r9,8(r9) + 1f1c: e9 69 00 18 ld r11,24(r9) + 1f20: e9 3f 00 d0 ld r9,208(r31) + 1f24: e8 09 00 08 ld r0,8(r9) + 1f28: e9 5f 00 d8 ld r10,216(r31) + 1f2c: e9 3f 00 d0 ld r9,208(r31) + 1f30: e9 29 00 00 ld r9,0(r9) + 1f34: 7c 03 03 78 mr r3,r0 + 1f38: 7d 44 53 78 mr r4,r10 + 1f3c: e8 bf 00 e8 ld r5,232(r31) + 1f40: 38 c0 00 00 li r6,0 + 1f44: 7d 27 4b 78 mr r7,r9 + 1f48: e8 0b 00 00 ld r0,0(r11) + 1f4c: 7c 09 03 a6 mtctr r0 + 1f50: f8 41 00 28 std r2,40(r1) + 1f54: e8 4b 00 08 ld r2,8(r11) + 1f58: e9 6b 00 10 ld r11,16(r11) + 1f5c: 4e 80 04 21 bctrl + 1f60: e8 41 00 28 ld r2,40(r1) + 1f64: 7c 60 1b 78 mr r0,r3 + 1f68: f8 1f 00 80 std r0,128(r31) + 1f6c: e8 1f 00 80 ld r0,128(r31) + 1f70: 7c 03 03 78 mr r3,r0 + 1f74: e8 21 00 00 ld r1,0(r1) + 1f78: e8 01 00 10 ld r0,16(r1) + 1f7c: 7c 08 03 a6 mtlr r0 + 1f80: eb e1 ff f8 ld r31,-8(r1) + 1f84: 4e 80 00 20 blr + 1f88: 00 00 00 00 .long 0x0 + 1f8c: 00 00 00 01 .long 0x1 + 1f90: 80 01 00 01 lwz r0,1(r1) Index: frysk/frysk-imports/libunwind/src/ppc64/Gstep.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/Gstep.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/Gstep.c 2007-05-18 13:13:55.000000000 -0300 @@ -1,10 +1,7 @@ /* libunwind - a platform-independent unwind library Copyright (C) 2002-2004 Hewlett-Packard Co - Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly (or made empty stubs) for - building frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. +Contributed by Corey Ashford This file is part of libunwind. @@ -31,9 +28,408 @@ #include "ucontext_i.h" #include +/* This definition originates in /usr/include/asm-ppc64/ptrace.h, but is + defined there only when __KERNEL__ is defined. We reproduce it here for + our use at the user level in order to locate the ucontext record, which + appears to be at this offset relative to the stack pointer when in the + context of the signal handler return trampoline code - + __kernel_sigtramp_rt64. */ +#define __SIGNAL_FRAMESIZE 128 + +/* This definition comes from the document "64-bit PowerPC ELF Application + Binary Interface Supplement 1.9", section 3.2.2. + http://www.linux-foundation.org/spec/ELF/ppc64/PPC-elf64abi-1.9.html#STACK */ + +typedef struct +{ + long unsigned back_chain; + long unsigned cr_save; + long unsigned lr_save; + /* many more fields here, but they are unused by this code */ +} stack_frame_t; + + PROTECTED int -unw_step (unw_cursor_t *cursor) +unw_step (unw_cursor_t * cursor) { - /* XXX: empty stub. */ - return 0; + struct cursor *c = (struct cursor *) cursor; + stack_frame_t dummy; + unw_word_t back_chain_offset, lr_save_offset, v_regs_ptr; + struct dwarf_loc back_chain_loc, lr_save_loc, sp_loc, ip_loc, v_regs_loc; + int ret; + + Debug (1, "(cursor=%p, ip=0x%016lx)\n", c, (unsigned long) c->dwarf.ip); + + if (c->dwarf.ip == 0) + { + /* Unless the cursor or stack is corrupt or uninitialized, + we've most likely hit the top of the stack */ + return 0; + } + + /* Try DWARF-based unwinding... */ + + ret = dwarf_step (&c->dwarf); + + if (ret < 0 && ret != -UNW_ENOINFO) + { + Debug (2, "returning %d\n", ret); + return ret; + } + + if (unlikely (ret < 0)) + { + if (likely (!unw_is_signal_frame (cursor))) + { + /* DWARF unwinding failed. As of 09/26/2006, gcc in 64-bit mode + produces the mandatory level of traceback record in the code, but + I get the impression that this is transitory, that eventually gcc + will not produce any traceback records at all. So, for now, we + won't bother to try to find and use these records. + + We can, however, attempt to unwind the frame by using the callback + chain. This is very crude, however, and won't be able to unwind + any registers besides the IP, SP, and LR . */ + + back_chain_offset = ((void *) &dummy.back_chain - (void *) &dummy); + lr_save_offset = ((void *) &dummy.lr_save - (void *) &dummy); + + back_chain_loc = DWARF_LOC (c->dwarf.cfa + back_chain_offset, 0); + + if ((ret = + dwarf_get (&c->dwarf, back_chain_loc, &c->dwarf.cfa)) < 0) + { + Debug + ("Unable to retrieve CFA from back chain in stack frame - %d\n", + ret); + return ret; + } + if (c->dwarf.cfa == 0) + /* Unless the cursor or stack is corrupt or uninitialized we've most + likely hit the top of the stack */ + return 0; + + lr_save_loc = DWARF_LOC (c->dwarf.cfa + lr_save_offset, 0); + + if ((ret = dwarf_get (&c->dwarf, lr_save_loc, &c->dwarf.ip)) < 0) + { + Debug + ("Unable to retrieve IP from lr save in stack frame - %d\n", + ret); + return ret; + } + ret = 1; + } + else + { + /* Find the sigcontext record by taking the CFA and adjusting by + the dummy signal frame size. + + Note that there isn't any way to determined if SA_SIGINFO was + set in the sa_flags parameter to sigaction when the signal + handler was established. If it was not set, the ucontext + record is not required to be on the stack, in which case the + following code will likely cause a seg fault or other crash + condition. */ + + unw_word_t ucontext = c->dwarf.cfa + __SIGNAL_FRAMESIZE; + + Debug (1, "signal frame, skip over trampoline\n"); + + c->sigcontext_format = PPC64_SCF_LINUX_RT_SIGFRAME; + c->sigcontext_addr = ucontext; + + sp_loc = DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R1, 0); + ip_loc = DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_NIP, 0); + + ret = dwarf_get (&c->dwarf, sp_loc, &c->dwarf.cfa); + if (ret < 0) + { + Debug (2, "returning %d\n", ret); + return ret; + } + ret = dwarf_get (&c->dwarf, ip_loc, &c->dwarf.ip); + if (ret < 0) + { + Debug (2, "returning %d\n", ret); + return ret; + } + + /* Instead of just restoring the non-volatile registers, do all + of the registers for now. This will incur a performance hit, + but it's rare enough not to cause too much of a problem, and + might be useful in some cases. */ + c->dwarf.loc[UNW_PPC64_R0] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R0, 0); + c->dwarf.loc[UNW_PPC64_R1] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R1, 0); + c->dwarf.loc[UNW_PPC64_R2] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R2, 0); + c->dwarf.loc[UNW_PPC64_R3] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R3, 0); + c->dwarf.loc[UNW_PPC64_R4] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R4, 0); + c->dwarf.loc[UNW_PPC64_R5] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R5, 0); + c->dwarf.loc[UNW_PPC64_R6] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R6, 0); + c->dwarf.loc[UNW_PPC64_R7] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R7, 0); + c->dwarf.loc[UNW_PPC64_R8] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R8, 0); + c->dwarf.loc[UNW_PPC64_R9] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R9, 0); + c->dwarf.loc[UNW_PPC64_R10] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R10, 0); + c->dwarf.loc[UNW_PPC64_R11] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R11, 0); + c->dwarf.loc[UNW_PPC64_R12] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R12, 0); + c->dwarf.loc[UNW_PPC64_R13] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R13, 0); + c->dwarf.loc[UNW_PPC64_R14] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R14, 0); + c->dwarf.loc[UNW_PPC64_R15] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R15, 0); + c->dwarf.loc[UNW_PPC64_R16] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R16, 0); + c->dwarf.loc[UNW_PPC64_R17] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R17, 0); + c->dwarf.loc[UNW_PPC64_R18] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R18, 0); + c->dwarf.loc[UNW_PPC64_R19] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R19, 0); + c->dwarf.loc[UNW_PPC64_R20] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R20, 0); + c->dwarf.loc[UNW_PPC64_R21] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R21, 0); + c->dwarf.loc[UNW_PPC64_R22] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R22, 0); + c->dwarf.loc[UNW_PPC64_R23] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R23, 0); + c->dwarf.loc[UNW_PPC64_R24] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R24, 0); + c->dwarf.loc[UNW_PPC64_R25] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R25, 0); + c->dwarf.loc[UNW_PPC64_R26] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R26, 0); + c->dwarf.loc[UNW_PPC64_R27] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R27, 0); + c->dwarf.loc[UNW_PPC64_R28] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R28, 0); + c->dwarf.loc[UNW_PPC64_R29] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R29, 0); + c->dwarf.loc[UNW_PPC64_R30] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R30, 0); + c->dwarf.loc[UNW_PPC64_R31] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_R31, 0); + + c->dwarf.loc[UNW_PPC64_LR] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_LINK, 0); + c->dwarf.loc[UNW_PPC64_CTR] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_CTR, 0); + /* This CR0 assignment is probably wrong. There are 8 dwarf columns + assigned to the CR registers, but only one CR register in the + mcontext structure */ + c->dwarf.loc[UNW_PPC64_CR0] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_CCR, 0); + c->dwarf.loc[UNW_PPC64_XER] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_XER, 0); + c->dwarf.loc[UNW_PPC64_NIP] = + DWARF_LOC (ucontext + UC_MCONTEXT_GREGS_NIP, 0); + + /* TODO: Is there a way of obtaining the value of the + pseudo frame pointer (which is sp + some fixed offset, I + assume), based on the contents of the ucontext record + structure? For now, set this loc to null. */ + c->dwarf.loc[UNW_PPC64_FRAME_POINTER] = DWARF_NULL_LOC; + + c->dwarf.loc[UNW_PPC64_F0] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R0, 0); + c->dwarf.loc[UNW_PPC64_F1] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R1, 0); + c->dwarf.loc[UNW_PPC64_F2] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R2, 0); + c->dwarf.loc[UNW_PPC64_F3] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R3, 0); + c->dwarf.loc[UNW_PPC64_F4] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R4, 0); + c->dwarf.loc[UNW_PPC64_F5] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R5, 0); + c->dwarf.loc[UNW_PPC64_F6] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R6, 0); + c->dwarf.loc[UNW_PPC64_F7] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R7, 0); + c->dwarf.loc[UNW_PPC64_F8] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R8, 0); + c->dwarf.loc[UNW_PPC64_F9] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R9, 0); + c->dwarf.loc[UNW_PPC64_F10] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R10, 0); + c->dwarf.loc[UNW_PPC64_F11] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R11, 0); + c->dwarf.loc[UNW_PPC64_F12] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R12, 0); + c->dwarf.loc[UNW_PPC64_F13] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R13, 0); + c->dwarf.loc[UNW_PPC64_F14] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R14, 0); + c->dwarf.loc[UNW_PPC64_F15] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R15, 0); + c->dwarf.loc[UNW_PPC64_F16] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R16, 0); + c->dwarf.loc[UNW_PPC64_F17] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R17, 0); + c->dwarf.loc[UNW_PPC64_F18] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R18, 0); + c->dwarf.loc[UNW_PPC64_F19] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R19, 0); + c->dwarf.loc[UNW_PPC64_F20] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R20, 0); + c->dwarf.loc[UNW_PPC64_F21] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R21, 0); + c->dwarf.loc[UNW_PPC64_F22] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R22, 0); + c->dwarf.loc[UNW_PPC64_F23] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R23, 0); + c->dwarf.loc[UNW_PPC64_F24] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R24, 0); + c->dwarf.loc[UNW_PPC64_F25] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R25, 0); + c->dwarf.loc[UNW_PPC64_F26] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R26, 0); + c->dwarf.loc[UNW_PPC64_F27] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R27, 0); + c->dwarf.loc[UNW_PPC64_F28] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R28, 0); + c->dwarf.loc[UNW_PPC64_F29] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R29, 0); + c->dwarf.loc[UNW_PPC64_F30] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R30, 0); + c->dwarf.loc[UNW_PPC64_F31] = + DWARF_LOC (ucontext + UC_MCONTEXT_FREGS_R31, 0); + /* Note that there is no .eh_section register column for the + FPSCR register. I don't know why this is. */ + + v_regs_loc = DWARF_LOC (ucontext + UC_MCONTEXT_V_REGS, 0); + ret = dwarf_get (&c->dwarf, v_regs_loc, &v_regs_ptr); + if (ret < 0) + { + Debug (2, "returning %d\n", ret); + return ret; + } + if (v_regs_ptr != 0) + { + /* The v_regs_ptr is not null. Set all of the AltiVec locs */ + + c->dwarf.loc[UNW_PPC64_V0] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R0, 0); + c->dwarf.loc[UNW_PPC64_V1] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R1, 0); + c->dwarf.loc[UNW_PPC64_V2] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R2, 0); + c->dwarf.loc[UNW_PPC64_V3] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R3, 0); + c->dwarf.loc[UNW_PPC64_V4] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R4, 0); + c->dwarf.loc[UNW_PPC64_V5] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R5, 0); + c->dwarf.loc[UNW_PPC64_V6] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R6, 0); + c->dwarf.loc[UNW_PPC64_V7] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R7, 0); + c->dwarf.loc[UNW_PPC64_V8] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R8, 0); + c->dwarf.loc[UNW_PPC64_V9] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R9, 0); + c->dwarf.loc[UNW_PPC64_V10] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R10, 0); + c->dwarf.loc[UNW_PPC64_V11] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R11, 0); + c->dwarf.loc[UNW_PPC64_V12] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R12, 0); + c->dwarf.loc[UNW_PPC64_V13] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R13, 0); + c->dwarf.loc[UNW_PPC64_V14] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R14, 0); + c->dwarf.loc[UNW_PPC64_V15] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R15, 0); + c->dwarf.loc[UNW_PPC64_V16] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R16, 0); + c->dwarf.loc[UNW_PPC64_V17] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R17, 0); + c->dwarf.loc[UNW_PPC64_V18] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R18, 0); + c->dwarf.loc[UNW_PPC64_V19] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R19, 0); + c->dwarf.loc[UNW_PPC64_V20] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R20, 0); + c->dwarf.loc[UNW_PPC64_V21] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R21, 0); + c->dwarf.loc[UNW_PPC64_V22] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R22, 0); + c->dwarf.loc[UNW_PPC64_V23] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R23, 0); + c->dwarf.loc[UNW_PPC64_V24] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R24, 0); + c->dwarf.loc[UNW_PPC64_V25] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R25, 0); + c->dwarf.loc[UNW_PPC64_V26] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R26, 0); + c->dwarf.loc[UNW_PPC64_V27] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R27, 0); + c->dwarf.loc[UNW_PPC64_V28] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R28, 0); + c->dwarf.loc[UNW_PPC64_V29] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R29, 0); + c->dwarf.loc[UNW_PPC64_V30] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R30, 0); + c->dwarf.loc[UNW_PPC64_V31] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_R31, 0); + c->dwarf.loc[UNW_PPC64_VRSAVE] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_VRSAVE, 0); + c->dwarf.loc[UNW_PPC64_VSCR] = + DWARF_LOC (v_regs_ptr + UC_MCONTEXT_VREGS_VSCR, 0); + } + else + { + c->dwarf.loc[UNW_PPC64_V0] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V1] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V2] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V3] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V4] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V5] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V6] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V7] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V8] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V9] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V10] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V11] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V12] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V13] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V14] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V15] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V16] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V17] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V18] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V19] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V20] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V21] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V22] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V23] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V24] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V25] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V26] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V27] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V28] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V29] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V30] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_V31] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_VRSAVE] = DWARF_NULL_LOC; + c->dwarf.loc[UNW_PPC64_VSCR] = DWARF_NULL_LOC; + } + ret = 1; + } + } + return ret; } Index: frysk/frysk-imports/libunwind/src/ppc64/Lfetch_proc_info_post.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/Lfetch_proc_info_post.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gfetch_proc_info_post.c" +#endif Index: frysk/frysk-imports/libunwind/src/ppc64/init.h =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/init.h 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/init.h 2007-05-18 13:13:55.000000000 -0300 @@ -1,10 +1,8 @@ /* libunwind - a platform-independent unwind library Copyright (C) 2002 Hewlett-Packard Co - Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly for building - frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. + +Contributed by Corey Ashford This file is part of libunwind. @@ -33,44 +31,36 @@ common_init (struct cursor *c) { int ret; + int i; + + for (i = UNW_PPC64_R0; i <= UNW_PPC64_R31; i++) { + c->dwarf.loc[i] = DWARF_REG_LOC (&c->dwarf, i); + } + for (i = UNW_PPC64_F0; i <= UNW_PPC64_F31; i++) { + c->dwarf.loc[i] = DWARF_FPREG_LOC (&c->dwarf, i); + } + for (i = UNW_PPC64_V0; i <= UNW_PPC64_V31; i++) { + c->dwarf.loc[i] = DWARF_VREG_LOC (&c->dwarf, i); + } + + for (i = UNW_PPC64_CR0; i <= UNW_PPC64_CR7; i++) { + c->dwarf.loc[i] = DWARF_REG_LOC (&c->dwarf, i); + } + c->dwarf.loc[UNW_PPC64_ARG_POINTER] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_ARG_POINTER); + c->dwarf.loc[UNW_PPC64_CTR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_CTR); + c->dwarf.loc[UNW_PPC64_VSCR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_VSCR); + + c->dwarf.loc[UNW_PPC64_XER] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_XER); + c->dwarf.loc[UNW_PPC64_LR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_LR); + c->dwarf.loc[UNW_PPC64_VRSAVE] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_VRSAVE); + c->dwarf.loc[UNW_PPC64_SPEFSCR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_SPEFSCR); + c->dwarf.loc[UNW_PPC64_SPE_ACC] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_SPE_ACC); + + c->dwarf.loc[UNW_PPC64_NIP] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_NIP); - c->dwarf.loc[R0] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R0); - c->dwarf.loc[R1] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R1); - c->dwarf.loc[R2] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R2); - c->dwarf.loc[R3] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R3); - c->dwarf.loc[R4] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R4); - c->dwarf.loc[R5] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R5); - c->dwarf.loc[R6] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R6); - c->dwarf.loc[R7] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R7); - c->dwarf.loc[R8] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R8); - c->dwarf.loc[R9] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R9); - c->dwarf.loc[R10] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R10); - c->dwarf.loc[R11] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R11); - c->dwarf.loc[R12] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R12); - c->dwarf.loc[R13] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R13); - c->dwarf.loc[R14] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R14); - c->dwarf.loc[R15] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R15); - c->dwarf.loc[R16] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R16); - c->dwarf.loc[R17] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R17); - c->dwarf.loc[R18] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R18); - c->dwarf.loc[R19] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R19); - c->dwarf.loc[R20] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R20); - c->dwarf.loc[R21] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R21); - c->dwarf.loc[R22] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R22); - c->dwarf.loc[R23] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R23); - c->dwarf.loc[R24] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R24); - c->dwarf.loc[R25] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R25); - c->dwarf.loc[R26] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R26); - c->dwarf.loc[R27] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R27); - c->dwarf.loc[R28] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R28); - c->dwarf.loc[R29] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R29); - c->dwarf.loc[R30] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R30); - c->dwarf.loc[R31] = DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R31); - -// XXX: how to get nip? -// ret = dwarf_get (&c->dwarf, c->dwarf.loc[NIP], &c->dwarf.ip); -// if (ret < 0) -// return ret; + ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_PPC64_NIP], &c->dwarf.ip); + if (ret < 0) + return ret; ret = dwarf_get (&c->dwarf, DWARF_REG_LOC (&c->dwarf, UNW_PPC64_R1), &c->dwarf.cfa); Index: frysk/frysk-imports/libunwind/src/ppc64/is_fpreg.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/is_fpreg.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/is_fpreg.c 2007-05-18 13:13:55.000000000 -0300 @@ -2,10 +2,6 @@ Copyright (c) 2004-2005 Hewlett-Packard Development Company, L.P. Contributed by David Mosberger-Tang - Copied from src/x86_64/, modified slightly for building - frysk successfully on ppc64, by Wu Zhou - Will be replaced when libunwind is ready on ppc64 platform. - This file is part of libunwind. Permission is hereby granted, free of charge, to any person obtaining Index: frysk/frysk-imports/libunwind/src/ppc64/regname.c =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/regname.c 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/regname.c 2007-05-18 13:13:55.000000000 -0300 @@ -29,82 +29,126 @@ static const char *regname[] = { - "R0", - "R1", - "R2", - "R3", - "R4", - "R5", - "R6", - "R7", - "R8", - "R9", - "R10", - "R11", - "R12", - "R13", - "R14", - "R15", - "R16", - "R17", - "R18", - "R19", - "R20", - "R21", - "R22", - "R23", - "R24", - "R25", - "R26", - "R27", - "R28", - "R29", - "R30", - "R31", - "NIP", - "MSR", - "ORIG_GPR3", - "CTR", - "LINK", - "XER", - "CCR", - "MQ", - "TRAP", - "DAR", - "DSISR", - "RESULT", - "F0", - "F1", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "F10", - "F11", - "F12", - "F13", - "F14", - "F15", - "F16", - "F17", - "F18", - "F19", - "F20", - "F21", - "F22", - "F23", - "F24", - "F25", - "F26", - "F27", - "F28", - "F29", - "F30", - "F31" + [UNW_PPC64_R0]="GPR0", + [UNW_PPC64_R1]="GPR1", + [UNW_PPC64_R2]="GPR2", + [UNW_PPC64_R3]="GPR3", + [UNW_PPC64_R4]="GPR4", + [UNW_PPC64_R5]="GPR5", + [UNW_PPC64_R6]="GPR6", + [UNW_PPC64_R7]="GPR7", + [UNW_PPC64_R8]="GPR8", + [UNW_PPC64_R9]="GPR9", + [UNW_PPC64_R10]="GPR10", + [UNW_PPC64_R11]="GPR11", + [UNW_PPC64_R12]="GPR12", + [UNW_PPC64_R13]="GPR13", + [UNW_PPC64_R14]="GPR14", + [UNW_PPC64_R15]="GPR15", + [UNW_PPC64_R16]="GPR16", + [UNW_PPC64_R17]="GPR17", + [UNW_PPC64_R18]="GPR18", + [UNW_PPC64_R19]="GPR19", + [UNW_PPC64_R20]="GPR20", + [UNW_PPC64_R21]="GPR21", + [UNW_PPC64_R22]="GPR22", + [UNW_PPC64_R23]="GPR23", + [UNW_PPC64_R24]="GPR24", + [UNW_PPC64_R25]="GPR25", + [UNW_PPC64_R26]="GPR26", + [UNW_PPC64_R27]="GPR27", + [UNW_PPC64_R28]="GPR28", + [UNW_PPC64_R29]="GPR29", + [UNW_PPC64_R30]="GPR30", + [UNW_PPC64_R31]="GPR31", + + [UNW_PPC64_F0]="FPR0", + [UNW_PPC64_F1]="FPR1", + [UNW_PPC64_F2]="FPR2", + [UNW_PPC64_F3]="FPR3", + [UNW_PPC64_F4]="FPR4", + [UNW_PPC64_F5]="FPR5", + [UNW_PPC64_F6]="FPR6", + [UNW_PPC64_F7]="FPR7", + [UNW_PPC64_F8]="FPR8", + [UNW_PPC64_F9]="FPR9", + [UNW_PPC64_F10]="FPR10", + [UNW_PPC64_F11]="FPR11", + [UNW_PPC64_F12]="FPR12", + [UNW_PPC64_F13]="FPR13", + [UNW_PPC64_F14]="FPR14", + [UNW_PPC64_F15]="FPR15", + [UNW_PPC64_F16]="FPR16", + [UNW_PPC64_F17]="FPR17", + [UNW_PPC64_F18]="FPR18", + [UNW_PPC64_F19]="FPR19", + [UNW_PPC64_F20]="FPR20", + [UNW_PPC64_F21]="FPR21", + [UNW_PPC64_F22]="FPR22", + [UNW_PPC64_F23]="FPR23", + [UNW_PPC64_F24]="FPR24", + [UNW_PPC64_F25]="FPR25", + [UNW_PPC64_F26]="FPR26", + [UNW_PPC64_F27]="FPR27", + [UNW_PPC64_F28]="FPR28", + [UNW_PPC64_F29]="FPR29", + [UNW_PPC64_F30]="FPR30", + [UNW_PPC64_F31]="FPR31", + + [UNW_PPC64_LR]="LR", + [UNW_PPC64_CTR]="CTR", + [UNW_PPC64_ARG_POINTER]="ARG_POINTER", + + [UNW_PPC64_CR0]="CR0", + [UNW_PPC64_CR1]="CR1", + [UNW_PPC64_CR2]="CR2", + [UNW_PPC64_CR3]="CR3", + [UNW_PPC64_CR4]="CR4", + [UNW_PPC64_CR5]="CR5", + [UNW_PPC64_CR6]="CR6", + [UNW_PPC64_CR7]="CR7", + + [UNW_PPC64_XER]="XER", + + [UNW_PPC64_V0]="VR0", + [UNW_PPC64_V1]="VR1", + [UNW_PPC64_V2]="VR2", + [UNW_PPC64_V3]="VR3", + [UNW_PPC64_V4]="VR4", + [UNW_PPC64_V5]="VR5", + [UNW_PPC64_V6]="VR6", + [UNW_PPC64_V7]="VR7", + [UNW_PPC64_V8]="VR8", + [UNW_PPC64_V9]="VR9", + [UNW_PPC64_V10]="VR10", + [UNW_PPC64_V11]="VR11", + [UNW_PPC64_V12]="VR12", + [UNW_PPC64_V13]="VR13", + [UNW_PPC64_V14]="VR14", + [UNW_PPC64_V15]="VR15", + [UNW_PPC64_V16]="VR16", + [UNW_PPC64_V17]="VR17", + [UNW_PPC64_V18]="VR18", + [UNW_PPC64_V19]="VR19", + [UNW_PPC64_V20]="VR20", + [UNW_PPC64_V21]="VR21", + [UNW_PPC64_V22]="VR22", + [UNW_PPC64_V23]="VR23", + [UNW_PPC64_V24]="VR24", + [UNW_PPC64_V25]="VR25", + [UNW_PPC64_V26]="VR26", + [UNW_PPC64_V27]="VR27", + [UNW_PPC64_V28]="VR28", + [UNW_PPC64_V29]="VR29", + [UNW_PPC64_V30]="VR30", + [UNW_PPC64_V31]="VR31", + + [UNW_PPC64_VSCR]="VSCR", + + [UNW_PPC64_VRSAVE]="VRSAVE", + [UNW_PPC64_SPE_ACC]="SPE_ACC", + [UNW_PPC64_SPEFSCR]="SPEFSCR", + }; PROTECTED const char * Index: frysk/frysk-imports/libunwind/src/ppc64/setcontext.S =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/src/ppc64/setcontext.S 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,4 @@ + .global _UI_setcontext + +_UI_setcontext: + retq Index: frysk/frysk-imports/libunwind/src/ppc64/siglongjmp.S =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/siglongjmp.S 2007-04-05 04:31:52.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/siglongjmp.S 2007-05-18 13:13:55.000000000 -0300 @@ -29,11 +29,5 @@ .globl _UI_siglongjmp_cont -# warning FIX ME!! - -_UI_siglongjmp_cont: - blr -#ifdef __linux__ - /* We do not need executable stack. */ - .section .note.GNU-stack,"",@progbits -#endif +/*_UI_siglongjmp_cont: + retq */ Index: frysk/frysk-imports/libunwind/src/ppc64/ucontext_i.h =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/ucontext_i.h 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/ucontext_i.h 2007-05-18 13:13:55.000000000 -0300 @@ -24,37 +24,151 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* XXX: what are these for, to find the value of dwarf register from - the ucontext structure? Need to do more investigation for this. */ -#define UC_MCONTEXT_GREGS_R0 -#define UC_MCONTEXT_GREGS_R1 -#define UC_MCONTEXT_GREGS_R2 -#define UC_MCONTEXT_GREGS_R3 -#define UC_MCONTEXT_GREGS_R4 -#define UC_MCONTEXT_GREGS_R5 -#define UC_MCONTEXT_GREGS_R6 -#define UC_MCONTEXT_GREGS_R7 -#define UC_MCONTEXT_GREGS_R8 -#define UC_MCONTEXT_GREGS_R9 -#define UC_MCONTEXT_GREGS_R10 -#define UC_MCONTEXT_GREGS_R11 -#define UC_MCONTEXT_GREGS_R12 -#define UC_MCONTEXT_GREGS_R13 -#define UC_MCONTEXT_GREGS_R14 -#define UC_MCONTEXT_GREGS_R15 -#define UC_MCONTEXT_GREGS_R16 -#define UC_MCONTEXT_GREGS_R17 -#define UC_MCONTEXT_GREGS_R18 -#define UC_MCONTEXT_GREGS_R19 -#define UC_MCONTEXT_GREGS_R20 -#define UC_MCONTEXT_GREGS_R21 -#define UC_MCONTEXT_GREGS_R22 -#define UC_MCONTEXT_GREGS_R23 -#define UC_MCONTEXT_GREGS_R24 -#define UC_MCONTEXT_GREGS_R25 -#define UC_MCONTEXT_GREGS_R26 -#define UC_MCONTEXT_GREGS_R27 -#define UC_MCONTEXT_GREGS_R28 -#define UC_MCONTEXT_GREGS_R29 -#define UC_MCONTEXT_GREGS_R30 -#define UC_MCONTEXT_GREGS_R31 +#ifndef ucontext_i_h +#define ucontext_i_h + +#include + +/* These values were derived by reading + /usr/src/linux-2.6.18-1.8/arch/um/include/sysdep-ppc/ptrace.h and + /usr/src/linux-2.6.18-1.8/arch/powerpc/kernel/ppc32.h +*/ + +#define NIP_IDX 32 +#define MSR_IDX 33 +#define ORIG_GPR3_IDX 34 +#define CTR_IDX 35 +#define LINK_IDX 36 +#define XER_IDX 37 +#define CCR_IDX 38 +#define SOFTE_IDX 39 +#define TRAP_IDX 40 +#define DAR_IDX 41 +#define DSISR_IDX 42 +#define RESULT_IDX 43 + +#define VSCR_IDX 32 +#define VRSAVE_IDX 33 + +/* These are dummy structures used only for obtaining the offsets of the + various structure members. */ +static ucontext_t dmy_ctxt; +static vrregset_t dmy_vrregset; + +#define UC_MCONTEXT_GREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[0] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[1] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[2] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[3] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[4] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[5] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[6] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[7] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[8] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[9] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[10] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[11] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[12] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[13] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[14] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[15] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[16] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[17] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[18] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[19] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[20] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[21] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[22] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[23] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[24] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[25] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[26] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[27] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[28] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[29] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[30] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[31] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_NIP ((void *)&dmy_ctxt.uc_mcontext.gp_regs[NIP_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_MSR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[MSR_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_ORIG_GPR3 ((void *)&dmy_ctxt.uc_mcontext.gp_regs[ORIG_GPR3_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_CTR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[CTR_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_LINK ((void *)&dmy_ctxt.uc_mcontext.gp_regs[LINK_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_XER ((void *)&dmy_ctxt.uc_mcontext.gp_regs[XER_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_CCR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[CCR_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_SOFTE ((void *)&dmy_ctxt.uc_mcontext.gp_regs[SOFTE_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_TRAP ((void *)&dmy_ctxt.uc_mcontext.gp_regs[TRAP_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_DAR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[DAR_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_DSISR ((void *)&dmy_ctxt.uc_mcontext.gp_regs[DSISR_IDX] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_GREGS_RESULT ((void *)&dmy_ctxt.uc_mcontext.gp_regs[RESULT_IDX] - (void *)&dmy_ctxt) + +#define UC_MCONTEXT_FREGS_R0 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[0] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R1 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[1] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R2 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[2] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R3 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[3] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R4 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[4] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R5 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[5] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R6 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[6] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R7 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[7] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R8 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[8] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R9 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[9] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R10 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[10] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R11 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[11] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R12 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[12] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R13 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[13] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R14 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[14] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R15 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[15] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R16 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[16] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R17 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[17] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R18 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[18] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R19 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[19] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R20 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[20] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R21 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[21] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R22 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[22] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R23 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[23] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R24 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[24] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R25 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[25] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R26 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[26] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R27 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[27] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R28 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[28] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R29 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[29] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R30 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[30] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_R31 ((void *)&dmy_ctxt.uc_mcontext.fp_regs[31] - (void *)&dmy_ctxt) +#define UC_MCONTEXT_FREGS_FPSCR ((void *)&dmy_ctxt.uc_mcontext.fp_regs[32] - (void *)&dmy_ctxt) + +#define UC_MCONTEXT_V_REGS ((void *)&dmy_ctxt.uc_mcontext.v_regs - (void *)&dmy_ctxt) + +#define UC_MCONTEXT_VREGS_R0 ((void *)&dmy_vrregset.vrregs[0] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R1 ((void *)&dmy_vrregset.vrregs[1] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R2 ((void *)&dmy_vrregset.vrregs[2] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R3 ((void *)&dmy_vrregset.vrregs[3] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R4 ((void *)&dmy_vrregset.vrregs[4] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R5 ((void *)&dmy_vrregset.vrregs[5] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R6 ((void *)&dmy_vrregset.vrregs[6] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R7 ((void *)&dmy_vrregset.vrregs[7] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R8 ((void *)&dmy_vrregset.vrregs[8] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R9 ((void *)&dmy_vrregset.vrregs[9] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R10 ((void *)&dmy_vrregset.vrregs[10] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R11 ((void *)&dmy_vrregset.vrregs[11] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R12 ((void *)&dmy_vrregset.vrregs[12] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R13 ((void *)&dmy_vrregset.vrregs[13] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R14 ((void *)&dmy_vrregset.vrregs[14] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R15 ((void *)&dmy_vrregset.vrregs[15] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R16 ((void *)&dmy_vrregset.vrregs[16] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R17 ((void *)&dmy_vrregset.vrregs[17] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R18 ((void *)&dmy_vrregset.vrregs[18] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R19 ((void *)&dmy_vrregset.vrregs[19] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R20 ((void *)&dmy_vrregset.vrregs[20] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R21 ((void *)&dmy_vrregset.vrregs[21] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R22 ((void *)&dmy_vrregset.vrregs[22] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R23 ((void *)&dmy_vrregset.vrregs[23] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R24 ((void *)&dmy_vrregset.vrregs[24] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R25 ((void *)&dmy_vrregset.vrregs[25] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R26 ((void *)&dmy_vrregset.vrregs[26] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R27 ((void *)&dmy_vrregset.vrregs[27] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R28 ((void *)&dmy_vrregset.vrregs[28] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R29 ((void *)&dmy_vrregset.vrregs[29] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R30 ((void *)&dmy_vrregset.vrregs[30] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_R31 ((void *)&dmy_vrregset.vrregs[31] - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_VSCR ((void *)&dmy_vrregset.vscr - (void *)&dmy_vrregset) +#define UC_MCONTEXT_VREGS_VRSAVE ((void *)&dmy_vrregset.vrsave - (void *)&dmy_vrregset) + +#endif Index: frysk/frysk-imports/libunwind/src/ppc64/unwind_i.h =================================================================== --- frysk.orig/frysk-imports/libunwind/src/ppc64/unwind_i.h 2007-03-12 12:26:08.000000000 -0300 +++ frysk/frysk-imports/libunwind/src/ppc64/unwind_i.h 2007-05-18 13:13:55.000000000 -0300 @@ -35,84 +35,9 @@ #include -#include "libunwind_i.h" +#include #include -/* DWARF column numbers for ppc64: */ -#define R0 0 -#define R1 1 -#define R2 2 -#define R3 3 -#define R4 4 -#define R5 5 -#define R6 6 -#define R7 7 -#define R8 8 -#define R9 9 -#define R10 10 -#define R11 11 -#define R12 12 -#define R13 13 -#define R14 14 -#define R15 15 -#define R16 16 -#define R17 17 -#define R18 18 -#define R19 19 -#define R20 20 -#define R21 21 -#define R22 22 -#define R23 23 -#define R24 24 -#define R25 25 -#define R26 26 -#define R27 27 -#define R28 28 -#define R29 29 -#define R30 30 -#define R31 31 - -#define F0 32 -#define F1 33 -#define F2 34 -#define F3 35 -#define F4 36 -#define F5 37 -#define F6 38 -#define F7 39 -#define F8 40 -#define F9 41 -#define F10 42 -#define F11 43 -#define F12 44 -#define F13 45 -#define F14 46 -#define F15 47 -#define F16 48 -#define F17 49 -#define F18 50 -#define F19 51 -#define F20 52 -#define F21 53 -#define F22 54 -#define F23 55 -#define F24 56 -#define F25 57 -#define F26 58 -#define F27 59 -#define F28 60 -#define F29 61 -#define F30 62 -#define F31 63 - -#define CR 64 -#define FPSCR 65 -#define MSR 66 -#define MQ 100 -#define XER 101 -#define LR 108 -#define CTR 109 - #define ppc64_lock UNW_OBJ(lock) #define ppc64_local_resume UNW_OBJ(local_resume) #define ppc64_local_addr_space_init UNW_OBJ(local_addr_space_init) Index: frysk/frysk-imports/libunwind/tests/Makefile.am =================================================================== --- frysk.orig/frysk-imports/libunwind/tests/Makefile.am 2007-04-05 15:31:57.000000000 -0300 +++ frysk/frysk-imports/libunwind/tests/Makefile.am 2007-05-18 13:13:55.000000000 -0300 @@ -27,7 +27,12 @@ Gia64-test-readonly Lia64-test-readonly \ ia64-test-setjmp ia64-test-sig endif - check_SCRIPTS_cdep = run-ptrace-mapper run-ptrace-misc run-ptrace-stepper \ +if ARCH_PPC64 + noinst_PROGRAMS_arch = ppc64-test-wchar + +endif + + check_SCRIPTS_cdep = run-ptrace-mapper mapper run-ptrace-misc run-ptrace-stepper \ run-ptrace-signull check_PROGRAMS_cdep = Gtest-bt Ltest-bt Gtest-exc Ltest-exc \ Gtest-init Ltest-init \ @@ -36,7 +41,7 @@ Gtest-dyn1 Ltest-dyn1 \ test-async-sig test-flush-cache test-init-remote \ test-mem test-setjmp test-ptrace - noinst_PROGRAMS_cdep = forker mapper test-ptrace-misc test-varargs \ + noinst_PROGRAMS_cdep = forker test-ptrace-misc test-varargs \ Gperf-simple Lperf-simple test-ptrace-stepper test-ptrace-signull perf: perf-startup Gperf-simple Lperf-simple @@ -63,6 +68,8 @@ noinst_PROGRAMS = $(noinst_PROGRAMS_common) $(noinst_PROGRAMS_cdep) \ $(noinst_PROGRAMS_arch) +ppc64_test_nat_SOURCES = ppc64-test-wchar.c ppc64-test-altivec.c \ + ppc64-test-altivec-utils.c Lia64_test_readonly_SOURCES = Lia64-test-readonly.c ia64-test-readonly-asm.S Gia64_test_readonly_SOURCES = Gia64-test-readonly.c ia64-test-readonly-asm.S Lia64_test_stack_SOURCES = Lia64-test-stack.c ia64-test-stack-asm.S \ Index: frysk/frysk-imports/libunwind/tests/pp64-test-altivec-utils.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/tests/pp64-test-altivec-utils.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,32 @@ +#include +#include + +union si_overlay +{ + vector signed int v; + int ints[4]; +}; + +vector signed int +vec_init () +{ + vector signed int v; + static int count = 1; + + ((union si_overlay *) &v)->ints[0] = count++; + ((union si_overlay *) &v)->ints[1] = count++; + ((union si_overlay *) &v)->ints[2] = count++; + ((union si_overlay *) &v)->ints[3] = count++; + return v; +} + +void +vec_print (vector signed int v) +{ + printf ("%08x %08x %08x %08x", + ((union si_overlay *) &v)->ints[0], + ((union si_overlay *) &v)->ints[1], + ((union si_overlay *) &v)->ints[2], + ((union si_overlay *) &v)->ints[3]); +} + Index: frysk/frysk-imports/libunwind/tests/ppc64-test-altivec.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ frysk/frysk-imports/libunwind/tests/ppc64-test-altivec.c 2007-05-18 13:13:55.000000000 -0300 @@ -0,0 +1,174 @@ + + +#include +#include +#include +#include +#include +#include + +#include + +#define panic(args...) { fprintf (stderr, args); abort(); } + +extern vector signed int vec_init (); +extern void vec_print (vector signed int v); + +vector signed int vec_stack (int count); + +int +main () +{ + printf ("&vec_stack = %016lx\n", (unsigned long) vec_stack); + vec_stack (3); + return 0; +} + + +vector signed int +vec_stack (int count) +{ + register vector signed int v1; + register vector signed int v2; + register vector signed int v3; + register vector signed int v4; + register vector signed int v5; + register vector signed int v6; + register vector signed int v7; + register vector signed int v8; + register vector signed int v9; + + unw_vreg_t vr; + + unw_cursor_t cursor; + unw_word_t ip, sp; + unw_context_t uc; + int ret; + int verbose = 1; + + /* if (count == 0) return vec_init(); */ + + if (count == 0) + { + unw_getcontext (&uc); + if (unw_init_local (&cursor, &uc) < 0) + { + panic ("unw_init_local failed!\n"); + } + else + { + do + { + if ((ret = unw_get_reg (&cursor, UNW_REG_IP, &ip)) < 0) + { + panic ("FAILURE: unw_get_reg returned %d for UNW_REG_IP\n", + ret); + } + if ((ret = unw_get_reg (&cursor, UNW_REG_SP, &sp)) < 0) + { + panic ("FAILURE: unw_get_reg returned %d for UNW_REG_SP\n", + ret); + } + if ((ret = unw_get_vreg (&cursor, UNW_PPC64_V30, &vr)) < 0) + { + panic + ("FAILURE: unw_get_vreg returned %d for UNW_PPC64_V30\n", + ret); + } + + + if (verbose) + { + const char *regname = unw_regname (UNW_PPC64_V30); + char proc_name_buffer[256]; + unw_word_t offset; + printf ("ip = %016lx, sp=%016lx\n", (long) ip, (long) sp); + printf ("vr30 = %08x %08x %08x %08x\n", + (unsigned int) (vr.halves[0] >> 32), + (unsigned int) (vr.halves[0] & 0xffffffff), + (unsigned int) (vr.halves[1] >> 32), + (unsigned int) (vr.halves[1] & 0xffffffff)); + ret = + unw_get_proc_name (&cursor, proc_name_buffer, + sizeof (proc_name_buffer), &offset); + if (ret == 0) + { + printf ("proc name = %s, offset = %lx\n", + proc_name_buffer, offset); + } + else + { + panic ("unw_get_proc_name returned %d\n", ret); + } + printf ("unw_regname(UNW_PPC_V30) = %s\n\n", regname); + } + + ret = unw_step (&cursor); + if (ret < 0) + { + unw_get_reg (&cursor, UNW_REG_IP, &ip); + panic ("FAILURE: unw_step() returned %d for ip=%lx\n", ret, + (long) ip); + } + } + while (ret > 0); + } + } + + v1 = vec_init (); + v2 = vec_init (); + v3 = vec_init (); + v4 = vec_init (); + v5 = vec_init (); + v6 = vec_init (); + + /* make use of all of the registers in some calculation */ + v7 = + vec_nor (v1, vec_add (v2, vec_sub (v3, vec_and (v4, vec_or (v5, v6))))); + + /* + * "force" the registers to be non-volatile by making a call and also + * using the registers after the call. + */ + v8 = vec_stack (count - 1); + + /* + * Use the result from the previous call, plus all of the non-volatile + * registers in another calculation. + */ + v9 = + vec_nor (v1, + vec_add (v2, + vec_sub (v3, + vec_and (v4, vec_or (v5, vec_xor (v6, v8)))))); + + printf ("v1 - "); + vec_print (v1); + printf ("\n"); + printf ("v2 - "); + vec_print (v2); + printf ("\n"); + printf ("v3 - "); + vec_print (v3); + printf ("\n"); + printf ("v4 - "); + vec_print (v4); + printf ("\n"); + printf ("v5 - "); + vec_print (v5); + printf ("\n"); + printf ("v6 - "); + vec_print (v6); + printf ("\n"); + printf ("v7 - "); + vec_print (v7); + printf ("\n"); + printf ("v8 - "); + vec_print (v8); + printf ("\n"); + printf ("v9 - "); + vec_print (v9); + printf ("\n"); + + return v9; +} --=-qu1J3sS+33fT4yLNrOyd--