1 //
2 // Copyright (C) 2020 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 // clang-format off
18 #include "native_bridge_support/vdso/interceptable_functions.h"
19 
20 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksBurst_create);
21 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksBurst_free);
22 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_create);
23 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_createForDevices);
24 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_finish);
25 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_free);
26 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_getPreferredMemoryAlignmentForInput);
27 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_getPreferredMemoryAlignmentForOutput);
28 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_getPreferredMemoryPaddingForInput);
29 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_getPreferredMemoryPaddingForOutput);
30 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_setCaching);
31 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_setPreference);
32 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_setPriority);
33 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksCompilation_setTimeout);
34 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_getExtensionSupport);
35 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_getFeatureLevel);
36 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_getName);
37 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_getType);
38 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_getVersion);
39 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksDevice_wait);
40 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksEvent_createFromSyncFenceFd);
41 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksEvent_free);
42 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksEvent_getSyncFenceFd);
43 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksEvent_wait);
44 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_burstCompute);
45 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_compute);
46 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_create);
47 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_enableInputAndOutputPadding);
48 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_free);
49 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_getDuration);
50 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_getOutputOperandDimensions);
51 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_getOutputOperandRank);
52 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setInput);
53 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setInputFromMemory);
54 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setLoopTimeout);
55 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setMeasureTiming);
56 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setOutput);
57 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setOutputFromMemory);
58 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setReusable);
59 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_setTimeout);
60 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_startCompute);
61 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksExecution_startComputeWithDependencies);
62 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_addInputRole);
63 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_addOutputRole);
64 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_create);
65 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_finish);
66 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_free);
67 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemoryDesc_setDimensions);
68 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemory_copy);
69 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemory_createFromAHardwareBuffer);
70 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemory_createFromDesc);
71 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemory_createFromFd);
72 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksMemory_free);
73 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_addOperand);
74 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_addOperation);
75 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_create);
76 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_finish);
77 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_free);
78 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_getExtensionOperandType);
79 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_getExtensionOperationType);
80 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_getSupportedOperationsForDevices);
81 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_identifyInputsAndOutputs);
82 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_relaxComputationFloat32toFloat16);
83 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_setOperandExtensionData);
84 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_setOperandSymmPerChannelQuantParams);
85 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_setOperandValue);
86 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_setOperandValueFromMemory);
87 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworksModel_setOperandValueFromModel);
88 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworks_getDefaultLoopTimeout);
89 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworks_getDevice);
90 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworks_getDeviceCount);
91 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworks_getMaximumLoopTimeout);
92 DEFINE_INTERCEPTABLE_STUB_FUNCTION(ANeuralNetworks_getRuntimeFeatureLevel);
93 
init_stub_library()94 static void __attribute__((constructor(0))) init_stub_library() {
95   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksBurst_create);
96   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksBurst_free);
97   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_create);
98   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_createForDevices);
99   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_finish);
100   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_free);
101   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_getPreferredMemoryAlignmentForInput);
102   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_getPreferredMemoryAlignmentForOutput);
103   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_getPreferredMemoryPaddingForInput);
104   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_getPreferredMemoryPaddingForOutput);
105   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_setCaching);
106   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_setPreference);
107   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_setPriority);
108   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksCompilation_setTimeout);
109   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_getExtensionSupport);
110   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_getFeatureLevel);
111   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_getName);
112   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_getType);
113   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_getVersion);
114   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksDevice_wait);
115   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksEvent_createFromSyncFenceFd);
116   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksEvent_free);
117   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksEvent_getSyncFenceFd);
118   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksEvent_wait);
119   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_burstCompute);
120   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_compute);
121   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_create);
122   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_enableInputAndOutputPadding);
123   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_free);
124   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_getDuration);
125   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_getOutputOperandDimensions);
126   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_getOutputOperandRank);
127   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setInput);
128   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setInputFromMemory);
129   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setLoopTimeout);
130   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setMeasureTiming);
131   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setOutput);
132   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setOutputFromMemory);
133   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setReusable);
134   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_setTimeout);
135   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_startCompute);
136   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksExecution_startComputeWithDependencies);
137   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_addInputRole);
138   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_addOutputRole);
139   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_create);
140   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_finish);
141   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_free);
142   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemoryDesc_setDimensions);
143   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemory_copy);
144   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemory_createFromAHardwareBuffer);
145   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemory_createFromDesc);
146   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemory_createFromFd);
147   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksMemory_free);
148   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_addOperand);
149   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_addOperation);
150   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_create);
151   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_finish);
152   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_free);
153   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_getExtensionOperandType);
154   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_getExtensionOperationType);
155   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_getSupportedOperationsForDevices);
156   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_identifyInputsAndOutputs);
157   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_relaxComputationFloat32toFloat16);
158   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_setOperandExtensionData);
159   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_setOperandSymmPerChannelQuantParams);
160   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_setOperandValue);
161   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_setOperandValueFromMemory);
162   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworksModel_setOperandValueFromModel);
163   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworks_getDefaultLoopTimeout);
164   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworks_getDevice);
165   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworks_getDeviceCount);
166   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworks_getMaximumLoopTimeout);
167   INIT_INTERCEPTABLE_STUB_FUNCTION("libneuralnetworks.so", ANeuralNetworks_getRuntimeFeatureLevel);
168 }
169 // clang-format on
170