Sync tool code to BuildTools project r1783.
authorlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 29 Dec 2009 06:16:53 +0000 (06:16 +0000)
committerlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 29 Dec 2009 06:16:53 +0000 (06:16 +0000)
git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@9623 de2fecce-e211-0410-80a6-f3fac2684e05

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

diff --git a/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib b/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib
deleted file mode 100644 (file)
index 5f14954..0000000
Binary files a/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/DEBUG_RVCT31CYGWIN/CompilerIntrinsicsLib.lib and /dev/null differ
diff --git a/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib b/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib
deleted file mode 100644 (file)
index d3efae3..0000000
Binary files a/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Arm/RELEASE_RVCT31CYGWIN/CompilerIntrinsicsLib.lib and /dev/null differ
diff --git a/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/BootSectImage b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/BuildEnv b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Ecc b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiLdrImage b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/EfiRom b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenCrc32 b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenDepex b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFds b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFfs b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFv b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenFw b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenPage b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenSec b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GenVtf b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/GnuGenBootSector b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/LzmaCompress b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunBinToolFromBuildDir b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/RunToolFromSource b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Split b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/TargetTool b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/TianoCompress b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/Trim b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/VfrCompile b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/VolInfo b/edk2/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 4d91a26..6d7aa00 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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/build b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf b/edk2/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/edk2/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec b/edk2/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 a20f3a3..454aa34 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/BootSectImage.exe and b/edk2/BaseTools/Bin/Win32/BootSectImage.exe differ
index 2e3b102..cfa5475 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/EfiLdrImage.exe and b/edk2/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index 413f2bb..399b2d8 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/EfiRom.exe and b/edk2/BaseTools/Bin/Win32/EfiRom.exe differ
index 406f903..e618ad1 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenBootSector.exe and b/edk2/BaseTools/Bin/Win32/GenBootSector.exe differ
index d8185c5..3e4b5e5 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenCrc32.exe and b/edk2/BaseTools/Bin/Win32/GenCrc32.exe differ
index ba0bc6c..3959a80 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenDepex.exe and b/edk2/BaseTools/Bin/Win32/GenDepex.exe differ
index 96572b8..65322ef 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenFds.exe and b/edk2/BaseTools/Bin/Win32/GenFds.exe differ
index a479bd8..bc3e447 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenFfs.exe and b/edk2/BaseTools/Bin/Win32/GenFfs.exe differ
index 2281b88..485fa10 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenFv.exe and b/edk2/BaseTools/Bin/Win32/GenFv.exe differ
index cb6f95f..724b501 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenFw.exe and b/edk2/BaseTools/Bin/Win32/GenFw.exe differ
index 6b64ebc..0c47f3f 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenPage.exe and b/edk2/BaseTools/Bin/Win32/GenPage.exe differ
index c19a2fd..62adbfa 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenSec.exe and b/edk2/BaseTools/Bin/Win32/GenSec.exe differ
index 19aa09c..a222d5e 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/GenVtf.exe and b/edk2/BaseTools/Bin/Win32/GenVtf.exe differ
index 76c369f..b280fb2 100644 (file)
Binary files a/edk2/BaseTools/Bin/Win32/LzmaCompress.exe and b/edk2/BaseTools/Bin/Win32/LzmaCompress.exe differ
index c88b721..e1474b6 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/Spd2Dec.exe and b/edk2/BaseTools/Bin/Win32/Spd2Dec.exe differ
index 2583f30..3e02697 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/Split.exe and b/edk2/BaseTools/Bin/Win32/Split.exe differ
index 65e7b65..f9894b0 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/TianoCompress.exe and b/edk2/BaseTools/Bin/Win32/TianoCompress.exe differ
index d99729f..9777b80 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/Trim.exe and b/edk2/BaseTools/Bin/Win32/Trim.exe differ
index bcf7958..a193e5b 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/VfrCompile.exe and b/edk2/BaseTools/Bin/Win32/VfrCompile.exe differ
index 116efbd..32e5218 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/VolInfo.exe and b/edk2/BaseTools/Bin/Win32/VolInfo.exe differ
index b636e70..02827fe 100755 (executable)
Binary files a/edk2/BaseTools/Bin/Win32/build.exe and b/edk2/BaseTools/Bin/Win32/build.exe differ
index 83e12d7..768e2d5 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 0ce61b7..a77af55 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 cbff0b1..163a354 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 0166c22..5ffb5d4 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 dc50e87..a6f17e1 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 b39c5bd..cd10da9 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 fc2e4ca..077a66c 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 5a7111c..68cdc63 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 b0ad2d1..f65ba96 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 2689c22..65c77c4 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 f2ff2d2..135c9ed 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 6b5d6bd..d17a2ff 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 e72f052..aabd143 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 32b8cfd..9a1d0ca 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 890cfd9..2e417bf 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 012ebb6..a1d9f93 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 5e926ac..e76ffd3 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 57cbc23..69cca91 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 5b2ad46..5d79d89 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 7555556..2f95003 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 a4dc225..5f69e7b 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 22e1a2b..d5fe738 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 87da95a..ffa898b 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 324078a..0b84896 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 ea529a5..09ec691 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 ff61c9b..fc3dd11 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 9594ef0..ba026a9 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 76dfbb6..2883169 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 a9ff26e..6190bce 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 2f2e812..11b6496 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 5f470de..624d941 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/edk2/BaseTools/Source/Python/sitecustomize.py b/edk2/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 4a58119..72e4246 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 90b3562..2569128 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 2f2096d..a796f9d 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 0f1f0d3..0edec75 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()