libunwind: use upstream patch to disable executable stacks

arm uses '@' as a comment character, and cannot use @progbits in the
.section directive. Apply the upstream noexec stach change which avoids
this issue.

Obtained from:	LLVM r277868
This commit is contained in:
Ed Maste 2017-10-11 19:26:39 +00:00
parent c6acf96aac
commit 2be6126d2a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=324536
3 changed files with 19 additions and 2 deletions

View File

@ -528,4 +528,5 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9libunwind15Registers_riscv6jumptoEv)
#endif
.section .note.GNU-stack,"",@progbits
NO_EXEC_STACK_DIRECTIVE

View File

@ -470,4 +470,5 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext)
#endif
.section .note.GNU-stack,"",@progbits
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) \