diff options
author | Roland McGrath <roland@redhat.com> | 2006-10-10 00:25:21 +0000 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 2006-10-10 00:25:21 +0000 |
commit | c373d850ec9ca342f4c71d5e287c8d8bf0723cd6 (patch) | |
tree | c8f9ea814866cdfb30ac9506ccddbc8629ebe345 /libebl | |
parent | 1dee360aa30fecd20f403f98fd1cb9e543afcca7 (diff) | |
download | elfutils-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/ChangeLog | 14 | ||||
-rw-r--r-- | libebl/Makefile.am | 2 | ||||
-rw-r--r-- | libebl/ebl-hooks.h | 5 | ||||
-rw-r--r-- | libebl/eblopenbackend.c | 15 | ||||
-rw-r--r-- | libebl/eblreginfo.c (renamed from libebl/eblregname.c) | 10 | ||||
-rw-r--r-- | libebl/libebl.h | 7 |
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. */ |