Fix CFI annotation of AMD64 assembler helpers on Unix (#5446)
authorJan Vorlicek <janvorli@microsoft.com>
Fri, 3 Jun 2016 10:57:16 +0000 (12:57 +0200)
committerJan Vorlicek <janvorli@microsoft.com>
Fri, 3 Jun 2016 10:57:16 +0000 (12:57 +0200)
This change fixes annotations of AMD64 assembler helpers on Unix. The helpers that
don't use RBP as a stack frame were missing setting the RSP as a CFA register and
unwinding through them was failing.
This was hit in R2R scenarios, with the DelayLoad_Helper_Obj not being unwindable.

src/pal/inc/unixasmmacrosamd64.inc

index d17c0505222a221d4da9bcda85a3fd73103f1b5a..852d306e8715c2c775ec9e1372cc472bed7d9a3b 100644 (file)
@@ -259,6 +259,8 @@ C_FUNC(\Name\()_End):
 // extra locals + padding to qword align
 .macro PROLOG_WITH_TRANSITION_BLOCK extraLocals = 0, stackAllocOnEntry = 0, stackAllocSpill1, stackAllocSpill2, stackAllocSpill3
 
+        set_cfa_register rsp, 8
+        
         __PWTB_FloatArgumentRegisters = \extraLocals
 
         .if ((__PWTB_FloatArgumentRegisters % 16) != 0)