diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-07-06 23:58:40 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-07-06 23:58:40 +0000 |
commit | 1b0714c81de473ad3a5ca88bd1c593d93a6ebcdd (patch) | |
tree | 152b48dddb7a07fbe0a534242457277e60ab2199 /libebl | |
parent | 7df97c777c3c8a688774882a1dd7d1701a127560 (diff) | |
download | elfutils-1b0714c81de473ad3a5ca88bd1c593d93a6ebcdd.tar.gz |
Updated support for new hash table format.
Fix handling of discarded COMDAT symbols in ld.
Diffstat (limited to 'libebl')
-rw-r--r-- | libebl/ChangeLog | 6 | ||||
-rw-r--r-- | libebl/ebldynamictagcheck.c | 4 | ||||
-rw-r--r-- | libebl/ebldynamictagname.c | 7 | ||||
-rw-r--r-- | libebl/eblrelativerelocp.c | 64 | ||||
-rw-r--r-- | libebl/eblsectiontypename.c | 4 | ||||
-rw-r--r-- | libebl/eblsysvhashentrysize.c | 63 |
6 files changed, 142 insertions, 6 deletions
diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 23a21535..c4f5c65a 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,9 @@ +2006-07-06 Ulrich Drepper <drepper@redhat.com> + + * ebldynamictagname.c: Add support for DT_GNU_HASH. + * ebldynamictagcheck.c: Likewise. + * eblsectiontypename.c: Add support for SHT_GNU_HASH. + 2006-07-05 Ulrich Drepper <drepper@redhat.com> * Makefile.am (gen_SOURCES): Add eblsysvhashentrysize.c. diff --git a/libebl/ebldynamictagcheck.c b/libebl/ebldynamictagcheck.c index b082e83d..1953a9c0 100644 --- a/libebl/ebldynamictagcheck.c +++ b/libebl/ebldynamictagcheck.c @@ -1,5 +1,5 @@ /* Check dynamic tag. - Copyright (C) 2001, 2002 Red Hat, Inc. + Copyright (C) 2001, 2002, 2006 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <drepper@redhat.com>, 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_CONFLICT && tag <= DT_SYMINFO) + || (tag >= DT_GNU_HASH && 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 12677585..d9aa7df0 100644 --- a/libebl/ebldynamictagname.c +++ b/libebl/ebldynamictagname.c @@ -1,5 +1,5 @@ /* Return dynamic tag name. - Copyright (C) 2001, 2002 Red Hat, Inc. + Copyright (C) 2001, 2002, 2006 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <drepper@redhat.com>, 2001. @@ -96,15 +96,16 @@ ebl_dynamic_tag_name (ebl, tag, buf, len) res = valrntags[tag - DT_GNU_PRELINKED]; } - else if (tag >= DT_GNU_CONFLICT && tag <= DT_SYMINFO) + else if (tag >= DT_GNU_HASH && 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_CONFLICT]; + res = addrrntags[tag - DT_GNU_HASH]; } else if (tag >= DT_RELACOUNT && tag <= DT_VERNEEDNUM) { diff --git a/libebl/eblrelativerelocp.c b/libebl/eblrelativerelocp.c new file mode 100644 index 00000000..8ea97b88 --- /dev/null +++ b/libebl/eblrelativerelocp.c @@ -0,0 +1,64 @@ +/* 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 <drepper@redhat.com>, 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 18cbd767..b62c37b3 100644 --- a/libebl/eblsectiontypename.c +++ b/libebl/eblsectiontypename.c @@ -1,5 +1,5 @@ /* Return section type name. - Copyright (C) 2001, 2002 Red Hat, Inc. + Copyright (C) 2001, 2002, 2006 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper <drepper@redhat.com>, 2001. @@ -116,6 +116,8 @@ 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 new file mode 100644 index 00000000..341979c1 --- /dev/null +++ b/libebl/eblsysvhashentrysize.c @@ -0,0 +1,63 @@ +/* Return OS ABI name + Copyright (C) 2006 Red Hat, Inc. + This file is part of Red Hat elfutils. + Written by Ulrich Drepper <drepper@redhat.com>, 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; +} |