[Bug fortran/68358] Some tests in gfortran.dg fail when compiled with '-g -flto' and Xcode 7
nenad at intrepid dot com
gcc-bugzilla@gcc.gnu.org
Tue Nov 24 18:02:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68358
--- Comment #6 from Nenad Vukicevic <nenad at intrepid dot com> ---
On 11/24/15 9:27 AM, dominiq at lps dot ens.fr wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68358
>
> --- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
>> We are getting a similar issue while linking a program with GCC and
>> without '-flto' switch. We enable 'lto' when configuring languages,
>> which in turn enables post ld processing inside collect2. This was done
>> as part of the bug #61352 patch.
>
> I am not sure to understand the comment. Do you mean that your build is
> configured to use '-flto' by default? Do you have a non-fortran reproducer? If
> yes, could you please post it?
>
No, we configured for 'lto' with '--enable-languages' option, but do not
use it, no '-flto' on any of the compiled objects.
However, collect2 tries to find all the objects compiled with lto, it
does not find any, and calls 'post_ld_pass (true)' which executes
'dsymutil'. This was the code that was added in the specified patch,
lines 819-820 of collect2.c. If you configure without LTO you will not
see the problem as 'dsymutil' is not getting called.
If you look at the calls of procedure 'post_ld_pass()' (which calls
dsymutil), I think it calls dsymutil only if true is passed in and
debugging is enabled:
807: post_ld_pass (true); <--- LTO enabled, has LTO compiled objects
(Fortran test issue)
814: post_ld_pass (false); <--- LTO enabled, no LTO objects, force
linking
820: post_ld_pass (true); <--- LTO enabled, NO LTO objects
(My issue)
post_ld_pass (false);
post_ld_pass (false);
post_ld_pass (false);
Maybe line 820 should pass 'false' as this is the case similar to LTO
not being enabled?
I think the problem is in the symbols we generate, or the tool itself,
and this issue shows up only if you have LTO enabled. I can provide the
object file that has problems and this might be enough if someone builds
LLVM on Apple and tries llvm-dsymutil tool on it. This should be the
same tool as Apple's dsymutil, if we can duplicate the problem then we
can debug it.
More information about the Gcc-bugs
mailing list