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

Reply via email to