diff --git a/indra/llappearance/llpolymesh.h b/indra/llappearance/llpolymesh.h
index 8f91d1585cacb49826bcddbf6655c2f20ef8a98c..92db781aa442bbb0e094deec275d6b84317b78d4 100644
--- a/indra/llappearance/llpolymesh.h
+++ b/indra/llappearance/llpolymesh.h
@@ -357,7 +357,7 @@ class LLPolyMesh
 	LLPolyMesh				*mReferenceMesh;
 
 	// global mesh list
-	typedef std::map<std::string, LLPolyMeshSharedData*> LLPolyMeshSharedDataTable; 
+	typedef boost::unordered_flat_map<std::string, LLPolyMeshSharedData*, al::string_hash, std::equal_to<>> LLPolyMeshSharedDataTable;
 	static LLPolyMeshSharedDataTable sGlobalSharedMeshList;
 
 	// Backlink only; don't make this an LLPointer.
diff --git a/indra/llcommon/llevents.h b/indra/llcommon/llevents.h
index 1f0c310ddc1d25ec71785eb7b4c7168ca1a1c50f..f9b831728ceba590a45bc7f51578e3604f046120 100644
--- a/indra/llcommon/llevents.h
+++ b/indra/llcommon/llevents.h
@@ -348,7 +348,7 @@ class LL_COMMON_API LLEventPumps final : public LLSingleton<LLEventPumps>,
     // LLEventPump subclass statically, as a class member, on the stack or on
     // the heap. In such cases, the instantiating party is responsible for its
     // lifespan.
-    typedef boost::unordered_map<std::string, LLEventPump*> PumpMap;
+    typedef std::map<std::string, LLEventPump*, std::less<>> PumpMap;
     PumpMap mPumpMap;
     // Set of all LLEventPumps we instantiated. Membership in this set means
     // we claim ownership, and will delete them when this LLEventPumps is
@@ -356,7 +356,7 @@ class LL_COMMON_API LLEventPumps final : public LLSingleton<LLEventPumps>,
     typedef boost::unordered_set<LLEventPump*> PumpSet;
     PumpSet mOurPumps;
     // for make(), map string type name to LLEventPump subclass factory function
-    typedef boost::unordered_map<std::string, TypeFactory> TypeFactories;
+    typedef boost::unordered_map<std::string, TypeFactory, al::string_hash, std::equal_to<>> TypeFactories;
     // Data used by make().
     // One might think mFactories and mTypes could reasonably be static. So
     // they could -- if not for the fact that make() or obtain() might be
@@ -366,7 +366,7 @@ class LL_COMMON_API LLEventPumps final : public LLSingleton<LLEventPumps>,
 
     // for obtain(), map desired string instance name to string type when
     // obtain() must create the instance
-    typedef boost::unordered_map<std::string, std::string> InstanceTypes;
+    typedef boost::unordered_map<std::string, std::string, al::string_hash, std::equal_to<>> InstanceTypes;
     InstanceTypes mTypes;
 };
 
@@ -607,7 +607,7 @@ class LL_COMMON_API LLEventPump: public LLEventTrackable
     /// Map of named listeners. This tracks the listeners that actually exist
     /// at this moment. When we stopListening(), we discard the entry from
     /// this map.
-    typedef boost::unordered_map<std::string, boost::signals2::connection> ConnectionMap;
+    typedef boost::unordered_map<std::string, boost::signals2::connection, al::string_hash, std::equal_to<>> ConnectionMap;
     ConnectionMap mConnections;
     typedef LLDependencies<std::string, float> DependencyMap;
     /// Dependencies between listeners. For each listener, track the float
diff --git a/indra/llui/llemojidictionary.h b/indra/llui/llemojidictionary.h
index 80dba6e3e02769c9a719fd7504704222d14e89a0..d085f7c12dbe96392480b4a6584e65c4a44961c3 100644
--- a/indra/llui/llemojidictionary.h
+++ b/indra/llui/llemojidictionary.h
@@ -81,11 +81,11 @@ class LLEmojiDictionary : public LLParamSingleton<LLEmojiDictionary>, public LLI
     ~LLEmojiDictionary() override {};
 
 public:
-    typedef boost::unordered_map<std::string, std::string> cat2cat_map_t;
-    typedef boost::unordered_map<std::string, const LLEmojiGroup*> cat2group_map_t;
+    typedef boost::unordered_map<std::string, std::string, al::string_hash, std::equal_to<>> cat2cat_map_t;
+    typedef boost::unordered_map<std::string, const LLEmojiGroup*, al::string_hash, std::equal_to<>> cat2group_map_t;
     typedef boost::unordered_map<llwchar, const LLEmojiDescriptor*> emoji2descr_map_t;
-    typedef boost::unordered_map<std::string, const LLEmojiDescriptor*> code2descr_map_t;
-    typedef boost::unordered_map<std::string, std::vector<const LLEmojiDescriptor*>> cat2descrs_map_t;
+    typedef boost::unordered_map<std::string, const LLEmojiDescriptor*, al::string_hash, std::equal_to<>> code2descr_map_t;
+    typedef boost::unordered_map<std::string, std::vector<const LLEmojiDescriptor*>, al::string_hash, std::equal_to<>> cat2descrs_map_t;
 
     static void initClass();
     LLWString findMatchingEmojis(const std::string& needle) const;