Guid.xref file


Andrew Fish
 

On Oct 10, 2021, at 3:33 AM, Konstantin Aladyshev <aladyshev22@...> wrote:

Hello!

Sometimes it's useful to transform GUID values to their names from the
codebase. For example when you investigate the boot log.
Usually I just use key/value pairs from the generated build file
`Build/OvmfX64/DEBUG_GCC5/FV/Guid.xref, and perform necessary
substitutions in the log file through the simple custom python script.
This Guid.xref file has associations like this:
```
6302D008-7F9B-4F30-87AC-60C9FEF5DA4E gEfiShellProtocolGuid
```
So it is easy to construct a dictionary with GUID/Name pairs with it.
But the problem is that this file doesn't contain all the GUID/Name pairs.
For example gShellNetwork1HiiGuid/gShellLevel2HiiGuid/gEfiComponentNameProtocolGuid
are not present in this file.
Which GUIDs go to the `Build/OvmfX64/RELEASE_GCC5/FV/Guid.xref` file
and which don't?
It looks like the HII related GUDs [1] don’t end up in the Guid.xref file. That seems like a bug, please file a BZ. I would expect every GUID in all the modules AutoGen.c file to show up in the Guid.xref file.

[1] example
/Volumes/Case/edk2-github/Build/OvmfX64(master)>git grep --untracked --no-exclude-standard gEfiAcpiTableProtocolGuid -- '*.xref' '*.c'
DEBUG_XCODE5/FV/Guid.xref:309:FFE06BDD-6107-46A6-7BB2-5A9C7EC5275C gEfiAcpiTableProtocolGuid
DEBUG_XCODE5/X64/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/DEBUG/AutoGen.c:34:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};
DEBUG_XCODE5/X64/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe/DEBUG/AutoGen.c:31:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};
DEBUG_XCODE5/X64/MdeModulePkg/Universal/Disk/RamDiskDxe/RamDiskDxe/DEBUG/AutoGen.c:43:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};
DEBUG_XCODE5/X64/NetworkPkg/IScsiDxe/IScsiDxe/DEBUG/AutoGen.c:41:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};
DEBUG_XCODE5/X64/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpiPlatformDxe/DEBUG/AutoGen.c:27:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};
DEBUG_XCODE5/X64/ShellPkg/Application/Shell/Shell/DEBUG/AutoGen.c:139:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gEfiAcpiTableProtocolGuid = { 0xFFE06BDD, 0x6107, 0x46A6, { 0x7B, 0xB2, 0x5A, 0x9C, 0x7E, 0xC5, 0x27, 0x5C }};

/Volumes/Case/edk2-github/Build/OvmfX64(master)>git grep --untracked --no-exclude-standard gShellLevel2HiiGuid -- '*.xref' '*.c'
DEBUG_XCODE5/X64/ShellPkg/Application/Shell/Shell/DEBUG/AutoGen.c:64:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gShellLevel2HiiGuid = {0xf95a7ccc, 0x4c55, 0x4426, {0xa7, 0xb4, 0xdc, 0x89, 0x61, 0x95, 0xb, 0xae}};

/Volumes/Case/edk2-github/Build/OvmfX64(master)>git grep --untracked --no-exclude-standard gShellNetwork1HiiGuid -- '*.xref' '*.c'
DEBUG_XCODE5/X64/ShellPkg/Application/Shell/Shell/DEBUG/AutoGen.c:71:GLOBAL_REMOVE_IF_UNREFERENCED EFI_GUID gShellNetwork1HiiGuid = {0xf3d301bb, 0xf4a5, 0x45a8, {0xb0, 0xb7, 0xfa, 0x99, 0x9c, 0x62, 0x37, 0xae}};

Thanks,

Andrew Fish

Best regards,
Konstantin Aladyshev





Konstantin Aladyshev
 

Hello!

Sometimes it's useful to transform GUID values to their names from the
codebase. For example when you investigate the boot log.
Usually I just use key/value pairs from the generated build file
`Build/OvmfX64/DEBUG_GCC5/FV/Guid.xref, and perform necessary
substitutions in the log file through the simple custom python script.
This Guid.xref file has associations like this:
```
6302D008-7F9B-4F30-87AC-60C9FEF5DA4E gEfiShellProtocolGuid
```
So it is easy to construct a dictionary with GUID/Name pairs with it.
But the problem is that this file doesn't contain all the GUID/Name pairs.
For example gShellNetwork1HiiGuid/gShellLevel2HiiGuid/gEfiComponentNameProtocolGuid
are not present in this file.
Which GUIDs go to the `Build/OvmfX64/RELEASE_GCC5/FV/Guid.xref` file
and which don't?

Best regards,
Konstantin Aladyshev