<pre style='margin:0'>
Jeremy Huddleston Sequoia (jeremyhu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/87e7b2fc0c4ba850dcd82b4cc3ddce0db939f17a">https://github.com/macports/macports-ports/commit/87e7b2fc0c4ba850dcd82b4cc3ddce0db939f17a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 87e7b2f  ld64-136: Mark port obsolete.
</span>87e7b2f is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 87e7b2fc0c4ba850dcd82b4cc3ddce0db939f17a
</span>Author: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
AuthorDate: Sun Dec 25 23:03:16 2016 -0800

<span style='display:block; white-space:pre;color:#404040;'>    ld64-136: Mark port obsolete.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Users should be able to use ld64-127, ld64-236, or ld64-latest instead.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
</span>---
 devel/ld64/Portfile                      |  47 +--
 devel/ld64/files/ld64-136-hash_set.patch | 560 -------------------------------
 2 files changed, 10 insertions(+), 597 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/ld64/Portfile b/devel/ld64/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index f3fba6e..64d956f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/ld64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/ld64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,7 @@ PortGroup               compiler_blacklist_versions 1.0
</span> 
 name                    ld64
 epoch                   2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version                 2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                 3
</span> set dyld_version        421.2
 categories              devel
 platforms               darwin
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,9 +29,6 @@ checksums           dyld-421.2.tar.gz \
</span>                     ld64-127.2.tar.gz \
                     rmd160  8ee709341549a1944732daef6ebab7ef1acfcc6e \
                     sha256  97b75547b2bd761306ab3e15ae297f01e7ab9760b922bc657f4ef72e4e052142 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ld64-136.tar.gz \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  4a2930ccdd398b63a108810e90293ab96dc154a0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  99d6c4acb6d4cdf45772951dd2308222aa966763170137459a9d276674645d9e \
</span>                     ld64-236.3.tar.gz \
                     rmd160  6a3f44aa9ae57a60d2cff5b3d47be7972ad83029 \
                     sha256  8ef36729b643201081ab45ebd8586ede8f9968bc17614b679a940faa82875ca6 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -105,30 +102,9 @@ subport ld64-127 {
</span> subport ld64-136 {
     # XCode 4.6
     version             136
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    revision            9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set makefile        "Makefile-133"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set ld64_ver        136
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ld64-version.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ld64-133-no-CrashReporterClient.h.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ld64-134-missing-include.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ld64-136-i386-badAddress.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        PR-13282463.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        PR-29117886.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ld64-ppc-9610466.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${configure.cxx_stdlib} eq "libstdc++"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append   ld64-136-hash_set.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {${os.major} <= 9} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        pre-fetch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_error "$subport is not supported on Leopard or earlier.  It requires the blocks runtime."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            error "unsupported platform"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision            10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    replaced_by         ld64-236
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    PortGroup           obsolete 1.0
</span> }
 
 subport ld64-236 {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -207,13 +183,12 @@ if {${subport} eq ${name}} {
</span>     build {}
     use_configure no
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant ld64_97 conflicts ld64_127 ld64_136 ld64_236 ld64_xcode description {Use ld64-97 as the default linker (last version that works on Tiger)} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant ld64_127 conflicts ld64_97 ld64_136 ld64_236 ld64_xcode description {Use ld64-127 as the default linker (last version that supports ppc and works on Leopard)} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant ld64_136 conflicts ld64_97 ld64_127 ld64_236 ld64_xcode description {Use ld64-136 as the default linker (last version that can be built by gcc)} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant ld64_236 conflicts ld64_97 ld64_127 ld64_136 ld64_xcode description {Use ld64-236 as the default linker (last version that builds against OS X's libstdc++)} {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    variant ld64_xcode conflicts ld64_97 ld64_127 ld64_136 ld64_236 description {Use ld64-xcode as the default linker (version provided by the selected Xcode.app toolchain)} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ld64_97 conflicts ld64_127 ld64_236 ld64_xcode description {Use ld64-97 as the default linker (last version that works on Tiger)} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ld64_127 conflicts ld64_97 ld64_236 ld64_xcode description {Use ld64-127 as the default linker (last version that supports ppc and works on Leopard)} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ld64_236 conflicts ld64_97 ld64_127 ld64_xcode description {Use ld64-236 as the default linker (last version that builds against OS X's libstdc++)} {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ld64_xcode conflicts ld64_97 ld64_127 ld64_236 description {Use ld64-xcode as the default linker (version provided by the selected Xcode.app toolchain)} {}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {![variant_isset ld64_97] && ![variant_isset ld64_127] && ![variant_isset ld64_136]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![variant_isset ld64_97] && ![variant_isset ld64_127]} {
</span>         if {${os.major} < 9} {
             default_variants +ld64_97
         } elseif {${os.major} < 11} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -225,8 +200,6 @@ if {${subport} eq ${name}} {
</span>         set ld64_ver 97
     } elseif {[variant_isset ld64_127]} {
         set ld64_ver 127
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    } elseif {[variant_isset ld64_136]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set ld64_ver 136
</span>     } elseif {[variant_isset ld64_236]} {
         set ld64_ver 236
     } elseif {[variant_isset ld64_xcode]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -260,7 +233,7 @@ if {${subport} eq ${name}} {
</span>         xinstall -m 755 ${filespath}/ld-xcode ${destroot}${prefix}/libexec/ld64/ld-xcode
         ln -s ../libexec/ld64/ld-xcode ${destroot}${prefix}/bin/ld-xcode
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} elseif {${subport} ne "${name}-136"} {
</span>     distfiles           dyld-${dyld_version}.tar.gz ${name}-${version}.tar.gz
 
     depends_build       path:include/mach-o/arm/reloc.h:libmacho-headers
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/ld64/files/ld64-136-hash_set.patch b/devel/ld64/files/ld64-136-hash_set.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0808e0b..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/ld64/files/ld64-136-hash_set.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,560 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Don't use unordered_set without libc++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/InputFiles.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/InputFiles.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -49,6 +49,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <list>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <dlfcn.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/InputFiles.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/InputFiles.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -103,7 +103,11 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static void                                     parseWorkerThread(InputFiles *inputFiles);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void                                            startThread(void (*threadFunc)(InputFiles *)) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, ld::dylib::File*, CStringHash, CStringEquals>     InstallNameToDylib;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, ld::dylib::File*, __gnu_cxx::hash<const char*>, CStringEquals>     InstallNameToDylib;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const Options&                              _options;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   std::vector<ld::File*>            _inputFiles;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/LinkEditClassic.hpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/LinkEditClassic.hpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -32,7 +32,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Options.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -91,8 +90,13 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   uint32_t                                                                        currentOffset();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   enum { kBufferSize = 0x01000000 };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, int32_t, CStringHash, CStringEquals> StringToOffset;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, int32_t, __gnu_cxx::hash<const char*>, CStringEquals> StringToOffset;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const uint32_t                                                  _pointerSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   std::vector<char*>                                                _fullBuffers;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/Options.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/Options.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,8 +30,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach/machine.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Snapshot.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -342,8 +342,13 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const char*                                   pipelineFifo() const { return fPipelineFifo; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, unsigned int, ld::CStringHash, ld::CStringEquals> NameToOrder;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_set<const char*, ld::CStringHash, ld::CStringEquals>  NameSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, unsigned int, __gnu_cxx::hash<const char*>, CStringEquals> NameToOrder;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  NameSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   enum ExportMode { kExportDefault, kExportSome, kDontExportSome };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   enum LibrarySearchMode { kSearchDylibAndArchiveInEachDir, kSearchAllDirsForDylibsThenAllDirsForArchives };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   enum InterposeMode { kInterposeNone, kInterposeAllExternal, kInterposeSome };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/OutputFile.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/OutputFile.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,7 +50,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <list>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <CommonCrypto/CommonDigest.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3420,6 +3421,12 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const char* OutputFile::assureFullPath(const char* path)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ( path[0] == '/' )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3505,7 +3512,7 @@ void OutputFile::synthesizeDebugNotes(ld::Internal& state)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const char* filename = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool wroteStartSO = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   state.stabs.reserve(atomsNeedingDebugNotes.size()*4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  std::unordered_set<const char*, CStringHash, CStringEquals>  seenFiles;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  seenFiles;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (std::vector<const ld::Atom*>::iterator it=atomsNeedingDebugNotes.begin(); it != atomsNeedingDebugNotes.end(); it++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const ld::Atom* atom = *it;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const ld::File* atomFile = atom->file();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/Resolver.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/Resolver.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -47,6 +47,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <list>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <dlfcn.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/Resolver.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/Resolver.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,7 +42,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Options.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -100,7 +99,11 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool                                    printReferencedBy(const char* name, SymbolTable::IndirectBindingSlot slot);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void                                    tweakWeakness();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_set<const char*, CStringHash, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class NotLive {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/SymbolTable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/SymbolTable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -41,6 +41,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Options.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -746,7 +748,7 @@ void SymbolTable::printStatistics()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           count[b] = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for(unsigned int i=0; i < _cstringTable.bucket_count(); ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          unsigned int n = _cstringTable.bucket_size(i);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          unsigned int n = _cstringTable.elems_in_bucket(i);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if ( n < 10 ) 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   count[n] += 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/SymbolTable.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/SymbolTable.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,7 +42,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Options.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -57,38 +57,42 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef uint32_t IndirectBindingSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, IndirectBindingSlot, CStringHash, CStringEquals> NameToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, IndirectBindingSlot, __gnu_cxx::hash<const char*>, CStringEquals> NameToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class ContentFuncs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           size_t  operator()(const ld::Atom*) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool    operator()(const ld::Atom* left, const ld::Atom* right) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const ld::Atom*, IndirectBindingSlot, ContentFuncs, ContentFuncs> ContentToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const ld::Atom*, IndirectBindingSlot, ContentFuncs, ContentFuncs> ContentToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class ReferencesHashFuncs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           size_t  operator()(const ld::Atom*) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool    operator()(const ld::Atom* left, const ld::Atom* right) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const ld::Atom*, IndirectBindingSlot, ReferencesHashFuncs, ReferencesHashFuncs> ReferencesToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const ld::Atom*, IndirectBindingSlot, ReferencesHashFuncs, ReferencesHashFuncs> ReferencesToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class CStringHashFuncs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           size_t  operator()(const ld::Atom*) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool    operator()(const ld::Atom* left, const ld::Atom* right) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const ld::Atom*, IndirectBindingSlot, CStringHashFuncs, CStringHashFuncs> CStringToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const ld::Atom*, IndirectBindingSlot, CStringHashFuncs, CStringHashFuncs> CStringToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class UTF16StringHashFuncs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           size_t  operator()(const ld::Atom*) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool    operator()(const ld::Atom* left, const ld::Atom* right) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const ld::Atom*, IndirectBindingSlot, UTF16StringHashFuncs, UTF16StringHashFuncs> UTF16StringToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const ld::Atom*, IndirectBindingSlot, UTF16StringHashFuncs, UTF16StringHashFuncs> UTF16StringToSlot;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef std::map<IndirectBindingSlot, const char*> SlotToName;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, CStringToSlot*, CStringHash, CStringEquals> NameToMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, CStringToSlot*, __gnu_cxx::hash<const char*>, CStringEquals> NameToMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     typedef std::vector<const ld::Atom *> DuplicatedSymbolAtomList;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     typedef std::map<const char *, DuplicatedSymbolAtomList * > DuplicateSymbols;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/ld.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/ld.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -54,7 +54,8 @@ extern "C" double log2 ( double );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <list>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cxxabi.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Options.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -146,7 +147,7 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct SectionEquals {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool operator()(const ld::Section* left, const ld::Section* right) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const ld::Section*, FinalSection*, SectionHash, SectionEquals> SectionInToOut;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const ld::Section*, FinalSection*, SectionHash, SectionEquals> SectionInToOut;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   SectionInToOut                  _sectionInToFinalMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -167,7 +168,7 @@ std::vector<const char*> InternalState::FinalSection::_s_segmentsSeen;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size_t InternalState::SectionHash::operator()(const ld::Section* sect) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   size_t hash = 0;        
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ld::CStringHash temp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  __gnu_cxx::hash<const char*> temp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   hash += temp.operator()(sect->segmentName());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   hash += temp.operator()(sect->sectionName());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return hash;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/ld.hpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/ld.hpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -788,20 +788,6 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--// utility classes for using std::unordered_map with c-strings
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--struct CStringHash {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  size_t operator()(const char* __s) const {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          size_t __h = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          for ( ; *__s; ++__s)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  __h = 5 * __h + *__s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          return __h;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--struct CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/parsers/archive_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/parsers/archive_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +33,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "MachOFileAbstraction.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Architectures.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -112,7 +112,12 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct MemberState { ld::relocatable::File* file; const Entry *entry; bool logged; bool loaded; uint16_t index;};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool                                                                                    loadMember(MemberState& state, ld::File::AtomHandler& handler, const char *format, ...) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, const struct ranlib*, ld::CStringHash, ld::CStringEquals> NameToEntryMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, const struct ranlib*, __gnu_cxx::hash<const char*>, CStringEquals> NameToEntryMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P                                                   P;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::E                                                E;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/parsers/lto_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/parsers/lto_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,11 +30,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/fcntl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <errno.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <pthread.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "MachOFileAbstraction.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Architectures.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -212,8 +211,13 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static const char*                              tripletPrefixForArch(cpu_type_t arch);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static ld::relocatable::File*   parseMachOFile(const uint8_t* p, size_t len, const OptimizeOptions& options);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_set<const char*, ld::CStringHash, ld::CStringEquals>  CStringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, Atom*, ld::CStringHash, ld::CStringEquals> CStringToAtom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  CStringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, Atom*, __gnu_cxx::hash<const char*>, CStringEquals> CStringToAtom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   class AtomSyncer : public ld::File::AtomHandler {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/parsers/macho_dylib_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/parsers/macho_dylib_file.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,8 +33,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <algorithm>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "Architectures.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "MachOFileAbstraction.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -178,17 +178,14 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   friend class ExportAtom<A>;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   friend class ImportAtom<A>;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  struct CStringHash {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          std::size_t operator()(const char* __s) const {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  unsigned long __h = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  for ( ; *__s; ++__s)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          __h = 5 * __h + *__s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  return size_t(__h);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct AtomAndWeak { ld::Atom* atom; bool weakDef; bool tlv; pint_t address; };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, AtomAndWeak, ld::CStringHash, ld::CStringEquals> NameToAtomMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_set<const char*, CStringHash, ld::CStringEquals>  NameSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, AtomAndWeak, __gnu_cxx::hash<const char*>, CStringEquals> NameToAtomMap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  NameSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct Dependent { const char* path; File<A>* dylib; bool reExport; };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -509,14 +506,14 @@ void File<A>::buildExportHashTableFromSymbolTable(const macho_dysymtab_command<P
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if ( _s_logHashtable ) fprintf(stderr, "ld: building hashtable of %u toc entries for %s\n", dynamicInfo->nextdefsym(), this->path());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const macho_nlist<P>* start = &symbolTable[dynamicInfo->iextdefsym()];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const macho_nlist<P>* end = &start[dynamicInfo->nextdefsym()];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          _atoms.reserve(dynamicInfo->nextdefsym()); // set initial bucket count
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          _atoms.resize(dynamicInfo->nextdefsym()); // set initial bucket count
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           for (const macho_nlist<P>* sym=start; sym < end; ++sym) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   this->addSymbol(&strings[sym->n_strx()], (sym->n_desc() & N_WEAK_DEF) != 0, false, sym->n_value());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int32_t count = dynamicInfo->ntoc();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          _atoms.reserve(count); // set initial bucket count
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          _atoms.resize(count); // set initial bucket count
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if ( _s_logHashtable ) fprintf(stderr, "ld: building hashtable of %u entries for %s\n", count, this->path());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const struct dylib_table_of_contents* toc = (dylib_table_of_contents*)(fileContent + dynamicInfo->tocoff());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           for (int32_t i = 0; i < count; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/passes/dtrace_dof.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/passes/dtrace_dof.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,8 +30,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "dtrace_dof.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -104,14 +103,20 @@ Atom::Atom(File& f, const char* n,  const uint8_t* content, uint64_t sz)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct DTraceProbeInfo {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   DTraceProbeInfo(const ld::Atom* a, uint32_t o, const char* n) : atom(a), offset(o), probeName(n) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const ld::Atom*                                 atom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   uint32_t                                                offset;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const char*                                             probeName;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--typedef std::unordered_map<const char*, std::vector<DTraceProbeInfo>, CStringHash, CStringEquals>     ProviderToProbes;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--typedef   std::unordered_set<const char*, CStringHash, CStringEquals>  CStringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+typedef __gnu_cxx::hash_map<const char*, std::vector<DTraceProbeInfo>, __gnu_cxx::hash<const char*>, CStringEquals>     ProviderToProbes;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+typedef   __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  CStringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/passes/got.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/passes/got.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,6 +30,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "got.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/passes/order.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/passes/order.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -31,7 +31,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "order.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -83,7 +82,11 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const Layout&       _layout;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_map<const char*, const ld::Atom*, CStringHash, CStringEquals> NameToAtom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_map<const char*, const ld::Atom*, __gnu_cxx::hash<const char*>, CStringEquals> NameToAtom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef std::map<const ld::Atom*, const ld::Atom*> AtomToAtom;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/ld/passes/tlvp.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/ld/passes/tlvp.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,6 +30,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_map>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "ld.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "tlvp.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/other/dyldinfo.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/other/dyldinfo.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +33,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "configure.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "MachOFileAbstraction.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -87,6 +87,14 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::E                                E;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::uint_t                   pint_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           DyldInfoPrinter(const uint8_t* fileContent, uint32_t fileLength, const char* path, bool printArch);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void                                                                            printRebaseInfo();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void                                                                            printRebaseInfoOpcodes();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/other/machochecker.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/other/machochecker.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +33,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "configure.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -110,21 +110,13 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::E                                E;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::uint_t                   pint_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  // utility classes for using std::unordered_map with c-strings
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  struct CStringHash {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          size_t operator()(const char* __s) const {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  size_t __h = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  for ( ; *__s; ++__s)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                          __h = 5 * __h + *__s;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                  return __h;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--          };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  struct CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  typedef std::unordered_set<const char*, CStringHash, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           MachOChecker(const uint8_t* fileContent, uint32_t fileLength, const char* path);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void                                                                            checkMachHeader();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/other/unwinddump.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/other/unwinddump.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +33,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <vector>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <ext/hash_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "MachOFileAbstraction.hpp"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,6 +71,14 @@ private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::E                                E;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   typedef typename A::P::uint_t                   pint_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  class CStringEquals
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          bool operator()(const char* left, const char* right) const { return (strcmp(left, right) == 0); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  typedef __gnu_cxx::hash_set<const char*, __gnu_cxx::hash<const char*>, CStringEquals>  StringSet;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           UnwindPrinter(const uint8_t* fileContent, uint32_t fileLength, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                                                           const char* path, bool showFunctionNames);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool                                                                            findUnwindSection();
</span></pre><pre style='margin:0'>

</pre>