Subject: pkg/37649: lang/clisp fails to build for amd64 (And others) (incl. patch)
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <martijnb@atlas.ipv6.stack.nl>
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
>Organization:
>Environment:
System: NetBSD atlas.ipv6.stack.nl 4.99.45 NetBSD 4.99.45 (ATLAS) #3: Tue Dec 25 16:00:08 CET 2007 martijnb@atlas.ipv6.stack.nl:/usr/obj/sys/arch/amd64/compile/ATLAS amd64
Architecture: x86_64
Machine: amd64
>Description:
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).
>How-To-Repeat:
Try to build lang/clisp on an amd64
>Fix:
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.
$NetBSD$
--- 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;
#endif
-__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));
>Unformatted: