comparison dyncall/dyncall_aggregate_x64.c @ 546:ba70fb631bea

x64: * support for non-standard aggr-by-value packing (#pragma pack, etc.) * callbacks: handling callconv prefixes in signature
author Tassilo Philipp
date Tue, 31 May 2022 19:29:34 +0200
parents a73a5cd50c19
children eef302b7a58d
comparison
equal deleted inserted replaced
545:ca28e9e3c644 546:ba70fb631bea
66 DCsize offset = base_offset + f->offset; 66 DCsize offset = base_offset + f->offset;
67 67
68 /* field outside of qword at index? */ 68 /* field outside of qword at index? */
69 if(offset >= (qword_offset + DC_ONE_8BYTE) || (offset + f->size * f->array_len) <= qword_offset) 69 if(offset >= (qword_offset + DC_ONE_8BYTE) || (offset + f->size * f->array_len) <= qword_offset)
70 continue; 70 continue;
71
72 /* if field is unaligned, class is MEMORY */
73 if(f->alignment && (offset % f->alignment) != 0)
74 return SYSVC_MEMORY;
71 75
72 DCuchar new_class = SYSVC_NONE; 76 DCuchar new_class = SYSVC_NONE;
73 77
74 switch (f->type) { 78 switch (f->type) {
75 case DC_SIGCHAR_BOOL: 79 case DC_SIGCHAR_BOOL: