Update from maintainer Don Stewart (dons at cse.unsw.edu.au):

- Updated to ghc-6.0
- Halved (roughly) the build time; by using the 6.0 in-tree build
we only have to build the 6.0 libraries once. Also we only build the
necessary parts of the bootstrap compiler.
- The ugly lndir/stage1 build is also gone.
- The full ghc regression suite is now part of the port!
"make regress" will run around 3000 regress tests.
- The regression tests revealed that the C foreign function
- The Makefile is simplified, using more default targets
- The documentation is updated to 6.0
- I put some of the 5.04.3 patches into ghc cvs, so they are
now obsolete.

Unfortunately, this lets mozilla back in the race for longest
package building time...
This commit is contained in:
avsm 2003-07-20 21:57:10 +00:00
parent 734b31f5a3
commit c860d8934c
19 changed files with 1364 additions and 1154 deletions

View File

@ -1,25 +1,26 @@
# Based on Simon Marlow's port script for FreeBSD:
# $FreeBSD: ports/lang/ghc/Makefile,v 1.13 2002/08/22 12:53:38 obraun Exp $
#
# Last update : ported to ELF : Wed Apr 23 12:38:42 EST 2003
# Last update : updated to 6.0: Fri Jul 4 10:16:53 EST 2003
# ported to ELF : Wed Apr 23 12:38:42 EST 2003
#
# The build process:
# 1) build a bootstrap ghc4 from C source
# 3) use this to make a bootstrap ghc5
# 4) and then, finally, a full ghc5
# 2) use this to do an in-tree ghc6 bootstrap and build
#
ONLY_FOR_ARCHS= i386
# sparc: hacking needed
# Requires someone to handle the asm format in ghc/driver/mangler/*.lprl
# sparc : needs to handle the asm format in ghc/driver/mangler/*.lprl
#
# m68k, alpha and powerpc have the problem that we don't
# have .hc src to bootstrap from. We would need an "unregisterised"
# build... more work
# alpha and powerpc have the problem that we don't have .hc src
# to bootstrap from. We would need an "unregisterised" build...
# More work. m68k needs to have its asm format set in the
# mangler, before we can do any kind of build at all.
COMMENT= "compiler for the functional language Haskell"
COMMENT-doc= "documentation for the functional language Haskell"
FULLVER= 5.04.3
FULLVER= 6.0
BOOTVER= 4.08.2
DISTNAME= ghc-${FULLVER}
@ -37,19 +38,19 @@ PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
NO_REGRESS=Yes
HASKELL= http://www.haskell.org/
MASTER_SITES= ${HASKELL}ghc/dist/${FULLVER}/
MASTER_SITES0= ${HASKELL}ghc/dist/${BOOTVER}/
MASTER_SITES1= ${HASKELL}ghc/docs/${FULLVER}/
MASTER_SITES2= ftp://ftp.cse.unsw.edu.au/pub/users/dons/ghc/${FULLVER}/
DIST_SUBDIR= ghc-${FULLVER}
DOC_FILES= users_guide hslibs building libraries
DOC_DIR= ${PREFIX}/share/doc/ghc
DISTFILES= ghc-${FULLVER}-src.tar.bz2 ghc-${BOOTVER}-src.tar.bz2:0 \
${DOC_FILES:C/(.+)/\1.html.tar.gz:1/g}
${DOC_FILES:C/(.+)/\1.html.tar.gz:1/g} \
ghc-regress-${FULLVER}.0.tar.bz2:2
.if ${MACHINE_ARCH} == "i386"
HCSRC=ghc-${BOOTVER}-x86-hc.tar.bz2:0
@ -59,35 +60,22 @@ DISTFILES= ghc-${FULLVER}-src.tar.bz2 ghc-${BOOTVER}-src.tar.bz2:0 \
DISTFILES+= ${HCSRC}
REGRESS_DEPENDS=::lang/python/2.2
REGRESS_RESULT=${WRKSRC}/${ARCH}.test.result
REGRESS_FLAGS=TEST_HC="${WRKSRC}/ghc/compiler/stage2/ghc-inplace"
REGRESS_FLAGS+=EXTRA_RUNTEST_OPTS="--output-summary=${REGRESS_RESULT}"
# where the first compilers will be built
STAGE0= ${WRKDIR}/ghc-${BOOTVER}
STAGE1= ${WRKDIR}/ghc-${FULLVER}-boot
YACC?= /usr/bin/yacc
USE_GMAKE= Yes
CONFIGURE_STYLE=gnu dest
CONFIGURE_ARGS= --with-ghc=${STAGE1}/ghc/compiler/ghc-inplace
CONFIGURE_ARGS=--with-ghc=${STAGE0}/ghc/driver/ghc-inplace
# Build the GHC-4 bootstrap compiler from C source
pre-configure:
# Build the GHC4 bootstrap compiler from C source
@echo "===> Building GHC4 bootstrap compiler"
@(cd ${STAGE0} ; distrib/hc-build --prefix=${STAGE0})
# Now, we bootstrap GHC5 (as fast a build as possible)
@echo "===> Building GHC5 bootstrap compiler"
@(mkdir ${STAGE1} ; cd ${STAGE1} ; lndir ${WRKSRC} ;\
./configure --prefix=${STAGE1} \
--with-ghc=${STAGE0}/ghc/driver/ghc-inplace ;\
echo "GhcWithInterpreter=NO" >mk/build.mk ;\
echo "GhcLibWays=" >>mk/build.mk ;\
echo "GhcCompilerWays=" >>mk/build.mk ;\
echo "SplitObjs=NO" >>mk/build.mk ;\
echo "FptoolsHcOpts=-H32m" >>mk/build.mk ;\
${GMAKE})
# And now, the whole thing
@echo "===> Building GHC5 full version"
@(cd ${WRKSRC}; \
echo "GhcWithInterpreter=NO" >mk/build.mk ;\
echo "FptoolsHcOpts=-H32m" >>mk/build.mk)
# note: ghci not in PLIST since it doesnt work yet

View File

@ -1,21 +1,24 @@
MD5 (ghc-5.04.3/building.html.tar.gz) = a752b0bed3562c6c87a2ea41b4bb5f54
MD5 (ghc-5.04.3/ghc-4.08.2-src.tar.bz2) = c5199db1c12cc633970dfe920f50244d
MD5 (ghc-5.04.3/ghc-4.08.2-x86-hc.tar.bz2) = d25dd1062b09af699f8361fb35394587
MD5 (ghc-5.04.3/ghc-5.04.3-src.tar.bz2) = 2d4d60f11e8f5909c4f28a02b2c69917
MD5 (ghc-5.04.3/hslibs.html.tar.gz) = 63a18e3b034c4551d3e62b5f19487310
MD5 (ghc-5.04.3/libraries.html.tar.gz) = 3d2a67b26c243432bbfad1730c77ebd1
MD5 (ghc-5.04.3/users_guide.html.tar.gz) = e7300663c1d51a5f83aa401b9df2c2a3
RMD160 (ghc-5.04.3/building.html.tar.gz) = 02b09d05e33589cad9eb08fcb557e9060d0713c2
RMD160 (ghc-5.04.3/ghc-4.08.2-src.tar.bz2) = 3d6e946d8f8cd29ff7e7361fe39d21563c147246
RMD160 (ghc-5.04.3/ghc-4.08.2-x86-hc.tar.bz2) = 1f6b07d886cbbdbb55ecf49eb089f98bef4d278c
RMD160 (ghc-5.04.3/ghc-5.04.3-src.tar.bz2) = b2fd7a1b47ac645c38cb9b726ca1f12d5e2f5cdf
RMD160 (ghc-5.04.3/hslibs.html.tar.gz) = a7cb1560b6d962ed1f2e9410bbc61e4079950a63
RMD160 (ghc-5.04.3/libraries.html.tar.gz) = 03de003bf1543ef57965bfee52644d84b4253f31
RMD160 (ghc-5.04.3/users_guide.html.tar.gz) = 5ab7507498e8af2985016515c44f650ee5b7f780
SHA1 (ghc-5.04.3/building.html.tar.gz) = 8d4d4c988739176dcb14c86bb5da6bfa1e99c023
SHA1 (ghc-5.04.3/ghc-4.08.2-src.tar.bz2) = 6306a50ca98c99dc592744e9d087d20c375fea51
SHA1 (ghc-5.04.3/ghc-4.08.2-x86-hc.tar.bz2) = 69bec01b08dbf01276541ee42617de6f70bdd626
SHA1 (ghc-5.04.3/ghc-5.04.3-src.tar.bz2) = 9b0f17e871557a76140fbf738138e1cf5d356e9d
SHA1 (ghc-5.04.3/hslibs.html.tar.gz) = 642b91c0ece706cca2a3e59e12881e6ad4e9c723
SHA1 (ghc-5.04.3/libraries.html.tar.gz) = 945a222ce279571c23cc31dea42686a1e7892de7
SHA1 (ghc-5.04.3/users_guide.html.tar.gz) = bc0debd635bfe0a8167db0ee1027dcb8dcf13c91
MD5 (ghc-6.0/building.html.tar.gz) = bc51d3e5bf568102620ff222e9a423d0
MD5 (ghc-6.0/ghc-4.08.2-src.tar.bz2) = c5199db1c12cc633970dfe920f50244d
MD5 (ghc-6.0/ghc-4.08.2-x86-hc.tar.bz2) = d25dd1062b09af699f8361fb35394587
MD5 (ghc-6.0/ghc-6.0-src.tar.bz2) = d0eb15ac5a37a2a695bb8c2c638f96b7
MD5 (ghc-6.0/ghc-regress-6.0.0.tar.bz2) = 6b93502584eac865ec4f46ebbecdd254
MD5 (ghc-6.0/hslibs.html.tar.gz) = 449d9cb6790ae6b1fbc3d73d4805f746
MD5 (ghc-6.0/libraries.html.tar.gz) = 11533511f48164eb194b6219b4781110
MD5 (ghc-6.0/users_guide.html.tar.gz) = a22d26752dae8b488092e365bcf42ccb
RMD160 (ghc-6.0/building.html.tar.gz) = d77d20f7c7a4e43e03c24c74cb74cf397649734a
RMD160 (ghc-6.0/ghc-4.08.2-src.tar.bz2) = 3d6e946d8f8cd29ff7e7361fe39d21563c147246
RMD160 (ghc-6.0/ghc-4.08.2-x86-hc.tar.bz2) = 1f6b07d886cbbdbb55ecf49eb089f98bef4d278c
RMD160 (ghc-6.0/ghc-6.0-src.tar.bz2) = 43ef0c979d72238e7351ee923b9af567079e04b7
RMD160 (ghc-6.0/ghc-regress-6.0.0.tar.bz2) = a38895c19bd528e04830779e296a133e205377f5
RMD160 (ghc-6.0/hslibs.html.tar.gz) = 2c835575f9aceb553835827445ac2f652736d05b
RMD160 (ghc-6.0/libraries.html.tar.gz) = 02eb76066a7f24e894dccf4c39b0ab9633f03b2d
RMD160 (ghc-6.0/users_guide.html.tar.gz) = da00d046a3346fb18f47c878f8f2e8367457abb2
SHA1 (ghc-6.0/building.html.tar.gz) = b7432d60e419eaf3b325249e82209048e26377c3
SHA1 (ghc-6.0/ghc-4.08.2-src.tar.bz2) = 6306a50ca98c99dc592744e9d087d20c375fea51
SHA1 (ghc-6.0/ghc-4.08.2-x86-hc.tar.bz2) = 69bec01b08dbf01276541ee42617de6f70bdd626
SHA1 (ghc-6.0/ghc-6.0-src.tar.bz2) = b8e3c07ac38eaa4298776cdd63a6dd0c95f6bb6f
SHA1 (ghc-6.0/ghc-regress-6.0.0.tar.bz2) = 2ea66e2d01d0ffd9a676701723478f2b1bb6e227
SHA1 (ghc-6.0/hslibs.html.tar.gz) = 4fbd935fe8a1a117b92988ff5645595b7973baf7
SHA1 (ghc-6.0/libraries.html.tar.gz) = f3e10f3049acb0f0e2cba5ec6f223335d4938625
SHA1 (ghc-6.0/users_guide.html.tar.gz) = 10b007987c60cb4952770a1f1d424afb728d0e31

View File

@ -0,0 +1,21 @@
Add a "check" target to make regress work nicely.
--- Makefile.orig Thu May 29 23:55:03 2003
+++ Makefile Fri Jul 11 00:42:00 2003
@@ -421,3 +421,16 @@
# -----------------------------------------------------------------------------
+check::
+ ( cd testsuite/tests/ghc-regress ; $(MAKE) $(MFLAGS) )
+ @(if cmp -s expected.result i386.test.result ; then \
+ echo "All is good!" ; \
+ else \
+ echo ;\
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@";\
+ echo "Unexpected regress results!" ;\
+ echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@";\
+ echo ;\
+ echo "here is a diff:" ;\
+ diff -u expected.result i386.test.result ;\
+ fi ; exit 0 )

View File

@ -1,3 +1,6 @@
Self explanatory, including the annoying falsely detected
leading_underscore issue
--- ../ghc-4.08.2/configure.orig Wed Jan 31 02:04:23 2001
+++ ../ghc-4.08.2/configure Thu Apr 24 20:25:39 2003
@@ -938,6 +938,15 @@

View File

@ -1,4 +1,3 @@
Fixes known bug of target arch incorrectly passed to gmp.
This has been backported from 5.0x series GHC

View File

@ -0,0 +1,14 @@
Only build the pieces of the library we will need for the
bootstrap
--- ../ghc-4.08.2/hslibs/Makefile.orig Fri Jul 4 13:39:45 2003
+++ ../ghc-4.08.2/hslibs/Makefile Fri Jul 4 13:41:38 2003
@@ -11,7 +11,7 @@
else
# order is important here, there are dependencies between the libraries...
ifneq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
-SUBDIRS = lang concurrent posix util data text net tools
+SUBDIRS = lang concurrent posix util data text
else
SUBDIRS = lang concurrent util data text net tools
endif

View File

@ -1,18 +0,0 @@
My fault... -- fixed in HEAD
$OpenBSD: patch-acconfig_h,v 1.1.1.1 2003/05/29 16:38:31 avsm Exp $
--- acconfig.h.orig Fri Dec 6 07:47:04 2002
+++ acconfig.h Fri Dec 6 07:47:37 2002
@@ -88,10 +88,10 @@
#undef HAVE_RTLDLOCAL
/* Define if RTLD_GLOBAL is available */
-#undef RTLD_GLOBAL
+#undef HAVE_RTLDGLOBAL
/* Define if RTLD_NOW is available */
-#undef RTLD_NOW
+#undef HAVE_RTLDNOW
/* Define if C compiler supports long long types */
#undef HAVE_LONG_LONG

View File

@ -1,13 +1,15 @@
--- configure.orig Tue Mar 11 06:40:06 2003
+++ configure Thu May 1 09:59:57 2003
@@ -969,6 +969,15 @@ sparc-sun-solaris2*)
Falsely detects leading underscore. Plan for sparc.
--- configure.orig Fri Jul 4 10:43:52 2003
+++ configure Fri Jul 4 10:46:27 2003
@@ -1721,6 +1721,15 @@
HostVendor_CPP='sun'
HostOS_CPP='solaris2'
;;
+sparc-*-openbsd*) #hack
+ HostPlatform=sparc-sun-openbsd #hack
+ TargetPlatform=sparc-sun-openbsd #hack
+ BuildPlatform=sparc-sun-openbsd #hack
+ HostPlatform=sparc-sun-openbsd #hack
+ TargetPlatform=sparc-sun-openbsd #hack
+ BuildPlatform=sparc-sun-openbsd #hack
+ HostPlatform_CPP='sparc_sun_openbsd'
+ HostArch_CPP='sparc'
+ HostVendor_CPP='sun'
@ -16,99 +18,9 @@
*)
echo "Unrecognised platform: $HostPlatform"
exit 1
@@ -2051,7 +2060,7 @@ else
echo "$ac_t""no" 1>&6
fi
- $WhatCmd $YACC > conftest.out
+ $WhatCmd `which $YACC` > conftest.out
if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
if test -f /usr/lang/yacc; then
@@ -11719,8 +11728,6 @@ cross_compiling=$ac_cv_prog_cc_cross
-dl HaskellSupport.framework
-
if test $HaveFrameworkHaskellSupport = YES; then
HaveLibDL = NO
HaveRtldNext=NO
@@ -11901,6 +11908,71 @@ else
fi
rm -f conftest*
+
+echo $ac_n "checking for RTLD_GLOBAL from dlfcn.h""... $ac_c" 1>&6
+echo "configure:11901: checking for RTLD_GLOBAL from dlfcn.h" >&5
+cat > conftest.$ac_ext <<EOF
+#line 11903 "configure"
+#include "confdefs.h"
+
+ #include <dlfcn.h>
+ #ifdef RTLD_GLOBAL
+ yes
+ #endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ rm -rf conftest*
+
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_RTLDGLOBAL 1
+EOF
+
+ HaveRtldGlobal=YES
+
+else
+ rm -rf conftest*
+
+ echo "$ac_t""no" 1>&6
+ HaveRtldGlobal=NO
+
+fi
+rm -f conftest*
+
+echo $ac_n "checking for RTLD_NOW from dlfcn.h""... $ac_c" 1>&6
+echo "configure:11936: checking for RTLD_NOW from dlfcn.h" >&5
+cat > conftest.$ac_ext <<EOF
+#line 11938 "configure"
+#include "confdefs.h"
+
+ #include <dlfcn.h>
+ #ifdef RTLD_NOW
+ yes
+ #endif
+
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ rm -rf conftest*
+
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_RTLDNOW 1
+EOF
+
+ HaveRtldNow=YES
+
+else
+ rm -rf conftest*
+
+ echo "$ac_t""no" 1>&6
+ HaveRtldNow=NO
+
+fi
+rm -f conftest*
+
fi
@@ -12578,6 +12650,7 @@ if eval "test \"`echo '$''{'fptools_cv_l
@@ -24084,6 +24093,7 @@
else
case $HostPlatform in
+*openbsd) fptools_cv_lead_uscore='no';;
alpha-dec-osf*) fptools_cv_lead_uscore='no';;

View File

@ -0,0 +1,26 @@
Note: -H sets the initial size of the garbage collected heap used
by the compiler to compiled a Haskell file. There appears to be
some kind of garbage collection bug in the stage1 compiler build
by ghc4.08.2. It manifests itself as non-deterministic seg
faults, particularly in low-memory conditions. GHC will die
inside scavenge_mutable_list() or evacuate(). This only happens
in the stage1 compiler though, and then, only rarely.
It doesn't appear to affect the final, stage-2, compiler.
I haven't been able to work this one out. But, upping the size
of the inital heap prevents garbage collects occuring as often,
reducing the probability of this bug stopping our build. -H80m
was determined experimentally.
--- ghc/compiler/Makefile.orig Sat Jul 12 10:00:33 2003
+++ ghc/compiler/Makefile Sat Jul 12 10:00:39 2003
@@ -338,7 +338,7 @@
SRC_CC_OPTS += -Iparser -I. -O
SRC_HC_OPTS += -recomp $(GhcHcOpts) $(GhcStage$(stage)HcOpts)
-SRC_HC_OPTS += -H16M
+SRC_HC_OPTS += -H80M
ifeq "$(BootingFromHc)" "YES"
SRC_CC_OPTS += -D__GLASGOW_HASKELL__=$(ProjectVersionInt)

View File

@ -1,18 +1,17 @@
ELF x86 is here
ELF
$OpenBSD: patch-ghc_driver_mangler_ghc-asm_lprl,v 1.1.1.1 2003/05/29 16:38:31 avsm Exp $
--- ghc/driver/mangler/ghc-asm.lprl.orig Wed Apr 23 14:52:45 2003
+++ ghc/driver/mangler/ghc-asm.lprl Wed Apr 23 14:53:18 2003
@@ -144,7 +144,7 @@ sub init_TARGET_STUFF {
--- ghc/driver/mangler/ghc-asm.lprl.orig Fri Jul 4 10:55:44 2003
+++ ghc/driver/mangler/ghc-asm.lprl Fri Jul 4 10:55:58 2003
@@ -142,7 +142,7 @@
$T_create_word = "\t.word";
#--------------------------------------------------------#
- } elsif ( $TargetPlatform =~ /^i386-.*-(linuxaout|freebsd2|openbsd|nextstep3|cygwin32|mingw32)$/ ) {
+ } elsif ( $TargetPlatform =~ /^i386-.*-(linuxaout|freebsd2|openbsdaout|nextstep3|cygwin32|mingw32)$/ ) {
+ } elsif ( $TargetPlatform =~ /^i386-.*-(linuxaout|freebsd2|nextstep3|cygwin32|mingw32)$/ ) {
# NeXT added but not tested. CaS
$T_STABBY = 1; # 1 iff .stab things (usually if a.out format)
@@ -176,12 +176,12 @@ sub init_TARGET_STUFF {
@@ -172,7 +172,7 @@
$T_create_word = "\t.word";
#--------------------------------------------------------#
@ -21,9 +20,3 @@ $OpenBSD: patch-ghc_driver_mangler_ghc-asm_lprl,v 1.1.1.1 2003/05/29 16:38:31 av
$T_STABBY = 0; # 1 iff .stab things (usually if a.out format)
$T_US = ''; # _ if symbols have an underscore on the front
$T_PRE_APP = # regexp that says what comes before APP/NO_APP
- ($TargetPlatform =~ /-(linux|freebsd|netbsd)$/) ? '#' : '/' ;
+ ($TargetPlatform =~ /-(linux|freebsd|netbsd|openbsd)$/) ? '#' : '/' ;
$T_CONST_LBL = '^\.LC(\d+):$'; # regexp for what such a lbl looks like
$T_POST_LBL = ':';
$T_X86_PRE_LLBL_PAT = '\.L';

View File

@ -0,0 +1,145 @@
Ok. This is the magical "adjustor thunk". The entry point into
Haskell land from C land. Problem is that it (1) uses dynamically
generated code stored on the heap, as well as (2) a nasty little hack
that invovles exec'ing some code in .data.
Solved (1) by using a StablePtr, avoiding malloc memory
altogether for the adjustor thunk itself.
Solved (2) by writing an assembly function to do the code they
were too lazy to put into a .s file in the first place.
--- ghc/rts/Adjustor.c.orig Wed Mar 26 04:58:47 2003
+++ ghc/rts/Adjustor.c Thu Jul 10 21:25:30 2003
@@ -65,10 +65,10 @@
For this to work we make the assumption that bytes in .data
are considered executable.
*/
-static unsigned char __obscure_ccall_ret_code [] =
- { 0x83, 0xc4, 0x04 /* addl $0x4, %esp */
- , 0xc3 /* ret */
- };
+
+/* from obscure_ccall.s */
+extern void __obscure_ccall_ret_code(void);
+
#endif
#if defined(alpha_TARGET_ARCH)
@@ -77,13 +77,14 @@
#endif
#if defined(ia64_TARGET_ARCH)
-#include "Storage.h"
-
/* Layout of a function descriptor */
typedef struct _IA64FunDesc {
StgWord64 ip;
StgWord64 gp;
} IA64FunDesc;
+#endif
+
+#include "Storage.h"
static void *
stgAllocStable(size_t size_in_bytes, StgStablePtr *stable)
@@ -105,7 +106,6 @@
/* and return a ptr to the goods inside the array */
return(BYTE_ARR_CTS(arr));
}
-#endif
void*
createAdjustor(int cconv, StgStablePtr hptr, StgFunPtr wptr)
@@ -128,20 +128,22 @@
<c>: ff e0 jmp %eax # and jump to it.
# the callee cleans up the stack
*/
- if ((adjustor = stgMallocBytes(14, "createAdjustor")) != NULL) {
- unsigned char *const adj_code = (unsigned char *)adjustor;
- adj_code[0x00] = (unsigned char)0x58; /* popl %eax */
-
- adj_code[0x01] = (unsigned char)0x68; /* pushl hptr (which is a dword immediate ) */
- *((StgStablePtr*)(adj_code + 0x02)) = (StgStablePtr)hptr;
-
- adj_code[0x06] = (unsigned char)0x50; /* pushl %eax */
+ {
+ StgStablePtr stable;
+ unsigned char *const adj_code;
- adj_code[0x07] = (unsigned char)0xb8; /* movl $wptr, %eax */
- *((StgFunPtr*)(adj_code + 0x08)) = (StgFunPtr)wptr;
+ adjustor = stgAllocStable(18,&stable);
+ adj_code = (unsigned char *)adjustor;
- adj_code[0x0c] = (unsigned char)0xff; /* jmp %eax */
- adj_code[0x0d] = (unsigned char)0xe0;
+ adj_code[0] = (unsigned char)0x58; /* popl %eax */
+ adj_code[1] = (unsigned char)0x68; /* pushl hptr (which is a dword immediate ) */
+ *((StgStablePtr*)(adj_code+2)) = (StgStablePtr)hptr;
+ adj_code[6] = (unsigned char)0x50; /* pushl %eax */
+ adj_code[7] = (unsigned char)0xb8; /* movl $wptr, %eax */
+ *((StgFunPtr*)(adj_code+8)) = (StgFunPtr)wptr;
+ adj_code[12] = (unsigned char)0xff; /* jmp %eax */
+ adj_code[13] = (unsigned char)0xe0;
+ *((StgStablePtr*)(adj_code+14)) = (StgStablePtr)stable;
}
#endif
break;
@@ -172,20 +174,22 @@
That's (thankfully) the case here with the restricted set of
return types that we support.
*/
- if ((adjustor = stgMallocBytes(17, "createAdjustor")) != NULL) {
- unsigned char *const adj_code = (unsigned char *)adjustor;
-
- adj_code[0x00] = (unsigned char)0x68; /* pushl hptr (which is a dword immediate ) */
- *((StgStablePtr*)(adj_code+0x01)) = (StgStablePtr)hptr;
-
- adj_code[0x05] = (unsigned char)0xb8; /* movl $wptr, %eax */
- *((StgFunPtr*)(adj_code + 0x06)) = (StgFunPtr)wptr;
-
- adj_code[0x0a] = (unsigned char)0x68; /* pushl __obscure_ccall_ret_code */
- *((StgFunPtr*)(adj_code + 0x0b)) = (StgFunPtr)__obscure_ccall_ret_code;
-
- adj_code[0x0f] = (unsigned char)0xff; /* jmp *%eax */
- adj_code[0x10] = (unsigned char)0xe0;
+ {
+ StgStablePtr stable;
+ unsigned char *const adj_code;
+
+ adjustor = stgAllocStable(21, &stable);
+ adj_code = (unsigned char *)adjustor;
+
+ adj_code[0] = (unsigned char)0x68; /* pushl hptr (which is a dword immediate ) */
+ *((StgStablePtr*)(adj_code+1)) = (StgStablePtr)hptr;
+ adj_code[5] = (unsigned char)0xb8; /* movl $wptr, %eax */
+ *((StgFunPtr*)(adj_code+6)) = (StgFunPtr)wptr;
+ adj_code[10] = (unsigned char)0x68; /* pushl __obscure_ccall_ret_code */
+ *((StgFunPtr*)(adj_code+11)) = (StgFunPtr)__obscure_ccall_ret_code;
+ adj_code[15] = (unsigned char)0xff; /* jmp *%eax */
+ adj_code[16] = (unsigned char)0xe0;
+ *((StgStablePtr*)(adj_code+17)) = (StgStablePtr)stable;
}
#elif defined(sparc_TARGET_ARCH)
/* Magic constant computed by inspecting the code length of the following
@@ -476,12 +480,16 @@
return;
}
- /* Free the stable pointer first..*/
+ /* Free the internal stable pointer first..*/
if (*(unsigned char*)ptr == 0x68) { /* Aha, a ccall adjustor! */
- freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 0x01)));
+ freeStablePtr( *((StgStablePtr*)((unsigned char*)ptr + 1)) );
+ freeStablePtr( *((StgStablePtr*)((unsigned char*)ptr + 17)) );
} else {
- freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 0x02)));
+ freeStablePtr( *((StgStablePtr*)((unsigned char*)ptr + 2)) );
+ freeStablePtr( *((StgStablePtr*)((unsigned char*)ptr + 14)) );
}
+ return;
+
#elif defined(sparc_TARGET_ARCH)
if ( *(unsigned long*)ptr != 0x9C23A008UL ) {
fprintf(stderr, "freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);

View File

@ -1,19 +1,21 @@
start to get ghci working
sprintf.
preliminary attempts to get object file loading working, so that
ghci will work
--- ghc/rts/Linker.c.orig Mon Oct 14 03:50:54 2002
+++ ghc/rts/Linker.c Thu May 1 09:59:09 2003
@@ -56,7 +56,7 @@
--- ghc/rts/Linker.c.orig Wed Apr 30 07:37:31 2003
+++ ghc/rts/Linker.c Sun Jul 6 21:29:55 2003
@@ -59,7 +59,7 @@
#include <sys/mman.h>
#endif
-#if defined(linux_TARGET_OS) || defined(solaris2_TARGET_OS) || defined(freebsd_TARGET_OS)
+#if defined(linux_TARGET_OS) || defined(solaris2_TARGET_OS) || defined(freebsd_TARGET_OS) || defined(openbsd_TARGET_OS)
-#if defined(linux_TARGET_OS) || defined(solaris2_TARGET_OS) || defined(freebsd_TARGET_OS) || defined(netbsd_TARGET_OS)
+#if defined(linux_TARGET_OS) || defined(solaris2_TARGET_OS) || defined(freebsd_TARGET_OS) || defined(netbsd_TARGET_OS) || defined(openbsd_TARGET_OS)
# define OBJFORMAT_ELF
#elif defined(cygwin32_TARGET_OS) || defined (mingw32_TARGET_OS)
# define OBJFORMAT_PEi386
@@ -642,7 +642,11 @@ addDLL( char *dll_name )
void *hdl;
char *errmsg;
@@ -724,7 +724,11 @@
initLinker();
+#if !defined(openbsd_TARGET_OS)
hdl= dlopen(dll_name, RTLD_NOW | RTLD_GLOBAL);
@ -23,7 +25,20 @@ start to get ghci working
if (hdl == NULL) {
/* dlopen failed; return a ptr to the error msg. */
errmsg = dlerror();
@@ -1893,7 +1897,15 @@ ocResolve_PEi386 ( ObjectCode* oc )
@@ -763,10 +767,10 @@
extension. */
buf = stgMallocBytes(strlen(dll_name) + 10, "addDLL");
- sprintf(buf, "%s.DLL", dll_name);
+ snprintf(buf, strlen(dll_name) + 10, "%s.DLL", dll_name);
instance = LoadLibrary(buf);
if (instance == NULL) {
- sprintf(buf, "%s.DRV", dll_name); // KAA: allow loading of drivers (like winspool.drv)
+ snprintf(buf, strlen(dll_name) + 10, "%s.DRV", dll_name); // KAA: allow loading of drivers (like winspool.drv)
instance = LoadLibrary(buf);
if (instance == NULL) {
stgFree(buf);
@@ -2001,7 +2005,15 @@
# define ELF_NEED_PLT /* needs Procedure Linkage Tables */
#endif

View File

@ -0,0 +1,16 @@
Tell make to also compile the .s file
This code replaces the silly [] of code used in Adjustor.c
--- ghc/rts/Makefile.orig Thu Jul 10 14:46:51 2003
+++ ghc/rts/Makefile Thu Jul 10 14:47:42 2003
@@ -53,6 +53,10 @@
HC_SRCS = $(filter %.hc, $(SRCS))
HC_OBJS = $(patsubst %.hc,%.$(way_)o, $(HC_SRCS))
+C_OBJS += obscure_ccall.o
+obscure_ccall.o :
+ $(GHC) -c obscure_ccall.s
+
CLEAN_FILES += $(HC_OBJS)
# Override the default $(LIBOBJS) (defaults to $(HS_OBJS))

View File

@ -0,0 +1,12 @@
The assembly code to go in .text, replacing the opcodes for this
code that were stored in an array in .data land, by a C hacker.
--- /dev/null Thu Jul 10 14:39:57 2003
+++ ghc/rts/obscure_ccall.s Thu Jul 10 14:48:47 2003
@@ -0,0 +1,6 @@
+ .text
+ .globl __obscure_ccall_ret_code
+
+__obscure_ccall_ret_code:
+ addl $4, %esp
+ ret

View File

@ -1,25 +0,0 @@
More tedium -- commited to HEAD
$OpenBSD: patch-hslibs_posix_DLPrim_hsc,v 1.1.1.1 2003/05/29 16:38:31 avsm Exp $
--- hslibs/posix/DLPrim.hsc.orig Fri Dec 6 14:43:33 2002
+++ hslibs/posix/DLPrim.hsc Fri Dec 6 14:44:19 2002
@@ -90,8 +90,19 @@ packModuleFlags flags = foldl (\ s f ->
packOneModuleFlag :: ModuleFlags -> CInt
packOneModuleFlag RTLD_LAZY = #const RTLD_LAZY
+
+#ifdef HAVE_RTLDNOW
packOneModuleFlag RTLD_NOW = #const RTLD_NOW
+#else /* HAVE_RTLDNOW */
+packOneModuleFlag RTLD_NOW = error "RTLD_NOW not available"
+#endif /* HAVE_RTLDNOW */
+
+#ifdef HAVE_RTLDGLOBAL
packOneModuleFlag RTLD_GLOBAL = #const RTLD_GLOBAL
+#else /* HAVE_RTLDGLOBAL */
+packOneModuleFlag RTLD_GLOBAL = error "RTLD_GLOBAL not available"
+#endif
+
#ifdef HAVE_RTLDLOCAL
packOneModuleFlag RTLD_LOCAL = #const RTLD_LOCAL
#else /* HAVE_RTLDLOCAL */

View File

@ -0,0 +1,9 @@
SplitObjs are unnecessary (it splits object files up), and seems
to use enormous amounts of memory, eventually stomping on my
stack/data/file size ulimits when set, and dumping core. Solution
: turn it off
--- mk/build.mk.orig Fri Jul 11 10:14:53 2003
+++ mk/build.mk Fri Jul 11 16:54:28 2003
@@ -0,0 +1,1 @@
+SplitObjs=NO

View File

@ -1,17 +0,0 @@
Same silly bug as acconfig.h -- fixed in HEAD
$OpenBSD: patch-mk_config_h_in,v 1.1.1.1 2003/05/29 16:38:31 avsm Exp $
--- mk/config.h.in.orig Fri Dec 6 20:56:03 2002
+++ mk/config.h.in Wed Apr 23 12:57:02 2003
@@ -83,10 +83,10 @@
#undef HAVE_RTLDLOCAL
/* Define if RTLD_GLOBAL is available */
-#undef RTLD_GLOBAL
+#undef HAVE_RTLDGLOBAL
/* Define if RTLD_NOW is available */
-#undef RTLD_NOW
+#undef HAVE_RTLDNOW
/*Define if in_addr_t available */
#undef HAVE_IN_ADDR_T

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
@comment $OpenBSD: PLIST-doc,v 1.1 2003/06/30 03:45:34 avsm Exp $
@comment $OpenBSD: PLIST-doc,v 1.2 2003/07/20 21:57:11 avsm Exp $
share/doc/ghc/base/Control.Arrow.html
share/doc/ghc/base/Control.Concurrent.Chan.html
share/doc/ghc/base/Control.Concurrent.MVar.html
@ -12,7 +12,6 @@ share/doc/ghc/base/Control.Monad.Error.html
share/doc/ghc/base/Control.Monad.Fix.html
share/doc/ghc/base/Control.Monad.Identity.html
share/doc/ghc/base/Control.Monad.List.html
share/doc/ghc/base/Control.Monad.Monoid.html
share/doc/ghc/base/Control.Monad.RWS.html
share/doc/ghc/base/Control.Monad.Reader.html
share/doc/ghc/base/Control.Monad.ST.Lazy.html
@ -38,17 +37,22 @@ share/doc/ghc/base/Data.Complex.html
share/doc/ghc/base/Data.Dynamic.html
share/doc/ghc/base/Data.Either.html
share/doc/ghc/base/Data.FiniteMap.html
share/doc/ghc/base/Data.Generics.html
share/doc/ghc/base/Data.Graph.html
share/doc/ghc/base/Data.HashTable.html
share/doc/ghc/base/Data.IORef.html
share/doc/ghc/base/Data.Int.html
share/doc/ghc/base/Data.Ix.html
share/doc/ghc/base/Data.List.html
share/doc/ghc/base/Data.Maybe.html
share/doc/ghc/base/Data.Monoid.html
share/doc/ghc/base/Data.PackedString.html
share/doc/ghc/base/Data.Ratio.html
share/doc/ghc/base/Data.STRef.Lazy.html
share/doc/ghc/base/Data.STRef.Strict.html
share/doc/ghc/base/Data.STRef.html
share/doc/ghc/base/Data.Set.html
share/doc/ghc/base/Data.Tree.html
share/doc/ghc/base/Data.Tuple.html
share/doc/ghc/base/Data.Unique.html
share/doc/ghc/base/Data.Word.html
@ -60,13 +64,15 @@ share/doc/ghc/base/Debug.Trace.html
share/doc/ghc/base/Foreign.C.Error.html
share/doc/ghc/base/Foreign.C.String.html
share/doc/ghc/base/Foreign.C.Types.html
share/doc/ghc/base/Foreign.C.TypesISO.html
share/doc/ghc/base/Foreign.C.html
share/doc/ghc/base/Foreign.Concurrent.html
share/doc/ghc/base/Foreign.ForeignPtr.html
share/doc/ghc/base/Foreign.Marshal.Alloc.html
share/doc/ghc/base/Foreign.Marshal.Array.html
share/doc/ghc/base/Foreign.Marshal.Error.html
share/doc/ghc/base/Foreign.Marshal.Pool.html
share/doc/ghc/base/Foreign.Marshal.Utils.html
share/doc/ghc/base/Foreign.Marshal.html
share/doc/ghc/base/Foreign.Ptr.html
share/doc/ghc/base/Foreign.StablePtr.html
share/doc/ghc/base/Foreign.Storable.html
@ -79,6 +85,7 @@ share/doc/ghc/base/GHC.Err.html
share/doc/ghc/base/GHC.Exception.html
share/doc/ghc/base/GHC.Exts.html
share/doc/ghc/base/GHC.Float.html
share/doc/ghc/base/GHC.ForeignPtr.html
share/doc/ghc/base/GHC.Handle.html
share/doc/ghc/base/GHC.IO.html
share/doc/ghc/base/GHC.IOBase.html
@ -86,8 +93,6 @@ share/doc/ghc/base/GHC.Int.html
share/doc/ghc/base/GHC.List.html
share/doc/ghc/base/GHC.Num.html
share/doc/ghc/base/GHC.Pack.html
share/doc/ghc/base/GHC.Posix.html
share/doc/ghc/base/GHC.PrimopWrappers.html
share/doc/ghc/base/GHC.Ptr.html
share/doc/ghc/base/GHC.Read.html
share/doc/ghc/base/GHC.Real.html
@ -115,6 +120,8 @@ share/doc/ghc/base/System.Locale.html
share/doc/ghc/base/System.Mem.StableName.html
share/doc/ghc/base/System.Mem.Weak.html
share/doc/ghc/base/System.Mem.html
share/doc/ghc/base/System.Posix.Signals.html
share/doc/ghc/base/System.Posix.Types.html
share/doc/ghc/base/System.Random.html
share/doc/ghc/base/System.Time.html
share/doc/ghc/base/Text.Html.BlockTable.html
@ -139,6 +146,7 @@ share/doc/ghc/base/Text.Regex.Posix.html
share/doc/ghc/base/Text.Regex.html
share/doc/ghc/base/Text.Show.Functions.html
share/doc/ghc/base/Text.Show.html
share/doc/ghc/base/base.haddock
share/doc/ghc/base/doc-index-tA.html
share/doc/ghc/base/doc-index-tB.html
share/doc/ghc/base/doc-index-tC.html
@ -148,7 +156,6 @@ share/doc/ghc/base/doc-index-tF.html
share/doc/ghc/base/doc-index-tG.html
share/doc/ghc/base/doc-index-tH.html
share/doc/ghc/base/doc-index-tI.html
share/doc/ghc/base/doc-index-tJ.html
share/doc/ghc/base/doc-index-tK.html
share/doc/ghc/base/doc-index-tL.html
share/doc/ghc/base/doc-index-tM.html
@ -162,9 +169,22 @@ share/doc/ghc/base/doc-index-tT.html
share/doc/ghc/base/doc-index-tU.html
share/doc/ghc/base/doc-index-tV.html
share/doc/ghc/base/doc-index-tW.html
share/doc/ghc/base/doc-index-tX.html
share/doc/ghc/base/doc-index-tY.html
share/doc/ghc/base/doc-index-tZ.html
share/doc/ghc/base/doc-index-v124.html
share/doc/ghc/base/doc-index-v33.html
share/doc/ghc/base/doc-index-v36.html
share/doc/ghc/base/doc-index-v37.html
share/doc/ghc/base/doc-index-v38.html
share/doc/ghc/base/doc-index-v42.html
share/doc/ghc/base/doc-index-v43.html
share/doc/ghc/base/doc-index-v45.html
share/doc/ghc/base/doc-index-v46.html
share/doc/ghc/base/doc-index-v47.html
share/doc/ghc/base/doc-index-v58.html
share/doc/ghc/base/doc-index-v60.html
share/doc/ghc/base/doc-index-v61.html
share/doc/ghc/base/doc-index-v62.html
share/doc/ghc/base/doc-index-v92.html
share/doc/ghc/base/doc-index-v94.html
share/doc/ghc/base/doc-index-vA.html
share/doc/ghc/base/doc-index-vB.html
share/doc/ghc/base/doc-index-vC.html
@ -223,43 +243,29 @@ share/doc/ghc/building/winbuild.html
share/doc/ghc/haskell-src/Language.Haskell.Parser.html
share/doc/ghc/haskell-src/Language.Haskell.Pretty.html
share/doc/ghc/haskell-src/Language.Haskell.Syntax.html
share/doc/ghc/haskell-src/doc-index-tA.html
share/doc/ghc/haskell-src/doc-index-tB.html
share/doc/ghc/haskell-src/Language.Haskell.THSyntax.html
share/doc/ghc/haskell-src/doc-index-tC.html
share/doc/ghc/haskell-src/doc-index-tD.html
share/doc/ghc/haskell-src/doc-index-tE.html
share/doc/ghc/haskell-src/doc-index-tF.html
share/doc/ghc/haskell-src/doc-index-tG.html
share/doc/ghc/haskell-src/doc-index-tH.html
share/doc/ghc/haskell-src/doc-index-tI.html
share/doc/ghc/haskell-src/doc-index-tJ.html
share/doc/ghc/haskell-src/doc-index-tK.html
share/doc/ghc/haskell-src/doc-index-tL.html
share/doc/ghc/haskell-src/doc-index-tM.html
share/doc/ghc/haskell-src/doc-index-tN.html
share/doc/ghc/haskell-src/doc-index-tO.html
share/doc/ghc/haskell-src/doc-index-tP.html
share/doc/ghc/haskell-src/doc-index-tQ.html
share/doc/ghc/haskell-src/doc-index-tR.html
share/doc/ghc/haskell-src/doc-index-tS.html
share/doc/ghc/haskell-src/doc-index-tT.html
share/doc/ghc/haskell-src/doc-index-tU.html
share/doc/ghc/haskell-src/doc-index-tV.html
share/doc/ghc/haskell-src/doc-index-tW.html
share/doc/ghc/haskell-src/doc-index-tX.html
share/doc/ghc/haskell-src/doc-index-tY.html
share/doc/ghc/haskell-src/doc-index-tZ.html
share/doc/ghc/haskell-src/doc-index-vA.html
share/doc/ghc/haskell-src/doc-index-vB.html
share/doc/ghc/haskell-src/doc-index-vC.html
share/doc/ghc/haskell-src/doc-index-vD.html
share/doc/ghc/haskell-src/doc-index-vE.html
share/doc/ghc/haskell-src/doc-index-vF.html
share/doc/ghc/haskell-src/doc-index-vG.html
share/doc/ghc/haskell-src/doc-index-vH.html
share/doc/ghc/haskell-src/doc-index-vI.html
share/doc/ghc/haskell-src/doc-index-vJ.html
share/doc/ghc/haskell-src/doc-index-vK.html
share/doc/ghc/haskell-src/doc-index-vL.html
share/doc/ghc/haskell-src/doc-index-vM.html
share/doc/ghc/haskell-src/doc-index-vN.html
@ -272,54 +278,65 @@ share/doc/ghc/haskell-src/doc-index-vT.html
share/doc/ghc/haskell-src/doc-index-vU.html
share/doc/ghc/haskell-src/doc-index-vV.html
share/doc/ghc/haskell-src/doc-index-vW.html
share/doc/ghc/haskell-src/doc-index-vX.html
share/doc/ghc/haskell-src/doc-index-vY.html
share/doc/ghc/haskell-src/doc-index-vZ.html
share/doc/ghc/haskell-src/doc-index.html
share/doc/ghc/haskell-src/haddock.css
share/doc/ghc/haskell-src/haskell-src.haddock
share/doc/ghc/haskell-src/haskell_icon.gif
share/doc/ghc/haskell-src/index.html
share/doc/ghc/haskell98/Array.html
share/doc/ghc/haskell98/Bits.html
share/doc/ghc/haskell98/CError.html
share/doc/ghc/haskell98/CForeign.html
share/doc/ghc/haskell98/CPUTime.html
share/doc/ghc/haskell98/CString.html
share/doc/ghc/haskell98/CTypes.html
share/doc/ghc/haskell98/Char.html
share/doc/ghc/haskell98/Complex.html
share/doc/ghc/haskell98/Directory.html
share/doc/ghc/haskell98/ForeignPtr.html
share/doc/ghc/haskell98/IO.html
share/doc/ghc/haskell98/Int.html
share/doc/ghc/haskell98/Ix.html
share/doc/ghc/haskell98/List.html
share/doc/ghc/haskell98/Locale.html
share/doc/ghc/haskell98/MarshalAlloc.html
share/doc/ghc/haskell98/MarshalArray.html
share/doc/ghc/haskell98/MarshalError.html
share/doc/ghc/haskell98/MarshalUtils.html
share/doc/ghc/haskell98/Maybe.html
share/doc/ghc/haskell98/Monad.html
share/doc/ghc/haskell98/Ptr.html
share/doc/ghc/haskell98/Random.html
share/doc/ghc/haskell98/Ratio.html
share/doc/ghc/haskell98/StablePtr.html
share/doc/ghc/haskell98/Storable.html
share/doc/ghc/haskell98/System.html
share/doc/ghc/haskell98/Time.html
share/doc/ghc/haskell98/Word.html
share/doc/ghc/haskell98/doc-index-tA.html
share/doc/ghc/haskell98/doc-index-tB.html
share/doc/ghc/haskell98/doc-index-tC.html
share/doc/ghc/haskell98/doc-index-tD.html
share/doc/ghc/haskell98/doc-index-tE.html
share/doc/ghc/haskell98/doc-index-tF.html
share/doc/ghc/haskell98/doc-index-tG.html
share/doc/ghc/haskell98/doc-index-tH.html
share/doc/ghc/haskell98/doc-index-tI.html
share/doc/ghc/haskell98/doc-index-tJ.html
share/doc/ghc/haskell98/doc-index-tK.html
share/doc/ghc/haskell98/doc-index-tL.html
share/doc/ghc/haskell98/doc-index-tM.html
share/doc/ghc/haskell98/doc-index-tN.html
share/doc/ghc/haskell98/doc-index-tO.html
share/doc/ghc/haskell98/doc-index-tP.html
share/doc/ghc/haskell98/doc-index-tQ.html
share/doc/ghc/haskell98/doc-index-tR.html
share/doc/ghc/haskell98/doc-index-tS.html
share/doc/ghc/haskell98/doc-index-tT.html
share/doc/ghc/haskell98/doc-index-tU.html
share/doc/ghc/haskell98/doc-index-tV.html
share/doc/ghc/haskell98/doc-index-tW.html
share/doc/ghc/haskell98/doc-index-tX.html
share/doc/ghc/haskell98/doc-index-tY.html
share/doc/ghc/haskell98/doc-index-tZ.html
share/doc/ghc/haskell98/doc-index-v33.html
share/doc/ghc/haskell98/doc-index-v37.html
share/doc/ghc/haskell98/doc-index-v43.html
share/doc/ghc/haskell98/doc-index-v46.html
share/doc/ghc/haskell98/doc-index-v47.html
share/doc/ghc/haskell98/doc-index-v58.html
share/doc/ghc/haskell98/doc-index-v61.html
share/doc/ghc/haskell98/doc-index-v62.html
share/doc/ghc/haskell98/doc-index-v92.html
share/doc/ghc/haskell98/doc-index-vA.html
share/doc/ghc/haskell98/doc-index-vB.html
share/doc/ghc/haskell98/doc-index-vC.html
@ -330,13 +347,11 @@ share/doc/ghc/haskell98/doc-index-vG.html
share/doc/ghc/haskell98/doc-index-vH.html
share/doc/ghc/haskell98/doc-index-vI.html
share/doc/ghc/haskell98/doc-index-vJ.html
share/doc/ghc/haskell98/doc-index-vK.html
share/doc/ghc/haskell98/doc-index-vL.html
share/doc/ghc/haskell98/doc-index-vM.html
share/doc/ghc/haskell98/doc-index-vN.html
share/doc/ghc/haskell98/doc-index-vO.html
share/doc/ghc/haskell98/doc-index-vP.html
share/doc/ghc/haskell98/doc-index-vQ.html
share/doc/ghc/haskell98/doc-index-vR.html
share/doc/ghc/haskell98/doc-index-vS.html
share/doc/ghc/haskell98/doc-index-vT.html
@ -344,10 +359,10 @@ share/doc/ghc/haskell98/doc-index-vU.html
share/doc/ghc/haskell98/doc-index-vV.html
share/doc/ghc/haskell98/doc-index-vW.html
share/doc/ghc/haskell98/doc-index-vX.html
share/doc/ghc/haskell98/doc-index-vY.html
share/doc/ghc/haskell98/doc-index-vZ.html
share/doc/ghc/haskell98/doc-index.html
share/doc/ghc/haskell98/haddock.css
share/doc/ghc/haskell98/haskell98.haddock
share/doc/ghc/haskell98/haskell_icon.gif
share/doc/ghc/haskell98/index.html
share/doc/ghc/hslibs/book-hslibs.html
@ -429,37 +444,18 @@ share/doc/ghc/hslibs/stylesheet-images/toc-plus.gif
share/doc/ghc/hslibs/stylesheet-images/up.gif
share/doc/ghc/hslibs/stylesheet-images/warning.gif
share/doc/ghc/hslibs/system-database.html
share/doc/ghc/libraries.html
share/doc/ghc/network/Network.BSD.html
share/doc/ghc/network/Network.CGI.html
share/doc/ghc/network/Network.Socket.html
share/doc/ghc/network/Network.URI.html
share/doc/ghc/network/Network.html
share/doc/ghc/network/doc-index-tA.html
share/doc/ghc/network/doc-index-tB.html
share/doc/ghc/network/doc-index-tC.html
share/doc/ghc/network/doc-index-tD.html
share/doc/ghc/network/doc-index-tE.html
share/doc/ghc/network/doc-index-tF.html
share/doc/ghc/network/doc-index-tG.html
share/doc/ghc/network/doc-index-tH.html
share/doc/ghc/network/doc-index-tI.html
share/doc/ghc/network/doc-index-tJ.html
share/doc/ghc/network/doc-index-tK.html
share/doc/ghc/network/doc-index-tL.html
share/doc/ghc/network/doc-index-tM.html
share/doc/ghc/network/doc-index-tN.html
share/doc/ghc/network/doc-index-tO.html
share/doc/ghc/network/doc-index-tP.html
share/doc/ghc/network/doc-index-tQ.html
share/doc/ghc/network/doc-index-tR.html
share/doc/ghc/network/doc-index-tS.html
share/doc/ghc/network/doc-index-tT.html
share/doc/ghc/network/doc-index-tU.html
share/doc/ghc/network/doc-index-tV.html
share/doc/ghc/network/doc-index-tW.html
share/doc/ghc/network/doc-index-tX.html
share/doc/ghc/network/doc-index-tY.html
share/doc/ghc/network/doc-index-tZ.html
share/doc/ghc/network/doc-index-vA.html
share/doc/ghc/network/doc-index-vB.html
share/doc/ghc/network/doc-index-vC.html
@ -469,7 +465,6 @@ share/doc/ghc/network/doc-index-vF.html
share/doc/ghc/network/doc-index-vG.html
share/doc/ghc/network/doc-index-vH.html
share/doc/ghc/network/doc-index-vI.html
share/doc/ghc/network/doc-index-vJ.html
share/doc/ghc/network/doc-index-vK.html
share/doc/ghc/network/doc-index-vL.html
share/doc/ghc/network/doc-index-vM.html
@ -481,15 +476,98 @@ share/doc/ghc/network/doc-index-vR.html
share/doc/ghc/network/doc-index-vS.html
share/doc/ghc/network/doc-index-vT.html
share/doc/ghc/network/doc-index-vU.html
share/doc/ghc/network/doc-index-vV.html
share/doc/ghc/network/doc-index-vW.html
share/doc/ghc/network/doc-index-vX.html
share/doc/ghc/network/doc-index-vY.html
share/doc/ghc/network/doc-index-vZ.html
share/doc/ghc/network/doc-index.html
share/doc/ghc/network/haddock.css
share/doc/ghc/network/haskell_icon.gif
share/doc/ghc/network/index.html
share/doc/ghc/network/network.haddock
share/doc/ghc/readline/System.Console.Readline.html
share/doc/ghc/readline/doc-index-tC.html
share/doc/ghc/readline/doc-index-tE.html
share/doc/ghc/readline/doc-index-tK.html
share/doc/ghc/readline/doc-index-tU.html
share/doc/ghc/readline/doc-index-vA.html
share/doc/ghc/readline/doc-index-vB.html
share/doc/ghc/readline/doc-index-vC.html
share/doc/ghc/readline/doc-index-vD.html
share/doc/ghc/readline/doc-index-vE.html
share/doc/ghc/readline/doc-index-vF.html
share/doc/ghc/readline/doc-index-vG.html
share/doc/ghc/readline/doc-index-vI.html
share/doc/ghc/readline/doc-index-vK.html
share/doc/ghc/readline/doc-index-vL.html
share/doc/ghc/readline/doc-index-vM.html
share/doc/ghc/readline/doc-index-vN.html
share/doc/ghc/readline/doc-index-vO.html
share/doc/ghc/readline/doc-index-vP.html
share/doc/ghc/readline/doc-index-vQ.html
share/doc/ghc/readline/doc-index-vR.html
share/doc/ghc/readline/doc-index-vS.html
share/doc/ghc/readline/doc-index-vU.html
share/doc/ghc/readline/doc-index.html
share/doc/ghc/readline/haddock.css
share/doc/ghc/readline/haskell_icon.gif
share/doc/ghc/readline/index.html
share/doc/ghc/readline/readline.haddock
share/doc/ghc/unix/System.Posix.Directory.html
share/doc/ghc/unix/System.Posix.DynamicLinker.Module.html
share/doc/ghc/unix/System.Posix.DynamicLinker.Prim.html
share/doc/ghc/unix/System.Posix.DynamicLinker.html
share/doc/ghc/unix/System.Posix.Env.html
share/doc/ghc/unix/System.Posix.Files.html
share/doc/ghc/unix/System.Posix.IO.html
share/doc/ghc/unix/System.Posix.Process.html
share/doc/ghc/unix/System.Posix.Resource.html
share/doc/ghc/unix/System.Posix.Terminal.html
share/doc/ghc/unix/System.Posix.Time.html
share/doc/ghc/unix/System.Posix.Unistd.html
share/doc/ghc/unix/System.Posix.User.html
share/doc/ghc/unix/System.Posix.html
share/doc/ghc/unix/System.Sendfile.html
share/doc/ghc/unix/doc-index-tB.html
share/doc/ghc/unix/doc-index-tC.html
share/doc/ghc/unix/doc-index-tD.html
share/doc/ghc/unix/doc-index-tE.html
share/doc/ghc/unix/doc-index-tF.html
share/doc/ghc/unix/doc-index-tG.html
share/doc/ghc/unix/doc-index-tH.html
share/doc/ghc/unix/doc-index-tL.html
share/doc/ghc/unix/doc-index-tO.html
share/doc/ghc/unix/doc-index-tP.html
share/doc/ghc/unix/doc-index-tQ.html
share/doc/ghc/unix/doc-index-tR.html
share/doc/ghc/unix/doc-index-tS.html
share/doc/ghc/unix/doc-index-tT.html
share/doc/ghc/unix/doc-index-tU.html
share/doc/ghc/unix/doc-index-vA.html
share/doc/ghc/unix/doc-index-vB.html
share/doc/ghc/unix/doc-index-vC.html
share/doc/ghc/unix/doc-index-vD.html
share/doc/ghc/unix/doc-index-vE.html
share/doc/ghc/unix/doc-index-vF.html
share/doc/ghc/unix/doc-index-vG.html
share/doc/ghc/unix/doc-index-vH.html
share/doc/ghc/unix/doc-index-vI.html
share/doc/ghc/unix/doc-index-vJ.html
share/doc/ghc/unix/doc-index-vK.html
share/doc/ghc/unix/doc-index-vL.html
share/doc/ghc/unix/doc-index-vM.html
share/doc/ghc/unix/doc-index-vN.html
share/doc/ghc/unix/doc-index-vO.html
share/doc/ghc/unix/doc-index-vP.html
share/doc/ghc/unix/doc-index-vQ.html
share/doc/ghc/unix/doc-index-vR.html
share/doc/ghc/unix/doc-index-vS.html
share/doc/ghc/unix/doc-index-vT.html
share/doc/ghc/unix/doc-index-vU.html
share/doc/ghc/unix/doc-index-vV.html
share/doc/ghc/unix/doc-index-vW.html
share/doc/ghc/unix/doc-index.html
share/doc/ghc/unix/haddock.css
share/doc/ghc/unix/haskell_icon.gif
share/doc/ghc/unix/index.html
share/doc/ghc/unix/unix.haddock
share/doc/ghc/users_guide/bug-reporting.html
share/doc/ghc/users_guide/bugs-and-infelicities.html
share/doc/ghc/users_guide/bugs.html
@ -515,7 +593,6 @@ share/doc/ghc/users_guide/hsc2hs.html
share/doc/ghc/users_guide/introduction-ghc.html
share/doc/ghc/users_guide/license.html
share/doc/ghc/users_guide/make-mode.html
share/doc/ghc/users_guide/newtype-deriving.html
share/doc/ghc/users_guide/options-debugging.html
share/doc/ghc/users_guide/options-help.html
share/doc/ghc/users_guide/options-optimise.html
@ -532,7 +609,7 @@ share/doc/ghc/users_guide/prof-heap.html
share/doc/ghc/users_guide/prof-time-options.html
share/doc/ghc/users_guide/prof-xml-tool.html
share/doc/ghc/users_guide/profiling.html
share/doc/ghc/users_guide/release-5-04.html
share/doc/ghc/users_guide/release-6-0.html
share/doc/ghc/users_guide/rewrite-rules.html
share/doc/ghc/users_guide/runtime-control.html
share/doc/ghc/users_guide/sec-assertions.html
@ -559,6 +636,7 @@ share/doc/ghc/users_guide/stylesheet-images/toc-plus.gif
share/doc/ghc/users_guide/stylesheet-images/up.gif
share/doc/ghc/users_guide/stylesheet-images/warning.gif
share/doc/ghc/users_guide/syntax-extns.html
share/doc/ghc/users_guide/template-haskell.html
share/doc/ghc/users_guide/thriftier.html
share/doc/ghc/users_guide/ticky-ticky.html
share/doc/ghc/users_guide/type-extensions.html
@ -566,17 +644,19 @@ share/doc/ghc/users_guide/users-guide.html
share/doc/ghc/users_guide/using-ghc.html
share/doc/ghc/users_guide/utils.html
share/doc/ghc/users_guide/version-numbering.html
share/doc/ghc/users_guide/win32-dlls-create.html
share/doc/ghc/users_guide/win32-dlls-foreign.html
share/doc/ghc/users_guide/win32-dlls-linking-static.html
share/doc/ghc/users_guide/win32-dlls.html
share/doc/ghc/users_guide/win32.html
share/doc/ghc/users_guide/wrong-compilee.html
share/doc/ghc/users_guide/wrong.html
share/doc/ghc/users_guide/x1059.html
share/doc/ghc/users_guide/x1671.html
share/doc/ghc/users_guide/x938.html
share/doc/ghc/users_guide/x10563.html
share/doc/ghc/users_guide/x10567.html
share/doc/ghc/users_guide/x1097.html
share/doc/ghc/users_guide/x1713.html
share/doc/ghc/users_guide/x978.html
@dirrm share/doc/ghc/users_guide/stylesheet-images
@dirrm share/doc/ghc/users_guide
@dirrm share/doc/ghc/unix
@dirrm share/doc/ghc/readline
@dirrm share/doc/ghc/network
@dirrm share/doc/ghc/hslibs/stylesheet-images
@dirrm share/doc/ghc/hslibs