123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- From dfda505870f94a7ac8063eb47f622ddc65665ff1 Mon Sep 17 00:00:00 2001
- From: James Hilliard <james.hilliard1@gmail.com>
- Date: Tue, 14 Jun 2022 19:42:43 -0600
- Subject: [PATCH] Revert "Linux: Implement a useful version of _startup_fatal"
- Fixes:
- csu/libc-tls.c:202: undefined reference to `_startup_fatal_not_constant'
- This reverts commit 2d05ba7f8ef979947e910a37ae8115a816eb4d08.
- Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
- ---
- 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
- <https://www.gnu.org/licenses/>. */
-
- -/* 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 <startup.h>
- +# include <sysdep.h>
- +# include <abort-instr.h>
- +
- +__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 <startup.h>
- +#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
- - <https://www.gnu.org/licenses/>. */
- -
- -/* This code is used before the TCB is set up. */
- -#define IA64_USE_NEW_STUB 0
- -
- -#include_next <startup.h>
- 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
- - <https://www.gnu.org/licenses/>. */
- -
- -#ifdef SHARED
- -# include_next <startup.h>
- -#else
- -# include <sysdep.h>
- -
- -/* 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 */
- --
- 2.25.1
|