diff --git a/llvm/unittests/ExecutionEngine/Orc/GlobalMappingLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/GlobalMappingLayerTest.cpp
index 2756999..d093b2a 100644
--- a/llvm/unittests/ExecutionEngine/Orc/GlobalMappingLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/GlobalMappingLayerTest.cpp
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/ExecutionEngine/Orc/GlobalMappingLayer.h"
+#include "OrcTestCommon.h"
 #include "gtest/gtest.h"
 
 using namespace llvm;
@@ -15,21 +16,26 @@
 
 namespace {
 
-struct MockBaseLayer {
-
-  typedef int ModuleHandleT;
-
-  JITSymbol findSymbol(const std::string &Name, bool ExportedSymbolsOnly) {
-    if (Name == "bar")
-      return llvm::JITSymbol(0x4567, JITSymbolFlags::Exported);
-    return nullptr;
-  }
-
-};
-
 TEST(GlobalMappingLayerTest, Empty) {
-  MockBaseLayer M;
-  GlobalMappingLayer<MockBaseLayer> L(M);
+  MockBaseLayer<int, std::shared_ptr<Module>> TestBaseLayer;
+
+  TestBaseLayer.addModuleImpl =
+    [](std::shared_ptr<Module> M, std::shared_ptr<JITSymbolResolver> R) {
+      return 42;
+    };
+
+  TestBaseLayer.findSymbolImpl =
+    [](const std::string &Name, bool ExportedSymbolsOnly) -> JITSymbol {
+      if (Name == "bar")
+        return llvm::JITSymbol(0x4567, JITSymbolFlags::Exported);
+      return nullptr;
+    };
+
+  GlobalMappingLayer<decltype(TestBaseLayer)> L(TestBaseLayer);
+
+  // Test addModule interface.
+  int H = cantFail(L.addModule(nullptr, nullptr));
+  EXPECT_EQ(H, 42) << "Incorrect result from addModule";
 
   // Test fall-through for missing symbol.
   auto FooSym = L.findSymbol("foo", true);
