From: Klemens Nanni Subject: Re: Unbreak dwz on sparc64 To: ports@openbsd.org, Stuart Henderson , Theo Buehler Cc: bcallah@openbsd.org Date: Fri, 28 Nov 2025 12:33:24 +0000 28 ноября 2025 г. 12:29:01 UTC, Stuart Henderson пишет: >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 /* __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 > .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 >