audk/EmulatorPkg
Ray Ni 4e17aba4b5 EmulatorPkg/Win: Unload DLLs before reset
EmulatorPkg/Win calls LoadLibraryEx() when the corresponding DLL file
is found for each PEIM or DXE driver. The module entry point is
changed to point to the entry point from the DLL. This helps to
notify Visual Studio that a new windows module is loaded and
corresponding symbol parsing is performed for source level debugging.

But entry point from the DLL is only executed when the module is not
loaded by AddModHandle().
When reset happens, we need to clear the DLL loading so that in next
boot the module can be loaded again by AddModHandle().

Without this patch, source level debugging doesn't work after reset.

Signed-off-by: Ray Ni <ray.ni@intel.com>
Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Andrew Fish <afish@apple.com>
2022-12-08 10:04:24 +00:00
..
Application/RedfishPlatformConfig EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AutoScanPei EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
BootModePei EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
CpuRuntimeDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuBlockIoDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuBusDriverDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuGopDxe EmulatorPkg/EmuGopDxe: Set ModeInfo after Open successfully 2022-03-03 05:17:46 +00:00
EmuSimpleFileSystemDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuSnpDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
EmuThunkDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
FirmwareVolumePei EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
FlashMapPei EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
FvbServicesRuntimeDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Include EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Library EmulatorPkg/RedfishPlatformCredentialLib: Don't stop Redfish service 2022-03-16 13:02:28 +00:00
PlatformCI EmulatorPkg: Use windows-2019 VM image 2022-04-02 02:56:48 +00:00
PlatformSmbiosDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
RealTimeClockRuntimeDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
ResetRuntimeDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Sec EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
ThunkPpiToProtocolPei EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
TimerDxe EmulatorPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Unix EmulatorPkg/PosixFileSystem: Add NULL check on memory allocation 2022-07-21 06:18:23 +00:00
Win EmulatorPkg/Win: Unload DLLs before reset 2022-12-08 10:04:24 +00:00
EmulatorPkg.ci.yaml EmulatorPkg: Update YAML to ignore specific ECC files/errors 2021-11-30 14:19:07 +00:00
EmulatorPkg.dec EmulatorPkg/library: RedfishPlatformCredentialLib 2021-01-16 03:35:31 +00:00
EmulatorPkg.dsc EmulatorPkg: Pipeline: Resolve SecureBootVariableLib dependency 2022-07-07 01:07:00 +00:00
EmulatorPkg.fdf EmulatorPkg: Redfish related changes on EmulatorPkg 2020-12-03 07:54:44 +00:00
Readme.md EmulatorPkg: strip trailing whitespace 2019-10-04 11:18:32 +01:00
build.sh EmulatorPkg: Fix XCODE5 lldb issues 2019-08-19 09:57:25 -07:00

Readme.md

Overview

EmulatorPkg provides an environment where a UEFI environment can be emulated under an environment where a full UEFI compatible environment is not possible. (For example, running under an OS where an OS process hosts the UEFI emulation environment.)

https://github.com/tianocore/tianocore.github.io/wiki/EmulatorPkg

Status

  • Builds and runs under
    • a posix-like environment with X windows
      • Linux
      • OS X
    • Windows environment
      • Win10 (verified)
      • Win8 (not verified)

How to Build & Run

You can use the following command to build.

  • 32bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -a IA32

  • 64bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -a X64

  • 32bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a IA32

  • 64bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a X64

You can start/run the emulator using the following command:

  • 32bit emulator in Windows:

    cd Build\EmulatorIA32\DEBUG_VS2017\IA32\ && WinHost.exe

  • 64bit emulator in Windows:

    cd Build\EmulatorX64\DEBUG_VS2017\X64\ && WinHost.exe

  • 32bit emulator in Linux:

    cd Build/EmulatorIA32/DEBUG_GCC5/IA32/ && ./Host

  • 64bit emulator in Linux:

    cd Build/EmulatorX64/DEBUG_GCC5/X64/ && ./Host

On posix-like environment with the bash shell you can use EmulatorPkg/build.sh to simplify building and running emulator.

For example, to build + run:

$ EmulatorPkg/build.sh $ EmulatorPkg/build.sh run

The build architecture will match your host machine's architecture.

On X64 host machines, you can build + run IA32 mode as well:

$ EmulatorPkg/build.sh -a IA32 $ EmulatorPkg/build.sh -a IA32 run