Merge pull request #2884 from flysand7/editor-config

Editor config
This commit is contained in:
Jeroen van Rijn
2023-10-20 15:46:14 +02:00
committed by GitHub
2 changed files with 33 additions and 27 deletions
+6
View File
@@ -0,0 +1,6 @@
root = true
[*]
indent_style = tab
end_of_line = lf
+27 -27
View File
@@ -45,35 +45,35 @@ section .text
; totally supports this kind of stack. ; totally supports this kind of stack.
__chkstk: __chkstk:
;; Allocate 16 bytes to store values of r10 and r11 ;; Allocate 16 bytes to store values of r10 and r11
sub rsp, 0x10 sub rsp, 0x10
mov [rsp], r10 mov [rsp], r10
mov [rsp+0x8], r11 mov [rsp+0x8], r11
;; Set r10 to point to the stack as of the moment of the function call ;; Set r10 to point to the stack as of the moment of the function call
lea r10, [rsp+0x18] lea r10, [rsp+0x18]
;; Subtract r10 til the bottom of the stack allocation, if we overflow ;; Subtract r10 til the bottom of the stack allocation, if we overflow
;; reset r10 to 0, we'll crash with segfault anyway ;; reset r10 to 0, we'll crash with segfault anyway
xor r11, r11 xor r11, r11
sub r10, rax sub r10, rax
cmovb r10, r11 cmovb r10, r11
;; Load r11 with the bottom of the stack (lowest allocated address) ;; Load r11 with the bottom of the stack (lowest allocated address)
mov r11, gs:[0x10] ; NOTE(flysand): gs:[0x10] is stack limit mov r11, gs:[0x10] ; NOTE(flysand): gs:[0x10] is stack limit
;; If the bottom of the allocation is above the bottom of the stack, ;; If the bottom of the allocation is above the bottom of the stack,
;; we don't need to probe ;; we don't need to probe
cmp r10, r11 cmp r10, r11
jnb .end jnb .end
;; Align the bottom of the allocation down to page size ;; Align the bottom of the allocation down to page size
and r10w, 0xf000 and r10w, 0xf000
.loop: .loop:
;; Move the pointer to the next guard page, and touch it by loading 0 ;; Move the pointer to the next guard page, and touch it by loading 0
;; into that page ;; into that page
lea r11, [r11-0x1000] lea r11, [r11-0x1000]
mov byte [r11], 0x0 mov byte [r11], 0x0
;; Did we reach the bottom of the allocation? ;; Did we reach the bottom of the allocation?
cmp r10, r11 cmp r10, r11
jnz .loop jnz .loop
.end: .end:
;; Restore previous r10 and r11 and return ;; Restore previous r10 and r11 and return
mov r10, [rsp] mov r10, [rsp]
mov r11, [rsp+0x8] mov r11, [rsp+0x8]
add rsp, 0x10 add rsp, 0x10
ret ret