Mercurial > pub > dyncall > dyncall
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; |