Re: [PATCH 3/3] test: adjust tst.pidprobes.sh to account for PIE executables
Eugene Loh <[email protected]> Mon, 9 Feb 2026 19:02:44 -0500
| Newsgroups | dev.linux.lists.dtrace |
|---|---|
| Message-ID | <[email protected]> |
Reviewed-by: Eugene Loh <[email protected]> though s/reults/results/ in the commit message would be nice. On 2/9/26 15:43, Kris Van Hees wrote: > When the test executable is compiled as position independent code, > the comparison with expected reults fails unless the reported PC > values are adjusted based on the actual load address. This is safe > to do in general, because for non-PIE cases the adjustment will be > 0. > > Signed-off-by: Kris Van Hees <[email protected]> > --- > test/unittest/usdt/tst.pidprobes.sh | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/test/unittest/usdt/tst.pidprobes.sh b/test/unittest/usdt/tst.pidprobes.sh > index 24fbd518..80de5140 100755 > --- a/test/unittest/usdt/tst.pidprobes.sh > +++ b/test/unittest/usdt/tst.pidprobes.sh > @@ -1,7 +1,7 @@ > #!/bin/bash > # > # Oracle Linux DTrace. > -# Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved. > +# Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. > # Licensed under the Universal Permissive License v 1.0 as shown at > # http://oss.oracle.com/licenses/upl. > # > @@ -119,8 +119,11 @@ fi > pcs=`awk '{print strtonum("0x"$1)}' disasm_foo.txt` > pc0=`echo $pcs | awk '{print $1}'` > > -# Construct D script: add a pid$pid::-:$absoff probe for each PC in foo. > +# Construct D script: add a pid$pid::-:$pc0 probe to determine base address. > +printf 'p*d$target::-:%x\n' $pc0 >> pidprobes.d > +printf '{\n\tbase = uregs[R_PC] - %s;\n}\n' $pc0 >> pidprobes.d > > +# Construct D script: add a pid$pid::-:$absoff probe for each PC in foo. > for pc in $pcs; do > printf 'p*d$target::-:%x,\n' $pc >> pidprobes.d > done > @@ -130,7 +133,7 @@ done > cat >> pidprobes.d <<'EOF' > p*d$target::foo: > { > - printf("%d %s:%s:%s:%s %x\n", pid, probeprov, probemod, probefunc, probename, uregs[R_PC]); > + printf("%d %s:%s:%s:%s %x\n", pid, probeprov, probemod, probefunc, probename, uregs[R_PC] - base); > } > EOF >