<div dir="ltr">Hi,<div>the last fix I submitted really looked good on Ubuntu, but never the less on Debian 17.11.1 is still broken.</div><div><br></div><div>I realized that the new zlib dependency fixed the lack of -lz we had (fine).</div><div>But the use of pkg-config brought more.</div><div><br></div><div><br class="gmail-Apple-interchange-newline"><span style="color:rgb(34,34,34);font-family:monospace;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Note: the test that fails is looking for pthread as 2nd level dependency, which became a 1st level dependency due to lniking that much directly.</span><br></div><div><br></div><div>In my case I formerly essentially run the old test against the new upload.</div><div>That gives me:</div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">Linkage info
</span><br>COLLECT_GCC_OPTIONS='-v' '-o' 'testlinkage.bin' '-Wall' '-Werror' '-include' '/usr/include/x86_64-linux-gnu/dpdk/rte_config.h' '-I' '/usr/include/<br>x86_64-linux-gnu/dpdk' '-I' '/usr/include/dpdk' '-mtune=generic' '-march=x86-64'
<br>testlinkage.bin => ./testlinkage.bin (interpreter => /lib64/ld-linux-x86-64.so.2)
<br> librte_eal.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11
<br> libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
<br> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
<br> librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
<br> libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1
<br> ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
<br> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6<br><br></span></div><div><span style="font-family:monospace">Which works fine, but due to the use of pkg-config it will be like [1]</span></div><div><span style="font-family:monospace">In that due to the long -l linkage list it will be:</span></div><div><span style="font-family:monospace"><br></span></div><div><div><font face="monospace">Linkage info</font></div><div><font face="monospace">testlinkage.bin => ./testlinkage.bin (interpreter => /lib64/ld-linux-x86-64.so.2)</font></div><div><font face="monospace"> librte_acl.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_acl.so.17.11</font></div><div><font face="monospace"> ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2</font></div><div><font face="monospace"> librte_bitratestats.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_bitratestats.so.17.11</font></div><div><font face="monospace"> librte_bus_pci.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_bus_pci.so.17.11</font></div><div><font face="monospace"> librte_bus_vdev.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_bus_vdev.so.17.11</font></div><div><font face="monospace"> librte_cfgfile.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_cfgfile.so.17.11</font></div><div><font face="monospace"> librte_cmdline.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_cmdline.so.17.11</font></div><div><font face="monospace"> librte_cryptodev.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_cryptodev.so.17.11</font></div><div><font face="monospace"> librte_distributor.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_distributor.so.17.11</font></div><div><font face="monospace"> librte_eal.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11</font></div><div><font face="monospace"> libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1</font></div><div><font face="monospace"> librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1</font></div><div><font face="monospace"> libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1</font></div><div><font face="monospace"> librte_efd.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_efd.so.17.11</font></div><div><font face="monospace"> librte_ethdev.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_ethdev.so.17.11</font></div><div><font face="monospace"> librte_eventdev.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_eventdev.so.17.11</font></div><div><font face="monospace"> librte_flow_classify.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_flow_classify.so.17.11</font></div><div><font face="monospace"> librte_gro.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_gro.so.17.11</font></div><div><font face="monospace"> librte_gso.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_gso.so.17.11</font></div><div><font face="monospace"> librte_hash.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_hash.so.17.11</font></div><div><font face="monospace"> librte_ip_frag.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_ip_frag.so.17.11</font></div><div><font face="monospace"> librte_jobstats.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_jobstats.so.17.11</font></div><div><font face="monospace"> librte_kni.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_kni.so.17.11</font></div><div><font face="monospace"> librte_kvargs.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_kvargs.so.17.11</font></div><div><font face="monospace"> librte_latencystats.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_latencystats.so.17.11</font></div><div><font face="monospace"> librte_lpm.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_lpm.so.17.11</font></div><div><font face="monospace"> librte_mbuf.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_mbuf.so.17.11</font></div><div><font face="monospace"> librte_member.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_member.so.17.11</font></div><div><font face="monospace"> librte_mempool.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_mempool.so.17.11</font></div><div><font face="monospace"> librte_mempool_octeontx.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_mempool_octeontx.so.17.11</font></div><div><font face="monospace"> librte_mempool_ring.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_mempool_ring.so.17.11</font></div><div><font face="monospace"> librte_mempool_stack.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_mempool_stack.so.17.11</font></div><div><font face="monospace"> librte_meter.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_meter.so.17.11</font></div><div><font face="monospace"> librte_metrics.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_metrics.so.17.11</font></div><div><font face="monospace"> librte_net.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_net.so.17.11</font></div><div><font face="monospace"> librte_pci.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pci.so.17.11</font></div><div><font face="monospace"> librte_pdump.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pdump.so.17.11</font></div><div><font face="monospace"> librte_pipeline.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pipeline.so.17.11</font></div><div><font face="monospace"> librte_pmd_af_packet.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_af_packet.so.17.11</font></div><div><font face="monospace"> librte_pmd_ark.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_ark.so.17.11</font></div><div><font face="monospace"> librte_pmd_avp.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_avp.so.17.11</font></div><div><font face="monospace"> librte_pmd_bnxt.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_bnxt.so.17.11</font></div><div><font face="monospace"> librte_pmd_bond.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_bond.so.17.11</font></div><div><font face="monospace"> librte_pmd_crypto_scheduler.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_crypto_scheduler.so.17.11</font></div><div><font face="monospace"> librte_pmd_cxgbe.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_cxgbe.so.17.11</font></div><div><font face="monospace"> librte_pmd_e1000.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_e1000.so.17.11</font></div><div><font face="monospace"> librte_pmd_ena.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_ena.so.17.11</font></div><div><font face="monospace"> librte_pmd_enic.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_enic.so.17.11</font></div><div><font face="monospace"> librte_pmd_failsafe.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_failsafe.so.17.11</font></div><div><font face="monospace"> librte_pmd_fm10k.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_fm10k.so.17.11</font></div><div><font face="monospace"> librte_pmd_i40e.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_i40e.so.17.11</font></div><div><font face="monospace"> librte_pmd_ixgbe.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_ixgbe.so.17.11</font></div><div><font face="monospace"> librte_pmd_kni.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_kni.so.17.11</font></div><div><font face="monospace"> librte_pmd_lio.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_lio.so.17.11</font></div><div><font face="monospace"> librte_pmd_nfp.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_nfp.so.17.11</font></div><div><font face="monospace"> librte_pmd_null.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_null.so.17.11</font></div><div><font face="monospace"> librte_pmd_null_crypto.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_null_crypto.so.17.11</font></div><div><font face="monospace"> librte_pmd_octeontx.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_octeontx.so.17.11</font></div><div><font face="monospace"> librte_pmd_octeontx_ssovf.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_octeontx_ssovf.so.17.11</font></div><div><font face="monospace"> librte_pmd_pcap.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_pcap.so.17.11</font></div><div><font face="monospace"> libpcap.so.0.8 => /usr/lib/x86_64-linux-gnu/libpcap.so.0.8</font></div><div><font face="monospace"> librte_pmd_qede.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_qede.so.17.11</font></div><div><font face="monospace"> librte_pmd_ring.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_ring.so.17.11</font></div><div><font face="monospace"> librte_pmd_sfc_efx.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_sfc_efx.so.17.11</font></div><div><font face="monospace"> librte_pmd_skeleton_event.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_skeleton_event.so.17.11</font></div><div><font face="monospace"> librte_pmd_softnic.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_softnic.so.17.11</font></div><div><font face="monospace"> librte_pmd_sw_event.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_sw_event.so.17.11</font></div><div><font face="monospace"> librte_pmd_tap.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_tap.so.17.11</font></div><div><font face="monospace"> librte_pmd_thunderx_nicvf.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_thunderx_nicvf.so.17.11</font></div><div><font face="monospace"> librte_pmd_vhost.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_vhost.so.17.11</font></div><div><font face="monospace"> librte_pmd_virtio.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_virtio.so.17.11</font></div><div><font face="monospace"> librte_pmd_vmxnet3_uio.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_pmd_vmxnet3_uio.so.17.11</font></div><div><font face="monospace"> librte_port.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_port.so.17.11</font></div><div><font face="monospace"> librte_power.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_power.so.17.11</font></div><div><font face="monospace"> librte_reorder.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_reorder.so.17.11</font></div><div><font face="monospace"> librte_ring.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_ring.so.17.11</font></div><div><font face="monospace"> librte_sched.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_sched.so.17.11</font></div><div><font face="monospace"> librte_security.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_security.so.17.11</font></div><div><font face="monospace"> librte_table.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_table.so.17.11</font></div><div><font face="monospace"> librte_timer.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_timer.so.17.11</font></div><div><font face="monospace"> librte_vhost.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_vhost.so.17.11</font></div><div><font face="monospace"> libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2</font></div><div><font face="monospace"> libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6</font></div><div><font face="monospace"> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0</font></div><div><font face="monospace"> libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1</font></div><div><font face="monospace"> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6</font></div></div><div><font face="monospace"><br></font></div><div><font face="monospace">I wondered about the difference and thought it might be due to my tests running against an Ubuntu build of it (in a ppa).</font></div><div><font face="monospace">I set the test to be more verbose and re-ran it, but same result.</font></div><div><font face="monospace"><br></font></div><div><font face="monospace">The list above seems that it linked it "all into the test" in the Debian case.</font></div><div><font face="monospace">Which is a bit of a overdose given what the test does, the Ubuntu result looks much saner.</font></div><div><br></div><div>I checked Ubuntu in dtail with -x on the script, but it does run the pkg-config and build happens to be :</div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">+ gcc -v testlinkage.c -o testlinkage.bin -Wall -Werror -include /usr/include/x86_64-linux-gnu/dpdk/rte_config.h -I/usr/include/x86_64-linux-gnu/d</span><br>pdk -I/usr/include/dpdk -lrte_acl -lrte_bitratestats -lrte_bus_pci -lrte_bus_vdev -lrte_cfgfile -lrte_cmdline -lrte_cryptodev -lrte_distributor -l<br>rte_eal -lrte_efd -lrte_ethdev -lrte_eventdev -lrte_flow_classify -lrte_gro -lrte_gso -lrte_hash -lrte_ip_frag -lrte_jobstats -lrte_kni -lrte_kvar<br>gs -lrte_latencystats -lrte_lpm -lrte_mbuf -lrte_member -lrte_mempool -lrte_mempool_octeontx -lrte_mempool_ring -lrte_mempool_stack -lrte_meter -l<br>rte_metrics -lrte_net -lrte_pci -lrte_pdump -lrte_pipeline -lrte_pmd_af_packet -lrte_pmd_ark -lrte_pmd_avp -lrte_pmd_bnxt -lrte_pmd_bond -lrte_pmd<br>_crypto_scheduler -lrte_pmd_cxgbe -lrte_pmd_e1000 -lrte_pmd_ena -lrte_pmd_enic -lrte_pmd_failsafe -lrte_pmd_fm10k -lrte_pmd_i40e -lrte_pmd_ixgbe -<br>lrte_pmd_kni -lrte_pmd_lio -lrte_pmd_nfp -lrte_pmd_null -lrte_pmd_null_crypto -lrte_pmd_octeontx -lrte_pmd_octeontx_ssovf -lrte_pmd_pcap -lrte_pmd<br>_qede -lrte_pmd_ring -lrte_pmd_sfc_efx -lrte_pmd_skeleton_event -lrte_pmd_softnic -lrte_pmd_sw_event -lrte_pmd_tap -lrte_pmd_thunderx_nicvf -lrte_<br>pmd_vhost -lrte_pmd_virtio -lrte_pmd_vmxnet3_uio -lrte_port -lrte_power -lrte_reorder -lrte_ring -lrte_sched -lrte_security -lrte_table -lrte_time<br>r -lrte_vhost -ldl -lm -lpthread -lz<br></span><br></div><div>Yet the outcome is working and only has the effective dependencies:</div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">Linkage info
</span><br>testlinkage.bin => ./testlinkage.binCOLLECT_GCC_OPTIONS='-v' '-o' 'testlinkage.bin' '-Wall' '-Werror' '-include' '/usr/include/x86_64-linux-gnu/dp<br>dk/rte_config.h' '-I' '/usr/include/x86_64-linux-gnu/dpdk' '-I' '/usr/include/dpdk' '-mtune=generic' '-march=x86-64'
<br>+ echo OK
<br>+ printf '\n\nLinkage info\n'
<br>+ lddtree testlinkage.bin
<br> (interpreter => /lib64/ld-linux-x86-64.so.2)
<br> librte_eal.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11
<br> libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
<br> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
<br> librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
<br> libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1
<br> ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
<br> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6<br>
<br></span>I slightly wonder on the reported COLLECT_GCC_OPTIONS being short.</div><div><br></div><div><span style="font-family:monospace">Lets see if I can build a debian autopkgtest target for this ...</span></div><div>Ok I can at least reproduce via <span style="font-family:monospace"><span style="color:rgb(0,0,0)">(ubuntu1 is just the set -x to 17.11.1-4)</span></span>:</div><div> $ <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">autopkgtest --test-name=test-linkage --apt-upgrade --shell-fail --no-built-binaries dpdk_17.11.1-4ubuntu1.dsc -- lxd images:debian/sid/amd64</span><br></span></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">And compare it to:</span></span></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> $ autopkgtest --test-name=test-linkage --apt-upgrade --shell-fail --no-built-binaries <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">--setup-commands="add-apt-repository ppa:ci-train-ppa-servic</span><br>e/3193; apt update; apt -y upgrade" </span>dpdk_17.11.1-4ubuntu1.dsc -- lxd ubuntu-daily:bionic/amd64</span><br></span></span></span></div><div><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">(I need the ppa on Ubuntu to get past the -lz issue)</span></span></span></span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">It still is different, grml.</span></div><div><span style="font-family:monospace">Lets do a line by line comparison</span></div><div><span style="font-family:monospace">Debian [2]</span></div><div><span style="font-family:monospace">Ubuntu [3]</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">Hmm, options are all the same.</span></div><div><span style="font-family:monospace">But I run against 17.11 and the Debian case against 17.11.1</span></div><div><span style="font-family:monospace">Everything else is the same so a change to 17.11.1 itself seems to trigger this.</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">Could this be the silly new header include?</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">Since I can jump into the Debian container why not just hack on there ...</span></div><div><font face="monospace"><insert random rant against selection of stable patches if this is true></font></div><div><font face="monospace"><br></font></div><div><font face="monospace">It is not (and should not be) the <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">/usr/include/dpdk/rte_common.h include that we hit before - at least disabling </span></span></font><span style="color:rgb(0,0,0);font-family:monospace">the include of rtc_config.h in there that was brought by </span><span style="color:rgb(0,0,0);font-family:monospace"><span style="color:rgb(178,104,24)">340edf8d </span></span><span style="color:rgb(0,0,0);font-family:monospace">lib: fix missing includes in exported headers didn't change anything.</span></div><div><font face="monospace"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace"><br></span></span></span></font></div><div><font face="monospace"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace">So what else in the stable patches might cause this.</span></span></span></font></div><div><font face="monospace"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace">We use plan gcc, not the dpdk mk infrastructure so most changes should not affect us.</span></span></span></font></div><div><font face="monospace"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><span style="font-family:monospace"><br></span></span></span></font></div><div><font face="monospace"><span style="background-color:rgb(255,255,255)"><font color="#000000">The above is the only direct change to rte_common.h, so it must be either changes to lower headers - or given that we face a linkage change - effects to the built .so's that behave different (or something completely else).</font><br>
<br>Lets take a look at the libs in 17.11.1 vs 17.11</span></font></div><div><font face="monospace"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">$ dpkg -S /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11
</span><br>librte-eal17.11:amd64: /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11<br></span><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">$ dpkg -l <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">librte-eal17.11</span><br></span></span></span></span></font></div><div><font face="monospace"><span style="background-color:rgb(255,255,255)"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">librte-eal17.11:amd64 17.11.1-4</span><br></span>$ lddtree <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">/usr/lib/x86_64-linux-gnu/librte_eal.so.17.11</span></span><br><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">librte_eal.so.17.11 => /usr/lib/x86_64-linux-gnu/librte_eal.so.17.11 (interpreter => none)
</span><br> libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
<br> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
<br> libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
<br> librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1
<br> libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1
<br> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
<br> ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2<br></span><br></span></font></div><div><font face="monospace"><span style="background-color:rgb(255,255,255)">That looks the same and sand on 17.11 just as on 17.11.1</span></font></div><div><font face="monospace"><span style="background-color:rgb(255,255,255)">Ok, what else would affect our testlinkage.c build but not show up in the verbose gcc output that we compared above?</span></font></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">GCC Versions?</span></div><div><span style="font-family:monospace">Both are 7.3 derivatives, slight differences in "<span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">-fstack-protector-strong -Wformat-security" defaults, but that isn't "it".</span><br></span></span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace">Oh I found it I think.</span></div><div><span style="font-family:monospace">Look at this (simplified) from gcc's verbose output (converted spaces to line breaks) in the collect2 call.</span></div><div><span style="font-family:monospace"><br></span></div><div><span style="font-family:monospace"><span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)">$ diff /tmp/foo2 /tmp/bar2 </span><br>15a16
<br>> --as-needed
<br>18a20,23
<br>> -z
<br>> now
<br>> -z
<br>> relro<br></span><br></span></div><div>That would exactly explain what we see, so how die the Debian 17.11.1 build loose this?</div><div>Ubuntu has 7.3.0-11ubuntu1 in proposed, but currently is at 7.3.0-5ubuntu1.</div><div>Maybe there was a change?</div><div>7.3.0-6 has in its changelog: "Update gcc-as-needed.diff"<br></div><div>But bumping Ubuntus gcc to the new versiosn doesn't change it.</div><div><br></div><div>Where does it get the flags for collect2 in this case from?</div><div>With some discussions I found that Debian/Ubuntu differ a long time on this actually.</div><div>But only now it now became an issue for our test.</div><div><br></div><div>Here from gcc -dumpspecs on the *link stage</div><div>Ubuntu: ... --hash-style=gnu --as-needed %{shared:-shared} ...</div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Debian: ... --hash-style=gnu %{shared:-shared} ...</span><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">That made Ubuntu always having a much narrower link scope.</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Any anything built though the dpdk build system has so as well, by - actually us - triggering via discussions by us IIRC</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><span style="font-family:monospace"><span style="color:rgb(178,104,24);background-color:rgb(255,255,255)">6248e442</span><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> m</span>k: prevent overlinking in applications<br></span><span style="font-family:monospace"><span style="color:rgb(178,104,24);background-color:rgb(255,255,255)">4e04fd45</span> mk: remove library grouping during application linking<br></span><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Anyway, what to do about it - we want it in a way that works for both Distributions.</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">With all of the above found I think we need:</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">- change the testlinkage build to use the dpdk build system</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"> This will fix some of the issues as well as test the build system integration that we deliver</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">- Fix some minor things I found on the way</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">- Make the test verbose to understand faster what is going on</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">- Check the second level on something the base will not link to (librt atm, but libnuma would do as well)</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">The last change would be enough, but I thought while at it lets do it right.</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">I made a test build and ran it through Debian (17.11.1-4) and Ubunut (17.11-5).</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Both are good, I'll send a patch against 17.11.x but I thought some explanation might be useful :-)</span></div><div><br></div><div><span style="font-family:monospace">[1]: </span><font face="monospace"><a href="https://ci.debian.net/data/autopkgtest/unstable/amd64/d/dpdk/20180312_234523/log.gz">https://ci.debian.net/data/autopkgtest/unstable/amd64/d/dpdk/20180312_234523/log.gz</a></font></div><div><font face="monospace">[2]: <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><a href="http://paste.ubuntu.com/p/PQ9zZVmytN/">http://paste.ubuntu.com/p/PQ9zZVmytN/</a></span><br></span></font></div><div><font face="monospace">[3]: <span style="font-family:monospace"><span style="color:rgb(0,0,0);background-color:rgb(255,255,255)"><a href="http://paste.ubuntu.com/p/8pGsGxBs73/">http://paste.ubuntu.com/p/8pGsGxBs73/</a></span><br></span></font></div><div><br></div><div><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><span style="color:rgb(136,136,136);font-size:12.8px">Christian Ehrhardt</span><div style="color:rgb(136,136,136);font-size:12.8px">Software Engineer, Ubuntu Server</div><div style="color:rgb(136,136,136);font-size:12.8px">Canonical Ltd</div></div></div></div></div>
</div></div>