Sat Sep 24 2022 11:12:08 GMT+0100 ~ Xin Liu <liuxin350@xxxxxxxxxx> > Some programs depned on libbpf.a(eg:bpftool). If libbpf.a miss -fPIC, Typo "depned" > this will cause a similar error at compile time: > > /usr/bin/ld: .../libbpf.a(libbpf-in.o): relocation > R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which > may bind externally can not be used when making a sharedobject; > recompile with -fPIC > > Use -fPIC for static library compilation to solve this problem. > > Signed-off-by: Xin Liu <liuxin350@xxxxxxxxxx> > --- > tools/lib/bpf/Makefile | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile > index 4c904ef0b47e..427e971f4fcd 100644 > --- a/tools/lib/bpf/Makefile > +++ b/tools/lib/bpf/Makefile > @@ -91,9 +91,10 @@ override CFLAGS += $(INCLUDES) > override CFLAGS += -fvisibility=hidden > override CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 > override CFLAGS += $(CLANG_CROSS_FLAGS) > +override CFLAGS += -fPIC > > # flags specific for shared library > -SHLIB_FLAGS := -DSHARED -fPIC > +SHLIB_FLAGS := -DSHARED > > ifeq ($(VERBOSE),1) > Q = Hi, the two patches look OK to me, but it would be nice to have a bit more context on what the flags do other than “fixing this particular issue” and how they improve bpftool security. It would also be interesting to have a note on what it does on various architectures, my understanding is that only some archs are supported (I read AArch64, m68k, PowerPC and SPARC), I guess the flags are silently ignored on x86 for example? Thanks, Quentin