You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
2.2 KiB

3 years ago
/* BEGIN_LEGAL
Copyright (c) 2021 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
END_LEGAL */
/// @file xed-disas.h
///
#if !defined(XED_DISAS_H)
# define XED_DISAS_H
#include "xed-types.h"
/// @ingroup PRINT
/// A #xed_disassembly_callback_fn_t takes an address, a pointer to a
/// symbol buffer of buffer_length bytes, and a pointer to an offset. The
/// function fills in the symbol_buffer and sets the offset to the desired
/// offset for that symbol. If the function succeeds, it returns 1.
// The call back should return 0 if the buffer is not long enough to
// include the null termination.If no symbolic information is
// located, the function returns zero.
/// @param address The input address for which we want symbolic name and offset
/// @param symbol_buffer A buffer to hold the symbol name. The callback function should fill this in and terminate
/// with a null byte.
/// @param buffer_length The maximum length of the symbol_buffer including then null
/// @param offset A pointer to a xed_uint64_t to hold the offset from the provided symbol.
/// @param context This void* pointer passed to the disassembler's new interface so that the caller can identify
/// the proper context against which to resolve the symbols.
/// The disassembler passes this value to
/// the callback. The legacy formatters
/// that do not have context will pass zero for this parameter.
/// @return 0 on failure, 1 on success.
typedef int (*xed_disassembly_callback_fn_t)(
xed_uint64_t address,
char* symbol_buffer,
xed_uint32_t buffer_length,
xed_uint64_t* offset,
void* context);
#endif