1 1.1 mrg /* Library support for -fsplit-stack. */ 2 1.1.1.11 mrg /* Copyright (C) 2009-2024 Free Software Foundation, Inc. 3 1.1 mrg Contributed by Ian Lance Taylor <iant (at) google.com>. 4 1.1 mrg 5 1.1 mrg This file is part of GCC. 6 1.1 mrg 7 1.1 mrg GCC is free software; you can redistribute it and/or modify it under 8 1.1 mrg the terms of the GNU General Public License as published by the Free 9 1.1 mrg Software Foundation; either version 3, or (at your option) any later 10 1.1 mrg version. 11 1.1 mrg 12 1.1 mrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY 13 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 1.1 mrg FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 1.1 mrg for more details. 16 1.1 mrg 17 1.1 mrg Under Section 7 of GPL version 3, you are granted additional 18 1.1 mrg permissions described in the GCC Runtime Library Exception, version 19 1.1 mrg 3.1, as published by the Free Software Foundation. 20 1.1 mrg 21 1.1 mrg You should have received a copy of the GNU General Public License and 22 1.1 mrg a copy of the GCC Runtime Library Exception along with this program; 23 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24 1.1 mrg <http://www.gnu.org/licenses/>. */ 25 1.1 mrg 26 1.1 mrg /* This is a libgcc internal header file for functions shared between 27 1.1 mrg generic-morestack.c and generic-morestack-thread.c. The latter 28 1.1 mrg file is only used when linking with the pthread library. */ 29 1.1 mrg 30 1.1 mrg /* The stack segment structure, defined in generic-morestack.c. */ 31 1.1 mrg 32 1.1 mrg struct stack_segment; 33 1.1 mrg 34 1.1 mrg /* The list of stack segments for this thread. */ 35 1.1 mrg 36 1.1 mrg extern __thread struct stack_segment *__morestack_segments; 37 1.1 mrg 38 1.1 mrg /* Print the string MSG/LEN, the errno number ERR, and a newline on 39 1.1 mrg stderr, without using printf. Then crash. */ 40 1.1 mrg 41 1.1 mrg extern void __morestack_fail (const char *msg, size_t len, int err) 42 1.1 mrg __attribute__ ((noreturn, visibility ("hidden"))); 43 1.1 mrg 44 1.1 mrg /* Release stack segments. */ 45 1.1 mrg 46 1.1 mrg extern struct dynamic_allocation_blocks * 47 1.1 mrg __morestack_release_segments (struct stack_segment **, int) 48 1.1 mrg __attribute__ ((visibility ("hidden"))); 49 1.1 mrg 50 1.1 mrg /* Store the stack information in a processor dependent manner. */ 51 1.1 mrg 52 1.1 mrg extern void __stack_split_initialize (void) 53 1.1 mrg __attribute__ ((visibility ("hidden"))); 54