summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/loader.c8
-rw-r--r--src/pdb.c2
-rw-r--r--src/utils.c6
3 files changed, 12 insertions, 4 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) {
diff --git a/src/pdb.c b/src/pdb.c
index 15ee4cf..1057f63 100644
--- a/src/pdb.c
+++ b/src/pdb.c
@@ -182,7 +182,7 @@
// ========================
#if defined(_MSC_VER) && !defined(__clang__)
- #define alloca
+ #define alloca _alloca
#elif defined(__clang__)
#define alloca __builtin_alloca
#endif
diff --git a/src/utils.c b/src/utils.c
index 95a1d80..6de7c92 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -53,16 +53,18 @@ void str_cat(char* out, const char* str, size_t c_str) {
}
}
-void memcpy(void* restrict dst, const void* restrict src, size_t size) {
+void* memcpy(void* restrict dst, const void* restrict src, size_t size) {
RtlCopyMemory(dst, src, size);
+ return dst;
}
-void memset(void* dst, int fill, size_t count) {
+void* memset(void* dst, int fill, size_t count) {
if (fill == 0) {
RtlZeroMemory(dst, count);
} else {
RtlFillMemory(dst, count, fill);
}
+ return dst;
}
void u64toa(u64 number, char* str, u32 base) {