diff --git a/common.gypi b/common.gypi index 10da7abccc44..d852a3e5327e 100644 --- a/common.gypi +++ b/common.gypi @@ -327,7 +327,6 @@ ['_type!="static_library"', { 'xcode_settings': { 'OTHER_LDFLAGS': [ - '-Wl,-no_pie', '-Wl,-search_paths_first', ], }, diff --git a/deps/v8/src/base/platform/platform-macos.cc b/deps/v8/src/base/platform/platform-macos.cc index 419281f6694d..c8ba51be7a92 100644 --- a/deps/v8/src/base/platform/platform-macos.cc +++ b/deps/v8/src/base/platform/platform-macos.cc @@ -88,8 +88,8 @@ std::vector OS::GetSharedLibraryAddresses() { if (code_ptr == NULL) continue; const uintptr_t slide = _dyld_get_image_vmaddr_slide(i); const uintptr_t start = reinterpret_cast(code_ptr) + slide; - result.push_back( - SharedLibraryAddress(_dyld_get_image_name(i), start, start + size)); + result.push_back(SharedLibraryAddress( + _dyld_get_image_name(i), start, start + size, slide)); } return result; } diff --git a/deps/v8/src/base/platform/platform.h b/deps/v8/src/base/platform/platform.h index 89d6225edebb..66349ced4a7c 100644 --- a/deps/v8/src/base/platform/platform.h +++ b/deps/v8/src/base/platform/platform.h @@ -235,11 +235,16 @@ class OS { struct SharedLibraryAddress { SharedLibraryAddress( const std::string& library_path, uintptr_t start, uintptr_t end) - : library_path(library_path), start(start), end(end) {} + : library_path(library_path), start(start), end(end), slide(0) {} + SharedLibraryAddress( + const std::string& library_path, uintptr_t start, uintptr_t end, + uintptr_t slide) + : library_path(library_path), start(start), end(end), slide(slide) {} std::string library_path; uintptr_t start; uintptr_t end; + uintptr_t slide; }; static std::vector GetSharedLibraryAddresses(); diff --git a/deps/v8/src/log.cc b/deps/v8/src/log.cc index cbdd9dd10602..a62b4dba8a5f 100644 --- a/deps/v8/src/log.cc +++ b/deps/v8/src/log.cc @@ -728,7 +728,8 @@ void Profiler::Engage() { base::OS::GetSharedLibraryAddresses(); for (size_t i = 0; i < addresses.size(); ++i) { LOG(isolate_, SharedLibraryEvent( - addresses[i].library_path, addresses[i].start, addresses[i].end)); + addresses[i].library_path, addresses[i].start, addresses[i].end, + addresses[i].slide)); } // Start thread processing the profiler buffer. @@ -891,11 +892,13 @@ void Logger::ApiSecurityCheck() { void Logger::SharedLibraryEvent(const std::string& library_path, uintptr_t start, - uintptr_t end) { + uintptr_t end, + uintptr_t slide) { if (!log_->IsEnabled() || !FLAG_prof_cpp) return; Log::MessageBuilder msg(log_); - msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR, - library_path.c_str(), start, end); + msg.Append("shared-library,\"%s\",0x%08" V8PRIxPTR ",0x%08" V8PRIxPTR + ",0x%08" V8PRIxPTR, + library_path.c_str(), start, end, slide); msg.WriteToLogFile(); } diff --git a/deps/v8/src/log.h b/deps/v8/src/log.h index 1a454dad264c..73c83846cbc7 100644 --- a/deps/v8/src/log.h +++ b/deps/v8/src/log.h @@ -283,7 +283,8 @@ class Logger { void SharedLibraryEvent(const std::string& library_path, uintptr_t start, - uintptr_t end); + uintptr_t end, + uintptr_t slide); void CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta); void CurrentTimeEvent(); diff --git a/deps/v8/tools/tickprocessor.js b/deps/v8/tools/tickprocessor.js index e62720bd8a0f..c9b53f27d3e4 100644 --- a/deps/v8/tools/tickprocessor.js +++ b/deps/v8/tools/tickprocessor.js @@ -159,7 +159,7 @@ function TickProcessor( pairwiseTimedRange, onlySummary) { LogReader.call(this, { - 'shared-library': { parsers: [null, parseInt, parseInt], + 'shared-library': { parsers: [null, parseInt, parseInt, parseInt], processor: this.processSharedLibrary }, 'code-creation': { parsers: [null, parseInt, parseInt, parseInt, null, 'var-args'], @@ -321,13 +321,13 @@ TickProcessor.prototype.processLogFileInTest = function(fileName) { TickProcessor.prototype.processSharedLibrary = function( - name, startAddr, endAddr) { - var entry = this.profile_.addLibrary(name, startAddr, endAddr); + name, startAddr, endAddr, slide) { + var entry = this.profile_.addLibrary(name, startAddr, endAddr, slide); this.setCodeType(entry.getName(), 'SHARED_LIB'); var self = this; var libFuncs = this.cppEntriesProvider_.parseVmSymbols( - name, startAddr, endAddr, function(fName, fStart, fEnd) { + name, startAddr, endAddr, slide, function(fName, fStart, fEnd) { self.profile_.addStaticCode(fName, fStart, fEnd); self.setCodeType(fName, 'CPP'); }); @@ -646,7 +646,7 @@ function CppEntriesProvider() { CppEntriesProvider.prototype.parseVmSymbols = function( - libName, libStart, libEnd, processorFunc) { + libName, libStart, libEnd, libSlide, processorFunc) { this.loadSymbols(libName); var prevEntry; @@ -675,6 +675,7 @@ CppEntriesProvider.prototype.parseVmSymbols = function( } else if (funcInfo === false) { break; } + funcInfo.start += libSlide; if (funcInfo.start < libStart && funcInfo.start < libEnd - libStart) { funcInfo.start += libStart; }