Sync tool code to BuildTools project r1783.
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 29 Dec 2009 06:16:53 +0000 (06:16 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 29 Dec 2009 06:16:53 +0000 (06:16 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9623 6f19259b-4bc3-4df7-8a09-765794883524

88 files changed:
BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib [deleted file]
BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib [deleted file]
BaseTools/Bin/CYGWIN_NT-5.1-i686/BootSectImage [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/BuildEnv [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiLdrImage [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiRom [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenCrc32 [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFfs [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFv [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFw [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenPage [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenSec [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GenVtf [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/GnuGenBootSector [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/LzmaCompress [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/RunBinToolFromBuildDir [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/RunToolFromSource [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/Split [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/TianoCompress [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/VfrCompile [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/VolInfo [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/armcc_wrapper.py
BaseTools/Bin/CYGWIN_NT-5.1-i686/build [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf [new file with mode: 0644]
BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec [new file with mode: 0644]
BaseTools/Bin/Win32/BootSectImage.exe
BaseTools/Bin/Win32/EfiLdrImage.exe
BaseTools/Bin/Win32/EfiRom.exe
BaseTools/Bin/Win32/GenBootSector.exe
BaseTools/Bin/Win32/GenCrc32.exe
BaseTools/Bin/Win32/GenDepex.exe
BaseTools/Bin/Win32/GenFds.exe
BaseTools/Bin/Win32/GenFfs.exe
BaseTools/Bin/Win32/GenFv.exe
BaseTools/Bin/Win32/GenFw.exe
BaseTools/Bin/Win32/GenPage.exe
BaseTools/Bin/Win32/GenSec.exe
BaseTools/Bin/Win32/GenVtf.exe
BaseTools/Bin/Win32/LzmaCompress.exe
BaseTools/Bin/Win32/Spd2Dec.exe
BaseTools/Bin/Win32/Split.exe
BaseTools/Bin/Win32/TianoCompress.exe
BaseTools/Bin/Win32/Trim.exe
BaseTools/Bin/Win32/VfrCompile.exe
BaseTools/Bin/Win32/VolInfo.exe
BaseTools/Bin/Win32/build.exe
BaseTools/BuildEnv
BaseTools/Conf/build_rule.template
BaseTools/Conf/tools_def.template
BaseTools/Source/C/Common/BasePeCoff.c
BaseTools/Source/C/Common/FvLib.c
BaseTools/Source/C/Common/ParseInf.c
BaseTools/Source/C/Common/PeCoffLib.h
BaseTools/Source/C/Common/SimpleFileParsing.c
BaseTools/Source/C/Common/StringFuncs.c
BaseTools/Source/C/EfiRom/EfiRom.h
BaseTools/Source/C/GenFv/GenFv.c
BaseTools/Source/C/GenFv/GenFvInternalLib.c
BaseTools/Source/C/GenFw/GenFw.c
BaseTools/Source/C/GenSec/GenSec.c
BaseTools/Source/C/GenVtf/GenVtf.c
BaseTools/Source/C/GenVtf/GenVtf.h
BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
BaseTools/Source/C/Include/IndustryStandard/PeImage.h
BaseTools/Source/C/Include/X64/ProcessorBind.h
BaseTools/Source/C/Makefiles/app.makefile
BaseTools/Source/C/Makefiles/header.makefile
BaseTools/Source/C/Split/Split.c
BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/Source/C/VfrCompile/VfrSyntax.g
BaseTools/Source/C/VolInfo/VolInfo.c
BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools/Source/Python/Common/Misc.py
BaseTools/Source/Python/GenFds/Fv.py
BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools/Source/Python/build/build.py
BaseTools/Source/Python/sitecustomize.py [new file with mode: 0644]
BaseTools/Tests/TestTools.py
BaseTools/UserManuals/GenFv_Utility_Man_Page.rtf
BaseTools/UserManuals/GenFw_Utility_Man_Page.rtf
BaseTools/gcc/mingw-gcc-build.py

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 (file)
index 5f14954..0000000
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 (file)
index d3efae3..0000000
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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..bd3141a
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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 (file)
index 0000000..4821d24
--- /dev/null
@@ -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
+
index 4d91a264bae7c24af3d660b2f78b2ab4fc3757d2..6d7aa00c4d371bc25e4635015b690e763872fb4f 100755 (executable)
 #
 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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 (file)
index 0000000..2cb8b86
--- /dev/null
@@ -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 $*
+
index a20f3a32ab6913f7cd1a6a74e6beb29c908fcb00..454aa34cff56af0ee2c4fa407d9a94f0963d01e7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ
index 2e3b1023d3a275dbe6f58ebe63bcd2017d7587b5..cfa5475d5013b10dd7f97313f3635da1a61ef72f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index 413f2bb28d298515a5199072bf1936811f9ca0fc..399b2d8818c0d22458df5b7860ea80f7f84a4e52 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ
index 406f903c9a319ae2cfbca595a9e41c2dd87ba15c..e618ad1d7feb588894011cac7ba883f7ebe9346a 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ
index d8185c55de09aac83451073b1928545a84472814..3e4b5e5a1ce70ed627857f363484442fc9702a82 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ
index ba0bc6c3f7bede809179e10d84810d0abf7aaeb3..3959a8048e26fa8fe8e786dc7a2efaf064394317 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenDepex.exe and b/BaseTools/Bin/Win32/GenDepex.exe differ
index 96572b8fce0d7fa5f84b30b73f69f9dfdbf63cb1..65322ef37e0db0968aed70e5c0366fc898a37b1b 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFds.exe and b/BaseTools/Bin/Win32/GenFds.exe differ
index a479bd8d77130923c93b4e64d747ae906d9e656b..bc3e4476a4620c21090ae7f6ddf4983929df17da 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ
index 2281b88a4efbf0ec1dfd9b63563871105a02eeac..485fa10bbcbedae8e2d44ea7ff9786bf56d7a4c1 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ
index cb6f95fec2ac0d1cbb3e4a4c8c21ec38f89fb128..724b50170ae070c7d64e0299b02bd4c137d35184 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ
index 6b64ebc740cc5d0cf1527f6d17ec615a230ca90e..0c47f3fc86fdf127ad7a339b14ef0061ac97a491 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ
index c19a2fddc53ee0112f678dae97b5dc80695a285c..62adbfae5379065386458f1dfaa266c3aa20529f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ
index 19aa09c4aa06966910fcec2c8980b4e8f414dcfb..a222d5e6b8b1406d2876f363c03d7e0c104c1e50 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ
index 76c369fa148ff29627167f394a9671b44a6cb177..b280fb28112763fe86870413392ee8b0a98eef9e 100644 (file)
Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ
index c88b721f029da6de4fe5ad301c1cb1bd547ba163..e1474b6aafd4b39d4a2c45f1f15cc62cd232867b 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Spd2Dec.exe and b/BaseTools/Bin/Win32/Spd2Dec.exe differ
index 2583f3035e247fee5ffe55c3de1828ff146d3097..3e02697d7afa700d32a5714f4f98d9620dc754f4 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ
index 65e7b6502de80789dc2dcf55ae900893009c5578..f9894b0a781d08acd62699b7828a0ed44290ba27 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ
index d99729f1af6c91663ac5594edf8c2908259290c8..9777b80e3f31ae9a9904ca99b2c492c2290d146c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Trim.exe and b/BaseTools/Bin/Win32/Trim.exe differ
index bcf79586605ba9c3a0a019cf54ab413f8cd19363..a193e5bc1441d55dfb42f0a04438f3968200b151 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ
index 116efbdc5b120e9f84d7d9289a19b9b309e22168..32e5218b8fd6c635f5f7cd9befe7c7ba559ff79a 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ
index b636e7075f3cdbd943c9bd0dc5a744a120ae9392..02827fe1ca7ad6b2988073630a21e9a3de1ebd21 100755 (executable)
Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ
index 83e12d769857431df7ba01a893f859d5a85b6685..768e2d5603ecea4c9f52c464f247a535147484e6 100755 (executable)
@@ -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
 
index 0ce61b70706eddec7088ecdc4fde674a704a4971..a77af551aae1122cd6eb31fce3046679d7ce644a 100644 (file)
 \r
     <Command.GCC>\r
         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)\r
+        "$(OBJCOPY)" --only-keep-debug ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pdb\r
+        "$(OBJCOPY)" -S ${dst}\r
         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
 \r
     <Command.RVCT>\r
         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff\r
         # create symbol file for GDB debug\r
         -$(DSYMUTIL) ${src}\r
-        GenFw -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff \r
+        GenFw --xip -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff \r
         $(CP) ${dst} $(OUTPUT_DIR)\r
         $(CP) ${dst} $(BIN_DIR)\r
         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
       otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}\r
       \r
 \r
-[Microcode-File]\r
+[Microcode-File.USER_DEFINED, Microcode-File.Microcode]\r
     <InputFile>\r
-        ?.txt, ?.TXT, ?.Txt, ?.mut\r
+        ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc\r
 \r
     <OutputFile>\r
         $(OUTPUT_DIR)(+)${s_base}.mcb\r
         "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc\r
 \r
     <Command.GCC>\r
-        GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES)\r
-        "$(RC)" (RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}\r
+        GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)\r
+        "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}\r
index cbff0b1666bfce68c3d2b8123a0c934d230237b3..163a35461e069885dfe68297578f5fc80755d030 100644 (file)
@@ -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/\r
 DEFINE CYGWIN_BINIPF           = c:/cygwin/opt/tiano/gcc/ipf/bin/ia64-pc-elf-\r
 \r
+DEFINE GCC44_IA32_PREFIX       = /usr/bin/\r
+#DEFINE GCC44_IA32_PREFIX       = ENV(HOME)/programs/gcc/4.4/ia32/\r
+\r
 DEFINE UNIX_IASL_BIN           = /usr/bin/iasl\r
 #DEFINE UNIX_IASL_BIN           = $(HOME)/programs/iasl\r
 DEFINE WIN_ASL_BIN_DIR         = C:\ASL\r
 DEFINE WIN_IASL_BIN            = DEF(WIN_ASL_BIN_DIR)\iasl.exe\r
 DEFINE WIN_ASL_BIN             = DEF(WIN_ASL_BIN_DIR)\asl.exe\r
 \r
+DEFINE IASL_FLAGS              =\r
 DEFINE IASL_OUTFLAGS           = -p\r
 DEFINE MS_ASL_OUTFLAGS         = /Fo=\r
+DEFINE MS_ASL_FLAGS            =\r
+\r
+DEFINE DEFAULT_WIN_ASL_BIN      = DEF(WIN_IASL_BIN)\r
+DEFINE DEFAULT_WIN_ASL_FLAGS    = DEF(IASL_FLAGS)\r
+DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS)\r
+#DEFINE DEFAULT_WIN_ASL_BIN      = DEF(WIN_ASL_BIN)\r
+#DEFINE DEFAULT_WIN_ASL_FLAGS    = DEF(MS_ASL_FLAGS)\r
+#DEFINE DEFAULT_WIN_ASL_OUTFLAGS = DEF(MS_ASL_OUTFLAGS)\r
 \r
 DEFINE MSFT_ASLPP_FLAGS        = /nologo /EP /C\r
 DEFINE MSFT_ASLCC_FLAGS        = /GL- /Y- /TC /Dmain=ReferenceAcpiTable\r
@@ -113,7 +125,7 @@ DEFINE ICC_WIN_ASLDLINK_FLAGS  = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYS
 \r
 DEFINE IPHONE_TOOLS            = /Developer/Platforms/iPhoneOS.platform/Developer\r
 DEFINE RVCT31_TOOLS_PATH       = c:/Program Files/ARM/RVCT/Programs/3.1/761/win_32-pentium\r
-DEFINE RVCT31CYGWIN_TOOLS_PATH = /cygdrive/c/Program\ Files/ARM/RVCT/Programs/3.1/761/win_32-pentium\r
+DEFINE RVCT31CYGWIN_TOOLS_PATH = /cygdrive/c/Program Files/ARM/RVCT/Programs/3.1/761/win_32-pentium\r
 \r
 # Update to the location of the gcc executables\r
 DEFINE ARMGCC_BIN              = /\r
@@ -223,9 +235,9 @@ DEFINE ARMGCC_BIN              = /
 ##################\r
 # ASL definitions\r
 ##################\r
-*_VS2003_*_ASL_PATH                 = DEF(WIN_IASL_BIN)\r
-*_VS2003_*_ASL_FLAGS                = \r
-*_VS2003_*_ASL_OUTFLAGS             = DEF(IASL_OUTFLAGS)\r
+*_VS2003_*_ASL_PATH                 = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_VS2003_*_ASL_FLAGS                = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_VS2003_*_ASL_OUTFLAGS             = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_VS2003_*_ASLCC_FLAGS              = DEF(MSFT_ASLCC_FLAGS)\r
 *_VS2003_*_ASLPP_FLAGS              = DEF(MSFT_ASLPP_FLAGS)\r
 *_VS2003_*_ASLDLINK_FLAGS           = DEF(MSFT_ASLDLINK_FLAGS)\r
@@ -375,9 +387,9 @@ RELEASE_VS2003xASL_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4086 /OP
 ##################\r
 # ASL definitions\r
 ##################\r
-*_VS2005_*_ASL_PATH               = DEF(WIN_IASL_BIN)\r
-*_VS2005_*_ASL_FLAGS              = \r
-*_VS2005_*_ASL_OUTFLAGS           = DEF(IASL_OUTFLAGS)\r
+*_VS2005_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_VS2005_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_VS2005_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_VS2005_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)\r
 *_VS2005_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)\r
 *_VS2005_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)\r
@@ -619,9 +631,9 @@ RELEASE_VS2005xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF.
 ##################\r
 # ASL definitions\r
 ##################\r
-*_VS2005x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_VS2005x86_*_ASL_FLAGS       = \r
-*_VS2005x86_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_VS2005x86_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_VS2005x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_VS2005x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_VS2005x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)\r
 *_VS2005x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)\r
 *_VS2005x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)\r
@@ -863,9 +875,9 @@ RELEASE_VS2005x86xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:R
 ##################\r
 # ASL definitions\r
 ##################\r
-*_DDK3790_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_DDK3790_*_ASL_FLAGS       = \r
-*_DDK3790_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_DDK3790_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_DDK3790_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_DDK3790_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_DDK3790_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)\r
 *_DDK3790_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)\r
 *_DDK3790_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)\r
@@ -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\r
 DEFINE GCC_X64_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address\r
 DEFINE GCC_IPF_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency\r
-DEFINE GCC_IA32_X64_DLINK_COMMON   = -nostdlib -s --pie --gc-sections\r
+DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib -s --pie\r
+DEFINE GCC_IA32_X64_DLINK_COMMON   = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections\r
 DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)\r
 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\r
 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\r
@@ -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\r
 DEFINE GCC_PP_FLAGS                = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
 DEFINE GCC_VFRPP_FLAGS             = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
+DEFINE GCC_ASLPP_FLAGS             = -x c -E -P\r
+DEFINE GCC_ASLCC_FLAGS             = -x c\r
+DEFINE GCC_WINDRES_FLAGS           = -J rc -O coff\r
+DEFINE GCC_IA32_RC_FLAGS           = -I binary -O elf32-i386        -B i386 --rename-section .data=.hii\r
+DEFINE GCC_X64_RC_FLAGS            = -I binary -O elf64-x86-64      -B i386 --rename-section .data=.hii\r
+DEFINE GCC_IPF_RC_FLAGS            = -I binary -O elf64-ia64-little -B ia64 --rename-section .data=.hii\r
+\r
+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\r
+DEFINE GCC44_IA32_CC_FLAGS           = DEF(GCC44_ALL_CC_FLAGS) -m32 -malign-double -D EFI32\r
+DEFINE GCC44_X64_CC_FLAGS            = DEF(GCC44_ALL_CC_FLAGS) "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -Wno-address\r
+DEFINE GCC44_IA32_X64_DLINK_COMMON   = -nostdlib -n -q --gc-sections\r
+DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry ReferenceAcpiTable -u ReferenceAcpiTable\r
+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\r
+DEFINE GCC44_ASM_FLAGS               = DEF(GCC_ASM_FLAGS)\r
 \r
 ####################################################################################\r
 #\r
@@ -1093,27 +1120,27 @@ DEFINE GCC_VFRPP_FLAGS             = -x c -E -P -DVFRCOMPILE --include $(DEST_DI
 #   UNIXGCC         - UNIX GCC\r
 #   ASL             - Intel Linux ACPI Source Language Compiler (iasl)\r
 *_UNIXGCC_*_*_FAMILY               = GCC\r
-*_UNIXGCC_*_MAKE_PATH              = make\r
-\r
-DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie\r
-*_UNIXGCC_*_PP_FLAGS                     = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
-*_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\r
-*_UNIXGCC_*_ASM_FLAGS                    = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h\r
-*_UNIXGCC_*_VFRPP_FLAGS                  = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
 \r
-##################\r
-# ASL definitions\r
-##################\r
+*_UNIXGCC_*_MAKE_PATH                    = make\r
 *_UNIXGCC_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)\r
-*_UNIXGCC_*_ASL_FLAGS                    = \r
+\r
+*_UNIXGCC_IA32_DLINK_FLAGS               = DEF(GCC_IA32_X64_DLINK_FLAGS)\r
+*_UNIXGCC_X64_DLINK_FLAGS                = DEF(GCC_IA32_X64_DLINK_FLAGS)\r
+*_UNIXGCC_IA32_ASLDLINK_FLAGS            = DEF(GCC_IA32_X64_ASLDLINK_FLAGS)\r
+*_UNIXGCC_X64_ASLDLINK_FLAGS             = DEF(GCC_IA32_X64_ASLDLINK_FLAGS)\r
+*_UNIXGCC_*_ASM_FLAGS                    = DEF(GCC_ASM_FLAGS)\r
+*_UNIXGCC_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)\r
+*_UNIXGCC_*_ASLPP_FLAGS                  = DEF(GCC_ASLPP_FLAGS)\r
+*_UNIXGCC_*_ASLCC_FLAGS                  = DEF(GCC_ASLCC_FLAGS)\r
+*_UNIXGCC_*_VFRPP_FLAGS                  = DEF(GCC_VFRPP_FLAGS)\r
+*_UNIXGCC_*_APP_FLAGS                    = \r
+*_UNIXGCC_*_ASL_FLAGS                    = DEF(IASL_FLAGS)\r
 *_UNIXGCC_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)\r
-*_UNIXGCC_*_ASLPP_FLAGS                  = -x c -E -P\r
-*_UNIXGCC_*_ASLCC_FLAGS                  = -x c\r
-*_UNIXGCC_*_ASLDLINK_FLAGS               = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable\r
 \r
 ##################\r
 # IA32 definitions\r
 ##################\r
+*_UNIXGCC_IA32_OBJCOPY_PATH         = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)objcopy\r
 *_UNIXGCC_IA32_PP_PATH              = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc\r
 *_UNIXGCC_IA32_CC_PATH              = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc\r
 *_UNIXGCC_IA32_SLINK_PATH           = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)ar\r
@@ -1123,10 +1150,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_UNIXGCC_IA32_ASLDLINK_PATH        = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)ld\r
 *_UNIXGCC_IA32_ASM_PATH             = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc\r
 *_UNIXGCC_IA32_VFRPP_PATH           = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc\r
-*_UNIXGCC_IA32_RC_PATH              = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)windres\r
+*_UNIXGCC_IA32_RC_PATH              = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)objcopy\r
 \r
-*_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 \r
-*_UNIXGCC_IA32_RC_FLAGS             = -J rc -O coff\r
+*_UNIXGCC_IA32_CC_FLAGS             = DEF(GCC_IA32_CC_FLAGS)\r
+*_UNIXGCC_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)\r
+*_UNIXGCC_IA32_OBJCOPY_FLAGS        =\r
 \r
 ##################\r
 # X64 definitions\r
@@ -1140,10 +1168,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_UNIXGCC_X64_PP_PATH               = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc\r
 *_UNIXGCC_X64_ASLPP_PATH            = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc\r
 *_UNIXGCC_X64_VFRPP_PATH            = DEF(UNIXGCC_X64_PETOOLS_PREFIX)gcc\r
-*_UNIXGCC_X64_RC_PATH               = DEF(UNIXGCC_X64_PETOOLS_PREFIX)windres\r
+*_UNIXGCC_X64_RC_PATH               = DEF(UNIXGCC_X64_PETOOLS_PREFIX)objcopy\r
 \r
-*_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\r
-*_UNIXGCC_X64_RC_FLAGS              = -J rc -O coff\r
+*_UNIXGCC_X64_CC_FLAGS              = DEF(GCC_X64_CC_FLAGS)\r
+*_UNIXGCC_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)\r
 \r
 ##################\r
 # IPF definitions\r
@@ -1161,11 +1189,54 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_UNIXGCC_IPF_SYMRENAME_PATH       = DEF(UNIXGCC_IPF_PETOOLS_PREFIX)objcopy\r
 *_UNIXGCC_IPF_RC_PATH              = DEF(UNIXGCC_IPF_PETOOLS_PREFIX)objcopy\r
 \r
-*_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\r
-*_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\r
-*_UNIXGCC_IPF_OBJCOPY_FLAGS        = -I elf64-ia64-little -O efi-bsdrv-ia64\r
-*_UNIXGCC_IPF_SYMRENAME_FLAGS      = --redefine-sym memcpy=CopyMem\r
-*_UNIXGCC_IPF_RC_FLAGS             = -I binary -O elf64-ia64 --rename-section .data=.hii\r
+*_UNIXGCC_IPF_CC_FLAGS             = DEF(GCC_IPF_CC_FLAGS)\r
+*_UNIXGCC_IPF_DLINK_FLAGS          = DEF(GCC_IPF_DLINK_FLAGS)\r
+*_UNIXGCC_IPF_OBJCOPY_FLAGS        = DEF(GCC_IPF_OBJCOPY_FLAGS)\r
+*_UNIXGCC_IPF_SYMRENAME_FLAGS      = DEF(GCC_IPF_SYMRENAME_FLAGS)\r
+*_UNIXGCC_IPF_RC_FLAGS             = DEF(GCC_IPF_RC_FLAGS)\r
+\r
+\r
+####################################################################################\r
+#\r
+# GCC 4.4 - This configuration is used to compile under Linux to produce\r
+#           PE/COFF binaries using GCC 4.4.\r
+#\r
+####################################################################################\r
+*_GCC44_*_*_FAMILY               = GCC\r
+\r
+*_GCC44_*_MAKE_PATH                    = make\r
+*_GCC44_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)\r
+\r
+*_GCC44_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)\r
+*_GCC44_*_ASLPP_FLAGS                  = DEF(GCC_ASLPP_FLAGS)\r
+*_GCC44_*_ASLCC_FLAGS                  = DEF(GCC_ASLCC_FLAGS)\r
+*_GCC44_*_VFRPP_FLAGS                  = DEF(GCC_VFRPP_FLAGS)\r
+*_GCC44_*_APP_FLAGS                    = \r
+*_GCC44_*_ASL_FLAGS                    = DEF(IASL_FLAGS)\r
+*_GCC44_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)\r
+\r
+##################\r
+# GCC44 IA32 definitions\r
+##################\r
+*_GCC44_IA32_CC_PATH              = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_SLINK_PATH           = DEF(GCC44_IA32_PREFIX)ar\r
+*_GCC44_IA32_DLINK_PATH           = DEF(GCC44_IA32_PREFIX)ld\r
+*_GCC44_IA32_ASLDLINK_PATH        = DEF(GCC44_IA32_PREFIX)ld\r
+*_GCC44_IA32_ASM_PATH             = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_PP_PATH              = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_VFRPP_PATH           = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_ASLCC_PATH           = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_ASLPP_PATH           = DEF(GCC44_IA32_PREFIX)gcc\r
+*_GCC44_IA32_RC_PATH              = DEF(GCC44_IA32_PREFIX)objcopy\r
+*_GCC44_IA32_OBJCOPY_PATH         = DEF(GCC44_IA32_PREFIX)objcopy\r
+\r
+*_GCC44_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32\r
+*_GCC44_IA32_ASLDLINK_FLAGS       = DEF(GCC44_IA32_X64_ASLDLINK_FLAGS) -m elf_i386\r
+*_GCC44_IA32_ASM_FLAGS            = DEF(GCC44_ASM_FLAGS) -m32 --32 -march=i386\r
+*_GCC44_IA32_CC_FLAGS             = DEF(GCC44_IA32_CC_FLAGS)\r
+*_GCC44_IA32_DLINK_FLAGS          = DEF(GCC44_IA32_X64_DLINK_FLAGS) -m elf_i386 --oformat=elf32-i386\r
+*_GCC44_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)\r
+*_GCC44_IA32_OBJCOPY_FLAGS        =\r
 \r
 ####################################################################################\r
 #\r
@@ -1178,23 +1249,21 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 \r
 *_CYGGCC_*_*_DLL                 = DEF(CYGWIN_BIN)\r
 *_CYGGCC_*_MAKE_PATH             = DEF(MS_VS_BIN)\nmake.exe\r
-\r
-*_CYGGCC_*_MAKE_FLAGS                 = /nologo\r
-*_CYGGCC_*_PP_FLAGS                   = -E -x assembler-with-cpp -include AutoGen.h\r
-*_CYGGCC_*_DLINK_FLAGS                = -nostdlib -O2 --gc-sections --dll --export-all-symbols --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20\r
-*_CYGGCC_*_ASM_FLAGS                  = -c -x assembler -imacros AutoGen.h\r
-*_CYGGCC_*_APP_FLAGS                  = -E -x assembler\r
-*_CYGGCC_*_VFRPP_FLAGS                = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h\r
-\r
-##################\r
-# ASL definitions\r
-##################\r
-*_CYGGCC_*_ASL_PATH                   = DEF(WIN_IASL_BIN)\r
-*_CYGGCC_*_ASL_FLAGS                  = \r
-*_CYGGCC_*_ASL_OUTFLAGS               = DEF(IASL_OUTFLAGS)\r
-*_CYGGCC_*_ASLPP_FLAGS                = -x c -E -P\r
-*_CYGGCC_*_ASLCC_FLAGS                = -x c\r
-*_CYGGCC_*_ASLDLINK_FLAGS             = -nostdlib -s --pie --gc-sections --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)\r
+*_CYGGCC_*_ASL_PATH              = DEF(DEFAULT_WIN_ASL_BIN)\r
+\r
+*_CYGGCC_IA32_DLINK_FLAGS               = DEF(GCC_IA32_X64_DLINK_FLAGS)\r
+*_CYGGCC_X64_DLINK_FLAGS                = DEF(GCC_IA32_X64_DLINK_FLAGS)\r
+*_CYGGCC_IA32_ASLDLINK_FLAGS            = DEF(GCC_IA32_X64_ASLDLINK_FLAGS)\r
+*_CYGGCC_X64_ASLDLINK_FLAGS             = DEF(GCC_IA32_X64_ASLDLINK_FLAGS)\r
+*_CYGGCC_*_MAKE_FLAGS                   = /nologo\r
+*_CYGGCC_*_ASM_FLAGS                    = DEF(GCC_ASM_FLAGS)                             \r
+*_CYGGCC_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)\r
+*_CYGGCC_*_ASLPP_FLAGS                  = DEF(GCC_ASLPP_FLAGS)\r
+*_CYGGCC_*_ASLCC_FLAGS                  = DEF(GCC_ASLCC_FLAGS)\r
+*_CYGGCC_*_VFRPP_FLAGS                  = DEF(GCC_VFRPP_FLAGS)\r
+*_CYGGCC_*_APP_FLAGS                    = \r
+*_CYGGCC_*_ASL_FLAGS                    = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_CYGGCC_*_ASL_OUTFLAGS                 = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 \r
 ##################\r
 # IA32 definitions\r
@@ -1209,10 +1278,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCC_IA32_ASLCC_PATH         = DEF(CYGWIN_BINIA32)gcc\r
 *_CYGGCC_IA32_ASLPP_PATH         = DEF(CYGWIN_BINIA32)gcc\r
 *_CYGGCC_IA32_ASLDLINK_PATH      = DEF(CYGWIN_BINIA32)ld\r
-*_CYGGCC_IA32_RC_PATH            = DEF(CYGWIN_BINIA32)windres\r
+*_CYGGCC_IA32_RC_PATH            = DEF(CYGWIN_BINIA32)objcopy\r
 \r
-*_CYGGCC_IA32_CC_FLAGS           = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h\r
-*_CYGGCC_IA32_RC_FLAGS           = -J rc -O coff\r
+*_CYGGCC_IA32_CC_FLAGS           = DEF(GCC_IA32_CC_FLAGS)\r
+*_CYGGCC_IA32_RC_FLAGS           = DEF(GCC_IA32_RC_FLAGS)\r
 \r
 ##################\r
 # X64 definitions\r
@@ -1227,10 +1296,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCC_X64_ASLCC_PATH          = DEF(CYGWIN_BINX64)gcc\r
 *_CYGGCC_X64_ASLPP_PATH          = DEF(CYGWIN_BINX64)gcc\r
 *_CYGGCC_X64_ASLDLINK_PATH       = DEF(CYGWIN_BINX64)ld\r
-*_CYGGCC_X64_RC_PATH             = DEF(CYGWIN_BINX64)windres\r
+*_CYGGCC_X64_RC_PATH             = DEF(CYGWIN_BINX64)objcopy\r
 \r
-*_CYGGCC_X64_CC_FLAGS            = -Os -fshort-wchar -fno-strict-aliasing -mno-red-zone -Wall -Werror -c -include AutoGen.h -D_EFI_P64\r
-*_CYGGCC_X64_RC_FLAGS            = -J rc -O coff\r
+*_CYGGCC_X64_CC_FLAGS            = DEF(GCC_X64_CC_FLAGS)\r
+*_CYGGCC_X64_RC_FLAGS            = DEF(GCC_X64_RC_FLAGS)\r
 \r
 ##################\r
 # IPF definitions\r
@@ -1248,11 +1317,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCC_IPF_SYMRENAME_PATH      = DEF(CYGWIN_BINIPF)objcopy\r
 *_CYGGCC_IPF_RC_PATH             = DEF(CYGWIN_BINIPF)objcopy\r
 \r
-*_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\r
-*_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\r
-*_CYGGCC_IPF_OBJCOPY_FLAGS        = -I elf64-ia64-little -O efi-bsdrv-ia64\r
-*_CYGGCC_IPF_SYMRENAME_FLAGS      = --redefine-sym memcpy=CopyMem\r
-*_CYGGCC_IPF_RC_FLAGS             = -I binary -O elf64-ia64 --rename-section .data=.hii\r
+*_CYGGCC_IPF_CC_FLAGS             = DEF(GCC_IPF_CC_FLAGS)\r
+*_CYGGCC_IPF_DLINK_FLAGS          = DEF(GCC_IPF_DLINK_FLAGS)\r
+*_CYGGCC_IPF_OBJCOPY_FLAGS        = DEF(GCC_IPF_OBJCOPY_FLAGS)\r
+*_CYGGCC_IPF_SYMRENAME_FLAGS      = DEF(GCC_IPF_SYMRENAME_FLAGS)\r
+*_CYGGCC_IPF_RC_FLAGS             = DEF(GCC_IPF_RC_FLAGS)\r
 \r
 ##################\r
 # EBC definitions\r
@@ -1312,10 +1381,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCCxASL_IA32_ASLCC_PATH         = DEF(CYGWIN_BINIA32)gcc\r
 *_CYGGCCxASL_IA32_ASLPP_PATH         = DEF(CYGWIN_BINIA32)gcc\r
 *_CYGGCCxASL_IA32_ASLDLINK_PATH      = DEF(CYGWIN_BINIA32)ld\r
-*_CYGGCCxASL_IA32_RC_PATH            = DEF(CYGWIN_BINIA32)windres\r
+*_CYGGCCxASL_IA32_RC_PATH            = DEF(CYGWIN_BINIA32)objcopy\r
 \r
-*_CYGGCCxASL_IA32_CC_FLAGS           = -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -c -include AutoGen.h\r
-*_CYGGCCxASL_IA32_RC_FLAGS           = -J rc -O coff\r
+*_CYGGCCxASL_IA32_CC_FLAGS           = DEF(GCC_IA32_CC_FLAGS)\r
+*_CYGGCCxASL_IA32_RC_FLAGS           = DEF(GCC_IA32_RC_FLAGS)\r
 \r
 ##################\r
 # X64 definitions\r
@@ -1330,10 +1399,10 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCCxASL_X64_ASLCC_PATH          = DEF(CYGWIN_BINX64)gcc\r
 *_CYGGCCxASL_X64_ASLPP_PATH          = DEF(CYGWIN_BINX64)gcc\r
 *_CYGGCCxASL_X64_ASLDLINK_PATH       = DEF(CYGWIN_BINX64)ld\r
-*_CYGGCCxASL_X64_RC_PATH             = DEF(CYGWIN_BINX64)windres\r
+*_CYGGCCxASL_X64_RC_PATH             = DEF(CYGWIN_BINX64)objcopy\r
 \r
-*_CYGGCCxASL_X64_CC_FLAGS            = -Os -fshort-wchar -fno-strict-aliasing -mno-red-zone -Wall -Werror -c -include AutoGen.h -D_EFI_P64\r
-*_CYGGCCxASL_X64_RC_FLAGS            = -J rc -O coff\r
+*_CYGGCCxASL_X64_CC_FLAGS            = DEF(GCC_X64_CC_FLAGS)\r
+*_CYGGCCxASL_X64_RC_FLAGS            = DEF(GCC_X64_RC_FLAGS)\r
 \r
 ##################\r
 # IPF definitions\r
@@ -1351,11 +1420,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_CYGGCCxASL_IPF_SYMRENAME_PATH      = DEF(CYGWIN_BINIPF)objcopy\r
 *_CYGGCCxASL_IPF_RC_PATH             = DEF(CYGWIN_BINIPF)objcopy\r
 \r
-*_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\r
-*_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\r
-*_CYGGCCxASL_IPF_OBJCOPY_FLAGS        = -I elf64-ia64-little -O efi-bsdrv-ia64\r
-*_CYGGCCxASL_IPF_SYMRENAME_FLAGS      = --redefine-sym memcpy=CopyMem\r
-*_CYGGCCxASL_IPF_RC_FLAGS             = -I binary -O elf64-ia64 --rename-section .data=.hii\r
+*_CYGGCCxASL_IPF_CC_FLAGS             = DEF(GCC_IPF_CC_FLAGS)\r
+*_CYGGCCxASL_IPF_DLINK_FLAGS          = DEF(GCC_IPF_DLINK_FLAGS)\r
+*_CYGGCCxASL_IPF_OBJCOPY_FLAGS        = DEF(GCC_IPF_OBJCOPY_FLAGS)\r
+*_CYGGCCxASL_IPF_SYMRENAME_FLAGS      = DEF(GCC_IPF_SYMRENAME_FLAGS)\r
+*_CYGGCCxASL_IPF_RC_FLAGS             = DEF(GCC_IPF_RC_FLAGS)\r
 \r
 ##################\r
 # EBC definitions\r
@@ -1390,15 +1459,16 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 # ASL definitions\r
 ##################\r
 *_ELFGCC_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)\r
-*_ELFGCC_*_ASL_FLAGS                    = \r
+*_ELFGCC_*_ASL_FLAGS                    = DEF(IASL_FLAGS)\r
 *_ELFGCC_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)\r
 *_ELFGCC_*_ASLPP_FLAGS                  = -x c -E -P\r
 *_ELFGCC_*_ASLCC_FLAGS                  = -x c\r
-*_ELFGCC_*_ASLDLINK_FLAGS               = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable\r
+*_ELFGCC_*_ASLDLINK_FLAGS               = DEF(GCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable\r
 \r
 ##################\r
 # IA32 definitions\r
 ##################\r
+*_ELFGCC_IA32_OBJCOPY_PATH          = DEF(ELFGCC_BIN)/objcopy\r
 *_ELFGCC_IA32_CC_PATH               = DEF(ELFGCC_BIN)/gcc\r
 *_ELFGCC_IA32_SLINK_PATH            = DEF(ELFGCC_BIN)/ar\r
 *_ELFGCC_IA32_DLINK_PATH            = DEF(ELFGCC_BIN)/ld\r
@@ -1414,10 +1484,11 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 *_ELFGCC_IA32_SLINK_FLAGS           =\r
 *_ELFGCC_IA32_DLINK_FLAGS           = -melf_i386 -nostdlib --shared --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)\r
 #*_ELFGCC_IA32_DLINK_FLAGS          = -melf_i386 -nostdlib -n -q -Ttext 0x220 --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)\r
-*_ELFGCC_IA32_ASM_FLAGS             = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h\r
+*_ELFGCC_IA32_ASM_FLAGS             = -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h\r
 *_ELFGCC_IA32_PP_FLAGS              = -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
 *_ELFGCC_IA32_VFRPP_FLAGS           = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
-*_ELFGCC_IA32_RC_FLAGS              = -I binary -O elf32-i386 -B i386 --rename-section .data=.hii\r
+*_ELFGCC_IA32_RC_FLAGS              = DEF(GCC_IA32_RC_FLAGS)\r
+*_ELFGCC_IA32_OBJCOPY_FLAGS         =\r
 \r
 ##################\r
 # X64 definitions\r
@@ -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\r
 *_ELFGCC_X64_PP_FLAGS              = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
 *_ELFGCC_X64_VFRPP_FLAGS           = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
-*_ELFGCC_X64_RC_FLAGS              = -I binary -O elf64-x86-64 -B i386 --rename-section .data=.hii\r
+*_ELFGCC_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)\r
 \r
 ##################\r
 # IPF definitions\r
@@ -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\r
 *_ELFGCC_IPF_PP_FLAGS             = -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h\r
 *_ELFGCC_IPF_VFRPP_FLAGS          = -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h\r
-*_ELFGCC_IPF_RC_FLAGS             = -I binary -O elf64-ia64-little -B ia64 --rename-section .data=.hii\r
+*_ELFGCC_IPF_RC_FLAGS             = DEF(GCC_IPF_RC_FLAGS)\r
 \r
 ####################################################################################\r
 #\r
@@ -1485,9 +1556,9 @@ DEFINE UNIXGCC_DLINK_FLAGS_COMMON        = -nostdlib -s --pie
 ##################\r
 # ASL definitions\r
 ##################\r
-*_ICC_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_ICC_*_ASL_FLAGS       = \r
-*_ICC_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_ICC_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_ICC_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_ICC_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_ICC_*_ASLCC_FLAGS     = DEF(ICC_WIN_ASLCC_FLAGS)\r
 *_ICC_*_ASLPP_FLAGS     = DEF(ICC_WIN_ASLPP_FLAGS)\r
 *_ICC_*_ASLDLINK_FLAGS  = DEF(ICC_WIN_ASLDLINK_FLAGS)\r
@@ -1612,9 +1683,9 @@ RELEASE_ICC_IPF_DLINK_FLAGS              = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT
 ##################\r
 # ASL definitions\r
 ##################\r
-*_ICCxASL_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_ICCxASL_*_ASL_FLAGS       =\r
-*_ICCxASL_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_ICCxASL_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_ICCxASL_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_ICCxASL_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_ICCxASL_*_ASLCC_FLAGS     = DEF(ICC_WIN_ASLCC_FLAGS)\r
 *_ICCxASL_*_ASLPP_FLAGS     = DEF(ICC_WIN_ASLPP_FLAGS)\r
 *_ICCxASL_*_ASLDLINK_FLAGS  = DEF(ICC_WIN_ASLDLINK_FLAGS)\r
@@ -1740,9 +1811,9 @@ RELEASE_ICCxASL_IPF_DLINK_FLAGS              = /NOLOGO /NODEFAULTLIB /LTCG /DLL
 ##################\r
 # ASL definitions\r
 ##################\r
-*_ICCx86_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_ICCx86_*_ASL_FLAGS       =\r
-*_ICCx86_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_ICCx86_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_ICCx86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_ICCx86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_ICCx86_*_ASLCC_FLAGS     = DEF(ICC_WIN_ASLCC_FLAGS)\r
 *_ICCx86_*_ASLPP_FLAGS     = DEF(ICC_WIN_ASLPP_FLAGS)\r
 *_ICCx86_*_ASLDLINK_FLAGS  = DEF(ICC_WIN_ASLDLINK_FLAGS)\r
@@ -1989,9 +2060,9 @@ RELEASE_ICCx86xASL_IPF_DLINK_FLAGS              = /NOLOGO /NODEFAULTLIB /LTCG /D
 ##################\r
 # ASL definitions\r
 ##################\r
-*_MYTOOLS_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
-*_MYTOOLS_*_ASL_FLAGS       =\r
-*_MYTOOLS_*_ASL_OUTFLAGS    = DEF(IASL_OUTFLAGS)\r
+*_MYTOOLS_*_ASL_PATH        = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_MYTOOLS_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_MYTOOLS_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
 *_MYTOOLS_*_ASLCC_FLAGS     = DEF(ICC_WIN_ASLCC_FLAGS)\r
 *_MYTOOLS_*_ASLPP_FLAGS     = DEF(ICC_WIN_ASLPP_FLAGS)\r
 *_MYTOOLS_*_ASLDLINK_FLAGS  = DEF(ICC_WIN_ASLDLINK_FLAGS)\r
@@ -2115,10 +2186,11 @@ RELEASE_MYTOOLS_IPF_DLINK_FLAGS          = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT
 \r
 *_XCODE32_*_MAKE_PATH        = make\r
 \r
-# This tool needs to be installed seperatly from Xcode 3.2\r
-*_XCODE32_*_MTOC_PATH        = /Developer/usr/bin/mtoc\r
 *_XCODE32_*_DSYMUTIL_PATH    = /usr/bin/dsymutil\r
 \r
+# This tool needs to be installed seperatly from Xcode 3.2\r
+*_XCODE32_*_MTOC_PATH        = /usr/local/bin/mtoc\r
+\r
   DEBUG_XCODE32_*_MTOC_FLAGS = -align 0x20 -d $(DEBUG_DIR)/$(MODULE_NAME).dll\r
 RELEASE_XCODE32_*_MTOC_FLAGS = -align 0x20 \r
 \r
@@ -2136,8 +2208,8 @@ RELEASE_XCODE32_*_MTOC_FLAGS = -align 0x20
 *_XCODE32_IA32_ASLPP_PATH   = gcc\r
 *_XCODE32_IA32_ASLDLINK_PATH  = ld\r
 \r
-  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\r
-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\r
+  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\r
+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\r
 *_XCODE32_IA32_SLINK_FLAGS      = -static -o\r
   DEBUG_XCODE32_IA32_ASM_FLAGS  = -arch i386 -g\r
 RELEASE_XCODE32_IA32_ASM_FLAGS  = -arch i386 \r
@@ -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\r
 \r
 *_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\r
-*_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\r
+*_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\r
 *_XCODE32_IA32_ASLPP_FLAGS      = -arch i386 -x c -E \r
 *_XCODE32_IA32_ASL_FLAGS        =\r
 \r
@@ -2166,7 +2238,7 @@ RELEASE_XCODE32_IA32_CC_FLAGS   = -arch i386 -Oz -combine -mms-bitfields  -fshor
 *_XCODE32_X64_ASLPP_PATH   = gcc\r
 *_XCODE32_X64_ASLDLINK_PATH  = ld\r
 \r
-*_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\r
+*_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\r
 *_XCODE32_X64_SLINK_FLAGS      = -static -o\r
 \r
   DEBUG_XCODE32_X64_ASM_FLAGS  = -arch x86_64 -g\r
@@ -2185,7 +2257,6 @@ RELEASE_XCODE32_X64_CC_FLAGS   = -arch x86_64 -Oz -combine -mms-bitfields -fshor
 *_XCODE32_ARM_ARCHASM_FLAGS   = -arch armv6 \r
 *_XCODE32_ARM_ARCHDLINK_FLAGS = -arch armv6 \r
 *_XCODE32_ARM_PLATFORM_FLAGS  =\r
-*_XCODE32_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib\r
 \r
 *_XCODE32_ARM_CC_PATH       = DEF(IPHONE_TOOLS)/usr/bin/gcc\r
 *_XCODE32_ARM_SLINK_PATH    = DEF(IPHONE_TOOLS)/usr/bin/libtool\r
@@ -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\r
 *_XCODE32_ARM_VFRPP_PATH    = DEF(IPHONE_TOOLS)/usr/bin/gcc\r
 \r
-  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)\r
-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)\r
+  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 \r
+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 \r
 \r
 *_XCODE32_ARM_SLINK_FLAGS      = -static -o\r
 \r
@@ -2224,10 +2295,9 @@ RELEASE_XCODE32_ARM_CC_FLAGS   = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-inter
 *_RVCT31_ARM_ARCHASM_FLAGS   = --cpu ARM1176JZF-S\r
 *_RVCT31_ARM_ARCHDLINK_FLAGS = \r
 *_RVCT31_ARM_PLATFORM_FLAGS  =\r
-*_RVCT31_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib\r
 \r
-  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)\r
-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)\r
+  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 \r
+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 \r
 \r
 \r
 *_RVCT31_ARM_ASM_FLAGS       = $(ARCHASM_FLAGS) --apcs /interwork\r
@@ -2275,10 +2345,9 @@ RELEASE_RVCT31_ARM_CC_FLAGS  = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) --c90 -c --no_a
 *_RVCT31CYGWIN_ARM_ARCHASM_FLAGS   = --cpu ARM1176JZF-S\r
 *_RVCT31CYGWIN_ARM_ARCHDLINK_FLAGS = \r
 *_RVCT31CYGWIN_ARM_PLATFORM_FLAGS  =\r
-*_RVCT31CYGWIN_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib\r
 \r
-  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)\r
-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)\r
+  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` \r
+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` \r
 \r
 *_RVCT31CYGWIN_ARM_ASM_FLAGS       = "$(ASMPATH_FLAG)" $(ARCHASM_FLAGS) --apcs /interwork\r
 *_RVCT31CYGWIN_ARM_PP_FLAGS        = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E\r
@@ -2313,11 +2382,11 @@ RELEASE_RVCT31CYGWIN_ARM_CC_FLAGS  = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM
 # ASL definitions\r
 ##################\r
 *_ARMGCC_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)\r
-*_ARMGCCC_*_ASL_FLAGS                    = \r
+*_ARMGCC_*_ASL_FLAGS                    = DEF(IASL_FLAGS) \r
 *_ARMGCC_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)\r
 *_ARMGCC_*_ASLPP_FLAGS                  = -x c -E -P\r
 *_ARMGCC_*_ASLCC_FLAGS                  = -x c\r
-*_ARMGCC_*_ASLDLINK_FLAGS               = DEF(UNIXGCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable\r
+*_ARMGCC_*_ASLDLINK_FLAGS               = DEF(GCC_DLINK_FLAGS_COMMON) --entry _ReferenceAcpiTable\r
 \r
 ##################\r
 # ARM definitions\r
@@ -2341,7 +2410,6 @@ RELEASE_RVCT31CYGWIN_ARM_CC_FLAGS  = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM
 *_ARMGCC_ARM_ARCHASM_FLAGS   = \r
 *_ARMGCC_ARM_ARCHDLINK_FLAGS = \r
 *_ARMGCC_ARM_PLATFORM_FLAGS  =\r
-*_ARMGCC_ARM_INTRINSIC_FLAGS = CompilerIntrinsicsLib.lib\r
 \r
   DEBUG_ARMGCC_ARM_ASM_FLAGS   = $(ARCHASM_FLAGS) -mlittle-endian -g\r
 RELEASE_ARMGCC_ARM_ASM_FLAGS   = $(ARCHASM_FLAGS) -mlittle-endian\r
index 0166c22460fbc3ca5a05c9bc7f826d55e725e505..5ffb5d45032468dffdcfa96c73e928d5784bd6c5 100644 (file)
@@ -1173,6 +1173,9 @@ Returns:
           ImageContext->PdbPointer = (CHAR8 *) ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY);\r
           break;\r
 \r
+        case CODEVIEW_SIGNATURE_MTOC:\r
+          ImageContext->PdbPointer = (CHAR8 *) ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY);\r
+\r
         default:\r
           break;\r
         }\r
@@ -1377,6 +1380,8 @@ PeCoffLoaderGetPdbPointer (
           return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY));\r
         case CODEVIEW_SIGNATURE_RSDS:\r
           return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY));\r
+        case CODEVIEW_SIGNATURE_MTOC:\r
+          return (VOID *) ((CHAR8 *)CodeViewEntryPointer + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY));\r
         default:\r
           break;\r
         }\r
@@ -1386,3 +1391,50 @@ PeCoffLoaderGetPdbPointer (
 \r
   return NULL;\r
 }\r
+\r
+\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderGetEntryPoint (\r
+  IN  VOID  *Pe32Data,\r
+  OUT VOID  **EntryPoint,\r
+  OUT VOID  **BaseOfImage\r
+  )\r
+{\r
+  EFI_IMAGE_DOS_HEADER                  *DosHdr;\r
+  EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION   Hdr;\r
+\r
+  DosHdr = (EFI_IMAGE_DOS_HEADER *)Pe32Data;\r
+  if (DosHdr->e_magic == EFI_IMAGE_DOS_SIGNATURE) {\r
+    //\r
+    // DOS image header is present, so read the PE header after the DOS image header.\r
+    //\r
+    Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN) Pe32Data + (UINTN) ((DosHdr->e_lfanew) & 0x0ffff));\r
+  } else {\r
+    //\r
+    // DOS image header is not present, so PE header is at the image base.\r
+    //\r
+    Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)Pe32Data;\r
+  }\r
+\r
+  //\r
+  // Calculate the entry point relative to the start of the image.\r
+  // AddressOfEntryPoint is common for PE32 & PE32+\r
+  //\r
+  if (Hdr.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) {\r
+    *BaseOfImage = (VOID *)(UINTN)(Hdr.Te->ImageBase + Hdr.Te->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER));\r
+    *EntryPoint = (VOID *)((UINTN)*BaseOfImage + (Hdr.Te->AddressOfEntryPoint & 0x0ffffffff) + sizeof(EFI_TE_IMAGE_HEADER) - Hdr.Te->StrippedSize);\r
+    return RETURN_SUCCESS;\r
+  } else if (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) {\r
+    *EntryPoint = (VOID *)(UINTN)Hdr.Pe32->OptionalHeader.AddressOfEntryPoint;\r
+    if (Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+      *BaseOfImage = (VOID *)(UINTN)Hdr.Pe32->OptionalHeader.ImageBase;\r
+    } else {\r
+      *BaseOfImage = (VOID *)(UINTN)Hdr.Pe32Plus->OptionalHeader.ImageBase;\r
+    }\r
+    *EntryPoint = (VOID *)(UINTN)((UINTN)*EntryPoint + (UINTN)*BaseOfImage);\r
+    return RETURN_SUCCESS;\r
+  }\r
+\r
+  return RETURN_UNSUPPORTED;\r
+}\r
index dc50e877e64e3417c01b6665ac5bc06562300010..a6f17e17a89b21a1af4ed8ac9017d057a30cdd5a 100644 (file)
@@ -110,6 +110,7 @@ Returns:
   }\r
 \r
   *FvHeader = mFvHeader;\r
+  *FvLength = mFvLength;\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -200,7 +201,7 @@ Returns:
   //\r
   // Get next file, compensate for 8 byte alignment if necessary.\r
   //\r
-  *NextFile = (EFI_FFS_FILE_HEADER *) (((UINTN) CurrentFile + GetLength (CurrentFile->Size) + 0x07) & (-1 << 3));\r
+  *NextFile = (EFI_FFS_FILE_HEADER *) ((((UINTN) CurrentFile - (UINTN) mFvHeader + GetLength (CurrentFile->Size) + 0x07) & (-1 << 3)) + (UINT8 *) mFvHeader);\r
 \r
   //\r
   // Verify file is in this FV.\r
index b39c5bde4022527333b78ce2914b0e1952cb8452..cd10da9b2dd872ab3b79255013c20becf23bd4a6 100644 (file)
@@ -506,7 +506,7 @@ Returns:
     // Verify string is a hex number\r
     //\r
     for (Index = 2; Index < strlen (AsciiString); Index++) {\r
-      if (isxdigit (AsciiString[Index]) == 0) {\r
+      if (isxdigit ((int)AsciiString[Index]) == 0) {\r
         return EFI_ABORTED;\r
       }\r
     }\r
@@ -536,7 +536,7 @@ Returns:
     // Verify string is a number\r
     //\r
     for (Index = 0; Index < strlen (AsciiString); Index++) {\r
-      if (isdigit (AsciiString[Index]) == 0) {\r
+      if (isdigit ((int)AsciiString[Index]) == 0) {\r
         return EFI_ABORTED;\r
       }\r
     }\r
index fc2e4cafc942517f4f82a42d586bc5f288f25cb7..077a66c5d7713c060fa6b26bcad7804836d51d92 100644 (file)
@@ -134,4 +134,14 @@ PeCoffLoaderGetPdbPointer (
   IN VOID  *Pe32Data\r
   )\r
 ;\r
+\r
+RETURN_STATUS\r
+EFIAPI\r
+PeCoffLoaderGetEntryPoint (\r
+  IN  VOID  *Pe32Data,\r
+  OUT VOID  **EntryPoint,\r
+  OUT VOID  **BaseOfImage\r
+  )\r
+;\r
+\r
 #endif\r
index 5a7111c8ebbd1d6b023a63015498b51f7d0ef5e7..68cdc630c153e05ad747e01242a66389258021c9 100644 (file)
@@ -328,7 +328,7 @@ Notes:
   }\r
 \r
   if ((Len = t_strcmp (mGlobals.SourceFile.FileBufferPtr, Str)) > 0) {\r
-    if (isalnum (mGlobals.SourceFile.FileBufferPtr[Len])) {\r
+    if (isalnum ((int)mGlobals.SourceFile.FileBufferPtr[Len])) {\r
       return FALSE;\r
     }\r
 \r
@@ -543,26 +543,26 @@ Returns:
     return FALSE;\r
   }\r
 \r
-  if (isdigit (mGlobals.SourceFile.FileBufferPtr[0])) {\r
+  if (isdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) {\r
     //\r
     // Check for hex value\r
     //\r
     if ((mGlobals.SourceFile.FileBufferPtr[0] == T_CHAR_0) && (mGlobals.SourceFile.FileBufferPtr[1] == T_CHAR_LC_X)) {\r
-      if (!isxdigit (mGlobals.SourceFile.FileBufferPtr[2])) {\r
+      if (!isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[2])) {\r
         return FALSE;\r
       }\r
 \r
       mGlobals.SourceFile.FileBufferPtr += 2;\r
       sscanf (mGlobals.SourceFile.FileBufferPtr, "%x", &Val);\r
       *Value = (UINT32) Val;\r
-      while (isxdigit (mGlobals.SourceFile.FileBufferPtr[0])) {\r
+      while (isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) {\r
         mGlobals.SourceFile.FileBufferPtr++;\r
       }\r
 \r
       return TRUE;\r
     } else {\r
       *Value = atoi (mGlobals.SourceFile.FileBufferPtr);\r
-      while (isdigit (mGlobals.SourceFile.FileBufferPtr[0])) {\r
+      while (isdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) {\r
         mGlobals.SourceFile.FileBufferPtr++;\r
       }\r
 \r
@@ -1239,7 +1239,7 @@ GetHexChars (
   UINT32  Len;\r
   Len = 0;\r
   while (!EndOfFile (&mGlobals.SourceFile) && (BufferLen > 0)) {\r
-    if (isxdigit (mGlobals.SourceFile.FileBufferPtr[0])) {\r
+    if (isxdigit ((int)mGlobals.SourceFile.FileBufferPtr[0])) {\r
       *Buffer = mGlobals.SourceFile.FileBufferPtr[0];\r
       Buffer++;\r
       Len++;\r
index b0ad2d165e10939337e7e3dcb382244c73618adf..f65ba96661c1152f9ceefe3cdcc572099d914dfc 100644 (file)
@@ -87,7 +87,7 @@ Returns:
   //\r
   // Remove leading whitespace\r
   //\r
-  for (Pos = String; isspace (*Pos); Pos++) {\r
+  for (Pos = String; isspace ((int)*Pos); Pos++) {\r
   }\r
   if (Pos != String) {\r
     memmove (String, Pos, strlen (Pos) + 1);\r
@@ -114,7 +114,7 @@ Returns:
   // Remove trailing whitespace\r
   //\r
   for (Pos = String + strlen (String);\r
-       ((Pos - 1) >= String) && (isspace (*(Pos - 1)));\r
+       ((Pos - 1) >= String) && (isspace ((int)*(Pos - 1)));\r
        Pos--\r
       ) {\r
   }\r
@@ -160,12 +160,12 @@ Returns:
   Output = NewStringList ();\r
 \r
   for (Pos = String, Item = 0; Pos < EndOfString; Item++) {\r
-    while (isspace (*Pos)) {\r
+    while (isspace ((int)*Pos)) {\r
       Pos++;\r
     }\r
 \r
     for (EndOfSubString=Pos;\r
-         (*EndOfSubString != '\0') && !isspace (*EndOfSubString);\r
+         (*EndOfSubString != '\0') && !isspace ((int)*EndOfSubString);\r
          EndOfSubString++\r
          ) {\r
     }\r
index 2689c2293c629ec53cc39415ae385d004e5c409d..65c77c4034804a45101b594c9a7934666c0ee7ca 100644 (file)
@@ -1,13 +1,13 @@
 /** @file\r
 \r
-Copyright (c) 1999 - 2008 Intel Corporation. All rights reserved\r
-This software and associated documentation (if any) is furnished\r
-under a license and may only be used or copied in accordance\r
-with the terms of the license. Except as permitted by such\r
-license, no part of this software or documentation may be\r
-reproduced, stored in a retrieval system, or transmitted in any\r
-form or by any means without the express written consent of\r
-Intel Corporation.\r
+Copyright (c)  1999-2008 Intel Corporation. All rights reserved\r
+This program and the accompanying materials are licensed and made available \r
+under the terms and conditions of the BSD License which accompanies this \r
+distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 \r
 Module Name:  \r
index f2ff2d29cd00ce503342653e976c16f1dfcfb43c..135c9ed23f8e3335b0518739a6c92ef3b7450cfc 100644 (file)
@@ -134,11 +134,11 @@ Returns:
   fprintf (stdout, "  -m logfile, --map logfile\n\\r
                         Logfile is the output fv map file name. if it is not\n\\r
                         given, the FvName.map will be the default map file name\n"); \r
-  fprintf (stdout, "  -g Guid, --guid GuidValue\n\\r
+  fprintf (stdout, "  -g Guid, --guid Guid\n\\r
                         GuidValue is one specific capsule guid value\n\\r
                         or fv file system guid value.\n\\r
                         Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n");\r
-  fprintf (stdout, "  --FvNameGuid          GuidValue is the Fv Name Guid value.\n\\r
+  fprintf (stdout, "  --FvNameGuid Guid     Guid is used to specify Fv Name.\n\\r
                         Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n");\r
   fprintf (stdout, "  --capflag CapFlag     Capsule Reset Flag can be PersistAcrossReset,\n\\r
                         or PopulateSystemTable or InitiateReset or not set\n");\r
index 6b5d6bda2a15fcf8a05c0cf4e3c1eeae933cb3c5..d17a2ff1a8f3c030f92445c0b5c3e671aa4cda7c 100644 (file)
@@ -2975,7 +2975,7 @@ Returns:
         return EFI_OUT_OF_RESOURCES;\r
       }\r
       memset ((VOID *) MemoryImagePointer, 0, (UINTN) ImageContext.ImageSize + ImageContext.SectionAlignment);\r
-      ImageContext.ImageAddress = ((UINTN) MemoryImagePointer + ImageContext.SectionAlignment - 1) & (~(ImageContext.SectionAlignment - 1));\r
+      ImageContext.ImageAddress = ((UINTN) MemoryImagePointer + ImageContext.SectionAlignment - 1) & (~((INT64)ImageContext.SectionAlignment - 1));\r
       \r
       Status =  PeCoffLoaderLoadImage (&ImageContext);\r
       if (EFI_ERROR (Status)) {\r
index e72f05286969297f84d45990160be97621d4707f..aabd143b6a1f6891866c18c1bdf264a6b5326435 100644 (file)
@@ -77,6 +77,7 @@ Abstract:
 #define FW_MERGE_IMAGE       8\r
 #define FW_RELOC_STRIPEED_IMAGE 9\r
 #define FW_HII_PACKAGE_LIST_RCIMAGE 10\r
+#define FW_HII_PACKAGE_LIST_BINIMAGE 11\r
 \r
 #define DUMP_TE_HEADER       0x11\r
 \r
@@ -198,10 +199,10 @@ Returns:
   fprintf (stdout, "  -o FileName, --outputfile FileName\n\\r
                         File will be created to store the ouput content.\n");\r
   fprintf (stdout, "  -e EFI_FILETYPE, --efiImage EFI_FILETYPE\n\\r
-                        Create Efi Image. EFI_FILETYPE is one of BASE, SEC,\n\\r
+                        Create Efi Image. EFI_FILETYPE is one of BASE,SMM_CORE,\n\\r
                         PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, UEFI_APPLICATION,\n\\r
-                        DXE_SAL_DRIVER, UEFI_DRIVER, DXE_RUNTIME_DRIVER, \n\\r
-                        DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER, \n\\r
+                        SEC, DXE_SAL_DRIVER, UEFI_DRIVER, DXE_RUNTIME_DRIVER,\n\\r
+                        DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER,\n\\r
                         PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER,\n\\r
                         APPLICATION, SAL_RT_DRIVER to support all module types\n\\r
                         It can only be used together with --keepexceptiontable,\n\\r
@@ -235,7 +236,7 @@ Returns:
                         except for -o, -r option. It is a action option.\n\\r
                         If it is combined with other action options, the later\n\\r
                         input action option will override the previous one.\n");;\r
-  fprintf (stdout, "  -l, --stripped        Relocation info stripped from the input PE or TE image.\n\\r
+  fprintf (stdout, "  -l, --stripped        Strip off the relocation info from PE or TE image.\n\\r
                         It can't be combined with other action options\n\\r
                         except for -o, -r option. It is a action option.\n\\r
                         If it is combined with other action options, the later\n\\r
@@ -272,7 +273,7 @@ Returns:
                         If more input files are specified,\n\\r
                         the last input file will be as the output file.\n");\r
   fprintf (stdout, "  -g HiiPackageListGuid, --hiiguid HiiPackageListGuid\n\\r
-                        HiiListPackageGuidGuid is from the module guid.\n\\r
+                        Guid is used to specify hii package list guid.\n\\r
                         Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n\\r
                         If not specified, the first Form FormSet guid is used.\n");\r
   fprintf (stdout, "  --hiipackage          Combine all input binary hii pacakges into \n\\r
@@ -281,6 +282,12 @@ Returns:
                         except for -o option. It is a action option.\n\\r
                         If it is combined with other action options, the later\n\\r
                         input action option will override the previous one.\n");\r
+  fprintf (stdout, "  --hiibinpackage       Combine all input binary hii pacakges into \n\\r
+                        a single package list as the binary resource section.\n\\r
+                        It can't be combined with other action options\n\\r
+                        except for -o option. It is a action option.\n\\r
+                        If it is combined with other action options, the later\n\\r
+                        input action option will override the previous one.\n");\r
   fprintf (stdout, "  -v, --verbose         Turn on verbose output with informational messages.\n");\r
   fprintf (stdout, "  -q, --quiet           Disable all messages except key message and fatal error\n");\r
   fprintf (stdout, "  -d, --debug level     Enable debug messages, at input debug level.\n");\r
@@ -501,12 +508,6 @@ UINT32 DataOffset;
 UINT32 HiiRsrcOffset;\r
 UINT32 RelocOffset;\r
 \r
-//\r
-// HiiBinData\r
-//\r
-UINT8* HiiBinData = NULL;\r
-UINT32 HiiBinSize = 0;\r
-\r
 EFI_IMAGE_BASE_RELOCATION *CoffBaseRel;\r
 UINT16 *CoffEntryRel;\r
 \r
@@ -628,122 +629,60 @@ CreateSectionHeader(
 }\r
 \r
 VOID\r
-GetBinaryHiiData (\r
-  CHAR8   *RcString,\r
-  UINT32  Size,\r
+SetHiiResourceHeader (\r
+  UINT8   *HiiBinData,\r
   UINT32  OffsetToFile\r
   )\r
 {\r
-  unsigned  Data16;\r
-  UINT32  HiiBinOffset;\r
   UINT32  Index;\r
   EFI_IMAGE_RESOURCE_DIRECTORY        *ResourceDirectory;\r
   EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY  *ResourceDirectoryEntry;\r
   EFI_IMAGE_RESOURCE_DIRECTORY_STRING *ResourceDirectoryString;\r
   EFI_IMAGE_RESOURCE_DATA_ENTRY       *ResourceDataEntry;\r
 \r
-  Index = 0;\r
-  while (Index < Size && *RcString != '\0' && *RcString != '{') {\r
-    RcString ++;\r
-    Index ++;\r
-  }\r
-  \r
-  if (*RcString == '\0' || Index == Size) {\r
-    return;\r
-  }\r
-  \r
-  //\r
-  // Skip '{' character\r
-  // Skip space and ',' character\r
-  //\r
-  RcString ++;\r
-  Index ++;\r
-  while (Index < Size && *RcString != '\0' && (isspace (*RcString) || *RcString == ',')){\r
-    RcString ++;\r
-    Index ++;\r
-  }\r
-\r
-  //\r
-  // '}' end character\r
-  //\r
-  if (*RcString == '}' || Index == Size) {\r
-    return;\r
-  }\r
-\r
-  HiiBinOffset = 0;\r
-  HiiBinSize   = 0x1000;\r
-  HiiBinData   = (UINT8 *) malloc (HiiBinSize);\r
-  if (HiiBinData == NULL) {\r
-    return;\r
-  }\r
-  memset (HiiBinData, 0, HiiBinSize);\r
   //\r
   // Fill Resource section entry\r
   //\r
-  ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + HiiBinOffset);\r
-  HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY);\r
-  ResourceDirectory->NumberOfNamedEntries = 1;\r
-\r
-  ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiBinData + HiiBinOffset);\r
-  HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY);\r
-  ResourceDirectoryEntry->u1.s.NameIsString = 1;\r
-  ResourceDirectoryEntry->u1.s.NameOffset   = HiiBinOffset;\r
+  ResourceDirectory      = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData);\r
+  ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1);\r
+  for (Index = 0; Index < ResourceDirectory->NumberOfNamedEntries; Index ++) {\r
+    if (ResourceDirectoryEntry->u1.s.NameIsString) {\r
+      ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiBinData + ResourceDirectoryEntry->u1.s.NameOffset);\r
 \r
-  ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiBinData + HiiBinOffset);\r
-  ResourceDirectoryString->Length = 3;\r
-  ResourceDirectoryString->String[0] =L'H';\r
-  ResourceDirectoryString->String[1] =L'I';\r
-  ResourceDirectoryString->String[2] =L'I';\r
-  HiiBinOffset = HiiBinOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]);\r
+      if (ResourceDirectoryString->Length == 3 &&\r
+          ResourceDirectoryString->String[0] == L'H' &&\r
+          ResourceDirectoryString->String[1] == L'I' &&\r
+          ResourceDirectoryString->String[2] == L'I') {\r
+        //\r
+        // Resource Type "HII" found\r
+        //\r
+        if (ResourceDirectoryEntry->u2.s.DataIsDirectory) {\r
+          //\r
+          // Move to next level - resource Name\r
+          //\r
+          ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + ResourceDirectoryEntry->u2.s.OffsetToDirectory);\r
+          ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1);\r
 \r
-  ResourceDirectoryEntry->u2.OffsetToData = HiiBinOffset;\r
-  ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiBinData + HiiBinOffset);\r
-  HiiBinOffset += sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY);\r
-  ResourceDataEntry->OffsetToData = OffsetToFile + HiiBinOffset;\r
+          if (ResourceDirectoryEntry->u2.s.DataIsDirectory) {\r
+            //\r
+            // Move to next level - resource Language\r
+            //\r
+            ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiBinData + ResourceDirectoryEntry->u2.s.OffsetToDirectory);\r
+            ResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (ResourceDirectory + 1);\r
+          }\r
+        }\r
 \r
-  while (sscanf (RcString, "0x%X", &Data16) != EOF) {\r
-    //\r
-    // Convert the string data to the binary data.\r
-    //\r
-    *(UINT16 *)(HiiBinData + HiiBinOffset) = (UINT16) Data16;\r
-    HiiBinOffset += 2;\r
-    //\r
-    // Jump to the next data.\r
-    //\r
-    RcString = RcString + 2 + 4;\r
-    Index    = Index + 2 + 4;\r
-    //\r
-    // Skip space and ',' character\r
-    //\r
-    while (Index < Size && *RcString != '\0' && (isspace (*RcString) || *RcString == ',')){\r
-      RcString ++;\r
-      Index ++;\r
-    }\r
-    //\r
-    // '}' end character\r
-    //\r
-    if (*RcString == '}'|| Index == Size) {\r
-      break;\r
-    }\r
-    //\r
-    // Check BinBuffer size\r
-    //\r
-    if (HiiBinOffset >= HiiBinSize) {\r
-      HiiBinSize += 0x1000;\r
-      HiiBinData = (UINT8 *) realloc (HiiBinData, HiiBinSize);\r
-      //\r
-      // Memory allocation is failure.\r
-      //\r
-      if (HiiBinData == NULL) {\r
-        HiiBinSize = 0;\r
-        break;\r
+        //\r
+        // Now it ought to be resource Data and update its OffsetToData value \r
+        //\r
+        if (!ResourceDirectoryEntry->u2.s.DataIsDirectory) {\r
+          ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiBinData + ResourceDirectoryEntry->u2.OffsetToData);\r
+          ResourceDataEntry->OffsetToData = ResourceDataEntry->OffsetToData + OffsetToFile;\r
+          break;\r
+        }\r
       }\r
     }\r
-  }\r
-\r
-  if (HiiBinData != NULL) {\r
-    HiiBinSize = HiiBinOffset;\r
-    ResourceDataEntry->Size = HiiBinSize + OffsetToFile - ResourceDataEntry->OffsetToData;\r
+    ResourceDirectoryEntry++;\r
   }\r
   \r
   return;\r
@@ -867,10 +806,11 @@ ScanSections(
           Error (NULL, 0, 3000, "Invalid", "Unsupported section alignment.");\r
         }\r
       }\r
-      GetBinaryHiiData ((CHAR8*)Ehdr + shdr->sh_offset, shdr->sh_size, HiiRsrcOffset);\r
-      if (HiiBinSize != 0) {\r
-        CoffOffset += HiiBinSize;\r
+      if (shdr->sh_size != 0) {\r
+        CoffSectionsOffset[i] = CoffOffset;\r
+        CoffOffset += shdr->sh_size;\r
         CoffOffset = CoffAlign(CoffOffset);\r
+        SetHiiResourceHeader ((UINT8*) Ehdr + shdr->sh_offset, HiiRsrcOffset);\r
       }\r
       break;\r
     }\r
@@ -972,13 +912,8 @@ ScanSections(
             EFI_IMAGE_SCN_CNT_INITIALIZED_DATA\r
             | EFI_IMAGE_SCN_MEM_READ);\r
 \r
-    NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = HiiBinSize;\r
+    NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = RelocOffset - HiiRsrcOffset;\r
     NtHdr->Pe32.OptionalHeader.DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = HiiRsrcOffset;\r
-\r
-    memcpy(CoffFile + HiiRsrcOffset, HiiBinData, HiiBinSize);\r
-    free (HiiBinData);\r
-    HiiBinData = NULL;\r
-    HiiBinSize = 0;\r
   } else {\r
     // Don't make a section of size 0. \r
     NtHdr->Pe32.FileHeader.NumberOfSections--;\r
@@ -1398,6 +1333,7 @@ ConvertElf (
   //\r
   WriteSections(IsTextShdr);\r
   WriteSections(IsDataShdr);\r
+  WriteSections(IsHiiRsrcShdr);\r
   VerboseMsg ("Write and relocate sections.");\r
 \r
   //\r
@@ -1430,6 +1366,279 @@ ConvertElf (
   }\r
 }\r
 \r
+\r
+EFI_IMAGE_OPTIONAL_HEADER_UNION *\r
+GetPeCoffHeader (\r
+  void *Data\r
+  )\r
+{\r
+  EFI_IMAGE_DOS_HEADER             *DosHdr;\r
+  EFI_IMAGE_OPTIONAL_HEADER_UNION  *PeHdr;\r
+\r
+  //\r
+  // Read the dos & pe hdrs of the image\r
+  //\r
+  DosHdr = (EFI_IMAGE_DOS_HEADER *)Data;\r
+  if (DosHdr->e_magic != EFI_IMAGE_DOS_SIGNATURE) {\r
+    // NO DOS header, check for PE/COFF header\r
+    PeHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(Data);\r
+    if (PeHdr->Pe32.Signature != EFI_IMAGE_NT_SIGNATURE) {\r
+      return NULL;\r
+    }\r
+  } else {\r
+\r
+    PeHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(((UINT8 *)Data) + DosHdr->e_lfanew);\r
+    if (PeHdr->Pe32.Signature != EFI_IMAGE_NT_SIGNATURE) {\r
+      return NULL;\r
+    }\r
+  }\r
+  \r
+  return PeHdr;\r
+}\r
+\r
+void\r
+PeCoffConvertImageToXip (\r
+  UINT8  **FileBuffer,\r
+  UINT32 *FileLength\r
+  )\r
+{\r
+  EFI_IMAGE_OPTIONAL_HEADER_UNION  *PeHdr;\r
+  EFI_IMAGE_OPTIONAL_HEADER_UNION  *NewPeHdr;\r
+  EFI_IMAGE_SECTION_HEADER         *SectionHeader;\r
+  UINTN                            TotalNecessaryFileSize;\r
+  UINTN                            SectionSize;\r
+  UINT8                            *XipFile;\r
+  UINT32                           XipLength;\r
+  UINTN                            Index;\r
+  UINTN                            FirstSectionOffset;\r
+  BOOLEAN                          ConversionNeeded;\r
+\r
+  PeHdr = GetPeCoffHeader ((void *) *FileBuffer);\r
+  if (PeHdr == NULL) {\r
+    return;\r
+  }\r
+  \r
+  if (PeHdr->Pe32.OptionalHeader.SectionAlignment != PeHdr->Pe32.OptionalHeader.FileAlignment) {\r
+    //\r
+    // The only reason to expand zero fill sections is to make them compatible with XIP images.\r
+    // If SectionAlignment is not equal to FileAlginment then it is not an XIP type image.\r
+    //\r
+    return;\r
+  }\r
+\r
+  //\r
+  // Calculate size of XIP file, and determine if the conversion is needed.\r
+  //\r
+  ConversionNeeded = FALSE;\r
+  XipLength = 0;\r
+  FirstSectionOffset = *FileLength;\r
+  TotalNecessaryFileSize = 0;\r
+  SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(PeHdr->Pe32.OptionalHeader) + PeHdr->Pe32.FileHeader.SizeOfOptionalHeader);\r
+  for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index ++, SectionHeader ++) {\r
+    SectionSize = MAX (SectionHeader->Misc.VirtualSize, SectionHeader->SizeOfRawData);\r
+    TotalNecessaryFileSize += SectionSize;\r
+    if (SectionSize > 0) {\r
+      FirstSectionOffset = MIN (FirstSectionOffset, SectionHeader->VirtualAddress);\r
+      XipLength = MAX (XipLength, SectionHeader->VirtualAddress + SectionSize);\r
+      if (SectionHeader->VirtualAddress != SectionHeader->PointerToRawData) {\r
+        ConversionNeeded = TRUE;\r
+      }\r
+    }\r
+    if (SectionHeader->Misc.VirtualSize > SectionHeader->SizeOfRawData) {\r
+      ConversionNeeded = TRUE;\r
+    }\r
+  }\r
+\r
+  if (FirstSectionOffset < PeHdr->Pe32.OptionalHeader.SizeOfHeaders) {\r
+    //\r
+    // If one of the sections should be loaded to an offset overlapping with\r
+    // the executable header, then it cannot be made into an XIP image.\r
+    //\r
+    VerboseMsg ("PE/COFF conversion to XIP is impossible due to overlap");\r
+    VerboseMsg ("of section data with the executable header.");\r
+    return;\r
+  }\r
+\r
+  if (FirstSectionOffset == *FileLength) {\r
+    //\r
+    // If we never found a section with a non-zero size, then we\r
+    // skip the conversion.\r
+    //\r
+    return;\r
+  }\r
+\r
+  TotalNecessaryFileSize += FirstSectionOffset;\r
+\r
+  if (!ConversionNeeded) {\r
+    return;\r
+  }\r
+\r
+  if (XipLength > (2 * TotalNecessaryFileSize)) {\r
+    VerboseMsg ("PE/COFF conversion to XIP appears to be larger than necessary.");\r
+    VerboseMsg ("The image linking process may have left unused memory ranges.");\r
+  }\r
+\r
+  if (PeHdr->Pe32.FileHeader.PointerToSymbolTable != 0) {\r
+    //\r
+    // This field is obsolete and should be zero\r
+    //\r
+    PeHdr->Pe32.FileHeader.PointerToSymbolTable = 0;\r
+  }\r
+\r
+  //\r
+  // Allocate the extra space that we need to grow the image\r
+  //\r
+  XipFile = malloc (XipLength);\r
+  memset (XipFile, 0, XipLength);\r
+\r
+  //\r
+  // Copy the file headers\r
+  //\r
+  memcpy (XipFile, *FileBuffer, PeHdr->Pe32.OptionalHeader.SizeOfHeaders);\r
+\r
+  NewPeHdr = GetPeCoffHeader ((void *)XipFile);\r
+  if (NewPeHdr == NULL) {\r
+    free (XipFile);\r
+    return;\r
+  }\r
+\r
+  //\r
+  // Copy the section data over to the appropriate XIP offsets\r
+  //\r
+  SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(NewPeHdr->Pe32.OptionalHeader) + NewPeHdr->Pe32.FileHeader.SizeOfOptionalHeader);\r
+  for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index ++, SectionHeader ++) {\r
+    if (SectionHeader->SizeOfRawData > 0) {\r
+      memcpy (\r
+        XipFile + SectionHeader->VirtualAddress,\r
+        *FileBuffer + SectionHeader->PointerToRawData,\r
+        SectionHeader->SizeOfRawData\r
+        );\r
+    }\r
+    SectionHeader->SizeOfRawData = SectionHeader->Misc.VirtualSize;\r
+    SectionHeader->PointerToRawData = SectionHeader->VirtualAddress;\r
+  }\r
+\r
+  free (*FileBuffer);\r
+  *FileLength = XipLength;\r
+  *FileBuffer = XipFile;\r
+}\r
+\r
+UINT8 *\r
+CreateHiiResouceSectionHeader (\r
+  UINT32 *pSectionHeaderSize, \r
+  UINT32 HiiDataSize\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+  Create COFF resource section header\r
+\r
+Arguments:\r
+\r
+  pSectionHeaderSize - Pointer to section header size.\r
+  HiiDataSize        - Size of the total HII data in section.\r
+\r
+Returns:\r
+  The created section header buffer.\r
+\r
+--*/\r
+{\r
+  UINT32  HiiSectionHeaderSize;\r
+  UINT32  HiiSectionOffset;\r
+  UINT8   *HiiSectionHeader;\r
+  EFI_IMAGE_RESOURCE_DIRECTORY        *ResourceDirectory;\r
+  EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY  *TypeResourceDirectoryEntry;\r
+  EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY  *NameResourceDirectoryEntry;\r
+  EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY  *LanguageResourceDirectoryEntry;\r
+  EFI_IMAGE_RESOURCE_DIRECTORY_STRING *ResourceDirectoryString;\r
+  EFI_IMAGE_RESOURCE_DATA_ENTRY       *ResourceDataEntry;\r
+\r
+  //\r
+  // Calculate the total size for the resource header (include Type, Name and Language)\r
+  // then allocate memory for the resource header.\r
+  //\r
+  HiiSectionHeaderSize = 3 * (sizeof (EFI_IMAGE_RESOURCE_DIRECTORY) + sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY)) \r
+                          + 3 * (sizeof (UINT16) + 3 * sizeof (CHAR16)) \r
+                          + sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY);\r
+  HiiSectionHeader = malloc (HiiSectionHeaderSize);\r
+  memset (HiiSectionHeader, 0, HiiSectionHeaderSize);\r
+\r
+  HiiSectionOffset = 0;\r
+  //\r
+  // Create Type entry \r
+  //\r
+  ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY);\r
+  ResourceDirectory->NumberOfNamedEntries = 1;\r
+  TypeResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY);\r
+  TypeResourceDirectoryEntry->u1.s.NameIsString      = 1;\r
+  TypeResourceDirectoryEntry->u2.s.DataIsDirectory   = 1;\r
+  TypeResourceDirectoryEntry->u2.s.OffsetToDirectory = HiiSectionOffset;\r
+  //\r
+  // Create Name entry\r
+  //\r
+  ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY);\r
+  ResourceDirectory->NumberOfNamedEntries = 1;\r
+  NameResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY);\r
+  NameResourceDirectoryEntry->u1.s.NameIsString      = 1;\r
+  NameResourceDirectoryEntry->u2.s.DataIsDirectory   = 1;\r
+  NameResourceDirectoryEntry->u2.s.OffsetToDirectory = HiiSectionOffset;\r
+  //\r
+  // Create Language entry\r
+  //\r
+  ResourceDirectory = (EFI_IMAGE_RESOURCE_DIRECTORY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY);\r
+  ResourceDirectory->NumberOfNamedEntries = 1;\r
+  LanguageResourceDirectoryEntry = (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY);\r
+  LanguageResourceDirectoryEntry->u1.s.NameIsString = 1;\r
+  //\r
+  // Create string entry for Type\r
+  //\r
+  TypeResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset;\r
+  ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset);\r
+  ResourceDirectoryString->Length = 3;\r
+  ResourceDirectoryString->String[0] = L'H';\r
+  ResourceDirectoryString->String[1] = L'I';\r
+  ResourceDirectoryString->String[2] = L'I';\r
+  HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]);\r
+  //\r
+  // Create string entry for Name\r
+  //\r
+  NameResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset;\r
+  ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset);\r
+  ResourceDirectoryString->Length = 3;\r
+  ResourceDirectoryString->String[0] = L'E';\r
+  ResourceDirectoryString->String[1] = L'F';\r
+  ResourceDirectoryString->String[2] = L'I';\r
+  HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]);\r
+  //\r
+  // Create string entry for Language\r
+  //\r
+  LanguageResourceDirectoryEntry->u1.s.NameOffset = HiiSectionOffset;\r
+  ResourceDirectoryString = (EFI_IMAGE_RESOURCE_DIRECTORY_STRING *) (HiiSectionHeader + HiiSectionOffset);\r
+  ResourceDirectoryString->Length = 3;\r
+  ResourceDirectoryString->String[0] = L'B';\r
+  ResourceDirectoryString->String[1] = L'I';\r
+  ResourceDirectoryString->String[2] = L'N';\r
+  HiiSectionOffset = HiiSectionOffset + sizeof (ResourceDirectoryString->Length) + ResourceDirectoryString->Length * sizeof (ResourceDirectoryString->String[0]);\r
+  //\r
+  // Create Leaf data\r
+  //\r
+  LanguageResourceDirectoryEntry->u2.OffsetToData = HiiSectionOffset;\r
+  ResourceDataEntry = (EFI_IMAGE_RESOURCE_DATA_ENTRY *) (HiiSectionHeader + HiiSectionOffset);\r
+  HiiSectionOffset += sizeof (EFI_IMAGE_RESOURCE_DATA_ENTRY);\r
+  ResourceDataEntry->OffsetToData = HiiSectionOffset;\r
+  ResourceDataEntry->Size = HiiDataSize;\r
+\r
+  *pSectionHeaderSize = HiiSectionHeaderSize;\r
+  return HiiSectionHeader;\r
+}\r
+\r
 int\r
 main (\r
   int  argc,\r
@@ -1501,6 +1710,8 @@ Returns:
   EFI_IFR_FORM_SET                 IfrFormSet;\r
   UINT8                            NumberOfFormPacakge;\r
   EFI_HII_PACKAGE_HEADER           EndPackage;\r
+  UINT32                           HiiSectionHeaderSize;\r
+  UINT8                            *HiiSectionHeader;\r
 \r
   SetUtilityName (UTILITY_NAME);\r
 \r
@@ -1539,6 +1750,8 @@ Returns:
   EndPackage.Length      = sizeof (EFI_HII_PACKAGE_HEADER);\r
   EndPackage.Type        = EFI_HII_PACKAGE_END;\r
   memset (&HiiPackageListGuid, 0, sizeof (HiiPackageListGuid));\r
+  HiiSectionHeaderSize   = 0;\r
+  HiiSectionHeader       = NULL;\r
 \r
   if (argc == 1) {\r
     Error (NULL, 0, 1001, "Missing options", "No input options.");\r
@@ -1748,6 +1961,13 @@ Returns:
       continue;\r
     }\r
 \r
+    if (stricmp (argv[0], "--hiibinpackage") == 0) {\r
+      OutImageType = FW_HII_PACKAGE_LIST_BINIMAGE;\r
+      argc --;\r
+      argv ++;\r
+      continue;\r
+    }\r
+\r
     if (argv[0][0] == '-') {\r
       Error (NULL, 0, 1000, "Unknown option", argv[0]);\r
       goto Finish;\r
@@ -1819,6 +2039,11 @@ Returns:
     goto Finish;\r
   }\r
 \r
+  if ((OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) && ReplaceFlag) {\r
+    Error (NULL, 0, 1002, "Conflicting option", "-r replace option cannot be used with --hiibinpackage merge files option.");\r
+    goto Finish;\r
+  }\r
+\r
   //\r
   // Input image file\r
   //\r
@@ -1862,6 +2087,9 @@ Returns:
   case FW_HII_PACKAGE_LIST_RCIMAGE:\r
     VerboseMsg ("Combine the input multi hii bin packages to one text pacakge list RC file.");\r
     break;\r
+  case FW_HII_PACKAGE_LIST_BINIMAGE:\r
+    VerboseMsg ("Combine the input multi hii bin packages to one binary pacakge list file.");\r
+    break;\r
   default:\r
     break;\r
   }\r
@@ -1903,9 +2131,9 @@ Returns:
   }\r
 \r
   //\r
-  // Combine multi binary HII package files to a single text package list RC file.\r
+  // Combine multi binary HII package files.\r
   //\r
-  if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE) {\r
+  if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE || OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) {\r
     //\r
     // Get hii package list lenght\r
     //\r
@@ -1970,37 +2198,64 @@ Returns:
       HiiPackageDataPointer = HiiPackageDataPointer + FileLength;\r
     }\r
     memcpy (HiiPackageDataPointer, &EndPackage, sizeof (EndPackage));\r
+\r
     //\r
-    // write the hii package into the text package list rc file.\r
+    // write the hii package into the binary package list file with the resource section header\r
     //\r
-    for (Index = 0; gHiiPackageRCFileHeader[Index] != NULL; Index++) {\r
-      fprintf (fpOut, "%s\n", gHiiPackageRCFileHeader[Index]);\r
+    if (OutImageType == FW_HII_PACKAGE_LIST_BINIMAGE) {\r
+      //\r
+      // Create the resource section header\r
+      //\r
+      HiiSectionHeader = CreateHiiResouceSectionHeader (&HiiSectionHeaderSize, HiiPackageListHeader.PackageLength);\r
+      //\r
+      // Wrtie section header and HiiData into File.\r
+      //\r
+      fwrite (HiiSectionHeader, 1, HiiSectionHeaderSize, fpOut);\r
+      fwrite (HiiPackageListBuffer, 1, HiiPackageListHeader.PackageLength, fpOut);\r
+      //\r
+      // Free allocated resources.\r
+      //\r
+      free (HiiSectionHeader);\r
+      free (HiiPackageListBuffer);\r
+      //\r
+      // Done successfully\r
+      //\r
+      goto Finish;\r
     }\r
-    fprintf (fpOut, "\n%d %s\n{", HII_RESOURCE_SECTION_INDEX, HII_RESOURCE_SECTION_NAME);\r
 \r
-    HiiPackageDataPointer = HiiPackageListBuffer;\r
-    for (Index = 0; Index + 2 < HiiPackageListHeader.PackageLength; Index += 2) {\r
+    //\r
+    // write the hii package into the text package list rc file.\r
+    //\r
+    if (OutImageType == FW_HII_PACKAGE_LIST_RCIMAGE) {\r
+      for (Index = 0; gHiiPackageRCFileHeader[Index] != NULL; Index++) {\r
+        fprintf (fpOut, "%s\n", gHiiPackageRCFileHeader[Index]);\r
+      }\r
+      fprintf (fpOut, "\n%d %s\n{", HII_RESOURCE_SECTION_INDEX, HII_RESOURCE_SECTION_NAME);\r
+\r
+      HiiPackageDataPointer = HiiPackageListBuffer;\r
+      for (Index = 0; Index + 2 < HiiPackageListHeader.PackageLength; Index += 2) {\r
+        if (Index % 16 == 0) {\r
+          fprintf (fpOut, "\n ");\r
+        }\r
+        fprintf (fpOut, " 0x%04X,", *(UINT16 *) HiiPackageDataPointer);\r
+        HiiPackageDataPointer += 2;\r
+      }\r
+      \r
       if (Index % 16 == 0) {\r
         fprintf (fpOut, "\n ");\r
       }\r
-      fprintf (fpOut, " 0x%04X,", *(UINT16 *) HiiPackageDataPointer);\r
-      HiiPackageDataPointer += 2;\r
-    }\r
-    \r
-    if (Index % 16 == 0) {\r
-      fprintf (fpOut, "\n ");\r
-    }\r
-    if ((Index + 2) == HiiPackageListHeader.PackageLength) {\r
-      fprintf (fpOut, " 0x%04X\n}\n", *(UINT16 *) HiiPackageDataPointer);\r
-    }\r
-    if ((Index + 1) == HiiPackageListHeader.PackageLength) {\r
-      fprintf (fpOut, " 0x%04X\n}\n", *(UINT8 *) HiiPackageDataPointer);\r
+      if ((Index + 2) == HiiPackageListHeader.PackageLength) {\r
+        fprintf (fpOut, " 0x%04X\n}\n", *(UINT16 *) HiiPackageDataPointer);\r
+      }\r
+      if ((Index + 1) == HiiPackageListHeader.PackageLength) {\r
+        fprintf (fpOut, " 0x%04X\n}\n", *(UINT8 *) HiiPackageDataPointer);\r
+      }\r
+      free (HiiPackageListBuffer);\r
+      //\r
+      // Done successfully\r
+      //\r
+      goto Finish;\r
     }\r
-    free (HiiPackageListBuffer);\r
-    //\r
-    // Done successfully\r
-    //\r
-    goto Finish;\r
   }\r
 \r
   //\r
@@ -2271,7 +2526,6 @@ Returns:
           stricmp (ModuleType, "DXE_DRIVER") == 0 ||\r
           stricmp (ModuleType, "DXE_SMM_DRIVER") == 0  ||\r
           stricmp (ModuleType, "UEFI_DRIVER") == 0 ||\r
-          stricmp (ModuleType, "SMM_DRIVER") == 0 ||\r
           stricmp (ModuleType, "SMM_CORE") == 0) {\r
         Type = EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER;\r
         VerboseMsg ("Efi Image subsystem type is efi boot service driver.");\r
@@ -2305,6 +2559,12 @@ Returns:
     VerboseMsg ("Convert the input ELF Image to Pe Image");\r
     ConvertElf(&FileBuffer, &FileLength);\r
   }\r
\r
+  //\r
+  // Make sure File Offsets and Virtual Offsets are the same in the image so it is XIP\r
+  // XIP == eXecute In Place\r
+  //\r
+  PeCoffConvertImageToXip (&FileBuffer, &FileLength);\r
 \r
   //\r
   // Remove reloc section from PE or TE image\r
@@ -2771,7 +3031,37 @@ Returns:
       TEImageHeader.DataDirectory[EFI_TE_IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress = Optional64->SizeOfImage - sizeof (EFI_IMAGE_BASE_RELOCATION);\r
     }\r
   }\r
-   \r
+\r
+  //\r
+  // Fill HII section data\r
+  //\r
+  SectionHeader = (EFI_IMAGE_SECTION_HEADER *) ((UINT8 *) &(PeHdr->Pe32.OptionalHeader) + PeHdr->Pe32.FileHeader.SizeOfOptionalHeader);\r
+  for (Index = 0; Index < PeHdr->Pe32.FileHeader.NumberOfSections; Index++) {\r
+    if (stricmp ((char *)SectionHeader[Index].Name, ".hii") == 0) {\r
+      //\r
+      // Update resource section header offset\r
+      //\r
+      SetHiiResourceHeader ((UINT8*) FileBuffer + SectionHeader[Index].PointerToRawData, SectionHeader[Index].VirtualAddress);\r
+      //\r
+      // Update resource section name\r
+      //\r
+      strcpy((char *) SectionHeader[Index].Name, ".rsrc");\r
+      //\r
+      // Update resource data directory.\r
+      //\r
+      if (PeHdr->Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+        Optional32 = (EFI_IMAGE_OPTIONAL_HEADER32 *)&PeHdr->Pe32.OptionalHeader;\r
+        Optional32->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = SectionHeader[Index].VirtualAddress;\r
+        Optional32->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = SectionHeader[Index].Misc.VirtualSize;\r
+      } else if (PeHdr->Pe32.OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {\r
+        Optional64 = (EFI_IMAGE_OPTIONAL_HEADER64 *)&PeHdr->Pe32.OptionalHeader;\r
+        Optional64->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress = SectionHeader[Index].VirtualAddress;\r
+        Optional64->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE].Size = SectionHeader[Index].Misc.VirtualSize;\r
+      }\r
+      break;\r
+    }\r
+  }\r
+\r
   //\r
   // Zero ExceptionTable Xdata\r
   //\r
@@ -3311,7 +3601,7 @@ Returns:
     //\r
     // strip space\r
     //\r
-    for (cptr = Line; *cptr && isspace(*cptr); cptr++) {\r
+    for (cptr = Line; *cptr && isspace((int)*cptr); cptr++) {\r
     }\r
 \r
     // Skip Blank Lines and Comment Lines\r
@@ -3326,14 +3616,14 @@ Returns:
   // DD  XXXXXXXXX\r
   //  DD XXXXXXXXX\r
   //\r
-  if ((tolower(cptr[0]) == 'd') && (tolower(cptr[1]) == 'd') && isspace (cptr[2])) {\r
+  if ((tolower((int)cptr[0]) == 'd') && (tolower((int)cptr[1]) == 'd') && isspace ((int)cptr[2])) {\r
     //\r
     // Skip blanks and look for a hex digit\r
     //\r
     cptr += 3;\r
-    for (; *cptr && isspace(*cptr); cptr++) {\r
+    for (; *cptr && isspace((int)*cptr); cptr++) {\r
     }\r
-    if (isxdigit (*cptr)) {\r
+    if (isxdigit ((int)*cptr)) {\r
       if (sscanf (cptr, "%X", &ScannedData) != 1) {\r
         return STATUS_ERROR;\r
       }\r
index 32b8cfd5a0c5ad40cba785abf648a8828180025b..9a1d0ca48a831522b4596ac93851760bcf765d73 100644 (file)
@@ -938,7 +938,7 @@ Returns:
       // Verify string is a integrator number\r
       //\r
       for (Index = 0; Index < strlen (argv[1]); Index++) {\r
-        if ((argv[1][Index] != '-') && (isdigit (argv[1][Index]) == 0)) {\r
+        if ((argv[1][Index] != '-') && (isdigit ((int)argv[1][Index]) == 0)) {\r
           Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]);\r
           goto Finish;\r
         }\r
index 890cfd98fd371d7451c02ae54e1ac5ae8848af22..2e417bf563d261c53a357ab29b63b53bfaee61b4 100644 (file)
@@ -1,13 +1,13 @@
 /**\r
 \r
-Copyright (c)  1999 - 2008, Intel Corporation. All rights reserved\r
-This software and associated documentation (if any) is furnished\r
-under a license and may only be used or copied in accordance\r
-with the terms of the license. Except as permitted by such\r
-license, no part of this software or documentation may be\r
-reproduced, stored in a retrieval system, or transmitted in any\r
-form or by any means without the express written consent of\r
-Intel Corporation.\r
+Copyright (c)  1999-2008 Intel Corporation. All rights reserved\r
+This program and the accompanying materials are licensed and made available \r
+under the terms and conditions of the BSD License which accompanies this \r
+distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 \r
 Module Name:\r
index 012ebb672a37d1b8e67624ec344b2ef6e6113d0a..a1d9f936fe5c65f14e3028dc4e0b2155e8620bc8 100644 (file)
@@ -1,13 +1,13 @@
 /** @file\r
 \r
-Copyright (c) 1999 - 2008 Intel Corporation. All rights reserved\r
-This software and associated documentation (if any) is furnished\r
-under a license and may only be used or copied in accordance\r
-with the terms of the license. Except as permitted by such\r
-license, no part of this software or documentation may be\r
-reproduced, stored in a retrieval system, or transmitted in any\r
-form or by any means without the express written consent of\r
-Intel Corporation.\r
+Copyright (c)  1999-2008 Intel Corporation. All rights reserved\r
+This program and the accompanying materials are licensed and made available \r
+under the terms and conditions of the BSD License which accompanies this \r
+distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 \r
 Module Name:  \r
index 5e926ac08d5af5de7380f5a6d518204f355d3925..e76ffd317c806567199071c1a86ae71213e09482 100644 (file)
@@ -674,6 +674,7 @@ typedef union {
 #define EFI_IFR_DEFAULTSTORE_OP        0x5C\r
 #define EFI_IFR_CATENATE_OP            0x5E\r
 #define EFI_IFR_GUID_OP                0x5F\r
+#define EFI_IFR_SECURITY_OP            0x60\r
 \r
 \r
 typedef struct _EFI_IFR_OP_HEADER {\r
@@ -1276,6 +1277,17 @@ typedef struct _EFI_IFR_SPAN {
   UINT8                    Flags;\r
 } EFI_IFR_SPAN;\r
 \r
+typedef struct _EFI_IFR_SECURITY {\r
+  ///\r
+  /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.\r
+  ///\r
+  EFI_IFR_OP_HEADER        Header;\r
+  ///\r
+  /// Security permission level.\r
+  ///\r
+  EFI_GUID                 Permissions;\r
+} EFI_IFR_SECURITY;\r
+\r
 //\r
 // Keyboard Package\r
 //\r
index 57cbc2366b63ace03a765f8cf2695bcb96049744..69cca91c31a3b89d320b3a60f8ed811bb038ce80 100644 (file)
@@ -638,6 +638,18 @@ typedef struct {
   //\r
 } EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY;\r
 \r
+///\r
+/// Debug Data Structure defined by Apple Mach-O to Coff utility\r
+///\r
+#define CODEVIEW_SIGNATURE_MTOC  EFI_SIGNATURE_32('M', 'T', 'O', 'C')\r
+typedef struct {\r
+  UINT32    Signature;                       ///< "MTOC"\r
+  EFI_GUID  MachOUuid;\r
+  //\r
+  //  Filename of .DLL (Mach-O with debug info) goes here\r
+  //\r
+} EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY;\r
+\r
 //\r
 // .pdata entries for X64\r
 //\r
index 5b2ad46637379cc1f31d4d31a756c25444efa9c9..5d79d89d13388fd1d63baac718d094b806d877eb 100644 (file)
@@ -27,7 +27,9 @@
 //\r
 // Make sure we are useing the correct packing rules per EFI specification\r
 //\r
+#ifndef __GNUC__\r
 #pragma pack()\r
+#endif\r
 \r
 \r
 #if _MSC_EXTENSIONS \r
index 7555556baae82a36788c20c4f1fb8914f028abc9..2f950036464f78a7518a5e9a07ff09c8df67212c 100644 (file)
@@ -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
index a4dc2255e750bad52d32a52a960b501f1def3a23..5f69e7b04e7d9bb52d1dc5ac1f9deff7f12e1210 100644 (file)
@@ -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
index 22e1a2be499891dadd1bbcf2a205b420580fa619..d5fe738a2cadc20bf0d1cb1a09df945bc3b45c58 100644 (file)
@@ -124,14 +124,14 @@ GetSplitValue (
     }\r
   }\r
 \r
-  lastCHAR = (CHAR8)toupper(SplitValueString[len - 1]);\r
+  lastCHAR = (CHAR8)toupper((int)SplitValueString[len - 1]);\r
 \r
   if (lastCHAR != 'K' && lastCHAR != 'M' && lastCHAR != 'G') {\r
     return STATUS_ERROR;\r
   }\r
 \r
   for (;index < len - 1; ++index) {\r
-    if (!isdigit(SplitValueString[index])) {\r
+    if (!isdigit((int)SplitValueString[index])) {\r
       return EFI_ABORTED;\r
     }\r
   }\r
index 87da95af715c76f7eab6c218f1947a34c4b547a4..ffa898bdbe623c32e159d7da3926fcecf2530782 100644 (file)
@@ -1301,6 +1301,7 @@ static struct {
   { 0, 0},                                     // 0x5D\r
   { sizeof (EFI_IFR_CATENATE), 0 },            // EFI_IFR_CATENATE_OP\r
   { sizeof (EFI_IFR_GUID), 0 },                // EFI_IFR_GUID_OP\r
+  { sizeof (EFI_IFR_SECURITY), 0 },            // EFI_IFR_SECURITY_OP - 0x60\r
 };\r
 \r
 #ifdef CIFROBJ_DEUBG\r
@@ -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",\r
   "EFI_IFR_ONES",       "EFI_IFR_UNDEFINED",            "EFI_IFR_LENGTH",        "EFI_IFR_DUP",             "EFI_IFR_THIS",          "EFI_IFR_SPAN",\r
   "EFI_IFR_VALUE",      "EFI_IFR_DEFAULT",              "EFI_IFR_DEFAULTSTORE",  "EFI_IFR_INVALID",         "EFI_IFR_CATENATE",      "EFI_IFR_GUID",\r
+  "EFI_IFR_SECURITY",\r
 };\r
 \r
 VOID\r
index 324078a1481729975a4bea83a49fef31dc7eb32f..0b84896cc9d2ffda7c7236a89292486c9da3d1bb 100644 (file)
@@ -398,49 +398,159 @@ public:
   }\r
 };\r
 \r
-static CIfrQuestionHeader *gCurrentQuestion  = NULL;\r
-static CIfrObj            *gCurrentIfrOpcode = NULL;\r
-\r
 /*\r
  * The definition of CIfrMinMaxStepData\r
  */\r
 class CIfrMinMaxStepData {\r
 private:\r
   MINMAXSTEP_DATA *mMinMaxStepData;\r
+  BOOLEAN         ValueIsSet;\r
+  BOOLEAN         IsNumeric;\r
 \r
 public:\r
-  CIfrMinMaxStepData (MINMAXSTEP_DATA *DataAddr) : mMinMaxStepData (DataAddr) {\r
+  CIfrMinMaxStepData (MINMAXSTEP_DATA *DataAddr, BOOLEAN NumericOpcode=FALSE) : mMinMaxStepData (DataAddr) {\r
     mMinMaxStepData->u64.MinValue = 0;\r
     mMinMaxStepData->u64.MaxValue = 0;\r
     mMinMaxStepData->u64.Step     = 0;\r
+    ValueIsSet = FALSE;\r
+    IsNumeric = NumericOpcode;\r
   }\r
 \r
   VOID SetMinMaxStepData (IN UINT64 MinValue, IN UINT64 MaxValue, IN UINT64 Step) {\r
-    mMinMaxStepData->u64.MinValue = MinValue;\r
-    mMinMaxStepData->u64.MaxValue = MaxValue;\r
-    mMinMaxStepData->u64.Step     = Step;\r
+    if (!ValueIsSet) {\r
+      mMinMaxStepData->u64.MinValue = MinValue;\r
+      mMinMaxStepData->u64.MaxValue = MaxValue;\r
+      ValueIsSet = TRUE;\r
+    } else {\r
+      if (MinValue < mMinMaxStepData->u64.MinValue) {\r
+        mMinMaxStepData->u64.MinValue = MinValue;\r
+      }\r
+      if (MaxValue > mMinMaxStepData->u64.MaxValue) {\r
+        mMinMaxStepData->u64.MaxValue = MaxValue;\r
+      }\r
+    }\r
+    mMinMaxStepData->u64.Step = Step;\r
   }\r
 \r
   VOID SetMinMaxStepData (IN UINT32 MinValue, IN UINT32 MaxValue, IN UINT32 Step) {\r
-    mMinMaxStepData->u32.MinValue = MinValue;\r
-    mMinMaxStepData->u32.MaxValue = MaxValue;\r
-    mMinMaxStepData->u32.Step     = Step;\r
+    if (!ValueIsSet) {\r
+      mMinMaxStepData->u32.MinValue = MinValue;\r
+      mMinMaxStepData->u32.MaxValue = MaxValue;\r
+      ValueIsSet = TRUE;\r
+    } else {\r
+      if (MinValue < mMinMaxStepData->u32.MinValue) {\r
+        mMinMaxStepData->u32.MinValue = MinValue;\r
+      }\r
+      if (MaxValue > mMinMaxStepData->u32.MaxValue) {\r
+        mMinMaxStepData->u32.MaxValue = MaxValue;\r
+      }\r
+    }\r
+    mMinMaxStepData->u32.Step = Step;\r
   }\r
 \r
   VOID SetMinMaxStepData (IN UINT16 MinValue, IN UINT16 MaxValue, IN UINT16 Step) {\r
-    mMinMaxStepData->u16.MinValue = MinValue;\r
-    mMinMaxStepData->u16.MaxValue = MaxValue;\r
-    mMinMaxStepData->u16.Step     = Step;\r
+    if (!ValueIsSet) {\r
+      mMinMaxStepData->u16.MinValue = MinValue;\r
+      mMinMaxStepData->u16.MaxValue = MaxValue;\r
+      ValueIsSet = TRUE;\r
+    } else {\r
+      if (MinValue < mMinMaxStepData->u16.MinValue) {\r
+        mMinMaxStepData->u16.MinValue = MinValue;\r
+      }\r
+      if (MaxValue > mMinMaxStepData->u16.MaxValue) {\r
+        mMinMaxStepData->u16.MaxValue = MaxValue;\r
+      }\r
+    }\r
+    mMinMaxStepData->u16.Step = Step;\r
   }\r
 \r
   VOID SetMinMaxStepData (IN UINT8 MinValue, IN UINT8 MaxValue, IN UINT8 Step) {\r
-    mMinMaxStepData->u8.MinValue = MinValue;\r
-    mMinMaxStepData->u8.MaxValue = MaxValue;\r
-    mMinMaxStepData->u8.Step     = Step;\r
+    if (!ValueIsSet) {\r
+      mMinMaxStepData->u8.MinValue = MinValue;\r
+      mMinMaxStepData->u8.MaxValue = MaxValue;\r
+      ValueIsSet = TRUE;\r
+    } else {\r
+      if (MinValue < mMinMaxStepData->u8.MinValue) {\r
+        mMinMaxStepData->u8.MinValue = MinValue;\r
+      }\r
+      if (MaxValue > mMinMaxStepData->u8.MaxValue) {\r
+        mMinMaxStepData->u8.MaxValue = MaxValue;\r
+      }\r
+    }\r
+    mMinMaxStepData->u8.Step = Step;\r
+  }\r
+\r
+  UINT64 GetMinData (UINT8 VarType) {\r
+    UINT64 MinValue = 0;\r
+    switch (VarType) {\r
+    case EFI_IFR_TYPE_NUM_SIZE_64:\r
+      MinValue = mMinMaxStepData->u64.MinValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_32:\r
+      MinValue = (UINT64) mMinMaxStepData->u32.MinValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_16:\r
+      MinValue = (UINT64) mMinMaxStepData->u16.MinValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_8:\r
+      MinValue = (UINT64) mMinMaxStepData->u8.MinValue;\r
+      break;\r
+    default:\r
+      break;\r
+    }\r
+    return MinValue;\r
+  }\r
+\r
+  UINT64 GetMaxData (UINT8 VarType) {\r
+    UINT64 MaxValue = 0;\r
+    switch (VarType) {\r
+    case EFI_IFR_TYPE_NUM_SIZE_64:\r
+      MaxValue = mMinMaxStepData->u64.MaxValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_32:\r
+      MaxValue = (UINT64) mMinMaxStepData->u32.MaxValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_16:\r
+      MaxValue = (UINT64) mMinMaxStepData->u16.MaxValue;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_8:\r
+      MaxValue = (UINT64) mMinMaxStepData->u8.MaxValue;\r
+      break;\r
+    default:\r
+      break;\r
+    }\r
+    return MaxValue;\r
+  }\r
+\r
+  UINT64 GetStepData (UINT8 VarType) {\r
+    UINT64 MaxValue = 0;\r
+    switch (VarType) {\r
+    case EFI_IFR_TYPE_NUM_SIZE_64:\r
+      MaxValue = mMinMaxStepData->u64.Step;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_32:\r
+      MaxValue = (UINT64) mMinMaxStepData->u32.Step;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_16:\r
+      MaxValue = (UINT64) mMinMaxStepData->u16.Step;\r
+      break;\r
+    case EFI_IFR_TYPE_NUM_SIZE_8:\r
+      MaxValue = (UINT64) mMinMaxStepData->u8.Step;\r
+      break;\r
+    default:\r
+      break;\r
+    }\r
+    return MaxValue;\r
   }\r
 \r
+  BOOLEAN IsNumericOpcode () {\r
+    return IsNumeric;\r
+  }\r
 };\r
 \r
+static CIfrQuestionHeader *gCurrentQuestion  = NULL;\r
+static CIfrMinMaxStepData *gCurrentMinMaxData = NULL;\r
+\r
 /*\r
  * The definition of all of the UEFI IFR Objects\r
  */\r
@@ -979,15 +1089,15 @@ public:
   CIfrNumeric () : CIfrObj (EFI_IFR_NUMERIC_OP, (CHAR8 **)&mNumeric),\r
                    CIfrOpHeader (EFI_IFR_NUMERIC_OP, &mNumeric->Header),\r
                    CIfrQuestionHeader (&mNumeric->Question),\r
-                   CIfrMinMaxStepData (&mNumeric->data) {\r
+                   CIfrMinMaxStepData (&mNumeric->data, TRUE) {\r
     mNumeric->Flags  = EFI_IFR_NUMERIC_SIZE_1 | EFI_IFR_DISPLAY_UINT_DEC;\r
-    gCurrentQuestion  = this;\r
-    gCurrentIfrOpcode = this;\r
+    gCurrentQuestion   = this;\r
+    gCurrentMinMaxData = this;\r
   }\r
 \r
   ~CIfrNumeric () {\r
-    gCurrentQuestion  = NULL;\r
-    gCurrentIfrOpcode = NULL;\r
+    gCurrentQuestion   = NULL;\r
+    gCurrentMinMaxData = NULL;\r
   }\r
 \r
   EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {\r
@@ -1017,13 +1127,13 @@ public:
                  CIfrQuestionHeader (&mOneOf->Question),\r
                  CIfrMinMaxStepData (&mOneOf->data) {\r
     mOneOf->Flags    = 0;\r
-    gCurrentQuestion  = this;\r
-    gCurrentIfrOpcode = this;\r
+    gCurrentQuestion   = this;\r
+    gCurrentMinMaxData = this;\r
   }\r
 \r
   ~CIfrOneOf () {\r
-    gCurrentQuestion  = NULL;\r
-    gCurrentIfrOpcode = NULL;\r
+    gCurrentQuestion   = NULL;\r
+    gCurrentMinMaxData = NULL;\r
   }\r
 \r
   EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {\r
@@ -1772,6 +1882,24 @@ public:
   }\r
 };\r
 \r
+class CIfrSecurity : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_SECURITY *mSecurity;\r
+\r
+public:\r
+  CIfrSecurity (\r
+  IN UINT32 LineNo\r
+  ) : CIfrObj (EFI_IFR_SECURITY_OP, (CHAR8 **)&mSecurity),\r
+      CIfrOpHeader (EFI_IFR_SECURITY_OP, &mSecurity->Header) {\r
+    SetLineNo (LineNo);\r
+    memset (&mSecurity->Permissions, 0, sizeof (EFI_GUID));\r
+  }\r
+\r
+  VOID SetPermissions (IN EFI_GUID *Permissions) {\r
+    memcpy (&mSecurity->Permissions, Permissions, sizeof (EFI_GUID));\r
+  }\r
+};\r
+\r
 class CIfrUint8 : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_UINT8 *mUint8;\r
index ea529a5e15e84b4224ed83c872e645614e5dc629..09ec6919eca5bf325367a8396797bf05a6007451 100644 (file)
@@ -1,5 +1,5 @@
 /*++\r
-Copyright (c) 2004 - 2008, Intel Corporation\r
+Copyright (c) 2004 - 2009, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -547,7 +547,8 @@ vfrFormSetList :
     vfrStatementVarStoreEfi       |\r
     vfrStatementVarStoreNameValue |\r
     vfrStatementDefaultStore      |\r
-    vfrStatementDisableIfFormSet\r
+    vfrStatementDisableIfFormSet  |\r
+    vfrStatementSuppressIfFormSet\r
   )*\r
   ;\r
 \r
@@ -720,6 +721,21 @@ vfrStatementDisableIfFormSet :
   ";"\r
   ;\r
 \r
+vfrStatementSuppressIfFormSet :\r
+  << CIfrSuppressIf SIObj;>>\r
+  L:SuppressIf                                         <<\r
+                                                           if (mCompatibleMode) {\r
+                                                             _PCATCH (VFR_RETURN_UNSUPPORTED, L);\r
+                                                           }\r
+                                                           SIObj.SetLineNo(L->getLine()); \r
+                                                       >>\r
+  { FLAGS "=" flagsField ( "\|" flagsField )* "," }\r
+  vfrStatementExpression[0] ";"\r
+  vfrFormSetList\r
+  E: EndIf \r
+  ";"                                                  << CRT_END_OP (E); >>\r
+  ;\r
+\r
 //*****************************************************************************\r
 //\r
 // the syntax of question header and statement header\r
@@ -1089,66 +1105,10 @@ vfrStatementDefault :
     (\r
         vfrStatementValue ","                       << IsExp = TRUE; DObj.SetScope (1); CIfrEnd EndObj1; EndObj1.SetLineNo(D->getLine()); >>\r
       | "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] ","  << \r
-\r
-                                                        if (gCurrentIfrOpcode != NULL && gCurrentIfrOpcode->GetObjBinAddr() != NULL) {\r
-                                                          EFI_IFR_OP_HEADER *TempOpCode;\r
-                                                          TempOpCode = (EFI_IFR_OP_HEADER *) gCurrentIfrOpcode->GetObjBinAddr();\r
-                                                          switch (TempOpCode->OpCode) {\r
-                                                          case EFI_IFR_NUMERIC_OP:\r
-                                                            EFI_IFR_NUMERIC *TempNumricCode;\r
-                                                            TempNumricCode = (EFI_IFR_NUMERIC *) TempOpCode;\r
-                                                            switch (_GET_CURRQEST_DATATYPE()) {\r
-                                                            case EFI_IFR_TYPE_NUM_SIZE_64:\r
-                                                              if (Val.u64 < TempNumricCode->data.u64.MinValue || Val.u64 > TempNumricCode->data.u64.MaxValue) {\r
-                                                                _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
-                                                              }\r
-                                                              break;\r
-                                                            case EFI_IFR_TYPE_NUM_SIZE_32:\r
-                                                              if (Val.u32 < TempNumricCode->data.u32.MinValue || Val.u32 > TempNumricCode->data.u32.MaxValue) {\r
-                                                                _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
-                                                              }\r
-                                                              break;\r
-                                                            case EFI_IFR_TYPE_NUM_SIZE_16:\r
-                                                              if (Val.u16 < TempNumricCode->data.u16.MinValue || Val.u16 > TempNumricCode->data.u16.MaxValue) {\r
-                                                                _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
-                                                              }\r
-                                                              break;\r
-                                                            case EFI_IFR_TYPE_NUM_SIZE_8:\r
-                                                              if (Val.u8 < TempNumricCode->data.u8.MinValue || Val.u8 > TempNumricCode->data.u8.MaxValue) {\r
-                                                                _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
-                                                              }\r
-                                                              break;\r
-                                                            }\r
-                                                            break;\r
-                                                          case EFI_IFR_ONE_OF_OP:\r
-                                                            EFI_IFR_ONE_OF *TempOneOfCode;\r
-                                                            TempOneOfCode = (EFI_IFR_ONE_OF *) TempOpCode;\r
-                                                            if (TempOneOfCode->data.u64.MinValue != 0 || TempOneOfCode->data.u64.MaxValue != 0 || TempOneOfCode->data.u64.Step != 0) {\r
-                                                              //OneOf MinMaxStep Data is set, Val value will be checked for MinMaxStep.\r
-                                                              switch (_GET_CURRQEST_DATATYPE()) {\r
-                                                              case EFI_IFR_TYPE_NUM_SIZE_64:\r
-                                                                if (Val.u64 < TempOneOfCode->data.u64.MinValue || Val.u64 > TempOneOfCode->data.u64.MaxValue) {\r
-                                                                  _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
-                                                                }\r
-                                                                break;\r
-                                                              case EFI_IFR_TYPE_NUM_SIZE_32:\r
-                                                                if (Val.u32 < TempOneOfCode->data.u32.MinValue || Val.u32 > TempOneOfCode->data.u32.MaxValue) {\r
-                                                                  _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
-                                                                }\r
-                                                                break;\r
-                                                              case EFI_IFR_TYPE_NUM_SIZE_16:\r
-                                                                if (Val.u16 < TempOneOfCode->data.u16.MinValue || Val.u16 > TempOneOfCode->data.u16.MaxValue) {\r
-                                                                  _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
-                                                                }\r
-                                                                break;\r
-                                                              case EFI_IFR_TYPE_NUM_SIZE_8:\r
-                                                                if (Val.u8 < TempOneOfCode->data.u8.MinValue || Val.u8 > TempOneOfCode->data.u8.MaxValue) {\r
-                                                                  _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
-                                                                }\r
-                                                                break;\r
-                                                              }\r
-                                                            }\r
-                                                            break;\r
+                                                        if (gCurrentMinMaxData != NULL && gCurrentMinMaxData->IsNumericOpcode()) {\r
+                                                          //check default value is valid for Numeric Opcode\r
+                                                          if (Val.u64 < gCurrentMinMaxData->GetMinData(_GET_CURRQEST_DATATYPE()) || Val.u64 > gCurrentMinMaxData->GetMaxData(_GET_CURRQEST_DATATYPE())) {\r
+                                                            _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
                                                           }\r
                                                         }\r
                                                         DObj.SetType (_GET_CURRQEST_DATATYPE()); \r
@@ -1711,7 +1671,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] :
   >>\r
   Minimum   "=" I:Number ","\r
                                                        <<\r
-                                                          switch (_GET_CURRQEST_DATATYPE ()) {\r
+                                                          switch (_GET_CURRQEST_DATATYPE()) {\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_64 : MinU8 = _STOU64(I->getText()); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_32 : MinU4 = _STOU32(I->getText()); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_16 : MinU2 = _STOU16(I->getText()); break;\r
@@ -1720,7 +1680,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] :
                                                        >>\r
   Maximum   "=" A:Number ","\r
                                                        <<\r
-                                                          switch (_GET_CURRQEST_DATATYPE ()) {\r
+                                                          switch (_GET_CURRQEST_DATATYPE()) {\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_64 : \r
                                                             MaxU8 = _STOU64(A->getText()); \r
                                                             if (MaxU8 < MinU8) {\r
@@ -1750,7 +1710,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] :
   {\r
     STEP    "=" S:Number ","\r
                                                        <<\r
-                                                          switch (_GET_CURRQEST_DATATYPE ()) {\r
+                                                          switch (_GET_CURRQEST_DATATYPE()) {\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_64 : StepU8 = _STOU64(S->getText()); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_32 : StepU4 = _STOU32(S->getText()); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_16 : StepU2 = _STOU16(S->getText()); break;\r
@@ -1759,7 +1719,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & MMSDObj] :
                                                        >>\r
   }\r
                                                        <<\r
-                                                          switch (_GET_CURRQEST_DATATYPE ()) {\r
+                                                          switch (_GET_CURRQEST_DATATYPE()) {\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_64 : $MMSDObj.SetMinMaxStepData (MinU8, MaxU8, StepU8); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_32 : $MMSDObj.SetMinMaxStepData (MinU4, MaxU4, StepU4); break;\r
                                                           case EFI_IFR_TYPE_NUM_SIZE_16 : $MMSDObj.SetMinMaxStepData (MinU2, MaxU2, StepU2); break;\r
@@ -1793,18 +1753,38 @@ vfrStatementNumeric :
 \r
 vfrNumericFlags [CIfrNumeric & NObj, UINT32 LineNum] :\r
   <<\r
-     UINT8 LFlags = _GET_CURRQEST_DATATYPE();\r
+     UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE;\r
      UINT8 HFlags = 0;\r
+     EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;\r
   >>\r
   numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )*\r
-                                                       << _PCATCH(NObj.SetFlags (HFlags, LFlags), LineNum); >>\r
+                                                       <<\r
+                                                          //check data type flag\r
+                                                          VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId);\r
+                                                          if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) {\r
+                                                            if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) {\r
+                                                              _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type");\r
+                                                            }\r
+                                                          } else {\r
+                                                            // update data type for name/value store\r
+                                                            UINT32 DataTypeSize;\r
+                                                            _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE;\r
+                                                            gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize);\r
+                                                            _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize;\r
+                                                          }\r
+                                                          _PCATCH(NObj.SetFlags (HFlags, LFlags), LineNum);\r
+                                                       >>\r
   ;\r
 \r
 numericFlagsField [UINT8 & HFlags, UINT8 & LFlags] :\r
     N:Number                                           << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>\r
-  | "DISPLAY_INT_DEC"                                  << $LFlags |= 0x00; >>\r
-  | "DISPLAY_UINT_DEC"                                 << $LFlags |= 0x10; >>\r
-  | "DISPLAY_UINT_HEX"                                 << $LFlags |= 0x20; >>\r
+  | "NUMERIC_SIZE_1"                                   << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_1; >>\r
+  | "NUMERIC_SIZE_2"                                   << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_2; >>\r
+  | "NUMERIC_SIZE_4"                                   << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_4; >>\r
+  | "NUMERIC_SIZE_8"                                   << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_8; >>\r
+  | "DISPLAY_INT_DEC"                                  << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_INT_DEC; >>\r
+  | "DISPLAY_UINT_DEC"                                 << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_DEC; >>\r
+  | "DISPLAY_UINT_HEX"                                 << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_HEX; >>\r
   | questionheaderFlagsField[HFlags]\r
   ;\r
 \r
@@ -1832,11 +1812,27 @@ vfrStatementOneOf :
 \r
 vfrOneofFlagsField [CIfrOneOf & OObj, UINT32 LineNum] :\r
   <<\r
-     UINT8 LFlags = _GET_CURRQEST_DATATYPE();\r
+     UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE;\r
      UINT8 HFlags = 0;\r
+     EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;\r
   >>\r
   numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )*\r
-                                                       << _PCATCH(OObj.SetFlags (HFlags, LFlags), LineNum); >>\r
+                                                       <<\r
+                                                          //check data type flag\r
+                                                          VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId);\r
+                                                          if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) {\r
+                                                            if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) {\r
+                                                              _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type");\r
+                                                            }\r
+                                                          } else {\r
+                                                            // update data type for Name/Value store\r
+                                                            UINT32 DataTypeSize;\r
+                                                            _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE;\r
+                                                            gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize);\r
+                                                            _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize;\r
+                                                          }\r
+                                                          _PCATCH(OObj.SetFlags (HFlags, LFlags), LineNum);\r
+                                                       >>\r
   ;\r
 \r
 vfrStatementStringType :\r
@@ -2080,10 +2076,9 @@ vfrStatementStatListOld :
 vfrStatementDisableIfStat :\r
   << \r
     CIfrDisableIf DIObj; \r
-    mConstantOnlyInExpression = TRUE;\r
   >>\r
   L:DisableIf                                          << DIObj.SetLineNo(L->getLine()); >>\r
-  vfrStatementExpression[0] ";"                        << mConstantOnlyInExpression = FALSE; >>\r
+  vfrStatementExpression[0] ";" \r
   ( vfrStatementStatList )*\r
   E:EndIf                                              << CRT_END_OP (E); >>\r
   ";"\r
@@ -2227,10 +2222,9 @@ vfrStatementNoSubmitIf :
 vfrStatementDisableIfQuest :\r
   << \r
     CIfrDisableIf DIObj; \r
-    mConstantOnlyInExpression = TRUE;\r
   >>\r
   L:DisableIf                                          << DIObj.SetLineNo(L->getLine()); >>\r
-  vfrStatementExpression[0] ";"                        << mConstantOnlyInExpression = FALSE; >>\r
+  vfrStatementExpression[0] ";"\r
   vfrStatementQuestionOptionList\r
   E:EndIf                                              << CRT_END_OP (E); >>\r
   ;\r
@@ -2277,7 +2271,31 @@ vfrStatementOneOfOption :
   >>\r
   L:Option                                             << OOOObj.SetLineNo(L->getLine()); >>\r
   Text  "=" "STRING_TOKEN" "\(" S:Number "\)" ","      << OOOObj.SetOption (_STOSID(S->getText())); >>\r
-  Value "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] >[Val] ","    << OOOObj.SetType (_GET_CURRQEST_DATATYPE()); OOOObj.SetValue (Val); >>\r
+  Value "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] >[Val] ","    \r
+                                                       << \r
+                                                          if (gCurrentMinMaxData != NULL) {\r
+                                                            //set min/max value for oneof opcode\r
+                                                            UINT64 Step = gCurrentMinMaxData->GetStepData(_GET_CURRQEST_DATATYPE());\r
+                                                            switch (_GET_CURRQEST_DATATYPE()) {\r
+                                                            case EFI_IFR_TYPE_NUM_SIZE_64:\r
+                                                              gCurrentMinMaxData->SetMinMaxStepData(Val.u64, Val.u64, Step);\r
+                                                              break;\r
+                                                            case EFI_IFR_TYPE_NUM_SIZE_32:\r
+                                                              gCurrentMinMaxData->SetMinMaxStepData(Val.u32, Val.u32, (UINT32) Step);\r
+                                                              break;\r
+                                                            case EFI_IFR_TYPE_NUM_SIZE_16:\r
+                                                              gCurrentMinMaxData->SetMinMaxStepData(Val.u16, Val.u16, (UINT16) Step);\r
+                                                              break;\r
+                                                            case EFI_IFR_TYPE_NUM_SIZE_8:\r
+                                                              gCurrentMinMaxData->SetMinMaxStepData(Val.u8, Val.u8, (UINT8) Step);\r
+                                                              break;\r
+                                                            default:\r
+                                                              break;\r
+                                                            }\r
+                                                          }\r
+                                                          OOOObj.SetType (_GET_CURRQEST_DATATYPE()); \r
+                                                          OOOObj.SetValue (Val); \r
+                                                       >>\r
   F:FLAGS "=" vfrOneOfOptionFlags[OOOObj, F->getLine()]\r
                                                        <<\r
                                                           _PCATCH(mCVfrDataStorage.GetVarStoreName (_GET_CURRQEST_VARTINFO().mVarStoreId, &VarStoreName), L->getLine());\r
@@ -2460,6 +2478,7 @@ vfrStatementInvalidSaveRestoreDefaults :
 #token RuleRef("ruleref")                       "ruleref"\r
 #token StringRef("stringref")                   "stringref"\r
 #token PushThis("pushthis")                     "pushthis"\r
+#token Security("security")                     "security"\r
 #token True("TRUE")                             "TRUE"\r
 #token False("FALSE")                           "FALSE"\r
 #token One("ONE")                               "ONE"\r
@@ -2685,6 +2704,7 @@ vfrExpressionBuildInFunction [UINT32 & RootLevel, UINT32 & ExpOpCount] :
   | rulerefExp[$RootLevel, $ExpOpCount]\r
   | stringref1Exp[$RootLevel, $ExpOpCount]\r
   | pushthisExp[$RootLevel, $ExpOpCount]\r
+  | securityExp[$RootLevel, $ExpOpCount]\r
   ;\r
 \r
 dupExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
@@ -2978,6 +2998,14 @@ pushthisExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
   L:PushThis                                           << { CIfrThis TObj(L->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L->getLine()); $ExpOpCount++; } >>\r
   ;\r
 \r
+securityExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
+  <<\r
+     EFI_GUID Guid;\r
+  >>\r
+  L:Security\r
+  "\(" guidDefinition[Guid] "\)"                       << { CIfrSecurity SObj(L->getLine()); _SAVE_OPHDR_COND (SObj, ($ExpOpCount == 0), L->getLine()); SObj.SetPermissions (&Guid); } $ExpOpCount++; >>\r
+  ;\r
+\r
 vfrExpressionConstant[UINT32 & RootLevel, UINT32 & ExpOpCount] :\r
     L1:True                                            << CIfrTrue TObj(L1->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L1->getLine()); $ExpOpCount++; >>\r
   | L2:False                                           << CIfrFalse FObj(L2->getLine()); _SAVE_OPHDR_COND (FObj, ($ExpOpCount == 0), L2->getLine()); $ExpOpCount++; >>\r
index ff61c9bd63e6e337898ba765906fa6b7d7c21c21..fc3dd113ac989464b93992eddc8d289c1ddb36dd 100644 (file)
@@ -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;
         }
       }
index 9594ef0caee5544af213a4e143e0a57d0c9ef5a4..ba026a9b2635d04ebe799c29efa9dc794ab12090 100644 (file)
@@ -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()\r
+                self._AutoGenFileList[AutoFile] = UniStringBinBuffer.getvalue()
                 AutoFile.IsBinary = True
                 self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE)
-            if UniStringBinBuffer != None:\r
-                UniStringBinBuffer.close()\r
+            if UniStringBinBuffer != None:
+                UniStringBinBuffer.close()
         return self._AutoGenFileList
 
     ## Return the list of library modules explicitly or implicityly used by this module
index 76dfbb665e382844af5a511e669110d96c70018f..2883169f3c6888997e4c028c9a5e5c69d4121d30 100644 (file)
@@ -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):
index a9ff26e597eda6ea4bffc4f4d4a698fddc5d1b9a..6190bceba88d439a2969f679a71a15363710541a 100644 (file)
@@ -278,9 +278,13 @@ class FV (FvClassObject):
             #\r
             if TotalSize > 0:\r
                 FvExtHeaderFileName = os.path.join(GenFdsGlobalVariable.FvDir, self.UiFvName + '.ext')\r
-                FvExtHeaderFile = open (FvExtHeaderFileName,'wb')\r
+                FvExtHeaderFile = StringIO.StringIO()\r
                 FvExtHeaderFile.write(Buffer)\r
+                Changed = SaveFileOnChange(FvExtHeaderFileName, FvExtHeaderFile.getvalue(), True)\r
                 FvExtHeaderFile.close()\r
+                if Changed:\r
+                  if os.path.exists (self.InfFileName):\r
+                    os.remove (self.InfFileName)\r
                 self.FvInfFile.writelines("EFI_FV_EXT_HEADER_FILE_NAME = "      + \\r
                                            FvExtHeaderFileName                  + \\r
                                            T_CHAR_LF)\r
index 2f2e8126c83630f20f002c616e0474d3f04f4740..11b649658e154ee1e6f53e73fbbc2f1daf7357b9 100644 (file)
@@ -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",
index 5f470de92671bafd8b01ea694a7ae07594be2977..624d941b0ff1fd158379078faad24a6c7da42433 100644 (file)
@@ -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 (file)
index 0000000..fa5cd40
--- /dev/null
@@ -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)
+
index 4a581198a4318f0c0905338ae1fa1813290ef68f..72e42461da42ceca00c9a7cb475630d07d8aaa1c 100644 (file)
@@ -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 (' ', '/'):
index 90b3562dc0b2cddab36774429c67f070af8d4190..25691280866e8323f03b808f5b1c6804a6c30608 100644 (file)
-{\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};}\r
-{\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;}\r
-{\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);}\r
-{\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;}\r
-{\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);}\r
-{\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;\r
-\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{\r
-\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;}{\r
-\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;}{\r
-\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 \r
-\additive \ssemihidden Default Paragraph Font;}{\*\r
-\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \r
+{\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};}\r
+{\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};}\r
+{\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};}\r
+{\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};}\r
+{\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};}\r
+{\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};}\r
+{\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;\r
+\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;\r
+\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;}{\r
+\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;}{\r
+\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 \r
+\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 \r
 \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;}}\r
-{\*\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}\r
-{\nofpages5}{\nofwords930}{\nofchars5304}{\nofcharsws6222}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\r
+{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid161327\rsid289912\rsid536636\rsid550197\rsid1125541\rsid2510884\rsid2566299\rsid2887531\rsid4086897\rsid4463303\rsid4544702\rsid4608121\rsid4937157\rsid5179294\rsid5535427\rsid5791475\r
+\rsid6904443\rsid7348251\rsid7432917\rsid8009887\rsid8724680\rsid9923110\rsid11665539\rsid11689149\rsid11809043\rsid11865356\rsid11877657\rsid12217334\rsid12389480\rsid12845507\rsid12854771\rsid12988031\rsid12993393\rsid13438928\rsid13787208\rsid14746353\r
+\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}\r
+{\nofcharsws6728}{\vern24615}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\r
 \paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \r
-\deftab360\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\r
-\jcompress\viewkind4\viewscale100\rsidroot5535427 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl2\r
-\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 (}\r
-{\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 (}\r
-{\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 \r
-\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\r
-\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 \r
-\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.\r
+\deftab360\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\r
+\jcompress\viewkind4\viewscale100\rsidroot5535427 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2\r
+\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 (}\r
+{\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 (}\r
+{\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 \r
+\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\r
+\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 \r
+\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.\r
 \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 \r
-\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\r
-\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 \r
-\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 GenFv.exe [options]}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \r
+\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\r
+\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 \r
+\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 GenFv.exe [options]}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \r
 \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 \r
-\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\r
-\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 \r
-\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 \r
-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.}{\r
-\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \r
-\par \hich\af37\dbch\af13\loch\f37 This util\hich\af37\dbch\af13\loch\f37 \r
-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\r
-\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}\r
- 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 \r
- 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. \r
-\par \hich\af37\dbch\af13\loch\f37 GenFv takes as input the path/filename\hich\af37\dbch\af13\loch\f37 \r
- 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\r
-\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.\r
+\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\r
+\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 \r
+\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 \r
+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 \r
+ation or uefi capsule image format defined in UEFI specification.}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \r
+\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 \r
+\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 \r
+\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\r
+\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}}\r
+{\*\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 \r
+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\r
+\hich\af40\dbch\af13\loch\f40 F\hich\af40\dbch\af13\loch\f40 I capsule image with the UEFI capsule header. \r
+\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\r
+\hich\af40\dbch\af13\loch\f40 \r
+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.\r
 \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 \r
-\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 \r
-\hich\af37\dbch\af13\loch\f37 Options\r
-\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 \r
-\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -o FileName, --outputfile FileName\r
-\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\r
-\hich\af37\dbch\af13\loch\f37 s created. This option is required.\r
-\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40 Options\r
+\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 \r
+\ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -o\hich\af40\dbch\af13\loch\f40  FileName, --outputfile FileName\r
+\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 \r
+The PI firmware volume image or Uefi Capsule image is created. This option is required.\r
+\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 \r
 \fs18\cf1\insrsid6904443 \r
-\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 \r
-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 \r
-header will be dumped. This option is required.\r
-\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 \r
- \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 \r
-\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 .\r
-\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 , --\r
-\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 \r
-\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 .\r
-\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 , --\r
-\hich\af37\dbch\af13\loch\f37 filetakesize \hich\af37\dbch\af13\loch\f37 FileTakenSize}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 \r
-\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\r
-\hich\af37\dbch\af13\loch\f37 t should be specified together with the input file.\r
-\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 \r
+\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 \r
+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 \r
+\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 \r
+\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40  dumped. This option is required.\r
+\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 \r
+ize BlockSize}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40  value required by FV image.\r
+\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\r
+\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 \r
+\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 \r
+\fs18\cf1\insrsid289912\charrsid13787208 \r
+\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 \r
+\ltrch\fcs0 \fs18\cf1\insrsid7348251 \r
+\par \tab \hich\af40\dbch\af13\loch\f40 FfsFile is placed into FV image. Multiple files can be input one by one.\r
+\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 \r
+\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.\r
+\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 \r
 \fs18\cf1\insrsid6904443 \r
-\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.\r
-\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -a AddressFile, --addrfile AddressFile\r
-\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 \r
-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.\r
-\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 \r
- \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 \r
-\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 \r
-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 \hich\af37\dbch\af13\loch\f37 .\r
-\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 \r
-\par \tab \hich\af37\dbch\af13\loch\f37 Specify capsule reset flag (PersistAcrossReset, PopulateSystemTable or none)\hich\af37\dbch\af13\loch\f37 .\r
-\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 \r
-\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 .\r
-\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 \r
+\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.\r
+\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -a AddressFile, --addrfile AddressFile\r
+\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 \r
+relocates all boot drivers and runtime drivers in this fv i\hich\af40\dbch\af13\loch\f40 mage to the preferred loaded memory address.\r
+\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 \r
+\ltrch\fcs0 \fs18\cf1\insrsid5791475 \r
+\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 \r
+\b\fs18\cf1\insrsid5791475 \r
+\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 \r
+\b\fs18\cf1\insrsid7348251 \hich\af40\dbch\af13\loch\f40 guid Guid}{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid7348251 \r
+\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 \r
+\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 \r
+\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5179294\charrsid5179294 \hich\af40\dbch\af13\loch\f40 or fv file system guid value.\r
+\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 .\r
+\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 \r
+\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5179294\charrsid4463303 \r
+\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 \r
+\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40  }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid4608121\charrsid4608121 \r
+\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 \r
+\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 \r
+\fs18\cf1\insrsid7348251 \r
+\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40 none).\r
+\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 \r
+\par \tab \hich\af40\dbch\af13\loch\f40 Specify head size for capsule image in the format of HEX or DEC.\r
+\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 \r
+\fs18\cf1\insrsid12217334 \r
+\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 .\r
+\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 \r
 \r
-\par \tab \hich\af37\dbch\af13\loch\f37 Dump a capsule i\hich\af37\dbch\af13\loch\f37 mage header.\r
-\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 \r
-\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 \r
-\par \hich\af37\dbch\af13\loch\f37 -c, --capsule}{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \r
-\par \tab \hich\af37\dbch\af13\loch\f37 Create Uefi capsule image.\r
-\par }{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 -v, --verbose\r
-\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.\r
-\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 \r
-, --\hich\af37\dbch\af13\loch\f37 debug level\r
-\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 .\r
-\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\r
-\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\r
-\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\r
-\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\r
+\par \tab \hich\af40\dbch\af13\loch\f40 Dump a capsule image header.\r
+\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -v, --verbose\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af40\dbch\af13\loch\f40 Turn on verbose output with informational messages.\r
+\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 \r
+\ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid15335526 \r
+\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 \r
+\fs18\cf1\insrsid15335526 \hich\af40\dbch\af13\loch\f40 .}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid15335526\charrsid15335526 \r
+\par }{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 -d, --debug level\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \tab \hich\af40\dbch\af13\loch\f40 Enable debug message with specified level.\r
+\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\r
+\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\r
+\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\r
+\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\r
 \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 \r
-\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\r
-\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 \r
-\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}\r
+\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\r
+\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 \r
+\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}\r
  drivers in Flash with the input FV.inf, base address, and the output file name.\r
-\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\r
-\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 FvRecovery.inf\r
-\par \hich\af37\dbch\af13\loch\f37 [options]\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_BLOCK_SIZE = 0x10000           #required option\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_NUM_BLOCKS   =  0x3\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_BASE_ADDRESS = 0xFFFD0000 #optional, if command line -r is not specified, this option will be used.\r
-\par \hich\af37\dbch\af13\loch\f37 [attribu\hich\af37\dbch\af13\loch\f37 tes]\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_ERASE_POLARITY   =  1\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_ENABLED_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_READ_ENABLED_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_READ_LOCK_STATUS = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_STATUS = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_READ_DISABLED_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_LOCK_STATUS = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_LOCK_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_LOCK_STATUS = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_ERASE_POLAR\hich\af37\dbch\af13\loch\f37 ITY = 1\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_MEMORY_MAPPED = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_READ_LOCK_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_DISABLED_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_READ_STATUS = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_WRITE_LOCK_CAP = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_STICKY_WRITE = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_FVB2_ALIGNMENT_16 = TRUE\r
-\par \hich\af37\dbch\af13\loch\f37 [files]\r
-\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\r
-\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\r
-\par \hich\af37\dbch\af13\loch\f37 ......}{\rtlch\fcs1 \ab\af37\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \r
-\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 \r
-ains Dxe drivers loaded in the preferred loaded memory address with the input FV.inf, address file, and the output file name.\r
-\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\r
-\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 \r
-\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 [options]\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_BOOT_DRIVER_BASE_ADDRESS = 0x1f300000\r
-\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 \r
-\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.\r
-\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\r
-\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 \r
-\par }{\rtlch\fcs1 \af37\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 [options]\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_CAPSULE_GUID                = 25A5CD7D-A5EB-4d74-9C28-D6EF04E03B16 (Required)\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_CA\hich\af37\dbch\af13\loch\f37 PSULE_HEADER_SIZE  = 0x20                                                                (Optional)\r
-\par \hich\af37\dbch\af13\loch\f37 EFI_CAPSULE_FLAGS              = PopulateSystemTable                                      (Optional)\r
-\par \hich\af37\dbch\af13\loch\f37 [attributes]\r
-\par \hich\af37\dbch\af13\loch\f37 [files]\r
-\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\r
-\par \hich\af37\dbch\af13\loch\f37 3. Dump capsule image header information for the input capsule image.\r
-\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 \r
+\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\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 FvRecovery.inf\r
+\par \hich\af40\dbch\af13\loch\f40 [options]\r
+\par \hich\af40\dbch\af13\loch\f40 E\hich\af40\dbch\af13\loch\f40 FI_BLOCK_SIZE = 0x10000           #required option\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_NUM_BLOCKS   =  0x3\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_BASE_ADDRESS = 0xFFFD0000 #optional, if command line -r is not specified, this option will be used.\r
+\par \hich\af40\dbch\af13\loch\f40 [attributes]\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_ERASE_POLARITY   =  1\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_ENABLED_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_READ_\hich\af40\dbch\af13\loch\f40 ENABLED_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_READ_LOCK_STATUS = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_STATUS = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_READ_DISABLED_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_LOCK_STATUS = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_LOCK_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_LOCK_STATUS = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_ERASE_POLARITY = 1\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_MEMORY_MAPPED = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_READ_LOCK_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_DISABLED_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_READ_STATUS = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_WRITE_LOCK_CAP = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_STICKY_WRITE = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_FVB2_ALIGNMENT_16 = TRUE\r
+\par \hich\af40\dbch\af13\loch\f40 [files]\r
+\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\r
+\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\r
+\par \hich\af40\dbch\af13\loch\f40 ......}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \r
+\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 \r
+\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 \r
+\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\r
+}{\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 \r
+\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 \r
+\fs18\cf1\insrsid6904443 \r
+\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  }{\r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 [options]\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_BOOT_DRIVER_BASE_ADDRESS = 0x1f300000\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_RUNTIME_DRIVER_BASE_ADDRESS = 0x1f600000}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6904443 \r
+\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.\r
+\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\r
+\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 \r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 [options]\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_GUID           \hich\af40\dbch\af13\loch\f40 = 25A5CD7D-A5EB-4d74-9C28-D6EF04E03B16 (Required)\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_HEADER_SIZE  = 0x20                                        \hich\af40\dbch\af13\loch\f40                         (Optional)\r
+\par \hich\af40\dbch\af13\loch\f40 EFI_CAPSULE_FLAGS              = PopulateSystemTable                                      (Optional)\r
+\par \hich\af40\dbch\af13\loch\f40 [attributes]\r
+\par \hich\af40\dbch\af13\loch\f40 [files]\r
+\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\r
+\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 \r
+. Dump capsule image header information for the input capsule image.\r
+\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 \r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 No known bugs.\r
-\par \hich\af37\dbch\af13\loch\f37 Report bugs to issues@buildtools.tianocore.org\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 No known bugs.\r
+\par \hich\af40\dbch\af13\loch\f40 Report bugs to issues@buildtools.tianocore.org\r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 None\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 None\r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid6904443 \hich\af37\dbch\af13\loch\f37 None\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid6904443 \hich\af40\dbch\af13\loch\f40 None\r
 \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 \r
-\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\r
-\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 \r
-\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 \r
-\hich\af37\dbch\af13\loch\f37  Intel Corporation. All rights reserved\r
-\par \hich\af37\dbch\af13\loch\f37 This program and the accompanying materials are licensed and made available \r
-\par \hich\af37\dbch\af13\loch\f37 under the terms and conditions of the BSD License which accompanies this \r
-\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\r
-\par \hich\af37\dbch\af13\loch\f37 http://opensource.org/licenses/bsd-license.php\r
+\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\r
+\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40  Intel Corporation. All rights reserved\r
+\par \hich\af40\dbch\af13\loch\f40 This program and the accompanying materials are licensed and made available \r
+\par \hich\af40\dbch\af13\loch\f40 under the terms and conditions of the BSD License which accompanies this \r
+\par \hich\af40\dbch\af13\loch\f40 distribution.  The full text of the license may be found at\r
+\par \hich\af40\dbch\af13\loch\f40 http:\hich\af40\dbch\af13\loch\f40 //opensource.org/licenses/bsd-license.php\r
 \par \r
-\par \hich\af37\dbch\af13\loch\f37 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-\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.\r
+\par \hich\af40\dbch\af13\loch\f40 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+\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.\r
 \r
 \par }}
\ No newline at end of file
index 2f2096d3b8635f6ec1e7b0032650d318946415e5..a796f9db38f42673906770e20e214d3e39e203f8 100644 (file)
-{\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};}\r
-{\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;}\r
-{\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);}\r
-{\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;}\r
-{\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);}\r
-{\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;\r
-\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{\r
-\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;}{\r
-\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;}{\r
-\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 \r
+{\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};}\r
+{\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;}\r
+{\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};}\r
+{\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};}\r
+{\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;}\r
+{\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);}\r
+{\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};}\r
+{\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};}\r
+{\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;\r
+\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;\r
+\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;}{\r
+\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;}{\r
+\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 \r
 \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 \r
-\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;}}\r
-{\*\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}\r
-{\nofpages4}{\nofwords641}{\nofchars3655}{\nofcharsws4288}{\vern24613}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\r
+\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;}{\r
+\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 \r
+Document Map;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid200735\rsid747391\rsid804235\rsid1114661\rsid1189587\rsid1720354\rsid2505219\rsid2650853\rsid3286690\rsid3350056\rsid4087862\rsid4144673\rsid4266238\rsid4731505\rsid4982015\r
+\rsid5065021\rsid5177422\rsid5510712\rsid5648175\rsid5929449\rsid6126508\rsid6228389\rsid6441940\rsid6553824\rsid7094037\rsid7154530\rsid8349431\rsid8794482\rsid9256052\rsid9533504\rsid10230445\rsid10837442\rsid11028874\rsid11357415\rsid11495481\r
+\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}\r
+{\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}}\r
 \paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect \r
 \deftab360\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\r
-\jcompress\viewkind4\viewscale100\rsidroot4982015 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\r
-\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\r
-\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 \r
-{\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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 GenFw.exe \hich\f38 \endash \loch\f38  build a UEFI image or other image.\r
+\jcompress\viewkind4\viewscale100\rsidroot4982015 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \hich .}}{\*\pnseclvl2\r
+\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 (}\r
+{\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 (}\r
+{\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 \r
+\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\r
+\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 \r
+\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 GenFw.exe \hich\f40 \endash \loch\f40  build a UEFI image or other image.\r
 \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 \r
-\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\r
-\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 \r
-\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 \r
+\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\r
+\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 \r
+\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 \r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 \r
-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\r
-\hich\af38\dbch\af13\loch\f38 d\hich\af38\dbch\af13\loch\f38 \r
-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\r
-\hich\af38\dbch\af13\loch\f38 a\hich\af38\dbch\af13\loch\f38 \r
-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\r
-\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.\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 \r
+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 \r
+ 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\r
+\hich\af40\dbch\af13\loch\f40 a\hich\af40\dbch\af13\loch\f40 \r
+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\r
+\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.\r
 \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 \r
-\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\r
-\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 \r
-\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 Filename1 [FilenameN]\r
-\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 \r
-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.\r
-\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\r
-\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 \r
-The EFI image, TeImage, AcpiImage, MicroBin or other modified PE image will be created.\r
-\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\r
-\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 \r
-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 \r
-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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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 \r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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\r
-\loch\f38 \hich\f38 . if timedata is set to \'93\loch\f38 \hich\f38 NOW\'94\loch\f38 , current system time is used.\r
-\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\r
-\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\r
-\hich\af38\dbch\af13\loch\f38 ile.\r
-\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\r
-\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.\r
-\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 \r
-\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 \r
+\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\r
+\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 \r
+\ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 Filename1 [FilenameN]\r
+\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 \r
+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 \r
+\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 .\r
+\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\r
+\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40  or other modified PE image will be created.\r
+\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\r
+\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 \r
+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 \r
+\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 \r
+\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 \r
+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\r
+\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 \r
+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 \r
+\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 \r
+\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 \r
+\ltrch\fcs0 \fs18\cf1\insrsid11028874\charrsid11028874 \r
+\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\r
+\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.\r
+\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\r
+\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.\r
+\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\r
+\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 .\r
+\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\r
+\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.}{\r
+\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 \r
+\af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690\charrsid804235 \r
+\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\r
+\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.\r
+\r
+\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\r
+\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 \r
+\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 \r
+\ltrch\fcs0 \fs18\cf1\insrsid4982015 \r
+\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\r
+\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 \r
+\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 \r
+\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 \r
+\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  }{\r
+\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 .}{\r
+\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690\charrsid7154530 \r
+\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\r
+\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.\r
+\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\r
+\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.\r
+\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\r
+\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 \r
+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 \r
+\hich\af40\dbch\af13\loch\f40  microcode bin files.\r
+\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\r
+\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 \r
+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 \r
+\hich\af40\dbch\af13\loch\f40  microcode b\hich\af40\dbch\af13\loch\f40 in files\hich\af40\dbch\af13\loch\f40 .\r
+\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 \r
+\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 \r
 ptiontable\r
-\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.\r
+\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.\r
 \r
-\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\r
-\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 \r
+\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\r
+\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 \r
 t strip zero pending of .reloc.\r
-\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\r
-\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\r
-\hich\af38\dbch\af13\loch\f38 ne multip microcode bin files.\r
-\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\r
-\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 \r
-NUM is one HEX or DEC format padding value, which is used to combine multip microcode bin files.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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\r
-\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\r
-\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\r
+\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\r
+\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.\r
+\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 \r
+-g HiiPackageListGuid, --hiiguid HiiPackageListGuid\r
+\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 \r
+\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 \r
+\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 \r
+\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  }{\r
+\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508 \r
+\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\r
+\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\r
+\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 \r
+\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 \r
+\fs18\cf1\insrsid6126508\charrsid4087862 \hich\af40\dbch\af13\loch\f40 ).\r
+\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  \r
+}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid6126508 \r
+\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 \r
+\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 \r
+\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 \r
+ a single package list as the binary resource section\hich\af40\dbch\af13\loch\f40 .\r
+\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\r
+\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.\r
+\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\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \tab \hich\af40\dbch\af13\loch\f40 Enable debug message with specified level.\r
+\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\r
+\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\r
+\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\r
+\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\r
 \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 \r
-\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\r
-\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 \r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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\r
-\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 5. Modify PeImage by zero its debug data.\r
-\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\r
-\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.\r
-\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 \r
-\loch\f38 r\r
-\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 7. Extract bin image from PeImage.\r
-\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\r
-\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.\r
-\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\r
-\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.\r
-\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 \r
-\loch\f38 o Mci.bin\r
+\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\r
+\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 \r
+\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.\r
+\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\r
+\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.\r
+\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\r
+\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.\r
+\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\r
+\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.\r
+\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\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 5. Modify PeImage by zero its debug data.\r
+\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\r
+\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.\r
+\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\r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 7. Extract bin image from PeImage.\r
+\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\r
+\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.\r
+\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\r
+\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.\r
+\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 \r
+\loch\f40 o Mci.bin}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid3286690 \r
+\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 \r
+\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  }{\r
+\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 \r
+\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 \r
+\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 .\r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid2650853\charrsid4731505 \r
+\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 \r
+\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\r
+\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 \r
+\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\r
+\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 \r
+\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  }{\r
+\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 \r
+\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 \r
+\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 \r
+\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 \r
+\b\fs18\cf1\insrsid4731505\charrsid4731505 \hich\af40\dbch\af13\loch\f40 .hpk}{\rtlch\fcs1 \ab\af40\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid2650853 \r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 No known bugs.\r
-\par \hich\af38\dbch\af13\loch\f38 Report bugs to issues@buildtools.tianocore.org\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 No known bugs.\r
+\par \hich\af40\dbch\af13\loch\f40 Report bugs to issues@buildtools.tianocore.org\r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 None\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 N\hich\af40\dbch\af13\loch\f40 one\r
 \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 \r
-\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\r
-\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 \r
-\fs18\cf1\insrsid3286690 \hich\af38\dbch\af13\loch\f38 None\r
+\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\r
+\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 \r
+\fs18\cf1\insrsid3286690 \hich\af40\dbch\af13\loch\f40 None\r
 \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 \r
-\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\r
-\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 \r
-\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 \r
-\hich\af38\dbch\af13\loch\f38  Intel Corporation. All rights reserved\r
-\par \hich\af38\dbch\af13\loch\f38 This program and the accompanying materials are licensed and made available \r
-\par \hich\af38\dbch\af13\loch\f38 under the terms and conditions of the BSD License which accompanies this \r
-\par \hich\af38\dbch\af13\loch\f38 distribution.  The full text of the license may be found at\r
-\par \hich\af38\dbch\af13\loch\f38 http:\hich\af38\dbch\af13\loch\f38 //opensource.org/licenses/bsd-license.php\r
+\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\r
+\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 \r
+\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 \r
+\hich\af40\dbch\af13\loch\f40  Intel Corporation. All rights reserved\r
+\par \hich\af40\dbch\af13\loch\f40 This program and the accompanying materials are licensed and made available \r
+\par \hich\af40\dbch\af13\loch\f40 under the terms and conditions of the BSD License which accompanies this \r
+\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\r
+\par \hich\af40\dbch\af13\loch\f40 http://opensource.org/licenses/bsd-license.php\r
 \par \r
-\par \hich\af38\dbch\af13\loch\f38 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-\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.\r
+\par \hich\af40\dbch\af13\loch\f40 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+\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.\r
 \r
-\par }{\rtlch\fcs1 \af38\afs18 \ltrch\fcs0 \fs18\insrsid3286690 \r
+\par }{\rtlch\fcs1 \af40\afs18 \ltrch\fcs0 \fs18\insrsid3286690 \r
 \par }}
\ No newline at end of file
index 0f1f0d313bc38b2695d297eac285dd6119c0e2a4..0edec75bc4d6cc5862a4a8ff229b5e2f1d2c5209 100755 (executable)
@@ -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()