On Thu, 11 Sep 2025, Havard Eidnes wrote:
Do these just explain where the undefined symbols come from, or where they are supposed to be defined?
Yes; as shown: ``` $ uname -a NetBSD CoreBook.local 11.99.2 NetBSD 11.99.2 (COREBOOK_DIAG) #0: Fri Sep 12 08:03:39 UTC 2025 bld@CoreBook.local:/tmp/obj/usr/src/sys/arch/amd64/compile/COREBOOK_DIAG amd64 // Remove calls to jobs.c funcs. for test purposes. // $ fgrep -v job_cb bind-9.21.12/lib/isc/probes.d > probes.d $ dtrace -h -s probes.d dtrace: failed to compile script probes.d: "/usr/lib/dtrace/psinfo.d", line 46: syntax error near "u_int" // Patch in PR #58630 not yet pulled-in. // Try again, as root. // $ sudo dtrace -h -s probes.d $ sudo chown rvp:rvp probes.h // Note lack of any `$dtraceNNNN.*' symbols the first time around, // and the initial size of `rwlock.o'. // $ cc -fPIC -I. -Ibind-9.21.12/lib/isc/include -c bind-9.21.12/lib/isc/rwlock.c $ ls -l rwlock.o -rw------- 1 rvp wheel 7168 Sep 12 09:22 rwlock.o $ nm rwlock.o | fgrep '$dtrace' // Create ELF obj. // $ sudo dtrace -G -s probes.d probes: failed to link script probes: No probe sites found for declared provider // Do it right; note size of `rwlock.o' now. // $ sudo dtrace -G -s probes.d rwlock.o $ sudo chown rvp:rvp probes.o $ ls -l rwlock.o -rw------- 1 rvp wheel 7744 Sep 12 09:23 rwlock.o // `dtrace -G' has created `$dtraceNNNN.*' symbols in a `.SUNW_dof' section. // $ nm rwlock.o | fgrep '$dtrace' 00000000000005f8 T $dtrace359234.isc_rwlock_destroy 0000000000000509 T $dtrace359234.isc_rwlock_downgrade 000000000000053f T $dtrace359234.isc_rwlock_init 0000000000000191 T $dtrace359234.isc_rwlock_rdlock 00000000000002ad T $dtrace359234.isc_rwlock_rdunlock 0000000000000246 T $dtrace359234.isc_rwlock_tryrdlock 00000000000002d7 T $dtrace359234.isc_rwlock_tryupgrade 0000000000000458 T $dtrace359234.isc_rwlock_trywrlock 00000000000003cb T $dtrace359234.isc_rwlock_wrlock 000000000000042e T $dtrace359234.isc_rwlock_wrunlock $ nm -u probes.o | fgrep '$dtrace' U $dtrace359234.isc_rwlock_destroy U $dtrace359234.isc_rwlock_downgrade U $dtrace359234.isc_rwlock_init U $dtrace359234.isc_rwlock_rdlock U $dtrace359234.isc_rwlock_rdunlock U $dtrace359234.isc_rwlock_tryrdlock U $dtrace359234.isc_rwlock_tryupgrade U $dtrace359234.isc_rwlock_trywrlock U $dtrace359234.isc_rwlock_wrlock U $dtrace359234.isc_rwlock_wrunlock // Create dummy shared lib. // $ cc -shared -o libfoo.so probes.o ld: probes.o: warning: relocation against `$dtrace359234.isc_rwlock_tryrdlock' in read-only section `.SUNW_dof' ld: warning: creating DT_TEXTREL in a shared object // Do it right. // $ cc -shared -o libfoo.so probes.o rwlock.o $ exit ``` So, in your case (from what you've shown me), it looks like the `rwlock.o' prior to a `dtrace -G' run is being used. You should find out why. (While I know _some_ dtrace, my Meson is practically nil.) HTH, -RVP