summaryrefslogtreecommitdiffstats
path: root/backends/arm_symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'backends/arm_symbol.c')
-rw-r--r--backends/arm_symbol.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/backends/arm_symbol.c b/backends/arm_symbol.c
index da4a50a7..3edda724 100644
--- a/backends/arm_symbol.c
+++ b/backends/arm_symbol.c
@@ -1,5 +1,5 @@
/* Arm specific symbolic name handling.
- Copyright (C) 2002-2009, 2014, 2015 Red Hat, Inc.
+ Copyright (C) 2002-2009, 2014, 2015, 2017 Red Hat, Inc.
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -32,6 +32,7 @@
#include <elf.h>
#include <stddef.h>
+#include <string.h>
#define BACKEND arm_
#include "libebl_CPU.h"
@@ -142,3 +143,15 @@ arm_symbol_type_name (int type,
}
return NULL;
}
+
+/* A data mapping symbol is a symbol with "$d" name or "$d.<any...>" name,
+ * STT_NOTYPE, STB_LOCAL and st_size of zero. The indicate the stat of a
+ * sequence of data items. */
+bool
+arm_data_marker_symbol (const GElf_Sym *sym, const char *sname)
+{
+ return (sym != NULL && sname != NULL
+ && sym->st_size == 0 && GELF_ST_BIND (sym->st_info) == STB_LOCAL
+ && GELF_ST_TYPE (sym->st_info) == STT_NOTYPE
+ && (strcmp (sname, "$d") == 0 || strncmp (sname, "$d.", 3) == 0));
+}