Hi, I had already fixed it and sent a patchv6, I will send another one with the other changes.
On Mon, 16 Sept, 2024, 5:51 am Daniel Henrique Barboza, < dbarb...@ventanamicro.com> wrote: > > > On 9/12/24 2:29 AM, Alistair Francis wrote: > > From: Mark Corbin <m...@dibsco.co.uk> > > > > Implemented the 'setup_sigtramp' function for setting up the signal > > trampoline code in the RISC-V architecture. > > > > Signed-off-by: Mark Corbin <m...@dibsco.co.uk> > > Signed-off-by: Ajeet Singh <itac...@freebsd.org> > > Reviewed-by: Richard Henderson <richard.hender...@linaro.org> > > Message-ID: <20240907031927.1908-8-itac...@freebsd.org> > > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > > --- > > bsd-user/riscv/target_arch_sigtramp.h | 42 +++++++++++++++++++++++++++ > > 1 file changed, 42 insertions(+) > > create mode 100644 bsd-user/riscv/target_arch_sigtramp.h > > > > diff --git a/bsd-user/riscv/target_arch_sigtramp.h > b/bsd-user/riscv/target_arch_sigtramp.h > > new file mode 100644 > > index 0000000000..83345f3961 > > --- /dev/null > > +++ b/bsd-user/riscv/target_arch_sigtramp.h > > @@ -0,0 +1,42 @@ > > +/* > > + * RISC-V sigcode > > + * > > + * Copyright (c) 2019 Mark Corbin > > + * > > + * 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 TARGET_ARCH_SIGTRAMP_H > > +#define TARGET_ARCH_SIGTRAMP_H > > + > > +/* Compare with sigcode() in riscv/riscv/locore.S */ > > +static inline abi_long setup_sigtramp(abi_ulong offset, unsigned > sigf_uc, > > + unsigned sys_sigreturn) > > +{ > > + int i; > > There's no 'i' var being used. This will throw an 'unused variable' > warning when building. > > > + uint32_t sys_exit = TARGET_FREEBSD_NR_exit; > > + > > + static const uint32_t sigtramp_code[] = { > > + /*1*/ const_le32(0x00010513), /*mv a0, sp*/ > > + /*2*/ const_le32(0x00050513 + (sigf_uc << 20)), /*addi > a0,a0,sigf_uc*/ > > + /*3*/ const_le32(0x00000293 + (sys_sigreturn << 20)),/*li > t0,sys_sigreturn*/ > > + /*4*/ const_le32(0x00000073), /*ecall*/ > > + /*5*/ const_le32(0x00000293 + (sys_exit << 20)), /*li > t0,sys_exit*/ > > + /*6*/ const_le32(0x00000073), /*ecall*/ > > + /*7*/ const_le32(0xFF1FF06F) /*b -16*/ > > + }; > > > And this will throw the following error: > > ../bsd-user/riscv/target_arch_sigtramp.h:32:33: error: initializer element > is not a compile-time constant > 32 | /*2*/ const_le32(0x00050513 + (sigf_uc << 20)), /*addi > a0,a0,sigf_uc*/ > ~~~~~~~~~~~^~~~~~~~~~~~~~~~~ > /tmp/cirrus-ci-build/include/qemu/bswap.h:168:26: note: expanded from > macro 'const_le32' > 168 | # define const_le32(_x) (_x) > | ^~ > 1 error generated. > > > One solution is to remove the 'static const' qualifier from the array, like > bsd-user/arm/target_arch_sigtramp.h is doing. > > > This diff will fix the build: > > > diff --git a/bsd-user/riscv/target_arch_sigtramp.h > b/bsd-user/riscv/target_arch_sigtramp.h > index 83345f3961..dfe5076739 100644 > --- a/bsd-user/riscv/target_arch_sigtramp.h > +++ b/bsd-user/riscv/target_arch_sigtramp.h > @@ -24,10 +24,9 @@ > static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc, > unsigned sys_sigreturn) > { > - int i; > uint32_t sys_exit = TARGET_FREEBSD_NR_exit; > > - static const uint32_t sigtramp_code[] = { > + uint32_t sigtramp_code[] = { > /*1*/ const_le32(0x00010513), /*mv a0, sp*/ > /*2*/ const_le32(0x00050513 + (sigf_uc << 20)), /*addi > a0,a0,sigf_uc*/ > /*3*/ const_le32(0x00000293 + (sys_sigreturn << 20)),/*li > t0,sys_sigreturn*/ > > > > > Thanks, > > Daniel > > > > > + > > + return memcpy_to_target(offset, sigtramp_code, TARGET_SZSIGCODE); > > +} > > +#endif /* TARGET_ARCH_SIGTRAMP_H */ >