Skip to content

Commit

Permalink
linux-user: Remove the deprecated ppc64abi32 target
Browse files Browse the repository at this point in the history
It's likely broken, and nobody cared for picking it up again
during the deprecation phase, so let's remove this now.

Since this is the last entry in deprecated_targets_list, remove
the related code in the configure script, too.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Acked-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20211215084958.185214-1-thuth@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20220112112722.3641051-32-alex.bennee@linaro.org>
  • Loading branch information
huth authored and stsquad committed Feb 9, 2022
1 parent 6f15c07 commit 74154d7
Show file tree
Hide file tree
Showing 12 changed files with 21 additions and 88 deletions.
27 changes: 0 additions & 27 deletions .gitlab-ci.d/buildtest.yml
Expand Up @@ -473,33 +473,6 @@ tsan-build:
TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
MAKE_CHECK_ARGS: bench V=1

# These targets are on the way out
build-deprecated:
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
IMAGE: debian-all-test-cross
CONFIGURE_ARGS: --disable-tools
MAKE_CHECK_ARGS: build-tcg
TARGETS: ppc64abi32-linux-user
artifacts:
expire_in: 2 days
paths:
- build

# We split the check-tcg step as test failures are expected but we still
# want to catch the build breaking.
check-deprecated:
extends: .native_test_job_template
needs:
- job: build-deprecated
artifacts: true
variables:
IMAGE: debian-all-test-cross
MAKE_CHECK_ARGS: check-tcg
allow_failure: true

# gprof/gcov are GCC features
build-gprof-gcov:
extends: .native_build_job_template
Expand Down
8 changes: 0 additions & 8 deletions configs/targets/ppc64abi32-linux-user.mak

This file was deleted.

29 changes: 1 addition & 28 deletions configure
Expand Up @@ -1252,8 +1252,6 @@ if eval test -z "\${cross_cc_$cpu}"; then
fi

default_target_list=""
deprecated_targets_list=ppc64abi32-linux-user
deprecated_features=""
mak_wilds=""

if [ "$linux_user" != no ]; then
Expand Down Expand Up @@ -1281,16 +1279,6 @@ if [ "$bsd_user" = "yes" ]; then
mak_wilds="${mak_wilds} $source_path/configs/targets/*-bsd-user.mak"
fi

# If the user doesn't explicitly specify a deprecated target we will
# skip it.
if test -z "$target_list"; then
if test -z "$target_list_exclude"; then
target_list_exclude="$deprecated_targets_list"
else
target_list_exclude="$target_list_exclude,$deprecated_targets_list"
fi
fi

for config in $mak_wilds; do
target="$(basename "$config" .mak)"
if echo "$target_list_exclude" | grep -vq "$target"; then
Expand All @@ -1309,11 +1297,9 @@ Standard options:
--prefix=PREFIX install in PREFIX [$prefix]
--interp-prefix=PREFIX where to find shared libraries, etc.
use %M for cpu name [$interp_prefix]
--target-list=LIST set target list (default: build all non-deprecated)
--target-list=LIST set target list (default: build all)
$(echo Available targets: $default_target_list | \
fold -s -w 53 | sed -e 's/^/ /')
$(echo Deprecated targets: $deprecated_targets_list | \
fold -s -w 53 | sed -e 's/^/ /')
--target-list-exclude=LIST exclude a set of targets from the default target-list
Advanced options (experts only):
Expand Down Expand Up @@ -1797,13 +1783,6 @@ else
done
fi

for target in $target_list; do
# if a deprecated target is enabled we note it here
if echo "$deprecated_targets_list" | grep -q "$target"; then
add_to deprecated_features $target
fi
done

# see if system emulation was really requested
case " $target_list " in
*"-softmmu "*) softmmu=yes
Expand Down Expand Up @@ -3830,12 +3809,6 @@ else
fi
fi

if test -n "${deprecated_features}"; then
echo "Warning, deprecated features enabled."
echo "Please see docs/about/deprecated.rst"
echo " features: ${deprecated_features}"
fi

# Save the configure command line for later reuse.
cat <<EOD >config.status
#!/bin/sh
Expand Down
7 changes: 0 additions & 7 deletions docs/about/deprecated.rst
Expand Up @@ -403,13 +403,6 @@ The above, converted to the current supported format::
linux-user mode CPUs
--------------------

``ppc64abi32`` CPUs (since 5.2)
'''''''''''''''''''''''''''''''

The ``ppc64abi32`` architecture has a number of issues which regularly
trip up our CI testing and is suspected to be quite broken. For that
reason the maintainers strongly suspect no one actually uses it.

MIPS ``I7200`` CPU (since 5.2)
''''''''''''''''''''''''''''''

Expand Down
8 changes: 8 additions & 0 deletions docs/about/removed-features.rst
Expand Up @@ -601,6 +601,14 @@ the upstream Linux kernel in 2018, and it has also been dropped from glibc, so
there is no new Linux development taking place with this architecture. For
running the old binaries, you can use older versions of QEMU.

``ppc64abi32`` CPUs (removed in 7.0)
''''''''''''''''''''''''''''''''''''

The ``ppc64abi32`` architecture has a number of issues which regularly
tripped up the CI testing and was suspected to be quite broken. For that
reason the maintainers strongly suspected no one actually used it.


TCG introspection features
--------------------------

Expand Down
1 change: 0 additions & 1 deletion docs/user/main.rst
Expand Up @@ -166,7 +166,6 @@ Other binaries

- user mode (PowerPC)

* ``qemu-ppc64abi32`` TODO.
* ``qemu-ppc64`` TODO.
* ``qemu-ppc`` TODO.

Expand Down
4 changes: 2 additions & 2 deletions linux-user/elfload.c
Expand Up @@ -718,7 +718,7 @@ static inline void init_thread(struct target_pt_regs *regs,
#define ELF_MACHINE PPC_ELF_MACHINE
#define ELF_START_MMAP 0x80000000

#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)

#define elf_check_arch(x) ( (x) == EM_PPC64 )

Expand Down Expand Up @@ -870,7 +870,7 @@ static uint32_t get_elf_hwcap2(void)
static inline void init_thread(struct target_pt_regs *_regs, struct image_info *infop)
{
_regs->gpr[1] = infop->start_stack;
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
if (get_ppc64_abi(infop) < 2) {
uint64_t val;
get_user_u64(val, infop->entry + 8);
Expand Down
11 changes: 3 additions & 8 deletions linux-user/ppc/signal.c
Expand Up @@ -477,9 +477,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
int i, err = 0;
#if defined(TARGET_PPC64)
struct target_sigcontext *sc = 0;
#if !defined(TARGET_ABI32)
struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
#endif
#endif

rt_sf_addr = get_sigframe(ka, env, sizeof(*rt_sf));
Expand Down Expand Up @@ -530,7 +528,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
env->gpr[5] = (target_ulong) h2g(&rt_sf->uc);
env->gpr[6] = (target_ulong) h2g(rt_sf);

#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
if (get_ppc64_abi(image) < 2) {
/* ELFv1 PPC64 function pointers are pointers to OPD entries. */
struct target_func_ptr *handler =
Expand Down Expand Up @@ -562,7 +560,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,

}

#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
#if !defined(TARGET_PPC64)
long do_sigreturn(CPUPPCState *env)
{
struct target_sigcontext *sc = NULL;
Expand All @@ -575,12 +573,9 @@ long do_sigreturn(CPUPPCState *env)
if (!lock_user_struct(VERIFY_READ, sc, sc_addr, 1))
goto sigsegv;

#if defined(TARGET_PPC64)
set.sig[0] = sc->oldmask + ((uint64_t)(sc->_unused[3]) << 32);
#else
__get_user(set.sig[0], &sc->oldmask);
__get_user(set.sig[1], &sc->_unused[3]);
#endif

target_to_host_sigset_internal(&blocked, &set);
set_sigmask(&blocked);

Expand Down
4 changes: 2 additions & 2 deletions linux-user/ppc/target_syscall.h
Expand Up @@ -36,7 +36,7 @@ struct target_pt_regs {
abi_ulong link;
abi_ulong xer;
abi_ulong ccr;
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
abi_ulong softe;
#else
abi_ulong mq; /* 601 only (not used at present) */
Expand All @@ -58,7 +58,7 @@ struct target_revectored_struct {
* flags masks
*/

#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
#ifdef TARGET_WORDS_BIGENDIAN
#define UNAME_MACHINE "ppc64"
#else
Expand Down
6 changes: 3 additions & 3 deletions linux-user/syscall_defs.h
Expand Up @@ -1558,7 +1558,7 @@ struct target_stat64 {
struct target_stat {
abi_ulong st_dev;
abi_ulong st_ino;
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
abi_ulong st_nlink;
unsigned int st_mode;
#else
Expand All @@ -1579,12 +1579,12 @@ struct target_stat {
abi_ulong target_st_ctime_nsec;
abi_ulong __unused4;
abi_ulong __unused5;
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
#if defined(TARGET_PPC64)
abi_ulong __unused6;
#endif
};

#if !defined(TARGET_PPC64) || defined(TARGET_ABI32)
#if !defined(TARGET_PPC64)
#define TARGET_HAS_STRUCT_STAT64
struct QEMU_PACKED target_stat64 {
unsigned long long st_dev;
Expand Down
2 changes: 1 addition & 1 deletion tests/docker/dockerfiles/debian-ppc64el-cross.docker
Expand Up @@ -16,7 +16,7 @@ RUN apt update && \

# Specify the cross prefix for this image (see tests/docker/common.rc)
ENV QEMU_CONFIGURE_OPTS --cross-prefix=powerpc64le-linux-gnu-
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user,ppc64abi32-linux-user
ENV DEF_TARGET_LIST ppc64-softmmu,ppc64-linux-user

# Install extra libraries to increase code coverage
RUN apt update && \
Expand Down
2 changes: 1 addition & 1 deletion tests/tcg/configure.sh
Expand Up @@ -167,7 +167,7 @@ for target in $target_list; do
container_image=debian-nios2-cross
container_cross_cc=nios2-linux-gnu-gcc
;;
ppc-*|ppc64abi32-*)
ppc-*)
container_hosts=x86_64
container_image=debian-powerpc-test-cross
container_cross_cc=powerpc-linux-gnu-gcc-10
Expand Down

0 comments on commit 74154d7

Please sign in to comment.