mirror of
https://github.com/Decompollaborate/rabbitizer.git
synced 2025-02-06 03:39:56 +00:00
Fix LoPairingInfo
python binding not using a proper type width for its value
member, causing truncation and sign extending on platforms where long
is a 32bits type (ie Windows)
This commit is contained in:
parent
c6e988affa
commit
83df386cc6
@ -22,8 +22,6 @@ static int rabbitizer_type_LoPairingInfo_init(PyRabbitizerLoPairingInfo *self, P
|
||||
|
||||
|
||||
static PyMemberDef rabbitizer_type_LoPairingInfo_members[] = {
|
||||
{ "instrOffset", T_INT, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.instrOffset), 0, "" },
|
||||
{ "value", T_LONG, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.value), 0, "" },
|
||||
{ "shouldProcess", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.shouldProcess), 0, "" },
|
||||
{ "isGpRel", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.isGpRel), 0, "" },
|
||||
{ "isGpGot", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.isGpGot), 0, "" },
|
||||
@ -32,6 +30,32 @@ static PyMemberDef rabbitizer_type_LoPairingInfo_members[] = {
|
||||
};
|
||||
|
||||
|
||||
#define DEF_MEMBER_GET_INT32(name) \
|
||||
static PyObject *rabbitizer_type_LoPairingInfo_member_get_##name(PyRabbitizerLoPairingInfo *self, UNUSED PyObject *closure) { \
|
||||
return PyLong_FromLong(self->pairingInfo.name); \
|
||||
}
|
||||
|
||||
#define DEF_MEMBER_GET_INT64(name) \
|
||||
static PyObject *rabbitizer_type_LoPairingInfo_member_get_##name(PyRabbitizerLoPairingInfo *self, UNUSED PyObject *closure) { \
|
||||
return PyLong_FromLongLong(self->pairingInfo.name); \
|
||||
}
|
||||
|
||||
DEF_MEMBER_GET_INT32(instrOffset)
|
||||
DEF_MEMBER_GET_INT64(value)
|
||||
|
||||
|
||||
#define MEMBER_GET(name, docs) { #name, (getter) rabbitizer_type_LoPairingInfo_member_get_##name, (setter) NULL, PyDoc_STR(docs), NULL }
|
||||
#define MEMBER_SET(name, docs) { #name, (getter) NULL, (setter) rabbitizer_type_LoPairingInfo_member_set_##name, PyDoc_STR(docs), NULL }
|
||||
#define MEMBER_GET_SET(name, docs) { #name, (getter) rabbitizer_type_LoPairingInfo_member_get_##name, (setter) rabbitizer_type_LoPairingInfo_member_set_##name, PyDoc_STR(docs), NULL }
|
||||
|
||||
static PyGetSetDef rabbitizer_type_LoPairingInfo_getsetters[] = {
|
||||
MEMBER_GET(instrOffset, ""),
|
||||
MEMBER_GET(value, ""),
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
|
||||
DEF_RAB_TYPE(LoPairingInfo)
|
||||
|
||||
|
||||
@ -49,5 +73,5 @@ PyTypeObject rabbitizer_type_LoPairingInfo_TypeObject = {
|
||||
// .tp_str = (reprfunc) rabbitizer_type_LoPairingInfo_str,
|
||||
.tp_members = rabbitizer_type_LoPairingInfo_members,
|
||||
// .tp_methods = rabbitizer_type_Instr_methods,
|
||||
// .tp_getset = Instr_getsetters,
|
||||
.tp_getset = rabbitizer_type_LoPairingInfo_getsetters,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user