On Sep 9, 2014, at 1:44 PM, Laszlo Ersek <[email protected]> wrote: > On 09/09/14 21:52, [email protected] wrote: >> *Dell - Internal Use - Confidential * > > (not very confidential…)
But some lawyer is happy. > >> I would like to know if there is a way from the EFI shell to determine >> if this is a 32-bit or 64-bit environment. >> >> For the most part, I am using BOOTX64.efi. >> >> However, it would be nice to be able to gracefully handle the situation >> where BOOTIA32.efi was used. >> >> For example, let’s say I have a home grown utility that has a 32-bit and >> a 64-bit efi file. How do I determine which one to use from an nsh script? > > When in doubt, use brute force, I guess. Start the 64-bit variant, and > if it fails, start the 32-bit one. LoadImage() won't let you load a > binary with incorrect bitness (or another architecture mismatch). IIRC > the return value in this case is EFI_UNSUPPORTED. > >From C code, you can use #ifdef to figure out your image type. #ifdef MDE_CPU_X64 #ifdef MDE_CPU_IA32 The DXE Core uses the EFI_IMAGE_MACHINE_TYPE_SUPPORTED() macro. It tells you if the PE/COFF image type is supported. The image types from the PE/COFF header are: /// /// PE32+ Machine type for IA32 UEFI images. /// #define EFI_IMAGE_MACHINE_IA32 0x014C /// /// PE32+ Machine type for IA64 UEFI images. /// #define EFI_IMAGE_MACHINE_IA64 0x0200 /// /// PE32+ Machine type for EBC UEFI images. /// #define EFI_IMAGE_MACHINE_EBC 0x0EBC /// /// PE32+ Machine type for X64 UEFI images. /// #define EFI_IMAGE_MACHINE_X64 0x8664 /// /// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images. /// #define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2 /// /// PE32+ Machine type for AARCH64 A64 images. /// #define EFI_IMAGE_MACHINE_AARCH64 0xAA64 Thanks, Andrew Fish > Granted, this might not allow you to tell apart genuine error exits of > the application from "failed to load due to wrong bitness". For that > case, write an empty application (one that returns with success from > main() immediately), and use the brute force approach on those -- they > can't really fail due to any other reason than wrong bitness. Then key > off the real application's selection from this result. > > Just my 2 cents. > > Laszlo > > > ------------------------------------------------------------------------------ > Want excitement? > Manually upgrade your production database. > When you want reliability, choose Perforce. > Perforce version control. Predictably reliable. > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce. Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
