--- src/ld/InputFiles.cpp 2014-04-04 15:42:29.000000000 -0700
+++ src/ld/InputFiles.cpp 2014-05-16 14:28:58.000000000 -0700
#include <AvailabilityMacros.h>
--- src/ld/InputFiles.h 2014-04-04 15:42:29.000000000 -0700
+++ src/ld/InputFiles.h 2014-05-16 14:28:58.000000000 -0700
@@ -107,7 +107,11 @@ private:
static void parseWorkerThread(InputFiles *inputFiles);
void startThread(void (*threadFunc)(InputFiles *)) const;
- typedef std::unordered_map<const char*, ld::dylib::File*, CStringHash, CStringEquals> InstallNameToDylib;
+ bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
+ typedef __gnu_cxx::hash_map<const char*, ld::dylib::File*, __gnu_cxx::hash<const char*>, CStringEquals> InstallNameToDylib;
std::vector<ld::File*> _inputFiles;
--- src/ld/LinkEditClassic.hpp 2014-04-04 15:42:29.000000000 -0700
+++ src/ld/LinkEditClassic.hpp 2014-05-16 14:28:58.000000000 -0700
-#include <unordered_map>
@@ -91,8 +90,13 @@ public:
uint32_t currentOffset();
+ bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
enum { kBufferSize = 0x01000000 };
- typedef std::unordered_map<const char*, int32_t, CStringHash, CStringEquals> StringToOffset;
+ typedef __gnu_cxx::hash_map<const char*, int32_t, __gnu_cxx::hash<const char*>, CStringEquals> StringToOffset;
const uint32_t _pointerSize;
std::vector<char*> _fullBuffers;
--- src/ld/Options.h 2014-04-04 15:42:29.000000000 -0700
+++ src/ld/Options.h 2014-05-16 14:28:58.000000000 -0700
#include <mach/machine.h>
-#include <unordered_set>
-#include <unordered_map>
@@ -376,8 +376,13 @@ public:
const std::vector<SectionRename>& sectionRenames() const { return fSectionRenames; }
- typedef std::unordered_map<const char*, unsigned int, ld::CStringHash, ld::CStringEquals> NameToOrder;
- typedef std::unordered_set<const char*, ld::CStringHash, ld::CStringEquals> NameSet;
+ bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
+ typedef __gnu_cxx::hash_map<const char*, unsigned int, __gnu_cxx::hash<const char*>, CStringEquals> NameToOrder;
+ typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals> NameSet;
enum ExportMode { kExportDefault, kExportSome, kDontExportSome };
enum LibrarySearchMode { kSearchDylibAndArchiveInEachDir, kSearchAllDirsForDylibsThenAllDirsForArchives };
enum InterposeMode { kInterposeNone, kInterposeAllExternal, kInterposeSome };
--- src/ld/OutputFile.cpp 2014-04-04 15:42:29.000000000 -0700
+++ src/ld/OutputFile.cpp 2014-05-16 14:28:58.000000000 -0700
-#include <unordered_set>
#include <CommonCrypto/CommonDigest.h>