Index | Thread | Search

From:
Klemens Nanni <kn@openbsd.org>
Subject:
Re: Unbreak dwz on sparc64
To:
ports@openbsd.org, Stuart Henderson <stu@spacehopper.org>, Theo Buehler <tb@theobuehler.org>
Cc:
bcallah@openbsd.org
Date:
Fri, 28 Nov 2025 12:33:24 +0000

Download raw body.

Thread
28 ноября 2025 г. 12:29:01 UTC, Stuart Henderson <stu@spacehopper.org> пишет:
>On 2025/11/28 13:12, Theo Buehler wrote:
>> Seen while poking at espeak on sparc64:
>> 
>> > Extracting debug info from /usr/ports/pobj/espeak-1.52.0/fake-sparc64/usr/local/bin/espeak-ng
>> Bus error (core dumped)
>> 
>> xxhash is broken on strict alignment archs and needs a patch to
>> work correctly. This copies over sthen's patch from sysutils/xxhash
>> and fixes the problem.
>> 
>> Index: Makefile
>> ===================================================================
>> RCS file: /cvs/ports/devel/dwz/Makefile,v
>> diff -u -p -r1.9 Makefile
>> --- Makefile	5 Sep 2025 16:38:51 -0000	1.9
>> +++ Makefile	28 Nov 2025 12:08:54 -0000
>> @@ -4,6 +4,8 @@ XXHASH_V =	0.8.3
>>  DISTFILES =	${PKGNAME}.tar.gz
>>  DISTFILES.h= 	xxhash-${XXHASH_V}{xxhash}.h
>>  
>> +REVISION =	0
>> +
>>  CATEGORIES =	devel
>>  
>>  HOMEPAGE =	https://sourceware.org/dwz/
>> Index: patches/patch-xxhash_h
>> ===================================================================
>> RCS file: patches/patch-xxhash_h
>> diff -N patches/patch-xxhash_h
>> --- /dev/null	1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-xxhash_h	28 Nov 2025 11:59:21 -0000
>> @@ -0,0 +1,17 @@
>> +Index: xxhash.h
>> +--- xxhash.h.orig
>> ++++ xxhash.h
>> +@@ -2297,8 +2297,11 @@ XXH3_128bits_reset_withSecretandSeed(XXH_NOESCAPE XXH3
>> +    /* prefer __packed__ structures (method 1) for GCC
>> +     * < ARMv7 with unaligned access (e.g. Raspbian armhf) still uses byte shifting, so we use memcpy
>> +     * which for some reason does unaligned loads. */
>> +-#  if defined(__GNUC__) && !(defined(__ARM_ARCH) && __ARM_ARCH < 7 && defined(__ARM_FEATURE_UNALIGNED))
>> +-#    define XXH_FORCE_MEMORY_ACCESS 1
>> ++#  if defined(__GNUC__)
>> ++#    include <endian.h>   /* __STRICT_ALIGNMENT */
>> ++#    if !defined(__STRICT_ALIGNMENT)
>> ++#      define XXH_FORCE_MEMORY_ACCESS 1
>> ++#    endif
>> + #  endif
>> + #endif
>> + 
>> 
>
>ok, or here's an alternative approach:

I like that a lot more, OK kn

>
>Index: devel/dwz/Makefile
>===================================================================
>RCS file: /cvs/ports/devel/dwz/Makefile,v
>diff -u -p -r1.9 Makefile
>--- devel/dwz/Makefile	5 Sep 2025 16:38:51 -0000	1.9
>+++ devel/dwz/Makefile	28 Nov 2025 12:28:07 -0000
>@@ -1,8 +1,6 @@
> COMMENT =	DWARF optimization and duplicate removal tool
>-PKGNAME =	dwz-0.16
>-XXHASH_V =	0.8.3
>-DISTFILES =	${PKGNAME}.tar.gz
>-DISTFILES.h= 	xxhash-${XXHASH_V}{xxhash}.h
>+DISTNAME =	dwz-0.16
>+REVISION =	0
> 
> CATEGORIES =	devel
> 
>@@ -15,7 +13,6 @@ PERMIT_PACKAGE =	Yes
> WANTLIB += c elf
> 
> SITES =		https://sourceware.org/ftp/dwz/releases/
>-SITES.h =	https://raw.githubusercontent.com/Cyan4973/xxHash/v${XXHASH_V}/
> 
> DEBUG_PACKAGES =	${BUILD_PACKAGES}
> 
>@@ -27,15 +24,11 @@ FAKE_FLAGS =	mandir=${TRUEPREFIX}/man pr
> WRKDIST =	${WRKDIR}/dwz
> 
> # XXX bootstrap: DEBUG_PACKAGES needs a dwz binary to work
>-
> DWZ = ${WRKBUILD}/dwz
> 
>-EXTRACT_ONLY =	${DISTFILES}
>-
>-# Cannot use sysutils/xxhash as that introduces a loop.
>-# XXX: Revisit using the :patch target next update.
>-post-extract:
>-	cp ${DISTDIR}/xxhash-${XXHASH_V}.h ${WRKSRC}/xxhash.h
>+BUILD_DEPENDS =	sysutils/xxhash:patch
>+do-configure:
>+	cp ${WRKDIR}/sysutils/xxhash/*/xxhash.h ${WRKSRC}/xxhash.h
> 
> .include <bsd.port.arch.mk>
> .if ${PROPERTIES:Mlp64}
>Index: devel/dwz/distinfo
>===================================================================
>RCS file: /cvs/ports/devel/dwz/distinfo,v
>diff -u -p -r1.4 distinfo
>--- devel/dwz/distinfo	5 Sep 2025 16:38:51 -0000	1.4
>+++ devel/dwz/distinfo	28 Nov 2025 12:28:07 -0000
>@@ -1,4 +1,2 @@
> SHA256 (dwz-0.16.tar.gz) = R1hT4bSebtjMLQqQnHpPwcxXHrzPxmJ4/UM0Lb4n1Q4=
>-SHA256 (xxhash-0.8.3.h) = F5c8DcSdmFTKJsqhkfDhL3pCS2iFjZp43jhg2VnYXks=
> SIZE (dwz-0.16.tar.gz) = 188638
>-SIZE (xxhash-0.8.3.h) = 268319
>Index: sysutils/xxhash/Makefile
>===================================================================
>RCS file: /cvs/ports/sysutils/xxhash/Makefile,v
>diff -u -p -r1.18 Makefile
>--- sysutils/xxhash/Makefile	1 Jan 2025 15:13:23 -0000	1.18
>+++ sysutils/xxhash/Makefile	28 Nov 2025 12:28:07 -0000
>@@ -1,6 +1,6 @@
> COMMENT =	extremely fast non-cryptographic hash algorithm
> 
>-# bump rsync on updates; used as a header-only library there
>+# bump rsync and dwz on updates; used as a header-only library there
> GH_ACCOUNT =	Cyan4973
> GH_PROJECT =	xxHash
> GH_TAGNAME =	v0.8.3
>