On Mon, Oct 11, 2021 at 5:56 PM Stanislav Fomichev <sdf@xxxxxxxxxx> wrote: > > We can't use section name anymore because it's not unique > and pinning objects with multiple programs with the same > progtype/secname will fail. > > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> > --- Seems like you've signed up yourself for [0]? ;) Please use the following syntax so that when this gets eventually synced to Github, the issue will be auto-closed. [0] Closes: https://github.com/libbpf/libbpf/issues/273 > tools/lib/bpf/libbpf.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c > index ae0889bebe32..0373ca86a54c 100644 > --- a/tools/lib/bpf/libbpf.c > +++ b/tools/lib/bpf/libbpf.c > @@ -285,7 +285,8 @@ struct bpf_program { > size_t sub_insn_off; > > char *name; > - /* sec_name with / replaced by _; makes recursive pinning > + /* sec_name (or name when using LIBBPF_STRICT_SEC_NAME) > + * with / replaced by _; makes recursive pinning let's remove specific mention of sec_name from this comment. Please add clarification to LIBBPF_STRICT_SEC_NAME comment instead, mentioning that it also changes the behavior of pinning. > * in bpf_object__pin_programs easier > */ > char *pin_name; > @@ -614,7 +615,11 @@ 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 = p = strdup(prog->name); > + else > + name = p = strdup(prog->sec_name); nit: instead of duplicating this double assignment, you can just do `p = name;` right before the below loop. It will be a bit cleaner. > + > while ((p = strchr(p, '/'))) > *p = '_'; > > -- > 2.33.0.882.g93a45727a2-goog >