-
Notifications
You must be signed in to change notification settings - Fork 80
-
Notifications
You must be signed in to change notification settings - Fork 80
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
Bulding tsv-utils with LTO and PGO on Archlinux #325
Comments
Thanks for the report. I'm not an expert on the Linux LDC configurations, but my first thought is that it's related to the In this release bundle there are no libraries with the Here's the
Here are a couple things to try: First, set
If that doesn't work, try downloading the latest LDC release bundle and see if that addresses the issue. It can be unpacked into a standalone directory to avoid interfering with existing installations. Set the If neither of these work we'll figure out the next steps. Note that I've been assuming an ArchLinux distribution is not particularly different than the what's in the prebuilt Linux package. If that's not the case then there might be something about the differences in configuration. |
Thanks for the response. Here are my results so far.
So we know that |
The I can ask or file an issue with the LDC folks to see if it has to do with the Arch Linux distribution. I'll do this tomorrow. One thing you can do is try a simple hello world program that includes these flags and see if has the same problem. There's a hello world variant the LDC team used to test this here: LDC PR #2640. I don't think the Also, add the LDC version info to the issue. As to the value of using the IR versions of phobos and druntime - For tsv-utils it's where the big wins from LTO are coming from. This is because a number of tsv-utils programs go into tight loops executing algorithms from phobos. LTO optimizations that include phobos improve significantly from access to the IR. |
The Archlinux distribution of LDC (1.24.0) includes the LTO versions of the libs. Specifically in the paths
@Vild Any ideas? |
Hm.. So the Archlinux distribution includes the libraries. That suggests the config file in the distribution may be the issue. I put a note in the LDC gitter page to see anyone is familiar with this, should hear back after while. For tsv-utils there is another thing you can try, which is the
The LDC_HOME variable can be set if needed. That's where the tsv-utils has this support from a time prior to inclusion of LTO library versions in the prebuilt LDC packages. The way tsv-utils runs the build puts the LTO files in the tsv-utils directories. It could be used when building other programs, but its not particularly convenient. It would be better to get this support included with the LDC installation itself. |
The only difference between Archlinux You can see how it is built using the PKGBUILD. I am not sure why LTO breaks.
Other than that, I think |
This is from @kinke from the LDC team:
It confirms what you are saying. The
Try that and see if it works. |
The addition of DFLAGS removes the need of editing ldc2.conf and resolves the linker issue. |
Okay, I see. And, just to be sure I understand the situation, the helloworld app fails to build too, and both the helloworld app and tsv-utils build correctly when using the prepacked LDC from GitHub releases. Is that correct? |
Correct. |
I used the ArchLinux docker image and was able to reproduce this with both the hello world app and tsv-utils. The packaged GitHub release (v1.24.0) works and the version from the ArchLinux distribution (pacman -S ldc) fails. My guess is that there is something in the Archlinux build of the phobos and druntime libs that is not correct. e.g. Something causing necessary symbols to be stripped. But, it's not really my area, and I didn't see anything obvious looking at the PKGBUILD files. @rymrg How would you like to proceed? It's a general issue with the LDC distribution on Archlinux, not specific to tsv-utils. Would you be willing to create an issue/ticket against LDC and/or the Archlinux LDC build? I can do it, but it might be better coming from an Archlinux user. Separate thing - The recommendation to add |
Your cue about stripping helped a lot. Arch by defaults strips symbols and in this case strips things it shouldn't. Adding Feel free to close the issue as fixed once you add Thanks a lot! |
Hey, sorry about not answering earlier I've been a bit busy. Thanks for debugging and the noticing that LTO was broken. I've pushed up a new package version with the I would also recommend adding |
Thanks @Vild. I tried the new ldc package and it worked fine. Thanks for the report and debugging @rymrg. I've updated tsv-utils to set |
Hi,
As per our conversation, building tsv-utils with LTO and PGO on Archlinux fails. Below is the output for trying to compile current master with just LTO.
ldc2.conf contains the following on Archlinux:
The text was updated successfully, but these errors were encountered: