xref: /freebsd/contrib/elftoolchain/libelf/gelf_update_ehdr.3 (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
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_update_ehdr.3 3639 2018-10-14 14:07:02Z jkoshy $
25.\"
26.Dd August 27, 2006
27.Dt GELF_UPDATE_EHDR 3
28.Os
29.Sh NAME
30.Nm gelf_update_ehdr ,
31.Nm gelf_update_phdr ,
32.Nm gelf_update_shdr
33.Nd update underlying ELF data structures
34.Sh LIBRARY
35.Lb libelf
36.Sh SYNOPSIS
37.In gelf.h
38.Ft int
39.Fn gelf_update_ehdr "Elf *elf" "GElf_Ehdr *ehdr"
40.Ft int
41.Fn gelf_update_phdr "Elf *elf" "int ndx" "GElf_Phdr *phdr"
42.Ft int
43.Fn gelf_update_shdr "Elf_Scn *scn" "GElf_Shdr *shdr"
44.Sh DESCRIPTION
45These functions are used to update ELF data structures on the underlying
46ELF descriptor.
47Class-dependent data structures in the underlying ELF descriptor
48are updated using the data in the class-independent GElf descriptors
49and the underlying ELF data structures are marked
50.Dq dirty .
51The conversion process signals an error if the values being copied
52to the target ELF data structure would exceed representation
53limits.
54GElf descriptors are described in
55.Xr gelf 3 .
56.Pp
57Function
58.Fn gelf_update_ehdr
59updates the ELF Executable Header with the values in the
60class-independent executable header
61.Ar ehdr .
62.Pp
63Function
64.Fn gelf_update_phdr
65updates the ELF Program Header structure at index
66.Ar ndx
67with the values in the class-independent program header
68.Ar phdr .
69.Pp
70Function
71.Fn gelf_update_shdr
72updates the ELF Section Header structure associated with section
73descriptor
74.Ar scn
75with the values in argument
76.Ar shdr .
77.Sh RETURN VALUES
78These functions return a non-zero integer on success, or zero in case
79of an error.
80.Sh ERRORS
81These functions may fail with the following errors:
82.Bl -tag -width "[ELF_E_RESOURCE]"
83.It Bq Er ELF_E_ARGUMENT
84Arguments
85.Ar elf ,
86.Ar ehdr ,
87.Ar phdr ,
88.Ar scn ,
89or
90.Ar shdr
91were NULL.
92.It Bq Er ELF_E_ARGUMENT
93Argument
94.Ar elf
95was not a descriptor for an ELF object.
96.It Bq Er ELF_E_ARGUMENT
97Argument
98.Ar elf
99had an unsupported ELF class.
100.It Bq Er ELF_E_ARGUMENT
101Argument
102.Ar ndx
103exceeded the number of entries in the program header table.
104.It Bq Er ELF_E_ARGUMENT
105Section descriptor
106.Ar scn
107was not associated with an ELF descriptor.
108.It Bq Er ELF_E_MODE
109ELF descriptor
110.Ar elf
111was not opened for writing or updating.
112.It Bq Er ELF_E_RESOURCE
113An out of memory condition was detected.
114.El
115.Sh SEE ALSO
116.Xr elf 3 ,
117.Xr elf_flagelf 3 ,
118.Xr elf_flagphdr 3 ,
119.Xr elf_flagshdr 3 ,
120.Xr gelf 3 ,
121.Xr gelf_getehdr 3 ,
122.Xr gelf_getphdr 3 ,
123.Xr gelf_getshdr 3
124