xref: /freebsd/sys/ddb/db_ctf.h (revision 637e67e0)
1c21bc6f3SBojan Novković /*-
2637e67e0SBojan 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