aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Forissier <jerome@forissier.org>2020-07-21 10:55:07 +0200
committerJérôme Forissier <jerome@forissier.org>2020-08-06 11:10:44 +0200
commitcc4de916e62aeac51d87d4d2de84e749a94cfc86 (patch)
tree4627500f29b244401bb008cf310c6777d9aaa2fe
parent9f84b6f28f1db8cbae6551ca709a1cd1efed98fd (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.h70
-rw-r--r--scripts/checkpatch_inc.sh1
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)