mirror of https://github.com/acidanthera/audk.git
GenSec: Support TianoCompress
Allows .fdf files to define a compressed .ffs section which can be read by legacy EFI firmware (such as found on Apple Mac). Use `COMPRESS TIANO`.
This commit is contained in:
parent
ae79fe0dc3
commit
e19d725d4c
|
@ -69,7 +69,7 @@ STATIC CHAR8 *mSectionTypeName[] = {
|
|||
"EFI_SECTION_SMM_DEPEX" // 0x1C
|
||||
};
|
||||
|
||||
STATIC CHAR8 *mCompressionTypeName[] = { "PI_NONE", "PI_STD" };
|
||||
STATIC CHAR8 *mCompressionTypeName[] = { "PI_NONE", "PI_STD", "TIANO" };
|
||||
|
||||
#define EFI_GUIDED_SECTION_NONE 0x80
|
||||
STATIC CHAR8 *mGUIDedSectionAttribue[] = { "NONE", "PROCESSING_REQUIRED", "AUTH_STATUS_VALID"};
|
||||
|
@ -169,7 +169,7 @@ Returns:
|
|||
if -s option is not given, \n\
|
||||
EFI_SECTION_ALL is default section type.\n");
|
||||
fprintf (stdout, " -c [Type], --compress [Type]\n\
|
||||
Compress method type can be PI_NONE or PI_STD.\n\
|
||||
Compress method type can be PI_NONE, PI_STD or TIANO.\n\
|
||||
if -c option is not given, PI_STD is default type.\n");
|
||||
fprintf (stdout, " -g GuidValue, --vendor GuidValue\n\
|
||||
GuidValue is one specific vendor guid value.\n\
|
||||
|
@ -708,6 +708,10 @@ Returns:
|
|||
CompressFunction = (COMPRESS_FUNCTION) EfiCompress;
|
||||
break;
|
||||
|
||||
case TIANO_COMPRESS:
|
||||
CompressFunction = (COMPRESS_FUNCTION) TianoCompress;
|
||||
break;
|
||||
|
||||
default:
|
||||
Error (NULL, 0, 2000, "Invalid parameter", "unknown compression type");
|
||||
free (FileBuffer);
|
||||
|
@ -772,7 +776,7 @@ Returns:
|
|||
memset(CompressionSect2->CommonHeader.Size, 0xff, sizeof(UINT8) * 3);
|
||||
CompressionSect2->CommonHeader.Type = EFI_SECTION_COMPRESSION;
|
||||
CompressionSect2->CommonHeader.ExtendedSize = TotalLength;
|
||||
CompressionSect2->CompressionType = SectCompSubType;
|
||||
CompressionSect2->CompressionType = (SectCompSubType == EFI_NOT_COMPRESSED) ? SectCompSubType : EFI_STANDARD_COMPRESSION;
|
||||
CompressionSect2->UncompressedLength = InputLength;
|
||||
} else {
|
||||
CompressionSect = (EFI_COMPRESSION_SECTION *) FileBuffer;
|
||||
|
@ -781,7 +785,7 @@ Returns:
|
|||
CompressionSect->CommonHeader.Size[0] = (UINT8) (TotalLength & 0xff);
|
||||
CompressionSect->CommonHeader.Size[1] = (UINT8) ((TotalLength & 0xff00) >> 8);
|
||||
CompressionSect->CommonHeader.Size[2] = (UINT8) ((TotalLength & 0xff0000) >> 16);
|
||||
CompressionSect->CompressionType = SectCompSubType;
|
||||
CompressionSect->CompressionType = (SectCompSubType == EFI_NOT_COMPRESSED) ? SectCompSubType : EFI_STANDARD_COMPRESSION;
|
||||
CompressionSect->UncompressedLength = InputLength;
|
||||
}
|
||||
|
||||
|
@ -1665,6 +1669,8 @@ Returns:
|
|||
SectCompSubType = EFI_NOT_COMPRESSED;
|
||||
} else if (stricmp (CompressionName, mCompressionTypeName[EFI_STANDARD_COMPRESSION]) == 0) {
|
||||
SectCompSubType = EFI_STANDARD_COMPRESSION;
|
||||
} else if (stricmp (CompressionName, mCompressionTypeName[TIANO_COMPRESS]) == 0) {
|
||||
SectCompSubType = TIANO_COMPRESS;
|
||||
} else {
|
||||
Error (NULL, 0, 1003, "Invalid option value", "--compress = %s", CompressionName);
|
||||
goto Finish;
|
||||
|
|
|
@ -169,6 +169,7 @@ typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
|
|||
//
|
||||
#define EFI_NOT_COMPRESSED 0x00
|
||||
#define EFI_STANDARD_COMPRESSION 0x01
|
||||
#define TIANO_COMPRESS 0x02
|
||||
//
|
||||
// An encapsulation section type in which the
|
||||
// section data is compressed.
|
||||
|
|
|
@ -26,7 +26,8 @@ class CompressSection (CompressSectionClassObject) :
|
|||
## compress types: PI standard and non PI standard
|
||||
CompTypeDict = {
|
||||
'PI_STD' : 'PI_STD',
|
||||
'PI_NONE' : 'PI_NONE'
|
||||
'PI_NONE' : 'PI_NONE',
|
||||
'TIANO' : 'TIANO',
|
||||
}
|
||||
|
||||
## The constructor
|
||||
|
|
|
@ -2985,7 +2985,7 @@ class FdfParser:
|
|||
|
||||
if self._IsKeyword("COMPRESS"):
|
||||
type = "PI_STD"
|
||||
if self._IsKeyword("PI_STD") or self._IsKeyword("PI_NONE"):
|
||||
if self._IsKeyword("PI_STD") or self._IsKeyword("PI_NONE") or self._IsKeyword("TIANO"):
|
||||
type = self._Token
|
||||
|
||||
if not self._IsToken("{"):
|
||||
|
@ -4054,7 +4054,7 @@ class FdfParser:
|
|||
def _GetRuleEncapsulationSection(self, theRule):
|
||||
if self._IsKeyword("COMPRESS"):
|
||||
Type = "PI_STD"
|
||||
if self._IsKeyword("PI_STD") or self._IsKeyword("PI_NONE"):
|
||||
if self._IsKeyword("PI_STD") or self._IsKeyword("PI_NONE") or self._IsKeyword("TIANO"):
|
||||
Type = self._Token
|
||||
|
||||
if not self._IsToken("{"):
|
||||
|
|
|
@ -184,7 +184,7 @@ COMPAT16\cell \hich\af4\dbch\af31505\loch\f4 EFI_SECTION_COMPATIBILITY16\cell }\
|
|||
SSION, EFI_SECTION_GUID_DEFINED, EFI_SECTION_PE32, EFI_SECTION_PIC, EFI_SECTION_TE, EFI_SECTION_DXE_DEPEX, EFI_SECTION_COMPATIBILITY16, EFI_SECTION_USER_INTERFACE, EFI_SECTION_VERSION, EFI_SECTION_FIRMWARE_VOLUME_IMAGE, EFI_SECTION_RAW, EFI_SECTION_FREEFO
|
||||
\hich\af43\dbch\af31505\loch\f43 R\hich\af43\dbch\af31505\loch\f43 M_SUBTYPE_GUID, EFI_SECTION_PEI_DEPEX. If sectiontype is not given, EFI_SECTION_ALL is default type to contain the input all sections to one section file.
|
||||
\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af43\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid11342878 \hich\af43\dbch\af31505\loch\f43 -c [Type], --compress [Type]
|
||||
\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af43\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11342878 \hich\af43\dbch\af31505\loch\f43 Compress method type can be PI_NONE or PI_STD. If Type is not given, PI_
|
||||
\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af43\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11342878 \hich\af43\dbch\af31505\loch\f43 Compress method type can be PI_NONE, PI_STD or TIANO. If Type is not given, PI_
|
||||
\hich\af43\dbch\af31505\loch\f43 STD is default type.
|
||||
\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af43\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid11342878 \hich\af43\dbch\af31505\loch\f43 -g GuidValue, --vendor GuidValue
|
||||
\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af43\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11342878 \hich\af43\dbch\af31505\loch\f43
|
||||
|
|
Loading…
Reference in New Issue