aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ar/Makefile4
-rw-r--r--test/ar/plugin/Makefile4
-rw-r--r--test/ar/plugin/Makefile.ardiff4
-rw-r--r--test/ar/plugin/ardiff.c13
-rw-r--r--test/ar/plugin/teraser.c10
-rw-r--r--test/elfcopy/Makefile4
-rw-r--r--test/elfcopy/plugin/Makefile4
-rw-r--r--test/elfcopy/plugin/Makefile.ardiff4
-rw-r--r--test/elfcopy/plugin/ardiff.c13
-rw-r--r--test/elfcopy/plugin/teraser.c10
-rw-r--r--test/elfcopy/tc/strip-empty-1/in/strip-empty-1.in.shar32
-rw-r--r--test/elfcopy/tc/strip-empty-1/out/strip-empty-1.out.shar22
-rw-r--r--test/elfcopy/tc/strip-empty-1/strip-empty-1.err0
-rw-r--r--test/elfcopy/tc/strip-empty-1/strip-empty-1.eval1
-rw-r--r--test/elfcopy/tc/strip-empty-1/strip-empty-1.out0
-rwxr-xr-xtest/elfcopy/tc/strip-empty-1/strip-empty-1.sh6
-rw-r--r--test/elfdump/Makefile20
-rw-r--r--test/libdwarf/Makefile34
-rw-r--r--test/libdwarf/ts/Makefile6
-rw-r--r--test/libdwarf/ts/Makefile.tset12
-rw-r--r--test/libdwarf/ts/README14
-rw-r--r--test/libdwarf/ts/common/die_traverse2.c120
-rw-r--r--test/libdwarf/ts/common/driver.h11
-rw-r--r--test/libdwarf/ts/common/object/ld_symver.o-64-g1.gzbin0 -> 36785 bytes
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/Makefile4
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gzbin750 -> 750 bytes
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gzbin753 -> 753 bytes
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c7
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gzbin5465 -> 5465 bytes
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gzbin5475 -> 5475 bytes
-rw-r--r--test/libdwarf/ts/dwarf_attrlist/ld_symver.o-64-g1.xml.gzbin0 -> 3754 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/Makefile4
-rw-r--r--test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gzbin1461 -> 1467 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gzbin1459 -> 1465 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gzbin1458 -> 1465 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c26
-rw-r--r--test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gzbin12687 -> 12695 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gzbin12685 -> 12692 bytes
-rw-r--r--test/libdwarf/ts/dwarf_die_query/ld_symver.o-64-g1.xml.gzbin0 -> 8494 bytes
-rw-r--r--test/libdwarf/ts/dwarf_form/Makefile4
-rw-r--r--test/libdwarf/ts/dwarf_form/dt32-g1.xml.gzbin8114 -> 9400 bytes
-rw-r--r--test/libdwarf/ts/dwarf_form/dt64-g1.xml.gzbin8140 -> 9406 bytes
-rw-r--r--test/libdwarf/ts/dwarf_form/dwarf_form.c20
-rw-r--r--test/libdwarf/ts/dwarf_form/ec32-g1.xml.gzbin89574 -> 101798 bytes
-rw-r--r--test/libdwarf/ts/dwarf_form/ec64-g1.xml.gzbin89610 -> 101875 bytes
-rw-r--r--test/libdwarf/ts/dwarf_form/ld_symver.o-64-g1.xml.gzbin0 -> 64812 bytes
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/Makefile4
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gzbin244 -> 250 bytes
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gzbin246 -> 252 bytes
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c68
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gzbin352 -> 372 bytes
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gzbin358 -> 378 bytes
-rw-r--r--test/libdwarf/ts/dwarf_next_cu_header/ld_symver.o-64-g1.xml.gzbin0 -> 1970 bytes
-rw-r--r--test/libelf/Makefile36
-rw-r--r--test/libelf/tset/Makefile6
-rw-r--r--test/libelf/tset/elf_update/update.m486
-rw-r--r--test/libelftc/Makefile36
-rw-r--r--test/libelftc/tset/Makefile5
-rw-r--r--test/libelftc/tset/Makefile.tset9
-rw-r--r--test/libelftc/tset/elftc_string_table/string_table.m44
-rw-r--r--test/nm/Makefile36
-rw-r--r--test/nm/ts/Makefile6
-rw-r--r--test/tet/Makefile4
63 files changed, 484 insertions, 229 deletions
diff --git a/test/ar/Makefile b/test/ar/Makefile
index a62db09d9320f..d767a3934430f 100644
--- a/test/ar/Makefile
+++ b/test/ar/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile 2141 2011-11-10 15:03:40Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
TOP= ../..
AR= ${TOP}/ar/ar
@@ -17,4 +17,4 @@ clobber: clean
SUBDIR= plugin
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/ar/plugin/Makefile b/test/ar/plugin/Makefile
index 58e00fd1b2def..36e33a35687ce 100644
--- a/test/ar/plugin/Makefile
+++ b/test/ar/plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile 2080 2011-10-27 04:23:24Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
PLUGINS= ardiff teraser
@@ -9,7 +9,7 @@ ${PLUGINS}:
${MAKE} -f Makefile.${plugin}
.endfor
-clean depend:
+clean cleandepend depend:
.for plugin in ${PLUGINS}
${MAKE} -f Makefile.${plugin} ${.TARGET}
.endfor
diff --git a/test/ar/plugin/Makefile.ardiff b/test/ar/plugin/Makefile.ardiff
index 1558cfe6065cd..ec702c2ae5858 100644
--- a/test/ar/plugin/Makefile.ardiff
+++ b/test/ar/plugin/Makefile.ardiff
@@ -1,9 +1,7 @@
-# $Id: Makefile.ardiff 2096 2011-11-01 04:42:04Z jkoshy $
+# $Id: Makefile.ardiff 3120 2014-12-21 05:45:51Z kaiwang27 $
TOP= ../../..
-.include "${TOP}/mk/elftoolchain.os.mk"
-
PROG= ardiff
NOMAN= noman
diff --git a/test/ar/plugin/ardiff.c b/test/ar/plugin/ardiff.c
index e54f6a9f6cdc0..907d1ea80da9f 100644
--- a/test/ar/plugin/ardiff.c
+++ b/test/ar/plugin/ardiff.c
@@ -12,7 +12,7 @@
* By default, it compares nothing and consider the test "not ok"
* iff it encounters errors while reading archive.
*
- * $Id: ardiff.c 2142 2011-11-10 15:29:59Z jkoshy $
+ * $Id: ardiff.c 3102 2014-10-29 21:09:01Z jkoshy $
*/
#include <archive.h>
@@ -93,9 +93,8 @@ main(int argc, char **argv)
/* Open file 1 */
a1 = archive_read_new();
- archive_read_support_compression_none(a1);
archive_read_support_format_ar(a1);
- if (archive_read_open_file(a1, argv[0],
+ if (archive_read_open_filename(a1, argv[0],
1024*10)) {
warnx("%s", archive_error_string(a1));
filediff(tc, "archive open failed", NULL);
@@ -103,9 +102,8 @@ main(int argc, char **argv)
/* Open file 2 */
a2 = archive_read_new();
- archive_read_support_compression_none(a2);
archive_read_support_format_ar(a2);
- if (archive_read_open_file(a2, argv[1],
+ if (archive_read_open_filename(a2, argv[1],
1024*10)) {
warnx("%s", archive_error_string(a2));
filediff(tc, "archive open failed", NULL);
@@ -233,10 +231,11 @@ static void
incct(const char *pathname)
{
FILE *fp;
- char buf[10], *_buf;
+ char buf[10];
if ((fp = fopen(pathname, "r")) != NULL) {
- _buf = fgets(buf, 10, fp);
+ if (fgets(buf, 10, fp) != buf)
+ perror("fgets");
snprintf(buf, 10, "%d\n", atoi(buf) + 1);
fclose(fp);
}
diff --git a/test/ar/plugin/teraser.c b/test/ar/plugin/teraser.c
index 59d587f7f048d..d16752e7cefb3 100644
--- a/test/ar/plugin/teraser.c
+++ b/test/ar/plugin/teraser.c
@@ -2,7 +2,7 @@
* make it easy to `diff'. (option -e)
* 2. Check the sanity of timestamp. (option -c)
*
- * $Id: teraser.c 2142 2011-11-10 15:29:59Z jkoshy $
+ * $Id: teraser.c 3102 2014-10-29 21:09:01Z jkoshy $
*/
#include <errno.h>
@@ -28,7 +28,7 @@ main(int argc, char **argv)
char opt;
char checktime;
char erasetime;
- char buf[TSLEN + 1], *_buf;
+ char buf[TSLEN + 1];
char *tc;
int fd;
int ts;
@@ -85,7 +85,8 @@ main(int argc, char **argv)
if (ts <= now && ts >= now - TDELAY) {
fprintf(stderr, "%s - timestamp ok\n", tc);
if ((ps = fopen(PASSED, "r")) != NULL) {
- _buf = fgets(buf, TSLEN, ps);
+ if (fgets(buf, TSLEN, ps) != buf)
+ perror("fgets");
snprintf(buf, TSLEN, "%d\n",
atoi(buf) + 1);
fclose(ps);
@@ -98,7 +99,8 @@ main(int argc, char **argv)
fprintf(stderr, "%s - timestamp not ok\n", tc);
}
if ((ct = fopen(COUNTER, "r")) != NULL) {
- _buf = fgets(buf, TSLEN, ct);
+ if (fgets(buf, TSLEN, ct) != buf)
+ perror("fgets");
snprintf(buf, TSLEN, "%d\n", atoi(buf) + 1);
fclose(ct);
}
diff --git a/test/elfcopy/Makefile b/test/elfcopy/Makefile
index f1302f1339795..5114a68e7b2fe 100644
--- a/test/elfcopy/Makefile
+++ b/test/elfcopy/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile 2141 2011-11-10 15:03:40Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
TOP= ../..
@@ -18,4 +18,4 @@ clobber: clean
SUBDIR= plugin
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/elfcopy/plugin/Makefile b/test/elfcopy/plugin/Makefile
index a72fbfe7d371e..36e33a35687ce 100644
--- a/test/elfcopy/plugin/Makefile
+++ b/test/elfcopy/plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile 2082 2011-10-27 04:38:32Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
PLUGINS= ardiff teraser
@@ -9,7 +9,7 @@ ${PLUGINS}:
${MAKE} -f Makefile.${plugin}
.endfor
-clean depend:
+clean cleandepend depend:
.for plugin in ${PLUGINS}
${MAKE} -f Makefile.${plugin} ${.TARGET}
.endfor
diff --git a/test/elfcopy/plugin/Makefile.ardiff b/test/elfcopy/plugin/Makefile.ardiff
index 7f371a7a975c1..a7baa0a0292b4 100644
--- a/test/elfcopy/plugin/Makefile.ardiff
+++ b/test/elfcopy/plugin/Makefile.ardiff
@@ -1,9 +1,7 @@
-# $Id: Makefile.ardiff 2096 2011-11-01 04:42:04Z jkoshy $
+# $Id: Makefile.ardiff 3121 2014-12-21 05:46:01Z kaiwang27 $
TOP= ../../..
-.include "${TOP}/mk/elftoolchain.os.mk"
-
PROG= ardiff
NOMAN=
diff --git a/test/elfcopy/plugin/ardiff.c b/test/elfcopy/plugin/ardiff.c
index e54f6a9f6cdc0..907d1ea80da9f 100644
--- a/test/elfcopy/plugin/ardiff.c
+++ b/test/elfcopy/plugin/ardiff.c
@@ -12,7 +12,7 @@
* By default, it compares nothing and consider the test "not ok"
* iff it encounters errors while reading archive.
*
- * $Id: ardiff.c 2142 2011-11-10 15:29:59Z jkoshy $
+ * $Id: ardiff.c 3102 2014-10-29 21:09:01Z jkoshy $
*/
#include <archive.h>
@@ -93,9 +93,8 @@ main(int argc, char **argv)
/* Open file 1 */
a1 = archive_read_new();
- archive_read_support_compression_none(a1);
archive_read_support_format_ar(a1);
- if (archive_read_open_file(a1, argv[0],
+ if (archive_read_open_filename(a1, argv[0],
1024*10)) {
warnx("%s", archive_error_string(a1));
filediff(tc, "archive open failed", NULL);
@@ -103,9 +102,8 @@ main(int argc, char **argv)
/* Open file 2 */
a2 = archive_read_new();
- archive_read_support_compression_none(a2);
archive_read_support_format_ar(a2);
- if (archive_read_open_file(a2, argv[1],
+ if (archive_read_open_filename(a2, argv[1],
1024*10)) {
warnx("%s", archive_error_string(a2));
filediff(tc, "archive open failed", NULL);
@@ -233,10 +231,11 @@ static void
incct(const char *pathname)
{
FILE *fp;
- char buf[10], *_buf;
+ char buf[10];
if ((fp = fopen(pathname, "r")) != NULL) {
- _buf = fgets(buf, 10, fp);
+ if (fgets(buf, 10, fp) != buf)
+ perror("fgets");
snprintf(buf, 10, "%d\n", atoi(buf) + 1);
fclose(fp);
}
diff --git a/test/elfcopy/plugin/teraser.c b/test/elfcopy/plugin/teraser.c
index 59d587f7f048d..0deb7cc906301 100644
--- a/test/elfcopy/plugin/teraser.c
+++ b/test/elfcopy/plugin/teraser.c
@@ -2,7 +2,7 @@
* make it easy to `diff'. (option -e)
* 2. Check the sanity of timestamp. (option -c)
*
- * $Id: teraser.c 2142 2011-11-10 15:29:59Z jkoshy $
+ * $Id: teraser.c 3102 2014-10-29 21:09:01Z jkoshy $
*/
#include <errno.h>
@@ -28,7 +28,7 @@ main(int argc, char **argv)
char opt;
char checktime;
char erasetime;
- char buf[TSLEN + 1], *_buf;
+ char buf[TSLEN + 1];
char *tc;
int fd;
int ts;
@@ -85,7 +85,8 @@ main(int argc, char **argv)
if (ts <= now && ts >= now - TDELAY) {
fprintf(stderr, "%s - timestamp ok\n", tc);
if ((ps = fopen(PASSED, "r")) != NULL) {
- _buf = fgets(buf, TSLEN, ps);
+ if (fgets(buf, TSLEN, ps) != buf)
+ perror("fgets");
snprintf(buf, TSLEN, "%d\n",
atoi(buf) + 1);
fclose(ps);
@@ -98,7 +99,8 @@ main(int argc, char **argv)
fprintf(stderr, "%s - timestamp not ok\n", tc);
}
if ((ct = fopen(COUNTER, "r")) != NULL) {
- _buf = fgets(buf, TSLEN, ct);
+ if (fgets(buf, TSLEN, ct) != NULL)
+ perror("fgets");
snprintf(buf, TSLEN, "%d\n", atoi(buf) + 1);
fclose(ct);
}
diff --git a/test/elfcopy/tc/strip-empty-1/in/strip-empty-1.in.shar b/test/elfcopy/tc/strip-empty-1/in/strip-empty-1.in.shar
new file mode 100644
index 0000000000000..6ff3cf214cc27
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/in/strip-empty-1.in.shar
@@ -0,0 +1,32 @@
+# This is a shell archive. Save it in a file, remove anything before
+# this line, and then unpack it by entering "sh file". Note, it may
+# create directories; files and directories will be owned by you and
+# have default permissions.
+#
+# This archive contains:
+#
+# empty.o.uu
+#
+echo x - empty.o.uu
+sed 's/^X//' >empty.o.uu << '446fa33c5b702a1d1fbfe3ec7a501a1a'
+Xbegin 644 empty.o
+XM?T5,1@(!`0D```````````$`/@`!`````````````````````````'``````
+XM`````````$```````$``!P`$```N<WEM=&%B`"YS=')T86(`+G-H<W1R=&%B
+XM`"YT97AT`"YD871A`"YB<W,`````````````````````````````````````
+XM```````````````````````````````````````````````````````;````
+XM`0````8```````````````````!````````````````````````````````$
+XM````````````````````(0````$````#````````````````````0```````
+XM````````````````````````!````````````````````"<````(`````P``
+XM`````````````````$````````````````````````````````0`````````
+XM```````````1`````P````````````````````````!``````````"P`````
+XM```````````````!`````````````````````0````(`````````````````
+XM````````,`(```````!@``````````8````$````"``````````8````````
+XM``D````#`````````````````````````)`"`````````0``````````````
+XM``````$`````````````````````````````````````````````````````
+XM`````P`!`````````````````````````````P`"````````````````````
+X;`````````P`#````````````````````````
+X`
+Xend
+446fa33c5b702a1d1fbfe3ec7a501a1a
+exit
+
diff --git a/test/elfcopy/tc/strip-empty-1/out/strip-empty-1.out.shar b/test/elfcopy/tc/strip-empty-1/out/strip-empty-1.out.shar
new file mode 100644
index 0000000000000..fc7063cd0e267
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/out/strip-empty-1.out.shar
@@ -0,0 +1,22 @@
+# This is a shell archive. Save it in a file, remove anything before
+# this line, and then unpack it by entering "sh file". Note, it may
+# create directories; files and directories will be owned by you and
+# have default permissions.
+#
+# This archive contains:
+#
+# empty.o.uu
+#
+echo x - empty.o.uu
+sed 's/^X//' >empty.o.uu << '446fa33c5b702a1d1fbfe3ec7a501a1a'
+Xbegin 644 empty.o
+XM?T5,1@(!`0D```````````$`/@`!`````````````````````````%``````
+XM`````````$```````$```@`!```N<VAS=')T86(`````````````````````
+XM````````````````````````````````````````````````````````````
+XM`````````````0````,`````````````````````````0``````````+````
+X<`````````````````0``````````````````````
+X`
+Xend
+446fa33c5b702a1d1fbfe3ec7a501a1a
+exit
+
diff --git a/test/elfcopy/tc/strip-empty-1/strip-empty-1.err b/test/elfcopy/tc/strip-empty-1/strip-empty-1.err
new file mode 100644
index 0000000000000..e69de29bb2d1d
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/strip-empty-1.err
diff --git a/test/elfcopy/tc/strip-empty-1/strip-empty-1.eval b/test/elfcopy/tc/strip-empty-1/strip-empty-1.eval
new file mode 100644
index 0000000000000..573541ac9702d
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/strip-empty-1.eval
@@ -0,0 +1 @@
+0
diff --git a/test/elfcopy/tc/strip-empty-1/strip-empty-1.out b/test/elfcopy/tc/strip-empty-1/strip-empty-1.out
new file mode 100644
index 0000000000000..e69de29bb2d1d
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/strip-empty-1.out
diff --git a/test/elfcopy/tc/strip-empty-1/strip-empty-1.sh b/test/elfcopy/tc/strip-empty-1/strip-empty-1.sh
new file mode 100755
index 0000000000000..2ba44f887d971
--- /dev/null
+++ b/test/elfcopy/tc/strip-empty-1/strip-empty-1.sh
@@ -0,0 +1,6 @@
+# $Id$
+inittest strip-empty-1 tc/strip-empty-1
+extshar ${TESTDIR}
+extshar ${RLTDIR}
+runcmd "${STRIP} -R .text -R .data -R .bss -R .ARM.attributes -R .reginfo -R .gnu.attributes -R .MIPS.abiflags -R .pdr -R .xtensa.info empty.o" work true
+rundiff true
diff --git a/test/elfdump/Makefile b/test/elfdump/Makefile
index fa9f176bd0f60..ceac4650543cf 100644
--- a/test/elfdump/Makefile
+++ b/test/elfdump/Makefile
@@ -1,21 +1,5 @@
-# $Id: Makefile 2137 2011-11-10 13:09:30Z jkoshy $
+# $Id: Makefile 3028 2014-04-18 16:20:43Z jkoshy $
TOP= ../..
-.include "${TOP}/mk/elftoolchain.tetvars.mk"
-
-.if !defined(TET_EXECUTE)
-TET_EXECUTE= ${.OBJDIR}
-.endif
-
-.PHONY: all clean clobber execute test
-
-all clean depend:
-
-execute test:
- TET_EXECUTE="${TET_EXECUTE}" TET_ROOT="${TET_ROOT}" \
- TET_SUITE_ROOT="${.CURDIR}" \
- ${TET_ROOT}/bin/tcc -e .
-
-clobber: clean
- rm -rf ${TET_RESULTS_DIR} ${TET_TMP_DIR}
+.include "${TOP}/mk/elftoolchain.tetbase.mk"
diff --git a/test/libdwarf/Makefile b/test/libdwarf/Makefile
index ad239300bcf2b..fc9f5d1667e6e 100644
--- a/test/libdwarf/Makefile
+++ b/test/libdwarf/Makefile
@@ -1,34 +1,6 @@
-#
-# $Id: Makefile 2137 2011-11-10 13:09:30Z jkoshy $
-#
-
-TOP= ../..
-
-.include "${TOP}/mk/elftoolchain.tetvars.mk"
-
-.if make(tccbuild)
-TET_OPTIONS+= -b
-.endif
-
-.if make(tccclean)
-TET_OPTIONS+= -c
-.endif
-
-.if make(execute) || make(test)
-TET_OPTIONS+= -e
-.endif
-
-.MAIN: all
-
-.PHONY: clobber execute tccbuild tccclean test
-
-execute tccbuild tccclean test:
- TET_ROOT=${TET_ROOT} TET_SUITE_ROOT=${.CURDIR} \
- ${TET_ROOT}/bin/tcc ${TET_OPTIONS} .
-
-clobber: clean
- rm -rf ${TET_RESULTS_DIR} ${TET_TMP_DIR}
+# $Id: Makefile 3028 2014-04-18 16:20:43Z jkoshy $
+TOP= ../..
SUBDIR= ts
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.tetbase.mk"
diff --git a/test/libdwarf/ts/Makefile b/test/libdwarf/ts/Makefile
index 84d6e2404b142..05ddf91e16d4a 100644
--- a/test/libdwarf/ts/Makefile
+++ b/test/libdwarf/ts/Makefile
@@ -1,7 +1,9 @@
#
-# $Id: Makefile 2084 2011-10-27 04:48:12Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
#
+TOP= ../../..
+
SUBDIR+= dwarf_init
SUBDIR+= dwarf_next_cu_header
SUBDIR+= dwarf_get_address_size
@@ -22,4 +24,4 @@ SUBDIR+= dwarf_pubnames
SUBDIR+= dwarf_macinfo
SUBDIR+= dwarf_ranges
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/libdwarf/ts/Makefile.tset b/test/libdwarf/ts/Makefile.tset
index af0f82a10dbc1..6546de89d2cf9 100644
--- a/test/libdwarf/ts/Makefile.tset
+++ b/test/libdwarf/ts/Makefile.tset
@@ -1,6 +1,4 @@
-# $Id: Makefile.tset 2198 2011-11-23 16:13:45Z jkoshy $
-
-.include "${TOP}/mk/elftoolchain.os.mk"
+# $Id: Makefile.tset 3122 2014-12-21 05:46:10Z kaiwang27 $
# libdwarf test suite uses libdwarf in /usr/local (i.e. SGI libdwarf),
# if TCGEN is defined.
@@ -15,6 +13,11 @@ LDADD+= -ldwarf
DPADD+= ${LIBELF}
LDADD+= -lelf
+# Test cases do not have manual pages.
+NOMAN= noman
+
+.include "${TOP}/mk/elftoolchain.os.mk"
+
# Determine the location of the XML handling library.
.if ${OS_HOST} == FreeBSD
LDADD+= -lbsdxml
@@ -51,6 +54,3 @@ ${f}: ${TS_OBJROOT}/common/object/${f}.gz
.if ${OS_HOST} != NetBSD
WARNS?= 2
.endif
-
-# Test cases do not have manual pages.
-NOMAN= noman
diff --git a/test/libdwarf/ts/README b/test/libdwarf/ts/README
index b163c50a7ccd9..0a041dcbd6042 100644
--- a/test/libdwarf/ts/README
+++ b/test/libdwarf/ts/README
@@ -1,4 +1,4 @@
-: $Id: README 2084 2011-10-27 04:48:12Z jkoshy $
+: $Id: README 3072 2014-06-23 03:08:44Z kaiwang27 $
Libdwarf test suite use XML files to describe test case, invocable
component and test purpose.
@@ -32,3 +32,15 @@ When a test case is compiled with 'make TCGEN=yes', it will instead
link with SGI libdwarf and genearte XML files during TP execution.
These generated XML files can then be used directly to test this
libdwarf implementation.
+
+For example, to generate XML files for test case dwarf_next_cu_header:
+
+% cd /path/to/elftoolchain/test/libdwarf/
+# unsetenv TET_ROOT
+% make clean && make TCGEN=yes
+% cd ts/dwarf_next_cu_header
+% setenv TET_ROOT /path/to/elftoolchain/test/tet
+% env ICLIST=dt32-g1:dt64-g1:ec32-g1:ec64-g1:ld_symver.o-64-g1 ./tc_dwarf_next_cu_header
+
+(ICLIST defines a list of test objects on which the test case
+generates. One gzipped XML file is generated for each test object.)
diff --git a/test/libdwarf/ts/common/die_traverse2.c b/test/libdwarf/ts/common/die_traverse2.c
new file mode 100644
index 0000000000000..059ca13cb1c02
--- /dev/null
+++ b/test/libdwarf/ts/common/die_traverse2.c
@@ -0,0 +1,120 @@
+/*-
+ * Copyright (c) 2010,2014 Kai Wang
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: die_traverse2.c 3076 2014-06-23 23:54:01Z kaiwang27 $
+ */
+
+#include <assert.h>
+#include <dwarf.h>
+#include <libdwarf.h>
+
+#include "driver.h"
+
+static int die_cnt;
+
+/*
+ * DIE traverse function shared by test cases. (another version with
+ * .debug_types support)
+ */
+
+static void
+_die_traverse_recursive2(Dwarf_Debug dbg, Dwarf_Die die,
+ Dwarf_Bool is_info, void (*die_callback)(Dwarf_Die die))
+{
+ Dwarf_Die die0;
+ Dwarf_Off offset;
+ Dwarf_Half tag;
+ Dwarf_Error de;
+ const char *tagname;
+ int r;
+
+ assert(dbg != NULL && die != NULL && die_callback != NULL);
+
+ if (dwarf_tag(die, &tag, &de) != DW_DLV_OK) {
+ tet_printf("dwarf_tag failed: %s\n", dwarf_errmsg(de));
+ result = TET_FAIL;
+ }
+ tagname = NULL;
+ if (dwarf_get_TAG_name(tag, &tagname) != DW_DLV_OK) {
+ tet_infoline("dwarf_get_TAG_name failed");
+ result = TET_FAIL;
+ }
+ offset = 0;
+ if (dwarf_dieoffset(die, &offset, &de) != DW_DLV_OK) {
+ tet_printf("dwarf_dieoffset failed: %s\n", dwarf_errmsg(de));
+ result = TET_FAIL;
+ }
+ tet_printf("DIE #%d (%s) [%#x]\n", die_cnt++, tagname, offset);
+
+ die_callback(die);
+
+ /* Search children. */
+ r = dwarf_child(die, &die0, &de);
+ if (r == DW_DLV_ERROR)
+ tet_printf("%s: dwarf_child failed: %s", __func__,
+ dwarf_errmsg(de));
+ else if (r == DW_DLV_OK)
+ _die_traverse_recursive2(dbg, die0, is_info, die_callback);
+
+ /* Search sibling. */
+ r = dwarf_siblingof_b(dbg, die, &die0, is_info, &de);
+ if (r == DW_DLV_ERROR)
+ tet_printf("%s: dwarf_siblingof failed: %s", __func__,
+ dwarf_errmsg(de));
+ else if (r == DW_DLV_OK)
+ _die_traverse_recursive2(dbg, die0, is_info, die_callback);
+}
+
+static void
+_die_traverse2(Dwarf_Debug dbg, Dwarf_Bool is_info,
+ void (*die_callback)(Dwarf_Die die))
+{
+ Dwarf_Die die;
+ Dwarf_Error de;
+ Dwarf_Unsigned cu_next_offset;
+
+ assert(dbg != NULL && die_callback != NULL);
+
+ die_cnt = 0;
+
+ if (is_info) {
+ TS_DWARF_CU_FOREACH2(dbg, 1, cu_next_offset, de) {
+ if (dwarf_siblingof_b(dbg, NULL, &die, 1, &de) !=
+ DW_DLV_OK)
+ break;
+ _die_traverse_recursive2(dbg, die, 1, die_callback);
+ }
+ } else {
+ do {
+ TS_DWARF_CU_FOREACH2(dbg, 0, cu_next_offset, de) {
+ if (dwarf_siblingof_b(dbg, NULL, &die, 0,
+ &de) != DW_DLV_OK)
+ break;
+ _die_traverse_recursive2(dbg, die, 0,
+ die_callback);
+ }
+ } while (dwarf_next_types_section(dbg, &de) == DW_DLV_OK);
+ }
+}
diff --git a/test/libdwarf/ts/common/driver.h b/test/libdwarf/ts/common/driver.h
index 7d84a017e386c..580683ffd17ee 100644
--- a/test/libdwarf/ts/common/driver.h
+++ b/test/libdwarf/ts/common/driver.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: driver.h 2084 2011-10-27 04:48:12Z jkoshy $
+ * $Id: driver.h 3074 2014-06-23 03:08:53Z kaiwang27 $
*/
#ifndef _DRIVER_H_
@@ -62,9 +62,16 @@ struct dwarf_tp {
while (dwarf_next_cu_header((D), NULL, NULL, NULL, NULL, &(N), \
&(DE)) == DW_DLV_OK)
-#define TS_DWARF_DIE_TRAVERSE(D, CB) \
+#define TS_DWARF_CU_FOREACH2(D,I,N,DE) \
+ while (dwarf_next_cu_header_c((D), (I), NULL, NULL, NULL, NULL, \
+ NULL, NULL, NULL, NULL, &(N), &(DE)) == DW_DLV_OK)
+
+#define TS_DWARF_DIE_TRAVERSE(D,CB) \
_die_traverse((D), (CB))
+#define TS_DWARF_DIE_TRAVERSE2(D,I,CB) \
+ _die_traverse2((D), (I), (CB))
+
#ifndef TCGEN
#define _TS_CHECK_VAR(X,S) do { \
diff --git a/test/libdwarf/ts/common/object/ld_symver.o-64-g1.gz b/test/libdwarf/ts/common/object/ld_symver.o-64-g1.gz
new file mode 100644
index 0000000000000..5fd90579c8114
--- /dev/null
+++ b/test/libdwarf/ts/common/object/ld_symver.o-64-g1.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_attrlist/Makefile b/test/libdwarf/ts/dwarf_attrlist/Makefile
index 29cc2480527b8..beaf7e4bb4151 100644
--- a/test/libdwarf/ts/dwarf_attrlist/Makefile
+++ b/test/libdwarf/ts/dwarf_attrlist/Makefile
@@ -1,8 +1,8 @@
-# $Id: Makefile 2084 2011-10-27 04:48:12Z jkoshy $
+# $Id: Makefile 3083 2014-09-02 22:08:01Z kaiwang27 $
TOP= ../../../..
TS_SRCS= dwarf_attrlist.c
-TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1
+TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1 ld_symver.o-64-g1
.include "${TOP}/mk/elftoolchain.tet.mk"
diff --git a/test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gz b/test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gz
index 9757123b7b2c5..78629601d1022 100644
--- a/test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_attrlist/dt32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gz b/test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gz
index e4cf1c592c6d9..8b69a054fa4d1 100644
--- a/test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_attrlist/dt64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c b/test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c
index fa6818ec1dcce..e8f29edc93668 100644
--- a/test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c
+++ b/test/libdwarf/ts/dwarf_attrlist/dwarf_attrlist.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dwarf_attrlist.c 2084 2011-10-27 04:48:12Z jkoshy $
+ * $Id: dwarf_attrlist.c 3083 2014-09-02 22:08:01Z kaiwang27 $
*/
#include <assert.h>
@@ -48,7 +48,7 @@ static struct dwarf_tp dwarf_tp_array[] = {
};
static int result = TET_UNRESOLVED;
#include "driver.c"
-#include "die_traverse.c"
+#include "die_traverse2.c"
static void
_dwarf_attrlist(Dwarf_Die die)
@@ -90,7 +90,8 @@ tp_dwarf_attrlist(void)
TS_DWARF_INIT(dbg, fd, de);
- TS_DWARF_DIE_TRAVERSE(dbg, _dwarf_attrlist);
+ TS_DWARF_DIE_TRAVERSE2(dbg, 1, _dwarf_attrlist);
+ TS_DWARF_DIE_TRAVERSE2(dbg, 0, _dwarf_attrlist);
if (result == TET_UNRESOLVED)
result = TET_PASS;
diff --git a/test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gz b/test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gz
index 3408f55c6e59d..f2a53356cc7c7 100644
--- a/test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_attrlist/ec32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gz b/test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gz
index 13581a27d24c9..19faaf701f763 100644
--- a/test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_attrlist/ec64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_attrlist/ld_symver.o-64-g1.xml.gz b/test/libdwarf/ts/dwarf_attrlist/ld_symver.o-64-g1.xml.gz
new file mode 100644
index 0000000000000..b78ab0abd9b25
--- /dev/null
+++ b/test/libdwarf/ts/dwarf_attrlist/ld_symver.o-64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/Makefile b/test/libdwarf/ts/dwarf_die_query/Makefile
index efcf1bc97c4e0..0f99aa3e1bbf5 100644
--- a/test/libdwarf/ts/dwarf_die_query/Makefile
+++ b/test/libdwarf/ts/dwarf_die_query/Makefile
@@ -1,8 +1,8 @@
-# $Id: Makefile 2084 2011-10-27 04:48:12Z jkoshy $
+# $Id: Makefile 3075 2014-06-23 03:08:57Z kaiwang27 $
TOP= ../../../..
TS_SRCS= dwarf_die_query.c
-TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1 dto64-g1
+TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1 dto64-g1 ld_symver.o-64-g1
.include "${TOP}/mk/elftoolchain.tet.mk"
diff --git a/test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gz
index 2cda689a79455..1fc0851421177 100644
--- a/test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_die_query/dt32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gz
index 211645acbf436..6a1a6fd54759f 100644
--- a/test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_die_query/dt64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gz
index 7b2d38d04585e..2cd4ea5a2ff71 100644
--- a/test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_die_query/dto64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c b/test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c
index 45b9c44d1abef..5c99fc2304979 100644
--- a/test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c
+++ b/test/libdwarf/ts/dwarf_die_query/dwarf_die_query.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dwarf_die_query.c 2084 2011-10-27 04:48:12Z jkoshy $
+ * $Id: dwarf_die_query.c 3075 2014-06-23 03:08:57Z kaiwang27 $
*/
#include <assert.h>
@@ -42,15 +42,18 @@
*/
static void tp_dwarf_die_query(void);
+static void tp_dwarf_die_query_types(void);
static void tp_dwarf_die_query_sanity(void);
static struct dwarf_tp dwarf_tp_array[] = {
{"tp_dwarf_die_query", tp_dwarf_die_query},
+ {"tp_dwarf_die_query_types", tp_dwarf_die_query_types},
{"tp_dwarf_die_query_sanity", tp_dwarf_die_query_sanity},
{NULL, NULL},
};
static int result = TET_UNRESOLVED;
#include "driver.c"
#include "die_traverse.c"
+#include "die_traverse2.c"
static void
_dwarf_die_query(Dwarf_Die die)
@@ -103,6 +106,27 @@ done:
}
static void
+tp_dwarf_die_query_types(void)
+{
+ Dwarf_Debug dbg;
+ Dwarf_Error de;
+ int fd;
+
+ result = TET_UNRESOLVED;
+
+ TS_DWARF_INIT(dbg, fd, de);
+
+ TS_DWARF_DIE_TRAVERSE2(dbg, 0, _dwarf_die_query);
+
+ if (result == TET_UNRESOLVED)
+ result = TET_PASS;
+
+done:
+ TS_DWARF_FINISH(dbg, de);
+ TS_RESULT(result);
+}
+
+static void
tp_dwarf_die_query_sanity(void)
{
Dwarf_Debug dbg;
diff --git a/test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gz
index d54847f126eaa..0dde7100876f7 100644
--- a/test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_die_query/ec32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gz
index 21559130a6793..3c9890e18d005 100644
--- a/test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_die_query/ec64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_die_query/ld_symver.o-64-g1.xml.gz b/test/libdwarf/ts/dwarf_die_query/ld_symver.o-64-g1.xml.gz
new file mode 100644
index 0000000000000..c8de24e2c300f
--- /dev/null
+++ b/test/libdwarf/ts/dwarf_die_query/ld_symver.o-64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_form/Makefile b/test/libdwarf/ts/dwarf_form/Makefile
index a64bd6f6f2ba2..a1f193ada1b2a 100644
--- a/test/libdwarf/ts/dwarf_form/Makefile
+++ b/test/libdwarf/ts/dwarf_form/Makefile
@@ -1,8 +1,8 @@
-# $Id: Makefile 2084 2011-10-27 04:48:12Z jkoshy $
+# $Id: Makefile 3084 2014-09-02 22:08:13Z kaiwang27 $
TOP= ../../../..
TS_SRCS= dwarf_form.c
-TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1
+TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1 ld_symver.o-64-g1
.include "${TOP}/mk/elftoolchain.tet.mk"
diff --git a/test/libdwarf/ts/dwarf_form/dt32-g1.xml.gz b/test/libdwarf/ts/dwarf_form/dt32-g1.xml.gz
index b15226e85f107..afc398d021aa9 100644
--- a/test/libdwarf/ts/dwarf_form/dt32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_form/dt32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_form/dt64-g1.xml.gz b/test/libdwarf/ts/dwarf_form/dt64-g1.xml.gz
index 62b6aa2687306..257b4687bd507 100644
--- a/test/libdwarf/ts/dwarf_form/dt64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_form/dt64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_form/dwarf_form.c b/test/libdwarf/ts/dwarf_form/dwarf_form.c
index 8567b5a14491f..5ef73d3f486b6 100644
--- a/test/libdwarf/ts/dwarf_form/dwarf_form.c
+++ b/test/libdwarf/ts/dwarf_form/dwarf_form.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dwarf_form.c 2084 2011-10-27 04:48:12Z jkoshy $
+ * $Id: dwarf_form.c 3084 2014-09-02 22:08:13Z kaiwang27 $
*/
#include <assert.h>
@@ -48,7 +48,7 @@ static struct dwarf_tp dwarf_tp_array[] = {
};
static int result = TET_UNRESOLVED;
#include "driver.c"
-#include "die_traverse.c"
+#include "die_traverse2.c"
static void
_dwarf_form(Dwarf_Die die)
@@ -62,11 +62,14 @@ _dwarf_form(Dwarf_Die die)
Dwarf_Unsigned uvalue;
Dwarf_Signed svalue;
Dwarf_Block *block;
+ Dwarf_Sig8 sig8;
+ Dwarf_Ptr ptr;
Dwarf_Error de;
char *str;
int i, r;
int r_formref, r_global_formref, r_formaddr, r_formflag;
int r_formudata, r_formsdata, r_formblock, r_formstring;
+ int r_formsig8, r_formexprloc;
r = dwarf_attrlist(die, &attrlist, &attrcount, &de);
if (r == DW_DLV_ERROR) {
@@ -141,6 +144,16 @@ _dwarf_form(Dwarf_Die die)
TS_CHECK_INT(r_formstring);
if (r_formstring == DW_DLV_OK)
TS_CHECK_STRING(str);
+
+ r_formsig8 = dwarf_formsig8(at, &sig8, &de);
+ TS_CHECK_INT(r_formsig8);
+ if (r_formsig8 == DW_DLV_OK)
+ TS_CHECK_BLOCK(sig8.signature, 8);
+
+ r_formexprloc = dwarf_formexprloc(at, &uvalue, &ptr, &de);
+ TS_CHECK_INT(r_formexprloc);
+ if (r_formexprloc == DW_DLV_OK)
+ TS_CHECK_BLOCK(ptr, uvalue);
}
}
@@ -155,7 +168,8 @@ tp_dwarf_form(void)
TS_DWARF_INIT(dbg, fd, de);
- TS_DWARF_DIE_TRAVERSE(dbg, _dwarf_form);
+ TS_DWARF_DIE_TRAVERSE2(dbg, 1, _dwarf_form);
+ TS_DWARF_DIE_TRAVERSE2(dbg, 0, _dwarf_form);
if (result == TET_UNRESOLVED)
result = TET_PASS;
diff --git a/test/libdwarf/ts/dwarf_form/ec32-g1.xml.gz b/test/libdwarf/ts/dwarf_form/ec32-g1.xml.gz
index 8342c21cf7e12..bf8b65ed07b49 100644
--- a/test/libdwarf/ts/dwarf_form/ec32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_form/ec32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_form/ec64-g1.xml.gz b/test/libdwarf/ts/dwarf_form/ec64-g1.xml.gz
index b046c5b902374..1c964962fc4e4 100644
--- a/test/libdwarf/ts/dwarf_form/ec64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_form/ec64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_form/ld_symver.o-64-g1.xml.gz b/test/libdwarf/ts/dwarf_form/ld_symver.o-64-g1.xml.gz
new file mode 100644
index 0000000000000..22c60db868427
--- /dev/null
+++ b/test/libdwarf/ts/dwarf_form/ld_symver.o-64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/Makefile b/test/libdwarf/ts/dwarf_next_cu_header/Makefile
index ef798c118a566..ad29f1efa8eee 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/Makefile
+++ b/test/libdwarf/ts/dwarf_next_cu_header/Makefile
@@ -1,8 +1,8 @@
-# $Id: Makefile 2084 2011-10-27 04:48:12Z jkoshy $
+# $Id: Makefile 3073 2014-06-23 03:08:49Z kaiwang27 $
TOP= ../../../..
TS_SRCS= dwarf_next_cu_header.c
-TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1
+TS_DATA= dt32-g1 dt64-g1 ec32-g1 ec64-g1 ld_symver.o-64-g1
.include "${TOP}/mk/elftoolchain.tet.mk"
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gz b/test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gz
index e9f788ca68f3f..7ba737cc6e97e 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_next_cu_header/dt32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gz b/test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gz
index 60dfb4202084d..93a44424c7d15 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_next_cu_header/dt64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c b/test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c
index acfe506bb869f..b5a580d497535 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c
+++ b/test/libdwarf/ts/dwarf_next_cu_header/dwarf_next_cu_header.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2010 Kai Wang
+ * Copyright (c) 2010,2014 Kai Wang
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dwarf_next_cu_header.c 2084 2011-10-27 04:48:12Z jkoshy $
+ * $Id: dwarf_next_cu_header.c 3073 2014-06-23 03:08:49Z kaiwang27 $
*/
#include <assert.h>
@@ -38,10 +38,12 @@
static void tp_dwarf_next_cu_header(void);
static void tp_dwarf_next_cu_header_b(void);
+static void tp_dwarf_next_cu_header_c(void);
static void tp_dwarf_next_cu_header_loop(void);
static struct dwarf_tp dwarf_tp_array[] = {
{"tp_dwarf_next_cu_header", tp_dwarf_next_cu_header},
{"tp_dwarf_next_cu_header_b", tp_dwarf_next_cu_header_b},
+ {"tp_dwarf_next_cu_header_c", tp_dwarf_next_cu_header_c},
{"tp_dwarf_next_cu_header_loop", tp_dwarf_next_cu_header_loop},
{NULL, NULL},
};
@@ -100,8 +102,8 @@ tp_dwarf_next_cu_header_b(void)
TS_DWARF_INIT(dbg, fd, de);
while (dwarf_next_cu_header_b(dbg, &cu_header_length, &cu_version,
- &cu_abbrev_offset, &cu_pointer_size, &cu_offset_size,
- &cu_extension_size, &cu_next_offset, &de) == DW_DLV_OK) {
+ &cu_abbrev_offset, &cu_pointer_size, &cu_offset_size,
+ &cu_extension_size, &cu_next_offset, &de) == DW_DLV_OK) {
TS_CHECK_UINT(cu_header_length);
TS_CHECK_UINT(cu_version);
TS_CHECK_INT(cu_abbrev_offset);
@@ -119,6 +121,64 @@ done:
TS_RESULT(result);
}
+static void
+tp_dwarf_next_cu_header_c(void)
+{
+ Dwarf_Debug dbg;
+ Dwarf_Error de;
+ Dwarf_Unsigned cu_header_length;
+ Dwarf_Half cu_version;
+ Dwarf_Off cu_abbrev_offset;
+ Dwarf_Half cu_pointer_size;
+ Dwarf_Half cu_offset_size;
+ Dwarf_Half cu_extension_size;
+ Dwarf_Sig8 cu_type_sig;
+ Dwarf_Unsigned cu_type_offset;
+ Dwarf_Unsigned cu_next_offset;
+ int fd, result;
+
+ result = TET_UNRESOLVED;
+
+ TS_DWARF_INIT(dbg, fd, de);
+
+ while (dwarf_next_cu_header_c(dbg, 1, &cu_header_length, &cu_version,
+ &cu_abbrev_offset, &cu_pointer_size, &cu_offset_size,
+ &cu_extension_size, NULL, NULL, &cu_next_offset, &de) ==
+ DW_DLV_OK) {
+ TS_CHECK_UINT(cu_header_length);
+ TS_CHECK_UINT(cu_version);
+ TS_CHECK_INT(cu_abbrev_offset);
+ TS_CHECK_UINT(cu_pointer_size);
+ TS_CHECK_UINT(cu_offset_size);
+ TS_CHECK_UINT(cu_extension_size);
+ TS_CHECK_UINT(cu_next_offset);
+ }
+
+ do {
+ while (dwarf_next_cu_header_c(dbg, 0, &cu_header_length,
+ &cu_version, &cu_abbrev_offset, &cu_pointer_size,
+ &cu_offset_size, &cu_extension_size, &cu_type_sig,
+ &cu_type_offset, &cu_next_offset, &de) == DW_DLV_OK) {
+ TS_CHECK_UINT(cu_header_length);
+ TS_CHECK_UINT(cu_version);
+ TS_CHECK_INT(cu_abbrev_offset);
+ TS_CHECK_UINT(cu_pointer_size);
+ TS_CHECK_UINT(cu_offset_size);
+ TS_CHECK_UINT(cu_extension_size);
+ TS_CHECK_BLOCK(cu_type_sig.signature, 8);
+ TS_CHECK_UINT(cu_type_offset);
+ TS_CHECK_UINT(cu_next_offset);
+ }
+ } while (dwarf_next_types_section(dbg, &de) == DW_DLV_OK);
+
+ if (result == TET_UNRESOLVED)
+ result = TET_PASS;
+
+done:
+ TS_DWARF_FINISH(dbg, de);
+ TS_RESULT(result);
+}
+
#define _LOOP_COUNT 50
static void
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gz b/test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gz
index 6efbf28a509d0..c613d8ec741ee 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_next_cu_header/ec32-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gz b/test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gz
index e03947ddbac55..180062815342f 100644
--- a/test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gz
+++ b/test/libdwarf/ts/dwarf_next_cu_header/ec64-g1.xml.gz
Binary files differ
diff --git a/test/libdwarf/ts/dwarf_next_cu_header/ld_symver.o-64-g1.xml.gz b/test/libdwarf/ts/dwarf_next_cu_header/ld_symver.o-64-g1.xml.gz
new file mode 100644
index 0000000000000..adf56ab1f756e
--- /dev/null
+++ b/test/libdwarf/ts/dwarf_next_cu_header/ld_symver.o-64-g1.xml.gz
Binary files differ
diff --git a/test/libelf/Makefile b/test/libelf/Makefile
index 903221d9bafa5..f7a3903e2b9e0 100644
--- a/test/libelf/Makefile
+++ b/test/libelf/Makefile
@@ -1,36 +1,6 @@
-# $Id: Makefile 2137 2011-11-10 13:09:30Z jkoshy $
-
-TOP = ../..
-
-.include "${TOP}/mk/elftoolchain.tetvars.mk"
-
-.if !defined(TET_EXECUTE)
-TET_EXECUTE= ${.OBJDIR}
-.endif
-
-.if make(tccbuild)
-TET_OPTIONS+= -b
-.endif
-
-.if make(tccclean)
-TET_OPTIONS+= -c
-.endif
-
-.if make(execute) || make(test)
-TET_OPTIONS+= -e
-.endif
-
-.MAIN: all
-
-.PHONY: clobber execute tccbuild tccclean test
-
-execute tccbuild tccclean test:
- TET_ROOT=${TET_ROOT} TET_EXECUTE=${TET_EXECUTE} \
- TET_SUITE_ROOT=${.CURDIR} ${TET_ROOT}/bin/tcc ${TET_OPTIONS} .
-
-clobber: clean
- rm -rf ${TET_RESULTS_DIR} ${TET_TMP_DIR}
+# $Id: Makefile 3028 2014-04-18 16:20:43Z jkoshy $
+TOP= ../..
SUBDIR= tset
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.tetbase.mk"
diff --git a/test/libelf/tset/Makefile b/test/libelf/tset/Makefile
index 707a3ab82137b..63e9586913062 100644
--- a/test/libelf/tset/Makefile
+++ b/test/libelf/tset/Makefile
@@ -1,7 +1,9 @@
#
-# $Id: Makefile 1638 2011-07-10 15:43:19Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
#
+TOP= ../../..
+
SUBDIR+= common # must be first
SUBDIR+= abi
@@ -55,4 +57,4 @@ SUBDIR+= gelf_getehdr
SUBDIR+= gelf_newehdr
SUBDIR+= gelf_xlate
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/libelf/tset/elf_update/update.m4 b/test/libelf/tset/elf_update/update.m4
index e1d3e6b33f534..5d7e789a8e9ca 100644
--- a/test/libelf/tset/elf_update/update.m4
+++ b/test/libelf/tset/elf_update/update.m4
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: update.m4 2833 2012-12-30 16:16:51Z jkoshy $
+ * $Id: update.m4 3081 2014-07-28 08:53:14Z jkoshy $
*/
#include <sys/types.h>
@@ -743,7 +743,7 @@ tcSectionType$2$1(void)
goto done;
}
- sh->sh_type = SHT_NULL - 1;
+ sh->sh_type = SHT_LOOS - 1;
(void) elf_flagshdr(scn, ELF_C_SET, ELF_F_DIRTY);
if ((offset = elf_update(e, ELF_C_NULL)) != (off_t) -1) {
@@ -774,6 +774,88 @@ FN(64,`lsb')
FN(64,`msb')
/*
+ * Verify that sections with unrecognized sh_type values in the
+ * range [SHT_LOUSER,SHT_HIUSER], [SHT_LOPROC,SHT_HIPROC],
+ * and [SHT_LOOS,SHT_HIOS] are accepted.
+ */
+
+define(`ADD_SECTION',`
+ if ((scn = elf_newscn(e)) == NULL) {
+ TP_UNRESOLVED("elf_newscn() failed: \"%s\".",
+ elf_errmsg(-1));
+ goto done;
+ }
+ if ((sh = elf$1_getshdr(scn)) == NULL) {
+ TP_UNRESOLVED("elf$1_getshdr() failed: \"%s\".",
+ elf_errmsg(-1));
+ goto done;
+ }
+ sh->sh_type = $2;
+ if ((d = elf_newdata(scn)) == NULL) {
+ TP_UNRESOLVED("elf_newdata() failed: \"%s\".",
+ elf_errmsg(-1));
+ goto done;
+ }
+ d->d_align = 1;
+ d->d_buf = NULL;
+ d->d_size = 0;
+ d->d_off = (off_t) 0;
+ (void) elf_flagdata(d, ELF_C_SET, ELF_F_DIRTY);
+ (void) elf_flagshdr(scn, ELF_C_SET, ELF_F_DIRTY);')
+undefine(`FN')
+define(`FN',`
+void
+tcSectionTypeOSUserProcDefined_$2$1(void)
+{
+ int error, fd, result;
+ off_t offset;
+ Elf *e;
+ Elf_Data *d;
+ Elf_Scn *scn;
+ Elf$1_Shdr *sh;
+
+ TP_CHECK_INITIALIZATION();
+
+ TP_ANNOUNCE("TOUPPER($2)$1: user, OS and processor specific "
+ "section types are accepted.") ;
+
+ result = TET_UNRESOLVED;
+ e = NULL;
+ fd = -1;
+
+ _TS_OPEN_FILE(e, "newehdr.$2$1", ELF_C_READ, fd, goto done;);
+
+ /*
+ * Create two new sections, one of type SHT_LOOS (0x60000000UL),
+ * and the other of type SHT_HIUSER (0xFFFFFFFFUL). These
+ * should be accepted as valid sections.
+ */
+ ADD_SECTION($1,`SHT_LOOS')
+ ADD_SECTION($1,`SHT_HIUSER')
+
+ if ((offset = elf_update(e, ELF_C_NULL)) == (off_t) -1) {
+ TP_FAIL("elf_update() failed.");
+ goto done;
+ }
+
+ result = TET_PASS;
+
+ done:
+ if (e)
+ (void) elf_end(e);
+ if (fd)
+ (void) close(fd);
+ tet_result(result);
+}')
+
+FN(32,`lsb')
+FN(32,`msb')
+FN(64,`lsb')
+FN(64,`msb')
+
+undefine(`ADD_SECTION')
+
+/*
* An Elf_Data descriptor that is malformed in various ways
* should be rejected.
*/
diff --git a/test/libelftc/Makefile b/test/libelftc/Makefile
index c9f086cc7b8d8..f7a3903e2b9e0 100644
--- a/test/libelftc/Makefile
+++ b/test/libelftc/Makefile
@@ -1,36 +1,6 @@
-# $Id: Makefile 2826 2012-12-29 16:39:18Z jkoshy $
-
-TOP = ../..
-
-.include "${TOP}/mk/elftoolchain.tetvars.mk"
-
-.if !defined(TET_EXECUTE)
-TET_EXECUTE= ${.OBJDIR}
-.endif
-
-.if make(tccbuild)
-TET_OPTIONS+= -b
-.endif
-
-.if make(tccclean)
-TET_OPTIONS+= -c
-.endif
-
-.if make(execute) || make(test)
-TET_OPTIONS+= -e
-.endif
-
-.MAIN: all
-
-.PHONY: clobber execute tccbuild tccclean test
-
-execute tccbuild tccclean test:
- TET_ROOT=${TET_ROOT} TET_EXECUTE=${TET_EXECUTE} \
- TET_SUITE_ROOT=${.CURDIR} ${TET_ROOT}/bin/tcc ${TET_OPTIONS} .
-
-clobber: clean
- rm -rf ${TET_RESULTS_DIR} ${TET_TMP_DIR}
+# $Id: Makefile 3028 2014-04-18 16:20:43Z jkoshy $
+TOP= ../..
SUBDIR= tset
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.tetbase.mk"
diff --git a/test/libelftc/tset/Makefile b/test/libelftc/tset/Makefile
index f0ba944fee21b..6602c88c37cac 100644
--- a/test/libelftc/tset/Makefile
+++ b/test/libelftc/tset/Makefile
@@ -1,7 +1,8 @@
-# $Id: Makefile 2861 2013-01-05 09:35:42Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
+TOP= ../../..
SUBDIR=
SUBDIR+= elftc_string_table
SUBDIR+= elftc_version
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/libelftc/tset/Makefile.tset b/test/libelftc/tset/Makefile.tset
index b28e6f717b485..dc637a90263a7 100644
--- a/test/libelftc/tset/Makefile.tset
+++ b/test/libelftc/tset/Makefile.tset
@@ -1,8 +1,9 @@
-# $Id: Makefile.tset 2845 2012-12-31 04:19:35Z jkoshy $
+# $Id: Makefile.tset 3021 2014-04-17 16:32:00Z jkoshy $
-# All the test cases in this test suite need -lelftc.
-DPADD+= ${LIBELFTC}
-LDADD+= -lelftc
+# All the test cases in this test suite need -lelftc. In addition,
+# a few need -lelf.
+DPADD+= ${LIBELFTC} ${LIBELF}
+LDADD+= -lelftc -lelf
GENERATE_TEST_SCAFFOLDING= yes
diff --git a/test/libelftc/tset/elftc_string_table/string_table.m4 b/test/libelftc/tset/elftc_string_table/string_table.m4
index 0c6f730686db9..74e66c99c12bc 100644
--- a/test/libelftc/tset/elftc_string_table/string_table.m4
+++ b/test/libelftc/tset/elftc_string_table/string_table.m4
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: string_table.m4 2868 2013-01-06 13:28:47Z jkoshy $
+ * $Id: string_table.m4 3021 2014-04-17 16:32:00Z jkoshy $
*/
/*
@@ -33,10 +33,12 @@
#include <errno.h>
#include <fcntl.h>
+#include <libelf.h>
#include <libelftc.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+#include <unistd.h>
#include "tet_api.h"
diff --git a/test/nm/Makefile b/test/nm/Makefile
index df34d664a64fd..fc9f5d1667e6e 100644
--- a/test/nm/Makefile
+++ b/test/nm/Makefile
@@ -1,36 +1,6 @@
-# $Id: Makefile 2137 2011-11-10 13:09:30Z jkoshy $
-
-TOP = ../..
-
-.include "${TOP}/mk/elftoolchain.tetvars.mk"
-
-.if !defined(TET_EXECUTE)
-TET_EXECUTE= ${.OBJDIR}
-.endif
-
-.if make(tccbuild)
-TET_OPTIONS+= -b
-.endif
-
-.if make(tccclean)
-TET_OPTIONS+= -c
-.endif
-
-.if make(execute) || make(test)
-TET_OPTIONS+= -e
-.endif
-
-.MAIN: all
-
-.PHONY: clobber execute tccbuild tccclean test
-
-execute tccbuild tccclean test:
- TET_EXECUTE=${TET_EXECUTE} TET_SUITE_ROOT=${.CURDIR} \
- TET_ROOT=${TET_ROOT} ${TET_ROOT}/bin/tcc ${TET_OPTIONS} .
-
-clobber: clean
- rm -rf ${TET_RESULTS_DIR} ${TET_TMP_DIR}
+# $Id: Makefile 3028 2014-04-18 16:20:43Z jkoshy $
+TOP= ../..
SUBDIR= ts
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.tetbase.mk"
diff --git a/test/nm/ts/Makefile b/test/nm/ts/Makefile
index b5352371f7d7d..6d23d32206bbd 100644
--- a/test/nm/ts/Makefile
+++ b/test/nm/ts/Makefile
@@ -1,4 +1,6 @@
-# $Id: Makefile 2085 2011-10-27 05:06:47Z jkoshy $
+# $Id: Makefile 3025 2014-04-18 16:20:25Z jkoshy $
+
+TOP= ../../..
SUBDIR+= nm_archive1
SUBDIR+= nm_archive2
@@ -9,4 +11,4 @@ SUBDIR+= nm_option
SUBDIR+= nm_shared_object1
SUBDIR+= nm_shared_object2
-.include <bsd.subdir.mk>
+.include "${TOP}/mk/elftoolchain.subdir.mk"
diff --git a/test/tet/Makefile b/test/tet/Makefile
index e5396862ce2db..602ff6771fd43 100644
--- a/test/tet/Makefile
+++ b/test/tet/Makefile
@@ -1,7 +1,7 @@
#
# Build TET from source.
#
-# $Id: Makefile 2117 2011-11-09 05:48:03Z jkoshy $
+# $Id: Makefile 3024 2014-04-18 16:20:11Z jkoshy $
#
TOP= ../..
@@ -41,7 +41,7 @@ clean:
clobber:
rm -rf ${TET_ROOT} ${TET_BUILD_MARKER} ${TET_PATCH_MARKER}
-depend test: .SILENT
+cleandepend depend test: .SILENT
true
.else