/ external / libelf / gelf_getsym.3
gelf_getsym.3
  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$
 25  .\"
 26  .Dd August 29, 2006
 27  .Os
 28  .Dt GELF_GETSYM 3
 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
 42  These convenience functions are used to retrieve and update class-dependent
 43  .Vt Elf32_Sym
 44  and
 45  .Vt Elf64_Sym
 46  structures in an ELF object.
 47  .Pp
 48  Argument
 49  .Ar data
 50  is an
 51  .Vt Elf_Data
 52  descriptor associated with a section of type
 53  .Dv SHT_SYMTAB ,
 54  .Dv SHT_DYNSYM
 55  or
 56  .Dv SHT_GNU_versym .
 57  Argument
 58  .Ar ndx
 59  is the index of the symbol being retrieved or updated.
 60  The class-independent
 61  .Vt GElf_Sym
 62  structure is described in
 63  .Xr gelf 3 .
 64  .Pp
 65  Function
 66  .Fn gelf_getsym
 67  retrieves class-dependent symbol information at index
 68  .Ar ndx
 69  in data buffer
 70  .Ar data
 71  and copies it to the destination pointed to by argument
 72  .Ar sym
 73  after translation to class-independent form.
 74  .Pp
 75  Function
 76  .Fn gelf_update_sym
 77  converts the class-independent symbol information pointed to
 78  by argument
 79  .Ar sym
 80  to class-dependent form, and writes it to the symbol entry at index
 81  .Ar ndx
 82  in the data buffer described by argument
 83  .Ar data .
 84  Function
 85  .Fn gelf_update_sym
 86  signals an error if any of the values in the class-independent
 87  representation exceeds the representable limits of the target
 88  type.
 89  .Sh RETURN VALUES
 90  Function
 91  .Fn gelf_getsym
 92  returns the value of argument
 93  .Ar sym
 94  if successful, or NULL in case of an error.
 95  Function
 96  .Fn gelf_update_sym
 97  returns a non-zero value if successful, or zero in case of an error.
 98  .Sh ERRORS
 99  These functions may fail with the following errors:
100  .Bl -tag -width "[ELF_E_RESOURCE]"
101  .It Bq Er ELF_E_ARGUMENT
102  Arguments
103  .Ar data
104  or
105  .Ar sym
106  were NULL.
107  .It Bq Er ELF_E_ARGUMENT
108  Argument
109  .Ar ndx
110  was less than zero or larger than the number of symbols in the data
111  descriptor.
112  .It Bq Er ELF_E_ARGUMENT
113  Data descriptor
114  .Ar data
115  was not associated with a section containing symbol information.
116  .It Bq Er ELF_E_RANGE
117  A value was not representable in the target type.
118  .El
119  .Sh SEE ALSO
120  .Xr elf 3 ,
121  .Xr elf_getdata 3 ,
122  .Xr elf_getscn 3 ,
123  .Xr gelf 3 ,
124  .Xr gelf_getsyminfo 3 ,
125  .Xr gelf_update_syminfo 3