On 5/23/26 14:41, Matt Turner wrote:
Provides replacement VDSO with sigreturn trampolines
(__kernel_sigreturn, __kernel_rt_sigreturn) and syscall stubs
(clock_gettime, clock_gettime64, clock_getres, gettimeofday).
Both LE and BE blobs are committed and selected at compile time via
TARGET_BIG_ENDIAN. The BE variant requires an sh4eb-unknown-linux-gnu
toolchain; sh4-unknown-linux-gnu does not support -mb.
CFI register numbers follow GCC's SH_DEBUGGER_REGNO:
PR=17, GBR=18, MACH=20, MACL=21, FPUL=23, FPSCR=24, FR0-15=25-40.
---
linux-user/sh4/Makefile.vdso | 18 ++++
linux-user/sh4/elfload.c | 14 ++++
linux-user/sh4/meson.build | 12 +++
linux-user/sh4/target_elf.h | 1 +
linux-user/sh4/vdso-asmoffset.h | 45 ++++++++++
linux-user/sh4/vdso-be.so | Bin 0 -> 2704 bytes
linux-user/sh4/vdso-le.so | Bin 0 -> 2704 bytes
linux-user/sh4/vdso.S | 142 ++++++++++++++++++++++++++++++++
linux-user/sh4/vdso.ld | 67 +++++++++++++++
9 files changed, 299 insertions(+)
create mode 100644 linux-user/sh4/Makefile.vdso
create mode 100644 linux-user/sh4/vdso-asmoffset.h
create mode 100755 linux-user/sh4/vdso-be.so
create mode 100755 linux-user/sh4/vdso-le.so
create mode 100644 linux-user/sh4/vdso.S
create mode 100644 linux-user/sh4/vdso.ld
diff --git ./linux-user/sh4/Makefile.vdso ./linux-user/sh4/Makefile.vdso
new file mode 100644
index 0000000000..272c5d262d
--- /dev/null
+++ ./linux-user/sh4/Makefile.vdso
@@ -0,0 +1,18 @@
+include $(BUILD_DIR)/tests/tcg/sh4-linux-user/config-target.mak
+
+SUBDIR = $(SRC_PATH)/linux-user/sh4
+VPATH += $(SUBDIR)
+
+all: $(SUBDIR)/vdso-le.so $(SUBDIR)/vdso-be.so
+
+LDFLAGS = -nostdlib -shared -Wl,-h,linux-gate.so.1 \
+ -Wl,--build-id=sha1 -Wl,--hash-style=both \
+ -Wl,-T,$(SUBDIR)/vdso.ld
+
+$(SUBDIR)/vdso-le.so: vdso.S vdso.ld vdso-asmoffset.h
+ $(CC) -o $@ $(LDFLAGS) -ml $<
+
+CC_BE = sh4eb-unknown-linux-gnu-gcc
+
+$(SUBDIR)/vdso-be.so: vdso.S vdso.ld vdso-asmoffset.h
+ $(CC_BE) -o $@ $(LDFLAGS) $<
Where this sh4eb-unknown-linux-gnu-gcc comes from? For one,
we don't have it in debian. Can the same be produced with
sh4-linux-gnu-gcc -Wl,-EB -Wa,--big
instead? (Or -gcc -mb, which does not work on debian currenly).
I can pass this on command like as CC_BE="..".
But I know nothing about sh4, so dunno if this is the right
thing to do. It builds, but I don't have any sh4eb binary
to test against.
Thanks,
/mjt