Move GetFileSize() from symbolizer to base/file_utils.h

base/file_utils.h seems like a more appropriate place for such a
function. This allows us to remove filesystem.h, which only had one
function left.

Change-Id: I3cf19b4211d0da55344de7cd59582dea95fce7a5
diff --git a/src/profiling/symbolizer/local_symbolizer.cc b/src/profiling/symbolizer/local_symbolizer.cc
index 8970cca..bcacb37 100644
--- a/src/profiling/symbolizer/local_symbolizer.cc
+++ b/src/profiling/symbolizer/local_symbolizer.cc
@@ -32,7 +32,6 @@
 #include "perfetto/ext/base/scoped_file.h"
 #include "perfetto/ext/base/string_utils.h"
 #include "src/profiling/symbolizer/elf.h"
-#include "src/profiling/symbolizer/filesystem.h"
 #include "src/profiling/symbolizer/scoped_read_mmap.h"
 
 namespace perfetto {
@@ -217,31 +216,36 @@
   uint64_t load_bias;
 };
 
-base::Optional<BuildIdAndLoadBias> GetBuildIdAndLoadBias(const std::string& fname) {
-  size_t size = GetFileSize(fname);
-  static_assert(EI_CLASS > EI_MAG3, "mem[EI_MAG?] accesses are in range.");
-  if (size <= EI_CLASS)
+base::Optional<BuildIdAndLoadBias> GetBuildIdAndLoadBias(
+    const std::string& fname) {
+  base::Optional<size_t> size = base::GetFileSize(fname);
+  if (!size.has_value()) {
+    PERFETTO_PLOG("Failed to get file size %s", fname.c_str());
     return base::nullopt;
-  ScopedReadMmap map(fname.c_str(), size);
+  }
+  static_assert(EI_CLASS > EI_MAG3, "mem[EI_MAG?] accesses are in range.");
+  if (*size <= EI_CLASS)
+    return base::nullopt;
+  ScopedReadMmap map(fname.c_str(), *size);
   if (!map.IsValid()) {
     PERFETTO_PLOG("mmap");
     return base::nullopt;
   }
   char* mem = static_cast<char*>(*map);
 
-  if (!IsElf(mem, size))
+  if (!IsElf(mem, *size))
     return base::nullopt;
 
   base::Optional<std::string> build_id;
   base::Optional<uint64_t> load_bias;
   switch (mem[EI_CLASS]) {
     case ELFCLASS32:
-      build_id = GetBuildId<Elf32>(mem, size);
-      load_bias = GetLoadBias<Elf32>(mem, size);
+      build_id = GetBuildId<Elf32>(mem, *size);
+      load_bias = GetLoadBias<Elf32>(mem, *size);
       break;
     case ELFCLASS64:
-      build_id = GetBuildId<Elf64>(mem, size);
-      load_bias = GetLoadBias<Elf64>(mem, size);
+      build_id = GetBuildId<Elf64>(mem, *size);
+      load_bias = GetLoadBias<Elf64>(mem, *size);
       break;
     default:
       return base::nullopt;