[dpdk-dev] [PATCH v6 00/12] Add an option to use LTO for DPDK build

Andrzej Ostruszka amo at semihalf.com
Wed Oct 30 10:09:46 CET 2019


On 10/29/19 3:12 PM, Andrzej Ostruszka wrote:
> This patch series adds an option to make use of link time optimization
> (if compiler has support for it).
[...]
>  .travis.yml                                   |  7 ++++
[...]

Aaron, Michael, all

I'd probably need some assistance with Travis.  This patchset added
following changes:

diff --git a/.travis.yml b/.travis.yml
index 3d6ef2959..3cd746dba 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -34,6 +34,7 @@ env:
   - DEF_LIB="static" OPTS="-Denable_kmods=false"
   - DEF_LIB="shared" OPTS="-Denable_kmods=false"
   - DEF_LIB="shared" RUN_TESTS=1
+  - DEF_LIB="shared" OPTS="-Db_lto=true"

 matrix:
   include:
@@ -105,6 +106,12 @@ matrix:
       apt:
         packages:
           - *extra_packages
+  - env: DEF_LIB="shared" OPTS="-Db_lto=true" EXTRA_PACKAGES=1
+    compiler: gcc
+    addons:
+      apt:
+        packages:
+          - *extra_packages


however I have to admit I'm not familiar with Travis and the actual
meaning of that configuration (that is it's actual mapping to builds).
I'm getting following CI errors:

1. https://travis-ci.com/ovsrobot/dpdk/jobs/250599578

This is with clang - this patchset should not be run with clang as it is
not supported.  In build "matrix" there is 'gcc' specified but somehow
clang build is attempted.  Please advice me how to change this
.travis.yml to stop that - should I remove entry in "env"?

2. https://travis-ci.com/ovsrobot/dpdk/jobs/250599577
   https://travis-ci.com/ovsrobot/dpdk/jobs/250599591

This is with gcc and meson with shared library and I can't reproduce
this.  The are two problems reported, first a compiler warning which
seems to be not connected at all with the changes:

--8<------------------------
/usr/include/x86_64-linux-gnu/bits/unistd.h:39:9: warning: call to
‘__read_chk_warn’ declared with attribute warning: read called with
bigger length than size of the destination buffer
  return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
         ^
In function ‘__read_alias’,
    inlined from ‘eal_intr_process_interrupts’ at
../lib/librte_eal/linux/eal/eal_interrupts.c:911:17,
    inlined from ‘eal_intr_handle_interrupts’ at
../lib/librte_eal/linux/eal/eal_interrupts.c:1030:7,
    inlined from ‘eal_intr_thread_main’ at
../lib/librte_eal/linux/eal/eal_interrupts.c:1100:3:
--8<------------------------

and a second linker error:

--8<------------------------
FAILED: gcc  -o lib/librte_lpm.so.2.1
'lib/76b5a35@@rte_lpm at sha/librte_lpm_rte_lpm.c.o'
'lib/76b5a35@@rte_lpm at sha/librte_lpm_rte_lpm6.c.o' -flto -Wl,--as-needed
-Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group
-Wl,-soname,librte_lpm.so.2 -Wl,--no-as-needed -pthread -lm -ldl -lnuma
-Wno-lto-type-mismatch lib/librte_eal.so.12.1 lib/librte_kvargs.so.1.1
lib/librte_hash.so.2.1 lib/librte_ring.so.2.1
-Wl,--version-script=/home/travis/build/ovsrobot/dpdk/lib/librte_lpm/rte_lpm_version.map
/usr/lib/x86_64-linux-gnu/libbsd.so -Wl,--end-group
'-Wl,-rpath,$ORIGIN/'
-Wl,-rpath-link,/home/travis/build/ovsrobot/dpdk/build/lib
/tmp/ccZPEQKf.ltrans3.ltrans.o: In function `rte_lpm6_delete_bulk_func':
<artificial>:(.text+0xf01): undefined reference to `rte_lpm6_add'
--8<------------------------

As I've said I can't reproduce none of these problems - are they some CI
issues?

I'd appreciate some help with these.

Regards
Andrzej


More information about the dev mailing list