The fix is avoiding a core dump for radare2 project.
Unified · Split
| @@ -2093,7 +2093,7 @@ static int adjust_bf(SValue *sv, int bit_pos, int bit_size) · 2092 unmodified lines | |||
| 2093 | return 0; | 2093 | return 0; |
| 2094 | t = sv->type.ref->auxtype; | 2094 | t = sv->type.ref->auxtype; |
| 2095 | if (t != -1 && t != VT_STRUCT) { | 2095 | if (t != -1 && t != VT_STRUCT) { |
| 2096 | sv->type.t = (sv->type.t & ~VT_BTYPE) | t; | 2096 | sv->type.t = (sv->type.t & ~(VT_BTYPE | VT_LONG)) | t; |
| 2097 | sv->r |= VT_LVAL; | 2097 | sv->r |= VT_LVAL; |
| 2098 | } | 2098 | } |
| 2099 | return t; | 2099 | return t; |
| @@ -77,6 +77,22 @@ · 76 unmodified lines | |||
| 77 | TEST_STRUCT(1,2,3,4,-3); | 77 | TEST_STRUCT(1,2,3,4,-3); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | /* ----------------------------------------------------------------------- */ | ||
| 81 | #elif TEST == 7 | ||
| 82 | { | ||
| 83 | struct M P __s { | ||
| 84 | long int d : 16; | ||
| 85 | long int b : 16; | ||
| 86 | long int x : 16; | ||
| 87 | long int y : 1; | ||
| 88 | long int z : 2; | ||
| 89 | long int a : 11; | ||
| 90 | long int e : 1; | ||
| 91 | long int f : 1; | ||
| 92 | }; | ||
| 93 | TEST_STRUCT(1,2,3,4,5); | ||
| 94 | } | ||
| 95 | |||
| 80 | /* ----------------------------------------------------------------------- */ | 96 | /* ----------------------------------------------------------------------- */ |
| 81 | #elif defined PACK | 97 | #elif defined PACK |
| 82 | 98 | ||
| @@ -101,6 +117,8 @@ top = 0; · 18 unmodified lines | |||
| 101 | #include SELF | 117 | #include SELF |
| 102 | #define TEST 6 | 118 | #define TEST 6 |
| 103 | #include SELF | 119 | #include SELF |
| 120 | #define TEST 7 | ||
| 121 | #include SELF | ||
| 104 | 122 | ||
| 105 | #if PACK | 123 | #if PACK |
| 106 | # pragma pack(pop) | 124 | # pragma pack(pop) |
| @@ -34,6 +34,12 @@ bits as set : 00000030002001FD00000004 · 33 unmodified lines | |||
| 34 | values : 01 02 03 04 fffffffd | 34 | values : 01 02 03 04 fffffffd |
| 35 | align/size : 4 12 | 35 | align/size : 4 12 |
| 36 | 36 | ||
| 37 | ---- TEST 7 ---- | ||
| 38 | bits in use : 3FFFFFFFFFFF0000 | ||
| 39 | bits as set : 0026000100050000 | ||
| 40 | values : 01 00 ffffffff 04 05 | ||
| 41 | align/size : 8 8 | ||
| 42 | |||
| 37 | 43 | ||
| 38 | 44 | ||
| 39 | ---- TEST 1 - PACKED ---- | 45 | ---- TEST 1 - PACKED ---- |
| @@ -72,6 +78,12 @@ bits as set : 0030002001FD00000004 · 32 unmodified lines | |||
| 72 | values : 01 02 03 04 fffffffd | 78 | values : 01 02 03 04 fffffffd |
| 73 | align/size : 1 10 | 79 | align/size : 1 10 |
| 74 | 80 | ||
| 81 | ---- TEST 7 - PACKED ---- | ||
| 82 | bits in use : 3FFFFFFFFFFF0000 | ||
| 83 | bits as set : 0026000100050000 | ||
| 84 | values : 01 00 ffffffff 04 05 | ||
| 85 | align/size : 1 8 | ||
| 86 | |||
| 75 | 87 | ||
| 76 | 88 | ||
| 77 | ---- TEST 1 - WITH ALIGN ---- | 89 | ---- TEST 1 - WITH ALIGN ---- |
| @@ -110,6 +122,12 @@ bits as set : 00000030002001FD00000004 · 32 unmodified lines | |||
| 110 | values : 01 02 03 04 fffffffd | 122 | values : 01 02 03 04 fffffffd |
| 111 | align/size : 4 12 | 123 | align/size : 4 12 |
| 112 | 124 | ||
| 125 | ---- TEST 7 - WITH ALIGN ---- | ||
| 126 | bits in use : 3FFFFFFFFFFF0000 | ||
| 127 | bits as set : 0026000100050000 | ||
| 128 | values : 01 00 ffffffff 04 05 | ||
| 129 | align/size : 8 8 | ||
| 130 | |||
| 113 | 131 | ||
| 114 | 132 | ||
| 115 | ---- TEST 1 - PACKED - WITH ALIGN ---- | 133 | ---- TEST 1 - PACKED - WITH ALIGN ---- |
| @@ -147,3 +165,9 @@ bits in use : 007000FFFFFFFFFFFFFF · 31 unmodified lines | |||
| 147 | bits as set : 0030002001FD00000004 | 165 | bits as set : 0030002001FD00000004 |
| 148 | values : 01 02 03 04 fffffffd | 166 | values : 01 02 03 04 fffffffd |
| 149 | align/size : 1 10 | 167 | align/size : 1 10 |
| 168 | |||
| 169 | ---- TEST 7 - PACKED - WITH ALIGN ---- | ||
| 170 | bits in use : 3FFFFFFFFFFF0000 | ||
| 171 | bits as set : 0026000100050000 | ||
| 172 | values : 01 00 ffffffff 04 05 | ||
| 173 | align/size : 1 8 | ||
| @@ -34,6 +34,12 @@ bits as set : 000000000000003000002001000000FD00000004 · 33 unmodified lines | |||
| 34 | values : 01 02 03 04 fffffffd | 34 | values : 01 02 03 04 fffffffd |
| 35 | align/size : 4 20 | 35 | align/size : 4 20 |
| 36 | 36 | ||
| 37 | ---- TEST 7 - MS-BITFIELDS ---- | ||
| 38 | bits in use : 3FFFFFFFFFFF0000 | ||
| 39 | bits as set : 0026000100050000 | ||
| 40 | values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005 | ||
| 41 | align/size : 8 8 | ||
| 42 | |||
| 37 | 43 | ||
| 38 | 44 | ||
| 39 | ---- TEST 1 - MS-BITFIELDS - PACKED ---- | 45 | ---- TEST 1 - MS-BITFIELDS - PACKED ---- |
| @@ -72,6 +78,12 @@ bits as set : 000000003000002001FD00000004 · 32 unmodified lines | |||
| 72 | values : 01 02 03 04 fffffffd | 78 | values : 01 02 03 04 fffffffd |
| 73 | align/size : 1 14 | 79 | align/size : 1 14 |
| 74 | 80 | ||
| 81 | ---- TEST 7 - MS-BITFIELDS - PACKED ---- | ||
| 82 | bits in use : 3FFFFFFFFFFF0000 | ||
| 83 | bits as set : 0026000100050000 | ||
| 84 | values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005 | ||
| 85 | align/size : 1 8 | ||
| 86 | |||
| 75 | 87 | ||
| 76 | 88 | ||
| 77 | ---- TEST 1 - MS-BITFIELDS - WITH ALIGN ---- | 89 | ---- TEST 1 - MS-BITFIELDS - WITH ALIGN ---- |
| @@ -110,6 +122,12 @@ bits as set : 000000000000003000002001000000FD00000004 · 32 unmodified lines | |||
| 110 | values : 01 02 03 04 fffffffd | 122 | values : 01 02 03 04 fffffffd |
| 111 | align/size : 4 20 | 123 | align/size : 4 20 |
| 112 | 124 | ||
| 125 | ---- TEST 7 - MS-BITFIELDS - WITH ALIGN ---- | ||
| 126 | bits in use : 3FFFFFFFFFFF0000 | ||
| 127 | bits as set : 0026000100050000 | ||
| 128 | values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005 | ||
| 129 | align/size : 8 8 | ||
| 130 | |||
| 113 | 131 | ||
| 114 | 132 | ||
| 115 | ---- TEST 1 - MS-BITFIELDS - PACKED - WITH ALIGN ---- | 133 | ---- TEST 1 - MS-BITFIELDS - PACKED - WITH ALIGN ---- |
| @@ -147,3 +165,9 @@ bits in use : 00000000700000FFFFFFFFFFFFFF · 31 unmodified lines | |||
| 147 | bits as set : 000000003000002001FD00000004 | 165 | bits as set : 000000003000002001FD00000004 |
| 148 | values : 01 02 03 04 fffffffd | 166 | values : 01 02 03 04 fffffffd |
| 149 | align/size : 1 14 | 167 | align/size : 1 14 |
| 168 | |||
| 169 | ---- TEST 7 - MS-BITFIELDS - PACKED - WITH ALIGN ---- | ||
| 170 | bits in use : 3FFFFFFFFFFF0000 | ||
| 171 | bits as set : 0026000100050000 | ||
| 172 | values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005 | ||
| 173 | align/size : 1 8 | ||