[DTrace-devel] [PATCH] Remove list of pre-populated BPF function symbols

Eugene Loh eugene.loh at oracle.com
Wed Feb 16 21:41:14 UTC 2022


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

On 2/16/22 3:49 PM, Kris Van Hees via DTrace-devel wrote:
> The list of pre-defined BPF function symbols is no longer needed because
> it gets populated by loading the BPF dlib.
>
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_as.c    | 20 ++------------------
>   libdtrace/dt_dlibs.c | 29 +++++++----------------------
>   2 files changed, 9 insertions(+), 40 deletions(-)
>
> diff --git a/libdtrace/dt_as.c b/libdtrace/dt_as.c
> index d88fe65c..8ae7bd96 100644
> --- a/libdtrace/dt_as.c
> +++ b/libdtrace/dt_as.c
> @@ -1,6 +1,6 @@
>   /*
>    * Oracle Linux DTrace.
> - * Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2005, 2022, 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.
>    */
> @@ -521,23 +521,7 @@ fail:
>   				 */
>   				rp->dofr_name = (dof_stridx_t)soff;
>   				rp->dofr_offset = (i - 1) * sizeof(uint64_t);
> -
> -				/*
> -				 * BPF built-in functions (predicate and
> -				 * program) are special because they are part
> -				 * of the executable code we are processing
> -				 * here.  Set the value in the relocation entry
> -				 * to be the instruction offset of the function
> -				 * *and* update the call instruction with the
> -				 * correct offset delta.
> -				 */
> -				if (idp->di_kind == DT_IDENT_FUNC) {
> -					assert(idp->di_id < dlp->dl_label);
> -					rp->dofr_data = labels[idp->di_id];
> -					dp->dtdo_buf[i - 1].imm =
> -							labels[idp->di_id] - i;
> -				} else
> -					rp->dofr_data = idp->di_id;
> +				rp->dofr_data = idp->di_id;
>   			} else {
>   				/*
>   				 * Relocation for a regular external symbol.
> diff --git a/libdtrace/dt_dlibs.c b/libdtrace/dt_dlibs.c
> index a15b8269..ebed0509 100644
> --- a/libdtrace/dt_dlibs.c
> +++ b/libdtrace/dt_dlibs.c
> @@ -1,6 +1,6 @@
>   /*
>    * Oracle Linux DTrace.
> - * Copyright (c) 2008, 2021, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2008, 2022, 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.
>    */
> @@ -50,28 +50,11 @@ static dtrace_attribute_t	dt_bpf_attr = DT_ATTR_STABCMN;
>   
>   static const dt_ident_t		dt_bpf_symbols[] = {
>   	/* BPF built-in functions */
> -	DT_BPF_SYMBOL(dt_program, DT_IDENT_FUNC),
> -	/* BPF library (external) functions */
> -	DT_BPF_SYMBOL(dt_agg_lqbin, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_agg_qbin, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_basename, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_dirname, DT_IDENT_SYMBOL),
>   	DT_BPF_SYMBOL(dt_error, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_get_bvar, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_get_tvar, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_index, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_lltostr, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_rindex, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strchr, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strcmp, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strjoin, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strrchr, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strtok, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_substr, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_speculation, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_speculation_speculate, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_speculation_set_drainable, DT_IDENT_SYMBOL),
> -	DT_BPF_SYMBOL(dt_strnlen, DT_IDENT_SYMBOL),
> +
> +	/* BPF library (external) functions */
> +	/* not pre-populated  (identifier type DT_IDENT_SYMBOL) */
> +
>   	/* BPF maps */
>   	DT_BPF_SYMBOL(aggs, DT_IDENT_PTR),
>   	DT_BPF_SYMBOL(buffers, DT_IDENT_PTR),
> @@ -84,6 +67,7 @@ static const dt_ident_t		dt_bpf_symbols[] = {
>   	DT_BPF_SYMBOL(specs, DT_IDENT_PTR),
>   	DT_BPF_SYMBOL(state, DT_IDENT_PTR),
>   	DT_BPF_SYMBOL(strtab, DT_IDENT_PTR),
> +
>   	/* BPF internal identifiers */
>   	DT_BPF_SYMBOL_ID(EPID, DT_IDENT_SCALAR, DT_CONST_EPID),
>   	DT_BPF_SYMBOL_ID(PRID, DT_IDENT_SCALAR, DT_CONST_PRID),
> @@ -95,6 +79,7 @@ static const dt_ident_t		dt_bpf_symbols[] = {
>   	DT_BPF_SYMBOL_ID(BOOTTM, DT_IDENT_SCALAR, DT_CONST_BOOTTM),
>   	DT_BPF_SYMBOL_ID(NSPEC, DT_IDENT_SCALAR, DT_CONST_NSPEC),
>   	DT_BPF_SYMBOL_ID(NCPUS, DT_IDENT_SCALAR, DT_CONST_NCPUS),
> +
>   	/* End-of-list marker */
>   	{ NULL, }
>   };



More information about the DTrace-devel mailing list