New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 712796 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Jul 26
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Feature

Blocked on:
issue 863425

Blocking:
issue 706224



Sign in to add a comment

Pass -fdebug-compilation-dir on win/clang builders

Project Member Reported by no...@chromium.org, Apr 18 2017

Issue description

Once  bug 712790  is fixed, please pass -fdebug-prefix-map flag on win/clang builders
 

Comment 1 by no...@chromium.org, Apr 18 2017

Blocking: 706224

Comment 2 by no...@chromium.org, Apr 18 2017

Labels: Restrict-View-Google
Labels: -Restrict-View-Google
This doesn't need R-V-G
Labels: -Pri-1 Pri-2
downgrading the priority.
Status: Started (was: Assigned)
Status: Assigned (was: Started)
Cc: dpranke@chromium.org thakis@chromium.org
Labels: OS-Windows
Owner: ----
Status: Available (was: Assigned)
@thakis, I'm going to punt this to you if/when we get around to adding it.
Project Member

Comment 8 by sheriffbot@chromium.org, Apr 27 2018

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: h...@chromium.org zturner@chromium.org r...@chromium.org tikuta@chromium.org
Labels: clang
I have questions for reproducible build.

After supporting -no-canonical-prefixes and not enforcing absolute path for argv0, I assumes output of clang-cl (obj/stdout/stderr) does not contain absolute path iff all of following condition satisfied.
* pass -no-canonical-prefixes flag (this is for /showIncludes)
* do not pass debug info flag, /Z7, /Zi and /ZI (this is for remove filepath from obj)
* pass all include path in relative from (this is for /showIncludes)

Is this true?
If so, I can implement build cache sharing mechanism on goma backend for non-debug chromium build. This means windows chromium developer can share build cache even they build chrome in different build directory, and that will improve build time.


Another question is, is it possible to remove absolute path from obj file when we do debug build?
AFAIK, obj file of debug build contains absolute path for source file come from
https://github.com/llvm-project/llvm-project-20170507/blob/d3c09e61a0bb55525717252fbb7fc0b84e6fece9/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp#L1855
As clang/gcc do, I'd like to use fdebug-prefix-map for this filepath to relativize it.

If clang-cl emits relativized path for source filepath, will it broke behavior of lld, link.exe or debugger of visual studio?
I think that should be true -- but I haven't checked, and there might be things I haven't thought of. Another condition is probably that msvc_use_absolute_paths must be false (which is the default nowadays, but people for a well felt somewhat strongly it should default to true; allegedly clicking on diagnostics in MSVC doesn't work if it's not set. I haven't checked if that's still true; it reportedly used to be true 2 years ago or so).


For paths in debug info, it's a bit more tricky, but I have a rough idea what we could do which should work at least for files without local edits. As far as I know, pdb does require absolute paths, but it might be possible to work around it using the source indexing feature: The idea is that we give clang-cl a flag that makes it write dummy absolute paths like "c:\dummy_root\real_relative_path", and then let the linker write a default source index mapping c:\dummy_root to the local directory. (Making lld write the source index information seems like a good idea even without wanting no absolute paths in the pdb: currently, the linker writes the pdb and then a postbuild step writes additional stuff to the pdb for source indexing. It'd be better if the linker wrote the right bits in the first place.)
Thanks, I'll take care msvc_use_absolute_paths case.

Is it better to write dummy root than relative path? In chromium build, lld and clang-cl run in same cwd. So lld can restore fullpath when the path is written in relative form.

Oh, that's an interesting idea.

Comment 14 by r...@chromium.org, Jun 1 2018

I think debuggers expect to see absolute paths in the debug info. Typically, IDEs are not run with the build directory as the CWD.

Didn't we have this problem with gdb recently on chromium-dev and everyone was advised to add some magic to their .gdbinit to work around the issue?

I think the dummy absolute path trick is the way to go, especially if we can do this source index mapping trick in LLD. It's what Microsoft does for all their software.
rnk: The proposal is that lld writes a pdb with absolute paths, but clang doesn't have to. clang writes codeview with relative paths, and then lld absolutizes them at link time. This gives us checkout-path-independent-cacheable compiles without changing anything for the debugger.

Comment 16 by r...@chromium.org, Jun 1 2018

Initially I didn't think that would work, because it would require changing the size of various debug info records, but on further thought, I think it will work just fine.

Paths typically appear in two places:
1. The file checksum table (already has special handling for merging across objects)
2. As LF_STRING_ID records in type / item streams.

We might want to a sentinel that is more special than just "./" to prefix relative paths in LF_STRING_ID records, since identical string records get merged. For example, MSVC emits the original command line as string records, and if we blindly rewrite all paths starting with "./", we will end up making the command line appear as if it had used absolute paths.
#16
clang-cl emits original command line somewhere too? and its string contents may be merged with source path in codeview when generating obj files?

Comment 18 by r...@chromium.org, Jun 5 2018

Clang does not currently emit the original command line into the debug info yet. But, if LLD is linking objects compiled with MSVC, it will use the same string pool for paths that it uses for command line strings.
Project Member

Comment 19 by bugdroid1@chromium.org, Jun 13 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7f644bdff216ee98e509001cb133b65789deeaa5

commit 7f644bdff216ee98e509001cb133b65789deeaa5
Author: Nico Weber <thakis@chromium.org>
Date: Wed Jun 13 21:43:45 2018

Pass -no-canonical-prefixes to clang-cl too.

clang-cl learned this flag in https://reviews.llvm.org/rL333761 (which also has
some words on why it's not the default). #566302 was a clang roll containing
that change.

Note that we also need https://reviews.llvm.org/rL334602 for this to have
an effect in practice, and that's not rolled in yet. Once it is, goma should
be able to cache non-symbol .obj files independent of the checkout path.
(See also discussion in https://chromium-review.googlesource.com/c/chromium/src/+/1075947)

Bug: 439949,330260, 712796 
Change-Id: I4a9bc38e35884be03fd9898e7000938cb4782a54
Reviewed-on: https://chromium-review.googlesource.com/1099638
Reviewed-by: Reid Kleckner <rnk@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567001}
[modify] https://crrev.com/7f644bdff216ee98e509001cb133b65789deeaa5/build/config/compiler/BUILD.gn

Project Member

Comment 20 by bugdroid1@chromium.org, Jun 26 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/goma/client/+/59af816bd7d9ed5acdc4dd49864c02b10450e430

commit 59af816bd7d9ed5acdc4dd49864c02b10450e430
Author: Takuto Ikuta <tikuta@google.com>
Date: Tue Jun 26 10:00:27 2018

Owner: tikuta@chromium.org
Status: Assigned (was: Untriaged)
I confirmed that specifying -fdebug-compilation-dir to clang-cl removed abspath from obj files and it also allows me to see source files in visual studio debugger if I added C:\src\chromium\src and C:\src\chromium\src\out\Release to 'Debug Source Files' property.

https://docs.microsoft.com/en-us/visualstudio/debugger/debug-source-files-common-properties-solution-property-pages-dialog-box

Let me write proposal similar to
https://docs.google.com/document/d/1OX4jY_bOCeNK7PNjVRuBQE9s6BQKS8XRNWGK8FEyh-E/edit?usp=sharing

Summary: Pass -fdebug-compilation-dir on win/clang builders (was: Pass -fdebug-prefix-map on win/clang builders)
Project Member

Comment 23 by bugdroid1@chromium.org, Jun 28 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/goma/client/+/ffc29a58083e053b2af9461f36b5a7bec5e08a97

commit ffc29a58083e053b2af9461f36b5a7bec5e08a97
Author: Takuto Ikuta <tikuta@google.com>
Date: Thu Jun 28 10:14:01 2018

Project Member

Comment 24 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/884a46c1b78db048cfeb6ce760a57a746761e309

commit 884a46c1b78db048cfeb6ce760a57a746761e309
Author: Takuto Ikuta <tikuta@chromium.org>
Date: Fri Jun 29 09:01:12 2018

Allow to specify -fdebug-compilation-dir for clang-cl

Now if we specify -fdebug-compilation-dir, clang-cl emits obj files independent from build directory.
So this flag will allow to sharing build cache when engineers use goma on different build directory.

To debug executable with this flag, we need to specify 'debug source files' property in visual studio.
Some goma backend preparation for build cache sharing is on-going yet, but I will ask windows developer to try the flag to confirm it does not break their workflow.

This is windows version of below proposal.
https://docs.google.com/document/d/1OX4jY_bOCeNK7PNjVRuBQE9s6BQKS8XRNWGK8FEyh-E/edit?usp=sharing

Bug:  712796 
Change-Id: I65e6da67614839e5dde408038cad33a63dc28ac1
Reviewed-on: https://chromium-review.googlesource.com/1118200
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571431}
[modify] https://crrev.com/884a46c1b78db048cfeb6ce760a57a746761e309/build/config/compiler/BUILD.gn

Project Member

Comment 25 by bugdroid1@chromium.org, Jul 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e

commit 110ff4ba13c7b7354c3e6cb8b56eab856b3e523e
Author: Takuto Ikuta <tikuta@chromium.org>
Date: Thu Jul 19 04:34:26 2018

Drop DEPOT_TOOLS_WIN_TOOLCHAIN_ROOT

Currently, depot_tools' win sdk is installed under src/third_party/depot_tools/win_toolchains directory by default.
And we don't need to have different toolchain directory between buildbot and developer.

Using the same directory structure will allow to share goma's build cache between bots and users in the future.

This was introduced in
https://chromium-review.googlesource.com/527237
not to install multiple win toolchain in different directory in a VM used by different build config.
But this is not necessary because we install win toolchain in checkouted directly.

Also files under win toolchain does not exceeds path length limit on windows.
Following path is longest path (200 characters) in win toolchain
third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/cppwinrt/winrt/impl/Windows.ApplicationModel.Appointments.AppointmentsProvider.2.h
and LUCI checkouts the chromium/src under following directory
C:\b\swarming\w\ir\cache\builder\src (37 characters)

This fits in MAX_PATH (260 characters) limit.


I confirmed this CL does not break trybots build.
win7_chromium_rel_ng: https://ci.chromium.org/swarming/task/3ea9244f470a8410?server=chromium-swarm.appspot.com
win10_chromium_x64_rel_ng: https://ci.chromium.org/swarming/task/3ea925974c111010?server=chromium-swarm.appspot.com
win_chromium_compile_dbg_ng: https://ci.chromium.org/swarming/task/3ea9263367fb2c10?server=chromium-swarm.appspot.com

Recipe-Nontrivial-Roll: release_scripts
Recipe-Nontrivial-Roll: build_limited_scripts_slave
Bug:  712796 
Change-Id: I4a9611be03d7d1d67a9593bcdb335a6ad370c0ea
Reviewed-on: https://chromium-review.googlesource.com/1132915
Reviewed-by: John Budorick <jbudorick@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>

[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_win10.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/flaky_tests.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win_x64_dbg_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/all_test_failed.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win32_release__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win32_debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win64_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_experimental.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_Syzygy_Debug_x64.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_compile_x64_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win64___msvc.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win32_debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win64_msvc_rel_ng.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/smoke_test.expected/full_master_client_syzygy_Syzygy_Smoke_Test.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/syzygy/examples/full.expected/full_master_client_syzygy_Syzygy_Coverage.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_perf_win7.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_compile_x64_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win64_release__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_trybot.expected/analyze_runs_nothing_with_no_source_file_changes.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8/archive.expected/full_client_v8_official_V8_Official_Win32.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/chromium_tests/tests/api/deapply_patch.expected/basic.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/swarming/deterministic_build.expected/full_chromium_swarm_Windows_Clang_deterministic.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win_dbg_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win64_debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_trybot.expected/process_dumps_failure.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win_rel_ng.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win_nosnap_shared_rel_ng.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win64_debug__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_clang_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_branches_win__beta_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_trybot.expected/runhooks_failure.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_gn_upload.expected/full_luci_infra_internal_prod_gn_builder_win.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_win8.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win64___debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win8_rel_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/kasko_official.expected/full_master_client_syzygy_Kasko_Official.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win_rel_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win32_release__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_asan.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_compile_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_Syzygy_Release.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win64_rel_ng.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/none_swarming_tests.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win64.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_fyi_win64_debug__win10_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/nonexistent_test_step_skipped.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win32_asan.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win_clang.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/test_without_targets_not_skipped.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win32___builder.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/chromium/api.py
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win32_debug__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/coverage.expected/full_master_client_syzygy_win_cov_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/unaffected_test_skipped_by_analyze.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_clusterfuzz_V8_Clusterfuzz_Win64_ASAN___debug_builder.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/more_configs.expected/full_tryserver_webrtc_win_more_configs.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/README.recipes.md
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/coverage.expected/full_master_client_syzygy_Syzygy_Coverage.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win64_release.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win32_debug__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win64_release.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win32_release.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_Syzygy_Debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win_compile_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/swarming/deterministic_build.expected/full_chromium_swarm_Windows_deterministic.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win64_asan_rel_ng.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium.expected/dynamic_gtest_win.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win32___debug_builder.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win64_ASAN.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/syzygy/examples/full.expected/full_master_client_syzygy_Syzygy_Debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win64_debug.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win_x64_clang_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8/archive.expected/full_client_v8_official_V8_Official_Win64.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/all_test_passed.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/compile_skipped.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/swarming/deterministic_build.expected/full_chromium_swarm_Windows_deterministic_fail.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/chromium/tests/runtest.expected/win.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win_official_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_trybot.expected/use_skia_patch_on_chromium_trybot.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_clang_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_clang_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/blink_downstream.expected/full_client_v8_fyi_V8_Blink_Win_fail.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/syzygy/examples/full.expected/full_master_client_syzygy_Syzygy_Official.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_branches_win__stable_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win_clang_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win32_release.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/tryserver_libyuv_win_x64_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_tryserver_v8_v8_win64_msvc_compile_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_x64_clang_dbg.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/swarming/staging.expected/windows.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipe_modules/chromium_tests/tests/api/compile_specific_targets.expected/update_clang.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_trybot.expected/use_v8_patch_on_chromium_trybot.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8/node_integration.expected/full_client_v8_fyi_V8_Win64___node_js_integration.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium.expected/dynamic_swarmed_isolated_script_test_win_non_gpu.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium_gn_upload.expected/full_tryserver_chromium_win_win_chromium_gn_upload.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_clusterfuzz_V8_Clusterfuzz_Win64_ASAN___release_builder.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_win64_release__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/findit/chromium/test.expected/only_one_test_passed.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8.expected/full_client_v8_V8_Win32___nosnap___shared.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_Syzygy_Release_x64.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/win_analyze.expected/full_chromium_fyi_Chromium_Windows_Analyze.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_Syzygy_Official.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/libyuv/libyuv.expected/client_libyuv_win64_debug__clang_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/tryserver_webrtc_win_compile_rel.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/v8/node_integration.expected/full_client_v8_fyi_V8_Win64___node_js_baseline.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/syzygy/continuous.expected/full_master_client_syzygy_win_x64_rel_try.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/swarming/deterministic_build.expected/full_chromium_swarm_Windows_Clang_deterministic_fail.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/standalone.expected/client_webrtc_fyi_win64_debug__win8_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/chromium.expected/dynamic_swarmed_isolated_script_test_win_gpu.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/webrtc/more_configs.expected/full_client_webrtc_Win__more_configs_.json
[modify] https://crrev.com/110ff4ba13c7b7354c3e6cb8b56eab856b3e523e/scripts/slave/recipes/blink_downstream.expected/full_client_v8_fyi_V8_Blink_Win_pass.json

Blockedon: 863425
Components: Infra>Goma
I landed
https://reviews.llvm.org/D48882
Project Member

Comment 28 by bugdroid1@chromium.org, Jul 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4ea122b62d8d7887a4d653c73bdc8ba50c890c2e

commit 4ea122b62d8d7887a4d653c73bdc8ba50c890c2e
Author: Takuto Ikuta <tikuta@chromium.org>
Date: Wed Jul 25 05:28:18 2018

Enable strip_absolute_paths_from_debug_symbol on windows build with goma by default

By this CL, we remove absolute path from obj files in windows build with goma.
And this allows to share build result even if it is built in different directory.
This will give faster build time to windows developers and also let goma team focus on cache hit build more.

This change removes absolute path from obj files, but lld linker absolutizes the path not to confuse debugger.
Also this CL enables the feature by default only for lld with goma build on windows.

Build stats of chrome on Z840 windows with -j1000
* is_debug=true and symbol_level=2
cache hit: 658 seconds
non-cache hit: 728 seconds

* is_debug=false and symbol_level=0
cache hit: 275 seconds
non-cache hit: 411 seconds

TODO: add build speed comparison of cache hit/no-hit build in symbol_level = 0 and symbol_level = 2

Bug:  712796 
Change-Id: I88532a43addf693f93b30c96d08c8e93515d4344
Reviewed-on: https://chromium-review.googlesource.com/1143663
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577807}
[modify] https://crrev.com/4ea122b62d8d7887a4d653c73bdc8ba50c890c2e/build/config/compiler/BUILD.gn

Status: Verified (was: Started)
I saw high cache hit rate on today's first build in my windows.

Thank you so much, tikuta, for driving this change across all these projects!

Sign in to add a comment