1dc0093f4Seschrock /* 2dc0093f4Seschrock * CDDL HEADER START 3dc0093f4Seschrock * 4dc0093f4Seschrock * The contents of this file are subject to the terms of the 5dc0093f4Seschrock * Common Development and Distribution License (the "License"). 6dc0093f4Seschrock * You may not use this file except in compliance with the License. 7dc0093f4Seschrock * 8dc0093f4Seschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9dc0093f4Seschrock * or http://www.opensolaris.org/os/licensing. 10dc0093f4Seschrock * See the License for the specific language governing permissions 11dc0093f4Seschrock * and limitations under the License. 12dc0093f4Seschrock * 13dc0093f4Seschrock * When distributing Covered Code, include this CDDL HEADER in each 14dc0093f4Seschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15dc0093f4Seschrock * If applicable, add the following below this CDDL HEADER, with the 16dc0093f4Seschrock * fields enclosed by brackets "[]" replaced with your own identifying 17dc0093f4Seschrock * information: Portions Copyright [yyyy] [name of copyright owner] 18dc0093f4Seschrock * 19dc0093f4Seschrock * CDDL HEADER END 20dc0093f4Seschrock */ 21dc0093f4Seschrock 22dc0093f4Seschrock /* 23dc0093f4Seschrock * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24dc0093f4Seschrock * Use is subject to license terms. 25*b5f3c6ffSJason King * 26*b5f3c6ffSJason King * Copyright 2011 Jason King. All rights reserved. 27dc0093f4Seschrock */ 28dc0093f4Seschrock 29dc0093f4Seschrock #ifndef _DIS_TARGET_H 30dc0093f4Seschrock #define _DIS_TARGET_H 31dc0093f4Seschrock 32dc0093f4Seschrock #ifdef __cplusplus 33dc0093f4Seschrock extern "C" { 34dc0093f4Seschrock #endif 35dc0093f4Seschrock 36dc0093f4Seschrock #include <gelf.h> 37dc0093f4Seschrock #include <sys/types.h> 38dc0093f4Seschrock 39dc0093f4Seschrock /* 40dc0093f4Seschrock * Basic types 41dc0093f4Seschrock */ 42dc0093f4Seschrock typedef struct dis_tgt dis_tgt_t; 43dc0093f4Seschrock typedef struct dis_func dis_func_t; 44dc0093f4Seschrock typedef struct dis_scn dis_scn_t; 45dc0093f4Seschrock 46dc0093f4Seschrock /* 47dc0093f4Seschrock * Target management 48dc0093f4Seschrock */ 49dc0093f4Seschrock dis_tgt_t *dis_tgt_create(const char *); 50dc0093f4Seschrock void dis_tgt_destroy(dis_tgt_t *); 51dc0093f4Seschrock const char *dis_tgt_lookup(dis_tgt_t *, uint64_t, off_t *, int, size_t *, 52dc0093f4Seschrock int *); 53*b5f3c6ffSJason King const char *dis_find_section(dis_tgt_t *, uint64_t, off_t *); 54dc0093f4Seschrock const char *dis_tgt_name(dis_tgt_t *); 55dc0093f4Seschrock const char *dis_tgt_member(dis_tgt_t *); 56dc0093f4Seschrock void dis_tgt_ehdr(dis_tgt_t *, GElf_Ehdr *); 57dc0093f4Seschrock off_t dis_tgt_next_symbol(dis_tgt_t *, uint64_t); 58dc0093f4Seschrock dis_tgt_t *dis_tgt_next(dis_tgt_t *); 59dc0093f4Seschrock 60dc0093f4Seschrock /* 61dc0093f4Seschrock * Section management 62dc0093f4Seschrock */ 63dc0093f4Seschrock typedef void (*section_iter_f)(dis_tgt_t *, dis_scn_t *, void *); 64dc0093f4Seschrock void dis_tgt_section_iter(dis_tgt_t *, section_iter_f, void *); 65dc0093f4Seschrock 66dc0093f4Seschrock int dis_section_istext(dis_scn_t *); 67dc0093f4Seschrock void *dis_section_data(dis_scn_t *); 68dc0093f4Seschrock size_t dis_section_size(dis_scn_t *); 69dc0093f4Seschrock uint64_t dis_section_addr(dis_scn_t *); 70dc0093f4Seschrock const char *dis_section_name(dis_scn_t *); 71dc0093f4Seschrock dis_scn_t *dis_section_copy(dis_scn_t *); 72dc0093f4Seschrock void dis_section_free(dis_scn_t *); 73dc0093f4Seschrock 74dc0093f4Seschrock /* 75dc0093f4Seschrock * Function management 76dc0093f4Seschrock */ 77dc0093f4Seschrock typedef void (*function_iter_f)(dis_tgt_t *, dis_func_t *, void *); 78dc0093f4Seschrock void dis_tgt_function_iter(dis_tgt_t *, function_iter_f, void *); 79dc0093f4Seschrock dis_func_t *dis_tgt_function_lookup(dis_tgt_t *, const char *); 80dc0093f4Seschrock 81dc0093f4Seschrock void *dis_function_data(dis_func_t *); 82dc0093f4Seschrock size_t dis_function_size(dis_func_t *); 83dc0093f4Seschrock uint64_t dis_function_addr(dis_func_t *); 84dc0093f4Seschrock const char *dis_function_name(dis_func_t *); 85dc0093f4Seschrock dis_func_t *dis_function_copy(dis_func_t *); 86dc0093f4Seschrock void dis_function_free(dis_func_t *); 87dc0093f4Seschrock 88dc0093f4Seschrock #ifdef __cplusplus 89dc0093f4Seschrock } 90dc0093f4Seschrock #endif 91dc0093f4Seschrock 92dc0093f4Seschrock #endif /* _DIS_TARGET_H */ 93