1.\" Copyright (c) 2006,2008 Joseph Koshy. All rights reserved. 2.\" 3.\" Redistribution and use in source and binary forms, with or without 4.\" modification, are permitted provided that the following conditions 5.\" are met: 6.\" 1. Redistributions of source code must retain the above copyright 7.\" notice, this list of conditions and the following disclaimer. 8.\" 2. Redistributions in binary form must reproduce the above copyright 9.\" notice, this list of conditions and the following disclaimer in the 10.\" documentation and/or other materials provided with the distribution. 11.\" 12.\" This software is provided by Joseph Koshy ``as is'' and 13.\" any express or implied warranties, including, but not limited to, the 14.\" implied warranties of merchantability and fitness for a particular purpose 15.\" are disclaimed. in no event shall Joseph Koshy be liable 16.\" for any direct, indirect, incidental, special, exemplary, or consequential 17.\" damages (including, but not limited to, procurement of substitute goods 18.\" or services; loss of use, data, or profits; or business interruption) 19.\" however caused and on any theory of liability, whether in contract, strict 20.\" liability, or tort (including negligence or otherwise) arising in any way 21.\" out of the use of this software, even if advised of the possibility of 22.\" such damage. 23.\" 24.\" $Id: gelf_getsym.3 3734 2019-04-22 14:10:49Z jkoshy $ 25.\" 26.Dd April 22, 2019 27.Dt GELF_GETSYM 3 28.Os 29.Sh NAME 30.Nm gelf_getsym , 31.Nm gelf_update_sym 32.Nd read and update symbol information 33.Sh LIBRARY 34.Lb libelf 35.Sh SYNOPSIS 36.In gelf.h 37.Ft "GElf_Sym *" 38.Fn gelf_getsym "Elf_Data *data" "int ndx" "GElf_Sym *sym" 39.Ft int 40.Fn gelf_update_sym "Elf_Data *data" "int ndx" "GElf_Sym *sym" 41.Sh DESCRIPTION 42These convenience functions are used to retrieve and update class-dependent 43.Vt Elf32_Sym 44and 45.Vt Elf64_Sym 46structures in an ELF object. 47.Pp 48Argument 49.Ar data 50is an 51.Vt Elf_Data 52descriptor associated with a section of type 53.Dv SHT_SYMTAB , 54.Dv SHT_DYNSYM 55or 56.Dv SHT_GNU_versym . 57Argument 58.Ar ndx 59is the index of the symbol being retrieved or updated. 60The class-independent 61.Vt GElf_Sym 62structure is described in 63.Xr gelf 3 . 64.Pp 65Function 66.Fn gelf_getsym 67retrieves class-dependent symbol information at index 68.Ar ndx 69in data buffer 70.Ar data 71and copies it to the destination pointed to by argument 72.Ar sym 73after translation to class-independent form. 74.Pp 75Function 76.Fn gelf_update_sym 77converts the class-independent symbol information pointed to 78by argument 79.Ar sym 80to class-dependent form, and writes it to the symbol entry at index 81.Ar ndx 82in the data buffer described by argument 83.Ar data . 84Function 85.Fn gelf_update_sym 86signals an error if any of the values in the class-independent 87representation exceeds the representable limits of the target 88type. 89.Sh RETURN VALUES 90Function 91.Fn gelf_getsym 92returns the value of argument 93.Ar sym 94if successful, or NULL in case of an error. 95Function 96.Fn gelf_update_sym 97returns a non-zero value if successful, or zero in case of an error. 98.Sh ERRORS 99These functions may fail with the following errors: 100.Bl -tag -width "[ELF_E_RESOURCE]" 101.It Bq Er ELF_E_ARGUMENT 102Arguments 103.Ar data 104or 105.Ar sym 106were NULL. 107.It Bq Er ELF_E_ARGUMENT 108Argument 109.Ar ndx 110was less than zero or larger than the number of symbols in the data 111descriptor. 112.It Bq Er ELF_E_ARGUMENT 113Data descriptor 114.Ar data 115was not associated with a section containing symbol information. 116.It Bq Er ELF_E_RANGE 117A value was not representable in the target type. 118.It Bq Er ELF_E_VERSION 119The 120.Vt Elf_Data 121descriptor denoted by argument 122.Ar data 123is associated with an ELF object with an unsupported version. 124.El 125.Sh SEE ALSO 126.Xr elf 3 , 127.Xr elf_getdata 3 , 128.Xr elf_getscn 3 , 129.Xr gelf 3 , 130.Xr gelf_getsyminfo 3 , 131.Xr gelf_update_syminfo 3 132