xref: /netbsd-src/external/gpl3/gcc.old/dist/libgcc/generic-morestack.h (revision 8feb0f0b7eaff0608f8350bbfa3098827b4bb91b)
11debfc3dSmrg /* Library support for -fsplit-stack.  */
2*8feb0f0bSmrg /* Copyright (C) 2009-2020 Free Software Foundation, Inc.
31debfc3dSmrg    Contributed by Ian Lance Taylor <iant@google.com>.
41debfc3dSmrg 
51debfc3dSmrg This file is part of GCC.
61debfc3dSmrg 
71debfc3dSmrg GCC is free software; you can redistribute it and/or modify it under
81debfc3dSmrg the terms of the GNU General Public License as published by the Free
91debfc3dSmrg Software Foundation; either version 3, or (at your option) any later
101debfc3dSmrg version.
111debfc3dSmrg 
121debfc3dSmrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
131debfc3dSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
141debfc3dSmrg FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
151debfc3dSmrg for more details.
161debfc3dSmrg 
171debfc3dSmrg Under Section 7 of GPL version 3, you are granted additional
181debfc3dSmrg permissions described in the GCC Runtime Library Exception, version
191debfc3dSmrg 3.1, as published by the Free Software Foundation.
201debfc3dSmrg 
211debfc3dSmrg You should have received a copy of the GNU General Public License and
221debfc3dSmrg a copy of the GCC Runtime Library Exception along with this program;
231debfc3dSmrg see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
241debfc3dSmrg <http://www.gnu.org/licenses/>.  */
251debfc3dSmrg 
261debfc3dSmrg /* This is a libgcc internal header file for functions shared between
271debfc3dSmrg    generic-morestack.c and generic-morestack-thread.c.  The latter
281debfc3dSmrg    file is only used when linking with the pthread library.  */
291debfc3dSmrg 
301debfc3dSmrg /* The stack segment structure, defined in generic-morestack.c.  */
311debfc3dSmrg 
321debfc3dSmrg struct stack_segment;
331debfc3dSmrg 
341debfc3dSmrg /* The list of stack segments for this thread.  */
351debfc3dSmrg 
361debfc3dSmrg extern __thread struct stack_segment *__morestack_segments;
371debfc3dSmrg 
381debfc3dSmrg /* Print the string MSG/LEN, the errno number ERR, and a newline on
391debfc3dSmrg    stderr, without using printf.  Then crash.  */
401debfc3dSmrg 
411debfc3dSmrg extern void __morestack_fail (const char *msg, size_t len, int err)
421debfc3dSmrg   __attribute__ ((noreturn, visibility ("hidden")));
431debfc3dSmrg 
441debfc3dSmrg /* Release stack segments.  */
451debfc3dSmrg 
461debfc3dSmrg extern struct dynamic_allocation_blocks *
471debfc3dSmrg   __morestack_release_segments (struct stack_segment **, int)
481debfc3dSmrg   __attribute__ ((visibility ("hidden")));
491debfc3dSmrg 
501debfc3dSmrg /* Store the stack information in a processor dependent manner.  */
511debfc3dSmrg 
521debfc3dSmrg extern void __stack_split_initialize (void)
531debfc3dSmrg   __attribute__ ((visibility ("hidden")));
54