From afa71179992e704734ff8aa5da1a3e02b8cdcd27 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 10 Aug 2022 17:07:52 +0200 Subject: [PATCH] Cygwin: move __caller_return_address to mm/malloc_wrapper.cc It's used in this file only anyway, so make it static inline. Signed-off-by: Corinna Vinschen --- winsup/cygwin/local_includes/miscfuncs.h | 4 ---- winsup/cygwin/miscfuncs.cc | 13 ------------- winsup/cygwin/mm/malloc_wrapper.cc | 17 +++++++++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/winsup/cygwin/local_includes/miscfuncs.h b/winsup/cygwin/local_includes/miscfuncs.h index 947b52c2c..706b7a62b 100644 --- a/winsup/cygwin/local_includes/miscfuncs.h +++ b/winsup/cygwin/local_includes/miscfuncs.h @@ -77,10 +77,6 @@ public: extern "C" void yield (); -#define caller_return_address() \ - __caller_return_address (__builtin_return_address (0)) -void * __caller_return_address (void *); - void backslashify (const char *, char *, bool); void slashify (const char *, char *, bool); #define isslash(c) ((c) == '/') diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 0af2e0217..6453fa047 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -315,19 +315,6 @@ NT_readline::gets () } } -/* Helper function to generate the correct caller address. For external - calls, the return address on the stack is _sigbe. In that case the - actual caller return address is on the cygtls stack. Use this function - via the macro caller_return_address. */ -extern "C" void _sigbe (); - -void * -__caller_return_address (void *builtin_ret_addr) -{ - return builtin_ret_addr == &_sigbe - ? (void *) _my_tls.retaddr () : builtin_ret_addr; -} - /* CygwinCreateThread. Replacement function for CreateThread. What we do here is to remove diff --git a/winsup/cygwin/mm/malloc_wrapper.cc b/winsup/cygwin/mm/malloc_wrapper.cc index 5af39d361..8d12eb637 100644 --- a/winsup/cygwin/mm/malloc_wrapper.cc +++ b/winsup/cygwin/mm/malloc_wrapper.cc @@ -27,6 +27,23 @@ extern "C" struct mallinfo dlmallinfo (); static bool use_internal = true; static bool internal_malloc_determined; +/* Helper function to generate the correct caller address. For external + calls, the return address on the stack is _sigbe. In that case the + actual caller return address is on the cygtls stack. Use this function + via the macro caller_return_address. */ +extern "C" void _sigbe (); + +static inline void * +__caller_return_address (void *builtin_ret_addr) +{ + return builtin_ret_addr == &_sigbe + ? (void *) _my_tls.retaddr () : builtin_ret_addr; +} + +#define caller_return_address() \ + __caller_return_address (__builtin_return_address (0)) +void * __caller_return_address (void *); + /* Return an address from the import jmp table of main program. */ static inline void * import_address (void *imp) -- 2.43.5