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).

Reply via email to