Unbreak ruby 1.9+ on sparc64 by disabling the peephole optimizer, which

was the cause of the previous occassional segfaults.

Thanks to landry@ for access to a sparc64 box

OK landry@, sthen@, naddy@
This commit is contained in:
jeremy 2014-02-12 22:41:43 +00:00
parent f345f882ed
commit 3c4d5c27f3
6 changed files with 51 additions and 6 deletions

View File

@ -1,6 +1,5 @@
# $OpenBSD: Makefile,v 1.42 2014/01/06 02:25:33 jeremy Exp $
# $OpenBSD: Makefile,v 1.43 2014/02/12 22:41:43 jeremy Exp $
BROKEN-sparc64 = doesnt reliably build, and depending ports randomly fail to build
BROKEN-alpha = miniruby abort trap when generating rdoc
COMMENT-main = object oriented script language with threads

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-compile_c,v 1.1 2014/02/12 22:41:43 jeremy Exp $
Disable peephole optimizer on sparc64, since it occasionally segfaults.
--- compile.c.orig Fri Jan 11 09:13:17 2013
+++ compile.c Thu Jan 9 22:31:36 2014
@@ -1706,6 +1706,9 @@ static int
iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
{
INSN *iobj = (INSN *)list;
+#ifdef __sparc64__
+ return COMPILE_OK;
+#endif
again:
if (iobj->insn_id == BIN(jump)) {
INSN *niobj, *diobj, *piobj;

View File

@ -1,6 +1,5 @@
# $OpenBSD: Makefile,v 1.9 2013/11/25 14:16:23 sthen Exp $
# $OpenBSD: Makefile,v 1.10 2014/02/12 22:41:43 jeremy Exp $
BROKEN-sparc64 = segfaults during build
BROKEN-hppa = miniruby abort trap when generating rdoc
BROKEN-alpha = miniruby abort trap when generating rdoc

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-compile_c,v 1.1 2014/02/12 22:41:43 jeremy Exp $
Disable peephole optimizer on sparc64, since it occasionally segfaults.
--- compile.c.orig Fri Jan 11 09:13:17 2013
+++ compile.c Thu Jan 9 22:31:36 2014
@@ -1706,6 +1706,9 @@ static int
iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
{
INSN *iobj = (INSN *)list;
+#ifdef __sparc64__
+ return COMPILE_OK;
+#endif
again:
if (iobj->insn_id == BIN(jump)) {
INSN *niobj, *diobj, *piobj;

View File

@ -1,6 +1,5 @@
# $OpenBSD: Makefile,v 1.3 2014/01/11 22:29:31 jeremy Exp $
# $OpenBSD: Makefile,v 1.4 2014/02/12 22:41:43 jeremy Exp $
BROKEN-sparc64 = segfaults during build
BROKEN-hppa = miniruby abort trap when generating rdoc
BROKEN-alpha = miniruby abort trap when generating rdoc

View File

@ -0,0 +1,16 @@
$OpenBSD: patch-compile_c,v 1.1 2014/02/12 22:41:43 jeremy Exp $
Disable peephole optimizer on sparc64, since it occasionally segfaults.
--- compile.c.orig Fri Jan 11 09:13:17 2013
+++ compile.c Thu Jan 9 22:31:36 2014
@@ -1706,6 +1706,9 @@ static int
iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcallopt)
{
INSN *iobj = (INSN *)list;
+#ifdef __sparc64__
+ return COMPILE_OK;
+#endif
again:
if (iobj->insn_id == BIN(jump)) {
INSN *niobj, *diobj, *piobj;