summaryrefslogtreecommitdiff
path: root/libebl
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2006-10-10 00:25:21 +0000
committerRoland McGrath <roland@redhat.com>2006-10-10 00:25:21 +0000
commitc373d850ec9ca342f4c71d5e287c8d8bf0723cd6 (patch)
treec8f9ea814866cdfb30ac9506ccddbc8629ebe345 /libebl
parent1dee360aa30fecd20f403f98fd1cb9e543afcca7 (diff)
downloadelfutils-c373d850ec9ca342f4c71d5e287c8d8bf0723cd6.tar.gz
2006-10-09 Roland McGrath <roland@redhat.com>
* ia64_symbol.c (ia64_reloc_simple_type): Treat SECREL types as simple.
Diffstat (limited to 'libebl')
-rw-r--r--libebl/ChangeLog14
-rw-r--r--libebl/Makefile.am2
-rw-r--r--libebl/ebl-hooks.h5
-rw-r--r--libebl/eblopenbackend.c15
-rw-r--r--libebl/eblreginfo.c (renamed from libebl/eblregname.c)10
-rw-r--r--libebl/libebl.h7
6 files changed, 38 insertions, 15 deletions
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index c4f5c65a..33fde08b 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,17 @@
+2006-09-04 Roland McGrath <roland@redhat.com>
+
+ * ebl-hooks.h: Replace register_name hook with register_info.
+ Also yield natural bit width and base type encoding.
+ * eblopenbackend.c (default_register_name): Renamed
+ default_register_info, new args added.
+ (fill_defaults): Update initialization.
+ * eblregname.c: File renamed ...
+ * eblreginfo.c: ... to this.
+ (ebl_register_name): Renamed to ebl_register_info, new args added.
+ * libebl.h: Update decl.
+
+ * Makefile.am (gen_SOURCES): Update list.
+
2006-07-06 Ulrich Drepper <drepper@redhat.com>
* ebldynamictagname.c: Add support for DT_GNU_HASH.
diff --git a/libebl/Makefile.am b/libebl/Makefile.am
index 278d93e0..48042d9f 100644
--- a/libebl/Makefile.am
+++ b/libebl/Makefile.am
@@ -56,7 +56,7 @@ gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \
eblgotpcreloccheck.c eblcopyrelocp.c eblsectionstripp.c \
eblelfclass.c eblelfdata.c eblelfmachine.c \
ebl_check_special_symbol.c eblbsspltp.c eblretval.c \
- eblregname.c eblnonerelocp.c eblrelativerelocp.c \
+ eblreginfo.c eblnonerelocp.c eblrelativerelocp.c \
eblsysvhashentrysize.c
libebl_a_SOURCES = $(gen_SOURCES)
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index e4923b2e..944e6404 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -135,9 +135,10 @@ int EBLHOOK(return_value_location) (Dwarf_Die *functypedie,
const Dwarf_Op **locp);
/* Return register name information. */
-ssize_t EBLHOOK(register_name) (Ebl *ebl,
+ssize_t EBLHOOK(register_info) (Ebl *ebl,
int regno, char *name, size_t namelen,
- const char **prefix, const char **setname);
+ const char **prefix, const char **setname,
+ int *bits, int *type);
/* Destructor for ELF backend handle. */
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
index 5916e0de..dba22ba1 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -55,6 +55,7 @@
#include <dlfcn.h>
#include <error.h>
#include <libelfP.h>
+#include <dwarf.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@@ -199,10 +200,11 @@ static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr,
static bool default_bss_plt_p (Elf *elf, GElf_Ehdr *ehdr);
static int default_return_value_location (Dwarf_Die *functypedie,
const Dwarf_Op **locops);
-static ssize_t default_register_name (Ebl *ebl,
+static ssize_t default_register_info (Ebl *ebl,
int regno, char *name, size_t namelen,
const char **prefix,
- const char **setname);
+ const char **setname,
+ int *bits, int *type);
static void
@@ -236,7 +238,7 @@ fill_defaults (Ebl *result)
result->check_special_symbol = default_check_special_symbol;
result->bss_plt_p = default_bss_plt_p;
result->return_value_location = default_return_value_location;
- result->register_name = default_register_name;
+ result->register_info = default_register_info;
result->destr = default_destr;
result->sysvhash_entrysize = sizeof (Elf32_Word);
}
@@ -657,15 +659,18 @@ default_return_value_location (Dwarf_Die *functypedie __attribute__ ((unused)),
}
static ssize_t
-default_register_name (Ebl *ebl __attribute__ ((unused)),
+default_register_info (Ebl *ebl __attribute__ ((unused)),
int regno, char *name, size_t namelen,
const char **prefix,
- const char **setname)
+ const char **setname,
+ int *bits, int *type)
{
if (name == NULL)
return 0;
*setname = "???";
*prefix = "";
+ *bits = -1;
+ *type = DW_ATE_void;
return snprintf (name, namelen, "reg%d", regno);
}
diff --git a/libebl/eblregname.c b/libebl/eblreginfo.c
index 212e375f..8fc4abfa 100644
--- a/libebl/eblregname.c
+++ b/libebl/eblreginfo.c
@@ -1,5 +1,5 @@
/* Return register name information.
- Copyright (C) 2005 Red Hat, Inc.
+ Copyright (C) 2005, 2006 Red Hat, Inc.
This file is part of Red Hat elfutils.
Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -56,14 +56,16 @@
ssize_t
-ebl_register_name (ebl, regno, name, namelen, prefix, setname)
+ebl_register_info (ebl, regno, name, namelen, prefix, setname, bits, type)
Ebl *ebl;
int regno;
char *name;
size_t namelen;
const char **prefix;
const char **setname;
+ int *bits;
+ int *type;
{
- return ebl == NULL ? -1 : ebl->register_name (ebl, regno, name, namelen,
- prefix, setname);
+ return ebl == NULL ? -1 : ebl->register_info (ebl, regno, name, namelen,
+ prefix, setname, bits, type);
}
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 6969c550..3375525d 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -219,7 +219,7 @@ extern int ebl_return_value_location (Ebl *ebl,
Dwarf_Die *functypedie,
const Dwarf_Op **locops);
-/* Fill in register name information given DWARF register numbers.
+/* Fill in register information given DWARF register numbers.
If NAME is null, return the maximum REGNO + 1 that has a name.
Otherwise, store in NAME the name for DWARF register number REGNO
and return the number of bytes written (including '\0' terminator).
@@ -229,9 +229,10 @@ extern int ebl_return_value_location (Ebl *ebl,
fit for "%s registers" title display, and *PREFIX to the string
that precedes NAME in canonical assembler syntax (e.g. "%" or "$").
The NAME string contains identifier characters only (maybe just digits). */
-extern ssize_t ebl_register_name (Ebl *ebl,
+extern ssize_t ebl_register_info (Ebl *ebl,
int regno, char *name, size_t namelen,
- const char **prefix, const char **setname);
+ const char **prefix, const char **setname,
+ int *bits, int *type);
/* ELF string table handling. */