diff options
Diffstat (limited to 'libebl')
| -rw-r--r-- | libebl/ChangeLog | 24 | ||||
| -rw-r--r-- | libebl/Makefile.am | 3 | ||||
| -rw-r--r-- | libebl/ebl-hooks.h | 3 | ||||
| -rw-r--r-- | libebl/ebldynamictagcheck.c | 4 | ||||
| -rw-r--r-- | libebl/ebldynamictagname.c | 7 | ||||
| -rw-r--r-- | libebl/eblnonerelocp.c | 2 | ||||
| -rw-r--r-- | libebl/eblopenbackend.c | 33 | ||||
| -rw-r--r-- | libebl/eblrelativerelocp.c | 64 | ||||
| -rw-r--r-- | libebl/eblsectiontypename.c | 4 | ||||
| -rw-r--r-- | libebl/eblsysvhashentrysize.c | 63 | ||||
| -rw-r--r-- | libebl/libebl.h | 6 | ||||
| -rw-r--r-- | libebl/libeblP.h | 6 |
12 files changed, 14 insertions, 205 deletions
diff --git a/libebl/ChangeLog b/libebl/ChangeLog index c4f5c65a..1d9fcfd5 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,27 +1,3 @@ -2006-07-06 Ulrich Drepper <[email protected]> - - * ebldynamictagname.c: Add support for DT_GNU_HASH. - * ebldynamictagcheck.c: Likewise. - * eblsectiontypename.c: Add support for SHT_GNU_HASH. - -2006-07-05 Ulrich Drepper <[email protected]> - - * Makefile.am (gen_SOURCES): Add eblsysvhashentrysize.c. - * libeblP.h (struct ebl): Add sysvhash_entrysize element. - * eblopenbackend.c (fill_defaults): Initialize sysvhash_entrysize. - - * eblopenbackend.c (openbackend): If possible, fill machine, class, - and data values in from the ELF file. - -2006-07-04 Ulrich Drepper <[email protected]> - - * Makefile.am (gen_SOURCES): Add eblrelativerelocp.c. - * eblrelativerelocp.c: New file. - * ebl-hooks.c: Add relative_reloc_p. - * eblopenbackend.c (default_relative_reloc_p): New function. - (fill_defaults): Hook it up. - * libebl.h: Declare ebl_relative_reloc_p. - 2006-06-12 Ulrich Drepper <[email protected]> * Makefile.am (gen_SOURCES): Add eblnonerelocp.c. diff --git a/libebl/Makefile.am b/libebl/Makefile.am index 278d93e0..98269272 100644 --- a/libebl/Makefile.am +++ b/libebl/Makefile.am @@ -56,8 +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 \ - eblsysvhashentrysize.c + eblregname.c eblnonerelocp.c libebl_a_SOURCES = $(gen_SOURCES) diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h index e4923b2e..4227c24f 100644 --- a/libebl/ebl-hooks.h +++ b/libebl/ebl-hooks.h @@ -119,9 +119,6 @@ bool EBLHOOK(copy_reloc_p) (int); /* Check whether given relocation is a no-op relocation. */ bool EBLHOOK(none_reloc_p) (int); -/* Check whether given relocation is a relative relocation. */ -bool EBLHOOK(relative_reloc_p) (int); - /* Check whether given symbol's value is ok despite normal checks. */ bool EBLHOOK(check_special_symbol) (Elf *, GElf_Ehdr *, const GElf_Sym *, const char *, const GElf_Shdr *); diff --git a/libebl/ebldynamictagcheck.c b/libebl/ebldynamictagcheck.c index 1953a9c0..b082e83d 100644 --- a/libebl/ebldynamictagcheck.c +++ b/libebl/ebldynamictagcheck.c @@ -1,5 +1,5 @@ /* Check dynamic tag. - Copyright (C) 2001, 2002, 2006 Red Hat, Inc. + Copyright (C) 2001, 2002 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <[email protected]>, 2001. @@ -66,7 +66,7 @@ ebl_dynamic_tag_check (ebl, tag) if (!res && ((tag >= 0 && tag < DT_NUM) || (tag >= DT_GNU_PRELINKED && tag <= DT_SYMINENT) - || (tag >= DT_GNU_HASH && tag <= DT_SYMINFO) + || (tag >= DT_GNU_CONFLICT && tag <= DT_SYMINFO) || tag == DT_VERSYM || (tag >= DT_RELACOUNT && tag <= DT_VERNEEDNUM) || tag == DT_AUXILIARY diff --git a/libebl/ebldynamictagname.c b/libebl/ebldynamictagname.c index d9aa7df0..12677585 100644 --- a/libebl/ebldynamictagname.c +++ b/libebl/ebldynamictagname.c @@ -1,5 +1,5 @@ /* Return dynamic tag name. - Copyright (C) 2001, 2002, 2006 Red Hat, Inc. + Copyright (C) 2001, 2002 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <[email protected]>, 2001. @@ -96,16 +96,15 @@ ebl_dynamic_tag_name (ebl, tag, buf, len) res = valrntags[tag - DT_GNU_PRELINKED]; } - else if (tag >= DT_GNU_HASH && tag <= DT_SYMINFO) + else if (tag >= DT_GNU_CONFLICT && tag <= DT_SYMINFO) { static const char *addrrntags[] = { - "GNU_HASH", "TLSDESC_PLT", "TLSDESC_DOT", "GNU_CONFLICT", "GNU_LIBLIST", "CONFIG", "DEPAUDIT", "AUDIT", "PLTPAD", "MOVETAB", "SYMINFO" }; - res = addrrntags[tag - DT_GNU_HASH]; + res = addrrntags[tag - DT_GNU_CONFLICT]; } else if (tag >= DT_RELACOUNT && tag <= DT_VERNEEDNUM) { diff --git a/libebl/eblnonerelocp.c b/libebl/eblnonerelocp.c index 3bca98b1..3d62a0b4 100644 --- a/libebl/eblnonerelocp.c +++ b/libebl/eblnonerelocp.c @@ -1,4 +1,4 @@ -/* Check whether given relocation is a no-op relocation. +/* Check whether given relocation is a copy relocation. Copyright (C) 2006 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <[email protected]>, 2006. diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index 5916e0de..092068cb 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -54,7 +54,7 @@ #include <assert.h> #include <dlfcn.h> #include <error.h> -#include <libelfP.h> +#include <gelf.h> #include <stdlib.h> #include <string.h> #include <stdio.h> @@ -89,7 +89,6 @@ static const struct { "sparc", "elf_sparcv9", "sparc", 5, EM_SPARCV9, 0, 0 }, { "sparc", "elf_sparc", "sparc", 5, EM_SPARC, 0, 0 }, { "sparc", "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS, 0, 0 }, - { "s390", "ebl_s390", "s390", 4, EM_S390, 0, 0 }, { "m32", "elf_m32", "m32", 3, EM_M32, 0, 0 }, { "m68k", "elf_m68k", "m68k", 4, EM_68K, 0, 0 }, @@ -100,6 +99,7 @@ static const struct { "vpp500", "elf_vpp500", "vpp500", 5, EM_VPP500, 0, 0 }, { "sparc", "elf_v8plus", "v8plus", 6, EM_SPARC32PLUS, 0, 0 }, { "i960", "elf_i960", "i960", 4, EM_960, 0, 0 }, + { "s390", "ebl_s390", "s390", 4, EM_S390, 0, 0 }, { "v800", "ebl_v800", "v800", 4, EM_V800, 0, 0 }, { "fr20", "ebl_fr20", "fr20", 4, EM_FR20, 0, 0 }, { "rh32", "ebl_rh32", "rh32", 4, EM_RH32, 0, 0 }, @@ -191,7 +191,6 @@ static bool default_object_note (const char *name, uint32_t type, static bool default_debugscn_p (const char *name); static bool default_copy_reloc_p (int reloc); static bool default_none_reloc_p (int reloc); -static bool default_relative_reloc_p (int reloc); static bool default_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, const char *name, @@ -232,13 +231,11 @@ fill_defaults (Ebl *result) result->debugscn_p = default_debugscn_p; result->copy_reloc_p = default_copy_reloc_p; result->none_reloc_p = default_none_reloc_p; - result->relative_reloc_p = default_relative_reloc_p; 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->destr = default_destr; - result->sysvhash_entrysize = sizeof (Elf32_Word); } @@ -283,28 +280,9 @@ openbackend (elf, emulation, machine) /* Well, we know the emulation name now. */ result->emulation = machines[cnt].emulation; - /* We access some data structures directly. Make sure the 32 and - 64 bit variants are laid out the same. */ - assert (offsetof (Elf32_Ehdr, e_machine) - == offsetof (Elf64_Ehdr, e_machine)); - assert (sizeof (((Elf32_Ehdr *) 0)->e_machine) - == sizeof (((Elf64_Ehdr *) 0)->e_machine)); - assert (offsetof (Elf, state.elf32.ehdr) - == offsetof (Elf, state.elf64.ehdr)); - - /* Prefer taking the information from the ELF file. */ - if (elf == NULL) - { - result->machine = machines[cnt].em; - result->class = machines[cnt].class; - result->data = machines[cnt].data; - } - else - { - result->machine = elf->state.elf32.ehdr->e_machine; - result->class = elf->state.elf32.ehdr->e_ident[EI_CLASS]; - result->data = elf->state.elf32.ehdr->e_ident[EI_DATA]; - } + result->machine = machines[cnt].em; + result->class = machines[cnt].class; + result->data = machines[cnt].data; #ifndef LIBEBL_SUBDIR # define LIBEBL_SUBDIR PACKAGE @@ -630,7 +608,6 @@ default_copy_reloc_p (int reloc __attribute__ ((unused))) return false; } strong_alias (default_copy_reloc_p, default_none_reloc_p) -strong_alias (default_copy_reloc_p, default_relative_reloc_p) static bool default_check_special_symbol (Elf *elf __attribute__ ((unused)), diff --git a/libebl/eblrelativerelocp.c b/libebl/eblrelativerelocp.c deleted file mode 100644 index 8ea97b88..00000000 --- a/libebl/eblrelativerelocp.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Check whether given relocation is a relocation relocation. - Copyright (C) 2006 Red Hat, Inc. - This file is part of Red Hat elfutils. - Written by Ulrich Drepper <[email protected]>, 2006. - - Red Hat elfutils is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by the - Free Software Foundation; version 2 of the License. - - Red Hat elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License along - with Red Hat elfutils; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. - - In addition, as a special exception, Red Hat, Inc. gives You the - additional right to link the code of Red Hat elfutils with code licensed - under any Open Source Initiative certified open source license - (http://www.opensource.org/licenses/index.php) which requires the - distribution of source code with any binary distribution and to - distribute linked combinations of the two. Non-GPL Code permitted under - this exception must only link to the code of Red Hat elfutils through - those well defined interfaces identified in the file named EXCEPTION - found in the source code files (the "Approved Interfaces"). The files - of Non-GPL Code may instantiate templates or use macros or inline - functions from the Approved Interfaces without causing the resulting - work to be covered by the GNU General Public License. Only Red Hat, - Inc. may make changes or additions to the list of Approved Interfaces. - Red Hat's grant of this exception is conditioned upon your not adding - any new exceptions. If you wish to add a new Approved Interface or - exception, please contact Red Hat. You must obey the GNU General Public - License in all respects for all of the Red Hat elfutils code and other - code used in conjunction with Red Hat elfutils except the Non-GPL Code - covered by this exception. If you modify this file, you may extend this - exception to your version of the file, but you are not obligated to do - so. If you do not wish to provide this exception without modification, - you must delete this exception statement from your version and license - this file solely under the GPL without exception. - - Red Hat elfutils is an included package of the Open Invention Network. - An included package of the Open Invention Network is a package for which - Open Invention Network licensees cross-license their patents. No patent - license is granted, either expressly or impliedly, by designation as an - included package. Should you wish to participate in the Open Invention - Network licensing program, please visit www.openinventionnetwork.com - <http://www.openinventionnetwork.com>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -bool -ebl_relative_reloc_p (ebl, reloc) - Ebl *ebl; - int reloc; -{ - return ebl->relative_reloc_p (reloc); -} diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c index b62c37b3..18cbd767 100644 --- a/libebl/eblsectiontypename.c +++ b/libebl/eblsectiontypename.c @@ -1,5 +1,5 @@ /* Return section type name. - Copyright (C) 2001, 2002, 2006 Red Hat, Inc. + Copyright (C) 2001, 2002 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <[email protected]>, 2001. @@ -116,8 +116,6 @@ ebl_section_type_name (ebl, section, buf, len) res = "CHECKSUM"; else if (section == SHT_GNU_LIBLIST) res = "GNU_LIBLIST"; - else if (section == SHT_GNU_HASH) - res = "GNU_HASH"; /* Handle OS-specific section names. */ else { diff --git a/libebl/eblsysvhashentrysize.c b/libebl/eblsysvhashentrysize.c deleted file mode 100644 index 341979c1..00000000 --- a/libebl/eblsysvhashentrysize.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Return OS ABI name - Copyright (C) 2006 Red Hat, Inc. - This file is part of Red Hat elfutils. - Written by Ulrich Drepper <[email protected]>, 2006. - - Red Hat elfutils is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by the - Free Software Foundation; version 2 of the License. - - Red Hat elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License along - with Red Hat elfutils; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA. - - In addition, as a special exception, Red Hat, Inc. gives You the - additional right to link the code of Red Hat elfutils with code licensed - under any Open Source Initiative certified open source license - (http://www.opensource.org/licenses/index.php) which requires the - distribution of source code with any binary distribution and to - distribute linked combinations of the two. Non-GPL Code permitted under - this exception must only link to the code of Red Hat elfutils through - those well defined interfaces identified in the file named EXCEPTION - found in the source code files (the "Approved Interfaces"). The files - of Non-GPL Code may instantiate templates or use macros or inline - functions from the Approved Interfaces without causing the resulting - work to be covered by the GNU General Public License. Only Red Hat, - Inc. may make changes or additions to the list of Approved Interfaces. - Red Hat's grant of this exception is conditioned upon your not adding - any new exceptions. If you wish to add a new Approved Interface or - exception, please contact Red Hat. You must obey the GNU General Public - License in all respects for all of the Red Hat elfutils code and other - code used in conjunction with Red Hat elfutils except the Non-GPL Code - covered by this exception. If you modify this file, you may extend this - exception to your version of the file, but you are not obligated to do - so. If you do not wish to provide this exception without modification, - you must delete this exception statement from your version and license - this file solely under the GPL without exception. - - Red Hat elfutils is an included package of the Open Invention Network. - An included package of the Open Invention Network is a package for which - Open Invention Network licensees cross-license their patents. No patent - license is granted, either expressly or impliedly, by designation as an - included package. Should you wish to participate in the Open Invention - Network licensing program, please visit www.openinventionnetwork.com - <http://www.openinventionnetwork.com>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -int -ebl_sysvhash_entrysize (ebl) - Ebl *ebl; -{ - return ebl->sysvhash_entrysize; -} diff --git a/libebl/libebl.h b/libebl/libebl.h index 6969c550..c27dfd4a 100644 --- a/libebl/libebl.h +++ b/libebl/libebl.h @@ -192,9 +192,6 @@ extern bool ebl_copy_reloc_p (Ebl *ebl, int reloc); /* Check whether given relocation is a no-op relocation. */ extern bool ebl_none_reloc_p (Ebl *ebl, int reloc); -/* Check whether given relocation is a relative relocation. */ -extern bool ebl_relative_reloc_p (Ebl *ebl, int reloc); - /* Check whether section should be stripped. */ extern bool ebl_section_strip_p (Ebl *ebl, const GElf_Ehdr *ehdr, const GElf_Shdr *shdr, const char *name, @@ -203,9 +200,6 @@ extern bool ebl_section_strip_p (Ebl *ebl, const GElf_Ehdr *ehdr, /* Check if backend uses a bss PLT in this file. */ extern bool ebl_bss_plt_p (Ebl *ebl, GElf_Ehdr *ehdr); -/* Return size of entry in SysV-style hash table. */ -extern int ebl_sysvhash_entrysize (Ebl *ebl); - /* Return location expression to find return value given a DW_TAG_subprogram, DW_TAG_subroutine_type, or similar DIE describing function itself (whose DW_AT_type attribute describes its return type). diff --git a/libebl/libeblP.h b/libebl/libeblP.h index 7bb4c376..ff70b679 100644 --- a/libebl/libeblP.h +++ b/libebl/libeblP.h @@ -1,5 +1,5 @@ /* Internal definitions for interface for libebl. - Copyright (C) 2000, 2001, 2002, 2004, 2005, 2006 Red Hat, Inc. + Copyright (C) 2000, 2001, 2002, 2004, 2005 Red Hat, Inc. This file is part of Red Hat elfutils. Red Hat elfutils is free software; you can redistribute it and/or modify @@ -77,9 +77,6 @@ struct ebl # include "ebl-hooks.h" # undef EBLHOOK - /* Size of entry in Sysv-style hash table. */ - int sysvhash_entrysize; - /* Internal data. */ void *dlhandle; }; @@ -90,7 +87,6 @@ typedef const char *(*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *, size_t); /* gettext helper macros. */ -#undef _ #define _(Str) dgettext ("elfutils", Str) #endif /* libeblP.h */ |
