On Fri, 6 Sept 2024 at 10:30, Thomas Huth <th...@redhat.com> wrote: > > On 06/09/2024 10.58, Peter Maydell wrote: > > On Fri, 6 Sept 2024 at 09:09, Thomas Huth <th...@redhat.com> wrote: > >> > >> When QEMU has been configured with "--without-default-devices", the build > >> is currently failing with: > >> > >> /usr/bin/ld: libqemu-riscv32-softmmu.a.p/target_riscv_cpu_helper.c.o: > >> in function `riscv_cpu_do_interrupt': > >> .../qemu/target/riscv/cpu_helper.c:1678:(.text+0x2214): undefined > >> reference to `do_common_semihosting' > >> > >> Avoid calling into do_common_semihosting() if the corresponding Kconfig > >> switch has not been set. > > > > This would be inconsistent with Arm, where you always > > get semihosting if you're using TCG. (For KVM, semihosting > > is up to the kernel to provide, which is why we don't > > want the code in that case.)
> > If you do want to do this thhen this isn't sufficient, because > > you would also need to change the code that generates the > > RISCV_EXCP_SEMIHOST exception so that it instead generates > > the "behave as if we don't have semihosting and the > > semihosting-trap instruction sequence were executed "normally". > > But I think the best thing is to use "select if TCG" in the Kconfig. > > Ok, but I think we then still need a #ifdef CONFIG_TCG here, otherwise > linking will fail for KVM-only builds? Yes, I expect so -- the equivalent code in target/arm is wrapped in #ifdef CONFIG_TCG. -- PMM