[DTrace-devel] [PATCH v2] test: Add tests for ldpath
Kris Van Hees
kris.van.hees at oracle.com
Fri Feb 24 04:49:16 UTC 2023
On Mon, Feb 20, 2023 at 02:27:59PM -0500, Kris Van Hees via DTrace-devel wrote:
> On Fri, Feb 17, 2023 at 01:49:02PM -0500, eugene.loh--- via DTrace-devel wrote:
> > From: Eugene Loh <eugene.loh at oracle.com>
> >
> > Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
... with the modification I described below.
> > ---
> > .../options/err.D_PRAGMA_OPTSET.ldpath.d | 19 +++++++++++++++++++
> > .../options/err.D_PRAGMA_OPTSET.ldpath.r | 2 ++
> > test/unittest/options/err.ldpath.d | 19 +++++++++++++++++++
> > test/unittest/options/err.ldpath.r | 3 +++
> > test/unittest/options/err.ldpath.r.p | 3 +++
> > test/unittest/options/tst.ldpath.sh | 17 +++++++++++++++++
> > 6 files changed, 63 insertions(+)
> > create mode 100644 test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.d
> > create mode 100644 test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.r
> > create mode 100644 test/unittest/options/err.ldpath.d
> > create mode 100644 test/unittest/options/err.ldpath.r
> > create mode 100755 test/unittest/options/err.ldpath.r.p
> > create mode 100755 test/unittest/options/tst.ldpath.sh
> >
> > diff --git a/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.d b/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.d
> > new file mode 100644
> > index 00000000..d5457593
> > --- /dev/null
> > +++ b/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.d
> > @@ -0,0 +1,19 @@
> > +/*
> > + * Oracle Linux DTrace.
> > + * Copyright (c) 2023, 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.
> > + */
> > +
> > +/*
> > + * ASSERTION: Option ldpath cannot be used from within a D program.
> > + *
> > + * SECTION: Options and Tunables/Consumer Options
> > + */
> > +
> > +#pragma D option ldpath=/nonexistent/directory
> > +
> > +BEGIN
> > +{
> > + exit(0);
> > +}
> > diff --git a/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.r b/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.r
> > new file mode 100644
> > index 00000000..a717f859
> > --- /dev/null
> > +++ b/test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.r
> > @@ -0,0 +1,2 @@
> > +-- @@stderr --
> > +dtrace: failed to compile script test/unittest/options/err.D_PRAGMA_OPTSET.ldpath.d: [D_PRAGMA_OPTSET] line 14: failed to set option 'ldpath' to '/nonexistent/directory': Option cannot be used from within a D program
> > diff --git a/test/unittest/options/err.ldpath.d b/test/unittest/options/err.ldpath.d
> > new file mode 100644
> > index 00000000..576e22e6
> > --- /dev/null
> > +++ b/test/unittest/options/err.ldpath.d
> > @@ -0,0 +1,19 @@
> > +/*
> > + * Oracle Linux DTrace.
> > + * Copyright (c) 2023, 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.
> > + */
> > +
> > +/*
> > + * ASSERTION: The ldpath option changes the ld path.
> > + *
> > + * SECTION: Options and Tunables/Consumer Options
> > + */
> > +
> > +/* @@runtest-opts: -G -xldpath=/nonexistent/ld */
> > +
> > +BEGIN
> > +{
> > + exit(0);
> > +}
> > diff --git a/test/unittest/options/err.ldpath.r b/test/unittest/options/err.ldpath.r
> > new file mode 100644
> > index 00000000..87725469
> > --- /dev/null
> > +++ b/test/unittest/options/err.ldpath.r
> > @@ -0,0 +1,3 @@
> > +-- @@stderr --
> > +sh: /nonexistent/ld: No such file or directory
> > +dtrace: failed to link script test/unittest/options/err.ldpath: failed to link err.ldpath.o: /nonexistent/ld exited with status 127
> > diff --git a/test/unittest/options/err.ldpath.r.p b/test/unittest/options/err.ldpath.r.p
> > new file mode 100755
> > index 00000000..61a5d637
> > --- /dev/null
> > +++ b/test/unittest/options/err.ldpath.r.p
> > @@ -0,0 +1,3 @@
> > +#!/usr/bin/gawk -f
> > +
> > +{ sub("line 1: ", ""); print }
>
> This does not work for all cases, i.e. Debian's default /usr/bin/sh is dash
> which outputs a different error message:
>
> sh: 1: /nonexistent/ld: not found
>
> And actually, bash gives us:
>
> sh: /nonexistent/ld: No such file or directory
>
> So, consistency is really lacking. Just checking for the string
> ": /nonexistent/ld:" should be sufficient though.
>
> > diff --git a/test/unittest/options/tst.ldpath.sh b/test/unittest/options/tst.ldpath.sh
> > new file mode 100755
> > index 00000000..96d12871
> > --- /dev/null
> > +++ b/test/unittest/options/tst.ldpath.sh
> > @@ -0,0 +1,17 @@
> > +#!/bin/bash
> > +#
> > +# Oracle Linux DTrace.
> > +# Copyright (c) 2023, 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.
> > +#
> > +
> > +dtrace=$1
> > +
> > +DIRNAME="$tmpdir/ldpath.$$.$RANDOM"
> > +mkdir -p $DIRNAME
> > +cd $DIRNAME
> > +
> > +# ldpath=ld does nothing remarkable, but this test complements err.ldpath.d
> > +$dtrace $dt_flags -G -xldpath=ld -n 'BEGIN {exit(0)}'
> > +exit $?
> > --
> > 2.18.4
> >
> >
> > _______________________________________________
> > DTrace-devel mailing list
> > DTrace-devel at oss.oracle.com
> > https://oss.oracle.com/mailman/listinfo/dtrace-devel
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list