>>> X = type('X', (Structure,), {'_fields_': [('a', c_uint32, 8), ('b', c_uint32, 8), ('c', c_uint32, 16)]})
>>> sizeof(X)
4


Breakpoint 1, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:602
602	        if (isStruct) {
$31 = 0
$32 = 0
$33 = 0
$34 = 0
$35 = {
  dict = {
    ob_base = {
      ob_refcnt = 1, 
      ob_type = 0x7f99fab98b60 <PyCStgDict_Type>
    }, 
    ma_used = 7, 
    ma_version_tag = 13154, 
    ma_keys = 0x7f99fab30e00, 
    ma_values = 0x0
  }, 
  size = 4, 
  align = 4, 
  length = 0, 
  ffi_type_pointer = {
    size = 4, 
    alignment = 4, 
    type = 9, 
    elements = 0x0
  }, 
  proto = 'I', 
  setfunc = 0x7f99fab8839f <I_set>, 
  getfunc = 0x7f99fab88b16 <I_get>, 
  paramfunc = 0x7f99fab796c8 <PyCSimpleType_paramfunc>, 
  argtypes = 0x0, 
  converters = 0x0, 
  restype = 0x0, 
  checker = 0x0, 
  flags = 4096, 
  format = 0x7f99fafbb440 "<I", 
  ndim = 0, 
  shape = 0x0
}

Breakpoint 2, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:617
617	        total_align = max(align, total_align);
$36 = 32
$37 = 8
$38 = 4
$39 = 4
$40 = {
  ob_base = {
    ob_refcnt = 1, 
    ob_type = 0x7f99fab988c0 <PyCField_Type>
  }, 
  offset = 0, 
  size = 524288, 
  index = 0, 
  proto = <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 
  getfunc = 0x0, 
  setfunc = 0x0, 
  anonymous = 0
}

Breakpoint 1, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:602
602	        if (isStruct) {
$41 = 32
$42 = 8
$43 = 4
$44 = 4
$45 = {
  dict = {
    ob_base = {
      ob_refcnt = 1, 
      ob_type = 0x7f99fab98b60 <PyCStgDict_Type>
    }, 
    ma_used = 7, 
    ma_version_tag = 13154, 
    ma_keys = 0x7f99fab30e00, 
    ma_values = 0x0
  }, 
  size = 4, 
  align = 4, 
  length = 0, 
  ffi_type_pointer = {
    size = 4, 
    alignment = 4, 
    type = 9, 
    elements = 0x0
  }, 
  proto = 'I', 
  setfunc = 0x7f99fab8839f <I_set>, 
  getfunc = 0x7f99fab88b16 <I_get>, 
  paramfunc = 0x7f99fab796c8 <PyCSimpleType_paramfunc>, 
  argtypes = 0x0, 
  converters = 0x0, 
  restype = 0x0, 
  checker = 0x0, 
  flags = 4096, 
  format = 0x7f99fafbb440 "<I", 
  ndim = 0, 
  shape = 0x0
}

Breakpoint 2, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:617
617	        total_align = max(align, total_align);
$46 = 32
$47 = 16
$48 = 4
$49 = 4
$50 = {
  ob_base = {
    ob_refcnt = 1, 
    ob_type = 0x7f99fab988c0 <PyCField_Type>
  }, 
  offset = 0, 
  size = 524296, 
  index = 1, 
  proto = <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 
  getfunc = 0x0, 
  setfunc = 0x0, 
  anonymous = 0
}

Breakpoint 1, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:602
602	        if (isStruct) {
$51 = 32
$52 = 16
$53 = 4
$54 = 4
$55 = {
  dict = {
    ob_base = {
      ob_refcnt = 1, 
      ob_type = 0x7f99fab98b60 <PyCStgDict_Type>
    }, 
    ma_used = 7, 
    ma_version_tag = 13154, 
    ma_keys = 0x7f99fab30e00, 
    ma_values = 0x0
  }, 
  size = 4, 
  align = 4, 
  length = 0, 
  ffi_type_pointer = {
    size = 4, 
    alignment = 4, 
    type = 9, 
    elements = 0x0
  }, 
  proto = 'I', 
  setfunc = 0x7f99fab8839f <I_set>, 
  getfunc = 0x7f99fab88b16 <I_get>, 
  paramfunc = 0x7f99fab796c8 <PyCSimpleType_paramfunc>, 
  argtypes = 0x0, 
  converters = 0x0, 
  restype = 0x0, 
  checker = 0x0, 
  flags = 4096, 
  format = 0x7f99fafbb440 "<I", 
  ndim = 0, 
  shape = 0x0
}

Breakpoint 2, PyCStructUnionType_update_stgdict (type=type@entry=<_ctypes.PyCStructType at remote 0x1aadfc0>, fields=fields@entry=[('a', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('b', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 8), ('c', <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 16)], isStruct=isStruct@entry=1) at /target/cpython-fix/Modules/_ctypes/stgdict.c:617
617	        total_align = max(align, total_align);
$56 = 32
$57 = 32
$58 = 4
$59 = 4
$60 = {
  ob_base = {
    ob_refcnt = 1, 
    ob_type = 0x7f99fab988c0 <PyCField_Type>
  }, 
  offset = 0, 
  size = 1048592, 
  index = 2, 
  proto = <_ctypes.PyCSimpleType at remote 0x1aa3fe0>, 
  getfunc = 0x0, 
  setfunc = 0x0, 
  anonymous = 0
}

