/* * Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 * * Subject to the condition set forth below, permission is hereby granted to * any person obtaining a copy of this software, associated documentation * and/or data (collectively the "Software"), free of charge and under any * and all copyright rights in the Software, and any and all patent rights * owned or freely licensable by each licensor hereunder covering either (i) * the unmodified Software as contributed to or provided by such licensor, * or (ii) the Larger Works (as defined below), to deal in both * * (a) the Software, and * * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file * if one is included with the Software (each a "Larger Work" to which the * Software is contributed by such licensors), * * without restriction, including without limitation the rights to copy, * create derivative works of, display, perform, and distribute the Software * and make, use, sell, offer for sale, import, export, have made, and have * sold the Software and the Larger Work(s), and to sublicense the foregoing * rights on either these or other terms. * * This license is subject to the following condition: * * The above copyright notice and either this complete permission notice or * at a minimum a reference to the UPL must be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. *
*/
/* decode_instructions -- dump a range of addresses as native instructions This implements the protocol required by the HotSpot PrintAssembly option.
The start_va, end_va is the virtual address the region of memory to disasemble and buffer contains the instructions to decode, Disassembling instructions in the current address space is done by having start_va == buffer.
The option string, if not empty, is interpreted by the disassembler implementation.
The printf callback is 'fprintf' or any other workalike. It is called as (*printf_callback)(printf_stream, "some format...", some, format, args).
The event callback receives an event tag (a string) and an argument (a void*). It is called as (*event_callback)(event_stream, "tag", arg).
Events: <insn pc='%p'> begin an instruction, at a given location </insn pc='%d'> end an instruction, at a given location <addr value='%p'/> emit the symbolic value of an address
A tag format is one of three basic forms: "tag", "/tag", "tag/", where tag is a simple identifier, signifying (as in XML) a element start, element end, and standalone element. (To render as XML, add angle brackets.)
*/ #ifndef SHARED_TOOLS_HSDIS_H #define SHARED_TOOLS_HSDIS_H
#ifdef __cplusplus extern"C"
{ #endif
extern #ifdef _WIN32
__declspec(dllexport) #endif void* decode_instructions_virtual(uintptr_t start_va, uintptr_t end_va, unsignedchar* buffer, uintptr_t length, void* (*event_callback)(void*, constchar*, void*), void* event_stream, int (*printf_callback)(void*, constchar*, ...), void* printf_stream, constchar* options, int newline /* bool value for nice new line */);
/* This is the compatability interface for older versions of hotspot */ extern #ifdef _WIN32
__declspec(dllexport) #endif void* decode_instructions(void* start_pv, void* end_pv, void* (*event_callback)(void*, constchar*, void*), void* event_stream, int (*printf_callback)(void*, constchar*, ...), void* printf_stream, constchar* options);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.