v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
gdb-jit.h
Go to the documentation of this file.
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_DIAGNOSTICS_GDB_JIT_H_
6#define V8_DIAGNOSTICS_GDB_JIT_H_
7
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
27namespace v8 {
28
29struct JitCodeEvent;
30
31namespace internal {
32namespace GDBJITInterface {
33#ifdef ENABLE_GDB_JIT_INTERFACE
34
35// JitCodeEventHandler that creates ELF/Mach-O objects and registers them with
36// GDB.
37void EventHandler(const v8::JitCodeEvent* event);
38
39// Expose some functions for unittests. These only exercise the logic to add
40// AddressRegion to InstructionStreamMap, and checking for overlap. It does not
41// touch the actual JITCodeEntry at all.
42V8_EXPORT_PRIVATE void AddRegionForTesting(const base::AddressRegion region);
43V8_EXPORT_PRIVATE void ClearCodeMapForTesting();
45NumOverlapEntriesForTesting(const base::AddressRegion region);
46
47#endif
48} // namespace GDBJITInterface
49} // namespace internal
50} // namespace v8
51
52#endif // V8_DIAGNOSTICS_GDB_JIT_H_
void EventHandler(const JitCodeEvent *event)
#define V8_EXPORT_PRIVATE
Definition macros.h:460