diff --git a/build/tools/build-llvm.sh b/build/tools/build-llvm.sh
index 44b256d..0b98c91 100755
--- a/build/tools/build-llvm.sh
+++ b/build/tools/build-llvm.sh
@@ -352,11 +352,9 @@
     rm -f $TOOLCHAIN_BUILD_PREFIX/bin/$i.exe
 done
 
-if [ -n "$KEEP_SYMBOLS" ]; then
-    # strip because /usr/bin/install wasn't called with -s
-    test -z "$STRIP" && STRIP=strip
-    $STRIP $TOOLCHAIN_BUILD_PREFIX/bin/*
-fi
+test -z "$STRIP" && STRIP=strip
+$STRIP $TOOLCHAIN_BUILD_PREFIX/bin/*
+$STRIP $TOOLCHAIN_BUILD_PREFIX/lib/*
 
 # copy to toolchain path
 run copy_directory "$TOOLCHAIN_BUILD_PREFIX" "$TOOLCHAIN_PATH"
diff --git a/build/tools/toolchain-patches/mclinker/0001-Add-GCC-collect2-compatibility-flags.patch b/build/tools/toolchain-patches/mclinker/0001-Add-GCC-collect2-compatibility-flags.patch
index ed3f915..6fb7d0e 100644
--- a/build/tools/toolchain-patches/mclinker/0001-Add-GCC-collect2-compatibility-flags.patch
+++ b/build/tools/toolchain-patches/mclinker/0001-Add-GCC-collect2-compatibility-flags.patch
@@ -1,41 +1,51 @@
 From bd187102557cfff78b1fe929db3466a3c775ebde Mon Sep 17 00:00:00 2001
 From: Andrew Hsieh <andrewhsieh@google.com>
 Date: Fri, 22 Feb 2013 12:30:18 +0800
-Subject: [PATCH 1/2] Add GCC/collect2 compatibility flags
+Subject: Add GCC/collect2 compatibility flags
 
 Add -use-gold, -use-mcld, and use-ld passed by GCC/collect2
 both ld.bfd ld.gold ignore
 
 Change-Id: Iaa1cb032c773d99bdc26ebf7335965c76e03a22d
 ---
- tools/llvm-mcld/llvm-mcld.cpp |   19 +++++++++++++++++++
- 1 files changed, 19 insertions(+), 0 deletions(-)
+ tools/llvm-mcld/llvm-mcld.cpp |   29 +++++++++++++++++++
+ 1 files changed, 29 insertions(+), 0 deletions(-)
 
 diff --git a/tools/llvm-mcld/llvm-mcld.cpp b/tools/llvm-mcld/llvm-mcld.cpp
 index 088ba07..e478729 100644
 --- a/tools/llvm-mcld/llvm-mcld.cpp
 +++ b/tools/llvm-mcld/llvm-mcld.cpp
-@@ -792,6 +792,25 @@ ArgTextSegAddr("Ttext",
+@@ -792,6 +792,35 @@ ArgTextSegAddr("Ttext",
                 cl::init(-1U));
  
  //===----------------------------------------------------------------------===//
 +// Ignored GCC Compatibility Options
 +//===----------------------------------------------------------------------===//
 +static cl::opt<bool>
-+ArgLDgold("use-gold",
++Arguse_gold("use-gold",
 +          cl::desc("GCC/collect2 compatibility: uses ld.gold.  Ignored"),
 +          cl::init(false));
 +
 +static cl::opt<bool>
-+ArgLDmcld("use-mcld",
++Arguse_mcld("use-mcld",
 +          cl::desc("GCC/collect2 compatibility: uses ld.mcld.  Ignored"),
 +          cl::init(false));
 +
 +static cl::opt<bool>
-+ArgLDbfd("use-ld",
++Arguse_ld("use-ld",
 +          cl::desc("GCC/collect2 compatibility: uses ld.bfd.  Ignored"),
 +          cl::init(false));
 +
++static cl::opt<bool>
++ArgEL("EL",
++          cl::desc("GCC/collect2 compatibility: MIPS little endian.  Ignored"),
++          cl::init(false));
++
++static cl::opt<bool>
++ArgEB("EB",
++          cl::desc("GCC/collect2 compatibility: MIPS big endian.  Ignored"),
++          cl::init(false));
++
 +
 +//===----------------------------------------------------------------------===//
  // non-member functions
diff --git a/build/tools/toolchain-patches/mclinker/0002-Compile-agsint-llvm-3.2.patch b/build/tools/toolchain-patches/mclinker/0002-Compile-agsint-llvm-3.2.patch
index 3a41d64..e34b649 100644
--- a/build/tools/toolchain-patches/mclinker/0002-Compile-agsint-llvm-3.2.patch
+++ b/build/tools/toolchain-patches/mclinker/0002-Compile-agsint-llvm-3.2.patch
@@ -1,7 +1,7 @@
 From fb2eb10813621ec22963258220abd41e592fc430 Mon Sep 17 00:00:00 2001
 From: Andrew Hsieh <andrewhsieh@google.com>
 Date: Fri, 22 Feb 2013 12:33:36 +0800
-Subject: [PATCH 2/2] Compile agsint llvm 3.2
+Subject: Compile agsint llvm 3.2
 
 Current mclinker needs LLVM -r 173175 which contains re-org of
 some headers from since LLVM 3.2.  This patch is to roll back
diff --git a/build/tools/toolchain-patches/mclinker/0004-Temp-fix-to-transate-GNU-linker-emulator-to-triple.patch b/build/tools/toolchain-patches/mclinker/0004-Temp-fix-to-transate-GNU-linker-emulator-to-triple.patch
new file mode 100644
index 0000000..db1722a
--- /dev/null
+++ b/build/tools/toolchain-patches/mclinker/0004-Temp-fix-to-transate-GNU-linker-emulator-to-triple.patch
@@ -0,0 +1,37 @@
+From eed8238837232a0e58ede4cfeca177eb6f53c28d Mon Sep 17 00:00:00 2001
+From: Andrew Hsieh <andrewhsieh@google.com>
+Date: Thu, 28 Feb 2013 12:48:48 +0800
+Subject: [PATCH] Temp fix to transate GNU linker emulator to triple
+
+Change-Id: I847f571422d72fe6607a54f482a5e772e8f585bc
+---
+ tools/llvm-mcld/llvm-mcld.cpp |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/tools/llvm-mcld/llvm-mcld.cpp b/tools/llvm-mcld/llvm-mcld.cpp
+index 088ba07..4a407be 100644
+--- a/tools/llvm-mcld/llvm-mcld.cpp
++++ b/tools/llvm-mcld/llvm-mcld.cpp
+@@ -1281,6 +1281,19 @@ int main(int argc, char* argv[])
+   }
+   Module &mod = *M.get();
+ 
++  if (TargetTriple.empty()) {
++    if (!ArgEmulation.empty()) {
++      if (ArgEmulation.find("arm") != std::string::npos)
++        TargetTriple = "arm-linux-androideabi";
++      else if (ArgEmulation.find("i386") != std::string::npos)
++        TargetTriple = "i686-linux-android";
++      else if (ArgEmulation.find("ltsmip") != std::string::npos)
++        TargetTriple = "mipsel-linux-android";
++      else
++        errs() << "** Unknown -m option " << ArgEmulation << " **\n";
++    }
++  }
++   
+   // If we are supposed to override the target triple, do so now.
+   Triple TheTriple;
+   if (!TargetTriple.empty()) {
+-- 
+1.7.7.3
+
diff --git a/build/tools/toolchain-patches/mclinker/0005-Ignore-empty-archive.patch b/build/tools/toolchain-patches/mclinker/0005-Ignore-empty-archive.patch
new file mode 100644
index 0000000..209515b
--- /dev/null
+++ b/build/tools/toolchain-patches/mclinker/0005-Ignore-empty-archive.patch
@@ -0,0 +1,52 @@
+From 0b01edd242c89bf970f4604894c09d7545372bc0 Mon Sep 17 00:00:00 2001
+From: Andrew Hsieh <andrewhsieh@google.com>
+Date: Fri, 1 Mar 2013 18:24:12 +0800
+Subject: [PATCH] Ignore empty archive
+
+Change-Id: If0f144cc847790fdc77e997fda455bcaa3ab0b7d
+---
+ lib/LD/GNUArchiveReader.cpp |   14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/lib/LD/GNUArchiveReader.cpp b/lib/LD/GNUArchiveReader.cpp
+index 82e4fec..70a9289 100644
+--- a/lib/LD/GNUArchiveReader.cpp
++++ b/lib/LD/GNUArchiveReader.cpp
+@@ -237,6 +237,11 @@ Input* GNUArchiveReader::readMemberHeader(Archive& pArchiveRoot,
+ bool GNUArchiveReader::readSymbolTable(Archive& pArchive)
+ {
+   assert(pArchive.getARFile().hasMemArea());
++  FileHandle *handler = pArchive.getARFile().memArea()->handler();
++  if (handler->size() == Archive::MAGIC_LEN) {
++    pArchive.setSymTabSize(0);
++    return true;
++  }
+ 
+   MemoryRegion* header_region =
+     pArchive.getARFile().memArea()->request((pArchive.getARFile().fileOffset() +
+@@ -288,6 +293,13 @@ bool GNUArchiveReader::readSymbolTable(Archive& pArchive)
+ /// readStringTable - read the strtab for long file name of the archive
+ bool GNUArchiveReader::readStringTable(Archive& pArchive)
+ {
++  assert(pArchive.getARFile().hasMemArea());
++
++  FileHandle *handler = pArchive.getARFile().memArea()->handler();
++  if (handler->size() == Archive::MAGIC_LEN) {
++    return true;
++  }
++
+   size_t offset = Archive::MAGIC_LEN +
+                   sizeof(Archive::MemberHeader) +
+                   pArchive.getSymTabSize();
+@@ -295,8 +307,6 @@ bool GNUArchiveReader::readStringTable(Archive& pArchive)
+   if (0x0 != (offset & 1))
+     ++offset;
+ 
+-  assert(pArchive.getARFile().hasMemArea());
+-
+   MemoryRegion* header_region =
+     pArchive.getARFile().memArea()->request((pArchive.getARFile().fileOffset() +
+                                              offset),
+-- 
+1.7.7.3
+
