Subject: pkg/37649: lang/clisp fails to build for amd64 (And others) (incl. patch)
To: None <,,>
From: None <>
List: pkgsrc-bugs
Date: 12/30/2007 09:40:00
>Number:         37649
>Category:       pkg
>Synopsis:       lang/clisp fails to build for amd64 (And others) (incl. patch)
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 30 09:40:00 +0000 2007
>Originator:     Martijn van Buul
>Release:        NetBSD 4.99.45
System: NetBSD 4.99.45 NetBSD 4.99.45 (ATLAS) #3: Tue Dec 25 16:00:08 CET 2007 amd64
Architecture: x86_64
Machine: amd64
	lang/clisp fails to build for amd64 (and probably other 64 bit 
	architectures) due to some sloppy type handling in src/malloc/gmalloc.c
	(which reeks like a gnoe). The declaration and the initialisation of
	a global variable only matches when __malloc_ptrdiff_t is actually
	a ptrdiff_t. It's not, however; it is declared as an int (which
	very well may be the real problem; the definition of 
	__malloc_ptrdiff_t is at line 98 of gmalloc.c, which seems wrong
	to me). 

	Try to build lang/clisp on an amd64
	The following patch fixes the build, and clisp seems to work, but
	I wonder whether this fixes the actual problem, or whether it
	merely hides it. At any rate, the implementation of __morecore
	now matches the declaration at line 260, where it didn't before.

--- src/malloc/gmalloc.c.orig	2006-07-01 10:12:00.000000000 +0200
+++ src/malloc/gmalloc.c
@@ -357,7 +357,7 @@ Fifth Floor, Boston, MA 02110-1301, USA.
 extern __ptr_t bss_sbrk PP ((ptrdiff_t __size));
 extern int bss_sbrk_did_unexec;
-__ptr_t (*__morecore) PP ((ptrdiff_t __size)) = __default_morecore;
+__ptr_t (*__morecore) PP ((__malloc_ptrdiff_t __size)) = __default_morecore;
 /* Debugging hook for `malloc'.  */
 __ptr_t (*__malloc_hook) PP ((__malloc_size_t __size));