blob: b915e71ebe897f278ea338c63f75afb7caebf554 [file] [log] [blame]
Ben Murdochb8e0da22011-05-16 14:20:40 +01001// Copyright 2010 the V8 project authors. All rights reserved.
Ben Murdochb8a8cc12014-11-26 15:28:44 +00002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
Ben Murdochb8e0da22011-05-16 14:20:40 +01004
5#ifndef V8_GDB_JIT_H_
6#define V8_GDB_JIT_H_
7
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00008#include "include/v8.h"
Ben Murdoch257744e2011-11-30 15:57:28 +00009
Ben Murdochb8e0da22011-05-16 14:20:40 +010010//
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000011// 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.
Ben Murdochb8e0da22011-05-16 14:20:40 +010017//
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000018// 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//
Ben Murdochb8e0da22011-05-16 14:20:40 +010026
27namespace v8 {
28namespace internal {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000029namespace GDBJITInterface {
30#ifdef ENABLE_GDB_JIT_INTERFACE
31// JitCodeEventHandler that creates ELF/Mach-O objects and registers them with
32// GDB.
33void EventHandler(const v8::JitCodeEvent* event);
Ben Murdochb8e0da22011-05-16 14:20:40 +010034#endif
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000035} // namespace GDBJITInterface
36} // namespace internal
37} // namespace v8
Ben Murdochb8e0da22011-05-16 14:20:40 +010038
39#endif