NetBSD Problem Report #60561
From he@smistad.uninett.no Sat Aug 8 17:53:25 2026
Return-Path: <he@smistad.uninett.no>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
client-signature RSA-PSS (2048 bits) client-digest SHA256)
(Client CN "mail.netbsd.org", Issuer "YR2" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 491FB1A923B
for <gnats-bugs@gnats.NetBSD.org>; Sat, 8 Aug 2026 17:53:25 +0000 (UTC)
Message-Id: <20260808175319.A675C43FB48@smistad.uninett.no>
Date: Sat, 8 Aug 2026 19:53:19 +0200 (CEST)
From: he@NetBSD.org
Reply-To: he@NetBSD.org
To: gnats-bugs@NetBSD.org
Subject: libffcall unusable on NetBSD/macppc 11.0
X-Send-Pr-Version: 3.95
X-From4GNATS: "he@NetBSD.org via gnats" <gnats-admin@NetBSD.org>
>Number: 60561
>Category: pkg
>Synopsis: libffcall unusable on NetBSD/macppc 11.0
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Aug 08 17:55:00 +0000 2026
>Originator: Havard Eidnes
>Release: NetBSD 11.0
>Organization:
I try...
>Environment:
System: NetBSD bramley.urc.uninett.no 11.0 NetBSD 11.0 (BRAMLEY) #4: Sat Aug 8 14:36:14 CEST 2026 he@bramley.urc.uninett.no:/usr/obj/sys/arch/macppc/compile/BRAMLEY macppc
Architecture: powerpc
Machine: macppc
>Description:
While trying to follow up packages which fail to bulk-build
on NetBSD/macppc 11.0, the turn has come to lang/clisp.
As part of that, I found that once the initial build issues
are sorted out in lang/clisp, the linked lisp interpreter
fails to start with
./lisp.run -B . -N locale -E UTF-8 -Epathname 1:1 -Emisc 1:1 -norc -m 2MW -lp -x '(and (load "init.lisp") (sys::%saveinitmem) (ext::exit)) (ext::exit t)'
/usr/pkgsrc/lang/clisp/work/clisp-2.49/src/./lisp.run: Shared object "libcallback.so.1" not found
However, that package *is* installed, but ktrace'ing a simple
./lisp.run reveals
7579 7579 lisp.run CALL open(0xfff0473c,0,0xfff04758)
7579 7579 lisp.run NAMI "/usr/pkg/lib/libcallback.so.1"
7579 7579 lisp.run RET open 3
7579 7579 lisp.run CALL __fstat50(3,0xfff04658)
7579 7579 lisp.run RET __fstat50 0
7579 7579 lisp.run CALL mmap(0,0x1000,PROT_READ,0x1<SHARED,FILE,ALIGN=NONE>,3,0,0,0)
7579 7579 lisp.run RET mmap -302870528/0xedf29000
7579 7579 lisp.run CALL mmap(0,0x21000,PROT_NONE,0x10001002<PRIVATE,ANONYMOUS,ALIGN=64KB>,0xffffffff,0,0,0)
7579 7579 lisp.run RET mmap -304152576/0xeddf0000
7579 7579 lisp.run CALL mmap(0xeddf0000,0x3000,PROT_READ|PROT_EXEC,0x12<PRIVATE,FIXED,FILE,ALIGN=NONE>,3,0,0,0)
7579 7579 lisp.run RET mmap -304152576/0xeddf0000
7579 7579 lisp.run CALL mmap(0xede0f000,0x2000,PROT_READ|PROT_WRITE|PROT_EXEC,0x12<PRIVATE,FIXED,FILE,ALIGN=NONE>,3,0,0,0xf000)
7579 7579 lisp.run RET mmap -1 errno 13 Permission denied
and an inspection of the shared library reveals that .got and .plt
sections are both writeable and executable:
bramley: {132} readelf -a /usr/pkg/lib/libcallback.so | grep WAX
[20] .got PROGBITS 00020000 010000 000010 04 WAX 0 0 4
[22] .plt NOBITS 00020014 010014 00018c 00 WAX 0 0 4
bramley: {133}
and this host runs basically a GENERIC kernel, hence, PAX_MPROTECT
is turned on.
Manually turning off MPROTECT checking makes the lisp interpreter
start:
bramley: {136} paxctl lisp.run
No PaX flags.
bramley: {137} paxctl +m lisp.run
bramley: {138} paxctl lisp.run
PaX flags:
m: mprotect(2) restrictions, explicit disable
bramley: {139} ./lisp.run
WARNING: locale: no encoding 646, using ISO-8859-1
WARNING: locale: no encoding 646, using ISO-8859-1
i i i i i i i ooooo o ooooooo ooooo ooooo
I I I I I I I 8 8 8 8 8 o 8 8
I \ `+' / I 8 8 8 8 8 8
\ `-+-' / 8 8 8 ooooo 8oooo
`-__|__-' 8 8 8 8 8
| 8 o 8 8 o 8 8
------+------ ooooo 8oooooo ooo8ooo ooooo 8
Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/>
Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010
Type :h and hit Enter for context help.
WARNING: No initialization file specified.
Please try: ./lisp.run -M lispinit.mem
WARNING: No installation directory specified.
Please try: ./lisp.run -B /usr/local/lib/clisp
:
But what is causing the libcallback.so shared library to
have the "wrong" protections for the .plt and .got sections
I have not managed to find out.
I have (unsuccessfully) tried adding the flags:
bramley: {56} cvs diff Makefile
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/devel/libffcall/Makefile,v
retrieving revision 1.6
diff -u -p -r1.6 Makefile
--- Makefile 15 Sep 2024 13:09:51 -0000 1.6
+++ Makefile 8 Aug 2026 17:50:07 -0000
@@ -18,6 +18,9 @@ GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --enable-shared
+CFLAGS+= -msecure-plt
+LDFLAGS+= -msecure-plt
+
MAKE_FLAGS+= htmldir=${PREFIX}/share/doc/ffcall
TEST_TARGET= check
bramley: {57}
so it is more involved than that.
This host has the 11.0_RC6 user-land, but I don't think
anything significant related to this changed since that.
>How-To-Repeat:
See above.
>Fix:
That would be nice...
Either that, or hints for what more to look at.
(Contact us)
$NetBSD: query-full-pr,v 1.51 2026/08/10 02:28:17 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.