mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-06-17 07:21:44 +02:00
Mark Wielaard <mwielaard@redhat.com> writes:
On some systems executable stacks are denied. Since libunwind and the tests don't actually need executable stacks this patch marks all assembly files as not needing it. The original patch comes from frysk: 2007-04-05 Jan Kratochvil <jan.kratochvil@redhat.com> * src/hppa/getcontext.S, src/hppa/setcontext.S, src/hppa/siglongjmp.S, src/ia64/Ginstall_cursor.S, src/ia64/Linstall_cursor.S, src/ia64/dyn_info_list.S, src/ia64/getcontext.S, src/ia64/longjmp.S, src/ia64/setjmp.S, src/ia64/siglongjmp.S, src/ia64/sigsetjmp.S, src/ppc64/longjmp.S, src/ppc64/siglongjmp.S, src/x86/longjmp.S, src/x86/siglongjmp.S, src/x86_64/longjmp.S, src/x86_64/setcontext.S, src/x86_64/siglongjmp.S: Stack should be non-executable, for SELinux. I added a couple more markers for new files in current libunwind. Before this patch you would get the following on selinux enabled systems without allow_exec_stack: error while loading shared libraries: libunwind.so.7: cannot enable executable stack as shared object requires: Permission denied After the patch that error disappears and all test results are similar to the results on systems without executable stack protection.
This commit is contained in:
parent
c340d04279
commit
57e5696463
|
@ -68,3 +68,7 @@ _Uhppa_getcontext:
|
||||||
|
|
||||||
bv,n %r0(%rp)
|
bv,n %r0(%rp)
|
||||||
.procend
|
.procend
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -71,3 +71,7 @@ _Uhppa_setcontext:
|
||||||
|
|
||||||
bv,n %r0(%rp)
|
bv,n %r0(%rp)
|
||||||
.procend
|
.procend
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -10,3 +10,7 @@ _UI_longjmp_cont:
|
||||||
#warning fix me
|
#warning fix me
|
||||||
bv %r0(%rp)
|
bv %r0(%rp)
|
||||||
.procend
|
.procend
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -342,3 +342,7 @@ ia64_install_cursor:
|
||||||
.endp ia64_install_cursor
|
.endp ia64_install_cursor
|
||||||
|
|
||||||
#endif /* !UNW_REMOTE_ONLY */
|
#endif /* !UNW_REMOTE_ONLY */
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
#define UNW_LOCAL_ONLY
|
#define UNW_LOCAL_ONLY
|
||||||
#include "Ginstall_cursor.S"
|
#include "Ginstall_cursor.S"
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -20,3 +20,7 @@
|
||||||
data8 0, 0, @segrel(.info)
|
data8 0, 0, @segrel(.info)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -171,3 +171,7 @@ _Uia64_getcontext:
|
||||||
mov r8 = 0
|
mov r8 = 0
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
.endp _Uia64_getcontext
|
.endp _Uia64_getcontext
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -36,3 +36,7 @@ _UI_longjmp_cont: // non-function label for {sig,}longjmp.c
|
||||||
mov r8 = r16
|
mov r8 = r16
|
||||||
br.sptk.many rp
|
br.sptk.many rp
|
||||||
.endp longjmp_continuation
|
.endp longjmp_continuation
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -45,3 +45,7 @@ _setjmp:
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
|
|
||||||
.endp _setjmp
|
.endp _setjmp
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -63,3 +63,7 @@ _UI_siglongjmp_cont: // non-function label for siglongjmp.c
|
||||||
mov r8 = loc2
|
mov r8 = loc2
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
.endp siglongjmp_continuation
|
.endp siglongjmp_continuation
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -63,3 +63,7 @@ __sigsetjmp:
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
|
|
||||||
.endp __sigsetjmp
|
.endp __sigsetjmp
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -29,3 +29,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
.type _UI_longjmp_cont, @function
|
.type _UI_longjmp_cont, @function
|
||||||
_UI_longjmp_cont:
|
_UI_longjmp_cont:
|
||||||
.size _UI_longjmp_cont, .-_UI_longjmp_cont
|
.size _UI_longjmp_cont, .-_UI_longjmp_cont
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -24,3 +24,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
.globl _UI_siglongjmp_cont
|
.globl _UI_siglongjmp_cont
|
||||||
|
|
||||||
_UI_siglongjmp_cont:
|
_UI_siglongjmp_cont:
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -2,3 +2,8 @@
|
||||||
|
|
||||||
_UI_setcontext:
|
_UI_setcontext:
|
||||||
retq
|
retq
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -2,3 +2,8 @@
|
||||||
|
|
||||||
_UI_setcontext:
|
_UI_setcontext:
|
||||||
retq
|
retq
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -35,3 +35,7 @@ _UI_longjmp_cont:
|
||||||
ret
|
ret
|
||||||
.cfi_endproc
|
.cfi_endproc
|
||||||
.size _UI_siglongjmp_cont, .-_UI_longjmp_cont
|
.size _UI_siglongjmp_cont, .-_UI_longjmp_cont
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -66,3 +66,7 @@ _UI_siglongjmp_cont:
|
||||||
jmp *%edx
|
jmp *%edx
|
||||||
.cfi_endproc
|
.cfi_endproc
|
||||||
.size _UI_siglongjmp_cont, .-_UI_siglongjmp_cont
|
.size _UI_siglongjmp_cont, .-_UI_siglongjmp_cont
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -31,3 +31,7 @@ _UI_longjmp_cont:
|
||||||
mov %rdx, %rax /* set up return-value */
|
mov %rdx, %rax /* set up return-value */
|
||||||
retq
|
retq
|
||||||
.size _UI_longjmp_cont, .-_UI_longjmp_cont
|
.size _UI_longjmp_cont, .-_UI_longjmp_cont
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -57,3 +57,7 @@ _x86_64_setcontext:
|
||||||
mov REG_OFFSET_RDI(%rdi),%rdi
|
mov REG_OFFSET_RDI(%rdi),%rdi
|
||||||
retq
|
retq
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -27,3 +27,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
|
||||||
_UI_siglongjmp_cont:
|
_UI_siglongjmp_cont:
|
||||||
retq
|
retq
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -69,3 +69,8 @@ flush_cache:
|
||||||
#else
|
#else
|
||||||
# error Need flush_cache code for this architecture.
|
# error Need flush_cache code for this architecture.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -95,3 +95,8 @@ func_vframe:
|
||||||
}
|
}
|
||||||
func_vframe_end:
|
func_vframe_end:
|
||||||
.endp func_vframe
|
.endp func_vframe
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -501,3 +501,8 @@ save_pr:
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
|
|
||||||
.endp save_pr
|
.endp save_pr
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -268,3 +268,8 @@ resumption_point_label:
|
||||||
;;
|
;;
|
||||||
br.cond.sptk.many b6
|
br.cond.sptk.many b6
|
||||||
.endp resumption_point
|
.endp resumption_point
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -48,3 +48,8 @@ test_func:
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
|
|
||||||
.endp test_func
|
.endp test_func
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
|
@ -176,3 +176,8 @@ touch_all:
|
||||||
mov ar.pfs = loc1
|
mov ar.pfs = loc1
|
||||||
br.ret.sptk.many rp
|
br.ret.sptk.many rp
|
||||||
.endp touch_all
|
.endp touch_all
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* We do not need executable stack. */
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue