1.\" $NetBSD: dwarf_add_AT_reference.3,v 1.2 2014/03/09 16:58:03 christos Exp $ 2.\" 3.\" Copyright (c) 2011 Kai Wang 4.\" All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 15.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25.\" SUCH DAMAGE. 26.\" 27.\" Id: dwarf_add_AT_reference.3 2072 2011-10-27 03:26:49Z jkoshy 28.\" 29.Dd September 4, 2011 30.Os 31.Dt DWARF_ADD_AT_REFERENCE 3 32.Sh NAME 33.Nm dwarf_add_AT_reference 34.Nd create and attach an attribute that references another DIE 35.Sh LIBRARY 36.Lb libdwarf 37.Sh SYNOPSIS 38.In libdwarf.h 39.Ft "Dwarf_P_Attribute" 40.Fo dwarf_add_AT_reference 41.Fa "Dwarf_P_Debug dbg" 42.Fa "Dwarf_P_Die die" 43.Fa "Dwarf_Half attr" 44.Fa "Dwarf_P_Die ref_die" 45.Fa "Dwarf_Error *err" 46.Fc 47.Sh DESCRIPTION 48Function 49.Fn dwarf_add_AT_reference 50creates an attribute descriptor that references another debugging 51information entry in the same compilation unit. 52The attribute will be of DWARF form 53.Dv DW_FORM_ref4 54or 55.Dv DW_FORM_ref8 56depending on the target address size, and will contain the 57section-relative offset of the referenced debugging information entry 58as its value. 59.Pp 60Argument 61.Ar dbg 62should reference a DWARF producer instance allocated using 63.Xr dwarf_producer_init 3 64or 65.Xr dwarf_producer_init_b 3 . 66.Pp 67Argument 68.Ar die 69should reference a debugging information entry allocated using 70.Xr dwarf_new_die 3 . 71.Pp 72Argument 73.Ar attr 74should specify the attribute code of the created attribute descriptor. 75.Pp 76Argument 77.Ar ref_die 78should hold the debugging information entry descriptor that 79the attribute should refer to. 80.Pp 81If argument 82.Ar err 83is not NULL, it will be used to store error information in case 84of an error. 85.Sh RETURN VALUES 86On success, function 87.Fn dwarf_add_AT_reference 88returns the created attribute descriptor. 89In case of an error, function 90.Fn dwarf_add_AT_reference 91returns 92.Dv DW_DLV_BADADDR 93and sets the argument 94.Ar err . 95.Sh ERRORS 96Function 97.Fn dwarf_add_AT_reference 98can fail with: 99.Bl -tag -width ".Bq Er DW_DLE_ARGUMENT" 100.It Bq Er DW_DLE_ARGUMENT 101One of the arguments 102.Ar dbg , 103.Ar die 104or 105.Ar ref_die 106was NULL. 107.It Bq Er DW_DLE_MEMORY 108An out of memory condition was encountered during the execution of 109the function. 110.El 111.Sh SEE ALSO 112.Xr dwarf 3 , 113.Xr dwarf_add_AT_dataref 3 , 114.Xr dwarf_add_AT_ref_address 3 , 115.Xr dwarf_add_AT_signed_const 3 , 116.Xr dwarf_add_AT_unsigned_const 3 , 117.Xr dwarf_new_die 3 , 118.Xr dwarf_producer_init 3 , 119.Xr dwarf_producer_init_b 3 120