diff options
author | Jerome Forissier <jerome@forissier.org> | 2020-07-21 10:55:07 +0200 |
---|---|---|
committer | Jérôme Forissier <jerome@forissier.org> | 2020-08-06 11:10:44 +0200 |
commit | cc4de916e62aeac51d87d4d2de84e749a94cfc86 (patch) | |
tree | 4627500f29b244401bb008cf310c6777d9aaa2fe | |
parent | 9f84b6f28f1db8cbae6551ca709a1cd1efed98fd (diff) |
libutee: add <elf.h>
Preparing for C++ support in TAs.
Adds header file <elf.h> in addition to <elf32.h> and <elf64.h>. This
file defines the various Elf types depending on the current
architecture. In other words: when building for Aarch32 Elf_* is defined
as Elf32_*, but when building for Aarch64 it is defined as Elf64_*. This
will be useful for programs which need to examine their own structure
via dl_iterate_phdr() (which will come in a later commit).
Note: <elf.h> serves the same purpose as FreeBSD's <sys/elf.h> but does
it differently; the file is not imported from FreeBSD.
Signed-off-by: Jerome Forissier <jerome@forissier.org>
Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r-- | lib/libutee/include/elf.h | 70 | ||||
-rw-r--r-- | scripts/checkpatch_inc.sh | 1 |
2 files changed, 71 insertions, 0 deletions
diff --git a/lib/libutee/include/elf.h b/lib/libutee/include/elf.h new file mode 100644 index 00000000..752ce3b0 --- /dev/null +++ b/lib/libutee/include/elf.h @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (c) 2020, Huawei Technologies Co., Ltd + */ +#ifndef _ELF_H_ +#define _ELF_H_ + +#if defined(ARM32) + +#include <elf32.h> + +typedef Elf32_Addr Elf_Addr; +typedef Elf32_Half Elf_Half; +typedef Elf32_Off Elf_Off; +typedef Elf32_Sword Elf_Sword; +typedef Elf32_Word Elf_Word; +typedef Elf32_Lword Elf_Lword; +typedef Elf32_Hashelt Elf_Hashelt; +typedef Elf32_Size Elf_Size; +typedef Elf32_Ssize Elf_Ssize; +typedef Elf32_Ehdr Elf_Ehdr; +typedef Elf32_Shdr Elf_Shdr; +typedef Elf32_Phdr Elf_Phdr; +typedef Elf32_Dyn Elf_Dyn; +typedef Elf32_Rel Elf_Rel; +typedef Elf32_Rela Elf_Rela; +typedef Elf32_Move Elf_Move; +typedef Elf32_Cap Elf_Cap; +typedef Elf32_Sym Elf_Sym; +typedef Elf32_Verdef Elf_Verdef; +typedef Elf32_Verdaux Elf_Verdaux; +typedef Elf32_Verneed Elf_Verneed; +typedef Elf32_Vernaux Elf_Vernaux; +typedef Elf32_Syminfo Elf_Syminfo; + +#elif defined(ARM64) + +#include <elf64.h> + +typedef Elf64_Addr Elf_Addr; +typedef Elf64_Half Elf_Half; +typedef Elf64_Off Elf_Off; +typedef Elf64_Sword Elf_Sword; +typedef Elf64_Sxword Elf_Sxword; +typedef Elf64_Word Elf_Word; +typedef Elf64_Lword Elf_Lword; +typedef Elf64_Xword Elf_Xword; +typedef Elf64_Hashelt Elf_Hashelt; +typedef Elf64_Size Elf_Size; +typedef Elf64_Ssize Elf_Ssize; +typedef Elf64_Ehdr Elf_Ehdr; +typedef Elf64_Shdr Elf_Shdr; +typedef Elf64_Phdr Elf_Phdr; +typedef Elf64_Dyn Elf_Dyn; +typedef Elf64_Rel Elf_Rel; +typedef Elf64_Rela Elf_Rela; +typedef Elf64_Move Elf_Move; +typedef Elf64_Cap Elf_Cap; +typedef Elf64_Sym Elf_Sym; +typedef Elf64_Verdef Elf_Verdef; +typedef Elf64_Verdaux Elf_Verdaux; +typedef Elf64_Verneed Elf_Verneed; +typedef Elf64_Vernaux Elf_Vernaux; +typedef Elf64_Syminfo Elf_Syminfo; + +#else +#error Unknown architecture +#endif + +#endif /* _ELF_H_ */ diff --git a/scripts/checkpatch_inc.sh b/scripts/checkpatch_inc.sh index 5ec711f4..e5b8f8fa 100644 --- a/scripts/checkpatch_inc.sh +++ b/scripts/checkpatch_inc.sh @@ -6,6 +6,7 @@ CHECKPATCH_IGNORE=$(echo \ core/include/gen-asm-defines.h \ core/lib/lib{fdt,tomcrypt} core/lib/zlib \ lib/libutils lib/libmbedtls \ + lib/libutee/include/elf.h \ core/arch/arm/include/arm{32,64}.h \ core/arch/arm/plat-ti/api_monitor_index_a{9,15}.h \ core/arch/arm/dts) |