Merge remote-tracking branch 'remotes/stsquad/tags/pull-testing-and-plugin-updates-180521-2' into staging

testing and plugin updates:

  - various fixes for binfmt_misc docker images
  - add hexagon check-tcg support docker image
  - add tricore check-tcg support
  - refactor ppc docker images
  - add missing ppc64le tests
  - don't use host_cc for test fallback
  - check-tcg configure.sh tweaks for cross compile/clang
  - fix some memory leaks in plugins

# gpg: Signature made Tue 18 May 2021 09:37:21 BST
# gpg:                using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full]
# Primary key fingerprint: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44

* remotes/stsquad/tags/pull-testing-and-plugin-updates-180521-2: (29 commits)
  configure: use cc, not host_cc to set cross_cc for build arch
  tests/tcg: don't allow clang as a cross compiler
  tests/tcg: fix missing return
  tests/tcg/ppc64le: tests for brh/brw/brd
  tests/docker: gcc-10 based images for ppc64{,le} tests
  tests/tcg/tricore: Add muls test
  tests/tcg/tricore: Add msub test
  tests/tcg/tricore: Add madd test
  tests/tcg/tricore: Add ftoi test
  tests/tcg/tricore: Add fmul test
  tests/tcg/tricore: Add fadd test
  tests/tcg/tricore: Add dvstep test
  tests/tcg/tricore: Add clz test
  tests/tcg/tricore: Add bmerge test
  tests/tcg/tricore: Add macros to create tests and first test 'abs'
  configure: Emit HOST_CC to config-host.mak
  tests/tcg/tricore: Add build infrastructure
  hw/tricore: Add testdevice for tests in tests/tcg/
  tests/tcg: Run timeout cmds using --foreground
  tests/tcg: Add docker_as and docker_ld cmds
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2021-05-20 10:00:58 +01:00
38 changed files with 928 additions and 161 deletions
+3 -10
View File
@@ -144,19 +144,12 @@ mipsel-debian-cross-container:
variables:
NAME: debian-mipsel-cross
powerpc-debian-cross-container:
powerpc-test-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
needs: ['amd64-debian11-container']
variables:
NAME: debian-powerpc-cross
ppc64-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-ppc64-cross
NAME: debian-powerpc-test-cross
ppc64el-debian-cross-container:
extends: .container_job_template
+11
View File
@@ -416,6 +416,17 @@ build-user-static:
CONFIGURE_ARGS: --disable-tools --disable-system --static
MAKE_CHECK_ARGS: check-tcg
# Because the hexagon cross-compiler takes so long to build we don't rely
# on the CI system to build it and hence this job has no dependency
# declared. The image is manually uploaded.
build-user-hexagon:
extends: .native_build_job_template
variables:
IMAGE: debian-hexagon-cross
TARGETS: hexagon-linux-user
CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
MAKE_CHECK_ARGS: check-tcg
# Only build the softmmu targets we have check-tcg tests for
build-some-softmmu:
extends: .native_build_job_template
+3
View File
@@ -197,6 +197,8 @@ F: linux-user/hexagon/
F: tests/tcg/hexagon/
F: disas/hexagon.c
F: default-configs/targets/hexagon-linux-user.mak
F: docker/dockerfiles/debian-hexagon-cross.docker
F: docker/dockerfiles/debian-hexagon-cross.docker.d/build-toolchain.sh
HPPA (PA-RISC) TCG CPUs
M: Richard Henderson <richard.henderson@linaro.org>
@@ -347,6 +349,7 @@ S: Maintained
F: target/tricore/
F: hw/tricore/
F: include/hw/tricore/
F: tests/tcg/tricore/
Multiarch Linux User Tests
M: Alex Bennée <alex.bennee@linaro.org>
Vendored
+2 -1
View File
@@ -1651,7 +1651,7 @@ case "$cpu" in
# No special flags required for other host CPUs
esac
eval "cross_cc_${cpu}=\$host_cc"
eval "cross_cc_${cpu}=\$cc"
cross_cc_vars="$cross_cc_vars cross_cc_${cpu}"
QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
@@ -6164,6 +6164,7 @@ echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
echo "MESON=$meson" >> $config_host_mak
echo "NINJA=$ninja" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
echo "HOST_CC=$host_cc" >> $config_host_mak
if $iasl -h > /dev/null 2>&1; then
echo "CONFIG_IASL=$iasl" >> $config_host_mak
fi
+1
View File
@@ -1,5 +1,6 @@
tricore_ss = ss.source_set()
tricore_ss.add(when: 'CONFIG_TRICORE', if_true: files('tricore_testboard.c'))
tricore_ss.add(when: 'CONFIG_TRICORE', if_true: files('tricore_testdevice.c'))
tricore_ss.add(when: 'CONFIG_TRIBOARD', if_true: files('triboard.c'))
tricore_ss.add(when: 'CONFIG_TC27X_SOC', if_true: files('tc27x_soc.c'))
+8
View File
@@ -27,6 +27,7 @@
#include "hw/loader.h"
#include "elf.h"
#include "hw/tricore/tricore.h"
#include "hw/tricore/tricore_testdevice.h"
#include "qemu/error-report.h"
@@ -56,6 +57,7 @@ static void tricore_testboard_init(MachineState *machine, int board_id)
{
TriCoreCPU *cpu;
CPUTriCoreState *env;
TriCoreTestDeviceState *test_dev;
MemoryRegion *sysmem = get_system_memory();
MemoryRegion *ext_cram = g_new(MemoryRegion, 1);
@@ -87,6 +89,12 @@ static void tricore_testboard_init(MachineState *machine, int board_id)
memory_region_add_subregion(sysmem, 0xf0050000, pcp_data);
memory_region_add_subregion(sysmem, 0xf0060000, pcp_text);
test_dev = g_new(TriCoreTestDeviceState, 1);
object_initialize(test_dev, sizeof(TriCoreTestDeviceState),
TYPE_TRICORE_TESTDEVICE);
memory_region_add_subregion(sysmem, 0xf0000000, &test_dev->iomem);
tricoretb_binfo.ram_size = machine->ram_size;
tricoretb_binfo.kernel_filename = machine->kernel_filename;
+82
View File
@@ -0,0 +1,82 @@
/*
* Copyright (c) 2018-2021 Bastian Koppelmann Paderborn University
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "qemu/osdep.h"
#include "hw/sysbus.h"
#include "hw/qdev-properties.h"
#include "hw/tricore/tricore_testdevice.h"
static void tricore_testdevice_write(void *opaque, hwaddr offset,
uint64_t value, unsigned size)
{
exit(value);
}
static uint64_t tricore_testdevice_read(void *opaque, hwaddr offset,
unsigned size)
{
return 0xdeadbeef;
}
static void tricore_testdevice_reset(DeviceState *dev)
{
}
static const MemoryRegionOps tricore_testdevice_ops = {
.read = tricore_testdevice_read,
.write = tricore_testdevice_write,
.valid = {
.min_access_size = 4,
.max_access_size = 4,
},
.endianness = DEVICE_NATIVE_ENDIAN,
};
static void tricore_testdevice_init(Object *obj)
{
TriCoreTestDeviceState *s = TRICORE_TESTDEVICE(obj);
/* map memory */
memory_region_init_io(&s->iomem, OBJECT(s), &tricore_testdevice_ops, s,
"tricore_testdevice", 0x4);
}
static Property tricore_testdevice_properties[] = {
DEFINE_PROP_END_OF_LIST()
};
static void tricore_testdevice_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
device_class_set_props(dc, tricore_testdevice_properties);
dc->reset = tricore_testdevice_reset;
}
static const TypeInfo tricore_testdevice_info = {
.name = TYPE_TRICORE_TESTDEVICE,
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(TriCoreTestDeviceState),
.instance_init = tricore_testdevice_init,
.class_init = tricore_testdevice_class_init,
};
static void tricore_testdevice_register_types(void)
{
type_register_static(&tricore_testdevice_info);
}
type_init(tricore_testdevice_register_types)
+38
View File
@@ -0,0 +1,38 @@
/*
* Copyright (c) 2018-2021 Bastian Koppelmann Paderborn University
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef HW_TRICORE_TESTDEV_H
#define HW_TRICORE_TESTDEV_H
#include "hw/sysbus.h"
#include "hw/hw.h"
#define TYPE_TRICORE_TESTDEVICE "tricore_testdevice"
#define TRICORE_TESTDEVICE(obj) \
OBJECT_CHECK(TriCoreTestDeviceState, (obj), TYPE_TRICORE_TESTDEVICE)
typedef struct {
/* <private> */
SysBusDevice parent_obj;
/* <public> */
MemoryRegion iomem;
} TriCoreTestDeviceState;
#endif
+25 -4
View File
@@ -140,25 +140,46 @@ docker-image-debian-mips-cross: docker-image-debian10
docker-image-debian-mips64-cross: docker-image-debian10
docker-image-debian-mips64el-cross: docker-image-debian10
docker-image-debian-mipsel-cross: docker-image-debian10
docker-image-debian-powerpc-cross: docker-image-debian10
docker-image-debian-ppc64-cross: docker-image-debian10
docker-image-debian-ppc64el-cross: docker-image-debian10
docker-image-debian-riscv64-cross: docker-image-debian10
docker-image-debian-s390x-cross: docker-image-debian10
docker-image-debian-sh4-cross: docker-image-debian10
docker-image-debian-sparc64-cross: docker-image-debian10
#
# The build rule for hexagon-cross is special in so far for most of
# the time we don't want to build it. While dockers caching does avoid
# this most of the time sometimes we want to force the issue.
#
docker-image-debian-hexagon-cross: $(DOCKER_FILES_DIR)/debian-hexagon-cross.docker
$(if $(NOCACHE), \
$(call quiet-command, \
$(DOCKER_SCRIPT) build -t qemu/debian-hexagon-cross -f $< \
$(if $V,,--quiet) --no-cache \
--registry $(DOCKER_REGISTRY) --extra-files \
$(DOCKER_FILES_DIR)/debian-hexagon-cross.docker.d/build-toolchain.sh, \
"BUILD", "debian-hexagon-cross"), \
$(call quiet-command, \
$(DOCKER_SCRIPT) fetch $(if $V,,--quiet) \
qemu/debian-hexagon-cross $(DOCKER_REGISTRY), \
"FETCH", "debian-hexagon-cross") \
$(call quiet-command, \
$(DOCKER_SCRIPT) update $(if $V,,--quiet) \
qemu/debian-hexagon-cross --add-current-user, \
"PREPARE", "debian-hexagon-cross"))
# Specialist build images, sometimes very limited tools
docker-image-debian-tricore-cross: docker-image-debian10
docker-image-debian-all-test-cross: docker-image-debian10
docker-image-debian-arm64-test-cross: docker-image-debian11
docker-image-debian-powerpc-test-cross: docker-image-debian11
# These images may be good enough for building tests but not for test builds
DOCKER_PARTIAL_IMAGES += debian-alpha-cross
DOCKER_PARTIAL_IMAGES += debian-arm64-test-cross
DOCKER_PARTIAL_IMAGES += debian-powerpc-test-cross
DOCKER_PARTIAL_IMAGES += debian-hppa-cross
DOCKER_PARTIAL_IMAGES += debian-m68k-cross debian-mips64-cross
DOCKER_PARTIAL_IMAGES += debian-powerpc-cross debian-ppc64-cross
DOCKER_PARTIAL_IMAGES += debian-riscv64-cross
DOCKER_PARTIAL_IMAGES += debian-sh4-cross debian-sparc64-cross
DOCKER_PARTIAL_IMAGES += debian-tricore-cross
@@ -248,7 +269,7 @@ docker-run: docker-qemu-src
$(if $(EXECUTABLE), \
$(call quiet-command, \
$(DOCKER_SCRIPT) update \
$(IMAGE) $(EXECUTABLE), \
$(IMAGE) --executable $(EXECUTABLE), \
" COPYING $(EXECUTABLE) to $(IMAGE)"))
$(call quiet-command, \
$(DOCKER_SCRIPT) run \
+57 -21
View File
@@ -515,16 +515,36 @@ class BuildCommand(SubCommand):
return 0
class FetchCommand(SubCommand):
""" Fetch a docker image from the registry. Args: <tag> <registry>"""
name = "fetch"
def args(self, parser):
parser.add_argument("tag",
help="Local tag for image")
parser.add_argument("registry",
help="Docker registry")
def run(self, args, argv):
dkr = Docker()
dkr.command(cmd="pull", quiet=args.quiet,
argv=["%s/%s" % (args.registry, args.tag)])
dkr.command(cmd="tag", quiet=args.quiet,
argv=["%s/%s" % (args.registry, args.tag), args.tag])
class UpdateCommand(SubCommand):
""" Update a docker image with new executables. Args: <tag> <executable>"""
""" Update a docker image. Args: <tag> <actions>"""
name = "update"
def args(self, parser):
parser.add_argument("tag",
help="Image Tag")
parser.add_argument("executable",
parser.add_argument("--executable",
help="Executable to copy")
parser.add_argument("--add-current-user", "-u", dest="user",
action="store_true",
help="Add the current user to image's passwd")
def run(self, args, argv):
# Create a temporary tarball with our whole build context and
@@ -532,28 +552,44 @@ class UpdateCommand(SubCommand):
tmp = tempfile.NamedTemporaryFile(suffix="dckr.tar.gz")
tmp_tar = TarFile(fileobj=tmp, mode='w')
# Add the executable to the tarball, using the current
# configured binfmt_misc path. If we don't get a path then we
# only need the support libraries copied
ff, enabled = _check_binfmt_misc(args.executable)
if not enabled:
print("binfmt_misc not enabled, update disabled")
return 1
if ff:
tmp_tar.add(args.executable, arcname=ff)
# Add any associated libraries
libs = _get_so_libs(args.executable)
if libs:
for l in libs:
tmp_tar.add(os.path.realpath(l), arcname=l)
# Create a Docker buildfile
df = StringIO()
df.write(u"FROM %s\n" % args.tag)
df.write(u"ADD . /\n")
if args.executable:
# Add the executable to the tarball, using the current
# configured binfmt_misc path. If we don't get a path then we
# only need the support libraries copied
ff, enabled = _check_binfmt_misc(args.executable)
if not enabled:
print("binfmt_misc not enabled, update disabled")
return 1
if ff:
tmp_tar.add(args.executable, arcname=ff)
# Add any associated libraries
libs = _get_so_libs(args.executable)
if libs:
for l in libs:
so_path = os.path.dirname(l)
name = os.path.basename(l)
real_l = os.path.realpath(l)
try:
tmp_tar.add(real_l, arcname="%s/%s" % (so_path, name))
except FileNotFoundError:
print("Couldn't add %s/%s to archive" % (so_path, name))
pass
df.write(u"ADD . /\n")
if args.user:
uid = os.getuid()
uname = getpwuid(uid).pw_name
df.write("\n")
df.write("RUN id %s 2>/dev/null || useradd -u %d -U %s" %
(uname, uid, uname))
df_bytes = BytesIO(bytes(df.getvalue(), "UTF-8"))
+1
View File
@@ -20,6 +20,7 @@ ENV PACKAGES \
gnutls-dev \
gtk+3.0-dev \
libaio-dev \
libbpf-dev \
libcap-ng-dev \
libjpeg-turbo-dev \
libnfs-dev \
+1
View File
@@ -14,6 +14,7 @@ ENV PACKAGES \
git \
glib2-devel \
libaio-devel \
libbpf-devel \
libepoxy-devel \
libfdt-devel \
libgcrypt-devel \
@@ -0,0 +1,45 @@
#
# Docker Hexagon cross-compiler target
#
# This docker target is used for building hexagon tests. As it also
# needs to be able to build QEMU itself in CI we include it's
# build-deps. It is also a "stand-alone" image so as not to be
# triggered by re-builds on other base images given it takes a long
# time to build.
#
FROM qemu/debian10
# Install common build utilities
RUN apt update && \
DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
bison \
cmake \
flex \
lld \
rsync \
wget
ENV TOOLCHAIN_INSTALL /usr/local
ENV ROOTFS /usr/local
ENV LLVM_URL https://github.com/llvm/llvm-project/archive/bfcd21876adc3498065e4da92799f613e730d475.tar.gz
ENV MUSL_URL https://github.com/quic/musl/archive/aff74b395fbf59cd7e93b3691905aa1af6c0778c.tar.gz
ENV LINUX_URL https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.18.tar.xz
ADD build-toolchain.sh /root/hexagon-toolchain/build-toolchain.sh
RUN cd /root/hexagon-toolchain && ./build-toolchain.sh
FROM debian:buster-slim
# Duplicate deb line as deb-src
RUN cat /etc/apt/sources.list | sed "s/^deb\ /deb-src /" >> /etc/apt/sources.list
# Install QEMU build deps for use in CI
RUN apt update && \
DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \
DEBIAN_FRONTEND=noninteractive eatmydata apt install -yy git ninja-build && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt build-dep -yy --arch-only qemu
COPY --from=0 /usr/local /usr/local
ENV PATH $PATH:/usr/local/bin/
@@ -0,0 +1,141 @@
#!/bin/bash
set -e
BASE=$(readlink -f ${PWD})
TOOLCHAIN_INSTALL=$(readlink -f "$TOOLCHAIN_INSTALL")
ROOTFS=$(readlink -f "$ROOTFS")
TOOLCHAIN_BIN=${TOOLCHAIN_INSTALL}/bin
HEX_SYSROOT=${TOOLCHAIN_INSTALL}/hexagon-unknown-linux-musl
HEX_TOOLS_TARGET_BASE=${HEX_SYSROOT}/usr
function cdp() {
DIR="$1"
mkdir -p "$DIR"
cd "$DIR"
}
function fetch() {
DIR="$1"
URL="$2"
TEMP="$(readlink -f "$PWD/tmp.tar.gz")"
wget --quiet "$URL" -O "$TEMP"
cdp "$DIR"
tar xaf "$TEMP" --strip-components=1
rm "$TEMP"
cd -
}
build_llvm_clang() {
fetch "$BASE/llvm-project" "$LLVM_URL"
cdp "$BASE/build-llvm"
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=${TOOLCHAIN_INSTALL} \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_TARGETS_TO_BUILD="Hexagon" \
-DLLVM_ENABLE_PROJECTS="clang;lld" \
"$BASE/llvm-project/llvm"
ninja all install
cd ${TOOLCHAIN_BIN}
ln -sf clang hexagon-unknown-linux-musl-clang
ln -sf clang++ hexagon-unknown-linux-musl-clang++
ln -sf llvm-ar hexagon-unknown-linux-musl-ar
ln -sf llvm-objdump hexagon-unknown-linux-musl-objdump
ln -sf llvm-objcopy hexagon-unknown-linux-musl-objcopy
ln -sf llvm-readelf hexagon-unknown-linux-musl-readelf
ln -sf llvm-ranlib hexagon-unknown-linux-musl-ranlib
# workaround for now:
cat <<EOF > hexagon-unknown-linux-musl.cfg
-G0 --sysroot=${HEX_SYSROOT}
EOF
}
build_clang_rt() {
cdp "$BASE/build-clang_rt"
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_CONFIG_PATH="$BASE/build-llvm/bin/llvm-config" \
-DCMAKE_ASM_FLAGS="-G0 -mlong-calls -fno-pic --target=hexagon-unknown-linux-musl " \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_C_COMPILER="${TOOLCHAIN_BIN}/hexagon-unknown-linux-musl-clang" \
-DCMAKE_ASM_COMPILER="${TOOLCHAIN_BIN}/hexagon-unknown-linux-musl-clang" \
-DCMAKE_INSTALL_PREFIX=${HEX_TOOLS_TARGET_BASE} \
-DCMAKE_CROSSCOMPILING=ON \
-DCMAKE_C_COMPILER_FORCED=ON \
-DCMAKE_CXX_COMPILER_FORCED=ON \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILTINS_ENABLE_PIC=OFF \
-DCMAKE_SIZEOF_VOID_P=4 \
-DCOMPILER_RT_OS_DIR= \
-DCAN_TARGET_hexagon=1 \
-DCAN_TARGET_x86_64=0 \
-DCOMPILER_RT_SUPPORTED_ARCH=hexagon \
-DLLVM_ENABLE_PROJECTS="compiler-rt" \
"$BASE/llvm-project/compiler-rt"
ninja install-compiler-rt
}
build_musl_headers() {
fetch "$BASE/musl" "$MUSL_URL"
cd "$BASE/musl"
make clean
CC=${TOOLCHAIN_BIN}/hexagon-unknown-linux-musl-clang \
CROSS_COMPILE=hexagon-unknown-linux-musl \
LIBCC=${HEX_TOOLS_TARGET_BASE}/lib/libclang_rt.builtins-hexagon.a \
CROSS_CFLAGS="-G0 -O0 -mv65 -fno-builtin -fno-rounding-math --target=hexagon-unknown-linux-musl" \
./configure --target=hexagon --prefix=${HEX_TOOLS_TARGET_BASE}
PATH=${TOOLCHAIN_BIN}:$PATH make CROSS_COMPILE= install-headers
cd ${HEX_SYSROOT}/..
ln -sf hexagon-unknown-linux-musl hexagon
}
build_kernel_headers() {
fetch "$BASE/linux" "$LINUX_URL"
mkdir -p "$BASE/build-linux"
cd "$BASE/linux"
make O=../build-linux ARCH=hexagon \
KBUILD_CFLAGS_KERNEL="-mlong-calls" \
CC=${TOOLCHAIN_BIN}/hexagon-unknown-linux-musl-clang \
LD=${TOOLCHAIN_BIN}/ld.lld \
KBUILD_VERBOSE=1 comet_defconfig
make mrproper
cd "$BASE/build-linux"
make \
ARCH=hexagon \
CC=${TOOLCHAIN_BIN}/clang \
INSTALL_HDR_PATH=${HEX_TOOLS_TARGET_BASE} \
V=1 \
headers_install
}
build_musl() {
cd "$BASE/musl"
make clean
CROSS_COMPILE=hexagon-unknown-linux-musl- \
AR=llvm-ar \
RANLIB=llvm-ranlib \
STRIP=llvm-strip \
CC=clang \
LIBCC=${HEX_TOOLS_TARGET_BASE}/lib/libclang_rt.builtins-hexagon.a \
CFLAGS="-G0 -O0 -mv65 -fno-builtin -fno-rounding-math --target=hexagon-unknown-linux-musl" \
./configure --target=hexagon --prefix=${HEX_TOOLS_TARGET_BASE}
PATH=${TOOLCHAIN_BIN}/:$PATH make CROSS_COMPILE= install
cd ${HEX_TOOLS_TARGET_BASE}/lib
ln -sf libc.so ld-musl-hexagon.so
ln -sf ld-musl-hexagon.so ld-musl-hexagon.so.1
cdp ${HEX_TOOLS_TARGET_BASE}/../lib
ln -sf ../usr/lib/ld-musl-hexagon.so.1
}
build_llvm_clang
build_kernel_headers
build_musl_headers
build_clang_rt
build_musl
@@ -1,12 +0,0 @@
#
# Docker powerpc cross-compiler target
#
# This docker target builds on the debian Buster base image.
#
FROM qemu/debian10
RUN apt update && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
gcc-powerpc-linux-gnu \
libc6-dev-powerpc-cross
@@ -0,0 +1,17 @@
#
# Docker powerpc/ppc64/ppc64le cross-compiler target
#
# This docker target builds on the debian Bullseye base image.
#
FROM qemu/debian11
RUN apt update && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
gcc-powerpc-linux-gnu \
libc6-dev-powerpc-cross \
gcc-10-powerpc64-linux-gnu \
libc6-dev-ppc64-cross \
gcc-10-powerpc64le-linux-gnu \
libc6-dev-ppc64el-cross
@@ -1,11 +0,0 @@
#
# Docker ppc64 cross-compiler target
#
# This docker target builds on the debian Buster base image.
FROM qemu/debian10
RUN apt update && \
DEBIAN_FRONTEND=noninteractive eatmydata \
apt install -y --no-install-recommends \
gcc-powerpc64-linux-gnu \
libc6-dev-ppc64-cross
+1
View File
@@ -32,6 +32,7 @@ ENV PACKAGES \
libcurl-devel \
libepoxy-devel \
libfdt-devel \
libbpf-devel \
libiscsi-devel \
libjpeg-devel \
libpmem-devel \
+17
View File
@@ -22,6 +22,8 @@ quiet-@ = $(if $(V),,@)
quiet-command = $(quiet-@)$(call quiet-command-run,$1,$2,$3)
CROSS_CC_GUEST:=
CROSS_AS_GUEST:=
CROSS_LD_GUEST:=
DOCKER_IMAGE:=
-include tests/tcg/config-$(TARGET).mak
@@ -42,6 +44,8 @@ cross-build-guest-tests:
$(call quiet-command, \
(mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
$(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \
$(if $(CROSS_AS_GUEST),AS="$(CROSS_AS_GUEST)") \
$(if $(CROSS_LD_GUEST),LD="$(CROSS_LD_GUEST)") \
SRC_PATH="$(SRC_PATH)" BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \
EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
"BUILD","$(TARGET) guest-tests with $(CROSS_CC_GUEST)")
@@ -59,11 +63,24 @@ DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc \
-i qemu/$(DOCKER_IMAGE) \
-s $(SRC_PATH) -- "
DOCKER_AS_CMD=$(if $(DOCKER_CROSS_AS_GUEST),"$(DOCKER_SCRIPT) cc \
--cc $(DOCKER_CROSS_AS_GUEST) \
-i qemu/$(DOCKER_IMAGE) \
-s $(SRC_PATH) -- ")
DOCKER_LD_CMD=$(if $(DOCKER_CROSS_LD_GUEST),"$(DOCKER_SCRIPT) cc \
--cc $(DOCKER_CROSS_LD_GUEST) \
-i qemu/$(DOCKER_IMAGE) \
-s $(SRC_PATH) -- ")
.PHONY: docker-build-guest-tests
docker-build-guest-tests: docker-image-$(DOCKER_IMAGE)
$(call quiet-command, \
(mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
$(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC=$(DOCKER_COMPILE_CMD) \
$(if $(DOCKER_AS_CMD),AS=$(DOCKER_AS_CMD)) \
$(if $(DOCKER_LD_CMD),LD=$(DOCKER_LD_CMD)) \
SRC_PATH="$(SRC_PATH)" BUILD_STATIC=y \
EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
"BUILD","$(TARGET) guest-tests with docker qemu/$(DOCKER_IMAGE)")
+3 -2
View File
@@ -43,9 +43,10 @@ quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
# $1 = test name, $2 = cmd, $3 = desc
ifdef CONFIG_USER_ONLY
run-test = $(call quiet-command, timeout $(TIMEOUT) $2 > $1.out,"TEST",$3)
run-test = $(call quiet-command, timeout --foreground $(TIMEOUT) $2 > $1.out, \
"TEST",$3)
else
run-test = $(call quiet-command, timeout $(TIMEOUT) $2,"TEST",$3)
run-test = $(call quiet-command, timeout --foreground $(TIMEOUT) $2,"TEST",$3)
endif
# $1 = test name, $2 = reference

Some files were not shown because too many files have changed in this diff Show More