Module Name: src Committed By: rin Date: Mon Nov 6 06:53:52 UTC 2023
Modified Files: src/sys/arch/i386/stand/dosboot: Makefile Log Message: x86/dosboot: Allow NULL dereference to fetch command line arguments DOS command line arguments are provided as struct psp at 0x0000; see doscommain.c. Recent versions of gcc and clang are clever enough to optimize code block involving NULL dereference into ud2 insn. Sprinkle -fno-delete-null-pointer-checks to doscommain.c to prevent this behavior. Note that dosboot.com for netbsd-9 and later was broken due to this ``over optimization''. gcc 5.5.0 and clang 4.0.0 in netbsd-8 generate correct codes without this workaround. XXX Are there still use cases for dosboot.com? Does anyone want to boot NetBSD from real-mode DOS in 2023? To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 src/sys/arch/i386/stand/dosboot/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/i386/stand/dosboot/Makefile diff -u src/sys/arch/i386/stand/dosboot/Makefile:1.33 src/sys/arch/i386/stand/dosboot/Makefile:1.34 --- src/sys/arch/i386/stand/dosboot/Makefile:1.33 Mon Sep 23 13:42:36 2019 +++ src/sys/arch/i386/stand/dosboot/Makefile Mon Nov 6 06:53:52 2023 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.33 2019/09/23 13:42:36 christos Exp $ +# $NetBSD: Makefile,v 1.34 2023/11/06 06:53:52 rin Exp $ S= ${.CURDIR}/../../../.. @@ -31,6 +31,9 @@ SAMISCCPPFLAGS+= -DHEAP_START=0x20000 -D SAMISCMAKEFLAGS= SA_USE_CREAD=yes SA_INCLUDE_NET=no SA_ENABLE_LS_OP=yes I386MISCMAKEFLAGS= I386_INCLUDE_DOS=yes +# DOS command line arguments are located at 0x0000. +COPTS.doscommain.c+= -fno-delete-null-pointer-checks + VERSIONFILE= ${.CURDIR}/version .include <bsd.init.mk>