On 2023-03-14 17:29, Bruce Richardson wrote:
On Tue, Mar 14, 2023 at 05:22:02PM +0100, Mattias Rönnblom wrote:
Hi.
Is the "b_staticpic" meson build option supposed to work with DPDK?
Setting it to "false" (default is "true") causes link failures on Ubuntu
22.04, with GCC 9 and 11, on v23.03rc1 and v22.11:
/usr/bin/ld: lib/librte_eal.a.p/eal_common_eal_common_errno.c.o: relocation
R_X86_64_TPOFF32 against `per_lcore_retval.1' can not be used when making a
shared object; recompile with -fPIC
/usr/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
Does something per-lcore/TLS-related require PIC builds, even for static
libraries?
I don't think that is the issue. The "issue" is that DPDK always does both
static and shared builds from the same object files, so without -fPIC the
shared library parts of the build fails. To support not using staticpic,
we'd have to disable building the .so's in those cases, or each C file
built twice.
With "default_library" set to "static", shouldn't the shared objects be
skipped? I can see now, they are not.
From what I recall, PIC adds a significant overhead compared to PIE,
especially with default symbol visibility (e.g., no -fhidden).