On Tue, Oct 12, 2021 at 9:15 AM Stanislav Fomichev <sdf@xxxxxxxxxx> wrote: > > We can't use section name anymore because they are not unique > and pinning objects with multiple programs with the same > progtype/secname will fail. > > Closes: https://github.com/libbpf/libbpf/issues/273 > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > --- > tools/lib/bpf/libbpf.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index ae0889bebe32..d1646b32188f 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -285,7 +285,7 @@ struct bpf_program { > size_t sub_insn_off; > > char *name; > - /* sec_name with / replaced by _; makes recursive pinning > + /* name with / replaced by _; makes recursive pinning > * in bpf_object__pin_programs easier > */ > char *pin_name; > @@ -614,7 +614,13 @@ static char *__bpf_program__pin_name(struct bpf_program *prog) > { > char *name, *p; > > - name = p = strdup(prog->sec_name); > + if (libbpf_mode & LIBBPF_STRICT_SEC_NAME) > + name = strdup(prog->name); > + else > + name = strdup(prog->sec_name); > + > + p = name; > + > while ((p = strchr(p, '/'))) I bet this will SIGSEGV if p is NULL? Can you please add a check and Fixes: tag? > *p = '_'; > > -- > 2.33.0.882.g93a45727a2-goog >