Mercurial > pub > dyncall > dyncall
annotate dyncallback/dyncall_callback_arm32.c @ 606:85b7a117b807
- more statics in test code (this is partly needed on an experimental freebsd sparc64 build where the elf cleanup code crashes for some reason ... it's probably that experimental build, but a good change to do regardless)
author | Tassilo Philipp |
---|---|
date | Wed, 21 Sep 2022 15:20:58 +0200 |
parents | 71c884e610f0 |
children |
rev | line source |
---|---|
0 | 1 /* |
2 | |
3 Package: dyncall | |
4 Library: dyncallback | |
143
170cde9e2a83
- arm arm/thumb cleanup, sharing more files, directly
cslag
parents:
142
diff
changeset
|
5 File: dyncallback/dyncall_callback_arm32.c |
170cde9e2a83
- arm arm/thumb cleanup, sharing more files, directly
cslag
parents:
142
diff
changeset
|
6 Description: Callback - Implementation for ARM32 (ARM and THUMB mode) |
0 | 7 License: |
8 | |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
9 Copyright (c) 2007-2022 Daniel Adler <dadler@uni-goettingen.de>, |
0 | 10 Tassilo Philipp <tphilipp@potion-studios.com> |
11 | |
12 Permission to use, copy, modify, and distribute this software for any | |
13 purpose with or without fee is hereby granted, provided that the above | |
14 copyright notice and this permission notice appear in all copies. | |
15 | |
16 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
17 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
18 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
19 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
20 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
21 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
22 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
23 | |
24 */ | |
25 | |
26 | |
152
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
27 #include "dyncall_callback.h" |
0 | 28 #include "dyncall_alloc_wx.h" |
152
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
29 #include "dyncall_thunk.h" |
0 | 30 |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
31 |
152
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
32 /* Callback symbol. */ |
0 | 33 extern void dcCallbackThunkEntry(); |
34 | |
152
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
35 struct DCCallback |
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
36 { |
465
e2899b4ff713
- // -> /* */, mainly for consistency (but also for a few obscure compilers)
Tassilo Philipp
parents:
281
diff
changeset
|
37 DCThunk thunk; /* offset 0 */ |
e2899b4ff713
- // -> /* */, mainly for consistency (but also for a few obscure compilers)
Tassilo Philipp
parents:
281
diff
changeset
|
38 DCCallbackHandler* handler; /* offset 12 */ |
e2899b4ff713
- // -> /* */, mainly for consistency (but also for a few obscure compilers)
Tassilo Philipp
parents:
281
diff
changeset
|
39 void* userdata; /* offset 16 */ |
152
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
40 }; |
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
41 |
d48a8b8d2ef9
- integrated all headers containing DCCallback definition into the translation units used (arm64 already avoided this pointless header, so following that style)
cslag
parents:
143
diff
changeset
|
42 |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
43 void dcbInitCallback2(DCCallback* pcb, const DCsigchar* signature, DCCallbackHandler* handler, void* userdata, DCaggr *const * aggrs) |
0 | 44 { |
45 pcb->handler = handler; | |
46 pcb->userdata = userdata; | |
47 } | |
48 | |
49 | |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
50 DCCallback* dcbNewCallback2(const DCsigchar* signature, DCCallbackHandler* handler, void* userdata, DCaggr *const * aggrs) |
0 | 51 { |
52 DCCallback* pcb; | |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
53 int err = dcAllocWX(sizeof(DCCallback), (void**)&pcb); |
202 | 54 if(err) |
55 return NULL; | |
56 | |
533
71c884e610f0
- integration of patches from Raphael Luba, Thekla, Inc.:
Tassilo Philipp
parents:
465
diff
changeset
|
57 dcbInitCallback2(pcb, signature, handler, userdata, aggrs); |
0 | 58 dcbInitThunk(&pcb->thunk, dcCallbackThunkEntry); |
202 | 59 |
60 err = dcInitExecWX(pcb, sizeof(DCCallback)); | |
61 if(err) { | |
62 dcFreeWX(pcb, sizeof(DCCallback)); | |
63 return NULL; | |
64 } | |
65 | |
0 | 66 return pcb; |
67 } | |
68 |