<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/BaseTools/Source/Python/AutoGen/GenC.py, branch edk2_master</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=edk2_master</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=edk2_master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2025-10-30T10:00:32+00:00</updated>
<entry>
<title>BaseTools: Remove DXE_SAL_DRIVER</title>
<updated>2025-10-30T10:00:32+00:00</updated>
<author>
<name>Sathya Ravichandran</name>
<email>sathyar@ami.com</email>
</author>
<published>2025-09-23T11:07:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=98d1f8a6fd94c32834087a8ecfc1cce7827496e7'/>
<id>urn:sha1:98d1f8a6fd94c32834087a8ecfc1cce7827496e7</id>
<content type='text'>
The DXE_SAL_DRIVER module type was introduced to support
Itanium (IPF) platforms. Since support for Itanium processors has been
dropped, the instances of DXE_SAL_DRIVER have been removed.

Ref: [3cb0a311cb7e747d7be5c5076d0fff76ad256d2b]

Cc: Sachin Ganesh &lt;sachinganesh@ami.com&gt;
Signed-off-by: Sathya Ravichandran &lt;sathyar@ami.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Remove ARM32 Support</title>
<updated>2025-09-25T22:04:10+00:00</updated>
<author>
<name>Oliver Smith-Denny</name>
<email>osde@microsoft.com</email>
</author>
<published>2025-09-17T21:24:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=2ff173af128e707867c6409f2e4ca308c255ca32'/>
<id>urn:sha1:2ff173af128e707867c6409f2e4ca308c255ca32</id>
<content type='text'>
edk2 is dropping support for the ARM32 architecture. This
commit removes ARM32 code from BaseTools.

Signed-off-by: Oliver Smith-Denny &lt;osde@microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Update Stack Cookie Logic</title>
<updated>2024-09-13T03:58:46+00:00</updated>
<author>
<name>Taylor Beebe</name>
<email>taylor.d.beebe@gmail.com</email>
</author>
<published>2024-06-14T21:07:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=cac0955658cb591d4629bf90aaa542a66e25be55'/>
<id>urn:sha1:cac0955658cb591d4629bf90aaa542a66e25be55</id>
<content type='text'>
This patch updates the GenC logic to generate a random stack cookie value
for the stack check libraries. These random values improve security
for modules which cannot update the global intrinsics.

If the stack cookie value is randomized in the AutoGen.h file each
build, the build system will determine the module/library must be
rebuilt causing effectively a clean build every time. This also makes
binary reproducibility impossible.

This patch updates the early build scripts to create 32 and 64-bit JSON
files in the build output directory which each contain 100 randomized
stack cookie values for each bitwidth. If the JSON files are already
present, then they are not recreated which allows them to be stored and
moved to other builds for binary reproducibility. Because they are in
the build directory, a clean build will cause the values to be
regenerated.

The logic which creates AutoGen.h will read these JSON files and use a
hash of the module GUID (the hash seed is fixed in Basetools) to index
into the array of stack cookie values for the module bitwidth. This
model is necessary because there isn't thread-consistent data so we
cannot use a locking mechanism to ensure only one thread is writing to
the stack cookie files at a time. With this model, the build threads
only need to read from the files.

Signed-off-by: Oliver Smith-Denny &lt;osde@linux.microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools/AutoGen: declare ProcessLibraryConstructorList() for SEC modules</title>
<updated>2024-02-29T09:56:38+00:00</updated>
<author>
<name>Laszlo Ersek</name>
<email>lersek@redhat.com</email>
</author>
<published>2024-02-24T21:05:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=bac9c74080cf36590af0f572c07257c3541f8c02'/>
<id>urn:sha1:bac9c74080cf36590af0f572c07257c3541f8c02</id>
<content type='text'>
Most module types have standardized entry point function prototypes. They
are declared in headers like

- MdePkg/Include/Library/PeiCoreEntryPoint.h
- MdePkg/Include/Library/PeimEntryPoint.h
- MdePkg/Include/Library/DxeCoreEntryPoint.h
- MdePkg/Include/Library/UefiDriverEntryPoint.h
- MdePkg/Include/Library/UefiApplicationEntryPoint.h

These header files also declare matching ProcessLibraryConstructorList()
prototypes.

The SEC module type does not have a standardized entry point prototype
(aka parameter list), therefore no header file like the above ones exists
for SEC. Consequently, no header file *declares*
ProcessLibraryConstructorList() for SEC modules, even though AutoGen
always *defines* ProcessLibraryConstructorList() with the same, empty,
parameter list (i.e., just (VOID)).

The lack of a central declaration is a problem because in SEC code,
ProcessLibraryConstructorList() needs to be called manually, and those
calls need a prototype. Most SEC modules in edk2 get around this by
declaring ProcessLibraryConstructorList() manually, while some others use
an incorrect (PEIM) prototype.

Liming suggested in
&lt;https://bugzilla.tianocore.org/show_bug.cgi?id=991#c2&gt; that AutoGen
provide the declaration as well; implement that in this patch.

Mike suggested that the feature be gated with INF_VERSION, for
compatibility reasons. (INF_VERSION &gt;= 1.30) reflects that the latest
(draft) version of the INF specification, as of this writing, is commit
a31e3c842bee / version 1.29.

For example, if we modify "OvmfPkg/Sec/SecMain.inf" as follows:

&gt; diff --git a/OvmfPkg/Sec/SecMain.inf b/OvmfPkg/Sec/SecMain.inf
&gt; index 3c47a664a95d..dca932a474ee 100644
&gt; --- a/OvmfPkg/Sec/SecMain.inf
&gt; +++ b/OvmfPkg/Sec/SecMain.inf
&gt; @@ -8,7 +8,7 @@
&gt;  ##
&gt;
&gt;  [Defines]
&gt; -  INF_VERSION                    = 0x00010005
&gt; +  INF_VERSION                    = 1.30
&gt;    BASE_NAME                      = SecMain
&gt;    FILE_GUID                      = df1ccef6-f301-4a63-9661-fc6030dcc880
&gt;    MODULE_TYPE                    = SEC

then the patch produces the following difference in
"Build/OvmfX64/NOOPT_GCC5/X64/OvmfPkg/Sec/SecMain/DEBUG/AutoGen.h":

&gt; --- AutoGen.h.orig      2024-02-06 23:10:23.469535345 +0100
&gt; +++ AutoGen.h   2024-02-07 00:00:57.361294055 +0100
&gt; @@ -220,6 +220,13 @@
&gt;
&gt;  // Definition of PCDs used in libraries is in AutoGen.c
&gt;
&gt; +// ProcessLibraryConstructorList() declared here because SEC has no standard entry point.
&gt; +VOID
&gt; +EFIAPI
&gt; +ProcessLibraryConstructorList (
&gt; +  VOID
&gt; +  );
&gt; +
&gt;
&gt;  #ifdef __cplusplus
&gt;  }

which presently (as of edk2 commit edc6681206c1) triggers the following
build error:

&gt; In file included from OvmfPkg/Sec/SecMain.c:14:
&gt; MdePkg/Include/Library/PeimEntryPoint.h:74:1: error: conflicting types for
&gt; ‘ProcessLibraryConstructorList’; have ‘void(void *, const
&gt; EFI_PEI_SERVICES **)’ {aka ‘void(void *, const struct _EFI_PEI_SERVICES
&gt; **)’}
&gt;    74 | ProcessLibraryConstructorList (
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&gt; In file included from &lt;command-line&gt;:
&gt; Build/OvmfX64/NOOPT_GCC5/X64/OvmfPkg/Sec/SecMain/DEBUG/AutoGen.h:226:1: note:
&gt; previous declaration of ‘ProcessLibraryConstructorList’ with type
&gt; ‘void(void)’
&gt;   226 | ProcessLibraryConstructorList (
&gt;       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

That's a genuine bug in OvmfPkg that needs to be fixed, but we keep
compatibility with existent SEC modules until/unless they upgrade
INF_VERSION to 1.30+.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Cc: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Cc: Rebecca Cran &lt;rebecca@bsdio.com&gt;
Cc: Yuwei Chen &lt;yuwei.chen@intel.com&gt;
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=991
Suggested-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Suggested-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
Signed-off-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Message-Id: &lt;20240224210504.41873-1-lersek@redhat.com&gt;
Reviewed-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add EDKII_DSC_PLATFORM_GUID MACRO</title>
<updated>2020-10-13T02:35:08+00:00</updated>
<author>
<name>fengyunhua</name>
<email>fengyunhua@byosoft.com.cn</email>
</author>
<published>2020-10-10T22:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=b65afdde74d6c1fac1cdbd2efdad23ba26295808'/>
<id>urn:sha1:b65afdde74d6c1fac1cdbd2efdad23ba26295808</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2969

Add EDKII_DSC_PLATFORM_GUID MACRO to AutoGen.h and AutoGen.c

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
Signed-off-by: Yunhua Feng &lt;fengyunhua@byosoft.com.cn&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Tested-by: Michael Kubacki &lt;michael.kubacki@microsoft.com&gt;
Reviewed-by: Liming Gao &lt;gaoliming@byosoft.com.cn&gt;
</content>
</entry>
<entry>
<title>BaseTools: remove unnecessary calls of os.exist</title>
<updated>2019-09-17T02:19:05+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-09-04T05:00:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=0075ab2cec500fc679c6b2e4990142b4a2e51050'/>
<id>urn:sha1:0075ab2cec500fc679c6b2e4990142b4a2e51050</id>
<content type='text'>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2101

This patch is going to remove unnecessary calls
of os.exist()

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Improve the file saving and copying reliability</title>
<updated>2019-08-20T06:06:07+00:00</updated>
<author>
<name>Shi, Steven</name>
<email>steven.shi@intel.com</email>
</author>
<published>2019-08-15T14:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=94459080c118049aba927ec0444ba5b750b7d2c9'/>
<id>urn:sha1:94459080c118049aba927ec0444ba5b750b7d2c9</id>
<content type='text'>
BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=2079

The Basetool CopyFileOnChange() and SaveFileOnChange()
functions might raise the IOError occasionally when build
in Windows with multi-process and build cache enabled.
The CopyFileOnChange() and SaveFileOnChange() might be invoked
in multiple sub-processes simultaneously, and this patch adds
global locks to sync these functions invoking which can
harden their reliability.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Signed-off-by: Steven Shi &lt;steven.shi@intel.com&gt;
Reviewed-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Enable Multiple Process AutoGen</title>
<updated>2019-08-09T15:15:53+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-07-30T09:15:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=673d09a2ddfacbc8414ca703519f32c1e48ca5b7'/>
<id>urn:sha1:673d09a2ddfacbc8414ca703519f32c1e48ca5b7</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875

Assign the Module AutoGen tasks into multiple
sub process.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Acked-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Acked-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Decouple AutoGen Objects</title>
<updated>2019-08-09T15:15:52+00:00</updated>
<author>
<name>Feng, Bob C</name>
<email>bob.c.feng@intel.com</email>
</author>
<published>2019-07-22T03:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=e8449e1d8e3b40186eb16ff25242397cffb00a63'/>
<id>urn:sha1:e8449e1d8e3b40186eb16ff25242397cffb00a63</id>
<content type='text'>
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875

1. Separate the AutoGen.py into 3 small py files.
One is for AutoGen base class, one is for WorkspaceAutoGen class
and PlatformAutoGen class, and the one for ModuleAutoGen class.
2. Create a new class DataPipe to store the Platform scope settings.
Create a new class PlatformInfo to provide the same interface
as PlatformAutoGen. PlatformInfo class is initialized by
DataPipe instance.
Create a new class WorkspaceInfo to provide the same interface
as WorkspaceAutoGen. WorkspaceInfo class is initialized by
DataPipe instance.
3. Change ModuleAutoGen to depends on DataPipe, PlatformInfo and
WorkspaceInfo. Remove the dependency of ModuleAutoGen to PlatformAutoGen.

Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Steven Shi &lt;steven.shi@intel.com&gt;
Signed-off-by: Bob Feng &lt;bob.c.feng@intel.com&gt;
Acked-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Tested-by: Laszlo Ersek &lt;lersek@redhat.com&gt;
Acked-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Add HOST_APPLICATION module type.</title>
<updated>2019-07-12T13:06:57+00:00</updated>
<author>
<name>Jiewen Yao</name>
<email>jiewen.yao@intel.com</email>
</author>
<published>2019-07-01T06:19:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=a79841a0244ab2afd1efc3b9d4cc91e27fa90d71'/>
<id>urn:sha1:a79841a0244ab2afd1efc3b9d4cc91e27fa90d71</id>
<content type='text'>
It can be used to indicate a module can be build to run
as OS application and run in OS environment.

Cc: Bob Feng &lt;bob.c.feng@intel.com&gt;
Cc: Liming Gao &lt;liming.gao@intel.com&gt;
Cc: Jiewen Yao &lt;jiewen.yao@intel.com&gt;
Signed-off-by: Xiaoyu Lu &lt;xiaoyux.lu@intel.com&gt;
Reviewed-by: Liming Gao &lt;liming.gao@intel.com&gt;
</content>
</entry>
</feed>
