diff --git a/include/llvm/Support/Registry.h b/include/llvm/Support/Registry.h
index d0375be..10449e0 100644
--- a/include/llvm/Support/Registry.h
+++ b/include/llvm/Support/Registry.h
@@ -205,7 +205,7 @@ namespace llvm {
 
   // Since these are defined in a header file, plugins must be sure to export
   // these symbols.
-
+/*
   template <typename T, typename U>
   typename Registry<T,U>::node *Registry<T,U>::Head;
 
@@ -217,7 +217,7 @@ namespace llvm {
 
   template <typename T, typename U>
   typename Registry<T,U>::listener *Registry<T,U>::ListenerTail;
-
+*/
 }
 
 #endif
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 5a91341..c99b919 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1965,3 +1965,22 @@ GCMetadataPrinter *AsmPrinter::GetOrCreateGCPrinter(GCStrategy *S) {
   return 0;
 }
 
+
+// where to put this?
+template <>
+llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::node*
+  llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::Head;
+
+template <>
+llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::node*
+  llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::Tail;
+
+template <>
+llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::listener*
+  llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::ListenerHead;
+
+template <>
+llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::listener*
+  llvm::Registry<llvm::GCMetadataPrinter,llvm::RegistryTraits<llvm::GCMetadataPrinter> >::ListenerTail;
+//
+
diff --git a/lib/CodeGen/GCStrategy.cpp b/lib/CodeGen/GCStrategy.cpp
index 766c6ee..6d828d1 100644
--- a/lib/CodeGen/GCStrategy.cpp
+++ b/lib/CodeGen/GCStrategy.cpp
@@ -414,3 +414,22 @@ bool MachineCodeAnalysis::runOnMachineFunction(MachineFunction &MF) {
   
   return false;
 }
+
+// where to put this?
+template <>
+llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::node*
+  llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::Head;
+
+template <>
+llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::node*
+  llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::Tail;
+
+template <>
+llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::listener*
+  llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::ListenerHead;
+
+template <>
+llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::listener*
+  llvm::Registry<llvm::GCStrategy,llvm::RegistryTraits<llvm::GCStrategy> >::ListenerTail;
+//
+
