From 6b8959add09e425df262bf9178b39ca35bc4003c Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Sun, 24 Jul 2022 19:41:41 +0200 Subject: [PATCH] Revert "Linux: Implement a useful version of _startup_fatal" This reverts commit 2d05ba7f8ef979947e910a37ae8115a816eb4d08. Upstream-Status: Inappropriate [temporary work around] Signed-off-by: Martin Jansa --- sysdeps/unix/sysv/linux/i386/startup.h | 23 ++++++++++++--- sysdeps/unix/sysv/linux/ia64/startup.h | 22 --------------- sysdeps/unix/sysv/linux/startup.h | 39 -------------------------- 3 files changed, 19 insertions(+), 65 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/ia64/startup.h delete mode 100644 sysdeps/unix/sysv/linux/startup.h diff --git a/sysdeps/unix/sysv/linux/i386/startup.h b/sysdeps/unix/sysv/linux/i386/startup.h index 213805d7d2..67c9310f3a 100644 --- a/sysdeps/unix/sysv/linux/i386/startup.h +++ b/sysdeps/unix/sysv/linux/i386/startup.h @@ -1,5 +1,5 @@ /* Linux/i386 definitions of functions used by static libc main startup. - Copyright (C) 2022 Free Software Foundation, Inc. + 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 @@ -16,7 +16,22 @@ License along with the GNU C Library; if not, see . */ -/* Can't use "call *%gs:SYSINFO_OFFSET" during startup. */ -#define I386_USE_SYSENTER 0 +#if BUILD_PIE_DEFAULT +/* Can't use "call *%gs:SYSINFO_OFFSET" during statup in static PIE. */ +# define I386_USE_SYSENTER 0 -#include_next +# include +# include + +__attribute__ ((__noreturn__)) +static inline void +_startup_fatal (const char *message __attribute__ ((unused))) +{ + /* This is only called very early during startup in static PIE. + FIXME: How can it be improved? */ + ABORT_INSTRUCTION; + __builtin_unreachable (); +} +#else +# include_next +#endif diff --git a/sysdeps/unix/sysv/linux/ia64/startup.h b/sysdeps/unix/sysv/linux/ia64/startup.h deleted file mode 100644 index 77f29f15a2..0000000000 --- a/sysdeps/unix/sysv/linux/ia64/startup.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Linux/ia64 definitions of functions used by static libc main startup. - Copyright (C) 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 - . */ - -/* This code is used before the TCB is set up. */ -#define IA64_USE_NEW_STUB 0 - -#include_next diff --git a/sysdeps/unix/sysv/linux/startup.h b/sysdeps/unix/sysv/linux/startup.h deleted file mode 100644 index 39859b404a..0000000000 --- a/sysdeps/unix/sysv/linux/startup.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Linux definitions of functions used by static libc main startup. - 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 - . */ - -#ifdef SHARED -# include_next -#else -# include - -/* Avoid a run-time invocation of strlen. */ -#define _startup_fatal(message) \ - do \ - { \ - size_t __message_length = __builtin_strlen (message); \ - if (! __builtin_constant_p (__message_length)) \ - { \ - extern void _startup_fatal_not_constant (void); \ - _startup_fatal_not_constant (); \ - } \ - INTERNAL_SYSCALL_CALL (write, STDERR_FILENO, (message), \ - __message_length); \ - INTERNAL_SYSCALL_CALL (exit_group, 127); \ - } \ - while (0) -#endif /* !SHARED */