public inbox for glibc-cvs@sourceware.org help / color / mirror / Atom feed
From: Szabolcs Nagy <nsz@sourceware.org> To: glibc-cvs@sourceware.org Subject: [glibc/arm/morello/main] cheri: change __libc_start_main prototype Date: Wed, 12 Oct 2022 14:16:56 +0000 (GMT) [thread overview] Message-ID: <20221012141656.1AD9E3850416@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8d2bab6e1795b5a2a6656a81e7419d6820a5d9cf commit 8d2bab6e1795b5a2a6656a81e7419d6820a5d9cf Author: Szabolcs Nagy <szabolcs.nagy@arm.com> Date: Tue Aug 30 10:01:44 2022 +0100 cheri: change __libc_start_main prototype The prototype of __libc_start_main is changed to void __libc_start_main (int main (int, char **, char **, void *), int argc, char **argv, char **envp, void *auxv, void rtld_fini (void), void *sp); so envp is passed down separately and the unused init, fini args are dropped. Diff: --- csu/libc-start.c | 16 +++++++++++ sysdeps/aarch64/morello/start.c | 13 +++++---- .../unix/sysv/linux/aarch64/morello/libc-start.c | 32 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 5 deletions(-) diff --git a/csu/libc-start.c b/csu/libc-start.c index 2726fbdbec..2acefceb1a 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -210,11 +210,16 @@ STATIC int LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), int argc, char **argv, +#ifdef LIBC_START_MAIN_ENVP_ARG + char **envp, +#endif #ifdef LIBC_START_MAIN_AUXVEC_ARG ElfW(auxv_t) *auxvec, #endif +#ifndef LIBC_START_MAIN_NO_INITFINI_ARG __typeof (main) init, void (*fini) (void), +#endif void (*rtld_fini) (void), void *stack_end) __attribute__ ((noreturn)); @@ -233,15 +238,24 @@ STATIC int LIBC_START_MAIN (int (*main) (int, char **, char ** STATIC int LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), int argc, char **argv, +#ifdef LIBC_START_MAIN_ENVP_ARG + char **envp, +#endif #ifdef LIBC_START_MAIN_AUXVEC_ARG ElfW(auxv_t) *auxvec, #endif +#ifndef LIBC_START_MAIN_NO_INITFINI_ARG __typeof (main) init, void (*fini) (void), +#endif void (*rtld_fini) (void), void *stack_end) { #ifndef SHARED +#ifdef LIBC_START_MAIN_ENVP_ARG + char **ev = envp; +#else char **ev = &argv[argc + 1]; +#endif __environ = ev; @@ -358,11 +372,13 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, 0)) GLRO(dl_debug_printf) ("\ninitialize program: %s\n\n", argv[0]); +#ifndef LIBC_START_MAIN_NO_INITFINI_ARG if (init != NULL) /* This is a legacy program which supplied its own init routine. */ (*init) (argc, argv, __environ MAIN_AUXVEC_PARAM); else +#endif /* This is a current program. Use the dynamic segment to find constructors. */ call_init (argc, argv, __environ); diff --git a/sysdeps/aarch64/morello/start.c b/sysdeps/aarch64/morello/start.c index 5af010f8c3..dda9adb30e 100644 --- a/sysdeps/aarch64/morello/start.c +++ b/sysdeps/aarch64/morello/start.c @@ -136,11 +136,10 @@ apply_rel (uintptr_t base, uintptr_t start, uintptr_t end) } #endif /* !SHARED */ -int main (int argc, char **argv); +int main (int argc, char **argv, char **envp, void *auxv); -void __libc_start_main (int main (int, char **), - int argc, char **argv, - void *init, void *fini, +void __libc_start_main (int main (int, char **, char **, void *), + int argc, char **argv, char **envp, void *auxv, void rtld_fini (void), void *sp); void @@ -161,7 +160,11 @@ __real_start (void rtld_fini (void), uintptr_t *sp) int argc = *sp; char **argv = (char **) (sp + 1); - __libc_start_main (main, argc, argv, 0, 0, rtld_fini, sp); + char **envp = argv + argc + 1; + char **p = envp; + while (*p) p++; + void *auxv = p + 1; + __libc_start_main (main, argc, argv, envp, auxv, rtld_fini, sp); __builtin_trap (); } diff --git a/sysdeps/unix/sysv/linux/aarch64/morello/libc-start.c b/sysdeps/unix/sysv/linux/aarch64/morello/libc-start.c new file mode 100644 index 0000000000..4b04648054 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/morello/libc-start.c @@ -0,0 +1,32 @@ +/* Override csu/libc-start.c on Morello. + Copyright (C) 2017-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef SHARED +# include <ldsodefs.h> +# include <cpu-features.c> + +extern struct cpu_features _dl_aarch64_cpu_features; + +# define ARCH_INIT_CPU_FEATURES() init_cpu_features (&_dl_aarch64_cpu_features) +#endif + +#define LIBC_START_MAIN_ENVP_ARG +#define LIBC_START_MAIN_AUXVEC_ARG +#define LIBC_START_MAIN_NO_INITFINI_ARG +#define MAIN_AUXVEC_ARG +#include <csu/libc-start.c>
next reply other threads:[~2022-10-12 14:16 UTC|newest] Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-10-12 14:16 Szabolcs Nagy [this message] 2022-10-26 15:16 Szabolcs Nagy 2022-10-27 13:54 Szabolcs Nagy 2022-11-23 14:44 Szabolcs Nagy
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221012141656.1AD9E3850416@sourceware.org \ --to=nsz@sourceware.org \ --cc=glibc-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).