Add -fPIC flag to fix build on x64 linux
This commit is contained in:
parent
525213367c
commit
921a874821
2 changed files with 22 additions and 33 deletions
|
|
@ -16,8 +16,8 @@ if (NOT CMAKE_BUILD_TYPE)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
|
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter -fPIC")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-register")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-register -fPIC")
|
||||||
set(CMAKE_PREFIX_PATH /usr)
|
set(CMAKE_PREFIX_PATH /usr)
|
||||||
set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu)
|
set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu)
|
||||||
set(CMAKE_LIBRARY_PATH "/usr/lib32" "/usr/lib/i386-linux-gnu" CACHE PATH "")
|
set(CMAKE_LIBRARY_PATH "/usr/lib32" "/usr/lib/i386-linux-gnu" CACHE PATH "")
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef _JMP_BUF_DEFINED
|
#ifndef _JMP_BUF_DEFINED
|
||||||
#if defined(_M_IX86) || defined(__i386__)
|
#if defined(_M_IX86)
|
||||||
typedef struct __JUMP_BUFFER {
|
typedef struct __JUMP_BUFFER {
|
||||||
uint32_t Ebp;
|
uint32_t Ebp;
|
||||||
uint32_t Ebx;
|
uint32_t Ebx;
|
||||||
|
|
@ -32,41 +32,27 @@ typedef struct __JUMP_BUFFER {
|
||||||
uint32_t UnwindFunc;
|
uint32_t UnwindFunc;
|
||||||
uint32_t UnwindData[6];
|
uint32_t UnwindData[6];
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
|
#elif defined(__i386__)
|
||||||
|
typedef struct __JUMP_BUFFER {
|
||||||
|
uint32_t Bx;
|
||||||
|
uint32_t Si;
|
||||||
|
uint32_t Di;
|
||||||
|
uint32_t Bp;
|
||||||
|
uint32_t Sp;
|
||||||
|
uint32_t Pc;
|
||||||
|
} _JUMP_BUFFER;
|
||||||
#elif defined(__x86_64__)
|
#elif defined(__x86_64__)
|
||||||
#ifndef SETJMP_FLOAT128
|
typedef struct __JUMP_BUFFER {
|
||||||
// TODO do we need to align this?
|
|
||||||
typedef struct _SETJMP_FLOAT128 {
|
|
||||||
uint64_t Part[2];
|
|
||||||
} SETJMP_FLOAT128;
|
|
||||||
#endif
|
|
||||||
typedef struct _JUMP_BUFFER {
|
|
||||||
uint64_t Frame;
|
|
||||||
uint64_t Rbx;
|
uint64_t Rbx;
|
||||||
uint64_t Rsp;
|
|
||||||
uint64_t Rbp;
|
uint64_t Rbp;
|
||||||
uint64_t Rsi;
|
|
||||||
uint64_t Rdi;
|
|
||||||
uint64_t R12;
|
uint64_t R12;
|
||||||
uint64_t R13;
|
uint64_t R13;
|
||||||
uint64_t R14;
|
uint64_t R14;
|
||||||
uint64_t R15;
|
uint64_t R15;
|
||||||
uint64_t Rip;
|
uint64_t Rsp;
|
||||||
uint32_t MxCsr;
|
uint64_t Pc;
|
||||||
uint16_t FpCsr;
|
|
||||||
uint16_t Spare;
|
|
||||||
|
|
||||||
SETJMP_FLOAT128 Xmm6;
|
|
||||||
SETJMP_FLOAT128 Xmm7;
|
|
||||||
SETJMP_FLOAT128 Xmm8;
|
|
||||||
SETJMP_FLOAT128 Xmm9;
|
|
||||||
SETJMP_FLOAT128 Xmm10;
|
|
||||||
SETJMP_FLOAT128 Xmm11;
|
|
||||||
SETJMP_FLOAT128 Xmm12;
|
|
||||||
SETJMP_FLOAT128 Xmm13;
|
|
||||||
SETJMP_FLOAT128 Xmm14;
|
|
||||||
SETJMP_FLOAT128 Xmm15;
|
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
#elif defined(_M_ARM) || defined(__arm__)
|
#elif defined(_M_ARM)
|
||||||
typedef struct _JUMP_BUFFER {
|
typedef struct _JUMP_BUFFER {
|
||||||
uint32_t Frame;
|
uint32_t Frame;
|
||||||
|
|
||||||
|
|
@ -84,7 +70,7 @@ typedef struct _JUMP_BUFFER {
|
||||||
uint32_t Fpscr;
|
uint32_t Fpscr;
|
||||||
uint32_t long D[8]; // D8-D15 VFP/NEON regs
|
uint32_t long D[8]; // D8-D15 VFP/NEON regs
|
||||||
} _JUMP_BUFFER;
|
} _JUMP_BUFFER;
|
||||||
#elif defined(_M_ARM64) || defined(__aarch64__)
|
#elif defined(_M_ARM64)
|
||||||
typedef struct _JUMP_BUFFER {
|
typedef struct _JUMP_BUFFER {
|
||||||
uint64_t Frame;
|
uint64_t Frame;
|
||||||
uint64_t Reserved;
|
uint64_t Reserved;
|
||||||
|
|
@ -141,11 +127,14 @@ typedef struct _JUMP_BUFFER {
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_M_IX86) || defined(__i386__)
|
#if defined(_M_IX86)
|
||||||
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (uintptr_t)func
|
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (uintptr_t)func
|
||||||
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (uintptr_t)sp
|
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (uintptr_t)sp
|
||||||
|
#elif defined(__i386__)
|
||||||
|
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
|
||||||
|
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
|
||||||
#elif defined(__x86_64__)
|
#elif defined(__x86_64__)
|
||||||
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (uintptr_t)func
|
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
|
||||||
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (uintptr_t)sp
|
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (uintptr_t)sp
|
||||||
#elif defined(_M_X64)
|
#elif defined(_M_X64)
|
||||||
#define SETJMP_SET_IP(jump, func) (jump)->rip_getjmp = (uintptr_t)func
|
#define SETJMP_SET_IP(jump, func) (jump)->rip_getjmp = (uintptr_t)func
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue