This is the mail archive of the frysk@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Frysk libunwind PowerPC support


Sorry the size of the patch
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 <wchar.h>
+#include <stdio.h>
+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  <npremji@redhat.com>
+
+	* 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  <npremji@redhat.com>
 
+	* 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 <config.h>
-#endif
-
-#ifdef HAVE_ATOMIC_OPS_H
-# include <atomic_ops.h>
-#endif
-
 #include <libunwind.h>
 
 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 <libunwind.h>
 
 #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 <davidm@hpl.hp.com>
+
+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 <davidm@hpl.hp.com>
+
+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 <jan.kratochvil@redhat.com>
+
+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 <davidm@hpl.hp.com>
+
+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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly (or made empty stubs) for
-   building frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+   Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 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 <davidm@hpl.hp.com>
+   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 <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 This file is part of libunwind.
 
@@ -29,8 +26,8 @@
 
 #include <stdlib.h>
 #include <string.h>
-#include <sys/mman.h>
 
+#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 "<built-in>"
+# 1 "<command line>"
+# 1 "Ginit.c"
+# 26 "Ginit.c"
+#include <stdlib.h>
+# 26 "Ginit.c"
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 25 "/usr/include/stdlib.h" 3 4
+#include <features.h>
+# 25 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/features.h" 1 3 4
+# 323 "/usr/include/features.h" 3 4
+#include <sys/cdefs.h>
+# 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 <bits/wordsize.h>
+# 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 <gnu/stubs.h>
+# 346 "/usr/include/features.h" 3 4
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+
+
+
+#include <bits/wordsize.h>
+# 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 <gnu/stubs-32.h>
+# 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 <stddef.h>
+# 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 <bits/waitflags.h>
+# 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 <bits/waitstatus.h>
+# 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 <endian.h>
+# 65 "/usr/include/bits/waitstatus.h" 3 4
+# 1 "/usr/include/endian.h" 1 3 4
+# 22 "/usr/include/endian.h" 3 4
+#include <features.h>
+# 37 "/usr/include/endian.h" 3 4
+#include <bits/endian.h>
+# 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 <xlocale.h>
+# 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 <sys/types.h>
+# 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 <features.h>
+
+
+
+#include <bits/types.h>
+# 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 <features.h>
+#include <bits/wordsize.h>
+# 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 <stddef.h>
+# 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 <bits/typesizes.h>
+# 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 <time.h>
+# 133 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 57 "/usr/include/time.h" 3 4
+#include <bits/types.h>
+
+
+
+typedef __clock_t clock_t;
+
+
+
+# 73 "/usr/include/time.h" 3 4
+#include <bits/types.h>
+
+
+
+typedef __time_t time_t;
+
+
+
+# 90 "/usr/include/time.h" 3 4
+#include <bits/types.h>
+
+
+typedef __clockid_t clockid_t;
+# 102 "/usr/include/time.h" 3 4
+#include <bits/types.h>
+
+
+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 <stddef.h>
+# 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 <endian.h>
+
+
+#include <sys/select.h>
+# 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 <features.h>
+
+
+#include <bits/types.h>
+
+
+#include <bits/select.h>
+# 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 <bits/sigset.h>
+# 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 <time.h>
+# 44 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 117 "/usr/include/time.h" 3 4
+#include <bits/types.h>
+
+
+
+struct timespec
+  {
+    __time_t tv_sec;
+    long int tv_nsec;
+  };
+# 45 "/usr/include/sys/select.h" 2 3 4
+
+#include <bits/time.h>
+# 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 <bits/types.h>
+
+
+
+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 <sys/sysmacros.h>
+# 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 <features.h>
+
+
+
+
+
+__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 <bits/pthreadtypes.h>
+# 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 <bits/wordsize.h>
+# 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 <alloca.h>
+# 612 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/alloca.h" 1 3 4
+# 22 "/usr/include/alloca.h" 3 4
+#include <features.h>
+
+
+#include <stddef.h>
+# 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 <string.h>
+# 27 "Ginit.c"
+# 1 "/usr/include/string.h" 1 3 4
+# 26 "/usr/include/string.h" 3 4
+#include <features.h>
+
+
+
+
+
+
+#include <stddef.h>
+# 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 <xlocale.h>
+
+
+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 <memory.h>
+# 33 "unwind_i.h"
+# 1 "/usr/include/memory.h" 1 3 4
+# 26 "/usr/include/memory.h" 3 4
+#include <features.h>
+# 34 "unwind_i.h" 2
+#include <stdint.h>
+# 34 "unwind_i.h"
+# 1 "/usr/include/stdint.h" 1 3 4
+# 26 "/usr/include/stdint.h" 3 4
+#include <features.h>
+#include <bits/wchar.h>
+# 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 <bits/wordsize.h>
+# 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 <libunwind-ppc64.h>
+# 36 "unwind_i.h"
+# 1 "../../include/libunwind-ppc64.h" 1
+# 37 "../../include/libunwind-ppc64.h"
+#include <inttypes.h>
+# 37 "../../include/libunwind-ppc64.h"
+# 1 "/usr/include/inttypes.h" 1 3 4
+# 26 "/usr/include/inttypes.h" 3 4
+#include <features.h>
+
+#include <stdint.h>
+
+
+
+
+
+
+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 <ucontext.h>
+# 38 "../../include/libunwind-ppc64.h"
+# 1 "/usr/include/ucontext.h" 1 3 4
+# 24 "/usr/include/ucontext.h" 3 4
+#include <features.h>
+
+
+#include <sys/ucontext.h>
+# 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 <features.h>
+#include <signal.h>
+# 23 "/usr/include/sys/ucontext.h" 3 4
+# 1 "/usr/include/signal.h" 1 3 4
+# 29 "/usr/include/signal.h" 3 4
+#include <features.h>
+
+
+
+#include <bits/sigset.h>
+# 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 <bits/types.h>
+#include <bits/signum.h>
+# 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 <time.h>
+# 209 "/usr/include/signal.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 210 "/usr/include/signal.h" 2 3 4
+
+
+#include <bits/siginfo.h>
+# 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 <bits/wordsize.h>
+# 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 <bits/sigaction.h>
+# 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 <bits/sigcontext.h>
+# 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 <asm/sigcontext.h>
+# 28 "/usr/include/bits/sigcontext.h" 3 4
+# 1 "/usr/include/asm/sigcontext.h" 1 3 4
+
+
+
+
+
+#include <asm-ppc/sigcontext.h>
+# 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 <asm/ptrace.h>
+# 10 "/usr/include/asm-ppc/sigcontext.h" 3 4
+# 1 "/usr/include/asm/ptrace.h" 1 3 4
+
+
+
+
+
+#include <asm-ppc/ptrace.h>
+# 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 <bits/sigstack.h>
+# 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 <sys/ucontext.h>
+# 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 <bits/pthreadtypes.h>
+#include <bits/sigthread.h>
+# 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 <bits/sigcontext.h>
+# 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 <libunwind_i.h>
+# 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 <sys/types.h>
+
+#include <assert.h>
+# 48 "../../include/libunwind_i.h"
+# 1 "/usr/include/assert.h" 1 3 4
+# 36 "/usr/include/assert.h" 3 4
+#include <features.h>
+# 49 "../../include/libunwind_i.h" 2
+#include <libunwind.h>
+# 49 "../../include/libunwind_i.h"
+# 1 "../../include/libunwind.h" 1
+# 50 "../../include/libunwind_i.h" 2
+#include <pthread.h>
+# 50 "../../include/libunwind_i.h"
+# 1 "/usr/include/pthread.h" 1 3 4
+# 22 "/usr/include/pthread.h" 3 4
+#include <features.h>
+#include <sched.h>
+# 23 "/usr/include/pthread.h" 3 4
+# 1 "/usr/include/sched.h" 1 3 4
+# 23 "/usr/include/sched.h" 3 4
+#include <features.h>
+
+
+#include <bits/types.h>
+
+
+#include <time.h>
+# 29 "/usr/include/sched.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 30 "/usr/include/sched.h" 2 3 4
+
+
+#include <bits/sched.h>
+# 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 <time.h>
+# 24 "/usr/include/pthread.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 29 "/usr/include/time.h" 3 4
+#include <features.h>
+
+
+
+
+
+
+
+
+
+#include <stddef.h>
+# 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 <bits/time.h>
+# 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 <xlocale.h>
+
+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 <signal.h>
+#include <bits/pthreadtypes.h>
+#include <bits/setjmp.h>
+# 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 <bits/wordsize.h>
+# 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 <bits/wordsize.h>
+# 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 <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+# 54 "../../include/libunwind_i.h"
+# 1 "/usr/include/unistd.h" 1 3 4
+# 26 "/usr/include/unistd.h" 3 4
+#include <features.h>
+
+
+# 171 "/usr/include/unistd.h" 3 4
+#include <bits/posix_opt.h>
+# 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 <bits/environments.h>
+# 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 <bits/wordsize.h>
+# 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 <bits/types.h>
+# 195 "/usr/include/unistd.h" 3 4
+#include <stddef.h>
+# 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 <bits/confname.h>
+# 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 <getopt.h>
+# 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 <endian.h>
+# 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 <stdlib.h>
+#include <libunwind.h>
+
+#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 <elf.h>
+# 26 "../elfxx.h"
+# 1 "/usr/include/elf.h" 1 3 4
+# 23 "/usr/include/elf.h" 3 4
+#include <features.h>
+
+
+
+
+
+#include <stdint.h>
+
+
+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 <fcntl.h>
+# 27 "../elfxx.h"
+# 1 "/usr/include/fcntl.h" 1 3 4
+# 27 "/usr/include/fcntl.h" 3 4
+#include <features.h>
+
+
+
+
+
+
+#include <bits/fcntl.h>
+# 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 <sys/types.h>
+# 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 <sys/stat.h>
+# 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 <features.h>
+
+#include <bits/types.h>
+# 37 "/usr/include/sys/stat.h" 3 4
+#include <time.h>
+# 103 "/usr/include/sys/stat.h" 3 4
+
+
+#include <bits/stat.h>
+# 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 <bits/wordsize.h>
+# 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 <unistd.h>
+
+#include <sys/mman.h>
+# 30 "../elfxx.h"
+# 1 "/usr/include/sys/mman.h" 1 3 4
+# 23 "/usr/include/sys/mman.h" 3 4
+#include <features.h>
+#include <bits/types.h>
+
+#include <stddef.h>
+# 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 <bits/mman.h>
+# 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 <sys/stat.h>
+
+#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 <libunwind.h>
+
+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 <sys/ucontext.h>
+# 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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly (or made empty stubs) for 
-   building frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly (or made empty stubs) for
-   building frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly (or made empty stubs) for
-   building frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 This file is part of libunwind.
 
@@ -31,9 +28,408 @@
 #include "ucontext_i.h"
 #include <signal.h>
 
+/* 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 <libunwind.h>
+#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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly for building
-   frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   Will be replaced when libunwind is ready on ppc64 platform.
+
+Contributed by Corey Ashford <cjashfor@us.ibm.com>
 
 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 <davidm@hpl.hp.com>
 
-   Copied from src/x86_64/, modified slightly for building
-   frysk successfully on ppc64, by Wu Zhou <woodzltc@cn.ibm.com>
-   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 <ucontext.h>
+
+/* 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 <libunwind-ppc64.h>
 
-#include "libunwind_i.h"
+#include <libunwind_i.h>
 #include <sys/ucontext.h>
 
-/* 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 <stdio.h>
+#include <altivec.h>
+
+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 <libunwind.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <altivec.h>
+
+#include <sys/resource.h>
+
+#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;
+}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]