1.\" Copyright (c) 2011 Kai Wang 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $Id: dwarf_add_expr_addr.3 2072 2011-10-27 03:26:49Z jkoshy $ 26.\" 27.Dd September 9, 2011 28.Os 29.Dt DWARF_ADD_EXPR_ADDR 3 30.Sh NAME 31.Nm dwarf_add_expr_addr , 32.Nm dwarf_add_expr_addr_b 33.Nd add a DW_OP_addr location expression 34.Sh LIBRARY 35.Lb libdwarf 36.Sh SYNOPSIS 37.In libdwarf.h 38.Ft "Dwarf_Unsigned" 39.Fo dwarf_add_expr_addr 40.Fa "Dwarf_P_Expr expr" 41.Fa "Dwarf_Unsigned address" 42.Fa "Dwarf_Signed sym_index" 43.Fa "Dwarf_Error *err" 44.Fc 45.Ft "Dwarf_Unsigned" 46.Fo dwarf_add_expr_addr_b 47.Fa "Dwarf_P_Expr expr" 48.Fa "Dwarf_Unsigned address" 49.Fa "Dwarf_Unsigned sym_index" 50.Fa "Dwarf_Error *err" 51.Fc 52.Sh DESCRIPTION 53Function 54.Fn dwarf_add_expr_addr_b 55adds a 56.Dv DW_OP_addr 57location expression to the location expression descriptor referenced 58by argument 59.Ar expr . 60.Pp 61Argument 62.Ar expr 63should reference a location expression descriptor allocated using 64the function 65.Xr dwarf_new_expr 3 . 66.Pp 67Argument 68.Ar address 69specifies the operand, a relocatable address value. 70.Pp 71Argument 72.Ar sym_index 73specifies the ELF symbol index of the symbol to be used for 74relocation. 75.Pp 76If argument 77.Ar err 78is not NULL, it will be used to store error information in case 79of an error. 80.Pp 81Function 82.Fn dwarf_add_expr_addr 83is deprecated. 84It is similar to function 85.Fn dwarf_add_expr_addr_b 86except that it cannot handle all possible symbol index values. 87.Sh RETURN VALUES 88On success, these functions return the size in bytes of the location 89expression byte stream generated. 90In case of an error, these functions return 91.Dv DW_DLV_NOCOUNT 92and set the argument 93.Ar err . 94.Sh ERRORS 95These functions can fail with: 96.Bl -tag -width ".Bq Er DW_DLE_ARGUMENT" 97.It Bq Er DW_DLE_ARGUMENT 98Argument 99.Ar expr 100was NULL. 101.It Bq Er DW_DLE_MEMORY 102An out of memory condition was encountered during the execution of 103the function. 104.El 105.Sh SEE ALSO 106.Xr dwarf 3 , 107.Xr dwarf_add_AT_location_expr 3 , 108.Xr dwarf_add_expr_gen 3 , 109.Xr dwarf_expr_current_offset 3 , 110.Xr dwarf_expr_into_block 3 , 111.Xr dwarf_new_expr 3 112