This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 3eeb249a4774f12d2d16ca349a591654eae620ae (commit) via 4d2cf5b4a536c243089f41ade86d5dc60844f3d3 (commit) via 3a79862d2a8f9ea8eaa53d408f0763e44e522da7 (commit) from 95ba4b394009d92c29c2e22f0776e90bb4c6edec (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 3eeb249a4774f12d2d16ca349a591654eae620ae Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Tue Jun 27 16:07:36 2017 +0300
travis: add clang cross-compilation checks
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/.travis.yml b/.travis.yml index 30f4ac7a..42c2c963 100644 --- a/.travis.yml +++ b/.travis.yml @@ -156,6 +156,15 @@ jobs: --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example - make -j $(nproc) - stage: test + compiler: ""clang-3.8 --target=aarch64-linux-gnu"" + env: TEST="clang-3.8 aarch64-linux-gnu" CROSS_ARCH="arm64" + install: true + script: + - ./bootstrap + - ./configure --prefix=$HOME/odp-install $CROSS + --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example + - make -j $(nproc) + - stage: test compiler: arm-linux-gnueabihf-gcc env: TEST="arm-linux-gnueabihf" CROSS_ARCH="armhf" install: true @@ -165,6 +174,15 @@ jobs: --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example - make -j $(nproc) - stage: test + compiler: ""clang-3.8 --target=arm-linux-gnueabihf"" + env: TEST="clang-3.8 arm-linux-gnueabihf" CROSS_ARCH="armhf" CFLAGS="-march=armv7-a" + install: true + script: + - ./bootstrap + - ./configure --prefix=$HOME/odp-install $CROSS + --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example + - make -j $(nproc) + - stage: test compiler: powerpc-linux-gnu-gcc env: TEST="powerpc-linux-gnueabihf" CROSS_ARCH="powerpc" install: true @@ -174,6 +192,15 @@ jobs: --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example - make -j $(nproc) - stage: test + compiler: ""clang-3.8 --target=powerpc-linux-gnu"" + env: TEST="clang-3.8 powerpc-linux-gnu" CROSS_ARCH="powerpc" + install: true + script: + - ./bootstrap + - ./configure --prefix=$HOME/odp-install $CROSS + --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example + - make -j $(nproc) + - stage: test env: TEST=coverage compiler: gcc script:
commit 4d2cf5b4a536c243089f41ade86d5dc60844f3d3 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Wed Jul 12 12:16:39 2017 +0300
travis: simplify cross-compilation setup
Following Maxim's idea use apt-get to download and install cross-packages.
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/.travis.yml b/.travis.yml index a1306206..30f4ac7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,10 +43,6 @@ addons: - clang-3.8 - automake autoconf libtool libssl-dev graphviz mscgen doxygen - libpcap-dev - - dpkg-cross equivs - - gcc-aarch64-linux-gnu pkg-config-aarch64-linux-gnu libc6-dev-arm64-cross - - gcc-arm-linux-gnueabihf pkg-config-arm-linux-gnueabihf libc6-dev-armhf-cross - - gcc-powerpc-linux-gnu pkg-config-powerpc-linux-gnu libc6-dev-powerpc-cross # coverity_scan: # project: # name: "$TRAVIS_REPO_SLUG" @@ -67,7 +63,24 @@ env: - CONF="--enable-dpdk-zero-copy"
before_install: -# Install cunit for the validation tests because distro version is too old and fails C99 compile + + # Install cross toolchains, etc + # apt-get update may fail thanks to Ubuntu removing Packages/indices while not removing relevant parts of Release file + - if [ -n "$CROSS_ARCH" ] ; + then + BUILD_GNU_TYPE=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_BUILD_GNU_TYPE` ; + CROSS_GNU_TYPE=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_HOST_GNU_TYPE` ; + CROSS_MULTIARCH=`dpkg-architecture -a"$CROSS_ARCH" -qDEB_HOST_MULTIARCH` ; + CROSS="--host="$CROSS_GNU_TYPE" --build="$BUILD_GNU_TYPE" --prefix=/usr --includedir=/usr/include/"$CROSS_MULTIARCH" --libdir=/usr/lib/"$CROSS_MULTIARCH" --libexecdir=/usr/lib/"$CROSS_MULTIARCH"" ; + sudo dpkg --add-architecture "$CROSS_ARCH" ; + sudo -E apt-add-repository -y "deb http://ports.ubuntu.com trusty main" ; + sudo -E apt-add-repository -y "deb http://ports.ubuntu.com trusty-updates main" ; + sudo -E apt-get -y update || true ; + sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install build-essential gcc-"$CROSS_GNU_TYPE" pkg-config-"$CROSS_GNU_TYPE" ; + sudo -E apt-get -y --no-install-suggests --no-install-recommends --force-yes install libc6-dev:"$CROSS_ARCH" libssl-dev:"$CROSS_ARCH" zlib1g-dev:"$CROSS_ARCH" libconfig-dev:"$CROSS_ARCH" ; + fi + + # Install cunit for the validation tests because distro version is too old and fails C99 compile - sudo apt-get remove libcunit1-dev libcunit1 - export CUNIT_VERSION=2.1-3 - curl -sSOL https://github.com/Linaro/libcunit/releases/download/%24%7BCUNIT_VERSION%7D/... @@ -135,63 +148,27 @@ jobs: include: - stage: test compiler: aarch64-linux-gnu-gcc - env: TEST="aarch64-linux-gnu" CROSS="--host=aarch64-linux-gnu --prefix=/usr/aarch64-linux-gnu" + env: TEST="aarch64-linux-gnu" CROSS_ARCH="arm64" install: true script: - - mkdir cross - - pushd cross - # one can not include colon in the command or bad things will happen, so mimic it - - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy - - equivs-build -a arm64 dummy - - wget - http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_ar... - http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_a... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_arm6... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_arm64.de... - - sudo dpkg-cross -i -M -A -a arm64 *.deb - - popd - ./bootstrap - ./configure --prefix=$HOME/odp-install $CROSS --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example - make -j $(nproc) - stage: test compiler: arm-linux-gnueabihf-gcc - env: TEST="arm-linux-gnueabihf" CROSS="--host=arm-linux-gnueabihf --prefix=/usr/arm-linux-gnueabihf" + env: TEST="arm-linux-gnueabihf" CROSS_ARCH="armhf" install: true script: - - mkdir cross - - pushd cross - # one can not include colon in the command or bad things will happen, so mimic it - - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy - - equivs-build -a armhf dummy - - wget - http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_ar... - http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_a... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_armh... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_armhf.de... - - sudo dpkg-cross -i -M -A -a armhf *.deb - - popd - ./bootstrap - ./configure --prefix=$HOME/odp-install $CROSS --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example - make -j $(nproc) - stage: test compiler: powerpc-linux-gnu-gcc - env: TEST="powerpc-linux-gnu" CROSS="--host=powerpc-linux-gnu --prefix=/usr/powerpc-linux-gnu" + env: TEST="powerpc-linux-gnueabihf" CROSS_ARCH="powerpc" install: true script: - - mkdir cross - - pushd cross - # one can not include colon in the command or bad things will happen, so mimic it - - env echo -e 'Provides\x3a multiarch-support, debconf, debconf-2.0' > dummy - - equivs-build -a powerpc dummy - - wget - http://ports.ubuntu.com/pool/main/o/openssl/libssl-dev_1.0.1f-1ubuntu2.22_po... - http://ports.ubuntu.com/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.22_p... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-1ubuntu1_powe... - http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.2.8.dfsg-1ubuntu1_powerpc.... - - sudo dpkg-cross -i -M -A -a powerpc *.deb - - popd - ./bootstrap - ./configure --prefix=$HOME/odp-install $CROSS --disable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-test-perf-proc --enable-test-example
commit 3a79862d2a8f9ea8eaa53d408f0763e44e522da7 Author: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Date: Wed Jul 12 14:27:36 2017 +0300
example: ipfragreass: fix compilation with clang
Clang 3.8 is stricter than GCC wrt register allocation vs 128-bit variables. Sometimes it can not understand using 128-bit var in place of 64-bit register resulting in the following errors:
/odp_ipfragreass_atomics_arm.h:18:51: error: value size does not match register size specified by the constraint and modifier [-Werror,-Wasm-operand-widths] __asm__ volatile("ldaxp %0, %H0, [%1]" : "=&r" (old) ^ ./odp_ipfragreass_atomics_arm.h:18:27: note: use constraint modifier "w" __asm__ volatile("ldaxp %0, %H0, [%1]" : "=&r" (old)
Explicitly pass low and high parts of 128-bit variable in separate assembly parameters.
Signed-off-by: Dmitry Eremin-Solenikov dmitry.ereminsolenikov@linaro.org Reviewed-by: Brian Brooks brian.brooks@arm.com Reviewed-by: Bill Fischofer bill.fischofer@linaro.org Signed-off-by: Maxim Uvarov maxim.uvarov@linaro.org
diff --git a/example/ipfragreass/odp_ipfragreass_atomics_arm.h b/example/ipfragreass/odp_ipfragreass_atomics_arm.h index 99c37a77..e75ae588 100644 --- a/example/ipfragreass/odp_ipfragreass_atomics_arm.h +++ b/example/ipfragreass/odp_ipfragreass_atomics_arm.h @@ -13,26 +13,33 @@ static inline __int128 lld(__int128 *var, int mo) { __int128 old; + uint64_t lo, hi;
if (mo == __ATOMIC_ACQUIRE) - __asm__ volatile("ldaxp %0, %H0, [%1]" : "=&r" (old) + __asm__ volatile("ldaxp %0, %1, [%2]" : "=&r" (lo), "=&r" (hi) : "r" (var) : "memory"); else /* mo == __ATOMIC_RELAXED */ - __asm__ volatile("ldxp %0, %H0, [%1]" : "=&r" (old) + __asm__ volatile("ldxp %0, %1, [%2]" : "=&r" (lo), "=&r" (hi) : "r" (var) : ); + old = hi; + old <<= 64; + old |= lo; + return old; + }
static inline uint32_t scd(__int128 *var, __int128 neu, int mo) { uint32_t ret; + uint64_t lo = neu, hi = neu >> 64;
if (mo == __ATOMIC_RELEASE) - __asm__ volatile("stlxp %w0, %1, %H1, [%2]" : "=&r" (ret) - : "r" (neu), "r" (var) : "memory"); + __asm__ volatile("stlxp %w0, %1, %2, [%3]" : "=&r" (ret) + : "r" (lo), "r" (hi), "r" (var) : "memory"); else /* mo == __ATOMIC_RELAXED */ - __asm__ volatile("stxp %w0, %1, %H1, [%2]" : "=&r" (ret) - : "r" (neu), "r" (var) : ); + __asm__ volatile("stxp %w0, %1, %2, [%3]" : "=&r" (ret) + : "r" (lo), "r" (hi), "r" (var) : "memory"); return ret; }
-----------------------------------------------------------------------
Summary of changes: .travis.yml | 92 ++++++++++++----------- example/ipfragreass/odp_ipfragreass_atomics_arm.h | 19 +++-- 2 files changed, 61 insertions(+), 50 deletions(-)
hooks/post-receive