1.\"	$NetBSD: gelf_checksum.3,v 1.2 2014/03/09 16:58:04 christos Exp $
2.\"
3.\" Copyright (c) 2006,2008 Joseph Koshy.  All rights reserved.
4.\"
5.\" Redistribution and use in source and binary forms, with or without
6.\" modification, are permitted provided that the following conditions
7.\" are met:
8.\" 1. Redistributions of source code must retain the above copyright
9.\"    notice, this list of conditions and the following disclaimer.
10.\" 2. Redistributions in binary form must reproduce the above copyright
11.\"    notice, this list of conditions and the following disclaimer in the
12.\"    documentation and/or other materials provided with the distribution.
13.\"
14.\" This software is provided by Joseph Koshy ``as is'' and
15.\" any express or implied warranties, including, but not limited to, the
16.\" implied warranties of merchantability and fitness for a particular purpose
17.\" are disclaimed.  in no event shall Joseph Koshy be liable
18.\" for any direct, indirect, incidental, special, exemplary, or consequential
19.\" damages (including, but not limited to, procurement of substitute goods
20.\" or services; loss of use, data, or profits; or business interruption)
21.\" however caused and on any theory of liability, whether in contract, strict
22.\" liability, or tort (including negligence or otherwise) arising in any way
23.\" out of the use of this software, even if advised of the possibility of
24.\" such damage.
25.\"
26.\" Id: gelf_checksum.3 189 2008-07-20 10:38:08Z jkoshy
27.\"
28.Dd August 29, 2006
29.Os
30.Dt GELF_CHECKSUM 3
31.Sh NAME
32.Nm elf32_checksum ,
33.Nm elf64_checksum ,
34.Nm gelf_checksum
35.Nd return the checksum of an ELF object
36.Sh LIBRARY
37.Lb libelf
38.Sh SYNOPSIS
39.In libelf.h
40.Ft long
41.Fn elf32_checksum "Elf *elf"
42.Ft long
43.Fn elf64_checksum "Elf *elf"
44.In gelf.h
45.Ft long
46.Fn gelf_checksum "Elf *elf"
47.Sh DESCRIPTION
48These functions return a simple checksum of the ELF object described
49by their argument
50.Ar elf .
51The checksum is computed in way that allows its value to remain
52unchanged in presence of modifications to the ELF object by utilities
53like
54.Xr strip 1 .
55.Pp
56Function
57.Fn elf32_checksum
58returns a checksum for an ELF descriptor
59.Ar elf
60of class
61.Dv ELFCLASS32 .
62.Pp
63Function
64.Fn elf64_checksum
65returns a checksum for an ELF descriptor
66.Ar elf
67of class
68.Dv ELFCLASS64 .
69.Pp
70Function
71.Fn gelf_checksum
72provides a class-independent way retrieving the checksum
73for ELF object
74.Ar elf .
75.Sh RETURN VALUES
76These functions return the checksum of the ELF object, or zero in case
77an error was encountered.
78.Sh ERRORS
79These functions may fail with the following errors:
80.Bl -tag -width "[ELF_E_RESOURCE]"
81.It Bq Er ELF_E_ARGUMENT
82Argument
83.Ar elf
84was NULL.
85.It Bq Er ELF_E_ARGUMENT
86Argument
87.Ar elf
88was not a descriptor for an ELF file.
89.It Bq Er ELF_E_ARGUMENT
90The ELF descriptor
91.Ar elf
92was not opened for reading or updating.
93.It Bq Er ELF_E_CLASS
94For functions
95.Fn elf32_checksum
96and
97.Fn elf64_checksum ,
98ELF descriptor
99.Ar elf
100did not match the class of the called function.
101.It Bq Er ELF_E_HEADER
102The ELF object specified by argument
103.Ar elf
104had a malformed executable header.
105.It Bq Er ELF_E_RESOURCE
106An out of memory condition was detected during processing.
107.It Bq Er ELF_E_SECTION
108The ELF object specified by argument
109.Ar elf
110contained a section with a malformed section header.
111.It Bq Er ELF_E_VERSION
112The ELF object was of an unsupported version.
113.El
114.Sh SEE ALSO
115.Xr strip 1 ,
116.Xr elf 3 ,
117.Xr gelf 3
118