summaryrefslogtreecommitdiff
path: root/README.patches
blob: dffdbc0e59dc7eba9d6bf1bfd0e09602b83de6f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---------------------------------------------------------------------
-- Chromium Patches. Autogenerated by find_patches.py, do not edit --
---------------------------------------------------------------------


------------------------------------------------------------------
commit 107604940bdc9787bc12fab8cdcc22ca6d53fdbb
Author: Dale Curtis <dalecurtis@chromium.org>
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 <dalecurtis@chromium.org>
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 dff67a9842e4ab6699598d75691a630df090e7f5
Author: Reid Kleckner <rnk@google.com>
Date:   Tue Aug 6 15:16:16 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.

Affects:
    include/compiler.h
    include/ilog2.h