summary refs log tree commit diff stats
path: root/linux-user/i386/target_elf.h
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2025-07-29 10:14:24 -1000
committerRichard Henderson <richard.henderson@linaro.org>2025-08-30 07:04:04 +1000
commit73addb3ffc2c2252a9ffc55e56d9ed88d1dccd84 (patch)
treefcacd38193cef77d38c3358a9bd292fba96b65fb /linux-user/i386/target_elf.h
parent793ca839186df6cc9dda25121932a25c7d0ff366 (diff)
downloadfocaccia-qemu-73addb3ffc2c2252a9ffc55e56d9ed88d1dccd84.tar.gz
focaccia-qemu-73addb3ffc2c2252a9ffc55e56d9ed88d1dccd84.zip
linux-user: Move elf parameters to {i386,x86_64}/target_elf.h
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'linux-user/i386/target_elf.h')
-rw-r--r--linux-user/i386/target_elf.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h
index f89ac0b611..dc58c0017a 100644
--- a/linux-user/i386/target_elf.h
+++ b/linux-user/i386/target_elf.h
@@ -10,6 +10,11 @@
 
 #include "target_ptrace.h"
 
+#define ELF_CLASS               ELFCLASS32
+#define ELF_ARCH                EM_386
+#define EXSTACK_DEFAULT         true
+#define VDSO_HEADER             "vdso.c.inc"
+
 #define HAVE_ELF_HWCAP          1
 #define HAVE_ELF_PLATFORM       1
 #define HAVE_ELF_CORE_DUMP      1
@@ -22,4 +27,21 @@ typedef struct target_elf_gregset_t {
     struct target_user_regs_struct pt;
 } target_elf_gregset_t;
 
+/*
+ * This is used to ensure we don't load something for the wrong architecture.
+ */
+#define elf_check_arch(x)       ((x) == EM_386 || (x) == EM_486)
+
+/*
+ * i386 is the only target which supplies AT_SYSINFO for the vdso.
+ * All others only supply AT_SYSINFO_EHDR.
+ */
+#define DLINFO_ARCH_ITEMS (vdso_info != NULL)
+#define ARCH_DLINFO                                     \
+    do {                                                \
+        if (vdso_info) {                                \
+            NEW_AUX_ENT(AT_SYSINFO, vdso_info->entry);  \
+        }                                               \
+    } while (0)
+
 #endif