Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src PR/45015: ld.elf_so: support ELF symbol versioning



details:   https://anonhg.NetBSD.org/src/rev/bb18085e8ab2
branches:  trunk
changeset: 766520:bb18085e8ab2
user:      nonaka <nonaka%NetBSD.org@localhost>
date:      Sat Jun 25 05:45:10 2011 +0000

description:
PR/45015: ld.elf_so: support ELF symbol versioning
Applied latest patch.

diffstat:

 distrib/sets/lists/comp/mi                                          |    5 +-
 distrib/sets/lists/tests/mi                                         |   36 +-
 distrib/sets/lists/tests/shl.mi                                     |   14 +-
 etc/mtree/NetBSD.dist.tests                                         |    9 +-
 include/dlfcn.h                                                     |    4 +-
 lib/libc/dlfcn/dlfcn_elf.c                                          |   15 +-
 libexec/ld.elf_so/Makefile                                          |    4 +-
 libexec/ld.elf_so/headers.c                                         |   27 +-
 libexec/ld.elf_so/reloc.c                                           |   12 +-
 libexec/ld.elf_so/rtld.c                                            |   80 +-
 libexec/ld.elf_so/rtld.h                                            |   60 +-
 libexec/ld.elf_so/symbol.c                                          |  169 ++++-
 libexec/ld.elf_so/symver.c                                          |  317 ++++++++++
 share/man/man3/Makefile                                             |    4 +-
 share/man/man3/dlfcn.3                                              |   18 +-
 sys/sys/exec_elf.h                                                  |   28 +-
 tests/libexec/ld.elf_so/Makefile                                    |   27 +-
 tests/libexec/ld.elf_so/data/Makefile                               |   28 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v1-v0         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v2-v0         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v2-v1         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v0         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v1         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v2         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v1-v1         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v1-v2         |    1 +
 tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v2-v2         |    1 +
 tests/libexec/ld.elf_so/h_dl_symver.c                               |   42 +
 tests/libexec/ld.elf_so/helper_symver_dso0/Makefile                 |   21 +
 tests/libexec/ld.elf_so/helper_symver_dso0/h_helper_symver_dso0.c   |   39 +
 tests/libexec/ld.elf_so/helper_symver_dso1/Makefile                 |   23 +
 tests/libexec/ld.elf_so/helper_symver_dso1/h_helper_symver_dso1.c   |   41 +
 tests/libexec/ld.elf_so/helper_symver_dso1/h_helper_symver_dso1.map |    5 +
 tests/libexec/ld.elf_so/helper_symver_dso2/Makefile                 |   23 +
 tests/libexec/ld.elf_so/helper_symver_dso2/h_helper_symver_dso2.c   |   59 +
 tests/libexec/ld.elf_so/helper_symver_dso2/h_helper_symver_dso2.map |   13 +
 tests/libexec/ld.elf_so/t_dl_symver.sh                              |   55 +
 tests/libexec/ld.elf_so/t_dlvsym.c                                  |  203 ++++++
 38 files changed, 1300 insertions(+), 90 deletions(-)

diffs (truncated from 2134 to 300 lines):

diff -r 84eee28a1a66 -r bb18085e8ab2 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Sat Jun 25 02:26:53 2011 +0000
+++ b/distrib/sets/lists/comp/mi        Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: mi,v 1.1630 2011/06/14 15:27:46 jmmv Exp $
+#      $NetBSD: mi,v 1.1631 2011/06/25 05:45:11 nonaka Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -5814,6 +5814,7 @@
 ./usr/share/man/cat3/dlfcn.0                   comp-c-catman           .cat
 ./usr/share/man/cat3/dlopen.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/dlsym.0                   comp-c-catman           .cat
+./usr/share/man/cat3/dlvsym.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/dm.0                      comp-c-catman           .cat
 ./usr/share/man/cat3/dn_comp.0                 comp-c-catman           .cat
 ./usr/share/man/cat3/dn_expand.0               comp-c-catman           .cat
@@ -11908,6 +11909,7 @@
 ./usr/share/man/html3/dlfcn.html               comp-c-htmlman          html
 ./usr/share/man/html3/dlopen.html              comp-c-htmlman          html
 ./usr/share/man/html3/dlsym.html               comp-c-htmlman          html
+./usr/share/man/html3/dlvsym.html              comp-c-htmlman          html
 ./usr/share/man/html3/dm.html                  comp-c-htmlman          html
 ./usr/share/man/html3/dn_comp.html             comp-c-htmlman          html
 ./usr/share/man/html3/dn_expand.html           comp-c-htmlman          html
@@ -17911,6 +17913,7 @@
 ./usr/share/man/man3/dlfcn.3                   comp-c-man              .man
 ./usr/share/man/man3/dlopen.3                  comp-c-man              .man
 ./usr/share/man/man3/dlsym.3                   comp-c-man              .man
+./usr/share/man/man3/dlvsym.3                  comp-c-man              .man
 ./usr/share/man/man3/dm.3                      comp-c-man              .man
 ./usr/share/man/man3/dn_comp.3                 comp-c-man              .man
 ./usr/share/man/man3/dn_expand.3               comp-c-man              .man
diff -r 84eee28a1a66 -r bb18085e8ab2 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi       Sat Jun 25 02:26:53 2011 +0000
+++ b/distrib/sets/lists/tests/mi       Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.354 2011/06/20 18:03:41 jruoho Exp $
+# $NetBSD: mi,v 1.355 2011/06/25 05:45:13 nonaka Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -559,10 +559,17 @@
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so                                tests-libexec-debug
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_df_1_noopen1.debug   tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_df_1_noopen2.debug   tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_dl_symver_v0.debug   tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_dl_symver_v1.debug   tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_dl_symver_v2.debug   tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso0   tests-libexec-debug
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso1   tests-libexec-debug
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso2   tests-libexec-debug
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_locking.debug        tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/t_dlerror-cleared.debug        tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/t_dlerror-false.debug  tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/t_dlinfo.debug         tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/t_dlvsym.debug         tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/modules                                  tests-sys-debug
 ./usr/libdata/debug/usr/tests/modules/t_builtin.debug                  tests-sys-debug         debug,atf
 ./usr/libdata/debug/usr/tests/modules/t_modctl.debug                   tests-sys-debug         debug,atf
@@ -2224,13 +2231,40 @@
 ./usr/tests/libexec/Atffile                    tests-lib-tests         atf
 ./usr/tests/libexec/ld.elf_so                  tests-libexec-tests
 ./usr/tests/libexec/ld.elf_so/Atffile          tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data             tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v0-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v0-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v0-v2              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v1-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v1-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v1-v2              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v2-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v2-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stderr.v2-v2              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v0-v2              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v1-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v1-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v1-v2              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v2-v0              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v2-v1              tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/data/symver-output-ref-stdout.v2-v2              tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/h_df_1_noopen1   tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/h_df_1_noopen2   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_dl_symver_v0   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_dl_symver_v1   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_dl_symver_v2   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso0     tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso1     tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2     tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/h_locking                tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/t_df_1_noopen    tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/t_dl_symver      tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/t_dlerror-cleared        tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/t_dlerror-false  tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/t_dlinfo         tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/t_dlvsym         tests-libexec-tests     atf
 ./usr/tests/modules                            tests-sys-tests
 ./usr/tests/net                                        tests-net-tests
 ./usr/tests/net/Atffile                                tests-net-tests         atf
diff -r 84eee28a1a66 -r bb18085e8ab2 distrib/sets/lists/tests/shl.mi
--- a/distrib/sets/lists/tests/shl.mi   Sat Jun 25 02:26:53 2011 +0000
+++ b/distrib/sets/lists/tests/shl.mi   Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.5 2011/05/30 02:10:26 christos Exp $
+# $NetBSD: shl.mi,v 1.6 2011/06/25 05:45:14 nonaka Exp $
 #
 ./usr/libdata/debug/usr/tests/lib/csu/libh_initfini3_dso.so.1.debug    tests-lib-debug         debug,atf
 ./usr/libdata/debug/usr/tests/lib/libc/tls/libh_tls_dlopen.so.1.debug  tests-lib-debug         debug,atf
@@ -18,8 +18,20 @@
 ./usr/tests/lib/libc/tls/t_tls_dynamic         tests-lib-tests         atf
 ./usr/tests/util/id/libfake.so.0               tests-obsolete          obsolete
 ./usr/tests/util/id/libfake.so.0.0             tests-obsolete          obsolete
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso0/libh_helper_symver_dso.so.1.debug tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso1/libh_helper_symver_dso.so.1.debug tests-libexec-debug     debug,atf
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso2/libh_helper_symver_dso.so.1.debug tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/libh_helper_dso1.so.1.debug    tests-libexec-debug     debug,atf
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so/libh_helper_dso2.so.1.debug    tests-libexec-debug     debug,atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso0/libh_helper_symver_dso_g.a  -unknown-       atf,debuglib
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso0/libh_helper_symver_dso.so   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso0/libh_helper_symver_dso.so.1 tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso1/libh_helper_symver_dso_g.a  -unknown-       atf,debuglib
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso1/libh_helper_symver_dso.so   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso1/libh_helper_symver_dso.so.1 tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2/libh_helper_symver_dso_g.a  -unknown-       atf,debuglib
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2/libh_helper_symver_dso.so   tests-libexec-tests     atf
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2/libh_helper_symver_dso.so.1 tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/libh_helper_dso1_g.a     -unknown-       atf,debuglib
 ./usr/tests/libexec/ld.elf_so/libh_helper_dso1.so      tests-libexec-tests     atf
 ./usr/tests/libexec/ld.elf_so/libh_helper_dso1.so.1    tests-libexec-tests     atf
diff -r 84eee28a1a66 -r bb18085e8ab2 etc/mtree/NetBSD.dist.tests
--- a/etc/mtree/NetBSD.dist.tests       Sat Jun 25 02:26:53 2011 +0000
+++ b/etc/mtree/NetBSD.dist.tests       Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: NetBSD.dist.tests,v 1.49 2011/05/30 18:14:11 njoly Exp $
+#      $NetBSD: NetBSD.dist.tests,v 1.50 2011/06/25 05:45:12 nonaka Exp $
 
 ./usr/libdata/debug/usr/tests
 ./usr/libdata/debug/usr/tests/atf
@@ -88,6 +88,9 @@
 ./usr/libdata/debug/usr/tests/lib/libutil
 ./usr/libdata/debug/usr/tests/libexec
 ./usr/libdata/debug/usr/tests/libexec/ld.elf_so
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso0
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso1
+./usr/libdata/debug/usr/tests/libexec/ld.elf_so/h_helper_symver_dso2
 ./usr/libdata/debug/usr/tests/modules
 ./usr/libdata/debug/usr/tests/net
 ./usr/libdata/debug/usr/tests/net/bpf
@@ -211,6 +214,10 @@
 ./usr/tests/lib/libutil
 ./usr/tests/libexec
 ./usr/tests/libexec/ld.elf_so
+./usr/tests/libexec/ld.elf_so/data
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso0
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso1
+./usr/tests/libexec/ld.elf_so/h_helper_symver_dso2
 ./usr/tests/modules
 ./usr/tests/net
 ./usr/tests/net/bpf
diff -r 84eee28a1a66 -r bb18085e8ab2 include/dlfcn.h
--- a/include/dlfcn.h   Sat Jun 25 02:26:53 2011 +0000
+++ b/include/dlfcn.h   Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dlfcn.h,v 1.22 2010/12/24 12:41:42 skrll Exp $ */
+/*     $NetBSD: dlfcn.h,v 1.23 2011/06/25 05:45:11 nonaka Exp $        */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -55,6 +55,8 @@
 int    dladdr(const void * __restrict, Dl_info * __restrict);
 int    dlctl(void *, int, void *);
 int    dlinfo(void *, int, void *);
+void   *dlvsym(void * __restrict, const char * __restrict,
+           const char * __restrict);
 #endif
 __aconst char *dlerror(void);
 __END_DECLS
diff -r 84eee28a1a66 -r bb18085e8ab2 lib/libc/dlfcn/dlfcn_elf.c
--- a/lib/libc/dlfcn/dlfcn_elf.c        Sat Jun 25 02:26:53 2011 +0000
+++ b/lib/libc/dlfcn/dlfcn_elf.c        Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dlfcn_elf.c,v 1.9 2011/03/12 21:55:09 joerg Exp $      */
+/*     $NetBSD: dlfcn_elf.c,v 1.10 2011/06/25 05:45:11 nonaka Exp $    */
 
 /*
  * Copyright (c) 2000 Takuya SHIOZAKI
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: dlfcn_elf.c,v 1.9 2011/03/12 21:55:09 joerg Exp $");
+__RCSID("$NetBSD: dlfcn_elf.c,v 1.10 2011/06/25 05:45:11 nonaka Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -47,6 +47,7 @@
 #define        dlopen          ___dlopen
 #define        dlclose         ___dlclose
 #define        dlsym           ___dlsym
+#define        dlvsym          ___dlvsym
 #define        dlerror         ___dlerror
 #define        dladdr          ___dladdr
 #define        dlinfo          ___dlinfo
@@ -59,6 +60,7 @@
 __weak_alias(dlopen,___dlopen)
 __weak_alias(dlclose,___dlclose)
 __weak_alias(dlsym,___dlsym)
+__weak_alias(dlvsym,___dlvsym)
 __weak_alias(dlerror,___dlerror)
 __weak_alias(dladdr,___dladdr)
 __weak_alias(dlinfo,___dlinfo)
@@ -67,6 +69,7 @@
 __weak_alias(__dlopen,___dlopen)
 __weak_alias(__dlclose,___dlclose)
 __weak_alias(__dlsym,___dlsym)
+__weak_alias(__dlvsym,___dlvsym)
 __weak_alias(__dlerror,___dlerror)
 __weak_alias(__dladdr,___dladdr)
 __weak_alias(__dlinfo,___dlinfo)
@@ -110,6 +113,14 @@
 }
 
 /*ARGSUSED*/
+void *
+dlvsym(void *handle, const char *name, const char *version)
+{
+
+       return NULL;
+}
+
+/*ARGSUSED*/
 __aconst char *
 dlerror()
 {
diff -r 84eee28a1a66 -r bb18085e8ab2 libexec/ld.elf_so/Makefile
--- a/libexec/ld.elf_so/Makefile        Sat Jun 25 02:26:53 2011 +0000
+++ b/libexec/ld.elf_so/Makefile        Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.107 2011/06/05 23:08:17 christos Exp $
+#      $NetBSD: Makefile,v 1.108 2011/06/25 05:45:12 nonaka Exp $
 #
 # NOTE: when changing ld.so, ensure that ldd still compiles.
 #
@@ -63,7 +63,7 @@
 
 SRCS+=         rtld.c reloc.c symbol.c xmalloc.c xprintf.c debug.c \
                map_object.c load.c search.c headers.c paths.c expand.c \
-               tls.c
+               tls.c symver.c
 
 .if ${USE_FORT} == "yes"
 .PATH.c: ${NETBSDSRCDIR}/lib/libc/misc
diff -r 84eee28a1a66 -r bb18085e8ab2 libexec/ld.elf_so/headers.c
--- a/libexec/ld.elf_so/headers.c       Sat Jun 25 02:26:53 2011 +0000
+++ b/libexec/ld.elf_so/headers.c       Sat Jun 25 05:45:10 2011 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: headers.c,v 1.40 2011/03/09 23:10:07 joerg Exp $        */
+/*     $NetBSD: headers.c,v 1.41 2011/06/25 05:45:12 nonaka Exp $       */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -40,7 +40,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: headers.c,v 1.40 2011/03/09 23:10:07 joerg Exp $");
+__RCSID("$NetBSD: headers.c,v 1.41 2011/06/25 05:45:12 nonaka Exp $");
 #endif /* not lint */
 
 #include <err.h>
@@ -136,6 +136,29 @@
                        obj->strsize = dynp->d_un.d_val;
                        break;
 
+               case DT_VERNEED:
+                       obj->verneed = (const Elf_Verneed *)
+                           (obj->relocbase + dynp->d_un.d_ptr);
+                       break;
+
+               case DT_VERNEEDNUM:
+                       obj->verneednum = dynp->d_un.d_val;
+                       break;
+
+               case DT_VERDEF:
+                       obj->verdef = (const Elf_Verdef *)
+                           (obj->relocbase + dynp->d_un.d_ptr);
+                       break;
+
+               case DT_VERDEFNUM:
+                       obj->verdefnum = dynp->d_un.d_val;
+                       break;
+
+               case DT_VERSYM:
+                       obj->versyms = (const Elf_Versym *)
+                           (obj->relocbase + dynp->d_un.d_ptr);
+                       break;
+
                case DT_HASH:



Home | Main Index | Thread Index | Old Index