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

Reply via email to