Bug #789 » fix-unaligned-babeltrace.patch
formats/ctf/types/integer.c | ||
---|---|---|
{
|
||
uint8_t v;
|
||
v = *(const uint8_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._unsigned = v;
|
||
break;
|
||
}
|
||
... | ... | |
{
|
||
uint16_t v;
|
||
v = *(const uint16_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._unsigned =
|
||
rbo ? GUINT16_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
{
|
||
uint32_t v;
|
||
v = *(const uint32_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._unsigned =
|
||
rbo ? GUINT32_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
{
|
||
uint64_t v;
|
||
v = *(const uint64_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._unsigned =
|
||
rbo ? GUINT64_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
{
|
||
int8_t v;
|
||
v = *(const int8_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._signed = v;
|
||
break;
|
||
}
|
||
... | ... | |
{
|
||
int16_t v;
|
||
v = *(const int16_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._signed =
|
||
rbo ? (int16_t) GUINT16_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
{
|
||
int32_t v;
|
||
v = *(const int32_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._signed =
|
||
rbo ? (int32_t) GUINT32_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
{
|
||
int64_t v;
|
||
v = *(const int64_t *) ctf_get_pos_addr(pos);
|
||
memcpy(&v, ctf_get_pos_addr(pos), sizeof(v));
|
||
integer_definition->value._signed =
|
||
rbo ? (int64_t) GUINT64_SWAP_LE_BE(v) : v;
|
||
break;
|
||
... | ... | |
if (pos->dummy)
|
||
goto end;
|
||
if (!integer_declaration->signedness) {
|
||
uint64_t v = integer_definition->value._unsigned;
|
||
switch (integer_declaration->len) {
|
||
case 8: *(uint8_t *) ctf_get_pos_addr(pos) = (uint8_t) v;
|
||
case 8:
|
||
{
|
||
uint8_t v = integer_definition->value._unsigned;
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 16:
|
||
*(uint16_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
GUINT16_SWAP_LE_BE((uint16_t) v) :
|
||
(uint16_t) v;
|
||
{
|
||
uint16_t v = integer_definition->value._unsigned;
|
||
if (rbo)
|
||
v = GUINT16_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 32:
|
||
*(uint32_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
GUINT32_SWAP_LE_BE((uint32_t) v) :
|
||
(uint32_t) v;
|
||
{
|
||
uint32_t v = integer_definition->value._unsigned;
|
||
if (rbo)
|
||
v = GUINT32_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 64:
|
||
*(uint64_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
GUINT64_SWAP_LE_BE(v) : v;
|
||
{
|
||
uint64_t v = integer_definition->value._unsigned;
|
||
if (rbo)
|
||
v = GUINT64_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
default:
|
||
assert(0);
|
||
}
|
||
} else {
|
||
int64_t v = integer_definition->value._signed;
|
||
switch (integer_declaration->len) {
|
||
case 8: *(int8_t *) ctf_get_pos_addr(pos) = (int8_t) v;
|
||
case 8:
|
||
{
|
||
uint8_t v = integer_definition->value._signed;
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 16:
|
||
*(int16_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
(int16_t) GUINT16_SWAP_LE_BE((int16_t) v) :
|
||
(int16_t) v;
|
||
{
|
||
int16_t v = integer_definition->value._signed;
|
||
if (rbo)
|
||
v = GUINT16_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 32:
|
||
*(int32_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
(int32_t) GUINT32_SWAP_LE_BE((int32_t) v) :
|
||
(int32_t) v;
|
||
{
|
||
int32_t v = integer_definition->value._signed;
|
||
if (rbo)
|
||
v = GUINT32_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
case 64:
|
||
*(int64_t *) ctf_get_pos_addr(pos) = rbo ?
|
||
GUINT64_SWAP_LE_BE(v) : v;
|
||
{
|
||
int64_t v = integer_definition->value._signed;
|
||
if (rbo)
|
||
v = GUINT64_SWAP_LE_BE(v);
|
||
memcpy(ctf_get_pos_addr(pos), &v, sizeof(v));
|
||
break;
|
||
}
|
||
default:
|
||
assert(0);
|
||
}
|
||
... | ... | |
if (!integer_declaration->signedness) {
|
||
if (integer_declaration->byte_order == LITTLE_ENDIAN)
|
||
bt_bitfield_read_le(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
&integer_definition->value._unsigned);
|
||
else
|
||
bt_bitfield_read_be(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
&integer_definition->value._unsigned);
|
||
} else {
|
||
if (integer_declaration->byte_order == LITTLE_ENDIAN)
|
||
bt_bitfield_read_le(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
&integer_definition->value._signed);
|
||
else
|
||
bt_bitfield_read_be(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
&integer_definition->value._signed);
|
||
}
|
||
... | ... | |
if (!integer_declaration->signedness) {
|
||
if (integer_declaration->byte_order == LITTLE_ENDIAN)
|
||
bt_bitfield_write_le(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
integer_definition->value._unsigned);
|
||
else
|
||
bt_bitfield_write_be(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
integer_definition->value._unsigned);
|
||
} else {
|
||
if (integer_declaration->byte_order == LITTLE_ENDIAN)
|
||
bt_bitfield_write_le(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
integer_definition->value._signed);
|
||
else
|
||
bt_bitfield_write_be(mmap_align_addr(pos->base_mma) +
|
||
pos->mmap_base_offset, unsigned long,
|
||
pos->mmap_base_offset, unsigned char,
|
||
pos->offset, integer_declaration->len,
|
||
integer_definition->value._signed);
|
||
}
|
- « Previous
- 1
- …
- 3
- 4
- 5
- Next »