Module Name:    src
Committed By:   martin
Date:           Thu Dec 14 17:56:09 UTC 2023

Modified Files:
        src/sys/arch/i386/stand [netbsd-10]: Makefile.booters Makefile.inc
        src/sys/arch/i386/stand/bootxx/bootxx_msdos [netbsd-10]: Makefile
        src/sys/arch/i386/stand/bootxx/bootxx_ustarfs [netbsd-10]: Makefile
        src/sys/arch/i386/stand/dosboot [netbsd-10]: Makefile

Log Message:
Pull up following revision(s) (requested by rin in ticket #498):

        sys/arch/i386/stand/dosboot/Makefile: revision 1.35
        sys/arch/i386/stand/Makefile.booters: revision 1.95
        sys/arch/i386/stand/bootxx/bootxx_msdos/Makefile: revision 1.5
        sys/arch/i386/stand/Makefile.inc: revision 1.19
        sys/arch/i386/stand/bootxx/bootxx_ustarfs/Makefile: revision 1.4
        sys/arch/i386/stand/dosboot/Makefile: revision 1.34

Fix the clang build by setting -z noseparate-code

Merge the OPT_SIZE flags. -Oz is not always producing smaller code that -Os,
so default to -Os for both, and we'll override where needed.

Override these two booters with -Oz for clang since it produces smaller code
here.

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?

x86/dosboot: Do not page-align data segment
4K alignment is too heavy burden for COM executable with 64K limit :)
Fix binary size overflow for clang/amd64.


To generate a diff of this commit:
cvs rdiff -u -r1.94 -r1.94.20.1 src/sys/arch/i386/stand/Makefile.booters
cvs rdiff -u -r1.18 -r1.18.30.1 src/sys/arch/i386/stand/Makefile.inc
cvs rdiff -u -r1.4 -r1.4.24.1 \
    src/sys/arch/i386/stand/bootxx/bootxx_msdos/Makefile
cvs rdiff -u -r1.3 -r1.3.94.1 \
    src/sys/arch/i386/stand/bootxx/bootxx_ustarfs/Makefile
cvs rdiff -u -r1.33 -r1.33.26.1 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.

Reply via email to