Commit 2309b58448b0c8349156d687d7fa8709dfb68992

Shoaib Meenai 2018-06-17T17:04:24

Mark sysv.S as SafeSEH compatible (#438) It contains no exception handler, so we can just emit the special @feat.00 symbol to indicate that it's trivially SafeSEH compatible. SafeSEH only applies to x86 and not x86-64, hence its inclusion in the x86-specific block. See [1] for details. [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms680547(v=vs.85).aspx#the_.sxdata_section_

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/src/x86/sysv.S b/src/x86/sysv.S
index 27379a4..52f307a 100644
--- a/src/x86/sysv.S
+++ b/src/x86/sysv.S
@@ -1035,6 +1035,15 @@ L(SFDE9):
 L(EFDE9):
 #endif /* !FFI_NO_RAW_API */
 
+#ifdef _WIN32
+	.def	 @feat.00;
+	.scl	3;
+	.type	0;
+	.endef
+	.globl	@feat.00
+@feat.00 = 1
+#endif
+
 #endif /* ifndef _MSC_VER */
 #endif /* ifndef __x86_64__ */