audk/MdeModulePkg/Library
Ard Biesheuvel 765fb87c2b MdeModulePkg/FileExplorerLib: avoid packed struct for program data
Struct packing is only necessary for data structures whose in-memory
representation is covered by the PI or UEFI specs, and may deviate
from the ordinary C rules for alignment.

So in case of FileExplorerLib, this applies to the device path struct
only, and other structures used to carry program data should not be
packed, or we may end up with alignment faults on architectures such
as ARM, which don't permit load/store double or multiple instructions
to access memory locations that are not 32-bit aligned.

E.g., the following call in FileExplorerLibConstructor()

  InitializeListHead (&gFileExplorerPrivate.FsOptionMenu->Head);

which is emitted as follows for 32-bit ARM/Thumb2 by Clang-5.0

    3de0:       b510            push    {r4, lr}
    3de2:       4604            mov     r4, r0
    ...
    3de8:       e9c4 4400       strd    r4, r4, [r4]
    3dec:       bd10            pop     {r4, pc}

will perform a double-word store on the first argument, passed in
register r0, assuming that the pointer type of the argument is
enough to guarantee that the value is suitably aligned.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
2018-12-11 13:14:28 +01:00
..
AuthVariableLibNull MdeModulePkg: Deprecate EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 2017-11-01 22:25:36 +08:00
BaseBmpSupportLib MdeModulePkg/BmpSupportLib: Check PixelHeight/PixelWidth against 0 2018-07-03 11:21:38 +08:00
BaseIpmiLibNull MdeModulePkg: Add the missing Library uni files of Ipmi instances 2015-12-24 02:28:45 +00:00
BasePlatformHookLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
BaseResetSystemLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
BaseSerialPortLib16550 MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
BaseSortLib MdeModulePkg/BaseSortLib: Enable for all module types 2018-11-29 08:35:54 +08:00
BootLogoLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
BootMaintenanceManagerUiLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
BootManagerUiLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
BrotliCustomDecompressLib MdeModulePkg BrotliDecompressLib: Add the checker to avoid array out of bound 2018-10-19 08:21:47 +08:00
CpuExceptionHandlerLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
CustomizedDisplayLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DebugAgentLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DeviceManagerUiLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DisplayUpdateProgressLibGraphics MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DisplayUpdateProgressLibText MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeCapsuleLibFmp MdeModulePkg/DxeCapsuleLibFmp: Remove unused PCDs 2018-09-29 17:49:02 +08:00
DxeCapsuleLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeCoreMemoryAllocationLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeCorePerformanceLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeCrc32GuidedSectionExtractLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeDebugPrintErrorLevelLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeDpcLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeFileExplorerProtocol MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeHttpLib MdeModulePkg/Library/DxeHttpLib: Handle the blank value in HTTP header. 2018-09-13 09:09:51 +08:00
DxeIpIoLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeIpmiLibIpmiProtocol MdeModulePkg: Add the missing Library uni files of Ipmi instances 2015-12-24 02:28:45 +00:00
DxeNetLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxePerformanceLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxePrintLibPrint2Protocol MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeReportStatusCodeLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeResetSystemLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeSecurityManagementLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeTcpIoLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
DxeUdpIoLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
FileExplorerLib MdeModulePkg/FileExplorerLib: avoid packed struct for program data 2018-12-11 13:14:28 +01:00
FmpAuthenticationLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
FrameBufferBltLib MdeModulePkg/FrameBufferBltLib: Fix copying of unaligned memory 2018-01-16 13:26:56 +08:00
LockBoxNullLib MdeModulePkg/LockboxNullLib: clean up INF file. 2018-11-26 09:32:45 +08:00
LzmaCustomDecompressLib MdeModulePkg Lzma: Update LZMA SDK version to 18.05 2018-10-09 09:31:10 +08:00
NonDiscoverableDeviceRegistrationLib MdeModulePkg: Update NonDiscoverableDeviceRegistrationLib file header format 2017-07-26 09:00:25 +08:00
OemHookStatusCodeLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PciHostBridgeLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiCrc32GuidedSectionExtractLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiDebugPrintHobLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
PeiDxeDebugLibReportStatusCode MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiIpmiLibIpmiPpi MdeModulePkg: Add the missing Library uni files of Ipmi instances 2015-12-24 02:28:45 +00:00
PeiPerformanceLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiRecoveryLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiReportStatusCodeLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiResetSystemLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PeiS3LibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PiDxeS3BootScriptLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PiSmmCoreMemoryAllocationLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
PiSmmCoreSmmServicesTableLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
PlatformBootManagerLibNull MdeModulePkg/PlatformBootManager: Add PlatformBootManagerUnableToBoot 2018-07-27 15:47:50 +08:00
PlatformHookLibSerialPortPpi MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PlatformVarCleanupLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
ResetUtilityLib MdeModulePkg/ResetUtilityLib: Add pack(1) for reset data structure 2018-07-03 14:39:56 +08:00
RuntimeDxeReportStatusCodeLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
SmmCorePerformanceLib MdeModulePkg/SmmCorePerfLib: Add DxeServicesLib library class in INF 2018-08-22 10:29:28 +08:00
SmmCorePlatformHookLibNull MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
SmmIpmiLibSmmIpmiProtocol MdeModulePkg: Add the missing Library uni files of Ipmi instances 2015-12-24 02:28:45 +00:00
SmmLockBoxLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
SmmMemoryAllocationProfileLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
SmmPerformanceLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
SmmReportStatusCodeLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
SmmSmiHandlerProfileLib MdeModulePkg/SmiHandlerProfile: Add Context support in Unregister 2017-03-13 16:04:12 +08:00
TpmMeasurementLibNull MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UefiBootManagerLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UefiHiiLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UefiHiiServicesLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UefiMemoryAllocationProfileLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UefiSortLib MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
VarCheckHiiLib MdeModulePkg/VarCheckHii: Update data type for variable "ArrayIndex" 2018-01-10 12:43:20 +08:00
VarCheckLib MdeModulePkg VarCheck: #### in L"Boot####" are upper case hex 2016-08-31 15:23:42 +08:00
VarCheckPcdLib MdeModulePkg: Clean up source files 2018-06-28 11:19:45 +08:00
VarCheckUefiLib MdeModulePkg VarCheck: #### in L"Boot####" are upper case hex 2016-08-31 15:23:42 +08:00