aboutsummaryrefslogtreecommitdiff
path: root/libctf/testsuite/libctf-writable
diff options
context:
space:
mode:
Diffstat (limited to 'libctf/testsuite/libctf-writable')
-rw-r--r--libctf/testsuite/libctf-writable/ctf-compressed.c4
-rw-r--r--libctf/testsuite/libctf-writable/ctf-nonroot-addition.c38
-rw-r--r--libctf/testsuite/libctf-writable/ctf-nonroot-addition.lk1
-rw-r--r--libctf/testsuite/libctf-writable/ctf-nonroot-linking.c11
4 files changed, 43 insertions, 11 deletions
diff --git a/libctf/testsuite/libctf-writable/ctf-compressed.c b/libctf/testsuite/libctf-writable/ctf-compressed.c
index 4769cdb..646b603 100644
--- a/libctf/testsuite/libctf-writable/ctf-compressed.c
+++ b/libctf/testsuite/libctf-writable/ctf-compressed.c
@@ -119,10 +119,14 @@ main (int argc, char *argv[])
/* Dump the header of each archive member, and search for CTF_F_COMPRESS in
the resulting dump. */
+ err = 666;
while ((dump_fp = ctf_archive_next (final_arc, &i, NULL, 0, &err)) != NULL)
{
char *dumpstr;
+ if (err != 0)
+ fprintf (stderr, "err not set to success on success\n");
+
while ((dumpstr = ctf_dump (dump_fp, &dump_state, CTF_SECT_HEADER,
NULL, NULL)) != NULL)
{
diff --git a/libctf/testsuite/libctf-writable/ctf-nonroot-addition.c b/libctf/testsuite/libctf-writable/ctf-nonroot-addition.c
new file mode 100644
index 0000000..94ce05c
--- /dev/null
+++ b/libctf/testsuite/libctf-writable/ctf-nonroot-addition.c
@@ -0,0 +1,38 @@
+/* Make sure adding a non-root-visible type after adding a root-visible forward
+ adds a new type rather than promoting and returning the existing one. */
+
+#include <ctf-api.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (int argc, char *argv[])
+{
+ ctf_dict_t *fp;
+ ctf_id_t root, nonroot;
+ int err;
+
+ if ((fp = ctf_create (&err)) == NULL)
+ {
+ fprintf (stderr, "Cannot create: %s\n", ctf_errmsg (err));
+ return 1;
+ }
+
+ if ((root = ctf_add_forward (fp, CTF_ADD_ROOT, "foo", CTF_K_ENUM)) == CTF_ERR)
+ goto add_err;
+
+ if ((nonroot = ctf_add_enum (fp, CTF_ADD_NONROOT, "foo")) == CTF_ERR)
+ goto add_err;
+
+ if (nonroot == root)
+ fprintf (stderr, "Non-root addition should not promote root-visible forwards\n");
+ else
+ printf ("All done.\n");
+
+ ctf_dict_close (fp);
+ return 0;
+
+ add_err:
+ fprintf (stderr, "Cannot add: %s\n", ctf_errmsg (ctf_errno (fp)));
+}
diff --git a/libctf/testsuite/libctf-writable/ctf-nonroot-addition.lk b/libctf/testsuite/libctf-writable/ctf-nonroot-addition.lk
new file mode 100644
index 0000000..b944f73
--- /dev/null
+++ b/libctf/testsuite/libctf-writable/ctf-nonroot-addition.lk
@@ -0,0 +1 @@
+All done.
diff --git a/libctf/testsuite/libctf-writable/ctf-nonroot-linking.c b/libctf/testsuite/libctf-writable/ctf-nonroot-linking.c
index 6edd189..67b85eb 100644
--- a/libctf/testsuite/libctf-writable/ctf-nonroot-linking.c
+++ b/libctf/testsuite/libctf-writable/ctf-nonroot-linking.c
@@ -24,16 +24,6 @@ main (int argc, char *argv[])
ctf_next_t *i = NULL;
int err;
- /* Linking does not currently work on mingw because of an unreliable tmpfile
- implementation on that platform (see
- https://github.com/msys2/MINGW-packages/issues/18878). Simply skip for
- now. */
-
-#ifdef __MINGW32__
- printf ("UNSUPPORTED: platform bug breaks ctf_link\n");
- return 0;
-#else
-
if ((fp = ctf_create (&err)) == NULL)
goto create_err;
@@ -123,5 +113,4 @@ main (int argc, char *argv[])
link_err:
fprintf (stderr, "Cannot link: %s\n", ctf_errmsg (ctf_errno (fp)));
return 1;
-#endif
}