public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Michael Zimmermann <sigmaepsilon92@gmail.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "Shi, Steven" <steven.shi@intel.com>,
	"Justen, Jordan L" <jordan.l.justen@intel.com>,
	 edk2-devel-01 <edk2-devel@lists.01.org>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	 "Gao, Liming" <liming.gao@intel.com>,
	Laszlo Ersek <lersek@redhat.com>
Subject: Re: [PATCH v5 0/8] BaseTools: add support for GCC5 in LTO mode
Date: Tue, 2 Aug 2016 16:51:51 +0200	[thread overview]
Message-ID: <CAN9vWDLsA_h6Fprg7qigj3CzZESfe_CLnE_tLMhOa=5FJH3Z5A@mail.gmail.com> (raw)
In-Reply-To: <CAN9vWDLe_UOZEa-VwoHjQVEjiaj=Gr6vXkM04bAgCD=y+c2SqA@mail.gmail.com>

> 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 <sigmaepsilon92@gmail.com
> 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 <
> sigmaepsilon92@gmail.com> 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 <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?
>>>
>>
>>
>


  reply	other threads:[~2016-08-02 14:51 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-01  8:01 [PATCH v5 0/8] BaseTools: add support for GCC5 in LTO mode Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 1/8] BaseTools CLANG35: drop problematic use-movt and save-temps options Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 2/8] ArmVirtPkg/ArmVirtPrePiUniCoreRelocatable: ignore .hash and .note sections Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 3/8] BaseTools UNIXGCC ELFGCC CYGGCC: clone GCC build rule family into GCCLD Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 4/8] BaseTools GCC: use 'gcc' as the linker command for GCC44 and later Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 5/8] ArmPkg: add prebuilt glue binaries for GCC5 LTO support Ard Biesheuvel
2016-08-02  8:50   ` Leif Lindholm
2016-08-01  8:01 ` [PATCH v5 6/8] BaseTools GCC: drop GNU notes section from EFI image Ard Biesheuvel
2016-08-01  8:01 ` [PATCH v5 7/8] MdePkg GCC/X64: avoid 'hidden' visibility for module entry points Ard Biesheuvel
2016-08-01 14:18   ` Gao, Liming
2016-08-01 14:49     ` Ard Biesheuvel
2016-08-01 14:56       ` Ard Biesheuvel
2016-08-01 15:51         ` Ard Biesheuvel
2016-08-01 16:11           ` Ard Biesheuvel
2016-08-02  2:39             ` Gao, Liming
2016-08-02  5:26               ` Gao, Liming
2016-08-01  8:01 ` [PATCH v5 8/8] BaseTools GCC: introduce GCC5 toolchain to support GCC v5.x in LTO mode Ard Biesheuvel
2016-08-01 14:01 ` [PATCH v5 0/8] BaseTools: add support for GCC5 " Shi, Steven
2016-08-01 14:04   ` Ard Biesheuvel
2016-08-02  9:03 ` Ard Biesheuvel
2016-08-02 10:57   ` Laszlo Ersek
2016-08-02 11:13     ` Ard Biesheuvel
2016-08-02 11:41   ` Shi, Steven
2016-08-02 11:42     ` Ard Biesheuvel
2016-08-02 13:55       ` Michael Zimmermann
2016-08-02 13:56         ` Ard Biesheuvel
2016-08-02 14:39           ` Michael Zimmermann
2016-08-02 14:46             ` Michael Zimmermann
2016-08-02 14:51               ` Michael Zimmermann [this message]
2016-08-02 14:47             ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAN9vWDLsA_h6Fprg7qigj3CzZESfe_CLnE_tLMhOa=5FJH3Z5A@mail.gmail.com' \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox