| Index: src/platform-linux.cc
|
| ===================================================================
|
| --- src/platform-linux.cc (revision 323)
|
| +++ src/platform-linux.cc (working copy)
|
| @@ -38,11 +38,12 @@
|
| // executable. Otherwise, OS raises an exception when executing code
|
| // in that page.
|
| #include <sys/types.h> // mmap & munmap
|
| -#include <sys/mman.h> // mmap & munmap
|
| -#include <sys/stat.h> // open
|
| +#include <sys/mman.h> // mmap & munmap
|
| +#include <sys/stat.h> // open
|
| #include <sys/fcntl.h> // open
|
| -#include <unistd.h> // getpagesize
|
| -#include <execinfo.h> // backtrace, backtrace_symbols
|
| +#include <unistd.h> // getpagesize
|
| +#include <execinfo.h> // backtrace, backtrace_symbols
|
| +#include <strings.h> // index
|
| #include <errno.h>
|
| #include <stdarg.h>
|
|
|
| @@ -335,12 +336,13 @@
|
| if (result < 1) break;
|
| } while (buffer[bytes_read] != '\n');
|
| buffer[bytes_read] = 0;
|
| - // There are 56 chars to ignore at this point in the line.
|
| - if (bytes_read < 56) continue;
|
| // Ignore mappings that are not executable.
|
| if (buffer[3] != 'x') continue;
|
| + char* start_of_path = index(buffer, '/');
|
| + // There may be no filename in this line. Skip to next.
|
| + if (start_of_path == NULL) continue;
|
| buffer[bytes_read] = 0;
|
| - LOG(SharedLibraryEvent(buffer + 56, start, end));
|
| + LOG(SharedLibraryEvent(start_of_path, start, end));
|
| }
|
| close(fd);
|
| #endif
|
|
|