Re: Fixing Elf##_Versym
"Joseph Koshy" <[email protected]> Wed, 12 Nov 2025 21:15:34 +0000
| Newsgroups | gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
On 2025-11-12 19:15 matthew green <[email protected]> wrote: > unfortunately, this is breaking several things in pkgsrc. they're > all the same chunk of code that is #ifdef __NetBSD__. we need a > way to identify this so we can build code either side of this > change.. eg, the 4th version of this same code i just worked > around is pkgsrc/devel/abseil: > > --- absl/debugging/internal/elf_mem_image.cc.orig 2025-09-22 > 11:24:38.000000000 -0700 > +++ absl/debugging/internal/elf_mem_image.cc 2025-11-12 > 11:09:48.791740924 -0800 > > @@ -377,7 +379,7 @@ void ElfMemImage::SymbolIterator::Update > const ElfW(Versym) *version_symbol = image->GetVersym(index_); > ABSL_RAW_CHECK(symbol && version_symbol, ""); > const char *const symbol_name = image->GetDynstr(symbol->st_name); > -#if defined(__NetBSD__) > +#if defined(__NetBSD__) && 0 > const int version_index = version_symbol->vs_vers & VERSYM_VERSION; > #else > const ElfW(Versym) version_index = version_symbol[0] & VERSYM_VERSION; > > i've also seen this same code in firefox, firefox140 and nodejs > so far.. i did not commit any fixes because i don't know of a > way to detect this via #ifdef. > > we need something. > > Joseph, can you have a look please? thanks. Oops. I should have bumped __NetBSD_Version__ alongside the change to the types, so that packages could use the appropriate #ifdef stanza to handle both sides of the change. Index: sys/sys/param.h =================================================================== RCS file: /cvsroot/src/sys/sys/param.h,v retrieving revision 1.741 diff -u -r1.741 param.h --- sys/sys/param.h 21 Sep 2025 14:43:19 -0000 1.741 +++ sys/sys/param.h 12 Nov 2025 21:09:46 -0000 @@ -67,7 +67,7 @@ * 2.99.9 (299000900) */ -#define __NetBSD_Version__ 1199000300 /* NetBSD 11.99.3 */ +#define __NetBSD_Version__ 1199000400 /* NetBSD 11.99.4 */ #define __NetBSD_Prereq__(M,m,p) (((((M) * 100000000) + \ (m) * 1000000) + (p) * 100) <= __NetBSD_Version__) I will do this shortly. Apologies for the breakage. -- Joseph Koshy | [email protected]