unwind: disable executable stacks

Similar to compiler-rt, ensure that we disable executable stacks for the custom
assembly.

llvm-svn: 277868
This commit is contained in:
Saleem Abdulrasool 2016-08-05 21:35:28 +00:00
parent 355a8642b4
commit f7e4524910
3 changed files with 21 additions and 0 deletions

View File

@ -488,3 +488,6 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind14Registers_or1k6jumptoEv)
l.nop
#endif
NO_EXEC_STACK_DIRECTIVE

View File

@ -468,3 +468,6 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext)
l.sw 120(r3), r30
l.sw 124(r3), r31
#endif
NO_EXEC_STACK_DIRECTIVE

View File

@ -35,19 +35,34 @@
#define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
#if defined(__APPLE__)
#define SYMBOL_IS_FUNC(name)
#define NO_EXEC_STACK_DIRECTIVE
#elif defined(__ELF__)
#if defined(__arm__)
#define SYMBOL_IS_FUNC(name) .type name,%function
#else
#define SYMBOL_IS_FUNC(name) .type name,@function
#endif
#if defined(__GNU__) || defined(__ANDROID__) || defined(__FreeBSD__)
#define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits
#else
#define NO_EXEC_STACK_DIRECTIVE
#endif
#else
#define SYMBOL_IS_FUNC(name) \
.def name SEPARATOR \
.scl 2 SEPARATOR \
.type 32 SEPARATOR \
.endef
#define NO_EXEC_STACK_DIRECTIVE
#endif
#define DEFINE_LIBUNWIND_FUNCTION(name) \