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. >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> >> >>>>> >> >> >>>> >>> >> > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >>> > >>>>> >> >> >>>> >> >>>>> >> >> >>>> >> >>>>> >> >> >>>> > >>>>> >> >> >>> >>>>> >> >> >>> >>>>> >> > >>>>> >> > >>>>> > >>>>> > >>>> >>>> >>> >> >