--------------------------------------------------------------------- -- Chromium Patches. Autogenerated by find_patches.py, do not edit -- --------------------------------------------------------------------- ------------------------------------------------------------------ commit 107604940bdc9787bc12fab8cdcc22ca6d53fdbb Author: Dale Curtis Date: Wed Oct 31 13:03:37 2018 -0700 Apply deterministic build patch. This removes __DATE__ from a few places to ensure the build is always the same. Patch originally authored by davidben at chromium.org This is one of the initial commits preparing NASM for use in Chrome. BUG=766721 Change-Id: I4217f9ffed1455b8f244b024dc10dbb8c5c0664d Affects: asm/nasm.c disasm/ndisasm.c include/ver.h nasmlib/ver.c ------------------------------------------------------------------ commit 4ee6a69ce33be1e96fd3c44a6e3ae3d8177453da Author: Dale Curtis Date: Mon Nov 19 13:52:05 2018 -0800 Remove uses of time(NULL) for build determism. Removes cases suggested on the bug. BUG=766721 TEST=none Change-Id: I88c11d052aef8a9c4e48b3b976ad432f3b008dd6 Affects: asm/nasm.c output/outcoff.c ------------------------------------------------------------------ commit e62fca4a4a7f10e4f1e0506f2cfdb6c1c4b7cf3a Author: Reid Kleckner Date: Tue Aug 6 15:24:48 2019 -0700 Fix extern_inline for MSVC and clang-cl Prior to this change, no inline function bodies would be provided for MSVC. This change fixes that, so nasm will be slightly faster. With clang-cl, however, there would be LNK4006 warnings if the compiler chooses not to inline the ilog2 functions. The easiest way to observe this is with `nmake /f Mkfiles/msvc.mak CC=clang-cl DEBUG=1`. This disables inlining, and I see this at the end of the link: ilog2.obj : warning LNK4006: ilog2_32 already defined in outmacho.obj; second definition ignored ilog2.obj : warning LNK4006: ilog2_64 already defined in eval.obj; second definition ignored ilog2.obj : warning LNK4006: alignlog2_32 already defined in outmacho.obj; second definition ignored When additional instrumentation (-fprofile-instr-generate) is enabled, the warning can become an error, as we discovered in https://crbug.com/989745. MSVC and compilers pretending to be MSVC (clang-cl) implement inline in C with C++ semantics. In C++, inline functions are emitted by the compiler whenever they are needed and the linker discards duplicate inline function definitions. This change adds a new HAVE_MSVC_INLINE macro and adjusts the ifdefs to handle this mode. I chose to keep ilog2.c as part of the build, and to have it emit duplicate definitions of all the inline functions. An alternative solution would be to exclude it from the build, but I felt it was best to solve this in source code instead of the build system. R=dalecurtis@chromium.org, davidben@chromium.org Chromium-specific: I reran find_patches.py with some modifications to make it work on Windows. Change-Id: I21011ed4f619f920c53f7cfc3afaa32dc2c0ff4e Affects: include/compiler.h include/ilog2.h ------------------------------------------------------------------ commit 2326c263ecb55e2fb0747def58855198bdd0fbc4 Author: H. Peter Anvin (Intel) Date: Mon Jul 6 21:46:43 2020 -0700 BR 3392692: outcoff: allow user to reduce the default alignment NASM would incorrectly only allow for the alignment to be increased, even when overridden by the user. Allow the user to specify any alignment value and have it override the partition type default. The user can increade their own alignment value specification later, of course, and the sectalign directive will present a floor for either kind of specification. Reported-by: Dale Curtis Signed-off-by: H. Peter Anvin (Intel) Affects: doc/nasmdoc.src output/outcoff.c output/pecoff.h