Print this page
    
12259 CTF shouldn't assume enum size
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/test/util-tests/tests/ctf/check-common.h
          +++ new/usr/src/test/util-tests/tests/ctf/check-common.h
   1    1  /*
   2    2   * This file and its contents are supplied under the terms of the
  
    | 
      ↓ open down ↓ | 
    2 lines elided | 
    
      ↑ open up ↑ | 
  
   3    3   * Common Development and Distribution License ("CDDL"), version 1.0.
   4    4   * You may only use this file in accordance with the terms of version
   5    5   * 1.0 of the CDDL.
   6    6   *
   7    7   * A full copy of the text of the CDDL should have accompanied this
   8    8   * source.  A copy of the CDDL is also available via the Internet at
   9    9   * http://www.illumos.org/license/CDDL.
  10   10   */
  11   11  
  12   12  /*
  13      - * Copyright 2019, Joyent, Inc.
       13 + * Copyright 2020 Joyent, Inc.
  14   14   */
  15   15  
  16   16  #ifndef _CHECK_COMMON_H
  17   17  #define _CHECK_COMMON_H
  18   18  
  19   19  /*
  20   20   * Common definitions for the CTF tests
  21   21   */
  22   22  
  23   23  #include <stdlib.h>
  24   24  #include <unistd.h>
  25   25  #include <libctf.h>
  26   26  #include <err.h>
  27   27  #include <strings.h>
  28   28  #include <sys/param.h>
  29   29  
  30   30  #ifdef __cplusplus
  31   31  extern "C" {
  32   32  #endif
  33   33  
  34   34  typedef struct check_number {
  35   35          const char *cn_tname;
  36   36          uint_t cn_kind;
  37   37          uint_t cn_flags;
  38   38          uint_t cn_offset;
  39   39          uint_t cn_size;
  40   40  } check_number_t;
  41   41  
  42   42  typedef struct check_symbol {
  43   43          const char *cs_symbol;
  44   44          const char *cs_type;
  45   45  } check_symbol_t;
  46   46  
  47   47  typedef struct check_descent {
  48   48          const char *cd_tname;
  49   49          uint_t cd_kind;
  50   50          const char *cd_contents;
  51   51          uint_t cd_nents;
  52   52  } check_descent_t;
  53   53  
  54   54  typedef struct check_descent_test {
  55   55          const char *cdt_sym;
  56   56          const check_descent_t *cdt_tests;
  57   57  } check_descent_test_t;
  58   58  
  59   59  typedef struct check_enum {
  60   60          const char *ce_name;
  61   61          int64_t ce_value;
  62   62  } check_enum_t;
  63   63  
  64   64  typedef struct check_enum_test {
  65   65          const char *cet_type;
  66   66          const check_enum_t *cet_tests;
  67   67  } check_enum_test_t;
  68   68  
  69   69  typedef struct check_member {
  70   70          const char *cm_name;
  71   71          const char *cm_type;
  72   72          ulong_t cm_offset;
  73   73  } check_member_t;
  74   74  
  75   75  typedef struct check_member_test {
  76   76          const char *cmt_type;
  77   77          int cmt_kind;
  78   78          size_t cmt_size;
  79   79          const check_member_t *cmt_members;
  
    | 
      ↓ open down ↓ | 
    56 lines elided | 
    
      ↑ open up ↑ | 
  
  80   80  } check_member_test_t;
  81   81  
  82   82  typedef struct check_function_test {
  83   83          const char *cft_name;
  84   84          const char *cft_rtype;
  85   85          uint_t cft_nargs;
  86   86          uint_t cft_flags;
  87   87          const char **cft_args;
  88   88  } check_function_test_t;
  89   89  
       90 +typedef struct check_size_test {
       91 +        const char *cst_name;
       92 +        size_t cst_size;
       93 +} check_size_test_t;
       94 +
  90   95  /*
  91   96   * Looks up each type and verifies that it matches the expected type.
  92   97   */
  93   98  extern boolean_t ctftest_check_numbers(ctf_file_t *, const check_number_t *);
  94   99  
  95  100  /*
  96  101   * Looks at each symbol specified and verifies that it matches the expected
  97  102   * type.
  98  103   */
  99  104  extern boolean_t ctftest_check_symbols(ctf_file_t *, const check_symbol_t *);
 100  105  
 101  106  /*
 102  107   * Given a symbol name which refers to a type, walks all the references of that
 103  108   * type and checks against it with each subsequent entry.
 104  109   */
 105  110  extern boolean_t ctftest_check_descent(const char *, ctf_file_t *,
 106  111      const check_descent_t *, boolean_t);
 107  112  
 108  113  /*
 109  114   * Checks that all of the listed members of an enum are present and have the
 110  115   * right values.
 111  116   */
 112  117  extern boolean_t ctftest_check_enum(const char *, ctf_file_t *,
 113  118      const check_enum_t *);
 114  119  
 115  120  /*
 116  121   * Checks that all of the members of a structure or union are present and have
 117  122   * the right types and byte offsets. This can be used for either structures or
 118  123   * unions.
 119  124   */
 120  125  extern boolean_t ctftest_check_members(const char *, ctf_file_t *, int, size_t,
 121  126      const check_member_t *);
 122  127  
  
    | 
      ↓ open down ↓ | 
    23 lines elided | 
    
      ↑ open up ↑ | 
  
 123  128  /*
 124  129   * Check that the named function or function pointer has the correct return
 125  130   * type, arguments, and function flags.
 126  131   */
 127  132  extern boolean_t ctftest_check_function(const char *, ctf_file_t *,
 128  133      const char *, uint_t, uint_t, const char **);
 129  134  extern boolean_t ctftest_check_fptr(const char *, ctf_file_t *,
 130  135      const char *, uint_t, uint_t, const char **);
 131  136  
 132  137  /*
      138 + * Check size of types.
      139 + */
      140 +extern boolean_t ctftest_check_size(const char *, ctf_file_t *, size_t);
      141 +
      142 +/*
 133  143   * Determine whether or not we have a duplicate type or not based on its name.
 134  144   */
 135  145  extern boolean_t ctftest_duplicates(ctf_file_t *);
 136  146  
 137  147  #ifdef __cplusplus
 138  148  }
 139  149  #endif
 140  150  
 141  151  #endif /* _CHECK_COMMON_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX