libbpf: Build as PIC and statically link into libdwarves
As libbpf is not yet widely available, it's safer to statically link it into libdwarves for now. Easiest way to define that in cmake is through OBJECT library with PIC. Committer testing: $ file build/pahole build/pahole: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=666c97e5763ac0f4c5eff229be1532f1e60195e6, with debug_info, not stripped $ ldd build/pahole linux-vdso.so.1 (0x00007ffe5fdf8000) libdwarves_reorganize.so.1 => /home/acme/git/pahole/build/libdwarves_reorganize.so.1 (0x00007f1c84fa4000) libdwarves.so.1 => /home/acme/git/pahole/build/libdwarves.so.1 (0x00007f1c84f5e000) libdw.so.1 => /lib64/libdw.so.1 (0x00007f1c84eee000) libelf.so.1 => /lib64/libelf.so.1 (0x00007f1c84ed4000) libz.so.1 => /lib64/libz.so.1 (0x00007f1c84eba000) libc.so.6 => /lib64/libc.so.6 (0x00007f1c84cf4000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f1c84cec000) liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f1c84cc3000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f1c84cb0000) /lib64/ld-linux-x86-64.so.2 (0x00007f1c84fad000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1c84c8e000) $ $ nm build/libdwarves.so.1.0.0 | grep b[pt]f__ 0000000000028aae T btf__dedup 0000000000027d44 T btf__fd 0000000000027a37 T btf__find_by_name 0000000000027ad9 T btf__free 0000000000027da8 T btf__get_from_id 0000000000027f6c T btf__get_map_kv_tids 0000000000027739 T btf__get_nr_types 0000000000027d55 T btf__get_raw_data 0000000000027c2e T btf__load 0000000000027d77 T btf__name_by_offset 0000000000027b36 T btf__new 00000000000277eb T btf__resolve_size 0000000000027960 T btf__resolve_type 000000000002774a T btf__type_by_id $ Signed-off-by: Andrii Nakryiko <andriin@fb.com> Suggested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexei Starovoitov <ast@fb.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Cc: Yonghong Song <yhs@fb.com> Cc: bpf@vger.kernel.org Cc: dwarves@vger.kernel.org Cc: kernel-team@fb.com [ split from a larger patch ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
cf4f3e282d
commit
e6c59bd11d
|
@ -72,24 +72,19 @@ if (NOT HAVE_REALLOCARRAY_SUPPORT)
|
|||
endif()
|
||||
|
||||
file(GLOB libbpf_sources "lib/bpf/src/*.c")
|
||||
add_library(bpf-static STATIC ${libbpf_sources})
|
||||
set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bpf)
|
||||
target_include_directories(bpf-static PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
add_library(bpf-shared SHARED ${libbpf_sources})
|
||||
set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bpf)
|
||||
target_include_directories(bpf-shared PRIVATE
|
||||
add_library(bpf OBJECT ${libbpf_sources})
|
||||
set_property(TARGET bpf PROPERTY POSITION_INDEPENDENT_CODE 1)
|
||||
target_include_directories(bpf PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
||||
|
||||
set(dwarves_LIB_SRCS dwarves.c dwarves_fprintf.c gobuffer strings
|
||||
ctf_encoder.c ctf_loader.c libctf.c btf_encoder.c btf_loader.c libbtf.c
|
||||
dwarf_loader.c dutil.c elf_symtab.c rbtree.c)
|
||||
add_library(dwarves SHARED ${dwarves_LIB_SRCS})
|
||||
add_library(dwarves SHARED ${dwarves_LIB_SRCS} $<TARGET_OBJECTS:bpf>)
|
||||
set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
||||
set_target_properties(dwarves PROPERTIES INTERFACE_LINK_LIBRARIES "")
|
||||
target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} bpf-shared)
|
||||
target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES})
|
||||
|
||||
set(dwarves_emit_LIB_SRCS dwarves_emit.c)
|
||||
add_library(dwarves_emit SHARED ${dwarves_emit_LIB_SRCS})
|
||||
|
|
Loading…
Reference in New Issue