Module Name: src
Committed By: pooka
Date: Fri Mar 25 14:45:21 UTC 2011
Modified Files:
src/tests/libexec/ld.elf_so: t_dlinfo.c
Log Message:
check that dlopen()d dso shows up in the linkmap
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/libexec/ld.elf_so/t_dlinfo.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/libexec/ld.elf_so/t_dlinfo.c
diff -u src/tests/libexec/ld.elf_so/t_dlinfo.c:1.2 src/tests/libexec/ld.elf_so/t_dlinfo.c:1.3
--- src/tests/libexec/ld.elf_so/t_dlinfo.c:1.2 Wed Nov 3 16:10:23 2010
+++ src/tests/libexec/ld.elf_so/t_dlinfo.c Fri Mar 25 14:45:21 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: t_dlinfo.c,v 1.2 2010/11/03 16:10:23 christos Exp $ */
+/* $NetBSD: t_dlinfo.c,v 1.3 2011/03/25 14:45:21 pooka Exp $ */
/*
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -84,10 +84,35 @@
dlclose(handle);
}
+ATF_TC(rtld_dlinfo_linkmap_dlopen_iter);
+ATF_TC_HEAD(rtld_dlinfo_linkmap_dlopen_iter, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "dlopen'd dso's show up in the list");
+}
+ATF_TC_BODY(rtld_dlinfo_linkmap_dlopen_iter, tc)
+{
+ struct link_map *map;
+ void *handle;
+
+ handle = dlopen("libutil.so", RTLD_LAZY);
+ ATF_CHECK(handle);
+
+ RZ(dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &map));
+
+ for (; map->l_next; map = map->l_next)
+ continue;
+ for (; map; map = map->l_prev)
+ if (strstr(map->l_name, "libutil.so") != NULL)
+ break;
+
+ ATF_REQUIRE_MSG(map, "dlopen()d object not found from linkmap");
+}
+
ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, rtld_dlinfo_linkmap_self);
ATF_TP_ADD_TC(tp, rtld_dlinfo_linkmap_inval);
ATF_TP_ADD_TC(tp, rtld_dlinfo_linkmap_dlopen);
+ ATF_TP_ADD_TC(tp, rtld_dlinfo_linkmap_dlopen_iter);
return 0;
}