Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Getting BIND 9.21.x to build?



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


Home | Main Index | Thread Index | Old Index