gccint: Miscellaneous routines
1
1 4.6 Miscellaneous runtime library routines
1 ==========================================
1
1 4.6.1 Cache control functions
1 -----------------------------
1
1 -- Runtime Function: void __clear_cache (char *BEG, char *END)
1 This function clears the instruction cache between BEG and END.
1
1 4.6.2 Split stack functions and variables
1 -----------------------------------------
1
1 -- Runtime Function: void * __splitstack_find (void *SEGMENT_ARG, void
1 *SP, size_t LEN, void **NEXT_SEGMENT, void **NEXT_SP, void
1 **INITIAL_SP)
1 When using '-fsplit-stack', this call may be used to iterate over
1 the stack segments. It may be called like this:
1 void *next_segment = NULL;
1 void *next_sp = NULL;
1 void *initial_sp = NULL;
1 void *stack;
1 size_t stack_size;
1 while ((stack = __splitstack_find (next_segment, next_sp,
1 &stack_size, &next_segment,
1 &next_sp, &initial_sp))
1 != NULL)
1 {
1 /* Stack segment starts at stack and is
1 stack_size bytes long. */
1 }
1
1 There is no way to iterate over the stack segments of a different
1 thread. However, what is permitted is for one thread to call this
1 with the SEGMENT_ARG and SP arguments NULL, to pass NEXT_SEGMENT,
1 NEXT_SP, and INITIAL_SP to a different thread, and then to suspend
1 one way or another. A different thread may run the subsequent
1 '__splitstack_find' iterations. Of course, this will only work if
1 the first thread is suspended while the second thread is calling
1 '__splitstack_find'. If not, the second thread could be looking at
1 the stack while it is changing, and anything could happen.
1
1 -- Variable: __morestack_segments
1 -- Variable: __morestack_current_segment
1 -- Variable: __morestack_initial_sp
1 Internal variables used by the '-fsplit-stack' implementation.
1