Comments (3)
I'm not saying you can't or shouldn't do it, but it seems odd to add 32-bit PPC support when a lot of others are dropping it: Java, Node.js, Linux Distros, IBM i rpms, ...
from binarydist.
Updated diff; this time the ctor is jumping off in no man's land, but somewhere around JIT emitted code...
diff --git a/configure.ac b/configure.ac
index 13c5fb3..a2234d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -377,15 +377,32 @@ case "$host" in
use_sigposix=yes
;;
*-*-aix*|*-*-os400*)
- dnl Set up a 64-bit build
- CPPFLAGS="$CPPFLAGS -maix64 -DGC_AIX_THREADS -D_ALL_SOURCE -D_THREAD_SAFE -D_LARGE_FILES -D_REENTRANT"
- LDFLAGS="-maix64"
libmono_cflags="-D_THREAD_SAFE -D_REENTRANT"
- dnl Would you believe GNU nm doesn't know how to process AIX libraries?
- dnl Hardcode IBM binutils in case GNU ones end up on our path. Also
- dnl specifiy 64-bit mode for tools.
- AR="/usr/bin/ar -X64"
- NM="/usr/bin/nm -X64"
+ dnl This environment variable controls if our build is 32 or 64-bit.
+ AC_ARG_VAR(OBJECT_MODE, [Specifies the bitness type output of IBM binutils])
+ dnl Specify the IBM binutils in case GNU ones end up on our path.
+ dnl OBJECT_MODE sets the bitness of IBM binutils; but this is a pain to
+ dnl propagate to makefiles; so specify a tool's 64-bit mode manually for now.
+ if test "$OBJECT_MODE" = "64"; then
+ AR="/usr/bin/ar -X64"
+ NM="/usr/bin/nm -X64"
+ else
+ AR="/usr/bin/ar"
+ NM="/usr/bin/nm"
+ fi
+ dnl Check for GCC vs. XL C; GCC doesn't respect OBJECT_MODE, FWIW
+ if test "$GCC" != "yes"; then
+ if test "$OBJECT_MODE" = "64"; then
+ CPPFLAGS="$CPPFLAGS -maix64 -DGC_AIX_THREADS -D_ALL_SOURCE -D_THREAD_SAFE -D_LARGE_FILES -D_REENTRANT"
+ LDFLAGS="-maix64"
+ else
+ echo " ** No OBJECT_MODE ** "
+ CPPFLAGS="$CPPFLAGS -DGC_AIX_THREADS -D_ALL_SOURCE -D_THREAD_SAFE -D_LARGE_FILES -D_REENTRANT"
+ fi
+ else
+ dnl TODO: XL C support
+ CPPFLAGS="$CPPFLAGS -DGC_AIX_THREADS -D_ALL_SOURCE -D_THREAD_SAFE -D_LARGE_FILES -D_REENTRANT"
+ fi
dnl SGen is the future (changes to Boehm support code would be
dnl required if you wish to re-enable Boehm)
support_boehm=no
@@ -3979,8 +3996,11 @@ case "$host" in
BTLS_PLATFORM=powerpc
dnl on AIX/PASE, shared libraries can be inside archives
dnl if they are, we specify them by lib.a(lib.so)
- dnl we may hardcode 64-bit names at times, but we don't do 32-bit AIX, so
- LIBC="libc.a(shr_64.o)"
+ if test "$OBJECT_MODE" = "64"; then
+ LIBC="libc.a(shr_64.o)"
+ else
+ LIBC="libc.a(shr.o)"
+ fi
INTL="libintl.a(libintl.so.8)"
;;
linux*)
@@ -5135,8 +5155,25 @@ if test "x$enable_btls" = "xyes"; then
btls_arch=powerpc
case $host_os in
aix*|os400*)
- btls_cflags="$btls_cflags -maix64 -mminimal-toc -pthread -D_ALL_SOURCE -D_THREAD_SAFE -D_REENTRANT"
- BTLS_CMAKE_ARGS="-DCMAKE_AR=/usr/bin/ar -DCMAKE_C_ARCHIVE_CREATE=\"<CMAKE_AR> -X64 cr <TARGET> <LINK_FLAGS> <OBJECTS>\""
+ dnl Test for GCC vs. XL C
+ if test "$GCC" != "yes"; then
+ if test "$OBJECT_MODE" = "64"; then
+ btls_cflags="$btls_cflags -maix64 -mminimal-toc -pthread -D_ALL_SOURCE -D_THREAD_SAFE -D_REENTRANT"
+ BTLS_CMAKE_ARGS="-DCMAKE_AR=/usr/bin/ar -DCMAKE_C_ARCHIVE_CREATE=\"<CMAKE_AR> -X64 cr <TARGET> <LINK_FLAGS> <OBJECTS>\""
+ else
+ btls_cflags="$btls_cflags -mminimal-toc -pthread -D_ALL_SOURCE -D_THREAD_SAFE -D_REENTRANT"
+ BTLS_CMAKE_ARGS="-DCMAKE_AR=/usr/bin/ar -DCMAKE_C_ARCHIVE_CREATE=\"<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>\""
+ fi
+ else
+ dnl TODO: Verify this for XL C support
+ if test "$OBJECT_MODE" = "64"; then
+ btls_cflags="$btls_cflags -maix64 -mminimal-toc -pthread -D_ALL_SOURCE -D_THREAD_SAFE -D_REENTRANT"
+ BTLS_CMAKE_ARGS="-DCMAKE_AR=/usr/bin/ar -DCMAKE_C_ARCHIVE_CREATE=\"<CMAKE_AR> -X64 cr <TARGET> <LINK_FLAGS> <OBJECTS>\""
+ else
+ btls_cflags="$btls_cflags -mminimal-toc -pthread -D_ALL_SOURCE -D_THREAD_SAFE -D_REENTRANT"
+ BTLS_CMAKE_ARGS="-DCMAKE_AR=/usr/bin/ar -DCMAKE_C_ARCHIVE_CREATE=\"<CMAKE_AR> cr <TARGET> <LINK_FLAGS> <OBJECTS>\""
+ fi
+ fi
esac
;;
android-armv5)
diff --git a/external/boringssl b/external/boringssl
--- a/external/boringssl
+++ b/external/boringssl
@@ -1 +1 @@
-Subproject commit 4e95a6c97494a0c5e9d1f7b6f49c0ff4102908e8
+Subproject commit 4e95a6c97494a0c5e9d1f7b6f49c0ff4102908e8-dirty
diff --git a/external/corefx b/external/corefx
--- a/external/corefx
+++ b/external/corefx
@@ -1 +1 @@
-Subproject commit d2aaa5450b5481c2392a3a5656d353f28e5e3bbd
+Subproject commit d2aaa5450b5481c2392a3a5656d353f28e5e3bbd-dirty
diff --git a/mono/arch/ppc/ppc-codegen.h b/mono/arch/ppc/ppc-codegen.h
index 98fed75..f77549c 100644
--- a/mono/arch/ppc/ppc-codegen.h
+++ b/mono/arch/ppc/ppc-codegen.h
@@ -205,7 +205,15 @@ enum {
} \
} G_STMT_END
+#if defined(_AIX)
+#define ppc_load_func(c,D,v) G_STMT_START { \
+ ppc_load_sequence ((c), ppc_r12, (guint)(gsize)(v)); \
+ ppc_ldptr ((c), ppc_r2, sizeof (gpointer), ppc_r12); \
+ ppc_ldptr ((c), (D), 0, ppc_r12); \
+ } G_STMT_END
+#else
#define ppc_load_func(c,D,V) ppc_load_sequence ((c), (D), (V))
+#endif
#define ppc_load_multiple_regs(c,D,d,A) ppc_lmw ((c), (D), (d), (A))
diff --git a/mono/mini/cpu-ppc.md b/mono/mini/cpu-ppc.md
index 5eea6e3..26e4540 100644
--- a/mono/mini/cpu-ppc.md
+++ b/mono/mini/cpu-ppc.md
@@ -56,9 +56,9 @@ tailcall: len:120 clob:c
# PowerPC outputs a nice fixed size memcpy loop for larger stack_usage, so 0.
tailcall_parameter: len:0
-call: dest:a clob:c len:16
+call: dest:a clob:c len:24
br: len:4
-throw: src1:i len:20
+throw: src1:i len:28
rethrow: src1:i len:20
ckfinite: dest:f src1:f
ppc_check_finite: src1:i len:16
@@ -80,7 +80,7 @@ fcompare: src1:f src2:f len:12
oparglist: src1:i len:12
setlret: src1:i src2:i len:12
checkthis: src1:b len:4
-voidcall: len:16 clob:c
+voidcall: len:24 clob:c
voidcall_reg: src1:i len:16 clob:c
voidcall_membase: src1:b len:16 clob:c
fcall: dest:g len:16 clob:c
diff --git a/mono/mini/exceptions-ppc.c b/mono/mini/exceptions-ppc.c
index 3483ba8..43113b6 100644
--- a/mono/mini/exceptions-ppc.c
+++ b/mono/mini/exceptions-ppc.c
@@ -463,7 +463,7 @@ mono_arch_get_throw_exception_generic (int size, MonoTrampInfo **info, int corli
gpointer
mono_arch_get_rethrow_exception (MonoTrampInfo **info, gboolean aot)
{
- int size = MONO_PPC_32_64_CASE (132, 224) + PPC_FTNPTR_SIZE;
+ int size = MONO_PPC_32_64_CASE (140, 224) + PPC_FTNPTR_SIZE;
if (aot)
size += 64;
@@ -485,7 +485,7 @@ mono_arch_get_rethrow_exception (MonoTrampInfo **info, gboolean aot)
gpointer
mono_arch_get_throw_exception (MonoTrampInfo **info, gboolean aot)
{
- int size = MONO_PPC_32_64_CASE (132, 224) + PPC_FTNPTR_SIZE;
+ int size = MONO_PPC_32_64_CASE (140, 224) + PPC_FTNPTR_SIZE;
if (aot)
size += 64;
@@ -502,7 +502,7 @@ mono_arch_get_throw_exception (MonoTrampInfo **info, gboolean aot)
gpointer
mono_arch_get_throw_corlib_exception (MonoTrampInfo **info, gboolean aot)
{
- int size = MONO_PPC_32_64_CASE (168, 304) + PPC_FTNPTR_SIZE;
+ int size = MONO_PPC_32_64_CASE (176, 304) + PPC_FTNPTR_SIZE;
if (aot)
size += 64;
@@ -679,8 +679,8 @@ mono_arch_handle_altstack_exception (void *sigctx, MONO_SIG_HANDLER_INFO_TYPE *s
{
MonoPPCFunctionDescriptor *handler_ftnptr = (MonoPPCFunctionDescriptor*)altstack_handle_and_restore;
- UCONTEXT_REG_NIP(uc) = (gulong)handler_ftnptr->code;
- UCONTEXT_REG_Rn(uc, 2) = (gulong)handler_ftnptr->toc;
+ UCONTEXT_REG_NIP(uc) = (gpointer)handler_ftnptr->code;
+ UCONTEXT_REG_Rn(uc, 2) = (gpointer)handler_ftnptr->toc;
}
#else
UCONTEXT_REG_NIP(uc) = (unsigned long)altstack_handle_and_restore;
@@ -726,8 +726,8 @@ setup_ucontext_return (void *uc, gpointer func)
{
MonoPPCFunctionDescriptor *handler_ftnptr = (MonoPPCFunctionDescriptor*)func;
- UCONTEXT_REG_NIP(uc) = (gulong)handler_ftnptr->code;
- UCONTEXT_REG_Rn(uc, 2) = (gulong)handler_ftnptr->toc;
+ UCONTEXT_REG_NIP(uc) = (gpointer)handler_ftnptr->code;
+ UCONTEXT_REG_Rn(uc, 2) = (gpointer)handler_ftnptr->toc;
}
#else
UCONTEXT_REG_NIP(uc) = (unsigned long)func;
@@ -794,9 +794,9 @@ mono_arch_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), g
uintptr_t sp = (uintptr_t) MONO_CONTEXT_GET_SP(ctx);
ctx->regs [PPC_FIRST_ARG_REG] = user_data;
sp -= PPC_MINIMAL_STACK_SIZE;
- *(unsigned long *)sp = MONO_CONTEXT_GET_SP(ctx);
+ *(gpointer *)sp = MONO_CONTEXT_GET_SP(ctx);
MONO_CONTEXT_SET_BP(ctx, sp);
- mono_arch_setup_resume_sighandler_ctx(ctx, (unsigned long) async_cb);
+ mono_arch_setup_resume_sighandler_ctx(ctx, (gpointer) async_cb);
}
void
@@ -804,9 +804,9 @@ mono_arch_setup_resume_sighandler_ctx (MonoContext *ctx, gpointer func)
{
#ifdef PPC_USES_FUNCTION_DESCRIPTOR
MonoPPCFunctionDescriptor *handler_ftnptr = (MonoPPCFunctionDescriptor*)func;
- MONO_CONTEXT_SET_IP(ctx, (gulong)handler_ftnptr->code);
- ctx->regs[2] = (gulong)handler_ftnptr->toc;
+ MONO_CONTEXT_SET_IP(ctx, (gpointer)handler_ftnptr->code);
+ ctx->regs[2] = (gpointer)handler_ftnptr->toc;
#else
- MONO_CONTEXT_SET_IP(ctx, (unsigned long) func);
+ MONO_CONTEXT_SET_IP(ctx, (gpointer) func);
#endif
}
diff --git a/mono/mini/mini-ppc.c b/mono/mini/mini-ppc.c
index 282868e..5978240 100644
--- a/mono/mini/mini-ppc.c
+++ b/mono/mini/mini-ppc.c
@@ -2951,7 +2951,7 @@ ppc_patch_full (MonoCompile *cfg, MonoDomain *domain, guchar *code, const guchar
guint32 prim = ins >> 26;
guint32 ovf;
- //g_print ("patching 0x%08x (0x%08x) to point to 0x%08x\n", code, ins, target);
+// g_print ("patching 0x%08x (0x%08x) to point to 0x%08x\n", code, ins, target);
if (prim == 18) {
// prefer relative branches, they are more position independent (e.g. for AOT compilation).
gint diff = target - code;
@@ -3077,8 +3077,10 @@ ppc_patch_full (MonoCompile *cfg, MonoDomain *domain, guchar *code, const guchar
seq = (guint32*)code;
g_assert ((seq [0] >> 26) == 15);
g_assert ((seq [1] >> 26) == 24);
+#if !defined(PPC_USES_FUNCTION_DESCRIPTOR)
g_assert ((seq [2] >> 26) == 31);
g_assert (seq [3] == 0x4e800021 || seq [3] == 0x4e800020 || seq [3] == 0x4e800420);
+#endif
/* FIXME: make this thread safe */
ppc_lis (code, PPC_CALL_REG, (guint32)(target) >> 16);
ppc_ori (code, PPC_CALL_REG, PPC_CALL_REG, (guint32)(target) & 0xffff);
diff --git a/mono/mini/mini-runtime.c b/mono/mini/mini-runtime.c
index 2f16279..bc406b9 100644
--- a/mono/mini/mini-runtime.c
+++ b/mono/mini/mini-runtime.c
@@ -3812,7 +3812,7 @@ mini_create_ftnptr (MonoDomain *domain, gpointer addr)
if ((desc = g_hash_table_lookup (domain->ftnptrs_hash, addr)))
return desc;
-#if defined(__mono_ppc64__)
+#if defined(PPC_USES_FUNCTION_DESCRIPTOR)
desc = mono_domain_alloc0 (domain, 3 * sizeof (gpointer));
desc [0] = addr;
Debug output:
Starting program: /home/calvin/mono-build/mono/mono/mini/.libs/lt-mono-sgen -v -v --config /home/calvin/mono-build/mono/runtime/etc/mono/config .//class/lib/monolite-unix/1051700015/mcs.exe /warn:0 /noconfig /langversion:latest /r:System.dll /r:mscorlib.dll /out:build/deps/basic-profile-check.exe build/common/basic-profile-check.cs
[New Thread 1]
[New Thread 258]
converting method void System.OutOfMemoryException:.ctor (string)
inline failed: call
remove_block_if_useless, removed BB3
BB0 IN:
BB2 IN: 0
BB1 IN: 2
DTREE System.OutOfMemoryException:.ctor (string) 0
BB0(dfn=0) (IDOM=BB-1): BB0
BB2(dfn=1) (IDOM=BB0): BB0 BB2
BB1(dfn=2) (IDOM=BB2): BB0 BB2 BB1
LIVENESS:
BLOCK BB0 (BB2, ):
GEN BB0: {}
KILL BB0: {}
BLOCK BB2 (BB1, ):
1 il_seq_point il: 0x0
1 move R40 <- R32
GEN: R32(0)
1 move R41 <- R33
GEN: R33(1)
1 voidcall [System.SystemException:.ctor (string)] [r3 <- R40] [r4 <- R41] clobbers: c
1 il_seq_point il: 0x7, nonempty-stack
1 il_seq_point il: 0x7
1 move R44 <- R32
GEN: R32(0)
1 iconst R45 <- [-2147024882]
1 voidcall [System.Exception:SetErrorCode (int)] [r3 <- R44] [r4 <- R45] clobbers: c
1 il_seq_point il: 0x12, nonempty-stack
1 il_seq_point il: 0x12
GEN BB2: {0, 1}
KILL BB2: {}
BLOCK BB1 ():
GEN BB1: {}
KILL BB1: {}
ITERATION:
P: BB1(2): IN: BB2 OUT:
P: BB2(1): IN: BB0 OUT:BB1
LIVE IN BB2: {0, 1}
P: BB0(0): IN: OUT:BB2
LIVE IN BB0: {0, 1}
IT: 3 2.
LIVE IN BB1: {}
LIVE OUT BB1: {}
LIVE IN BB2: {0, 1}
LIVE OUT BB2: {}
LIVE IN BB0: {0, 1}
LIVE OUT BB0: {0, 1}
V0: [0x0 - 0x4000e]
V1: [0x0 - 0x40006]
CFA: [0] def_cfa: sp+0x0
CFA: [8] offset: unknown at cfa-0xfffffff0
CFA: [c] def_cfa_offset: 0x90
Method void System.OutOfMemoryException:.ctor (string) emitted at 30209d80 to 30209de8 (code length 104) [mcs.exe]
/tmp/.-V87ab: file format aixcoff-rs6000
Disassembly of section .text:
00000000 <.text>:
0: 7c 08 02 a6 mflr r0
4: 90 01 00 10 stw r0,16(r1)
8: 94 21 ff 70 stwu r1,-144(r1)
c: 90 61 00 80 stw r3,128(r1)
10: 90 81 00 84 stw r4,132(r1)
14: 80 61 00 80 lwz r3,128(r1)
18: 80 81 00 84 lwz r4,132(r1)
1c: 3d 80 30 20 lis r12,12320
20: 61 8c 9d f4 ori r12,r12,40436
24: 80 4c 00 04 lwz r2,4(r12)
28: 81 8c 00 00 lwz r12,0(r12)
2c: 7d 88 03 a6 mtlr r12
30: 4e 80 00 21 blrl
34: 80 61 00 80 lwz r3,128(r1)
38: 3c 80 80 07 lis r4,-32761
3c: 60 84 00 0e ori r4,r4,14
40: 3d 80 30 20 lis r12,12320
44: 61 8c 9d e8 ori r12,r12,40424
48: 80 4c 00 04 lwz r2,4(r12)
4c: 81 8c 00 00 lwz r12,0(r12)
50: 7d 88 03 a6 mtlr r12
54: 4e 80 00 21 blrl
58: 80 01 00 a0 lwz r0,160(r1)
5c: 7c 08 03 a6 mtlr r0
60: 38 21 00 90 addi r1,r1,144
64: 4e 80 00 20 blr
converting method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)
FIRST BB for 44 is BB_3
FIRST BB for 6 is BB_2
BB0 IN:
BB5 IN: 0
BB6 IN: 5
BB12 IN: 6 14
BB1 IN: 10 11 15 12
BB13 IN: 6
BB14 IN: 13
BB15 IN: 13
BB2 IN: 5
BB7 IN: 2 9
BB11 IN: 7 3
BB8 IN: 2
BB9 IN: 8
BB10 IN: 8
DTREE (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr) 1
BB0(dfn=0) (IDOM=BB-1): BB0
BB5(dfn=1) (IDOM=BB0): BB0 BB5
BB6(dfn=2) (IDOM=BB5): BB0 BB5 BB6
BB12(dfn=3) (IDOM=BB6): BB0 BB5 BB6 BB12
BB1(dfn=4) (IDOM=BB5): BB0 BB5 BB1
BB13(dfn=5) (IDOM=BB6): BB0 BB5 BB6 BB13
BB14(dfn=6) (IDOM=BB13): BB0 BB5 BB6 BB13 BB14
BB15(dfn=7) (IDOM=BB13): BB0 BB5 BB6 BB13 BB15
BB2(dfn=8) (IDOM=BB5): BB0 BB5 BB2
BB7(dfn=9) (IDOM=BB2): BB0 BB5 BB2 BB7
BB11(dfn=10) (IDOM=BB7): BB0 BB5 BB2 BB7 BB11
BB8(dfn=11) (IDOM=BB2): BB0 BB5 BB2 BB8
BB9(dfn=12) (IDOM=BB8): BB0 BB5 BB2 BB8 BB9
BB10(dfn=13) (IDOM=BB8): BB0 BB5 BB2 BB8 BB10
LIVENESS:
BLOCK BB0 (BB5, ):
GEN BB0: {}
KILL BB0: {}
BLOCK BB5 (BB6, BB2, ):
1 iconst R37 <- [0]
KILL: R37(5)
1 iconst R38 <- [0]
KILL: R38(6)
1 il_seq_point il: 0x0
1 move R40 <- R35
GEN: R35(3)
1 icompare_imm R40 [0]
1 int_beq [B6B2]
GEN BB5: {3}
KILL BB5: {5, 6}
BLOCK BB6 (BB12, BB13, ):
1 il_seq_point il: 0x37
1 iconst R62 <- [-241887476]
1 loadu4_membase R63 <- [R62 + 0x0]
1 icompare_imm R63 [0]
1 int_bne_un [B13B12]
GEN BB6: {}
KILL BB6: {}
BLOCK BB12 (BB1, ):
1 il_seq_point il: 0x4f
1 load_membase R72 <- [R34 + 0x0]
GEN: R34(2)
1 move R74 <- R33
GEN: R33(1)
1 move R75 <- R72
1 voidcall_reg R36 clobbers: c
GEN: R36(4)
1 il_seq_point il: 0x58
1 move R32 <- R37
GEN: R37(5)
KILL: R32(0)
1 il_seq_point il: 0x59
GEN BB12: {1, 2, 4, 5}
KILL BB12: {0}
BLOCK BB1 ():
GEN BB1: {}
KILL BB1: {}
BLOCK BB13 (BB14, BB15, ):
1 il_seq_point il: 0x3f
1 il_seq_point il: 0x41
1 call R65 <- [mono_thread_force_interruption_checkpoint_noraise] clobbers: c
1 move R66 <- R65
1 move R47 <- R66
KILL: R47(8)
1 icompare_imm R65 [0]
1 int_bne_un [B15B14]
GEN BB13: {}
KILL BB13: {8}
BLOCK BB14 (BB12, ):
GEN BB14: {}
KILL BB14: {}
BLOCK BB15 (BB1, ):
1 throw R47
GEN: R47(8)
1 not_reached
GEN BB15: {8}
KILL BB15: {}
BLOCK BB2 (BB7, BB8, ):
1 il_seq_point il: 0x6
1 iconst R41 <- [-241887476]
1 loadu4_membase R42 <- [R41 + 0x0]
1 icompare_imm R42 [0]
1 int_beq [B7B8]
GEN BB2: {}
KILL BB2: {}
BLOCK BB7 (BB11, ):
1 il_seq_point il: 0x1e
1 load_membase R52 <- [R34 + 0x0]
GEN: R34(2)
1 move R54 <- R33
GEN: R33(1)
1 move R55 <- R52
1 voidcall_reg R36 clobbers: c
GEN: R36(4)
1 il_seq_point il: 0x27
1 br [B11]
GEN BB7: {1, 2, 4}
KILL BB7: {}
BLOCK BB11 (BB1, ):
1 il_seq_point il: 0x35
1 move R32 <- R37
GEN: R37(5)
KILL: R32(0)
1 il_seq_point il: 0x36
1 br [B1]
GEN BB11: {5}
KILL BB11: {0}
BLOCK BB8 (BB9, BB10, ):
1 il_seq_point il: 0xe
1 il_seq_point il: 0x10
1 call R44 <- [mono_thread_force_interruption_checkpoint_noraise] clobbers: c
1 move R45 <- R44
1 move R47 <- R45
KILL: R47(8)
1 icompare_imm R44 [0]
1 int_beq [B9B10]
GEN BB8: {}
KILL BB8: {8}
BLOCK BB9 (BB7, ):
GEN BB9: {}
KILL BB9: {}
BLOCK BB10 (BB1, ):
1 throw R47
GEN: R47(8)
1 not_reached
GEN BB10: {8}
KILL BB10: {}
ITERATION:
P: BB10(13): IN: BB8 OUT:BB1
LIVE IN BB10: {8}
P: BB9(12): IN: BB8 OUT:BB7
LIVE IN BB9: {1, 2, 4}
P: BB8(11): IN: BB2 OUT:BB9 BB10
LIVE IN BB8: {1, 2, 4}
P: BB11(10): IN: BB7 BB3 OUT:BB1
LIVE IN BB11: {5}
P: BB7(9): IN: BB2 BB9 OUT:BB11
ADD: 9
LIVE IN BB7: {1, 2, 4, 5}
P: BB9(12): IN: BB8 OUT:BB7
ADD: 8
LIVE IN BB9: {1, 2, 4, 5}
P: BB8(11): IN: BB2 OUT:BB9 BB10
LIVE IN BB8: {1, 2, 4, 5}
P: BB2(8): IN: BB5 OUT:BB7 BB8
LIVE IN BB2: {1, 2, 4, 5}
P: BB15(7): IN: BB13 OUT:BB1
LIVE IN BB15: {8}
P: BB14(6): IN: BB13 OUT:BB12
LIVE IN BB14: {1, 2, 4, 5}
P: BB13(5): IN: BB6 OUT:BB14 BB15
LIVE IN BB13: {1, 2, 4, 5}
P: BB1(4): IN: BB10 BB11 BB15 BB12 OUT:
P: BB12(3): IN: BB6 BB14 OUT:BB1
LIVE IN BB12: {1, 2, 4, 5}
P: BB6(2): IN: BB5 OUT:BB12 BB13
LIVE IN BB6: {1, 2, 4, 5}
P: BB5(1): IN: BB0 OUT:BB6 BB2
LIVE IN BB5: {1, 2, 3, 4}
P: BB0(0): IN: OUT:BB5
LIVE IN BB0: {1, 2, 3, 4}
IT: 14 15.
LIVE IN BB10: {8}
LIVE OUT BB10: {}
LIVE IN BB9: {1, 2, 4, 5}
LIVE OUT BB9: {1, 2, 4, 5}
LIVE IN BB8: {1, 2, 4, 5}
LIVE OUT BB8: {1, 2, 4, 5, 8}
LIVE IN BB11: {5}
LIVE OUT BB11: {}
LIVE IN BB7: {1, 2, 4, 5}
LIVE OUT BB7: {5}
LIVE IN BB2: {1, 2, 4, 5}
LIVE OUT BB2: {1, 2, 4, 5}
LIVE IN BB15: {8}
LIVE OUT BB15: {}
LIVE IN BB14: {1, 2, 4, 5}
LIVE OUT BB14: {1, 2, 4, 5}
LIVE IN BB13: {1, 2, 4, 5}
LIVE OUT BB13: {1, 2, 4, 5, 8}
LIVE IN BB1: {}
LIVE OUT BB1: {}
LIVE IN BB12: {1, 2, 4, 5}
LIVE OUT BB12: {}
LIVE IN BB6: {1, 2, 4, 5}
LIVE OUT BB6: {1, 2, 4, 5}
LIVE IN BB5: {1, 2, 3, 4}
LIVE OUT BB5: {1, 2, 4, 5}
LIVE IN BB0: {1, 2, 3, 4}
LIVE OUT BB0: {1, 2, 3, 4}
V0: [0x0 - 0x280005]
V1: [0x0 - 0x33ffff]
V2: [0x0 - 0x33ffff]
V3: [0x0 - 0x40008]
V4: [0x0 - 0x33ffff]
V5: [0x40003 - 0x33ffff]
V6: [0x40005 - 0x40005]
V7: [0xffffffff - 0x0]
V8: [0x14000b - 0x340002]
V9: [0xffffffff - 0x0]
V10: [0xffffffff - 0x0]
CFA: [0] def_cfa: sp+0x0
CFA: [8] offset: unknown at cfa-0xfffffff0
CFA: [c] def_cfa_offset: 0xc0
CFA: [10] offset: r27 at cfa-0x8
CFA: [14] offset: r31 at cfa-0x4
CFA: [18] def_cfa_reg: r31
Method (wrapper runtime-invoke) object <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr) emitted at 30209e10 to 30209fa8 (code length 408) [mcs.exe]
/tmp/.az87ad: file format aixcoff-rs6000
Disassembly of section .text:
00000000 <.text>:
0: 7c 08 02 a6 mflr r0
4: 90 01 00 10 stw r0,16(r1)
8: 94 21 ff 40 stwu r1,-192(r1)
c: 93 61 00 b8 stw r27,184(r1)
10: 93 e1 00 bc stw r31,188(r1)
14: 7c 3f 0b 78 mr r31,r1
18: 90 7f 00 94 stw r3,148(r31)
1c: 90 9f 00 98 stw r4,152(r31)
20: 90 bf 00 9c stw r5,156(r31)
24: 90 df 00 a0 stw r6,160(r31)
28: 38 60 00 00 li r3,0
2c: 90 7f 00 8c stw r3,140(r31)
30: 38 60 00 00 li r3,0
34: 90 7f 00 90 stw r3,144(r31)
38: 80 7f 00 9c lwz r3,156(r31)
3c: 2c 03 00 00 cmpwi r3,0
40: 41 82 00 bc beq 0xfc
44: 3c 60 f1 95 lis r3,-3691
48: 60 63 17 0c ori r3,r3,5900
4c: 80 63 00 00 lwz r3,0(r3)
50: 2c 03 00 00 cmpwi r3,0
54: 41 82 00 48 beq 0x9c
58: 3d 80 20 03 lis r12,8195
5c: 61 8c ad 68 ori r12,r12,44392
60: 80 4c 00 04 lwz r2,4(r12)
64: 81 8c 00 00 lwz r12,0(r12)
68: 7d 88 03 a6 mtlr r12
6c: 4e 80 00 21 blrl
70: 7c 64 1b 78 mr r4,r3
74: 7c 9b 23 78 mr r27,r4
78: 2c 03 00 00 cmpwi r3,0
7c: 41 82 00 20 beq 0x9c
80: 7f 63 db 78 mr r3,r27
84: 3d 80 30 00 lis r12,12288
88: 61 8c 77 e0 ori r12,r12,30688
8c: 80 4c 00 04 lwz r2,4(r12)
90: 81 8c 00 00 lwz r12,0(r12)
94: 7d 88 03 a6 mtlr r12
98: 4e 80 00 21 blrl
9c: 80 7f 00 98 lwz r3,152(r31)
a0: 80 83 00 00 lwz r4,0(r3)
a4: 80 7f 00 94 lwz r3,148(r31)
a8: 80 bf 00 a0 lwz r5,160(r31)
ac: 80 05 00 00 lwz r0,0(r5)
b0: 80 45 00 08 lwz r2,8(r5)
b4: 7c 08 03 a6 mtlr r0
b8: 4e 80 00 21 blrl
bc: 48 00 00 38 b 0xf4
c0: 80 7f 00 88 lwz r3,136(r31)
c4: 80 7f 00 88 lwz r3,136(r31)
c8: 90 7f 00 90 stw r3,144(r31)
cc: 80 9f 00 9c lwz r4,156(r31)
d0: 80 7f 00 90 lwz r3,144(r31)
d4: 90 64 00 00 stw r3,0(r4)
d8: 54 84 ba 7e rlwinm r4,r4,23,9,31
dc: 3c a0 30 80 lis r5,12416
e0: 60 a5 00 00 ori r5,r5,0
e4: 7c 84 2a 14 add r4,r4,r5
e8: 38 a0 00 01 li r5,1
ec: 98 a4 00 00 stb r5,0(r4)
f0: 48 00 00 04 b 0xf4
f4: 80 7f 00 8c lwz r3,140(r31)
f8: 48 00 00 40 b 0x138
fc: 3c 60 f1 95 lis r3,-3691
100: 60 63 17 0c ori r3,r3,5900
104: 80 63 00 00 lwz r3,0(r3)
108: 28 03 00 00 cmplwi r3,0
10c: 40 82 00 48 bne 0x154
110: 48 00 00 04 b 0x114
114: 80 7f 00 98 lwz r3,152(r31)
118: 80 83 00 00 lwz r4,0(r3)
11c: 80 7f 00 94 lwz r3,148(r31)
120: 80 bf 00 a0 lwz r5,160(r31)
124: 80 05 00 00 lwz r0,0(r5)
128: 80 45 00 08 lwz r2,8(r5)
12c: 7c 08 03 a6 mtlr r0
130: 4e 80 00 21 blrl
134: 80 7f 00 8c lwz r3,140(r31)
138: 80 1f 00 d0 lwz r0,208(r31)
13c: 7c 08 03 a6 mtlr r0
140: 7f ec fb 78 mr r12,r31
144: 83 7f 00 b8 lwz r27,184(r31)
148: 83 ff 00 bc lwz r31,188(r31)
14c: 38 2c 00 c0 addi r1,r12,192
150: 4e 80 00 20 blr
154: 3d 80 20 03 lis r12,8195
158: 61 8c ad 68 ori r12,r12,44392
15c: 80 4c 00 04 lwz r2,4(r12)
160: 81 8c 00 00 lwz r12,0(r12)
164: 7d 88 03 a6 mtlr r12
168: 4e 80 00 21 blrl
16c: 7c 64 1b 78 mr r4,r3
170: 7c 9b 23 78 mr r27,r4
174: 2c 03 00 00 cmpwi r3,0
178: 41 82 ff 9c beq 0x114
17c: 7f 63 db 78 mr r3,r27
180: 3d 80 30 00 lis r12,12288
184: 61 8c 77 e0 ori r12,r12,30688
188: 80 4c 00 04 lwz r2,4(r12)
18c: 81 8c 00 00 lwz r12,0(r12)
190: 7d 88 03 a6 mtlr r12
194: 4e 80 00 21 blrl
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1]
0x3c002004 in ?? ()
(gdb) bt
#0 0x3c002004 in ?? ()
#1 0x30209db4 in ?? ()
#2 0x2ff21d98 in ?? ()
#3 0xdb1e4e14 in mono_jit_runtime_invoke () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#4 0xdaf90bf4 in do_runtime_invoke () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#5 0xdaf94b40 in mono_runtime_invoke_handle () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#6 0xdafc2094 in create_exception_two_strings () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#7 0xdafc29a0 in mono_exception_from_name_two_strings_checked () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#8 0xdb029b08 in create_domain_objects () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#9 0xdb02d128 in mono_runtime_init_checked () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#10 0xdb1e81dc in mini_init () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#11 0xdb2da908 in mono_main () from /home/calvin/mono-build/mono/mono/mini/.libs/libmonosgen-2.0.a(libmonosgen-2.0.so.1)
#12 0x10000534 in main (argc=13, argv=0x2ff22550) at main-sgen.c:445
warning: (Internal error: pc 0x100001bb in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0x100001bc in read in psymtab, but not in symtab.)
from binarydist.
@kadler even if ppc32 is a failed experiment/put on the back burner, I'll still probably use/adapt the configure script changes for a possible XL C build, if I can get my hands on that.
from binarydist.
Related Issues (20)
- mkbundle is broken
- AIX takes a long time to start child processes HOT 1
- MemoryMappedFile segfaults
- RuntimeInformation could be better HOT 2
- Mono objects take a while to build
- Some System.Decimal operations deliver garbage HOT 1
- TimeZoneInfo doesn't work HOT 3
- Fix network interface enumeration on Mono HOT 6
- Take advantage of Mono crash reporting HOT 1
- Database access samples on IBMi - ADO.Net HOT 24
- Dependent module libmonosgen-2.0.a could not be loaded HOT 11
- Benchmark Mono against J9 and other runtimes
- Mono profiler is broken HOT 1
- svr4 style sonames HOT 17
- investigate deadlocks in System and corlib tests
- File.Exists causes app to fail when file not found and used in a Class. HOT 1
- managed rijndael is broken in big endian HOT 1
- DateTime.Now started failing at 1am on Daylight Savings Time 3/10/2019 HOT 4
- Spreadsheetlight causes error with System.IO.Packaging HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from binarydist.