From 345357c526661295f0f43cd72e47cfed85ae4a10 Mon Sep 17 00:00:00 2001 From: TsunFeng Date: Wed, 23 Oct 2024 22:26:57 +0800 Subject: [PATCH 1/5] Add mock function into MockIoLib --- MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h | 9 +++++++++ .../Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp | 1 + 2 files changed, 10 insertions(+) diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h index 891dca708b..561955c20f 100644 --- a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h @@ -129,6 +129,15 @@ struct MockIoLib { IN UINT64 Value ) ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoWrite16, + ( + IN UINTN Port, + IN UINT16 Value + ) + ); }; #endif diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp index d607eaa5d6..7bd5322c27 100644 --- a/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp @@ -22,3 +22,4 @@ MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead32, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite32, 2, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead64, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite16, 2, EFIAPI); From a3e134836dfb28111b2a446d3b83b86b8e7e7a5c Mon Sep 17 00:00:00 2001 From: TsunFeng Date: Mon, 4 Nov 2024 14:19:18 +0800 Subject: [PATCH 2/5] Add all the mock functions in MockIoLib --- .../Include/GoogleTest/Library/MockIoLib.h | 867 +++++++++++++++++- .../GoogleTest/MockIoLib/MockIoLib.cpp | 86 +- 2 files changed, 926 insertions(+), 27 deletions(-) diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h index 561955c20f..8e9792a4f2 100644 --- a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockIoLib.h @@ -18,64 +18,563 @@ extern "C" { struct MockIoLib { MOCK_INTERFACE_DECLARATION (MockIoLib); + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoRead8, + ( + IN UINTN Port + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoWrite8, + ( + IN UINTN Port, + IN UINT8 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoReadFifo8, + ( + IN UINTN Port, + IN UINTN Count, + OUT VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoWriteFifo8, + ( + IN UINTN Port, + IN UINTN Count, + IN VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoOr8, + ( + IN UINTN Port, + IN UINT8 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoAnd8, + ( + IN UINTN Port, + IN UINT8 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoAndThenOr8, + ( + IN UINTN Port, + IN UINT8 AndData, + IN UINT8 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoBitFieldRead8, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoBitFieldWrite8, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoBitFieldOr8, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoBitFieldAnd8, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + IoBitFieldAndThenOr8, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData, + IN UINT8 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoRead16, + ( + IN UINTN Port + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoWrite16, + ( + IN UINTN Port, + IN UINT16 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoReadFifo16, + ( + IN UINTN Port, + IN UINTN Count, + OUT VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoWriteFifo16, + ( + IN UINTN Port, + IN UINTN Count, + IN VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoOr16, + ( + IN UINTN Port, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoAnd16, + ( + IN UINTN Port, + IN UINT16 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoAndThenOr16, + ( + IN UINTN Port, + IN UINT16 AndData, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoBitFieldRead16, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoBitFieldWrite16, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoBitFieldOr16, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoBitFieldAnd16, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + IoBitFieldAndThenOr16, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData, + IN UINT16 OrData + ) + ); + MOCK_FUNCTION_DECLARATION ( UINT32, - MmioAndThenOr32, + IoRead32, + ( + IN UINTN Port + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoWrite32, + ( + IN UINTN Port, + IN UINT32 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoReadFifo32, + ( + IN UINTN Port, + IN UINTN Count, + OUT VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + IoWriteFifo32, + ( + IN UINTN Port, + IN UINTN Count, + IN VOID *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoOr32, + ( + IN UINTN Port, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoAnd32, + ( + IN UINTN Port, + IN UINT32 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoAndThenOr32, + ( + IN UINTN Port, + IN UINT32 AndData, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoBitFieldRead32, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoBitFieldWrite32, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoBitFieldOr32, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoBitFieldAnd32, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + IoBitFieldAndThenOr32, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoRead64, + ( + IN UINTN Port + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoWrite64, + ( + IN UINTN Port, + IN UINT64 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoOr64, + ( + IN UINTN Port, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoAnd64, + ( + IN UINTN Port, + IN UINT64 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoAndThenOr64, + ( + IN UINTN Port, + IN UINT64 AndData, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoBitFieldRead64, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoBitFieldWrite64, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoBitFieldOr64, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoBitFieldAnd64, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + IoBitFieldAndThenOr64, + ( + IN UINTN Port, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + MmioRead8, + ( + IN UINTN Address + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + MmioWrite8, + ( + IN UINTN Address, + IN UINT8 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + MmioOr8, ( - IN UINTN Address, - IN UINT32 AndData, - IN UINT32 OrData + IN UINTN Address, + IN UINT8 OrData ) ); MOCK_FUNCTION_DECLARATION ( UINT8, - IoWrite8, + MmioAnd8, ( - IN UINTN Port, - IN UINT8 Value + IN UINTN Address, + IN UINT8 AndData ) ); MOCK_FUNCTION_DECLARATION ( UINT8, - IoRead8, + MmioAndThenOr8, ( - IN UINTN Port + IN UINTN Address, + IN UINT8 AndData, + IN UINT8 OrData ) ); MOCK_FUNCTION_DECLARATION ( - UINT64, - IoRead64, + UINT8, + MmioBitFieldRead8, ( - IN UINTN Port + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit ) ); MOCK_FUNCTION_DECLARATION ( - UINT64, - IoWrite64, + UINT8, + MmioBitFieldWrite8, ( - IN UINTN Port, - IN UINT64 Value + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 Value ) ); MOCK_FUNCTION_DECLARATION ( UINT8, - MmioRead8, + MmioBitFieldOr8, ( - IN UINTN Address + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 OrData ) ); MOCK_FUNCTION_DECLARATION ( UINT8, - MmioWrite8, + MmioBitFieldAnd8, ( IN UINTN Address, - IN UINT8 Value + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8, + MmioBitFieldAndThenOr8, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT8 AndData, + IN UINT8 OrData ) ); @@ -96,6 +595,89 @@ struct MockIoLib { ) ); + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioOr16, + ( + IN UINTN Address, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioAnd16, + ( + IN UINTN Address, + IN UINT16 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioAndThenOr16, + ( + IN UINTN Address, + IN UINT16 AndData, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioBitFieldRead16, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioBitFieldWrite16, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioBitFieldOr16, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioBitFieldAnd16, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16, + MmioBitFieldAndThenOr16, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT16 AndData, + IN UINT16 OrData + ) + ); + MOCK_FUNCTION_DECLARATION ( UINT32, MmioRead32, @@ -113,6 +695,89 @@ struct MockIoLib { ) ); + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioOr32, + ( + IN UINTN Address, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioAnd32, + ( + IN UINTN Address, + IN UINT32 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioAndThenOr32, + ( + IN UINTN Address, + IN UINT32 AndData, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioBitFieldRead32, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioBitFieldWrite32, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioBitFieldOr32, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioBitFieldAnd32, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + MmioBitFieldAndThenOr32, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT32 AndData, + IN UINT32 OrData + ) + ); + MOCK_FUNCTION_DECLARATION ( UINT64, MmioRead64, @@ -131,11 +796,165 @@ struct MockIoLib { ); MOCK_FUNCTION_DECLARATION ( - UINT16, - IoWrite16, + UINT64, + MmioOr64, ( - IN UINTN Port, - IN UINT16 Value + IN UINTN Address, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioAnd64, + ( + IN UINTN Address, + IN UINT64 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioAndThenOr64, + ( + IN UINTN Address, + IN UINT64 AndData, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioBitFieldRead64, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioBitFieldWrite64, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioBitFieldOr64, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioBitFieldAnd64, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64, + MmioBitFieldAndThenOr64, + ( + IN UINTN Address, + IN UINTN StartBit, + IN UINTN EndBit, + IN UINT64 AndData, + IN UINT64 OrData + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8 *, + MmioReadBuffer8, + ( + IN UINTN StartAddress, + IN UINTN Length, + OUT UINT8 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16 *, + MmioReadBuffer16, + ( + IN UINTN StartAddress, + IN UINTN Length, + OUT UINT16 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32 *, + MmioReadBuffer32, + ( + IN UINTN StartAddress, + IN UINTN Length, + OUT UINT32 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64 *, + MmioReadBuffer64, + ( + IN UINTN StartAddress, + IN UINTN Length, + OUT UINT64 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT8 *, + MmioWriteBuffer8, + ( + IN UINTN StartAddress, + IN UINTN Length, + IN CONST UINT8 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT16 *, + MmioWriteBuffer16, + ( + IN UINTN StartAddress, + IN UINTN Length, + IN CONST UINT16 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT32 *, + MmioWriteBuffer32, + ( + IN UINTN StartAddress, + IN UINTN Length, + IN CONST UINT32 *Buffer + ) + ); + + MOCK_FUNCTION_DECLARATION ( + UINT64 *, + MmioWriteBuffer64, + ( + IN UINTN StartAddress, + IN UINTN Length, + IN CONST UINT64 *Buffer ) ); }; diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp index 7bd5322c27..7f25a562bb 100644 --- a/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockIoLib/MockIoLib.cpp @@ -9,17 +9,97 @@ MOCK_INTERFACE_DEFINITION (MockIoLib); -MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAndThenOr32, 3, EFIAPI); -MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite8, 2, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, IoRead8, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoReadFifo8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWriteFifo8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoOr8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAnd8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAndThenOr8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldRead8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldWrite8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldOr8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAnd8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAndThenOr8, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoRead16, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoReadFifo16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWriteFifo16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoOr16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAnd16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAndThenOr16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldRead16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldWrite16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldOr16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAnd16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAndThenOr16, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoRead32, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoReadFifo32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoWriteFifo32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoOr32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAnd32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAndThenOr32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldRead32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldWrite32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldOr32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAnd32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAndThenOr32, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, IoRead64, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoOr64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAnd64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoAndThenOr64, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldRead64, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldWrite64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldOr64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAnd64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, IoBitFieldAndThenOr64, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead8, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioOr8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAnd8, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAndThenOr8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldRead8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldWrite8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldOr8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAnd8, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAndThenOr8, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead16, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioOr16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAnd16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAndThenOr16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldRead16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldWrite16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldOr16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAnd16, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAndThenOr16, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead32, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioOr32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAnd32, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAndThenOr32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldRead32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldWrite32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldOr32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAnd32, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAndThenOr32, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioRead64, 1, EFIAPI); MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWrite64, 2, EFIAPI); -MOCK_FUNCTION_DEFINITION (MockIoLib, IoWrite16, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioOr64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAnd64, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioAndThenOr64, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldRead64, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldWrite64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldOr64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAnd64, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioBitFieldAndThenOr64, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioReadBuffer8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioReadBuffer16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioReadBuffer32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioReadBuffer64, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWriteBuffer8, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWriteBuffer16, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWriteBuffer32, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockIoLib, MmioWriteBuffer64, 3, EFIAPI); From a46d41a35a68206357cec59851d9d8e5f4e6cc78 Mon Sep 17 00:00:00 2001 From: TsunFeng Date: Sat, 9 Nov 2024 04:15:23 +0800 Subject: [PATCH 3/5] Create Mock for PostCodeLib (#1168) ## Description Create Mock for PostCodeLib For details on how to complete these options and their meaning refer to [CONTRIBUTING.md](https://github.com/microsoft/mu/blob/HEAD/CONTRIBUTING.md). - [ ] Impacts functionality? - [ ] Impacts security? - [ ] Breaking change? - [ ] Includes tests? - [ ] Includes documentation? - [x] Backport to release branch? ## How This Was Tested Unit tests component can call these mock functions success ## Integration Instructions N/A --- MdePkg/Test/MdePkgHostTest.dsc | 1 + .../GoogleTest/Library/MockPostCodeLib.h | 55 +++++++++++++++++++ .../MockPostCodeLib/MockPostCodeLib.cpp | 14 +++++ .../MockPostCodeLib/MockPostCodeLib.inf | 33 +++++++++++ 4 files changed, 103 insertions(+) create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockPostCodeLib.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.cpp create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf diff --git a/MdePkg/Test/MdePkgHostTest.dsc b/MdePkg/Test/MdePkgHostTest.dsc index 71b4aa9539..4e25b36fb4 100644 --- a/MdePkg/Test/MdePkgHostTest.dsc +++ b/MdePkg/Test/MdePkgHostTest.dsc @@ -70,4 +70,5 @@ MdePkg/Test/Mock/Library/GoogleTest/MockCpuLib/MockCpuLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockPciSegmentLib/MockPciSegmentLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf + MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf # MU_CHANGE [END] diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockPostCodeLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockPostCodeLib.h new file mode 100644 index 0000000000..4dce05d18e --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockPostCodeLib.h @@ -0,0 +1,55 @@ +/** @file MockPostCodeLib.h + Google Test mocks for PostCodeLib + + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved. + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_POST_CODE_LIB_H_ +#define MOCK_POST_CODE_LIB_H_ + +#include +#include +extern "C" { + #include + #include +} + +struct MockPostCodeLib { + MOCK_INTERFACE_DECLARATION (MockPostCodeLib); + + MOCK_FUNCTION_DECLARATION ( + UINT32, + PostCode, + ( + IN UINT32 Value + ) + ); + MOCK_FUNCTION_DECLARATION ( + UINT32, + PostCodeWithDescription, + ( + IN UINT32 Value, + IN CONST CHAR8 *Description OPTIONAL + ) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + PostCodeEnabled, + ( + + ) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + PostCodeDescriptionEnabled, + ( + + ) + ); +}; + +#endif //MOCK_PCI_EXPRESS_LIB_H_ diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.cpp new file mode 100644 index 0000000000..b10009a3de --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.cpp @@ -0,0 +1,14 @@ +/** @file MockPostCodeLib.cpp + Google Test mocks for PostCodeLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +MOCK_INTERFACE_DEFINITION (MockPostCodeLib); +MOCK_FUNCTION_DEFINITION (MockPostCodeLib, PostCode, 1, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockPostCodeLib, PostCodeWithDescription, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockPostCodeLib, PostCodeEnabled, 0, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockPostCodeLib, PostCodeDescriptionEnabled, 0, EFIAPI); diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf b/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf new file mode 100644 index 0000000000..236dfe3022 --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf @@ -0,0 +1,33 @@ +## @file MockPostCodeLib.inf +# Google Test mocks for PostCodeLib +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = MockPostCodeLib + FILE_GUID = 25BF192B-A519-4997-823A-AFEC2C953627 + MODULE_TYPE = HOST_APPLICATION + VERSION_STRING = 1.0 + LIBRARY_CLASS = PostCodeLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + MockPostCodeLib.cpp + +[Packages] + MdePkg/MdePkg.dec + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec + +[LibraryClasses] + GoogleTestLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /EHsc From e458087d49b958e60e7c1d386c98d9ed732699e5 Mon Sep 17 00:00:00 2001 From: Oliver Smith-Denny Date: Fri, 8 Nov 2024 15:14:10 -0800 Subject: [PATCH 4/5] Revert "BaseTools: Add Stack Cookie Support to MSVC and GCC IA32, X64, ARM, and AARCH64" This reverts commit 28eb24c962ceda88ec91fa3c98c729652b9a908d. This was upstreamed to edk2 as f53f029122d4493e9db95e2424dd8f067f247661. --- BaseTools/Conf/tools_def.template | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 809c7213fe..f49538f8b9 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -21,7 +21,6 @@ # - Add GCC and GCCNOLTO # - Deprecate GCC48, GCC49 and GCC5. # 3.01 - Update toolchain for VS2022 -# 3.02 - Enable stack cookies for IA32, ARM, and AARCH64 builds for GCC and MSVC # 3.03 - Remove WHOLEARCHIVE as this breaks the build for VS2017/VS2019 (MU_CHANGE) # 3.20 - Move GccLto files to a tools path to be more repository layout agnostic # 3.21 - Can't have comment inline as it breaks concatenation see - # MU_CHANGE - Move GccLto to tools dir for better alignment @@ -644,9 +643,9 @@ NOOPT_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2019_IA32_PP_PATH = DEF(VS2019_BIN_IA32)\cl.exe *_VS2019_IA32_ASM_PATH = DEF(VS2019_BIN_IA32)\ml.exe - DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw -RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od DEBUG_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi RELEASE_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd @@ -674,9 +673,9 @@ NOOPT_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O *_VS2019_X64_DLINK_PATH = DEF(VS2019_BIN_X64)\link.exe *_VS2019_X64_ASLDLINK_PATH = DEF(VS2019_BIN_X64)\link.exe - DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw -RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od DEBUG_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi RELEASE_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd @@ -789,9 +788,9 @@ NOOPT_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2022_IA32_ASM_PATH = DEF(VS2022_BIN_IA32)\ml.exe *_VS2022_IA32_MAKE_FLAGS = /nologo - DEBUG_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw -RELEASE_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + DEBUG_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od DEBUG_VS2022_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi RELEASE_VS2022_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd @@ -819,9 +818,9 @@ NOOPT_VS2022_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O *_VS2022_X64_DLINK_PATH = DEF(VS2022_BIN_X64)\link.exe *_VS2022_X64_ASLDLINK_PATH = DEF(VS2022_BIN_X64)\link.exe - DEBUG_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw -RELEASE_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + DEBUG_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od DEBUG_VS2022_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi RELEASE_VS2022_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd @@ -909,7 +908,7 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_ *_*_*_DTCPP_PATH = DEF(DTCPP_BIN) *_*_*_DTC_PATH = DEF(DTC_BIN) -DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -fstack-protector -mstack-protector-guard=global +DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie DEFINE GCC_LOONGARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access @@ -950,8 +949,8 @@ DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 -DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer -DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON) From 86d984cc5fdcd8a9b77312da0816208bbdb90833 Mon Sep 17 00:00:00 2001 From: Taylor Beebe Date: Fri, 14 Jun 2024 14:09:54 -0700 Subject: [PATCH 5/5] [CHERRY-PICK] BaseTools: Add Stack Cookie Support to MSVC and GCC IA32/X64/ARM/AARCH64 This patch directs MSVC and GCC to build stack cookie support into binaries. Signed-off-by: Oliver Smith-Denny --- BaseTools/Conf/tools_def.template | 63 ++++++++++++++++--------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index f49538f8b9..018c39f351 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -21,6 +21,7 @@ # - Add GCC and GCCNOLTO # - Deprecate GCC48, GCC49 and GCC5. # 3.01 - Update toolchain for VS2022 +# 3.02 - Enable stack cookies for IA32, X64, ARM, and AARCH64 builds for GCC and MSVC # 3.03 - Remove WHOLEARCHIVE as this breaks the build for VS2017/VS2019 (MU_CHANGE) # 3.20 - Move GccLto files to a tools path to be more repository layout agnostic # 3.21 - Can't have comment inline as it breaks concatenation see - # MU_CHANGE - Move GccLto to tools dir for better alignment @@ -643,9 +644,9 @@ NOOPT_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2019_IA32_PP_PATH = DEF(VS2019_BIN_IA32)\cl.exe *_VS2019_IA32_ASM_PATH = DEF(VS2019_BIN_IA32)\ml.exe - DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw -RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + DEBUG_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od DEBUG_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi RELEASE_VS2019_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd @@ -673,9 +674,9 @@ NOOPT_VS2019_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O *_VS2019_X64_DLINK_PATH = DEF(VS2019_BIN_X64)\link.exe *_VS2019_X64_ASLDLINK_PATH = DEF(VS2019_BIN_X64)\link.exe - DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw -RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + DEBUG_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2019_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od DEBUG_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi RELEASE_VS2019_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd @@ -705,9 +706,9 @@ NOOPT_VS2019_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:428 *_VS2019_ARM_ASLPP_PATH = DEF(VS2019_BIN_ARM)\cl.exe *_VS2019_ARM_ASLDLINK_PATH = DEF(VS2019_BIN_ARM)\link.exe - DEBUG_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- -RELEASE_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- -NOOPT_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + DEBUG_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2019_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- DEBUG_VS2019_ARM_ASM_FLAGS = /nologo /g RELEASE_VS2019_ARM_ASM_FLAGS = /nologo @@ -731,9 +732,9 @@ NOOPT_VS2019_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2019_AARCH64_ASLPP_PATH = DEF(VS2019_BIN_AARCH64)\cl.exe *_VS2019_AARCH64_ASLDLINK_PATH = DEF(VS2019_BIN_AARCH64)\link.exe - DEBUG_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- -RELEASE_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- -NOOPT_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + DEBUG_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2019_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- DEBUG_VS2019_AARCH64_ASM_FLAGS = /nologo /g RELEASE_VS2019_AARCH64_ASM_FLAGS = /nologo @@ -788,9 +789,9 @@ NOOPT_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2022_IA32_ASM_PATH = DEF(VS2022_BIN_IA32)\ml.exe *_VS2022_IA32_MAKE_FLAGS = /nologo - DEBUG_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw -RELEASE_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od + DEBUG_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw +RELEASE_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2022_IA32_CC_FLAGS = /nologo /arch:IA32 /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od DEBUG_VS2022_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd /Zi RELEASE_VS2022_IA32_ASM_FLAGS = /nologo /c /WX /W3 /Cx /coff /Zd @@ -818,9 +819,9 @@ NOOPT_VS2022_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /O *_VS2022_X64_DLINK_PATH = DEF(VS2022_BIN_X64)\link.exe *_VS2022_X64_ASLDLINK_PATH = DEF(VS2022_BIN_X64)\link.exe - DEBUG_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw -RELEASE_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw -NOOPT_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od + DEBUG_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw +RELEASE_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw +NOOPT_VS2022_X64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od DEBUG_VS2022_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd /Zi RELEASE_VS2022_X64_ASM_FLAGS = /nologo /c /WX /W3 /Cx /Zd @@ -851,9 +852,9 @@ NOOPT_VS2022_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:428 *_VS2022_ARM_ASLDLINK_PATH = DEF(VS2022_BIN_ARM)\link.exe *_VS2022_ARM_MAKE_FLAGS = /nologo - DEBUG_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- -RELEASE_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- -NOOPT_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + DEBUG_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2022_ARM_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- DEBUG_VS2022_ARM_ASM_FLAGS = /nologo /g RELEASE_VS2022_ARM_ASM_FLAGS = /nologo @@ -878,9 +879,9 @@ NOOPT_VS2022_ARM_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF *_VS2022_AARCH64_ASLDLINK_PATH = DEF(VS2022_BIN_AARCH64)\link.exe *_VS2022_AARCH64_MAKE_FLAGS = /nologo - DEBUG_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- -RELEASE_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- -NOOPT_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- + DEBUG_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gw /Oi- +RELEASE_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw /Oi- +NOOPT_VS2022_AARCH64_CC_FLAGS = /nologo /c /WX /GS /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Od /Oi- DEBUG_VS2022_AARCH64_ASM_FLAGS = /nologo /g RELEASE_VS2022_AARCH64_ASM_FLAGS = /nologo @@ -908,11 +909,13 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink="$(DEBUG_DIR)/$(MODULE_ *_*_*_DTCPP_PATH = DEF(DTCPP_BIN) *_*_*_DTC_PATH = DEF(DTC_BIN) -DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie +# All supported GCC archs except LOONGARCH64 support -mstack-protector-guard=global, so set that on everything except LOONGARCH64 +DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -fstack-protector +DEFINE GCC_IA32_X64_CC_FLAGS = -mstack-protector-guard=global +DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie -mstack-protector-guard=global DEFINE GCC_LOONGARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections DEFINE GCC_ARM_CC_XIPFLAGS = -mno-unaligned-access -DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 +DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 -mstack-protector-guard=global DEFINE GCC_AARCH64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only DEFINE GCC_RISCV64_CC_XIPFLAGS = -mstrict-align -mgeneral-regs-only DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie @@ -949,8 +952,8 @@ DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20 -DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer -DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(GCC_IA32_X64_CC_FLAGS) -m32 -march=i586 -malign-double -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer +DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) DEF(GCC_IA32_X64_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON) @@ -959,7 +962,7 @@ DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS) DEFINE GCC48_ARM_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian DEFINE GCC48_AARCH64_ASM_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian -DEFINE GCC48_ARM_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations +DEFINE GCC48_ARM_CC_FLAGS = $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -mword-relocations DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS) DEFINE GCC48_AARCH64_CC_FLAGS = $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS) DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS)