From: lgao4 Date: Tue, 29 Dec 2009 06:16:53 +0000 (+0000) Subject: Sync tool code to BuildTools project r1783. X-Git-Tag: edk2-stable201903~16698 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=a709adfaf0bebbaf3d989f56b500e3985687d0e3 Sync tool code to BuildTools project r1783. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9623 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib deleted file mode 100644 index 5f149545f6..0000000000 Binary files a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib and /dev/null differ diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib deleted file mode 100644 index d3efae3d88..0000000000 Binary files a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib and /dev/null differ diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/BootSectImage b/BaseTools/Bin/CYGWIN_NT-5.1-i686/BootSectImage new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/BootSectImage @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/BuildEnv b/BaseTools/Bin/CYGWIN_NT-5.1-i686/BuildEnv new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/BuildEnv @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiLdrImage b/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiLdrImage new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiLdrImage @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiRom b/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiRom new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiRom @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenCrc32 b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenCrc32 new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenCrc32 @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex new file mode 100644 index 0000000000..bd3141a758 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/AutoGen/`basename $0`.py $* diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFfs b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFfs new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFfs @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFv b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFv new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFv @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFw b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFw new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFw @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenPage b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenPage new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenPage @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenSec b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenSec new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenSec @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenVtf b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenVtf new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenVtf @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/GnuGenBootSector b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GnuGenBootSector new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/GnuGenBootSector @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/LzmaCompress b/BaseTools/Bin/CYGWIN_NT-5.1-i686/LzmaCompress new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/LzmaCompress @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunBinToolFromBuildDir b/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunBinToolFromBuildDir new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunBinToolFromBuildDir @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunToolFromSource b/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunToolFromSource new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunToolFromSource @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Split b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Split new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Split @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/TianoCompress b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TianoCompress new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/TianoCompress @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/VfrCompile b/BaseTools/Bin/CYGWIN_NT-5.1-i686/VfrCompile new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/VfrCompile @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/VolInfo b/BaseTools/Bin/CYGWIN_NT-5.1-i686/VolInfo new file mode 100644 index 0000000000..4821d24fa7 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/VolInfo @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +#exec `dirname $0`/../../../../C/bin/`basename $0` $* + +TOOL_BASENAME=`basename $0` + +if [ -n "$WORKSPACE" -a -e $WORKSPACE/Conf/BaseToolsCBinaries ] +then + exec $WORKSPACE/Conf/BaseToolsCBinaries/$TOOL_BASENAME +elif [ -n "$WORKSPACE" -a -e $EDK_TOOLS_PATH/Source/C ] +then + if [ ! -e $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME ] + then + echo BaseTools C Tool binary was not found \($TOOL_BASENAME\) + echo You may need to run: + echo " make -C $EDK_TOOLS_PATH/Source/C" + else + exec $EDK_TOOLS_PATH/Source/C/bin/$TOOL_BASENAME $* + fi +elif [ -e `dirname $0`/../../Source/C/bin/$TOOL_BASENAME ] +then + exec `dirname $0`/../../Source/C/bin/$TOOL_BASENAME $* +else + echo Unable to find the real \'$TOOL_BASENAME\' to run + echo This message was printed by + echo " $0" + exit -1 +fi + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py b/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py index 4d91a264ba..6d7aa00c4d 100755 --- a/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py @@ -25,14 +25,15 @@ # import sys import os -import subprocess +import subprocess +import pipes # # Convert using cygpath command line tool # Currently not used, but just in case we need it in the future # def ConvertCygPathToDosViacygpath(CygPath): - p = subprocess.Popen("cygpath -m " + CygPath, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) + p = subprocess.Popen("cygpath -m " + pipes.quote(CygPath), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) return p.stdout.read().strip() # @@ -45,32 +46,36 @@ def ConvertCygPathToDos(CygPath): else: DosPath = CygPath - # need the extra \\ as we are making a string to pass to a command - return DosPath.replace('/','\\\\') + # pipes.quote will add the extra \\ for us. + return DosPath.replace('/','\\') +# we receive our options as a list, but we will be passing them to the shell as a line +# this means we have to requote things as they will get one round of unquoting. +# we can't set "shell=False" because we are running commands from the PATH and +# if you don't use the shell you don't get a PATH search. def main(argv): # use 1st argument as name of tool to call - Command = sys.argv[1] + Command = pipes.quote(sys.argv[1]); ExceptionList = ["/interwork"] for arg in argv: if arg.find('/') == -1: # if we don't need to convert just add to the command line - Command = Command + ' ' + arg + Command = Command + ' ' + pipes.quote(arg) elif arg in ExceptionList: # if it is in the list, then don't do a cygpath # assembler stuff after --apcs has the /. - Command = Command + ' ' + arg + Command = Command + ' ' + pipes.quote(arg) else: if ((arg[0] == '-') and (arg[1] == 'I' or arg[1] == 'i')): CygPath = arg[0] + arg[1] + ConvertCygPathToDos(arg[2:]) else: CygPath = ConvertCygPathToDos(arg) - - Command = Command + ' ' + CygPath + + Command = Command + ' ' + pipes.quote(CygPath) # call the real tool with the converted paths return subprocess.call(Command, shell=True) diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/build b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/build @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc b/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf b/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec b/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec new file mode 100644 index 0000000000..2cb8b86a99 --- /dev/null +++ b/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +#python `dirname $0`/RunToolFromSource.py `basename $0` $* +PYTHONPATH="`dirname $0`/../../Source/Python" \ + python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $* + diff --git a/BaseTools/Bin/Win32/BootSectImage.exe b/BaseTools/Bin/Win32/BootSectImage.exe index a20f3a32ab..454aa34cff 100755 Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ diff --git a/BaseTools/Bin/Win32/EfiLdrImage.exe b/BaseTools/Bin/Win32/EfiLdrImage.exe index 2e3b1023d3..cfa5475d50 100755 Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ diff --git a/BaseTools/Bin/Win32/EfiRom.exe b/BaseTools/Bin/Win32/EfiRom.exe index 413f2bb28d..399b2d8818 100755 Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ diff --git a/BaseTools/Bin/Win32/GenBootSector.exe b/BaseTools/Bin/Win32/GenBootSector.exe index 406f903c9a..e618ad1d7f 100755 Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ diff --git a/BaseTools/Bin/Win32/GenCrc32.exe b/BaseTools/Bin/Win32/GenCrc32.exe index d8185c55de..3e4b5e5a1c 100755 Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ diff --git a/BaseTools/Bin/Win32/GenDepex.exe b/BaseTools/Bin/Win32/GenDepex.exe index ba0bc6c3f7..3959a8048e 100755 Binary files a/BaseTools/Bin/Win32/GenDepex.exe and b/BaseTools/Bin/Win32/GenDepex.exe differ diff --git a/BaseTools/Bin/Win32/GenFds.exe b/BaseTools/Bin/Win32/GenFds.exe index 96572b8fce..65322ef37e 100755 Binary files a/BaseTools/Bin/Win32/GenFds.exe and b/BaseTools/Bin/Win32/GenFds.exe differ diff --git a/BaseTools/Bin/Win32/GenFfs.exe b/BaseTools/Bin/Win32/GenFfs.exe index a479bd8d77..bc3e4476a4 100755 Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ diff --git a/BaseTools/Bin/Win32/GenFv.exe b/BaseTools/Bin/Win32/GenFv.exe index 2281b88a4e..485fa10bbc 100755 Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ diff --git a/BaseTools/Bin/Win32/GenFw.exe b/BaseTools/Bin/Win32/GenFw.exe index cb6f95fec2..724b50170a 100755 Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ diff --git a/BaseTools/Bin/Win32/GenPage.exe b/BaseTools/Bin/Win32/GenPage.exe index 6b64ebc740..0c47f3fc86 100755 Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ diff --git a/BaseTools/Bin/Win32/GenSec.exe b/BaseTools/Bin/Win32/GenSec.exe index c19a2fddc5..62adbfae53 100755 Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ diff --git a/BaseTools/Bin/Win32/GenVtf.exe b/BaseTools/Bin/Win32/GenVtf.exe index 19aa09c4aa..a222d5e6b8 100755 Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ diff --git a/BaseTools/Bin/Win32/LzmaCompress.exe b/BaseTools/Bin/Win32/LzmaCompress.exe index 76c369fa14..b280fb2811 100644 Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ diff --git a/BaseTools/Bin/Win32/Spd2Dec.exe b/BaseTools/Bin/Win32/Spd2Dec.exe index c88b721f02..e1474b6aaf 100755 Binary files a/BaseTools/Bin/Win32/Spd2Dec.exe and b/BaseTools/Bin/Win32/Spd2Dec.exe differ diff --git a/BaseTools/Bin/Win32/Split.exe b/BaseTools/Bin/Win32/Split.exe index 2583f3035e..3e02697d7a 100755 Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ diff --git a/BaseTools/Bin/Win32/TianoCompress.exe b/BaseTools/Bin/Win32/TianoCompress.exe index 65e7b6502d..f9894b0a78 100755 Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ diff --git a/BaseTools/Bin/Win32/Trim.exe b/BaseTools/Bin/Win32/Trim.exe index d99729f1af..9777b80e3f 100755 Binary files a/BaseTools/Bin/Win32/Trim.exe and b/BaseTools/Bin/Win32/Trim.exe differ diff --git a/BaseTools/Bin/Win32/VfrCompile.exe b/BaseTools/Bin/Win32/VfrCompile.exe index bcf7958660..a193e5bc14 100755 Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ diff --git a/BaseTools/Bin/Win32/VolInfo.exe b/BaseTools/Bin/Win32/VolInfo.exe index 116efbdc5b..32e5218b8f 100755 Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ diff --git a/BaseTools/Bin/Win32/build.exe b/BaseTools/Bin/Win32/build.exe index b636e7075f..02827fe1ca 100755 Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ diff --git a/BaseTools/BuildEnv b/BaseTools/BuildEnv index 83e12d7698..768e2d5603 100755 --- a/BaseTools/BuildEnv +++ b/BaseTools/BuildEnv @@ -196,7 +196,7 @@ AddEdkToolsToPath() { CopySingleTemplateFile() { - SRC_FILENAME=BaseTools/Conf/$1.template + SRC_FILENAME=Conf/$1.template DST_FILENAME=Conf/$1.txt if [ -e $WORKSPACE/$DST_FILENAME ] @@ -204,9 +204,9 @@ CopySingleTemplateFile() { return fi - echo "Copying \$WORKSPACE/$SRC_FILENAME" + echo "Copying \$EDK_TOOLS_PATH/$SRC_FILENAME" echo " to \$WORKSPACE/$DST_FILENAME" - SRC_FILENAME=$WORKSPACE/$SRC_FILENAME + SRC_FILENAME=$EDK_TOOLS_PATH/$SRC_FILENAME DST_FILENAME=$WORKSPACE/$DST_FILENAME cp $SRC_FILENAME $DST_FILENAME diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template index 0ce61b7070..a77af551aa 100644 --- a/BaseTools/Conf/build_rule.template +++ b/BaseTools/Conf/build_rule.template @@ -237,6 +237,8 @@ "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS) + "$(OBJCOPY)" --only-keep-debug ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pdb + "$(OBJCOPY)" -S ${dst} "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} @@ -295,7 +297,7 @@ "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff # create symbol file for GDB debug -$(DSYMUTIL) ${src} - GenFw -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff + GenFw --xip -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(CP) ${dst} $(OUTPUT_DIR) $(CP) ${dst} $(BIN_DIR) -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) @@ -408,9 +410,9 @@ otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst} -[Microcode-File] +[Microcode-File.USER_DEFINED, Microcode-File.Microcode] - ?.txt, ?.TXT, ?.Txt, ?.mut + ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc $(OUTPUT_DIR)(+)${s_base}.mcb @@ -497,5 +499,5 @@ "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc - GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) - "$(RC)" (RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst} + GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) + "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst} diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index cbff0b1666..163a35461e 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -94,14 +94,26 @@ DEFINE CYGWIN_BINIA32 = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe DEFINE CYGWIN_BINX64 = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/ DEFINE CYGWIN_BINIPF = c:/cygwin/opt/tiano/gcc/ipf/bin/ia64-pc-elf- +DEFINE GCC44_IA32_PREFIX = /usr/bin/ +#DEFINE GCC44_IA32_PREFIX = ENV(HOME)/programs/gcc/4.4/ia32/ + DEFINE UNIX_IASL_BIN = /usr/bin/iasl #DEFINE UNIX_IASL_BIN = $(HOME)/programs/iasl DEFINE WIN_ASL_BIN_DIR = C:\ASL DEFINE WIN_IASL_BIN = DEF(WIN_ASL_BIN_DIR)\iasl.exe DEFINE WIN_ASL_BIN = DEF(WIN_ASL_BIN_DIR)\asl.exe +DEFINE IASL_FLAGS = DEFINE IASL_OUTFLAGS = -p DEFINE MS_ASL_OUTFLAGS = /Fo= +DEFINE MS_ASL_FLAGS = + +DEFINE DEFAULT_WIN_ASL_BIN = DEF(WIN_IASL_BIN) +DEFINE DEFAULT_WIN_ASL_FLAGS = DEF(IASL_FLAGS) +DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +#DEFINE DEFAULT_WIN_ASL_BIN = DEF(WIN_ASL_BIN) +#DEFINE DEFAULT_WIN_ASL_FLAGS = DEF(MS_ASL_FLAGS) +#DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(MS_ASL_OUTFLAGS) DEFINE MSFT_ASLPP_FLAGS = /nologo /EP /C DEFINE MSFT_ASLCC_FLAGS = /GL- /Y- /TC /Dmain=ReferenceAcpiTable @@ -113,7 +125,7 @@ DEFINE ICC_WIN_ASLDLINK_FLAGS = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYS DEFINE IPHONE_TOOLS = /Developer/Platforms/iPhoneOS.platform/Developer DEFINE RVCT31_TOOLS_PATH = c:/Program Files/ARM/RVCT/Programs/3.1/761/win_32-pentium -DEFINE RVCT31CYGWIN_TOOLS_PATH = /cygdrive/c/Program\ Files/ARM/RVCT/Programs/3.1/761/win_32-pentium +DEFINE RVCT31CYGWIN_TOOLS_PATH = /cygdrive/c/Program Files/ARM/RVCT/Programs/3.1/761/win_32-pentium # Update to the location of the gcc executables DEFINE ARMGCC_BIN = / @@ -223,9 +235,9 @@ DEFINE ARMGCC_BIN = / ################## # ASL definitions ################## -*_VS2003_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_VS2003_*_ASL_FLAGS = -*_VS2003_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_VS2003_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2003_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2003_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_VS2003_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) *_VS2003_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) *_VS2003_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) @@ -375,9 +387,9 @@ RELEASE_VS2003xASL_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OP ################## # ASL definitions ################## -*_VS2005_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_VS2005_*_ASL_FLAGS = -*_VS2005_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_VS2005_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2005_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2005_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_VS2005_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) *_VS2005_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) *_VS2005_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) @@ -619,9 +631,9 @@ RELEASE_VS2005xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF. ################## # ASL definitions ################## -*_VS2005x86_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_VS2005x86_*_ASL_FLAGS = -*_VS2005x86_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_VS2005x86_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_VS2005x86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_VS2005x86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_VS2005x86_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) *_VS2005x86_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) *_VS2005x86_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) @@ -863,9 +875,9 @@ RELEASE_VS2005x86xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:R ################## # ASL definitions ################## -*_DDK3790_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_DDK3790_*_ASL_FLAGS = -*_DDK3790_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_DDK3790_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_DDK3790_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_DDK3790_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_DDK3790_*_ASLCC_FLAGS = DEF(MSFT_ASLCC_FLAGS) *_DDK3790_*_ASLPP_FLAGS = DEF(MSFT_ASLPP_FLAGS) *_DDK3790_*_ASLDLINK_FLAGS = DEF(MSFT_ASLDLINK_FLAGS) @@ -1075,7 +1087,8 @@ DEFINE GCC_ALL_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wal DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency -DEFINE GCC_IA32_X64_DLINK_COMMON = -nostdlib -s --pie --gc-sections +DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie +DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map DEFINE GCC_IPF_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll -static --entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map @@ -1084,6 +1097,20 @@ DEFINE GCC_IPF_SYMRENAME_FLAGS = --redefine-sym memcpy=CopyMem DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h +DEFINE GCC_ASLPP_FLAGS = -x c -E -P +DEFINE GCC_ASLCC_FLAGS = -x c +DEFINE GCC_WINDRES_FLAGS = -J rc -O coff +DEFINE GCC_IA32_RC_FLAGS = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii +DEFINE GCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii +DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 --rename-section .data=.hii + +DEFINE GCC44_ALL_CC_FLAGS = -fshort-wchar -fno-stack-protector -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -ffunction-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings +DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -malign-double -D EFI32 +DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -Wno-address +DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections +DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry ReferenceAcpiTable -u ReferenceAcpiTable +DEFINE GCC44_IA32_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC44_ASM_FLAGS = DEF(GCC_ASM_FLAGS) #################################################################################### # @@ -1093,27 +1120,27 @@ DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DI # UNIXGCC - UNIX GCC # ASL - Intel Linux ACPI Source Language Compiler (iasl) *_UNIXGCC_*_*_FAMILY = GCC -*_UNIXGCC_*_MAKE_PATH = make - -DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie -*_UNIXGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h -*_UNIXGCC_*_DLINK_FLAGS = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -*_UNIXGCC_*_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h -*_UNIXGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h -################## -# ASL definitions -################## +*_UNIXGCC_*_MAKE_PATH = make *_UNIXGCC_*_ASL_PATH = DEF(UNIX_IASL_BIN) -*_UNIXGCC_*_ASL_FLAGS = + +*_UNIXGCC_IA32_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_FLAGS) +*_UNIXGCC_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_FLAGS) +*_UNIXGCC_IA32_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) +*_UNIXGCC_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) +*_UNIXGCC_*_ASM_FLAGS = DEF(GCC_ASM_FLAGS) +*_UNIXGCC_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_UNIXGCC_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_UNIXGCC_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_UNIXGCC_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_UNIXGCC_*_APP_FLAGS = +*_UNIXGCC_*_ASL_FLAGS = DEF(IASL_FLAGS) *_UNIXGCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) -*_UNIXGCC_*_ASLPP_FLAGS = -x c -E -P -*_UNIXGCC_*_ASLCC_FLAGS = -x c -*_UNIXGCC_*_ASLDLINK_FLAGS = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable ################## # IA32 definitions ################## +*_UNIXGCC_IA32_OBJCOPY_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)objcopy *_UNIXGCC_IA32_PP_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc *_UNIXGCC_IA32_CC_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc *_UNIXGCC_IA32_SLINK_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)ar @@ -1123,10 +1150,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_UNIXGCC_IA32_ASLDLINK_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)ld *_UNIXGCC_IA32_ASM_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc *_UNIXGCC_IA32_VFRPP_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc -*_UNIXGCC_IA32_RC_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)windres +*_UNIXGCC_IA32_RC_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)objcopy -*_UNIXGCC_IA32_CC_FLAGS = -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -*_UNIXGCC_IA32_RC_FLAGS = -J rc -O coff +*_UNIXGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_UNIXGCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_UNIXGCC_IA32_OBJCOPY_FLAGS = ################## # X64 definitions @@ -1140,10 +1168,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_UNIXGCC_X64_PP_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc *_UNIXGCC_X64_ASLPP_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc *_UNIXGCC_X64_VFRPP_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc -*_UNIXGCC_X64_RC_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)windres +*_UNIXGCC_X64_RC_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)objcopy -*_UNIXGCC_X64_CC_FLAGS = -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h -mno-red-zone -Wno-address -*_UNIXGCC_X64_RC_FLAGS = -J rc -O coff +*_UNIXGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_UNIXGCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) ################## # IPF definitions @@ -1161,11 +1189,54 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_UNIXGCC_IPF_SYMRENAME_PATH = DEF(UNIXGCC_IPF_PETOOLS_PREFIX)objcopy *_UNIXGCC_IPF_RC_PATH = DEF(UNIXGCC_IPF_PETOOLS_PREFIX)objcopy -*_UNIXGCC_IPF_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h -minline-int-divide-min-latency -*_UNIXGCC_IPF_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll -static --entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -*_UNIXGCC_IPF_OBJCOPY_FLAGS = -I elf64-ia64-little -O efi-bsdrv-ia64 -*_UNIXGCC_IPF_SYMRENAME_FLAGS = --redefine-sym memcpy=CopyMem -*_UNIXGCC_IPF_RC_FLAGS = -I binary -O elf64-ia64 --rename-section .data=.hii +*_UNIXGCC_IPF_CC_FLAGS = DEF(GCC_IPF_CC_FLAGS) +*_UNIXGCC_IPF_DLINK_FLAGS = DEF(GCC_IPF_DLINK_FLAGS) +*_UNIXGCC_IPF_OBJCOPY_FLAGS = DEF(GCC_IPF_OBJCOPY_FLAGS) +*_UNIXGCC_IPF_SYMRENAME_FLAGS = DEF(GCC_IPF_SYMRENAME_FLAGS) +*_UNIXGCC_IPF_RC_FLAGS = DEF(GCC_IPF_RC_FLAGS) + + +#################################################################################### +# +# GCC 4.4 - This configuration is used to compile under Linux to produce +# PE/COFF binaries using GCC 4.4. +# +#################################################################################### +*_GCC44_*_*_FAMILY = GCC + +*_GCC44_*_MAKE_PATH = make +*_GCC44_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC44_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC44_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC44_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC44_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC44_*_APP_FLAGS = +*_GCC44_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC44_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# GCC44 IA32 definitions +################## +*_GCC44_IA32_CC_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_SLINK_PATH = DEF(GCC44_IA32_PREFIX)ar +*_GCC44_IA32_DLINK_PATH = DEF(GCC44_IA32_PREFIX)ld +*_GCC44_IA32_ASLDLINK_PATH = DEF(GCC44_IA32_PREFIX)ld +*_GCC44_IA32_ASM_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_PP_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_VFRPP_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_ASLCC_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_ASLPP_PATH = DEF(GCC44_IA32_PREFIX)gcc +*_GCC44_IA32_RC_PATH = DEF(GCC44_IA32_PREFIX)objcopy +*_GCC44_IA32_OBJCOPY_PATH = DEF(GCC44_IA32_PREFIX)objcopy + +*_GCC44_IA32_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m32 +*_GCC44_IA32_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS) -m elf_i386 +*_GCC44_IA32_ASM_FLAGS = DEF(GCC44_ASM_FLAGS) -m32 --32 -march=i386 +*_GCC44_IA32_CC_FLAGS = DEF(GCC44_IA32_CC_FLAGS) +*_GCC44_IA32_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_FLAGS) -m elf_i386 --oformat=elf32-i386 +*_GCC44_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_GCC44_IA32_OBJCOPY_FLAGS = #################################################################################### # @@ -1178,23 +1249,21 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCC_*_*_DLL = DEF(CYGWIN_BIN) *_CYGGCC_*_MAKE_PATH = DEF(MS_VS_BIN)\nmake.exe - -*_CYGGCC_*_MAKE_FLAGS = /nologo -*_CYGGCC_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h -*_CYGGCC_*_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -*_CYGGCC_*_ASM_FLAGS = -c -x assembler -imacros AutoGen.h -*_CYGGCC_*_APP_FLAGS = -E -x assembler -*_CYGGCC_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h - -################## -# ASL definitions -################## -*_CYGGCC_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_CYGGCC_*_ASL_FLAGS = -*_CYGGCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) -*_CYGGCC_*_ASLPP_FLAGS = -x c -E -P -*_CYGGCC_*_ASLCC_FLAGS = -x c -*_CYGGCC_*_ASLDLINK_FLAGS = -nostdlib -s --pie --gc-sections --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) +*_CYGGCC_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) + +*_CYGGCC_IA32_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_FLAGS) +*_CYGGCC_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_FLAGS) +*_CYGGCC_IA32_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) +*_CYGGCC_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) +*_CYGGCC_*_MAKE_FLAGS = /nologo +*_CYGGCC_*_ASM_FLAGS = DEF(GCC_ASM_FLAGS) +*_CYGGCC_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_CYGGCC_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_CYGGCC_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_CYGGCC_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_CYGGCC_*_APP_FLAGS = +*_CYGGCC_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_CYGGCC_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) ################## # IA32 definitions @@ -1209,10 +1278,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCC_IA32_ASLCC_PATH = DEF(CYGWIN_BINIA32)gcc *_CYGGCC_IA32_ASLPP_PATH = DEF(CYGWIN_BINIA32)gcc *_CYGGCC_IA32_ASLDLINK_PATH = DEF(CYGWIN_BINIA32)ld -*_CYGGCC_IA32_RC_PATH = DEF(CYGWIN_BINIA32)windres +*_CYGGCC_IA32_RC_PATH = DEF(CYGWIN_BINIA32)objcopy -*_CYGGCC_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h -*_CYGGCC_IA32_RC_FLAGS = -J rc -O coff +*_CYGGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_CYGGCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) ################## # X64 definitions @@ -1227,10 +1296,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCC_X64_ASLCC_PATH = DEF(CYGWIN_BINX64)gcc *_CYGGCC_X64_ASLPP_PATH = DEF(CYGWIN_BINX64)gcc *_CYGGCC_X64_ASLDLINK_PATH = DEF(CYGWIN_BINX64)ld -*_CYGGCC_X64_RC_PATH = DEF(CYGWIN_BINX64)windres +*_CYGGCC_X64_RC_PATH = DEF(CYGWIN_BINX64)objcopy -*_CYGGCC_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -mno-red-zone -Wall -Werror -c -include AutoGen.h -D_EFI_P64 -*_CYGGCC_X64_RC_FLAGS = -J rc -O coff +*_CYGGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_CYGGCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) ################## # IPF definitions @@ -1248,11 +1317,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCC_IPF_SYMRENAME_PATH = DEF(CYGWIN_BINIPF)objcopy *_CYGGCC_IPF_RC_PATH = DEF(CYGWIN_BINIPF)objcopy -*_CYGGCC_IPF_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h -minline-int-divide-min-latency -*_CYGGCC_IPF_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll -static --entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -*_CYGGCC_IPF_OBJCOPY_FLAGS = -I elf64-ia64-little -O efi-bsdrv-ia64 -*_CYGGCC_IPF_SYMRENAME_FLAGS = --redefine-sym memcpy=CopyMem -*_CYGGCC_IPF_RC_FLAGS = -I binary -O elf64-ia64 --rename-section .data=.hii +*_CYGGCC_IPF_CC_FLAGS = DEF(GCC_IPF_CC_FLAGS) +*_CYGGCC_IPF_DLINK_FLAGS = DEF(GCC_IPF_DLINK_FLAGS) +*_CYGGCC_IPF_OBJCOPY_FLAGS = DEF(GCC_IPF_OBJCOPY_FLAGS) +*_CYGGCC_IPF_SYMRENAME_FLAGS = DEF(GCC_IPF_SYMRENAME_FLAGS) +*_CYGGCC_IPF_RC_FLAGS = DEF(GCC_IPF_RC_FLAGS) ################## # EBC definitions @@ -1312,10 +1381,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCCxASL_IA32_ASLCC_PATH = DEF(CYGWIN_BINIA32)gcc *_CYGGCCxASL_IA32_ASLPP_PATH = DEF(CYGWIN_BINIA32)gcc *_CYGGCCxASL_IA32_ASLDLINK_PATH = DEF(CYGWIN_BINIA32)ld -*_CYGGCCxASL_IA32_RC_PATH = DEF(CYGWIN_BINIA32)windres +*_CYGGCCxASL_IA32_RC_PATH = DEF(CYGWIN_BINIA32)objcopy -*_CYGGCCxASL_IA32_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h -*_CYGGCCxASL_IA32_RC_FLAGS = -J rc -O coff +*_CYGGCCxASL_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_CYGGCCxASL_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) ################## # X64 definitions @@ -1330,10 +1399,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCCxASL_X64_ASLCC_PATH = DEF(CYGWIN_BINX64)gcc *_CYGGCCxASL_X64_ASLPP_PATH = DEF(CYGWIN_BINX64)gcc *_CYGGCCxASL_X64_ASLDLINK_PATH = DEF(CYGWIN_BINX64)ld -*_CYGGCCxASL_X64_RC_PATH = DEF(CYGWIN_BINX64)windres +*_CYGGCCxASL_X64_RC_PATH = DEF(CYGWIN_BINX64)objcopy -*_CYGGCCxASL_X64_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -mno-red-zone -Wall -Werror -c -include AutoGen.h -D_EFI_P64 -*_CYGGCCxASL_X64_RC_FLAGS = -J rc -O coff +*_CYGGCCxASL_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_CYGGCCxASL_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) ################## # IPF definitions @@ -1351,11 +1420,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_CYGGCCxASL_IPF_SYMRENAME_PATH = DEF(CYGWIN_BINIPF)objcopy *_CYGGCCxASL_IPF_RC_PATH = DEF(CYGWIN_BINIPF)objcopy -*_CYGGCCxASL_IPF_CC_FLAGS = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -Wno-array-bounds -c -include AutoGen.h -minline-int-divide-min-latency -*_CYGGCCxASL_IPF_DLINK_FLAGS = -nostdlib -O2 --gc-sections --dll -static --entry $(IMAGE_ENTRY_POINT) --undefined $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -*_CYGGCCxASL_IPF_OBJCOPY_FLAGS = -I elf64-ia64-little -O efi-bsdrv-ia64 -*_CYGGCCxASL_IPF_SYMRENAME_FLAGS = --redefine-sym memcpy=CopyMem -*_CYGGCCxASL_IPF_RC_FLAGS = -I binary -O elf64-ia64 --rename-section .data=.hii +*_CYGGCCxASL_IPF_CC_FLAGS = DEF(GCC_IPF_CC_FLAGS) +*_CYGGCCxASL_IPF_DLINK_FLAGS = DEF(GCC_IPF_DLINK_FLAGS) +*_CYGGCCxASL_IPF_OBJCOPY_FLAGS = DEF(GCC_IPF_OBJCOPY_FLAGS) +*_CYGGCCxASL_IPF_SYMRENAME_FLAGS = DEF(GCC_IPF_SYMRENAME_FLAGS) +*_CYGGCCxASL_IPF_RC_FLAGS = DEF(GCC_IPF_RC_FLAGS) ################## # EBC definitions @@ -1390,15 +1459,16 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie # ASL definitions ################## *_ELFGCC_*_ASL_PATH = DEF(UNIX_IASL_BIN) -*_ELFGCC_*_ASL_FLAGS = +*_ELFGCC_*_ASL_FLAGS = DEF(IASL_FLAGS) *_ELFGCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) *_ELFGCC_*_ASLPP_FLAGS = -x c -E -P *_ELFGCC_*_ASLCC_FLAGS = -x c -*_ELFGCC_*_ASLDLINK_FLAGS = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable +*_ELFGCC_*_ASLDLINK_FLAGS = DEF(GCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable ################## # IA32 definitions ################## +*_ELFGCC_IA32_OBJCOPY_PATH = DEF(ELFGCC_BIN)/objcopy *_ELFGCC_IA32_CC_PATH = DEF(ELFGCC_BIN)/gcc *_ELFGCC_IA32_SLINK_PATH = DEF(ELFGCC_BIN)/ar *_ELFGCC_IA32_DLINK_PATH = DEF(ELFGCC_BIN)/ld @@ -1414,10 +1484,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_ELFGCC_IA32_SLINK_FLAGS = *_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) #*_ELFGCC_IA32_DLINK_FLAGS = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -*_ELFGCC_IA32_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h +*_ELFGCC_IA32_ASM_FLAGS = -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IA32_PP_FLAGS = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IA32_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h -*_ELFGCC_IA32_RC_FLAGS = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii +*_ELFGCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) +*_ELFGCC_IA32_OBJCOPY_FLAGS = ################## # X64 definitions @@ -1439,7 +1510,7 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_ELFGCC_X64_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_X64_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_X64_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h -*_ELFGCC_X64_RC_FLAGS = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii +*_ELFGCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) ################## # IPF definitions @@ -1461,7 +1532,7 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie *_ELFGCC_IPF_ASM_FLAGS = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IPF_PP_FLAGS = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h *_ELFGCC_IPF_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h -*_ELFGCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 --rename-section .data=.hii +*_ELFGCC_IPF_RC_FLAGS = DEF(GCC_IPF_RC_FLAGS) #################################################################################### # @@ -1485,9 +1556,9 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON = -nostdlib -s --pie ################## # ASL definitions ################## -*_ICC_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_ICC_*_ASL_FLAGS = -*_ICC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_ICC_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_ICC_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_ICC_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_ICC_*_ASLCC_FLAGS = DEF(ICC_WIN_ASLCC_FLAGS) *_ICC_*_ASLPP_FLAGS = DEF(ICC_WIN_ASLPP_FLAGS) *_ICC_*_ASLDLINK_FLAGS = DEF(ICC_WIN_ASLDLINK_FLAGS) @@ -1612,9 +1683,9 @@ RELEASE_ICC_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT ################## # ASL definitions ################## -*_ICCxASL_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_ICCxASL_*_ASL_FLAGS = -*_ICCxASL_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_ICCxASL_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_ICCxASL_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_ICCxASL_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_ICCxASL_*_ASLCC_FLAGS = DEF(ICC_WIN_ASLCC_FLAGS) *_ICCxASL_*_ASLPP_FLAGS = DEF(ICC_WIN_ASLPP_FLAGS) *_ICCxASL_*_ASLDLINK_FLAGS = DEF(ICC_WIN_ASLDLINK_FLAGS) @@ -1740,9 +1811,9 @@ RELEASE_ICCxASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL ################## # ASL definitions ################## -*_ICCx86_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_ICCx86_*_ASL_FLAGS = -*_ICCx86_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_ICCx86_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_ICCx86_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_ICCx86_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_ICCx86_*_ASLCC_FLAGS = DEF(ICC_WIN_ASLCC_FLAGS) *_ICCx86_*_ASLPP_FLAGS = DEF(ICC_WIN_ASLPP_FLAGS) *_ICCx86_*_ASLDLINK_FLAGS = DEF(ICC_WIN_ASLDLINK_FLAGS) @@ -1989,9 +2060,9 @@ RELEASE_ICCx86xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /D ################## # ASL definitions ################## -*_MYTOOLS_*_ASL_PATH = DEF(WIN_IASL_BIN) -*_MYTOOLS_*_ASL_FLAGS = -*_MYTOOLS_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) +*_MYTOOLS_*_ASL_PATH = DEF(DEFAULT_WIN_ASL_BIN) +*_MYTOOLS_*_ASL_FLAGS = DEF(DEFAULT_WIN_ASL_FLAGS) +*_MYTOOLS_*_ASL_OUTFLAGS = DEF(DEFAULT_WIN_ASL_OUTFLAGS) *_MYTOOLS_*_ASLCC_FLAGS = DEF(ICC_WIN_ASLCC_FLAGS) *_MYTOOLS_*_ASLPP_FLAGS = DEF(ICC_WIN_ASLPP_FLAGS) *_MYTOOLS_*_ASLDLINK_FLAGS = DEF(ICC_WIN_ASLDLINK_FLAGS) @@ -2115,10 +2186,11 @@ RELEASE_MYTOOLS_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT *_XCODE32_*_MAKE_PATH = make -# This tool needs to be installed seperatly from Xcode 3.2 -*_XCODE32_*_MTOC_PATH = /Developer/usr/bin/mtoc *_XCODE32_*_DSYMUTIL_PATH = /usr/bin/dsymutil +# This tool needs to be installed seperatly from Xcode 3.2 +*_XCODE32_*_MTOC_PATH = /usr/local/bin/mtoc + DEBUG_XCODE32_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll RELEASE_XCODE32_*_MTOC_FLAGS = -align 0x20 @@ -2136,8 +2208,8 @@ RELEASE_XCODE32_*_MTOC_FLAGS = -align 0x20 *_XCODE32_IA32_ASLPP_PATH = gcc *_XCODE32_IA32_ASLDLINK_PATH = ld - DEBUG_XCODE32_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -slow_stubs -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -RELEASE_XCODE32_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -slow_stubs -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map + DEBUG_XCODE32_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_XCODE32_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_XCODE32_IA32_SLINK_FLAGS = -static -o DEBUG_XCODE32_IA32_ASM_FLAGS = -arch i386 -g RELEASE_XCODE32_IA32_ASM_FLAGS = -arch i386 @@ -2147,7 +2219,7 @@ RELEASE_XCODE32_IA32_ASM_FLAGS = -arch i386 RELEASE_XCODE32_IA32_CC_FLAGS = -arch i386 -Oz -combine -mms-bitfields -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -mdynamic-no-pic -fno-stack-protector *_XCODE32_IA32_ASLCC_FLAGS = -arch i386 -x c -save-temps -g -O0 -mms-bitfields -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -c -include AutoGen.h -mdynamic-no-pic -*_XCODE32_IA32_ASLDLINK_FLAGS = -arch i386 -e _main -preload -segalign 0x20 -slow_stubs -pie -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +*_XCODE32_IA32_ASLDLINK_FLAGS = -arch i386 -e _main -preload -segalign 0x20 -pie -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_XCODE32_IA32_ASLPP_FLAGS = -arch i386 -x c -E *_XCODE32_IA32_ASL_FLAGS = @@ -2166,7 +2238,7 @@ RELEASE_XCODE32_IA32_CC_FLAGS = -arch i386 -Oz -combine -mms-bitfields -fshor *_XCODE32_X64_ASLPP_PATH = gcc *_XCODE32_X64_ASLDLINK_PATH = ld -*_XCODE32_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -slow_stubs -pie -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +*_XCODE32_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_XCODE32_X64_SLINK_FLAGS = -static -o DEBUG_XCODE32_X64_ASM_FLAGS = -arch x86_64 -g @@ -2185,7 +2257,6 @@ RELEASE_XCODE32_X64_CC_FLAGS = -arch x86_64 -Oz -combine -mms-bitfields -fshor *_XCODE32_ARM_ARCHASM_FLAGS = -arch armv6 *_XCODE32_ARM_ARCHDLINK_FLAGS = -arch armv6 *_XCODE32_ARM_PLATFORM_FLAGS = -*_XCODE32_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib *_XCODE32_ARM_CC_PATH = DEF(IPHONE_TOOLS)/usr/bin/gcc *_XCODE32_ARM_SLINK_PATH = DEF(IPHONE_TOOLS)/usr/bin/libtool @@ -2194,8 +2265,8 @@ RELEASE_XCODE32_X64_CC_FLAGS = -arch x86_64 -Oz -combine -mms-bitfields -fshor *_XCODE32_ARM_PP_PATH = DEF(IPHONE_TOOLS)/usr/bin/gcc *_XCODE32_ARM_VFRPP_PATH = DEF(IPHONE_TOOLS)/usr/bin/gcc - DEBUG_XCODE32_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -slow_stubs -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map ENV(EDK_TOOLS_PATH)/Bin/Darwin-i386/ARM/DEBUG_XCODE32/$(INTRINSIC_FLAGS) -RELEASE_XCODE32_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -slow_stubs -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map ENV(EDK_TOOLS_PATH)/Bin/Darwin-i386/ARM/RELEASE_XCODE32/$(INTRINSIC_FLAGS) + DEBUG_XCODE32_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_XCODE32_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x220 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_XCODE32_ARM_SLINK_FLAGS = -static -o @@ -2224,10 +2295,9 @@ RELEASE_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-inter *_RVCT31_ARM_ARCHASM_FLAGS = --cpu ARM1176JZF-S *_RVCT31_ARM_ARCHDLINK_FLAGS = *_RVCT31_ARM_PLATFORM_FLAGS = -*_RVCT31_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib - DEBUG_RVCT31_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map ENV(EDK_TOOLS_PATH)/Bin/Win32/ARM/DEBUG_RVCT31/$(INTRINSIC_FLAGS) -RELEASE_RVCT31_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map ENV(EDK_TOOLS_PATH)/Bin/Win32/ARM/RELEASE_RVCT31/$(INTRINSIC_FLAGS) + DEBUG_RVCT31_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map +RELEASE_RVCT31_ARM_DLINK_FLAGS = $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list $(DEST_DIR_DEBUG)/$(BASE_NAME).map *_RVCT31_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) --apcs /interwork @@ -2275,10 +2345,9 @@ RELEASE_RVCT31_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --c90 -c --no_a *_RVCT31CYGWIN_ARM_ARCHASM_FLAGS = --cpu ARM1176JZF-S *_RVCT31CYGWIN_ARM_ARCHDLINK_FLAGS = *_RVCT31CYGWIN_ARM_PLATFORM_FLAGS = -*_RVCT31CYGWIN_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib - DEBUG_RVCT31CYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` ENV(EDK_TOOLS_PATH)/Bin/CYGWIN_NT-5.1-i686/ARM/DEBUG_RVCT31CYGWIN/$(INTRINSIC_FLAGS) -RELEASE_RVCT31CYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` ENV(EDK_TOOLS_PATH)/Bin/CYGWIN_NT-5.1-i686/ARM/DEBUG_RVCT31CYGWIN/$(INTRINSIC_FLAGS) + DEBUG_RVCT31CYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` +RELEASE_RVCT31CYGWIN_ARM_DLINK_FLAGS = "$(DLINKPATH_FLAG)" $(ARCHDLINK_FLAGS) --entry $(IMAGE_ENTRY_POINT) --ro-base 0 --no_scanlib --reloc --no_exceptions --datacompressor off --strict --symbols --map --list `cygpath -m $(DEST_DIR_DEBUG)/$(BASE_NAME).map` *_RVCT31CYGWIN_ARM_ASM_FLAGS = "$(ASMPATH_FLAG)" $(ARCHASM_FLAGS) --apcs /interwork *_RVCT31CYGWIN_ARM_PP_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E @@ -2313,11 +2382,11 @@ RELEASE_RVCT31CYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM # ASL definitions ################## *_ARMGCC_*_ASL_PATH = DEF(UNIX_IASL_BIN) -*_ARMGCCC_*_ASL_FLAGS = +*_ARMGCC_*_ASL_FLAGS = DEF(IASL_FLAGS) *_ARMGCC_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) *_ARMGCC_*_ASLPP_FLAGS = -x c -E -P *_ARMGCC_*_ASLCC_FLAGS = -x c -*_ARMGCC_*_ASLDLINK_FLAGS = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable +*_ARMGCC_*_ASLDLINK_FLAGS = DEF(GCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable ################## # ARM definitions @@ -2341,7 +2410,6 @@ RELEASE_RVCT31CYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM *_ARMGCC_ARM_ARCHASM_FLAGS = *_ARMGCC_ARM_ARCHDLINK_FLAGS = *_ARMGCC_ARM_PLATFORM_FLAGS = -*_ARMGCC_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib DEBUG_ARMGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) -mlittle-endian -g RELEASE_ARMGCC_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) -mlittle-endian diff --git a/BaseTools/Source/C/Common/BasePeCoff.c b/BaseTools/Source/C/Common/BasePeCoff.c index 0166c22460..5ffb5d4503 100644 --- a/BaseTools/Source/C/Common/BasePeCoff.c +++ b/BaseTools/Source/C/Common/BasePeCoff.c @@ -1173,6 +1173,9 @@ Returns: ImageContext->PdbPointer = (CHAR8 *) ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY); break; + case CODEVIEW_SIGNATURE_MTOC: + ImageContext->PdbPointer = (CHAR8 *) ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY); + default: break; } @@ -1377,6 +1380,8 @@ PeCoffLoaderGetPdbPointer ( return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY)); case CODEVIEW_SIGNATURE_RSDS: return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY)); + case CODEVIEW_SIGNATURE_MTOC: + return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY)); default: break; } @@ -1386,3 +1391,50 @@ PeCoffLoaderGetPdbPointer ( return NULL; } + + +RETURN_STATUS +EFIAPI +PeCoffLoaderGetEntryPoint ( + IN VOID *Pe32Data, + OUT VOID **EntryPoint, + OUT VOID **BaseOfImage + ) +{ + EFI_IMAGE_DOS_HEADER *DosHdr; + EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr; + + DosHdr = (EFI_IMAGE_DOS_HEADER *)Pe32Data; + if (DosHdr->e_magic == EFI_IMAGE_DOS_SIGNATURE) { + // + // DOS image header is present, so read the PE header after the DOS image header. + // + Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff)); + } else { + // + // DOS image header is not present, so PE header is at the image base. + // + Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)Pe32Data; + } + + // + // Calculate the entry point relative to the start of the image. + // AddressOfEntryPoint is common for PE32 & PE32+ + // + if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) { + *BaseOfImage = (VOID *)(UINTN)(Hdr.Te->ImageBase + Hdr.Te->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER)); + *EntryPoint = (VOID *)((UINTN)*BaseOfImage + (Hdr.Te->AddressOfEntryPoint & 0x0ffffffff) + sizeof(EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize); + return RETURN_SUCCESS; + } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) { + *EntryPoint = (VOID *)(UINTN)Hdr.Pe32->OptionalHeader.AddressOfEntryPoint; + if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { + *BaseOfImage = (VOID *)(UINTN)Hdr.Pe32->OptionalHeader.ImageBase; + } else { + *BaseOfImage = (VOID *)(UINTN)Hdr.Pe32Plus->OptionalHeader.ImageBase; + } + *EntryPoint = (VOID *)(UINTN)((UINTN)*EntryPoint + (UINTN)*BaseOfImage); + return RETURN_SUCCESS; + } + + return RETURN_UNSUPPORTED; +} diff --git a/BaseTools/Source/C/Common/FvLib.c b/BaseTools/Source/C/Common/FvLib.c index dc50e877e6..a6f17e17a8 100644 --- a/BaseTools/Source/C/Common/FvLib.c +++ b/BaseTools/Source/C/Common/FvLib.c @@ -110,6 +110,7 @@ Returns: } *FvHeader = mFvHeader; + *FvLength = mFvLength; return EFI_SUCCESS; } @@ -200,7 +201,7 @@ Returns: // // Get next file, compensate for 8 byte alignment if necessary. // - *NextFile = (EFI_FFS_FILE_HEADER *) (((UINTN) CurrentFile + GetLength (CurrentFile->Size) + 0x07) & (-1 << 3)); + *NextFile = (EFI_FFS_FILE_HEADER *) ((((UINTN) CurrentFile - (UINTN) mFvHeader + GetLength (CurrentFile->Size) + 0x07) & (-1 << 3)) + (UINT8 *) mFvHeader); // // Verify file is in this FV. diff --git a/BaseTools/Source/C/Common/ParseInf.c b/BaseTools/Source/C/Common/ParseInf.c index b39c5bde40..cd10da9b2d 100644 --- a/BaseTools/Source/C/Common/ParseInf.c +++ b/BaseTools/Source/C/Common/ParseInf.c @@ -506,7 +506,7 @@ Returns: // Verify string is a hex number // for (Index = 2; Index < strlen (AsciiString); Index++) { - if (isxdigit (AsciiString[Index]) == 0) { + if (isxdigit ((int)AsciiString[Index]) == 0) { return EFI_ABORTED; } } @@ -536,7 +536,7 @@ Returns: // Verify string is a number // for (Index = 0; Index < strlen (AsciiString); Index++) { - if (isdigit (AsciiString[Index]) == 0) { + if (isdigit ((int)AsciiString[Index]) == 0) { return EFI_ABORTED; } } diff --git a/BaseTools/Source/C/Common/PeCoffLib.h b/BaseTools/Source/C/Common/PeCoffLib.h index fc2e4cafc9..077a66c5d7 100644 --- a/BaseTools/Source/C/Common/PeCoffLib.h +++ b/BaseTools/Source/C/Common/PeCoffLib.h @@ -134,4 +134,14 @@ PeCoffLoaderGetPdbPointer ( IN VOID *Pe32Data ) ; + +RETURN_STATUS +EFIAPI +PeCoffLoaderGetEntryPoint ( + IN VOID *Pe32Data, + OUT VOID **EntryPoint, + OUT VOID **BaseOfImage + ) +; + #endif diff --git a/BaseTools/Source/C/Common/SimpleFileParsing.c b/BaseTools/Source/C/Common/SimpleFileParsing.c index 5a7111c8eb..68cdc630c1 100644 --- a/BaseTools/Source/C/Common/SimpleFileParsing.c +++ b/BaseTools/Source/C/Common/SimpleFileParsing.c @@ -328,7 +328,7 @@ Notes: } if ((Len = t_strcmp (mGlobals.SourceFile.FileBufferPtr, Str)) > 0) { - if (isalnum (mGlobals.SourceFile.FileBufferPtr[Len])) { + if (isalnum ((int)mGlobals.SourceFile.FileBufferPtr[Len])) { return FALSE; } @@ -543,26 +543,26 @@ Returns: return FALSE; } - if (isdigit (mGlobals.SourceFile.FileBufferPtr[0])) { + if (isdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) { // // Check for hex value // if ((mGlobals.SourceFile.FileBufferPtr[0] == T_CHAR_0) && (mGlobals.SourceFile.FileBufferPtr[1] == T_CHAR_LC_X)) { - if (!isxdigit (mGlobals.SourceFile.FileBufferPtr[2])) { + if (!isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[2])) { return FALSE; } mGlobals.SourceFile.FileBufferPtr += 2; sscanf (mGlobals.SourceFile.FileBufferPtr, "%x", &Val); *Value = (UINT32) Val; - while (isxdigit (mGlobals.SourceFile.FileBufferPtr[0])) { + while (isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) { mGlobals.SourceFile.FileBufferPtr++; } return TRUE; } else { *Value = atoi (mGlobals.SourceFile.FileBufferPtr); - while (isdigit (mGlobals.SourceFile.FileBufferPtr[0])) { + while (isdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) { mGlobals.SourceFile.FileBufferPtr++; } @@ -1239,7 +1239,7 @@ GetHexChars ( UINT32 Len; Len = 0; while (!EndOfFile (&mGlobals.SourceFile) && (BufferLen > 0)) { - if (isxdigit (mGlobals.SourceFile.FileBufferPtr[0])) { + if (isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) { *Buffer = mGlobals.SourceFile.FileBufferPtr[0]; Buffer++; Len++; diff --git a/BaseTools/Source/C/Common/StringFuncs.c b/BaseTools/Source/C/Common/StringFuncs.c index b0ad2d165e..f65ba96661 100644 --- a/BaseTools/Source/C/Common/StringFuncs.c +++ b/BaseTools/Source/C/Common/StringFuncs.c @@ -87,7 +87,7 @@ Returns: // // Remove leading whitespace // - for (Pos = String; isspace (*Pos); Pos++) { + for (Pos = String; isspace ((int)*Pos); Pos++) { } if (Pos != String) { memmove (String, Pos, strlen (Pos) + 1); @@ -114,7 +114,7 @@ Returns: // Remove trailing whitespace // for (Pos = String + strlen (String); - ((Pos - 1) >= String) && (isspace (*(Pos - 1))); + ((Pos - 1) >= String) && (isspace ((int)*(Pos - 1))); Pos-- ) { } @@ -160,12 +160,12 @@ Returns: Output = NewStringList (); for (Pos = String, Item = 0; Pos < EndOfString; Item++) { - while (isspace (*Pos)) { + while (isspace ((int)*Pos)) { Pos++; } for (EndOfSubString=Pos; - (*EndOfSubString != '\0') && !isspace (*EndOfSubString); + (*EndOfSubString != '\0') && !isspace ((int)*EndOfSubString); EndOfSubString++ ) { } diff --git a/BaseTools/Source/C/EfiRom/EfiRom.h b/BaseTools/Source/C/EfiRom/EfiRom.h index 2689c2293c..65c77c4034 100644 --- a/BaseTools/Source/C/EfiRom/EfiRom.h +++ b/BaseTools/Source/C/EfiRom/EfiRom.h @@ -1,13 +1,13 @@ /** @file -Copyright (c) 1999 - 2008 Intel Corporation. All rights reserved -This software and associated documentation (if any) is furnished -under a license and may only be used or copied in accordance -with the terms of the license. Except as permitted by such -license, no part of this software or documentation may be -reproduced, stored in a retrieval system, or transmitted in any -form or by any means without the express written consent of -Intel Corporation. +Copyright (c) 1999-2008 Intel Corporation. All rights reserved +This program and the accompanying materials are licensed and made available +under the terms and conditions of the BSD License which accompanies this +distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: diff --git a/BaseTools/Source/C/GenFv/GenFv.c b/BaseTools/Source/C/GenFv/GenFv.c index f2ff2d29cd..135c9ed23f 100644 --- a/BaseTools/Source/C/GenFv/GenFv.c +++ b/BaseTools/Source/C/GenFv/GenFv.c @@ -134,11 +134,11 @@ Returns: fprintf (stdout, " -m logfile, --map logfile\n\ Logfile is the output fv map file name. if it is not\n\ given, the FvName.map will be the default map file name\n"); - fprintf (stdout, " -g Guid, --guid GuidValue\n\ + fprintf (stdout, " -g Guid, --guid Guid\n\ GuidValue is one specific capsule guid value\n\ or fv file system guid value.\n\ Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n"); - fprintf (stdout, " --FvNameGuid GuidValue is the Fv Name Guid value.\n\ + fprintf (stdout, " --FvNameGuid Guid Guid is used to specify Fv Name.\n\ Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n"); fprintf (stdout, " --capflag CapFlag Capsule Reset Flag can be PersistAcrossReset,\n\ or PopulateSystemTable or InitiateReset or not set\n"); diff --git a/BaseTools/Source/C/GenFv/GenFvInternalLib.c b/BaseTools/Source/C/GenFv/GenFvInternalLib.c index 6b5d6bda2a..d17a2ff1a8 100644 --- a/BaseTools/Source/C/GenFv/GenFvInternalLib.c +++ b/BaseTools/Source/C/GenFv/GenFvInternalLib.c @@ -2975,7 +2975,7 @@ Returns: return EFI_OUT_OF_RESOURCES; } memset ((VOID *) MemoryImagePointer, 0, (UINTN) ImageContext.ImageSize + ImageContext.SectionAlignment); - ImageContext.ImageAddress = ((UINTN) MemoryImagePointer + ImageContext.SectionAlignment - 1) & (~(ImageContext.SectionAlignment - 1)); + ImageContext.ImageAddress = ((UINTN) MemoryImagePointer + ImageContext.SectionAlignment - 1) & (~((INT64)ImageContext.SectionAlignment - 1)); Status = PeCoffLoaderLoadImage (&ImageContext); if (EFI_ERROR (Status)) { diff --git a/BaseTools/Source/C/GenFw/GenFw.c b/BaseTools/Source/C/GenFw/GenFw.c index e72f052869..aabd143b6a 100644 --- a/BaseTools/Source/C/GenFw/GenFw.c +++ b/BaseTools/Source/C/GenFw/GenFw.c @@ -77,6 +77,7 @@ Abstract: #define FW_MERGE_IMAGE 8 #define FW_RELOC_STRIPEED_IMAGE 9 #define FW_HII_PACKAGE_LIST_RCIMAGE 10 +#define FW_HII_PACKAGE_LIST_BINIMAGE 11 #define DUMP_TE_HEADER 0x11 @@ -198,10 +199,10 @@ Returns: fprintf (stdout, " -o FileName, --outputfile FileName\n\ File will be created to store the ouput content.\n"); fprintf (stdout, " -e EFI_FILETYPE, --efiImage EFI_FILETYPE\n\ - Create Efi Image. EFI_FILETYPE is one of BASE, SEC,\n\ + Create Efi Image. EFI_FILETYPE is one of BASE,SMM_CORE,\n\ PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, UEFI_APPLICATION,\n\ - DXE_SAL_DRIVER, UEFI_DRIVER, DXE_RUNTIME_DRIVER, \n\ - DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER, \n\ + SEC, DXE_SAL_DRIVER, UEFI_DRIVER, DXE_RUNTIME_DRIVER,\n\ + DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER,\n\ PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER,\n\ APPLICATION, SAL_RT_DRIVER to support all module types\n\ It can only be used together with --keepexceptiontable,\n\ @@ -235,7 +236,7 @@ Returns: except for -o, -r option. It is a action option.\n\ If it is combined with other action options, the later\n\ input action option will override the previous one.\n");; - fprintf (stdout, " -l, --stripped Relocation info stripped from the input PE or TE image.\n\ + fprintf (stdout, " -l, --stripped Strip off the relocation info from PE or TE image.\n\ It can't be combined with other action options\n\ except for -o, -r option. It is a action option.\n\ If it is combined with other action options, the later\n\ @@ -272,7 +273,7 @@ Returns: If more input files are specified,\n\ the last input file will be as the output file.\n"); fprintf (stdout, " -g HiiPackageListGuid, --hiiguid HiiPackageListGuid\n\ - HiiListPackageGuidGuid is from the module guid.\n\ + Guid is used to specify hii package list guid.\n\ Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\ If not specified, the first Form FormSet guid is used.\n"); fprintf (stdout, " --hiipackage Combine all input binary hii pacakges into \n\ @@ -281,6 +282,12 @@ Returns: except for -o option. It is a action option.\n\ If it is combined with other action options, the later\n\ input action option will override the previous one.\n"); + fprintf (stdout, " --hiibinpackage Combine all input binary hii pacakges into \n\ + a single package list as the binary resource section.\n\ + It can't be combined with other action options\n\ + except for -o option. It is a action option.\n\ + If it is combined with other action options, the later\n\ + input action option will override the previous one.\n"); fprintf (stdout, " -v, --verbose Turn on verbose output with informational messages.\n"); fprintf (stdout, " -q, --quiet Disable all messages except key message and fatal error\n"); fprintf (stdout, " -d, --debug level Enable debug messages, at input debug level.\n"); @@ -501,12 +508,6 @@ UINT32 DataOffset; UINT32 HiiRsrcOffset; UINT32 RelocOffset; -// -// HiiBinData -// -UINT8* HiiBinData = NULL; -UINT32 HiiBinSize = 0; - EFI_IMAGE_BASE_RELOCATION *CoffBaseRel; UINT16 *CoffEntryRel; @@ -628,122 +629,60 @@ CreateSectionHeader( } VOID -GetBinaryHiiData ( - CHAR8 *RcString, - UINT32 Size, +SetHiiResourceHeader ( + UINT8 *HiiBinData, UINT32 OffsetToFile ) { - unsigned Data16; - UINT32 HiiBinOffset; UINT32 Index; EFI_IMAGE_RESOURCE_DIRECTORY *ResourceDirectory; EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *ResourceDirectoryEntry; EFI_IMAGE_RESOURCE_DIRECTORY_STRING *ResourceDirectoryString; EFI_IMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry; - Index = 0; - while (Index < Size && *RcString != '\0' && *RcString != '{') { - RcString ++; - Index ++; - } - - if (*RcString == '\0' || Index == Size) { - return; - } - - // - // Skip '{' character - // Skip space and ',' character - // - RcString ++; - Index ++; - while (Index < Size && *RcString != '\0' && (isspace (*RcString) || *RcString == ',')){ - RcString ++; - Index ++; - } - - // - // '}' end character - // - if (*RcString == '}' || Index == Size) { - return; - } - - HiiBinOffset = 0; - HiiBinSize = 0x1000; - HiiBinData = (UINT8 *) malloc (HiiBinSize); - if (HiiBinData == NULL) { - return; - } - memset (HiiBinData, 0, HiiBinSize); // // Fill Resource section entry // - ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + HiiBinOffset); - HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY); - ResourceDirectory->NumberOfNamedEntries = 1; - - ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiBinData + HiiBinOffset); - HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY); - ResourceDirectoryEntry->u1.s.NameIsString = 1; - ResourceDirectoryEntry->u1.s.NameOffset = HiiBinOffset; + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData); + ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1); + for (Index = 0; Index < ResourceDirectory->NumberOfNamedEntries; Index ++) { + if (ResourceDirectoryEntry->u1.s.NameIsString) { + ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiBinData + ResourceDirectoryEntry->u1.s.NameOffset); - ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiBinData + HiiBinOffset); - ResourceDirectoryString->Length = 3; - ResourceDirectoryString->String[0] =L'H'; - ResourceDirectoryString->String[1] =L'I'; - ResourceDirectoryString->String[2] =L'I'; - HiiBinOffset = HiiBinOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]); + if (ResourceDirectoryString->Length == 3 && + ResourceDirectoryString->String[0] == L'H' && + ResourceDirectoryString->String[1] == L'I' && + ResourceDirectoryString->String[2] == L'I') { + // + // Resource Type "HII" found + // + if (ResourceDirectoryEntry->u2.s.DataIsDirectory) { + // + // Move to next level - resource Name + // + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + ResourceDirectoryEntry->u2.s.OffsetToDirectory); + ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1); - ResourceDirectoryEntry->u2.OffsetToData = HiiBinOffset; - ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiBinData + HiiBinOffset); - HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY); - ResourceDataEntry->OffsetToData = OffsetToFile + HiiBinOffset; + if (ResourceDirectoryEntry->u2.s.DataIsDirectory) { + // + // Move to next level - resource Language + // + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + ResourceDirectoryEntry->u2.s.OffsetToDirectory); + ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1); + } + } - while (sscanf (RcString, "0x%X", &Data16) != EOF) { - // - // Convert the string data to the binary data. - // - *(UINT16 *)(HiiBinData + HiiBinOffset) = (UINT16) Data16; - HiiBinOffset += 2; - // - // Jump to the next data. - // - RcString = RcString + 2 + 4; - Index = Index + 2 + 4; - // - // Skip space and ',' character - // - while (Index < Size && *RcString != '\0' && (isspace (*RcString) || *RcString == ',')){ - RcString ++; - Index ++; - } - // - // '}' end character - // - if (*RcString == '}'|| Index == Size) { - break; - } - // - // Check BinBuffer size - // - if (HiiBinOffset >= HiiBinSize) { - HiiBinSize += 0x1000; - HiiBinData = (UINT8 *) realloc (HiiBinData, HiiBinSize); - // - // Memory allocation is failure. - // - if (HiiBinData == NULL) { - HiiBinSize = 0; - break; + // + // Now it ought to be resource Data and update its OffsetToData value + // + if (!ResourceDirectoryEntry->u2.s.DataIsDirectory) { + ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiBinData + ResourceDirectoryEntry->u2.OffsetToData); + ResourceDataEntry->OffsetToData = ResourceDataEntry->OffsetToData + OffsetToFile; + break; + } } } - } - - if (HiiBinData != NULL) { - HiiBinSize = HiiBinOffset; - ResourceDataEntry->Size = HiiBinSize + OffsetToFile - ResourceDataEntry->OffsetToData; + ResourceDirectoryEntry++; } return; @@ -867,10 +806,11 @@ ScanSections( Error (NULL, 0, 3000, "Invalid", "Unsupported section alignment."); } } - GetBinaryHiiData ((CHAR8*)Ehdr + shdr->sh_offset, shdr->sh_size, HiiRsrcOffset); - if (HiiBinSize != 0) { - CoffOffset += HiiBinSize; + if (shdr->sh_size != 0) { + CoffSectionsOffset[i] = CoffOffset; + CoffOffset += shdr->sh_size; CoffOffset = CoffAlign(CoffOffset); + SetHiiResourceHeader ((UINT8*) Ehdr + shdr->sh_offset, HiiRsrcOffset); } break; } @@ -972,13 +912,8 @@ ScanSections( EFI_IMAGE_SCN_CNT_INITIALIZED_DATA | EFI_IMAGE_SCN_MEM_READ); - NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = HiiBinSize; + NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = RelocOffset - HiiRsrcOffset; NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = HiiRsrcOffset; - - memcpy(CoffFile + HiiRsrcOffset, HiiBinData, HiiBinSize); - free (HiiBinData); - HiiBinData = NULL; - HiiBinSize = 0; } else { // Don't make a section of size 0. NtHdr->Pe32.FileHeader.NumberOfSections--; @@ -1398,6 +1333,7 @@ ConvertElf ( // WriteSections(IsTextShdr); WriteSections(IsDataShdr); + WriteSections(IsHiiRsrcShdr); VerboseMsg ("Write and relocate sections."); // @@ -1430,6 +1366,279 @@ ConvertElf ( } } + +EFI_IMAGE_OPTIONAL_HEADER_UNION * +GetPeCoffHeader ( + void *Data + ) +{ + EFI_IMAGE_DOS_HEADER *DosHdr; + EFI_IMAGE_OPTIONAL_HEADER_UNION *PeHdr; + + // + // Read the dos & pe hdrs of the image + // + DosHdr = (EFI_IMAGE_DOS_HEADER *)Data; + if (DosHdr->e_magic != EFI_IMAGE_DOS_SIGNATURE) { + // NO DOS header, check for PE/COFF header + PeHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(Data); + if (PeHdr->Pe32.Signature != EFI_IMAGE_NT_SIGNATURE) { + return NULL; + } + } else { + + PeHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(((UINT8 *)Data) + DosHdr->e_lfanew); + if (PeHdr->Pe32.Signature != EFI_IMAGE_NT_SIGNATURE) { + return NULL; + } + } + + return PeHdr; +} + +void +PeCoffConvertImageToXip ( + UINT8 **FileBuffer, + UINT32 *FileLength + ) +{ + EFI_IMAGE_OPTIONAL_HEADER_UNION *PeHdr; + EFI_IMAGE_OPTIONAL_HEADER_UNION *NewPeHdr; + EFI_IMAGE_SECTION_HEADER *SectionHeader; + UINTN TotalNecessaryFileSize; + UINTN SectionSize; + UINT8 *XipFile; + UINT32 XipLength; + UINTN Index; + UINTN FirstSectionOffset; + BOOLEAN ConversionNeeded; + + PeHdr = GetPeCoffHeader ((void *) *FileBuffer); + if (PeHdr == NULL) { + return; + } + + if (PeHdr->Pe32.OptionalHeader.SectionAlignment != PeHdr->Pe32.OptionalHeader.FileAlignment) { + // + // The only reason to expand zero fill sections is to make them compatible with XIP images. + // If SectionAlignment is not equal to FileAlginment then it is not an XIP type image. + // + return; + } + + // + // Calculate size of XIP file, and determine if the conversion is needed. + // + ConversionNeeded = FALSE; + XipLength = 0; + FirstSectionOffset = *FileLength; + TotalNecessaryFileSize = 0; + SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(PeHdr->Pe32.OptionalHeader) + PeHdr->Pe32.FileHeader.SizeOfOptionalHeader); + for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index ++, SectionHeader ++) { + SectionSize = MAX (SectionHeader->Misc.VirtualSize, SectionHeader->SizeOfRawData); + TotalNecessaryFileSize += SectionSize; + if (SectionSize > 0) { + FirstSectionOffset = MIN (FirstSectionOffset, SectionHeader->VirtualAddress); + XipLength = MAX (XipLength, SectionHeader->VirtualAddress + SectionSize); + if (SectionHeader->VirtualAddress != SectionHeader->PointerToRawData) { + ConversionNeeded = TRUE; + } + } + if (SectionHeader->Misc.VirtualSize > SectionHeader->SizeOfRawData) { + ConversionNeeded = TRUE; + } + } + + if (FirstSectionOffset < PeHdr->Pe32.OptionalHeader.SizeOfHeaders) { + // + // If one of the sections should be loaded to an offset overlapping with + // the executable header, then it cannot be made into an XIP image. + // + VerboseMsg ("PE/COFF conversion to XIP is impossible due to overlap"); + VerboseMsg ("of section data with the executable header."); + return; + } + + if (FirstSectionOffset == *FileLength) { + // + // If we never found a section with a non-zero size, then we + // skip the conversion. + // + return; + } + + TotalNecessaryFileSize += FirstSectionOffset; + + if (!ConversionNeeded) { + return; + } + + if (XipLength > (2 * TotalNecessaryFileSize)) { + VerboseMsg ("PE/COFF conversion to XIP appears to be larger than necessary."); + VerboseMsg ("The image linking process may have left unused memory ranges."); + } + + if (PeHdr->Pe32.FileHeader.PointerToSymbolTable != 0) { + // + // This field is obsolete and should be zero + // + PeHdr->Pe32.FileHeader.PointerToSymbolTable = 0; + } + + // + // Allocate the extra space that we need to grow the image + // + XipFile = malloc (XipLength); + memset (XipFile, 0, XipLength); + + // + // Copy the file headers + // + memcpy (XipFile, *FileBuffer, PeHdr->Pe32.OptionalHeader.SizeOfHeaders); + + NewPeHdr = GetPeCoffHeader ((void *)XipFile); + if (NewPeHdr == NULL) { + free (XipFile); + return; + } + + // + // Copy the section data over to the appropriate XIP offsets + // + SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(NewPeHdr->Pe32.OptionalHeader) + NewPeHdr->Pe32.FileHeader.SizeOfOptionalHeader); + for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index ++, SectionHeader ++) { + if (SectionHeader->SizeOfRawData > 0) { + memcpy ( + XipFile + SectionHeader->VirtualAddress, + *FileBuffer + SectionHeader->PointerToRawData, + SectionHeader->SizeOfRawData + ); + } + SectionHeader->SizeOfRawData = SectionHeader->Misc.VirtualSize; + SectionHeader->PointerToRawData = SectionHeader->VirtualAddress; + } + + free (*FileBuffer); + *FileLength = XipLength; + *FileBuffer = XipFile; +} + +UINT8 * +CreateHiiResouceSectionHeader ( + UINT32 *pSectionHeaderSize, + UINT32 HiiDataSize + ) +/*++ + +Routine Description: + + Create COFF resource section header + +Arguments: + + pSectionHeaderSize - Pointer to section header size. + HiiDataSize - Size of the total HII data in section. + +Returns: + The created section header buffer. + +--*/ +{ + UINT32 HiiSectionHeaderSize; + UINT32 HiiSectionOffset; + UINT8 *HiiSectionHeader; + EFI_IMAGE_RESOURCE_DIRECTORY *ResourceDirectory; + EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *TypeResourceDirectoryEntry; + EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *NameResourceDirectoryEntry; + EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *LanguageResourceDirectoryEntry; + EFI_IMAGE_RESOURCE_DIRECTORY_STRING *ResourceDirectoryString; + EFI_IMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry; + + // + // Calculate the total size for the resource header (include Type, Name and Language) + // then allocate memory for the resource header. + // + HiiSectionHeaderSize = 3 * (sizeof (EFI_IMAGE_RESOURCE_DIRECTORY) + sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY)) + + 3 * (sizeof (UINT16) + 3 * sizeof (CHAR16)) + + sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY); + HiiSectionHeader = malloc (HiiSectionHeaderSize); + memset (HiiSectionHeader, 0, HiiSectionHeaderSize); + + HiiSectionOffset = 0; + // + // Create Type entry + // + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY); + ResourceDirectory->NumberOfNamedEntries = 1; + TypeResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY); + TypeResourceDirectoryEntry->u1.s.NameIsString = 1; + TypeResourceDirectoryEntry->u2.s.DataIsDirectory = 1; + TypeResourceDirectoryEntry->u2.s.OffsetToDirectory = HiiSectionOffset; + // + // Create Name entry + // + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY); + ResourceDirectory->NumberOfNamedEntries = 1; + NameResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY); + NameResourceDirectoryEntry->u1.s.NameIsString = 1; + NameResourceDirectoryEntry->u2.s.DataIsDirectory = 1; + NameResourceDirectoryEntry->u2.s.OffsetToDirectory = HiiSectionOffset; + // + // Create Language entry + // + ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY); + ResourceDirectory->NumberOfNamedEntries = 1; + LanguageResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY); + LanguageResourceDirectoryEntry->u1.s.NameIsString = 1; + // + // Create string entry for Type + // + TypeResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset; + ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset); + ResourceDirectoryString->Length = 3; + ResourceDirectoryString->String[0] = L'H'; + ResourceDirectoryString->String[1] = L'I'; + ResourceDirectoryString->String[2] = L'I'; + HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]); + // + // Create string entry for Name + // + NameResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset; + ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset); + ResourceDirectoryString->Length = 3; + ResourceDirectoryString->String[0] = L'E'; + ResourceDirectoryString->String[1] = L'F'; + ResourceDirectoryString->String[2] = L'I'; + HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]); + // + // Create string entry for Language + // + LanguageResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset; + ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset); + ResourceDirectoryString->Length = 3; + ResourceDirectoryString->String[0] = L'B'; + ResourceDirectoryString->String[1] = L'I'; + ResourceDirectoryString->String[2] = L'N'; + HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]); + // + // Create Leaf data + // + LanguageResourceDirectoryEntry->u2.OffsetToData = HiiSectionOffset; + ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiSectionHeader + HiiSectionOffset); + HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY); + ResourceDataEntry->OffsetToData = HiiSectionOffset; + ResourceDataEntry->Size = HiiDataSize; + + *pSectionHeaderSize = HiiSectionHeaderSize; + return HiiSectionHeader; +} + int main ( int argc, @@ -1501,6 +1710,8 @@ Returns: EFI_IFR_FORM_SET IfrFormSet; UINT8 NumberOfFormPacakge; EFI_HII_PACKAGE_HEADER EndPackage; + UINT32 HiiSectionHeaderSize; + UINT8 *HiiSectionHeader; SetUtilityName (UTILITY_NAME); @@ -1539,6 +1750,8 @@ Returns: EndPackage.Length = sizeof (EFI_HII_PACKAGE_HEADER); EndPackage.Type = EFI_HII_PACKAGE_END; memset (&HiiPackageListGuid, 0, sizeof (HiiPackageListGuid)); + HiiSectionHeaderSize = 0; + HiiSectionHeader = NULL; if (argc == 1) { Error (NULL, 0, 1001, "Missing options", "No input options."); @@ -1748,6 +1961,13 @@ Returns: continue; } + if (stricmp (argv[0], "--hiibinpackage") == 0) { + OutImageType = FW_HII_PACKAGE_LIST_BINIMAGE; + argc --; + argv ++; + continue; + } + if (argv[0][0] == '-') { Error (NULL, 0, 1000, "Unknown option", argv[0]); goto Finish; @@ -1819,6 +2039,11 @@ Returns: goto Finish; } + if ((OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) && ReplaceFlag) { + Error (NULL, 0, 1002, "Conflicting option", "-r replace option cannot be used with --hiibinpackage merge files option."); + goto Finish; + } + // // Input image file // @@ -1862,6 +2087,9 @@ Returns: case FW_HII_PACKAGE_LIST_RCIMAGE: VerboseMsg ("Combine the input multi hii bin packages to one text pacakge list RC file."); break; + case FW_HII_PACKAGE_LIST_BINIMAGE: + VerboseMsg ("Combine the input multi hii bin packages to one binary pacakge list file."); + break; default: break; } @@ -1903,9 +2131,9 @@ Returns: } // - // Combine multi binary HII package files to a single text package list RC file. + // Combine multi binary HII package files. // - if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE) { + if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE || OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) { // // Get hii package list lenght // @@ -1970,37 +2198,64 @@ Returns: HiiPackageDataPointer = HiiPackageDataPointer + FileLength; } memcpy (HiiPackageDataPointer, &EndPackage, sizeof (EndPackage)); + // - // write the hii package into the text package list rc file. + // write the hii package into the binary package list file with the resource section header // - for (Index = 0; gHiiPackageRCFileHeader[Index] != NULL; Index++) { - fprintf (fpOut, "%s\n", gHiiPackageRCFileHeader[Index]); + if (OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) { + // + // Create the resource section header + // + HiiSectionHeader = CreateHiiResouceSectionHeader (&HiiSectionHeaderSize, HiiPackageListHeader.PackageLength); + // + // Wrtie section header and HiiData into File. + // + fwrite (HiiSectionHeader, 1, HiiSectionHeaderSize, fpOut); + fwrite (HiiPackageListBuffer, 1, HiiPackageListHeader.PackageLength, fpOut); + // + // Free allocated resources. + // + free (HiiSectionHeader); + free (HiiPackageListBuffer); + // + // Done successfully + // + goto Finish; } - fprintf (fpOut, "\n%d %s\n{", HII_RESOURCE_SECTION_INDEX, HII_RESOURCE_SECTION_NAME); - HiiPackageDataPointer = HiiPackageListBuffer; - for (Index = 0; Index + 2 < HiiPackageListHeader.PackageLength; Index += 2) { + // + // write the hii package into the text package list rc file. + // + if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE) { + for (Index = 0; gHiiPackageRCFileHeader[Index] != NULL; Index++) { + fprintf (fpOut, "%s\n", gHiiPackageRCFileHeader[Index]); + } + fprintf (fpOut, "\n%d %s\n{", HII_RESOURCE_SECTION_INDEX, HII_RESOURCE_SECTION_NAME); + + HiiPackageDataPointer = HiiPackageListBuffer; + for (Index = 0; Index + 2 < HiiPackageListHeader.PackageLength; Index += 2) { + if (Index % 16 == 0) { + fprintf (fpOut, "\n "); + } + fprintf (fpOut, " 0x%04X,", *(UINT16 *) HiiPackageDataPointer); + HiiPackageDataPointer += 2; + } + if (Index % 16 == 0) { fprintf (fpOut, "\n "); } - fprintf (fpOut, " 0x%04X,", *(UINT16 *) HiiPackageDataPointer); - HiiPackageDataPointer += 2; - } - - if (Index % 16 == 0) { - fprintf (fpOut, "\n "); - } - if ((Index + 2) == HiiPackageListHeader.PackageLength) { - fprintf (fpOut, " 0x%04X\n}\n", *(UINT16 *) HiiPackageDataPointer); - } - if ((Index + 1) == HiiPackageListHeader.PackageLength) { - fprintf (fpOut, " 0x%04X\n}\n", *(UINT8 *) HiiPackageDataPointer); + if ((Index + 2) == HiiPackageListHeader.PackageLength) { + fprintf (fpOut, " 0x%04X\n}\n", *(UINT16 *) HiiPackageDataPointer); + } + if ((Index + 1) == HiiPackageListHeader.PackageLength) { + fprintf (fpOut, " 0x%04X\n}\n", *(UINT8 *) HiiPackageDataPointer); + } + free (HiiPackageListBuffer); + // + // Done successfully + // + goto Finish; } - free (HiiPackageListBuffer); - // - // Done successfully - // - goto Finish; } // @@ -2271,7 +2526,6 @@ Returns: stricmp (ModuleType, "DXE_DRIVER") == 0 || stricmp (ModuleType, "DXE_SMM_DRIVER") == 0 || stricmp (ModuleType, "UEFI_DRIVER") == 0 || - stricmp (ModuleType, "SMM_DRIVER") == 0 || stricmp (ModuleType, "SMM_CORE") == 0) { Type = EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER; VerboseMsg ("Efi Image subsystem type is efi boot service driver."); @@ -2305,6 +2559,12 @@ Returns: VerboseMsg ("Convert the input ELF Image to Pe Image"); ConvertElf(&FileBuffer, &FileLength); } + + // + // Make sure File Offsets and Virtual Offsets are the same in the image so it is XIP + // XIP == eXecute In Place + // + PeCoffConvertImageToXip (&FileBuffer, &FileLength); // // Remove reloc section from PE or TE image @@ -2771,7 +3031,37 @@ Returns: TEImageHeader.DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress = Optional64->SizeOfImage - sizeof (EFI_IMAGE_BASE_RELOCATION); } } - + + // + // Fill HII section data + // + SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(PeHdr->Pe32.OptionalHeader) + PeHdr->Pe32.FileHeader.SizeOfOptionalHeader); + for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index++) { + if (stricmp ((char *)SectionHeader[Index].Name, ".hii") == 0) { + // + // Update resource section header offset + // + SetHiiResourceHeader ((UINT8*) FileBuffer + SectionHeader[Index].PointerToRawData, SectionHeader[Index].VirtualAddress); + // + // Update resource section name + // + strcpy((char *) SectionHeader[Index].Name, ".rsrc"); + // + // Update resource data directory. + // + if (PeHdr->Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) { + Optional32 = (EFI_IMAGE_OPTIONAL_HEADER32 *)&PeHdr->Pe32.OptionalHeader; + Optional32->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = SectionHeader[Index].VirtualAddress; + Optional32->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = SectionHeader[Index].Misc.VirtualSize; + } else if (PeHdr->Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) { + Optional64 = (EFI_IMAGE_OPTIONAL_HEADER64 *)&PeHdr->Pe32.OptionalHeader; + Optional64->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = SectionHeader[Index].VirtualAddress; + Optional64->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = SectionHeader[Index].Misc.VirtualSize; + } + break; + } + } + // // Zero ExceptionTable Xdata // @@ -3311,7 +3601,7 @@ Returns: // // strip space // - for (cptr = Line; *cptr && isspace(*cptr); cptr++) { + for (cptr = Line; *cptr && isspace((int)*cptr); cptr++) { } // Skip Blank Lines and Comment Lines @@ -3326,14 +3616,14 @@ Returns: // DD XXXXXXXXX // DD XXXXXXXXX // - if ((tolower(cptr[0]) == 'd') && (tolower(cptr[1]) == 'd') && isspace (cptr[2])) { + if ((tolower((int)cptr[0]) == 'd') && (tolower((int)cptr[1]) == 'd') && isspace ((int)cptr[2])) { // // Skip blanks and look for a hex digit // cptr += 3; - for (; *cptr && isspace(*cptr); cptr++) { + for (; *cptr && isspace((int)*cptr); cptr++) { } - if (isxdigit (*cptr)) { + if (isxdigit ((int)*cptr)) { if (sscanf (cptr, "%X", &ScannedData) != 1) { return STATUS_ERROR; } diff --git a/BaseTools/Source/C/GenSec/GenSec.c b/BaseTools/Source/C/GenSec/GenSec.c index 32b8cfd5a0..9a1d0ca48a 100644 --- a/BaseTools/Source/C/GenSec/GenSec.c +++ b/BaseTools/Source/C/GenSec/GenSec.c @@ -938,7 +938,7 @@ Returns: // Verify string is a integrator number // for (Index = 0; Index < strlen (argv[1]); Index++) { - if ((argv[1][Index] != '-') && (isdigit (argv[1][Index]) == 0)) { + if ((argv[1][Index] != '-') && (isdigit ((int)argv[1][Index]) == 0)) { Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); goto Finish; } diff --git a/BaseTools/Source/C/GenVtf/GenVtf.c b/BaseTools/Source/C/GenVtf/GenVtf.c index 890cfd98fd..2e417bf563 100644 --- a/BaseTools/Source/C/GenVtf/GenVtf.c +++ b/BaseTools/Source/C/GenVtf/GenVtf.c @@ -1,13 +1,13 @@ /** -Copyright (c) 1999 - 2008, Intel Corporation. All rights reserved -This software and associated documentation (if any) is furnished -under a license and may only be used or copied in accordance -with the terms of the license. Except as permitted by such -license, no part of this software or documentation may be -reproduced, stored in a retrieval system, or transmitted in any -form or by any means without the express written consent of -Intel Corporation. +Copyright (c) 1999-2008 Intel Corporation. All rights reserved +This program and the accompanying materials are licensed and made available +under the terms and conditions of the BSD License which accompanies this +distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: diff --git a/BaseTools/Source/C/GenVtf/GenVtf.h b/BaseTools/Source/C/GenVtf/GenVtf.h index 012ebb672a..a1d9f936fe 100644 --- a/BaseTools/Source/C/GenVtf/GenVtf.h +++ b/BaseTools/Source/C/GenVtf/GenVtf.h @@ -1,13 +1,13 @@ /** @file -Copyright (c) 1999 - 2008 Intel Corporation. All rights reserved -This software and associated documentation (if any) is furnished -under a license and may only be used or copied in accordance -with the terms of the license. Except as permitted by such -license, no part of this software or documentation may be -reproduced, stored in a retrieval system, or transmitted in any -form or by any means without the express written consent of -Intel Corporation. +Copyright (c) 1999-2008 Intel Corporation. All rights reserved +This program and the accompanying materials are licensed and made available +under the terms and conditions of the BSD License which accompanies this +distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: diff --git a/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h b/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h index 5e926ac08d..e76ffd317c 100644 --- a/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h +++ b/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h @@ -674,6 +674,7 @@ typedef union { #define EFI_IFR_DEFAULTSTORE_OP 0x5C #define EFI_IFR_CATENATE_OP 0x5E #define EFI_IFR_GUID_OP 0x5F +#define EFI_IFR_SECURITY_OP 0x60 typedef struct _EFI_IFR_OP_HEADER { @@ -1276,6 +1277,17 @@ typedef struct _EFI_IFR_SPAN { UINT8 Flags; } EFI_IFR_SPAN; +typedef struct _EFI_IFR_SECURITY { + /// + /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP. + /// + EFI_IFR_OP_HEADER Header; + /// + /// Security permission level. + /// + EFI_GUID Permissions; +} EFI_IFR_SECURITY; + // // Keyboard Package // diff --git a/BaseTools/Source/C/Include/IndustryStandard/PeImage.h b/BaseTools/Source/C/Include/IndustryStandard/PeImage.h index 57cbc2366b..69cca91c31 100644 --- a/BaseTools/Source/C/Include/IndustryStandard/PeImage.h +++ b/BaseTools/Source/C/Include/IndustryStandard/PeImage.h @@ -638,6 +638,18 @@ typedef struct { // } EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY; +/// +/// Debug Data Structure defined by Apple Mach-O to Coff utility +/// +#define CODEVIEW_SIGNATURE_MTOC EFI_SIGNATURE_32('M', 'T', 'O', 'C') +typedef struct { + UINT32 Signature; ///< "MTOC" + EFI_GUID MachOUuid; + // + // Filename of .DLL (Mach-O with debug info) goes here + // +} EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY; + // // .pdata entries for X64 // diff --git a/BaseTools/Source/C/Include/X64/ProcessorBind.h b/BaseTools/Source/C/Include/X64/ProcessorBind.h index 5b2ad46637..5d79d89d13 100644 --- a/BaseTools/Source/C/Include/X64/ProcessorBind.h +++ b/BaseTools/Source/C/Include/X64/ProcessorBind.h @@ -27,7 +27,9 @@ // // Make sure we are useing the correct packing rules per EFI specification // +#ifndef __GNUC__ #pragma pack() +#endif #if _MSC_EXTENSIONS diff --git a/BaseTools/Source/C/Makefiles/app.makefile b/BaseTools/Source/C/Makefiles/app.makefile index 7555556baa..2f95003646 100644 --- a/BaseTools/Source/C/Makefiles/app.makefile +++ b/BaseTools/Source/C/Makefiles/app.makefile @@ -8,6 +8,6 @@ APPLICATION = $(MAKEROOT)/bin/$(APPNAME) all: $(MAKEROOT)/bin $(APPLICATION) $(APPLICATION): $(OBJECTS) - $(LINKER) -o $(APPLICATION) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) + $(LINKER) -o $(APPLICATION) $(LFLAGS) $(OBJECTS) -L$(MAKEROOT)/libs $(LIBS) include $(MAKEROOT)/Makefiles/footer.makefile diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile index a4dc2255e7..5f69e7b04e 100644 --- a/BaseTools/Source/C/Makefiles/header.makefile +++ b/BaseTools/Source/C/Makefiles/header.makefile @@ -26,7 +26,19 @@ endif INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE) CPPFLAGS = $(INCLUDE) CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fno-merge-constants -nostdlib -Wall -Werror -c -g +LFLAGS = +# +# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns -i386, but gcc defaults +# to x86_64. So make sure tools match uname -m +# +uname_s = $(shell uname -s) +ifeq ($(uname_s),Darwin) + CFLAGS += -arch i386 + CPPFLAGS += -arch i386 + LFLAGS += -arch i386 +endif + .PHONY: all .PHONY: install .PHONY: clean diff --git a/BaseTools/Source/C/Split/Split.c b/BaseTools/Source/C/Split/Split.c index 22e1a2be49..d5fe738a2c 100644 --- a/BaseTools/Source/C/Split/Split.c +++ b/BaseTools/Source/C/Split/Split.c @@ -124,14 +124,14 @@ GetSplitValue ( } } - lastCHAR = (CHAR8)toupper(SplitValueString[len - 1]); + lastCHAR = (CHAR8)toupper((int)SplitValueString[len - 1]); if (lastCHAR != 'K' && lastCHAR != 'M' && lastCHAR != 'G') { return STATUS_ERROR; } for (;index < len - 1; ++index) { - if (!isdigit(SplitValueString[index])) { + if (!isdigit((int)SplitValueString[index])) { return EFI_ABORTED; } } diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp b/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp index 87da95af71..ffa898bdbe 100644 --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp @@ -1301,6 +1301,7 @@ static struct { { 0, 0}, // 0x5D { sizeof (EFI_IFR_CATENATE), 0 }, // EFI_IFR_CATENATE_OP { sizeof (EFI_IFR_GUID), 0 }, // EFI_IFR_GUID_OP + { sizeof (EFI_IFR_SECURITY), 0 }, // EFI_IFR_SECURITY_OP - 0x60 }; #ifdef CIFROBJ_DEUBG @@ -1323,6 +1324,7 @@ static struct { "EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2", "EFI_IFR_CONDITIONAL", "EFI_IFR_QUESTION_REF3", "EFI_IFR_ZERO", "EFI_IFR_ONE", "EFI_IFR_ONES", "EFI_IFR_UNDEFINED", "EFI_IFR_LENGTH", "EFI_IFR_DUP", "EFI_IFR_THIS", "EFI_IFR_SPAN", "EFI_IFR_VALUE", "EFI_IFR_DEFAULT", "EFI_IFR_DEFAULTSTORE", "EFI_IFR_INVALID", "EFI_IFR_CATENATE", "EFI_IFR_GUID", + "EFI_IFR_SECURITY", }; VOID diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h index 324078a148..0b84896cc9 100644 --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h @@ -398,49 +398,159 @@ public: } }; -static CIfrQuestionHeader *gCurrentQuestion = NULL; -static CIfrObj *gCurrentIfrOpcode = NULL; - /* * The definition of CIfrMinMaxStepData */ class CIfrMinMaxStepData { private: MINMAXSTEP_DATA *mMinMaxStepData; + BOOLEAN ValueIsSet; + BOOLEAN IsNumeric; public: - CIfrMinMaxStepData (MINMAXSTEP_DATA *DataAddr) : mMinMaxStepData (DataAddr) { + CIfrMinMaxStepData (MINMAXSTEP_DATA *DataAddr, BOOLEAN NumericOpcode=FALSE) : mMinMaxStepData (DataAddr) { mMinMaxStepData->u64.MinValue = 0; mMinMaxStepData->u64.MaxValue = 0; mMinMaxStepData->u64.Step = 0; + ValueIsSet = FALSE; + IsNumeric = NumericOpcode; } VOID SetMinMaxStepData (IN UINT64 MinValue, IN UINT64 MaxValue, IN UINT64 Step) { - mMinMaxStepData->u64.MinValue = MinValue; - mMinMaxStepData->u64.MaxValue = MaxValue; - mMinMaxStepData->u64.Step = Step; + if (!ValueIsSet) { + mMinMaxStepData->u64.MinValue = MinValue; + mMinMaxStepData->u64.MaxValue = MaxValue; + ValueIsSet = TRUE; + } else { + if (MinValue < mMinMaxStepData->u64.MinValue) { + mMinMaxStepData->u64.MinValue = MinValue; + } + if (MaxValue > mMinMaxStepData->u64.MaxValue) { + mMinMaxStepData->u64.MaxValue = MaxValue; + } + } + mMinMaxStepData->u64.Step = Step; } VOID SetMinMaxStepData (IN UINT32 MinValue, IN UINT32 MaxValue, IN UINT32 Step) { - mMinMaxStepData->u32.MinValue = MinValue; - mMinMaxStepData->u32.MaxValue = MaxValue; - mMinMaxStepData->u32.Step = Step; + if (!ValueIsSet) { + mMinMaxStepData->u32.MinValue = MinValue; + mMinMaxStepData->u32.MaxValue = MaxValue; + ValueIsSet = TRUE; + } else { + if (MinValue < mMinMaxStepData->u32.MinValue) { + mMinMaxStepData->u32.MinValue = MinValue; + } + if (MaxValue > mMinMaxStepData->u32.MaxValue) { + mMinMaxStepData->u32.MaxValue = MaxValue; + } + } + mMinMaxStepData->u32.Step = Step; } VOID SetMinMaxStepData (IN UINT16 MinValue, IN UINT16 MaxValue, IN UINT16 Step) { - mMinMaxStepData->u16.MinValue = MinValue; - mMinMaxStepData->u16.MaxValue = MaxValue; - mMinMaxStepData->u16.Step = Step; + if (!ValueIsSet) { + mMinMaxStepData->u16.MinValue = MinValue; + mMinMaxStepData->u16.MaxValue = MaxValue; + ValueIsSet = TRUE; + } else { + if (MinValue < mMinMaxStepData->u16.MinValue) { + mMinMaxStepData->u16.MinValue = MinValue; + } + if (MaxValue > mMinMaxStepData->u16.MaxValue) { + mMinMaxStepData->u16.MaxValue = MaxValue; + } + } + mMinMaxStepData->u16.Step = Step; } VOID SetMinMaxStepData (IN UINT8 MinValue, IN UINT8 MaxValue, IN UINT8 Step) { - mMinMaxStepData->u8.MinValue = MinValue; - mMinMaxStepData->u8.MaxValue = MaxValue; - mMinMaxStepData->u8.Step = Step; + if (!ValueIsSet) { + mMinMaxStepData->u8.MinValue = MinValue; + mMinMaxStepData->u8.MaxValue = MaxValue; + ValueIsSet = TRUE; + } else { + if (MinValue < mMinMaxStepData->u8.MinValue) { + mMinMaxStepData->u8.MinValue = MinValue; + } + if (MaxValue > mMinMaxStepData->u8.MaxValue) { + mMinMaxStepData->u8.MaxValue = MaxValue; + } + } + mMinMaxStepData->u8.Step = Step; + } + + UINT64 GetMinData (UINT8 VarType) { + UINT64 MinValue = 0; + switch (VarType) { + case EFI_IFR_TYPE_NUM_SIZE_64: + MinValue = mMinMaxStepData->u64.MinValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_32: + MinValue = (UINT64) mMinMaxStepData->u32.MinValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_16: + MinValue = (UINT64) mMinMaxStepData->u16.MinValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_8: + MinValue = (UINT64) mMinMaxStepData->u8.MinValue; + break; + default: + break; + } + return MinValue; + } + + UINT64 GetMaxData (UINT8 VarType) { + UINT64 MaxValue = 0; + switch (VarType) { + case EFI_IFR_TYPE_NUM_SIZE_64: + MaxValue = mMinMaxStepData->u64.MaxValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_32: + MaxValue = (UINT64) mMinMaxStepData->u32.MaxValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_16: + MaxValue = (UINT64) mMinMaxStepData->u16.MaxValue; + break; + case EFI_IFR_TYPE_NUM_SIZE_8: + MaxValue = (UINT64) mMinMaxStepData->u8.MaxValue; + break; + default: + break; + } + return MaxValue; + } + + UINT64 GetStepData (UINT8 VarType) { + UINT64 MaxValue = 0; + switch (VarType) { + case EFI_IFR_TYPE_NUM_SIZE_64: + MaxValue = mMinMaxStepData->u64.Step; + break; + case EFI_IFR_TYPE_NUM_SIZE_32: + MaxValue = (UINT64) mMinMaxStepData->u32.Step; + break; + case EFI_IFR_TYPE_NUM_SIZE_16: + MaxValue = (UINT64) mMinMaxStepData->u16.Step; + break; + case EFI_IFR_TYPE_NUM_SIZE_8: + MaxValue = (UINT64) mMinMaxStepData->u8.Step; + break; + default: + break; + } + return MaxValue; } + BOOLEAN IsNumericOpcode () { + return IsNumeric; + } }; +static CIfrQuestionHeader *gCurrentQuestion = NULL; +static CIfrMinMaxStepData *gCurrentMinMaxData = NULL; + /* * The definition of all of the UEFI IFR Objects */ @@ -979,15 +1089,15 @@ public: CIfrNumeric () : CIfrObj (EFI_IFR_NUMERIC_OP, (CHAR8 **)&mNumeric), CIfrOpHeader (EFI_IFR_NUMERIC_OP, &mNumeric->Header), CIfrQuestionHeader (&mNumeric->Question), - CIfrMinMaxStepData (&mNumeric->data) { + CIfrMinMaxStepData (&mNumeric->data, TRUE) { mNumeric->Flags = EFI_IFR_NUMERIC_SIZE_1 | EFI_IFR_DISPLAY_UINT_DEC; - gCurrentQuestion = this; - gCurrentIfrOpcode = this; + gCurrentQuestion = this; + gCurrentMinMaxData = this; } ~CIfrNumeric () { - gCurrentQuestion = NULL; - gCurrentIfrOpcode = NULL; + gCurrentQuestion = NULL; + gCurrentMinMaxData = NULL; } EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) { @@ -1017,13 +1127,13 @@ public: CIfrQuestionHeader (&mOneOf->Question), CIfrMinMaxStepData (&mOneOf->data) { mOneOf->Flags = 0; - gCurrentQuestion = this; - gCurrentIfrOpcode = this; + gCurrentQuestion = this; + gCurrentMinMaxData = this; } ~CIfrOneOf () { - gCurrentQuestion = NULL; - gCurrentIfrOpcode = NULL; + gCurrentQuestion = NULL; + gCurrentMinMaxData = NULL; } EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) { @@ -1772,6 +1882,24 @@ public: } }; +class CIfrSecurity : public CIfrObj, public CIfrOpHeader { +private: + EFI_IFR_SECURITY *mSecurity; + +public: + CIfrSecurity ( + IN UINT32 LineNo + ) : CIfrObj (EFI_IFR_SECURITY_OP, (CHAR8 **)&mSecurity), + CIfrOpHeader (EFI_IFR_SECURITY_OP, &mSecurity->Header) { + SetLineNo (LineNo); + memset (&mSecurity->Permissions, 0, sizeof (EFI_GUID)); + } + + VOID SetPermissions (IN EFI_GUID *Permissions) { + memcpy (&mSecurity->Permissions, Permissions, sizeof (EFI_GUID)); + } +}; + class CIfrUint8 : public CIfrObj, public CIfrOpHeader { private: EFI_IFR_UINT8 *mUint8; diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g index ea529a5e15..09ec6919ec 100644 --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g @@ -1,5 +1,5 @@ /*++ -Copyright (c) 2004 - 2008, Intel Corporation +Copyright (c) 2004 - 2009, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -547,7 +547,8 @@ vfrFormSetList : vfrStatementVarStoreEfi | vfrStatementVarStoreNameValue | vfrStatementDefaultStore | - vfrStatementDisableIfFormSet + vfrStatementDisableIfFormSet | + vfrStatementSuppressIfFormSet )* ; @@ -720,6 +721,21 @@ vfrStatementDisableIfFormSet : ";" ; +vfrStatementSuppressIfFormSet : + << CIfrSuppressIf SIObj;>> + L:SuppressIf << + if (mCompatibleMode) { + _PCATCH (VFR_RETURN_UNSUPPORTED, L); + } + SIObj.SetLineNo(L->getLine()); + >> + { FLAGS "=" flagsField ( "\|" flagsField )* "," } + vfrStatementExpression[0] ";" + vfrFormSetList + E: EndIf + ";" << CRT_END_OP (E); >> + ; + //***************************************************************************** // // the syntax of question header and statement header @@ -1089,66 +1105,10 @@ vfrStatementDefault : ( vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); CIfrEnd EndObj1; EndObj1.SetLineNo(D->getLine()); >> | "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] "," << - - if (gCurrentIfrOpcode != NULL && gCurrentIfrOpcode->GetObjBinAddr() != NULL) { - EFI_IFR_OP_HEADER *TempOpCode; - TempOpCode = (EFI_IFR_OP_HEADER *) gCurrentIfrOpcode->GetObjBinAddr(); - switch (TempOpCode->OpCode) { - case EFI_IFR_NUMERIC_OP: - EFI_IFR_NUMERIC *TempNumricCode; - TempNumricCode = (EFI_IFR_NUMERIC *) TempOpCode; - switch (_GET_CURRQEST_DATATYPE()) { - case EFI_IFR_TYPE_NUM_SIZE_64: - if (Val.u64 < TempNumricCode->data.u64.MinValue || Val.u64 > TempNumricCode->data.u64.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_32: - if (Val.u32 < TempNumricCode->data.u32.MinValue || Val.u32 > TempNumricCode->data.u32.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_16: - if (Val.u16 < TempNumricCode->data.u16.MinValue || Val.u16 > TempNumricCode->data.u16.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_8: - if (Val.u8 < TempNumricCode->data.u8.MinValue || Val.u8 > TempNumricCode->data.u8.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue."); - } - break; - } - break; - case EFI_IFR_ONE_OF_OP: - EFI_IFR_ONE_OF *TempOneOfCode; - TempOneOfCode = (EFI_IFR_ONE_OF *) TempOpCode; - if (TempOneOfCode->data.u64.MinValue != 0 || TempOneOfCode->data.u64.MaxValue != 0 || TempOneOfCode->data.u64.Step != 0) { - //OneOf MinMaxStep Data is set, Val value will be checked for MinMaxStep. - switch (_GET_CURRQEST_DATATYPE()) { - case EFI_IFR_TYPE_NUM_SIZE_64: - if (Val.u64 < TempOneOfCode->data.u64.MinValue || Val.u64 > TempOneOfCode->data.u64.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_32: - if (Val.u32 < TempOneOfCode->data.u32.MinValue || Val.u32 > TempOneOfCode->data.u32.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_16: - if (Val.u16 < TempOneOfCode->data.u16.MinValue || Val.u16 > TempOneOfCode->data.u16.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue."); - } - break; - case EFI_IFR_TYPE_NUM_SIZE_8: - if (Val.u8 < TempOneOfCode->data.u8.MinValue || Val.u8 > TempOneOfCode->data.u8.MaxValue) { - _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue."); - } - break; - } - } - break; + if (gCurrentMinMaxData != NULL && gCurrentMinMaxData->IsNumericOpcode()) { + //check default value is valid for Numeric Opcode + if (Val.u64 < gCurrentMinMaxData->GetMinData(_GET_CURRQEST_DATATYPE()) || Val.u64 > gCurrentMinMaxData->GetMaxData(_GET_CURRQEST_DATATYPE())) { + _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue."); } } DObj.SetType (_GET_CURRQEST_DATATYPE()); @@ -1711,7 +1671,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : >> Minimum "=" I:Number "," << - switch (_GET_CURRQEST_DATATYPE ()) { + switch (_GET_CURRQEST_DATATYPE()) { case EFI_IFR_TYPE_NUM_SIZE_64 : MinU8 = _STOU64(I->getText()); break; case EFI_IFR_TYPE_NUM_SIZE_32 : MinU4 = _STOU32(I->getText()); break; case EFI_IFR_TYPE_NUM_SIZE_16 : MinU2 = _STOU16(I->getText()); break; @@ -1720,7 +1680,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : >> Maximum "=" A:Number "," << - switch (_GET_CURRQEST_DATATYPE ()) { + switch (_GET_CURRQEST_DATATYPE()) { case EFI_IFR_TYPE_NUM_SIZE_64 : MaxU8 = _STOU64(A->getText()); if (MaxU8 < MinU8) { @@ -1750,7 +1710,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : { STEP "=" S:Number "," << - switch (_GET_CURRQEST_DATATYPE ()) { + switch (_GET_CURRQEST_DATATYPE()) { case EFI_IFR_TYPE_NUM_SIZE_64 : StepU8 = _STOU64(S->getText()); break; case EFI_IFR_TYPE_NUM_SIZE_32 : StepU4 = _STOU32(S->getText()); break; case EFI_IFR_TYPE_NUM_SIZE_16 : StepU2 = _STOU16(S->getText()); break; @@ -1759,7 +1719,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] : >> } << - switch (_GET_CURRQEST_DATATYPE ()) { + switch (_GET_CURRQEST_DATATYPE()) { case EFI_IFR_TYPE_NUM_SIZE_64 : $MMSDObj.SetMinMaxStepData (MinU8, MaxU8, StepU8); break; case EFI_IFR_TYPE_NUM_SIZE_32 : $MMSDObj.SetMinMaxStepData (MinU4, MaxU4, StepU4); break; case EFI_IFR_TYPE_NUM_SIZE_16 : $MMSDObj.SetMinMaxStepData (MinU2, MaxU2, StepU2); break; @@ -1793,18 +1753,38 @@ vfrStatementNumeric : vfrNumericFlags [CIfrNumeric & NObj, UINT32 LineNum] : << - UINT8 LFlags = _GET_CURRQEST_DATATYPE(); + UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE; UINT8 HFlags = 0; + EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID; >> numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )* - << _PCATCH(NObj.SetFlags (HFlags, LFlags), LineNum); >> + << + //check data type flag + VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId); + if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) { + if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) { + _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type"); + } + } else { + // update data type for name/value store + UINT32 DataTypeSize; + _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE; + gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize); + _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize; + } + _PCATCH(NObj.SetFlags (HFlags, LFlags), LineNum); + >> ; numericFlagsField [UINT8 & HFlags, UINT8 & LFlags] : N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >> - | "DISPLAY_INT_DEC" << $LFlags |= 0x00; >> - | "DISPLAY_UINT_DEC" << $LFlags |= 0x10; >> - | "DISPLAY_UINT_HEX" << $LFlags |= 0x20; >> + | "NUMERIC_SIZE_1" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_1; >> + | "NUMERIC_SIZE_2" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_2; >> + | "NUMERIC_SIZE_4" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_4; >> + | "NUMERIC_SIZE_8" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_8; >> + | "DISPLAY_INT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_INT_DEC; >> + | "DISPLAY_UINT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_DEC; >> + | "DISPLAY_UINT_HEX" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_HEX; >> | questionheaderFlagsField[HFlags] ; @@ -1832,11 +1812,27 @@ vfrStatementOneOf : vfrOneofFlagsField [CIfrOneOf & OObj, UINT32 LineNum] : << - UINT8 LFlags = _GET_CURRQEST_DATATYPE(); + UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE; UINT8 HFlags = 0; + EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID; >> numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )* - << _PCATCH(OObj.SetFlags (HFlags, LFlags), LineNum); >> + << + //check data type flag + VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId); + if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) { + if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) { + _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type"); + } + } else { + // update data type for Name/Value store + UINT32 DataTypeSize; + _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE; + gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize); + _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize; + } + _PCATCH(OObj.SetFlags (HFlags, LFlags), LineNum); + >> ; vfrStatementStringType : @@ -2080,10 +2076,9 @@ vfrStatementStatListOld : vfrStatementDisableIfStat : << CIfrDisableIf DIObj; - mConstantOnlyInExpression = TRUE; >> L:DisableIf << DIObj.SetLineNo(L->getLine()); >> - vfrStatementExpression[0] ";" << mConstantOnlyInExpression = FALSE; >> + vfrStatementExpression[0] ";" ( vfrStatementStatList )* E:EndIf << CRT_END_OP (E); >> ";" @@ -2227,10 +2222,9 @@ vfrStatementNoSubmitIf : vfrStatementDisableIfQuest : << CIfrDisableIf DIObj; - mConstantOnlyInExpression = TRUE; >> L:DisableIf << DIObj.SetLineNo(L->getLine()); >> - vfrStatementExpression[0] ";" << mConstantOnlyInExpression = FALSE; >> + vfrStatementExpression[0] ";" vfrStatementQuestionOptionList E:EndIf << CRT_END_OP (E); >> ; @@ -2277,7 +2271,31 @@ vfrStatementOneOfOption : >> L:Option << OOOObj.SetLineNo(L->getLine()); >> Text "=" "STRING_TOKEN" "\(" S:Number "\)" "," << OOOObj.SetOption (_STOSID(S->getText())); >> - Value "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] >[Val] "," << OOOObj.SetType (_GET_CURRQEST_DATATYPE()); OOOObj.SetValue (Val); >> + Value "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] >[Val] "," + << + if (gCurrentMinMaxData != NULL) { + //set min/max value for oneof opcode + UINT64 Step = gCurrentMinMaxData->GetStepData(_GET_CURRQEST_DATATYPE()); + switch (_GET_CURRQEST_DATATYPE()) { + case EFI_IFR_TYPE_NUM_SIZE_64: + gCurrentMinMaxData->SetMinMaxStepData(Val.u64, Val.u64, Step); + break; + case EFI_IFR_TYPE_NUM_SIZE_32: + gCurrentMinMaxData->SetMinMaxStepData(Val.u32, Val.u32, (UINT32) Step); + break; + case EFI_IFR_TYPE_NUM_SIZE_16: + gCurrentMinMaxData->SetMinMaxStepData(Val.u16, Val.u16, (UINT16) Step); + break; + case EFI_IFR_TYPE_NUM_SIZE_8: + gCurrentMinMaxData->SetMinMaxStepData(Val.u8, Val.u8, (UINT8) Step); + break; + default: + break; + } + } + OOOObj.SetType (_GET_CURRQEST_DATATYPE()); + OOOObj.SetValue (Val); + >> F:FLAGS "=" vfrOneOfOptionFlags[OOOObj, F->getLine()] << _PCATCH(mCVfrDataStorage.GetVarStoreName (_GET_CURRQEST_VARTINFO().mVarStoreId, &VarStoreName), L->getLine()); @@ -2460,6 +2478,7 @@ vfrStatementInvalidSaveRestoreDefaults : #token RuleRef("ruleref") "ruleref" #token StringRef("stringref") "stringref" #token PushThis("pushthis") "pushthis" +#token Security("security") "security" #token True("TRUE") "TRUE" #token False("FALSE") "FALSE" #token One("ONE") "ONE" @@ -2685,6 +2704,7 @@ vfrExpressionBuildInFunction [UINT32 & RootLevel, UINT32 & ExpOpCount] : | rulerefExp[$RootLevel, $ExpOpCount] | stringref1Exp[$RootLevel, $ExpOpCount] | pushthisExp[$RootLevel, $ExpOpCount] + | securityExp[$RootLevel, $ExpOpCount] ; dupExp [UINT32 & RootLevel, UINT32 & ExpOpCount] : @@ -2978,6 +2998,14 @@ pushthisExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : L:PushThis << { CIfrThis TObj(L->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L->getLine()); $ExpOpCount++; } >> ; +securityExp[UINT32 & RootLevel, UINT32 & ExpOpCount] : + << + EFI_GUID Guid; + >> + L:Security + "\(" guidDefinition[Guid] "\)" << { CIfrSecurity SObj(L->getLine()); _SAVE_OPHDR_COND (SObj, ($ExpOpCount == 0), L->getLine()); SObj.SetPermissions (&Guid); } $ExpOpCount++; >> + ; + vfrExpressionConstant[UINT32 & RootLevel, UINT32 & ExpOpCount] : L1:True << CIfrTrue TObj(L1->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L1->getLine()); $ExpOpCount++; >> | L2:False << CIfrFalse FObj(L2->getLine()); _SAVE_OPHDR_COND (FObj, ($ExpOpCount == 0), L2->getLine()); $ExpOpCount++; >> diff --git a/BaseTools/Source/C/VolInfo/VolInfo.c b/BaseTools/Source/C/VolInfo/VolInfo.c index ff61c9bd63..fc3dd113ac 100644 --- a/BaseTools/Source/C/VolInfo/VolInfo.c +++ b/BaseTools/Source/C/VolInfo/VolInfo.c @@ -203,7 +203,7 @@ Returns: // // Hex or decimal? // - if ((argv[1][0] == '0') && (tolower (argv[1][1]) == 'x')) { + if ((argv[1][0] == '0') && (tolower ((int)argv[1][1]) == 'x')) { if (sscanf (argv[1], "%x", &Offset) != 1) { Error (NULL, 0, 1003, "Invalid option value", "Offset = %s", argv[1]); return GetUtilityStatus (); @@ -216,7 +216,7 @@ Returns: // // See if they said something like "64K" // - if (tolower (argv[1][strlen (argv[1]) - 1]) == 'k') { + if (tolower ((int)argv[1][strlen (argv[1]) - 1]) == 'k') { Offset *= 1024; } } diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 9594ef0cae..ba026a9b26 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -1094,7 +1094,12 @@ class PlatformAutoGen(AutoGen): # for overridding library instances with module specific setting PlatformModule = self.Platform.Modules[str(Module)] - # add forced library instance + # add forced library instances (specified under LibraryClasses sections) + for LibraryClass in self.Platform.LibraryClasses.GetKeys(): + if LibraryClass.startswith("NULL"): + Module.LibraryClasses[LibraryClass] = self.Platform.LibraryClasses[LibraryClass] + + # add forced library instances (specified in module overrides) for LibraryClass in PlatformModule.LibraryClasses: if LibraryClass.startswith("NULL"): Module.LibraryClasses[LibraryClass] = PlatformModule.LibraryClasses[LibraryClass] @@ -1170,7 +1175,7 @@ class PlatformAutoGen(AutoGen): M = LibraryInstance[LibraryClassName] LibraryList.append(M) if ConsumedByList[M] == []: - Q.insert(0, M) + Q.append(M) # # start the DAG algorithm @@ -1939,7 +1944,7 @@ class ModuleAutoGen(AutoGen): if Source != File: CreateDirectory(Source.Dir) - if File.IsBinary and File == Source: + if File.IsBinary and File == Source and self._BinaryFileList != None and File in self._BinaryFileList: RuleObject = self.BuildRules[TAB_DEFAULT_BINARY_FILE] elif FileType in self.BuildRules: RuleObject = self.BuildRules[FileType] @@ -2053,11 +2058,11 @@ class ModuleAutoGen(AutoGen): self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE) if UniStringBinBuffer != None and UniStringBinBuffer.getvalue() != "": AutoFile = PathClass(gAutoGenStringFormFileName % {"module_name":self.Name}, self.OutputDir) - self._AutoGenFileList[AutoFile] = UniStringBinBuffer.getvalue() + self._AutoGenFileList[AutoFile] = UniStringBinBuffer.getvalue() AutoFile.IsBinary = True self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE) - if UniStringBinBuffer != None: - UniStringBinBuffer.close() + if UniStringBinBuffer != None: + UniStringBinBuffer.close() return self._AutoGenFileList ## Return the list of library modules explicitly or implicityly used by this module diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index 76dfbb665e..2883169f3c 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -1125,6 +1125,16 @@ class tdict: for Key in self.data: self.data[Key].SetSingleMode() + def GetKeys(self, KeyIndex=0): + assert KeyIndex >= 0 + if KeyIndex == 0: + return set(self.data.keys()) + else: + keys = set() + for Key in self.data: + keys |= self.data[Key].GetKeys(KeyIndex - 1) + return keys + ## Boolean chain list # class Blist(UserList): diff --git a/BaseTools/Source/Python/GenFds/Fv.py b/BaseTools/Source/Python/GenFds/Fv.py index a9ff26e597..6190bceba8 100644 --- a/BaseTools/Source/Python/GenFds/Fv.py +++ b/BaseTools/Source/Python/GenFds/Fv.py @@ -278,9 +278,13 @@ class FV (FvClassObject): # if TotalSize > 0: FvExtHeaderFileName = os.path.join(GenFdsGlobalVariable.FvDir, self.UiFvName + '.ext') - FvExtHeaderFile = open (FvExtHeaderFileName,'wb') + FvExtHeaderFile = StringIO.StringIO() FvExtHeaderFile.write(Buffer) + Changed = SaveFileOnChange(FvExtHeaderFileName, FvExtHeaderFile.getvalue(), True) FvExtHeaderFile.close() + if Changed: + if os.path.exists (self.InfFileName): + os.remove (self.InfFileName) self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = " + \ FvExtHeaderFileName + \ T_CHAR_LF) diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index 2f2e8126c8..11b649658e 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -444,6 +444,10 @@ class DscBuildData(PlatformBuildClassObject): Macros.update(self._Macros) for Record in RecordList: LibraryClass, LibraryInstance, Dummy, Arch, ModuleType, Dummy, LineNo = Record + if LibraryClass == '' or LibraryClass == 'NULL': + self._NullLibraryNumber += 1 + LibraryClass = 'NULL%d' % self._NullLibraryNumber + EdkLogger.verbose("Found forced library for arch=%s\n\t%s [%s]" % (Arch, LibraryInstance, LibraryClass)) LibraryClassSet.add(LibraryClass) LibraryInstance = PathClass(NormPath(LibraryInstance, Macros), GlobalData.gWorkspace, Arch=self._Arch) # check the file validation @@ -1111,6 +1115,7 @@ class InfBuildData(ModuleBuildClassObject): "BS_DRIVER" : "DXE_DRIVER", "RT_DRIVER" : "DXE_RUNTIME_DRIVER", "SAL_RT_DRIVER" : "DXE_SAL_DRIVER", + "DXE_SMM_DRIVER" : "DXE_SMM_DRIVER", # "SMM_DRIVER" : "DXE_SMM_DRIVER", # "BS_DRIVER" : "DXE_SMM_DRIVER", # "BS_DRIVER" : "UEFI_DRIVER", diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py index 5f470de926..624d941b0f 100644 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -1265,9 +1265,9 @@ def MyOptionParser(): Parser.add_option("-d", "--debug", action="store", type="int", help="Enable debug messages at specified level.") Parser.add_option("-D", "--define", action="append", type="string", dest="Macros", help="Macro: \"Name [= Value]\".") - Parser.add_option("-y", "--report-file", action="store", dest="ReportFile", help="Put build report in specified file.") + Parser.add_option("-y", "--report-file", action="store", dest="ReportFile", help="Create/overwrite the report to the specified filename.") Parser.add_option("-Y", "--report-type", action="append", type="choice", choices=['ALL','PCD',], dest="ReportType", - help="Flags that control the type of build report to generate. Must be one of [ALL, PCD]. To specify more flags, please repeat this option.") + help="Flags that control the type of build report to generate. Must be one of: [ALL, PCD]. To specify more than one flag, repeat this option on the command line.") (Opt, Args)=Parser.parse_args() return (Opt, Args) diff --git a/BaseTools/Source/Python/sitecustomize.py b/BaseTools/Source/Python/sitecustomize.py new file mode 100644 index 0000000000..fa5cd40705 --- /dev/null +++ b/BaseTools/Source/Python/sitecustomize.py @@ -0,0 +1,9 @@ +import sys +import locale + +if sys.platform == "darwin": + DefaultLocal = locale.getdefaultlocale()[1] + if DefaultLocal is None: + DefaultLocal = 'UTF8' + sys.setdefaultencoding(DefaultLocal) + diff --git a/BaseTools/Tests/TestTools.py b/BaseTools/Tests/TestTools.py index 4a581198a4..72e42461da 100644 --- a/BaseTools/Tests/TestTools.py +++ b/BaseTools/Tests/TestTools.py @@ -44,6 +44,11 @@ def MakeTheTestSuite(localItems): def GetBaseToolsPath(): if sys.platform in ('win32', 'win64'): return os.path.join(BaseToolsDir, 'Bin', sys.platform.title()) + elif sys.platform in ('cygwin'): + uname = os.popen('uname -sm').read().strip() + for char in (' ', '/'): + uname = uname.replace(char, '-') + return os.path.join(BaseToolsDir, 'Bin', uname) else: uname = os.popen('uname -sm').read().strip() for char in (' ', '/'): diff --git a/BaseTools/UserManuals/GenFv_Utility_Man_Page.rtf b/BaseTools/UserManuals/GenFv_Utility_Man_Page.rtf index 90b3562dc0..2569128086 100644 --- a/BaseTools/UserManuals/GenFv_Utility_Man_Page.rtf +++ b/BaseTools/UserManuals/GenFv_Utility_Man_Page.rtf @@ -1,173 +1,208 @@ -{\rtf1\adeflang1025\ansi\ansicpg936\uc2\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};} -{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f38\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}{\f39\froman\fcharset238\fprq2 Times New Roman CE;}{\f40\froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f42\froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f46\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f171\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f409\fswiss\fcharset238\fprq2 Verdana CE;} -{\f410\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f412\fswiss\fcharset161\fprq2 Verdana Greek;}{\f413\fswiss\fcharset162\fprq2 Verdana Tur;}{\f416\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f417\fswiss\fcharset163\fprq2 Verdana (Vietnamese);} -{\f421\fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; -\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red8\green96\blue168;}{\stylesheet{ -\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{ -\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 1;}{ -\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 2;}{\*\cs10 -\additive \ssemihidden Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +{\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};} +{\f40\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana{\*\falt Tahoma};}{\f103\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}{\f151\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};} +{\f152\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}{\f154\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\f155\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};} +{\f156\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\f157\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}{\f158\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};} +{\f159\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}{\f283\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f551\fswiss\fcharset238\fprq2 Verdana CE{\*\falt Tahoma};} +{\f552\fswiss\fcharset204\fprq2 Verdana Cyr{\*\falt Tahoma};}{\f554\fswiss\fcharset161\fprq2 Verdana Greek{\*\falt Tahoma};}{\f555\fswiss\fcharset162\fprq2 Verdana Tur{\*\falt Tahoma};}{\f558\fswiss\fcharset186\fprq2 Verdana Baltic{\*\falt Tahoma};} +{\f559\fswiss\fcharset163\fprq2 Verdana (Vietnamese){\*\falt Tahoma};}{\f1183\fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255; +\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192; +\red8\green96\blue168;}{\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{ +\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 1;}{ +\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 2;}{\*\cs10 +\additive \ssemihidden Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}} -{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid5535427\rsid6904443\rsid7348251}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator jwang36}{\creatim\yr2008\mo12\dy31\hr15\min9}{\revtim\yr2008\mo12\dy31\hr15\min18}{\version4}{\edmins9} -{\nofpages5}{\nofwords930}{\nofchars5304}{\nofcharsws6222}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}} +{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid161327\rsid289912\rsid536636\rsid550197\rsid1125541\rsid2510884\rsid2566299\rsid2887531\rsid4086897\rsid4463303\rsid4544702\rsid4608121\rsid4937157\rsid5179294\rsid5535427\rsid5791475 +\rsid6904443\rsid7348251\rsid7432917\rsid8009887\rsid8724680\rsid9923110\rsid11665539\rsid11689149\rsid11809043\rsid11865356\rsid11877657\rsid12217334\rsid12389480\rsid12845507\rsid12854771\rsid12988031\rsid12993393\rsid13438928\rsid13787208\rsid14746353 +\rsid15335526\rsid15474958\rsid15929223\rsid16646888}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator lgao4}{\creatim\yr2008\mo12\dy31\hr15\min9}{\revtim\yr2009\mo11\dy25\hr10\min15}{\version41}{\edmins32}{\nofpages5}{\nofwords1006}{\nofchars5735} +{\nofcharsws6728}{\vern24615}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}} \paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect -\deftab360\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 -\jcompress\viewkind4\viewscale100\rsidroot5535427 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \dbch )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \dbch (} -{\pntxta \dbch )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (} -{\pntxta \dbch )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 -\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Name -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv.exe \hich\f37 \endash \loch\f37 build one PI firmware volume image or one UEFI capsule image. +\deftab360\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 +\jcompress\viewkind4\viewscale100\rsidroot5535427 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2 +\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \hich )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \hich (} +{\pntxta \hich )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (} +{\pntxta \hich )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 +\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Name +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv.exe \hich\f40 \endash \loch\f40 build one PI firmware volume image or one UEFI capsule image. \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Synopsis -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs18 -\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv.exe [options]}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Sy\hich\af40\dbch\af13\loch\f40 nopsis +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv.exe [options]}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Description -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv is used to }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -generate a PI firmware volume image or a UEFI capsule image from the PI firmware files or the binary files, which conforms to the firmware volume image format defined in PI specification or uefi capsule image format defined in UEFI specification.}{ -\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par \hich\af37\dbch\af13\loch\f37 This util\hich\af37\dbch\af13\loch\f37 -ity is responsible for aggregating Firmware File System (FFS) files into a single FV image. The input files must be compliant with the PI 1.0 specification. The utility will create a FV header, append all of the FFS input files, and optionally add the F -\hich\af37\dbch\af13\loch\f37 F\hich\af37\dbch\af13\loch\f37 S pad file for those FFS files that require the specific file alignment. When adding {\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname State}}PEI{\*\xmlclose}{\*\xmlclose} - files or dxe drivers, it will relocate them to the fixed flash address or the prefered loaded memory address if necessary. Also, one symbol map file that contains th\hich\af37\dbch\af13\loch\f37 e\hich\af37\dbch\af13\loch\f37 - symbol information (Function and Variable) for each driver in the FV will be produced. This utility is also responsible for aggregating the binary files into a single UEFI capsule image with the UEFI capsule header. -\par \hich\af37\dbch\af13\loch\f37 GenFv takes as input the path/filename\hich\af37\dbch\af13\loch\f37 - of the Fv.inf or Cap.inf file, the output file name, the starting physical address of the FV, the boot driver base address and the runtime driver base address of the address.inf file to create the final Fv or Capsule image. This utility is usually called -\hich\af37\dbch\af13\loch\f37 \hich\af37\dbch\af13\loch\f37 by GenFds tool, which parses platform.fdf file to create the interanl Fv.inf or Cap.inf. Generally, user doesn't need to care about these internal file format. +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Description +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv is used to }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\insrsid6904443 \hich\af40\dbch\af13\loch\f40 +generate a PI firmware volume image or a UEFI capsule image from the PI firmware files or the binary files, which conforms to the firmware volume image format defined in PI specific\hich\af40\dbch\af13\loch\f40 +ation or uefi capsule image format defined in UEFI specification.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\par \hich\af40\dbch\af13\loch\f40 This utility is responsible for aggregating Firmware File System (FFS}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid161327 \hich\af40\dbch\af13\loch\f40 2}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\hich\af40\dbch\af13\loch\f40 ) files into a single FV image}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid16646888 \hich\af40\dbch\af13\loch\f40 with FFS2 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid9923110 +\hich\af40\dbch\af13\loch\f40 file system guid}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 . The input files must be compliant with the PI 1.0 specification. The utility will creat +\hich\af40\dbch\af13\loch\f40 e a FV header, append all of the FFS input files, and optionally add the FFS pad file for those FFS files that require the specific file alignment. When adding {\*\xmlopen\xmlns2{\factoidname State}} +{\*\xmlopen\xmlns2{\factoidname place}}\hich\af40\dbch\af13\loch\f40 PEI{\*\xmlclose}{\*\xmlclose} files or dxe drivers, it will relocate them to the fixed flash address or the pref\hich\af40\dbch\af13\loch\f40 +ered loaded memory address if necessary. Also, one symbol map file that contains the symbol information (Function and Variable) for each driver in the FV will be produced. This utility is also responsible for aggregating the binary files into a single UE +\hich\af40\dbch\af13\loch\f40 F\hich\af40\dbch\af13\loch\f40 I capsule image with the UEFI capsule header. +\par \hich\af40\dbch\af13\loch\f40 GenFv takes as input the path/filename of the Fv.inf or Cap.inf file, the output file name, the starting physical address of the FV, the boot driver base address and the runtime driver base address of the addr +\hich\af40\dbch\af13\loch\f40 +ess.inf file to create the final Fv or Capsule image. This utility is usually called by GenFds tool, which parses platform.fdf file to create the interanl Fv.inf or Cap.inf. Generally, user doesn't need to care about these internal file format. \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 }{\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 -\hich\af37\dbch\af13\loch\f37 Options -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs18 -\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -o FileName, --outputfile FileName -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 The PI firmware volume image or Uefi Capsule image i -\hich\af37\dbch\af13\loch\f37 s created. This option is required. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -i FileName, --inputfile FileName}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 +\hich\af40\dbch\af13\loch\f40 Options +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -o\hich\af40\dbch\af13\loch\f40 FileName, --outputfile FileName +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 +The PI firmware volume image or Uefi Capsule image is created. This option is required. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -i FileName, --inputfile FileName}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -File is the input FV.inf or Cap.inf to specify how to construct FvImage or CapImage. Fv.inf and Cap.inf will be introduced in the following examples. File may be one capsule image whoes \hich\af37\dbch\af13\loch\f37 -header will be dumped. This option is required. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 -\hich\af37\dbch\af13\loch\f37 b\hich\af37\dbch\af13\loch\f37 - \hich\af37\dbch\af13\loch\f37 Block\hich\af37\dbch\af13\loch\f37 Size\hich\af37\dbch\af13\loch\f37 , --\hich\af37\dbch\af13\loch\f37 blocksize \hich\af37\dbch\af13\loch\f37 BlockSize}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 BlockSize is one HEX or DEC format of value required by FV image\hich\af37\dbch\af13\loch\f37 . -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 -\hich\af37\dbch\af13\loch\f37 f\hich\af37\dbch\af13\loch\f37 \hich\af37\dbch\af13\loch\f37 FfsFile\hich\af37\dbch\af13\loch\f37 , -- -\hich\af37\dbch\af13\loch\f37 ffsfile\hich\af37\dbch\af13\loch\f37 \hich\af37\dbch\af13\loch\f37 FfsFile}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 FfsFile is placed into FV image. \hich\af37\dbch\af13\loch\f37 Multiple files can be input one by one\hich\af37\dbch\af13\loch\f37 . -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 -\hich\af37\dbch\af13\loch\f37 s\hich\af37\dbch\af13\loch\f37 \hich\af37\dbch\af13\loch\f37 FileTakeSize\hich\af37\dbch\af13\loch\f37 , -- -\hich\af37\dbch\af13\loch\f37 filetakesize \hich\af37\dbch\af13\loch\f37 FileTakenSize}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 Specify \hich\af37\dbch\af13\loch\f37 the size\hich\af37\dbch\af13\loch\f37 of the required space that the input file is placed in FV image\hich\af37\dbch\af13\loch\f37 .\hich\af37\dbch\af13\loch\f37 I -\hich\af37\dbch\af13\loch\f37 t should be specified together with the input file. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -r Address, --baseaddr Address}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 +File is the input FV.inf or Cap.inf to specify how to construct FvImage or CapImage. Fv.inf and Cap.inf will be introduced in the following examples. File may be one capsule image }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7432917 +\hich\af40\dbch\af13\loch\f40 when its}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 header }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid8009887 \hich\af40\dbch\af13\loch\f40 is}{\rtlch\fcs1 +\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 dumped. This option is required. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 -b BlockSize, --blocks\hich\af40\dbch\af13\loch\f40 +ize BlockSize}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\par \tab \hich\af40\dbch\af13\loch\f40 Block}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid13438928 \hich\af40\dbch\af13\loch\f40 Size is one HEX or DEC format}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\hich\af40\dbch\af13\loch\f40 value required by FV image. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid289912 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid289912\charrsid289912 \hich\af40\dbch\af13\loch\f40 -n NumberBlock, --numberblock NumberBlock +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid289912\charrsid13787208 \hich\af40\dbch\af13\loch\f40 \hich\af40\dbch\af13\loch\f40 NumberBlock is one HEX or DEC format value}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid13787208 +\hich\af40\dbch\af13\loch\f40 . }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid289912\charrsid13787208 \hich\af40\dbch\af13\loch\f40 NumberBlock is one optional parameter.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid289912\charrsid13787208 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 -f FfsFile, --ffsfile FfsFile}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid7348251 +\par \tab \hich\af40\dbch\af13\loch\f40 FfsFile is placed into FV image. Multiple files can be input one by one. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 -s FileTakeSize, --filetakesize FileTakenSize}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\par \tab \hich\af40\dbch\af13\loch\f40 Specify the size of the \hich\af40\dbch\af13\loch\f40 required space that the input file is placed in FV image. It should be specified together with the input file. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -r Address, --baseaddr Address}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par \tab \hich\af37\dbch\af13\loch\f37 Address is the rebase start address for {\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname State}}PEI{\*\xmlclose}{\*\xmlclose} drivers that run in Flash. It supports DEC or HEX digital format. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -a AddressFile, --addrfile AddressFile -\par \tab }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 AddressFile is one file us\hich\af37\dbch\af13\loch\f37 -ed to log boot driver base address and runtime driver base address. And this tool will update these two addresses after it \tab relocates all boot drivers and runtime drivers in this fv image to the preferred loaded memory address. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 -\hich\af37\dbch\af13\loch\f37 g\hich\af37\dbch\af13\loch\f37 - \hich\af37\dbch\af13\loch\f37 Guid\hich\af37\dbch\af13\loch\f37 , --\hich\af37\dbch\af13\loch\f37 capguid \hich\af37\dbch\af13\loch\f37 Guid}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 Specify GUID value of specific capsule or FV vendor\hich\af37\dbch\af13\loch\f37 in the format of }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251\charrsid7348251 \hich\af37\dbch\af13\loch\f37 -xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 . -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 --\hich\af37\dbch\af13\loch\f37 capflag \hich\af37\dbch\af13\loch\f37 CapFlag}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 Specify capsule reset flag (PersistAcrossReset, PopulateSystemTable or none)\hich\af37\dbch\af13\loch\f37 . -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 --\hich\af37\dbch\af13\loch\f37 capheadsize HeadSize}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 -\par \tab \hich\af37\dbch\af13\loch\f37 Specify head size for capsule image in the format of HEX or DEC\hich\af37\dbch\af13\loch\f37 . -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -p, --dump}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\par \tab \hich\af40\dbch\af13\loch\f40 Address is the rebase start address for \hich\af40\dbch\af13\loch\f40 drivers that run in Flash. It supports DEC or HEX digital f\hich\af40\dbch\af13\loch\f40 ormat. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -a AddressFile, --addrfile AddressFile +\par \tab }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 AddressFile is one file used to log boot driver base address and runtime driver base address. And this tool will update these two addresses after it \tab +relocates all boot drivers and runtime drivers in this fv i\hich\af40\dbch\af13\loch\f40 mage to the preferred loaded memory address. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5791475 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5791475 \hich\af40\dbch\af13\loch\f40 -m logfile, --map logfile}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid5791475 +\par \tab \hich\af40\dbch\af13\loch\f40 Logfile is the output Fv map file. If this option is not given, the FvName.map wi\hich\af40\dbch\af13\loch\f40 ll be the default fv map file name\hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid5791475 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5179294 \hich\af40\dbch\af13\loch\f40 -g Guid, --}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 guid Guid}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid5179294 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid5179294\charrsid5179294 \hich\af40\dbch\af13\loch\f40 Guid\hich\af40\dbch\af13\loch\f40 is one specific capsule guid value}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 +\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294\charrsid5179294 \hich\af40\dbch\af13\loch\f40 or fv file system guid value. +\par \hich\af40\dbch\af13\loch\f40 Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294 \hich\af40\dbch\af13\loch\f40 . +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4463303\charrsid4463303 \hich\af40\dbch\af13\loch\f40 --FvNameGuid}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4463303 \hich\af40\dbch\af13\loch\f40 Guid}{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5179294\charrsid4463303 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4608121 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid4608121\charrsid4608121 \hich\af40\dbch\af13\loch\f40 Guid\hich\af40\dbch\af13\loch\f40 is }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4608121 \hich\af40\dbch\af13\loch\f40 used to specify }{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid15929223 \hich\af40\dbch\af13\loch\f40 Fv Name}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid15929223 \hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid8724680 +\hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4608121\charrsid4608121 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4608121\charrsid4608121 \hich\af40\dbch\af13\loch\f40 Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294\charrsid4608121 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid7348251 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 --capflag CapFlag}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid7348251 +\par \tab \hich\af40\dbch\af13\loch\f40 Specify capsule reset flag (PersistAcrossReset, PopulateSyst}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid536636 \hich\af40\dbch\af13\loch\f40 emTable or}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid536636\charrsid536636 \hich\af40\dbch\af13\loch\f40 InitiateReset or}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid536636 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\hich\af40\dbch\af13\loch\f40 none). +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 --capheadsize HeadSize}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 +\par \tab \hich\af40\dbch\af13\loch\f40 Specify head size for capsule image in the format of HEX or DEC. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid12217334 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12217334 \hich\af40\dbch\af13\loch\f40 -c, --capsule}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid12217334 +\par \tab \hich\af40\dbch\af13\loch\f40 Create Uefi capsule i\hich\af40\dbch\af13\loch\f40 m\hich\af40\dbch\af13\loch\f40 age\hich\af40\dbch\af13\loch\f40 . +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -p, --dump}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par \tab \hich\af37\dbch\af13\loch\f37 Dump a capsule i\hich\af37\dbch\af13\loch\f37 mage header. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -m logfile, --map logfile}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par \tab \hich\af37\dbch\af13\loch\f37 Logfile is the output Fv map file. If this option is not given, the FvName.map will be the default fv map file name.}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 -\par \hich\af37\dbch\af13\loch\f37 -c, --capsule}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\par \tab \hich\af37\dbch\af13\loch\f37 Create Uefi capsule image. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -v, --verbose -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af37\dbch\af13\loch\f37 Turn on verbose output\hich\af37\dbch\af13\loch\f37 with informational messages. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6904443 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -\hich\af37\dbch\af13\loch\f37 d\hich\af37\dbch\af13\loch\f37 -, --\hich\af37\dbch\af13\loch\f37 debug level -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af37\dbch\af13\loch\f37 Enable debug message with specified level\hich\af37\dbch\af13\loch\f37 . -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 --version -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Show program's version number and exit -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -h, --help -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Show this help message and exit +\par \tab \hich\af40\dbch\af13\loch\f40 Dump a capsule image header. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -v, --verbose +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af40\dbch\af13\loch\f40 Turn on verbose output with informational messages. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6904443 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid15335526\charrsid15335526 \hich\af40\dbch\af13\loch\f40 -q, --quiet }{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid15335526 +\par \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid15335526\charrsid15335526 \hich\af40\dbch\af13\loch\f40 Disable all messages except key message and fatal error}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid15335526 \hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid15335526\charrsid15335526 +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -d, --debug level +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af40\dbch\af13\loch\f40 Enable debug message with specified level. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 --version +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Show program's version number and exit +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -h, --help +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Show this help message and exit \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Example -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 1. Generate BFV that contains {\*\xmlopen\xmlns2{\factoidname State}}{\*\xmlopen\xmlns2{\factoidname State}}PEI{\*\xmlclose}{\*\xmlclose} +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Example +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 1. Generate BFV that contains {\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af40\dbch\af13\loch\f40 PEI{\*\xmlclose}{\*\xmlclose} drivers in Flash with the input FV.inf, base address, and the output file name. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv -i FvR\hich\af37\dbch\af13\loch\f37 ecovery.inf -o FvRecovery.fv -r 0xFFFD0000 -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 FvRecovery.inf -\par \hich\af37\dbch\af13\loch\f37 [options] -\par \hich\af37\dbch\af13\loch\f37 EFI_BLOCK_SIZE = 0x10000 #required option -\par \hich\af37\dbch\af13\loch\f37 EFI_NUM_BLOCKS = 0x3 -\par \hich\af37\dbch\af13\loch\f37 EFI_BASE_ADDRESS = 0xFFFD0000 #optional, if command line -r is not specified, this option will be used. -\par \hich\af37\dbch\af13\loch\f37 [attribu\hich\af37\dbch\af13\loch\f37 tes] -\par \hich\af37\dbch\af13\loch\f37 EFI_ERASE_POLARITY = 1 -\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_ENABLED_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_READ_ENABLED_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_READ_LOCK_STATUS = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_STATUS = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_READ_DISABLED_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_LOCK_STATUS = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_LOCK_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_LOCK_STATUS = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_ERASE_POLAR\hich\af37\dbch\af13\loch\f37 ITY = 1 -\par \hich\af37\dbch\af13\loch\f37 EFI_MEMORY_MAPPED = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_READ_LOCK_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_DISABLED_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_READ_STATUS = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_LOCK_CAP = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_STICKY_WRITE = TRUE -\par \hich\af37\dbch\af13\loch\f37 EFI_FVB2_ALIGNMENT_16 = TRUE -\par \hich\af37\dbch\af13\loch\f37 [files] -\par \hich\af37\dbch\af13\loch\f37 EFI_FILE_NAME = K:\\Build\\NT32\\DEBUG_MYTOOLS\\Fv\\Ffs\\\hich\af37\dbch\af13\loch\f37 52C05B14-0B98-496c-BC3B-04B50211D680PeiMain\\52C05B14-0B98-496c-BC3B-04B50211D680.ffs -\par \hich\af37\dbch\af13\loch\f37 EFI_FILE_NAME = K:\\Build\\NT32\\DEBUG_MYTOOLS\\Fv\\Ffs\\9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50PcdPeim\\9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50.ffs -\par \hich\af37\dbch\af13\loch\f37 ......}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 2. Generate FvMain that cont\hich\af37\dbch\af13\loch\f37 -ains Dxe drivers loaded in the preferred loaded memory address with the input FV.inf, address file, and the output file name. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv -i FvMain.inf -o FvMain.fv -a Addr.inf -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Addr.inf}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 [options] -\par \hich\af37\dbch\af13\loch\f37 EFI_BOOT_DRIVER_BASE_ADDRESS = 0x1f300000 -\par \hich\af37\dbch\af13\loch\f37 EFI_RUNTIME_DRIVER_BASE_\hich\af37\dbch\af13\loch\f37 ADDRESS = 0x1f600000}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 3. Generate the capsule image with the input cap.inf, and the output file name. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv -i BiosUpdate.inf -o BiosUpdate.cap -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 BiosUpdate.inf}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 -\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 [options] -\par \hich\af37\dbch\af13\loch\f37 EFI_CAPSULE_GUID = 25A5CD7D-A5EB-4d74-9C28-D6EF04E03B16 (Required) -\par \hich\af37\dbch\af13\loch\f37 EFI_CA\hich\af37\dbch\af13\loch\f37 PSULE_HEADER_SIZE = 0x20 (Optional) -\par \hich\af37\dbch\af13\loch\f37 EFI_CAPSULE_FLAGS = PopulateSystemTable (Optional) -\par \hich\af37\dbch\af13\loch\f37 [attributes] -\par \hich\af37\dbch\af13\loch\f37 [files] -\par \hich\af37\dbch\af13\loch\f37 EFI_FILE_NAME = K:\\Build\\NT32\\DEBU\hich\af37\dbch\af13\loch\f37 G_MYTOOLS\\Fv\\Ffs\\EDBEDF47-6EA3-4512-83C1-70F4769D4BDE-Capsule_A.fvi -\par \hich\af37\dbch\af13\loch\f37 3. Dump capsule image header information for the input capsule image. -\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv -p -i BiosUpdate.cap -o Cap.info}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv -i FvRecovery.inf -o FvRecovery.fv -r 0xFFFD0000 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 FvRecovery.inf +\par \hich\af40\dbch\af13\loch\f40 [options] +\par \hich\af40\dbch\af13\loch\f40 E\hich\af40\dbch\af13\loch\f40 FI_BLOCK_SIZE = 0x10000 #required option +\par \hich\af40\dbch\af13\loch\f40 EFI_NUM_BLOCKS = 0x3 +\par \hich\af40\dbch\af13\loch\f40 EFI_BASE_ADDRESS = 0xFFFD0000 #optional, if command line -r is not specified, this option will be used. +\par \hich\af40\dbch\af13\loch\f40 [attributes] +\par \hich\af40\dbch\af13\loch\f40 EFI_ERASE_POLARITY = 1 +\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_ENABLED_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_READ_\hich\af40\dbch\af13\loch\f40 ENABLED_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_READ_LOCK_STATUS = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_STATUS = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_READ_DISABLED_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_LOCK_STATUS = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_LOCK_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_LOCK_STATUS = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_ERASE_POLARITY = 1 +\par \hich\af40\dbch\af13\loch\f40 EFI_MEMORY_MAPPED = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_READ_LOCK_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_DISABLED_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_READ_STATUS = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_LOCK_CAP = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_STICKY_WRITE = TRUE +\par \hich\af40\dbch\af13\loch\f40 EFI_FVB2_ALIGNMENT_16 = TRUE +\par \hich\af40\dbch\af13\loch\f40 [files] +\par \hich\af40\dbch\af13\loch\f40 EFI_FILE_NAME = K:\\Build\\NT32\\DEBUG_MYTOOLS\\Fv\\Ffs\\52C05B14-0B98-496c-BC3B-04B50211D680PeiMain\\52C05B14-0B98-496c-BC\hich\af40\dbch\af13\loch\f40 3B-04B50211D680.ffs +\par \hich\af40\dbch\af13\loch\f40 EFI_FILE_NAME = K:\\Build\\NT32\\DEBUG_MYTOOLS\\Fv\\Ffs\\9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50PcdPeim\\9B3ADA4F-AE56-4c24-8DEA-F03B7558AE50.ffs +\par \hich\af40\dbch\af13\loch\f40 ......}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 2. Generate FvMain that contains Dxe drivers loaded in the preferred loaded memory address wi\hich\af40\dbch\af13\loch\f40 th the }{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid12854771 \hich\af40\dbch\af13\loch\f40 input\hich\af40\dbch\af13\loch\f40 FV.inf, address file, \hich\af40\dbch\af13\loch\f40 the output file name}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11865356 +\hich\af40\dbch\af13\loch\f40 , its }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11877657 \hich\af40\dbch\af13\loch\f40 firmware file system guid }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11809043 \hich\af40\dbch\af13\loch\f40 (FFS2 +}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11877657 \hich\af40\dbch\af13\loch\f40 ) \hich\af40\dbch\af13\loch\f40 and}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12854771 \hich\af40\dbch\af13\loch\f40 its }{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid2887531 \hich\af40\dbch\af13\loch\f40 guid }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12854771 \hich\af40\dbch\af13\loch\f40 name\hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv -i FvMain.inf -o FvMain.fv -a Addr.inf}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12854771 \hich\af40\dbch\af13\loch\f40 }{ +\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid11865356 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid11865356 \hich\af40\dbch\af13\loch\f40 g }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid11865356\charrsid11865356 \hich\af40\dbch\af13\loch\f40 8c8ce578-8a3d-4f1c-9935-896185c32dd3}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid11865356\charrsid11865356 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12854771 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12854771 \hich\af40\dbch\af13\loch\f40 FvNameGuid }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid12854771\charrsid12854771 \hich\af40\dbch\af13\loch\f40 6D99E806-3D38-42c2-A095-5F4300BFD7DC}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Addr.inf}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 [options] +\par \hich\af40\dbch\af13\loch\f40 EFI_BOOT_DRIVER_BASE_ADDRESS = 0x1f300000 +\par \hich\af40\dbch\af13\loch\f40 EFI_RUNTIME_DRIVER_BASE_ADDRESS = 0x1f600000}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 3. Generate the capsule image with the input\hich\af40\dbch\af13\loch\f40 cap.inf, and the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv -i BiosUpdate.inf -o BiosUpdate.cap +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 BiosUpdate.inf}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 [options] +\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_GUID \hich\af40\dbch\af13\loch\f40 = 25A5CD7D-A5EB-4d74-9C28-D6EF04E03B16 (Required) +\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_HEADER_SIZE = 0x20 \hich\af40\dbch\af13\loch\f40 (Optional) +\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_FLAGS = PopulateSystemTable (Optional) +\par \hich\af40\dbch\af13\loch\f40 [attributes] +\par \hich\af40\dbch\af13\loch\f40 [files] +\par \hich\af40\dbch\af13\loch\f40 EFI_FILE_NAME = K:\\Build\\NT32\\DEBUG_MYTOOLS\\Fv\\Ffs\\EDBEDF47-6EA3-4512-83C1-70F4769D4BDE-Capsule_A.f\hich\af40\dbch\af13\loch\f40 vi +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid15929223 \hich\af40\dbch\af13\loch\f40 4}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 +. Dump capsule image header information for the input capsule image. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv -p -i BiosUpdate.cap -o Cap.info}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Bugs -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 No known bugs. -\par \hich\af37\dbch\af13\loch\f37 Report bugs to issues@buildtools.tianocore.org +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Bugs +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 No known bugs. +\par \hich\af40\dbch\af13\loch\f40 Report bugs to issues@buildtools.tianocore.org \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Files -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 None +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Files +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 None \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 See also -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 None +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 See also +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 None \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af37\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af37\dbch\af13\loch\f37 License -\par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af37\hich\af37\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 Copyright (c) 2007}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5535427 \hich\af37\dbch\af13\loch\f37 -2009}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 -\hich\af37\dbch\af13\loch\f37 Intel Corporation. All rights reserved -\par \hich\af37\dbch\af13\loch\f37 This program and the accompanying materials are licensed and made available -\par \hich\af37\dbch\af13\loch\f37 under the terms and conditions of the BSD License which accompanies this -\par \hich\af37\dbch\af13\loch\f37 distribution. The full t\hich\af37\dbch\af13\loch\f37 ext of the license may be found at -\par \hich\af37\dbch\af13\loch\f37 http://opensource.org/licenses/bsd-license.php +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid6904443 \hich\af40\dbch\af13\loch\f40 License +\par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 Copyright (c) 2007}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5535427 \hich\af40\dbch\af13\loch\f40 -2009}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 +\hich\af40\dbch\af13\loch\f40 Intel Corporation. All rights reserved +\par \hich\af40\dbch\af13\loch\f40 This program and the accompanying materials are licensed and made available +\par \hich\af40\dbch\af13\loch\f40 under the terms and conditions of the BSD License which accompanies this +\par \hich\af40\dbch\af13\loch\f40 distribution. The full text of the license may be found at +\par \hich\af40\dbch\af13\loch\f40 http:\hich\af40\dbch\af13\loch\f40 //opensource.org/licenses/bsd-license.php \par -\par \hich\af37\dbch\af13\loch\f37 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +\par \hich\af40\dbch\af13\loch\f40 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \par }} \ No newline at end of file diff --git a/BaseTools/UserManuals/GenFw_Utility_Man_Page.rtf b/BaseTools/UserManuals/GenFw_Utility_Man_Page.rtf index 2f2096d3b8..a796f9db38 100644 --- a/BaseTools/UserManuals/GenFw_Utility_Man_Page.rtf +++ b/BaseTools/UserManuals/GenFw_Utility_Man_Page.rtf @@ -1,146 +1,209 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt SimSun};} -{\f38\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f39\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f42\froman\fcharset238\fprq2 Times New Roman CE;}{\f43\froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f45\froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f49\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f174\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f422\fswiss\fcharset238\fprq2 Verdana CE;} -{\f423\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f425\fswiss\fcharset161\fprq2 Verdana Greek;}{\f426\fswiss\fcharset162\fprq2 Verdana Tur;}{\f429\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f430\fswiss\fcharset163\fprq2 Verdana (Vietnamese);} -{\f434\fnil\fcharset0\fprq2 @SimSun Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128; -\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red8\green96\blue168;}{\stylesheet{ -\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{ -\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 1;}{ -\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 2;}{\*\cs10 +{\rtf1\adeflang1025\ansi\ansicpg1252\uc2\adeff0\deff0\stshfdbch13\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe2052{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\f13\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};} +{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f40\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana{\*\falt Tahoma};}{\f103\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;} +{\f151\froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\f152\froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};}{\f154\froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};} +{\f155\froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}{\f156\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\f157\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};} +{\f158\froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\f159\froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};}{\f283\fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f511\fswiss\fcharset238\fprq2 Tahoma CE;} +{\f512\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f514\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f515\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f516\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}{\f517\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);} +{\f518\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f519\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f520\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f551\fswiss\fcharset238\fprq2 Verdana CE{\*\falt Tahoma};} +{\f552\fswiss\fcharset204\fprq2 Verdana Cyr{\*\falt Tahoma};}{\f554\fswiss\fcharset161\fprq2 Verdana Greek{\*\falt Tahoma};}{\f555\fswiss\fcharset162\fprq2 Verdana Tur{\*\falt Tahoma};}{\f558\fswiss\fcharset186\fprq2 Verdana Baltic{\*\falt Tahoma};} +{\f559\fswiss\fcharset163\fprq2 Verdana (Vietnamese){\*\falt Tahoma};}{\f1183\fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255; +\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192; +\red8\green96\blue168;}{\stylesheet{\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \snext0 Normal;}{ +\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 1;}{ +\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\f40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext0 heading 2;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv -\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}} -{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid3286690\rsid4266238\rsid4982015}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator lgao4}{\creatim\yr2008\mo12\dy31\hr15\min18}{\revtim\yr2009\mo5\dy26\hr17\min4}{\version4}{\edmins3} -{\nofpages4}{\nofwords641}{\nofchars3655}{\nofcharsws4288}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}} +\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\loch\f0\hich\af0\dbch\af13\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{ +\s15\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \cbpat9 \rtlch\fcs1 \af36\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe2052\loch\f36\hich\af36\dbch\af13\cgrid\langnp1033\langfenp2052 \sbasedon0 \snext15 \ssemihidden \styrsid9256052 +Document Map;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid200735\rsid747391\rsid804235\rsid1114661\rsid1189587\rsid1720354\rsid2505219\rsid2650853\rsid3286690\rsid3350056\rsid4087862\rsid4144673\rsid4266238\rsid4731505\rsid4982015 +\rsid5065021\rsid5177422\rsid5510712\rsid5648175\rsid5929449\rsid6126508\rsid6228389\rsid6441940\rsid6553824\rsid7094037\rsid7154530\rsid8349431\rsid8794482\rsid9256052\rsid9533504\rsid10230445\rsid10837442\rsid11028874\rsid11357415\rsid11495481 +\rsid11868619\rsid12192700\rsid12275166\rsid12334510\rsid12854407\rsid16059034\rsid16126898\rsid16281781}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator lgao4}{\creatim\yr2008\mo12\dy31\hr15\min18}{\revtim\yr2009\mo11\dy25\hr10\min16}{\version44} +{\edmins6569}{\nofpages4}{\nofwords789}{\nofchars4500}{\nofcharsws5279}{\vern24615}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}} \paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \deftab360\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 -\jcompress\viewkind4\viewscale100\rsidroot4982015 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2 -\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang -{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Name -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw.exe \hich\f38 \endash \loch\f38 build a UEFI image or other image. +\jcompress\viewkind4\viewscale100\rsidroot4982015 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2 +\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \hich )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \hich (} +{\pntxta \hich )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \hich (} +{\pntxta \hich )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \hich (}{\pntxta \hich )}}\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 +\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Name +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw.exe \hich\f40 \endash \loch\f40 build a UEFI image or other image. \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Synopsis -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs18 -\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 \hich\f38 GenFw.exe [options] Filename [Filename]\'85}{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Synopsis +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenF\hich\af40\dbch\af13\loch\f40 \hich\f40 w.exe [options] Filename [Filename]\'85}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Description -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -Genfw is mainly used to process PE32 image to get the expected image data or image file. PE32 is a general-purpose image format that contains, among other information, data identifying the target environment for execution of the image. This utility can mo -\hich\af38\dbch\af13\loch\f38 d\hich\af38\dbch\af13\loch\f38 -ify the standard PE32 image to create UEFI image with EFI subsystem type, PI Terse Executable image with the compact TE image header, zero its dubug data or reset its time stamp. It can also extract PE32 image data to create bin file, extract PE32 image d -\hich\af38\dbch\af13\loch\f38 a\hich\af38\dbch\af13\loch\f38 -ta section to create Acpi table image, or dump PI TE image header information. It can also parse the text MicroCode definition file to create the MicroCode binary image, merge (concatenate) several MicroCode binary images into a single file by pad value a -\hich\af38\dbch\af13\loch\f38 n\hich\af38\dbch\af13\loch\f38 d alignment requirement. This tool also supports the override the input file with the output contents. +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Description +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 +Genfw is mainly used to process PE32 image to get the expected image data or image file. PE32 is a general-purpose image format that contains, among other information, data identifying the target environment\hich\af40\dbch\af13\loch\f40 + for execution of the image. This utility can modify the standard PE32 image to create UEFI image with EFI subsystem type, PI Terse Executable image with the compact TE image header, zero its dubug data or reset its time stamp. It can also extract PE32 im +\hich\af40\dbch\af13\loch\f40 a\hich\af40\dbch\af13\loch\f40 +ge data to create bin file, extract PE32 image data section to create Acpi table image, or dump PI TE image header information. It can also parse the text MicroCode definition file to create the MicroCode binary image, merge (concatenate) several MicroCod +\hich\af40\dbch\af13\loch\f40 e\hich\af40\dbch\af13\loch\f40 binary images into a single file by pad value and alignment requirement. This tool also supports the override the input file with the output contents. \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Options -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs18 -\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Filename1 [FilenameN] -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 {\*\xmlopen\xmlns2{\factoidname City}}{\*\xmlopen\xmlns2{\factoidname place}}\hich\af38\dbch\af13\loch\f38 -Input{\*\xmlclose} {\*\xmlopen\xmlns2{\factoidname State}}\hich\af38\dbch\af13\loch\f38 PE{\*\xmlclose}{\*\xmlclose}/PE32+ image, or TE image, or MicroCode Txt file, or MicroCode bin file. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -o FileName, --outputfile Fi\hich\af38\dbch\af13\loch\f38 leName -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -The EFI image, TeImage, AcpiImage, MicroBin or other modified PE image will be created. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -e EFI_FILETYPE, --efiImage EFI_FILETYPE -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -Create Efi image. EFI_FILETYPE is one of BASE, SEC, PEI_CORE, PEIM, DXE_CORE, DXE_RUNTIME_DRIVER, DXE_SAL_DRIVER, DXE_SM\hich\af38\dbch\af13\loch\f38 -M_DRIVER, UEFI_DRIVER, UEFI_APPLICATIOn, SECURITY_CORE, COMBINED_PEIM_DRIVER, PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER, APPLICATION, SAL_RT_DRIVER, which contains all module types. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -c, --acpi -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Create Acpi table. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -t, --terse -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Create Te Image. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -u, --du\hich\af38\dbch\af13\loch\f38 mp -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Dump TeImage Header information. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -z, --zero -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Zero the Debug Data Fields in the PE image file. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -b, --exe2bin -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Convert the input EXE to the output BIN file. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4982015 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4982015 \hich\af38\dbch\af13\loch\f38 -l, --stripped -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4982015 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4982015 \hich\af38\dbch\af13\loch\f38 Strip }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 off }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4982015 \hich\af38\dbch\af13\loch\f38 the Relocation info from input PE or TE image. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -r, --replace -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Overwrite the input file with the output content. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -s timedate, --stamp timedate -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 \hich\f38 timedate format is \'93\loch\f38 \hich\f38 yyyy-mm-dd 00:00:00\'94 -\loch\f38 \hich\f38 . if timedata is set to \'93\loch\f38 \hich\f38 NOW\'94\loch\f38 , current system time is used. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -m, --mcifile -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Convert input microcode txt definition file to microcode bin f -\hich\af38\dbch\af13\loch\f38 ile. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -j, --join -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Merge multiple microcode bin files to one file. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4266238 \hich\af38\dbch\af13\loch\f38 --keepex}{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 -\b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 c}{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4266238 \hich\af38\dbch\af13\loch\f38 e}{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Options +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Filename1 [FilenameN] +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 {\*\xmlopen\xmlns2{\factoidname place}}{\*\xmlopen\xmlns2{\factoidname City}}\hich\af40\dbch\af13\loch\f40 +Input{\*\xmlclose} {\*\xmlopen\xmlns2{\factoidname State}}\hich\af40\dbch\af13\loch\f40 PE{\*\xmlclose}{\*\xmlclose}/PE32+ image, or TE image, or MicroCode Txt file, or\hich\af40\dbch\af13\loch\f40 MicroCode bin file}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid9533504 \hich\af40\dbch\af13\loch\f40 , or hii binary pakcages}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 . +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -o FileName, --outputfile FileName +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 The EFI image, TeImage, AcpiImage, MicroBin}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid1189587 \hich\af40\dbch\af13\loch\f40 , hii }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid16126898 \hich\af40\dbch\af13\loch\f40 package lists file}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 +\hich\af40\dbch\af13\loch\f40 or other modified PE image will be created. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -e EFI_FILETYPE, --efiImage EFI_FILETYPE +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid11028874 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 \hich\af40\dbch\af13\loch\f40 +Create Efi Image. EFI_FILETYPE is one of BASE, SEC,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 +\hich\af40\dbch\af13\loch\f40 PEI_CORE, PEIM, DXE_CORE,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3350056 \hich\af40\dbch\af13\loch\f40 SMM_CORE,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 +\hich\af40\dbch\af13\loch\f40 DXE_DRIVER, UEFI_APPLICATION,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 +DXE_SAL_DRIVER, UEFI_DRIVER,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 \hich\af40\dbch\af13\loch\f40 D +\hich\af40\dbch\af13\loch\f40 XE_RUNTIME_DRIVER,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 \hich\af40\dbch\af13\loch\f40 +DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 +\hich\af40\dbch\af13\loch\f40 PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIV\hich\af40\dbch\af13\loch\f40 ER,}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid11028874\charrsid11028874 \hich\af40\dbch\af13\loch\f40 APPLICATION, SAL_RT_DRIVER to support all module types}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11028874 \hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -c, --acpi +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Create Acpi table. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -t, --terse +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Create Te Image. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -u, --dump +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Dump TeImage Header\hich\af40\dbch\af13\loch\f40 . +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -z, --zero +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid804235\charrsid804235 \hich\af40\dbch\af13\loch\f40 Zero the Debug Data Fields in the PE input image file.}{ +\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid804235 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid804235\charrsid804235 \hich\af40\dbch\af13\loch\f40 It also zeros the time stamp fields.}{\rtlch\fcs1 +\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690\charrsid804235 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -b, --exe2bin +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Convert the input EXE to t\hich\af40\dbch\af13\loch\f40 he output BIN file. + +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4982015 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4982015 \hich\af40\dbch\af13\loch\f40 -l, --stripped +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid4982015 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid1114661\charrsid5177422 \hich\af40\dbch\af13\loch\f40 Strip off the relocation info}{\rtlch\fcs1 +\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5929449 \hich\af40\dbch\af13\loch\f40 rmation data}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid1114661\charrsid5177422 \hich\af40\dbch\af13\loch\f40 from PE or TE image.}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid4982015 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -s timedate, --stamp timedate +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid7154530 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 timedate fo}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid8794482 \hich\af40\dbch\af13\loch\f40 \hich\f40 rmat is \'93\loch\f40 \hich\f40 yyyy-mm-dd 00:00:00\'94\loch\f40 . }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid8794482 \hich\af40\dbch\af13\loch\f40 I}{\rtlch\fcs1 \af40\afs18 +\ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 \hich\f40 f timedata is set to \'93\loch\f40 \hich\f40 NOW\'94\hich\af40\dbch\af13\loch\f40 , current system time is used.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7154530 +\hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7154530\charrsid7154530 \hich\af40\dbch\af13\loch\f40 The support}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7154530 \hich\af40\dbch\af13\loch\f40 }{ +\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7154530\charrsid7154530 \hich\af40\dbch\af13\loch\f40 date scope is 1970-1-1 8:0:0 ~ 2038-1-19 3:14:07}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid1114661 \hich\af40\dbch\af13\loch\f40 .}{ +\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690\charrsid7154530 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -m, --mcifile +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Convert input microcode txt definition file to microcode bin file. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -j, --join +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Merge multiple microcode bin files to one file. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid12334510 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12334510 \hich\af40\dbch\af13\loch\f40 -a NUM, --align NUM +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid12334510 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12334510 \hich\af40\dbch\af13\loch\f40 +NUM is one HEX or DEC format alignment value, which is used to combine multip}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid1114661 \hich\af40\dbch\af13\loch\f40 le}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12334510 +\hich\af40\dbch\af13\loch\f40 microcode bin files. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid12334510 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid12334510 \hich\af40\dbch\af13\loch\f40 -p NUM, --pad NUM +\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0\pararsid12334510 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12334510 \hich\af40\dbch\af13\loch\f40 +NUM is one HEX or DEC format padding value, which is used to combine multip}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid1114661 \hich\af40\dbch\af13\loch\f40 le}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12334510 +\hich\af40\dbch\af13\loch\f40 microcode b\hich\af40\dbch\af13\loch\f40 in files\hich\af40\dbch\af13\loch\f40 . +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4266238 \hich\af40\dbch\af13\loch\f40 --keepex}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 c}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4266238 \hich\af40\dbch\af13\loch\f40 e}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 ptiontable -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Don\hich\f38 \rquote \loch\f38 t clear exception table. +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Don\hich\f40 \rquote \loch\f40 t clear exception table. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 --keepzeropending -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Don\hich\f38 \rquote \loch\f38 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 --keepzeropending +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Don\hich\f40 \rquote \hich\af40\dbch\af13\loch\f40 t strip zero pending of .reloc. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -a NUM, --align NUM -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 NUM is one HEX or DEC format alignment value, which is used to combi -\hich\af38\dbch\af13\loch\f38 ne multip microcode bin files. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -p NUM, --pad NUM -\par }\pard \ltrpar\ql \li360\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin360\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -NUM is one HEX or DEC format padding value, which is used to combine multip microcode bin files. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -v, --verbose -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Turn on verbose output with informational messages. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -d, --debug level -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \tab \hich\af38\dbch\af13\loch\f38 Enable debug message with\hich\af38\dbch\af13\loch\f38 specified level. -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 --version -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Show program's version number and exit -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 -h, --help -\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Show this help message and exit +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 -r, --replace +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 Overwrite the input file with the output content. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508\charrsid9256052 \hich\af40\dbch\af13\loch\f40 +-g HiiPackageListGuid, --hiiguid HiiPackageListGuid +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 Guid is }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 used t\hich\af40\dbch\af13\loch\f40 o specify hii package list guid.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid9256052 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid9256052 \hich\af40\dbch\af13\loch\f40 Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid9256052 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 --hiipackage\hich\af40\dbch\af13\loch\f40 }{ +\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508 +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 Combine all input binary hii pac +\hich\af40\dbch\af13\loch\f40 k}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 a}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 ges into +\hich\af40\dbch\af13\loch\f40 a single package list as the text resource data}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 file }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 (RC}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 file format}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 ). +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 --hiibinpackage\hich\af40\dbch\af13\loch\f40 +}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508 +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid6126508 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 C}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 ombine all input binary hii pac}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 k}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid6126508 \hich\af40\dbch\af13\loch\f40 a}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 ges into\hich\af40\dbch\af13\loch\f40 + a single package list as the binary resource section\hich\af40\dbch\af13\loch\f40 . +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -v, --verbose +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Turn on verbose output with informational messages. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid3286690 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -d, --debug level +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \tab \hich\af40\dbch\af13\loch\f40 Enable debug message with specified level. +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 --version +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Show program's version number and exit +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 -h, --help +\par }\pard \ltrpar\ql \fi360\li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Show this help message and exit \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Example -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 1. Generate Efi image with the input PE image, module type and the output file name. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 e PEI_CORE PeiMain.dll \hich\f38 \endash \loch\f38 o PeiMain.efi -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 2. Generate Te image with the input PE image and the output file name. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 t PeiMain.dll \hich\f38 \endash \loch\f38 o PeiMain.te -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 3. Generate acpi table image with the input PE image and the output file name. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 c Facs.dll \hich\f38 \endash \loch\f38 o Facs.acpi -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 4. Dump TeImage Header with the input Te\hich\af38\dbch\af13\loch\f38 Image and the output file name. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 u PeiMain.te \hich\f38 \endash \loch\f38 o PeiMain.teheader -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 5. Modify PeImage by zero its debug data. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 z PeiMain.dll \hich\f38 \endash \loch\f38 o Peimain.zero -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 6. Modify PeImage by set new timestamp and override the input image without the output file name. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \loch\af38\dbch\af13\hich\f38 \endash \loch\f38 \hich\f38 s \'93\loch\f38 \hich\f38 2007-8-16 16:06:32\'94\loch\f38 PeiMain.dll \hich\f38 \endash -\loch\f38 r -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 7. Extract bin image from PeImage. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 b PeiMain.dll \hich\f38 \endash \loch\f38 o PeiMain.bin -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 8. Generate the microcode binary file from the micro code txt file. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 m Mci.txt \hich\f38 \endash \loch\f38 o Mci.bin -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 9. Merge t\hich\af38\dbch\af13\loch\f38 he multiple mci binary files to one file. -\par }{\rtlch\fcs1 \ab\af38\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw \hich\f38 \endash \loch\f38 j Mci.bin1 Mci.bin2 Mci.bin3 \hich\f38 \endash \loch\f38 a 32 \hich\f38 \endash \loch\f38 p 0xFF \hich\f38 \endash -\loch\f38 o Mci.bin +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Example +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 1. Generate Efi im\hich\af40\dbch\af13\loch\f40 age with the input PE image, module type and the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 e PEI_CORE PeiMain.dll \hich\f40 \endash \loch\f40 o PeiMain.efi +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 2. Generate Te image with the input PE image and the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 t PeiMain.dll \hich\f40 \endash \loch\f40 o PeiMain.te +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 3. Generate acpi table image with the \hich\af40\dbch\af13\loch\f40 input PE image and the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 c Facs.dll \hich\f40 \endash \loch\f40 o Facs.acpi +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 4. Dump TeImage Header with the input Te Image and the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 u PeiMain.te \hich\f40 \endash \loch\f40 o PeiMain.teheader +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 5. Modify PeImage by zero its debug data. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 z PeiMain.dll \hich\f40 \endash \hich\af40\dbch\af13\loch\f40 o Peimain.zero +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 6. Modify PeImage by set new timestamp and override the input image without the output file name. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 \hich\f40 s \'93\loch\f40 \hich\f40 2007-8-16 16:06:32\'94\loch\f40 PeiMain.dll \hich\f40 \endash \loch\f40 r +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 7. Extract bin image from PeImage. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 b PeiMain.dll \hich\f40 \endash \loch\f40 o PeiMain.bin +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 8. Generate the microcode b\hich\af40\dbch\af13\loch\f40 inary file from the micro code txt file. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 m Mci.txt \hich\f40 \endash \loch\f40 o Mci.bin +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 9. Merge the multiple mci binary files to one file. +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash \loch\f40 j Mci.bin1 Mci.bin2 Mci.bin3 \hich\f40 \endash \loch\f40 a 32 \hich\f40 \endash \loch\f40 p 0xFF \hich\f40 \endash +\loch\f40 o Mci.bin}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid2650853 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12854407 \hich\af40\dbch\af13\loch\f40 10}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2650853 +\hich\af40\dbch\af13\loch\f40 . }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid10230445 \hich\af40\dbch\af13\loch\f40 Generate the text resource file}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2505219 \hich\af40\dbch\af13\loch\f40 }{ +\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4144673 \hich\af40\dbch\af13\loch\f40 (RC format) }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid8349431 \hich\af40\dbch\af13\loch\f40 based o}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid16281781 \hich\af40\dbch\af13\loch\f40 n all input binary HII packages}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6441940 \hich\af40\dbch\af13\loch\f40 and }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid11357415 +\hich\af40\dbch\af13\loch\f40 their package list guid}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2650853 \hich\af40\dbch\af13\loch\f40 . +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid2650853 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 o SampleHii.rc }{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 g }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 D49D2EB0-44D5-4621-9FD6-1A92C9109B99}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 hii\hich\af40\dbch\af13\loch\f40 package }{\rtlch\fcs1 \ab\af40\afs18 +\ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 SampleStr\hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 Sample}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 Vfr}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid2650853\charrsid4731505 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid12854407 \hich\af40\dbch\af13\loch\f40 11.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2650853 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2505219 +\hich\af40\dbch\af13\loch\f40 Generate }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid747391 \hich\af40\dbch\af13\loch\f40 the binary resource section based on \hich\af40\dbch\af13\loch\f40 all input binary HII packages +\hich\af40\dbch\af13\loch\f40 and \hich\af40\dbch\af13\loch\f40 their package list guid}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid747391 \hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid2650853 +\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 GenFw \hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 o SampleHii.bin +\hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 g }{\rtlch\fcs1 +\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 D49D2EB0-44D5-4621-9FD6-1A92C9109B99}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 }{ +\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \loch\af40\dbch\af13\hich\f40 \endash }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 hii}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid10837442 \hich\af40\dbch\af13\loch\f40 bin}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 package }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505\charrsid4731505 +\hich\af40\dbch\af13\loch\f40 SampleStr\hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 Sample}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid4731505 \hich\af40\dbch\af13\loch\f40 Vfr}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 +\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid2650853 \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Bugs -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 No known bugs. -\par \hich\af38\dbch\af13\loch\f38 Report bugs to issues@buildtools.tianocore.org +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Bugs +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 No known bugs. +\par \hich\af40\dbch\af13\loch\f40 Report bugs to issues@buildtools.tianocore.org \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Files -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 None +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Files +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 N\hich\af40\dbch\af13\loch\f40 one \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 See also -\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 None +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 See also +\par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 None \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 -\fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af38\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af38\dbch\af13\loch\f38 License -\par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af38\hich\af38\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 -\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Copyright (c) 2007}{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4982015 \hich\af38\dbch\af13\loch\f38 -2009}{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 -\hich\af38\dbch\af13\loch\f38 Intel Corporation. All rights reserved -\par \hich\af38\dbch\af13\loch\f38 This program and the accompanying materials are licensed and made available -\par \hich\af38\dbch\af13\loch\f38 under the terms and conditions of the BSD License which accompanies this -\par \hich\af38\dbch\af13\loch\f38 distribution. The full text of the license may be found at -\par \hich\af38\dbch\af13\loch\f38 http:\hich\af38\dbch\af13\loch\f38 //opensource.org/licenses/bsd-license.php +\fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \ab\af40\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid3286690 \hich\af40\dbch\af13\loch\f40 License +\par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe2052\loch\af40\hich\af40\dbch\af13\cgrid\langnp1033\langfenp2052 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 +\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Copyright (c) 2007}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4982015 \hich\af40\dbch\af13\loch\f40 -2009}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 +\hich\af40\dbch\af13\loch\f40 Intel Corporation. All rights reserved +\par \hich\af40\dbch\af13\loch\f40 This program and the accompanying materials are licensed and made available +\par \hich\af40\dbch\af13\loch\f40 under the terms and conditions of the BSD License which accompanies this +\par \hich\af40\dbch\af13\loch\f40 distribution. T\hich\af40\dbch\af13\loch\f40 he full text of the license may be found at +\par \hich\af40\dbch\af13\loch\f40 http://opensource.org/licenses/bsd-license.php \par -\par \hich\af38\dbch\af13\loch\f38 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +\par \hich\af40\dbch\af13\loch\f40 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\insrsid3286690 +\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\insrsid3286690 \par }} \ No newline at end of file diff --git a/BaseTools/gcc/mingw-gcc-build.py b/BaseTools/gcc/mingw-gcc-build.py index 0f1f0d313b..0edec75bc4 100755 --- a/BaseTools/gcc/mingw-gcc-build.py +++ b/BaseTools/gcc/mingw-gcc-build.py @@ -175,15 +175,15 @@ class SourceFiles: source_files_x64 = { 'gcc': { - 'url': 'http://gcc-ca.internet.bs/releases/' + \ + 'url': 'http://ftpmirror.gnu.org/gcc/' + \ 'gcc-$version/gcc-$version.tar.bz2', 'version': '4.3.0', 'md5': '197ed8468b38db1d3481c3111691d85b', }, 'mingw_hdr': { - 'url': 'http://downloads.sourceforge.net/project/' + \ - 'mingw-w64/mingw-w64/mingw-w64-snapshot/' + \ - 'mingw-w64-snapshot-$version.tar.bz2', + 'url': 'http://sourceforge.net/projects/' + \ + 'mingw-w64/files/mingw-w64/mingw-w64-snapshot/' + \ + 'mingw-w64-snapshot-$version.tar.bz2/download', 'extract-dir': os.path.join('trunk', 'mingw-w64-headers'), 'version': '20090419', 'md5': '9146ecfabaf172e4cc427b88e8d218c1', @@ -193,10 +193,10 @@ class SourceFiles: source_files_ia32 = { 'gcc': source_files_x64['gcc'], 'mingw_hdr': { - 'url': 'http://downloads.sourceforge.net/project/' + \ - 'mingw/MinGW%20Runtime/' + \ - 'Current%20Release_%20mingwrt-$version/' + \ - 'mingwrt-$version-mingw32-src.tar.gz', + 'url': 'http://sourceforge.net/projects/' + \ + 'mingw/files/MinGW%20Runtime/' + \ + 'mingwrt-$version/' + \ + 'mingwrt-$version-mingw32-src.tar.gz/download', 'extract-dir': 'mingwrt-$version-mingw32', 'version': '3.15.2', 'md5': '7bf0525f158213f3ac990ea68a5ec34d', @@ -261,7 +261,7 @@ class SourceFiles: self.dots = 0 local_file = os.path.join(self.config.src_dir, fdata['filename']) url = fdata['url'] - print 'Downloading %s:' % fname, + print 'Downloading %s:' % fname, if retries > 0: print '(retry)', sys.stdout.flush()