[PATCH 2/2] backends: Implement aarch64_dynamic_tag_name and aarch64_dynamic_tag_check
Mark Wielaard
mark@klomp.org
Fri Aug 28 22:42:02 GMT 2020
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
backends/ChangeLog | 7 +++++++
backends/aarch64_init.c | 2 ++
backends/aarch64_symbol.c | 26 ++++++++++++++++++++++++++
3 files changed, 35 insertions(+)
diff --git a/backends/ChangeLog b/backends/ChangeLog
index c85dfd2a..ce4c971e 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,10 @@
+2020-08-28 Mark Wielard <mark@klomp.org>
+
+ * aarch64_init.c (aarch64_init): Hook dynamic_tag_name and
+ dynamic_tag_check.
+ * aarch64_symbol.c (aarch64_dynamic_tag_name): New function.
+ (aarch64_dynamic_tag_check): Likewise.
+
2020-06-16 Mark Wielard <mark@klomp.org>
* common-reloc.c (reloc_nametable): Make zero a 1 char array.
diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c
index 66bfae94..bed92954 100644
--- a/backends/aarch64_init.c
+++ b/backends/aarch64_init.c
@@ -50,6 +50,8 @@ aarch64_init (Elf *elf __attribute__ ((unused)),
HOOK (eh, reloc_simple_type);
HOOK (eh, return_value_location);
HOOK (eh, check_special_symbol);
+ HOOK (eh, dynamic_tag_name);
+ HOOK (eh, dynamic_tag_check);
HOOK (eh, data_marker_symbol);
HOOK (eh, abi_cfi);
diff --git a/backends/aarch64_symbol.c b/backends/aarch64_symbol.c
index e30c409d..464a5695 100644
--- a/backends/aarch64_symbol.c
+++ b/backends/aarch64_symbol.c
@@ -106,3 +106,29 @@ aarch64_data_marker_symbol (const GElf_Sym *sym, const char *sname)
&& GELF_ST_TYPE (sym->st_info) == STT_NOTYPE
&& (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0));
}
+
+const char *
+aarch64_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)),
+ size_t len __attribute__ ((unused)))
+{
+ switch (tag)
+ {
+ case DT_AARCH64_BTI_PLT:
+ return "AARCH64_BTI_PLT";
+ case DT_AARCH64_PAC_PLT:
+ return "AARCH64_PAC_PLT";
+ case DT_AARCH64_VARIANT_PCS:
+ return "AARCH64_VARIANT_PCS";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+bool
+aarch64_dynamic_tag_check (int64_t tag)
+{
+ return (tag == DT_AARCH64_BTI_PLT
+ || tag == DT_AARCH64_PAC_PLT
+ || tag == DT_AARCH64_VARIANT_PCS);
+}
--
2.18.4
More information about the Elfutils-devel
mailing list