Re: [PATCH v5 0/8] BaseTools: add support for GCC5 in LTO mode


Michael Zimmermann
 

Sry for the late reply but I tried your latest gcc-lto branch to make sure
my answers are still correct.
I tested it with all configurations(StdLib:X64/ARM, Ovmf:X64,
ArmVirtPkg:ARM with both RELEASE and DEBUG).
In StdLib are many warnings actually. That's because
of -Wunused-const-variable and -Wmisleading-indentation.
Also I had to apply the commit to fix 'Unsupported ELF EM_X86_64 relocation
0x4.' for X64.

'-b RELEASE -a ARM -t GCC5 -p AppPkg/AppPkg.dsc' is the only configuration
I can't get to compile with gcc6(DEBUG works):
/tmp/ccYJi1bO.ltrans0.ltrans.o: In function `memmove':
<artificial>:(.text+0x3670): multiple definition of `memmove'
/media/Data/repositories/git/efidroid/testing/linuxtoolchain/edk2/Build/AppPkg/RELEASE_GCC5/ARM/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib/OUTPUT/CompilerIntrinsicsLib.lib(memmove.obj):(.text+0x0):
first defined here
/tmp/ccYJi1bO.ltrans0.ltrans.o: In function `memset':
<artificial>:(.text+0x3674): multiple definition of `memset'
/media/Data/repositories/git/efidroid/testing/linuxtoolchain/edk2/Build/AppPkg/RELEASE_GCC5/ARM/ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib/OUTPUT/CompilerIntrinsicsLib.lib(memset.obj):(.text+0x10):
first defined here
/media/Data/repositories/git/efidroid/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.1.1~linaro-gcc-6-branch@f3888e76-20160721-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.1.1/../../../../arm-eabi/bin/ld:
printf.obj: plugin needed to handle lto object
/media/Data/repositories/git/efidroid/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.1.1~linaro-gcc-6-branch@f3888e76-20160721-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.1.1/../../../../arm-eabi/bin/ld:
puts.obj: plugin needed to handle lto object
/media/Data/repositories/git/efidroid/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.1.1~linaro-gcc-6-branch@f3888e76-20160721-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.1.1/../../../../arm-eabi/bin/ld:
internal error
/media/Data/repositories/git/abe/_build/snapshots/binutils-gdb.git~linaro_binutils-2_26-branch/ld/ldlang.c
6299
collect2: error: ld returned 1 exit status
make: *** [GNUmakefile:417:
/media/Data/repositories/git/efidroid/testing/linuxtoolchain/edk2/Build/AppPkg/RELEASE_GCC5/ARM/AppPkg/Applications/Main/Main/DEBUG/Main.dll]
Error 1

Also, I only did compilation tests, I didn't try to run any of the produced
binaries.

this is the fixed branch:
https://github.com/M1cha/edk2/commits/edk2-master-gcc6
it's based on your gcc5-lto-v6 branch.

Thanks
Michael

On Tue, Aug 2, 2016 at 3:56 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org>
wrote:

On 2 August 2016 at 15:55, Michael Zimmermann <sigmaepsilon92@gmail.com>
wrote:
btw, gcc6 seems to work fine too with these patches(it did with the GCC49
configs too on both ARM and x86/x64).
Thanks for the data points. Do you see any warnings during the build?

Join devel@edk2.groups.io to automatically receive all group messages.