提交 5f132a03 编写于 作者: A Andy Polyakov

fips/fips_[canister|premain].c: make it work with VC6 and add sentinels

even to code segments.
上级 d528caa7
...@@ -60,7 +60,13 @@ static void *instruction_pointer_xlc(void); ...@@ -60,7 +60,13 @@ static void *instruction_pointer_xlc(void);
* big-endian encoded variable names, just to prevent these arrays * big-endian encoded variable names, just to prevent these arrays
* from being merged by linker. */ * from being merged by linker. */
# if defined(_MSC_VER) # if defined(_MSC_VER)
# pragma section("fipsro$a",read) # pragma code_seg("fipstx")
# pragma code_seg()
__declspec(allocate("fipstx"))
const unsigned int FIPS_text_startX[]=
{ 0x46495053, 0x5f746578, 0x745f7374, 0x61727458 };
# pragma const_seg("fipsro$a")
# pragma const_seg()
__declspec(allocate("fipsro$a")) __declspec(allocate("fipsro$a"))
# endif # endif
const unsigned int FIPS_rodata_start[]= const unsigned int FIPS_rodata_start[]=
...@@ -71,13 +77,20 @@ const unsigned int FIPS_rodata_start[]= ...@@ -71,13 +77,20 @@ const unsigned int FIPS_rodata_start[]=
# define instruction_pointer FIPS_text_endX # define instruction_pointer FIPS_text_endX
# endif # endif
# if defined(_MSC_VER) # if defined(_MSC_VER)
# pragma section("fipsro$c",read) # pragma code_seg("fipstx$z")
__declspec(allocate("fipsro$c")) # pragma code_seg()
__declspec(allocate("fipstx$z"))
const unsigned int FIPS_text_endX[]=
{ 0x46495053, 0x5f746578, 0x745f656e, 0x64585b5d };
# pragma const_seg("fipsro$z")
# pragma const_seg()
__declspec(allocate("fipsro$z"))
# endif # endif
const unsigned int FIPS_rodata_end[]= const unsigned int FIPS_rodata_end[]=
{ 0x46495053, 0x5f726f64, 0x6174615f, 0x656e645b }; { 0x46495053, 0x5f726f64, 0x6174615f, 0x656e645b };
#endif #endif
#if !defined(_MSC_VER) || !defined(instruction_pointer)
/* /*
* I declare reference function as static in order to avoid certain * I declare reference function as static in order to avoid certain
* pitfalls in -dynamic linker behaviour... * pitfalls in -dynamic linker behaviour...
...@@ -159,6 +172,7 @@ static void *instruction_pointer(void) ...@@ -159,6 +172,7 @@ static void *instruction_pointer(void)
#endif #endif
return ret; return ret;
} }
#endif
/* /*
* This function returns pointer to an instruction in the vicinity of * This function returns pointer to an instruction in the vicinity of
......
...@@ -69,7 +69,8 @@ ...@@ -69,7 +69,8 @@
#endif #endif
#if defined(_MSC_VER) #if defined(_MSC_VER)
# pragma section("fipsro",read) # pragma const_seg("fipsro")
# pragma const_seg()
__declspec(allocate("fipsro")) __declspec(allocate("fipsro"))
#endif #endif
static const unsigned char FINGERPRINT_ascii_value[41] = HMAC_SHA1_SIG; static const unsigned char FINGERPRINT_ascii_value[41] = HMAC_SHA1_SIG;
......
HMAC-SHA1(fips_premain.c)= 3b8c0f293cb26288698881095a7be2e2fc24ea6b HMAC-SHA1(fips_premain.c)= a401afd9c2b57f0f11d2b34b6d0c9815b1fe6a66
...@@ -669,7 +669,8 @@ ...@@ -669,7 +669,8 @@
#define bn_gather5 fips_bn_gather5 #define bn_gather5 fips_bn_gather5
#if defined(_MSC_VER) #if defined(_MSC_VER)
# pragma section("fipsro$b",read) # pragma const_seg("fipsro$b")
# pragma const_seg()
# define __fips_constseg __declspec(allocate("fipsro$b")) # define __fips_constseg __declspec(allocate("fipsro$b"))
#else #else
# define __fips_constseg # define __fips_constseg
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册