OXIESEC PANEL
- Current Dir:
/
/
opt
/
alt
/
alt-nodejs22
/
root
/
usr
/
include
/
node
Server IP: 2a02:4780:11:1594:0:ef5:22d7:a
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/21/2025 06:56:31 AM
rwxr-xr-x
📄
common.gypi
26.32 KB
08/28/2025 12:24:30 PM
rw-r--r--
📄
config.gypi
31.79 KB
08/28/2025 12:24:33 PM
rw-r--r--
📁
cppgc
-
10/21/2025 06:56:30 AM
rwxr-xr-x
📄
js_native_api.h
31.28 KB
08/28/2025 12:24:11 PM
rw-r--r--
📄
js_native_api_types.h
6.87 KB
08/28/2025 12:24:11 PM
rw-r--r--
📁
libplatform
-
10/21/2025 06:56:30 AM
rwxr-xr-x
📄
node.h
67.44 KB
08/28/2025 12:24:10 PM
rw-r--r--
📄
node_api.h
10.34 KB
08/28/2025 12:24:10 PM
rw-r--r--
📄
node_api_types.h
1.57 KB
08/28/2025 12:24:11 PM
rw-r--r--
📄
node_buffer.h
3.6 KB
08/28/2025 12:24:11 PM
rw-r--r--
📄
node_object_wrap.h
3.78 KB
08/28/2025 12:24:10 PM
rw-r--r--
📄
node_version.h
4.14 KB
08/28/2025 12:24:10 PM
rw-r--r--
📁
uv
-
10/21/2025 06:56:30 AM
rwxr-xr-x
📄
uv.h
71.1 KB
08/28/2025 12:24:09 PM
rw-r--r--
📄
v8-array-buffer.h
17.6 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-callbacks.h
16.59 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-container.h
5.82 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-context.h
17.76 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-cppgc.h
7.46 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-data.h
1.58 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-date.h
1.19 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-debug.h
5.04 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-embedder-heap.h
2.71 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-embedder-state-scope.h
1.46 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-exception.h
7.41 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-extension.h
1.83 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-external.h
924 bytes
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-forward.h
1.65 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-function-callback.h
19.19 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-function.h
4.42 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-handle-base.h
4.3 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-initialization.h
10.23 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-internal.h
57.22 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-isolate.h
63.38 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-json.h
1.32 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-local-handle.h
23.6 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-locker.h
3.86 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-maybe.h
4.47 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-memory-span.h
6.27 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-message.h
7.24 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-microtask-queue.h
4.95 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-microtask.h
861 bytes
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-object.h
29.55 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-persistent-handle.h
17.66 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-platform.h
47.9 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-primitive-object.h
2.53 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-primitive.h
27.69 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-profiler.h
41.11 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-promise.h
5.17 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-proxy.h
1.23 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-regexp.h
3.1 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-script.h
30.59 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-snapshot.h
10.15 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-source-location.h
2.54 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-statistics.h
7.45 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-template.h
50.36 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-traced-handle.h
12.4 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-typed-array.h
11.3 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-unwinder.h
4.64 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-value-serializer.h
10.56 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-value.h
16.71 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-version.h
773 bytes
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-wasm.h
6 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8-weak-callback-info.h
2.41 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8.h
3.69 KB
08/28/2025 12:23:53 PM
rw-r--r--
📄
v8config.h
32.85 KB
08/28/2025 12:23:53 PM
rw-r--r--
Editing: v8-unwinder.h
Close
// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef INCLUDE_V8_UNWINDER_H_ #define INCLUDE_V8_UNWINDER_H_ #include <memory> #include "v8-embedder-state-scope.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { // Holds the callee saved registers needed for the stack unwinder. It is the // empty struct if no registers are required. Implemented in // include/v8-unwinder-state.h. struct CalleeSavedRegisters; // A RegisterState represents the current state of registers used // by the sampling profiler API. struct V8_EXPORT RegisterState { RegisterState(); ~RegisterState(); RegisterState(const RegisterState& other); RegisterState& operator=(const RegisterState& other); void* pc; // Instruction pointer. void* sp; // Stack pointer. void* fp; // Frame pointer. void* lr; // Link register (or nullptr on platforms without a link register). // Callee saved registers (or null if no callee saved registers were stored) std::unique_ptr<CalleeSavedRegisters> callee_saved; }; // A StateTag represents a possible state of the VM. enum StateTag : uint16_t { JS, GC, PARSER, BYTECODE_COMPILER, COMPILER, OTHER, EXTERNAL, ATOMICS_WAIT, IDLE }; // The output structure filled up by GetStackSample API function. struct SampleInfo { size_t frames_count; // Number of frames collected. void* external_callback_entry; // External callback address if VM is // executing an external callback. void* context; // Incumbent native context address. void* embedder_context; // Native context address for embedder state StateTag vm_state; // Current VM state. EmbedderStateTag embedder_state; // Current Embedder state }; struct MemoryRange { const void* start = nullptr; size_t length_in_bytes = 0; }; struct JSEntryStub { MemoryRange code; }; struct JSEntryStubs { JSEntryStub js_entry_stub; JSEntryStub js_construct_entry_stub; JSEntryStub js_run_microtasks_entry_stub; }; /** * Various helpers for skipping over V8 frames in a given stack. * * The unwinder API is only supported on the x64, ARM64 and ARM32 architectures. */ class V8_EXPORT Unwinder { public: /** * Attempt to unwind the stack to the most recent C++ frame. This function is * signal-safe and does not access any V8 state and thus doesn't require an * Isolate. * * The unwinder needs to know the location of the JS Entry Stub (a piece of * code that is run when C++ code calls into generated JS code). This is used * for edge cases where the current frame is being constructed or torn down * when the stack sample occurs. * * The unwinder also needs the virtual memory range of all possible V8 code * objects. There are two ranges required - the heap code range and the range * for code embedded in the binary. * * Available on x64, ARM64 and ARM32. * * \param code_pages A list of all of the ranges in which V8 has allocated * executable code. The caller should obtain this list by calling * Isolate::CopyCodePages() during the same interrupt/thread suspension that * captures the stack. * \param register_state The current registers. This is an in-out param that * will be overwritten with the register values after unwinding, on success. * \param stack_base The resulting stack pointer and frame pointer values are * bounds-checked against the stack_base and the original stack pointer value * to ensure that they are valid locations in the given stack. If these values * or any intermediate frame pointer values used during unwinding are ever out * of these bounds, unwinding will fail. * * \return True on success. */ static bool TryUnwindV8Frames(const JSEntryStubs& entry_stubs, size_t code_pages_length, const MemoryRange* code_pages, RegisterState* register_state, const void* stack_base); /** * Whether the PC is within the V8 code range represented by code_pages. * * If this returns false, then calling UnwindV8Frames() with the same PC * and unwind_state will always fail. If it returns true, then unwinding may * (but not necessarily) be successful. * * Available on x64, ARM64 and ARM32 */ static bool PCIsInV8(size_t code_pages_length, const MemoryRange* code_pages, void* pc); }; } // namespace v8 #endif // INCLUDE_V8_UNWINDER_H_