From 088717ccec9d5311fc22340729df37fc83900e69 Mon Sep 17 00:00:00 2001 From: nhmall Date: Mon, 18 Dec 2023 11:52:16 -0500 Subject: [PATCH] do not use the NONNULLxxx macros with djgpp [cross]compiler For now, this will prevent the NONNULLxxx arguments from being defined under a djgpp compiler or crosscompiler. paxed reported a segfault under msdos: nethack.exe Exiting due to signal SIGSEGV Page fault at eip=000c3f8c, error=0004 eax=00000000 ebx=00000000 ecx=00000000 edx=0000000f esi=00000000 edi=00000001 ebp=00589988 esp=00589970 program=C:\NH370\NETHACK.EXE cs: sel=00a7 base=00400000 limit=0063ffff ds: sel=00af base=00400000 limit=0063ffff es: sel=00af base=00400000 limit=0063ffff fs: sel=008f base=00001a20 limit=0000ffff gs: sel=00bf base=00000000 limit=0010ffff ss: sel=00af base=00400000 limit=0063ffff App stack: [00589ba8..00389ba8] Exceptn stack: [00389af4..00387bb4] Call frame traceback EIPs: 0x000c3f8c _read_config_file+19 0x0017619f _initoptions_finish+577 0x00176371 _initoptions+157 0x0025cec4 _pcmain+365 0x0025d8d9 _main+41 He was able to 'git bisect' to the macro definitions change, and confirmed that the segfault no longer occurs after this commit. There may be further investigation on this later. --- include/tradstdc.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/tradstdc.h b/include/tradstdc.h index 6bb60b5bf..128a9dca9 100644 --- a/include/tradstdc.h +++ b/include/tradstdc.h @@ -373,6 +373,10 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */ #define DO_DEFINE_NONNULLS #endif +#if defined(__DJGPP__) && defined(DO_DEFINE_NONNULLS) +#undef DO_DEFINE_NONNULLS +#endif + #if defined(DO_DEFINE_NONNULLS) && !defined(NONNULLS_DEFINED) #define NONNULL __attribute__((returns_nonnull)) #define NONNULLPTRS __attribute__((nonnull))