<rdar://problem/13069948>

Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our object files we could run into cases where if we had a very large core file that was over 4GB, we were running into the 4GB boundary.

So I defined a new "lldb::offset_t" which should be used for all file offsets.

After making this change, I enabled warnings for data loss and for enexpected implicit conversions temporarily and found a ton of things that I fixed.

Any functions that take an index internally, should use "size_t" for any indexes and also should return "size_t" for any sizes of collections.

llvm-svn: 173463
diff --git a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
index 97aed1a..d61a88b 100644
--- a/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
+++ b/lldb/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.cpp
@@ -49,8 +49,8 @@
     ar_file_size = 0;
 }
 
-uint32_t
-ObjectContainerBSDArchive::Object::Extract (const DataExtractor& data, uint32_t offset)
+lldb::offset_t
+ObjectContainerBSDArchive::Object::Extract (const DataExtractor& data, lldb::offset_t offset)
 {
     size_t ar_name_len = 0;
     std::string str;
@@ -98,7 +98,7 @@
         ar_file_size = ar_size - ar_name_len;
         return offset;
     }
-    return LLDB_INVALID_INDEX32;
+    return LLDB_INVALID_OFFSET;
 }
 
 ObjectContainerBSDArchive::Archive::Archive
@@ -120,7 +120,7 @@
 ObjectContainerBSDArchive::Archive::ParseObjects (DataExtractor &data)
 {
     std::string str;
-    uint32_t offset = 0;
+    lldb::offset_t offset = 0;
     str.assign((const char *)data.GetData(&offset, SARMAG), SARMAG);
     if (str == ARMAG)
     {
@@ -128,9 +128,9 @@
         do
         {
             offset = obj.Extract (data, offset);
-            if (offset == LLDB_INVALID_INDEX32)
+            if (offset == LLDB_INVALID_OFFSET)
                 break;
-            uint32_t obj_idx = m_objects.size();
+            size_t obj_idx = m_objects.size();
             m_objects.push_back(obj);
             // Insert all of the C strings out of order for now...
             m_object_name_to_index_map.Append (obj.ar_name.GetCString(), obj_idx);
@@ -147,7 +147,7 @@
 ObjectContainerBSDArchive::Object *
 ObjectContainerBSDArchive::Archive::FindObject (const ConstString &object_name)
 {
-    const UniqueCStringMap<uint32_t>::Entry *match = m_object_name_to_index_map.FindFirstValueForName (object_name.GetCString());
+    const ObjectNameToIndexMap::Entry *match = m_object_name_to_index_map.FindFirstValueForName (object_name.GetCString());
     if (match)
         return &m_objects[match->value];
     return NULL;