[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 28/38] linux-user: Introduce stubs for ELF AT_BASE_PLATFORM
From: |
Laurent Vivier |
Subject: |
[PULL 28/38] linux-user: Introduce stubs for ELF AT_BASE_PLATFORM |
Date: |
Wed, 28 Sep 2022 10:15:07 +0200 |
From: Jiaxun Yang <jiaxun.yang@flygoat.com>
AT_BASE_PLATFORM is a elf auxiliary vector pointing to a string
to pass some architecture information.
See getauxval(3) man-page.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220803103009.95972-2-jiaxun.yang@flygoat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
linux-user/elfload.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index c7e3f1d47c16..581fbc858b48 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -1776,6 +1776,10 @@ static inline void init_thread(struct target_pt_regs
*regs,
#endif /* TARGET_HEXAGON */
+#ifndef ELF_BASE_PLATFORM
+#define ELF_BASE_PLATFORM (NULL)
+#endif
+
#ifndef ELF_PLATFORM
#define ELF_PLATFORM (NULL)
#endif
@@ -2220,8 +2224,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc,
int envc,
int i;
abi_ulong u_rand_bytes;
uint8_t k_rand_bytes[16];
- abi_ulong u_platform;
- const char *k_platform;
+ abi_ulong u_platform, u_base_platform;
+ const char *k_platform, *k_base_platform;
const int n = sizeof(elf_addr_t);
sp = p;
@@ -2243,6 +2247,22 @@ static abi_ulong create_elf_tables(abi_ulong p, int
argc, int envc,
}
}
+ u_base_platform = 0;
+ k_base_platform = ELF_BASE_PLATFORM;
+ if (k_base_platform) {
+ size_t len = strlen(k_base_platform) + 1;
+ if (STACK_GROWS_DOWN) {
+ sp -= (len + n - 1) & ~(n - 1);
+ u_base_platform = sp;
+ /* FIXME - check return value of memcpy_to_target() for failure */
+ memcpy_to_target(sp, k_base_platform, len);
+ } else {
+ memcpy_to_target(sp, k_base_platform, len);
+ u_base_platform = sp;
+ sp += len + 1;
+ }
+ }
+
u_platform = 0;
k_platform = ELF_PLATFORM;
if (k_platform) {
@@ -2284,6 +2304,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc,
int envc,
}
size = (DLINFO_ITEMS + 1) * 2;
+ if (k_base_platform)
+ size += 2;
if (k_platform)
size += 2;
#ifdef DLINFO_ARCH_ITEMS
@@ -2361,6 +2383,9 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc,
int envc,
NEW_AUX_ENT(AT_HWCAP2, (abi_ulong) ELF_HWCAP2);
#endif
+ if (u_base_platform) {
+ NEW_AUX_ENT(AT_BASE_PLATFORM, u_base_platform);
+ }
if (u_platform) {
NEW_AUX_ENT(AT_PLATFORM, u_platform);
}
--
2.37.3
- [PULL 35/38] linux-user: Update print_futex_op, (continued)
- [PULL 35/38] linux-user: Update print_futex_op, Laurent Vivier, 2022/09/28
- [PULL 22/38] linux-user/hppa: Increase guest stack size to 80MB for hppa target, Laurent Vivier, 2022/09/28
- [PULL 31/38] linux-user: Sink call to do_safe_futex, Laurent Vivier, 2022/09/28
- [PULL 34/38] linux-user: Implement PI futexes, Laurent Vivier, 2022/09/28
- [PULL 29/38] linux-user: Set ELF_BASE_PLATFORM for MIPS, Laurent Vivier, 2022/09/28
- [PULL 15/38] linux-user: Implement stracing madvise(), Laurent Vivier, 2022/09/28
- [PULL 21/38] linux-user/hppa: Drop stack guard page on hppa target, Laurent Vivier, 2022/09/28
- [PULL 20/38] linux-user/hppa: Add signal trampoline for hppa target, Laurent Vivier, 2022/09/28
- [PULL 38/38] linux-user: Add parameters of getrandom() syscall for strace, Laurent Vivier, 2022/09/28
- [PULL 11/38] linux-user: Add strace for clock_nanosleep(), Laurent Vivier, 2022/09/28
- [PULL 28/38] linux-user: Introduce stubs for ELF AT_BASE_PLATFORM,
Laurent Vivier <=
- [PULL 16/38] linux-user: Passthrough MADV_DONTNEED for certain file mappings, Laurent Vivier, 2022/09/28
- [PULL 24/38] linux-user/hppa: Fix setup_sigcontext(), Laurent Vivier, 2022/09/28
- [PULL 36/38] linux-user: Lock log around strace, Laurent Vivier, 2022/09/28
- [PULL 37/38] linux-user: Log tid for strace, Laurent Vivier, 2022/09/28
- [PULL 25/38] linux-user: fix bug about missing signum convert of sigqueue, Laurent Vivier, 2022/09/28
- [PULL 32/38] linux-user: Implement FUTEX_WAKE_BITSET, Laurent Vivier, 2022/09/28
- [PULL 33/38] linux-user: Convert signal number for FUTEX_FD, Laurent Vivier, 2022/09/28
- Re: [PULL 00/38] Linux user for 7.2 patches, Stefan Hajnoczi, 2022/09/28