diff options
Diffstat (limited to 'src/loader.c')
| -rw-r--r-- | src/loader.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/loader.c b/src/loader.c index 8f2ac28..2823a79 100644 --- a/src/loader.c +++ b/src/loader.c @@ -6,6 +6,12 @@ // ====== windows.h ====== // ======================= +#if defined(_MSC_VER) && !defined(__clang__) +#define offsetof(s,m) ((size_t)&(((s*)0)->m)) +#else +#define offsetof __builtin_offsetof +#endif + extern uint64_t __readgsqword(unsigned long offset); typedef struct _LIST_ENTRY { @@ -158,7 +164,7 @@ i32 wstr_cmpn(const u16* str1, const u16* str2, size_t count) { } PEB* get_PEB(void) { - return (PEB*)__readgsqword(__builtin_offsetof(TEB, ProcessEnvironmentBlock)); + return (PEB*)__readgsqword(offsetof(TEB, ProcessEnvironmentBlock)); } void* get_module(u16* name, size_t name_size) { |
