Closed
Bug 1455504
Opened 6 years ago
Closed 6 years ago
MSVC is always performing full links
Categories
(Firefox Build System :: General, defect)
Tracking
(firefox61 fixed)
VERIFIED
FIXED
mozilla61
Tracking | Status | |
---|---|---|
firefox61 | --- | fixed |
People
(Reporter: bugzilla, Assigned: chmanchester)
References
Details
Attachments
(1 file)
STR:
1. Add the following to a debug mozconfig:
export LDFLAGS='-verbose -time+'
2. Do a fresh build of gecko;
3. Touch a file that will trigger a relink of xul.dll;
4. ./mach build -v binaries
and log all output to a file.
Expected:
The linker's diagnostic information shows that it is performing an incremental link.
Actual:
The linker outputs the following message:
LINK : object file removed; performing full link
and then the option /fullbuild is shown as having been injected into the linker command line, which presumably overrides the request to link incrementally.
This might be a MSVC linker bug relating to forward slashes in paths passed into the linker. See https://developercommunity.visualstudio.com/content/problem/142544/incremental-linking-regresion-in-154.html
Reporter | ||
Comment 1•6 years ago
|
||
Another possibility could be embedding of the manifest in a subsequent step using mt.exe instead of doing it directly using the /MANIFESTINPUT linker switch.
Comment 2•6 years ago
|
||
Bas was complaining about this in #developers yesterday, I think?
Reporter | ||
Comment 3•6 years ago
|
||
I don't think it can be the manifest (at least in the xul.dll case) because we embed that directly into the resource script, instead of using mt.exe.
Comment 4•6 years ago
|
||
dmajor: I remember you talking about incremental linking vs. lld recently, have you seen anything like this?
(In reply to Aaron Klotz [:aklotz] from comment #0)
> This might be a MSVC linker bug relating to forward slashes in paths passed
> into the linker. See
> https://developercommunity.visualstudio.com/content/problem/142544/
> incremental-linking-regresion-in-154.html
We hacked around that in https://hg.mozilla.org/integration/mozilla-inbound/rev/a1b0ad890d98 But I see that that commit includes a change in expandlibs_exec.py, which has since been reworked.
chmanchester, do you know if the new libs code preserves the `os.path.normpath` workaround?
Flags: needinfo?(cmanchester)
Another way to test this hypothesis would be: do you see the same results as bug 1417958 comment 10?
Flags: needinfo?(aklotz)
Reporter | ||
Comment 7•6 years ago
|
||
Slightly different, but similar:
0:33.69 LINK :Removed file: ..\..\security\nss\lib\crmf\crmf_crmf\crmf.lib
0:33.69 LINK :Removed file: ..\..\js\src\build\js_static.lib
0:33.69 LINK :Removed file: ..\..\toolkit\library\rust\..\i686-pc-windows-msvc\debug\gkrust.lib
0:33.69 LINK :Removed file: ..\..\mozglue\build\mozglue.lib
0:33.69 LINK :Removed file: ..\..\security\nss3.lib
0:33.69 LINK :Removed file: ..\..\config\external\lgpllibs\lgpllibs.lib
Flags: needinfo?(aklotz)
Reporter | ||
Comment 9•6 years ago
|
||
(In reply to David Major [:dmajor] from comment #8)
> And then later you got "Added" with forward slashes, right?
Interestingly enough, those lines are not present:
0:28.78 LINK :Removed file: ..\..\security\nss\lib\crmf\crmf_crmf\crmf.lib
0:28.78 LINK :Removed file: ..\..\js\src\build\js_static.lib
0:28.78 LINK :Removed file: ..\..\toolkit\library\rust\..\i686-pc-windows-msvc\debug\gkrust.lib
0:28.78 LINK :Removed file: ..\..\mozglue\build\mozglue.lib
0:28.78 LINK :Removed file: ..\..\security\nss3.lib
0:28.78 LINK :Removed file: ..\..\config\external\lgpllibs\lgpllibs.lib
0:28.80 LINK : 0 new modules and 1 (out of 2544) modules have changed since prior linking
0:28.80 LINK : object file removed; performing full link
0:28.87 Invoking LINK.EXE:
0:28.87 -NOLOGO -DLL -OUT:xul.dll -PDB:xul.pdb -SUBSYSTEM:WINDOWS,6.01 -MACHINE:X86 @c:/Users/dblohm7/src/mc2/obj-ff-prof-dbg/toolkit/library/xul_dll.list ./module.res -verbose -time+ -LARGEADDRESSAWARE -NXCOMPAT -DYNAMICBASE -SAFESEH -DEBUG -DEBUGTYPE:CV -DELAYLOAD:comdlg32.dll -DELAYLOAD:netapi32.dll -DELAYLOAD:secur32.dll -DELAYLOAD:wininet.dll -DELAYLOAD:winspool.drv -DELAYLOAD:oleacc.dll -DELAYLOAD:msdmo.dll -DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll -DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll ../../security/nss/lib/crmf/crmf_crmf/crmf.lib ../../js/src/build/js_static.lib ../../toolkit/library/rust/../i686-pc-windows-msvc/debug/gkrust.lib ../../mozglue/build/mozglue.lib ../../security/nss3.lib ../../config/external/lgpllibs/lgpllibs.lib kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib secur32.lib wscapi.lib shell32.lib dbghelp.lib hid.lib rpcrt4.lib avrt.lib usp10.lib ole32.lib msimg32.lib winmm.lib Strmiids.lib d3d11.lib dxgi.lib ntdll.lib secur32.lib iphlpapi.lib strmiids.lib dmoguids.lib wmcodecdspuuid.lib amstrmid.lib msdmo.lib wininet.lib mfuuid.lib crypt32.lib version.lib winspool.lib comdlg32.lib imm32.lib netapi32.lib shlwapi.lib ws2_32.lib dwmapi.lib uxtheme.lib setupapi.lib sensorsapi.lib portabledeviceguids.lib wbemuuid.lib wintrust.lib wtsapi32.lib locationapi.lib sapi.lib dxguid.lib oleacc.lib oleaut32.lib delayimp.lib
0:28.87 /incremental
0:28.87 /nologo
0:28.87 /fullbuild
Assignee | ||
Comment 10•6 years ago
|
||
(In reply to David Major [:dmajor] from comment #5)
> (In reply to Aaron Klotz [:aklotz] from comment #0)
> > This might be a MSVC linker bug relating to forward slashes in paths passed
> > into the linker. See
> > https://developercommunity.visualstudio.com/content/problem/142544/
> > incremental-linking-regresion-in-154.html
>
> We hacked around that in
> https://hg.mozilla.org/integration/mozilla-inbound/rev/a1b0ad890d98 But I
> see that that commit includes a change in expandlibs_exec.py, which has
> since been reworked.
>
> chmanchester, do you know if the new libs code preserves the
> `os.path.normpath` workaround?
It looks like it didn't for library paths, I can look into this.
Comment hidden (mozreview-request) |
Comment 12•6 years ago
|
||
mozreview-review |
Comment on attachment 8970759 [details]
Bug 1455504 - Normalize library paths to work around windows incremental linking bug.
https://reviewboard.mozilla.org/r/239510/#review245294
What a pain!
Attachment #8970759 -
Flags: review+
Updated•6 years ago
|
Attachment #8970759 -
Flags: review?(core-build-config-reviews)
Comment 13•6 years ago
|
||
Pushed by aklotz@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8645b620dad4
Normalize library paths to work around windows incremental linking bug. r=ted
Comment hidden (mozreview-request) |
Reporter | ||
Comment 15•6 years ago
|
||
Sorry Chris, I didn't realize you were updating the patch and already pushed it to autoland. :-(
Assignee | ||
Comment 16•6 years ago
|
||
(In reply to Aaron Klotz [:aklotz] from comment #15)
> Sorry Chris, I didn't realize you were updating the patch and already pushed
> it to autoland. :-(
No worries, I found a silly check test issue on try that took a while to test a fix for, I'll reland shortly...
Comment 17•6 years ago
|
||
Pushed by cmanchester@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/b0e196352e17
Normalize library paths to work around windows incremental linking bug. r=ted
Comment 18•6 years ago
|
||
Backout by aiakab@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/674b3e7dd3dd
Backed out changeset 8645b620dad4 on request of aklotz.
Comment 19•6 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 6 years ago
status-firefox61:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
Reporter | ||
Comment 20•6 years ago
|
||
It looks like this worked. I've now got xul.dll linking incrementally in ~16 seconds! \o/
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•