From f36b9b544dd16070813782e8c566a9b9fa2a8e77 Mon Sep 17 00:00:00 2001 From: nyanpasu64 Date: Mon, 21 Feb 2022 21:15:43 -0800 Subject: [PATCH] Fix segfault on 64-bit LLP64 Windows builds There are many occurrences of unsigned long in codegen.h's function arguments. Changing g_getimmed and g_defdata makes `make` succeed without segfaulting. I don't know if it makes cc65 behave correctly in all cases, or if there are more unsigned long that need to be changed. --- src/cc65/codegen.c | 4 ++-- src/cc65/codegen.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cc65/codegen.c b/src/cc65/codegen.c index 3a98f5e63..59be677fd 100644 --- a/src/cc65/codegen.c +++ b/src/cc65/codegen.c @@ -689,7 +689,7 @@ void g_restore_regvars (int StackOffs, int RegOffs, unsigned Bytes) -void g_getimmed (unsigned Flags, unsigned long Val, long Offs) +void g_getimmed (unsigned Flags, uintptr_t Val, long Offs) /* Load a constant into the primary register */ { unsigned char B1, B2, B3, B4; @@ -4394,7 +4394,7 @@ void g_res (unsigned n) -void g_defdata (unsigned flags, unsigned long val, long offs) +void g_defdata (unsigned flags, uintptr_t val, long offs) /* Define data with the size given in flags */ { if (flags & CF_CONST) { diff --git a/src/cc65/codegen.h b/src/cc65/codegen.h index b0cf9858d..0a5384578 100644 --- a/src/cc65/codegen.h +++ b/src/cc65/codegen.h @@ -271,7 +271,7 @@ void g_restore_regvars (int StackOffs, int RegOffs, unsigned Bytes); -void g_getimmed (unsigned Flags, unsigned long Val, long Offs); +void g_getimmed (unsigned Flags, uintptr_t Val, long Offs); /* Load a constant into the primary register */ void g_getstatic (unsigned Flags, uintptr_t Label, long Offs); @@ -461,7 +461,7 @@ void g_ge (unsigned flags, unsigned long val); void g_res (unsigned n); /* Reserve static storage, n bytes */ -void g_defdata (unsigned flags, unsigned long val, long offs); +void g_defdata (unsigned flags, uintptr_t val, long offs); /* Define data with the size given in flags */ void g_defbytes (const void* bytes, unsigned count);