No description
Find a file
H. Peter Anvin (Intel) ace0078261 file.c: include <windows.h> before <stringapiset.h>
nasmlib/file.c included <stringapiset.h> directly (for
MultiByteToWideChar()/CompareStringOrdinal()) without first including
<windows.h>. Windows SDK headers like <stringapiset.h> are only
guaranteed to work when pulled in through the normal <windows.h>
pipeline, which sets up SDK-internal architecture macros (_X86_,
_AMD64_, ...) derived from the compiler's own _M_IX86/_M_X64/etc.
Including them directly skips that setup and can fail with a
'No Target Architecture' #error from <winnt.h> -- which is exactly
what happened building with a real cl.exe/nmake in CI.

<windows.h> is deliberately *not* pulled in globally from compiler.h:
it #defines NEAR and FAR as legacy no-op calling-convention keywords,
which clash with NASM's own NEAR/FAR opflags bits (include/opflags.h).
Keep the inclusion local to file.c, the only file that currently needs
Windows API declarations, guarded by WIN32_LEAN_AND_MEAN to keep the
exposed surface minimal.

Confirmed fixed with a real MSVC (cl.exe/nmake) build in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 13:12:06 -07:00
.github/workflows github: save travis.log from CI/CD tests 2026-07-04 19:05:08 -07:00
asm files: formalize storing "mapped" file names in the filenames system 2026-07-06 17:08:01 -07:00
autoconf autoconf: sync with upstream pa_option_lto.m4 2026-06-04 10:50:54 -07:00
common files: formalize storing "mapped" file names in the filenames system 2026-07-06 17:08:01 -07:00
config config/msvc.h: fill in gaps versus configure.ac/config.h.in 2026-07-07 12:57:50 -07:00
contrib contrib/MSVC6.txt: Add guide how to use nasm in MSVC6 2010-01-24 23:17:55 +03:00
disasm Merge remote-tracking branch 'maciej/for-hpa-fixes' 2026-02-26 15:32:29 -08:00
doc doc: fix the example for saving and restoring list options 2026-06-29 07:10:26 -07:00
editors editors/nasmtok.pl: break nasmtok.json into lines 2026-07-04 19:58:07 -07:00
include files: formalize storing "mapped" file names in the filenames system 2026-07-06 17:08:01 -07:00
macros Disable other warnings in endstruc 2025-10-03 10:30:33 -07:00
misc omfdump.c: add updates from Bernd Böckmann 2026-06-07 21:00:04 -07:00
Mkfiles Mkfiles/: sync with Makefile.in 2026-07-06 13:54:38 -07:00
nasmlib file.c: include <windows.h> before <stringapiset.h> 2026-07-07 13:12:06 -07:00
nsis nsis: remove references to RDOFF tools 2022-11-08 18:22:25 -08:00
output Add --debug-prefix-map option 2026-07-04 19:22:48 -07:00
perllib Fix some typos 2022-01-09 17:34:35 +01:00
stdlib nasmlib: move filename_set_extension() into path.c 2025-12-15 09:58:42 -08:00
templates Rename "headers" directory to "templates", add .h template 2025-10-15 17:34:29 -07:00
test test: remove test/performtest.pl and redirect {test,golden} targets 2026-07-06 13:58:35 -07:00
tools Add --debug-prefix-map option 2026-07-04 19:22:48 -07:00
travis Add --debug-prefix-map option 2026-07-04 19:22:48 -07:00
win windows host: add embedded manifest file 2024-01-29 17:19:32 -08:00
x86 x86/insns.pl, tools/testgen: share cc/scc condition-code tables 2026-07-02 00:05:47 -07:00
zlib zlib: yet one more portability hack 2025-09-05 20:08:18 -07:00
.editorconfig .editorconfig: hard tabs are still 8 spaces 2024-06-10 21:12:52 -07:00
.gitattributes gitattributes: don't try to merge the version file 2020-06-30 13:48:13 -07:00
.gitignore Rename travis.mk[.in] -> travis.mak[.in] 2026-07-06 14:09:02 -07:00
.travis.yml travis: Disable osx for a while 2018-10-17 21:40:14 +03:00
AUTHORS Correct name spelling and email address 2015-01-18 20:21:14 +02:00
autogen.sh autogen.sh: Use $PATH_SEPARATOR as a path separator of ACLOCAL_PATH 2025-10-03 10:29:57 -07:00
ChangeLog Fix some typos 2022-01-09 17:34:35 +01:00
CHANGES Move the revision history into the documentation 2008-07-14 02:45:57 -04:00
configure.ac Rename travis.mk[.in] -> travis.mak[.in] 2026-07-06 14:09:02 -07:00
INSTALL Fix some typos 2022-01-09 17:34:35 +01:00
LICENSE treewide: replace verbose copyright headers with SPDX tags 2025-10-01 11:45:31 -07:00
Makefile.in Rename travis.mk[.in] -> travis.mak[.in] 2026-07-06 14:09:02 -07:00
nasm.spec.in nasm.spec.in: change http:// to https:// 2025-10-09 17:19:54 -07:00
nasm.spec.sed nasm.spec: use a sed file to insert perl dependencies 2017-04-23 18:54:23 -07:00
nasm.txt Add --debug-prefix-map option 2026-07-04 19:22:48 -07:00
ndisasm.txt ndisasm: man -- Add missing -p option 2013-04-20 20:18:46 +04:00
README.md doc: remove references to sourceforge 2020-07-01 21:48:44 -07:00
SubmittingPatches SubmittingPatches: more up to date information about the patch format 2026-06-11 12:47:32 -07:00
travis.mak.in Rename travis.mk[.in] -> travis.mak[.in] 2026-07-06 14:09:02 -07:00
version NASM 3.02 2026-06-28 20:37:13 -07:00
version.pl Move editor help files to editors/, add NASM version number 2025-10-02 13:49:43 -07:00

NASM, the Netwide Assembler

master

Many many developers all over the net respect NASM for what it is: a widespread (thus netwide), portable (thus netwide!), very flexible and mature assembler tool with support for many output formats (thus netwide!!).

Now we have good news for you: NASM is licensed under the "simplified" (2-clause) BSD license. This means its development is open to even wider society of programmers wishing to improve their lovely assembler.

Visit our nasm.us website for more details.

With best regards, the NASM crew.