Giter VIP home page Giter VIP logo

Comments (3)

kadler avatar kadler commented on June 20, 2024

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.

NattyNarwhal avatar NattyNarwhal commented on June 20, 2024

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.

NattyNarwhal avatar NattyNarwhal commented on June 20, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.