Import new elftoolchain at SVN-r4037

This commit is contained in:
christos 2024-03-03 14:41:47 +00:00
parent 3d5fc26390
commit 4639c15b67
10 changed files with 252 additions and 8 deletions

View File

@ -1,6 +1,6 @@
# Id: Makefile 3097 2014-09-02 22:10:18Z kaiwang27
# Id: Makefile 3594 2018-04-11 18:26:50Z jkoshy
TOP= ${.CURDIR}/..
TOP= ..
LIB= dwarf

View File

@ -1,6 +1,6 @@
# Id: Makefile 2605 2012-10-02 17:52:20Z jkoshy
# Id: Makefile 3925 2021-03-07 12:16:49Z jkoshy
TOP= ${.CURDIR}/..
TOP= ..
LIB= elf
@ -15,6 +15,7 @@ SRCS= elf.c \
elf_getarsym.c \
elf_getbase.c \
elf_getident.c \
elf_getversion.c \
elf_hash.c \
elf_kind.c \
elf_memory.c \
@ -51,6 +52,7 @@ SRCS= elf.c \
libelf_checksum.c \
libelf_data.c \
libelf_ehdr.c \
libelf_elfmachine.c \
libelf_extended.c \
libelf_memory.c \
libelf_open.c \
@ -88,6 +90,7 @@ MAN= elf.3 \
elf_getshnum.3 \
elf_getshdrstrndx.3 \
elf_getshstrndx.3 \
elf_getversion.3 \
elf_hash.3 \
elf_kind.3 \
elf_memory.3 \

View File

@ -0,0 +1,93 @@
.\" $NetBSD: elf_getversion.3,v 1.1.1.1 2024/03/03 14:41:47 christos Exp $
.\"
.\" Copyright (c) 2021 Joseph Koshy. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
.\" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
.\" THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" Id: elf_getversion.3 3956 2022-03-12 12:39:30Z jkoshy
.\"
.Dd March 7, 2021
.Dt ELF_GETVERSION 3
.Os
.Sh NAME
.Nm elf_getversion
.Nd retrieve the operating version for an ELF object
.Sh LIBRARY
.Lb libelf
.Sh SYNOPSIS
.In libelf.h
.Ft unsigned int
.Fn elf_getversion "Elf *elf"
.Sh DESCRIPTION
.Em Important :
The function
.Fn elf_getversion
is an extension to the
.Xr ELF 3
API.
Applications that need to be portable to other implementations of
.Li libelf
should take care not to use this function.
.Pp
The function
.Fn elf_getversion
returns the operating version for the ELF descriptor pointed to by
argument
.Fa elf .
.Pp
This descriptor must have been allocated by a previous call to one of
the functions that return an ELF descriptor, such as
.Xr elf_begin 3 ,
.Xr elf_memory 3 ,
.Xr elf_open 3
and
.Xr elf_openmemory 3 .
The object associated with the descriptor
.Fa elf
should be an ELF object.
.Sh RETURN VALUES
The function returns the operating version for the ELF object if
successful or
.Dv EV_NONE
if an error occurred.
.Sh COMPATIBILITY
This function is an extension to the
.Xr ELF 3
API set.
.Sh ERRORS
This function can fail with the following errors:
.Bl -tag -width "[ELF_E_ARGUMENT]"
.It Bq Er ELF_E_ARGUMENT
The argument
.Fa elf
was
.Dv NULL .
.It Bq Er ELF_E_ARGUMENT
The underlying object referenced by the descriptor
.Fa elf
was not an ELF object.
.El
.Sh SEE ALSO
.Xr elf 3 ,
.Xr elf_begin 3 ,
.Xr elf_errno 3 ,
.Xr elf_version 3

View File

@ -0,0 +1,48 @@
/* $NetBSD: elf_getversion.c,v 1.1.1.1 2024/03/03 14:41:47 christos Exp $ */
/*-
* Copyright (c) 2021 Joseph Koshy
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
#include <libelf.h>
#include "_libelf.h"
ELFTC_VCSID("Id: elf_getversion.c 3977 2022-05-01 06:45:34Z jkoshy");
__RCSID("$NetBSD: elf_getversion.c,v 1.1.1.1 2024/03/03 14:41:47 christos Exp $");
unsigned int
elf_getversion(Elf *e)
{
if (e == NULL || e->e_kind != ELF_K_ELF) {
LIBELF_SET_ERROR(ARGUMENT, 0);
return (EV_NONE);
}
return (e->e_version);
}

View File

@ -0,0 +1,69 @@
/* $NetBSD: libelf_elfmachine.c,v 1.1.1.1 2024/03/03 14:41:47 christos Exp $ */
/*-
* Copyright (c) 2018 Joseph Koshy
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
#include <assert.h>
#include <libelf.h>
#include "_libelf.h"
ELFTC_VCSID("Id: libelf_elfmachine.c 3977 2022-05-01 06:45:34Z jkoshy");
__RCSID("$NetBSD: libelf_elfmachine.c,v 1.1.1.1 2024/03/03 14:41:47 christos Exp $");
/*
* A convenience helper that returns the ELF machine architecture for
* a ELF descriptor.
*/
int
_libelf_elfmachine(Elf *e)
{
Elf32_Ehdr *eh32;
Elf64_Ehdr *eh64;
if (!e)
return EM_NONE;
assert(e->e_kind == ELF_K_ELF);
assert(e->e_class != ELFCLASSNONE);
eh32 = NULL;
eh64 = NULL;
switch (e->e_class) {
case ELFCLASS32:
eh32 = e->e_u.e_elf.e_ehdr.e_ehdr32;
return eh32 ? eh32->e_machine : EM_NONE;
case ELFCLASS64:
eh64 = e->e_u.e_elf.e_ehdr.e_ehdr64;
return eh64 ? eh64->e_machine : EM_NONE;
}
return (EM_NONE);
}

View File

@ -0,0 +1,31 @@
# Enable additional warnings.
CFLAGS+= -Wa,--fatal-warnings
CFLAGS+= -Wall
CFLAGS+= -Wcast-align
CFLAGS+= -Wcast-qual
CFLAGS+= -Wchar-subscripts
CFLAGS+= -Wconversion
CFLAGS+= -Werror
CFLAGS+= -Wextra
CFLAGS+= -Wformat=2
CFLAGS+= -Winline
CFLAGS+= -Wmissing-prototypes
CFLAGS+= -Wnested-externs
CFLAGS+= -Wempty-body
CFLAGS+= -Wformat-y2k
CFLAGS+= -Wformat-zero-length
CFLAGS+= -Wpointer-sign
CFLAGS+= -Wpointer-to-int-cast
CFLAGS+= -Wsign-compare
CFLAGS+= -Wunused-const-variable
CFLAGS+= -Wunused-parameter
CFLAGS+= -Wold-style-definition
CFLAGS+= -Wpointer-arith
CFLAGS+= -Wredundant-decls
CFLAGS+= -Wreturn-type
CFLAGS+= -Wshadow
CFLAGS+= -Wstrict-prototypes
CFLAGS+= -Wstrict-overflow
CFLAGS+= -Wswitch
CFLAGS+= -Wunused-parameter
CFLAGS+= -Wwrite-strings