summaryrefslogtreecommitdiff
path: root/EdkNt32Pkg/Sec
diff options
context:
space:
mode:
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-10-23 01:46:32 +0000
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-10-23 01:46:32 +0000
commit35b309d6a956f9bc5c50b8b59ce578f3925c90d7 (patch)
tree0b92ced3dfcc50ca24db3bdbb6022c42d1d781de /EdkNt32Pkg/Sec
parent6c82102e9ea01685c2420f5e6582db91b6dcf52b (diff)
downloadedk2-platforms-35b309d6a956f9bc5c50b8b59ce578f3925c90d7.tar.xz
Make NT32 SecMain not depend on ReportStatusCodeLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1818 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkNt32Pkg/Sec')
-rw-r--r--EdkNt32Pkg/Sec/SecMain.c63
-rw-r--r--EdkNt32Pkg/Sec/SecMain.msa3
-rw-r--r--EdkNt32Pkg/Sec/SecMain_build.xml8
3 files changed, 63 insertions, 11 deletions
diff --git a/EdkNt32Pkg/Sec/SecMain.c b/EdkNt32Pkg/Sec/SecMain.c
index 3c6f5b0430..167ad50011 100644
--- a/EdkNt32Pkg/Sec/SecMain.c
+++ b/EdkNt32Pkg/Sec/SecMain.c
@@ -422,6 +422,69 @@ Returns:
#define BYTES_PER_RECORD 512
+/**
+ Extracts ASSERT() information from a status code structure.
+
+ Converts the status code specified by CodeType, Value, and Data to the ASSERT()
+ arguments specified by Filename, Description, and LineNumber. If CodeType is
+ an EFI_ERROR_CODE, and CodeType has a severity of EFI_ERROR_UNRECOVERED, and
+ Value has an operation mask of EFI_SW_EC_ILLEGAL_SOFTWARE_STATE, extract
+ Filename, Description, and LineNumber from the optional data area of the
+ status code buffer specified by Data. The optional data area of Data contains
+ a Null-terminated ASCII string for the FileName, followed by a Null-terminated
+ ASCII string for the Description, followed by a 32-bit LineNumber. If the
+ ASSERT() information could be extracted from Data, then return TRUE.
+ Otherwise, FALSE is returned.
+
+ If Data is NULL, then ASSERT().
+ If Filename is NULL, then ASSERT().
+ If Description is NULL, then ASSERT().
+ If LineNumber is NULL, then ASSERT().
+
+ @param CodeType The type of status code being converted.
+ @param Value The status code value being converted.
+ @param Data Pointer to status code data buffer.
+ @param Filename Pointer to the source file name that generated the ASSERT().
+ @param Description Pointer to the description of the ASSERT().
+ @param LineNumber Pointer to source line number that generated the ASSERT().
+
+ @retval TRUE The status code specified by CodeType, Value, and Data was
+ converted ASSERT() arguments specified by Filename, Description,
+ and LineNumber.
+ @retval FALSE The status code specified by CodeType, Value, and Data could
+ not be converted to ASSERT() arguments.
+
+**/
+STATIC
+BOOLEAN
+ReportStatusCodeExtractAssertInfo (
+ IN EFI_STATUS_CODE_TYPE CodeType,
+ IN EFI_STATUS_CODE_VALUE Value,
+ IN CONST EFI_STATUS_CODE_DATA *Data,
+ OUT CHAR8 **Filename,
+ OUT CHAR8 **Description,
+ OUT UINT32 *LineNumber
+ )
+{
+ EFI_DEBUG_ASSERT_DATA *AssertData;
+
+ ASSERT (Data != NULL);
+ ASSERT (Filename != NULL);
+ ASSERT (Description != NULL);
+ ASSERT (LineNumber != NULL);
+
+ if (((CodeType & EFI_STATUS_CODE_TYPE_MASK) == EFI_ERROR_CODE) &&
+ ((CodeType & EFI_STATUS_CODE_SEVERITY_MASK) == EFI_ERROR_UNRECOVERED) &&
+ ((Value & EFI_STATUS_CODE_OPERATION_MASK) == EFI_SW_EC_ILLEGAL_SOFTWARE_STATE)) {
+ AssertData = (EFI_DEBUG_ASSERT_DATA *)(Data + 1);
+ *Filename = (CHAR8 *)(AssertData + 1);
+ *Description = *Filename + AsciiStrLen (*Filename) + 1;
+ *LineNumber = AssertData->LineNumber;
+ return TRUE;
+ }
+ return FALSE;
+}
+
EFI_STATUS
EFIAPI
SecPeiReportStatusCode (
diff --git a/EdkNt32Pkg/Sec/SecMain.msa b/EdkNt32Pkg/Sec/SecMain.msa
index af6a6a615c..f8e8f2d6c8 100644
--- a/EdkNt32Pkg/Sec/SecMain.msa
+++ b/EdkNt32Pkg/Sec/SecMain.msa
@@ -35,9 +35,6 @@
<Keyword>PrintLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
- <Keyword>ReportStatusCodeLib</Keyword>
- </LibraryClass>
- <LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>PcdLib</Keyword>
</LibraryClass>
<LibraryClass Usage="ALWAYS_CONSUMED">
diff --git a/EdkNt32Pkg/Sec/SecMain_build.xml b/EdkNt32Pkg/Sec/SecMain_build.xml
index 5a27f5c1b9..fc26a10779 100644
--- a/EdkNt32Pkg/Sec/SecMain_build.xml
+++ b/EdkNt32Pkg/Sec/SecMain_build.xml
@@ -58,14 +58,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
</GenBuild>
<GenBuild type="build">
<property name="ARCH" value="${ARCH}"/>
- <property name="MODULE_GUID" value="55c61087-7367-4546-bc32-4937c5e6aff3"/>
- <property name="MODULE_VERSION" value=""/>
- <property name="PLATFORM" value="${PLATFORM}"/>
- <property name="PACKAGE_GUID" value="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
- <property name="PACKAGE_VERSION" value=""/>
- </GenBuild>
- <GenBuild type="build">
- <property name="ARCH" value="${ARCH}"/>
<property name="MODULE_GUID" value="9ba1d976-0624-41a3-8650-28165e8d9ae8"/>
<property name="MODULE_VERSION" value=""/>
<property name="PLATFORM" value="${PLATFORM}"/>