/* * 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. *
*/
/* hsdis.cpp -- dump a range of addresses as native instructions This implements the plugin protocol required by the HotSpot PrintAssembly option.
*/
/* short names for stuff in hsdis.h */ typedef decode_instructions_event_callback_ftype event_callback_t; typedef decode_instructions_printf_callback_ftype printf_callback_t;
/* Discover which architecture we are going to disassemble. */
_arch_name = &_target_triple[0]; if (_arch_name[0] == '\0')
_arch_name = native_target_triple();
if (LLVMInitializeNativeTarget() != 0) { staticbool complained = false; if (!complained)
(*_printf_callback)(_printf_stream, "failed to initialize LLVM native target\n");
complained = true; /* must bail out */
_losing = true; return;
} if (LLVMInitializeNativeAsmPrinter() != 0) { staticbool complained = false; if (!complained)
(*_printf_callback)(_printf_stream, "failed to initialize LLVM native asm printer\n");
complained = true; /* must bail out */
_losing = true; return;
} if (LLVMInitializeNativeDisassembler() != 0) { staticbool complained = false; if (!complained)
(*_printf_callback)(_printf_stream, "failed to initialize LLVM native disassembler\n");
complained = true; /* must bail out */
_losing = true; return;
} if ((_dcontext = LLVMCreateDisasm(_arch_name, NULL, 0, NULL, NULL)) == NULL) { staticbool complained = false; constchar* bad = _arch_name; if (bad == &_target_triple[0])
print_help("bad target_triple=%s", bad); elseif (!complained)
print_help("bad native target_triple=%s; please port hsdis to this platform", bad);
complained = true; /* must bail out */
_losing = true; return;
}
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.