-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
g++: error trying to exec 'objcopy': execvp: No such file or directory #86
Comments
Adding objcopy to the tarball is the easy part. Passing back the .dwo file after split from the nodes is probably more work and would probably require a protocol bump(?). Another idea is to handle the flag on the client; split the .o file after it has returned from where it's compiled. But that requires a little too much implementation knowledge of gcc for my taste; icecc would need to know exactly how to split the .o file. |
aha, it's why I even failed after manually adding objcopy to the tarball. |
And obvious "fix" for this is forcing local build in client/arg.cpp if -gsplit-dwarf is found. From a quick glance, it doesn't look like icecc could easily handle the flag itself, since although objcopy has --extract-dwo and --strip-dwo, presumably gcc ouputs different .o files depending on the switch. But passing the .dwo file from the remote shouldn't be that much work. Extra flag in CompilerResultMsg (and yes, protocol bump) and using extra FileChunkMsg in daemon/workit.cpp and client/remote.cpp shouldn't be too difficult. -Wl,--gdb-index are used during linking, so that's of no concern to icecream. |
FWIW, Ccache gives up (as a first step): https://bugzilla.samba.org/show_bug.cgi?id=10005#c3 |
I filed this bug because chromium began using the noxious options: https://code.google.com/p/chromium/issues/detail?id=352046 |
Note that this option is supported by clang too (it is not a GCC specific thing). This option gives massive speed increases when linking. On an incremental build of Chrome (as with most large C++ projects) the linking stage is the most substantial part of the build. It saves between ~30% and ~80% of the link time (with most seeing around 50%). Mozilla are also using this option for similar results. LibreOffice is also playing with enabling it by default. It is likely that every large C++ project is going to use this option in the next 2-3 years. Hope that gives you some more info. |
I would be interested in seeing support for this. I have a project that uses clang and llvm libs, and the link time when in debug mode are quite long. |
Since -gsplit-dwarf breaks some extremely useful build tools (eg ccache and icecc), it deserves its own gyp variable. This setting replaces the previous hack, setting binutils_version=0. Background: ccache: https://bugzilla.samba.org/show_bug.cgi?id=10005 icecc: icecc/icecream#86 BUG=352046 Review URL: https://codereview.chromium.org/226613005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267381 0039d316-1c4b-4281-b951-d872f2087c98
I close this one as the bug is fixed by forcing local compile. There doesn't seem to be enough interest to really implement the feature |
What it means "doesn't seem to be enough interest"? In general, for me it is very critical issue, because debug fission is not only improve linking speed, but also improves gdb speed during debugging. |
the threshold is the existance of a patch |
For the record. To make it work you have to take into account the following:
Take into account also the following:
|
This requires objcopy which might not (easily) be available when using icecc: icecc/icecream#86 Change-Id: I6e152190949d945c343837ba433daf75b0ba7ddd Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Following option of gcc 4.8 uses objcopy, but icecc-create-env does not handle objcopy
'cflags': ['-gsplit-dwarf'], 'ldflags': ['-Wl,--gdb-index'],
So compile fails with following build error
The text was updated successfully, but these errors were encountered: