1 /* Test ambiguous forward lookups post-deduplication.
2 
3    This also makes sure that deduplication succeeds in this case and does not
4    throw spurious errors.  */
5 
6 #include <ctf-api.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 
10 int
main(int argc,char * argv[])11 main (int argc, char *argv[])
12 {
13   ctf_dict_t *fp;
14   ctf_archive_t *ctf;
15   ctf_id_t type;
16   ctf_arinfo_t ar;
17   int err;
18 
19   if (argc != 2)
20     {
21       fprintf (stderr, "Syntax: %s PROGRAM\n", argv[0]);
22       exit(1);
23     }
24 
25   if ((ctf = ctf_open (argv[1], NULL, &err)) == NULL)
26     goto open_err;
27   if ((fp = ctf_dict_open (ctf, NULL, &err)) == NULL)
28     goto open_err;
29 
30   /* Dig out the array type and resolve its element type.  */
31 
32   if ((type = ctf_lookup_by_name (fp, "a_array") ) == CTF_ERR)
33     goto err;
34   if ((type = ctf_type_resolve (fp, type)) == CTF_ERR)
35     goto err;
36   if (ctf_array_info (fp, type, &ar) < 0)
37     goto err;
38   printf ("Kind of array element is %i\n", ctf_type_kind (fp, ar.ctr_contents));
39 
40   ctf_dict_close (fp);
41   ctf_close (ctf);
42 
43   return 0;
44 
45  open_err:
46   fprintf (stderr, "%s: cannot open: %s\n", argv[0], ctf_errmsg (err));
47   return 1;
48  err:
49   fprintf (stderr, "Lookup failed: %s\n", ctf_errmsg (ctf_errno (fp)));
50   return 1;
51 }
52