comparison dyncall/dyncall_callvm_arm32_arm_armhf.c @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents ddfb9577a00e
children
comparison
equal deleted inserted replaced
532:d4bf63ab9164 533:71c884e610f0
160 , &a_long 160 , &a_long
161 , &a_longlong 161 , &a_longlong
162 , &a_float 162 , &a_float
163 , &a_double 163 , &a_double
164 , &a_pointer 164 , &a_pointer
165 , NULL /* argStruct */ 165 , NULL /* argAggr */
166 , (DCvoidvmfunc*) &call 166 , (DCvoidvmfunc*) &call
167 , (DCboolvmfunc*) &call 167 , (DCboolvmfunc*) &call
168 , (DCcharvmfunc*) &call 168 , (DCcharvmfunc*) &call
169 , (DCshortvmfunc*) &call 169 , (DCshortvmfunc*) &call
170 , (DCintvmfunc*) &call 170 , (DCintvmfunc*) &call
171 , (DClongvmfunc*) &call 171 , (DClongvmfunc*) &call
172 , (DClonglongvmfunc*) &call 172 , (DClonglongvmfunc*) &call
173 , (DCfloatvmfunc*) &call 173 , (DCfloatvmfunc*) &call
174 , (DCdoublevmfunc*) &call 174 , (DCdoublevmfunc*) &call
175 , (DCpointervmfunc*) &call 175 , (DCpointervmfunc*) &call
176 , NULL /* callStruct */ 176 , NULL /* callAggr */
177 , NULL /* beginAggr */
177 }; 178 };
178 179
179 DCCallVM_vt vt_armhf_ellipsis = 180 DCCallVM_vt vt_armhf_ellipsis =
180 { 181 {
181 &deinit 182 &deinit
188 , &a_long 189 , &a_long
189 , &a_longlong 190 , &a_longlong
190 , &a_float_ellipsis 191 , &a_float_ellipsis
191 , &a_double_ellipsis 192 , &a_double_ellipsis
192 , &a_pointer 193 , &a_pointer
193 , NULL /* argStruct */ 194 , NULL /* argAggr */
194 , (DCvoidvmfunc*) &call 195 , (DCvoidvmfunc*) &call
195 , (DCboolvmfunc*) &call 196 , (DCboolvmfunc*) &call
196 , (DCcharvmfunc*) &call 197 , (DCcharvmfunc*) &call
197 , (DCshortvmfunc*) &call 198 , (DCshortvmfunc*) &call
198 , (DCintvmfunc*) &call 199 , (DCintvmfunc*) &call
199 , (DClongvmfunc*) &call 200 , (DClongvmfunc*) &call
200 , (DClonglongvmfunc*) &call 201 , (DClonglongvmfunc*) &call
201 , (DCfloatvmfunc*) &call 202 , (DCfloatvmfunc*) &call
202 , (DCdoublevmfunc*) &call 203 , (DCdoublevmfunc*) &call
203 , (DCpointervmfunc*) &call 204 , (DCpointervmfunc*) &call
204 , NULL /* callStruct */ 205 , NULL /* callAggr */
206 , NULL /* beginAggr */
205 }; 207 };
206 208
207 static void mode(DCCallVM* in_self, DCint mode) 209 static void mode(DCCallVM* in_self, DCint mode)
208 { 210 {
209 DCCallVM_arm32_armhf* self = (DCCallVM_arm32_armhf*)in_self; 211 DCCallVM_arm32_armhf* self = (DCCallVM_arm32_armhf*)in_self;