mirror of
https://github.com/mirror/tinycc.git
synced 2025-02-26 08:00:09 +08:00
Fix long bitfield
The fix is avoiding a core dump for radare2 project.
This commit is contained in:
parent
9085b38a71
commit
dcb87d36fe
2
tccgen.c
2
tccgen.c
@ -2093,7 +2093,7 @@ static int adjust_bf(SValue *sv, int bit_pos, int bit_size)
|
||||
return 0;
|
||||
t = sv->type.ref->auxtype;
|
||||
if (t != -1 && t != VT_STRUCT) {
|
||||
sv->type.t = (sv->type.t & ~VT_BTYPE) | t;
|
||||
sv->type.t = (sv->type.t & ~(VT_BTYPE | VT_LONG)) | t;
|
||||
sv->r |= VT_LVAL;
|
||||
}
|
||||
return t;
|
||||
|
@ -77,6 +77,22 @@
|
||||
TEST_STRUCT(1,2,3,4,-3);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
#elif TEST == 7
|
||||
{
|
||||
struct M P __s {
|
||||
long int d : 16;
|
||||
long int b : 16;
|
||||
long int x : 16;
|
||||
long int y : 1;
|
||||
long int z : 2;
|
||||
long int a : 11;
|
||||
long int e : 1;
|
||||
long int f : 1;
|
||||
};
|
||||
TEST_STRUCT(1,2,3,4,5);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
#elif defined PACK
|
||||
|
||||
@ -101,6 +117,8 @@ top = 0;
|
||||
#include SELF
|
||||
#define TEST 6
|
||||
#include SELF
|
||||
#define TEST 7
|
||||
#include SELF
|
||||
|
||||
#if PACK
|
||||
# pragma pack(pop)
|
||||
|
@ -34,6 +34,12 @@ bits as set : 00000030002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 4 12
|
||||
|
||||
---- TEST 7 ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 01 00 ffffffff 04 05
|
||||
align/size : 8 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - PACKED ----
|
||||
@ -72,6 +78,12 @@ bits as set : 0030002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 1 10
|
||||
|
||||
---- TEST 7 - PACKED ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 01 00 ffffffff 04 05
|
||||
align/size : 1 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - WITH ALIGN ----
|
||||
@ -110,6 +122,12 @@ bits as set : 00000030002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 4 12
|
||||
|
||||
---- TEST 7 - WITH ALIGN ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 01 00 ffffffff 04 05
|
||||
align/size : 8 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - PACKED - WITH ALIGN ----
|
||||
@ -147,3 +165,9 @@ bits in use : 007000FFFFFFFFFFFFFF
|
||||
bits as set : 0030002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 1 10
|
||||
|
||||
---- TEST 7 - PACKED - WITH ALIGN ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 01 00 ffffffff 04 05
|
||||
align/size : 1 8
|
||||
|
@ -34,6 +34,12 @@ bits as set : 000000000000003000002001000000FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 4 20
|
||||
|
||||
---- TEST 7 - MS-BITFIELDS ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005
|
||||
align/size : 8 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - MS-BITFIELDS - PACKED ----
|
||||
@ -72,6 +78,12 @@ bits as set : 000000003000002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 1 14
|
||||
|
||||
---- TEST 7 - MS-BITFIELDS - PACKED ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005
|
||||
align/size : 1 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - MS-BITFIELDS - WITH ALIGN ----
|
||||
@ -110,6 +122,12 @@ bits as set : 000000000000003000002001000000FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 4 20
|
||||
|
||||
---- TEST 7 - MS-BITFIELDS - WITH ALIGN ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005
|
||||
align/size : 8 8
|
||||
|
||||
|
||||
|
||||
---- TEST 1 - MS-BITFIELDS - PACKED - WITH ALIGN ----
|
||||
@ -147,3 +165,9 @@ bits in use : 00000000700000FFFFFFFFFFFFFF
|
||||
bits as set : 000000003000002001FD00000004
|
||||
values : 01 02 03 04 fffffffd
|
||||
align/size : 1 14
|
||||
|
||||
---- TEST 7 - MS-BITFIELDS - PACKED - WITH ALIGN ----
|
||||
bits in use : 3FFFFFFFFFFF0000
|
||||
bits as set : 0026000100050000
|
||||
values : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000004 0000000000000005
|
||||
align/size : 1 8
|
||||
|
Loading…
Reference in New Issue
Block a user