<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2.git/BaseTools, branch master</title>
<subtitle>EDK II (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2.git/atom?h=master</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/'/>
<updated>2026-09-17T17:11:50+00:00</updated>
<entry>
<title>BaseTools: Add ClangToolChain build plugin</title>
<updated>2026-09-17T17:11:50+00:00</updated>
<author>
<name>Aaron Pop</name>
<email>aaronpop@microsoft.com</email>
</author>
<published>2026-03-13T06:01:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=debbfa2ede69e231b9199cce1de7657049e0873c'/>
<id>urn:sha1:debbfa2ede69e231b9199cce1de7657049e0873c</id>
<content type='text'>
Add a new edk2-pytools build plugin that automatically configures
CLANG_BIN for CLANGPDB and CLANGDWARF tool chains. The plugin
resolves the clang binary path by checking, in order:

1. CLANG_BIN environment variable
2. System PATH
3. Default LLVM install path (Windows)
4. VS-installed clang (Windows)

The plugin also reports clang and linker (lld-link/lld) versions
to the version aggregator for build logging.

Signed-off-by: Aaron Pop &lt;aaronpop@microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools/FirmwareStorageFormat: Fix FV ext entry struct factory functions</title>
<updated>2026-09-13T19:05:51+00:00</updated>
<author>
<name>Michael D Kinney</name>
<email>michael.d.kinney@intel.com</email>
</author>
<published>2026-07-15T21:13:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=203bf1ffa12e890e238d710c6c6cf9d15615951b'/>
<id>urn:sha1:203bf1ffa12e890e238d710c6c6cf9d15615951b</id>
<content type='text'>
The Refine_FV_EXT_ENTRY_OEM_TYPE_Header() and
Refine_FV_EXT_ENTRY_GUID_TYPE_Header() functions incorrectly return
an instantiation attempt of the local class with `Structure` as an
argument (e.g., `return ClassName(Structure)`) instead of returning the
class itself (e.g., `return ClassName`).

This causes FMMT to fail with:
  "expected EFI_FIRMWARE_VOLUME_EXT_ENTRY instance, got
   _ctypes.PyCStructType"

When processing FVs that contain ext header entries of type 0x01
(OEM Type) or type 0x02 (GUID Type, used for FV UI Name when
FvNameString = TRUE).

Fix by returning the class directly, matching the pattern used by
Refine_FV_Header() which correctly returns the class for subsequent
.from_buffer_copy() calls.

Signed-off-by: Michael D Kinney &lt;michael.d.kinney@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: PatchCheck: Report File Line No, Not Patch</title>
<updated>2026-09-08T17:27:21+00:00</updated>
<author>
<name>Oliver Smith-Denny</name>
<email>osde@microsoft.com</email>
</author>
<published>2026-09-01T19:54:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=75e1de00accacd331fd49c5d45b6726ff9996e12'/>
<id>urn:sha1:75e1de00accacd331fd49c5d45b6726ff9996e12</id>
<content type='text'>
Currently, when the GitDiffCheck runs and a failure
is reported, PatchCheck reports what line of the
patch failed, not the line number of the file. This
is not particularly useful because a developer needs
the file line number to go fix the issue.

This patch updates the behavior to keep track of the
file line number (based on the patch reported line
numbers) and report that as where the failure occurred
instead of the patch line number.

Signed-off-by: Oliver Smith-Denny &lt;osde@microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Optimize parsing of byte-array PCD values</title>
<updated>2026-09-06T23:50:31+00:00</updated>
<author>
<name>kuqin12</name>
<email>42554914+kuqin12@users.noreply.github.com</email>
</author>
<published>2026-08-21T22:12:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=4d55998e8b0a251b5124bdf240ddaad9921e6257'/>
<id>urn:sha1:4d55998e8b0a251b5124bdf240ddaad9921e6257</id>
<content type='text'>
This change adds a fast path for simple VOID* hexadecimal byte arrays,
avoiding the generic expression tokenizer's repeated processing of large
PCD values. Regression tests for both paths. It does not change the
existing parser for structured and symbolic expressions.

This reduces parsing time for a 28 KiB generated PCD from roughly 2
seconds to 50 milliseconds.

Signed-off-by: Kun Qin &lt;kun.qin@microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools/GenSec: Use SECTION_SIZE to read section size</title>
<updated>2026-09-03T10:36:41+00:00</updated>
<author>
<name>Mingjie Shen</name>
<email>shen497@purdue.edu</email>
</author>
<published>2026-08-31T22:14:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=52f19aacd569aa0f1f264108ed518a96657f9088'/>
<id>urn:sha1:52f19aacd569aa0f1f264108ed518a96657f9088</id>
<content type='text'>
Replace the open-coded read of the 3-byte section Size[] field with
the SECTION_SIZE() macro from Pi/PiFirmwareFile.h. The macro reads
exactly the three Size[] bytes (endianness-safe) instead of a 4-byte
load that over-reads the adjacent byte. No functional change.

Verified by building BaseTools and running GenSec:

  python3 BaseTools/Edk2ToolsBuild.py -t GCC
  GenSec -s EFI_SECTION_RAW -o out.sec in.bin   # in.bin: 100 bytes

out.sec is 104 bytes: the 100-byte payload plus the 4-byte
EFI_COMMON_SECTION_HEADER. The Size field of the header reads
0x000068, matching out.sec's size that is calculated by SECTION_SIZE.

Generated with the following Coccinelle semantic patch:

```smpl
@@
EFI_COMMON_SECTION_HEADER *E;
typedef UINT32;
@@
(
- *(UINT32 *)(E-&gt;Size) &amp; 0x00FFFFFF
+ SECTION_SIZE (E)
|
- *(UINT32 *)E-&gt;Size &amp; 0x00FFFFFF
+ SECTION_SIZE (E)
)
```

Signed-off-by: Mingjie Shen &lt;shen497@purdue.edu&gt;
</content>
</entry>
<entry>
<title>BaseTools: Make DSC arch macro expansion owner-aware</title>
<updated>2026-09-01T14:42:26+00:00</updated>
<author>
<name>Bob Chen (UST Global Singapore Pte Limited)</name>
<email>v-kuanlchen@microsoft.com</email>
</author>
<published>2026-08-25T14:08:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=7b01c71a83e0bf6a89f5e803a4f60adc29c1f70f'/>
<id>urn:sha1:7b01c71a83e0bf6a89f5e803a4f60adc29c1f70f</id>
<content type='text'>
PR #12628 expanded architecture macros for every DSC record so
component-private records match their component. A positive raw owner can
also represent include provenance, so broad expansion changes records
outside component scope.

Expand architecture macros only for Component records and records whose
owner maps to a final Component. Reset the owner mapping whenever the
post-processed table is rebuilt to prevent stale ownership across
DoPostProcess calls.

Add regression coverage for component-private LibraryClasses and PCDs,
nested and private includes, multiple architectures, unresolved macros,
repeated sections, and repeated post-processing.

Signed-off-by: Bob Chen (UST Global Singapore Pte Limited) &lt;v-kuanlchen@microsoft.com&gt;
</content>
</entry>
<entry>
<title>BaseTools/Python: Remove error message with email address</title>
<updated>2026-08-28T10:04:05+00:00</updated>
<author>
<name>Vishal Oliyil Kunnil</name>
<email>vishalo@qti.qualcomm.com</email>
</author>
<published>2026-05-22T21:14:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=edcf8ffa69319cd5cb038124bd3878f254f97056'/>
<id>urn:sha1:edcf8ffa69319cd5cb038124bd3878f254f97056</id>
<content type='text'>
Remove the "Please send email to devel@edk2.groups.io" message
from the unhandled exception handlers in build.py, GenFds.py,
Trim.py, and the UPT tools. Also remove the now-unused
MSG_EDKII_MAIL_ADDR and MSG_SEARCH_FOR_HELP constants from
Common/DataType.py and UPT/Logger/StringTable.py.

Signed-off-by: Vishal Oliyil Kunnil &lt;vishalo@qti.qualcomm.com&gt;
</content>
</entry>
<entry>
<title>BaseTools/Build: Output warning message for library class mismatch</title>
<updated>2026-08-06T04:55:34+00:00</updated>
<author>
<name>Joey Vagedes</name>
<email>joey.vagedes@gmail.com</email>
</author>
<published>2024-07-02T17:27:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=c5aa7e7d94c0e6b3c0202e15dbf7a5c92dd6a01d'/>
<id>urn:sha1:c5aa7e7d94c0e6b3c0202e15dbf7a5c92dd6a01d</id>
<content type='text'>
Performs a check that will verify that the library instance implements
the library specified in the dsc by ensuring a LIBRARY_CLASS definition
exists in the INF [Defines] section and the value matches the library it
says it is implementing.

As an example, from a platform dsc file:
BaseBmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf

BaseBmpSupportLib is supposed to be of library class BmpSupportLib, but the
dsc defines it incorrectly, the warning message will be displayed during
build.

Signed-off-by: Aaron Pop &lt;aaronpop@microsoft.com&gt;
Co-authored-by: Poncho Figueroa &lt;poncho.figueroa.esqueda@intel.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: Fix Clang -Wtautological-overlap-compare in PcdValueInit.c</title>
<updated>2026-08-01T16:17:54+00:00</updated>
<author>
<name>Phil Noh</name>
<email>Phil.Noh@amd.com</email>
</author>
<published>2026-07-21T20:02:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=d45f882a1bf077f7e8e828fc9dfb14f3187142c1'/>
<id>urn:sha1:d45f882a1bf077f7e8e828fc9dfb14f3187142c1</id>
<content type='text'>
For each structured-PCD field copied via memcpy, DscBuildData.py
emits the clamp expression, '(FieldSize &gt; 0 &amp;&amp; FieldSize &lt; ValueSize) ?
FieldSize : ValueSize'. When ValueSize == 1 and FieldSize is unsigned,
it reduces to (FieldSize &gt; 0 &amp;&amp; FieldSize &lt; 1) - always-false comparison.

Clang flags it under -Wtautological-overlap-compare, and because
PcdValueInit builds with -Werror, autogen fails and the build aborts with
'PcdValueInit.c: error: overlapping comparisons always evaluate to false
[-Werror,-Wtautological-overlap-compare]'. This is specific to Clang host.

To fix it, this update changes '&lt;' to '&lt;=' at all five generator sites in
DscBuildData.py (GenerateDefaultValueAssignFunction,
GenerateInitValueFunction, GenerateCommandLineValue,
GenerateModuleScopeValue, GenerateFdfValue). Behavior is unchanged:
both branches copy the same byte count when FieldSize == ValueSize.
GCC and MSVC builds are unaffected.

Signed-off-by: Phil Noh &lt;Phil.Noh@amd.com&gt;
</content>
</entry>
<entry>
<title>BaseTools: iasl: Update iasl binaries to 20230628 release</title>
<updated>2026-07-31T15:16:47+00:00</updated>
<author>
<name>Kun Qin</name>
<email>kuqin@microsoft.com</email>
</author>
<published>2026-01-27T20:24:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2.git/commit/?id=70d2149e39e4765eae4ee4350b09f8484b8e43a7'/>
<id>urn:sha1:70d2149e39e4765eae4ee4350b09f8484b8e43a7</id>
<content type='text'>
This change updates the iasl binary to the 20230628 release.

The updated release also adds support for execution on ARM host machines.

Signed-off-by: Kun Qin &lt;kun.qin@microsoft.com&gt;
</content>
</entry>
</feed>
