warnings.h 5.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef NASM_WARNINGS_H
  2. #define NASM_WARNINGS_H
  3. #ifndef WARN_SHR
  4. # error "warnings.h should only be included from within error.h"
  5. #endif
  6. enum warn_index {
  7. WARN_IDX_NONE = 0, /* not suppressible */
  8. WARN_IDX_BND = 1, /* invalid BND prefixes */
  9. WARN_IDX_DB_EMPTY = 2, /* no operand for data declaration */
  10. WARN_IDX_ENVIRONMENT = 3, /* nonexistent environment variable */
  11. WARN_IDX_FLOAT_DENORM = 4, /* floating point denormal */
  12. WARN_IDX_FLOAT_OVERFLOW = 5, /* floating point overflow */
  13. WARN_IDX_FLOAT_TOOLONG = 6, /* too many digits in floating-point number */
  14. WARN_IDX_FLOAT_UNDERFLOW = 7, /* floating point underflow */
  15. WARN_IDX_HLE = 8, /* invalid HLE prefixes */
  16. WARN_IDX_LABEL_ORPHAN = 9, /* labels alone on lines without trailing `:' */
  17. WARN_IDX_LABEL_REDEF = 10, /* label redefined to an identical value */
  18. WARN_IDX_LABEL_REDEF_LATE = 11, /* label (re)defined during code generation */
  19. WARN_IDX_LOCK = 12, /* LOCK prefix on unlockable instructions */
  20. WARN_IDX_MACRO_DEFAULTS = 13, /* macros with more default than optional parameters */
  21. WARN_IDX_MACRO_PARAMS_LEGACY = 14, /* improperly calling multi-line macro for legacy support */
  22. WARN_IDX_MACRO_PARAMS_MULTI = 15, /* multi-line macro calls with wrong parameter count */
  23. WARN_IDX_MACRO_PARAMS_SINGLE = 16, /* single-line macro calls with wrong parameter count */
  24. WARN_IDX_NEGATIVE_REP = 17, /* regative %rep count */
  25. WARN_IDX_NUMBER_OVERFLOW = 18, /* numeric constant does not fit */
  26. WARN_IDX_OBSOLETE_NOP = 19, /* instruction obsolete and is a noop on the target CPU */
  27. WARN_IDX_OBSOLETE_REMOVED = 20, /* instruction obsolete and removed on the target CPU */
  28. WARN_IDX_OBSOLETE_VALID = 21, /* instruction obsolete but valid on the target CPU */
  29. WARN_IDX_PHASE = 22, /* phase error during stabilization */
  30. WARN_IDX_PRAGMA_BAD = 23, /* malformed %pragma */
  31. WARN_IDX_PRAGMA_EMPTY = 24, /* empty %pragma directive */
  32. WARN_IDX_PRAGMA_NA = 25, /* %pragma not applicable to this compilation */
  33. WARN_IDX_PRAGMA_UNKNOWN = 26, /* unknown %pragma facility or directive */
  34. WARN_IDX_PTR = 27, /* non-NASM keyword used in other assemblers */
  35. WARN_IDX_REGSIZE = 28, /* register size specification ignored */
  36. WARN_IDX_UNKNOWN_WARNING = 29, /* unknown warning in -W/-w or warning directive */
  37. WARN_IDX_USER = 30, /* %warning directives */
  38. WARN_IDX_WARN_STACK_EMPTY = 31, /* warning stack empty */
  39. WARN_IDX_ZEROING = 32, /* RESx in initialized section becomes zero */
  40. WARN_IDX_ZEXT_RELOC = 33, /* relocation zero-extended to match output format */
  41. WARN_IDX_OTHER = 34, /* any warning not specifially mentioned above */
  42. WARN_IDX_ALL = 35 /* all possible warnings */
  43. };
  44. enum warn_const {
  45. WARN_NONE = 0 << WARN_SHR,
  46. WARN_BND = 1 << WARN_SHR,
  47. WARN_DB_EMPTY = 2 << WARN_SHR,
  48. WARN_ENVIRONMENT = 3 << WARN_SHR,
  49. WARN_FLOAT_DENORM = 4 << WARN_SHR,
  50. WARN_FLOAT_OVERFLOW = 5 << WARN_SHR,
  51. WARN_FLOAT_TOOLONG = 6 << WARN_SHR,
  52. WARN_FLOAT_UNDERFLOW = 7 << WARN_SHR,
  53. WARN_HLE = 8 << WARN_SHR,
  54. WARN_LABEL_ORPHAN = 9 << WARN_SHR,
  55. WARN_LABEL_REDEF = 10 << WARN_SHR,
  56. WARN_LABEL_REDEF_LATE = 11 << WARN_SHR,
  57. WARN_LOCK = 12 << WARN_SHR,
  58. WARN_MACRO_DEFAULTS = 13 << WARN_SHR,
  59. WARN_MACRO_PARAMS_LEGACY = 14 << WARN_SHR,
  60. WARN_MACRO_PARAMS_MULTI = 15 << WARN_SHR,
  61. WARN_MACRO_PARAMS_SINGLE = 16 << WARN_SHR,
  62. WARN_NEGATIVE_REP = 17 << WARN_SHR,
  63. WARN_NUMBER_OVERFLOW = 18 << WARN_SHR,
  64. WARN_OBSOLETE_NOP = 19 << WARN_SHR,
  65. WARN_OBSOLETE_REMOVED = 20 << WARN_SHR,
  66. WARN_OBSOLETE_VALID = 21 << WARN_SHR,
  67. WARN_PHASE = 22 << WARN_SHR,
  68. WARN_PRAGMA_BAD = 23 << WARN_SHR,
  69. WARN_PRAGMA_EMPTY = 24 << WARN_SHR,
  70. WARN_PRAGMA_NA = 25 << WARN_SHR,
  71. WARN_PRAGMA_UNKNOWN = 26 << WARN_SHR,
  72. WARN_PTR = 27 << WARN_SHR,
  73. WARN_REGSIZE = 28 << WARN_SHR,
  74. WARN_UNKNOWN_WARNING = 29 << WARN_SHR,
  75. WARN_USER = 30 << WARN_SHR,
  76. WARN_WARN_STACK_EMPTY = 31 << WARN_SHR,
  77. WARN_ZEROING = 32 << WARN_SHR,
  78. WARN_ZEXT_RELOC = 33 << WARN_SHR,
  79. WARN_OTHER = 34 << WARN_SHR
  80. };
  81. struct warning_alias {
  82. const char *name;
  83. enum warn_index warning;
  84. };
  85. #define NUM_WARNING_ALIAS 39
  86. extern const char * const warning_name[36];
  87. extern const char * const warning_help[36];
  88. extern const struct warning_alias warning_alias[NUM_WARNING_ALIAS];
  89. extern const uint8_t warning_default[35];
  90. extern uint8_t warning_state[35];
  91. #endif /* NASM_WARNINGS_H */