From 3eb5d2fc71c973b95c9678b0644c26c615668218 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 16 Dec 2014 15:14:03 -0800 Subject: Use PTR_MANGLE on libgcc unwinder function pointers. --- sysdeps/gnu/unwind-resume.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'sysdeps/gnu') diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c index 5044a7182e..358b3d547d 100644 --- a/sysdeps/gnu/unwind-resume.c +++ b/sysdeps/gnu/unwind-resume.c @@ -20,6 +20,7 @@ #include #include #include +#include static void (*libgcc_s_resume) (struct _Unwind_Exception *exc) __attribute__ ((noreturn)); @@ -41,7 +42,9 @@ init (void) __libc_fatal (LIBGCC_S_SO " must be installed for pthread_cancel to work\n"); + PTR_MANGLE (resume); libgcc_s_resume = resume; + PTR_MANGLE (personality); libgcc_s_personality = personality; } @@ -50,7 +53,10 @@ _Unwind_Resume (struct _Unwind_Exception *exc) { if (__glibc_unlikely (libgcc_s_resume == NULL)) init (); - (*libgcc_s_resume) (exc); + + __typeof (libgcc_s_resume) resume = libgcc_s_resume; + PTR_DEMANGLE (resume); + (*resume) (exc); } _Unwind_Reason_Code @@ -61,6 +67,9 @@ __gcc_personality_v0 (int version, _Unwind_Action actions, { if (__glibc_unlikely (libgcc_s_personality == NULL)) init (); - return (*libgcc_s_personality) (version, actions, exception_class, - ue_header, context); + + __typeof (libgcc_s_personality) personality = libgcc_s_personality; + PTR_DEMANGLE (personality); + + return (*personality) (version, actions, exception_class, ue_header, context); } -- cgit v1.2.3