Skip to content

Commit 4cd37f5

Browse files
committed
Use structure packing instead of padding manualy
1 parent c02405e commit 4cd37f5

File tree

6 files changed

+17
-11
lines changed

6 files changed

+17
-11
lines changed

qiling/os/uefi/UefiSpec.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,19 @@ class EFI_LOCATE_SEARCH_TYPE(ENUM):
3838
]
3939

4040
class EFI_TIME_CAPABILITIES(STRUCT):
41+
_pack_ = 8
42+
4143
_fields_ = [
4244
('Resolution', UINT32),
4345
('Accuracy', UINT32),
4446
('SetsToZero', BOOLEAN),
45-
('PADDING_0', UINT8 * 3)
4647
]
4748

4849
class EFI_MEMORY_DESCRIPTOR(STRUCT):
50+
_pack_ = 8
51+
4952
_fields_ = [
5053
('Type', UINT32),
51-
('PADDING_0', UINT8 * 4),
5254
('PhysicalStart', EFI_PHYSICAL_ADDRESS),
5355
('VirtualStart', EFI_VIRTUAL_ADDRESS),
5456
('NumberOfPages', UINT64),
@@ -223,11 +225,12 @@ class EFI_CONFIGURATION_TABLE(STRUCT):
223225
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL = STRUCT
224226

225227
class EFI_SYSTEM_TABLE(STRUCT):
228+
_pack_ = 8
229+
226230
_fields_ = [
227231
('Hdr', EFI_TABLE_HEADER),
228232
('FirmwareVendor', PTR(CHAR16)),
229233
('FirmwareRevision', UINT32),
230-
('PADDING_0', UINT8 * 4),
231234
('ConsoleInHandle', EFI_HANDLE),
232235
('ConIn', PTR(EFI_SIMPLE_TEXT_INPUT_PROTOCOL)),
233236
('ConsoleOutHandle', EFI_HANDLE),

qiling/os/uefi/ds.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ class EFI_GCD_MEMORY_TYPE(ENUM):
2525
]
2626

2727
class EFI_GCD_MEMORY_SPACE_DESCRIPTOR(STRUCT):
28+
_pack_ = 8
29+
2830
_fields_ = [
2931
('BaseAddress', EFI_PHYSICAL_ADDRESS),
3032
('Length', UINT64),
3133
('Capabilities', UINT64),
3234
('Attributes', UINT64),
3335
('GcdMemoryType', EFI_GCD_MEMORY_TYPE),
34-
('PADDING_0', UINT8 * 4),
3536
('ImageHandle', EFI_HANDLE),
3637
('DeviceHandle', EFI_HANDLE)
3738
]
@@ -45,11 +46,12 @@ class EFI_GCD_IO_TYPE(ENUM):
4546
]
4647

4748
class EFI_GCD_IO_SPACE_DESCRIPTOR(STRUCT):
49+
_pack_ = 8
50+
4851
_fields_ = [
4952
('BaseAddress', EFI_PHYSICAL_ADDRESS),
5053
('Length', UINT64),
5154
('GcdIoType', EFI_GCD_IO_TYPE),
52-
('PADDING_0', UINT8 * 4),
5355
('ImageHandle', EFI_HANDLE),
5456
('DeviceHandle', EFI_HANDLE)
5557
]

qiling/os/uefi/protocols/EfiLoadedImageProtocol.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
from ..UefiMultiPhase import EFI_MEMORY_TYPE
1010

1111
class EFI_LOADED_IMAGE_PROTOCOL(STRUCT):
12+
_pack_ = 8
13+
1214
_fields_ = [
1315
('Revision', UINT32),
14-
('PADDING_0', UINT8 * 4),
1516
('ParentHandle', EFI_HANDLE),
1617
('SystemTable', PTR(EFI_SYSTEM_TABLE)),
1718
('DeviceHandle', EFI_HANDLE),
1819
('FilePath', PTR(EFI_DEVICE_PATH_PROTOCOL)),
1920
('Reserved', PTR(VOID)),
2021
('LoadOptionsSize', UINT32),
21-
('PADDING_1', UINT8 * 4),
2222
('LoadOptions', PTR(VOID)),
2323
('ImageBase', PTR(VOID)),
2424
('ImageSize', UINT64),

qiling/os/uefi/protocols/EfiSmmAccess2Protocol.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ class EFI_MMRAM_DESCRIPTOR(STRUCT):
2424
# @see: MdePkg\Include\Protocol\MmAccess.h
2525
class EFI_SMM_ACCESS2_PROTOCOL(STRUCT):
2626
EFI_SMM_ACCESS2_PROTOCOL = STRUCT
27+
_pack_ = 8
2728

2829
_fields_ = [
2930
('Open', FUNCPTR(EFI_STATUS, PTR(EFI_SMM_ACCESS2_PROTOCOL))),
3031
('Close', FUNCPTR(EFI_STATUS, PTR(EFI_SMM_ACCESS2_PROTOCOL))),
3132
('Lock', FUNCPTR(EFI_STATUS, PTR(EFI_SMM_ACCESS2_PROTOCOL))),
3233
('GetCapabilities', FUNCPTR(EFI_STATUS, PTR(EFI_SMM_ACCESS2_PROTOCOL), PTR(UINTN), PTR(EFI_MMRAM_DESCRIPTOR))),
3334
('LockState', BOOLEAN),
34-
('OpenState', BOOLEAN),
35-
('PADDING_0', CHAR8 * 6)
35+
('OpenState', BOOLEAN)
3636
]
3737

3838
@dxeapi(params = {

qiling/os/uefi/protocols/EfiSmmSwDispatch2Protocol.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
MAXIMUM_SWI_VALUE = 0xff
1515

1616
class EFI_SMM_SW_CONTEXT(STRUCT):
17+
_pack_ = 8
18+
1719
_fields_ = [
1820
('SwSmiCpuIndex', UINTN), # index of the cpu which generated the swsmi
1921
('CommandPort', UINT8), # port number used to trigger the swsmi

qiling/os/uefi/smst.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ class EFI_SMM_CPU_IO2_PROTOCOL(STRUCT):
4545

4646
class EFI_SMM_SYSTEM_TABLE2(STRUCT):
4747
EFI_SMM_SYSTEM_TABLE2 = STRUCT
48+
_pack_ = 8
4849

4950
_fields_ = [
5051
('Hdr', EFI_TABLE_HEADER),
5152
('SmmFirmwareVendor', PTR(CHAR16)),
5253
('SmmFirmwareRevision', UINT32),
53-
('PADDING_0', UINT8 * 4),
5454
('SmmInstallConfigurationTable', FUNCPTR(EFI_STATUS, PTR(EFI_SMM_SYSTEM_TABLE2), PTR(EFI_GUID), PTR(VOID), UINTN)),
5555
('SmmIo', EFI_SMM_CPU_IO2_PROTOCOL),
5656
('SmmAllocatePool', FUNCPTR(EFI_STATUS, EFI_MEMORY_TYPE, UINTN, PTR(PTR(VOID)))),
@@ -244,7 +244,6 @@ def initialize(ql: Qiling, context, gSmst: int):
244244
('Hdr', None),
245245
('SmmFirmwareVendor', None),
246246
('SmmFirmwareRevision', None),
247-
('PADDING_0', None),
248247
('SmmInstallConfigurationTable', hook_SmmInstallConfigurationTable),
249248
('SmmIo', None),
250249
('SmmAllocatePool', hook_SmmAllocatePool),

0 commit comments

Comments
 (0)