summaryrefslogtreecommitdiff
path: root/MdePkg/Include/Pi/PiFirmwareFile.h
AgeCommit message (Collapse)AuthorFilesLines
2026-02-27MdePkg/Include/Uefi: Add back include guardMichael D Kinney1-2/+7
Add include guards back to include files that use the same include guard macro in BaseTools/Source/C/Include/Common and MdePkg or MdeModulePkg. Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
2026-02-24MdePkg: Replace include guards with #pragma onceMichael Kubacki1-4/+1
Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2021-12-07MdePkg: Apply uncrustify changesMichael Kubacki1-107/+104
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2019-04-24MdePkg/PiFirmwareFile: fix undefined behavior in FFS_FILE_SIZELaszlo Ersek1-2/+9
Accessing "EFI_FFS_FILE_HEADER.Size", which is of type UINT8[3], through a (UINT32*), is undefined behavior. Fix it by accessing the array elements individually. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=1710 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2019-04-24MdePkg/PiFirmwareFile: fix undefined behavior in SECTION_SIZELaszlo Ersek1-2/+9
RH covscan justifiedly reports that accessing "EFI_COMMON_SECTION_HEADER.Size", which is of type UINT8[3], through a (UINT32*), is undefined behavior: > Error: OVERRUN (CWE-119): > edk2-89910a39dcfd/OvmfPkg/Sec/SecMain.c:178: overrun-local: Overrunning > array of 3 bytes at byte offset 3 by dereferencing pointer > "(UINT32 *)((EFI_COMMON_SECTION_HEADER *)(UINTN)Section)->Size". > # 176| Section = (EFI_COMMON_SECTION_HEADER*)(UINTN) CurrentAddress; > # 177| > # 178|-> Size = SECTION_SIZE (Section); > # 179| if (Size < sizeof (*Section)) { > # 180| return EFI_VOLUME_CORRUPTED; Fix this by accessing the array elements individually. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=1710 Issue: scan-1007.txt Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2019-04-24MdePkg/PiFirmwareFile: express IS_SECTION2 in terms of SECTION_SIZELaszlo Ersek1-3/+3
The IS_SECTION2() function-like macro duplicates the SECTION_SIZE() calculation, just to compare the computed size against 0xFFFFFF. Invoke SECTION_SIZE() instead; only preserve the comparison. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=1710 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2019-04-09MdePkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney1-7/+1
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2018-02-09MdePkg/Include: Add management mode FV file type and depex.Supreeth Venkatesh1-4/+10
As per PI specification v1.6, As per section 2.1.4.1, The following file types exist: Table 3. Defined File Types Name Value EFI_FV_FILETYPE_RAW 0x01 EFI_FV_FILETYPE_FREEFORM 0x02 EFI_FV_FILETYPE_SECURITY_CORE 0x03 EFI_FV_FILETYPE_PEI_CORE 0x04 EFI_FV_FILETYPE_DXE_CORE 0x05 EFI_FV_FILETYPE_PEIM 0x06 EFI_FV_FILETYPE_DRIVER 0x07 EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08 EFI_FV_FILETYPE_APPLICATION 0x09 EFI_FV_FILETYPE_MM 0x0A EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B EFI_FV_FILETYPE_COMBINED_MM_DXE 0x0C EFI_FV_FILETYPE_MM_CORE 0x0D EFI_FV_FILETYPE_MM_STANDALONE 0x0E EFI_FV_FILETYPE_MM_CORE_STANDALONE 0x0F The following new section type is added: EFI_SECTION_MM_DEPEX This patch adds the management mode FV file type and depex. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Achin Gupta <achin.gupta@arm.com> Signed-off-by: Supreeth Venkatesh <supreeth.venkatesh@arm.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2017-09-26MdePkg PiFirmwareFile.h: Add FFS_ATTRIB_DATA_ALIGNMENT_2 definitionStar Zeng1-2/+3
Follow PI 1.6 spec to add FFS_ATTRIB_DATA_ALIGNMENT_2 definition for FFS alignment extended to support maximum 16MB. Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2015-08-24MdePkg: Follow PI spec to update ExtendedSize in EFI_FFS_FILE_HEADER2Star Zeng1-4/+4
for FFS data above 16 bytes alignment requirement. PI spec requires FFS header to be at 8 bytes alignment to FV header. And, FFS data alignment requires the beginning of the file data must be aligned on a particular boundary, such as 1, 16, 128 bytes or above. If FFS data alignment requires to be above 16 bytes, and FFS header must be at 8 byte alignment, so FFS header size must be multiple of 8. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18263 6f19259b-4bc3-4df7-8a09-765794883524
2014-10-22[MdePkg] Code clean-up: Remove trailing spacesLee Leahy1-54/+54
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com> Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16223 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-27Add core FFS3 support, ↵lzeng141-1/+16
ExtractGuidedSectionLib/GuidedSectionExtractionLib/PiFirmwareFile.h. Signed-off-by: lzeng14 Reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12582 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-16Correct ExtendedSize’s type to UINT32.lzeng141-1/+1
Signed-off-by: lzeng14 Reviewed-by: jyao1 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11833 6f19259b-4bc3-4df7-8a09-765794883524
2011-05-17According to PI_1_2_Errata_B, EFI_FFS_INTEGRITY_CHECK.Checksum.File should ↵lzeng141-3/+2
be 8-bit checksum of the file data, not the entire file, correct the comments. Signed-off-by: lzeng14 Reviewed-by: rsun3 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11672 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23Update the copyright notice formathhtian1-1/+1
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10403 6f19259b-4bc3-4df7-8a09-765794883524
2010-03-13Grammatical and disclaimer changes (does not follow internal C coding stds.)myronporter1-38/+37
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10235 6f19259b-4bc3-4df7-8a09-765794883524
2010-03-01Add the fixed checksum value 0xAA of FFS header according to the latest PI spec.lgao41-2/+8
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10124 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-21Add new FFS file types defined for SMM introduced since PI 1.1.rsun31-1/+4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9172 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-20Add related definitions support large file.klu21-9/+160
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9151 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-19Add EFI_DISPOSABLE_SECTION type defined in PI 1.2 specification.klu21-0/+11
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9122 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-181. Clean up MdePkg internal header fileslgao41-3/+1
The header files in MdePkg/Include/Ia32, X64, Ipf, Ebc, Pi, Uefi directories are the internal header files, which should not be directly included by the modules. This patch cleans these internal header files to remove the uncessary ProcessorBind.h file. 2. Clean up MdePkg public header files to remove the uncessary internal header files. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8324 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-10Add comments for enumeration, structure data members those are referred by ↵lgao41-0/+70
UefiService, Runtime Service, Dxe Service and Pei Service. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6974 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-28Refine version info in MDE file header.xli241-1/+1
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6275 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-08Minor update for PI include files according to code review comments.xli241-2/+2
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5839 6f19259b-4bc3-4df7-8a09-765794883524
2008-09-04added additional comments and fixed some typo.vanjeff1-1/+5
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5810 6f19259b-4bc3-4df7-8a09-765794883524
2008-06-24Fix doxygen issue:klu21-76/+79
1) comment for structure should be in doxygen format, such as /// , /**, /*! 2) comment for data field of structure should in doxygen format. 3) should not exist blank between ") (" when declaring a type of function point. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5363 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-21Fix missing include file which break doxygen parsing.klu21-0/+3
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5103 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-26EFI_FV_FILETYPE_ALL missing from PI specification. Will be added in an ↵AJFISH1-0/+1
errata as its referenced, but not defined. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3443 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-06Add pack(1) for section header structure.lgao41-0/+2
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3091 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-04Clean up the tolerant definitions of FV_FILETYPEs.yshang11-16/+0
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3031 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-04Add macro SECTION_SIZE(SectionHeader) in MdePkg.yshang11-0/+5
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3030 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-03Porting SecMain module for Nt32Pkg, but not enable PI, so it currently ↵klu21-0/+16
dependent on IntelFrameworkPkg temporary. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2998 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-03Update the EFI_FV_FILETYPE definitions.yshang11-0/+20
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2992 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-28Updated headers to follow coding standardAJFISH1-2/+0
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2815 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-19Removed tabs and fixed some minor coding style issues. Also fixed typo in ↵AJFISH1-14/+14
EFI_PEI_ENTRY_POINT git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2668 6f19259b-4bc3-4df7-8a09-765794883524
2007-06-08Move to directory "Include"yshang11-0/+206
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2646 6f19259b-4bc3-4df7-8a09-765794883524