> sry but I have to retest everything since I aciidentally checked out a
wrong revision.
will report back later.
ignore this, everything in my report was correct.  got confused with
CommitDate vs AuthorDate.

> Only 0x4 or 0x9 or others as well? This is relevent since 0x4 is a PLT
relocation which can be fixed up easily. The GOT based ones are
trickier since they involve a GOT entry with an absolute symbol
address that needs to be fixed up by the PE/COFF loader

Only 0x4.

> Interesting. I wonder where the first memmove resp. memset are coming
from. Are you linking with libgcc are sth like that?

I was able to fix memmove with this patch:

diff --git a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
index 79f95b0..5833814 100644
--- a/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
+++ b/ArmPkg/Library/CompilerIntrinsicsLib/Arm/memmove.S
@@ -14,7 +14,6 @@

   .text
   .align 2
-  GCC_ASM_EXPORT (memmove)

 # VOID
 # EFIAPI


no idea about memset, but when I hacked it away by just removing the export
from the CompilerIntrinsicsLib, the error was gone, but the 'plugin needed
to handle lto object' errors were still there.

Thanks
Michael


On Tue, Aug 2, 2016 at 4:46 PM, Michael Zimmermann <[email protected]
> wrote:

> sry but I have to retest everything since I aciidentally checked out a
> wrong revision.
> will report back later.
>
> On Tue, Aug 2, 2016 at 4:39 PM, Michael Zimmermann <
> [email protected]> wrote:
>
>> 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 <[email protected]
>> > wrote:
>>
>>> On 2 August 2016 at 15:55, Michael Zimmermann <[email protected]>
>>> 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?
>>>
>>
>>
>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to