Print this page
12259 CTF shouldn't assume enum size
   1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.
  10  */
  11 
  12 /*
  13  * Copyright (c) 2019, Joyent, Inc.
  14  */
  15 
  16 #include <stdint.h>
  17 
  18 /*
  19  * Basic sanity checking of enumerations, using specific numbers and arbitrary
  20  * numbers.
  21  */
  22 
  23 enum ff6 {
  24         TERRA,
  25         LOCKE,
  26         EDGAR,
  27         SABIN,
  28         CELES,
  29         CYAN,
  30         SHADOW,
  31         GAU,
  32         SETZER,
  33         STRAGO,


  55  * that the DWARF enum values were signed; however, in this case we needed to
  56  * check for an unsigned version before a signed version, otherwise some of the
  57  * entries below will have the wrong values.
  58  */
  59 typedef enum chrono {
  60         CRONO = 0x1000,
  61         LUCCA = 0x2000,
  62         MARLE = 0x3000,
  63         FROG = 0x4000,
  64         ROBO = 0x5000,
  65         AYLA = 0x6000,
  66         MAGUS = 0x7000,
  67         SCHALA = 0x8000,
  68         LAVOS = 0x9000,
  69         BALTHAZAR = 0xa000
  70 } chrono_t;
  71 
  72 enum ff6 ff6;
  73 ff10_t ff10;
  74 chrono_t trigger;






























   1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.
  10  */
  11 
  12 /*
  13  * Copyright 2020 Joyent, Inc.
  14  */
  15 
  16 #include <stdint.h>
  17 
  18 /*
  19  * Basic sanity checking of enumerations, using specific numbers and arbitrary
  20  * numbers.
  21  */
  22 
  23 enum ff6 {
  24         TERRA,
  25         LOCKE,
  26         EDGAR,
  27         SABIN,
  28         CELES,
  29         CYAN,
  30         SHADOW,
  31         GAU,
  32         SETZER,
  33         STRAGO,


  55  * that the DWARF enum values were signed; however, in this case we needed to
  56  * check for an unsigned version before a signed version, otherwise some of the
  57  * entries below will have the wrong values.
  58  */
  59 typedef enum chrono {
  60         CRONO = 0x1000,
  61         LUCCA = 0x2000,
  62         MARLE = 0x3000,
  63         FROG = 0x4000,
  64         ROBO = 0x5000,
  65         AYLA = 0x6000,
  66         MAGUS = 0x7000,
  67         SCHALA = 0x8000,
  68         LAVOS = 0x9000,
  69         BALTHAZAR = 0xa000
  70 } chrono_t;
  71 
  72 enum ff6 ff6;
  73 ff10_t ff10;
  74 chrono_t trigger;
  75 
  76 /*
  77  * Normally enums are integer-sized, but a packed enum is a counter-example, as
  78  * is something like trace_alloc_type_t which can't fit in an int.
  79  */
  80 
  81 enum char_enum {
  82         CE1,
  83         CE2
  84 } __attribute__((packed)) ce;
  85 
  86 enum short_enum {
  87         SE1,
  88         SE2,
  89         SE3 = 255,
  90         SE4 = 256,
  91         SE5 = 257
  92 } __attribute__((packed)) se;
  93 
  94 enum int_enum {
  95         IE1,
  96         IE2,
  97         IE3 = 256,
  98         IE4 = 257
  99 } ie;
 100 
 101 enum ll_enum {
 102         LLE1 = -1ULL,
 103         LLE2 = -2ULL,
 104 } lle;