We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Appreciate the help!
Thanks,
Daniel
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Well, first of all, I am a bit unsure what you're asking.
UDK is an Intel product, and does not include support for the ARM architectures (ARM and AARCH64).
There is not currently a corresponding product for the ARM architectures. Partially since (especially) AARCH64 support has been evolving quite rapidly.
But the upstream EDK2 tree is fully buildable - some basic instructions can be found on https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build
If that is not sufficient, please provide some details on what operations you are performing on X64.
Regards,
Leif
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation issues which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Thanks Ravi
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org
wrote:
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
On 14 January 2016 at 10:06, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation issues which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using Visual Studio.
How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
Thanks.
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:06, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation issues which we came across while compiling a simple HelloWorld program in
CPP.As
you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes
forward
and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR <
ravikanth.mvr@avagotech.com>
wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote:
We are able to compile CPP files for X64 using UDK2014 by using
Visual
Studio.
How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
In UDK or EDK2?
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:06, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation issues which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm leif.lindholm@linaro.org wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote: > We are able to compile CPP files for X64 using UDK2014 by using > Visual > Studio. > > How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC runtime library.
There has been some discussion about this recently on the list. If you disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
In UDK or EDK2?
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 14 January 2016 at 10:06, Ravikanth MVR <ravikanth.mvr@avagotech.com
wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation
issues
which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm <
leif.lindholm@linaro.org>
wrote: > Hi Daniel, > > Sorry, your email got stuck in my SPAM folder for some reason. > > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote: >> We are able to compile CPP files for X64 using UDK2014 by using >> Visual >> Studio. >> >> How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC
runtime
library.
There has been some discussion about this recently on the list. If
you
disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
Ravi
Any updates on this. We were to try this on yesterday . Please advise
Regards
Sada
*From:* Ravikanth MVR [mailto:ravikanth.mvr@avagotech.com] *Sent:* Thursday, January 14, 2016 3:04 PM *To:* Ard Biesheuvel *Cc:* Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy *Subject:* Re: [Linaro-uefi] Compiling CPP files ARM64
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
In UDK or EDK2?
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org
wrote:
On 14 January 2016 at 10:06, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation issues which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes to compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 30 December 2015 at 16:02, Leif Lindholm <leif.lindholm@linaro.org
wrote:
Hi Daniel,
Sorry, your email got stuck in my SPAM folder for some reason.
On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote: > We are able to compile CPP files for X64 using UDK2014 by using > Visual > Studio. > > How do we compile the same source for AARCH64?
Do you mean C++? That is completely unsupported, and is going to be quite a challenge to implement. Note that you cannot rely on the C++ runtime for various reasons (including, but not limited to, the fact that it uses small model relocations, and is built against libc on Linux) I wonder how that even works on Visual Studio for X64, since the code you build will try to call libc functions from the VC
runtime
library.
There has been some discussion about this recently on the list. If
you
disable exceptions and RTTI, and reimplement your new and delete operators, you may be able to build code that does not rely on advanced C++ runtime features.
-- Ard.
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
Thanks Ravi
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org
wrote:
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
In UDK or EDK2?
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 14 January 2016 at 10:06, Ravikanth MVR <
ravikanth.mvr@avagotech.com>
wrote:
Hi Ard,
Hope you remember we speaking about the 0x105 and 0x0 relocation
issues
which we came across while compiling a simple HelloWorld program in CPP.As you said on the other thread(EDK2 mailing list)we need some changes
to
compiler and GenFw utility of UDK,can we take the required changes forward and come up with a UDK with this support?
We are stuck at this juncture with this activity and would need your help badly.
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations are handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in the ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were using the Linux version of the C++ runtime, which you cannot use under EDK2 even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Sada.
Thanks.
On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 30 December 2015 at 16:02, Leif Lindholm <
leif.lindholm@linaro.org>
> wrote: > > Hi Daniel, > > > > Sorry, your email got stuck in my SPAM folder for some reason. > > > > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj wrote: > >> We are able to compile CPP files for X64 using UDK2014 by using > >> Visual > >> Studio. > >> > >> How do we compile the same source for AARCH64? > > Do you mean C++? That is completely unsupported, and is going to be > quite a challenge to implement. Note that you cannot rely on the
C++
> runtime for various reasons (including, but not limited to, the
fact
> that it uses small model relocations, and is built against libc on > Linux) I wonder how that even works on Visual Studio for X64, since > the code you build will try to call libc functions from the VC
runtime
> library. > > There has been some discussion about this recently on the list. If
you
> disable exceptions and RTTI, and reimplement your new and delete > operators, you may be able to build code that does not rely on > advanced C++ runtime features. > > -- > Ard.
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
"GenFw" -e UEFI_APPLICATION -o /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/edk2 /MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: *** [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64(): /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all [/home/edk2 /MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed - Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard, I was trying to compile and generate helloworld application via
EDK2.Under
the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32"
directory
which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or
else Am
I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR <
ravikanth.mvr@avagotech.com>
wrote:
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:28, Ravikanth MVR <
ravikanth.mvr@avagotech.com>
wrote:
Ard,
OK.But when a simple HelloWorld program,which is part of EDK2 sample programs and which is written in c,is renamed to .CPP,we get these relocation issues in-spite of not using any C++ runtime API's.
In UDK or EDK2?
On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:06, Ravikanth MVR ravikanth.mvr@avagotech.com wrote: > Hi Ard, > > Hope you remember we speaking about the 0x105 and 0x0 relocation > issues > which we came across while compiling a simple HelloWorld program
in
> CPP.As > you said on the other thread(EDK2 mailing list)we need some
changes
> to > compiler and GenFw utility of UDK,can we take the required changes > forward > and come up with a UDK with this support? > > We are stuck at this juncture with this activity and would need
your
> help > badly. >
Please forget about UDK, and rebase your work onto the latest EDK2 master branch. There have been many changes to the way relocations
are
handled, which also impose requirements at link time (i.e., in terms of section alignment, and relative offset between sections both in
the
ELF and the PE/COFF versions of the image)
However, the relocation issue was due to the fact that you were
using
the Linux version of the C++ runtime, which you cannot use under
EDK2
even if we do support those relocation types with the newer tools.
Bottom line is that you need to develop your own C++ minimal runtime if you want to run C++ programs under EDK2
> On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR > ravikanth.mvr@avagotech.com > wrote: >> >> +Sada. >> >> Thanks. >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org wrote: >>> >>> On 30 December 2015 at 16:02, Leif Lindholm >>> leif.lindholm@linaro.org >>> wrote: >>> > Hi Daniel, >>> > >>> > Sorry, your email got stuck in my SPAM folder for some reason. >>> > >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj >>> > wrote: >>> >> We are able to compile CPP files for X64 using UDK2014 by
using
>>> >> Visual >>> >> Studio. >>> >> >>> >> How do we compile the same source for AARCH64? >>> >>> Do you mean C++? That is completely unsupported, and is going to >>> be >>> quite a challenge to implement. Note that you cannot rely on the >>> C++ >>> runtime for various reasons (including, but not limited to, the >>> fact >>> that it uses small model relocations, and is built against libc
on
>>> Linux) I wonder how that even works on Visual Studio for X64, >>> since >>> the code you build will try to call libc functions from the VC >>> runtime >>> library. >>> >>> There has been some discussion about this recently on the list.
If
>>> you >>> disable exceptions and RTTI, and reimplement your new and delete >>> operators, you may be able to build code that does not rely on >>> advanced C++ runtime features. >>> >>> -- >>> Ard. >> >> >
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting?
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
Thanks.
-----Original Message----- From: "Ard Biesheuvel" ard.biesheuvel@linaro.org Sent: 01-02-2016 11:59 To: "Ravikanth MVR" ravikanth.mvr@avagotech.com Cc: "Leif Lindholm" leif.lindholm@linaro.org; "Daniel Samuelraj" daniel.samuelraj@avagotech.com; "Jianning Wang" jianning.wang@avagotech.com; "Linaro UEFI Mailman List" linaro-uefi@lists.linaro.org; "Sadananda Murthy" sadananda.murthy@avagotech.com; "Unnikrishnan P S" unnikrishnan.ps@avagotech.com Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting?
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote: > Ard, > > OK.But when a simple HelloWorld program,which is part of EDK2 > sample > programs and which is written in c,is renamed to .CPP,we get these > relocation issues in-spite of not using any C++ runtime API's. >
In UDK or EDK2?
> On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> On 14 January 2016 at 10:06, Ravikanth MVR >> ravikanth.mvr@avagotech.com >> wrote: >> > Hi Ard, >> > >> > Hope you remember we speaking about the 0x105 and 0x0 relocation >> > issues >> > which we came across while compiling a simple HelloWorld program >> > in >> > CPP.As >> > you said on the other thread(EDK2 mailing list)we need some >> > changes >> > to >> > compiler and GenFw utility of UDK,can we take the required >> > changes >> > forward >> > and come up with a UDK with this support? >> > >> > We are stuck at this juncture with this activity and would need >> > your >> > help >> > badly. >> > >> >> Please forget about UDK, and rebase your work onto the latest EDK2 >> master branch. There have been many changes to the way relocations >> are >> handled, which also impose requirements at link time (i.e., in >> terms >> of section alignment, and relative offset between sections both in >> the >> ELF and the PE/COFF versions of the image) >> >> However, the relocation issue was due to the fact that you were >> using >> the Linux version of the C++ runtime, which you cannot use under >> EDK2 >> even if we do support those relocation types with the newer tools. >> >> Bottom line is that you need to develop your own C++ minimal >> runtime >> if you want to run C++ programs under EDK2 >> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> > ravikanth.mvr@avagotech.com >> > wrote: >> >> >> >> +Sada. >> >> >> >> Thanks. >> >> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> >> ard.biesheuvel@linaro.org wrote: >> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >>> leif.lindholm@linaro.org >> >>> wrote: >> >>> > Hi Daniel, >> >>> > >> >>> > Sorry, your email got stuck in my SPAM folder for some >> >>> > reason. >> >>> > >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj >> >>> > wrote: >> >>> >> We are able to compile CPP files for X64 using UDK2014 by >> >>> >> using >> >>> >> Visual >> >>> >> Studio. >> >>> >> >> >>> >> How do we compile the same source for AARCH64? >> >>> >> >>> Do you mean C++? That is completely unsupported, and is going >> >>> to >> >>> be >> >>> quite a challenge to implement. Note that you cannot rely on >> >>> the >> >>> C++ >> >>> runtime for various reasons (including, but not limited to, >> >>> the >> >>> fact >> >>> that it uses small model relocations, and is built against >> >>> libc >> >>> on >> >>> Linux) I wonder how that even works on Visual Studio for X64, >> >>> since >> >>> the code you build will try to call libc functions from the VC >> >>> runtime >> >>> library. >> >>> >> >>> There has been some discussion about this recently on the >> >>> list. >> >>> If >> >>> you >> >>> disable exceptions and RTTI, and reimplement your new and >> >>> delete >> >>> operators, you may be able to build code that does not rely on >> >>> advanced C++ runtime features. >> >>> >> >>> -- >> >>> Ard. >> >> >> >> >> > > >
Ard,
I understand that we have to implement alternative C++ runtime API which maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses AllocatePool and FreePool,for OUR code and most of the relocation errors had gone.BUT when the CPP program(HelloWorld) under compilation doesn't even call the C++ runtime API's,why are we seeing these errors?-This is what I am trying to understand.
Thanks.
-----Original Message----- From: "Ard Biesheuvel" ard.biesheuvel@linaro.org Sent: 01-02-2016 12:31 To: "M.V.R. Ravikanth" ravikanth.mvr@avagotech.com Cc: "Leif Lindholm" leif.lindholm@linaro.org; "Daniel Samuelraj" daniel.samuelraj@avagotech.com; "Jianning Wang" jianning.wang@avagotech.com; "Linaro UEFI Mailman List" linaro-uefi@lists.linaro.org; "Sadananda Murthy" sadananda.murthy@avagotech.com; "Unnikrishnan P S" unnikrishnan.ps@avagotech.com Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 14 January 2016 at 10:28, Ravikanth MVR ravikanth.mvr@avagotech.com wrote: > Ard, > > OK.But when a simple HelloWorld program,which is part of EDK2 > sample > programs and which is written in c,is renamed to .CPP,we get these > relocation issues in-spite of not using any C++ runtime API's. >
In UDK or EDK2?
> On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> On 14 January 2016 at 10:06, Ravikanth MVR >> ravikanth.mvr@avagotech.com >> wrote: >> > Hi Ard, >> > >> > Hope you remember we speaking about the 0x105 and 0x0 relocation >> > issues >> > which we came across while compiling a simple HelloWorld program >> > in >> > CPP.As >> > you said on the other thread(EDK2 mailing list)we need some >> > changes >> > to >> > compiler and GenFw utility of UDK,can we take the required >> > changes >> > forward >> > and come up with a UDK with this support? >> > >> > We are stuck at this juncture with this activity and would need >> > your >> > help >> > badly. >> > >> >> Please forget about UDK, and rebase your work onto the latest EDK2 >> master branch. There have been many changes to the way relocations >> are >> handled, which also impose requirements at link time (i.e., in >> terms >> of section alignment, and relative offset between sections both in >> the >> ELF and the PE/COFF versions of the image) >> >> However, the relocation issue was due to the fact that you were >> using >> the Linux version of the C++ runtime, which you cannot use under >> EDK2 >> even if we do support those relocation types with the newer tools. >> >> Bottom line is that you need to develop your own C++ minimal >> runtime >> if you want to run C++ programs under EDK2 >> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> > ravikanth.mvr@avagotech.com >> > wrote: >> >> >> >> +Sada. >> >> >> >> Thanks. >> >> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> >> ard.biesheuvel@linaro.org wrote: >> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >>> leif.lindholm@linaro.org >> >>> wrote: >> >>> > Hi Daniel, >> >>> > >> >>> > Sorry, your email got stuck in my SPAM folder for some >> >>> > reason. >> >>> > >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj >> >>> > wrote: >> >>> >> We are able to compile CPP files for X64 using UDK2014 by >> >>> >> using >> >>> >> Visual >> >>> >> Studio. >> >>> >> >> >>> >> How do we compile the same source for AARCH64? >> >>> >> >>> Do you mean C++? That is completely unsupported, and is going >> >>> to >> >>> be >> >>> quite a challenge to implement. Note that you cannot rely on >> >>> the >> >>> C++ >> >>> runtime for various reasons (including, but not limited to, >> >>> the >> >>> fact >> >>> that it uses small model relocations, and is built against >> >>> libc >> >>> on >> >>> Linux) I wonder how that even works on Visual Studio for X64, >> >>> since >> >>> the code you build will try to call libc functions from the VC >> >>> runtime >> >>> library. >> >>> >> >>> There has been some discussion about this recently on the >> >>> list. >> >>> If >> >>> you >> >>> disable exceptions and RTTI, and reimplement your new and >> >>> delete >> >>> operators, you may be able to build code that does not rely on >> >>> advanced C++ runtime features. >> >>> >> >>> -- >> >>> Ard. >> >> >> >> >> > > >
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard,
I understand that we have to implement alternative C++ runtime API which maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses AllocatePool and FreePool,for OUR code and most of the relocation errors had gone.BUT when the CPP program(HelloWorld) under compilation doesn't even call the C++ runtime API's,why are we seeing these errors?-This is what I am trying to understand.
If you add a -Map xxx.map option to the linker command, you will get a map file that tells you exactly which object was included in the link, and why (iow, which symbol dependency it satisfies) That way, you will be able to figure out which standard library is included, and for which reason.
Thanks. ________________________________ From: Ard Biesheuvel Sent: 01-02-2016 12:31 To: M.V.R. Ravikanth
Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
In UDK.I will try out on EDK2 and let you know the results.
Thanks.
On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 14 January 2016 at 10:28, Ravikanth MVR > ravikanth.mvr@avagotech.com > wrote: > > Ard, > > > > OK.But when a simple HelloWorld program,which is part of EDK2 > > sample > > programs and which is written in c,is renamed to .CPP,we get these > > relocation issues in-spite of not using any C++ runtime API's. > > > > In UDK or EDK2? > > > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > > ard.biesheuvel@linaro.org > > wrote: > >> > >> On 14 January 2016 at 10:06, Ravikanth MVR > >> ravikanth.mvr@avagotech.com > >> wrote: > >> > Hi Ard, > >> > > >> > Hope you remember we speaking about the 0x105 and 0x0 > >> > relocation > >> > issues > >> > which we came across while compiling a simple HelloWorld > >> > program > >> > in > >> > CPP.As > >> > you said on the other thread(EDK2 mailing list)we need some > >> > changes > >> > to > >> > compiler and GenFw utility of UDK,can we take the required > >> > changes > >> > forward > >> > and come up with a UDK with this support? > >> > > >> > We are stuck at this juncture with this activity and would need > >> > your > >> > help > >> > badly. > >> > > >> > >> Please forget about UDK, and rebase your work onto the latest > >> EDK2 > >> master branch. There have been many changes to the way > >> relocations > >> are > >> handled, which also impose requirements at link time (i.e., in > >> terms > >> of section alignment, and relative offset between sections both > >> in > >> the > >> ELF and the PE/COFF versions of the image) > >> > >> However, the relocation issue was due to the fact that you were > >> using > >> the Linux version of the C++ runtime, which you cannot use under > >> EDK2 > >> even if we do support those relocation types with the newer > >> tools. > >> > >> Bottom line is that you need to develop your own C++ minimal > >> runtime > >> if you want to run C++ programs under EDK2 > >> > >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR > >> > ravikanth.mvr@avagotech.com > >> > wrote: > >> >> > >> >> +Sada. > >> >> > >> >> Thanks. > >> >> > >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel > >> >> ard.biesheuvel@linaro.org wrote: > >> >>> > >> >>> On 30 December 2015 at 16:02, Leif Lindholm > >> >>> leif.lindholm@linaro.org > >> >>> wrote: > >> >>> > Hi Daniel, > >> >>> > > >> >>> > Sorry, your email got stuck in my SPAM folder for some > >> >>> > reason. > >> >>> > > >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel Samuelraj > >> >>> > wrote: > >> >>> >> We are able to compile CPP files for X64 using UDK2014 by > >> >>> >> using > >> >>> >> Visual > >> >>> >> Studio. > >> >>> >> > >> >>> >> How do we compile the same source for AARCH64? > >> >>> > >> >>> Do you mean C++? That is completely unsupported, and is going > >> >>> to > >> >>> be > >> >>> quite a challenge to implement. Note that you cannot rely on > >> >>> the > >> >>> C++ > >> >>> runtime for various reasons (including, but not limited to, > >> >>> the > >> >>> fact > >> >>> that it uses small model relocations, and is built against > >> >>> libc > >> >>> on > >> >>> Linux) I wonder how that even works on Visual Studio for X64, > >> >>> since > >> >>> the code you build will try to call libc functions from the > >> >>> VC > >> >>> runtime > >> >>> library. > >> >>> > >> >>> There has been some discussion about this recently on the > >> >>> list. > >> >>> If > >> >>> you > >> >>> disable exceptions and RTTI, and reimplement your new and > >> >>> delete > >> >>> operators, you may be able to build code that does not rely > >> >>> on > >> >>> advanced C++ runtime features. > >> >>> > >> >>> -- > >> >>> Ard. > >> >> > >> >> > >> > > > > >
Thanks Ard!I followed the steps and I could find out that NO standard library was included.Below is the list of libraries that were getting included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard,
I understand that we have to implement alternative C++ runtime API which maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses AllocatePool
and
FreePool,for OUR code and most of the relocation errors had gone.BUT when the CPP program(HelloWorld) under compilation doesn't even call the C++ runtime API's,why are we seeing these errors?-This is what I am trying to understand.
If you add a -Map xxx.map option to the linker command, you will get a map file that tells you exactly which object was included in the link, and why (iow, which symbol dependency it satisfies) That way, you will be able to figure out which standard library is included, and for which reason.
Thanks. ________________________________ From: Ard Biesheuvel Sent: 01-02-2016 12:31 To: M.V.R. Ravikanth
Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC
as
the toolchain.But when we tried to compile our CPP code/Sample
HelloWorld
application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR <ravikanth.mvr@avagotech.com
wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues
as
I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR <
ravikanth.mvr@avagotech.com>
wrote:
Ard, I was trying to compile and generate helloworld application via EDK2.Under the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" directory which has GenFw utility.But the UDK package has Win32 directory.
Could you let me know on how to build and EDK2 package in Windows or else Am I missing something here?
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR ravikanth.mvr@avagotech.com wrote: > > In UDK.I will try out on EDK2 and let you know the results. > > Thanks. > > On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org wrote: >> >> On 14 January 2016 at 10:28, Ravikanth MVR >> ravikanth.mvr@avagotech.com >> wrote: >> > Ard, >> > >> > OK.But when a simple HelloWorld program,which is part of EDK2 >> > sample >> > programs and which is written in c,is renamed to .CPP,we get
these
>> > relocation issues in-spite of not using any C++ runtime API's. >> > >> >> In UDK or EDK2? >> >> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >> > ard.biesheuvel@linaro.org >> > wrote: >> >> >> >> On 14 January 2016 at 10:06, Ravikanth MVR >> >> ravikanth.mvr@avagotech.com >> >> wrote: >> >> > Hi Ard, >> >> > >> >> > Hope you remember we speaking about the 0x105 and 0x0 >> >> > relocation >> >> > issues >> >> > which we came across while compiling a simple HelloWorld >> >> > program >> >> > in >> >> > CPP.As >> >> > you said on the other thread(EDK2 mailing list)we need some >> >> > changes >> >> > to >> >> > compiler and GenFw utility of UDK,can we take the required >> >> > changes >> >> > forward >> >> > and come up with a UDK with this support? >> >> > >> >> > We are stuck at this juncture with this activity and would
need
>> >> > your >> >> > help >> >> > badly. >> >> > >> >> >> >> Please forget about UDK, and rebase your work onto the latest >> >> EDK2 >> >> master branch. There have been many changes to the way >> >> relocations >> >> are >> >> handled, which also impose requirements at link time (i.e., in >> >> terms >> >> of section alignment, and relative offset between sections both >> >> in >> >> the >> >> ELF and the PE/COFF versions of the image) >> >> >> >> However, the relocation issue was due to the fact that you were >> >> using >> >> the Linux version of the C++ runtime, which you cannot use
under
>> >> EDK2 >> >> even if we do support those relocation types with the newer >> >> tools. >> >> >> >> Bottom line is that you need to develop your own C++ minimal >> >> runtime >> >> if you want to run C++ programs under EDK2 >> >> >> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> >> > ravikanth.mvr@avagotech.com >> >> > wrote: >> >> >> >> >> >> +Sada. >> >> >> >> >> >> Thanks. >> >> >> >> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> >> >> ard.biesheuvel@linaro.org wrote: >> >> >>> >> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >> >>> leif.lindholm@linaro.org >> >> >>> wrote: >> >> >>> > Hi Daniel, >> >> >>> > >> >> >>> > Sorry, your email got stuck in my SPAM folder for some >> >> >>> > reason. >> >> >>> > >> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel
Samuelraj
>> >> >>> > wrote: >> >> >>> >> We are able to compile CPP files for X64 using UDK2014
by
>> >> >>> >> using >> >> >>> >> Visual >> >> >>> >> Studio. >> >> >>> >> >> >> >>> >> How do we compile the same source for AARCH64? >> >> >>> >> >> >>> Do you mean C++? That is completely unsupported, and is
going
>> >> >>> to >> >> >>> be >> >> >>> quite a challenge to implement. Note that you cannot rely
on
>> >> >>> the >> >> >>> C++ >> >> >>> runtime for various reasons (including, but not limited to, >> >> >>> the >> >> >>> fact >> >> >>> that it uses small model relocations, and is built against >> >> >>> libc >> >> >>> on >> >> >>> Linux) I wonder how that even works on Visual Studio for
X64,
>> >> >>> since >> >> >>> the code you build will try to call libc functions from the >> >> >>> VC >> >> >>> runtime >> >> >>> library. >> >> >>> >> >> >>> There has been some discussion about this recently on the >> >> >>> list. >> >> >>> If >> >> >>> you >> >> >>> disable exceptions and RTTI, and reimplement your new and >> >> >>> delete >> >> >>> operators, you may be able to build code that does not rely >> >> >>> on >> >> >>> advanced C++ runtime features. >> >> >>> >> >> >>> -- >> >> >>> Ard. >> >> >> >> >> >> >> >> > >> > >> > > >
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!I followed the steps and I could find out that NO standard library was included.Below is the list of libraries that were getting included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard,
I understand that we have to implement alternative C++ runtime API which maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses AllocatePool and FreePool,for OUR code and most of the relocation errors had gone.BUT when the CPP program(HelloWorld) under compilation doesn't even call the C++ runtime API's,why are we seeing these errors?-This is what I am trying to understand.
If you add a -Map xxx.map option to the linker command, you will get a map file that tells you exactly which object was included in the link, and why (iow, which symbol dependency it satisfies) That way, you will be able to figure out which standard library is included, and for which reason.
Thanks. ________________________________ From: Ard Biesheuvel Sent: 01-02-2016 12:31 To: M.V.R. Ravikanth
Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with ARMGCC as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC as toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP program under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same issues as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 27 January 2016 at 09:51, Ravikanth MVR ravikanth.mvr@avagotech.com wrote: > Ard, > I was trying to compile and generate helloworld application via > EDK2.Under > the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" > directory > which has GenFw utility.But the UDK package has Win32 directory. > > Could you let me know on how to build and EDK2 package in Windows > or > else Am > I missing something here? >
I haven't used Windows for software development work in 15 years, so I am really not the person you should be asking this.
-- Ard.
> On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR > ravikanth.mvr@avagotech.com > wrote: >> >> In UDK.I will try out on EDK2 and let you know the results. >> >> Thanks. >> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org wrote: >>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>> ravikanth.mvr@avagotech.com >>> wrote: >>> > Ard, >>> > >>> > OK.But when a simple HelloWorld program,which is part of EDK2 >>> > sample >>> > programs and which is written in c,is renamed to .CPP,we get >>> > these >>> > relocation issues in-spite of not using any C++ runtime API's. >>> > >>> >>> In UDK or EDK2? >>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>> > ard.biesheuvel@linaro.org >>> > wrote: >>> >> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>> >> ravikanth.mvr@avagotech.com >>> >> wrote: >>> >> > Hi Ard, >>> >> > >>> >> > Hope you remember we speaking about the 0x105 and 0x0 >>> >> > relocation >>> >> > issues >>> >> > which we came across while compiling a simple HelloWorld >>> >> > program >>> >> > in >>> >> > CPP.As >>> >> > you said on the other thread(EDK2 mailing list)we need some >>> >> > changes >>> >> > to >>> >> > compiler and GenFw utility of UDK,can we take the required >>> >> > changes >>> >> > forward >>> >> > and come up with a UDK with this support? >>> >> > >>> >> > We are stuck at this juncture with this activity and would >>> >> > need >>> >> > your >>> >> > help >>> >> > badly. >>> >> > >>> >> >>> >> Please forget about UDK, and rebase your work onto the latest >>> >> EDK2 >>> >> master branch. There have been many changes to the way >>> >> relocations >>> >> are >>> >> handled, which also impose requirements at link time (i.e., in >>> >> terms >>> >> of section alignment, and relative offset between sections >>> >> both >>> >> in >>> >> the >>> >> ELF and the PE/COFF versions of the image) >>> >> >>> >> However, the relocation issue was due to the fact that you >>> >> were >>> >> using >>> >> the Linux version of the C++ runtime, which you cannot use >>> >> under >>> >> EDK2 >>> >> even if we do support those relocation types with the newer >>> >> tools. >>> >> >>> >> Bottom line is that you need to develop your own C++ minimal >>> >> runtime >>> >> if you want to run C++ programs under EDK2 >>> >> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >>> >> > ravikanth.mvr@avagotech.com >>> >> > wrote: >>> >> >> >>> >> >> +Sada. >>> >> >> >>> >> >> Thanks. >>> >> >> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >>> >> >> ard.biesheuvel@linaro.org wrote: >>> >> >>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >>> >> >>> leif.lindholm@linaro.org >>> >> >>> wrote: >>> >> >>> > Hi Daniel, >>> >> >>> > >>> >> >>> > Sorry, your email got stuck in my SPAM folder for some >>> >> >>> > reason. >>> >> >>> > >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel >>> >> >>> > Samuelraj >>> >> >>> > wrote: >>> >> >>> >> We are able to compile CPP files for X64 using UDK2014 >>> >> >>> >> by >>> >> >>> >> using >>> >> >>> >> Visual >>> >> >>> >> Studio. >>> >> >>> >> >>> >> >>> >> How do we compile the same source for AARCH64? >>> >> >>> >>> >> >>> Do you mean C++? That is completely unsupported, and is >>> >> >>> going >>> >> >>> to >>> >> >>> be >>> >> >>> quite a challenge to implement. Note that you cannot rely >>> >> >>> on >>> >> >>> the >>> >> >>> C++ >>> >> >>> runtime for various reasons (including, but not limited >>> >> >>> to, >>> >> >>> the >>> >> >>> fact >>> >> >>> that it uses small model relocations, and is built against >>> >> >>> libc >>> >> >>> on >>> >> >>> Linux) I wonder how that even works on Visual Studio for >>> >> >>> X64, >>> >> >>> since >>> >> >>> the code you build will try to call libc functions from >>> >> >>> the >>> >> >>> VC >>> >> >>> runtime >>> >> >>> library. >>> >> >>> >>> >> >>> There has been some discussion about this recently on the >>> >> >>> list. >>> >> >>> If >>> >> >>> you >>> >> >>> disable exceptions and RTTI, and reimplement your new and >>> >> >>> delete >>> >> >>> operators, you may be able to build code that does not >>> >> >>> rely >>> >> >>> on >>> >> >>> advanced C++ runtime features. >>> >> >>> >>> >> >>> -- >>> >> >>> Ard. >>> >> >> >>> >> >> >>> >> > >>> > >>> > >> >> >
Ard,
I have been using GCC5.0.0(Experimental version).
*gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)*
I would try with GCC49/48 and let you know.
Thanks.
On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!I followed the steps and I could find out that NO standard library was included.Below is the list of libraries that were getting included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard,
I understand that we have to implement alternative C++ runtime API
which
maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses
AllocatePool
and FreePool,for OUR code and most of the relocation errors had gone.BUT when the CPP program(HelloWorld) under compilation doesn't even call the
C++
runtime API's,why are we seeing these errors?-This is what I am trying to understand.
If you add a -Map xxx.map option to the linker command, you will get a map file that tells you exactly which object was included in the link, and why (iow, which symbol dependency it satisfies) That way, you will be able to figure out which standard library is included, and for which reason.
Thanks. ________________________________ From: Ard Biesheuvel Sent: 01-02-2016 12:31 To: M.V.R. Ravikanth
Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI
Mailman
List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard, I would try to explain here,
1.Till now we have been compiling CPP programs in UDK with VS2005/VS2008 as toolchain and it worked well.
2.Now,we have a requirement to support AARCH64 architecture with
ARMGCC
as the toolchain.But when we tried to compile our CPP code/Sample HelloWorld application(HelloWorld.c is renamed to HelloWorld.cpp) with ARMGCC
as
toolchain,we were seeing relocation errors such as 0x105.
3.As advised by you,we tried compiling a sample HelloWorld CPP
program
under EDK2 and still we are seeing the same relocation errors.
Questions:
1.If EDK2 doesn't support CPP code,what should we do to resolve the relocation errors we are observing?
Please correct me,if I have missed something.
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is a pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions about relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
From: Ard Biesheuvel Sent: 01-02-2016 11:59 To: Ravikanth MVR Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI
Mailman
List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 31 January 2016 at 20:16, Ravikanth MVR ravikanth.mvr@avagotech.com wrote:
+Unni.
Ard, I have done a native compilation with EDK2 and I am facing same
issues
as I did before.Below is the snapshot of the errors I received.
I have explained twice already why C++ under EDK2 is not going to work. What exactly were you expecting? -- Ard.
"GenFw" -e UEFI_APPLICATION -o
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make --no-print-directory all
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 19:12:41, Jan.31 2016 Build total time: 00:00:15
Thanks Ravi
On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 27 January 2016 at 09:51, Ravikanth MVR > ravikanth.mvr@avagotech.com > wrote: > > Ard, > > I was trying to compile and generate helloworld application via > > EDK2.Under > > the "MyWorkSpace\BaseTools\Bin" directory I did not find "Win32" > > directory > > which has GenFw utility.But the UDK package has Win32 directory. > > > > Could you let me know on how to build and EDK2 package in Windows > > or > > else Am > > I missing something here? > > > > I haven't used Windows for software development work in 15 years,
so
> I > am really not the person you should be asking this. > > -- > Ard. > > > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR > > ravikanth.mvr@avagotech.com > > wrote: > >> > >> In UDK.I will try out on EDK2 and let you know the results. > >> > >> Thanks. > >> > >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel > >> ard.biesheuvel@linaro.org wrote: > >>> > >>> On 14 January 2016 at 10:28, Ravikanth MVR > >>> ravikanth.mvr@avagotech.com > >>> wrote: > >>> > Ard, > >>> > > >>> > OK.But when a simple HelloWorld program,which is part of EDK2 > >>> > sample > >>> > programs and which is written in c,is renamed to .CPP,we get > >>> > these > >>> > relocation issues in-spite of not using any C++ runtime
API's.
> >>> > > >>> > >>> In UDK or EDK2? > >>> > >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > >>> > ard.biesheuvel@linaro.org > >>> > wrote: > >>> >> > >>> >> On 14 January 2016 at 10:06, Ravikanth MVR > >>> >> ravikanth.mvr@avagotech.com > >>> >> wrote: > >>> >> > Hi Ard, > >>> >> > > >>> >> > Hope you remember we speaking about the 0x105 and 0x0 > >>> >> > relocation > >>> >> > issues > >>> >> > which we came across while compiling a simple HelloWorld > >>> >> > program > >>> >> > in > >>> >> > CPP.As > >>> >> > you said on the other thread(EDK2 mailing list)we need
some
> >>> >> > changes > >>> >> > to > >>> >> > compiler and GenFw utility of UDK,can we take the required > >>> >> > changes > >>> >> > forward > >>> >> > and come up with a UDK with this support? > >>> >> > > >>> >> > We are stuck at this juncture with this activity and would > >>> >> > need > >>> >> > your > >>> >> > help > >>> >> > badly. > >>> >> > > >>> >> > >>> >> Please forget about UDK, and rebase your work onto the
latest
> >>> >> EDK2 > >>> >> master branch. There have been many changes to the way > >>> >> relocations > >>> >> are > >>> >> handled, which also impose requirements at link time (i.e.,
in
> >>> >> terms > >>> >> of section alignment, and relative offset between sections > >>> >> both > >>> >> in > >>> >> the > >>> >> ELF and the PE/COFF versions of the image) > >>> >> > >>> >> However, the relocation issue was due to the fact that you > >>> >> were > >>> >> using > >>> >> the Linux version of the C++ runtime, which you cannot use > >>> >> under > >>> >> EDK2 > >>> >> even if we do support those relocation types with the newer > >>> >> tools. > >>> >> > >>> >> Bottom line is that you need to develop your own C++ minimal > >>> >> runtime > >>> >> if you want to run C++ programs under EDK2 > >>> >> > >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR > >>> >> > ravikanth.mvr@avagotech.com > >>> >> > wrote: > >>> >> >> > >>> >> >> +Sada. > >>> >> >> > >>> >> >> Thanks. > >>> >> >> > >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel > >>> >> >> ard.biesheuvel@linaro.org wrote: > >>> >> >>> > >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm > >>> >> >>> leif.lindholm@linaro.org > >>> >> >>> wrote: > >>> >> >>> > Hi Daniel, > >>> >> >>> > > >>> >> >>> > Sorry, your email got stuck in my SPAM folder for some > >>> >> >>> > reason. > >>> >> >>> > > >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel > >>> >> >>> > Samuelraj > >>> >> >>> > wrote: > >>> >> >>> >> We are able to compile CPP files for X64 using
UDK2014
> >>> >> >>> >> by > >>> >> >>> >> using > >>> >> >>> >> Visual > >>> >> >>> >> Studio. > >>> >> >>> >> > >>> >> >>> >> How do we compile the same source for AARCH64? > >>> >> >>> > >>> >> >>> Do you mean C++? That is completely unsupported, and is > >>> >> >>> going > >>> >> >>> to > >>> >> >>> be > >>> >> >>> quite a challenge to implement. Note that you cannot
rely
> >>> >> >>> on > >>> >> >>> the > >>> >> >>> C++ > >>> >> >>> runtime for various reasons (including, but not limited > >>> >> >>> to, > >>> >> >>> the > >>> >> >>> fact > >>> >> >>> that it uses small model relocations, and is built
against
> >>> >> >>> libc > >>> >> >>> on > >>> >> >>> Linux) I wonder how that even works on Visual Studio for > >>> >> >>> X64, > >>> >> >>> since > >>> >> >>> the code you build will try to call libc functions from > >>> >> >>> the > >>> >> >>> VC > >>> >> >>> runtime > >>> >> >>> library. > >>> >> >>> > >>> >> >>> There has been some discussion about this recently on
the
> >>> >> >>> list. > >>> >> >>> If > >>> >> >>> you > >>> >> >>> disable exceptions and RTTI, and reimplement your new
and
> >>> >> >>> delete > >>> >> >>> operators, you may be able to build code that does not > >>> >> >>> rely > >>> >> >>> on > >>> >> >>> advanced C++ runtime features. > >>> >> >>> > >>> >> >>> -- > >>> >> >>> Ard. > >>> >> >> > >>> >> >> > >>> >> > > >>> > > >>> > > >> > >> > >
On 2 February 2016 at 16:23, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I have been using GCC5.0.0(Experimental version).
gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)
I would try with GCC49/48 and let you know.
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if I am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 2 February 2016 at 16:23, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I have been using GCC5.0.0(Experimental version).
gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)
I would try with GCC49/48 and let you know.
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
-- Ard.
On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!I followed the steps and I could find out that NO standard library was included.Below is the list of libraries that were getting included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote:
Ard,
I understand that we have to implement alternative C++ runtime API which maps to new and delete in EDK2 i.e.,AllocatePool and FreePool.
I did implement alternative new and delete API's,which uses AllocatePool and FreePool,for OUR code and most of the relocation errors had
gone.BUT
when the CPP program(HelloWorld) under compilation doesn't even call the C++ runtime API's,why are we seeing these errors?-This is what I am trying to understand.
If you add a -Map xxx.map option to the linker command, you will get
a
map file that tells you exactly which object was included in the
link,
and why (iow, which symbol dependency it satisfies) That way, you
will
be able to figure out which standard library is included, and for which reason.
Thanks. ________________________________ From: Ard Biesheuvel Sent: 01-02-2016 12:31 To: M.V.R. Ravikanth
Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI Mailman List; Sadananda Murthy; Unnikrishnan P S Subject: Re: [Linaro-uefi] Compiling CPP files ARM64
On 1 February 2016 at 07:51, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote: > Ard, > I would try to explain here, > > 1.Till now we have been compiling CPP programs in UDK with > VS2005/VS2008 > as > toolchain and it worked well. > > 2.Now,we have a requirement to support AARCH64 architecture with > ARMGCC > as > the toolchain.But when we tried to compile our CPP code/Sample > HelloWorld > application(HelloWorld.c is renamed to HelloWorld.cpp) with
ARMGCC
> as > toolchain,we were seeing relocation errors such as 0x105. > > 3.As advised by you,we tried compiling a sample HelloWorld CPP > program > under > EDK2 and still we are seeing the same relocation errors. > > Questions: > > 1.If EDK2 doesn't support CPP code,what should we do to resolve
the
> relocation errors we are observing? > > Please correct me,if I have missed something. >
The relocation errors are a symptom of the fact that you are trying to link the Linux specific C++ runtime into your EDK2 binary. This is
a
pointless exercise, since the Linux C++ runtime is fundamentally incompatible with EDK2, So please, don't ask any more questions
about
relocation errors, and focus on implementing an alternative C++ runtime that maps calls to new() and delete() onto EDK2 APIs, i.e., AllocatePool and FreePool. Note that you will still have problems with symbol decoration, since EDK2 header file don't have 'extern "C"' qualifiers around C declarations.
> ________________________________ > From: Ard Biesheuvel > Sent: 01-02-2016 11:59 > To: Ravikanth MVR > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI > Mailman > List; Sadananda Murthy; Unnikrishnan P S > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > > On 31 January 2016 at 20:16, Ravikanth MVR > ravikanth.mvr@avagotech.com > wrote: >> +Unni. >> >> Ard, >> I have done a native compilation with EDK2 and I am facing same >> issues >> as >> I >> did before.Below is the snapshot of the errors I received. >> > > I have explained twice already why C++ under EDK2 is not going to > work. What exactly were you expecting? > -- > Ard. > > >> "GenFw" -e UEFI_APPLICATION -o >> >> >> >> >>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> >> >> >> >>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> GenFw: ERROR 3000: Invalid >> WriteSections64(): >> >> >> >> >>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> unsupported ELF EM_AARCH64 relocation 0x105. >> GenFw: ERROR 3000: Invalid >> make: *** >> >> >> >> >>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> Error 2 >> WriteRelocations64(): >> >> >> >> >>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> unsupported ELF EM_AARCH64 relocation 0x105. >> >> >> build.py... >> : error 7000: Failed to execute command >> make --no-print-directory all >> >> >> >> >>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>> >> - Failed - >> Build end time: 19:12:41, Jan.31 2016 >> Build total time: 00:00:15 >> >> Thanks >> Ravi >> >> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org >> wrote: >>> >>> On 27 January 2016 at 09:51, Ravikanth MVR >>> ravikanth.mvr@avagotech.com >>> wrote: >>> > Ard, >>> > I was trying to compile and generate helloworld application
via
>>> > EDK2.Under >>> > the "MyWorkSpace\BaseTools\Bin" directory I did not find
"Win32"
>>> > directory >>> > which has GenFw utility.But the UDK package has Win32
directory.
>>> > >>> > Could you let me know on how to build and EDK2 package in >>> > Windows >>> > or >>> > else Am >>> > I missing something here? >>> > >>> >>> I haven't used Windows for software development work in 15
years,
>>> so >>> I >>> am really not the person you should be asking this. >>> >>> -- >>> Ard. >>> >>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>> > ravikanth.mvr@avagotech.com >>> > wrote: >>> >> >>> >> In UDK.I will try out on EDK2 and let you know the results. >>> >> >>> >> Thanks. >>> >> >>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>> >> ard.biesheuvel@linaro.org wrote: >>> >>> >>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>> >>> ravikanth.mvr@avagotech.com >>> >>> wrote: >>> >>> > Ard, >>> >>> > >>> >>> > OK.But when a simple HelloWorld program,which is part of >>> >>> > EDK2 >>> >>> > sample >>> >>> > programs and which is written in c,is renamed to .CPP,we
get
>>> >>> > these >>> >>> > relocation issues in-spite of not using any C++ runtime >>> >>> > API's. >>> >>> > >>> >>> >>> >>> In UDK or EDK2? >>> >>> >>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>> >>> > ard.biesheuvel@linaro.org >>> >>> > wrote: >>> >>> >> >>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>> >>> >> ravikanth.mvr@avagotech.com >>> >>> >> wrote: >>> >>> >> > Hi Ard, >>> >>> >> > >>> >>> >> > Hope you remember we speaking about the 0x105 and 0x0 >>> >>> >> > relocation >>> >>> >> > issues >>> >>> >> > which we came across while compiling a simple
HelloWorld
>>> >>> >> > program >>> >>> >> > in >>> >>> >> > CPP.As >>> >>> >> > you said on the other thread(EDK2 mailing list)we need >>> >>> >> > some >>> >>> >> > changes >>> >>> >> > to >>> >>> >> > compiler and GenFw utility of UDK,can we take the >>> >>> >> > required >>> >>> >> > changes >>> >>> >> > forward >>> >>> >> > and come up with a UDK with this support? >>> >>> >> > >>> >>> >> > We are stuck at this juncture with this activity and >>> >>> >> > would >>> >>> >> > need >>> >>> >> > your >>> >>> >> > help >>> >>> >> > badly. >>> >>> >> > >>> >>> >> >>> >>> >> Please forget about UDK, and rebase your work onto the >>> >>> >> latest >>> >>> >> EDK2 >>> >>> >> master branch. There have been many changes to the way >>> >>> >> relocations >>> >>> >> are >>> >>> >> handled, which also impose requirements at link time
(i.e.,
>>> >>> >> in >>> >>> >> terms >>> >>> >> of section alignment, and relative offset between
sections
>>> >>> >> both >>> >>> >> in >>> >>> >> the >>> >>> >> ELF and the PE/COFF versions of the image) >>> >>> >> >>> >>> >> However, the relocation issue was due to the fact that
you
>>> >>> >> were >>> >>> >> using >>> >>> >> the Linux version of the C++ runtime, which you cannot
use
>>> >>> >> under >>> >>> >> EDK2 >>> >>> >> even if we do support those relocation types with the
newer
>>> >>> >> tools. >>> >>> >> >>> >>> >> Bottom line is that you need to develop your own C++ >>> >>> >> minimal >>> >>> >> runtime >>> >>> >> if you want to run C++ programs under EDK2 >>> >>> >> >>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >>> >>> >> > ravikanth.mvr@avagotech.com >>> >>> >> > wrote: >>> >>> >> >> >>> >>> >> >> +Sada. >>> >>> >> >> >>> >>> >> >> Thanks. >>> >>> >> >> >>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>> >>> >> >>> >>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >>> >>> >> >>> leif.lindholm@linaro.org >>> >>> >> >>> wrote: >>> >>> >> >>> > Hi Daniel, >>> >>> >> >>> > >>> >>> >> >>> > Sorry, your email got stuck in my SPAM folder for >>> >>> >> >>> > some >>> >>> >> >>> > reason. >>> >>> >> >>> > >>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel >>> >>> >> >>> > Samuelraj >>> >>> >> >>> > wrote: >>> >>> >> >>> >> We are able to compile CPP files for X64 using >>> >>> >> >>> >> UDK2014 >>> >>> >> >>> >> by >>> >>> >> >>> >> using >>> >>> >> >>> >> Visual >>> >>> >> >>> >> Studio. >>> >>> >> >>> >> >>> >>> >> >>> >> How do we compile the same source for AARCH64? >>> >>> >> >>> >>> >>> >> >>> Do you mean C++? That is completely unsupported, and
is
>>> >>> >> >>> going >>> >>> >> >>> to >>> >>> >> >>> be >>> >>> >> >>> quite a challenge to implement. Note that you cannot >>> >>> >> >>> rely >>> >>> >> >>> on >>> >>> >> >>> the >>> >>> >> >>> C++ >>> >>> >> >>> runtime for various reasons (including, but not
limited
>>> >>> >> >>> to, >>> >>> >> >>> the >>> >>> >> >>> fact >>> >>> >> >>> that it uses small model relocations, and is built >>> >>> >> >>> against >>> >>> >> >>> libc >>> >>> >> >>> on >>> >>> >> >>> Linux) I wonder how that even works on Visual Studio >>> >>> >> >>> for >>> >>> >> >>> X64, >>> >>> >> >>> since >>> >>> >> >>> the code you build will try to call libc functions
from
>>> >>> >> >>> the >>> >>> >> >>> VC >>> >>> >> >>> runtime >>> >>> >> >>> library. >>> >>> >> >>> >>> >>> >> >>> There has been some discussion about this recently on >>> >>> >> >>> the >>> >>> >> >>> list. >>> >>> >> >>> If >>> >>> >> >>> you >>> >>> >> >>> disable exceptions and RTTI, and reimplement your new >>> >>> >> >>> and >>> >>> >> >>> delete >>> >>> >> >>> operators, you may be able to build code that does
not
>>> >>> >> >>> rely >>> >>> >> >>> on >>> >>> >> >>> advanced C++ runtime features. >>> >>> >> >>> >>> >>> >> >>> -- >>> >>> >> >>> Ard. >>> >>> >> >> >>> >>> >> >> >>> >>> >> > >>> >>> > >>> >>> > >>> >> >>> >> >>> > >> >>
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want me to use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if I am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 2 February 2016 at 16:23, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I have been using GCC5.0.0(Experimental version).
gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)
I would try with GCC49/48 and let you know.
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
-- Ard.
On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Thanks Ard!I followed the steps and I could find out that NO standard library was included.Below is the list of libraries that were getting included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 1 February 2016 at 08:36, M.V.R. Ravikanth ravikanth.mvr@avagotech.com wrote: > Ard, > > I understand that we have to implement alternative C++ runtime API > which > maps to new and delete in EDK2 i.e.,AllocatePool and FreePool. > > I did implement alternative new and delete API's,which uses > AllocatePool > and > FreePool,for OUR code and most of the relocation errors had
gone.BUT
> when > the CPP program(HelloWorld) under compilation doesn't even call
the
> C++ > runtime API's,why are we seeing these errors?-This is what I am > trying > to > understand. >
If you add a -Map xxx.map option to the linker command, you will
get a
map file that tells you exactly which object was included in the
link,
and why (iow, which symbol dependency it satisfies) That way, you
will
be able to figure out which standard library is included, and for which reason.
> Thanks. > ________________________________ > From: Ard Biesheuvel > Sent: 01-02-2016 12:31 > To: M.V.R. Ravikanth > > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI > Mailman > List; Sadananda Murthy; Unnikrishnan P S > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > > On 1 February 2016 at 07:51, M.V.R. Ravikanth > ravikanth.mvr@avagotech.com wrote: >> Ard, >> I would try to explain here, >> >> 1.Till now we have been compiling CPP programs in UDK with >> VS2005/VS2008 >> as >> toolchain and it worked well. >> >> 2.Now,we have a requirement to support AARCH64 architecture with >> ARMGCC >> as >> the toolchain.But when we tried to compile our CPP code/Sample >> HelloWorld >> application(HelloWorld.c is renamed to HelloWorld.cpp) with
ARMGCC
>> as >> toolchain,we were seeing relocation errors such as 0x105. >> >> 3.As advised by you,we tried compiling a sample HelloWorld CPP >> program >> under >> EDK2 and still we are seeing the same relocation errors. >> >> Questions: >> >> 1.If EDK2 doesn't support CPP code,what should we do to resolve
the
>> relocation errors we are observing? >> >> Please correct me,if I have missed something. >> > > The relocation errors are a symptom of the fact that you are
trying
> to > link the Linux specific C++ runtime into your EDK2 binary. This
is a
> pointless exercise, since the Linux C++ runtime is fundamentally > incompatible with EDK2, So please, don't ask any more questions
about
> relocation errors, and focus on implementing an alternative C++ > runtime that maps calls to new() and delete() onto EDK2 APIs,
i.e.,
> AllocatePool and FreePool. Note that you will still have problems > with > symbol decoration, since EDK2 header file don't have 'extern "C"' > qualifiers around C declarations. > > > >> ________________________________ >> From: Ard Biesheuvel >> Sent: 01-02-2016 11:59 >> To: Ravikanth MVR >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI >> Mailman >> List; Sadananda Murthy; Unnikrishnan P S >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> ravikanth.mvr@avagotech.com >> wrote: >>> +Unni. >>> >>> Ard, >>> I have done a native compilation with EDK2 and I am facing same >>> issues >>> as >>> I >>> did before.Below is the snapshot of the errors I received. >>> >> >> I have explained twice already why C++ under EDK2 is not going to >> work. What exactly were you expecting? >> -- >> Ard. >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>> >>> >>> >>> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>>> >>> >>> >>> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> GenFw: ERROR 3000: Invalid >>> WriteSections64(): >>> >>> >>> >>> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> unsupported ELF EM_AARCH64 relocation 0x105. >>> GenFw: ERROR 3000: Invalid >>> make: *** >>> >>> >>> >>> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>>> Error 2 >>> WriteRelocations64(): >>> >>> >>> >>> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >>> >>> build.py... >>> : error 7000: Failed to execute command >>> make --no-print-directory all >>> >>> >>> >>> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>>> >>> - Failed - >>> Build end time: 19:12:41, Jan.31 2016 >>> Build total time: 00:00:15 >>> >>> Thanks >>> Ravi >>> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>> ard.biesheuvel@linaro.org >>> wrote: >>>> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>>> ravikanth.mvr@avagotech.com >>>> wrote: >>>> > Ard, >>>> > I was trying to compile and generate helloworld application
via
>>>> > EDK2.Under >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not find
"Win32"
>>>> > directory >>>> > which has GenFw utility.But the UDK package has Win32
directory.
>>>> > >>>> > Could you let me know on how to build and EDK2 package in >>>> > Windows >>>> > or >>>> > else Am >>>> > I missing something here? >>>> > >>>> >>>> I haven't used Windows for software development work in 15
years,
>>>> so >>>> I >>>> am really not the person you should be asking this. >>>> >>>> -- >>>> Ard. >>>> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>>> > ravikanth.mvr@avagotech.com >>>> > wrote: >>>> >> >>>> >> In UDK.I will try out on EDK2 and let you know the results. >>>> >> >>>> >> Thanks. >>>> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>>> >> ard.biesheuvel@linaro.org wrote: >>>> >>> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>>> >>> ravikanth.mvr@avagotech.com >>>> >>> wrote: >>>> >>> > Ard, >>>> >>> > >>>> >>> > OK.But when a simple HelloWorld program,which is part of >>>> >>> > EDK2 >>>> >>> > sample >>>> >>> > programs and which is written in c,is renamed to .CPP,we
get
>>>> >>> > these >>>> >>> > relocation issues in-spite of not using any C++ runtime >>>> >>> > API's. >>>> >>> > >>>> >>> >>>> >>> In UDK or EDK2? >>>> >>> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>>> >>> > ard.biesheuvel@linaro.org >>>> >>> > wrote: >>>> >>> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>>> >>> >> ravikanth.mvr@avagotech.com >>>> >>> >> wrote: >>>> >>> >> > Hi Ard, >>>> >>> >> > >>>> >>> >> > Hope you remember we speaking about the 0x105 and 0x0 >>>> >>> >> > relocation >>>> >>> >> > issues >>>> >>> >> > which we came across while compiling a simple
HelloWorld
>>>> >>> >> > program >>>> >>> >> > in >>>> >>> >> > CPP.As >>>> >>> >> > you said on the other thread(EDK2 mailing list)we need >>>> >>> >> > some >>>> >>> >> > changes >>>> >>> >> > to >>>> >>> >> > compiler and GenFw utility of UDK,can we take the >>>> >>> >> > required >>>> >>> >> > changes >>>> >>> >> > forward >>>> >>> >> > and come up with a UDK with this support? >>>> >>> >> > >>>> >>> >> > We are stuck at this juncture with this activity and >>>> >>> >> > would >>>> >>> >> > need >>>> >>> >> > your >>>> >>> >> > help >>>> >>> >> > badly. >>>> >>> >> > >>>> >>> >> >>>> >>> >> Please forget about UDK, and rebase your work onto the >>>> >>> >> latest >>>> >>> >> EDK2 >>>> >>> >> master branch. There have been many changes to the way >>>> >>> >> relocations >>>> >>> >> are >>>> >>> >> handled, which also impose requirements at link time
(i.e.,
>>>> >>> >> in >>>> >>> >> terms >>>> >>> >> of section alignment, and relative offset between
sections
>>>> >>> >> both >>>> >>> >> in >>>> >>> >> the >>>> >>> >> ELF and the PE/COFF versions of the image) >>>> >>> >> >>>> >>> >> However, the relocation issue was due to the fact that
you
>>>> >>> >> were >>>> >>> >> using >>>> >>> >> the Linux version of the C++ runtime, which you cannot
use
>>>> >>> >> under >>>> >>> >> EDK2 >>>> >>> >> even if we do support those relocation types with the
newer
>>>> >>> >> tools. >>>> >>> >> >>>> >>> >> Bottom line is that you need to develop your own C++ >>>> >>> >> minimal >>>> >>> >> runtime >>>> >>> >> if you want to run C++ programs under EDK2 >>>> >>> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >>>> >>> >> > ravikanth.mvr@avagotech.com >>>> >>> >> > wrote: >>>> >>> >> >> >>>> >>> >> >> +Sada. >>>> >>> >> >> >>>> >>> >> >> Thanks. >>>> >>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>>> >>> >> >>> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >>>> >>> >> >>> leif.lindholm@linaro.org >>>> >>> >> >>> wrote: >>>> >>> >> >>> > Hi Daniel, >>>> >>> >> >>> > >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM folder for >>>> >>> >> >>> > some >>>> >>> >> >>> > reason. >>>> >>> >> >>> > >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel >>>> >>> >> >>> > Samuelraj >>>> >>> >> >>> > wrote: >>>> >>> >> >>> >> We are able to compile CPP files for X64 using >>>> >>> >> >>> >> UDK2014 >>>> >>> >> >>> >> by >>>> >>> >> >>> >> using >>>> >>> >> >>> >> Visual >>>> >>> >> >>> >> Studio. >>>> >>> >> >>> >> >>>> >>> >> >>> >> How do we compile the same source for AARCH64? >>>> >>> >> >>> >>>> >>> >> >>> Do you mean C++? That is completely unsupported,
and is
>>>> >>> >> >>> going >>>> >>> >> >>> to >>>> >>> >> >>> be >>>> >>> >> >>> quite a challenge to implement. Note that you cannot >>>> >>> >> >>> rely >>>> >>> >> >>> on >>>> >>> >> >>> the >>>> >>> >> >>> C++ >>>> >>> >> >>> runtime for various reasons (including, but not
limited
>>>> >>> >> >>> to, >>>> >>> >> >>> the >>>> >>> >> >>> fact >>>> >>> >> >>> that it uses small model relocations, and is built >>>> >>> >> >>> against >>>> >>> >> >>> libc >>>> >>> >> >>> on >>>> >>> >> >>> Linux) I wonder how that even works on Visual Studio >>>> >>> >> >>> for >>>> >>> >> >>> X64, >>>> >>> >> >>> since >>>> >>> >> >>> the code you build will try to call libc functions
from
>>>> >>> >> >>> the >>>> >>> >> >>> VC >>>> >>> >> >>> runtime >>>> >>> >> >>> library. >>>> >>> >> >>> >>>> >>> >> >>> There has been some discussion about this recently
on
>>>> >>> >> >>> the >>>> >>> >> >>> list. >>>> >>> >> >>> If >>>> >>> >> >>> you >>>> >>> >> >>> disable exceptions and RTTI, and reimplement your
new
>>>> >>> >> >>> and >>>> >>> >> >>> delete >>>> >>> >> >>> operators, you may be able to build code that does
not
>>>> >>> >> >>> rely >>>> >>> >> >>> on >>>> >>> >> >>> advanced C++ runtime features. >>>> >>> >> >>> >>>> >>> >> >>> -- >>>> >>> >> >>> Ard. >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> > >>>> >>> > >>>> >>> > >>>> >> >>>> >> >>>> > >>> >>>
Ard,
I tried building the EDK2 with the below configuration and ended up with the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let you know the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want me to use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if I am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org
wrote:
On 2 February 2016 at 16:23, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I have been using GCC5.0.0(Experimental version).
gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)
I would try with GCC49/48 and let you know.
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
-- Ard.
On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Thanks Ard!I followed the steps and I could find out that NO
standard
library was included.Below is the list of libraries that were
getting
included.
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) HelloWorld.lib(AutoGen.obj) UefiDebugLibStdErr.lib(DebugLib.obj) UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) UefiLib.lib(UefiLib.obj) BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) BasePrintLib.lib(PrintLib.obj) BasePrintLib.lib(PrintLibInternal.obj) BaseLib.lib(DivU64x32Remainder.obj) BaseLib.lib(CpuDeadLoop.obj) BaseLib.lib(String.obj) BaseLib.lib(Unaligned.obj) BaseLib.lib(Math64.obj)
I have included .map file as well with this mail.
Thanks.
On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 1 February 2016 at 08:36, M.V.R. Ravikanth > ravikanth.mvr@avagotech.com wrote: > > Ard, > > > > I understand that we have to implement alternative C++ runtime
API
> > which > > maps to new and delete in EDK2 i.e.,AllocatePool and FreePool. > > > > I did implement alternative new and delete API's,which uses > > AllocatePool > > and > > FreePool,for OUR code and most of the relocation errors had
gone.BUT
> > when > > the CPP program(HelloWorld) under compilation doesn't even call
the
> > C++ > > runtime API's,why are we seeing these errors?-This is what I am > > trying > > to > > understand. > > > > If you add a -Map xxx.map option to the linker command, you will
get a
> map file that tells you exactly which object was included in the
link,
> and why (iow, which symbol dependency it satisfies) That way, you
will
> be able to figure out which standard library is included, and for > which reason. > > > Thanks. > > ________________________________ > > From: Ard Biesheuvel > > Sent: 01-02-2016 12:31 > > To: M.V.R. Ravikanth > > > > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI > > Mailman > > List; Sadananda Murthy; Unnikrishnan P S > > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > > > > On 1 February 2016 at 07:51, M.V.R. Ravikanth > > ravikanth.mvr@avagotech.com wrote: > >> Ard, > >> I would try to explain here, > >> > >> 1.Till now we have been compiling CPP programs in UDK with > >> VS2005/VS2008 > >> as > >> toolchain and it worked well. > >> > >> 2.Now,we have a requirement to support AARCH64 architecture with > >> ARMGCC > >> as > >> the toolchain.But when we tried to compile our CPP code/Sample > >> HelloWorld > >> application(HelloWorld.c is renamed to HelloWorld.cpp) with
ARMGCC
> >> as > >> toolchain,we were seeing relocation errors such as 0x105. > >> > >> 3.As advised by you,we tried compiling a sample HelloWorld CPP > >> program > >> under > >> EDK2 and still we are seeing the same relocation errors. > >> > >> Questions: > >> > >> 1.If EDK2 doesn't support CPP code,what should we do to resolve
the
> >> relocation errors we are observing? > >> > >> Please correct me,if I have missed something. > >> > > > > The relocation errors are a symptom of the fact that you are
trying
> > to > > link the Linux specific C++ runtime into your EDK2 binary. This
is a
> > pointless exercise, since the Linux C++ runtime is fundamentally > > incompatible with EDK2, So please, don't ask any more questions
about
> > relocation errors, and focus on implementing an alternative C++ > > runtime that maps calls to new() and delete() onto EDK2 APIs,
i.e.,
> > AllocatePool and FreePool. Note that you will still have problems > > with > > symbol decoration, since EDK2 header file don't have 'extern "C"' > > qualifiers around C declarations. > > > > > > > >> ________________________________ > >> From: Ard Biesheuvel > >> Sent: 01-02-2016 11:59 > >> To: Ravikanth MVR > >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI > >> Mailman > >> List; Sadananda Murthy; Unnikrishnan P S > >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > >> > >> On 31 January 2016 at 20:16, Ravikanth MVR > >> ravikanth.mvr@avagotech.com > >> wrote: > >>> +Unni. > >>> > >>> Ard, > >>> I have done a native compilation with EDK2 and I am facing same > >>> issues > >>> as > >>> I > >>> did before.Below is the snapshot of the errors I received. > >>> > >> > >> I have explained twice already why C++ under EDK2 is not going
to
> >> work. What exactly were you expecting? > >> -- > >> Ard. > >> > >> > >>> "GenFw" -e UEFI_APPLICATION -o > >>> > >>> > >>> > >>> > >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >>> > >>> > >>> > >>> > >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> GenFw: ERROR 3000: Invalid > >>> WriteSections64(): > >>> > >>> > >>> > >>> > >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>> GenFw: ERROR 3000: Invalid > >>> make: *** > >>> > >>> > >>> > >>> > >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >>> Error 2 > >>> WriteRelocations64(): > >>> > >>> > >>> > >>> > >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>> > >>> > >>> build.py... > >>> : error 7000: Failed to execute command > >>> make --no-print-directory all > >>> > >>> > >>> > >>> > >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> >>> > >>> - Failed - > >>> Build end time: 19:12:41, Jan.31 2016 > >>> Build total time: 00:00:15 > >>> > >>> Thanks > >>> Ravi > >>> > >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel > >>> ard.biesheuvel@linaro.org > >>> wrote: > >>>> > >>>> On 27 January 2016 at 09:51, Ravikanth MVR > >>>> ravikanth.mvr@avagotech.com > >>>> wrote: > >>>> > Ard, > >>>> > I was trying to compile and generate helloworld application
via
> >>>> > EDK2.Under > >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not find
"Win32"
> >>>> > directory > >>>> > which has GenFw utility.But the UDK package has Win32
directory.
> >>>> > > >>>> > Could you let me know on how to build and EDK2 package in > >>>> > Windows > >>>> > or > >>>> > else Am > >>>> > I missing something here? > >>>> > > >>>> > >>>> I haven't used Windows for software development work in 15
years,
> >>>> so > >>>> I > >>>> am really not the person you should be asking this. > >>>> > >>>> -- > >>>> Ard. > >>>> > >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR > >>>> > ravikanth.mvr@avagotech.com > >>>> > wrote: > >>>> >> > >>>> >> In UDK.I will try out on EDK2 and let you know the results. > >>>> >> > >>>> >> Thanks. > >>>> >> > >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel > >>>> >> ard.biesheuvel@linaro.org wrote: > >>>> >>> > >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR > >>>> >>> ravikanth.mvr@avagotech.com > >>>> >>> wrote: > >>>> >>> > Ard, > >>>> >>> > > >>>> >>> > OK.But when a simple HelloWorld program,which is part of > >>>> >>> > EDK2 > >>>> >>> > sample > >>>> >>> > programs and which is written in c,is renamed to
.CPP,we get
> >>>> >>> > these > >>>> >>> > relocation issues in-spite of not using any C++ runtime > >>>> >>> > API's. > >>>> >>> > > >>>> >>> > >>>> >>> In UDK or EDK2? > >>>> >>> > >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > >>>> >>> > ard.biesheuvel@linaro.org > >>>> >>> > wrote: > >>>> >>> >> > >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR > >>>> >>> >> ravikanth.mvr@avagotech.com > >>>> >>> >> wrote: > >>>> >>> >> > Hi Ard, > >>>> >>> >> > > >>>> >>> >> > Hope you remember we speaking about the 0x105 and 0x0 > >>>> >>> >> > relocation > >>>> >>> >> > issues > >>>> >>> >> > which we came across while compiling a simple
HelloWorld
> >>>> >>> >> > program > >>>> >>> >> > in > >>>> >>> >> > CPP.As > >>>> >>> >> > you said on the other thread(EDK2 mailing list)we
need
> >>>> >>> >> > some > >>>> >>> >> > changes > >>>> >>> >> > to > >>>> >>> >> > compiler and GenFw utility of UDK,can we take the > >>>> >>> >> > required > >>>> >>> >> > changes > >>>> >>> >> > forward > >>>> >>> >> > and come up with a UDK with this support? > >>>> >>> >> > > >>>> >>> >> > We are stuck at this juncture with this activity and > >>>> >>> >> > would > >>>> >>> >> > need > >>>> >>> >> > your > >>>> >>> >> > help > >>>> >>> >> > badly. > >>>> >>> >> > > >>>> >>> >> > >>>> >>> >> Please forget about UDK, and rebase your work onto the > >>>> >>> >> latest > >>>> >>> >> EDK2 > >>>> >>> >> master branch. There have been many changes to the way > >>>> >>> >> relocations > >>>> >>> >> are > >>>> >>> >> handled, which also impose requirements at link time
(i.e.,
> >>>> >>> >> in > >>>> >>> >> terms > >>>> >>> >> of section alignment, and relative offset between
sections
> >>>> >>> >> both > >>>> >>> >> in > >>>> >>> >> the > >>>> >>> >> ELF and the PE/COFF versions of the image) > >>>> >>> >> > >>>> >>> >> However, the relocation issue was due to the fact that
you
> >>>> >>> >> were > >>>> >>> >> using > >>>> >>> >> the Linux version of the C++ runtime, which you cannot
use
> >>>> >>> >> under > >>>> >>> >> EDK2 > >>>> >>> >> even if we do support those relocation types with the
newer
> >>>> >>> >> tools. > >>>> >>> >> > >>>> >>> >> Bottom line is that you need to develop your own C++ > >>>> >>> >> minimal > >>>> >>> >> runtime > >>>> >>> >> if you want to run C++ programs under EDK2 > >>>> >>> >> > >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR > >>>> >>> >> > ravikanth.mvr@avagotech.com > >>>> >>> >> > wrote: > >>>> >>> >> >> > >>>> >>> >> >> +Sada. > >>>> >>> >> >> > >>>> >>> >> >> Thanks. > >>>> >>> >> >> > >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel > >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: > >>>> >>> >> >>> > >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm > >>>> >>> >> >>> leif.lindholm@linaro.org > >>>> >>> >> >>> wrote: > >>>> >>> >> >>> > Hi Daniel, > >>>> >>> >> >>> > > >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM folder for > >>>> >>> >> >>> > some > >>>> >>> >> >>> > reason. > >>>> >>> >> >>> > > >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel > >>>> >>> >> >>> > Samuelraj > >>>> >>> >> >>> > wrote: > >>>> >>> >> >>> >> We are able to compile CPP files for X64 using > >>>> >>> >> >>> >> UDK2014 > >>>> >>> >> >>> >> by > >>>> >>> >> >>> >> using > >>>> >>> >> >>> >> Visual > >>>> >>> >> >>> >> Studio. > >>>> >>> >> >>> >> > >>>> >>> >> >>> >> How do we compile the same source for AARCH64? > >>>> >>> >> >>> > >>>> >>> >> >>> Do you mean C++? That is completely unsupported,
and is
> >>>> >>> >> >>> going > >>>> >>> >> >>> to > >>>> >>> >> >>> be > >>>> >>> >> >>> quite a challenge to implement. Note that you
cannot
> >>>> >>> >> >>> rely > >>>> >>> >> >>> on > >>>> >>> >> >>> the > >>>> >>> >> >>> C++ > >>>> >>> >> >>> runtime for various reasons (including, but not
limited
> >>>> >>> >> >>> to, > >>>> >>> >> >>> the > >>>> >>> >> >>> fact > >>>> >>> >> >>> that it uses small model relocations, and is built > >>>> >>> >> >>> against > >>>> >>> >> >>> libc > >>>> >>> >> >>> on > >>>> >>> >> >>> Linux) I wonder how that even works on Visual
Studio
> >>>> >>> >> >>> for > >>>> >>> >> >>> X64, > >>>> >>> >> >>> since > >>>> >>> >> >>> the code you build will try to call libc functions
from
> >>>> >>> >> >>> the > >>>> >>> >> >>> VC > >>>> >>> >> >>> runtime > >>>> >>> >> >>> library. > >>>> >>> >> >>> > >>>> >>> >> >>> There has been some discussion about this recently
on
> >>>> >>> >> >>> the > >>>> >>> >> >>> list. > >>>> >>> >> >>> If > >>>> >>> >> >>> you > >>>> >>> >> >>> disable exceptions and RTTI, and reimplement your
new
> >>>> >>> >> >>> and > >>>> >>> >> >>> delete > >>>> >>> >> >>> operators, you may be able to build code that does
not
> >>>> >>> >> >>> rely > >>>> >>> >> >>> on > >>>> >>> >> >>> advanced C++ runtime features. > >>>> >>> >> >>> > >>>> >>> >> >>> -- > >>>> >>> >> >>> Ard. > >>>> >>> >> >> > >>>> >>> >> >> > >>>> >>> >> > > >>>> >>> > > >>>> >>> > > >>>> >> > >>>> >> > >>>> > > >>> > >>>
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -Wno-unused-but-set-variable -o /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld -I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map --start-group @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group "echo" objcopy not needed for /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: *** [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64(): /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed - Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I tried building the EDK2 with the below configuration and ended up with the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let you know the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want me to use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if I am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel < ard.biesheuvel@linaro.org> wrote:
On 2 February 2016 at 16:23, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I have been using GCC5.0.0(Experimental version).
gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 (experimental)
I would try with GCC49/48 and let you know.
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
-- Ard.
On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
It looks like you are using the wrong compiler. You should use GCC48 or GCC49 instead.
On 2 February 2016 at 12:08, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote: > Thanks Ard!I followed the steps and I could find out that NO
standard
> library was included.Below is the list of libraries that were
getting
> included. > > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) > HelloWorld.lib(AutoGen.obj) > UefiDebugLibStdErr.lib(DebugLib.obj) > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) > UefiLib.lib(UefiLib.obj) > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) > BasePrintLib.lib(PrintLib.obj) > BasePrintLib.lib(PrintLibInternal.obj) > BaseLib.lib(DivU64x32Remainder.obj) > BaseLib.lib(CpuDeadLoop.obj) > BaseLib.lib(String.obj) > BaseLib.lib(Unaligned.obj) > BaseLib.lib(Math64.obj) > > I have included .map file as well with this mail. > > Thanks. > > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >> ravikanth.mvr@avagotech.com wrote: >> > Ard, >> > >> > I understand that we have to implement alternative C++ runtime
API
>> > which >> > maps to new and delete in EDK2 i.e.,AllocatePool and FreePool. >> > >> > I did implement alternative new and delete API's,which uses >> > AllocatePool >> > and >> > FreePool,for OUR code and most of the relocation errors had
gone.BUT
>> > when >> > the CPP program(HelloWorld) under compilation doesn't even call
the
>> > C++ >> > runtime API's,why are we seeing these errors?-This is what I am >> > trying >> > to >> > understand. >> > >> >> If you add a -Map xxx.map option to the linker command, you will
get a
>> map file that tells you exactly which object was included in the
link,
>> and why (iow, which symbol dependency it satisfies) That way, you
will
>> be able to figure out which standard library is included, and for >> which reason. >> >> > Thanks. >> > ________________________________ >> > From: Ard Biesheuvel >> > Sent: 01-02-2016 12:31 >> > To: M.V.R. Ravikanth >> > >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI >> > Mailman >> > List; Sadananda Murthy; Unnikrishnan P S >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> > >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >> > ravikanth.mvr@avagotech.com wrote: >> >> Ard, >> >> I would try to explain here, >> >> >> >> 1.Till now we have been compiling CPP programs in UDK with >> >> VS2005/VS2008 >> >> as >> >> toolchain and it worked well. >> >> >> >> 2.Now,we have a requirement to support AARCH64 architecture
with
>> >> ARMGCC >> >> as >> >> the toolchain.But when we tried to compile our CPP code/Sample >> >> HelloWorld >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) with
ARMGCC
>> >> as >> >> toolchain,we were seeing relocation errors such as 0x105. >> >> >> >> 3.As advised by you,we tried compiling a sample HelloWorld CPP >> >> program >> >> under >> >> EDK2 and still we are seeing the same relocation errors. >> >> >> >> Questions: >> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to
resolve the
>> >> relocation errors we are observing? >> >> >> >> Please correct me,if I have missed something. >> >> >> > >> > The relocation errors are a symptom of the fact that you are
trying
>> > to >> > link the Linux specific C++ runtime into your EDK2 binary. This
is a
>> > pointless exercise, since the Linux C++ runtime is fundamentally >> > incompatible with EDK2, So please, don't ask any more questions
about
>> > relocation errors, and focus on implementing an alternative C++ >> > runtime that maps calls to new() and delete() onto EDK2 APIs,
i.e.,
>> > AllocatePool and FreePool. Note that you will still have
problems
>> > with >> > symbol decoration, since EDK2 header file don't have 'extern
"C"'
>> > qualifiers around C declarations. >> > >> > >> > >> >> ________________________________ >> >> From: Ard Biesheuvel >> >> Sent: 01-02-2016 11:59 >> >> To: Ravikanth MVR >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro UEFI >> >> Mailman >> >> List; Sadananda Murthy; Unnikrishnan P S >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> >> ravikanth.mvr@avagotech.com >> >> wrote: >> >>> +Unni. >> >>> >> >>> Ard, >> >>> I have done a native compilation with EDK2 and I am facing
same
>> >>> issues >> >>> as >> >>> I >> >>> did before.Below is the snapshot of the errors I received. >> >>> >> >> >> >> I have explained twice already why C++ under EDK2 is not going
to
>> >> work. What exactly were you expecting? >> >> -- >> >> Ard. >> >> >> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >> >>> >> >>> >> >>> >> >>> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> >>> >> >>> >> >>> >> >>> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> GenFw: ERROR 3000: Invalid >> >>> WriteSections64(): >> >>> >> >>> >> >>> >> >>> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>> GenFw: ERROR 3000: Invalid >> >>> make: *** >> >>> >> >>> >> >>> >> >>> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> >>> Error 2 >> >>> WriteRelocations64(): >> >>> >> >>> >> >>> >> >>> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>> >> >>> >> >>> build.py... >> >>> : error 7000: Failed to execute command >> >>> make --no-print-directory all >> >>> >> >>> >> >>> >> >>> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>> >>> >> >>> - Failed - >> >>> Build end time: 19:12:41, Jan.31 2016 >> >>> Build total time: 00:00:15 >> >>> >> >>> Thanks >> >>> Ravi >> >>> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >> >>> ard.biesheuvel@linaro.org >> >>> wrote: >> >>>> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >> >>>> ravikanth.mvr@avagotech.com >> >>>> wrote: >> >>>> > Ard, >> >>>> > I was trying to compile and generate helloworld
application via
>> >>>> > EDK2.Under >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not find
"Win32"
>> >>>> > directory >> >>>> > which has GenFw utility.But the UDK package has Win32
directory.
>> >>>> > >> >>>> > Could you let me know on how to build and EDK2 package in >> >>>> > Windows >> >>>> > or >> >>>> > else Am >> >>>> > I missing something here? >> >>>> > >> >>>> >> >>>> I haven't used Windows for software development work in 15
years,
>> >>>> so >> >>>> I >> >>>> am really not the person you should be asking this. >> >>>> >> >>>> -- >> >>>> Ard. >> >>>> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >> >>>> > ravikanth.mvr@avagotech.com >> >>>> > wrote: >> >>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the
results.
>> >>>> >> >> >>>> >> Thanks. >> >>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >> >>>> >> ard.biesheuvel@linaro.org wrote: >> >>>> >>> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >> >>>> >>> ravikanth.mvr@avagotech.com >> >>>> >>> wrote: >> >>>> >>> > Ard, >> >>>> >>> > >> >>>> >>> > OK.But when a simple HelloWorld program,which is part
of
>> >>>> >>> > EDK2 >> >>>> >>> > sample >> >>>> >>> > programs and which is written in c,is renamed to
.CPP,we get
>> >>>> >>> > these >> >>>> >>> > relocation issues in-spite of not using any C++ runtime >> >>>> >>> > API's. >> >>>> >>> > >> >>>> >>> >> >>>> >>> In UDK or EDK2? >> >>>> >>> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >> >>>> >>> > ard.biesheuvel@linaro.org >> >>>> >>> > wrote: >> >>>> >>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >> >>>> >>> >> ravikanth.mvr@avagotech.com >> >>>> >>> >> wrote: >> >>>> >>> >> > Hi Ard, >> >>>> >>> >> > >> >>>> >>> >> > Hope you remember we speaking about the 0x105 and
0x0
>> >>>> >>> >> > relocation >> >>>> >>> >> > issues >> >>>> >>> >> > which we came across while compiling a simple
HelloWorld
>> >>>> >>> >> > program >> >>>> >>> >> > in >> >>>> >>> >> > CPP.As >> >>>> >>> >> > you said on the other thread(EDK2 mailing list)we
need
>> >>>> >>> >> > some >> >>>> >>> >> > changes >> >>>> >>> >> > to >> >>>> >>> >> > compiler and GenFw utility of UDK,can we take the >> >>>> >>> >> > required >> >>>> >>> >> > changes >> >>>> >>> >> > forward >> >>>> >>> >> > and come up with a UDK with this support? >> >>>> >>> >> > >> >>>> >>> >> > We are stuck at this juncture with this activity and >> >>>> >>> >> > would >> >>>> >>> >> > need >> >>>> >>> >> > your >> >>>> >>> >> > help >> >>>> >>> >> > badly. >> >>>> >>> >> > >> >>>> >>> >> >> >>>> >>> >> Please forget about UDK, and rebase your work onto the >> >>>> >>> >> latest >> >>>> >>> >> EDK2 >> >>>> >>> >> master branch. There have been many changes to the way >> >>>> >>> >> relocations >> >>>> >>> >> are >> >>>> >>> >> handled, which also impose requirements at link time
(i.e.,
>> >>>> >>> >> in >> >>>> >>> >> terms >> >>>> >>> >> of section alignment, and relative offset between
sections
>> >>>> >>> >> both >> >>>> >>> >> in >> >>>> >>> >> the >> >>>> >>> >> ELF and the PE/COFF versions of the image) >> >>>> >>> >> >> >>>> >>> >> However, the relocation issue was due to the fact
that you
>> >>>> >>> >> were >> >>>> >>> >> using >> >>>> >>> >> the Linux version of the C++ runtime, which you
cannot use
>> >>>> >>> >> under >> >>>> >>> >> EDK2 >> >>>> >>> >> even if we do support those relocation types with the
newer
>> >>>> >>> >> tools. >> >>>> >>> >> >> >>>> >>> >> Bottom line is that you need to develop your own C++ >> >>>> >>> >> minimal >> >>>> >>> >> runtime >> >>>> >>> >> if you want to run C++ programs under EDK2 >> >>>> >>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> >>>> >>> >> > ravikanth.mvr@avagotech.com >> >>>> >>> >> > wrote: >> >>>> >>> >> >> >> >>>> >>> >> >> +Sada. >> >>>> >>> >> >> >> >>>> >>> >> >> Thanks. >> >>>> >>> >> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >> >>>> >>> >> >>> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >>>> >>> >> >>> leif.lindholm@linaro.org >> >>>> >>> >> >>> wrote: >> >>>> >>> >> >>> > Hi Daniel, >> >>>> >>> >> >>> > >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM folder
for
>> >>>> >>> >> >>> > some >> >>>> >>> >> >>> > reason. >> >>>> >>> >> >>> > >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, Daniel >> >>>> >>> >> >>> > Samuelraj >> >>>> >>> >> >>> > wrote: >> >>>> >>> >> >>> >> We are able to compile CPP files for X64 using >> >>>> >>> >> >>> >> UDK2014 >> >>>> >>> >> >>> >> by >> >>>> >>> >> >>> >> using >> >>>> >>> >> >>> >> Visual >> >>>> >>> >> >>> >> Studio. >> >>>> >>> >> >>> >> >> >>>> >>> >> >>> >> How do we compile the same source for AARCH64? >> >>>> >>> >> >>> >> >>>> >>> >> >>> Do you mean C++? That is completely unsupported,
and is
>> >>>> >>> >> >>> going >> >>>> >>> >> >>> to >> >>>> >>> >> >>> be >> >>>> >>> >> >>> quite a challenge to implement. Note that you
cannot
>> >>>> >>> >> >>> rely >> >>>> >>> >> >>> on >> >>>> >>> >> >>> the >> >>>> >>> >> >>> C++ >> >>>> >>> >> >>> runtime for various reasons (including, but not
limited
>> >>>> >>> >> >>> to, >> >>>> >>> >> >>> the >> >>>> >>> >> >>> fact >> >>>> >>> >> >>> that it uses small model relocations, and is built >> >>>> >>> >> >>> against >> >>>> >>> >> >>> libc >> >>>> >>> >> >>> on >> >>>> >>> >> >>> Linux) I wonder how that even works on Visual
Studio
>> >>>> >>> >> >>> for >> >>>> >>> >> >>> X64, >> >>>> >>> >> >>> since >> >>>> >>> >> >>> the code you build will try to call libc
functions from
>> >>>> >>> >> >>> the >> >>>> >>> >> >>> VC >> >>>> >>> >> >>> runtime >> >>>> >>> >> >>> library. >> >>>> >>> >> >>> >> >>>> >>> >> >>> There has been some discussion about this
recently on
>> >>>> >>> >> >>> the >> >>>> >>> >> >>> list. >> >>>> >>> >> >>> If >> >>>> >>> >> >>> you >> >>>> >>> >> >>> disable exceptions and RTTI, and reimplement your
new
>> >>>> >>> >> >>> and >> >>>> >>> >> >>> delete >> >>>> >>> >> >>> operators, you may be able to build code that
does not
>> >>>> >>> >> >>> rely >> >>>> >>> >> >>> on >> >>>> >>> >> >>> advanced C++ runtime features. >> >>>> >>> >> >>> >> >>>> >>> >> >>> -- >> >>>> >>> >> >>> Ard. >> >>>> >>> >> >> >> >>>> >>> >> >> >> >>>> >>> >> > >> >>>> >>> > >> >>>> >>> > >> >>>> >> >> >>>> >> >> >>>> > >> >>> >> >>> > >
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26: + case R_AARCH64_PREL64: + case R_AARCH64_PREL32: + case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt section relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
+ case R_AARCH64_PREL64: + case R_AARCH64_PREL32: + case R_AARCH64_PREL16: + break; + case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt section
relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include
AutoGen.h
-DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror
-Wno-array-bounds -c
-include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections
-fdata-sections
-fomit-frame-pointer -fno-builtin -Wno-address
-Wno-unused-but-set-variable
-o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
-Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
--start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Ard,
I tried building the EDK2 with the below configuration and ended up with the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let you
know
the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want me
to
use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if I am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 2 February 2016 at 16:23, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote: > Ard, > > I have been using GCC5.0.0(Experimental version). > > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220
(experimental)
> > I would try with GCC49/48 and let you know. >
I don't mean the actual compiler, I mean the toolchain definition in EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are suitable for building AArch64. You should use GCC48 or GCC49 instead
-- Ard.
> On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> It looks like you are using the wrong compiler. You should use
GCC48
>> or GCC49 instead. >> >> >> On 2 February 2016 at 12:08, Ravikanth MVR >> ravikanth.mvr@broadcom.com >> wrote: >> > Thanks Ard!I followed the steps and I could find out that NO >> > standard >> > library was included.Below is the list of libraries that were >> > getting >> > included. >> > >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >> > HelloWorld.lib(AutoGen.obj) >> > UefiDebugLibStdErr.lib(DebugLib.obj) >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >> > UefiLib.lib(UefiLib.obj) >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >> > BasePrintLib.lib(PrintLib.obj) >> > BasePrintLib.lib(PrintLibInternal.obj) >> > BaseLib.lib(DivU64x32Remainder.obj) >> > BaseLib.lib(CpuDeadLoop.obj) >> > BaseLib.lib(String.obj) >> > BaseLib.lib(Unaligned.obj) >> > BaseLib.lib(Math64.obj) >> > >> > I have included .map file as well with this mail. >> > >> > Thanks. >> > >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >> > ard.biesheuvel@linaro.org >> > wrote: >> >> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >> >> ravikanth.mvr@avagotech.com wrote: >> >> > Ard, >> >> > >> >> > I understand that we have to implement alternative C++
runtime
>> >> > API >> >> > which >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and
FreePool.
>> >> > >> >> > I did implement alternative new and delete API's,which uses >> >> > AllocatePool >> >> > and >> >> > FreePool,for OUR code and most of the relocation errors had >> >> > gone.BUT >> >> > when >> >> > the CPP program(HelloWorld) under compilation doesn't even
call
>> >> > the >> >> > C++ >> >> > runtime API's,why are we seeing these errors?-This is what I
am
>> >> > trying >> >> > to >> >> > understand. >> >> > >> >> >> >> If you add a -Map xxx.map option to the linker command, you
will
>> >> get a >> >> map file that tells you exactly which object was included in
the
>> >> link, >> >> and why (iow, which symbol dependency it satisfies) That way,
you
>> >> will >> >> be able to figure out which standard library is included, and
for
>> >> which reason. >> >> >> >> > Thanks. >> >> > ________________________________ >> >> > From: Ard Biesheuvel >> >> > Sent: 01-02-2016 12:31 >> >> > To: M.V.R. Ravikanth >> >> > >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro
UEFI
>> >> > Mailman >> >> > List; Sadananda Murthy; Unnikrishnan P S >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> > >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >> >> > ravikanth.mvr@avagotech.com wrote: >> >> >> Ard, >> >> >> I would try to explain here, >> >> >> >> >> >> 1.Till now we have been compiling CPP programs in UDK with >> >> >> VS2005/VS2008 >> >> >> as >> >> >> toolchain and it worked well. >> >> >> >> >> >> 2.Now,we have a requirement to support AARCH64 architecture >> >> >> with >> >> >> ARMGCC >> >> >> as >> >> >> the toolchain.But when we tried to compile our CPP
code/Sample
>> >> >> HelloWorld >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) with >> >> >> ARMGCC >> >> >> as >> >> >> toolchain,we were seeing relocation errors such as 0x105. >> >> >> >> >> >> 3.As advised by you,we tried compiling a sample HelloWorld
CPP
>> >> >> program >> >> >> under >> >> >> EDK2 and still we are seeing the same relocation errors. >> >> >> >> >> >> Questions: >> >> >> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to >> >> >> resolve the >> >> >> relocation errors we are observing? >> >> >> >> >> >> Please correct me,if I have missed something. >> >> >> >> >> > >> >> > The relocation errors are a symptom of the fact that you are >> >> > trying >> >> > to >> >> > link the Linux specific C++ runtime into your EDK2 binary.
This
>> >> > is a >> >> > pointless exercise, since the Linux C++ runtime is >> >> > fundamentally >> >> > incompatible with EDK2, So please, don't ask any more
questions
>> >> > about >> >> > relocation errors, and focus on implementing an alternative
C++
>> >> > runtime that maps calls to new() and delete() onto EDK2 APIs, >> >> > i.e., >> >> > AllocatePool and FreePool. Note that you will still have >> >> > problems >> >> > with >> >> > symbol decoration, since EDK2 header file don't have 'extern >> >> > "C"' >> >> > qualifiers around C declarations. >> >> > >> >> > >> >> > >> >> >> ________________________________ >> >> >> From: Ard Biesheuvel >> >> >> Sent: 01-02-2016 11:59 >> >> >> To: Ravikanth MVR >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro >> >> >> UEFI >> >> >> Mailman >> >> >> List; Sadananda Murthy; Unnikrishnan P S >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> >> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> >> >> ravikanth.mvr@avagotech.com >> >> >> wrote: >> >> >>> +Unni. >> >> >>> >> >> >>> Ard, >> >> >>> I have done a native compilation with EDK2 and I am facing >> >> >>> same >> >> >>> issues >> >> >>> as >> >> >>> I >> >> >>> did before.Below is the snapshot of the errors I received. >> >> >>> >> >> >> >> >> >> I have explained twice already why C++ under EDK2 is not
going
>> >> >> to >> >> >> work. What exactly were you expecting? >> >> >> -- >> >> >> Ard. >> >> >> >> >> >> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >> >>> GenFw: ERROR 3000: Invalid >> >> >>> WriteSections64(): >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >> >>> GenFw: ERROR 3000: Invalid >> >> >>> make: *** >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> >> >>> Error 2 >> >> >>> WriteRelocations64(): >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >> >>> >> >> >>> >> >> >>> build.py... >> >> >>> : error 7000: Failed to execute command >> >> >>> make --no-print-directory all >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>> >> >>> >> >> >>> - Failed - >> >> >>> Build end time: 19:12:41, Jan.31 2016 >> >> >>> Build total time: 00:00:15 >> >> >>> >> >> >>> Thanks >> >> >>> Ravi >> >> >>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >> >> >>> ard.biesheuvel@linaro.org >> >> >>> wrote: >> >> >>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >> >> >>>> ravikanth.mvr@avagotech.com >> >> >>>> wrote: >> >> >>>> > Ard, >> >> >>>> > I was trying to compile and generate helloworld >> >> >>>> > application via >> >> >>>> > EDK2.Under >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not find >> >> >>>> > "Win32" >> >> >>>> > directory >> >> >>>> > which has GenFw utility.But the UDK package has Win32 >> >> >>>> > directory. >> >> >>>> > >> >> >>>> > Could you let me know on how to build and EDK2 package
in
>> >> >>>> > Windows >> >> >>>> > or >> >> >>>> > else Am >> >> >>>> > I missing something here? >> >> >>>> > >> >> >>>> >> >> >>>> I haven't used Windows for software development work in 15 >> >> >>>> years, >> >> >>>> so >> >> >>>> I >> >> >>>> am really not the person you should be asking this. >> >> >>>> >> >> >>>> -- >> >> >>>> Ard. >> >> >>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >> >> >>>> > ravikanth.mvr@avagotech.com >> >> >>>> > wrote: >> >> >>>> >> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the >> >> >>>> >> results. >> >> >>>> >> >> >> >>>> >> Thanks. >> >> >>>> >> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >> >> >>>> >>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >> >> >>>> >>> ravikanth.mvr@avagotech.com >> >> >>>> >>> wrote: >> >> >>>> >>> > Ard, >> >> >>>> >>> > >> >> >>>> >>> > OK.But when a simple HelloWorld program,which is
part
>> >> >>>> >>> > of >> >> >>>> >>> > EDK2 >> >> >>>> >>> > sample >> >> >>>> >>> > programs and which is written in c,is renamed to >> >> >>>> >>> > .CPP,we get >> >> >>>> >>> > these >> >> >>>> >>> > relocation issues in-spite of not using any C++ >> >> >>>> >>> > runtime >> >> >>>> >>> > API's. >> >> >>>> >>> > >> >> >>>> >>> >> >> >>>> >>> In UDK or EDK2? >> >> >>>> >>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >> >> >>>> >>> > ard.biesheuvel@linaro.org >> >> >>>> >>> > wrote: >> >> >>>> >>> >> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >> >> >>>> >>> >> wrote: >> >> >>>> >>> >> > Hi Ard, >> >> >>>> >>> >> > >> >> >>>> >>> >> > Hope you remember we speaking about the 0x105 and >> >> >>>> >>> >> > 0x0 >> >> >>>> >>> >> > relocation >> >> >>>> >>> >> > issues >> >> >>>> >>> >> > which we came across while compiling a simple >> >> >>>> >>> >> > HelloWorld >> >> >>>> >>> >> > program >> >> >>>> >>> >> > in >> >> >>>> >>> >> > CPP.As >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing list)we >> >> >>>> >>> >> > need >> >> >>>> >>> >> > some >> >> >>>> >>> >> > changes >> >> >>>> >>> >> > to >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we take the >> >> >>>> >>> >> > required >> >> >>>> >>> >> > changes >> >> >>>> >>> >> > forward >> >> >>>> >>> >> > and come up with a UDK with this support? >> >> >>>> >>> >> > >> >> >>>> >>> >> > We are stuck at this juncture with this activity >> >> >>>> >>> >> > and >> >> >>>> >>> >> > would >> >> >>>> >>> >> > need >> >> >>>> >>> >> > your >> >> >>>> >>> >> > help >> >> >>>> >>> >> > badly. >> >> >>>> >>> >> > >> >> >>>> >>> >> >> >> >>>> >>> >> Please forget about UDK, and rebase your work onto >> >> >>>> >>> >> the >> >> >>>> >>> >> latest >> >> >>>> >>> >> EDK2 >> >> >>>> >>> >> master branch. There have been many changes to the >> >> >>>> >>> >> way >> >> >>>> >>> >> relocations >> >> >>>> >>> >> are >> >> >>>> >>> >> handled, which also impose requirements at link
time
>> >> >>>> >>> >> (i.e., >> >> >>>> >>> >> in >> >> >>>> >>> >> terms >> >> >>>> >>> >> of section alignment, and relative offset between >> >> >>>> >>> >> sections >> >> >>>> >>> >> both >> >> >>>> >>> >> in >> >> >>>> >>> >> the >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >> >> >>>> >>> >> >> >> >>>> >>> >> However, the relocation issue was due to the fact >> >> >>>> >>> >> that you >> >> >>>> >>> >> were >> >> >>>> >>> >> using >> >> >>>> >>> >> the Linux version of the C++ runtime, which you >> >> >>>> >>> >> cannot use >> >> >>>> >>> >> under >> >> >>>> >>> >> EDK2 >> >> >>>> >>> >> even if we do support those relocation types with
the
>> >> >>>> >>> >> newer >> >> >>>> >>> >> tools. >> >> >>>> >>> >> >> >> >>>> >>> >> Bottom line is that you need to develop your own
C++
>> >> >>>> >>> >> minimal >> >> >>>> >>> >> runtime >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >> >> >>>> >>> >> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >> >> >>>> >>> >> > wrote: >> >> >>>> >>> >> >> >> >> >>>> >>> >> >> +Sada. >> >> >>>> >>> >> >> >> >> >>>> >>> >> >> Thanks. >> >> >>>> >>> >> >> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >> >> >>>> >>> >> >>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >> >> >>>> >>> >> >>> wrote: >> >> >>>> >>> >> >>> > Hi Daniel, >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM folder >> >> >>>> >>> >> >>> > for >> >> >>>> >>> >> >>> > some >> >> >>>> >>> >> >>> > reason. >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, >> >> >>>> >>> >> >>> > Daniel >> >> >>>> >>> >> >>> > Samuelraj >> >> >>>> >>> >> >>> > wrote: >> >> >>>> >>> >> >>> >> We are able to compile CPP files for X64
using
>> >> >>>> >>> >> >>> >> UDK2014 >> >> >>>> >>> >> >>> >> by >> >> >>>> >>> >> >>> >> using >> >> >>>> >>> >> >>> >> Visual >> >> >>>> >>> >> >>> >> Studio. >> >> >>>> >>> >> >>> >> >> >> >>>> >>> >> >>> >> How do we compile the same source for
AARCH64?
>> >> >>>> >>> >> >>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely
unsupported,
>> >> >>>> >>> >> >>> and is >> >> >>>> >>> >> >>> going >> >> >>>> >>> >> >>> to >> >> >>>> >>> >> >>> be >> >> >>>> >>> >> >>> quite a challenge to implement. Note that you >> >> >>>> >>> >> >>> cannot >> >> >>>> >>> >> >>> rely >> >> >>>> >>> >> >>> on >> >> >>>> >>> >> >>> the >> >> >>>> >>> >> >>> C++ >> >> >>>> >>> >> >>> runtime for various reasons (including, but not >> >> >>>> >>> >> >>> limited >> >> >>>> >>> >> >>> to, >> >> >>>> >>> >> >>> the >> >> >>>> >>> >> >>> fact >> >> >>>> >>> >> >>> that it uses small model relocations, and is >> >> >>>> >>> >> >>> built >> >> >>>> >>> >> >>> against >> >> >>>> >>> >> >>> libc >> >> >>>> >>> >> >>> on >> >> >>>> >>> >> >>> Linux) I wonder how that even works on Visual >> >> >>>> >>> >> >>> Studio >> >> >>>> >>> >> >>> for >> >> >>>> >>> >> >>> X64, >> >> >>>> >>> >> >>> since >> >> >>>> >>> >> >>> the code you build will try to call libc >> >> >>>> >>> >> >>> functions from >> >> >>>> >>> >> >>> the >> >> >>>> >>> >> >>> VC >> >> >>>> >>> >> >>> runtime >> >> >>>> >>> >> >>> library. >> >> >>>> >>> >> >>> >> >> >>>> >>> >> >>> There has been some discussion about this >> >> >>>> >>> >> >>> recently on >> >> >>>> >>> >> >>> the >> >> >>>> >>> >> >>> list. >> >> >>>> >>> >> >>> If >> >> >>>> >>> >> >>> you >> >> >>>> >>> >> >>> disable exceptions and RTTI, and reimplement
your
>> >> >>>> >>> >> >>> new >> >> >>>> >>> >> >>> and >> >> >>>> >>> >> >>> delete >> >> >>>> >>> >> >>> operators, you may be able to build code that >> >> >>>> >>> >> >>> does not >> >> >>>> >>> >> >>> rely >> >> >>>> >>> >> >>> on >> >> >>>> >>> >> >>> advanced C++ runtime features. >> >> >>>> >>> >> >>> >> >> >>>> >>> >> >>> -- >> >> >>>> >>> >> >>> Ard. >> >> >>>> >>> >> >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> > >> >> >>>> >>> > >> >> >>>> >>> > >> >> >>>> >> >> >> >>>> >> >> >> >>>> > >> >> >>> >> >> >>> >> > >> > > >
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
cp -f /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: *** [/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt section
relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include
AutoGen.h
-DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror
-Wno-array-bounds -c
-include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections
-fdata-sections
-fomit-frame-pointer -fno-builtin -Wno-address
-Wno-unused-but-set-variable
-o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
-Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
--start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Ard,
I tried building the EDK2 with the below configuration and ended up
with
the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let
you know
the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want
me to
use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if
I
am wrong.
Thanks. On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 2 February 2016 at 16:23, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
> wrote: > > Ard, > > > > I have been using GCC5.0.0(Experimental version). > > > > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220
(experimental)
> > > > I would try with GCC49/48 and let you know. > > > > I don't mean the actual compiler, I mean the toolchain definition in > EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are > suitable for building AArch64. You should use GCC48 or GCC49 instead > > -- > Ard. > > > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel > > ard.biesheuvel@linaro.org > > wrote: > >> > >> It looks like you are using the wrong compiler. You should use
GCC48
> >> or GCC49 instead. > >> > >> > >> On 2 February 2016 at 12:08, Ravikanth MVR > >> ravikanth.mvr@broadcom.com > >> wrote: > >> > Thanks Ard!I followed the steps and I could find out that NO > >> > standard > >> > library was included.Below is the list of libraries that were > >> > getting > >> > included. > >> > > >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) > >> > HelloWorld.lib(AutoGen.obj) > >> > UefiDebugLibStdErr.lib(DebugLib.obj) > >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) > >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
> >> > UefiLib.lib(UefiLib.obj) > >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
> >> > BasePrintLib.lib(PrintLib.obj) > >> > BasePrintLib.lib(PrintLibInternal.obj) > >> > BaseLib.lib(DivU64x32Remainder.obj) > >> > BaseLib.lib(CpuDeadLoop.obj) > >> > BaseLib.lib(String.obj) > >> > BaseLib.lib(Unaligned.obj) > >> > BaseLib.lib(Math64.obj) > >> > > >> > I have included .map file as well with this mail. > >> > > >> > Thanks. > >> > > >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel > >> > ard.biesheuvel@linaro.org > >> > wrote: > >> >> > >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth > >> >> ravikanth.mvr@avagotech.com wrote: > >> >> > Ard, > >> >> > > >> >> > I understand that we have to implement alternative C++
runtime
> >> >> > API > >> >> > which > >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and
FreePool.
> >> >> > > >> >> > I did implement alternative new and delete API's,which uses > >> >> > AllocatePool > >> >> > and > >> >> > FreePool,for OUR code and most of the relocation errors had > >> >> > gone.BUT > >> >> > when > >> >> > the CPP program(HelloWorld) under compilation doesn't even
call
> >> >> > the > >> >> > C++ > >> >> > runtime API's,why are we seeing these errors?-This is what
I am
> >> >> > trying > >> >> > to > >> >> > understand. > >> >> > > >> >> > >> >> If you add a -Map xxx.map option to the linker command, you
will
> >> >> get a > >> >> map file that tells you exactly which object was included in
the
> >> >> link, > >> >> and why (iow, which symbol dependency it satisfies) That way,
you
> >> >> will > >> >> be able to figure out which standard library is included, and
for
> >> >> which reason. > >> >> > >> >> > Thanks. > >> >> > ________________________________ > >> >> > From: Ard Biesheuvel > >> >> > Sent: 01-02-2016 12:31 > >> >> > To: M.V.R. Ravikanth > >> >> > > >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro
UEFI
> >> >> > Mailman > >> >> > List; Sadananda Murthy; Unnikrishnan P S > >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > >> >> > > >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth > >> >> > ravikanth.mvr@avagotech.com wrote: > >> >> >> Ard, > >> >> >> I would try to explain here, > >> >> >> > >> >> >> 1.Till now we have been compiling CPP programs in UDK with > >> >> >> VS2005/VS2008 > >> >> >> as > >> >> >> toolchain and it worked well. > >> >> >> > >> >> >> 2.Now,we have a requirement to support AARCH64 architecture > >> >> >> with > >> >> >> ARMGCC > >> >> >> as > >> >> >> the toolchain.But when we tried to compile our CPP
code/Sample
> >> >> >> HelloWorld > >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp)
with
> >> >> >> ARMGCC > >> >> >> as > >> >> >> toolchain,we were seeing relocation errors such as 0x105. > >> >> >> > >> >> >> 3.As advised by you,we tried compiling a sample HelloWorld
CPP
> >> >> >> program > >> >> >> under > >> >> >> EDK2 and still we are seeing the same relocation errors. > >> >> >> > >> >> >> Questions: > >> >> >> > >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to > >> >> >> resolve the > >> >> >> relocation errors we are observing? > >> >> >> > >> >> >> Please correct me,if I have missed something. > >> >> >> > >> >> > > >> >> > The relocation errors are a symptom of the fact that you are > >> >> > trying > >> >> > to > >> >> > link the Linux specific C++ runtime into your EDK2 binary.
This
> >> >> > is a > >> >> > pointless exercise, since the Linux C++ runtime is > >> >> > fundamentally > >> >> > incompatible with EDK2, So please, don't ask any more
questions
> >> >> > about > >> >> > relocation errors, and focus on implementing an alternative
C++
> >> >> > runtime that maps calls to new() and delete() onto EDK2
APIs,
> >> >> > i.e., > >> >> > AllocatePool and FreePool. Note that you will still have > >> >> > problems > >> >> > with > >> >> > symbol decoration, since EDK2 header file don't have 'extern > >> >> > "C"' > >> >> > qualifiers around C declarations. > >> >> > > >> >> > > >> >> > > >> >> >> ________________________________ > >> >> >> From: Ard Biesheuvel > >> >> >> Sent: 01-02-2016 11:59 > >> >> >> To: Ravikanth MVR > >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro > >> >> >> UEFI > >> >> >> Mailman > >> >> >> List; Sadananda Murthy; Unnikrishnan P S > >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > >> >> >> > >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR > >> >> >> ravikanth.mvr@avagotech.com > >> >> >> wrote: > >> >> >>> +Unni. > >> >> >>> > >> >> >>> Ard, > >> >> >>> I have done a native compilation with EDK2 and I am facing > >> >> >>> same > >> >> >>> issues > >> >> >>> as > >> >> >>> I > >> >> >>> did before.Below is the snapshot of the errors I received. > >> >> >>> > >> >> >> > >> >> >> I have explained twice already why C++ under EDK2 is not
going
> >> >> >> to > >> >> >> work. What exactly were you expecting? > >> >> >> -- > >> >> >> Ard. > >> >> >> > >> >> >> > >> >> >>> "GenFw" -e UEFI_APPLICATION -o > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >> >> >>> GenFw: ERROR 3000: Invalid > >> >> >>> WriteSections64(): > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >> >> >>> GenFw: ERROR 3000: Invalid > >> >> >>> make: *** > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >> >> >>> Error 2 > >> >> >>> WriteRelocations64(): > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >> >> >>> > >> >> >>> > >> >> >>> build.py... > >> >> >>> : error 7000: Failed to execute command > >> >> >>> make --no-print-directory all > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>> > >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> >> >> >>> > >> >> >>> - Failed - > >> >> >>> Build end time: 19:12:41, Jan.31 2016 > >> >> >>> Build total time: 00:00:15 > >> >> >>> > >> >> >>> Thanks > >> >> >>> Ravi > >> >> >>> > >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel > >> >> >>> ard.biesheuvel@linaro.org > >> >> >>> wrote: > >> >> >>>> > >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR > >> >> >>>> ravikanth.mvr@avagotech.com > >> >> >>>> wrote: > >> >> >>>> > Ard, > >> >> >>>> > I was trying to compile and generate helloworld > >> >> >>>> > application via > >> >> >>>> > EDK2.Under > >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not
find
> >> >> >>>> > "Win32" > >> >> >>>> > directory > >> >> >>>> > which has GenFw utility.But the UDK package has Win32 > >> >> >>>> > directory. > >> >> >>>> > > >> >> >>>> > Could you let me know on how to build and EDK2 package
in
> >> >> >>>> > Windows > >> >> >>>> > or > >> >> >>>> > else Am > >> >> >>>> > I missing something here? > >> >> >>>> > > >> >> >>>> > >> >> >>>> I haven't used Windows for software development work in
15
> >> >> >>>> years, > >> >> >>>> so > >> >> >>>> I > >> >> >>>> am really not the person you should be asking this. > >> >> >>>> > >> >> >>>> -- > >> >> >>>> Ard. > >> >> >>>> > >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR > >> >> >>>> > ravikanth.mvr@avagotech.com > >> >> >>>> > wrote: > >> >> >>>> >> > >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the > >> >> >>>> >> results. > >> >> >>>> >> > >> >> >>>> >> Thanks. > >> >> >>>> >> > >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel > >> >> >>>> >> ard.biesheuvel@linaro.org wrote: > >> >> >>>> >>> > >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR > >> >> >>>> >>> ravikanth.mvr@avagotech.com > >> >> >>>> >>> wrote: > >> >> >>>> >>> > Ard, > >> >> >>>> >>> > > >> >> >>>> >>> > OK.But when a simple HelloWorld program,which is
part
> >> >> >>>> >>> > of > >> >> >>>> >>> > EDK2 > >> >> >>>> >>> > sample > >> >> >>>> >>> > programs and which is written in c,is renamed to > >> >> >>>> >>> > .CPP,we get > >> >> >>>> >>> > these > >> >> >>>> >>> > relocation issues in-spite of not using any C++ > >> >> >>>> >>> > runtime > >> >> >>>> >>> > API's. > >> >> >>>> >>> > > >> >> >>>> >>> > >> >> >>>> >>> In UDK or EDK2? > >> >> >>>> >>> > >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel > >> >> >>>> >>> > ard.biesheuvel@linaro.org > >> >> >>>> >>> > wrote: > >> >> >>>> >>> >> > >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR > >> >> >>>> >>> >> ravikanth.mvr@avagotech.com > >> >> >>>> >>> >> wrote: > >> >> >>>> >>> >> > Hi Ard, > >> >> >>>> >>> >> > > >> >> >>>> >>> >> > Hope you remember we speaking about the 0x105
and
> >> >> >>>> >>> >> > 0x0 > >> >> >>>> >>> >> > relocation > >> >> >>>> >>> >> > issues > >> >> >>>> >>> >> > which we came across while compiling a simple > >> >> >>>> >>> >> > HelloWorld > >> >> >>>> >>> >> > program > >> >> >>>> >>> >> > in > >> >> >>>> >>> >> > CPP.As > >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing
list)we
> >> >> >>>> >>> >> > need > >> >> >>>> >>> >> > some > >> >> >>>> >>> >> > changes > >> >> >>>> >>> >> > to > >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we take
the
> >> >> >>>> >>> >> > required > >> >> >>>> >>> >> > changes > >> >> >>>> >>> >> > forward > >> >> >>>> >>> >> > and come up with a UDK with this support? > >> >> >>>> >>> >> > > >> >> >>>> >>> >> > We are stuck at this juncture with this activity > >> >> >>>> >>> >> > and > >> >> >>>> >>> >> > would > >> >> >>>> >>> >> > need > >> >> >>>> >>> >> > your > >> >> >>>> >>> >> > help > >> >> >>>> >>> >> > badly. > >> >> >>>> >>> >> > > >> >> >>>> >>> >> > >> >> >>>> >>> >> Please forget about UDK, and rebase your work onto > >> >> >>>> >>> >> the > >> >> >>>> >>> >> latest > >> >> >>>> >>> >> EDK2 > >> >> >>>> >>> >> master branch. There have been many changes to the > >> >> >>>> >>> >> way > >> >> >>>> >>> >> relocations > >> >> >>>> >>> >> are > >> >> >>>> >>> >> handled, which also impose requirements at link
time
> >> >> >>>> >>> >> (i.e., > >> >> >>>> >>> >> in > >> >> >>>> >>> >> terms > >> >> >>>> >>> >> of section alignment, and relative offset between > >> >> >>>> >>> >> sections > >> >> >>>> >>> >> both > >> >> >>>> >>> >> in > >> >> >>>> >>> >> the > >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) > >> >> >>>> >>> >> > >> >> >>>> >>> >> However, the relocation issue was due to the fact > >> >> >>>> >>> >> that you > >> >> >>>> >>> >> were > >> >> >>>> >>> >> using > >> >> >>>> >>> >> the Linux version of the C++ runtime, which you > >> >> >>>> >>> >> cannot use > >> >> >>>> >>> >> under > >> >> >>>> >>> >> EDK2 > >> >> >>>> >>> >> even if we do support those relocation types with
the
> >> >> >>>> >>> >> newer > >> >> >>>> >>> >> tools. > >> >> >>>> >>> >> > >> >> >>>> >>> >> Bottom line is that you need to develop your own
C++
> >> >> >>>> >>> >> minimal > >> >> >>>> >>> >> runtime > >> >> >>>> >>> >> if you want to run C++ programs under EDK2 > >> >> >>>> >>> >> > >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR > >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com > >> >> >>>> >>> >> > wrote: > >> >> >>>> >>> >> >> > >> >> >>>> >>> >> >> +Sada. > >> >> >>>> >>> >> >> > >> >> >>>> >>> >> >> Thanks. > >> >> >>>> >>> >> >> > >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard Biesheuvel > >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: > >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm > >> >> >>>> >>> >> >>> leif.lindholm@linaro.org > >> >> >>>> >>> >> >>> wrote: > >> >> >>>> >>> >> >>> > Hi Daniel, > >> >> >>>> >>> >> >>> > > >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM
folder
> >> >> >>>> >>> >> >>> > for > >> >> >>>> >>> >> >>> > some > >> >> >>>> >>> >> >>> > reason. > >> >> >>>> >>> >> >>> > > >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, > >> >> >>>> >>> >> >>> > Daniel > >> >> >>>> >>> >> >>> > Samuelraj > >> >> >>>> >>> >> >>> > wrote: > >> >> >>>> >>> >> >>> >> We are able to compile CPP files for X64
using
> >> >> >>>> >>> >> >>> >> UDK2014 > >> >> >>>> >>> >> >>> >> by > >> >> >>>> >>> >> >>> >> using > >> >> >>>> >>> >> >>> >> Visual > >> >> >>>> >>> >> >>> >> Studio. > >> >> >>>> >>> >> >>> >> > >> >> >>>> >>> >> >>> >> How do we compile the same source for
AARCH64?
> >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> Do you mean C++? That is completely
unsupported,
> >> >> >>>> >>> >> >>> and is > >> >> >>>> >>> >> >>> going > >> >> >>>> >>> >> >>> to > >> >> >>>> >>> >> >>> be > >> >> >>>> >>> >> >>> quite a challenge to implement. Note that you > >> >> >>>> >>> >> >>> cannot > >> >> >>>> >>> >> >>> rely > >> >> >>>> >>> >> >>> on > >> >> >>>> >>> >> >>> the > >> >> >>>> >>> >> >>> C++ > >> >> >>>> >>> >> >>> runtime for various reasons (including, but
not
> >> >> >>>> >>> >> >>> limited > >> >> >>>> >>> >> >>> to, > >> >> >>>> >>> >> >>> the > >> >> >>>> >>> >> >>> fact > >> >> >>>> >>> >> >>> that it uses small model relocations, and is > >> >> >>>> >>> >> >>> built > >> >> >>>> >>> >> >>> against > >> >> >>>> >>> >> >>> libc > >> >> >>>> >>> >> >>> on > >> >> >>>> >>> >> >>> Linux) I wonder how that even works on Visual > >> >> >>>> >>> >> >>> Studio > >> >> >>>> >>> >> >>> for > >> >> >>>> >>> >> >>> X64, > >> >> >>>> >>> >> >>> since > >> >> >>>> >>> >> >>> the code you build will try to call libc > >> >> >>>> >>> >> >>> functions from > >> >> >>>> >>> >> >>> the > >> >> >>>> >>> >> >>> VC > >> >> >>>> >>> >> >>> runtime > >> >> >>>> >>> >> >>> library. > >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> There has been some discussion about this > >> >> >>>> >>> >> >>> recently on > >> >> >>>> >>> >> >>> the > >> >> >>>> >>> >> >>> list. > >> >> >>>> >>> >> >>> If > >> >> >>>> >>> >> >>> you > >> >> >>>> >>> >> >>> disable exceptions and RTTI, and reimplement
your
> >> >> >>>> >>> >> >>> new > >> >> >>>> >>> >> >>> and > >> >> >>>> >>> >> >>> delete > >> >> >>>> >>> >> >>> operators, you may be able to build code that > >> >> >>>> >>> >> >>> does not > >> >> >>>> >>> >> >>> rely > >> >> >>>> >>> >> >>> on > >> >> >>>> >>> >> >>> advanced C++ runtime features. > >> >> >>>> >>> >> >>> > >> >> >>>> >>> >> >>> -- > >> >> >>>> >>> >> >>> Ard. > >> >> >>>> >>> >> >> > >> >> >>>> >>> >> >> > >> >> >>>> >>> >> > > >> >> >>>> >>> > > >> >> >>>> >>> > > >> >> >>>> >> > >> >> >>>> >> > >> >> >>>> > > >> >> >>> > >> >> >>> > >> > > >> > > > > >
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: *** [/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt section
relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -Wno-unused-but-set-variable -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map --start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I tried building the EDK2 with the below configuration and ended up with the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let you know the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, Below is my configuration
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc TARGET = RELEASE TARGET_ARCH = AARCH64 TOOL_CHAIN_CONF = Conf/tools_def.txt TOOL_CHAIN_TAG = GCC49
And GCC5.0.0 compiler is being used to compile the code or you want me to use the GCC4.9 compiler to compile as well?
Thanks.
On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me if > I > am wrong. > > Thanks. > On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org wrote: >> >> On 2 February 2016 at 16:23, Ravikanth MVR >> ravikanth.mvr@broadcom.com >> wrote: >> > Ard, >> > >> > I have been using GCC5.0.0(Experimental version). >> > >> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >> > (experimental) >> > >> > I would try with GCC49/48 and let you know. >> > >> >> I don't mean the actual compiler, I mean the toolchain definition >> in >> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are >> suitable for building AArch64. You should use GCC48 or GCC49 >> instead >> >> -- >> Ard. >> >> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >> > ard.biesheuvel@linaro.org >> > wrote: >> >> >> >> It looks like you are using the wrong compiler. You should use >> >> GCC48 >> >> or GCC49 instead. >> >> >> >> >> >> On 2 February 2016 at 12:08, Ravikanth MVR >> >> ravikanth.mvr@broadcom.com >> >> wrote: >> >> > Thanks Ard!I followed the steps and I could find out that NO >> >> > standard >> >> > library was included.Below is the list of libraries that were >> >> > getting >> >> > included. >> >> > >> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >> >> > HelloWorld.lib(AutoGen.obj) >> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >> >> > >> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >> >> > UefiLib.lib(UefiLib.obj) >> >> > >> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >> >> > BasePrintLib.lib(PrintLib.obj) >> >> > BasePrintLib.lib(PrintLibInternal.obj) >> >> > BaseLib.lib(DivU64x32Remainder.obj) >> >> > BaseLib.lib(CpuDeadLoop.obj) >> >> > BaseLib.lib(String.obj) >> >> > BaseLib.lib(Unaligned.obj) >> >> > BaseLib.lib(Math64.obj) >> >> > >> >> > I have included .map file as well with this mail. >> >> > >> >> > Thanks. >> >> > >> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >> >> > ard.biesheuvel@linaro.org >> >> > wrote: >> >> >> >> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >> >> >> ravikanth.mvr@avagotech.com wrote: >> >> >> > Ard, >> >> >> > >> >> >> > I understand that we have to implement alternative C++ >> >> >> > runtime >> >> >> > API >> >> >> > which >> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >> >> >> > FreePool. >> >> >> > >> >> >> > I did implement alternative new and delete API's,which uses >> >> >> > AllocatePool >> >> >> > and >> >> >> > FreePool,for OUR code and most of the relocation errors had >> >> >> > gone.BUT >> >> >> > when >> >> >> > the CPP program(HelloWorld) under compilation doesn't even >> >> >> > call >> >> >> > the >> >> >> > C++ >> >> >> > runtime API's,why are we seeing these errors?-This is what >> >> >> > I am >> >> >> > trying >> >> >> > to >> >> >> > understand. >> >> >> > >> >> >> >> >> >> If you add a -Map xxx.map option to the linker command, you >> >> >> will >> >> >> get a >> >> >> map file that tells you exactly which object was included in >> >> >> the >> >> >> link, >> >> >> and why (iow, which symbol dependency it satisfies) That way, >> >> >> you >> >> >> will >> >> >> be able to figure out which standard library is included, and >> >> >> for >> >> >> which reason. >> >> >> >> >> >> > Thanks. >> >> >> > ________________________________ >> >> >> > From: Ard Biesheuvel >> >> >> > Sent: 01-02-2016 12:31 >> >> >> > To: M.V.R. Ravikanth >> >> >> > >> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro >> >> >> > UEFI >> >> >> > Mailman >> >> >> > List; Sadananda Murthy; Unnikrishnan P S >> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> >> > >> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >> >> >> > ravikanth.mvr@avagotech.com wrote: >> >> >> >> Ard, >> >> >> >> I would try to explain here, >> >> >> >> >> >> >> >> 1.Till now we have been compiling CPP programs in UDK with >> >> >> >> VS2005/VS2008 >> >> >> >> as >> >> >> >> toolchain and it worked well. >> >> >> >> >> >> >> >> 2.Now,we have a requirement to support AARCH64 >> >> >> >> architecture >> >> >> >> with >> >> >> >> ARMGCC >> >> >> >> as >> >> >> >> the toolchain.But when we tried to compile our CPP >> >> >> >> code/Sample >> >> >> >> HelloWorld >> >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) >> >> >> >> with >> >> >> >> ARMGCC >> >> >> >> as >> >> >> >> toolchain,we were seeing relocation errors such as 0x105. >> >> >> >> >> >> >> >> 3.As advised by you,we tried compiling a sample HelloWorld >> >> >> >> CPP >> >> >> >> program >> >> >> >> under >> >> >> >> EDK2 and still we are seeing the same relocation errors. >> >> >> >> >> >> >> >> Questions: >> >> >> >> >> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to >> >> >> >> resolve the >> >> >> >> relocation errors we are observing? >> >> >> >> >> >> >> >> Please correct me,if I have missed something. >> >> >> >> >> >> >> > >> >> >> > The relocation errors are a symptom of the fact that you >> >> >> > are >> >> >> > trying >> >> >> > to >> >> >> > link the Linux specific C++ runtime into your EDK2 binary. >> >> >> > This >> >> >> > is a >> >> >> > pointless exercise, since the Linux C++ runtime is >> >> >> > fundamentally >> >> >> > incompatible with EDK2, So please, don't ask any more >> >> >> > questions >> >> >> > about >> >> >> > relocation errors, and focus on implementing an alternative >> >> >> > C++ >> >> >> > runtime that maps calls to new() and delete() onto EDK2 >> >> >> > APIs, >> >> >> > i.e., >> >> >> > AllocatePool and FreePool. Note that you will still have >> >> >> > problems >> >> >> > with >> >> >> > symbol decoration, since EDK2 header file don't have >> >> >> > 'extern >> >> >> > "C"' >> >> >> > qualifiers around C declarations. >> >> >> > >> >> >> > >> >> >> > >> >> >> >> ________________________________ >> >> >> >> From: Ard Biesheuvel >> >> >> >> Sent: 01-02-2016 11:59 >> >> >> >> To: Ravikanth MVR >> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; Linaro >> >> >> >> UEFI >> >> >> >> Mailman >> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >> >> >> >> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> >> >> >> ravikanth.mvr@avagotech.com >> >> >> >> wrote: >> >> >> >>> +Unni. >> >> >> >>> >> >> >> >>> Ard, >> >> >> >>> I have done a native compilation with EDK2 and I am >> >> >> >>> facing >> >> >> >>> same >> >> >> >>> issues >> >> >> >>> as >> >> >> >>> I >> >> >> >>> did before.Below is the snapshot of the errors I >> >> >> >>> received. >> >> >> >>> >> >> >> >> >> >> >> >> I have explained twice already why C++ under EDK2 is not >> >> >> >> going >> >> >> >> to >> >> >> >> work. What exactly were you expecting? >> >> >> >> -- >> >> >> >> Ard. >> >> >> >> >> >> >> >> >> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >> >> >>> GenFw: ERROR 3000: Invalid >> >> >> >>> WriteSections64(): >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >> >> >>> GenFw: ERROR 3000: Invalid >> >> >> >>> make: *** >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >> >> >> >>> Error 2 >> >> >> >>> WriteRelocations64(): >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >> >> >>> >> >> >> >>> >> >> >> >>> build.py... >> >> >> >>> : error 7000: Failed to execute command >> >> >> >>> make --no-print-directory all >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> >> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >> >> >> >>> >> >> >> >>> - Failed - >> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >> >> >> >>> Build total time: 00:00:15 >> >> >> >>> >> >> >> >>> Thanks >> >> >> >>> Ravi >> >> >> >>> >> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >> >> >> >>> ard.biesheuvel@linaro.org >> >> >> >>> wrote: >> >> >> >>>> >> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >> >> >> >>>> ravikanth.mvr@avagotech.com >> >> >> >>>> wrote: >> >> >> >>>> > Ard, >> >> >> >>>> > I was trying to compile and generate helloworld >> >> >> >>>> > application via >> >> >> >>>> > EDK2.Under >> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not >> >> >> >>>> > find >> >> >> >>>> > "Win32" >> >> >> >>>> > directory >> >> >> >>>> > which has GenFw utility.But the UDK package has Win32 >> >> >> >>>> > directory. >> >> >> >>>> > >> >> >> >>>> > Could you let me know on how to build and EDK2 package >> >> >> >>>> > in >> >> >> >>>> > Windows >> >> >> >>>> > or >> >> >> >>>> > else Am >> >> >> >>>> > I missing something here? >> >> >> >>>> > >> >> >> >>>> >> >> >> >>>> I haven't used Windows for software development work in >> >> >> >>>> 15 >> >> >> >>>> years, >> >> >> >>>> so >> >> >> >>>> I >> >> >> >>>> am really not the person you should be asking this. >> >> >> >>>> >> >> >> >>>> -- >> >> >> >>>> Ard. >> >> >> >>>> >> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >> >> >> >>>> > ravikanth.mvr@avagotech.com >> >> >> >>>> > wrote: >> >> >> >>>> >> >> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the >> >> >> >>>> >> results. >> >> >> >>>> >> >> >> >> >>>> >> Thanks. >> >> >> >>>> >> >> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >> >> >> >>>> >>> >> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >> >> >> >>>> >>> ravikanth.mvr@avagotech.com >> >> >> >>>> >>> wrote: >> >> >> >>>> >>> > Ard, >> >> >> >>>> >>> > >> >> >> >>>> >>> > OK.But when a simple HelloWorld program,which is >> >> >> >>>> >>> > part >> >> >> >>>> >>> > of >> >> >> >>>> >>> > EDK2 >> >> >> >>>> >>> > sample >> >> >> >>>> >>> > programs and which is written in c,is renamed to >> >> >> >>>> >>> > .CPP,we get >> >> >> >>>> >>> > these >> >> >> >>>> >>> > relocation issues in-spite of not using any C++ >> >> >> >>>> >>> > runtime >> >> >> >>>> >>> > API's. >> >> >> >>>> >>> > >> >> >> >>>> >>> >> >> >> >>>> >>> In UDK or EDK2? >> >> >> >>>> >>> >> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >> >> >> >>>> >>> > ard.biesheuvel@linaro.org >> >> >> >>>> >>> > wrote: >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >> >> >> >>>> >>> >> wrote: >> >> >> >>>> >>> >> > Hi Ard, >> >> >> >>>> >>> >> > >> >> >> >>>> >>> >> > Hope you remember we speaking about the 0x105 >> >> >> >>>> >>> >> > and >> >> >> >>>> >>> >> > 0x0 >> >> >> >>>> >>> >> > relocation >> >> >> >>>> >>> >> > issues >> >> >> >>>> >>> >> > which we came across while compiling a simple >> >> >> >>>> >>> >> > HelloWorld >> >> >> >>>> >>> >> > program >> >> >> >>>> >>> >> > in >> >> >> >>>> >>> >> > CPP.As >> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing >> >> >> >>>> >>> >> > list)we >> >> >> >>>> >>> >> > need >> >> >> >>>> >>> >> > some >> >> >> >>>> >>> >> > changes >> >> >> >>>> >>> >> > to >> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we take >> >> >> >>>> >>> >> > the >> >> >> >>>> >>> >> > required >> >> >> >>>> >>> >> > changes >> >> >> >>>> >>> >> > forward >> >> >> >>>> >>> >> > and come up with a UDK with this support? >> >> >> >>>> >>> >> > >> >> >> >>>> >>> >> > We are stuck at this juncture with this >> >> >> >>>> >>> >> > activity >> >> >> >>>> >>> >> > and >> >> >> >>>> >>> >> > would >> >> >> >>>> >>> >> > need >> >> >> >>>> >>> >> > your >> >> >> >>>> >>> >> > help >> >> >> >>>> >>> >> > badly. >> >> >> >>>> >>> >> > >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> Please forget about UDK, and rebase your work >> >> >> >>>> >>> >> onto >> >> >> >>>> >>> >> the >> >> >> >>>> >>> >> latest >> >> >> >>>> >>> >> EDK2 >> >> >> >>>> >>> >> master branch. There have been many changes to >> >> >> >>>> >>> >> the >> >> >> >>>> >>> >> way >> >> >> >>>> >>> >> relocations >> >> >> >>>> >>> >> are >> >> >> >>>> >>> >> handled, which also impose requirements at link >> >> >> >>>> >>> >> time >> >> >> >>>> >>> >> (i.e., >> >> >> >>>> >>> >> in >> >> >> >>>> >>> >> terms >> >> >> >>>> >>> >> of section alignment, and relative offset between >> >> >> >>>> >>> >> sections >> >> >> >>>> >>> >> both >> >> >> >>>> >>> >> in >> >> >> >>>> >>> >> the >> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> However, the relocation issue was due to the fact >> >> >> >>>> >>> >> that you >> >> >> >>>> >>> >> were >> >> >> >>>> >>> >> using >> >> >> >>>> >>> >> the Linux version of the C++ runtime, which you >> >> >> >>>> >>> >> cannot use >> >> >> >>>> >>> >> under >> >> >> >>>> >>> >> EDK2 >> >> >> >>>> >>> >> even if we do support those relocation types with >> >> >> >>>> >>> >> the >> >> >> >>>> >>> >> newer >> >> >> >>>> >>> >> tools. >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> Bottom line is that you need to develop your own >> >> >> >>>> >>> >> C++ >> >> >> >>>> >>> >> minimal >> >> >> >>>> >>> >> runtime >> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >> >> >> >>>> >>> >> >> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >> >> >> >>>> >>> >> > wrote: >> >> >> >>>> >>> >> >> >> >> >> >>>> >>> >> >> +Sada. >> >> >> >>>> >>> >> >> >> >> >> >>>> >>> >> >> Thanks. >> >> >> >>>> >>> >> >> >> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >> >> >> >>>> >>> >> >> Biesheuvel >> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >> >> >> >>>> >>> >> >>> >> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >> >> >> >>>> >>> >> >>> wrote: >> >> >> >>>> >>> >> >>> > Hi Daniel, >> >> >> >>>> >>> >> >>> > >> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM >> >> >> >>>> >>> >> >>> > folder >> >> >> >>>> >>> >> >>> > for >> >> >> >>>> >>> >> >>> > some >> >> >> >>>> >>> >> >>> > reason. >> >> >> >>>> >>> >> >>> > >> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, >> >> >> >>>> >>> >> >>> > Daniel >> >> >> >>>> >>> >> >>> > Samuelraj >> >> >> >>>> >>> >> >>> > wrote: >> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for X64 >> >> >> >>>> >>> >> >>> >> using >> >> >> >>>> >>> >> >>> >> UDK2014 >> >> >> >>>> >>> >> >>> >> by >> >> >> >>>> >>> >> >>> >> using >> >> >> >>>> >>> >> >>> >> Visual >> >> >> >>>> >>> >> >>> >> Studio. >> >> >> >>>> >>> >> >>> >> >> >> >> >>>> >>> >> >>> >> How do we compile the same source for >> >> >> >>>> >>> >> >>> >> AARCH64? >> >> >> >>>> >>> >> >>> >> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >> >> >> >>>> >>> >> >>> unsupported, >> >> >> >>>> >>> >> >>> and is >> >> >> >>>> >>> >> >>> going >> >> >> >>>> >>> >> >>> to >> >> >> >>>> >>> >> >>> be >> >> >> >>>> >>> >> >>> quite a challenge to implement. Note that you >> >> >> >>>> >>> >> >>> cannot >> >> >> >>>> >>> >> >>> rely >> >> >> >>>> >>> >> >>> on >> >> >> >>>> >>> >> >>> the >> >> >> >>>> >>> >> >>> C++ >> >> >> >>>> >>> >> >>> runtime for various reasons (including, but >> >> >> >>>> >>> >> >>> not >> >> >> >>>> >>> >> >>> limited >> >> >> >>>> >>> >> >>> to, >> >> >> >>>> >>> >> >>> the >> >> >> >>>> >>> >> >>> fact >> >> >> >>>> >>> >> >>> that it uses small model relocations, and is >> >> >> >>>> >>> >> >>> built >> >> >> >>>> >>> >> >>> against >> >> >> >>>> >>> >> >>> libc >> >> >> >>>> >>> >> >>> on >> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on Visual >> >> >> >>>> >>> >> >>> Studio >> >> >> >>>> >>> >> >>> for >> >> >> >>>> >>> >> >>> X64, >> >> >> >>>> >>> >> >>> since >> >> >> >>>> >>> >> >>> the code you build will try to call libc >> >> >> >>>> >>> >> >>> functions from >> >> >> >>>> >>> >> >>> the >> >> >> >>>> >>> >> >>> VC >> >> >> >>>> >>> >> >>> runtime >> >> >> >>>> >>> >> >>> library. >> >> >> >>>> >>> >> >>> >> >> >> >>>> >>> >> >>> There has been some discussion about this >> >> >> >>>> >>> >> >>> recently on >> >> >> >>>> >>> >> >>> the >> >> >> >>>> >>> >> >>> list. >> >> >> >>>> >>> >> >>> If >> >> >> >>>> >>> >> >>> you >> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and reimplement >> >> >> >>>> >>> >> >>> your >> >> >> >>>> >>> >> >>> new >> >> >> >>>> >>> >> >>> and >> >> >> >>>> >>> >> >>> delete >> >> >> >>>> >>> >> >>> operators, you may be able to build code that >> >> >> >>>> >>> >> >>> does not >> >> >> >>>> >>> >> >>> rely >> >> >> >>>> >>> >> >>> on >> >> >> >>>> >>> >> >>> advanced C++ runtime features. >> >> >> >>>> >>> >> >>> >> >> >> >>>> >>> >> >>> -- >> >> >> >>>> >>> >> >>> Ard. >> >> >> >>>> >>> >> >> >> >> >> >>>> >>> >> >> >> >> >> >>>> >>> >> > >> >> >> >>>> >>> > >> >> >> >>>> >>> > >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> > >> >> >> >>> >> >> >> >>> >> >> > >> >> > >> > >> > > >
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 4 February 2016 at 20:41, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt section
relative // relocations when emitting relocation sections into
fully
linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -Wno-unused-but-set-variable -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
-Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
--start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
I tried building the EDK2 with the below configuration and ended up with the same result as before.Would try out the scenario with GCC4.9/GCC4.8 compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let you know the results.
Thanks.
On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > Ard, > Below is my configuration > > ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc > TARGET = RELEASE > TARGET_ARCH = AARCH64 > TOOL_CHAIN_CONF = Conf/tools_def.txt > TOOL_CHAIN_TAG = GCC49 > > And GCC5.0.0 compiler is being used to compile the code or you want > me to > use the GCC4.9 compiler to compile as well? > > Thanks. > > On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR > ravikanth.mvr@broadcom.com wrote: >> >> OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me
if
>> I >> am wrong. >> >> Thanks. >> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org wrote: >>> >>> On 2 February 2016 at 16:23, Ravikanth MVR >>> ravikanth.mvr@broadcom.com >>> wrote: >>> > Ard, >>> > >>> > I have been using GCC5.0.0(Experimental version). >>> > >>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >>> > (experimental) >>> > >>> > I would try with GCC49/48 and let you know. >>> > >>> >>> I don't mean the actual compiler, I mean the toolchain definition >>> in >>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are >>> suitable for building AArch64. You should use GCC48 or GCC49 >>> instead >>> >>> -- >>> Ard. >>> >>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>> > ard.biesheuvel@linaro.org >>> > wrote: >>> >> >>> >> It looks like you are using the wrong compiler. You should use >>> >> GCC48 >>> >> or GCC49 instead. >>> >> >>> >> >>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>> >> ravikanth.mvr@broadcom.com >>> >> wrote: >>> >> > Thanks Ard!I followed the steps and I could find out that NO >>> >> > standard >>> >> > library was included.Below is the list of libraries that
were
>>> >> > getting >>> >> > included. >>> >> > >>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >>> >> > HelloWorld.lib(AutoGen.obj) >>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >>> >> > >>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
>>> >> > UefiLib.lib(UefiLib.obj) >>> >> > >>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
>>> >> > BasePrintLib.lib(PrintLib.obj) >>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>> >> > BaseLib.lib(CpuDeadLoop.obj) >>> >> > BaseLib.lib(String.obj) >>> >> > BaseLib.lib(Unaligned.obj) >>> >> > BaseLib.lib(Math64.obj) >>> >> > >>> >> > I have included .map file as well with this mail. >>> >> > >>> >> > Thanks. >>> >> > >>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>> >> > ard.biesheuvel@linaro.org >>> >> > wrote: >>> >> >> >>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>> >> >> ravikanth.mvr@avagotech.com wrote: >>> >> >> > Ard, >>> >> >> > >>> >> >> > I understand that we have to implement alternative C++ >>> >> >> > runtime >>> >> >> > API >>> >> >> > which >>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >>> >> >> > FreePool. >>> >> >> > >>> >> >> > I did implement alternative new and delete API's,which
uses
>>> >> >> > AllocatePool >>> >> >> > and >>> >> >> > FreePool,for OUR code and most of the relocation errors
had
>>> >> >> > gone.BUT >>> >> >> > when >>> >> >> > the CPP program(HelloWorld) under compilation doesn't
even
>>> >> >> > call >>> >> >> > the >>> >> >> > C++ >>> >> >> > runtime API's,why are we seeing these errors?-This is
what
>>> >> >> > I am >>> >> >> > trying >>> >> >> > to >>> >> >> > understand. >>> >> >> > >>> >> >> >>> >> >> If you add a -Map xxx.map option to the linker command, you >>> >> >> will >>> >> >> get a >>> >> >> map file that tells you exactly which object was included
in
>>> >> >> the >>> >> >> link, >>> >> >> and why (iow, which symbol dependency it satisfies) That
way,
>>> >> >> you >>> >> >> will >>> >> >> be able to figure out which standard library is included,
and
>>> >> >> for >>> >> >> which reason. >>> >> >> >>> >> >> > Thanks. >>> >> >> > ________________________________ >>> >> >> > From: Ard Biesheuvel >>> >> >> > Sent: 01-02-2016 12:31 >>> >> >> > To: M.V.R. Ravikanth >>> >> >> > >>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang;
Linaro
>>> >> >> > UEFI >>> >> >> > Mailman >>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>> >> >> > >>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>> >> >> > ravikanth.mvr@avagotech.com wrote: >>> >> >> >> Ard, >>> >> >> >> I would try to explain here, >>> >> >> >> >>> >> >> >> 1.Till now we have been compiling CPP programs in UDK
with
>>> >> >> >> VS2005/VS2008 >>> >> >> >> as >>> >> >> >> toolchain and it worked well. >>> >> >> >> >>> >> >> >> 2.Now,we have a requirement to support AARCH64 >>> >> >> >> architecture >>> >> >> >> with >>> >> >> >> ARMGCC >>> >> >> >> as >>> >> >> >> the toolchain.But when we tried to compile our CPP >>> >> >> >> code/Sample >>> >> >> >> HelloWorld >>> >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) >>> >> >> >> with >>> >> >> >> ARMGCC >>> >> >> >> as >>> >> >> >> toolchain,we were seeing relocation errors such as
0x105.
>>> >> >> >> >>> >> >> >> 3.As advised by you,we tried compiling a sample
HelloWorld
>>> >> >> >> CPP >>> >> >> >> program >>> >> >> >> under >>> >> >> >> EDK2 and still we are seeing the same relocation errors. >>> >> >> >> >>> >> >> >> Questions: >>> >> >> >> >>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to >>> >> >> >> resolve the >>> >> >> >> relocation errors we are observing? >>> >> >> >> >>> >> >> >> Please correct me,if I have missed something. >>> >> >> >> >>> >> >> > >>> >> >> > The relocation errors are a symptom of the fact that you >>> >> >> > are >>> >> >> > trying >>> >> >> > to >>> >> >> > link the Linux specific C++ runtime into your EDK2
binary.
>>> >> >> > This >>> >> >> > is a >>> >> >> > pointless exercise, since the Linux C++ runtime is >>> >> >> > fundamentally >>> >> >> > incompatible with EDK2, So please, don't ask any more >>> >> >> > questions >>> >> >> > about >>> >> >> > relocation errors, and focus on implementing an
alternative
>>> >> >> > C++ >>> >> >> > runtime that maps calls to new() and delete() onto EDK2 >>> >> >> > APIs, >>> >> >> > i.e., >>> >> >> > AllocatePool and FreePool. Note that you will still have >>> >> >> > problems >>> >> >> > with >>> >> >> > symbol decoration, since EDK2 header file don't have >>> >> >> > 'extern >>> >> >> > "C"' >>> >> >> > qualifiers around C declarations. >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> >> ________________________________ >>> >> >> >> From: Ard Biesheuvel >>> >> >> >> Sent: 01-02-2016 11:59 >>> >> >> >> To: Ravikanth MVR >>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang;
Linaro
>>> >> >> >> UEFI >>> >> >> >> Mailman >>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>> >> >> >> >>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>> >> >> >> ravikanth.mvr@avagotech.com >>> >> >> >> wrote: >>> >> >> >>> +Unni. >>> >> >> >>> >>> >> >> >>> Ard, >>> >> >> >>> I have done a native compilation with EDK2 and I am >>> >> >> >>> facing >>> >> >> >>> same >>> >> >> >>> issues >>> >> >> >>> as >>> >> >> >>> I >>> >> >> >>> did before.Below is the snapshot of the errors I >>> >> >> >>> received. >>> >> >> >>> >>> >> >> >> >>> >> >> >> I have explained twice already why C++ under EDK2 is not >>> >> >> >> going >>> >> >> >> to >>> >> >> >> work. What exactly were you expecting? >>> >> >> >> -- >>> >> >> >> Ard. >>> >> >> >> >>> >> >> >> >>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >> >> >>> WriteSections64(): >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >> >> >>> make: *** >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>>> >> >> >>> Error 2 >>> >> >> >>> WriteRelocations64(): >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> build.py... >>> >> >> >>> : error 7000: Failed to execute command >>> >> >> >>> make --no-print-directory all >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>> >>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>>> >> >> >>> >>> >> >> >>> - Failed - >>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>> >> >> >>> Build total time: 00:00:15 >>> >> >> >>> >>> >> >> >>> Thanks >>> >> >> >>> Ravi >>> >> >> >>> >>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>> >> >> >>> ard.biesheuvel@linaro.org >>> >> >> >>> wrote: >>> >> >> >>>> >>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>> >> >> >>>> ravikanth.mvr@avagotech.com >>> >> >> >>>> wrote: >>> >> >> >>>> > Ard, >>> >> >> >>>> > I was trying to compile and generate helloworld >>> >> >> >>>> > application via >>> >> >> >>>> > EDK2.Under >>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not >>> >> >> >>>> > find >>> >> >> >>>> > "Win32" >>> >> >> >>>> > directory >>> >> >> >>>> > which has GenFw utility.But the UDK package has
Win32
>>> >> >> >>>> > directory. >>> >> >> >>>> > >>> >> >> >>>> > Could you let me know on how to build and EDK2
package
>>> >> >> >>>> > in >>> >> >> >>>> > Windows >>> >> >> >>>> > or >>> >> >> >>>> > else Am >>> >> >> >>>> > I missing something here? >>> >> >> >>>> > >>> >> >> >>>> >>> >> >> >>>> I haven't used Windows for software development work
in
>>> >> >> >>>> 15 >>> >> >> >>>> years, >>> >> >> >>>> so >>> >> >> >>>> I >>> >> >> >>>> am really not the person you should be asking this. >>> >> >> >>>> >>> >> >> >>>> -- >>> >> >> >>>> Ard. >>> >> >> >>>> >>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>> >> >> >>>> > ravikanth.mvr@avagotech.com >>> >> >> >>>> > wrote: >>> >> >> >>>> >> >>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the >>> >> >> >>>> >> results. >>> >> >> >>>> >> >>> >> >> >>>> >> Thanks. >>> >> >> >>>> >> >>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>> >> >> >>>> >>> >>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>> >> >> >>>> >>> wrote: >>> >> >> >>>> >>> > Ard, >>> >> >> >>>> >>> > >>> >> >> >>>> >>> > OK.But when a simple HelloWorld program,which is >>> >> >> >>>> >>> > part >>> >> >> >>>> >>> > of >>> >> >> >>>> >>> > EDK2 >>> >> >> >>>> >>> > sample >>> >> >> >>>> >>> > programs and which is written in c,is renamed to >>> >> >> >>>> >>> > .CPP,we get >>> >> >> >>>> >>> > these >>> >> >> >>>> >>> > relocation issues in-spite of not using any C++ >>> >> >> >>>> >>> > runtime >>> >> >> >>>> >>> > API's. >>> >> >> >>>> >>> > >>> >> >> >>>> >>> >>> >> >> >>>> >>> In UDK or EDK2? >>> >> >> >>>> >>> >>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>> >> >> >>>> >>> > wrote: >>> >> >> >>>> >>> >> >>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>> >> >> >>>> >>> >> wrote: >>> >> >> >>>> >>> >> > Hi Ard, >>> >> >> >>>> >>> >> > >>> >> >> >>>> >>> >> > Hope you remember we speaking about the 0x105 >>> >> >> >>>> >>> >> > and >>> >> >> >>>> >>> >> > 0x0 >>> >> >> >>>> >>> >> > relocation >>> >> >> >>>> >>> >> > issues >>> >> >> >>>> >>> >> > which we came across while compiling a simple >>> >> >> >>>> >>> >> > HelloWorld >>> >> >> >>>> >>> >> > program >>> >> >> >>>> >>> >> > in >>> >> >> >>>> >>> >> > CPP.As >>> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing >>> >> >> >>>> >>> >> > list)we >>> >> >> >>>> >>> >> > need >>> >> >> >>>> >>> >> > some >>> >> >> >>>> >>> >> > changes >>> >> >> >>>> >>> >> > to >>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we take >>> >> >> >>>> >>> >> > the >>> >> >> >>>> >>> >> > required >>> >> >> >>>> >>> >> > changes >>> >> >> >>>> >>> >> > forward >>> >> >> >>>> >>> >> > and come up with a UDK with this support? >>> >> >> >>>> >>> >> > >>> >> >> >>>> >>> >> > We are stuck at this juncture with this >>> >> >> >>>> >>> >> > activity >>> >> >> >>>> >>> >> > and >>> >> >> >>>> >>> >> > would >>> >> >> >>>> >>> >> > need >>> >> >> >>>> >>> >> > your >>> >> >> >>>> >>> >> > help >>> >> >> >>>> >>> >> > badly. >>> >> >> >>>> >>> >> > >>> >> >> >>>> >>> >> >>> >> >> >>>> >>> >> Please forget about UDK, and rebase your work >>> >> >> >>>> >>> >> onto >>> >> >> >>>> >>> >> the >>> >> >> >>>> >>> >> latest >>> >> >> >>>> >>> >> EDK2 >>> >> >> >>>> >>> >> master branch. There have been many changes to >>> >> >> >>>> >>> >> the >>> >> >> >>>> >>> >> way >>> >> >> >>>> >>> >> relocations >>> >> >> >>>> >>> >> are >>> >> >> >>>> >>> >> handled, which also impose requirements at link >>> >> >> >>>> >>> >> time >>> >> >> >>>> >>> >> (i.e., >>> >> >> >>>> >>> >> in >>> >> >> >>>> >>> >> terms >>> >> >> >>>> >>> >> of section alignment, and relative offset
between
>>> >> >> >>>> >>> >> sections >>> >> >> >>>> >>> >> both >>> >> >> >>>> >>> >> in >>> >> >> >>>> >>> >> the >>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >>> >> >> >>>> >>> >> >>> >> >> >>>> >>> >> However, the relocation issue was due to the
fact
>>> >> >> >>>> >>> >> that you >>> >> >> >>>> >>> >> were >>> >> >> >>>> >>> >> using >>> >> >> >>>> >>> >> the Linux version of the C++ runtime, which you >>> >> >> >>>> >>> >> cannot use >>> >> >> >>>> >>> >> under >>> >> >> >>>> >>> >> EDK2 >>> >> >> >>>> >>> >> even if we do support those relocation types
with
>>> >> >> >>>> >>> >> the >>> >> >> >>>> >>> >> newer >>> >> >> >>>> >>> >> tools. >>> >> >> >>>> >>> >> >>> >> >> >>>> >>> >> Bottom line is that you need to develop your
own
>>> >> >> >>>> >>> >> C++ >>> >> >> >>>> >>> >> minimal >>> >> >> >>>> >>> >> runtime >>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >>> >> >> >>>> >>> >> >>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth MVR >>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>> >> >> >>>> >>> >> > wrote: >>> >> >> >>>> >>> >> >> >>> >> >> >>>> >>> >> >> +Sada. >>> >> >> >>>> >>> >> >> >>> >> >> >>>> >>> >> >> Thanks. >>> >> >> >>>> >>> >> >> >>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >>> >> >> >>>> >>> >> >> Biesheuvel >>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>> >> >> >>>> >>> >> >>> >>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif Lindholm >>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>> >> >> >>>> >>> >> >>> wrote: >>> >> >> >>>> >>> >> >>> > Hi Daniel, >>> >> >> >>>> >>> >> >>> > >>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM >>> >> >> >>>> >>> >> >>> > folder >>> >> >> >>>> >>> >> >>> > for >>> >> >> >>>> >>> >> >>> > some >>> >> >> >>>> >>> >> >>> > reason. >>> >> >> >>>> >>> >> >>> > >>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM -0500, >>> >> >> >>>> >>> >> >>> > Daniel >>> >> >> >>>> >>> >> >>> > Samuelraj >>> >> >> >>>> >>> >> >>> > wrote: >>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for X64 >>> >> >> >>>> >>> >> >>> >> using >>> >> >> >>>> >>> >> >>> >> UDK2014 >>> >> >> >>>> >>> >> >>> >> by >>> >> >> >>>> >>> >> >>> >> using >>> >> >> >>>> >>> >> >>> >> Visual >>> >> >> >>>> >>> >> >>> >> Studio. >>> >> >> >>>> >>> >> >>> >> >>> >> >> >>>> >>> >> >>> >> How do we compile the same source for >>> >> >> >>>> >>> >> >>> >> AARCH64? >>> >> >> >>>> >>> >> >>> >>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >>> >> >> >>>> >>> >> >>> unsupported, >>> >> >> >>>> >>> >> >>> and is >>> >> >> >>>> >>> >> >>> going >>> >> >> >>>> >>> >> >>> to >>> >> >> >>>> >>> >> >>> be >>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note that
you
>>> >> >> >>>> >>> >> >>> cannot >>> >> >> >>>> >>> >> >>> rely >>> >> >> >>>> >>> >> >>> on >>> >> >> >>>> >>> >> >>> the >>> >> >> >>>> >>> >> >>> C++ >>> >> >> >>>> >>> >> >>> runtime for various reasons (including, but >>> >> >> >>>> >>> >> >>> not >>> >> >> >>>> >>> >> >>> limited >>> >> >> >>>> >>> >> >>> to, >>> >> >> >>>> >>> >> >>> the >>> >> >> >>>> >>> >> >>> fact >>> >> >> >>>> >>> >> >>> that it uses small model relocations, and
is
>>> >> >> >>>> >>> >> >>> built >>> >> >> >>>> >>> >> >>> against >>> >> >> >>>> >>> >> >>> libc >>> >> >> >>>> >>> >> >>> on >>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on
Visual
>>> >> >> >>>> >>> >> >>> Studio >>> >> >> >>>> >>> >> >>> for >>> >> >> >>>> >>> >> >>> X64, >>> >> >> >>>> >>> >> >>> since >>> >> >> >>>> >>> >> >>> the code you build will try to call libc >>> >> >> >>>> >>> >> >>> functions from >>> >> >> >>>> >>> >> >>> the >>> >> >> >>>> >>> >> >>> VC >>> >> >> >>>> >>> >> >>> runtime >>> >> >> >>>> >>> >> >>> library. >>> >> >> >>>> >>> >> >>> >>> >> >> >>>> >>> >> >>> There has been some discussion about this >>> >> >> >>>> >>> >> >>> recently on >>> >> >> >>>> >>> >> >>> the >>> >> >> >>>> >>> >> >>> list. >>> >> >> >>>> >>> >> >>> If >>> >> >> >>>> >>> >> >>> you >>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and
reimplement
>>> >> >> >>>> >>> >> >>> your >>> >> >> >>>> >>> >> >>> new >>> >> >> >>>> >>> >> >>> and >>> >> >> >>>> >>> >> >>> delete >>> >> >> >>>> >>> >> >>> operators, you may be able to build code
that
>>> >> >> >>>> >>> >> >>> does not >>> >> >> >>>> >>> >> >>> rely >>> >> >> >>>> >>> >> >>> on >>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>> >> >> >>>> >>> >> >>> >>> >> >> >>>> >>> >> >>> -- >>> >> >> >>>> >>> >> >>> Ard. >>> >> >> >>>> >>> >> >> >>> >> >> >>>> >>> >> >> >>> >> >> >>>> >>> >> > >>> >> >> >>>> >>> > >>> >> >> >>>> >>> > >>> >> >> >>>> >> >>> >> >> >>>> >> >>> >> >> >>>> > >>> >> >> >>> >>> >> >> >>> >>> >> > >>> >> > >>> > >>> > >> >> >
On 5 February 2016 at 15:36, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
I am seeing '-Ttext=0x0' in your LD command line, and that was removed months ago. So either your branch is old, or your Conf/tools_def.txt is out of date (You can just delete it and re-run 'source edksetup.sh' just to be sure.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt
section relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -Wno-unused-but-set-variable -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map --start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > Ard, > > I tried building the EDK2 with the below configuration and ended up > with > the same result as before.Would try out the scenario with > GCC4.9/GCC4.8 > compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let > you know > the results. > > Thanks. > > On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR > ravikanth.mvr@broadcom.com wrote: >> >> Ard, >> Below is my configuration >> >> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >> TARGET = RELEASE >> TARGET_ARCH = AARCH64 >> TOOL_CHAIN_CONF = Conf/tools_def.txt >> TOOL_CHAIN_TAG = GCC49 >> >> And GCC5.0.0 compiler is being used to compile the code or you >> want >> me to >> use the GCC4.9 compiler to compile as well? >> >> Thanks. >> >> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >> ravikanth.mvr@broadcom.com wrote: >>> >>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct me >>> if >>> I >>> am wrong. >>> >>> Thanks. >>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >>> ard.biesheuvel@linaro.org wrote: >>>> >>>> On 2 February 2016 at 16:23, Ravikanth MVR >>>> ravikanth.mvr@broadcom.com >>>> wrote: >>>> > Ard, >>>> > >>>> > I have been using GCC5.0.0(Experimental version). >>>> > >>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >>>> > (experimental) >>>> > >>>> > I would try with GCC49/48 and let you know. >>>> > >>>> >>>> I don't mean the actual compiler, I mean the toolchain >>>> definition >>>> in >>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are >>>> suitable for building AArch64. You should use GCC48 or GCC49 >>>> instead >>>> >>>> -- >>>> Ard. >>>> >>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>>> > ard.biesheuvel@linaro.org >>>> > wrote: >>>> >> >>>> >> It looks like you are using the wrong compiler. You should >>>> >> use >>>> >> GCC48 >>>> >> or GCC49 instead. >>>> >> >>>> >> >>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>>> >> ravikanth.mvr@broadcom.com >>>> >> wrote: >>>> >> > Thanks Ard!I followed the steps and I could find out that >>>> >> > NO >>>> >> > standard >>>> >> > library was included.Below is the list of libraries that >>>> >> > were >>>> >> > getting >>>> >> > included. >>>> >> > >>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >>>> >> > HelloWorld.lib(AutoGen.obj) >>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >>>> >> > >>>> >> > >>>> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >>>> >> > UefiLib.lib(UefiLib.obj) >>>> >> > >>>> >> > >>>> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >>>> >> > BasePrintLib.lib(PrintLib.obj) >>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>>> >> > BaseLib.lib(CpuDeadLoop.obj) >>>> >> > BaseLib.lib(String.obj) >>>> >> > BaseLib.lib(Unaligned.obj) >>>> >> > BaseLib.lib(Math64.obj) >>>> >> > >>>> >> > I have included .map file as well with this mail. >>>> >> > >>>> >> > Thanks. >>>> >> > >>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>>> >> > ard.biesheuvel@linaro.org >>>> >> > wrote: >>>> >> >> >>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>>> >> >> ravikanth.mvr@avagotech.com wrote: >>>> >> >> > Ard, >>>> >> >> > >>>> >> >> > I understand that we have to implement alternative C++ >>>> >> >> > runtime >>>> >> >> > API >>>> >> >> > which >>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >>>> >> >> > FreePool. >>>> >> >> > >>>> >> >> > I did implement alternative new and delete API's,which >>>> >> >> > uses >>>> >> >> > AllocatePool >>>> >> >> > and >>>> >> >> > FreePool,for OUR code and most of the relocation errors >>>> >> >> > had >>>> >> >> > gone.BUT >>>> >> >> > when >>>> >> >> > the CPP program(HelloWorld) under compilation doesn't >>>> >> >> > even >>>> >> >> > call >>>> >> >> > the >>>> >> >> > C++ >>>> >> >> > runtime API's,why are we seeing these errors?-This is >>>> >> >> > what >>>> >> >> > I am >>>> >> >> > trying >>>> >> >> > to >>>> >> >> > understand. >>>> >> >> > >>>> >> >> >>>> >> >> If you add a -Map xxx.map option to the linker command, >>>> >> >> you >>>> >> >> will >>>> >> >> get a >>>> >> >> map file that tells you exactly which object was included >>>> >> >> in >>>> >> >> the >>>> >> >> link, >>>> >> >> and why (iow, which symbol dependency it satisfies) That >>>> >> >> way, >>>> >> >> you >>>> >> >> will >>>> >> >> be able to figure out which standard library is included, >>>> >> >> and >>>> >> >> for >>>> >> >> which reason. >>>> >> >> >>>> >> >> > Thanks. >>>> >> >> > ________________________________ >>>> >> >> > From: Ard Biesheuvel >>>> >> >> > Sent: 01-02-2016 12:31 >>>> >> >> > To: M.V.R. Ravikanth >>>> >> >> > >>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >>>> >> >> > Linaro >>>> >> >> > UEFI >>>> >> >> > Mailman >>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>> >> >> > >>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>>> >> >> > ravikanth.mvr@avagotech.com wrote: >>>> >> >> >> Ard, >>>> >> >> >> I would try to explain here, >>>> >> >> >> >>>> >> >> >> 1.Till now we have been compiling CPP programs in UDK >>>> >> >> >> with >>>> >> >> >> VS2005/VS2008 >>>> >> >> >> as >>>> >> >> >> toolchain and it worked well. >>>> >> >> >> >>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >>>> >> >> >> architecture >>>> >> >> >> with >>>> >> >> >> ARMGCC >>>> >> >> >> as >>>> >> >> >> the toolchain.But when we tried to compile our CPP >>>> >> >> >> code/Sample >>>> >> >> >> HelloWorld >>>> >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) >>>> >> >> >> with >>>> >> >> >> ARMGCC >>>> >> >> >> as >>>> >> >> >> toolchain,we were seeing relocation errors such as >>>> >> >> >> 0x105. >>>> >> >> >> >>>> >> >> >> 3.As advised by you,we tried compiling a sample >>>> >> >> >> HelloWorld >>>> >> >> >> CPP >>>> >> >> >> program >>>> >> >> >> under >>>> >> >> >> EDK2 and still we are seeing the same relocation >>>> >> >> >> errors. >>>> >> >> >> >>>> >> >> >> Questions: >>>> >> >> >> >>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to >>>> >> >> >> resolve the >>>> >> >> >> relocation errors we are observing? >>>> >> >> >> >>>> >> >> >> Please correct me,if I have missed something. >>>> >> >> >> >>>> >> >> > >>>> >> >> > The relocation errors are a symptom of the fact that you >>>> >> >> > are >>>> >> >> > trying >>>> >> >> > to >>>> >> >> > link the Linux specific C++ runtime into your EDK2 >>>> >> >> > binary. >>>> >> >> > This >>>> >> >> > is a >>>> >> >> > pointless exercise, since the Linux C++ runtime is >>>> >> >> > fundamentally >>>> >> >> > incompatible with EDK2, So please, don't ask any more >>>> >> >> > questions >>>> >> >> > about >>>> >> >> > relocation errors, and focus on implementing an >>>> >> >> > alternative >>>> >> >> > C++ >>>> >> >> > runtime that maps calls to new() and delete() onto EDK2 >>>> >> >> > APIs, >>>> >> >> > i.e., >>>> >> >> > AllocatePool and FreePool. Note that you will still have >>>> >> >> > problems >>>> >> >> > with >>>> >> >> > symbol decoration, since EDK2 header file don't have >>>> >> >> > 'extern >>>> >> >> > "C"' >>>> >> >> > qualifiers around C declarations. >>>> >> >> > >>>> >> >> > >>>> >> >> > >>>> >> >> >> ________________________________ >>>> >> >> >> From: Ard Biesheuvel >>>> >> >> >> Sent: 01-02-2016 11:59 >>>> >> >> >> To: Ravikanth MVR >>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >>>> >> >> >> Linaro >>>> >> >> >> UEFI >>>> >> >> >> Mailman >>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>> >> >> >> >>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>>> >> >> >> ravikanth.mvr@avagotech.com >>>> >> >> >> wrote: >>>> >> >> >>> +Unni. >>>> >> >> >>> >>>> >> >> >>> Ard, >>>> >> >> >>> I have done a native compilation with EDK2 and I am >>>> >> >> >>> facing >>>> >> >> >>> same >>>> >> >> >>> issues >>>> >> >> >>> as >>>> >> >> >>> I >>>> >> >> >>> did before.Below is the snapshot of the errors I >>>> >> >> >>> received. >>>> >> >> >>> >>>> >> >> >> >>>> >> >> >> I have explained twice already why C++ under EDK2 is >>>> >> >> >> not >>>> >> >> >> going >>>> >> >> >> to >>>> >> >> >> work. What exactly were you expecting? >>>> >> >> >> -- >>>> >> >> >> Ard. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>> >> >> >>> WriteSections64(): >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>> >> >> >>> make: *** >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >>>> >> >> >>> Error 2 >>>> >> >> >>> WriteRelocations64(): >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> build.py... >>>> >> >> >>> : error 7000: Failed to execute command >>>> >> >> >>> make --no-print-directory all >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >>>> >> >> >>> >>>> >> >> >>> - Failed - >>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>>> >> >> >>> Build total time: 00:00:15 >>>> >> >> >>> >>>> >> >> >>> Thanks >>>> >> >> >>> Ravi >>>> >> >> >>> >>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>>> >> >> >>> ard.biesheuvel@linaro.org >>>> >> >> >>> wrote: >>>> >> >> >>>> >>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>>> >> >> >>>> ravikanth.mvr@avagotech.com >>>> >> >> >>>> wrote: >>>> >> >> >>>> > Ard, >>>> >> >> >>>> > I was trying to compile and generate helloworld >>>> >> >> >>>> > application via >>>> >> >> >>>> > EDK2.Under >>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not >>>> >> >> >>>> > find >>>> >> >> >>>> > "Win32" >>>> >> >> >>>> > directory >>>> >> >> >>>> > which has GenFw utility.But the UDK package has >>>> >> >> >>>> > Win32 >>>> >> >> >>>> > directory. >>>> >> >> >>>> > >>>> >> >> >>>> > Could you let me know on how to build and EDK2 >>>> >> >> >>>> > package >>>> >> >> >>>> > in >>>> >> >> >>>> > Windows >>>> >> >> >>>> > or >>>> >> >> >>>> > else Am >>>> >> >> >>>> > I missing something here? >>>> >> >> >>>> > >>>> >> >> >>>> >>>> >> >> >>>> I haven't used Windows for software development work >>>> >> >> >>>> in >>>> >> >> >>>> 15 >>>> >> >> >>>> years, >>>> >> >> >>>> so >>>> >> >> >>>> I >>>> >> >> >>>> am really not the person you should be asking this. >>>> >> >> >>>> >>>> >> >> >>>> -- >>>> >> >> >>>> Ard. >>>> >> >> >>>> >>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>>> >> >> >>>> > ravikanth.mvr@avagotech.com >>>> >> >> >>>> > wrote: >>>> >> >> >>>> >> >>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the >>>> >> >> >>>> >> results. >>>> >> >> >>>> >> >>>> >> >> >>>> >> Thanks. >>>> >> >> >>>> >> >>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> wrote: >>>> >> >> >>>> >>> > Ard, >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> > OK.But when a simple HelloWorld program,which >>>> >> >> >>>> >>> > is >>>> >> >> >>>> >>> > part >>>> >> >> >>>> >>> > of >>>> >> >> >>>> >>> > EDK2 >>>> >> >> >>>> >>> > sample >>>> >> >> >>>> >>> > programs and which is written in c,is renamed >>>> >> >> >>>> >>> > to >>>> >> >> >>>> >>> > .CPP,we get >>>> >> >> >>>> >>> > these >>>> >> >> >>>> >>> > relocation issues in-spite of not using any C++ >>>> >> >> >>>> >>> > runtime >>>> >> >> >>>> >>> > API's. >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> In UDK or EDK2? >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>>> >> >> >>>> >>> > wrote: >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> >> wrote: >>>> >> >> >>>> >>> >> > Hi Ard, >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> > Hope you remember we speaking about the >>>> >> >> >>>> >>> >> > 0x105 >>>> >> >> >>>> >>> >> > and >>>> >> >> >>>> >>> >> > 0x0 >>>> >> >> >>>> >>> >> > relocation >>>> >> >> >>>> >>> >> > issues >>>> >> >> >>>> >>> >> > which we came across while compiling a >>>> >> >> >>>> >>> >> > simple >>>> >> >> >>>> >>> >> > HelloWorld >>>> >> >> >>>> >>> >> > program >>>> >> >> >>>> >>> >> > in >>>> >> >> >>>> >>> >> > CPP.As >>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing >>>> >> >> >>>> >>> >> > list)we >>>> >> >> >>>> >>> >> > need >>>> >> >> >>>> >>> >> > some >>>> >> >> >>>> >>> >> > changes >>>> >> >> >>>> >>> >> > to >>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we >>>> >> >> >>>> >>> >> > take >>>> >> >> >>>> >>> >> > the >>>> >> >> >>>> >>> >> > required >>>> >> >> >>>> >>> >> > changes >>>> >> >> >>>> >>> >> > forward >>>> >> >> >>>> >>> >> > and come up with a UDK with this support? >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> > We are stuck at this juncture with this >>>> >> >> >>>> >>> >> > activity >>>> >> >> >>>> >>> >> > and >>>> >> >> >>>> >>> >> > would >>>> >> >> >>>> >>> >> > need >>>> >> >> >>>> >>> >> > your >>>> >> >> >>>> >>> >> > help >>>> >> >> >>>> >>> >> > badly. >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your work >>>> >> >> >>>> >>> >> onto >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> latest >>>> >> >> >>>> >>> >> EDK2 >>>> >> >> >>>> >>> >> master branch. There have been many changes to >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> way >>>> >> >> >>>> >>> >> relocations >>>> >> >> >>>> >>> >> are >>>> >> >> >>>> >>> >> handled, which also impose requirements at >>>> >> >> >>>> >>> >> link >>>> >> >> >>>> >>> >> time >>>> >> >> >>>> >>> >> (i.e., >>>> >> >> >>>> >>> >> in >>>> >> >> >>>> >>> >> terms >>>> >> >> >>>> >>> >> of section alignment, and relative offset >>>> >> >> >>>> >>> >> between >>>> >> >> >>>> >>> >> sections >>>> >> >> >>>> >>> >> both >>>> >> >> >>>> >>> >> in >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> However, the relocation issue was due to the >>>> >> >> >>>> >>> >> fact >>>> >> >> >>>> >>> >> that you >>>> >> >> >>>> >>> >> were >>>> >> >> >>>> >>> >> using >>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, which >>>> >> >> >>>> >>> >> you >>>> >> >> >>>> >>> >> cannot use >>>> >> >> >>>> >>> >> under >>>> >> >> >>>> >>> >> EDK2 >>>> >> >> >>>> >>> >> even if we do support those relocation types >>>> >> >> >>>> >>> >> with >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> newer >>>> >> >> >>>> >>> >> tools. >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> Bottom line is that you need to develop your >>>> >> >> >>>> >>> >> own >>>> >> >> >>>> >>> >> C++ >>>> >> >> >>>> >>> >> minimal >>>> >> >> >>>> >>> >> runtime >>>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth >>>> >> >> >>>> >>> >> > MVR >>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> >> > wrote: >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> +Sada. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> Thanks. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >>>> >> >> >>>> >>> >> >> Biesheuvel >>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif >>>> >> >> >>>> >>> >> >>> Lindholm >>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>>> >> >> >>>> >>> >> >>> wrote: >>>> >> >> >>>> >>> >> >>> > Hi Daniel, >>>> >> >> >>>> >>> >> >>> > >>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM >>>> >> >> >>>> >>> >> >>> > folder >>>> >> >> >>>> >>> >> >>> > for >>>> >> >> >>>> >>> >> >>> > some >>>> >> >> >>>> >>> >> >>> > reason. >>>> >> >> >>>> >>> >> >>> > >>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM >>>> >> >> >>>> >>> >> >>> > -0500, >>>> >> >> >>>> >>> >> >>> > Daniel >>>> >> >> >>>> >>> >> >>> > Samuelraj >>>> >> >> >>>> >>> >> >>> > wrote: >>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for >>>> >> >> >>>> >>> >> >>> >> X64 >>>> >> >> >>>> >>> >> >>> >> using >>>> >> >> >>>> >>> >> >>> >> UDK2014 >>>> >> >> >>>> >>> >> >>> >> by >>>> >> >> >>>> >>> >> >>> >> using >>>> >> >> >>>> >>> >> >>> >> Visual >>>> >> >> >>>> >>> >> >>> >> Studio. >>>> >> >> >>>> >>> >> >>> >> >>>> >> >> >>>> >>> >> >>> >> How do we compile the same source for >>>> >> >> >>>> >>> >> >>> >> AARCH64? >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >>>> >> >> >>>> >>> >> >>> unsupported, >>>> >> >> >>>> >>> >> >>> and is >>>> >> >> >>>> >>> >> >>> going >>>> >> >> >>>> >>> >> >>> to >>>> >> >> >>>> >>> >> >>> be >>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note that >>>> >> >> >>>> >>> >> >>> you >>>> >> >> >>>> >>> >> >>> cannot >>>> >> >> >>>> >>> >> >>> rely >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> C++ >>>> >> >> >>>> >>> >> >>> runtime for various reasons (including, >>>> >> >> >>>> >>> >> >>> but >>>> >> >> >>>> >>> >> >>> not >>>> >> >> >>>> >>> >> >>> limited >>>> >> >> >>>> >>> >> >>> to, >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> fact >>>> >> >> >>>> >>> >> >>> that it uses small model relocations, and >>>> >> >> >>>> >>> >> >>> is >>>> >> >> >>>> >>> >> >>> built >>>> >> >> >>>> >>> >> >>> against >>>> >> >> >>>> >>> >> >>> libc >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on >>>> >> >> >>>> >>> >> >>> Visual >>>> >> >> >>>> >>> >> >>> Studio >>>> >> >> >>>> >>> >> >>> for >>>> >> >> >>>> >>> >> >>> X64, >>>> >> >> >>>> >>> >> >>> since >>>> >> >> >>>> >>> >> >>> the code you build will try to call libc >>>> >> >> >>>> >>> >> >>> functions from >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> VC >>>> >> >> >>>> >>> >> >>> runtime >>>> >> >> >>>> >>> >> >>> library. >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> There has been some discussion about this >>>> >> >> >>>> >>> >> >>> recently on >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> list. >>>> >> >> >>>> >>> >> >>> If >>>> >> >> >>>> >>> >> >>> you >>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >>>> >> >> >>>> >>> >> >>> reimplement >>>> >> >> >>>> >>> >> >>> your >>>> >> >> >>>> >>> >> >>> new >>>> >> >> >>>> >>> >> >>> and >>>> >> >> >>>> >>> >> >>> delete >>>> >> >> >>>> >>> >> >>> operators, you may be able to build code >>>> >> >> >>>> >>> >> >>> that >>>> >> >> >>>> >>> >> >>> does not >>>> >> >> >>>> >>> >> >>> rely >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> -- >>>> >> >> >>>> >>> >> >>> Ard. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> > >>>> >> >> >>>> >> >>>> >> >> >>>> >> >>>> >> >> >>>> > >>>> >> >> >>> >>>> >> >> >>> >>>> >> > >>>> >> > >>>> > >>>> > >>> >>> >> >
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets -comes up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld -I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map -z common-page-size=0x20 --start-group @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: *** [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
build.py... : error 7000: Failed to execute command make tbuild [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf [AARCH64, GCC48, RELEASE]
- Failed - Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 4 February 2016 at 20:41, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Ard,
We built the EDK2 with target set to AARCH64 and GCC48 as the toolchain.Still we are same relocation errors as before.Below is the complete snapshot of the error and map file as well.
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt
section
relative // relocations when emitting relocation sections into
fully
linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar -fno-strict-aliasing -fno-stack-protector -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -Wno-unused-but-set-variable -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/ekd2_new/MyWorkSpace/MdePkg -I/home/ekd2_new/MyWorkSpace/MdePkg/Include -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 -I/home/ekd2_new/MyWorkSpace/MdeModulePkg -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
-Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u
_ModuleEntryPoint
-e _ModuleEntryPoint -Map
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
--start-group
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group "echo" objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105. GenFw: ERROR 3000: Invalid make: ***
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2 WriteRelocations64():
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
unsupported ELF EM_AARCH64 relocation 0x105.
build.py... : error 7000: Failed to execute command make all
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
- Failed -
Build end time: 11:29:54, Feb.04 2016 Build total time: 00:00:09
Thanks Ravi
On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > Ard, > > I tried building the EDK2 with the below configuration and ended up > with > the same result as before.Would try out the scenario with > GCC4.9/GCC4.8 > compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would let > you know > the results. > > Thanks. > > On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR > ravikanth.mvr@broadcom.com wrote: >> >> Ard, >> Below is my configuration >> >> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >> TARGET = RELEASE >> TARGET_ARCH = AARCH64 >> TOOL_CHAIN_CONF = Conf/tools_def.txt >> TOOL_CHAIN_TAG = GCC49 >> >> And GCC5.0.0 compiler is being used to compile the code or you
want
>> me to >> use the GCC4.9 compiler to compile as well? >> >> Thanks. >> >> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >> ravikanth.mvr@broadcom.com wrote: >>> >>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct
me if
>>> I >>> am wrong. >>> >>> Thanks. >>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >>> ard.biesheuvel@linaro.org wrote: >>>> >>>> On 2 February 2016 at 16:23, Ravikanth MVR >>>> ravikanth.mvr@broadcom.com >>>> wrote: >>>> > Ard, >>>> > >>>> > I have been using GCC5.0.0(Experimental version). >>>> > >>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >>>> > (experimental) >>>> > >>>> > I would try with GCC49/48 and let you know. >>>> > >>>> >>>> I don't mean the actual compiler, I mean the toolchain
definition
>>>> in >>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are >>>> suitable for building AArch64. You should use GCC48 or GCC49 >>>> instead >>>> >>>> -- >>>> Ard. >>>> >>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>>> > ard.biesheuvel@linaro.org >>>> > wrote: >>>> >> >>>> >> It looks like you are using the wrong compiler. You should
use
>>>> >> GCC48 >>>> >> or GCC49 instead. >>>> >> >>>> >> >>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>>> >> ravikanth.mvr@broadcom.com >>>> >> wrote: >>>> >> > Thanks Ard!I followed the steps and I could find out that
NO
>>>> >> > standard >>>> >> > library was included.Below is the list of libraries that
were
>>>> >> > getting >>>> >> > included. >>>> >> > >>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >>>> >> > HelloWorld.lib(AutoGen.obj) >>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >>>> >> > >>>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
>>>> >> > UefiLib.lib(UefiLib.obj) >>>> >> > >>>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
>>>> >> > BasePrintLib.lib(PrintLib.obj) >>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>>> >> > BaseLib.lib(CpuDeadLoop.obj) >>>> >> > BaseLib.lib(String.obj) >>>> >> > BaseLib.lib(Unaligned.obj) >>>> >> > BaseLib.lib(Math64.obj) >>>> >> > >>>> >> > I have included .map file as well with this mail. >>>> >> > >>>> >> > Thanks. >>>> >> > >>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>>> >> > ard.biesheuvel@linaro.org >>>> >> > wrote: >>>> >> >> >>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>>> >> >> ravikanth.mvr@avagotech.com wrote: >>>> >> >> > Ard, >>>> >> >> > >>>> >> >> > I understand that we have to implement alternative C++ >>>> >> >> > runtime >>>> >> >> > API >>>> >> >> > which >>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >>>> >> >> > FreePool. >>>> >> >> > >>>> >> >> > I did implement alternative new and delete API's,which
uses
>>>> >> >> > AllocatePool >>>> >> >> > and >>>> >> >> > FreePool,for OUR code and most of the relocation errors
had
>>>> >> >> > gone.BUT >>>> >> >> > when >>>> >> >> > the CPP program(HelloWorld) under compilation doesn't
even
>>>> >> >> > call >>>> >> >> > the >>>> >> >> > C++ >>>> >> >> > runtime API's,why are we seeing these errors?-This is
what
>>>> >> >> > I am >>>> >> >> > trying >>>> >> >> > to >>>> >> >> > understand. >>>> >> >> > >>>> >> >> >>>> >> >> If you add a -Map xxx.map option to the linker command,
you
>>>> >> >> will >>>> >> >> get a >>>> >> >> map file that tells you exactly which object was included
in
>>>> >> >> the >>>> >> >> link, >>>> >> >> and why (iow, which symbol dependency it satisfies) That
way,
>>>> >> >> you >>>> >> >> will >>>> >> >> be able to figure out which standard library is included,
and
>>>> >> >> for >>>> >> >> which reason. >>>> >> >> >>>> >> >> > Thanks. >>>> >> >> > ________________________________ >>>> >> >> > From: Ard Biesheuvel >>>> >> >> > Sent: 01-02-2016 12:31 >>>> >> >> > To: M.V.R. Ravikanth >>>> >> >> > >>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang;
Linaro
>>>> >> >> > UEFI >>>> >> >> > Mailman >>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>> >> >> > >>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>>> >> >> > ravikanth.mvr@avagotech.com wrote: >>>> >> >> >> Ard, >>>> >> >> >> I would try to explain here, >>>> >> >> >> >>>> >> >> >> 1.Till now we have been compiling CPP programs in UDK
with
>>>> >> >> >> VS2005/VS2008 >>>> >> >> >> as >>>> >> >> >> toolchain and it worked well. >>>> >> >> >> >>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >>>> >> >> >> architecture >>>> >> >> >> with >>>> >> >> >> ARMGCC >>>> >> >> >> as >>>> >> >> >> the toolchain.But when we tried to compile our CPP >>>> >> >> >> code/Sample >>>> >> >> >> HelloWorld >>>> >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) >>>> >> >> >> with >>>> >> >> >> ARMGCC >>>> >> >> >> as >>>> >> >> >> toolchain,we were seeing relocation errors such as
0x105.
>>>> >> >> >> >>>> >> >> >> 3.As advised by you,we tried compiling a sample
HelloWorld
>>>> >> >> >> CPP >>>> >> >> >> program >>>> >> >> >> under >>>> >> >> >> EDK2 and still we are seeing the same relocation
errors.
>>>> >> >> >> >>>> >> >> >> Questions: >>>> >> >> >> >>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do to >>>> >> >> >> resolve the >>>> >> >> >> relocation errors we are observing? >>>> >> >> >> >>>> >> >> >> Please correct me,if I have missed something. >>>> >> >> >> >>>> >> >> > >>>> >> >> > The relocation errors are a symptom of the fact that you >>>> >> >> > are >>>> >> >> > trying >>>> >> >> > to >>>> >> >> > link the Linux specific C++ runtime into your EDK2
binary.
>>>> >> >> > This >>>> >> >> > is a >>>> >> >> > pointless exercise, since the Linux C++ runtime is >>>> >> >> > fundamentally >>>> >> >> > incompatible with EDK2, So please, don't ask any more >>>> >> >> > questions >>>> >> >> > about >>>> >> >> > relocation errors, and focus on implementing an
alternative
>>>> >> >> > C++ >>>> >> >> > runtime that maps calls to new() and delete() onto EDK2 >>>> >> >> > APIs, >>>> >> >> > i.e., >>>> >> >> > AllocatePool and FreePool. Note that you will still have >>>> >> >> > problems >>>> >> >> > with >>>> >> >> > symbol decoration, since EDK2 header file don't have >>>> >> >> > 'extern >>>> >> >> > "C"' >>>> >> >> > qualifiers around C declarations. >>>> >> >> > >>>> >> >> > >>>> >> >> > >>>> >> >> >> ________________________________ >>>> >> >> >> From: Ard Biesheuvel >>>> >> >> >> Sent: 01-02-2016 11:59 >>>> >> >> >> To: Ravikanth MVR >>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang;
Linaro
>>>> >> >> >> UEFI >>>> >> >> >> Mailman >>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>> >> >> >> >>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>>> >> >> >> ravikanth.mvr@avagotech.com >>>> >> >> >> wrote: >>>> >> >> >>> +Unni. >>>> >> >> >>> >>>> >> >> >>> Ard, >>>> >> >> >>> I have done a native compilation with EDK2 and I am >>>> >> >> >>> facing >>>> >> >> >>> same >>>> >> >> >>> issues >>>> >> >> >>> as >>>> >> >> >>> I >>>> >> >> >>> did before.Below is the snapshot of the errors I >>>> >> >> >>> received. >>>> >> >> >>> >>>> >> >> >> >>>> >> >> >> I have explained twice already why C++ under EDK2 is
not
>>>> >> >> >> going >>>> >> >> >> to >>>> >> >> >> work. What exactly were you expecting? >>>> >> >> >> -- >>>> >> >> >> Ard. >>>> >> >> >> >>>> >> >> >> >>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>> >> >> >>> WriteSections64(): >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>> >> >> >>> make: *** >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>>>> >> >> >>> Error 2 >>>> >> >> >>> WriteRelocations64(): >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> build.py... >>>> >> >> >>> : error 7000: Failed to execute command >>>> >> >> >>> make --no-print-directory all >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>> >>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>>>> >> >> >>> >>>> >> >> >>> - Failed - >>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>>> >> >> >>> Build total time: 00:00:15 >>>> >> >> >>> >>>> >> >> >>> Thanks >>>> >> >> >>> Ravi >>>> >> >> >>> >>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>>> >> >> >>> ard.biesheuvel@linaro.org >>>> >> >> >>> wrote: >>>> >> >> >>>> >>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>>> >> >> >>>> ravikanth.mvr@avagotech.com >>>> >> >> >>>> wrote: >>>> >> >> >>>> > Ard, >>>> >> >> >>>> > I was trying to compile and generate helloworld >>>> >> >> >>>> > application via >>>> >> >> >>>> > EDK2.Under >>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did not >>>> >> >> >>>> > find >>>> >> >> >>>> > "Win32" >>>> >> >> >>>> > directory >>>> >> >> >>>> > which has GenFw utility.But the UDK package has
Win32
>>>> >> >> >>>> > directory. >>>> >> >> >>>> > >>>> >> >> >>>> > Could you let me know on how to build and EDK2
package
>>>> >> >> >>>> > in >>>> >> >> >>>> > Windows >>>> >> >> >>>> > or >>>> >> >> >>>> > else Am >>>> >> >> >>>> > I missing something here? >>>> >> >> >>>> > >>>> >> >> >>>> >>>> >> >> >>>> I haven't used Windows for software development work
in
>>>> >> >> >>>> 15 >>>> >> >> >>>> years, >>>> >> >> >>>> so >>>> >> >> >>>> I >>>> >> >> >>>> am really not the person you should be asking this. >>>> >> >> >>>> >>>> >> >> >>>> -- >>>> >> >> >>>> Ard. >>>> >> >> >>>> >>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>>> >> >> >>>> > ravikanth.mvr@avagotech.com >>>> >> >> >>>> > wrote: >>>> >> >> >>>> >> >>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know the >>>> >> >> >>>> >> results. >>>> >> >> >>>> >> >>>> >> >> >>>> >> Thanks. >>>> >> >> >>>> >> >>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> wrote: >>>> >> >> >>>> >>> > Ard, >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> > OK.But when a simple HelloWorld program,which
is
>>>> >> >> >>>> >>> > part >>>> >> >> >>>> >>> > of >>>> >> >> >>>> >>> > EDK2 >>>> >> >> >>>> >>> > sample >>>> >> >> >>>> >>> > programs and which is written in c,is renamed
to
>>>> >> >> >>>> >>> > .CPP,we get >>>> >> >> >>>> >>> > these >>>> >> >> >>>> >>> > relocation issues in-spite of not using any C++ >>>> >> >> >>>> >>> > runtime >>>> >> >> >>>> >>> > API's. >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> In UDK or EDK2? >>>> >> >> >>>> >>> >>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard Biesheuvel >>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>>> >> >> >>>> >>> > wrote: >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> >> wrote: >>>> >> >> >>>> >>> >> > Hi Ard, >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> > Hope you remember we speaking about the
0x105
>>>> >> >> >>>> >>> >> > and >>>> >> >> >>>> >>> >> > 0x0 >>>> >> >> >>>> >>> >> > relocation >>>> >> >> >>>> >>> >> > issues >>>> >> >> >>>> >>> >> > which we came across while compiling a
simple
>>>> >> >> >>>> >>> >> > HelloWorld >>>> >> >> >>>> >>> >> > program >>>> >> >> >>>> >>> >> > in >>>> >> >> >>>> >>> >> > CPP.As >>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing >>>> >> >> >>>> >>> >> > list)we >>>> >> >> >>>> >>> >> > need >>>> >> >> >>>> >>> >> > some >>>> >> >> >>>> >>> >> > changes >>>> >> >> >>>> >>> >> > to >>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we
take
>>>> >> >> >>>> >>> >> > the >>>> >> >> >>>> >>> >> > required >>>> >> >> >>>> >>> >> > changes >>>> >> >> >>>> >>> >> > forward >>>> >> >> >>>> >>> >> > and come up with a UDK with this support? >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> > We are stuck at this juncture with this >>>> >> >> >>>> >>> >> > activity >>>> >> >> >>>> >>> >> > and >>>> >> >> >>>> >>> >> > would >>>> >> >> >>>> >>> >> > need >>>> >> >> >>>> >>> >> > your >>>> >> >> >>>> >>> >> > help >>>> >> >> >>>> >>> >> > badly. >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your work >>>> >> >> >>>> >>> >> onto >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> latest >>>> >> >> >>>> >>> >> EDK2 >>>> >> >> >>>> >>> >> master branch. There have been many changes to >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> way >>>> >> >> >>>> >>> >> relocations >>>> >> >> >>>> >>> >> are >>>> >> >> >>>> >>> >> handled, which also impose requirements at
link
>>>> >> >> >>>> >>> >> time >>>> >> >> >>>> >>> >> (i.e., >>>> >> >> >>>> >>> >> in >>>> >> >> >>>> >>> >> terms >>>> >> >> >>>> >>> >> of section alignment, and relative offset
between
>>>> >> >> >>>> >>> >> sections >>>> >> >> >>>> >>> >> both >>>> >> >> >>>> >>> >> in >>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> However, the relocation issue was due to the
fact
>>>> >> >> >>>> >>> >> that you >>>> >> >> >>>> >>> >> were >>>> >> >> >>>> >>> >> using >>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, which
you
>>>> >> >> >>>> >>> >> cannot use >>>> >> >> >>>> >>> >> under >>>> >> >> >>>> >>> >> EDK2 >>>> >> >> >>>> >>> >> even if we do support those relocation types
with
>>>> >> >> >>>> >>> >> the >>>> >> >> >>>> >>> >> newer >>>> >> >> >>>> >>> >> tools. >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> Bottom line is that you need to develop your
own
>>>> >> >> >>>> >>> >> C++ >>>> >> >> >>>> >>> >> minimal >>>> >> >> >>>> >>> >> runtime >>>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >>>> >> >> >>>> >>> >> >>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth
MVR
>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>>> >> >> >>>> >>> >> > wrote: >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> +Sada. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> Thanks. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >>>> >> >> >>>> >>> >> >> Biesheuvel >>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif
Lindholm
>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>>> >> >> >>>> >>> >> >>> wrote: >>>> >> >> >>>> >>> >> >>> > Hi Daniel, >>>> >> >> >>>> >>> >> >>> > >>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM >>>> >> >> >>>> >>> >> >>> > folder >>>> >> >> >>>> >>> >> >>> > for >>>> >> >> >>>> >>> >> >>> > some >>>> >> >> >>>> >>> >> >>> > reason. >>>> >> >> >>>> >>> >> >>> > >>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM
-0500,
>>>> >> >> >>>> >>> >> >>> > Daniel >>>> >> >> >>>> >>> >> >>> > Samuelraj >>>> >> >> >>>> >>> >> >>> > wrote: >>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for
X64
>>>> >> >> >>>> >>> >> >>> >> using >>>> >> >> >>>> >>> >> >>> >> UDK2014 >>>> >> >> >>>> >>> >> >>> >> by >>>> >> >> >>>> >>> >> >>> >> using >>>> >> >> >>>> >>> >> >>> >> Visual >>>> >> >> >>>> >>> >> >>> >> Studio. >>>> >> >> >>>> >>> >> >>> >> >>>> >> >> >>>> >>> >> >>> >> How do we compile the same source for >>>> >> >> >>>> >>> >> >>> >> AARCH64? >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >>>> >> >> >>>> >>> >> >>> unsupported, >>>> >> >> >>>> >>> >> >>> and is >>>> >> >> >>>> >>> >> >>> going >>>> >> >> >>>> >>> >> >>> to >>>> >> >> >>>> >>> >> >>> be >>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note that
you
>>>> >> >> >>>> >>> >> >>> cannot >>>> >> >> >>>> >>> >> >>> rely >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> C++ >>>> >> >> >>>> >>> >> >>> runtime for various reasons (including,
but
>>>> >> >> >>>> >>> >> >>> not >>>> >> >> >>>> >>> >> >>> limited >>>> >> >> >>>> >>> >> >>> to, >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> fact >>>> >> >> >>>> >>> >> >>> that it uses small model relocations, and
is
>>>> >> >> >>>> >>> >> >>> built >>>> >> >> >>>> >>> >> >>> against >>>> >> >> >>>> >>> >> >>> libc >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on
Visual
>>>> >> >> >>>> >>> >> >>> Studio >>>> >> >> >>>> >>> >> >>> for >>>> >> >> >>>> >>> >> >>> X64, >>>> >> >> >>>> >>> >> >>> since >>>> >> >> >>>> >>> >> >>> the code you build will try to call libc >>>> >> >> >>>> >>> >> >>> functions from >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> VC >>>> >> >> >>>> >>> >> >>> runtime >>>> >> >> >>>> >>> >> >>> library. >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> There has been some discussion about this >>>> >> >> >>>> >>> >> >>> recently on >>>> >> >> >>>> >>> >> >>> the >>>> >> >> >>>> >>> >> >>> list. >>>> >> >> >>>> >>> >> >>> If >>>> >> >> >>>> >>> >> >>> you >>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and
reimplement
>>>> >> >> >>>> >>> >> >>> your >>>> >> >> >>>> >>> >> >>> new >>>> >> >> >>>> >>> >> >>> and >>>> >> >> >>>> >>> >> >>> delete >>>> >> >> >>>> >>> >> >>> operators, you may be able to build code
that
>>>> >> >> >>>> >>> >> >>> does not >>>> >> >> >>>> >>> >> >>> rely >>>> >> >> >>>> >>> >> >>> on >>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>>> >> >> >>>> >>> >> >>> >>>> >> >> >>>> >>> >> >>> -- >>>> >> >> >>>> >>> >> >>> Ard. >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> >> >>>> >> >> >>>> >>> >> > >>>> >> >> >>>> >>> > >>>> >> >> >>>> >>> > >>>> >> >> >>>> >> >>>> >> >> >>>> >> >>>> >> >> >>>> > >>>> >> >> >>> >>>> >> >> >>> >>>> >> > >>>> >> > >>>> > >>>> > >>> >>> >> >
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets -comes up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld -I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map -z common-page-size=0x20 --start-group @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64(): /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: *** [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
build.py... : error 7000: Failed to execute command make tbuild [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf [AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 4 February 2016 at 20:41, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > Ard, > > We built the EDK2 with target set to AARCH64 and GCC48 as the > toolchain.Still we are same relocation errors as before.Below is > the > complete snapshot of the error and map file as well. >
Could you try the following patch (don't forget to rebuild BaseTools/)
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index 90d80a22daf2..0a1329f0f668 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -767,6 +767,9 @@ WriteSections64 ( case R_AARCH64_LD_PREL_LO19: case R_AARCH64_CALL26: case R_AARCH64_JUMP26:
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16: // // The GCC toolchains (i.e., binutils) may corrupt
section relative // relocations when emitting relocation sections into fully linked @@ -869,6 +872,11 @@ WriteRelocations64 ( case R_AARCH64_JUMP26: break;
case R_AARCH64_PREL64:
case R_AARCH64_PREL32:
case R_AARCH64_PREL16:
break;
case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST8_ABS_LO12_NC:
-- Ard.
> "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror > -Wno-array-bounds -ffunction-sections -fdata-sections -c -include > AutoGen.h > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar > -fno-strict-aliasing -fno-stack-protector -Wall -Werror > -Wno-array-bounds -c > -include AutoGen.h -mcmodel=large -mlittle-endian -fno-short-enums > -save-temps -fverbose-asm -fsigned-char -ffunction-sections > -fdata-sections > -fomit-frame-pointer -fno-builtin -Wno-address > -Wno-unused-but-set-variable > -o > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld > > > -I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG > -I/home/ekd2_new/MyWorkSpace/MdePkg > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c > "ar" -cr > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib > > > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst > "ld" -o > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u > _ModuleEntryPoint > -e > _ModuleEntryPoint -Map > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map > --start-group > > > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst > --end-group > "echo" objcopy not needed for > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > objcopy not needed for > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > cp -f > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > echo --strip-unneeded -R .eh_frame > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > --strip-unneeded -R .eh_frame > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > echo > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > cp -f > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > "GenFw" -e UEFI_APPLICATION -o > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > GenFw: ERROR 3000: Invalid > WriteSections64(): > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > unsupported ELF EM_AARCH64 relocation 0x105. > GenFw: ERROR 3000: Invalid > make: *** > > > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] > Error 2 > WriteRelocations64(): > > > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > unsupported ELF EM_AARCH64 relocation 0x105. > > > build.py... > : error 7000: Failed to execute command > make all > > > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] > > - Failed - > Build end time: 11:29:54, Feb.04 2016 > Build total time: 00:00:09 > > Thanks > Ravi > > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: >> >> Ard, >> >> I tried building the EDK2 with the below configuration and ended >> up >> with >> the same result as before.Would try out the scenario with >> GCC4.9/GCC4.8 >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would >> let >> you know >> the results. >> >> Thanks. >> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR >> ravikanth.mvr@broadcom.com wrote: >>> >>> Ard, >>> Below is my configuration >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >>> TARGET = RELEASE >>> TARGET_ARCH = AARCH64 >>> TOOL_CHAIN_CONF = Conf/tools_def.txt >>> TOOL_CHAIN_TAG = GCC49 >>> >>> And GCC5.0.0 compiler is being used to compile the code or you >>> want >>> me to >>> use the GCC4.9 compiler to compile as well? >>> >>> Thanks. >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >>> ravikanth.mvr@broadcom.com wrote: >>>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct >>>> me if >>>> I >>>> am wrong. >>>> >>>> Thanks. >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >>>> ard.biesheuvel@linaro.org wrote: >>>>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR >>>>> ravikanth.mvr@broadcom.com >>>>> wrote: >>>>> > Ard, >>>>> > >>>>> > I have been using GCC5.0.0(Experimental version). >>>>> > >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >>>>> > (experimental) >>>>> > >>>>> > I would try with GCC49/48 and let you know. >>>>> > >>>>> >>>>> I don't mean the actual compiler, I mean the toolchain >>>>> definition >>>>> in >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which are >>>>> suitable for building AArch64. You should use GCC48 or GCC49 >>>>> instead >>>>> >>>>> -- >>>>> Ard. >>>>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>>>> > ard.biesheuvel@linaro.org >>>>> > wrote: >>>>> >> >>>>> >> It looks like you are using the wrong compiler. You should >>>>> >> use >>>>> >> GCC48 >>>>> >> or GCC49 instead. >>>>> >> >>>>> >> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>>>> >> ravikanth.mvr@broadcom.com >>>>> >> wrote: >>>>> >> > Thanks Ard!I followed the steps and I could find out that >>>>> >> > NO >>>>> >> > standard >>>>> >> > library was included.Below is the list of libraries that >>>>> >> > were >>>>> >> > getting >>>>> >> > included. >>>>> >> > >>>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >>>>> >> > HelloWorld.lib(AutoGen.obj) >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >>>>> >> > >>>>> >> > >>>>> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >>>>> >> > UefiLib.lib(UefiLib.obj) >>>>> >> > >>>>> >> > >>>>> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >>>>> >> > BasePrintLib.lib(PrintLib.obj) >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) >>>>> >> > BaseLib.lib(String.obj) >>>>> >> > BaseLib.lib(Unaligned.obj) >>>>> >> > BaseLib.lib(Math64.obj) >>>>> >> > >>>>> >> > I have included .map file as well with this mail. >>>>> >> > >>>>> >> > Thanks. >>>>> >> > >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>>>> >> > ard.biesheuvel@linaro.org >>>>> >> > wrote: >>>>> >> >> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>>>> >> >> ravikanth.mvr@avagotech.com wrote: >>>>> >> >> > Ard, >>>>> >> >> > >>>>> >> >> > I understand that we have to implement alternative C++ >>>>> >> >> > runtime >>>>> >> >> > API >>>>> >> >> > which >>>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >>>>> >> >> > FreePool. >>>>> >> >> > >>>>> >> >> > I did implement alternative new and delete API's,which >>>>> >> >> > uses >>>>> >> >> > AllocatePool >>>>> >> >> > and >>>>> >> >> > FreePool,for OUR code and most of the relocation errors >>>>> >> >> > had >>>>> >> >> > gone.BUT >>>>> >> >> > when >>>>> >> >> > the CPP program(HelloWorld) under compilation doesn't >>>>> >> >> > even >>>>> >> >> > call >>>>> >> >> > the >>>>> >> >> > C++ >>>>> >> >> > runtime API's,why are we seeing these errors?-This is >>>>> >> >> > what >>>>> >> >> > I am >>>>> >> >> > trying >>>>> >> >> > to >>>>> >> >> > understand. >>>>> >> >> > >>>>> >> >> >>>>> >> >> If you add a -Map xxx.map option to the linker command, >>>>> >> >> you >>>>> >> >> will >>>>> >> >> get a >>>>> >> >> map file that tells you exactly which object was included >>>>> >> >> in >>>>> >> >> the >>>>> >> >> link, >>>>> >> >> and why (iow, which symbol dependency it satisfies) That >>>>> >> >> way, >>>>> >> >> you >>>>> >> >> will >>>>> >> >> be able to figure out which standard library is included, >>>>> >> >> and >>>>> >> >> for >>>>> >> >> which reason. >>>>> >> >> >>>>> >> >> > Thanks. >>>>> >> >> > ________________________________ >>>>> >> >> > From: Ard Biesheuvel >>>>> >> >> > Sent: 01-02-2016 12:31 >>>>> >> >> > To: M.V.R. Ravikanth >>>>> >> >> > >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >>>>> >> >> > Linaro >>>>> >> >> > UEFI >>>>> >> >> > Mailman >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>>> >> >> > >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: >>>>> >> >> >> Ard, >>>>> >> >> >> I would try to explain here, >>>>> >> >> >> >>>>> >> >> >> 1.Till now we have been compiling CPP programs in UDK >>>>> >> >> >> with >>>>> >> >> >> VS2005/VS2008 >>>>> >> >> >> as >>>>> >> >> >> toolchain and it worked well. >>>>> >> >> >> >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >>>>> >> >> >> architecture >>>>> >> >> >> with >>>>> >> >> >> ARMGCC >>>>> >> >> >> as >>>>> >> >> >> the toolchain.But when we tried to compile our CPP >>>>> >> >> >> code/Sample >>>>> >> >> >> HelloWorld >>>>> >> >> >> application(HelloWorld.c is renamed to HelloWorld.cpp) >>>>> >> >> >> with >>>>> >> >> >> ARMGCC >>>>> >> >> >> as >>>>> >> >> >> toolchain,we were seeing relocation errors such as >>>>> >> >> >> 0x105. >>>>> >> >> >> >>>>> >> >> >> 3.As advised by you,we tried compiling a sample >>>>> >> >> >> HelloWorld >>>>> >> >> >> CPP >>>>> >> >> >> program >>>>> >> >> >> under >>>>> >> >> >> EDK2 and still we are seeing the same relocation >>>>> >> >> >> errors. >>>>> >> >> >> >>>>> >> >> >> Questions: >>>>> >> >> >> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do >>>>> >> >> >> to >>>>> >> >> >> resolve the >>>>> >> >> >> relocation errors we are observing? >>>>> >> >> >> >>>>> >> >> >> Please correct me,if I have missed something. >>>>> >> >> >> >>>>> >> >> > >>>>> >> >> > The relocation errors are a symptom of the fact that >>>>> >> >> > you >>>>> >> >> > are >>>>> >> >> > trying >>>>> >> >> > to >>>>> >> >> > link the Linux specific C++ runtime into your EDK2 >>>>> >> >> > binary. >>>>> >> >> > This >>>>> >> >> > is a >>>>> >> >> > pointless exercise, since the Linux C++ runtime is >>>>> >> >> > fundamentally >>>>> >> >> > incompatible with EDK2, So please, don't ask any more >>>>> >> >> > questions >>>>> >> >> > about >>>>> >> >> > relocation errors, and focus on implementing an >>>>> >> >> > alternative >>>>> >> >> > C++ >>>>> >> >> > runtime that maps calls to new() and delete() onto EDK2 >>>>> >> >> > APIs, >>>>> >> >> > i.e., >>>>> >> >> > AllocatePool and FreePool. Note that you will still >>>>> >> >> > have >>>>> >> >> > problems >>>>> >> >> > with >>>>> >> >> > symbol decoration, since EDK2 header file don't have >>>>> >> >> > 'extern >>>>> >> >> > "C"' >>>>> >> >> > qualifiers around C declarations. >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> >> ________________________________ >>>>> >> >> >> From: Ard Biesheuvel >>>>> >> >> >> Sent: 01-02-2016 11:59 >>>>> >> >> >> To: Ravikanth MVR >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >>>>> >> >> >> Linaro >>>>> >> >> >> UEFI >>>>> >> >> >> Mailman >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >>>>> >> >> >> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>>>> >> >> >> ravikanth.mvr@avagotech.com >>>>> >> >> >> wrote: >>>>> >> >> >>> +Unni. >>>>> >> >> >>> >>>>> >> >> >>> Ard, >>>>> >> >> >>> I have done a native compilation with EDK2 and I am >>>>> >> >> >>> facing >>>>> >> >> >>> same >>>>> >> >> >>> issues >>>>> >> >> >>> as >>>>> >> >> >>> I >>>>> >> >> >>> did before.Below is the snapshot of the errors I >>>>> >> >> >>> received. >>>>> >> >> >>> >>>>> >> >> >> >>>>> >> >> >> I have explained twice already why C++ under EDK2 is >>>>> >> >> >> not >>>>> >> >> >> going >>>>> >> >> >> to >>>>> >> >> >> work. What exactly were you expecting? >>>>> >> >> >> -- >>>>> >> >> >> Ard. >>>>> >> >> >> >>>>> >> >> >> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>>> >> >> >>> WriteSections64(): >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>>>> >> >> >>> make: *** >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >>>>> >> >> >>> Error 2 >>>>> >> >> >>> WriteRelocations64(): >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> build.py... >>>>> >> >> >>> : error 7000: Failed to execute command >>>>> >> >> >>> make --no-print-directory all >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >>>>> >> >> >>> >>>>> >> >> >>> - Failed - >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>>>> >> >> >>> Build total time: 00:00:15 >>>>> >> >> >>> >>>>> >> >> >>> Thanks >>>>> >> >> >>> Ravi >>>>> >> >> >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>>>> >> >> >>> ard.biesheuvel@linaro.org >>>>> >> >> >>> wrote: >>>>> >> >> >>>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>>>> >> >> >>>> ravikanth.mvr@avagotech.com >>>>> >> >> >>>> wrote: >>>>> >> >> >>>> > Ard, >>>>> >> >> >>>> > I was trying to compile and generate helloworld >>>>> >> >> >>>> > application via >>>>> >> >> >>>> > EDK2.Under >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did >>>>> >> >> >>>> > not >>>>> >> >> >>>> > find >>>>> >> >> >>>> > "Win32" >>>>> >> >> >>>> > directory >>>>> >> >> >>>> > which has GenFw utility.But the UDK package has >>>>> >> >> >>>> > Win32 >>>>> >> >> >>>> > directory. >>>>> >> >> >>>> > >>>>> >> >> >>>> > Could you let me know on how to build and EDK2 >>>>> >> >> >>>> > package >>>>> >> >> >>>> > in >>>>> >> >> >>>> > Windows >>>>> >> >> >>>> > or >>>>> >> >> >>>> > else Am >>>>> >> >> >>>> > I missing something here? >>>>> >> >> >>>> > >>>>> >> >> >>>> >>>>> >> >> >>>> I haven't used Windows for software development work >>>>> >> >> >>>> in >>>>> >> >> >>>> 15 >>>>> >> >> >>>> years, >>>>> >> >> >>>> so >>>>> >> >> >>>> I >>>>> >> >> >>>> am really not the person you should be asking this. >>>>> >> >> >>>> >>>>> >> >> >>>> -- >>>>> >> >> >>>> Ard. >>>>> >> >> >>>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com >>>>> >> >> >>>> > wrote: >>>>> >> >> >>>> >> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know >>>>> >> >> >>>> >> the >>>>> >> >> >>>> >> results. >>>>> >> >> >>>> >> >>>>> >> >> >>>> >> Thanks. >>>>> >> >> >>>> >> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>>>> >> >> >>>> >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>>>> >> >> >>>> >>> wrote: >>>>> >> >> >>>> >>> > Ard, >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld program,which >>>>> >> >> >>>> >>> > is >>>>> >> >> >>>> >>> > part >>>>> >> >> >>>> >>> > of >>>>> >> >> >>>> >>> > EDK2 >>>>> >> >> >>>> >>> > sample >>>>> >> >> >>>> >>> > programs and which is written in c,is renamed >>>>> >> >> >>>> >>> > to >>>>> >> >> >>>> >>> > .CPP,we get >>>>> >> >> >>>> >>> > these >>>>> >> >> >>>> >>> > relocation issues in-spite of not using any >>>>> >> >> >>>> >>> > C++ >>>>> >> >> >>>> >>> > runtime >>>>> >> >> >>>> >>> > API's. >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> >>>>> >> >> >>>> >>> In UDK or EDK2? >>>>> >> >> >>>> >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard >>>>> >> >> >>>> >>> > Biesheuvel >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>>>> >> >> >>>> >>> > wrote: >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>>>> >> >> >>>> >>> >> wrote: >>>>> >> >> >>>> >>> >> > Hi Ard, >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about the >>>>> >> >> >>>> >>> >> > 0x105 >>>>> >> >> >>>> >>> >> > and >>>>> >> >> >>>> >>> >> > 0x0 >>>>> >> >> >>>> >>> >> > relocation >>>>> >> >> >>>> >>> >> > issues >>>>> >> >> >>>> >>> >> > which we came across while compiling a >>>>> >> >> >>>> >>> >> > simple >>>>> >> >> >>>> >>> >> > HelloWorld >>>>> >> >> >>>> >>> >> > program >>>>> >> >> >>>> >>> >> > in >>>>> >> >> >>>> >>> >> > CPP.As >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing >>>>> >> >> >>>> >>> >> > list)we >>>>> >> >> >>>> >>> >> > need >>>>> >> >> >>>> >>> >> > some >>>>> >> >> >>>> >>> >> > changes >>>>> >> >> >>>> >>> >> > to >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we >>>>> >> >> >>>> >>> >> > take >>>>> >> >> >>>> >>> >> > the >>>>> >> >> >>>> >>> >> > required >>>>> >> >> >>>> >>> >> > changes >>>>> >> >> >>>> >>> >> > forward >>>>> >> >> >>>> >>> >> > and come up with a UDK with this support? >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with this >>>>> >> >> >>>> >>> >> > activity >>>>> >> >> >>>> >>> >> > and >>>>> >> >> >>>> >>> >> > would >>>>> >> >> >>>> >>> >> > need >>>>> >> >> >>>> >>> >> > your >>>>> >> >> >>>> >>> >> > help >>>>> >> >> >>>> >>> >> > badly. >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your work >>>>> >> >> >>>> >>> >> onto >>>>> >> >> >>>> >>> >> the >>>>> >> >> >>>> >>> >> latest >>>>> >> >> >>>> >>> >> EDK2 >>>>> >> >> >>>> >>> >> master branch. There have been many changes >>>>> >> >> >>>> >>> >> to >>>>> >> >> >>>> >>> >> the >>>>> >> >> >>>> >>> >> way >>>>> >> >> >>>> >>> >> relocations >>>>> >> >> >>>> >>> >> are >>>>> >> >> >>>> >>> >> handled, which also impose requirements at >>>>> >> >> >>>> >>> >> link >>>>> >> >> >>>> >>> >> time >>>>> >> >> >>>> >>> >> (i.e., >>>>> >> >> >>>> >>> >> in >>>>> >> >> >>>> >>> >> terms >>>>> >> >> >>>> >>> >> of section alignment, and relative offset >>>>> >> >> >>>> >>> >> between >>>>> >> >> >>>> >>> >> sections >>>>> >> >> >>>> >>> >> both >>>>> >> >> >>>> >>> >> in >>>>> >> >> >>>> >>> >> the >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> >> However, the relocation issue was due to the >>>>> >> >> >>>> >>> >> fact >>>>> >> >> >>>> >>> >> that you >>>>> >> >> >>>> >>> >> were >>>>> >> >> >>>> >>> >> using >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, which >>>>> >> >> >>>> >>> >> you >>>>> >> >> >>>> >>> >> cannot use >>>>> >> >> >>>> >>> >> under >>>>> >> >> >>>> >>> >> EDK2 >>>>> >> >> >>>> >>> >> even if we do support those relocation types >>>>> >> >> >>>> >>> >> with >>>>> >> >> >>>> >>> >> the >>>>> >> >> >>>> >>> >> newer >>>>> >> >> >>>> >>> >> tools. >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> >> Bottom line is that you need to develop your >>>>> >> >> >>>> >>> >> own >>>>> >> >> >>>> >>> >> C++ >>>>> >> >> >>>> >>> >> minimal >>>>> >> >> >>>> >>> >> runtime >>>>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth >>>>> >> >> >>>> >>> >> > MVR >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>>>> >> >> >>>> >>> >> > wrote: >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> >> +Sada. >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> >> Thanks. >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >>>>> >> >> >>>> >>> >> >> Biesheuvel >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif >>>>> >> >> >>>> >>> >> >>> Lindholm >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>>>> >> >> >>>> >>> >> >>> wrote: >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my SPAM >>>>> >> >> >>>> >>> >> >>> > folder >>>>> >> >> >>>> >>> >> >>> > for >>>>> >> >> >>>> >>> >> >>> > some >>>>> >> >> >>>> >>> >> >>> > reason. >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM >>>>> >> >> >>>> >>> >> >>> > -0500, >>>>> >> >> >>>> >>> >> >>> > Daniel >>>>> >> >> >>>> >>> >> >>> > Samuelraj >>>>> >> >> >>>> >>> >> >>> > wrote: >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for >>>>> >> >> >>>> >>> >> >>> >> X64 >>>>> >> >> >>>> >>> >> >>> >> using >>>>> >> >> >>>> >>> >> >>> >> UDK2014 >>>>> >> >> >>>> >>> >> >>> >> by >>>>> >> >> >>>> >>> >> >>> >> using >>>>> >> >> >>>> >>> >> >>> >> Visual >>>>> >> >> >>>> >>> >> >>> >> Studio. >>>>> >> >> >>>> >>> >> >>> >> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same source for >>>>> >> >> >>>> >>> >> >>> >> AARCH64? >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >>>>> >> >> >>>> >>> >> >>> unsupported, >>>>> >> >> >>>> >>> >> >>> and is >>>>> >> >> >>>> >>> >> >>> going >>>>> >> >> >>>> >>> >> >>> to >>>>> >> >> >>>> >>> >> >>> be >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note that >>>>> >> >> >>>> >>> >> >>> you >>>>> >> >> >>>> >>> >> >>> cannot >>>>> >> >> >>>> >>> >> >>> rely >>>>> >> >> >>>> >>> >> >>> on >>>>> >> >> >>>> >>> >> >>> the >>>>> >> >> >>>> >>> >> >>> C++ >>>>> >> >> >>>> >>> >> >>> runtime for various reasons (including, >>>>> >> >> >>>> >>> >> >>> but >>>>> >> >> >>>> >>> >> >>> not >>>>> >> >> >>>> >>> >> >>> limited >>>>> >> >> >>>> >>> >> >>> to, >>>>> >> >> >>>> >>> >> >>> the >>>>> >> >> >>>> >>> >> >>> fact >>>>> >> >> >>>> >>> >> >>> that it uses small model relocations, and >>>>> >> >> >>>> >>> >> >>> is >>>>> >> >> >>>> >>> >> >>> built >>>>> >> >> >>>> >>> >> >>> against >>>>> >> >> >>>> >>> >> >>> libc >>>>> >> >> >>>> >>> >> >>> on >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on >>>>> >> >> >>>> >>> >> >>> Visual >>>>> >> >> >>>> >>> >> >>> Studio >>>>> >> >> >>>> >>> >> >>> for >>>>> >> >> >>>> >>> >> >>> X64, >>>>> >> >> >>>> >>> >> >>> since >>>>> >> >> >>>> >>> >> >>> the code you build will try to call libc >>>>> >> >> >>>> >>> >> >>> functions from >>>>> >> >> >>>> >>> >> >>> the >>>>> >> >> >>>> >>> >> >>> VC >>>>> >> >> >>>> >>> >> >>> runtime >>>>> >> >> >>>> >>> >> >>> library. >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion about this >>>>> >> >> >>>> >>> >> >>> recently on >>>>> >> >> >>>> >>> >> >>> the >>>>> >> >> >>>> >>> >> >>> list. >>>>> >> >> >>>> >>> >> >>> If >>>>> >> >> >>>> >>> >> >>> you >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >>>>> >> >> >>>> >>> >> >>> reimplement >>>>> >> >> >>>> >>> >> >>> your >>>>> >> >> >>>> >>> >> >>> new >>>>> >> >> >>>> >>> >> >>> and >>>>> >> >> >>>> >>> >> >>> delete >>>>> >> >> >>>> >>> >> >>> operators, you may be able to build code >>>>> >> >> >>>> >>> >> >>> that >>>>> >> >> >>>> >>> >> >>> does not >>>>> >> >> >>>> >>> >> >>> rely >>>>> >> >> >>>> >>> >> >>> on >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> -- >>>>> >> >> >>>> >>> >> >>> Ard. >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> > >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> > >>>>> >> > >>>>> > >>>>> > >>>> >>>> >>> >> >
Attached.
Thanks .
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets -comes up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include
AutoGen.h
-fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char
-ffunction-sections
-fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
-z common-page-size=0x20 --start-group
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
build.py... : error 7000: Failed to execute command make tbuild
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
[AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If
you
want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 5 February 2016 at 15:30, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF
section
offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Thanks Ard!Would try out and let you know the results.
On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 4 February 2016 at 20:41, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: > > Ard, > > > > We built the EDK2 with target set to AARCH64 and GCC48 as the > > toolchain.Still we are same relocation errors as before.Below is > > the > > complete snapshot of the error and map file as well. > > > > Could you try the following patch (don't forget to rebuild > BaseTools/) > > diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c > b/BaseTools/Source/C/GenFw/Elf64Convert.c > index 90d80a22daf2..0a1329f0f668 100644 > --- a/BaseTools/Source/C/GenFw/Elf64Convert.c > +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c > @@ -767,6 +767,9 @@ WriteSections64 ( > case R_AARCH64_LD_PREL_LO19: > case R_AARCH64_CALL26: > case R_AARCH64_JUMP26: > + case R_AARCH64_PREL64: > + case R_AARCH64_PREL32: > + case R_AARCH64_PREL16: > // > // The GCC toolchains (i.e., binutils) may corrupt > section > relative > // relocations when emitting relocation sections into > fully > linked > @@ -869,6 +872,11 @@ WriteRelocations64 ( > case R_AARCH64_JUMP26: > break; > > + case R_AARCH64_PREL64: > + case R_AARCH64_PREL32: > + case R_AARCH64_PREL16: > + break; > + > case R_AARCH64_ADR_PREL_PG_HI21: > case R_AARCH64_ADD_ABS_LO12_NC: > case R_AARCH64_LDST8_ABS_LO12_NC: > > -- > Ard. > > > > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror > > -Wno-array-bounds -ffunction-sections -fdata-sections -c -include > > AutoGen.h > > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar > > -fno-strict-aliasing -fno-stack-protector -Wall -Werror > > -Wno-array-bounds -c > > -include AutoGen.h -mcmodel=large -mlittle-endian
-fno-short-enums
> > -save-temps -fverbose-asm -fsigned-char -ffunction-sections > > -fdata-sections > > -fomit-frame-pointer -fno-builtin -Wno-address > > -Wno-unused-but-set-variable > > -o > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld > > > > > >
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
> > -I/home/ekd2_new/MyWorkSpace/MdePkg > > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include > > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 > > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg > > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
> > "ar" -cr > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
> > > > > >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
> > "ld" -o > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u > > _ModuleEntryPoint > > -e > > _ModuleEntryPoint -Map > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
> > --start-group > > > > > >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
> > --end-group > > "echo" objcopy not needed for > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > objcopy not needed for > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > cp -f > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> > echo --strip-unneeded -R .eh_frame > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > --strip-unneeded -R .eh_frame > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > echo > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > cp -f > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > > "GenFw" -e UEFI_APPLICATION -o > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > GenFw: ERROR 3000: Invalid > > WriteSections64(): > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > unsupported ELF EM_AARCH64 relocation 0x105. > > GenFw: ERROR 3000: Invalid > > make: *** > > > > > >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> > Error 2 > > WriteRelocations64(): > > > > > >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > unsupported ELF EM_AARCH64 relocation 0x105. > > > > > > build.py... > > : error 7000: Failed to execute command > > make all > > > > > >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> > > > - Failed - > > Build end time: 11:29:54, Feb.04 2016 > > Build total time: 00:00:09 > > > > Thanks > > Ravi > > > > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR > > ravikanth.mvr@broadcom.com > > wrote: > >> > >> Ard, > >> > >> I tried building the EDK2 with the below configuration and ended > >> up > >> with > >> the same result as before.Would try out the scenario with > >> GCC4.9/GCC4.8 > >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would > >> let > >> you know > >> the results. > >> > >> Thanks. > >> > >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR > >> ravikanth.mvr@broadcom.com wrote: > >>> > >>> Ard, > >>> Below is my configuration > >>> > >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc > >>> TARGET = RELEASE > >>> TARGET_ARCH = AARCH64 > >>> TOOL_CHAIN_CONF = Conf/tools_def.txt > >>> TOOL_CHAIN_TAG = GCC49 > >>> > >>> And GCC5.0.0 compiler is being used to compile the code or you > >>> want > >>> me to > >>> use the GCC4.9 compiler to compile as well? > >>> > >>> Thanks. > >>> > >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR > >>> ravikanth.mvr@broadcom.com wrote: > >>>> > >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please correct > >>>> me if > >>>> I > >>>> am wrong. > >>>> > >>>> Thanks. > >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel > >>>> ard.biesheuvel@linaro.org wrote: > >>>>> > >>>>> On 2 February 2016 at 16:23, Ravikanth MVR > >>>>> ravikanth.mvr@broadcom.com > >>>>> wrote: > >>>>> > Ard, > >>>>> > > >>>>> > I have been using GCC5.0.0(Experimental version). > >>>>> > > >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 > >>>>> > (experimental) > >>>>> > > >>>>> > I would try with GCC49/48 and let you know. > >>>>> > > >>>>> > >>>>> I don't mean the actual compiler, I mean the toolchain > >>>>> definition > >>>>> in > >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which
are
> >>>>> suitable for building AArch64. You should use GCC48 or GCC49 > >>>>> instead > >>>>> > >>>>> -- > >>>>> Ard. > >>>>> > >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel > >>>>> > ard.biesheuvel@linaro.org > >>>>> > wrote: > >>>>> >> > >>>>> >> It looks like you are using the wrong compiler. You should > >>>>> >> use > >>>>> >> GCC48 > >>>>> >> or GCC49 instead. > >>>>> >> > >>>>> >> > >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR > >>>>> >> ravikanth.mvr@broadcom.com > >>>>> >> wrote: > >>>>> >> > Thanks Ard!I followed the steps and I could find out
that
> >>>>> >> > NO > >>>>> >> > standard > >>>>> >> > library was included.Below is the list of libraries that > >>>>> >> > were > >>>>> >> > getting > >>>>> >> > included. > >>>>> >> > > >>>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) > >>>>> >> > HelloWorld.lib(AutoGen.obj) > >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) > >>>>> >> >
UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj)
> >>>>> >> > > >>>>> >> > > >>>>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
> >>>>> >> > UefiLib.lib(UefiLib.obj) > >>>>> >> > > >>>>> >> > > >>>>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
> >>>>> >> > BasePrintLib.lib(PrintLib.obj) > >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) > >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) > >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) > >>>>> >> > BaseLib.lib(String.obj) > >>>>> >> > BaseLib.lib(Unaligned.obj) > >>>>> >> > BaseLib.lib(Math64.obj) > >>>>> >> > > >>>>> >> > I have included .map file as well with this mail. > >>>>> >> > > >>>>> >> > Thanks. > >>>>> >> > > >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel > >>>>> >> > ard.biesheuvel@linaro.org > >>>>> >> > wrote: > >>>>> >> >> > >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth > >>>>> >> >> ravikanth.mvr@avagotech.com wrote: > >>>>> >> >> > Ard, > >>>>> >> >> > > >>>>> >> >> > I understand that we have to implement alternative
C++
> >>>>> >> >> > runtime > >>>>> >> >> > API > >>>>> >> >> > which > >>>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and > >>>>> >> >> > FreePool. > >>>>> >> >> > > >>>>> >> >> > I did implement alternative new and delete
API's,which
> >>>>> >> >> > uses > >>>>> >> >> > AllocatePool > >>>>> >> >> > and > >>>>> >> >> > FreePool,for OUR code and most of the relocation
errors
> >>>>> >> >> > had > >>>>> >> >> > gone.BUT > >>>>> >> >> > when > >>>>> >> >> > the CPP program(HelloWorld) under compilation doesn't > >>>>> >> >> > even > >>>>> >> >> > call > >>>>> >> >> > the > >>>>> >> >> > C++ > >>>>> >> >> > runtime API's,why are we seeing these errors?-This is > >>>>> >> >> > what > >>>>> >> >> > I am > >>>>> >> >> > trying > >>>>> >> >> > to > >>>>> >> >> > understand. > >>>>> >> >> > > >>>>> >> >> > >>>>> >> >> If you add a -Map xxx.map option to the linker command, > >>>>> >> >> you > >>>>> >> >> will > >>>>> >> >> get a > >>>>> >> >> map file that tells you exactly which object was
included
> >>>>> >> >> in > >>>>> >> >> the > >>>>> >> >> link, > >>>>> >> >> and why (iow, which symbol dependency it satisfies)
That
> >>>>> >> >> way, > >>>>> >> >> you > >>>>> >> >> will > >>>>> >> >> be able to figure out which standard library is
included,
> >>>>> >> >> and > >>>>> >> >> for > >>>>> >> >> which reason. > >>>>> >> >> > >>>>> >> >> > Thanks. > >>>>> >> >> > ________________________________ > >>>>> >> >> > From: Ard Biesheuvel > >>>>> >> >> > Sent: 01-02-2016 12:31 > >>>>> >> >> > To: M.V.R. Ravikanth > >>>>> >> >> > > >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; > >>>>> >> >> > Linaro > >>>>> >> >> > UEFI > >>>>> >> >> > Mailman > >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S > >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > >>>>> >> >> > > >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth > >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: > >>>>> >> >> >> Ard, > >>>>> >> >> >> I would try to explain here, > >>>>> >> >> >> > >>>>> >> >> >> 1.Till now we have been compiling CPP programs in
UDK
> >>>>> >> >> >> with > >>>>> >> >> >> VS2005/VS2008 > >>>>> >> >> >> as > >>>>> >> >> >> toolchain and it worked well. > >>>>> >> >> >> > >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 > >>>>> >> >> >> architecture > >>>>> >> >> >> with > >>>>> >> >> >> ARMGCC > >>>>> >> >> >> as > >>>>> >> >> >> the toolchain.But when we tried to compile our CPP > >>>>> >> >> >> code/Sample > >>>>> >> >> >> HelloWorld > >>>>> >> >> >> application(HelloWorld.c is renamed to
HelloWorld.cpp)
> >>>>> >> >> >> with > >>>>> >> >> >> ARMGCC > >>>>> >> >> >> as > >>>>> >> >> >> toolchain,we were seeing relocation errors such as > >>>>> >> >> >> 0x105. > >>>>> >> >> >> > >>>>> >> >> >> 3.As advised by you,we tried compiling a sample > >>>>> >> >> >> HelloWorld > >>>>> >> >> >> CPP > >>>>> >> >> >> program > >>>>> >> >> >> under > >>>>> >> >> >> EDK2 and still we are seeing the same relocation > >>>>> >> >> >> errors. > >>>>> >> >> >> > >>>>> >> >> >> Questions: > >>>>> >> >> >> > >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we do > >>>>> >> >> >> to > >>>>> >> >> >> resolve the > >>>>> >> >> >> relocation errors we are observing? > >>>>> >> >> >> > >>>>> >> >> >> Please correct me,if I have missed something. > >>>>> >> >> >> > >>>>> >> >> > > >>>>> >> >> > The relocation errors are a symptom of the fact that > >>>>> >> >> > you > >>>>> >> >> > are > >>>>> >> >> > trying > >>>>> >> >> > to > >>>>> >> >> > link the Linux specific C++ runtime into your EDK2 > >>>>> >> >> > binary. > >>>>> >> >> > This > >>>>> >> >> > is a > >>>>> >> >> > pointless exercise, since the Linux C++ runtime is > >>>>> >> >> > fundamentally > >>>>> >> >> > incompatible with EDK2, So please, don't ask any more > >>>>> >> >> > questions > >>>>> >> >> > about > >>>>> >> >> > relocation errors, and focus on implementing an > >>>>> >> >> > alternative > >>>>> >> >> > C++ > >>>>> >> >> > runtime that maps calls to new() and delete() onto
EDK2
> >>>>> >> >> > APIs, > >>>>> >> >> > i.e., > >>>>> >> >> > AllocatePool and FreePool. Note that you will still > >>>>> >> >> > have > >>>>> >> >> > problems > >>>>> >> >> > with > >>>>> >> >> > symbol decoration, since EDK2 header file don't have > >>>>> >> >> > 'extern > >>>>> >> >> > "C"' > >>>>> >> >> > qualifiers around C declarations. > >>>>> >> >> > > >>>>> >> >> > > >>>>> >> >> > > >>>>> >> >> >> ________________________________ > >>>>> >> >> >> From: Ard Biesheuvel > >>>>> >> >> >> Sent: 01-02-2016 11:59 > >>>>> >> >> >> To: Ravikanth MVR > >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; > >>>>> >> >> >> Linaro > >>>>> >> >> >> UEFI > >>>>> >> >> >> Mailman > >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S > >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 > >>>>> >> >> >> > >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR > >>>>> >> >> >> ravikanth.mvr@avagotech.com > >>>>> >> >> >> wrote: > >>>>> >> >> >>> +Unni. > >>>>> >> >> >>> > >>>>> >> >> >>> Ard, > >>>>> >> >> >>> I have done a native compilation with EDK2 and I am > >>>>> >> >> >>> facing > >>>>> >> >> >>> same > >>>>> >> >> >>> issues > >>>>> >> >> >>> as > >>>>> >> >> >>> I > >>>>> >> >> >>> did before.Below is the snapshot of the errors I > >>>>> >> >> >>> received. > >>>>> >> >> >>> > >>>>> >> >> >> > >>>>> >> >> >> I have explained twice already why C++ under EDK2 is > >>>>> >> >> >> not > >>>>> >> >> >> going > >>>>> >> >> >> to > >>>>> >> >> >> work. What exactly were you expecting? > >>>>> >> >> >> -- > >>>>> >> >> >> Ard. > >>>>> >> >> >> > >>>>> >> >> >> > >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>>>> >> >> >>> WriteSections64(): > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>>>> >> >> >>> make: *** > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >>>>> >> >> >>> Error 2 > >>>>> >> >> >>> WriteRelocations64(): > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> build.py... > >>>>> >> >> >>> : error 7000: Failed to execute command > >>>>> >> >> >>> make --no-print-directory all > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> >>>>> >> >> >>> > >>>>> >> >> >>> - Failed - > >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 > >>>>> >> >> >>> Build total time: 00:00:15 > >>>>> >> >> >>> > >>>>> >> >> >>> Thanks > >>>>> >> >> >>> Ravi > >>>>> >> >> >>> > >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel > >>>>> >> >> >>> ard.biesheuvel@linaro.org > >>>>> >> >> >>> wrote: > >>>>> >> >> >>>> > >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR > >>>>> >> >> >>>> ravikanth.mvr@avagotech.com > >>>>> >> >> >>>> wrote: > >>>>> >> >> >>>> > Ard, > >>>>> >> >> >>>> > I was trying to compile and generate helloworld > >>>>> >> >> >>>> > application via > >>>>> >> >> >>>> > EDK2.Under > >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did > >>>>> >> >> >>>> > not > >>>>> >> >> >>>> > find > >>>>> >> >> >>>> > "Win32" > >>>>> >> >> >>>> > directory > >>>>> >> >> >>>> > which has GenFw utility.But the UDK package has > >>>>> >> >> >>>> > Win32 > >>>>> >> >> >>>> > directory. > >>>>> >> >> >>>> > > >>>>> >> >> >>>> > Could you let me know on how to build and EDK2 > >>>>> >> >> >>>> > package > >>>>> >> >> >>>> > in > >>>>> >> >> >>>> > Windows > >>>>> >> >> >>>> > or > >>>>> >> >> >>>> > else Am > >>>>> >> >> >>>> > I missing something here? > >>>>> >> >> >>>> > > >>>>> >> >> >>>> > >>>>> >> >> >>>> I haven't used Windows for software development
work
> >>>>> >> >> >>>> in > >>>>> >> >> >>>> 15 > >>>>> >> >> >>>> years, > >>>>> >> >> >>>> so > >>>>> >> >> >>>> I > >>>>> >> >> >>>> am really not the person you should be asking
this.
> >>>>> >> >> >>>> > >>>>> >> >> >>>> -- > >>>>> >> >> >>>> Ard. > >>>>> >> >> >>>> > >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR > >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com > >>>>> >> >> >>>> > wrote: > >>>>> >> >> >>>> >> > >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know > >>>>> >> >> >>>> >> the > >>>>> >> >> >>>> >> results. > >>>>> >> >> >>>> >> > >>>>> >> >> >>>> >> Thanks. > >>>>> >> >> >>>> >> > >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard Biesheuvel > >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR > >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com > >>>>> >> >> >>>> >>> wrote: > >>>>> >> >> >>>> >>> > Ard, > >>>>> >> >> >>>> >>> > > >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld
program,which
> >>>>> >> >> >>>> >>> > is > >>>>> >> >> >>>> >>> > part > >>>>> >> >> >>>> >>> > of > >>>>> >> >> >>>> >>> > EDK2 > >>>>> >> >> >>>> >>> > sample > >>>>> >> >> >>>> >>> > programs and which is written in c,is
renamed
> >>>>> >> >> >>>> >>> > to > >>>>> >> >> >>>> >>> > .CPP,we get > >>>>> >> >> >>>> >>> > these > >>>>> >> >> >>>> >>> > relocation issues in-spite of not using any > >>>>> >> >> >>>> >>> > C++ > >>>>> >> >> >>>> >>> > runtime > >>>>> >> >> >>>> >>> > API's. > >>>>> >> >> >>>> >>> > > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> In UDK or EDK2? > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard > >>>>> >> >> >>>> >>> > Biesheuvel > >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org > >>>>> >> >> >>>> >>> > wrote: > >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR > >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com > >>>>> >> >> >>>> >>> >> wrote: > >>>>> >> >> >>>> >>> >> > Hi Ard, > >>>>> >> >> >>>> >>> >> > > >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about the > >>>>> >> >> >>>> >>> >> > 0x105 > >>>>> >> >> >>>> >>> >> > and > >>>>> >> >> >>>> >>> >> > 0x0 > >>>>> >> >> >>>> >>> >> > relocation > >>>>> >> >> >>>> >>> >> > issues > >>>>> >> >> >>>> >>> >> > which we came across while compiling a > >>>>> >> >> >>>> >>> >> > simple > >>>>> >> >> >>>> >>> >> > HelloWorld > >>>>> >> >> >>>> >>> >> > program > >>>>> >> >> >>>> >>> >> > in > >>>>> >> >> >>>> >>> >> > CPP.As > >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 mailing > >>>>> >> >> >>>> >>> >> > list)we > >>>>> >> >> >>>> >>> >> > need > >>>>> >> >> >>>> >>> >> > some > >>>>> >> >> >>>> >>> >> > changes > >>>>> >> >> >>>> >>> >> > to > >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we > >>>>> >> >> >>>> >>> >> > take > >>>>> >> >> >>>> >>> >> > the > >>>>> >> >> >>>> >>> >> > required > >>>>> >> >> >>>> >>> >> > changes > >>>>> >> >> >>>> >>> >> > forward > >>>>> >> >> >>>> >>> >> > and come up with a UDK with this support? > >>>>> >> >> >>>> >>> >> > > >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with this > >>>>> >> >> >>>> >>> >> > activity > >>>>> >> >> >>>> >>> >> > and > >>>>> >> >> >>>> >>> >> > would > >>>>> >> >> >>>> >>> >> > need > >>>>> >> >> >>>> >>> >> > your > >>>>> >> >> >>>> >>> >> > help > >>>>> >> >> >>>> >>> >> > badly. > >>>>> >> >> >>>> >>> >> > > >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your
work
> >>>>> >> >> >>>> >>> >> onto > >>>>> >> >> >>>> >>> >> the > >>>>> >> >> >>>> >>> >> latest > >>>>> >> >> >>>> >>> >> EDK2 > >>>>> >> >> >>>> >>> >> master branch. There have been many changes > >>>>> >> >> >>>> >>> >> to > >>>>> >> >> >>>> >>> >> the > >>>>> >> >> >>>> >>> >> way > >>>>> >> >> >>>> >>> >> relocations > >>>>> >> >> >>>> >>> >> are > >>>>> >> >> >>>> >>> >> handled, which also impose requirements at > >>>>> >> >> >>>> >>> >> link > >>>>> >> >> >>>> >>> >> time > >>>>> >> >> >>>> >>> >> (i.e., > >>>>> >> >> >>>> >>> >> in > >>>>> >> >> >>>> >>> >> terms > >>>>> >> >> >>>> >>> >> of section alignment, and relative offset > >>>>> >> >> >>>> >>> >> between > >>>>> >> >> >>>> >>> >> sections > >>>>> >> >> >>>> >>> >> both > >>>>> >> >> >>>> >>> >> in > >>>>> >> >> >>>> >>> >> the > >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) > >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> However, the relocation issue was due to
the
> >>>>> >> >> >>>> >>> >> fact > >>>>> >> >> >>>> >>> >> that you > >>>>> >> >> >>>> >>> >> were > >>>>> >> >> >>>> >>> >> using > >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, which > >>>>> >> >> >>>> >>> >> you > >>>>> >> >> >>>> >>> >> cannot use > >>>>> >> >> >>>> >>> >> under > >>>>> >> >> >>>> >>> >> EDK2 > >>>>> >> >> >>>> >>> >> even if we do support those relocation
types
> >>>>> >> >> >>>> >>> >> with > >>>>> >> >> >>>> >>> >> the > >>>>> >> >> >>>> >>> >> newer > >>>>> >> >> >>>> >>> >> tools. > >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> Bottom line is that you need to develop
your
> >>>>> >> >> >>>> >>> >> own > >>>>> >> >> >>>> >>> >> C++ > >>>>> >> >> >>>> >>> >> minimal > >>>>> >> >> >>>> >>> >> runtime > >>>>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 > >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, Ravikanth > >>>>> >> >> >>>> >>> >> > MVR > >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com > >>>>> >> >> >>>> >>> >> > wrote: > >>>>> >> >> >>>> >>> >> >> > >>>>> >> >> >>>> >>> >> >> +Sada. > >>>>> >> >> >>>> >>> >> >> > >>>>> >> >> >>>> >>> >> >> Thanks. > >>>>> >> >> >>>> >>> >> >> > >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard > >>>>> >> >> >>>> >>> >> >> Biesheuvel > >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: > >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif > >>>>> >> >> >>>> >>> >> >>> Lindholm > >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org > >>>>> >> >> >>>> >>> >> >>> wrote: > >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, > >>>>> >> >> >>>> >>> >> >>> > > >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my
SPAM
> >>>>> >> >> >>>> >>> >> >>> > folder > >>>>> >> >> >>>> >>> >> >>> > for > >>>>> >> >> >>>> >>> >> >>> > some > >>>>> >> >> >>>> >>> >> >>> > reason. > >>>>> >> >> >>>> >>> >> >>> > > >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM > >>>>> >> >> >>>> >>> >> >>> > -0500, > >>>>> >> >> >>>> >>> >> >>> > Daniel > >>>>> >> >> >>>> >>> >> >>> > Samuelraj > >>>>> >> >> >>>> >>> >> >>> > wrote: > >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files for > >>>>> >> >> >>>> >>> >> >>> >> X64 > >>>>> >> >> >>>> >>> >> >>> >> using > >>>>> >> >> >>>> >>> >> >>> >> UDK2014 > >>>>> >> >> >>>> >>> >> >>> >> by > >>>>> >> >> >>>> >>> >> >>> >> using > >>>>> >> >> >>>> >>> >> >>> >> Visual > >>>>> >> >> >>>> >>> >> >>> >> Studio. > >>>>> >> >> >>>> >>> >> >>> >> > >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same source
for
> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? > >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely > >>>>> >> >> >>>> >>> >> >>> unsupported, > >>>>> >> >> >>>> >>> >> >>> and is > >>>>> >> >> >>>> >>> >> >>> going > >>>>> >> >> >>>> >>> >> >>> to > >>>>> >> >> >>>> >>> >> >>> be > >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note
that
> >>>>> >> >> >>>> >>> >> >>> you > >>>>> >> >> >>>> >>> >> >>> cannot > >>>>> >> >> >>>> >>> >> >>> rely > >>>>> >> >> >>>> >>> >> >>> on > >>>>> >> >> >>>> >>> >> >>> the > >>>>> >> >> >>>> >>> >> >>> C++ > >>>>> >> >> >>>> >>> >> >>> runtime for various reasons (including, > >>>>> >> >> >>>> >>> >> >>> but > >>>>> >> >> >>>> >>> >> >>> not > >>>>> >> >> >>>> >>> >> >>> limited > >>>>> >> >> >>>> >>> >> >>> to, > >>>>> >> >> >>>> >>> >> >>> the > >>>>> >> >> >>>> >>> >> >>> fact > >>>>> >> >> >>>> >>> >> >>> that it uses small model relocations,
and
> >>>>> >> >> >>>> >>> >> >>> is > >>>>> >> >> >>>> >>> >> >>> built > >>>>> >> >> >>>> >>> >> >>> against > >>>>> >> >> >>>> >>> >> >>> libc > >>>>> >> >> >>>> >>> >> >>> on > >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on > >>>>> >> >> >>>> >>> >> >>> Visual > >>>>> >> >> >>>> >>> >> >>> Studio > >>>>> >> >> >>>> >>> >> >>> for > >>>>> >> >> >>>> >>> >> >>> X64, > >>>>> >> >> >>>> >>> >> >>> since > >>>>> >> >> >>>> >>> >> >>> the code you build will try to call
libc
> >>>>> >> >> >>>> >>> >> >>> functions from > >>>>> >> >> >>>> >>> >> >>> the > >>>>> >> >> >>>> >>> >> >>> VC > >>>>> >> >> >>>> >>> >> >>> runtime > >>>>> >> >> >>>> >>> >> >>> library. > >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> There has been some discussion about
this
> >>>>> >> >> >>>> >>> >> >>> recently on > >>>>> >> >> >>>> >>> >> >>> the > >>>>> >> >> >>>> >>> >> >>> list. > >>>>> >> >> >>>> >>> >> >>> If > >>>>> >> >> >>>> >>> >> >>> you > >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and > >>>>> >> >> >>>> >>> >> >>> reimplement > >>>>> >> >> >>>> >>> >> >>> your > >>>>> >> >> >>>> >>> >> >>> new > >>>>> >> >> >>>> >>> >> >>> and > >>>>> >> >> >>>> >>> >> >>> delete > >>>>> >> >> >>>> >>> >> >>> operators, you may be able to build
code
> >>>>> >> >> >>>> >>> >> >>> that > >>>>> >> >> >>>> >>> >> >>> does not > >>>>> >> >> >>>> >>> >> >>> rely > >>>>> >> >> >>>> >>> >> >>> on > >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. > >>>>> >> >> >>>> >>> >> >>> > >>>>> >> >> >>>> >>> >> >>> -- > >>>>> >> >> >>>> >>> >> >>> Ard. > >>>>> >> >> >>>> >>> >> >> > >>>>> >> >> >>>> >>> >> >> > >>>>> >> >> >>>> >>> >> > > >>>>> >> >> >>>> >>> > > >>>>> >> >> >>>> >>> > > >>>>> >> >> >>>> >> > >>>>> >> >> >>>> >> > >>>>> >> >> >>>> > > >>>>> >> >> >>> > >>>>> >> >> >>> > >>>>> >> > > >>>>> >> > > >>>>> > > >>>>> > > >>>> > >>>> > >>> > >> > >
On 5 February 2016 at 16:40, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets -comes up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map -z common-page-size=0x20 --start-group
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
build.py... : error 7000: Failed to execute command make tbuild
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf [AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, We tried out the patch and we are not seeing the relocation errors anymore.But we are seeing a new error from WriteSection64()-"AARCH64 relative relocations require identical ELF and PE/COFF section offsets".Below is the complete snapshot of the error.
Are you using the latest EDK2?
cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
Thanks Ravi
On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > Thanks Ard!Would try out and let you know the results. > > On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> On 4 February 2016 at 20:41, Ravikanth MVR >> ravikanth.mvr@broadcom.com >> wrote: >> > Ard, >> > >> > We built the EDK2 with target set to AARCH64 and GCC48 as the >> > toolchain.Still we are same relocation errors as before.Below is >> > the >> > complete snapshot of the error and map file as well. >> > >> >> Could you try the following patch (don't forget to rebuild >> BaseTools/) >> >> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c >> b/BaseTools/Source/C/GenFw/Elf64Convert.c >> index 90d80a22daf2..0a1329f0f668 100644 >> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c >> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c >> @@ -767,6 +767,9 @@ WriteSections64 ( >> case R_AARCH64_LD_PREL_LO19: >> case R_AARCH64_CALL26: >> case R_AARCH64_JUMP26: >> + case R_AARCH64_PREL64: >> + case R_AARCH64_PREL32: >> + case R_AARCH64_PREL16: >> // >> // The GCC toolchains (i.e., binutils) may corrupt >> section >> relative >> // relocations when emitting relocation sections into >> fully >> linked >> @@ -869,6 +872,11 @@ WriteRelocations64 ( >> case R_AARCH64_JUMP26: >> break; >> >> + case R_AARCH64_PREL64: >> + case R_AARCH64_PREL32: >> + case R_AARCH64_PREL16: >> + break; >> + >> case R_AARCH64_ADR_PREL_PG_HI21: >> case R_AARCH64_ADD_ABS_LO12_NC: >> case R_AARCH64_LDST8_ABS_LO12_NC: >> >> -- >> Ard. >> >> >> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror >> > -Wno-array-bounds -ffunction-sections -fdata-sections -c >> > -include >> > AutoGen.h >> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar >> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror >> > -Wno-array-bounds -c >> > -include AutoGen.h -mcmodel=large -mlittle-endian >> > -fno-short-enums >> > -save-temps -fverbose-asm -fsigned-char -ffunction-sections >> > -fdata-sections >> > -fomit-frame-pointer -fno-builtin -Wno-address >> > -Wno-unused-but-set-variable >> > -o >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj >> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld >> > >> > >> > >> > -I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG >> > -I/home/ekd2_new/MyWorkSpace/MdePkg >> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include >> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 >> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg >> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c >> > "ar" -cr >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib >> > >> > >> > >> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst >> > "ld" -o >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u >> > _ModuleEntryPoint >> > -e >> > _ModuleEntryPoint -Map >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map >> > --start-group >> > >> > >> > >> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst >> > --end-group >> > "echo" objcopy not needed for >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > objcopy not needed for >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > cp -f >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >> > echo --strip-unneeded -R .eh_frame >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > --strip-unneeded -R .eh_frame >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > echo >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > cp -f >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 >> > "GenFw" -e UEFI_APPLICATION -o >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > GenFw: ERROR 3000: Invalid >> > WriteSections64(): >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > unsupported ELF EM_AARCH64 relocation 0x105. >> > GenFw: ERROR 3000: Invalid >> > make: *** >> > >> > >> > >> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >> > Error 2 >> > WriteRelocations64(): >> > >> > >> > >> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> > unsupported ELF EM_AARCH64 relocation 0x105. >> > >> > >> > build.py... >> > : error 7000: Failed to execute command >> > make all >> > >> > >> > >> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >> > >> > - Failed - >> > Build end time: 11:29:54, Feb.04 2016 >> > Build total time: 00:00:09 >> > >> > Thanks >> > Ravi >> > >> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR >> > ravikanth.mvr@broadcom.com >> > wrote: >> >> >> >> Ard, >> >> >> >> I tried building the EDK2 with the below configuration and >> >> ended >> >> up >> >> with >> >> the same result as before.Would try out the scenario with >> >> GCC4.9/GCC4.8 >> >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. Would >> >> let >> >> you know >> >> the results. >> >> >> >> Thanks. >> >> >> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR >> >> ravikanth.mvr@broadcom.com wrote: >> >>> >> >>> Ard, >> >>> Below is my configuration >> >>> >> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >> >>> TARGET = RELEASE >> >>> TARGET_ARCH = AARCH64 >> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt >> >>> TOOL_CHAIN_TAG = GCC49 >> >>> >> >>> And GCC5.0.0 compiler is being used to compile the code or you >> >>> want >> >>> me to >> >>> use the GCC4.9 compiler to compile as well? >> >>> >> >>> Thanks. >> >>> >> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >> >>> ravikanth.mvr@broadcom.com wrote: >> >>>> >> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please >> >>>> correct >> >>>> me if >> >>>> I >> >>>> am wrong. >> >>>> >> >>>> Thanks. >> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >> >>>> ard.biesheuvel@linaro.org wrote: >> >>>>> >> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR >> >>>>> ravikanth.mvr@broadcom.com >> >>>>> wrote: >> >>>>> > Ard, >> >>>>> > >> >>>>> > I have been using GCC5.0.0(Experimental version). >> >>>>> > >> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >> >>>>> > (experimental) >> >>>>> > >> >>>>> > I would try with GCC49/48 and let you know. >> >>>>> > >> >>>>> >> >>>>> I don't mean the actual compiler, I mean the toolchain >> >>>>> definition >> >>>>> in >> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of which >> >>>>> are >> >>>>> suitable for building AArch64. You should use GCC48 or GCC49 >> >>>>> instead >> >>>>> >> >>>>> -- >> >>>>> Ard. >> >>>>> >> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >> >>>>> > ard.biesheuvel@linaro.org >> >>>>> > wrote: >> >>>>> >> >> >>>>> >> It looks like you are using the wrong compiler. You >> >>>>> >> should >> >>>>> >> use >> >>>>> >> GCC48 >> >>>>> >> or GCC49 instead. >> >>>>> >> >> >>>>> >> >> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >> >>>>> >> ravikanth.mvr@broadcom.com >> >>>>> >> wrote: >> >>>>> >> > Thanks Ard!I followed the steps and I could find out >> >>>>> >> > that >> >>>>> >> > NO >> >>>>> >> > standard >> >>>>> >> > library was included.Below is the list of libraries >> >>>>> >> > that >> >>>>> >> > were >> >>>>> >> > getting >> >>>>> >> > included. >> >>>>> >> > >> >>>>> >> > >> >>>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >> >>>>> >> > HelloWorld.lib(AutoGen.obj) >> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >> >>>>> >> > >> >>>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >> >>>>> >> > >> >>>>> >> > >> >>>>> >> > >> >>>>> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >> >>>>> >> > UefiLib.lib(UefiLib.obj) >> >>>>> >> > >> >>>>> >> > >> >>>>> >> > >> >>>>> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >> >>>>> >> > BasePrintLib.lib(PrintLib.obj) >> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) >> >>>>> >> > BaseLib.lib(String.obj) >> >>>>> >> > BaseLib.lib(Unaligned.obj) >> >>>>> >> > BaseLib.lib(Math64.obj) >> >>>>> >> > >> >>>>> >> > I have included .map file as well with this mail. >> >>>>> >> > >> >>>>> >> > Thanks. >> >>>>> >> > >> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >> >>>>> >> > ard.biesheuvel@linaro.org >> >>>>> >> > wrote: >> >>>>> >> >> >> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: >> >>>>> >> >> > Ard, >> >>>>> >> >> > >> >>>>> >> >> > I understand that we have to implement alternative >> >>>>> >> >> > C++ >> >>>>> >> >> > runtime >> >>>>> >> >> > API >> >>>>> >> >> > which >> >>>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool and >> >>>>> >> >> > FreePool. >> >>>>> >> >> > >> >>>>> >> >> > I did implement alternative new and delete >> >>>>> >> >> > API's,which >> >>>>> >> >> > uses >> >>>>> >> >> > AllocatePool >> >>>>> >> >> > and >> >>>>> >> >> > FreePool,for OUR code and most of the relocation >> >>>>> >> >> > errors >> >>>>> >> >> > had >> >>>>> >> >> > gone.BUT >> >>>>> >> >> > when >> >>>>> >> >> > the CPP program(HelloWorld) under compilation >> >>>>> >> >> > doesn't >> >>>>> >> >> > even >> >>>>> >> >> > call >> >>>>> >> >> > the >> >>>>> >> >> > C++ >> >>>>> >> >> > runtime API's,why are we seeing these errors?-This >> >>>>> >> >> > is >> >>>>> >> >> > what >> >>>>> >> >> > I am >> >>>>> >> >> > trying >> >>>>> >> >> > to >> >>>>> >> >> > understand. >> >>>>> >> >> > >> >>>>> >> >> >> >>>>> >> >> If you add a -Map xxx.map option to the linker >> >>>>> >> >> command, >> >>>>> >> >> you >> >>>>> >> >> will >> >>>>> >> >> get a >> >>>>> >> >> map file that tells you exactly which object was >> >>>>> >> >> included >> >>>>> >> >> in >> >>>>> >> >> the >> >>>>> >> >> link, >> >>>>> >> >> and why (iow, which symbol dependency it satisfies) >> >>>>> >> >> That >> >>>>> >> >> way, >> >>>>> >> >> you >> >>>>> >> >> will >> >>>>> >> >> be able to figure out which standard library is >> >>>>> >> >> included, >> >>>>> >> >> and >> >>>>> >> >> for >> >>>>> >> >> which reason. >> >>>>> >> >> >> >>>>> >> >> > Thanks. >> >>>>> >> >> > ________________________________ >> >>>>> >> >> > From: Ard Biesheuvel >> >>>>> >> >> > Sent: 01-02-2016 12:31 >> >>>>> >> >> > To: M.V.R. Ravikanth >> >>>>> >> >> > >> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >> >>>>> >> >> > Linaro >> >>>>> >> >> > UEFI >> >>>>> >> >> > Mailman >> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files ARM64 >> >>>>> >> >> > >> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: >> >>>>> >> >> >> Ard, >> >>>>> >> >> >> I would try to explain here, >> >>>>> >> >> >> >> >>>>> >> >> >> 1.Till now we have been compiling CPP programs in >> >>>>> >> >> >> UDK >> >>>>> >> >> >> with >> >>>>> >> >> >> VS2005/VS2008 >> >>>>> >> >> >> as >> >>>>> >> >> >> toolchain and it worked well. >> >>>>> >> >> >> >> >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >> >>>>> >> >> >> architecture >> >>>>> >> >> >> with >> >>>>> >> >> >> ARMGCC >> >>>>> >> >> >> as >> >>>>> >> >> >> the toolchain.But when we tried to compile our CPP >> >>>>> >> >> >> code/Sample >> >>>>> >> >> >> HelloWorld >> >>>>> >> >> >> application(HelloWorld.c is renamed to >> >>>>> >> >> >> HelloWorld.cpp) >> >>>>> >> >> >> with >> >>>>> >> >> >> ARMGCC >> >>>>> >> >> >> as >> >>>>> >> >> >> toolchain,we were seeing relocation errors such as >> >>>>> >> >> >> 0x105. >> >>>>> >> >> >> >> >>>>> >> >> >> 3.As advised by you,we tried compiling a sample >> >>>>> >> >> >> HelloWorld >> >>>>> >> >> >> CPP >> >>>>> >> >> >> program >> >>>>> >> >> >> under >> >>>>> >> >> >> EDK2 and still we are seeing the same relocation >> >>>>> >> >> >> errors. >> >>>>> >> >> >> >> >>>>> >> >> >> Questions: >> >>>>> >> >> >> >> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we >> >>>>> >> >> >> do >> >>>>> >> >> >> to >> >>>>> >> >> >> resolve the >> >>>>> >> >> >> relocation errors we are observing? >> >>>>> >> >> >> >> >>>>> >> >> >> Please correct me,if I have missed something. >> >>>>> >> >> >> >> >>>>> >> >> > >> >>>>> >> >> > The relocation errors are a symptom of the fact that >> >>>>> >> >> > you >> >>>>> >> >> > are >> >>>>> >> >> > trying >> >>>>> >> >> > to >> >>>>> >> >> > link the Linux specific C++ runtime into your EDK2 >> >>>>> >> >> > binary. >> >>>>> >> >> > This >> >>>>> >> >> > is a >> >>>>> >> >> > pointless exercise, since the Linux C++ runtime is >> >>>>> >> >> > fundamentally >> >>>>> >> >> > incompatible with EDK2, So please, don't ask any >> >>>>> >> >> > more >> >>>>> >> >> > questions >> >>>>> >> >> > about >> >>>>> >> >> > relocation errors, and focus on implementing an >> >>>>> >> >> > alternative >> >>>>> >> >> > C++ >> >>>>> >> >> > runtime that maps calls to new() and delete() onto >> >>>>> >> >> > EDK2 >> >>>>> >> >> > APIs, >> >>>>> >> >> > i.e., >> >>>>> >> >> > AllocatePool and FreePool. Note that you will still >> >>>>> >> >> > have >> >>>>> >> >> > problems >> >>>>> >> >> > with >> >>>>> >> >> > symbol decoration, since EDK2 header file don't have >> >>>>> >> >> > 'extern >> >>>>> >> >> > "C"' >> >>>>> >> >> > qualifiers around C declarations. >> >>>>> >> >> > >> >>>>> >> >> > >> >>>>> >> >> > >> >>>>> >> >> >> ________________________________ >> >>>>> >> >> >> From: Ard Biesheuvel >> >>>>> >> >> >> Sent: 01-02-2016 11:59 >> >>>>> >> >> >> To: Ravikanth MVR >> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning Wang; >> >>>>> >> >> >> Linaro >> >>>>> >> >> >> UEFI >> >>>>> >> >> >> Mailman >> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files >> >>>>> >> >> >> ARM64 >> >>>>> >> >> >> >> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> >>>>> >> >> >> ravikanth.mvr@avagotech.com >> >>>>> >> >> >> wrote: >> >>>>> >> >> >>> +Unni. >> >>>>> >> >> >>> >> >>>>> >> >> >>> Ard, >> >>>>> >> >> >>> I have done a native compilation with EDK2 and I >> >>>>> >> >> >>> am >> >>>>> >> >> >>> facing >> >>>>> >> >> >>> same >> >>>>> >> >> >>> issues >> >>>>> >> >> >>> as >> >>>>> >> >> >>> I >> >>>>> >> >> >>> did before.Below is the snapshot of the errors I >> >>>>> >> >> >>> received. >> >>>>> >> >> >>> >> >>>>> >> >> >> >> >>>>> >> >> >> I have explained twice already why C++ under EDK2 >> >>>>> >> >> >> is >> >>>>> >> >> >> not >> >>>>> >> >> >> going >> >>>>> >> >> >> to >> >>>>> >> >> >> work. What exactly were you expecting? >> >>>>> >> >> >> -- >> >>>>> >> >> >> Ard. >> >>>>> >> >> >> >> >>>>> >> >> >> >> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >> >>>>> >> >> >>> WriteSections64(): >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >> >>>>> >> >> >>> make: *** >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >> >>>>> >> >> >>> Error 2 >> >>>>> >> >> >>> WriteRelocations64(): >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> build.py... >> >>>>> >> >> >>> : error 7000: Failed to execute command >> >>>>> >> >> >>> make --no-print-directory all >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >> >>>>> >> >> >>> >> >>>>> >> >> >>> - Failed - >> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >> >>>>> >> >> >>> Build total time: 00:00:15 >> >>>>> >> >> >>> >> >>>>> >> >> >>> Thanks >> >>>>> >> >> >>> Ravi >> >>>>> >> >> >>> >> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >> >>>>> >> >> >>> ard.biesheuvel@linaro.org >> >>>>> >> >> >>> wrote: >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com >> >>>>> >> >> >>>> wrote: >> >>>>> >> >> >>>> > Ard, >> >>>>> >> >> >>>> > I was trying to compile and generate helloworld >> >>>>> >> >> >>>> > application via >> >>>>> >> >> >>>> > EDK2.Under >> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I did >> >>>>> >> >> >>>> > not >> >>>>> >> >> >>>> > find >> >>>>> >> >> >>>> > "Win32" >> >>>>> >> >> >>>> > directory >> >>>>> >> >> >>>> > which has GenFw utility.But the UDK package has >> >>>>> >> >> >>>> > Win32 >> >>>>> >> >> >>>> > directory. >> >>>>> >> >> >>>> > >> >>>>> >> >> >>>> > Could you let me know on how to build and EDK2 >> >>>>> >> >> >>>> > package >> >>>>> >> >> >>>> > in >> >>>>> >> >> >>>> > Windows >> >>>>> >> >> >>>> > or >> >>>>> >> >> >>>> > else Am >> >>>>> >> >> >>>> > I missing something here? >> >>>>> >> >> >>>> > >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> I haven't used Windows for software development >> >>>>> >> >> >>>> work >> >>>>> >> >> >>>> in >> >>>>> >> >> >>>> 15 >> >>>>> >> >> >>>> years, >> >>>>> >> >> >>>> so >> >>>>> >> >> >>>> I >> >>>>> >> >> >>>> am really not the person you should be asking >> >>>>> >> >> >>>> this. >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> -- >> >>>>> >> >> >>>> Ard. >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth MVR >> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com >> >>>>> >> >> >>>> > wrote: >> >>>>> >> >> >>>> >> >> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you know >> >>>>> >> >> >>>> >> the >> >>>>> >> >> >>>> >> results. >> >>>>> >> >> >>>> >> >> >>>>> >> >> >>>> >> Thanks. >> >>>>> >> >> >>>> >> >> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard >> >>>>> >> >> >>>> >> Biesheuvel >> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >> >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >> >>>>> >> >> >>>> >>> wrote: >> >>>>> >> >> >>>> >>> > Ard, >> >>>>> >> >> >>>> >>> > >> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld >> >>>>> >> >> >>>> >>> > program,which >> >>>>> >> >> >>>> >>> > is >> >>>>> >> >> >>>> >>> > part >> >>>>> >> >> >>>> >>> > of >> >>>>> >> >> >>>> >>> > EDK2 >> >>>>> >> >> >>>> >>> > sample >> >>>>> >> >> >>>> >>> > programs and which is written in c,is >> >>>>> >> >> >>>> >>> > renamed >> >>>>> >> >> >>>> >>> > to >> >>>>> >> >> >>>> >>> > .CPP,we get >> >>>>> >> >> >>>> >>> > these >> >>>>> >> >> >>>> >>> > relocation issues in-spite of not using any >> >>>>> >> >> >>>> >>> > C++ >> >>>>> >> >> >>>> >>> > runtime >> >>>>> >> >> >>>> >>> > API's. >> >>>>> >> >> >>>> >>> > >> >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> In UDK or EDK2? >> >>>>> >> >> >>>> >>> >> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard >> >>>>> >> >> >>>> >>> > Biesheuvel >> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >> >>>>> >> >> >>>> >>> > wrote: >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth MVR >> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >> >>>>> >> >> >>>> >>> >> wrote: >> >>>>> >> >> >>>> >>> >> > Hi Ard, >> >>>>> >> >> >>>> >>> >> > >> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about the >> >>>>> >> >> >>>> >>> >> > 0x105 >> >>>>> >> >> >>>> >>> >> > and >> >>>>> >> >> >>>> >>> >> > 0x0 >> >>>>> >> >> >>>> >>> >> > relocation >> >>>>> >> >> >>>> >>> >> > issues >> >>>>> >> >> >>>> >>> >> > which we came across while compiling a >> >>>>> >> >> >>>> >>> >> > simple >> >>>>> >> >> >>>> >>> >> > HelloWorld >> >>>>> >> >> >>>> >>> >> > program >> >>>>> >> >> >>>> >>> >> > in >> >>>>> >> >> >>>> >>> >> > CPP.As >> >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 >> >>>>> >> >> >>>> >>> >> > mailing >> >>>>> >> >> >>>> >>> >> > list)we >> >>>>> >> >> >>>> >>> >> > need >> >>>>> >> >> >>>> >>> >> > some >> >>>>> >> >> >>>> >>> >> > changes >> >>>>> >> >> >>>> >>> >> > to >> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can we >> >>>>> >> >> >>>> >>> >> > take >> >>>>> >> >> >>>> >>> >> > the >> >>>>> >> >> >>>> >>> >> > required >> >>>>> >> >> >>>> >>> >> > changes >> >>>>> >> >> >>>> >>> >> > forward >> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this >> >>>>> >> >> >>>> >>> >> > support? >> >>>>> >> >> >>>> >>> >> > >> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with this >> >>>>> >> >> >>>> >>> >> > activity >> >>>>> >> >> >>>> >>> >> > and >> >>>>> >> >> >>>> >>> >> > would >> >>>>> >> >> >>>> >>> >> > need >> >>>>> >> >> >>>> >>> >> > your >> >>>>> >> >> >>>> >>> >> > help >> >>>>> >> >> >>>> >>> >> > badly. >> >>>>> >> >> >>>> >>> >> > >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your >> >>>>> >> >> >>>> >>> >> work >> >>>>> >> >> >>>> >>> >> onto >> >>>>> >> >> >>>> >>> >> the >> >>>>> >> >> >>>> >>> >> latest >> >>>>> >> >> >>>> >>> >> EDK2 >> >>>>> >> >> >>>> >>> >> master branch. There have been many >> >>>>> >> >> >>>> >>> >> changes >> >>>>> >> >> >>>> >>> >> to >> >>>>> >> >> >>>> >>> >> the >> >>>>> >> >> >>>> >>> >> way >> >>>>> >> >> >>>> >>> >> relocations >> >>>>> >> >> >>>> >>> >> are >> >>>>> >> >> >>>> >>> >> handled, which also impose requirements at >> >>>>> >> >> >>>> >>> >> link >> >>>>> >> >> >>>> >>> >> time >> >>>>> >> >> >>>> >>> >> (i.e., >> >>>>> >> >> >>>> >>> >> in >> >>>>> >> >> >>>> >>> >> terms >> >>>>> >> >> >>>> >>> >> of section alignment, and relative offset >> >>>>> >> >> >>>> >>> >> between >> >>>>> >> >> >>>> >>> >> sections >> >>>>> >> >> >>>> >>> >> both >> >>>>> >> >> >>>> >>> >> in >> >>>>> >> >> >>>> >>> >> the >> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the image) >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> However, the relocation issue was due to >> >>>>> >> >> >>>> >>> >> the >> >>>>> >> >> >>>> >>> >> fact >> >>>>> >> >> >>>> >>> >> that you >> >>>>> >> >> >>>> >>> >> were >> >>>>> >> >> >>>> >>> >> using >> >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, >> >>>>> >> >> >>>> >>> >> which >> >>>>> >> >> >>>> >>> >> you >> >>>>> >> >> >>>> >>> >> cannot use >> >>>>> >> >> >>>> >>> >> under >> >>>>> >> >> >>>> >>> >> EDK2 >> >>>>> >> >> >>>> >>> >> even if we do support those relocation >> >>>>> >> >> >>>> >>> >> types >> >>>>> >> >> >>>> >>> >> with >> >>>>> >> >> >>>> >>> >> the >> >>>>> >> >> >>>> >>> >> newer >> >>>>> >> >> >>>> >>> >> tools. >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> Bottom line is that you need to develop >> >>>>> >> >> >>>> >>> >> your >> >>>>> >> >> >>>> >>> >> own >> >>>>> >> >> >>>> >>> >> C++ >> >>>>> >> >> >>>> >>> >> minimal >> >>>>> >> >> >>>> >>> >> runtime >> >>>>> >> >> >>>> >>> >> if you want to run C++ programs under EDK2 >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, >> >>>>> >> >> >>>> >>> >> > Ravikanth >> >>>>> >> >> >>>> >>> >> > MVR >> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >> >>>>> >> >> >>>> >>> >> > wrote: >> >>>>> >> >> >>>> >>> >> >> >> >>>>> >> >> >>>> >>> >> >> +Sada. >> >>>>> >> >> >>>> >>> >> >> >> >>>>> >> >> >>>> >>> >> >> Thanks. >> >>>>> >> >> >>>> >>> >> >> >> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >> >>>>> >> >> >>>> >>> >> >> Biesheuvel >> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >> >>>>> >> >> >>>> >>> >> >>> >> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif >> >>>>> >> >> >>>> >>> >> >>> Lindholm >> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >> >>>>> >> >> >>>> >>> >> >>> wrote: >> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, >> >>>>> >> >> >>>> >>> >> >>> > >> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my >> >>>>> >> >> >>>> >>> >> >>> > SPAM >> >>>>> >> >> >>>> >>> >> >>> > folder >> >>>>> >> >> >>>> >>> >> >>> > for >> >>>>> >> >> >>>> >>> >> >>> > some >> >>>>> >> >> >>>> >>> >> >>> > reason. >> >>>>> >> >> >>>> >>> >> >>> > >> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM >> >>>>> >> >> >>>> >>> >> >>> > -0500, >> >>>>> >> >> >>>> >>> >> >>> > Daniel >> >>>>> >> >> >>>> >>> >> >>> > Samuelraj >> >>>>> >> >> >>>> >>> >> >>> > wrote: >> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files >> >>>>> >> >> >>>> >>> >> >>> >> for >> >>>>> >> >> >>>> >>> >> >>> >> X64 >> >>>>> >> >> >>>> >>> >> >>> >> using >> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 >> >>>>> >> >> >>>> >>> >> >>> >> by >> >>>>> >> >> >>>> >>> >> >>> >> using >> >>>>> >> >> >>>> >>> >> >>> >> Visual >> >>>>> >> >> >>>> >>> >> >>> >> Studio. >> >>>>> >> >> >>>> >>> >> >>> >> >> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same source >> >>>>> >> >> >>>> >>> >> >>> >> for >> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? >> >>>>> >> >> >>>> >>> >> >>> >> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >> >>>>> >> >> >>>> >>> >> >>> unsupported, >> >>>>> >> >> >>>> >>> >> >>> and is >> >>>>> >> >> >>>> >>> >> >>> going >> >>>>> >> >> >>>> >>> >> >>> to >> >>>>> >> >> >>>> >>> >> >>> be >> >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note >> >>>>> >> >> >>>> >>> >> >>> that >> >>>>> >> >> >>>> >>> >> >>> you >> >>>>> >> >> >>>> >>> >> >>> cannot >> >>>>> >> >> >>>> >>> >> >>> rely >> >>>>> >> >> >>>> >>> >> >>> on >> >>>>> >> >> >>>> >>> >> >>> the >> >>>>> >> >> >>>> >>> >> >>> C++ >> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons >> >>>>> >> >> >>>> >>> >> >>> (including, >> >>>>> >> >> >>>> >>> >> >>> but >> >>>>> >> >> >>>> >>> >> >>> not >> >>>>> >> >> >>>> >>> >> >>> limited >> >>>>> >> >> >>>> >>> >> >>> to, >> >>>>> >> >> >>>> >>> >> >>> the >> >>>>> >> >> >>>> >>> >> >>> fact >> >>>>> >> >> >>>> >>> >> >>> that it uses small model relocations, >> >>>>> >> >> >>>> >>> >> >>> and >> >>>>> >> >> >>>> >>> >> >>> is >> >>>>> >> >> >>>> >>> >> >>> built >> >>>>> >> >> >>>> >>> >> >>> against >> >>>>> >> >> >>>> >>> >> >>> libc >> >>>>> >> >> >>>> >>> >> >>> on >> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works on >> >>>>> >> >> >>>> >>> >> >>> Visual >> >>>>> >> >> >>>> >>> >> >>> Studio >> >>>>> >> >> >>>> >>> >> >>> for >> >>>>> >> >> >>>> >>> >> >>> X64, >> >>>>> >> >> >>>> >>> >> >>> since >> >>>>> >> >> >>>> >>> >> >>> the code you build will try to call >> >>>>> >> >> >>>> >>> >> >>> libc >> >>>>> >> >> >>>> >>> >> >>> functions from >> >>>>> >> >> >>>> >>> >> >>> the >> >>>>> >> >> >>>> >>> >> >>> VC >> >>>>> >> >> >>>> >>> >> >>> runtime >> >>>>> >> >> >>>> >>> >> >>> library. >> >>>>> >> >> >>>> >>> >> >>> >> >>>>> >> >> >>>> >>> >> >>> There has been some discussion about >> >>>>> >> >> >>>> >>> >> >>> this >> >>>>> >> >> >>>> >>> >> >>> recently on >> >>>>> >> >> >>>> >>> >> >>> the >> >>>>> >> >> >>>> >>> >> >>> list. >> >>>>> >> >> >>>> >>> >> >>> If >> >>>>> >> >> >>>> >>> >> >>> you >> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >> >>>>> >> >> >>>> >>> >> >>> reimplement >> >>>>> >> >> >>>> >>> >> >>> your >> >>>>> >> >> >>>> >>> >> >>> new >> >>>>> >> >> >>>> >>> >> >>> and >> >>>>> >> >> >>>> >>> >> >>> delete >> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to build >> >>>>> >> >> >>>> >>> >> >>> code >> >>>>> >> >> >>>> >>> >> >>> that >> >>>>> >> >> >>>> >>> >> >>> does not >> >>>>> >> >> >>>> >>> >> >>> rely >> >>>>> >> >> >>>> >>> >> >>> on >> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >> >>>>> >> >> >>>> >>> >> >>> >> >>>>> >> >> >>>> >>> >> >>> -- >> >>>>> >> >> >>>> >>> >> >>> Ard. >> >>>>> >> >> >>>> >>> >> >> >> >>>>> >> >> >>>> >>> >> >> >> >>>>> >> >> >>>> >>> >> > >> >>>>> >> >> >>>> >>> > >> >>>>> >> >> >>>> >>> > >> >>>>> >> >> >>>> >> >> >>>>> >> >> >>>> >> >> >>>>> >> >> >>>> > >> >>>>> >> >> >>> >> >>>>> >> >> >>> >> >>>>> >> > >> >>>>> >> > >> >>>>> > >> >>>>> > >> >>>> >> >>>> >> >>> >> >> >> > > >
Ard, OK.I am not passing -fno-exceptions.Would change the same and let you know.
Which command line of the C++ compiler? I din't get it.
Thanks Ravi
On Fri, Feb 5, 2016 at 9:16 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:40, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64
relative
relocations require identical ELF and PE/COFF section offsets -comes
up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g
-Os
-fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
-z common-page-size=0x20 --start-group
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
build.py... : error 7000: Failed to execute command make tbuild
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
[AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from
https://github.com/tianocore/edk2.If
you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 15:30, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > Ard, > We tried out the patch and we are not seeing the relocation errors > anymore.But we are seeing a new error from
WriteSection64()-"AARCH64
> relative relocations require identical ELF and PE/COFF section > offsets".Below is the complete snapshot of the error. >
Are you using the latest EDK2?
> cp -f > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> echo --strip-unneeded -R .eh_frame > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> --strip-unneeded -R .eh_frame > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> echo > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> cp -f > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > "GenFw" -e UEFI_APPLICATION -o > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> GenFw: ERROR 3000: Invalid > WriteSections64(): > > >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> AARCH64 relative relocations require identical ELF and PE/COFF > section > offsets > make: *** > > >
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> Error 2 > > Thanks > Ravi > > On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: >> >> Thanks Ard!Would try out and let you know the results. >> >> On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org >> wrote: >>> >>> On 4 February 2016 at 20:41, Ravikanth MVR >>> ravikanth.mvr@broadcom.com >>> wrote: >>> > Ard, >>> > >>> > We built the EDK2 with target set to AARCH64 and GCC48 as the >>> > toolchain.Still we are same relocation errors as before.Below
is
>>> > the >>> > complete snapshot of the error and map file as well. >>> > >>> >>> Could you try the following patch (don't forget to rebuild >>> BaseTools/) >>> >>> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c >>> b/BaseTools/Source/C/GenFw/Elf64Convert.c >>> index 90d80a22daf2..0a1329f0f668 100644 >>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c >>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c >>> @@ -767,6 +767,9 @@ WriteSections64 ( >>> case R_AARCH64_LD_PREL_LO19: >>> case R_AARCH64_CALL26: >>> case R_AARCH64_JUMP26: >>> + case R_AARCH64_PREL64: >>> + case R_AARCH64_PREL32: >>> + case R_AARCH64_PREL16: >>> // >>> // The GCC toolchains (i.e., binutils) may corrupt >>> section >>> relative >>> // relocations when emitting relocation sections
into
>>> fully >>> linked >>> @@ -869,6 +872,11 @@ WriteRelocations64 ( >>> case R_AARCH64_JUMP26: >>> break; >>> >>> + case R_AARCH64_PREL64: >>> + case R_AARCH64_PREL32: >>> + case R_AARCH64_PREL16: >>> + break; >>> + >>> case R_AARCH64_ADR_PREL_PG_HI21: >>> case R_AARCH64_ADD_ABS_LO12_NC: >>> case R_AARCH64_LDST8_ABS_LO12_NC: >>> >>> -- >>> Ard. >>> >>> >>> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror >>> > -Wno-array-bounds -ffunction-sections -fdata-sections -c >>> > -include >>> > AutoGen.h >>> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar >>> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror >>> > -Wno-array-bounds -c >>> > -include AutoGen.h -mcmodel=large -mlittle-endian >>> > -fno-short-enums >>> > -save-temps -fverbose-asm -fsigned-char -ffunction-sections >>> > -fdata-sections >>> > -fomit-frame-pointer -fno-builtin -Wno-address >>> > -Wno-unused-but-set-variable >>> > -o >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
>>> >
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
>>> > >>> > >>> > >>> >
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
>>> > -I/home/ekd2_new/MyWorkSpace/MdePkg >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
>>> > "ar" -cr >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
>>> > >>> > >>> > >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
>>> > "ld" -o >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u >>> > _ModuleEntryPoint >>> > -e >>> > _ModuleEntryPoint -Map >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
>>> > --start-group >>> > >>> > >>> > >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
>>> > --end-group >>> > "echo" objcopy not needed for >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > objcopy not needed for >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > cp -f >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>>> > echo --strip-unneeded -R .eh_frame >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > --strip-unneeded -R .eh_frame >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > echo >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > cp -f >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
>>> > "GenFw" -e UEFI_APPLICATION -o >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > GenFw: ERROR 3000: Invalid >>> > WriteSections64(): >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > unsupported ELF EM_AARCH64 relocation 0x105. >>> > GenFw: ERROR 3000: Invalid >>> > make: *** >>> > >>> > >>> > >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>>> > Error 2 >>> > WriteRelocations64(): >>> > >>> > >>> > >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> > unsupported ELF EM_AARCH64 relocation 0x105. >>> > >>> > >>> > build.py... >>> > : error 7000: Failed to execute command >>> > make all >>> > >>> > >>> > >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>>> > >>> > - Failed - >>> > Build end time: 11:29:54, Feb.04 2016 >>> > Build total time: 00:00:09 >>> > >>> > Thanks >>> > Ravi >>> > >>> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR >>> > ravikanth.mvr@broadcom.com >>> > wrote: >>> >> >>> >> Ard, >>> >> >>> >> I tried building the EDK2 with the below configuration and >>> >> ended >>> >> up >>> >> with >>> >> the same result as before.Would try out the scenario with >>> >> GCC4.9/GCC4.8 >>> >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64.
Would
>>> >> let >>> >> you know >>> >> the results. >>> >> >>> >> Thanks. >>> >> >>> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR >>> >> ravikanth.mvr@broadcom.com wrote: >>> >>> >>> >>> Ard, >>> >>> Below is my configuration >>> >>> >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >>> >>> TARGET = RELEASE >>> >>> TARGET_ARCH = AARCH64 >>> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt >>> >>> TOOL_CHAIN_TAG = GCC49 >>> >>> >>> >>> And GCC5.0.0 compiler is being used to compile the code or
you
>>> >>> want >>> >>> me to >>> >>> use the GCC4.9 compiler to compile as well? >>> >>> >>> >>> Thanks. >>> >>> >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >>> >>> ravikanth.mvr@broadcom.com wrote: >>> >>>> >>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please >>> >>>> correct >>> >>>> me if >>> >>>> I >>> >>>> am wrong. >>> >>>> >>> >>>> Thanks. >>> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >>> >>>> ard.biesheuvel@linaro.org wrote: >>> >>>>> >>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR >>> >>>>> ravikanth.mvr@broadcom.com >>> >>>>> wrote: >>> >>>>> > Ard, >>> >>>>> > >>> >>>>> > I have been using GCC5.0.0(Experimental version). >>> >>>>> > >>> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 >>> >>>>> > (experimental) >>> >>>>> > >>> >>>>> > I would try with GCC49/48 and let you know. >>> >>>>> > >>> >>>>> >>> >>>>> I don't mean the actual compiler, I mean the toolchain >>> >>>>> definition >>> >>>>> in >>> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of
which
>>> >>>>> are >>> >>>>> suitable for building AArch64. You should use GCC48 or
GCC49
>>> >>>>> instead >>> >>>>> >>> >>>>> -- >>> >>>>> Ard. >>> >>>>> >>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>> >>>>> > ard.biesheuvel@linaro.org >>> >>>>> > wrote: >>> >>>>> >> >>> >>>>> >> It looks like you are using the wrong compiler. You >>> >>>>> >> should >>> >>>>> >> use >>> >>>>> >> GCC48 >>> >>>>> >> or GCC49 instead. >>> >>>>> >> >>> >>>>> >> >>> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>> >>>>> >> ravikanth.mvr@broadcom.com >>> >>>>> >> wrote: >>> >>>>> >> > Thanks Ard!I followed the steps and I could find out >>> >>>>> >> > that >>> >>>>> >> > NO >>> >>>>> >> > standard >>> >>>>> >> > library was included.Below is the list of libraries >>> >>>>> >> > that >>> >>>>> >> > were >>> >>>>> >> > getting >>> >>>>> >> > included. >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> >
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj)
>>> >>>>> >> > HelloWorld.lib(AutoGen.obj) >>> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>> >>>>> >> > >>> >>>>> >> >
UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj)
>>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
>>> >>>>> >> > UefiLib.lib(UefiLib.obj) >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
>>> >>>>> >> > BasePrintLib.lib(PrintLib.obj) >>> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) >>> >>>>> >> > BaseLib.lib(String.obj) >>> >>>>> >> > BaseLib.lib(Unaligned.obj) >>> >>>>> >> > BaseLib.lib(Math64.obj) >>> >>>>> >> > >>> >>>>> >> > I have included .map file as well with this mail. >>> >>>>> >> > >>> >>>>> >> > Thanks. >>> >>>>> >> > >>> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>> >>>>> >> > ard.biesheuvel@linaro.org >>> >>>>> >> > wrote: >>> >>>>> >> >> >>> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: >>> >>>>> >> >> > Ard, >>> >>>>> >> >> > >>> >>>>> >> >> > I understand that we have to implement alternative >>> >>>>> >> >> > C++ >>> >>>>> >> >> > runtime >>> >>>>> >> >> > API >>> >>>>> >> >> > which >>> >>>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool
and
>>> >>>>> >> >> > FreePool. >>> >>>>> >> >> > >>> >>>>> >> >> > I did implement alternative new and delete >>> >>>>> >> >> > API's,which >>> >>>>> >> >> > uses >>> >>>>> >> >> > AllocatePool >>> >>>>> >> >> > and >>> >>>>> >> >> > FreePool,for OUR code and most of the relocation >>> >>>>> >> >> > errors >>> >>>>> >> >> > had >>> >>>>> >> >> > gone.BUT >>> >>>>> >> >> > when >>> >>>>> >> >> > the CPP program(HelloWorld) under compilation >>> >>>>> >> >> > doesn't >>> >>>>> >> >> > even >>> >>>>> >> >> > call >>> >>>>> >> >> > the >>> >>>>> >> >> > C++ >>> >>>>> >> >> > runtime API's,why are we seeing these errors?-This >>> >>>>> >> >> > is >>> >>>>> >> >> > what >>> >>>>> >> >> > I am >>> >>>>> >> >> > trying >>> >>>>> >> >> > to >>> >>>>> >> >> > understand. >>> >>>>> >> >> > >>> >>>>> >> >> >>> >>>>> >> >> If you add a -Map xxx.map option to the linker >>> >>>>> >> >> command, >>> >>>>> >> >> you >>> >>>>> >> >> will >>> >>>>> >> >> get a >>> >>>>> >> >> map file that tells you exactly which object was >>> >>>>> >> >> included >>> >>>>> >> >> in >>> >>>>> >> >> the >>> >>>>> >> >> link, >>> >>>>> >> >> and why (iow, which symbol dependency it satisfies) >>> >>>>> >> >> That >>> >>>>> >> >> way, >>> >>>>> >> >> you >>> >>>>> >> >> will >>> >>>>> >> >> be able to figure out which standard library is >>> >>>>> >> >> included, >>> >>>>> >> >> and >>> >>>>> >> >> for >>> >>>>> >> >> which reason. >>> >>>>> >> >> >>> >>>>> >> >> > Thanks. >>> >>>>> >> >> > ________________________________ >>> >>>>> >> >> > From: Ard Biesheuvel >>> >>>>> >> >> > Sent: 01-02-2016 12:31 >>> >>>>> >> >> > To: M.V.R. Ravikanth >>> >>>>> >> >> > >>> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning
Wang;
>>> >>>>> >> >> > Linaro >>> >>>>> >> >> > UEFI >>> >>>>> >> >> > Mailman >>> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files
ARM64
>>> >>>>> >> >> > >>> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: >>> >>>>> >> >> >> Ard, >>> >>>>> >> >> >> I would try to explain here, >>> >>>>> >> >> >> >>> >>>>> >> >> >> 1.Till now we have been compiling CPP programs in >>> >>>>> >> >> >> UDK >>> >>>>> >> >> >> with >>> >>>>> >> >> >> VS2005/VS2008 >>> >>>>> >> >> >> as >>> >>>>> >> >> >> toolchain and it worked well. >>> >>>>> >> >> >> >>> >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >>> >>>>> >> >> >> architecture >>> >>>>> >> >> >> with >>> >>>>> >> >> >> ARMGCC >>> >>>>> >> >> >> as >>> >>>>> >> >> >> the toolchain.But when we tried to compile our
CPP
>>> >>>>> >> >> >> code/Sample >>> >>>>> >> >> >> HelloWorld >>> >>>>> >> >> >> application(HelloWorld.c is renamed to >>> >>>>> >> >> >> HelloWorld.cpp) >>> >>>>> >> >> >> with >>> >>>>> >> >> >> ARMGCC >>> >>>>> >> >> >> as >>> >>>>> >> >> >> toolchain,we were seeing relocation errors such
as
>>> >>>>> >> >> >> 0x105. >>> >>>>> >> >> >> >>> >>>>> >> >> >> 3.As advised by you,we tried compiling a sample >>> >>>>> >> >> >> HelloWorld >>> >>>>> >> >> >> CPP >>> >>>>> >> >> >> program >>> >>>>> >> >> >> under >>> >>>>> >> >> >> EDK2 and still we are seeing the same relocation >>> >>>>> >> >> >> errors. >>> >>>>> >> >> >> >>> >>>>> >> >> >> Questions: >>> >>>>> >> >> >> >>> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should we >>> >>>>> >> >> >> do >>> >>>>> >> >> >> to >>> >>>>> >> >> >> resolve the >>> >>>>> >> >> >> relocation errors we are observing? >>> >>>>> >> >> >> >>> >>>>> >> >> >> Please correct me,if I have missed something. >>> >>>>> >> >> >> >>> >>>>> >> >> > >>> >>>>> >> >> > The relocation errors are a symptom of the fact
that
>>> >>>>> >> >> > you >>> >>>>> >> >> > are >>> >>>>> >> >> > trying >>> >>>>> >> >> > to >>> >>>>> >> >> > link the Linux specific C++ runtime into your EDK2 >>> >>>>> >> >> > binary. >>> >>>>> >> >> > This >>> >>>>> >> >> > is a >>> >>>>> >> >> > pointless exercise, since the Linux C++ runtime is >>> >>>>> >> >> > fundamentally >>> >>>>> >> >> > incompatible with EDK2, So please, don't ask any >>> >>>>> >> >> > more >>> >>>>> >> >> > questions >>> >>>>> >> >> > about >>> >>>>> >> >> > relocation errors, and focus on implementing an >>> >>>>> >> >> > alternative >>> >>>>> >> >> > C++ >>> >>>>> >> >> > runtime that maps calls to new() and delete() onto >>> >>>>> >> >> > EDK2 >>> >>>>> >> >> > APIs, >>> >>>>> >> >> > i.e., >>> >>>>> >> >> > AllocatePool and FreePool. Note that you will
still
>>> >>>>> >> >> > have >>> >>>>> >> >> > problems >>> >>>>> >> >> > with >>> >>>>> >> >> > symbol decoration, since EDK2 header file don't
have
>>> >>>>> >> >> > 'extern >>> >>>>> >> >> > "C"' >>> >>>>> >> >> > qualifiers around C declarations. >>> >>>>> >> >> > >>> >>>>> >> >> > >>> >>>>> >> >> > >>> >>>>> >> >> >> ________________________________ >>> >>>>> >> >> >> From: Ard Biesheuvel >>> >>>>> >> >> >> Sent: 01-02-2016 11:59 >>> >>>>> >> >> >> To: Ravikanth MVR >>> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning
Wang;
>>> >>>>> >> >> >> Linaro >>> >>>>> >> >> >> UEFI >>> >>>>> >> >> >> Mailman >>> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files >>> >>>>> >> >> >> ARM64 >>> >>>>> >> >> >> >>> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>> >>>>> >> >> >> ravikanth.mvr@avagotech.com >>> >>>>> >> >> >> wrote: >>> >>>>> >> >> >>> +Unni. >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> Ard, >>> >>>>> >> >> >>> I have done a native compilation with EDK2 and I >>> >>>>> >> >> >>> am >>> >>>>> >> >> >>> facing >>> >>>>> >> >> >>> same >>> >>>>> >> >> >>> issues >>> >>>>> >> >> >>> as >>> >>>>> >> >> >>> I >>> >>>>> >> >> >>> did before.Below is the snapshot of the errors I >>> >>>>> >> >> >>> received. >>> >>>>> >> >> >>> >>> >>>>> >> >> >> >>> >>>>> >> >> >> I have explained twice already why C++ under EDK2 >>> >>>>> >> >> >> is >>> >>>>> >> >> >> not >>> >>>>> >> >> >> going >>> >>>>> >> >> >> to >>> >>>>> >> >> >> work. What exactly were you expecting? >>> >>>>> >> >> >> -- >>> >>>>> >> >> >> Ard. >>> >>>>> >> >> >> >>> >>>>> >> >> >> >>> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >>>>> >> >> >>> WriteSections64(): >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >>>>> >> >> >>> make: *** >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>>> >>>>> >> >> >>> Error 2 >>> >>>>> >> >> >>> WriteRelocations64(): >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> build.py... >>> >>>>> >> >> >>> : error 7000: Failed to execute command >>> >>>>> >> >> >>> make --no-print-directory all >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>>> >>>>> >> >> >>> >>> >>>>> >> >> >>> - Failed - >>> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>> >>>>> >> >> >>> Build total time: 00:00:15 >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> Thanks >>> >>>>> >> >> >>> Ravi >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel >>> >>>>> >> >> >>> ard.biesheuvel@linaro.org >>> >>>>> >> >> >>> wrote: >>> >>>>> >> >> >>>> >>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com >>> >>>>> >> >> >>>> wrote: >>> >>>>> >> >> >>>> > Ard, >>> >>>>> >> >> >>>> > I was trying to compile and generate
helloworld
>>> >>>>> >> >> >>>> > application via >>> >>>>> >> >> >>>> > EDK2.Under >>> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I
did
>>> >>>>> >> >> >>>> > not >>> >>>>> >> >> >>>> > find >>> >>>>> >> >> >>>> > "Win32" >>> >>>>> >> >> >>>> > directory >>> >>>>> >> >> >>>> > which has GenFw utility.But the UDK package
has
>>> >>>>> >> >> >>>> > Win32 >>> >>>>> >> >> >>>> > directory. >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> > Could you let me know on how to build and
EDK2
>>> >>>>> >> >> >>>> > package >>> >>>>> >> >> >>>> > in >>> >>>>> >> >> >>>> > Windows >>> >>>>> >> >> >>>> > or >>> >>>>> >> >> >>>> > else Am >>> >>>>> >> >> >>>> > I missing something here? >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> >>> >>>>> >> >> >>>> I haven't used Windows for software development >>> >>>>> >> >> >>>> work >>> >>>>> >> >> >>>> in >>> >>>>> >> >> >>>> 15 >>> >>>>> >> >> >>>> years, >>> >>>>> >> >> >>>> so >>> >>>>> >> >> >>>> I >>> >>>>> >> >> >>>> am really not the person you should be asking >>> >>>>> >> >> >>>> this. >>> >>>>> >> >> >>>> >>> >>>>> >> >> >>>> -- >>> >>>>> >> >> >>>> Ard. >>> >>>>> >> >> >>>> >>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth
MVR
>>> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com >>> >>>>> >> >> >>>> > wrote: >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you
know
>>> >>>>> >> >> >>>> >> the >>> >>>>> >> >> >>>> >> results. >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> >> Thanks. >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard >>> >>>>> >> >> >>>> >> Biesheuvel >>> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR >>> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>> >>>>> >> >> >>>> >>> wrote: >>> >>>>> >> >> >>>> >>> > Ard, >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld >>> >>>>> >> >> >>>> >>> > program,which >>> >>>>> >> >> >>>> >>> > is >>> >>>>> >> >> >>>> >>> > part >>> >>>>> >> >> >>>> >>> > of >>> >>>>> >> >> >>>> >>> > EDK2 >>> >>>>> >> >> >>>> >>> > sample >>> >>>>> >> >> >>>> >>> > programs and which is written in c,is >>> >>>>> >> >> >>>> >>> > renamed >>> >>>>> >> >> >>>> >>> > to >>> >>>>> >> >> >>>> >>> > .CPP,we get >>> >>>>> >> >> >>>> >>> > these >>> >>>>> >> >> >>>> >>> > relocation issues in-spite of not using
any
>>> >>>>> >> >> >>>> >>> > C++ >>> >>>>> >> >> >>>> >>> > runtime >>> >>>>> >> >> >>>> >>> > API's. >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> >>> In UDK or EDK2? >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard >>> >>>>> >> >> >>>> >>> > Biesheuvel >>> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>> >>>>> >> >> >>>> >>> > wrote: >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth
MVR
>>> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>> >>>>> >> >> >>>> >>> >> wrote: >>> >>>>> >> >> >>>> >>> >> > Hi Ard, >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about
the
>>> >>>>> >> >> >>>> >>> >> > 0x105 >>> >>>>> >> >> >>>> >>> >> > and >>> >>>>> >> >> >>>> >>> >> > 0x0 >>> >>>>> >> >> >>>> >>> >> > relocation >>> >>>>> >> >> >>>> >>> >> > issues >>> >>>>> >> >> >>>> >>> >> > which we came across while compiling a >>> >>>>> >> >> >>>> >>> >> > simple >>> >>>>> >> >> >>>> >>> >> > HelloWorld >>> >>>>> >> >> >>>> >>> >> > program >>> >>>>> >> >> >>>> >>> >> > in >>> >>>>> >> >> >>>> >>> >> > CPP.As >>> >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 >>> >>>>> >> >> >>>> >>> >> > mailing >>> >>>>> >> >> >>>> >>> >> > list)we >>> >>>>> >> >> >>>> >>> >> > need >>> >>>>> >> >> >>>> >>> >> > some >>> >>>>> >> >> >>>> >>> >> > changes >>> >>>>> >> >> >>>> >>> >> > to >>> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can
we
>>> >>>>> >> >> >>>> >>> >> > take >>> >>>>> >> >> >>>> >>> >> > the >>> >>>>> >> >> >>>> >>> >> > required >>> >>>>> >> >> >>>> >>> >> > changes >>> >>>>> >> >> >>>> >>> >> > forward >>> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this >>> >>>>> >> >> >>>> >>> >> > support? >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with
this
>>> >>>>> >> >> >>>> >>> >> > activity >>> >>>>> >> >> >>>> >>> >> > and >>> >>>>> >> >> >>>> >>> >> > would >>> >>>>> >> >> >>>> >>> >> > need >>> >>>>> >> >> >>>> >>> >> > your >>> >>>>> >> >> >>>> >>> >> > help >>> >>>>> >> >> >>>> >>> >> > badly. >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase your >>> >>>>> >> >> >>>> >>> >> work >>> >>>>> >> >> >>>> >>> >> onto >>> >>>>> >> >> >>>> >>> >> the >>> >>>>> >> >> >>>> >>> >> latest >>> >>>>> >> >> >>>> >>> >> EDK2 >>> >>>>> >> >> >>>> >>> >> master branch. There have been many >>> >>>>> >> >> >>>> >>> >> changes >>> >>>>> >> >> >>>> >>> >> to >>> >>>>> >> >> >>>> >>> >> the >>> >>>>> >> >> >>>> >>> >> way >>> >>>>> >> >> >>>> >>> >> relocations >>> >>>>> >> >> >>>> >>> >> are >>> >>>>> >> >> >>>> >>> >> handled, which also impose requirements
at
>>> >>>>> >> >> >>>> >>> >> link >>> >>>>> >> >> >>>> >>> >> time >>> >>>>> >> >> >>>> >>> >> (i.e., >>> >>>>> >> >> >>>> >>> >> in >>> >>>>> >> >> >>>> >>> >> terms >>> >>>>> >> >> >>>> >>> >> of section alignment, and relative
offset
>>> >>>>> >> >> >>>> >>> >> between >>> >>>>> >> >> >>>> >>> >> sections >>> >>>>> >> >> >>>> >>> >> both >>> >>>>> >> >> >>>> >>> >> in >>> >>>>> >> >> >>>> >>> >> the >>> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the
image)
>>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> However, the relocation issue was due to >>> >>>>> >> >> >>>> >>> >> the >>> >>>>> >> >> >>>> >>> >> fact >>> >>>>> >> >> >>>> >>> >> that you >>> >>>>> >> >> >>>> >>> >> were >>> >>>>> >> >> >>>> >>> >> using >>> >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, >>> >>>>> >> >> >>>> >>> >> which >>> >>>>> >> >> >>>> >>> >> you >>> >>>>> >> >> >>>> >>> >> cannot use >>> >>>>> >> >> >>>> >>> >> under >>> >>>>> >> >> >>>> >>> >> EDK2 >>> >>>>> >> >> >>>> >>> >> even if we do support those relocation >>> >>>>> >> >> >>>> >>> >> types >>> >>>>> >> >> >>>> >>> >> with >>> >>>>> >> >> >>>> >>> >> the >>> >>>>> >> >> >>>> >>> >> newer >>> >>>>> >> >> >>>> >>> >> tools. >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> Bottom line is that you need to develop >>> >>>>> >> >> >>>> >>> >> your >>> >>>>> >> >> >>>> >>> >> own >>> >>>>> >> >> >>>> >>> >> C++ >>> >>>>> >> >> >>>> >>> >> minimal >>> >>>>> >> >> >>>> >>> >> runtime >>> >>>>> >> >> >>>> >>> >> if you want to run C++ programs under
EDK2
>>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, >>> >>>>> >> >> >>>> >>> >> > Ravikanth >>> >>>>> >> >> >>>> >>> >> > MVR >>> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>> >>>>> >> >> >>>> >>> >> > wrote: >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> >> +Sada. >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> >> Thanks. >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard >>> >>>>> >> >> >>>> >>> >> >> Biesheuvel >>> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif >>> >>>>> >> >> >>>> >>> >> >>> Lindholm >>> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>> >>>>> >> >> >>>> >>> >> >>> wrote: >>> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my >>> >>>>> >> >> >>>> >>> >> >>> > SPAM >>> >>>>> >> >> >>>> >>> >> >>> > folder >>> >>>>> >> >> >>>> >>> >> >>> > for >>> >>>>> >> >> >>>> >>> >> >>> > some >>> >>>>> >> >> >>>> >>> >> >>> > reason. >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at 05:25:21PM >>> >>>>> >> >> >>>> >>> >> >>> > -0500, >>> >>>>> >> >> >>>> >>> >> >>> > Daniel >>> >>>>> >> >> >>>> >>> >> >>> > Samuelraj >>> >>>>> >> >> >>>> >>> >> >>> > wrote: >>> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files >>> >>>>> >> >> >>>> >>> >> >>> >> for >>> >>>>> >> >> >>>> >>> >> >>> >> X64 >>> >>>>> >> >> >>>> >>> >> >>> >> using >>> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 >>> >>>>> >> >> >>>> >>> >> >>> >> by >>> >>>>> >> >> >>>> >>> >> >>> >> using >>> >>>>> >> >> >>>> >>> >> >>> >> Visual >>> >>>>> >> >> >>>> >>> >> >>> >> Studio. >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same source >>> >>>>> >> >> >>>> >>> >> >>> >> for >>> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely >>> >>>>> >> >> >>>> >>> >> >>> unsupported, >>> >>>>> >> >> >>>> >>> >> >>> and is >>> >>>>> >> >> >>>> >>> >> >>> going >>> >>>>> >> >> >>>> >>> >> >>> to >>> >>>>> >> >> >>>> >>> >> >>> be >>> >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. Note >>> >>>>> >> >> >>>> >>> >> >>> that >>> >>>>> >> >> >>>> >>> >> >>> you >>> >>>>> >> >> >>>> >>> >> >>> cannot >>> >>>>> >> >> >>>> >>> >> >>> rely >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>>>> >> >> >>>> >>> >> >>> C++ >>> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons >>> >>>>> >> >> >>>> >>> >> >>> (including, >>> >>>>> >> >> >>>> >>> >> >>> but >>> >>>>> >> >> >>>> >>> >> >>> not >>> >>>>> >> >> >>>> >>> >> >>> limited >>> >>>>> >> >> >>>> >>> >> >>> to, >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>>>> >> >> >>>> >>> >> >>> fact >>> >>>>> >> >> >>>> >>> >> >>> that it uses small model
relocations,
>>> >>>>> >> >> >>>> >>> >> >>> and >>> >>>>> >> >> >>>> >>> >> >>> is >>> >>>>> >> >> >>>> >>> >> >>> built >>> >>>>> >> >> >>>> >>> >> >>> against >>> >>>>> >> >> >>>> >>> >> >>> libc >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works
on
>>> >>>>> >> >> >>>> >>> >> >>> Visual >>> >>>>> >> >> >>>> >>> >> >>> Studio >>> >>>>> >> >> >>>> >>> >> >>> for >>> >>>>> >> >> >>>> >>> >> >>> X64, >>> >>>>> >> >> >>>> >>> >> >>> since >>> >>>>> >> >> >>>> >>> >> >>> the code you build will try to call >>> >>>>> >> >> >>>> >>> >> >>> libc >>> >>>>> >> >> >>>> >>> >> >>> functions from >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>>>> >> >> >>>> >>> >> >>> VC >>> >>>>> >> >> >>>> >>> >> >>> runtime >>> >>>>> >> >> >>>> >>> >> >>> library. >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion about >>> >>>>> >> >> >>>> >>> >> >>> this >>> >>>>> >> >> >>>> >>> >> >>> recently on >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>>>> >> >> >>>> >>> >> >>> list. >>> >>>>> >> >> >>>> >>> >> >>> If >>> >>>>> >> >> >>>> >>> >> >>> you >>> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >>> >>>>> >> >> >>>> >>> >> >>> reimplement >>> >>>>> >> >> >>>> >>> >> >>> your >>> >>>>> >> >> >>>> >>> >> >>> new >>> >>>>> >> >> >>>> >>> >> >>> and >>> >>>>> >> >> >>>> >>> >> >>> delete >>> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to build >>> >>>>> >> >> >>>> >>> >> >>> code >>> >>>>> >> >> >>>> >>> >> >>> that >>> >>>>> >> >> >>>> >>> >> >>> does not >>> >>>>> >> >> >>>> >>> >> >>> rely >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> >>> -- >>> >>>>> >> >> >>>> >>> >> >>> Ard. >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>> >>> >>>>> >> >> >>> >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> > >>> >>>>> > >>> >>>> >>> >>>> >>> >>> >>> >> >>> > >> >> >
On 5 February 2016 at 16:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, OK.I am not passing -fno-exceptions.Would change the same and let you know.
Which command line of the C++ compiler? I din't get it.
In your output, there are lines for gcc, ld, ar etc, but not for g++
Thanks Ravi
On Fri, Feb 5, 2016 at 9:16 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:40, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets -comes up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG -I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c "ar" -cr
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst "ld" -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map -z common-page-size=0x20 --start-group
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst --end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug echo --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll echo
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] Error 2
build.py... : error 7000: Failed to execute command make tbuild
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf [AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Yes.I downloaded the package from https://github.com/tianocore/edk2.If you want me to again download the package and try,I would.
On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > On 5 February 2016 at 15:30, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: > > Ard, > > We tried out the patch and we are not seeing the relocation > > errors > > anymore.But we are seeing a new error from > > WriteSection64()-"AARCH64 > > relative relocations require identical ELF and PE/COFF section > > offsets".Below is the complete snapshot of the error. > > > > Are you using the latest EDK2? > > > > cp -f > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > > echo --strip-unneeded -R .eh_frame > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > --strip-unneeded -R .eh_frame > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > echo > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > cp -f > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > > "GenFw" -e UEFI_APPLICATION -o > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > GenFw: ERROR 3000: Invalid > > WriteSections64(): > > > > > > > > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > AARCH64 relative relocations require identical ELF and PE/COFF > > section > > offsets > > make: *** > > > > > > > > [/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] > > Error 2 > > > > Thanks > > Ravi > > > > On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR > > ravikanth.mvr@broadcom.com > > wrote: > >> > >> Thanks Ard!Would try out and let you know the results. > >> > >> On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel > >> ard.biesheuvel@linaro.org > >> wrote: > >>> > >>> On 4 February 2016 at 20:41, Ravikanth MVR > >>> ravikanth.mvr@broadcom.com > >>> wrote: > >>> > Ard, > >>> > > >>> > We built the EDK2 with target set to AARCH64 and GCC48 as the > >>> > toolchain.Still we are same relocation errors as before.Below > >>> > is > >>> > the > >>> > complete snapshot of the error and map file as well. > >>> > > >>> > >>> Could you try the following patch (don't forget to rebuild > >>> BaseTools/) > >>> > >>> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> b/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> index 90d80a22daf2..0a1329f0f668 100644 > >>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> @@ -767,6 +767,9 @@ WriteSections64 ( > >>> case R_AARCH64_LD_PREL_LO19: > >>> case R_AARCH64_CALL26: > >>> case R_AARCH64_JUMP26: > >>> + case R_AARCH64_PREL64: > >>> + case R_AARCH64_PREL32: > >>> + case R_AARCH64_PREL16: > >>> // > >>> // The GCC toolchains (i.e., binutils) may corrupt > >>> section > >>> relative > >>> // relocations when emitting relocation sections > >>> into > >>> fully > >>> linked > >>> @@ -869,6 +872,11 @@ WriteRelocations64 ( > >>> case R_AARCH64_JUMP26: > >>> break; > >>> > >>> + case R_AARCH64_PREL64: > >>> + case R_AARCH64_PREL32: > >>> + case R_AARCH64_PREL16: > >>> + break; > >>> + > >>> case R_AARCH64_ADR_PREL_PG_HI21: > >>> case R_AARCH64_ADD_ABS_LO12_NC: > >>> case R_AARCH64_LDST8_ABS_LO12_NC: > >>> > >>> -- > >>> Ard. > >>> > >>> > >>> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror > >>> > -Wno-array-bounds -ffunction-sections -fdata-sections -c > >>> > -include > >>> > AutoGen.h > >>> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar > >>> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror > >>> > -Wno-array-bounds -c > >>> > -include AutoGen.h -mcmodel=large -mlittle-endian > >>> > -fno-short-enums > >>> > -save-temps -fverbose-asm -fsigned-char -ffunction-sections > >>> > -fdata-sections > >>> > -fomit-frame-pointer -fno-builtin -Wno-address > >>> > -Wno-unused-but-set-variable > >>> > -o > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj > >>> > > >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld > >>> > > >>> > > >>> > > >>> > > >>> > -I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG > >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg > >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include > >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 > >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg > >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c > >>> > "ar" -cr > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib > >>> > > >>> > > >>> > > >>> > > >>> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst > >>> > "ld" -o > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u > >>> > _ModuleEntryPoint > >>> > -e > >>> > _ModuleEntryPoint -Map > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map > >>> > --start-group > >>> > > >>> > > >>> > > >>> > > >>> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst > >>> > --end-group > >>> > "echo" objcopy not needed for > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > objcopy not needed for > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > cp -f > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > >>> > echo --strip-unneeded -R .eh_frame > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > --strip-unneeded -R .eh_frame > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > echo > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > cp -f > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > >>> > "GenFw" -e UEFI_APPLICATION -o > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > GenFw: ERROR 3000: Invalid > >>> > WriteSections64(): > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > unsupported ELF EM_AARCH64 relocation 0x105. > >>> > GenFw: ERROR 3000: Invalid > >>> > make: *** > >>> > > >>> > > >>> > > >>> > > >>> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] > >>> > Error 2 > >>> > WriteRelocations64(): > >>> > > >>> > > >>> > > >>> > > >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> > unsupported ELF EM_AARCH64 relocation 0x105. > >>> > > >>> > > >>> > build.py... > >>> > : error 7000: Failed to execute command > >>> > make all > >>> > > >>> > > >>> > > >>> > > >>> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] > >>> > > >>> > - Failed - > >>> > Build end time: 11:29:54, Feb.04 2016 > >>> > Build total time: 00:00:09 > >>> > > >>> > Thanks > >>> > Ravi > >>> > > >>> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR > >>> > ravikanth.mvr@broadcom.com > >>> > wrote: > >>> >> > >>> >> Ard, > >>> >> > >>> >> I tried building the EDK2 with the below configuration and > >>> >> ended > >>> >> up > >>> >> with > >>> >> the same result as before.Would try out the scenario with > >>> >> GCC4.9/GCC4.8 > >>> >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. > >>> >> Would > >>> >> let > >>> >> you know > >>> >> the results. > >>> >> > >>> >> Thanks. > >>> >> > >>> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR > >>> >> ravikanth.mvr@broadcom.com wrote: > >>> >>> > >>> >>> Ard, > >>> >>> Below is my configuration > >>> >>> > >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc > >>> >>> TARGET = RELEASE > >>> >>> TARGET_ARCH = AARCH64 > >>> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt > >>> >>> TOOL_CHAIN_TAG = GCC49 > >>> >>> > >>> >>> And GCC5.0.0 compiler is being used to compile the code or > >>> >>> you > >>> >>> want > >>> >>> me to > >>> >>> use the GCC4.9 compiler to compile as well? > >>> >>> > >>> >>> Thanks. > >>> >>> > >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR > >>> >>> ravikanth.mvr@broadcom.com wrote: > >>> >>>> > >>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please > >>> >>>> correct > >>> >>>> me if > >>> >>>> I > >>> >>>> am wrong. > >>> >>>> > >>> >>>> Thanks. > >>> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel > >>> >>>> ard.biesheuvel@linaro.org wrote: > >>> >>>>> > >>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR > >>> >>>>> ravikanth.mvr@broadcom.com > >>> >>>>> wrote: > >>> >>>>> > Ard, > >>> >>>>> > > >>> >>>>> > I have been using GCC5.0.0(Experimental version). > >>> >>>>> > > >>> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 20141220 > >>> >>>>> > (experimental) > >>> >>>>> > > >>> >>>>> > I would try with GCC49/48 and let you know. > >>> >>>>> > > >>> >>>>> > >>> >>>>> I don't mean the actual compiler, I mean the toolchain > >>> >>>>> definition > >>> >>>>> in > >>> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of > >>> >>>>> which > >>> >>>>> are > >>> >>>>> suitable for building AArch64. You should use GCC48 or > >>> >>>>> GCC49 > >>> >>>>> instead > >>> >>>>> > >>> >>>>> -- > >>> >>>>> Ard. > >>> >>>>> > >>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel > >>> >>>>> > ard.biesheuvel@linaro.org > >>> >>>>> > wrote: > >>> >>>>> >> > >>> >>>>> >> It looks like you are using the wrong compiler. You > >>> >>>>> >> should > >>> >>>>> >> use > >>> >>>>> >> GCC48 > >>> >>>>> >> or GCC49 instead. > >>> >>>>> >> > >>> >>>>> >> > >>> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR > >>> >>>>> >> ravikanth.mvr@broadcom.com > >>> >>>>> >> wrote: > >>> >>>>> >> > Thanks Ard!I followed the steps and I could find out > >>> >>>>> >> > that > >>> >>>>> >> > NO > >>> >>>>> >> > standard > >>> >>>>> >> > library was included.Below is the list of libraries > >>> >>>>> >> > that > >>> >>>>> >> > were > >>> >>>>> >> > getting > >>> >>>>> >> > included. > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) > >>> >>>>> >> > HelloWorld.lib(AutoGen.obj) > >>> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) > >>> >>>>> >> > UefiLib.lib(UefiLib.obj) > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) > >>> >>>>> >> > BasePrintLib.lib(PrintLib.obj) > >>> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) > >>> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) > >>> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) > >>> >>>>> >> > BaseLib.lib(String.obj) > >>> >>>>> >> > BaseLib.lib(Unaligned.obj) > >>> >>>>> >> > BaseLib.lib(Math64.obj) > >>> >>>>> >> > > >>> >>>>> >> > I have included .map file as well with this mail. > >>> >>>>> >> > > >>> >>>>> >> > Thanks. > >>> >>>>> >> > > >>> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel > >>> >>>>> >> > ard.biesheuvel@linaro.org > >>> >>>>> >> > wrote: > >>> >>>>> >> >> > >>> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth > >>> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: > >>> >>>>> >> >> > Ard, > >>> >>>>> >> >> > > >>> >>>>> >> >> > I understand that we have to implement > >>> >>>>> >> >> > alternative > >>> >>>>> >> >> > C++ > >>> >>>>> >> >> > runtime > >>> >>>>> >> >> > API > >>> >>>>> >> >> > which > >>> >>>>> >> >> > maps to new and delete in EDK2 i.e.,AllocatePool > >>> >>>>> >> >> > and > >>> >>>>> >> >> > FreePool. > >>> >>>>> >> >> > > >>> >>>>> >> >> > I did implement alternative new and delete > >>> >>>>> >> >> > API's,which > >>> >>>>> >> >> > uses > >>> >>>>> >> >> > AllocatePool > >>> >>>>> >> >> > and > >>> >>>>> >> >> > FreePool,for OUR code and most of the relocation > >>> >>>>> >> >> > errors > >>> >>>>> >> >> > had > >>> >>>>> >> >> > gone.BUT > >>> >>>>> >> >> > when > >>> >>>>> >> >> > the CPP program(HelloWorld) under compilation > >>> >>>>> >> >> > doesn't > >>> >>>>> >> >> > even > >>> >>>>> >> >> > call > >>> >>>>> >> >> > the > >>> >>>>> >> >> > C++ > >>> >>>>> >> >> > runtime API's,why are we seeing these > >>> >>>>> >> >> > errors?-This > >>> >>>>> >> >> > is > >>> >>>>> >> >> > what > >>> >>>>> >> >> > I am > >>> >>>>> >> >> > trying > >>> >>>>> >> >> > to > >>> >>>>> >> >> > understand. > >>> >>>>> >> >> > > >>> >>>>> >> >> > >>> >>>>> >> >> If you add a -Map xxx.map option to the linker > >>> >>>>> >> >> command, > >>> >>>>> >> >> you > >>> >>>>> >> >> will > >>> >>>>> >> >> get a > >>> >>>>> >> >> map file that tells you exactly which object was > >>> >>>>> >> >> included > >>> >>>>> >> >> in > >>> >>>>> >> >> the > >>> >>>>> >> >> link, > >>> >>>>> >> >> and why (iow, which symbol dependency it satisfies) > >>> >>>>> >> >> That > >>> >>>>> >> >> way, > >>> >>>>> >> >> you > >>> >>>>> >> >> will > >>> >>>>> >> >> be able to figure out which standard library is > >>> >>>>> >> >> included, > >>> >>>>> >> >> and > >>> >>>>> >> >> for > >>> >>>>> >> >> which reason. > >>> >>>>> >> >> > >>> >>>>> >> >> > Thanks. > >>> >>>>> >> >> > ________________________________ > >>> >>>>> >> >> > From: Ard Biesheuvel > >>> >>>>> >> >> > Sent: 01-02-2016 12:31 > >>> >>>>> >> >> > To: M.V.R. Ravikanth > >>> >>>>> >> >> > > >>> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning > >>> >>>>> >> >> > Wang; > >>> >>>>> >> >> > Linaro > >>> >>>>> >> >> > UEFI > >>> >>>>> >> >> > Mailman > >>> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S > >>> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files > >>> >>>>> >> >> > ARM64 > >>> >>>>> >> >> > > >>> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth > >>> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: > >>> >>>>> >> >> >> Ard, > >>> >>>>> >> >> >> I would try to explain here, > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> 1.Till now we have been compiling CPP programs > >>> >>>>> >> >> >> in > >>> >>>>> >> >> >> UDK > >>> >>>>> >> >> >> with > >>> >>>>> >> >> >> VS2005/VS2008 > >>> >>>>> >> >> >> as > >>> >>>>> >> >> >> toolchain and it worked well. > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 > >>> >>>>> >> >> >> architecture > >>> >>>>> >> >> >> with > >>> >>>>> >> >> >> ARMGCC > >>> >>>>> >> >> >> as > >>> >>>>> >> >> >> the toolchain.But when we tried to compile our > >>> >>>>> >> >> >> CPP > >>> >>>>> >> >> >> code/Sample > >>> >>>>> >> >> >> HelloWorld > >>> >>>>> >> >> >> application(HelloWorld.c is renamed to > >>> >>>>> >> >> >> HelloWorld.cpp) > >>> >>>>> >> >> >> with > >>> >>>>> >> >> >> ARMGCC > >>> >>>>> >> >> >> as > >>> >>>>> >> >> >> toolchain,we were seeing relocation errors such > >>> >>>>> >> >> >> as > >>> >>>>> >> >> >> 0x105. > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> 3.As advised by you,we tried compiling a sample > >>> >>>>> >> >> >> HelloWorld > >>> >>>>> >> >> >> CPP > >>> >>>>> >> >> >> program > >>> >>>>> >> >> >> under > >>> >>>>> >> >> >> EDK2 and still we are seeing the same relocation > >>> >>>>> >> >> >> errors. > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> Questions: > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should > >>> >>>>> >> >> >> we > >>> >>>>> >> >> >> do > >>> >>>>> >> >> >> to > >>> >>>>> >> >> >> resolve the > >>> >>>>> >> >> >> relocation errors we are observing? > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> Please correct me,if I have missed something. > >>> >>>>> >> >> >> > >>> >>>>> >> >> > > >>> >>>>> >> >> > The relocation errors are a symptom of the fact > >>> >>>>> >> >> > that > >>> >>>>> >> >> > you > >>> >>>>> >> >> > are > >>> >>>>> >> >> > trying > >>> >>>>> >> >> > to > >>> >>>>> >> >> > link the Linux specific C++ runtime into your > >>> >>>>> >> >> > EDK2 > >>> >>>>> >> >> > binary. > >>> >>>>> >> >> > This > >>> >>>>> >> >> > is a > >>> >>>>> >> >> > pointless exercise, since the Linux C++ runtime > >>> >>>>> >> >> > is > >>> >>>>> >> >> > fundamentally > >>> >>>>> >> >> > incompatible with EDK2, So please, don't ask any > >>> >>>>> >> >> > more > >>> >>>>> >> >> > questions > >>> >>>>> >> >> > about > >>> >>>>> >> >> > relocation errors, and focus on implementing an > >>> >>>>> >> >> > alternative > >>> >>>>> >> >> > C++ > >>> >>>>> >> >> > runtime that maps calls to new() and delete() > >>> >>>>> >> >> > onto > >>> >>>>> >> >> > EDK2 > >>> >>>>> >> >> > APIs, > >>> >>>>> >> >> > i.e., > >>> >>>>> >> >> > AllocatePool and FreePool. Note that you will > >>> >>>>> >> >> > still > >>> >>>>> >> >> > have > >>> >>>>> >> >> > problems > >>> >>>>> >> >> > with > >>> >>>>> >> >> > symbol decoration, since EDK2 header file don't > >>> >>>>> >> >> > have > >>> >>>>> >> >> > 'extern > >>> >>>>> >> >> > "C"' > >>> >>>>> >> >> > qualifiers around C declarations. > >>> >>>>> >> >> > > >>> >>>>> >> >> > > >>> >>>>> >> >> > > >>> >>>>> >> >> >> ________________________________ > >>> >>>>> >> >> >> From: Ard Biesheuvel > >>> >>>>> >> >> >> Sent: 01-02-2016 11:59 > >>> >>>>> >> >> >> To: Ravikanth MVR > >>> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning > >>> >>>>> >> >> >> Wang; > >>> >>>>> >> >> >> Linaro > >>> >>>>> >> >> >> UEFI > >>> >>>>> >> >> >> Mailman > >>> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S > >>> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files > >>> >>>>> >> >> >> ARM64 > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR > >>> >>>>> >> >> >> ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >> wrote: > >>> >>>>> >> >> >>> +Unni. > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> Ard, > >>> >>>>> >> >> >>> I have done a native compilation with EDK2 and > >>> >>>>> >> >> >>> I > >>> >>>>> >> >> >>> am > >>> >>>>> >> >> >>> facing > >>> >>>>> >> >> >>> same > >>> >>>>> >> >> >>> issues > >>> >>>>> >> >> >>> as > >>> >>>>> >> >> >>> I > >>> >>>>> >> >> >>> did before.Below is the snapshot of the errors > >>> >>>>> >> >> >>> I > >>> >>>>> >> >> >>> received. > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> I have explained twice already why C++ under > >>> >>>>> >> >> >> EDK2 > >>> >>>>> >> >> >> is > >>> >>>>> >> >> >> not > >>> >>>>> >> >> >> going > >>> >>>>> >> >> >> to > >>> >>>>> >> >> >> work. What exactly were you expecting? > >>> >>>>> >> >> >> -- > >>> >>>>> >> >> >> Ard. > >>> >>>>> >> >> >> > >>> >>>>> >> >> >> > >>> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>> >>>>> >> >> >>> WriteSections64(): > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>> >>>>> >> >> >>> make: *** > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] > >>> >>>>> >> >> >>> Error 2 > >>> >>>>> >> >> >>> WriteRelocations64(): > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> build.py... > >>> >>>>> >> >> >>> : error 7000: Failed to execute command > >>> >>>>> >> >> >>> make --no-print-directory all > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> - Failed - > >>> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 > >>> >>>>> >> >> >>> Build total time: 00:00:15 > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> Thanks > >>> >>>>> >> >> >>> Ravi > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard Biesheuvel > >>> >>>>> >> >> >>> ard.biesheuvel@linaro.org > >>> >>>>> >> >> >>> wrote: > >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR > >>> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >>>> wrote: > >>> >>>>> >> >> >>>> > Ard, > >>> >>>>> >> >> >>>> > I was trying to compile and generate > >>> >>>>> >> >> >>>> > helloworld > >>> >>>>> >> >> >>>> > application via > >>> >>>>> >> >> >>>> > EDK2.Under > >>> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory I > >>> >>>>> >> >> >>>> > did > >>> >>>>> >> >> >>>> > not > >>> >>>>> >> >> >>>> > find > >>> >>>>> >> >> >>>> > "Win32" > >>> >>>>> >> >> >>>> > directory > >>> >>>>> >> >> >>>> > which has GenFw utility.But the UDK package > >>> >>>>> >> >> >>>> > has > >>> >>>>> >> >> >>>> > Win32 > >>> >>>>> >> >> >>>> > directory. > >>> >>>>> >> >> >>>> > > >>> >>>>> >> >> >>>> > Could you let me know on how to build and > >>> >>>>> >> >> >>>> > EDK2 > >>> >>>>> >> >> >>>> > package > >>> >>>>> >> >> >>>> > in > >>> >>>>> >> >> >>>> > Windows > >>> >>>>> >> >> >>>> > or > >>> >>>>> >> >> >>>> > else Am > >>> >>>>> >> >> >>>> > I missing something here? > >>> >>>>> >> >> >>>> > > >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> I haven't used Windows for software > >>> >>>>> >> >> >>>> development > >>> >>>>> >> >> >>>> work > >>> >>>>> >> >> >>>> in > >>> >>>>> >> >> >>>> 15 > >>> >>>>> >> >> >>>> years, > >>> >>>>> >> >> >>>> so > >>> >>>>> >> >> >>>> I > >>> >>>>> >> >> >>>> am really not the person you should be asking > >>> >>>>> >> >> >>>> this. > >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> -- > >>> >>>>> >> >> >>>> Ard. > >>> >>>>> >> >> >>>> > >>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth > >>> >>>>> >> >> >>>> > MVR > >>> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >>>> > wrote: > >>> >>>>> >> >> >>>> >> > >>> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you > >>> >>>>> >> >> >>>> >> know > >>> >>>>> >> >> >>>> >> the > >>> >>>>> >> >> >>>> >> results. > >>> >>>>> >> >> >>>> >> > >>> >>>>> >> >> >>>> >> Thanks. > >>> >>>>> >> >> >>>> >> > >>> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard > >>> >>>>> >> >> >>>> >> Biesheuvel > >>> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: > >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth MVR > >>> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >>>> >>> wrote: > >>> >>>>> >> >> >>>> >>> > Ard, > >>> >>>>> >> >> >>>> >>> > > >>> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld > >>> >>>>> >> >> >>>> >>> > program,which > >>> >>>>> >> >> >>>> >>> > is > >>> >>>>> >> >> >>>> >>> > part > >>> >>>>> >> >> >>>> >>> > of > >>> >>>>> >> >> >>>> >>> > EDK2 > >>> >>>>> >> >> >>>> >>> > sample > >>> >>>>> >> >> >>>> >>> > programs and which is written in c,is > >>> >>>>> >> >> >>>> >>> > renamed > >>> >>>>> >> >> >>>> >>> > to > >>> >>>>> >> >> >>>> >>> > .CPP,we get > >>> >>>>> >> >> >>>> >>> > these > >>> >>>>> >> >> >>>> >>> > relocation issues in-spite of not using > >>> >>>>> >> >> >>>> >>> > any > >>> >>>>> >> >> >>>> >>> > C++ > >>> >>>>> >> >> >>>> >>> > runtime > >>> >>>>> >> >> >>>> >>> > API's. > >>> >>>>> >> >> >>>> >>> > > >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> In UDK or EDK2? > >>> >>>>> >> >> >>>> >>> > >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard > >>> >>>>> >> >> >>>> >>> > Biesheuvel > >>> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org > >>> >>>>> >> >> >>>> >>> > wrote: > >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, Ravikanth > >>> >>>>> >> >> >>>> >>> >> MVR > >>> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >>>> >>> >> wrote: > >>> >>>>> >> >> >>>> >>> >> > Hi Ard, > >>> >>>>> >> >> >>>> >>> >> > > >>> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about > >>> >>>>> >> >> >>>> >>> >> > the > >>> >>>>> >> >> >>>> >>> >> > 0x105 > >>> >>>>> >> >> >>>> >>> >> > and > >>> >>>>> >> >> >>>> >>> >> > 0x0 > >>> >>>>> >> >> >>>> >>> >> > relocation > >>> >>>>> >> >> >>>> >>> >> > issues > >>> >>>>> >> >> >>>> >>> >> > which we came across while compiling > >>> >>>>> >> >> >>>> >>> >> > a > >>> >>>>> >> >> >>>> >>> >> > simple > >>> >>>>> >> >> >>>> >>> >> > HelloWorld > >>> >>>>> >> >> >>>> >>> >> > program > >>> >>>>> >> >> >>>> >>> >> > in > >>> >>>>> >> >> >>>> >>> >> > CPP.As > >>> >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 > >>> >>>>> >> >> >>>> >>> >> > mailing > >>> >>>>> >> >> >>>> >>> >> > list)we > >>> >>>>> >> >> >>>> >>> >> > need > >>> >>>>> >> >> >>>> >>> >> > some > >>> >>>>> >> >> >>>> >>> >> > changes > >>> >>>>> >> >> >>>> >>> >> > to > >>> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of UDK,can > >>> >>>>> >> >> >>>> >>> >> > we > >>> >>>>> >> >> >>>> >>> >> > take > >>> >>>>> >> >> >>>> >>> >> > the > >>> >>>>> >> >> >>>> >>> >> > required > >>> >>>>> >> >> >>>> >>> >> > changes > >>> >>>>> >> >> >>>> >>> >> > forward > >>> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this > >>> >>>>> >> >> >>>> >>> >> > support? > >>> >>>>> >> >> >>>> >>> >> > > >>> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with > >>> >>>>> >> >> >>>> >>> >> > this > >>> >>>>> >> >> >>>> >>> >> > activity > >>> >>>>> >> >> >>>> >>> >> > and > >>> >>>>> >> >> >>>> >>> >> > would > >>> >>>>> >> >> >>>> >>> >> > need > >>> >>>>> >> >> >>>> >>> >> > your > >>> >>>>> >> >> >>>> >>> >> > help > >>> >>>>> >> >> >>>> >>> >> > badly. > >>> >>>>> >> >> >>>> >>> >> > > >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase > >>> >>>>> >> >> >>>> >>> >> your > >>> >>>>> >> >> >>>> >>> >> work > >>> >>>>> >> >> >>>> >>> >> onto > >>> >>>>> >> >> >>>> >>> >> the > >>> >>>>> >> >> >>>> >>> >> latest > >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>>>> >> >> >>>> >>> >> master branch. There have been many > >>> >>>>> >> >> >>>> >>> >> changes > >>> >>>>> >> >> >>>> >>> >> to > >>> >>>>> >> >> >>>> >>> >> the > >>> >>>>> >> >> >>>> >>> >> way > >>> >>>>> >> >> >>>> >>> >> relocations > >>> >>>>> >> >> >>>> >>> >> are > >>> >>>>> >> >> >>>> >>> >> handled, which also impose requirements > >>> >>>>> >> >> >>>> >>> >> at > >>> >>>>> >> >> >>>> >>> >> link > >>> >>>>> >> >> >>>> >>> >> time > >>> >>>>> >> >> >>>> >>> >> (i.e., > >>> >>>>> >> >> >>>> >>> >> in > >>> >>>>> >> >> >>>> >>> >> terms > >>> >>>>> >> >> >>>> >>> >> of section alignment, and relative > >>> >>>>> >> >> >>>> >>> >> offset > >>> >>>>> >> >> >>>> >>> >> between > >>> >>>>> >> >> >>>> >>> >> sections > >>> >>>>> >> >> >>>> >>> >> both > >>> >>>>> >> >> >>>> >>> >> in > >>> >>>>> >> >> >>>> >>> >> the > >>> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the > >>> >>>>> >> >> >>>> >>> >> image) > >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> However, the relocation issue was due > >>> >>>>> >> >> >>>> >>> >> to > >>> >>>>> >> >> >>>> >>> >> the > >>> >>>>> >> >> >>>> >>> >> fact > >>> >>>>> >> >> >>>> >>> >> that you > >>> >>>>> >> >> >>>> >>> >> were > >>> >>>>> >> >> >>>> >>> >> using > >>> >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, > >>> >>>>> >> >> >>>> >>> >> which > >>> >>>>> >> >> >>>> >>> >> you > >>> >>>>> >> >> >>>> >>> >> cannot use > >>> >>>>> >> >> >>>> >>> >> under > >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>>>> >> >> >>>> >>> >> even if we do support those relocation > >>> >>>>> >> >> >>>> >>> >> types > >>> >>>>> >> >> >>>> >>> >> with > >>> >>>>> >> >> >>>> >>> >> the > >>> >>>>> >> >> >>>> >>> >> newer > >>> >>>>> >> >> >>>> >>> >> tools. > >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> Bottom line is that you need to develop > >>> >>>>> >> >> >>>> >>> >> your > >>> >>>>> >> >> >>>> >>> >> own > >>> >>>>> >> >> >>>> >>> >> C++ > >>> >>>>> >> >> >>>> >>> >> minimal > >>> >>>>> >> >> >>>> >>> >> runtime > >>> >>>>> >> >> >>>> >>> >> if you want to run C++ programs under > >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>>>> >> >> >>>> >>> >> > >>> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, > >>> >>>>> >> >> >>>> >>> >> > Ravikanth > >>> >>>>> >> >> >>>> >>> >> > MVR > >>> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com > >>> >>>>> >> >> >>>> >>> >> > wrote: > >>> >>>>> >> >> >>>> >>> >> >> > >>> >>>>> >> >> >>>> >>> >> >> +Sada. > >>> >>>>> >> >> >>>> >>> >> >> > >>> >>>>> >> >> >>>> >>> >> >> Thanks. > >>> >>>>> >> >> >>>> >>> >> >> > >>> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, Ard > >>> >>>>> >> >> >>>> >>> >> >> Biesheuvel > >>> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org wrote: > >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, Leif > >>> >>>>> >> >> >>>> >>> >> >>> Lindholm > >>> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org > >>> >>>>> >> >> >>>> >>> >> >>> wrote: > >>> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, > >>> >>>>> >> >> >>>> >>> >> >>> > > >>> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in my > >>> >>>>> >> >> >>>> >>> >> >>> > SPAM > >>> >>>>> >> >> >>>> >>> >> >>> > folder > >>> >>>>> >> >> >>>> >>> >> >>> > for > >>> >>>>> >> >> >>>> >>> >> >>> > some > >>> >>>>> >> >> >>>> >>> >> >>> > reason. > >>> >>>>> >> >> >>>> >>> >> >>> > > >>> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at > >>> >>>>> >> >> >>>> >>> >> >>> > 05:25:21PM > >>> >>>>> >> >> >>>> >>> >> >>> > -0500, > >>> >>>>> >> >> >>>> >>> >> >>> > Daniel > >>> >>>>> >> >> >>>> >>> >> >>> > Samuelraj > >>> >>>>> >> >> >>>> >>> >> >>> > wrote: > >>> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP files > >>> >>>>> >> >> >>>> >>> >> >>> >> for > >>> >>>>> >> >> >>>> >>> >> >>> >> X64 > >>> >>>>> >> >> >>>> >>> >> >>> >> using > >>> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 > >>> >>>>> >> >> >>>> >>> >> >>> >> by > >>> >>>>> >> >> >>>> >>> >> >>> >> using > >>> >>>>> >> >> >>>> >>> >> >>> >> Visual > >>> >>>>> >> >> >>>> >>> >> >>> >> Studio. > >>> >>>>> >> >> >>>> >>> >> >>> >> > >>> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same > >>> >>>>> >> >> >>>> >>> >> >>> >> source > >>> >>>>> >> >> >>>> >>> >> >>> >> for > >>> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? > >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is completely > >>> >>>>> >> >> >>>> >>> >> >>> unsupported, > >>> >>>>> >> >> >>>> >>> >> >>> and is > >>> >>>>> >> >> >>>> >>> >> >>> going > >>> >>>>> >> >> >>>> >>> >> >>> to > >>> >>>>> >> >> >>>> >>> >> >>> be > >>> >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. > >>> >>>>> >> >> >>>> >>> >> >>> Note > >>> >>>>> >> >> >>>> >>> >> >>> that > >>> >>>>> >> >> >>>> >>> >> >>> you > >>> >>>>> >> >> >>>> >>> >> >>> cannot > >>> >>>>> >> >> >>>> >>> >> >>> rely > >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>>>> >> >> >>>> >>> >> >>> C++ > >>> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons > >>> >>>>> >> >> >>>> >>> >> >>> (including, > >>> >>>>> >> >> >>>> >>> >> >>> but > >>> >>>>> >> >> >>>> >>> >> >>> not > >>> >>>>> >> >> >>>> >>> >> >>> limited > >>> >>>>> >> >> >>>> >>> >> >>> to, > >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>>>> >> >> >>>> >>> >> >>> fact > >>> >>>>> >> >> >>>> >>> >> >>> that it uses small model > >>> >>>>> >> >> >>>> >>> >> >>> relocations, > >>> >>>>> >> >> >>>> >>> >> >>> and > >>> >>>>> >> >> >>>> >>> >> >>> is > >>> >>>>> >> >> >>>> >>> >> >>> built > >>> >>>>> >> >> >>>> >>> >> >>> against > >>> >>>>> >> >> >>>> >>> >> >>> libc > >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even works > >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>>>> >> >> >>>> >>> >> >>> Visual > >>> >>>>> >> >> >>>> >>> >> >>> Studio > >>> >>>>> >> >> >>>> >>> >> >>> for > >>> >>>>> >> >> >>>> >>> >> >>> X64, > >>> >>>>> >> >> >>>> >>> >> >>> since > >>> >>>>> >> >> >>>> >>> >> >>> the code you build will try to call > >>> >>>>> >> >> >>>> >>> >> >>> libc > >>> >>>>> >> >> >>>> >>> >> >>> functions from > >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>>>> >> >> >>>> >>> >> >>> VC > >>> >>>>> >> >> >>>> >>> >> >>> runtime > >>> >>>>> >> >> >>>> >>> >> >>> library. > >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion > >>> >>>>> >> >> >>>> >>> >> >>> about > >>> >>>>> >> >> >>>> >>> >> >>> this > >>> >>>>> >> >> >>>> >>> >> >>> recently on > >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>>>> >> >> >>>> >>> >> >>> list. > >>> >>>>> >> >> >>>> >>> >> >>> If > >>> >>>>> >> >> >>>> >>> >> >>> you > >>> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and > >>> >>>>> >> >> >>>> >>> >> >>> reimplement > >>> >>>>> >> >> >>>> >>> >> >>> your > >>> >>>>> >> >> >>>> >>> >> >>> new > >>> >>>>> >> >> >>>> >>> >> >>> and > >>> >>>>> >> >> >>>> >>> >> >>> delete > >>> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to build > >>> >>>>> >> >> >>>> >>> >> >>> code > >>> >>>>> >> >> >>>> >>> >> >>> that > >>> >>>>> >> >> >>>> >>> >> >>> does not > >>> >>>>> >> >> >>>> >>> >> >>> rely > >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. > >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>>>> >> >> >>>> >>> >> >>> -- > >>> >>>>> >> >> >>>> >>> >> >>> Ard. > >>> >>>>> >> >> >>>> >>> >> >> > >>> >>>>> >> >> >>>> >>> >> >> > >>> >>>>> >> >> >>>> >>> >> > > >>> >>>>> >> >> >>>> >>> > > >>> >>>>> >> >> >>>> >>> > > >>> >>>>> >> >> >>>> >> > >>> >>>>> >> >> >>>> >> > >>> >>>>> >> >> >>>> > > >>> >>>>> >> >> >>> > >>> >>>>> >> >> >>> > >>> >>>>> >> > > >>> >>>>> >> > > >>> >>>>> > > >>> >>>>> > > >>> >>>> > >>> >>>> > >>> >>> > >>> >> > >>> > > >> > >> > >
I am using gcc compiler only not g++.
On Fri, Feb 5, 2016 at 9:20 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, OK.I am not passing -fno-exceptions.Would change the same and let you
know.
Which command line of the C++ compiler? I din't get it.
In your output, there are lines for gcc, ld, ar etc, but not for g++
Thanks Ravi
On Fri, Feb 5, 2016 at 9:16 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 5 February 2016 at 16:40, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Ard,
Tried out again by downloading the edk2-master but the result was same.Please find below the snapshot.BTW,why this error-AARCH64 relative relocations require identical ELF and PE/COFF section offsets
-comes
up?
"gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large -g -Os -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall
-Werror
-Wno-array-bounds -c -include AutoGen.h -fno-common -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
-I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
-I/home/edk2_new1/MyWorkSpace/MdePkg -I/home/edk2_new1/MyWorkSpace/MdePkg/Include -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 -I/home/edk2_new1/MyWorkSpace/MdeModulePkg -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
"ar" -cr
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
"ld" -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e _ModuleEntryPoint -Map
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
-z common-page-size=0x20 --start-group
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
--end-group --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds --defsym=PECOFF_HEADER_SIZE=0x228 "echo" objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
objcopy not needed for
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
echo --strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
--strip-unneeded -R .eh_frame
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
echo
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
cp -f
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 "GenFw" -e UEFI_APPLICATION -o
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
GenFw: ERROR 3000: Invalid WriteSections64():
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
AARCH64 relative relocations require identical ELF and PE/COFF section offsets make: ***
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
Error 2
build.py... : error 7000: Failed to execute command make tbuild
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
build.py... : error F002: Failed to build module
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
[AARCH64, GCC48, RELEASE]
- Failed -
Build end time: 07:27:21, Feb.05 2016 Build total time: 00:01:04
Thanks Ravi
On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > > Yes.I downloaded the package from > https://github.com/tianocore/edk2.If > you > want me to again download the package and try,I would. > > On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel > ard.biesheuvel@linaro.org > wrote: >> >> On 5 February 2016 at 15:30, Ravikanth MVR >> ravikanth.mvr@broadcom.com >> wrote: >> > Ard, >> > We tried out the patch and we are not seeing the relocation >> > errors >> > anymore.But we are seeing a new error from >> > WriteSection64()-"AARCH64 >> > relative relocations require identical ELF and PE/COFF section >> > offsets".Below is the complete snapshot of the error. >> > >> >> Are you using the latest EDK2? >> >> >> > cp -f >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>> > echo --strip-unneeded -R .eh_frame >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > --strip-unneeded -R .eh_frame >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > echo >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > cp -f >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
>> > "GenFw" -e UEFI_APPLICATION -o >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > GenFw: ERROR 3000: Invalid >> > WriteSections64(): >> > >> > >> > >> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> > AARCH64 relative relocations require identical ELF and PE/COFF >> > section >> > offsets >> > make: *** >> > >> > >> > >> >
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> > Error 2 >> > >> > Thanks >> > Ravi >> > >> > On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR >> > ravikanth.mvr@broadcom.com >> > wrote: >> >> >> >> Thanks Ard!Would try out and let you know the results. >> >> >> >> On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel >> >> ard.biesheuvel@linaro.org >> >> wrote: >> >>> >> >>> On 4 February 2016 at 20:41, Ravikanth MVR >> >>> ravikanth.mvr@broadcom.com >> >>> wrote: >> >>> > Ard, >> >>> > >> >>> > We built the EDK2 with target set to AARCH64 and GCC48 as
the
>> >>> > toolchain.Still we are same relocation errors as
before.Below
>> >>> > is >> >>> > the >> >>> > complete snapshot of the error and map file as well. >> >>> > >> >>> >> >>> Could you try the following patch (don't forget to rebuild >> >>> BaseTools/) >> >>> >> >>> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c >> >>> b/BaseTools/Source/C/GenFw/Elf64Convert.c >> >>> index 90d80a22daf2..0a1329f0f668 100644 >> >>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c >> >>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c >> >>> @@ -767,6 +767,9 @@ WriteSections64 ( >> >>> case R_AARCH64_LD_PREL_LO19: >> >>> case R_AARCH64_CALL26: >> >>> case R_AARCH64_JUMP26: >> >>> + case R_AARCH64_PREL64: >> >>> + case R_AARCH64_PREL32: >> >>> + case R_AARCH64_PREL16: >> >>> // >> >>> // The GCC toolchains (i.e., binutils) may
corrupt
>> >>> section >> >>> relative >> >>> // relocations when emitting relocation sections >> >>> into >> >>> fully >> >>> linked >> >>> @@ -869,6 +872,11 @@ WriteRelocations64 ( >> >>> case R_AARCH64_JUMP26: >> >>> break; >> >>> >> >>> + case R_AARCH64_PREL64: >> >>> + case R_AARCH64_PREL32: >> >>> + case R_AARCH64_PREL16: >> >>> + break; >> >>> + >> >>> case R_AARCH64_ADR_PREL_PG_HI21: >> >>> case R_AARCH64_ADD_ABS_LO12_NC: >> >>> case R_AARCH64_LDST8_ABS_LO12_NC: >> >>> >> >>> -- >> >>> Ard. >> >>> >> >>> >> >>> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror >> >>> > -Wno-array-bounds -ffunction-sections -fdata-sections -c >> >>> > -include >> >>> > AutoGen.h >> >>> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar >> >>> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror >> >>> > -Wno-array-bounds -c >> >>> > -include AutoGen.h -mcmodel=large -mlittle-endian >> >>> > -fno-short-enums >> >>> > -save-temps -fverbose-asm -fsigned-char -ffunction-sections >> >>> > -fdata-sections >> >>> > -fomit-frame-pointer -fno-builtin -Wno-address >> >>> > -Wno-unused-but-set-variable >> >>> > -o >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
>> >>> > >> >>> >
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
>> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg >> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include >> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 >> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg >> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
>> >>> > "ar" -cr >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
>> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
>> >>> > "ld" -o >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u >> >>> > _ModuleEntryPoint >> >>> > -e >> >>> > _ModuleEntryPoint -Map >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
>> >>> > --start-group >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
>> >>> > --end-group >> >>> > "echo" objcopy not needed for >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > objcopy not needed for >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > cp -f >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>> >>> > echo --strip-unneeded -R .eh_frame >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > --strip-unneeded -R .eh_frame >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > echo >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > cp -f >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
>> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
>> >>> > "GenFw" -e UEFI_APPLICATION -o >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > GenFw: ERROR 3000: Invalid >> >>> > WriteSections64(): >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. >> >>> > GenFw: ERROR 3000: Invalid >> >>> > make: *** >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> >>> > Error 2 >> >>> > WriteRelocations64(): >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. >> >>> > >> >>> > >> >>> > build.py... >> >>> > : error 7000: Failed to execute command >> >>> > make all >> >>> > >> >>> > >> >>> > >> >>> > >> >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>> >>> > >> >>> > - Failed - >> >>> > Build end time: 11:29:54, Feb.04 2016 >> >>> > Build total time: 00:00:09 >> >>> > >> >>> > Thanks >> >>> > Ravi >> >>> > >> >>> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR >> >>> > ravikanth.mvr@broadcom.com >> >>> > wrote: >> >>> >> >> >>> >> Ard, >> >>> >> >> >>> >> I tried building the EDK2 with the below configuration and >> >>> >> ended >> >>> >> up >> >>> >> with >> >>> >> the same result as before.Would try out the scenario with >> >>> >> GCC4.9/GCC4.8 >> >>> >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. >> >>> >> Would >> >>> >> let >> >>> >> you know >> >>> >> the results. >> >>> >> >> >>> >> Thanks. >> >>> >> >> >>> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR >> >>> >> ravikanth.mvr@broadcom.com wrote: >> >>> >>> >> >>> >>> Ard, >> >>> >>> Below is my configuration >> >>> >>> >> >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >> >>> >>> TARGET = RELEASE >> >>> >>> TARGET_ARCH = AARCH64 >> >>> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt >> >>> >>> TOOL_CHAIN_TAG = GCC49 >> >>> >>> >> >>> >>> And GCC5.0.0 compiler is being used to compile the code
or
>> >>> >>> you >> >>> >>> want >> >>> >>> me to >> >>> >>> use the GCC4.9 compiler to compile as well? >> >>> >>> >> >>> >>> Thanks. >> >>> >>> >> >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >> >>> >>> ravikanth.mvr@broadcom.com wrote: >> >>> >>>> >> >>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please >> >>> >>>> correct >> >>> >>>> me if >> >>> >>>> I >> >>> >>>> am wrong. >> >>> >>>> >> >>> >>>> Thanks. >> >>> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >> >>> >>>> ard.biesheuvel@linaro.org wrote: >> >>> >>>>> >> >>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR >> >>> >>>>> ravikanth.mvr@broadcom.com >> >>> >>>>> wrote: >> >>> >>>>> > Ard, >> >>> >>>>> > >> >>> >>>>> > I have been using GCC5.0.0(Experimental version). >> >>> >>>>> > >> >>> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0
20141220
>> >>> >>>>> > (experimental) >> >>> >>>>> > >> >>> >>>>> > I would try with GCC49/48 and let you know. >> >>> >>>>> > >> >>> >>>>> >> >>> >>>>> I don't mean the actual compiler, I mean the toolchain >> >>> >>>>> definition >> >>> >>>>> in >> >>> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of >> >>> >>>>> which >> >>> >>>>> are >> >>> >>>>> suitable for building AArch64. You should use GCC48 or >> >>> >>>>> GCC49 >> >>> >>>>> instead >> >>> >>>>> >> >>> >>>>> -- >> >>> >>>>> Ard. >> >>> >>>>> >> >>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >> >>> >>>>> > ard.biesheuvel@linaro.org >> >>> >>>>> > wrote: >> >>> >>>>> >> >> >>> >>>>> >> It looks like you are using the wrong compiler. You >> >>> >>>>> >> should >> >>> >>>>> >> use >> >>> >>>>> >> GCC48 >> >>> >>>>> >> or GCC49 instead. >> >>> >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >> >>> >>>>> >> ravikanth.mvr@broadcom.com >> >>> >>>>> >> wrote: >> >>> >>>>> >> > Thanks Ard!I followed the steps and I could find
out
>> >>> >>>>> >> > that >> >>> >>>>> >> > NO >> >>> >>>>> >> > standard >> >>> >>>>> >> > library was included.Below is the list of
libraries
>> >>> >>>>> >> > that >> >>> >>>>> >> > were >> >>> >>>>> >> > getting >> >>> >>>>> >> > included. >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> >
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj)
>> >>> >>>>> >> > HelloWorld.lib(AutoGen.obj) >> >>> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> >
UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj)
>> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
>> >>> >>>>> >> > UefiLib.lib(UefiLib.obj) >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
>> >>> >>>>> >> > BasePrintLib.lib(PrintLib.obj) >> >>> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >> >>> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >> >>> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) >> >>> >>>>> >> > BaseLib.lib(String.obj) >> >>> >>>>> >> > BaseLib.lib(Unaligned.obj) >> >>> >>>>> >> > BaseLib.lib(Math64.obj) >> >>> >>>>> >> > >> >>> >>>>> >> > I have included .map file as well with this mail. >> >>> >>>>> >> > >> >>> >>>>> >> > Thanks. >> >>> >>>>> >> > >> >>> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >> >>> >>>>> >> > ard.biesheuvel@linaro.org >> >>> >>>>> >> > wrote: >> >>> >>>>> >> >> >> >>> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >> >>> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: >> >>> >>>>> >> >> > Ard, >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > I understand that we have to implement >> >>> >>>>> >> >> > alternative >> >>> >>>>> >> >> > C++ >> >>> >>>>> >> >> > runtime >> >>> >>>>> >> >> > API >> >>> >>>>> >> >> > which >> >>> >>>>> >> >> > maps to new and delete in EDK2
i.e.,AllocatePool
>> >>> >>>>> >> >> > and >> >>> >>>>> >> >> > FreePool. >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > I did implement alternative new and delete >> >>> >>>>> >> >> > API's,which >> >>> >>>>> >> >> > uses >> >>> >>>>> >> >> > AllocatePool >> >>> >>>>> >> >> > and >> >>> >>>>> >> >> > FreePool,for OUR code and most of the
relocation
>> >>> >>>>> >> >> > errors >> >>> >>>>> >> >> > had >> >>> >>>>> >> >> > gone.BUT >> >>> >>>>> >> >> > when >> >>> >>>>> >> >> > the CPP program(HelloWorld) under compilation >> >>> >>>>> >> >> > doesn't >> >>> >>>>> >> >> > even >> >>> >>>>> >> >> > call >> >>> >>>>> >> >> > the >> >>> >>>>> >> >> > C++ >> >>> >>>>> >> >> > runtime API's,why are we seeing these >> >>> >>>>> >> >> > errors?-This >> >>> >>>>> >> >> > is >> >>> >>>>> >> >> > what >> >>> >>>>> >> >> > I am >> >>> >>>>> >> >> > trying >> >>> >>>>> >> >> > to >> >>> >>>>> >> >> > understand. >> >>> >>>>> >> >> > >> >>> >>>>> >> >> >> >>> >>>>> >> >> If you add a -Map xxx.map option to the linker >> >>> >>>>> >> >> command, >> >>> >>>>> >> >> you >> >>> >>>>> >> >> will >> >>> >>>>> >> >> get a >> >>> >>>>> >> >> map file that tells you exactly which object was >> >>> >>>>> >> >> included >> >>> >>>>> >> >> in >> >>> >>>>> >> >> the >> >>> >>>>> >> >> link, >> >>> >>>>> >> >> and why (iow, which symbol dependency it
satisfies)
>> >>> >>>>> >> >> That >> >>> >>>>> >> >> way, >> >>> >>>>> >> >> you >> >>> >>>>> >> >> will >> >>> >>>>> >> >> be able to figure out which standard library is >> >>> >>>>> >> >> included, >> >>> >>>>> >> >> and >> >>> >>>>> >> >> for >> >>> >>>>> >> >> which reason. >> >>> >>>>> >> >> >> >>> >>>>> >> >> > Thanks. >> >>> >>>>> >> >> > ________________________________ >> >>> >>>>> >> >> > From: Ard Biesheuvel >> >>> >>>>> >> >> > Sent: 01-02-2016 12:31 >> >>> >>>>> >> >> > To: M.V.R. Ravikanth >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning >> >>> >>>>> >> >> > Wang; >> >>> >>>>> >> >> > Linaro >> >>> >>>>> >> >> > UEFI >> >>> >>>>> >> >> > Mailman >> >>> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >> >>> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files >> >>> >>>>> >> >> > ARM64 >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >> >>> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: >> >>> >>>>> >> >> >> Ard, >> >>> >>>>> >> >> >> I would try to explain here, >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> 1.Till now we have been compiling CPP programs >> >>> >>>>> >> >> >> in >> >>> >>>>> >> >> >> UDK >> >>> >>>>> >> >> >> with >> >>> >>>>> >> >> >> VS2005/VS2008 >> >>> >>>>> >> >> >> as >> >>> >>>>> >> >> >> toolchain and it worked well. >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> 2.Now,we have a requirement to support AARCH64 >> >>> >>>>> >> >> >> architecture >> >>> >>>>> >> >> >> with >> >>> >>>>> >> >> >> ARMGCC >> >>> >>>>> >> >> >> as >> >>> >>>>> >> >> >> the toolchain.But when we tried to compile our >> >>> >>>>> >> >> >> CPP >> >>> >>>>> >> >> >> code/Sample >> >>> >>>>> >> >> >> HelloWorld >> >>> >>>>> >> >> >> application(HelloWorld.c is renamed to >> >>> >>>>> >> >> >> HelloWorld.cpp) >> >>> >>>>> >> >> >> with >> >>> >>>>> >> >> >> ARMGCC >> >>> >>>>> >> >> >> as >> >>> >>>>> >> >> >> toolchain,we were seeing relocation errors
such
>> >>> >>>>> >> >> >> as >> >>> >>>>> >> >> >> 0x105. >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> 3.As advised by you,we tried compiling a
sample
>> >>> >>>>> >> >> >> HelloWorld >> >>> >>>>> >> >> >> CPP >> >>> >>>>> >> >> >> program >> >>> >>>>> >> >> >> under >> >>> >>>>> >> >> >> EDK2 and still we are seeing the same
relocation
>> >>> >>>>> >> >> >> errors. >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> Questions: >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what should >> >>> >>>>> >> >> >> we >> >>> >>>>> >> >> >> do >> >>> >>>>> >> >> >> to >> >>> >>>>> >> >> >> resolve the >> >>> >>>>> >> >> >> relocation errors we are observing? >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> Please correct me,if I have missed something. >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > The relocation errors are a symptom of the fact >> >>> >>>>> >> >> > that >> >>> >>>>> >> >> > you >> >>> >>>>> >> >> > are >> >>> >>>>> >> >> > trying >> >>> >>>>> >> >> > to >> >>> >>>>> >> >> > link the Linux specific C++ runtime into your >> >>> >>>>> >> >> > EDK2 >> >>> >>>>> >> >> > binary. >> >>> >>>>> >> >> > This >> >>> >>>>> >> >> > is a >> >>> >>>>> >> >> > pointless exercise, since the Linux C++ runtime >> >>> >>>>> >> >> > is >> >>> >>>>> >> >> > fundamentally >> >>> >>>>> >> >> > incompatible with EDK2, So please, don't ask
any
>> >>> >>>>> >> >> > more >> >>> >>>>> >> >> > questions >> >>> >>>>> >> >> > about >> >>> >>>>> >> >> > relocation errors, and focus on implementing an >> >>> >>>>> >> >> > alternative >> >>> >>>>> >> >> > C++ >> >>> >>>>> >> >> > runtime that maps calls to new() and delete() >> >>> >>>>> >> >> > onto >> >>> >>>>> >> >> > EDK2 >> >>> >>>>> >> >> > APIs, >> >>> >>>>> >> >> > i.e., >> >>> >>>>> >> >> > AllocatePool and FreePool. Note that you will >> >>> >>>>> >> >> > still >> >>> >>>>> >> >> > have >> >>> >>>>> >> >> > problems >> >>> >>>>> >> >> > with >> >>> >>>>> >> >> > symbol decoration, since EDK2 header file don't >> >>> >>>>> >> >> > have >> >>> >>>>> >> >> > 'extern >> >>> >>>>> >> >> > "C"' >> >>> >>>>> >> >> > qualifiers around C declarations. >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > >> >>> >>>>> >> >> > >> >>> >>>>> >> >> >> ________________________________ >> >>> >>>>> >> >> >> From: Ard Biesheuvel >> >>> >>>>> >> >> >> Sent: 01-02-2016 11:59 >> >>> >>>>> >> >> >> To: Ravikanth MVR >> >>> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning >> >>> >>>>> >> >> >> Wang; >> >>> >>>>> >> >> >> Linaro >> >>> >>>>> >> >> >> UEFI >> >>> >>>>> >> >> >> Mailman >> >>> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >> >>> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP files >> >>> >>>>> >> >> >> ARM64 >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >> >>> >>>>> >> >> >> ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >> wrote: >> >>> >>>>> >> >> >>> +Unni. >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> Ard, >> >>> >>>>> >> >> >>> I have done a native compilation with EDK2
and
>> >>> >>>>> >> >> >>> I >> >>> >>>>> >> >> >>> am >> >>> >>>>> >> >> >>> facing >> >>> >>>>> >> >> >>> same >> >>> >>>>> >> >> >>> issues >> >>> >>>>> >> >> >>> as >> >>> >>>>> >> >> >>> I >> >>> >>>>> >> >> >>> did before.Below is the snapshot of the
errors
>> >>> >>>>> >> >> >>> I >> >>> >>>>> >> >> >>> received. >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> I have explained twice already why C++ under >> >>> >>>>> >> >> >> EDK2 >> >>> >>>>> >> >> >> is >> >>> >>>>> >> >> >> not >> >>> >>>>> >> >> >> going >> >>> >>>>> >> >> >> to >> >>> >>>>> >> >> >> work. What exactly were you expecting? >> >>> >>>>> >> >> >> -- >> >>> >>>>> >> >> >> Ard. >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >> >> >>> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
>> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >> >>> >>>>> >> >> >>> WriteSections64(): >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >> >>> >>>>> >> >> >>> make: *** >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
>> >>> >>>>> >> >> >>> Error 2 >> >>> >>>>> >> >> >>> WriteRelocations64(): >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> build.py... >> >>> >>>>> >> >> >>> : error 7000: Failed to execute command >> >>> >>>>> >> >> >>> make --no-print-directory all >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
>> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> - Failed - >> >>> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >> >>> >>>>> >> >> >>> Build total time: 00:00:15 >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> Thanks >> >>> >>>>> >> >> >>> Ravi >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard
Biesheuvel
>> >>> >>>>> >> >> >>> ard.biesheuvel@linaro.org >> >>> >>>>> >> >> >>> wrote: >> >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >> >>> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >>>> wrote: >> >>> >>>>> >> >> >>>> > Ard, >> >>> >>>>> >> >> >>>> > I was trying to compile and generate >> >>> >>>>> >> >> >>>> > helloworld >> >>> >>>>> >> >> >>>> > application via >> >>> >>>>> >> >> >>>> > EDK2.Under >> >>> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory
I
>> >>> >>>>> >> >> >>>> > did >> >>> >>>>> >> >> >>>> > not >> >>> >>>>> >> >> >>>> > find >> >>> >>>>> >> >> >>>> > "Win32" >> >>> >>>>> >> >> >>>> > directory >> >>> >>>>> >> >> >>>> > which has GenFw utility.But the UDK
package
>> >>> >>>>> >> >> >>>> > has >> >>> >>>>> >> >> >>>> > Win32 >> >>> >>>>> >> >> >>>> > directory. >> >>> >>>>> >> >> >>>> > >> >>> >>>>> >> >> >>>> > Could you let me know on how to build and >> >>> >>>>> >> >> >>>> > EDK2 >> >>> >>>>> >> >> >>>> > package >> >>> >>>>> >> >> >>>> > in >> >>> >>>>> >> >> >>>> > Windows >> >>> >>>>> >> >> >>>> > or >> >>> >>>>> >> >> >>>> > else Am >> >>> >>>>> >> >> >>>> > I missing something here? >> >>> >>>>> >> >> >>>> > >> >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> I haven't used Windows for software >> >>> >>>>> >> >> >>>> development >> >>> >>>>> >> >> >>>> work >> >>> >>>>> >> >> >>>> in >> >>> >>>>> >> >> >>>> 15 >> >>> >>>>> >> >> >>>> years, >> >>> >>>>> >> >> >>>> so >> >>> >>>>> >> >> >>>> I >> >>> >>>>> >> >> >>>> am really not the person you should be
asking
>> >>> >>>>> >> >> >>>> this. >> >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> -- >> >>> >>>>> >> >> >>>> Ard. >> >>> >>>>> >> >> >>>> >> >>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, Ravikanth >> >>> >>>>> >> >> >>>> > MVR >> >>> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >>>> > wrote: >> >>> >>>>> >> >> >>>> >> >> >>> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let you >> >>> >>>>> >> >> >>>> >> know >> >>> >>>>> >> >> >>>> >> the >> >>> >>>>> >> >> >>>> >> results. >> >>> >>>>> >> >> >>>> >> >> >>> >>>>> >> >> >>>> >> Thanks. >> >>> >>>>> >> >> >>>> >> >> >>> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard >> >>> >>>>> >> >> >>>> >> Biesheuvel >> >>> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >> >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth
MVR
>> >>> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >>>> >>> wrote: >> >>> >>>>> >> >> >>>> >>> > Ard, >> >>> >>>>> >> >> >>>> >>> > >> >>> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld >> >>> >>>>> >> >> >>>> >>> > program,which >> >>> >>>>> >> >> >>>> >>> > is >> >>> >>>>> >> >> >>>> >>> > part >> >>> >>>>> >> >> >>>> >>> > of >> >>> >>>>> >> >> >>>> >>> > EDK2 >> >>> >>>>> >> >> >>>> >>> > sample >> >>> >>>>> >> >> >>>> >>> > programs and which is written in c,is >> >>> >>>>> >> >> >>>> >>> > renamed >> >>> >>>>> >> >> >>>> >>> > to >> >>> >>>>> >> >> >>>> >>> > .CPP,we get >> >>> >>>>> >> >> >>>> >>> > these >> >>> >>>>> >> >> >>>> >>> > relocation issues in-spite of not
using
>> >>> >>>>> >> >> >>>> >>> > any >> >>> >>>>> >> >> >>>> >>> > C++ >> >>> >>>>> >> >> >>>> >>> > runtime >> >>> >>>>> >> >> >>>> >>> > API's. >> >>> >>>>> >> >> >>>> >>> > >> >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> In UDK or EDK2? >> >>> >>>>> >> >> >>>> >>> >> >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard >> >>> >>>>> >> >> >>>> >>> > Biesheuvel >> >>> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >> >>> >>>>> >> >> >>>> >>> > wrote: >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06,
Ravikanth
>> >>> >>>>> >> >> >>>> >>> >> MVR >> >>> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >>>> >>> >> wrote: >> >>> >>>>> >> >> >>>> >>> >> > Hi Ard, >> >>> >>>>> >> >> >>>> >>> >> > >> >>> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking about >> >>> >>>>> >> >> >>>> >>> >> > the >> >>> >>>>> >> >> >>>> >>> >> > 0x105 >> >>> >>>>> >> >> >>>> >>> >> > and >> >>> >>>>> >> >> >>>> >>> >> > 0x0 >> >>> >>>>> >> >> >>>> >>> >> > relocation >> >>> >>>>> >> >> >>>> >>> >> > issues >> >>> >>>>> >> >> >>>> >>> >> > which we came across while
compiling
>> >>> >>>>> >> >> >>>> >>> >> > a >> >>> >>>>> >> >> >>>> >>> >> > simple >> >>> >>>>> >> >> >>>> >>> >> > HelloWorld >> >>> >>>>> >> >> >>>> >>> >> > program >> >>> >>>>> >> >> >>>> >>> >> > in >> >>> >>>>> >> >> >>>> >>> >> > CPP.As >> >>> >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 >> >>> >>>>> >> >> >>>> >>> >> > mailing >> >>> >>>>> >> >> >>>> >>> >> > list)we >> >>> >>>>> >> >> >>>> >>> >> > need >> >>> >>>>> >> >> >>>> >>> >> > some >> >>> >>>>> >> >> >>>> >>> >> > changes >> >>> >>>>> >> >> >>>> >>> >> > to >> >>> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of
UDK,can
>> >>> >>>>> >> >> >>>> >>> >> > we >> >>> >>>>> >> >> >>>> >>> >> > take >> >>> >>>>> >> >> >>>> >>> >> > the >> >>> >>>>> >> >> >>>> >>> >> > required >> >>> >>>>> >> >> >>>> >>> >> > changes >> >>> >>>>> >> >> >>>> >>> >> > forward >> >>> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this >> >>> >>>>> >> >> >>>> >>> >> > support? >> >>> >>>>> >> >> >>>> >>> >> > >> >>> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with >> >>> >>>>> >> >> >>>> >>> >> > this >> >>> >>>>> >> >> >>>> >>> >> > activity >> >>> >>>>> >> >> >>>> >>> >> > and >> >>> >>>>> >> >> >>>> >>> >> > would >> >>> >>>>> >> >> >>>> >>> >> > need >> >>> >>>>> >> >> >>>> >>> >> > your >> >>> >>>>> >> >> >>>> >>> >> > help >> >>> >>>>> >> >> >>>> >>> >> > badly. >> >>> >>>>> >> >> >>>> >>> >> > >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase >> >>> >>>>> >> >> >>>> >>> >> your >> >>> >>>>> >> >> >>>> >>> >> work >> >>> >>>>> >> >> >>>> >>> >> onto >> >>> >>>>> >> >> >>>> >>> >> the >> >>> >>>>> >> >> >>>> >>> >> latest >> >>> >>>>> >> >> >>>> >>> >> EDK2 >> >>> >>>>> >> >> >>>> >>> >> master branch. There have been many >> >>> >>>>> >> >> >>>> >>> >> changes >> >>> >>>>> >> >> >>>> >>> >> to >> >>> >>>>> >> >> >>>> >>> >> the >> >>> >>>>> >> >> >>>> >>> >> way >> >>> >>>>> >> >> >>>> >>> >> relocations >> >>> >>>>> >> >> >>>> >>> >> are >> >>> >>>>> >> >> >>>> >>> >> handled, which also impose
requirements
>> >>> >>>>> >> >> >>>> >>> >> at >> >>> >>>>> >> >> >>>> >>> >> link >> >>> >>>>> >> >> >>>> >>> >> time >> >>> >>>>> >> >> >>>> >>> >> (i.e., >> >>> >>>>> >> >> >>>> >>> >> in >> >>> >>>>> >> >> >>>> >>> >> terms >> >>> >>>>> >> >> >>>> >>> >> of section alignment, and relative >> >>> >>>>> >> >> >>>> >>> >> offset >> >>> >>>>> >> >> >>>> >>> >> between >> >>> >>>>> >> >> >>>> >>> >> sections >> >>> >>>>> >> >> >>>> >>> >> both >> >>> >>>>> >> >> >>>> >>> >> in >> >>> >>>>> >> >> >>>> >>> >> the >> >>> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the >> >>> >>>>> >> >> >>>> >>> >> image) >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> However, the relocation issue was due >> >>> >>>>> >> >> >>>> >>> >> to >> >>> >>>>> >> >> >>>> >>> >> the >> >>> >>>>> >> >> >>>> >>> >> fact >> >>> >>>>> >> >> >>>> >>> >> that you >> >>> >>>>> >> >> >>>> >>> >> were >> >>> >>>>> >> >> >>>> >>> >> using >> >>> >>>>> >> >> >>>> >>> >> the Linux version of the C++ runtime, >> >>> >>>>> >> >> >>>> >>> >> which >> >>> >>>>> >> >> >>>> >>> >> you >> >>> >>>>> >> >> >>>> >>> >> cannot use >> >>> >>>>> >> >> >>>> >>> >> under >> >>> >>>>> >> >> >>>> >>> >> EDK2 >> >>> >>>>> >> >> >>>> >>> >> even if we do support those
relocation
>> >>> >>>>> >> >> >>>> >>> >> types >> >>> >>>>> >> >> >>>> >>> >> with >> >>> >>>>> >> >> >>>> >>> >> the >> >>> >>>>> >> >> >>>> >>> >> newer >> >>> >>>>> >> >> >>>> >>> >> tools. >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> Bottom line is that you need to
develop
>> >>> >>>>> >> >> >>>> >>> >> your >> >>> >>>>> >> >> >>>> >>> >> own >> >>> >>>>> >> >> >>>> >>> >> C++ >> >>> >>>>> >> >> >>>> >>> >> minimal >> >>> >>>>> >> >> >>>> >>> >> runtime >> >>> >>>>> >> >> >>>> >>> >> if you want to run C++ programs under >> >>> >>>>> >> >> >>>> >>> >> EDK2 >> >>> >>>>> >> >> >>>> >>> >> >> >>> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, >> >>> >>>>> >> >> >>>> >>> >> > Ravikanth >> >>> >>>>> >> >> >>>> >>> >> > MVR >> >>> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >> >>> >>>>> >> >> >>>> >>> >> > wrote: >> >>> >>>>> >> >> >>>> >>> >> >> >> >>> >>>>> >> >> >>>> >>> >> >> +Sada. >> >>> >>>>> >> >> >>>> >>> >> >> >> >>> >>>>> >> >> >>>> >>> >> >> Thanks. >> >>> >>>>> >> >> >>>> >>> >> >> >> >>> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM,
Ard
>> >>> >>>>> >> >> >>>> >>> >> >> Biesheuvel >> >>> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org
wrote:
>> >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02,
Leif
>> >>> >>>>> >> >> >>>> >>> >> >>> Lindholm >> >>> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >> >>> >>>>> >> >> >>>> >>> >> >>> wrote: >> >>> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, >> >>> >>>>> >> >> >>>> >>> >> >>> > >> >>> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in
my
>> >>> >>>>> >> >> >>>> >>> >> >>> > SPAM >> >>> >>>>> >> >> >>>> >>> >> >>> > folder >> >>> >>>>> >> >> >>>> >>> >> >>> > for >> >>> >>>>> >> >> >>>> >>> >> >>> > some >> >>> >>>>> >> >> >>>> >>> >> >>> > reason. >> >>> >>>>> >> >> >>>> >>> >> >>> > >> >>> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at >> >>> >>>>> >> >> >>>> >>> >> >>> > 05:25:21PM >> >>> >>>>> >> >> >>>> >>> >> >>> > -0500, >> >>> >>>>> >> >> >>>> >>> >> >>> > Daniel >> >>> >>>>> >> >> >>>> >>> >> >>> > Samuelraj >> >>> >>>>> >> >> >>>> >>> >> >>> > wrote: >> >>> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP
files
>> >>> >>>>> >> >> >>>> >>> >> >>> >> for >> >>> >>>>> >> >> >>>> >>> >> >>> >> X64 >> >>> >>>>> >> >> >>>> >>> >> >>> >> using >> >>> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 >> >>> >>>>> >> >> >>>> >>> >> >>> >> by >> >>> >>>>> >> >> >>>> >>> >> >>> >> using >> >>> >>>>> >> >> >>>> >>> >> >>> >> Visual >> >>> >>>>> >> >> >>>> >>> >> >>> >> Studio. >> >>> >>>>> >> >> >>>> >>> >> >>> >> >> >>> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same >> >>> >>>>> >> >> >>>> >>> >> >>> >> source >> >>> >>>>> >> >> >>>> >>> >> >>> >> for >> >>> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? >> >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is
completely
>> >>> >>>>> >> >> >>>> >>> >> >>> unsupported, >> >>> >>>>> >> >> >>>> >>> >> >>> and is >> >>> >>>>> >> >> >>>> >>> >> >>> going >> >>> >>>>> >> >> >>>> >>> >> >>> to >> >>> >>>>> >> >> >>>> >>> >> >>> be >> >>> >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. >> >>> >>>>> >> >> >>>> >>> >> >>> Note >> >>> >>>>> >> >> >>>> >>> >> >>> that >> >>> >>>>> >> >> >>>> >>> >> >>> you >> >>> >>>>> >> >> >>>> >>> >> >>> cannot >> >>> >>>>> >> >> >>>> >>> >> >>> rely >> >>> >>>>> >> >> >>>> >>> >> >>> on >> >>> >>>>> >> >> >>>> >>> >> >>> the >> >>> >>>>> >> >> >>>> >>> >> >>> C++ >> >>> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons >> >>> >>>>> >> >> >>>> >>> >> >>> (including, >> >>> >>>>> >> >> >>>> >>> >> >>> but >> >>> >>>>> >> >> >>>> >>> >> >>> not >> >>> >>>>> >> >> >>>> >>> >> >>> limited >> >>> >>>>> >> >> >>>> >>> >> >>> to, >> >>> >>>>> >> >> >>>> >>> >> >>> the >> >>> >>>>> >> >> >>>> >>> >> >>> fact >> >>> >>>>> >> >> >>>> >>> >> >>> that it uses small model >> >>> >>>>> >> >> >>>> >>> >> >>> relocations, >> >>> >>>>> >> >> >>>> >>> >> >>> and >> >>> >>>>> >> >> >>>> >>> >> >>> is >> >>> >>>>> >> >> >>>> >>> >> >>> built >> >>> >>>>> >> >> >>>> >>> >> >>> against >> >>> >>>>> >> >> >>>> >>> >> >>> libc >> >>> >>>>> >> >> >>>> >>> >> >>> on >> >>> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even
works
>> >>> >>>>> >> >> >>>> >>> >> >>> on >> >>> >>>>> >> >> >>>> >>> >> >>> Visual >> >>> >>>>> >> >> >>>> >>> >> >>> Studio >> >>> >>>>> >> >> >>>> >>> >> >>> for >> >>> >>>>> >> >> >>>> >>> >> >>> X64, >> >>> >>>>> >> >> >>>> >>> >> >>> since >> >>> >>>>> >> >> >>>> >>> >> >>> the code you build will try to
call
>> >>> >>>>> >> >> >>>> >>> >> >>> libc >> >>> >>>>> >> >> >>>> >>> >> >>> functions from >> >>> >>>>> >> >> >>>> >>> >> >>> the >> >>> >>>>> >> >> >>>> >>> >> >>> VC >> >>> >>>>> >> >> >>>> >>> >> >>> runtime >> >>> >>>>> >> >> >>>> >>> >> >>> library. >> >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion >> >>> >>>>> >> >> >>>> >>> >> >>> about >> >>> >>>>> >> >> >>>> >>> >> >>> this >> >>> >>>>> >> >> >>>> >>> >> >>> recently on >> >>> >>>>> >> >> >>>> >>> >> >>> the >> >>> >>>>> >> >> >>>> >>> >> >>> list. >> >>> >>>>> >> >> >>>> >>> >> >>> If >> >>> >>>>> >> >> >>>> >>> >> >>> you >> >>> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >> >>> >>>>> >> >> >>>> >>> >> >>> reimplement >> >>> >>>>> >> >> >>>> >>> >> >>> your >> >>> >>>>> >> >> >>>> >>> >> >>> new >> >>> >>>>> >> >> >>>> >>> >> >>> and >> >>> >>>>> >> >> >>>> >>> >> >>> delete >> >>> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to
build
>> >>> >>>>> >> >> >>>> >>> >> >>> code >> >>> >>>>> >> >> >>>> >>> >> >>> that >> >>> >>>>> >> >> >>>> >>> >> >>> does not >> >>> >>>>> >> >> >>>> >>> >> >>> rely >> >>> >>>>> >> >> >>>> >>> >> >>> on >> >>> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >> >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>>>> >> >> >>>> >>> >> >>> -- >> >>> >>>>> >> >> >>>> >>> >> >>> Ard. >> >>> >>>>> >> >> >>>> >>> >> >> >> >>> >>>>> >> >> >>>> >>> >> >> >> >>> >>>>> >> >> >>>> >>> >> > >> >>> >>>>> >> >> >>>> >>> > >> >>> >>>>> >> >> >>>> >>> > >> >>> >>>>> >> >> >>>> >> >> >>> >>>>> >> >> >>>> >> >> >>> >>>>> >> >> >>>> > >> >>> >>>>> >> >> >>> >> >>> >>>>> >> >> >>> >> >>> >>>>> >> > >> >>> >>>>> >> > >> >>> >>>>> > >> >>> >>>>> > >> >>> >>>> >> >>> >>>> >> >>> >>> >> >>> >> >> >>> > >> >> >> >> >> > > >
On 5 February 2016 at 17:00, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
I am using gcc compiler only not g++.
Ok, so you are using gcc to compile the .cpp files. Got it.
On Fri, Feb 5, 2016 at 9:20 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, OK.I am not passing -fno-exceptions.Would change the same and let you know.
Which command line of the C++ compiler? I din't get it.
In your output, there are lines for gcc, ld, ar etc, but not for g++
Thanks Ravi
On Fri, Feb 5, 2016 at 9:16 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:40, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
Can you send me the output of 'readelf -a HelloWorld.dll'
On 5 February 2016 at 16:31, Ravikanth MVR ravikanth.mvr@broadcom.com wrote: > Ard, > > Tried out again by downloading the edk2-master but the result was > same.Please find below the snapshot.BTW,why this error-AARCH64 > relative > relocations require identical ELF and PE/COFF section offsets > -comes > up? > > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror > -Wno-array-bounds -ffunction-sections -fdata-sections -c -include > AutoGen.h > -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large > -g > -Os > -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall > -Werror > -Wno-array-bounds -c -include AutoGen.h -fno-common > -mlittle-endian > -fno-short-enums -save-temps -fverbose-asm -fsigned-char > -ffunction-sections > -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address > -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj > -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld > > > > -I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG > -I/home/edk2_new1/MyWorkSpace/MdePkg > -I/home/edk2_new1/MyWorkSpace/MdePkg/Include > -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 > -I/home/edk2_new1/MyWorkSpace/MdeModulePkg > -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c > "ar" -cr > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib > > > > @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst > "ld" -o > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e > _ModuleEntryPoint -Map > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map > -z common-page-size=0x20 --start-group > > > > @/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst > --end-group > --script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds > --defsym=PECOFF_HEADER_SIZE=0x228 > "echo" objcopy not needed for > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > objcopy not needed for > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > cp -f > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > echo --strip-unneeded -R .eh_frame > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > --strip-unneeded -R .eh_frame > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > echo > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > cp -f > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 > "GenFw" -e UEFI_APPLICATION -o > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > GenFw: ERROR 3000: Invalid > WriteSections64(): > > > > /home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll > AARCH64 relative relocations require identical ELF and PE/COFF > section > offsets > make: *** > > > > [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] > Error 2 > > > build.py... > : error 7000: Failed to execute command > make tbuild > > > > [/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] > > > build.py... > : error F002: Failed to build module > > > > > /home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf > [AARCH64, GCC48, RELEASE] > > - Failed - > Build end time: 07:27:21, Feb.05 2016 > Build total time: 00:01:04 > > Thanks > Ravi > > On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: >> >> Yes.I downloaded the package from >> https://github.com/tianocore/edk2.If >> you >> want me to again download the package and try,I would. >> >> On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel >> ard.biesheuvel@linaro.org >> wrote: >>> >>> On 5 February 2016 at 15:30, Ravikanth MVR >>> ravikanth.mvr@broadcom.com >>> wrote: >>> > Ard, >>> > We tried out the patch and we are not seeing the relocation >>> > errors >>> > anymore.But we are seeing a new error from >>> > WriteSection64()-"AARCH64 >>> > relative relocations require identical ELF and PE/COFF section >>> > offsets".Below is the complete snapshot of the error. >>> > >>> >>> Are you using the latest EDK2? >>> >>> >>> > cp -f >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >>> > echo --strip-unneeded -R .eh_frame >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > --strip-unneeded -R .eh_frame >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > echo >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > cp -f >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 >>> > "GenFw" -e UEFI_APPLICATION -o >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > GenFw: ERROR 3000: Invalid >>> > WriteSections64(): >>> > >>> > >>> > >>> > >>> > /home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> > AARCH64 relative relocations require identical ELF and PE/COFF >>> > section >>> > offsets >>> > make: *** >>> > >>> > >>> > >>> > >>> > [/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >>> > Error 2 >>> > >>> > Thanks >>> > Ravi >>> > >>> > On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR >>> > ravikanth.mvr@broadcom.com >>> > wrote: >>> >> >>> >> Thanks Ard!Would try out and let you know the results. >>> >> >>> >> On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel >>> >> ard.biesheuvel@linaro.org >>> >> wrote: >>> >>> >>> >>> On 4 February 2016 at 20:41, Ravikanth MVR >>> >>> ravikanth.mvr@broadcom.com >>> >>> wrote: >>> >>> > Ard, >>> >>> > >>> >>> > We built the EDK2 with target set to AARCH64 and GCC48 as >>> >>> > the >>> >>> > toolchain.Still we are same relocation errors as >>> >>> > before.Below >>> >>> > is >>> >>> > the >>> >>> > complete snapshot of the error and map file as well. >>> >>> > >>> >>> >>> >>> Could you try the following patch (don't forget to rebuild >>> >>> BaseTools/) >>> >>> >>> >>> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c >>> >>> b/BaseTools/Source/C/GenFw/Elf64Convert.c >>> >>> index 90d80a22daf2..0a1329f0f668 100644 >>> >>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c >>> >>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c >>> >>> @@ -767,6 +767,9 @@ WriteSections64 ( >>> >>> case R_AARCH64_LD_PREL_LO19: >>> >>> case R_AARCH64_CALL26: >>> >>> case R_AARCH64_JUMP26: >>> >>> + case R_AARCH64_PREL64: >>> >>> + case R_AARCH64_PREL32: >>> >>> + case R_AARCH64_PREL16: >>> >>> // >>> >>> // The GCC toolchains (i.e., binutils) may >>> >>> corrupt >>> >>> section >>> >>> relative >>> >>> // relocations when emitting relocation >>> >>> sections >>> >>> into >>> >>> fully >>> >>> linked >>> >>> @@ -869,6 +872,11 @@ WriteRelocations64 ( >>> >>> case R_AARCH64_JUMP26: >>> >>> break; >>> >>> >>> >>> + case R_AARCH64_PREL64: >>> >>> + case R_AARCH64_PREL32: >>> >>> + case R_AARCH64_PREL16: >>> >>> + break; >>> >>> + >>> >>> case R_AARCH64_ADR_PREL_PG_HI21: >>> >>> case R_AARCH64_ADD_ABS_LO12_NC: >>> >>> case R_AARCH64_LDST8_ABS_LO12_NC: >>> >>> >>> >>> -- >>> >>> Ard. >>> >>> >>> >>> >>> >>> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall >>> >>> > -Werror >>> >>> > -Wno-array-bounds -ffunction-sections -fdata-sections -c >>> >>> > -include >>> >>> > AutoGen.h >>> >>> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os -fshort-wchar >>> >>> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror >>> >>> > -Wno-array-bounds -c >>> >>> > -include AutoGen.h -mcmodel=large -mlittle-endian >>> >>> > -fno-short-enums >>> >>> > -save-temps -fverbose-asm -fsigned-char >>> >>> > -ffunction-sections >>> >>> > -fdata-sections >>> >>> > -fomit-frame-pointer -fno-builtin -Wno-address >>> >>> > -Wno-unused-but-set-variable >>> >>> > -o >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj >>> >>> > >>> >>> > >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > -I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c >>> >>> > "ar" -cr >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst >>> >>> > "ld" -o >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u >>> >>> > _ModuleEntryPoint >>> >>> > -e >>> >>> > _ModuleEntryPoint -Map >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map >>> >>> > --start-group >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > @/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst >>> >>> > --end-group >>> >>> > "echo" objcopy not needed for >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > objcopy not needed for >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > cp -f >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >>> >>> > echo --strip-unneeded -R .eh_frame >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > --strip-unneeded -R .eh_frame >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > echo >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > cp -f >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64 >>> >>> > "GenFw" -e UEFI_APPLICATION -o >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > GenFw: ERROR 3000: Invalid >>> >>> > WriteSections64(): >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. >>> >>> > GenFw: ERROR 3000: Invalid >>> >>> > make: *** >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >>> >>> > Error 2 >>> >>> > WriteRelocations64(): >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > /home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. >>> >>> > >>> >>> > >>> >>> > build.py... >>> >>> > : error 7000: Failed to execute command >>> >>> > make all >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > [/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >>> >>> > >>> >>> > - Failed - >>> >>> > Build end time: 11:29:54, Feb.04 2016 >>> >>> > Build total time: 00:00:09 >>> >>> > >>> >>> > Thanks >>> >>> > Ravi >>> >>> > >>> >>> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR >>> >>> > ravikanth.mvr@broadcom.com >>> >>> > wrote: >>> >>> >> >>> >>> >> Ard, >>> >>> >> >>> >>> >> I tried building the EDK2 with the below configuration >>> >>> >> and >>> >>> >> ended >>> >>> >> up >>> >>> >> with >>> >>> >> the same result as before.Would try out the scenario with >>> >>> >> GCC4.9/GCC4.8 >>> >>> >> compiler+Toolchain:GCC49/GCC48 and target set to AARCH64. >>> >>> >> Would >>> >>> >> let >>> >>> >> you know >>> >>> >> the results. >>> >>> >> >>> >>> >> Thanks. >>> >>> >> >>> >>> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR >>> >>> >> ravikanth.mvr@broadcom.com wrote: >>> >>> >>> >>> >>> >>> Ard, >>> >>> >>> Below is my configuration >>> >>> >>> >>> >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc >>> >>> >>> TARGET = RELEASE >>> >>> >>> TARGET_ARCH = AARCH64 >>> >>> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt >>> >>> >>> TOOL_CHAIN_TAG = GCC49 >>> >>> >>> >>> >>> >>> And GCC5.0.0 compiler is being used to compile the code >>> >>> >>> or >>> >>> >>> you >>> >>> >>> want >>> >>> >>> me to >>> >>> >>> use the GCC4.9 compiler to compile as well? >>> >>> >>> >>> >>> >>> Thanks. >>> >>> >>> >>> >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR >>> >>> >>> ravikanth.mvr@broadcom.com wrote: >>> >>> >>>> >>> >>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49 .Please >>> >>> >>>> correct >>> >>> >>>> me if >>> >>> >>>> I >>> >>> >>>> am wrong. >>> >>> >>>> >>> >>> >>>> Thanks. >>> >>> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel >>> >>> >>>> ard.biesheuvel@linaro.org wrote: >>> >>> >>>>> >>> >>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR >>> >>> >>>>> ravikanth.mvr@broadcom.com >>> >>> >>>>> wrote: >>> >>> >>>>> > Ard, >>> >>> >>>>> > >>> >>> >>>>> > I have been using GCC5.0.0(Experimental version). >>> >>> >>>>> > >>> >>> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 >>> >>> >>>>> > 20141220 >>> >>> >>>>> > (experimental) >>> >>> >>>>> > >>> >>> >>>>> > I would try with GCC49/48 and let you know. >>> >>> >>>>> > >>> >>> >>>>> >>> >>> >>>>> I don't mean the actual compiler, I mean the toolchain >>> >>> >>>>> definition >>> >>> >>>>> in >>> >>> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither of >>> >>> >>>>> which >>> >>> >>>>> are >>> >>> >>>>> suitable for building AArch64. You should use GCC48 or >>> >>> >>>>> GCC49 >>> >>> >>>>> instead >>> >>> >>>>> >>> >>> >>>>> -- >>> >>> >>>>> Ard. >>> >>> >>>>> >>> >>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel >>> >>> >>>>> > ard.biesheuvel@linaro.org >>> >>> >>>>> > wrote: >>> >>> >>>>> >> >>> >>> >>>>> >> It looks like you are using the wrong compiler. You >>> >>> >>>>> >> should >>> >>> >>>>> >> use >>> >>> >>>>> >> GCC48 >>> >>> >>>>> >> or GCC49 instead. >>> >>> >>>>> >> >>> >>> >>>>> >> >>> >>> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR >>> >>> >>>>> >> ravikanth.mvr@broadcom.com >>> >>> >>>>> >> wrote: >>> >>> >>>>> >> > Thanks Ard!I followed the steps and I could find >>> >>> >>>>> >> > out >>> >>> >>>>> >> > that >>> >>> >>>>> >> > NO >>> >>> >>>>> >> > standard >>> >>> >>>>> >> > library was included.Below is the list of >>> >>> >>>>> >> > libraries >>> >>> >>>>> >> > that >>> >>> >>>>> >> > were >>> >>> >>>>> >> > getting >>> >>> >>>>> >> > included. >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj) >>> >>> >>>>> >> > HelloWorld.lib(AutoGen.obj) >>> >>> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj) >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj) >>> >>> >>>>> >> > UefiLib.lib(UefiLib.obj) >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> > BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj) >>> >>> >>>>> >> > BasePrintLib.lib(PrintLib.obj) >>> >>> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) >>> >>> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) >>> >>> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) >>> >>> >>>>> >> > BaseLib.lib(String.obj) >>> >>> >>>>> >> > BaseLib.lib(Unaligned.obj) >>> >>> >>>>> >> > BaseLib.lib(Math64.obj) >>> >>> >>>>> >> > >>> >>> >>>>> >> > I have included .map file as well with this mail. >>> >>> >>>>> >> > >>> >>> >>>>> >> > Thanks. >>> >>> >>>>> >> > >>> >>> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel >>> >>> >>>>> >> > ard.biesheuvel@linaro.org >>> >>> >>>>> >> > wrote: >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth >>> >>> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: >>> >>> >>>>> >> >> > Ard, >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > I understand that we have to implement >>> >>> >>>>> >> >> > alternative >>> >>> >>>>> >> >> > C++ >>> >>> >>>>> >> >> > runtime >>> >>> >>>>> >> >> > API >>> >>> >>>>> >> >> > which >>> >>> >>>>> >> >> > maps to new and delete in EDK2 >>> >>> >>>>> >> >> > i.e.,AllocatePool >>> >>> >>>>> >> >> > and >>> >>> >>>>> >> >> > FreePool. >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > I did implement alternative new and delete >>> >>> >>>>> >> >> > API's,which >>> >>> >>>>> >> >> > uses >>> >>> >>>>> >> >> > AllocatePool >>> >>> >>>>> >> >> > and >>> >>> >>>>> >> >> > FreePool,for OUR code and most of the >>> >>> >>>>> >> >> > relocation >>> >>> >>>>> >> >> > errors >>> >>> >>>>> >> >> > had >>> >>> >>>>> >> >> > gone.BUT >>> >>> >>>>> >> >> > when >>> >>> >>>>> >> >> > the CPP program(HelloWorld) under compilation >>> >>> >>>>> >> >> > doesn't >>> >>> >>>>> >> >> > even >>> >>> >>>>> >> >> > call >>> >>> >>>>> >> >> > the >>> >>> >>>>> >> >> > C++ >>> >>> >>>>> >> >> > runtime API's,why are we seeing these >>> >>> >>>>> >> >> > errors?-This >>> >>> >>>>> >> >> > is >>> >>> >>>>> >> >> > what >>> >>> >>>>> >> >> > I am >>> >>> >>>>> >> >> > trying >>> >>> >>>>> >> >> > to >>> >>> >>>>> >> >> > understand. >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> If you add a -Map xxx.map option to the linker >>> >>> >>>>> >> >> command, >>> >>> >>>>> >> >> you >>> >>> >>>>> >> >> will >>> >>> >>>>> >> >> get a >>> >>> >>>>> >> >> map file that tells you exactly which object was >>> >>> >>>>> >> >> included >>> >>> >>>>> >> >> in >>> >>> >>>>> >> >> the >>> >>> >>>>> >> >> link, >>> >>> >>>>> >> >> and why (iow, which symbol dependency it >>> >>> >>>>> >> >> satisfies) >>> >>> >>>>> >> >> That >>> >>> >>>>> >> >> way, >>> >>> >>>>> >> >> you >>> >>> >>>>> >> >> will >>> >>> >>>>> >> >> be able to figure out which standard library is >>> >>> >>>>> >> >> included, >>> >>> >>>>> >> >> and >>> >>> >>>>> >> >> for >>> >>> >>>>> >> >> which reason. >>> >>> >>>>> >> >> >>> >>> >>>>> >> >> > Thanks. >>> >>> >>>>> >> >> > ________________________________ >>> >>> >>>>> >> >> > From: Ard Biesheuvel >>> >>> >>>>> >> >> > Sent: 01-02-2016 12:31 >>> >>> >>>>> >> >> > To: M.V.R. Ravikanth >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj; Jianning >>> >>> >>>>> >> >> > Wang; >>> >>> >>>>> >> >> > Linaro >>> >>> >>>>> >> >> > UEFI >>> >>> >>>>> >> >> > Mailman >>> >>> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S >>> >>> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP files >>> >>> >>>>> >> >> > ARM64 >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R. Ravikanth >>> >>> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: >>> >>> >>>>> >> >> >> Ard, >>> >>> >>>>> >> >> >> I would try to explain here, >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> 1.Till now we have been compiling CPP >>> >>> >>>>> >> >> >> programs >>> >>> >>>>> >> >> >> in >>> >>> >>>>> >> >> >> UDK >>> >>> >>>>> >> >> >> with >>> >>> >>>>> >> >> >> VS2005/VS2008 >>> >>> >>>>> >> >> >> as >>> >>> >>>>> >> >> >> toolchain and it worked well. >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> 2.Now,we have a requirement to support >>> >>> >>>>> >> >> >> AARCH64 >>> >>> >>>>> >> >> >> architecture >>> >>> >>>>> >> >> >> with >>> >>> >>>>> >> >> >> ARMGCC >>> >>> >>>>> >> >> >> as >>> >>> >>>>> >> >> >> the toolchain.But when we tried to compile >>> >>> >>>>> >> >> >> our >>> >>> >>>>> >> >> >> CPP >>> >>> >>>>> >> >> >> code/Sample >>> >>> >>>>> >> >> >> HelloWorld >>> >>> >>>>> >> >> >> application(HelloWorld.c is renamed to >>> >>> >>>>> >> >> >> HelloWorld.cpp) >>> >>> >>>>> >> >> >> with >>> >>> >>>>> >> >> >> ARMGCC >>> >>> >>>>> >> >> >> as >>> >>> >>>>> >> >> >> toolchain,we were seeing relocation errors >>> >>> >>>>> >> >> >> such >>> >>> >>>>> >> >> >> as >>> >>> >>>>> >> >> >> 0x105. >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> 3.As advised by you,we tried compiling a >>> >>> >>>>> >> >> >> sample >>> >>> >>>>> >> >> >> HelloWorld >>> >>> >>>>> >> >> >> CPP >>> >>> >>>>> >> >> >> program >>> >>> >>>>> >> >> >> under >>> >>> >>>>> >> >> >> EDK2 and still we are seeing the same >>> >>> >>>>> >> >> >> relocation >>> >>> >>>>> >> >> >> errors. >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> Questions: >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what >>> >>> >>>>> >> >> >> should >>> >>> >>>>> >> >> >> we >>> >>> >>>>> >> >> >> do >>> >>> >>>>> >> >> >> to >>> >>> >>>>> >> >> >> resolve the >>> >>> >>>>> >> >> >> relocation errors we are observing? >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> Please correct me,if I have missed something. >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > The relocation errors are a symptom of the >>> >>> >>>>> >> >> > fact >>> >>> >>>>> >> >> > that >>> >>> >>>>> >> >> > you >>> >>> >>>>> >> >> > are >>> >>> >>>>> >> >> > trying >>> >>> >>>>> >> >> > to >>> >>> >>>>> >> >> > link the Linux specific C++ runtime into your >>> >>> >>>>> >> >> > EDK2 >>> >>> >>>>> >> >> > binary. >>> >>> >>>>> >> >> > This >>> >>> >>>>> >> >> > is a >>> >>> >>>>> >> >> > pointless exercise, since the Linux C++ >>> >>> >>>>> >> >> > runtime >>> >>> >>>>> >> >> > is >>> >>> >>>>> >> >> > fundamentally >>> >>> >>>>> >> >> > incompatible with EDK2, So please, don't ask >>> >>> >>>>> >> >> > any >>> >>> >>>>> >> >> > more >>> >>> >>>>> >> >> > questions >>> >>> >>>>> >> >> > about >>> >>> >>>>> >> >> > relocation errors, and focus on implementing >>> >>> >>>>> >> >> > an >>> >>> >>>>> >> >> > alternative >>> >>> >>>>> >> >> > C++ >>> >>> >>>>> >> >> > runtime that maps calls to new() and delete() >>> >>> >>>>> >> >> > onto >>> >>> >>>>> >> >> > EDK2 >>> >>> >>>>> >> >> > APIs, >>> >>> >>>>> >> >> > i.e., >>> >>> >>>>> >> >> > AllocatePool and FreePool. Note that you will >>> >>> >>>>> >> >> > still >>> >>> >>>>> >> >> > have >>> >>> >>>>> >> >> > problems >>> >>> >>>>> >> >> > with >>> >>> >>>>> >> >> > symbol decoration, since EDK2 header file >>> >>> >>>>> >> >> > don't >>> >>> >>>>> >> >> > have >>> >>> >>>>> >> >> > 'extern >>> >>> >>>>> >> >> > "C"' >>> >>> >>>>> >> >> > qualifiers around C declarations. >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> >> ________________________________ >>> >>> >>>>> >> >> >> From: Ard Biesheuvel >>> >>> >>>>> >> >> >> Sent: 01-02-2016 11:59 >>> >>> >>>>> >> >> >> To: Ravikanth MVR >>> >>> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj; Jianning >>> >>> >>>>> >> >> >> Wang; >>> >>> >>>>> >> >> >> Linaro >>> >>> >>>>> >> >> >> UEFI >>> >>> >>>>> >> >> >> Mailman >>> >>> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S >>> >>> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP >>> >>> >>>>> >> >> >> files >>> >>> >>>>> >> >> >> ARM64 >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR >>> >>> >>>>> >> >> >> ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >> wrote: >>> >>> >>>>> >> >> >>> +Unni. >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> Ard, >>> >>> >>>>> >> >> >>> I have done a native compilation with EDK2 >>> >>> >>>>> >> >> >>> and >>> >>> >>>>> >> >> >>> I >>> >>> >>>>> >> >> >>> am >>> >>> >>>>> >> >> >>> facing >>> >>> >>>>> >> >> >>> same >>> >>> >>>>> >> >> >>> issues >>> >>> >>>>> >> >> >>> as >>> >>> >>>>> >> >> >>> I >>> >>> >>>>> >> >> >>> did before.Below is the snapshot of the >>> >>> >>>>> >> >> >>> errors >>> >>> >>>>> >> >> >>> I >>> >>> >>>>> >> >> >>> received. >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> I have explained twice already why C++ under >>> >>> >>>>> >> >> >> EDK2 >>> >>> >>>>> >> >> >> is >>> >>> >>>>> >> >> >> not >>> >>> >>>>> >> >> >> going >>> >>> >>>>> >> >> >> to >>> >>> >>>>> >> >> >> work. What exactly were you expecting? >>> >>> >>>>> >> >> >> -- >>> >>> >>>>> >> >> >> Ard. >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >> >>> >>> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >>> >>>>> >> >> >>> WriteSections64(): >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid >>> >>> >>>>> >> >> >>> make: *** >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi] >>> >>> >>>>> >> >> >>> Error 2 >>> >>> >>>>> >> >> >>> WriteRelocations64(): >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> /home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll >>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation 0x105. >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> build.py... >>> >>> >>>>> >> >> >>> : error 7000: Failed to execute command >>> >>> >>>>> >> >> >>> make --no-print-directory all >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> [/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld] >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> - Failed - >>> >>> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 >>> >>> >>>>> >> >> >>> Build total time: 00:00:15 >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> Thanks >>> >>> >>>>> >> >> >>> Ravi >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard >>> >>> >>>>> >> >> >>> Biesheuvel >>> >>> >>>>> >> >> >>> ard.biesheuvel@linaro.org >>> >>> >>>>> >> >> >>> wrote: >>> >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth MVR >>> >>> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >>>> wrote: >>> >>> >>>>> >> >> >>>> > Ard, >>> >>> >>>>> >> >> >>>> > I was trying to compile and generate >>> >>> >>>>> >> >> >>>> > helloworld >>> >>> >>>>> >> >> >>>> > application via >>> >>> >>>>> >> >> >>>> > EDK2.Under >>> >>> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin" directory >>> >>> >>>>> >> >> >>>> > I >>> >>> >>>>> >> >> >>>> > did >>> >>> >>>>> >> >> >>>> > not >>> >>> >>>>> >> >> >>>> > find >>> >>> >>>>> >> >> >>>> > "Win32" >>> >>> >>>>> >> >> >>>> > directory >>> >>> >>>>> >> >> >>>> > which has GenFw utility.But the UDK >>> >>> >>>>> >> >> >>>> > package >>> >>> >>>>> >> >> >>>> > has >>> >>> >>>>> >> >> >>>> > Win32 >>> >>> >>>>> >> >> >>>> > directory. >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> > Could you let me know on how to build and >>> >>> >>>>> >> >> >>>> > EDK2 >>> >>> >>>>> >> >> >>>> > package >>> >>> >>>>> >> >> >>>> > in >>> >>> >>>>> >> >> >>>> > Windows >>> >>> >>>>> >> >> >>>> > or >>> >>> >>>>> >> >> >>>> > else Am >>> >>> >>>>> >> >> >>>> > I missing something here? >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> I haven't used Windows for software >>> >>> >>>>> >> >> >>>> development >>> >>> >>>>> >> >> >>>> work >>> >>> >>>>> >> >> >>>> in >>> >>> >>>>> >> >> >>>> 15 >>> >>> >>>>> >> >> >>>> years, >>> >>> >>>>> >> >> >>>> so >>> >>> >>>>> >> >> >>>> I >>> >>> >>>>> >> >> >>>> am really not the person you should be >>> >>> >>>>> >> >> >>>> asking >>> >>> >>>>> >> >> >>>> this. >>> >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> -- >>> >>> >>>>> >> >> >>>> Ard. >>> >>> >>>>> >> >> >>>> >>> >>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, >>> >>> >>>>> >> >> >>>> > Ravikanth >>> >>> >>>>> >> >> >>>> > MVR >>> >>> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >>>> > wrote: >>> >>> >>>>> >> >> >>>> >> >>> >>> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let >>> >>> >>>>> >> >> >>>> >> you >>> >>> >>>>> >> >> >>>> >> know >>> >>> >>>>> >> >> >>>> >> the >>> >>> >>>>> >> >> >>>> >> results. >>> >>> >>>>> >> >> >>>> >> >>> >>> >>>>> >> >> >>>> >> Thanks. >>> >>> >>>>> >> >> >>>> >> >>> >>> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard >>> >>> >>>>> >> >> >>>> >> Biesheuvel >>> >>> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: >>> >>> >>>>> >> >> >>>> >>> >>> >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28, Ravikanth >>> >>> >>>>> >> >> >>>> >>> MVR >>> >>> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >>>> >>> wrote: >>> >>> >>>>> >> >> >>>> >>> > Ard, >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld >>> >>> >>>>> >> >> >>>> >>> > program,which >>> >>> >>>>> >> >> >>>> >>> > is >>> >>> >>>>> >> >> >>>> >>> > part >>> >>> >>>>> >> >> >>>> >>> > of >>> >>> >>>>> >> >> >>>> >>> > EDK2 >>> >>> >>>>> >> >> >>>> >>> > sample >>> >>> >>>>> >> >> >>>> >>> > programs and which is written in c,is >>> >>> >>>>> >> >> >>>> >>> > renamed >>> >>> >>>>> >> >> >>>> >>> > to >>> >>> >>>>> >> >> >>>> >>> > .CPP,we get >>> >>> >>>>> >> >> >>>> >>> > these >>> >>> >>>>> >> >> >>>> >>> > relocation issues in-spite of not >>> >>> >>>>> >> >> >>>> >>> > using >>> >>> >>>>> >> >> >>>> >>> > any >>> >>> >>>>> >> >> >>>> >>> > C++ >>> >>> >>>>> >> >> >>>> >>> > runtime >>> >>> >>>>> >> >> >>>> >>> > API's. >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> >>> >>> >>>>> >> >> >>>> >>> In UDK or EDK2? >>> >>> >>>>> >> >> >>>> >>> >>> >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM, Ard >>> >>> >>>>> >> >> >>>> >>> > Biesheuvel >>> >>> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org >>> >>> >>>>> >> >> >>>> >>> > wrote: >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, >>> >>> >>>>> >> >> >>>> >>> >> Ravikanth >>> >>> >>>>> >> >> >>>> >>> >> MVR >>> >>> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >>>> >>> >> wrote: >>> >>> >>>>> >> >> >>>> >>> >> > Hi Ard, >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking >>> >>> >>>>> >> >> >>>> >>> >> > about >>> >>> >>>>> >> >> >>>> >>> >> > the >>> >>> >>>>> >> >> >>>> >>> >> > 0x105 >>> >>> >>>>> >> >> >>>> >>> >> > and >>> >>> >>>>> >> >> >>>> >>> >> > 0x0 >>> >>> >>>>> >> >> >>>> >>> >> > relocation >>> >>> >>>>> >> >> >>>> >>> >> > issues >>> >>> >>>>> >> >> >>>> >>> >> > which we came across while >>> >>> >>>>> >> >> >>>> >>> >> > compiling >>> >>> >>>>> >> >> >>>> >>> >> > a >>> >>> >>>>> >> >> >>>> >>> >> > simple >>> >>> >>>>> >> >> >>>> >>> >> > HelloWorld >>> >>> >>>>> >> >> >>>> >>> >> > program >>> >>> >>>>> >> >> >>>> >>> >> > in >>> >>> >>>>> >> >> >>>> >>> >> > CPP.As >>> >>> >>>>> >> >> >>>> >>> >> > you said on the other thread(EDK2 >>> >>> >>>>> >> >> >>>> >>> >> > mailing >>> >>> >>>>> >> >> >>>> >>> >> > list)we >>> >>> >>>>> >> >> >>>> >>> >> > need >>> >>> >>>>> >> >> >>>> >>> >> > some >>> >>> >>>>> >> >> >>>> >>> >> > changes >>> >>> >>>>> >> >> >>>> >>> >> > to >>> >>> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of >>> >>> >>>>> >> >> >>>> >>> >> > UDK,can >>> >>> >>>>> >> >> >>>> >>> >> > we >>> >>> >>>>> >> >> >>>> >>> >> > take >>> >>> >>>>> >> >> >>>> >>> >> > the >>> >>> >>>>> >> >> >>>> >>> >> > required >>> >>> >>>>> >> >> >>>> >>> >> > changes >>> >>> >>>>> >> >> >>>> >>> >> > forward >>> >>> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this >>> >>> >>>>> >> >> >>>> >>> >> > support? >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture with >>> >>> >>>>> >> >> >>>> >>> >> > this >>> >>> >>>>> >> >> >>>> >>> >> > activity >>> >>> >>>>> >> >> >>>> >>> >> > and >>> >>> >>>>> >> >> >>>> >>> >> > would >>> >>> >>>>> >> >> >>>> >>> >> > need >>> >>> >>>>> >> >> >>>> >>> >> > your >>> >>> >>>>> >> >> >>>> >>> >> > help >>> >>> >>>>> >> >> >>>> >>> >> > badly. >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> Please forget about UDK, and rebase >>> >>> >>>>> >> >> >>>> >>> >> your >>> >>> >>>>> >> >> >>>> >>> >> work >>> >>> >>>>> >> >> >>>> >>> >> onto >>> >>> >>>>> >> >> >>>> >>> >> the >>> >>> >>>>> >> >> >>>> >>> >> latest >>> >>> >>>>> >> >> >>>> >>> >> EDK2 >>> >>> >>>>> >> >> >>>> >>> >> master branch. There have been many >>> >>> >>>>> >> >> >>>> >>> >> changes >>> >>> >>>>> >> >> >>>> >>> >> to >>> >>> >>>>> >> >> >>>> >>> >> the >>> >>> >>>>> >> >> >>>> >>> >> way >>> >>> >>>>> >> >> >>>> >>> >> relocations >>> >>> >>>>> >> >> >>>> >>> >> are >>> >>> >>>>> >> >> >>>> >>> >> handled, which also impose >>> >>> >>>>> >> >> >>>> >>> >> requirements >>> >>> >>>>> >> >> >>>> >>> >> at >>> >>> >>>>> >> >> >>>> >>> >> link >>> >>> >>>>> >> >> >>>> >>> >> time >>> >>> >>>>> >> >> >>>> >>> >> (i.e., >>> >>> >>>>> >> >> >>>> >>> >> in >>> >>> >>>>> >> >> >>>> >>> >> terms >>> >>> >>>>> >> >> >>>> >>> >> of section alignment, and relative >>> >>> >>>>> >> >> >>>> >>> >> offset >>> >>> >>>>> >> >> >>>> >>> >> between >>> >>> >>>>> >> >> >>>> >>> >> sections >>> >>> >>>>> >> >> >>>> >>> >> both >>> >>> >>>>> >> >> >>>> >>> >> in >>> >>> >>>>> >> >> >>>> >>> >> the >>> >>> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of the >>> >>> >>>>> >> >> >>>> >>> >> image) >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> However, the relocation issue was >>> >>> >>>>> >> >> >>>> >>> >> due >>> >>> >>>>> >> >> >>>> >>> >> to >>> >>> >>>>> >> >> >>>> >>> >> the >>> >>> >>>>> >> >> >>>> >>> >> fact >>> >>> >>>>> >> >> >>>> >>> >> that you >>> >>> >>>>> >> >> >>>> >>> >> were >>> >>> >>>>> >> >> >>>> >>> >> using >>> >>> >>>>> >> >> >>>> >>> >> the Linux version of the C++ >>> >>> >>>>> >> >> >>>> >>> >> runtime, >>> >>> >>>>> >> >> >>>> >>> >> which >>> >>> >>>>> >> >> >>>> >>> >> you >>> >>> >>>>> >> >> >>>> >>> >> cannot use >>> >>> >>>>> >> >> >>>> >>> >> under >>> >>> >>>>> >> >> >>>> >>> >> EDK2 >>> >>> >>>>> >> >> >>>> >>> >> even if we do support those >>> >>> >>>>> >> >> >>>> >>> >> relocation >>> >>> >>>>> >> >> >>>> >>> >> types >>> >>> >>>>> >> >> >>>> >>> >> with >>> >>> >>>>> >> >> >>>> >>> >> the >>> >>> >>>>> >> >> >>>> >>> >> newer >>> >>> >>>>> >> >> >>>> >>> >> tools. >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> Bottom line is that you need to >>> >>> >>>>> >> >> >>>> >>> >> develop >>> >>> >>>>> >> >> >>>> >>> >> your >>> >>> >>>>> >> >> >>>> >>> >> own >>> >>> >>>>> >> >> >>>> >>> >> C++ >>> >>> >>>>> >> >> >>>> >>> >> minimal >>> >>> >>>>> >> >> >>>> >>> >> runtime >>> >>> >>>>> >> >> >>>> >>> >> if you want to run C++ programs >>> >>> >>>>> >> >> >>>> >>> >> under >>> >>> >>>>> >> >> >>>> >>> >> EDK2 >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, >>> >>> >>>>> >> >> >>>> >>> >> > Ravikanth >>> >>> >>>>> >> >> >>>> >>> >> > MVR >>> >>> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com >>> >>> >>>>> >> >> >>>> >>> >> > wrote: >>> >>> >>>>> >> >> >>>> >>> >> >> >>> >>> >>>>> >> >> >>>> >>> >> >> +Sada. >>> >>> >>>>> >> >> >>>> >>> >> >> >>> >>> >>>>> >> >> >>>> >>> >> >> Thanks. >>> >>> >>>>> >> >> >>>> >>> >> >> >>> >>> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38 PM, >>> >>> >>>>> >> >> >>>> >>> >> >> Ard >>> >>> >>>>> >> >> >>>> >>> >> >> Biesheuvel >>> >>> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org >>> >>> >>>>> >> >> >>>> >>> >> >> wrote: >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, >>> >>> >>>>> >> >> >>>> >>> >> >>> Leif >>> >>> >>>>> >> >> >>>> >>> >> >>> Lindholm >>> >>> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org >>> >>> >>>>> >> >> >>>> >>> >> >>> wrote: >>> >>> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck in >>> >>> >>>>> >> >> >>>> >>> >> >>> > my >>> >>> >>>>> >> >> >>>> >>> >> >>> > SPAM >>> >>> >>>>> >> >> >>>> >>> >> >>> > folder >>> >>> >>>>> >> >> >>>> >>> >> >>> > for >>> >>> >>>>> >> >> >>>> >>> >> >>> > some >>> >>> >>>>> >> >> >>>> >>> >> >>> > reason. >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at >>> >>> >>>>> >> >> >>>> >>> >> >>> > 05:25:21PM >>> >>> >>>>> >> >> >>>> >>> >> >>> > -0500, >>> >>> >>>>> >> >> >>>> >>> >> >>> > Daniel >>> >>> >>>>> >> >> >>>> >>> >> >>> > Samuelraj >>> >>> >>>>> >> >> >>>> >>> >> >>> > wrote: >>> >>> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP >>> >>> >>>>> >> >> >>>> >>> >> >>> >> files >>> >>> >>>>> >> >> >>>> >>> >> >>> >> for >>> >>> >>>>> >> >> >>>> >>> >> >>> >> X64 >>> >>> >>>>> >> >> >>>> >>> >> >>> >> using >>> >>> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 >>> >>> >>>>> >> >> >>>> >>> >> >>> >> by >>> >>> >>>>> >> >> >>>> >>> >> >>> >> using >>> >>> >>>>> >> >> >>>> >>> >> >>> >> Visual >>> >>> >>>>> >> >> >>>> >>> >> >>> >> Studio. >>> >>> >>>>> >> >> >>>> >>> >> >>> >> >>> >>> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same >>> >>> >>>>> >> >> >>>> >>> >> >>> >> source >>> >>> >>>>> >> >> >>>> >>> >> >>> >> for >>> >>> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is >>> >>> >>>>> >> >> >>>> >>> >> >>> completely >>> >>> >>>>> >> >> >>>> >>> >> >>> unsupported, >>> >>> >>>>> >> >> >>>> >>> >> >>> and is >>> >>> >>>>> >> >> >>>> >>> >> >>> going >>> >>> >>>>> >> >> >>>> >>> >> >>> to >>> >>> >>>>> >> >> >>>> >>> >> >>> be >>> >>> >>>>> >> >> >>>> >>> >> >>> quite a challenge to implement. >>> >>> >>>>> >> >> >>>> >>> >> >>> Note >>> >>> >>>>> >> >> >>>> >>> >> >>> that >>> >>> >>>>> >> >> >>>> >>> >> >>> you >>> >>> >>>>> >> >> >>>> >>> >> >>> cannot >>> >>> >>>>> >> >> >>>> >>> >> >>> rely >>> >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>> >>>>> >> >> >>>> >>> >> >>> C++ >>> >>> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons >>> >>> >>>>> >> >> >>>> >>> >> >>> (including, >>> >>> >>>>> >> >> >>>> >>> >> >>> but >>> >>> >>>>> >> >> >>>> >>> >> >>> not >>> >>> >>>>> >> >> >>>> >>> >> >>> limited >>> >>> >>>>> >> >> >>>> >>> >> >>> to, >>> >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>> >>>>> >> >> >>>> >>> >> >>> fact >>> >>> >>>>> >> >> >>>> >>> >> >>> that it uses small model >>> >>> >>>>> >> >> >>>> >>> >> >>> relocations, >>> >>> >>>>> >> >> >>>> >>> >> >>> and >>> >>> >>>>> >> >> >>>> >>> >> >>> is >>> >>> >>>>> >> >> >>>> >>> >> >>> built >>> >>> >>>>> >> >> >>>> >>> >> >>> against >>> >>> >>>>> >> >> >>>> >>> >> >>> libc >>> >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even >>> >>> >>>>> >> >> >>>> >>> >> >>> works >>> >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>> >>>>> >> >> >>>> >>> >> >>> Visual >>> >>> >>>>> >> >> >>>> >>> >> >>> Studio >>> >>> >>>>> >> >> >>>> >>> >> >>> for >>> >>> >>>>> >> >> >>>> >>> >> >>> X64, >>> >>> >>>>> >> >> >>>> >>> >> >>> since >>> >>> >>>>> >> >> >>>> >>> >> >>> the code you build will try to >>> >>> >>>>> >> >> >>>> >>> >> >>> call >>> >>> >>>>> >> >> >>>> >>> >> >>> libc >>> >>> >>>>> >> >> >>>> >>> >> >>> functions from >>> >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>> >>>>> >> >> >>>> >>> >> >>> VC >>> >>> >>>>> >> >> >>>> >>> >> >>> runtime >>> >>> >>>>> >> >> >>>> >>> >> >>> library. >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion >>> >>> >>>>> >> >> >>>> >>> >> >>> about >>> >>> >>>>> >> >> >>>> >>> >> >>> this >>> >>> >>>>> >> >> >>>> >>> >> >>> recently on >>> >>> >>>>> >> >> >>>> >>> >> >>> the >>> >>> >>>>> >> >> >>>> >>> >> >>> list. >>> >>> >>>>> >> >> >>>> >>> >> >>> If >>> >>> >>>>> >> >> >>>> >>> >> >>> you >>> >>> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI, and >>> >>> >>>>> >> >> >>>> >>> >> >>> reimplement >>> >>> >>>>> >> >> >>>> >>> >> >>> your >>> >>> >>>>> >> >> >>>> >>> >> >>> new >>> >>> >>>>> >> >> >>>> >>> >> >>> and >>> >>> >>>>> >> >> >>>> >>> >> >>> delete >>> >>> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to >>> >>> >>>>> >> >> >>>> >>> >> >>> build >>> >>> >>>>> >> >> >>>> >>> >> >>> code >>> >>> >>>>> >> >> >>>> >>> >> >>> that >>> >>> >>>>> >> >> >>>> >>> >> >>> does not >>> >>> >>>>> >> >> >>>> >>> >> >>> rely >>> >>> >>>>> >> >> >>>> >>> >> >>> on >>> >>> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. >>> >>> >>>>> >> >> >>>> >>> >> >>> >>> >>> >>>>> >> >> >>>> >>> >> >>> -- >>> >>> >>>>> >> >> >>>> >>> >> >>> Ard. >>> >>> >>>>> >> >> >>>> >>> >> >> >>> >>> >>>>> >> >> >>>> >>> >> >> >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >> >>> >>> >>>>> >> >> >>>> >> >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> >> >>> >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> > >>> >>> >>>>> > >>> >>> >>>> >>> >>> >>>> >>> >>> >>> >>> >>> >> >>> >>> > >>> >> >>> >> >>> > >> >> >
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we end up with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819): !EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
Thanks Ravi
On Fri, Feb 5, 2016 at 9:35 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 17:00, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
I am using gcc compiler only not g++.
Ok, so you are using gcc to compile the .cpp files. Got it.
On Fri, Feb 5, 2016 at 9:20 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 5 February 2016 at 16:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard, OK.I am not passing -fno-exceptions.Would change the same and let you know.
Which command line of the C++ compiler? I din't get it.
In your output, there are lines for gcc, ld, ar etc, but not for g++
Thanks Ravi
On Fri, Feb 5, 2016 at 9:16 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 5 February 2016 at 16:40, Ravikanth MVR <
ravikanth.mvr@broadcom.com>
wrote:
Attached.
You have an .eh_frame section in the binary. Are you passing -fno-exceptions like I told you to?
Btw you never pasted the command line of the C++ compiler, could you please share that as well?
On Fri, Feb 5, 2016 at 9:03 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote: > > Can you send me the output of 'readelf -a HelloWorld.dll' > > > On 5 February 2016 at 16:31, Ravikanth MVR > ravikanth.mvr@broadcom.com > wrote: > > Ard, > > > > Tried out again by downloading the edk2-master but the result
was
> > same.Please find below the snapshot.BTW,why this error-AARCH64 > > relative > > relocations require identical ELF and PE/COFF section offsets > > -comes > > up? > > > > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall -Werror > > -Wno-array-bounds -ffunction-sections -fdata-sections -c
-include
> > AutoGen.h > > -fno-common -DSTRING_ARRAY_NAME=HelloWorldStrings -mcmodel=large > > -g > > -Os > > -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall > > -Werror > > -Wno-array-bounds -c -include AutoGen.h -fno-common > > -mlittle-endian > > -fno-short-enums -save-temps -fverbose-asm -fsigned-char > > -ffunction-sections > > -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address > > -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -o > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
> >
-I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld
> > > > > > > >
-I/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
> > -I/home/edk2_new1/MyWorkSpace/MdePkg > > -I/home/edk2_new1/MyWorkSpace/MdePkg/Include > > -I/home/edk2_new1/MyWorkSpace/MdePkg/Include/AArch64 > > -I/home/edk2_new1/MyWorkSpace/MdeModulePkg > > -I/home/edk2_new1/MyWorkSpace/MdeModulePkg/Include > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
> > "ar" -cr > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
> > > > > > > >
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
> > "ld" -o > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > --emit-relocs -nostdlib --gc-sections -u _ModuleEntryPoint -e > > _ModuleEntryPoint -Map > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
> > -z common-page-size=0x20 --start-group > > > > > > > >
@/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
> > --end-group > >
--script=/home/edk2_new1/MyWorkSpace/BaseTools/Scripts/GccBase.lds
> > --defsym=PECOFF_HEADER_SIZE=0x228 > > "echo" objcopy not needed for > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > objcopy not needed for > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > cp -f > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> > echo --strip-unneeded -R .eh_frame > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > --strip-unneeded -R .eh_frame > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > echo > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > cp -f > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
> > "GenFw" -e UEFI_APPLICATION -o > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > GenFw: ERROR 3000: Invalid > > WriteSections64(): > > > > > > > >
/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> > AARCH64 relative relocations require identical ELF and PE/COFF > > section > > offsets > > make: *** > > > > > > > >
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> > Error 2 > > > > > > build.py... > > : error 7000: Failed to execute command > > make tbuild > > > > > > > >
[/home/edk2_new1/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> > > > > > build.py... > > : error F002: Failed to build module > > > > > > > > > >
/home/edk2_new1/MyWorkSpace/MdeModulePkg/Application/HelloWorld/HelloWorld.inf
> > [AARCH64, GCC48, RELEASE] > > > > - Failed - > > Build end time: 07:27:21, Feb.05 2016 > > Build total time: 00:01:04 > > > > Thanks > > Ravi > > > > On Fri, Feb 5, 2016 at 8:06 PM, Ravikanth MVR > > ravikanth.mvr@broadcom.com > > wrote: > >> > >> Yes.I downloaded the package from > >> https://github.com/tianocore/edk2.If > >> you > >> want me to again download the package and try,I would. > >> > >> On Fri, Feb 5, 2016 at 8:01 PM, Ard Biesheuvel > >> ard.biesheuvel@linaro.org > >> wrote: > >>> > >>> On 5 February 2016 at 15:30, Ravikanth MVR > >>> ravikanth.mvr@broadcom.com > >>> wrote: > >>> > Ard, > >>> > We tried out the patch and we are not seeing the relocation > >>> > errors > >>> > anymore.But we are seeing a new error from > >>> > WriteSection64()-"AARCH64 > >>> > relative relocations require identical ELF and PE/COFF
section
> >>> > offsets".Below is the complete snapshot of the error. > >>> > > >>> > >>> Are you using the latest EDK2? > >>> > >>> > >>> > cp -f > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> >>> > echo --strip-unneeded -R .eh_frame > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > --strip-unneeded -R .eh_frame > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > echo > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > cp -f > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
> >>> > "GenFw" -e UEFI_APPLICATION -o > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > GenFw: ERROR 3000: Invalid > >>> > WriteSections64(): > >>> > > >>> > > >>> > > >>> > > >>> >
/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> > AARCH64 relative relocations require identical ELF and
PE/COFF
> >>> > section > >>> > offsets > >>> > make: *** > >>> > > >>> > > >>> > > >>> > > >>> >
[/home/edk2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >>> > Error 2 > >>> > > >>> > Thanks > >>> > Ravi > >>> > > >>> > On Fri, Feb 5, 2016 at 6:06 PM, Ravikanth MVR > >>> > ravikanth.mvr@broadcom.com > >>> > wrote: > >>> >> > >>> >> Thanks Ard!Would try out and let you know the results. > >>> >> > >>> >> On Fri, Feb 5, 2016 at 2:30 PM, Ard Biesheuvel > >>> >> ard.biesheuvel@linaro.org > >>> >> wrote: > >>> >>> > >>> >>> On 4 February 2016 at 20:41, Ravikanth MVR > >>> >>> ravikanth.mvr@broadcom.com > >>> >>> wrote: > >>> >>> > Ard, > >>> >>> > > >>> >>> > We built the EDK2 with target set to AARCH64 and GCC48
as
> >>> >>> > the > >>> >>> > toolchain.Still we are same relocation errors as > >>> >>> > before.Below > >>> >>> > is > >>> >>> > the > >>> >>> > complete snapshot of the error and map file as well. > >>> >>> > > >>> >>> > >>> >>> Could you try the following patch (don't forget to rebuild > >>> >>> BaseTools/) > >>> >>> > >>> >>> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> >>> b/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> >>> index 90d80a22daf2..0a1329f0f668 100644 > >>> >>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> >>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c > >>> >>> @@ -767,6 +767,9 @@ WriteSections64 ( > >>> >>> case R_AARCH64_LD_PREL_LO19: > >>> >>> case R_AARCH64_CALL26: > >>> >>> case R_AARCH64_JUMP26: > >>> >>> + case R_AARCH64_PREL64: > >>> >>> + case R_AARCH64_PREL32: > >>> >>> + case R_AARCH64_PREL16: > >>> >>> // > >>> >>> // The GCC toolchains (i.e., binutils) may > >>> >>> corrupt > >>> >>> section > >>> >>> relative > >>> >>> // relocations when emitting relocation > >>> >>> sections > >>> >>> into > >>> >>> fully > >>> >>> linked > >>> >>> @@ -869,6 +872,11 @@ WriteRelocations64 ( > >>> >>> case R_AARCH64_JUMP26: > >>> >>> break; > >>> >>> > >>> >>> + case R_AARCH64_PREL64: > >>> >>> + case R_AARCH64_PREL32: > >>> >>> + case R_AARCH64_PREL16: > >>> >>> + break; > >>> >>> + > >>> >>> case R_AARCH64_ADR_PREL_PG_HI21: > >>> >>> case R_AARCH64_ADD_ABS_LO12_NC: > >>> >>> case R_AARCH64_LDST8_ABS_LO12_NC: > >>> >>> > >>> >>> -- > >>> >>> Ard. > >>> >>> > >>> >>> > >>> >>> > "gcc" -g -fshort-wchar -fno-strict-aliasing -Wall > >>> >>> > -Werror > >>> >>> > -Wno-array-bounds -ffunction-sections -fdata-sections -c > >>> >>> > -include > >>> >>> > AutoGen.h > >>> >>> > -DSTRING_ARRAY_NAME=HelloWorldStrings -g -Os
-fshort-wchar
> >>> >>> > -fno-strict-aliasing -fno-stack-protector -Wall -Werror > >>> >>> > -Wno-array-bounds -c > >>> >>> > -include AutoGen.h -mcmodel=large -mlittle-endian > >>> >>> > -fno-short-enums > >>> >>> > -save-temps -fverbose-asm -fsigned-char > >>> >>> > -ffunction-sections > >>> >>> > -fdata-sections > >>> >>> > -fomit-frame-pointer -fno-builtin -Wno-address > >>> >>> > -Wno-unused-but-set-variable > >>> >>> > -o > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/./AutoGen.obj
> >>> >>> > > >>> >>> > > >>> >>> >
-I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Application/HelloWorld
> >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
-I/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG
> >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg > >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include > >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdePkg/Include/AArch64 > >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg > >>> >>> > -I/home/ekd2_new/MyWorkSpace/MdeModulePkg/Include > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/AutoGen.c
> >>> >>> > "ar" -cr > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.lib
> >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/object_files.lst
> >>> >>> > "ld" -o > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > -Ttext=0x0 --emit-relocs -nostdlib --gc-sections -u > >>> >>> > _ModuleEntryPoint > >>> >>> > -e > >>> >>> > _ModuleEntryPoint -Map > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.map
> >>> >>> > --start-group > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
@/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/static_library_files.lst
> >>> >>> > --end-group > >>> >>> > "echo" objcopy not needed for > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > objcopy not needed for > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > cp -f > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> >>> >>> > echo --strip-unneeded -R .eh_frame > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > --strip-unneeded -R .eh_frame > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > echo > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > cp -f > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.debug
> >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64
> >>> >>> > "GenFw" -e UEFI_APPLICATION -o > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > GenFw: ERROR 3000: Invalid > >>> >>> > WriteSections64(): > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. > >>> >>> > GenFw: ERROR 3000: Invalid > >>> >>> > make: *** > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >>> >>> > Error 2 > >>> >>> > WriteRelocations64(): > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> > unsupported ELF EM_AARCH64 relocation 0x105. > >>> >>> > > >>> >>> > > >>> >>> > build.py... > >>> >>> > : error 7000: Failed to execute command > >>> >>> > make all > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> > > >>> >>> >
[/home/ekd2_new/MyWorkSpace/Build/MdeModule/RELEASE_GCC48/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> >>> >>> > > >>> >>> > - Failed - > >>> >>> > Build end time: 11:29:54, Feb.04 2016 > >>> >>> > Build total time: 00:00:09 > >>> >>> > > >>> >>> > Thanks > >>> >>> > Ravi > >>> >>> > > >>> >>> > On Wed, Feb 3, 2016 at 12:54 AM, Ravikanth MVR > >>> >>> > ravikanth.mvr@broadcom.com > >>> >>> > wrote: > >>> >>> >> > >>> >>> >> Ard, > >>> >>> >> > >>> >>> >> I tried building the EDK2 with the below configuration > >>> >>> >> and > >>> >>> >> ended > >>> >>> >> up > >>> >>> >> with > >>> >>> >> the same result as before.Would try out the scenario
with
> >>> >>> >> GCC4.9/GCC4.8 > >>> >>> >> compiler+Toolchain:GCC49/GCC48 and target set to
AARCH64.
> >>> >>> >> Would > >>> >>> >> let > >>> >>> >> you know > >>> >>> >> the results. > >>> >>> >> > >>> >>> >> Thanks. > >>> >>> >> > >>> >>> >> On Tue, Feb 2, 2016 at 10:18 PM, Ravikanth MVR > >>> >>> >> ravikanth.mvr@broadcom.com wrote: > >>> >>> >>> > >>> >>> >>> Ard, > >>> >>> >>> Below is my configuration > >>> >>> >>> > >>> >>> >>> ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc > >>> >>> >>> TARGET = RELEASE > >>> >>> >>> TARGET_ARCH = AARCH64 > >>> >>> >>> TOOL_CHAIN_CONF = Conf/tools_def.txt > >>> >>> >>> TOOL_CHAIN_TAG = GCC49 > >>> >>> >>> > >>> >>> >>> And GCC5.0.0 compiler is being used to compile the
code
> >>> >>> >>> or > >>> >>> >>> you > >>> >>> >>> want > >>> >>> >>> me to > >>> >>> >>> use the GCC4.9 compiler to compile as well? > >>> >>> >>> > >>> >>> >>> Thanks. > >>> >>> >>> > >>> >>> >>> On Tue, Feb 2, 2016 at 8:56 PM, Ravikanth MVR > >>> >>> >>> ravikanth.mvr@broadcom.com wrote: > >>> >>> >>>> > >>> >>> >>>> OK got it!Would build AARCH64 with GCC48/GCC49
.Please
> >>> >>> >>>> correct > >>> >>> >>>> me if > >>> >>> >>>> I > >>> >>> >>>> am wrong. > >>> >>> >>>> > >>> >>> >>>> Thanks. > >>> >>> >>>> On Tue, Feb 2, 2016 at 8:54 PM, Ard Biesheuvel > >>> >>> >>>> ard.biesheuvel@linaro.org wrote: > >>> >>> >>>>> > >>> >>> >>>>> On 2 February 2016 at 16:23, Ravikanth MVR > >>> >>> >>>>> ravikanth.mvr@broadcom.com > >>> >>> >>>>> wrote: > >>> >>> >>>>> > Ard, > >>> >>> >>>>> > > >>> >>> >>>>> > I have been using GCC5.0.0(Experimental version). > >>> >>> >>>>> > > >>> >>> >>>>> > gcc (Cavium Inc. Version 1.0 build 297) 5.0.0 > >>> >>> >>>>> > 20141220 > >>> >>> >>>>> > (experimental) > >>> >>> >>>>> > > >>> >>> >>>>> > I would try with GCC49/48 and let you know. > >>> >>> >>>>> > > >>> >>> >>>>> > >>> >>> >>>>> I don't mean the actual compiler, I mean the
toolchain
> >>> >>> >>>>> definition > >>> >>> >>>>> in > >>> >>> >>>>> EDK2. You are using ARMGCC or ARMLINUXGCC, neither
of
> >>> >>> >>>>> which > >>> >>> >>>>> are > >>> >>> >>>>> suitable for building AArch64. You should use GCC48
or
> >>> >>> >>>>> GCC49 > >>> >>> >>>>> instead > >>> >>> >>>>> > >>> >>> >>>>> -- > >>> >>> >>>>> Ard. > >>> >>> >>>>> > >>> >>> >>>>> > On Tue, Feb 2, 2016 at 4:40 PM, Ard Biesheuvel > >>> >>> >>>>> > ard.biesheuvel@linaro.org > >>> >>> >>>>> > wrote: > >>> >>> >>>>> >> > >>> >>> >>>>> >> It looks like you are using the wrong compiler.
You
> >>> >>> >>>>> >> should > >>> >>> >>>>> >> use > >>> >>> >>>>> >> GCC48 > >>> >>> >>>>> >> or GCC49 instead. > >>> >>> >>>>> >> > >>> >>> >>>>> >> > >>> >>> >>>>> >> On 2 February 2016 at 12:08, Ravikanth MVR > >>> >>> >>>>> >> ravikanth.mvr@broadcom.com > >>> >>> >>>>> >> wrote: > >>> >>> >>>>> >> > Thanks Ard!I followed the steps and I could
find
> >>> >>> >>>>> >> > out > >>> >>> >>>>> >> > that > >>> >>> >>>>> >> > NO > >>> >>> >>>>> >> > standard > >>> >>> >>>>> >> > library was included.Below is the list of > >>> >>> >>>>> >> > libraries > >>> >>> >>>>> >> > that > >>> >>> >>>>> >> > were > >>> >>> >>>>> >> > getting > >>> >>> >>>>> >> > included. > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> >
UefiApplicationEntryPoint.lib(ApplicationEntryPoint.obj)
> >>> >>> >>>>> >> > HelloWorld.lib(AutoGen.obj) > >>> >>> >>>>> >> > UefiDebugLibStdErr.lib(DebugLib.obj) > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> >
UefiBootServicesTableLib.lib(UefiBootServicesTableLib.obj)
> >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> >
UefiRuntimeServicesTableLib.lib(UefiRuntimeServicesTableLib.obj)
> >>> >>> >>>>> >> > UefiLib.lib(UefiLib.obj) > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> >> >
BaseDebugPrintErrorLevelLib.lib(BaseDebugPrintErrorLevelLib.obj)
> >>> >>> >>>>> >> > BasePrintLib.lib(PrintLib.obj) > >>> >>> >>>>> >> > BasePrintLib.lib(PrintLibInternal.obj) > >>> >>> >>>>> >> > BaseLib.lib(DivU64x32Remainder.obj) > >>> >>> >>>>> >> > BaseLib.lib(CpuDeadLoop.obj) > >>> >>> >>>>> >> > BaseLib.lib(String.obj) > >>> >>> >>>>> >> > BaseLib.lib(Unaligned.obj) > >>> >>> >>>>> >> > BaseLib.lib(Math64.obj) > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > I have included .map file as well with this
mail.
> >>> >>> >>>>> >> > > >>> >>> >>>>> >> > Thanks. > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > On Mon, Feb 1, 2016 at 1:24 PM, Ard Biesheuvel > >>> >>> >>>>> >> > ard.biesheuvel@linaro.org > >>> >>> >>>>> >> > wrote: > >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> On 1 February 2016 at 08:36, M.V.R. Ravikanth > >>> >>> >>>>> >> >> ravikanth.mvr@avagotech.com wrote: > >>> >>> >>>>> >> >> > Ard, > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > I understand that we have to implement > >>> >>> >>>>> >> >> > alternative > >>> >>> >>>>> >> >> > C++ > >>> >>> >>>>> >> >> > runtime > >>> >>> >>>>> >> >> > API > >>> >>> >>>>> >> >> > which > >>> >>> >>>>> >> >> > maps to new and delete in EDK2 > >>> >>> >>>>> >> >> > i.e.,AllocatePool > >>> >>> >>>>> >> >> > and > >>> >>> >>>>> >> >> > FreePool. > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > I did implement alternative new and delete > >>> >>> >>>>> >> >> > API's,which > >>> >>> >>>>> >> >> > uses > >>> >>> >>>>> >> >> > AllocatePool > >>> >>> >>>>> >> >> > and > >>> >>> >>>>> >> >> > FreePool,for OUR code and most of the > >>> >>> >>>>> >> >> > relocation > >>> >>> >>>>> >> >> > errors > >>> >>> >>>>> >> >> > had > >>> >>> >>>>> >> >> > gone.BUT > >>> >>> >>>>> >> >> > when > >>> >>> >>>>> >> >> > the CPP program(HelloWorld) under
compilation
> >>> >>> >>>>> >> >> > doesn't > >>> >>> >>>>> >> >> > even > >>> >>> >>>>> >> >> > call > >>> >>> >>>>> >> >> > the > >>> >>> >>>>> >> >> > C++ > >>> >>> >>>>> >> >> > runtime API's,why are we seeing these > >>> >>> >>>>> >> >> > errors?-This > >>> >>> >>>>> >> >> > is > >>> >>> >>>>> >> >> > what > >>> >>> >>>>> >> >> > I am > >>> >>> >>>>> >> >> > trying > >>> >>> >>>>> >> >> > to > >>> >>> >>>>> >> >> > understand. > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> If you add a -Map xxx.map option to the linker > >>> >>> >>>>> >> >> command, > >>> >>> >>>>> >> >> you > >>> >>> >>>>> >> >> will > >>> >>> >>>>> >> >> get a > >>> >>> >>>>> >> >> map file that tells you exactly which object
was
> >>> >>> >>>>> >> >> included > >>> >>> >>>>> >> >> in > >>> >>> >>>>> >> >> the > >>> >>> >>>>> >> >> link, > >>> >>> >>>>> >> >> and why (iow, which symbol dependency it > >>> >>> >>>>> >> >> satisfies) > >>> >>> >>>>> >> >> That > >>> >>> >>>>> >> >> way, > >>> >>> >>>>> >> >> you > >>> >>> >>>>> >> >> will > >>> >>> >>>>> >> >> be able to figure out which standard library
is
> >>> >>> >>>>> >> >> included, > >>> >>> >>>>> >> >> and > >>> >>> >>>>> >> >> for > >>> >>> >>>>> >> >> which reason. > >>> >>> >>>>> >> >> > >>> >>> >>>>> >> >> > Thanks. > >>> >>> >>>>> >> >> > ________________________________ > >>> >>> >>>>> >> >> > From: Ard Biesheuvel > >>> >>> >>>>> >> >> > Sent: 01-02-2016 12:31 > >>> >>> >>>>> >> >> > To: M.V.R. Ravikanth > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > Cc: Leif Lindholm; Daniel Samuelraj;
Jianning
> >>> >>> >>>>> >> >> > Wang; > >>> >>> >>>>> >> >> > Linaro > >>> >>> >>>>> >> >> > UEFI > >>> >>> >>>>> >> >> > Mailman > >>> >>> >>>>> >> >> > List; Sadananda Murthy; Unnikrishnan P S > >>> >>> >>>>> >> >> > Subject: Re: [Linaro-uefi] Compiling CPP
files
> >>> >>> >>>>> >> >> > ARM64 > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > On 1 February 2016 at 07:51, M.V.R.
Ravikanth
> >>> >>> >>>>> >> >> > ravikanth.mvr@avagotech.com wrote: > >>> >>> >>>>> >> >> >> Ard, > >>> >>> >>>>> >> >> >> I would try to explain here, > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> 1.Till now we have been compiling CPP > >>> >>> >>>>> >> >> >> programs > >>> >>> >>>>> >> >> >> in > >>> >>> >>>>> >> >> >> UDK > >>> >>> >>>>> >> >> >> with > >>> >>> >>>>> >> >> >> VS2005/VS2008 > >>> >>> >>>>> >> >> >> as > >>> >>> >>>>> >> >> >> toolchain and it worked well. > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> 2.Now,we have a requirement to support > >>> >>> >>>>> >> >> >> AARCH64 > >>> >>> >>>>> >> >> >> architecture > >>> >>> >>>>> >> >> >> with > >>> >>> >>>>> >> >> >> ARMGCC > >>> >>> >>>>> >> >> >> as > >>> >>> >>>>> >> >> >> the toolchain.But when we tried to compile > >>> >>> >>>>> >> >> >> our > >>> >>> >>>>> >> >> >> CPP > >>> >>> >>>>> >> >> >> code/Sample > >>> >>> >>>>> >> >> >> HelloWorld > >>> >>> >>>>> >> >> >> application(HelloWorld.c is renamed to > >>> >>> >>>>> >> >> >> HelloWorld.cpp) > >>> >>> >>>>> >> >> >> with > >>> >>> >>>>> >> >> >> ARMGCC > >>> >>> >>>>> >> >> >> as > >>> >>> >>>>> >> >> >> toolchain,we were seeing relocation errors > >>> >>> >>>>> >> >> >> such > >>> >>> >>>>> >> >> >> as > >>> >>> >>>>> >> >> >> 0x105. > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> 3.As advised by you,we tried compiling a > >>> >>> >>>>> >> >> >> sample > >>> >>> >>>>> >> >> >> HelloWorld > >>> >>> >>>>> >> >> >> CPP > >>> >>> >>>>> >> >> >> program > >>> >>> >>>>> >> >> >> under > >>> >>> >>>>> >> >> >> EDK2 and still we are seeing the same > >>> >>> >>>>> >> >> >> relocation > >>> >>> >>>>> >> >> >> errors. > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> Questions: > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> 1.If EDK2 doesn't support CPP code,what > >>> >>> >>>>> >> >> >> should > >>> >>> >>>>> >> >> >> we > >>> >>> >>>>> >> >> >> do > >>> >>> >>>>> >> >> >> to > >>> >>> >>>>> >> >> >> resolve the > >>> >>> >>>>> >> >> >> relocation errors we are observing? > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> Please correct me,if I have missed
something.
> >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > The relocation errors are a symptom of the > >>> >>> >>>>> >> >> > fact > >>> >>> >>>>> >> >> > that > >>> >>> >>>>> >> >> > you > >>> >>> >>>>> >> >> > are > >>> >>> >>>>> >> >> > trying > >>> >>> >>>>> >> >> > to > >>> >>> >>>>> >> >> > link the Linux specific C++ runtime into
your
> >>> >>> >>>>> >> >> > EDK2 > >>> >>> >>>>> >> >> > binary. > >>> >>> >>>>> >> >> > This > >>> >>> >>>>> >> >> > is a > >>> >>> >>>>> >> >> > pointless exercise, since the Linux C++ > >>> >>> >>>>> >> >> > runtime > >>> >>> >>>>> >> >> > is > >>> >>> >>>>> >> >> > fundamentally > >>> >>> >>>>> >> >> > incompatible with EDK2, So please, don't ask > >>> >>> >>>>> >> >> > any > >>> >>> >>>>> >> >> > more > >>> >>> >>>>> >> >> > questions > >>> >>> >>>>> >> >> > about > >>> >>> >>>>> >> >> > relocation errors, and focus on implementing > >>> >>> >>>>> >> >> > an > >>> >>> >>>>> >> >> > alternative > >>> >>> >>>>> >> >> > C++ > >>> >>> >>>>> >> >> > runtime that maps calls to new() and
delete()
> >>> >>> >>>>> >> >> > onto > >>> >>> >>>>> >> >> > EDK2 > >>> >>> >>>>> >> >> > APIs, > >>> >>> >>>>> >> >> > i.e., > >>> >>> >>>>> >> >> > AllocatePool and FreePool. Note that you
will
> >>> >>> >>>>> >> >> > still > >>> >>> >>>>> >> >> > have > >>> >>> >>>>> >> >> > problems > >>> >>> >>>>> >> >> > with > >>> >>> >>>>> >> >> > symbol decoration, since EDK2 header file > >>> >>> >>>>> >> >> > don't > >>> >>> >>>>> >> >> > have > >>> >>> >>>>> >> >> > 'extern > >>> >>> >>>>> >> >> > "C"' > >>> >>> >>>>> >> >> > qualifiers around C declarations. > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> > > >>> >>> >>>>> >> >> >> ________________________________ > >>> >>> >>>>> >> >> >> From: Ard Biesheuvel > >>> >>> >>>>> >> >> >> Sent: 01-02-2016 11:59 > >>> >>> >>>>> >> >> >> To: Ravikanth MVR > >>> >>> >>>>> >> >> >> Cc: Leif Lindholm; Daniel Samuelraj;
Jianning
> >>> >>> >>>>> >> >> >> Wang; > >>> >>> >>>>> >> >> >> Linaro > >>> >>> >>>>> >> >> >> UEFI > >>> >>> >>>>> >> >> >> Mailman > >>> >>> >>>>> >> >> >> List; Sadananda Murthy; Unnikrishnan P S > >>> >>> >>>>> >> >> >> Subject: Re: [Linaro-uefi] Compiling CPP > >>> >>> >>>>> >> >> >> files > >>> >>> >>>>> >> >> >> ARM64 > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> On 31 January 2016 at 20:16, Ravikanth MVR > >>> >>> >>>>> >> >> >> ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >> wrote: > >>> >>> >>>>> >> >> >>> +Unni. > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> Ard, > >>> >>> >>>>> >> >> >>> I have done a native compilation with EDK2 > >>> >>> >>>>> >> >> >>> and > >>> >>> >>>>> >> >> >>> I > >>> >>> >>>>> >> >> >>> am > >>> >>> >>>>> >> >> >>> facing > >>> >>> >>>>> >> >> >>> same > >>> >>> >>>>> >> >> >>> issues > >>> >>> >>>>> >> >> >>> as > >>> >>> >>>>> >> >> >>> I > >>> >>> >>>>> >> >> >>> did before.Below is the snapshot of the > >>> >>> >>>>> >> >> >>> errors > >>> >>> >>>>> >> >> >>> I > >>> >>> >>>>> >> >> >>> received. > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> I have explained twice already why C++
under
> >>> >>> >>>>> >> >> >> EDK2 > >>> >>> >>>>> >> >> >> is > >>> >>> >>>>> >> >> >> not > >>> >>> >>>>> >> >> >> going > >>> >>> >>>>> >> >> >> to > >>> >>> >>>>> >> >> >> work. What exactly were you expecting? > >>> >>> >>>>> >> >> >> -- > >>> >>> >>>>> >> >> >> Ard. > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >> > >>> >>> >>>>> >> >> >>> "GenFw" -e UEFI_APPLICATION -o > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi
> >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>> >>> >>>>> >> >> >>> WriteSections64(): > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation
0x105.
> >>> >>> >>>>> >> >> >>> GenFw: ERROR 3000: Invalid > >>> >>> >>>>> >> >> >>> make: *** > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi]
> >>> >>> >>>>> >> >> >>> Error 2 > >>> >>> >>>>> >> >> >>> WriteRelocations64(): > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.dll
> >>> >>> >>>>> >> >> >>> unsupported ELF EM_AARCH64 relocation
0x105.
> >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> build.py... > >>> >>> >>>>> >> >> >>> : error 7000: Failed to execute command > >>> >>> >>>>> >> >> >>> make --no-print-directory all > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>>
[/home/edk2/MyWorkSpace/Build/MdeModule/RELEASE_ARMGCC/AARCH64/MdeModulePkg/Application/HelloWorld/HelloWorld]
> >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> - Failed - > >>> >>> >>>>> >> >> >>> Build end time: 19:12:41, Jan.31 2016 > >>> >>> >>>>> >> >> >>> Build total time: 00:00:15 > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> Thanks > >>> >>> >>>>> >> >> >>> Ravi > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> On Wed, Jan 27, 2016 at 2:31 PM, Ard > >>> >>> >>>>> >> >> >>> Biesheuvel > >>> >>> >>>>> >> >> >>> ard.biesheuvel@linaro.org > >>> >>> >>>>> >> >> >>> wrote: > >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> On 27 January 2016 at 09:51, Ravikanth
MVR
> >>> >>> >>>>> >> >> >>>> ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >>>> wrote: > >>> >>> >>>>> >> >> >>>> > Ard, > >>> >>> >>>>> >> >> >>>> > I was trying to compile and generate > >>> >>> >>>>> >> >> >>>> > helloworld > >>> >>> >>>>> >> >> >>>> > application via > >>> >>> >>>>> >> >> >>>> > EDK2.Under > >>> >>> >>>>> >> >> >>>> > the "MyWorkSpace\BaseTools\Bin"
directory
> >>> >>> >>>>> >> >> >>>> > I > >>> >>> >>>>> >> >> >>>> > did > >>> >>> >>>>> >> >> >>>> > not > >>> >>> >>>>> >> >> >>>> > find > >>> >>> >>>>> >> >> >>>> > "Win32" > >>> >>> >>>>> >> >> >>>> > directory > >>> >>> >>>>> >> >> >>>> > which has GenFw utility.But the UDK > >>> >>> >>>>> >> >> >>>> > package > >>> >>> >>>>> >> >> >>>> > has > >>> >>> >>>>> >> >> >>>> > Win32 > >>> >>> >>>>> >> >> >>>> > directory. > >>> >>> >>>>> >> >> >>>> > > >>> >>> >>>>> >> >> >>>> > Could you let me know on how to build
and
> >>> >>> >>>>> >> >> >>>> > EDK2 > >>> >>> >>>>> >> >> >>>> > package > >>> >>> >>>>> >> >> >>>> > in > >>> >>> >>>>> >> >> >>>> > Windows > >>> >>> >>>>> >> >> >>>> > or > >>> >>> >>>>> >> >> >>>> > else Am > >>> >>> >>>>> >> >> >>>> > I missing something here? > >>> >>> >>>>> >> >> >>>> > > >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> I haven't used Windows for software > >>> >>> >>>>> >> >> >>>> development > >>> >>> >>>>> >> >> >>>> work > >>> >>> >>>>> >> >> >>>> in > >>> >>> >>>>> >> >> >>>> 15 > >>> >>> >>>>> >> >> >>>> years, > >>> >>> >>>>> >> >> >>>> so > >>> >>> >>>>> >> >> >>>> I > >>> >>> >>>>> >> >> >>>> am really not the person you should be > >>> >>> >>>>> >> >> >>>> asking > >>> >>> >>>>> >> >> >>>> this. > >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> -- > >>> >>> >>>>> >> >> >>>> Ard. > >>> >>> >>>>> >> >> >>>> > >>> >>> >>>>> >> >> >>>> > On Thu, Jan 14, 2016 at 3:03 PM, > >>> >>> >>>>> >> >> >>>> > Ravikanth > >>> >>> >>>>> >> >> >>>> > MVR > >>> >>> >>>>> >> >> >>>> > ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >>>> > wrote: > >>> >>> >>>>> >> >> >>>> >> > >>> >>> >>>>> >> >> >>>> >> In UDK.I will try out on EDK2 and let > >>> >>> >>>>> >> >> >>>> >> you > >>> >>> >>>>> >> >> >>>> >> know > >>> >>> >>>>> >> >> >>>> >> the > >>> >>> >>>>> >> >> >>>> >> results. > >>> >>> >>>>> >> >> >>>> >> > >>> >>> >>>>> >> >> >>>> >> Thanks. > >>> >>> >>>>> >> >> >>>> >> > >>> >>> >>>>> >> >> >>>> >> On Thu, Jan 14, 2016 at 3:02 PM, Ard > >>> >>> >>>>> >> >> >>>> >> Biesheuvel > >>> >>> >>>>> >> >> >>>> >> ard.biesheuvel@linaro.org wrote: > >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> On 14 January 2016 at 10:28,
Ravikanth
> >>> >>> >>>>> >> >> >>>> >>> MVR > >>> >>> >>>>> >> >> >>>> >>> ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >>>> >>> wrote: > >>> >>> >>>>> >> >> >>>> >>> > Ard, > >>> >>> >>>>> >> >> >>>> >>> > > >>> >>> >>>>> >> >> >>>> >>> > OK.But when a simple HelloWorld > >>> >>> >>>>> >> >> >>>> >>> > program,which > >>> >>> >>>>> >> >> >>>> >>> > is > >>> >>> >>>>> >> >> >>>> >>> > part > >>> >>> >>>>> >> >> >>>> >>> > of > >>> >>> >>>>> >> >> >>>> >>> > EDK2 > >>> >>> >>>>> >> >> >>>> >>> > sample > >>> >>> >>>>> >> >> >>>> >>> > programs and which is written in
c,is
> >>> >>> >>>>> >> >> >>>> >>> > renamed > >>> >>> >>>>> >> >> >>>> >>> > to > >>> >>> >>>>> >> >> >>>> >>> > .CPP,we get > >>> >>> >>>>> >> >> >>>> >>> > these > >>> >>> >>>>> >> >> >>>> >>> > relocation issues in-spite of not > >>> >>> >>>>> >> >> >>>> >>> > using > >>> >>> >>>>> >> >> >>>> >>> > any > >>> >>> >>>>> >> >> >>>> >>> > C++ > >>> >>> >>>>> >> >> >>>> >>> > runtime > >>> >>> >>>>> >> >> >>>> >>> > API's. > >>> >>> >>>>> >> >> >>>> >>> > > >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> In UDK or EDK2? > >>> >>> >>>>> >> >> >>>> >>> > >>> >>> >>>>> >> >> >>>> >>> > On Thu, Jan 14, 2016 at 2:39 PM,
Ard
> >>> >>> >>>>> >> >> >>>> >>> > Biesheuvel > >>> >>> >>>>> >> >> >>>> >>> > ard.biesheuvel@linaro.org > >>> >>> >>>>> >> >> >>>> >>> > wrote: > >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> On 14 January 2016 at 10:06, > >>> >>> >>>>> >> >> >>>> >>> >> Ravikanth > >>> >>> >>>>> >> >> >>>> >>> >> MVR > >>> >>> >>>>> >> >> >>>> >>> >> ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >>>> >>> >> wrote: > >>> >>> >>>>> >> >> >>>> >>> >> > Hi Ard, > >>> >>> >>>>> >> >> >>>> >>> >> > > >>> >>> >>>>> >> >> >>>> >>> >> > Hope you remember we speaking > >>> >>> >>>>> >> >> >>>> >>> >> > about > >>> >>> >>>>> >> >> >>>> >>> >> > the > >>> >>> >>>>> >> >> >>>> >>> >> > 0x105 > >>> >>> >>>>> >> >> >>>> >>> >> > and > >>> >>> >>>>> >> >> >>>> >>> >> > 0x0 > >>> >>> >>>>> >> >> >>>> >>> >> > relocation > >>> >>> >>>>> >> >> >>>> >>> >> > issues > >>> >>> >>>>> >> >> >>>> >>> >> > which we came across while > >>> >>> >>>>> >> >> >>>> >>> >> > compiling > >>> >>> >>>>> >> >> >>>> >>> >> > a > >>> >>> >>>>> >> >> >>>> >>> >> > simple > >>> >>> >>>>> >> >> >>>> >>> >> > HelloWorld > >>> >>> >>>>> >> >> >>>> >>> >> > program > >>> >>> >>>>> >> >> >>>> >>> >> > in > >>> >>> >>>>> >> >> >>>> >>> >> > CPP.As > >>> >>> >>>>> >> >> >>>> >>> >> > you said on the other
thread(EDK2
> >>> >>> >>>>> >> >> >>>> >>> >> > mailing > >>> >>> >>>>> >> >> >>>> >>> >> > list)we > >>> >>> >>>>> >> >> >>>> >>> >> > need > >>> >>> >>>>> >> >> >>>> >>> >> > some > >>> >>> >>>>> >> >> >>>> >>> >> > changes > >>> >>> >>>>> >> >> >>>> >>> >> > to > >>> >>> >>>>> >> >> >>>> >>> >> > compiler and GenFw utility of > >>> >>> >>>>> >> >> >>>> >>> >> > UDK,can > >>> >>> >>>>> >> >> >>>> >>> >> > we > >>> >>> >>>>> >> >> >>>> >>> >> > take > >>> >>> >>>>> >> >> >>>> >>> >> > the > >>> >>> >>>>> >> >> >>>> >>> >> > required > >>> >>> >>>>> >> >> >>>> >>> >> > changes > >>> >>> >>>>> >> >> >>>> >>> >> > forward > >>> >>> >>>>> >> >> >>>> >>> >> > and come up with a UDK with this > >>> >>> >>>>> >> >> >>>> >>> >> > support? > >>> >>> >>>>> >> >> >>>> >>> >> > > >>> >>> >>>>> >> >> >>>> >>> >> > We are stuck at this juncture
with
> >>> >>> >>>>> >> >> >>>> >>> >> > this > >>> >>> >>>>> >> >> >>>> >>> >> > activity > >>> >>> >>>>> >> >> >>>> >>> >> > and > >>> >>> >>>>> >> >> >>>> >>> >> > would > >>> >>> >>>>> >> >> >>>> >>> >> > need > >>> >>> >>>>> >> >> >>>> >>> >> > your > >>> >>> >>>>> >> >> >>>> >>> >> > help > >>> >>> >>>>> >> >> >>>> >>> >> > badly. > >>> >>> >>>>> >> >> >>>> >>> >> > > >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> Please forget about UDK, and
rebase
> >>> >>> >>>>> >> >> >>>> >>> >> your > >>> >>> >>>>> >> >> >>>> >>> >> work > >>> >>> >>>>> >> >> >>>> >>> >> onto > >>> >>> >>>>> >> >> >>>> >>> >> the > >>> >>> >>>>> >> >> >>>> >>> >> latest > >>> >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>> >>>>> >> >> >>>> >>> >> master branch. There have been
many
> >>> >>> >>>>> >> >> >>>> >>> >> changes > >>> >>> >>>>> >> >> >>>> >>> >> to > >>> >>> >>>>> >> >> >>>> >>> >> the > >>> >>> >>>>> >> >> >>>> >>> >> way > >>> >>> >>>>> >> >> >>>> >>> >> relocations > >>> >>> >>>>> >> >> >>>> >>> >> are > >>> >>> >>>>> >> >> >>>> >>> >> handled, which also impose > >>> >>> >>>>> >> >> >>>> >>> >> requirements > >>> >>> >>>>> >> >> >>>> >>> >> at > >>> >>> >>>>> >> >> >>>> >>> >> link > >>> >>> >>>>> >> >> >>>> >>> >> time > >>> >>> >>>>> >> >> >>>> >>> >> (i.e., > >>> >>> >>>>> >> >> >>>> >>> >> in > >>> >>> >>>>> >> >> >>>> >>> >> terms > >>> >>> >>>>> >> >> >>>> >>> >> of section alignment, and relative > >>> >>> >>>>> >> >> >>>> >>> >> offset > >>> >>> >>>>> >> >> >>>> >>> >> between > >>> >>> >>>>> >> >> >>>> >>> >> sections > >>> >>> >>>>> >> >> >>>> >>> >> both > >>> >>> >>>>> >> >> >>>> >>> >> in > >>> >>> >>>>> >> >> >>>> >>> >> the > >>> >>> >>>>> >> >> >>>> >>> >> ELF and the PE/COFF versions of
the
> >>> >>> >>>>> >> >> >>>> >>> >> image) > >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> However, the relocation issue was > >>> >>> >>>>> >> >> >>>> >>> >> due > >>> >>> >>>>> >> >> >>>> >>> >> to > >>> >>> >>>>> >> >> >>>> >>> >> the > >>> >>> >>>>> >> >> >>>> >>> >> fact > >>> >>> >>>>> >> >> >>>> >>> >> that you > >>> >>> >>>>> >> >> >>>> >>> >> were > >>> >>> >>>>> >> >> >>>> >>> >> using > >>> >>> >>>>> >> >> >>>> >>> >> the Linux version of the C++ > >>> >>> >>>>> >> >> >>>> >>> >> runtime, > >>> >>> >>>>> >> >> >>>> >>> >> which > >>> >>> >>>>> >> >> >>>> >>> >> you > >>> >>> >>>>> >> >> >>>> >>> >> cannot use > >>> >>> >>>>> >> >> >>>> >>> >> under > >>> >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>> >>>>> >> >> >>>> >>> >> even if we do support those > >>> >>> >>>>> >> >> >>>> >>> >> relocation > >>> >>> >>>>> >> >> >>>> >>> >> types > >>> >>> >>>>> >> >> >>>> >>> >> with > >>> >>> >>>>> >> >> >>>> >>> >> the > >>> >>> >>>>> >> >> >>>> >>> >> newer > >>> >>> >>>>> >> >> >>>> >>> >> tools. > >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> Bottom line is that you need to > >>> >>> >>>>> >> >> >>>> >>> >> develop > >>> >>> >>>>> >> >> >>>> >>> >> your > >>> >>> >>>>> >> >> >>>> >>> >> own > >>> >>> >>>>> >> >> >>>> >>> >> C++ > >>> >>> >>>>> >> >> >>>> >>> >> minimal > >>> >>> >>>>> >> >> >>>> >>> >> runtime > >>> >>> >>>>> >> >> >>>> >>> >> if you want to run C++ programs > >>> >>> >>>>> >> >> >>>> >>> >> under > >>> >>> >>>>> >> >> >>>> >>> >> EDK2 > >>> >>> >>>>> >> >> >>>> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> > On Tue, Jan 5, 2016 at 4:29 PM, > >>> >>> >>>>> >> >> >>>> >>> >> > Ravikanth > >>> >>> >>>>> >> >> >>>> >>> >> > MVR > >>> >>> >>>>> >> >> >>>> >>> >> > ravikanth.mvr@avagotech.com > >>> >>> >>>>> >> >> >>>> >>> >> > wrote: > >>> >>> >>>>> >> >> >>>> >>> >> >> > >>> >>> >>>>> >> >> >>>> >>> >> >> +Sada. > >>> >>> >>>>> >> >> >>>> >>> >> >> > >>> >>> >>>>> >> >> >>>> >>> >> >> Thanks. > >>> >>> >>>>> >> >> >>>> >>> >> >> > >>> >>> >>>>> >> >> >>>> >>> >> >> On Wed, Dec 30, 2015 at 8:38
PM,
> >>> >>> >>>>> >> >> >>>> >>> >> >> Ard > >>> >>> >>>>> >> >> >>>> >>> >> >> Biesheuvel > >>> >>> >>>>> >> >> >>>> >>> >> >> ard.biesheuvel@linaro.org > >>> >>> >>>>> >> >> >>>> >>> >> >> wrote: > >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> On 30 December 2015 at 16:02, > >>> >>> >>>>> >> >> >>>> >>> >> >>> Leif > >>> >>> >>>>> >> >> >>>> >>> >> >>> Lindholm > >>> >>> >>>>> >> >> >>>> >>> >> >>> leif.lindholm@linaro.org > >>> >>> >>>>> >> >> >>>> >>> >> >>> wrote: > >>> >>> >>>>> >> >> >>>> >>> >> >>> > Hi Daniel, > >>> >>> >>>>> >> >> >>>> >>> >> >>> > > >>> >>> >>>>> >> >> >>>> >>> >> >>> > Sorry, your email got stuck
in
> >>> >>> >>>>> >> >> >>>> >>> >> >>> > my > >>> >>> >>>>> >> >> >>>> >>> >> >>> > SPAM > >>> >>> >>>>> >> >> >>>> >>> >> >>> > folder > >>> >>> >>>>> >> >> >>>> >>> >> >>> > for > >>> >>> >>>>> >> >> >>>> >>> >> >>> > some > >>> >>> >>>>> >> >> >>>> >>> >> >>> > reason. > >>> >>> >>>>> >> >> >>>> >>> >> >>> > > >>> >>> >>>>> >> >> >>>> >>> >> >>> > On Wed, Dec 23, 2015 at > >>> >>> >>>>> >> >> >>>> >>> >> >>> > 05:25:21PM > >>> >>> >>>>> >> >> >>>> >>> >> >>> > -0500, > >>> >>> >>>>> >> >> >>>> >>> >> >>> > Daniel > >>> >>> >>>>> >> >> >>>> >>> >> >>> > Samuelraj > >>> >>> >>>>> >> >> >>>> >>> >> >>> > wrote: > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> We are able to compile CPP > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> files > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> for > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> X64 > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> using > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> UDK2014 > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> by > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> using > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> Visual > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> Studio. > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> How do we compile the same > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> source > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> for > >>> >>> >>>>> >> >> >>>> >>> >> >>> >> AARCH64? > >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> Do you mean C++? That is > >>> >>> >>>>> >> >> >>>> >>> >> >>> completely > >>> >>> >>>>> >> >> >>>> >>> >> >>> unsupported, > >>> >>> >>>>> >> >> >>>> >>> >> >>> and is > >>> >>> >>>>> >> >> >>>> >>> >> >>> going > >>> >>> >>>>> >> >> >>>> >>> >> >>> to > >>> >>> >>>>> >> >> >>>> >>> >> >>> be > >>> >>> >>>>> >> >> >>>> >>> >> >>> quite a challenge to
implement.
> >>> >>> >>>>> >> >> >>>> >>> >> >>> Note > >>> >>> >>>>> >> >> >>>> >>> >> >>> that > >>> >>> >>>>> >> >> >>>> >>> >> >>> you > >>> >>> >>>>> >> >> >>>> >>> >> >>> cannot > >>> >>> >>>>> >> >> >>>> >>> >> >>> rely > >>> >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>> >>>>> >> >> >>>> >>> >> >>> C++ > >>> >>> >>>>> >> >> >>>> >>> >> >>> runtime for various reasons > >>> >>> >>>>> >> >> >>>> >>> >> >>> (including, > >>> >>> >>>>> >> >> >>>> >>> >> >>> but > >>> >>> >>>>> >> >> >>>> >>> >> >>> not > >>> >>> >>>>> >> >> >>>> >>> >> >>> limited > >>> >>> >>>>> >> >> >>>> >>> >> >>> to, > >>> >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>> >>>>> >> >> >>>> >>> >> >>> fact > >>> >>> >>>>> >> >> >>>> >>> >> >>> that it uses small model > >>> >>> >>>>> >> >> >>>> >>> >> >>> relocations, > >>> >>> >>>>> >> >> >>>> >>> >> >>> and > >>> >>> >>>>> >> >> >>>> >>> >> >>> is > >>> >>> >>>>> >> >> >>>> >>> >> >>> built > >>> >>> >>>>> >> >> >>>> >>> >> >>> against > >>> >>> >>>>> >> >> >>>> >>> >> >>> libc > >>> >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>> >>>>> >> >> >>>> >>> >> >>> Linux) I wonder how that even > >>> >>> >>>>> >> >> >>>> >>> >> >>> works > >>> >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>> >>>>> >> >> >>>> >>> >> >>> Visual > >>> >>> >>>>> >> >> >>>> >>> >> >>> Studio > >>> >>> >>>>> >> >> >>>> >>> >> >>> for > >>> >>> >>>>> >> >> >>>> >>> >> >>> X64, > >>> >>> >>>>> >> >> >>>> >>> >> >>> since > >>> >>> >>>>> >> >> >>>> >>> >> >>> the code you build will try to > >>> >>> >>>>> >> >> >>>> >>> >> >>> call > >>> >>> >>>>> >> >> >>>> >>> >> >>> libc > >>> >>> >>>>> >> >> >>>> >>> >> >>> functions from > >>> >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>> >>>>> >> >> >>>> >>> >> >>> VC > >>> >>> >>>>> >> >> >>>> >>> >> >>> runtime > >>> >>> >>>>> >> >> >>>> >>> >> >>> library. > >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> There has been some discussion > >>> >>> >>>>> >> >> >>>> >>> >> >>> about > >>> >>> >>>>> >> >> >>>> >>> >> >>> this > >>> >>> >>>>> >> >> >>>> >>> >> >>> recently on > >>> >>> >>>>> >> >> >>>> >>> >> >>> the > >>> >>> >>>>> >> >> >>>> >>> >> >>> list. > >>> >>> >>>>> >> >> >>>> >>> >> >>> If > >>> >>> >>>>> >> >> >>>> >>> >> >>> you > >>> >>> >>>>> >> >> >>>> >>> >> >>> disable exceptions and RTTI,
and
> >>> >>> >>>>> >> >> >>>> >>> >> >>> reimplement > >>> >>> >>>>> >> >> >>>> >>> >> >>> your > >>> >>> >>>>> >> >> >>>> >>> >> >>> new > >>> >>> >>>>> >> >> >>>> >>> >> >>> and > >>> >>> >>>>> >> >> >>>> >>> >> >>> delete > >>> >>> >>>>> >> >> >>>> >>> >> >>> operators, you may be able to > >>> >>> >>>>> >> >> >>>> >>> >> >>> build > >>> >>> >>>>> >> >> >>>> >>> >> >>> code > >>> >>> >>>>> >> >> >>>> >>> >> >>> that > >>> >>> >>>>> >> >> >>>> >>> >> >>> does not > >>> >>> >>>>> >> >> >>>> >>> >> >>> rely > >>> >>> >>>>> >> >> >>>> >>> >> >>> on > >>> >>> >>>>> >> >> >>>> >>> >> >>> advanced C++ runtime features. > >>> >>> >>>>> >> >> >>>> >>> >> >>> > >>> >>> >>>>> >> >> >>>> >>> >> >>> -- > >>> >>> >>>>> >> >> >>>> >>> >> >>> Ard. > >>> >>> >>>>> >> >> >>>> >>> >> >> > >>> >>> >>>>> >> >> >>>> >>> >> >> > >>> >>> >>>>> >> >> >>>> >>> >> > > >>> >>> >>>>> >> >> >>>> >>> > > >>> >>> >>>>> >> >> >>>> >>> > > >>> >>> >>>>> >> >> >>>> >> > >>> >>> >>>>> >> >> >>>> >> > >>> >>> >>>>> >> >> >>>> > > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> >> >>> > >>> >>> >>>>> >> > > >>> >>> >>>>> >> > > >>> >>> >>>>> > > >>> >>> >>>>> > > >>> >>> >>>> > >>> >>> >>>> > >>> >>> >>> > >>> >>> >> > >>> >>> > > >>> >> > >>> >> > >>> > > >> > >> > >
On 10 February 2016 at 08:42, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we end up with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819): !EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)
Could you provide us a example of this case?We compiled the same code in Visual studio compiler and we did not face any issues.
Thanks.
On Wed, Feb 10, 2016 at 1:15 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 08:42, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and
our
binary also has been built successfully.
But when we executed our binary,we ended up with below
crash/error.Basically
our application is command based and whatever command we execute we end
up
with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819):
!EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)
On 10 February 2016 at 09:43, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Could you provide us a example of this case?We compiled the same code in Visual studio compiler and we did not face any issues.
I am sorry, but this looks to me like a case you should be able to debug by yourself.
Thanks, Ard.
On Wed, Feb 10, 2016 at 1:15 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 08:42, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we end up with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819): !EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)
Ard,
We tested our binary and everything went well.Could you let us know when the patch,provided by you for GenFw,would be ported to EDK2 master?
Thanks Ravi
On Wed, Feb 10, 2016 at 3:56 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 09:43, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Could you provide us a example of this case?We compiled the same code in Visual studio compiler and we did not face any issues.
I am sorry, but this looks to me like a case you should be able to debug by yourself.
Thanks, Ard.
On Wed, Feb 10, 2016 at 1:15 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 10 February 2016 at 08:42, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has
been
build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit
and
our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we
end
up with the following crash/print.
ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167):
((UINTN) String & 0x00000001) == 0 ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167):
((UINTN) String & 0x00000001) == 0 ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167):
((UINTN) String & 0x00000001) == 0 ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167):
((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819):
!EFI_ERROR (Status) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167):
((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)
On 11 February 2016 at 12:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We tested our binary and everything went well.Could you let us know when the patch,provided by you for GenFw,would be ported to EDK2 master?
Are you sure you still need it when you use -fno-exceptions?
On Wed, Feb 10, 2016 at 3:56 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 09:43, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Could you provide us a example of this case?We compiled the same code in Visual studio compiler and we did not face any issues.
I am sorry, but this looks to me like a case you should be able to debug by yourself.
Thanks, Ard.
On Wed, Feb 10, 2016 at 1:15 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 08:42, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding following compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we end up with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819): !EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)
Yes Ard.
On Thu, Feb 11, 2016 at 5:51 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 11 February 2016 at 12:49, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We tested our binary and everything went well.Could you let us know when
the
patch,provided by you for GenFw,would be ported to EDK2 master?
Are you sure you still need it when you use -fno-exceptions?
On Wed, Feb 10, 2016 at 3:56 PM, Ard Biesheuvel <
ard.biesheuvel@linaro.org>
wrote:
On 10 February 2016 at 09:43, Ravikanth MVR <ravikanth.mvr@broadcom.com
wrote:
Could you provide us a example of this case?We compiled the same code
in
Visual studio compiler and we did not face any issues.
I am sorry, but this looks to me like a case you should be able to debug by yourself.
Thanks, Ard.
On Wed, Feb 10, 2016 at 1:15 PM, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
On 10 February 2016 at 08:42, Ravikanth MVR ravikanth.mvr@broadcom.com wrote:
Ard,
We built the binary after adding -fno-exceptions and the binary has been build successfully.We are using GCC4.9 compiler and toolchain.
We then built our application with your patch and by adding
following
compiler flags: -fno-rtti,-fno-threadsafe-statics -fuse-cxa-atexit and our binary also has been built successfully.
But when we executed our binary,we ended up with below crash/error.Basically our application is command based and whatever command we execute we end up with the following crash/print.
ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0 ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
ASSERT_EFI_ERROR (Status = Invalid Parameter) ASSERT
/home/edk2_new1/MyWorkSpace/MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c(819):
!EFI_ERROR (Status) ASSERT /home/edk2_new1/MyWorkSpace/MdePkg/Library/BaseLib/String.c(167): ((UINTN) String & 0x00000001) == 0
May I know why we are seeing the above errors?
My guess would be that you are using an odd memory address for a Unicode string (which consist of 16-bit quantities)