1c21bc6f3SBojan Novković /*- 2*637e67e0SBojan Novković * SPDX-License-Identifier: BSD-2-Clause 3c21bc6f3SBojan Novković * 4c21bc6f3SBojan Novković * Copyright (c) 2023 Bojan Novković <bnovkov@freebsd.org> 5c21bc6f3SBojan Novković * 6c21bc6f3SBojan Novković * Redistribution and use in source and binary forms, with or without 7c21bc6f3SBojan Novković * modification, are permitted provided that the following conditions 8c21bc6f3SBojan Novković * are met: 9c21bc6f3SBojan Novković * 1. Redistributions of source code must retain the above copyright 10c21bc6f3SBojan Novković * notice, this list of conditions and the following disclaimer. 11c21bc6f3SBojan Novković * 2. Redistributions in binary form must reproduce the above copyright 12c21bc6f3SBojan Novković * notice, this list of conditions and the following disclaimer in the 13c21bc6f3SBojan Novković * documentation and/or other materials provided with the distribution. 14c21bc6f3SBojan Novković * 15c21bc6f3SBojan Novković * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16c21bc6f3SBojan Novković * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17c21bc6f3SBojan Novković * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18c21bc6f3SBojan Novković * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19c21bc6f3SBojan Novković * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20c21bc6f3SBojan Novković * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21c21bc6f3SBojan Novković * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22c21bc6f3SBojan Novković * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23c21bc6f3SBojan Novković * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24c21bc6f3SBojan Novković * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25c21bc6f3SBojan Novković * SUCH DAMAGE. 26c21bc6f3SBojan Novković */ 27c21bc6f3SBojan Novković 28c21bc6f3SBojan Novković #ifndef _DDB_DB_CTF_H_ 29c21bc6f3SBojan Novković #define _DDB_DB_CTF_H_ 30c21bc6f3SBojan Novković 31c21bc6f3SBojan Novković #include <sys/types.h> 32c21bc6f3SBojan Novković #include <sys/ctf.h> 33c21bc6f3SBojan Novković #include <sys/linker.h> 34c21bc6f3SBojan Novković 35c21bc6f3SBojan Novković #include <ddb/ddb.h> 36c21bc6f3SBojan Novković #include <ddb/db_sym.h> 37c21bc6f3SBojan Novković 38c21bc6f3SBojan Novković #define DB_CTF_INVALID_OFF 0xffffffff 39c21bc6f3SBojan Novković 40c21bc6f3SBojan Novković struct db_ctf_sym_data { 41c21bc6f3SBojan Novković linker_ctf_t lc; 42c21bc6f3SBojan Novković Elf_Sym *sym; 43c21bc6f3SBojan Novković }; 44c21bc6f3SBojan Novković 45c21bc6f3SBojan Novković typedef struct db_ctf_sym_data *db_ctf_sym_data_t; 46c21bc6f3SBojan Novković 47c21bc6f3SBojan Novković /* 48c21bc6f3SBojan Novković * Routines for finding symbols and CTF info accross all loaded linker files. 49c21bc6f3SBojan Novković */ 50c21bc6f3SBojan Novković int db_ctf_find_symbol(const char *name, db_ctf_sym_data_t sd); 51c21bc6f3SBojan Novković struct ctf_type_v3 *db_ctf_find_typename(db_ctf_sym_data_t sd, 52c21bc6f3SBojan Novković const char *typename); 53c21bc6f3SBojan Novković bool db_ctf_lookup_typename(linker_ctf_t *lc, const char *typename); 54c21bc6f3SBojan Novković 55c21bc6f3SBojan Novković /* 56c21bc6f3SBojan Novković * Routines for working with CTF data. 57c21bc6f3SBojan Novković */ 58c21bc6f3SBojan Novković struct ctf_type_v3 *db_ctf_sym_to_type(db_ctf_sym_data_t sd); 59c21bc6f3SBojan Novković const char *db_ctf_stroff_to_str(db_ctf_sym_data_t sd, uint32_t off); 60c21bc6f3SBojan Novković struct ctf_type_v3 *db_ctf_typename_to_type(linker_ctf_t *lc, const char *name); 61c21bc6f3SBojan Novković struct ctf_type_v3 *db_ctf_typeid_to_type(db_ctf_sym_data_t sd, 62c21bc6f3SBojan Novković uint32_t typeid); 63c21bc6f3SBojan Novković 64c21bc6f3SBojan Novković #endif /* !_DDB_DB_CTF_H_ */ 65