From cce3420c13d8763413ed50d0e23cf16988e2d8d7 Mon Sep 17 00:00:00 2001 From: juanfra Date: Tue, 15 Jul 2014 00:13:16 +0000 Subject: [PATCH] - Unbreak racket after the last header changes. Spotted by sthen@. - Add minimal support for powerpc (broken). Tested on Jan Stary's macppc. Thanks! - The additional changes are a WIP for the next version. - Enable the assembler code again in gmplonglong for i386 and amd64. --- lang/racket/Makefile | 7 +- ...h-src_racket_gc_include_private_gcconfig_h | 298 ++++++++++++++++++ .../racket/patches/patch-src_racket_sconfig_h | 46 ++- .../patch-src_racket_src_gmp_gmplonglong_h | 22 +- 4 files changed, 352 insertions(+), 21 deletions(-) create mode 100644 lang/racket/patches/patch-src_racket_gc_include_private_gcconfig_h diff --git a/lang/racket/Makefile b/lang/racket/Makefile index 76f25bd7221..dca703f0676 100644 --- a/lang/racket/Makefile +++ b/lang/racket/Makefile @@ -1,15 +1,16 @@ -# $OpenBSD: Makefile,v 1.14 2014/06/22 10:59:37 juanfra Exp $ +# $OpenBSD: Makefile,v 1.15 2014/07/15 00:13:16 juanfra Exp $ BROKEN-hppa = segfault while racket compiles XFORMS (at xsrc) BROKEN-mips64el = sigbus while racket compiles XFORMS (at xsrc) +BROKEN-powerpc = racket builds but does not pass the tests (with or without JIT) SHARED_ONLY = Yes -ONLY_FOR_ARCHS = i386 amd64 hppa mips64el +ONLY_FOR_ARCHS = i386 amd64 hppa mips64el powerpc COMMENT = multi-paradigm programming language V = 6.0.1 -REVISION = 0 +REVISION = 1 PKGNAME = racket-$V DISTNAME = racket-$V-src-builtpkgs diff --git a/lang/racket/patches/patch-src_racket_gc_include_private_gcconfig_h b/lang/racket/patches/patch-src_racket_gc_include_private_gcconfig_h new file mode 100644 index 00000000000..642d0fbe86b --- /dev/null +++ b/lang/racket/patches/patch-src_racket_gc_include_private_gcconfig_h @@ -0,0 +1,298 @@ +$OpenBSD: patch-src_racket_gc_include_private_gcconfig_h,v 1.1 2014/07/15 00:13:16 juanfra Exp $ +--- src/racket/gc/include/private/gcconfig.h.orig Thu Apr 17 21:58:42 2014 ++++ src/racket/gc/include/private/gcconfig.h Sat Jul 12 22:18:27 2014 +@@ -815,19 +815,14 @@ + # ifdef OPENBSD + # define OS_TYPE "OPENBSD" + # define ALIGNMENT 4 +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 268 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK + extern int __data_start[]; + # define DATASTART ((ptr_t)(__data_start)) + extern char _end[]; + # define DATAEND ((ptr_t)(&_end)) + # define DYNAMIC_LOADING +-# endif ++# endif /* OPENBSD */ + # ifdef FREEBSD + # define ALIGNMENT 4 + # define OS_TYPE "FREEBSD" +@@ -995,19 +990,14 @@ + # endif + # ifdef OPENBSD + # define OS_TYPE "OPENBSD" +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 232 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK + extern int __data_start[]; + # define DATASTART ((ptr_t)(__data_start)) + extern char _end[]; + # define DATAEND ((ptr_t)(&_end)) + # define DYNAMIC_LOADING +-# endif ++# endif /* OPENBSD */ + # ifdef NETBSD + # define OS_TYPE "NETBSD" + # define HEURISTIC2 +@@ -1251,20 +1241,15 @@ + /* This may not be right. */ + # endif + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 176 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; +-# define DATASTART ((ptr_t)(__data_start)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define OS_TYPE "OPENBSD" ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)(__data_start)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # ifdef FREEBSD + # define OS_TYPE "FREEBSD" + # ifndef GC_FREEBSD_THREADS +@@ -1470,21 +1455,17 @@ + # endif /* _ELF_ */ + # endif + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# define ALIGNMENT 4 +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 808 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int _fdata[]; +-# define DATASTART ((ptr_t)(_fdata)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define OS_TYPE "OPENBSD" ++# define CPP_WORDSZ _MIPS_SZPTR ++# define ALIGNMENT (_MIPS_SZPTR/8) ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int _fdata[]; ++# define DATASTART ((ptr_t)(_fdata)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # if defined(NONSTOP) + # define CPP_WORDSZ 32 + # define OS_TYPE "NONSTOP" +@@ -1555,20 +1536,15 @@ + # define DATAEND (&_end) + # endif /* LINUX */ + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 520 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; +-# define DATASTART ((ptr_t)(__data_start)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define OS_TYPE "OPENBSD" ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)(__data_start)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # endif /* HP_PA */ + + # ifdef ALPHA +@@ -1585,21 +1561,16 @@ + # define DYNAMIC_LOADING + # endif + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# define ELF_CLASS ELFCLASS64 +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 816 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; +-# define DATASTART ((ptr_t)(__data_start)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define OS_TYPE "OPENBSD" ++# define ELF_CLASS ELFCLASS64 ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)(__data_start)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # ifdef FREEBSD + # define OS_TYPE "FREEBSD" + /* MPROTECT_VDB is not yet supported at all on FreeBSD/alpha. */ +@@ -1869,19 +1840,14 @@ + # ifdef OPENBSD + # define ALIGNMENT 4 + # define OS_TYPE "OPENBSD" +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 176 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; +-# define DATASTART ((ptr_t)(__data_start)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)(__data_start)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # ifdef NOSYS + /* __data_start is usually defined in the target linker script. */ + extern int __data_start[]; +@@ -1926,20 +1892,15 @@ + # define DYNAMIC_LOADING + # endif + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 332 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; +-# define DATASTART ((ptr_t)(__data_start)) +- extern char _end[]; +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define OS_TYPE "OPENBSD" ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; ++# define DATASTART ((ptr_t)(__data_start)) ++ extern char _end[]; ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # endif + + # ifdef SH4 +@@ -1973,22 +1934,17 @@ + # define HBLKSIZE 4096 + # endif + # ifdef OPENBSD +-# define OS_TYPE "OPENBSD" +-# define ELF_CLASS ELFCLASS64 +-# ifdef GC_OPENBSD_THREADS +-# define UTHREAD_SP_OFFSET 400 +-# else +-# include +-# include +-# define STACKBOTTOM USRSTACK +-# endif +- extern int __data_start[]; ++# define OS_TYPE "OPENBSD" ++# define ELF_CLASS ELFCLASS64 ++# include /* define USRSTACK */ ++# define STACKBOTTOM USRSTACK ++ extern int __data_start[]; + /* PLTSCHEME: commented out these two: */ + /*# define DATASTART ((ptr_t)(__data_start)) */ + /* extern char _end[]; */ +-# define DATAEND ((ptr_t)(&_end)) +-# define DYNAMIC_LOADING +-# endif ++# define DATAEND ((ptr_t)(&_end)) ++# define DYNAMIC_LOADING ++# endif /* OPENBSD */ + # define CACHE_LINE_SIZE 64 + # ifdef LINUX + # define OS_TYPE "LINUX" +@@ -2077,6 +2033,7 @@ + # if defined(NETBSD) || defined(OPENBSD) + # ifdef NETBSD + # define OS_TYPE "NETBSD" ++# define HEURISTIC2 + # endif + # ifdef OPENBSD + # define OS_TYPE "OPENBSD" +@@ -2084,7 +2041,6 @@ + # ifdef __ELF__ + # define DYNAMIC_LOADING + # endif +-# define HEURISTIC2 + extern char etext[]; + # define SEARCH_FOR_DATA_START + # endif +@@ -2143,7 +2099,7 @@ + # endif + # define DATAEND /* not needed */ + # endif +-# endif ++# endif /* X86_64 */ + + #if defined(LINUX_STACKBOTTOM) && defined(NO_PROC_STAT) \ + && !defined(USE_LIBC_PRIVATES) +@@ -2204,7 +2160,8 @@ + # define DATAEND (end) + # endif + +-# if defined(SVR4) && !defined(GETPAGESIZE) ++/* getpagesize() is considered obsolete on OpenBSD, use sysconf(_SC_PAGESIZE) */ ++# if (defined(SVR4) || defined(OPENBSD)) && !defined(GETPAGESIZE) + # include + # define GETPAGESIZE() sysconf(_SC_PAGESIZE) + # endif diff --git a/lang/racket/patches/patch-src_racket_sconfig_h b/lang/racket/patches/patch-src_racket_sconfig_h index 0b96e2d646b..c4699de3fe2 100644 --- a/lang/racket/patches/patch-src_racket_sconfig_h +++ b/lang/racket/patches/patch-src_racket_sconfig_h @@ -1,7 +1,7 @@ -$OpenBSD: patch-src_racket_sconfig_h,v 1.5 2014/06/22 10:59:37 juanfra Exp $ +$OpenBSD: patch-src_racket_sconfig_h,v 1.6 2014/07/15 00:13:16 juanfra Exp $ --- src/racket/sconfig.h.orig Thu Apr 17 21:58:42 2014 -+++ src/racket/sconfig.h Sat Jun 14 00:26:23 2014 -@@ -313,12 +313,22 @@ ++++ src/racket/sconfig.h Mon Jul 14 22:39:35 2014 +@@ -313,12 +313,24 @@ /************** x86/OpenBSD with gcc ****************/ /* Thanks to Bengt Kleberg */ @@ -19,6 +19,8 @@ $OpenBSD: patch-src_racket_sconfig_h,v 1.5 2014/06/22 10:59:37 juanfra Exp $ +# else +# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips64-openbsd" +# endif ++# elif defined(__powerpc__) ++# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-openbsd" +# elif defined(__hppa__) +# define SCHEME_PLATFORM_LIBRARY_SUBPATH "hppa-openbsd" +# else @@ -26,15 +28,43 @@ $OpenBSD: patch-src_racket_sconfig_h,v 1.5 2014/06/22 10:59:37 juanfra Exp $ # endif # include "uconfig.h" -@@ -356,8 +366,6 @@ - # define MZ_USE_JIT_I386 - # define MZ_JIT_USE_MPROTECT - # define MZ_TRY_EXTFLONUMS +@@ -331,9 +343,7 @@ + # undef UNIX_STACK_MAXIMUM + # define UNIX_STACK_MAXIMUM 4194304 + +-#ifndef __ELF__ + # define UNDERSCORE_DYNLOAD_SYMBOL_PREFIX +-#endif + + # define USE_DLOPEN_GLOBAL_BY_DEFAULT + +@@ -348,17 +358,15 @@ + # define USE_TM_GMTOFF_FIELD + # define USE_TM_ZONE_FIELD + +-#if defined(__x86_64__) +-# define MZ_USE_JIT_X86_64 +-# define MZ_JIT_USE_MPROTECT +-# define MZ_TRY_EXTFLONUMS +-#elif defined(__i386__) +-# define MZ_USE_JIT_I386 +-# define MZ_JIT_USE_MPROTECT +-# define MZ_TRY_EXTFLONUMS -#else -# error Unported platform. - #endif +-#endif ++# if defined(__x86_64__) ++# define MZ_USE_JIT_X86_64 ++# define MZ_JIT_USE_MPROTECT ++# define MZ_TRY_EXTFLONUMS ++# elif defined(__i386__) ++# define MZ_USE_JIT_I386 ++# define MZ_JIT_USE_MPROTECT ++# define MZ_TRY_EXTFLONUMS ++# endif # define FLAGS_ALREADY_SET + @@ -428,7 +436,7 @@ /************** SGI/IRIX with SGI cc ****************/ diff --git a/lang/racket/patches/patch-src_racket_src_gmp_gmplonglong_h b/lang/racket/patches/patch-src_racket_src_gmp_gmplonglong_h index 1f31be0e9f1..d39b3f54f35 100644 --- a/lang/racket/patches/patch-src_racket_src_gmp_gmplonglong_h +++ b/lang/racket/patches/patch-src_racket_src_gmp_gmplonglong_h @@ -1,19 +1,21 @@ -$OpenBSD: patch-src_racket_src_gmp_gmplonglong_h,v 1.1 2014/01/16 01:49:32 juanfra Exp $ +$OpenBSD: patch-src_racket_src_gmp_gmplonglong_h,v 1.2 2014/07/15 00:13:16 juanfra Exp $ -Racket uses an old version of gmp. It's so old even doesn't include -assembler code for amd64, where racket uses C. - -This patch changes every platform to use the C code because these days -racket is mostly tested on amd64 on other OS and this can help us in +This patch changes some platforms to use the C code because these days +racket is mostly tested on amd64/i386 on other OS and this can help us in the effort to port racket to other platforms. ---- src/racket/src/gmp/gmplonglong.h.orig Fri Jan 10 04:35:39 2014 -+++ src/racket/src/gmp/gmplonglong.h Fri Jan 10 04:36:33 2014 -@@ -96,6 +96,7 @@ MA 02111-1307, USA. */ +--- src/racket/src/gmp/gmplonglong.h.orig Thu Apr 17 21:58:42 2014 ++++ src/racket/src/gmp/gmplonglong.h Tue Jul 15 01:31:10 2014 +@@ -96,6 +96,12 @@ MA 02111-1307, USA. */ If any of these macros are left undefined for a particular CPU, C macros are used. */ -+#define MZ_GMP_NO_ASM 1 ++/* These days only i386 and amd64 are tested */ ++#if !defined(__i386__) || !defined(__x86_64__) ++# define MZ_GMP_NO_ASM 1 ++# define NO_ASM 1 ++#endif ++ #ifndef MZ_GMP_NO_ASM /* The CPUs come in alphabetical order below.