Hi
I was trying to run testpmd from DPDK 16.04 on Linux with kernel version
4.4.0-1 (ld version 2.26). My machine has two
XL710QDA2 NICs, and I built DPDK as a shared, combined library (i.e.,
CONFIG_RTE_BUILD_SHARED_LIB=y and
CONFIG_RTE_BUILD_COMBINE_LIBS=y in config/common_linuxapp). I found that the
issue is due to ld not linking against all
libraries with the new linker script (introduced in 948fd64befc3726) but am not
sure how to fix this. As evidence for
this being caused by this change:
$ LD_TRACE_LOADED_OBJECTS=y ./testpmd -c 0x1c00 -n 4 -w 82:00.0 -w 82:00.1
--file-prefix "send" -- -i
linux-vdso.so.1 (0x00007ffe11b3e000)
librte_distributor.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_distributor.so.1.1
(0x00007fa55eb85000)
librte_reorder.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_reorder.so.1.1
(0x00007fa55e982000)
librte_pipeline.so.3.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_pipeline.so.3.1
(0x00007fa55e77d000)
librte_table.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_table.so.2.1
(0x00007fa55e55e000)
librte_port.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_port.so.2.1
(0x00007fa55e34e000)
librte_timer.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_timer.so.1.1
(0x00007fa55e145000)
librte_hash.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_hash.so.2.1
(0x00007fa55df37000)
librte_jobstats.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_jobstats.so.1.1
(0x00007fa55dd35000)
librte_lpm.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_lpm.so.2.1 (0x00007fa55db2e000)
librte_power.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_power.so.1.1
(0x00007fa55d91f000)
librte_acl.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_acl.so.2.1 (0x00007fa55d705000)
librte_meter.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_meter.so.1.1
(0x00007fa55d504000)
librte_sched.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_sched.so.1.1
(0x00007fa55d2fd000)
librte_vhost.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_vhost.so.2.1
(0x00007fa55d0e6000)
librte_kvargs.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_kvargs.so.1.1
(0x00007fa55cee4000)
librte_mbuf.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_mbuf.so.2.1
(0x00007fa55cce2000)
librte_ip_frag.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_ip_frag.so.1.1
(0x00007fa55cada000)
libethdev.so.3.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/libethdev.so.3.1 (0x00007fa55c84f000)
librte_cryptodev.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_cryptodev.so.1.1
(0x00007fa55c647000)
librte_mempool.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_mempool.so.1.1
(0x00007fa55c444000)
librte_ring.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_ring.so.1.1
(0x00007fa55c242000)
librte_eal.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_eal.so.2.1 (0x00007fa55bfe1000)
librte_cmdline.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_cmdline.so.2.1
(0x00007fa55bdd8000)
librte_cfgfile.so.2.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_cfgfile.so.2.1
(0x00007fa55bbd6000)
librte_pmd_bond.so.1.1 =>
/home/apanda/e2d2/3rdparty/dpdk/build/lib/librte_pmd_bond.so.1.1
(0x00007fa55b9c4000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
(0x00007fa55b7ae000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa55b5aa000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fa55b38d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa55afe9000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa55ed87000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa55aceb000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa55aae3000)
As you can see librte_pmd_i40e.so is missing from the list of files.
Furthermore, using
$ LD_PRELOAD="../lib/librte_pmd_i40e.so" ./testpmd -c 0x1c00 -n 4 -w 82:00.0 -w
82:00.1 --file-prefix "send" -- -i
correctly enumerates the NICs.
I unfortunately do not how to fix the linker script as checked in, but wanted
to report this bug in case someone has a fix.
Thanks
Panda