1*2de3b87aSKai Wang.\" Copyright (c) 2009 Joseph Koshy. All rights reserved. 2*2de3b87aSKai Wang.\" 3*2de3b87aSKai Wang.\" Redistribution and use in source and binary forms, with or without 4*2de3b87aSKai Wang.\" modification, are permitted provided that the following conditions 5*2de3b87aSKai Wang.\" are met: 6*2de3b87aSKai Wang.\" 1. Redistributions of source code must retain the above copyright 7*2de3b87aSKai Wang.\" notice, this list of conditions and the following disclaimer. 8*2de3b87aSKai Wang.\" 2. Redistributions in binary form must reproduce the above copyright 9*2de3b87aSKai Wang.\" notice, this list of conditions and the following disclaimer in the 10*2de3b87aSKai Wang.\" documentation and/or other materials provided with the distribution. 11*2de3b87aSKai Wang.\" 12*2de3b87aSKai Wang.\" This software is provided by Joseph Koshy ``as is'' and 13*2de3b87aSKai Wang.\" any express or implied warranties, including, but not limited to, the 14*2de3b87aSKai Wang.\" implied warranties of merchantability and fitness for a particular purpose 15*2de3b87aSKai Wang.\" are disclaimed. in no event shall Joseph Koshy be liable 16*2de3b87aSKai Wang.\" for any direct, indirect, incidental, special, exemplary, or consequential 17*2de3b87aSKai Wang.\" damages (including, but not limited to, procurement of substitute goods 18*2de3b87aSKai Wang.\" or services; loss of use, data, or profits; or business interruption) 19*2de3b87aSKai Wang.\" however caused and on any theory of liability, whether in contract, strict 20*2de3b87aSKai Wang.\" liability, or tort (including negligence or otherwise) arising in any way 21*2de3b87aSKai Wang.\" out of the use of this software, even if advised of the possibility of 22*2de3b87aSKai Wang.\" such damage. 23*2de3b87aSKai Wang.\" 24*2de3b87aSKai Wang.\" $Id: dwarf_init.3 2122 2011-11-09 15:35:14Z jkoshy $ 25*2de3b87aSKai Wang.\" 26*2de3b87aSKai Wang.Dd November 9, 2011 27*2de3b87aSKai Wang.Os 28*2de3b87aSKai Wang.Dt DWARF_INIT 3 29*2de3b87aSKai Wang.Sh NAME 30*2de3b87aSKai Wang.Nm dwarf_init , 31*2de3b87aSKai Wang.Nm dwarf_elf_init 32*2de3b87aSKai Wang.Nd allocate a DWARF debug descriptor 33*2de3b87aSKai Wang.Sh LIBRARY 34*2de3b87aSKai Wang.Lb libdwarf 35*2de3b87aSKai Wang.Sh SYNOPSIS 36*2de3b87aSKai Wang.In libdwarf.h 37*2de3b87aSKai Wang.Ft int 38*2de3b87aSKai Wang.Fo dwarf_init 39*2de3b87aSKai Wang.Fa "int fd" 40*2de3b87aSKai Wang.Fa "int mode" 41*2de3b87aSKai Wang.Fa "Dwarf_Handler errhand" 42*2de3b87aSKai Wang.Fa "Dwarf_Ptr errarg" 43*2de3b87aSKai Wang.Fa "Dwarf_Debug *ret" 44*2de3b87aSKai Wang.Fa "Dwarf_Error *err" 45*2de3b87aSKai Wang.Fc 46*2de3b87aSKai Wang.Ft in 47*2de3b87aSKai Wang.Fo dwarf_elf_init 48*2de3b87aSKai Wang.Fa "Elf *elf" 49*2de3b87aSKai Wang.Fa "int mode" 50*2de3b87aSKai Wang.Fa "Dwarf_Handler errhand" 51*2de3b87aSKai Wang.Fa "Dwarf_Ptr errarg" 52*2de3b87aSKai Wang.Fa "Dwarf_Debug *ret" 53*2de3b87aSKai Wang.Fa "Dwarf_Error *err" 54*2de3b87aSKai Wang.Fc 55*2de3b87aSKai Wang.Sh DESCRIPTION 56*2de3b87aSKai WangThese functions allocate and return a 57*2de3b87aSKai Wang.Vt Dwarf_Debug 58*2de3b87aSKai Wanginstance for the object denoted by argument 59*2de3b87aSKai Wang.Ar fd 60*2de3b87aSKai Wangor 61*2de3b87aSKai Wang.Ar elf . 62*2de3b87aSKai WangThis instance would be used for subsequent access to debugging information in the object by other functions in the DWARF(3) library. 63*2de3b87aSKai Wang.Pp 64*2de3b87aSKai WangFor function 65*2de3b87aSKai Wang.Fn dwarf_init , 66*2de3b87aSKai Wangargument 67*2de3b87aSKai Wang.Ar fd 68*2de3b87aSKai Wangdenotes an open file descriptor referencing a compilation object. 69*2de3b87aSKai WangFunction 70*2de3b87aSKai Wang.Fn dwarf_init 71*2de3b87aSKai Wangimplicitly allocates an 72*2de3b87aSKai Wang.Vt Elf 73*2de3b87aSKai Wangdescriptor for argument 74*2de3b87aSKai Wang.Ar fd . 75*2de3b87aSKai Wang.Pp 76*2de3b87aSKai WangFor function 77*2de3b87aSKai Wang.Fn dwarf_elf_init , 78*2de3b87aSKai Wangargument 79*2de3b87aSKai Wang.Ar elf 80*2de3b87aSKai Wangdenotes a descriptor returned by 81*2de3b87aSKai Wang.Xr elf_begin 3 82*2de3b87aSKai Wangor 83*2de3b87aSKai Wang.Xr elf_memory 3 . 84*2de3b87aSKai Wang.Pp 85*2de3b87aSKai WangArgument 86*2de3b87aSKai Wang.Ar mode 87*2de3b87aSKai Wangspecifies the access mode desired. 88*2de3b87aSKai WangIt should be at least as permissive as the mode with which 89*2de3b87aSKai Wangthe file descriptor 90*2de3b87aSKai Wang.Ar fd 91*2de3b87aSKai Wangor the ELF descriptor 92*2de3b87aSKai Wang.Ar elf 93*2de3b87aSKai Wangwas created with. 94*2de3b87aSKai WangLegal values for argument 95*2de3b87aSKai Wang.Ar mode 96*2de3b87aSKai Wangare: 97*2de3b87aSKai Wang.Pp 98*2de3b87aSKai Wang.Bl -tag -width "DW_DLC_WRITE" -compact 99*2de3b87aSKai Wang.It DW_DLC_RDWR 100*2de3b87aSKai WangPermit reading and writing of DWARF information. 101*2de3b87aSKai Wang.It DW_DLC_READ 102*2de3b87aSKai WangOperate in read-only mode. 103*2de3b87aSKai Wang.It DW_DLC_WRITE 104*2de3b87aSKai WangPermit writing of DWARF information. 105*2de3b87aSKai Wang.El 106*2de3b87aSKai Wang.Pp 107*2de3b87aSKai WangArgument 108*2de3b87aSKai Wang.Ar errhand 109*2de3b87aSKai Wangdenotes a function to be called in case of an error. 110*2de3b87aSKai WangIf this argument is 111*2de3b87aSKai Wang.Dv NULL 112*2de3b87aSKai Wangthen a default error handling scheme is used. 113*2de3b87aSKai WangSee 114*2de3b87aSKai Wang.Xr dwarf 3 115*2de3b87aSKai Wangfor a description of the error handling scheme used by the 116*2de3b87aSKai WangDWARF(3) library. 117*2de3b87aSKai Wang.Pp 118*2de3b87aSKai WangArgument 119*2de3b87aSKai Wang.Ar errarg 120*2de3b87aSKai Wangis passed to the error handler function denoted by argument 121*2de3b87aSKai Wang.Ar errhand 122*2de3b87aSKai Wangwhen it is invoked. 123*2de3b87aSKai Wang.Pp 124*2de3b87aSKai WangArgument 125*2de3b87aSKai Wang.Ar ret 126*2de3b87aSKai Wangpoints to the memory location that will hold a 127*2de3b87aSKai Wang.Vt Dwarf_Debug 128*2de3b87aSKai Wangreference on a successful call these functions. 129*2de3b87aSKai Wang.Pp 130*2de3b87aSKai WangArgument 131*2de3b87aSKai Wang.Ar err 132*2de3b87aSKai Wangreferences a memory location that would hold a 133*2de3b87aSKai Wang.Vt Dwarf_Error 134*2de3b87aSKai Wangdescriptor in case of an error. 135*2de3b87aSKai Wang.Ss Memory Management 136*2de3b87aSKai WangThe 137*2de3b87aSKai Wang.Vt Dwarf_Debug 138*2de3b87aSKai Wanginstance returned by these functions should be freed using 139*2de3b87aSKai Wang.Fn dwarf_finish . 140*2de3b87aSKai Wang.Sh RETURN VALUES 141*2de3b87aSKai WangThese functions return the following values: 142*2de3b87aSKai Wang.Bl -tag -width ".Bq Er DW_DLV_NO_ENTRY" 143*2de3b87aSKai Wang.It Bq Er DW_DLV_OK 144*2de3b87aSKai WangThis return value indicates a successful return. 145*2de3b87aSKai Wang.It Bq Er DW_DLV_ERROR 146*2de3b87aSKai WangThe operation failed. 147*2de3b87aSKai Wang.It Bq Er DW_DLV_NO_ENTRY 148*2de3b87aSKai WangThe object specified by arguments 149*2de3b87aSKai Wang.Ar "fd" 150*2de3b87aSKai Wangor 151*2de3b87aSKai Wang.Ar "elf" 152*2de3b87aSKai Wangdid not contain debug information. 153*2de3b87aSKai Wang.El 154*2de3b87aSKai Wang.Sh IMPLEMENTATION NOTES 155*2de3b87aSKai WangThe current implementation does not support access modes 156*2de3b87aSKai Wang.Dv DW_DLC_RDWR 157*2de3b87aSKai Wangand 158*2de3b87aSKai Wang.Dv DW_DLC_WRITE . 159*2de3b87aSKai Wang.Sh EXAMPLES 160*2de3b87aSKai WangTo initialize a 161*2de3b87aSKai Wang.Vt Dwarf_Debug 162*2de3b87aSKai Wanginstance from a open file descriptor referencing an ELF object, and 163*2de3b87aSKai Wangwith the default error handler, use: 164*2de3b87aSKai Wang.Bd -literal -offset indent 165*2de3b87aSKai WangDwarf_Error err; 166*2de3b87aSKai WangDwarf_Debug dbg; 167*2de3b87aSKai Wang 168*2de3b87aSKai Wangif (dwarf_init(fd, DW_DLC_READ, NULL, NULL, &dbg, &err) != 169*2de3b87aSKai Wang DW_DLV_OK) 170*2de3b87aSKai Wang errx(EXIT_FAILURE, "dwarf_init: %s", dwarf_errmsg(err)); 171*2de3b87aSKai Wang.Ed 172*2de3b87aSKai Wang.Sh SEE ALSO 173*2de3b87aSKai Wang.Xr dwarf 3 , 174*2de3b87aSKai Wang.Xr dwarf_errmsg 3 , 175*2de3b87aSKai Wang.Xr dwarf_finish 3 , 176*2de3b87aSKai Wang.Xr dwarf_get_elf 3 , 177*2de3b87aSKai Wang.Xr elf_begin 3 , 178*2de3b87aSKai Wang.Xr elf_memory 3 179