Edit

IABSD.fr/src/regress/include/bitstring/good/32

Branch :

  • Show log

    Commit

  • Author : bluhm
    Date : 2024-08-26 12:15:40
    Hash : a4a66a2b
    Message : Test bitstring macro evaluation. For all bitstring macros, add a test with side effects in the arguments. Also fix compiler warnings and wrap long line. In main() replace exit(0) with return(0) to check stack canary. Create expected test files with make target create-good. OK florian deraadt@

  • regress/include/bitstring/good/32
  • Testing with TEST_LENGTH = 32
    
    test _bit_byte, _bit_mask, and bitstr_size
      i   _bit_byte(i)   _bit_mask(i) bitstr_size(i)
      0              0              1              0
      1              0              2              1
      2              0              4              1
      3              0              8              1
      4              0             16              1
      5              0             32              1
      6              0             64              1
      7              0            128              1
      8              1              1              1
      9              1              2              2
     10              1              4              2
     11              1              8              2
     12              1             16              2
     13              1             32              2
     14              1             64              2
     15              1            128              2
     16              2              1              2
     17              2              2              3
     18              2              4              3
     19              2              8              3
     20              2             16              3
     21              2             32              3
     22              2             64              3
     23              2            128              3
     24              3              1              3
     25              3              2              4
     26              3              4              4
     27              3              8              4
     28              3             16              4
     29              3             32              4
     30              3             64              4
     31              3            128              4
    
    test bit_alloc, clearbits, bit_ffc, bit_ffs
    be:   0  -1 00000000000000000000000000000000
    is:   0  -1 00000000000000000000000000000000
    
    test bit_set
    be:   1   0 10010010010010010010010010010010
    is:   1   0 10010010010010010010010010010010
    
    test bit_clear
    be:   0   3 00010000010000010000010000010000
    is:   0   3 00010000010000010000010000010000
    
    test bit_test using previous bitstring
      i    bit_test(i)
      0              0
      1              0
      2              0
      3              8
      4              0
      5              0
      6              0
      7              0
      8              0
      9              2
     10              0
     11              0
     12              0
     13              0
     14              0
     15            128
     16              0
     17              0
     18              0
     19              0
     20              0
     21             32
     22              0
     23              0
     24              0
     25              0
     26              0
     27              8
     28              0
     29              0
     30              0
     31              0
    
    test clearbits
    be:   0  -1 00000000000000000000000000000000
    is:   0  -1 00000000000000000000000000000000
    
    test bit_nset and bit_nclear
    be:   0   1 01111111111111111111111111111110
    is:   0   1 01111111111111111111111111111110
    be:   0   1 01000000000000000000000000000010
    is:   0   1 01000000000000000000000000000010
    be:   0  -1 00000000000000000000000000000000
    is:   0  -1 00000000000000000000000000000000
    be:  31   0 11111111111111111111111111111110
    is:  31   0 11111111111111111111111111111110
    be:   0  -1 00000000000000000000000000000000
    is:   0  -1 00000000000000000000000000000000
    
    first 1 bit should move right 1 position each line
      0  -1   0 11111111111111111111111111111111
      1   0   1 01111111111111111111111111111111
      2   0   2 00111111111111111111111111111111
      3   0   3 00011111111111111111111111111111
      4   0   4 00001111111111111111111111111111
      5   0   5 00000111111111111111111111111111
      6   0   6 00000011111111111111111111111111
      7   0   7 00000001111111111111111111111111
      8   0   8 00000000111111111111111111111111
      9   0   9 00000000011111111111111111111111
     10   0  10 00000000001111111111111111111111
     11   0  11 00000000000111111111111111111111
     12   0  12 00000000000011111111111111111111
     13   0  13 00000000000001111111111111111111
     14   0  14 00000000000000111111111111111111
     15   0  15 00000000000000011111111111111111
     16   0  16 00000000000000001111111111111111
     17   0  17 00000000000000000111111111111111
     18   0  18 00000000000000000011111111111111
     19   0  19 00000000000000000001111111111111
     20   0  20 00000000000000000000111111111111
     21   0  21 00000000000000000000011111111111
     22   0  22 00000000000000000000001111111111
     23   0  23 00000000000000000000000111111111
     24   0  24 00000000000000000000000011111111
     25   0  25 00000000000000000000000001111111
     26   0  26 00000000000000000000000000111111
     27   0  27 00000000000000000000000000011111
     28   0  28 00000000000000000000000000001111
     29   0  29 00000000000000000000000000000111
     30   0  30 00000000000000000000000000000011
     31   0  31 00000000000000000000000000000001
    
    first 0 bit should move right 1 position each line
      0   0  -1 00000000000000000000000000000000
      1   1   0 10000000000000000000000000000000
      2   2   0 11000000000000000000000000000000
      3   3   0 11100000000000000000000000000000
      4   4   0 11110000000000000000000000000000
      5   5   0 11111000000000000000000000000000
      6   6   0 11111100000000000000000000000000
      7   7   0 11111110000000000000000000000000
      8   8   0 11111111000000000000000000000000
      9   9   0 11111111100000000000000000000000
     10  10   0 11111111110000000000000000000000
     11  11   0 11111111111000000000000000000000
     12  12   0 11111111111100000000000000000000
     13  13   0 11111111111110000000000000000000
     14  14   0 11111111111111000000000000000000
     15  15   0 11111111111111100000000000000000
     16  16   0 11111111111111110000000000000000
     17  17   0 11111111111111111000000000000000
     18  18   0 11111111111111111100000000000000
     19  19   0 11111111111111111110000000000000
     20  20   0 11111111111111111111000000000000
     21  21   0 11111111111111111111100000000000
     22  22   0 11111111111111111111110000000000
     23  23   0 11111111111111111111111000000000
     24  24   0 11111111111111111111111100000000
     25  25   0 11111111111111111111111110000000
     26  26   0 11111111111111111111111111000000
     27  27   0 11111111111111111111111111100000
     28  28   0 11111111111111111111111111110000
     29  29   0 11111111111111111111111111111000
     30  30   0 11111111111111111111111111111100
     31  31   0 11111111111111111111111111111110
    
    first 0 bit should move left 1 position each line
      0  -1   0 11111111111111111111111111111111
      1  31   0 11111111111111111111111111111110
      2  30   0 11111111111111111111111111111100
      3  29   0 11111111111111111111111111111000
      4  28   0 11111111111111111111111111110000
      5  27   0 11111111111111111111111111100000
      6  26   0 11111111111111111111111111000000
      7  25   0 11111111111111111111111110000000
      8  24   0 11111111111111111111111100000000
      9  23   0 11111111111111111111111000000000
     10  22   0 11111111111111111111110000000000
     11  21   0 11111111111111111111100000000000
     12  20   0 11111111111111111111000000000000
     13  19   0 11111111111111111110000000000000
     14  18   0 11111111111111111100000000000000
     15  17   0 11111111111111111000000000000000
     16  16   0 11111111111111110000000000000000
     17  15   0 11111111111111100000000000000000
     18  14   0 11111111111111000000000000000000
     19  13   0 11111111111110000000000000000000
     20  12   0 11111111111100000000000000000000
     21  11   0 11111111111000000000000000000000
     22  10   0 11111111110000000000000000000000
     23   9   0 11111111100000000000000000000000
     24   8   0 11111111000000000000000000000000
     25   7   0 11111110000000000000000000000000
     26   6   0 11111100000000000000000000000000
     27   5   0 11111000000000000000000000000000
     28   4   0 11110000000000000000000000000000
     29   3   0 11100000000000000000000000000000
     30   2   0 11000000000000000000000000000000
     31   1   0 10000000000000000000000000000000
    
    first 1 bit should move left 1 position each line
      0   0  -1 00000000000000000000000000000000
      1   0  31 00000000000000000000000000000001
      2   0  30 00000000000000000000000000000011
      3   0  29 00000000000000000000000000000111
      4   0  28 00000000000000000000000000001111
      5   0  27 00000000000000000000000000011111
      6   0  26 00000000000000000000000000111111
      7   0  25 00000000000000000000000001111111
      8   0  24 00000000000000000000000011111111
      9   0  23 00000000000000000000000111111111
     10   0  22 00000000000000000000001111111111
     11   0  21 00000000000000000000011111111111
     12   0  20 00000000000000000000111111111111
     13   0  19 00000000000000000001111111111111
     14   0  18 00000000000000000011111111111111
     15   0  17 00000000000000000111111111111111
     16   0  16 00000000000000001111111111111111
     17   0  15 00000000000000011111111111111111
     18   0  14 00000000000000111111111111111111
     19   0  13 00000000000001111111111111111111
     20   0  12 00000000000011111111111111111111
     21   0  11 00000000000111111111111111111111
     22   0  10 00000000001111111111111111111111
     23   0   9 00000000011111111111111111111111
     24   0   8 00000000111111111111111111111111
     25   0   7 00000001111111111111111111111111
     26   0   6 00000011111111111111111111111111
     27   0   5 00000111111111111111111111111111
     28   0   4 00001111111111111111111111111111
     29   0   3 00011111111111111111111111111111
     30   0   2 00111111111111111111111111111111
     31   0   1 01111111111111111111111111111111
    
    0 bit should move right 1 position each line
      0   0   1 01111111111111111111111111111111
      1   1   0 10111111111111111111111111111111
      2   2   0 11011111111111111111111111111111
      3   3   0 11101111111111111111111111111111
      4   4   0 11110111111111111111111111111111
      5   5   0 11111011111111111111111111111111
      6   6   0 11111101111111111111111111111111
      7   7   0 11111110111111111111111111111111
      8   8   0 11111111011111111111111111111111
      9   9   0 11111111101111111111111111111111
     10  10   0 11111111110111111111111111111111
     11  11   0 11111111111011111111111111111111
     12  12   0 11111111111101111111111111111111
     13  13   0 11111111111110111111111111111111
     14  14   0 11111111111111011111111111111111
     15  15   0 11111111111111101111111111111111
     16  16   0 11111111111111110111111111111111
     17  17   0 11111111111111111011111111111111
     18  18   0 11111111111111111101111111111111
     19  19   0 11111111111111111110111111111111
     20  20   0 11111111111111111111011111111111
     21  21   0 11111111111111111111101111111111
     22  22   0 11111111111111111111110111111111
     23  23   0 11111111111111111111111011111111
     24  24   0 11111111111111111111111101111111
     25  25   0 11111111111111111111111110111111
     26  26   0 11111111111111111111111111011111
     27  27   0 11111111111111111111111111101111
     28  28   0 11111111111111111111111111110111
     29  29   0 11111111111111111111111111111011
     30  30   0 11111111111111111111111111111101
     31  31   0 11111111111111111111111111111110
    
    1 bit should move right 1 position each line
      0   1   0 10000000000000000000000000000000
      1   0   1 01000000000000000000000000000000
      2   0   2 00100000000000000000000000000000
      3   0   3 00010000000000000000000000000000
      4   0   4 00001000000000000000000000000000
      5   0   5 00000100000000000000000000000000
      6   0   6 00000010000000000000000000000000
      7   0   7 00000001000000000000000000000000
      8   0   8 00000000100000000000000000000000
      9   0   9 00000000010000000000000000000000
     10   0  10 00000000001000000000000000000000
     11   0  11 00000000000100000000000000000000
     12   0  12 00000000000010000000000000000000
     13   0  13 00000000000001000000000000000000
     14   0  14 00000000000000100000000000000000
     15   0  15 00000000000000010000000000000000
     16   0  16 00000000000000001000000000000000
     17   0  17 00000000000000000100000000000000
     18   0  18 00000000000000000010000000000000
     19   0  19 00000000000000000001000000000000
     20   0  20 00000000000000000000100000000000
     21   0  21 00000000000000000000010000000000
     22   0  22 00000000000000000000001000000000
     23   0  23 00000000000000000000000100000000
     24   0  24 00000000000000000000000010000000
     25   0  25 00000000000000000000000001000000
     26   0  26 00000000000000000000000000100000
     27   0  27 00000000000000000000000000010000
     28   0  28 00000000000000000000000000001000
     29   0  29 00000000000000000000000000000100
     30   0  30 00000000000000000000000000000010
     31   0  31 00000000000000000000000000000001
    
    CHI square test
      0   1   0 10000000000000000000000000000001
      1   0   1 01000000000000000000000000000010
      2   0   2 00100000000000000000000000000100
      3   0   3 00010000000000000000000000001000
      4   0   4 00001000000000000000000000010000
      5   0   5 00000100000000000000000000100000
      6   0   6 00000010000000000000000001000000
      7   0   7 00000001000000000000000010000000
      8   0   8 00000000100000000000000100000000
      9   0   9 00000000010000000000001000000000
     10   0  10 00000000001000000000010000000000
     11   0  11 00000000000100000000100000000000
     12   0  12 00000000000010000001000000000000
     13   0  13 00000000000001000010000000000000
     14   0  14 00000000000000100100000000000000
     15   0  15 00000000000000011000000000000000
     16   0  15 00000000000000011000000000000000
     17   0  14 00000000000000100100000000000000
     18   0  13 00000000000001000010000000000000
     19   0  12 00000000000010000001000000000000
     20   0  11 00000000000100000000100000000000
     21   0  10 00000000001000000000010000000000
     22   0   9 00000000010000000000001000000000
     23   0   8 00000000100000000000000100000000
     24   0   7 00000001000000000000000010000000
     25   0   6 00000010000000000000000001000000
     26   0   5 00000100000000000000000000100000
     27   0   4 00001000000000000000000000010000
     28   0   3 00010000000000000000000000001000
     29   0   2 00100000000000000000000000000100
     30   0   1 01000000000000000000000000000010
     31   1   0 10000000000000000000000000000001
    
    macros should evaluate arguments only once
    _bit_byte(0) -> 1
    _bit_mask(1) -> 2
    bitstr_size(2) -> 3
    bit_alloc(3) -> 4
    bit_alloc(4) -> 5
    bit_test(5) -> 6
    bit_set(6) -> 7
    bit_clear(7) -> 8
    bit_nclear(8, 9) -> 10
    bit_nset(10, 11) -> 12
    bit_ffc(12, 0) -> 13
    bit_ffs(13, 0) -> 14