If libbpf encounters an ELF file that has been stripped of its symbol
table, it will crash in bpf_object__add_programs() when trying to
dereference the obj->efile.symbols pointer. Add a check and return to avoid
this.
Fixes: 6245947c1b3c ("libbpf: Allow gaps in BPF program sections to support overriden weak functions")
Signed-off-by: Toke Høiland-Jørgensen <redacted>
---
tools/lib/bpf/libbpf.c | 3 +++
1 file changed, 3 insertions(+)
On Tue, Aug 31, 2021 at 9:58 AM Toke Høiland-Jørgensen [off-list ref] wrote:
quoted hunk
If libbpf encounters an ELF file that has been stripped of its symbol
table, it will crash in bpf_object__add_programs() when trying to
dereference the obj->efile.symbols pointer. Add a check and return to avoid
this.
Fixes: 6245947c1b3c ("libbpf: Allow gaps in BPF program sections to support overriden weak functions")
Signed-off-by: Toke Høiland-Jørgensen <redacted>
---
tools/lib/bpf/libbpf.c | 3 +++
1 file changed, 3 insertions(+)
The more logical place to do this check is in
bpf_object__elf_collect(). Can you add this there? We can also include
helpful error message.
But I'm also curious which Clang version is being used to cause no ELF
symbols being generated?
On Tue, Aug 31, 2021 at 9:58 AM Toke Høiland-Jørgensen [off-list ref] wrote:
quoted
If libbpf encounters an ELF file that has been stripped of its symbol
table, it will crash in bpf_object__add_programs() when trying to
dereference the obj->efile.symbols pointer. Add a check and return to avoid
this.
Fixes: 6245947c1b3c ("libbpf: Allow gaps in BPF program sections to support overriden weak functions")
Signed-off-by: Toke Høiland-Jørgensen <redacted>
---
tools/lib/bpf/libbpf.c | 3 +++
1 file changed, 3 insertions(+)
The more logical place to do this check is in
bpf_object__elf_collect(). Can you add this there? We can also include
helpful error message.
Sure, can do.
But I'm also curious which Clang version is being used to cause no ELF
symbols being generated?
It's not Clang. I was debugging an issue with 'strip' mangling BPF
object files and ran into this after trying to load an object file that
had been run through a full 'strip bpf_object.o' (whereas 'strip -g
bpf_object.o' works fine, except for that one bug I'm looking at).
-Toke