Make qsort_r usage "portable".  Why does a function which seems so simple
have to be so complicated?



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105797 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Symbol/Symtab.cpp b/source/Symbol/Symtab.cpp
index f1ed356..9a19973 100644
--- a/source/Symbol/Symtab.cpp
+++ b/source/Symbol/Symtab.cpp
@@ -251,6 +251,10 @@
     return 1;
 }
 
+int Symtab::CompareSymbolValueByIndexLinux(const void* a, const void* b, void* thunk) {
+  CompareSymbolValueByIndex(thunk, a, b);
+}
+
 void
 Symtab::SortSymbolIndexesByValue (std::vector<uint32_t>& indexes, bool remove_duplicates) const
 {
@@ -259,7 +263,12 @@
         return;
 
     // Sort the indexes in place using qsort
+    // FIXME: (WRONGDEFINE) Need a better define for this! 
+#ifdef __APPLE__
     ::qsort_r (&indexes[0], indexes.size(), sizeof(uint32_t), (void *)&m_symbols[0], Symtab::CompareSymbolValueByIndex);
+#else
+    ::qsort_r (&indexes[0], indexes.size(), sizeof(uint32_t), CompareSymbolValueByIndexLinux, (void *)&m_symbols[0]);
+#endif
 
     // Remove any duplicates if requested
     if (remove_duplicates)