Home | History | Annotate | Download | only in src
      1 // Copyright 2010 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_GDB_JIT_H_
      6 #define V8_GDB_JIT_H_
      7 
      8 #include "include/v8.h"
      9 
     10 //
     11 // GDB has two ways of interacting with JIT code.  With the "JIT compilation
     12 // interface", V8 can tell GDB when it emits JIT code.  Unfortunately to do so,
     13 // it has to create platform-native object files, possibly with platform-native
     14 // debugging information.  Currently only ELF and Mach-O are supported, which
     15 // limits this interface to Linux and Mac OS.  This JIT compilation interface
     16 // was introduced in GDB 7.0.  V8 support can be enabled with the --gdbjit flag.
     17 //
     18 // The other way that GDB can know about V8 code is via the "custom JIT reader"
     19 // interface, in which a GDB extension parses V8's private data to determine the
     20 // function, file, and line of a JIT frame, and how to unwind those frames.
     21 // This interface was introduced in GDB 7.6.  This interface still relies on V8
     22 // to register its code via the JIT compilation interface, but doesn't require
     23 // that V8 create ELF images.  Support will be added for this interface in the
     24 // future.
     25 //
     26 
     27 namespace v8 {
     28 namespace internal {
     29 namespace GDBJITInterface {
     30 #ifdef ENABLE_GDB_JIT_INTERFACE
     31 // JitCodeEventHandler that creates ELF/Mach-O objects and registers them with
     32 // GDB.
     33 void EventHandler(const v8::JitCodeEvent* event);
     34 #endif
     35 }  // namespace GDBJITInterface
     36 }  // namespace internal
     37 }  // namespace v8
     38 
     39 #endif
     40