frida 16.2.0 → 16.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/BSDmakefile +6 -0
  2. package/Makefile +16 -0
  3. package/README.md +14 -11
  4. package/configure +18 -0
  5. package/configure.bat +22 -0
  6. package/dist/native.js +0 -8
  7. package/lib/application.ts +98 -0
  8. package/lib/authentication.ts +3 -0
  9. package/lib/build.py +50 -0
  10. package/lib/bus.ts +30 -0
  11. package/lib/cancellable.ts +33 -0
  12. package/lib/child.ts +15 -0
  13. package/lib/crash.ts +11 -0
  14. package/lib/device.ts +329 -0
  15. package/lib/device_manager.ts +69 -0
  16. package/lib/endpoint_parameters.ts +56 -0
  17. package/lib/icon.ts +15 -0
  18. package/lib/index.ts +311 -0
  19. package/lib/iostream.ts +78 -0
  20. package/lib/meson.build +53 -0
  21. package/lib/native.ts +9 -0
  22. package/lib/portal_membership.ts +10 -0
  23. package/lib/portal_service.ts +105 -0
  24. package/lib/process.ts +57 -0
  25. package/lib/relay.ts +44 -0
  26. package/lib/script.ts +352 -0
  27. package/lib/session.ts +113 -0
  28. package/lib/signals.ts +45 -0
  29. package/lib/socket_address.ts +35 -0
  30. package/lib/spawn.ts +4 -0
  31. package/lib/system_parameters.ts +78 -0
  32. package/make.bat +23 -0
  33. package/meson.build +160 -0
  34. package/meson.options +11 -0
  35. package/package.json +27 -6
  36. package/releng/deps.py +1133 -0
  37. package/releng/deps.toml +391 -0
  38. package/releng/devkit-assets/frida-core-example-unix.c +188 -0
  39. package/releng/devkit-assets/frida-core-example-windows.c +197 -0
  40. package/releng/devkit-assets/frida-core-example.sln +28 -0
  41. package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
  42. package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
  43. package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
  44. package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
  45. package/releng/devkit-assets/frida-gum-example.sln +28 -0
  46. package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
  47. package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
  48. package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
  49. package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
  50. package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
  51. package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
  52. package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
  53. package/releng/devkit.py +535 -0
  54. package/releng/env.py +420 -0
  55. package/releng/env_android.py +150 -0
  56. package/releng/env_apple.py +176 -0
  57. package/releng/env_generic.py +373 -0
  58. package/releng/frida_version.py +69 -0
  59. package/releng/machine_file.py +44 -0
  60. package/releng/machine_spec.py +290 -0
  61. package/releng/meson/meson.py +27 -0
  62. package/releng/meson/mesonbuild/__init__.py +0 -0
  63. package/releng/meson/mesonbuild/_pathlib.py +63 -0
  64. package/releng/meson/mesonbuild/_typing.py +69 -0
  65. package/releng/meson/mesonbuild/arglist.py +321 -0
  66. package/releng/meson/mesonbuild/ast/__init__.py +23 -0
  67. package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
  68. package/releng/meson/mesonbuild/ast/introspection.py +374 -0
  69. package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
  70. package/releng/meson/mesonbuild/ast/printer.py +620 -0
  71. package/releng/meson/mesonbuild/ast/visitor.py +161 -0
  72. package/releng/meson/mesonbuild/backend/__init__.py +0 -0
  73. package/releng/meson/mesonbuild/backend/backends.py +2047 -0
  74. package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
  75. package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
  76. package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
  77. package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
  78. package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
  79. package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
  80. package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
  81. package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
  82. package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
  83. package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
  84. package/releng/meson/mesonbuild/build.py +3249 -0
  85. package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
  86. package/releng/meson/mesonbuild/cargo/builder.py +238 -0
  87. package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
  88. package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
  89. package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
  90. package/releng/meson/mesonbuild/cargo/version.py +95 -0
  91. package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
  92. package/releng/meson/mesonbuild/cmake/common.py +331 -0
  93. package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
  94. package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
  95. package/releng/meson/mesonbuild/cmake/executor.py +241 -0
  96. package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
  97. package/releng/meson/mesonbuild/cmake/generator.py +186 -0
  98. package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
  99. package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
  100. package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
  101. package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
  102. package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
  103. package/releng/meson/mesonbuild/compilers/asm.py +307 -0
  104. package/releng/meson/mesonbuild/compilers/c.py +788 -0
  105. package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
  106. package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
  107. package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
  108. package/releng/meson/mesonbuild/compilers/cs.py +136 -0
  109. package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
  110. package/releng/meson/mesonbuild/compilers/cython.py +91 -0
  111. package/releng/meson/mesonbuild/compilers/d.py +861 -0
  112. package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
  113. package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
  114. package/releng/meson/mesonbuild/compilers/java.py +113 -0
  115. package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
  116. package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
  117. package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
  118. package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
  119. package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
  120. package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
  121. package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
  122. package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
  123. package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
  124. package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
  125. package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
  126. package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
  127. package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
  128. package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
  129. package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
  130. package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
  131. package/releng/meson/mesonbuild/compilers/objc.py +120 -0
  132. package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
  133. package/releng/meson/mesonbuild/compilers/rust.py +230 -0
  134. package/releng/meson/mesonbuild/compilers/swift.py +131 -0
  135. package/releng/meson/mesonbuild/compilers/vala.py +121 -0
  136. package/releng/meson/mesonbuild/coredata.py +1532 -0
  137. package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
  138. package/releng/meson/mesonbuild/dependencies/base.py +663 -0
  139. package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
  140. package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
  141. package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
  142. package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
  143. package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
  144. package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
  145. package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
  146. package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
  147. package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
  148. package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
  149. package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
  150. package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
  151. package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
  152. package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
  153. package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
  154. package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
  155. package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
  156. package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
  157. package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
  158. package/releng/meson/mesonbuild/dependencies/python.py +431 -0
  159. package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
  160. package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
  161. package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
  162. package/releng/meson/mesonbuild/depfile.py +82 -0
  163. package/releng/meson/mesonbuild/envconfig.py +480 -0
  164. package/releng/meson/mesonbuild/environment.py +987 -0
  165. package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
  166. package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
  167. package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
  168. package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
  169. package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
  170. package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
  171. package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
  172. package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
  173. package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
  174. package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
  175. package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
  176. package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
  177. package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
  178. package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
  179. package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
  180. package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
  181. package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
  182. package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
  183. package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
  184. package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
  185. package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
  186. package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
  187. package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
  188. package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
  189. package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
  190. package/releng/meson/mesonbuild/linkers/base.py +39 -0
  191. package/releng/meson/mesonbuild/linkers/detect.py +229 -0
  192. package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
  193. package/releng/meson/mesonbuild/mcompile.py +380 -0
  194. package/releng/meson/mesonbuild/mconf.py +368 -0
  195. package/releng/meson/mesonbuild/mdevenv.py +234 -0
  196. package/releng/meson/mesonbuild/mdist.py +376 -0
  197. package/releng/meson/mesonbuild/mesondata.py +38 -0
  198. package/releng/meson/mesonbuild/mesonlib.py +23 -0
  199. package/releng/meson/mesonbuild/mesonmain.py +289 -0
  200. package/releng/meson/mesonbuild/minit.py +204 -0
  201. package/releng/meson/mesonbuild/minstall.py +864 -0
  202. package/releng/meson/mesonbuild/mintro.py +667 -0
  203. package/releng/meson/mesonbuild/mlog.py +542 -0
  204. package/releng/meson/mesonbuild/modules/__init__.py +270 -0
  205. package/releng/meson/mesonbuild/modules/cmake.py +442 -0
  206. package/releng/meson/mesonbuild/modules/cuda.py +377 -0
  207. package/releng/meson/mesonbuild/modules/dlang.py +117 -0
  208. package/releng/meson/mesonbuild/modules/external_project.py +306 -0
  209. package/releng/meson/mesonbuild/modules/fs.py +323 -0
  210. package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
  211. package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
  212. package/releng/meson/mesonbuild/modules/i18n.py +405 -0
  213. package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
  214. package/releng/meson/mesonbuild/modules/java.py +112 -0
  215. package/releng/meson/mesonbuild/modules/keyval.py +65 -0
  216. package/releng/meson/mesonbuild/modules/modtest.py +33 -0
  217. package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
  218. package/releng/meson/mesonbuild/modules/python.py +556 -0
  219. package/releng/meson/mesonbuild/modules/python3.py +85 -0
  220. package/releng/meson/mesonbuild/modules/qt.py +621 -0
  221. package/releng/meson/mesonbuild/modules/qt4.py +23 -0
  222. package/releng/meson/mesonbuild/modules/qt5.py +23 -0
  223. package/releng/meson/mesonbuild/modules/qt6.py +22 -0
  224. package/releng/meson/mesonbuild/modules/rust.py +355 -0
  225. package/releng/meson/mesonbuild/modules/simd.py +114 -0
  226. package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
  227. package/releng/meson/mesonbuild/modules/wayland.py +151 -0
  228. package/releng/meson/mesonbuild/modules/windows.py +207 -0
  229. package/releng/meson/mesonbuild/mparser.py +1114 -0
  230. package/releng/meson/mesonbuild/msetup.py +365 -0
  231. package/releng/meson/mesonbuild/msubprojects.py +764 -0
  232. package/releng/meson/mesonbuild/mtest.py +2201 -0
  233. package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
  234. package/releng/meson/mesonbuild/optinterpreter.py +276 -0
  235. package/releng/meson/mesonbuild/programs.py +367 -0
  236. package/releng/meson/mesonbuild/rewriter.py +1075 -0
  237. package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
  238. package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
  239. package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
  240. package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
  241. package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
  242. package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
  243. package/releng/meson/mesonbuild/scripts/copy.py +19 -0
  244. package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
  245. package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
  246. package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
  247. package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
  248. package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
  249. package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
  250. package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
  251. package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
  252. package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
  253. package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
  254. package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
  255. package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
  256. package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
  257. package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
  258. package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
  259. package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
  260. package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
  261. package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
  262. package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
  263. package/releng/meson/mesonbuild/scripts/tags.py +44 -0
  264. package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
  265. package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
  266. package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
  267. package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
  268. package/releng/meson/mesonbuild/templates/__init__.py +0 -0
  269. package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
  270. package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
  271. package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
  272. package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
  273. package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
  274. package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
  275. package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
  276. package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
  277. package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
  278. package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
  279. package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
  280. package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
  281. package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
  282. package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
  283. package/releng/meson/mesonbuild/utils/__init__.py +0 -0
  284. package/releng/meson/mesonbuild/utils/core.py +166 -0
  285. package/releng/meson/mesonbuild/utils/platform.py +27 -0
  286. package/releng/meson/mesonbuild/utils/posix.py +32 -0
  287. package/releng/meson/mesonbuild/utils/universal.py +2445 -0
  288. package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
  289. package/releng/meson/mesonbuild/utils/win32.py +29 -0
  290. package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
  291. package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
  292. package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
  293. package/releng/meson-scripts/BSDmakefile +6 -0
  294. package/releng/meson-scripts/Makefile +16 -0
  295. package/releng/meson-scripts/configure +18 -0
  296. package/releng/meson-scripts/configure.bat +22 -0
  297. package/releng/meson-scripts/make.bat +23 -0
  298. package/releng/meson_configure.py +506 -0
  299. package/releng/meson_make.py +131 -0
  300. package/releng/mkdevkit.py +107 -0
  301. package/releng/mkfatmacho.py +54 -0
  302. package/releng/post-process-oabi.py +97 -0
  303. package/releng/progress.py +14 -0
  304. package/releng/sync-from-upstream.py +185 -0
  305. package/releng/tomlkit/tomlkit/__init__.py +59 -0
  306. package/releng/tomlkit/tomlkit/_compat.py +22 -0
  307. package/releng/tomlkit/tomlkit/_types.py +83 -0
  308. package/releng/tomlkit/tomlkit/_utils.py +158 -0
  309. package/releng/tomlkit/tomlkit/api.py +308 -0
  310. package/releng/tomlkit/tomlkit/container.py +875 -0
  311. package/releng/tomlkit/tomlkit/exceptions.py +227 -0
  312. package/releng/tomlkit/tomlkit/items.py +1967 -0
  313. package/releng/tomlkit/tomlkit/parser.py +1141 -0
  314. package/releng/tomlkit/tomlkit/py.typed +0 -0
  315. package/releng/tomlkit/tomlkit/source.py +180 -0
  316. package/releng/tomlkit/tomlkit/toml_char.py +52 -0
  317. package/releng/tomlkit/tomlkit/toml_document.py +7 -0
  318. package/releng/tomlkit/tomlkit/toml_file.py +58 -0
  319. package/releng/winenv.py +140 -0
  320. package/scripts/adjust-version.py +19 -0
  321. package/scripts/detect-version.py +40 -0
  322. package/scripts/fetch-abi-bits.py +343 -0
  323. package/scripts/install.js +23 -0
  324. package/scripts/package.py +15 -0
  325. package/src/addon.cc +76 -0
  326. package/src/application.cc +148 -0
  327. package/src/application.h +31 -0
  328. package/src/authentication.cc +174 -0
  329. package/src/authentication.h +24 -0
  330. package/src/bus.cc +167 -0
  331. package/src/bus.h +33 -0
  332. package/src/cancellable.cc +117 -0
  333. package/src/cancellable.h +31 -0
  334. package/src/child.cc +150 -0
  335. package/src/child.h +32 -0
  336. package/src/crash.cc +122 -0
  337. package/src/crash.h +30 -0
  338. package/src/device.cc +1302 -0
  339. package/src/device.h +55 -0
  340. package/src/device_manager.cc +362 -0
  341. package/src/device_manager.h +35 -0
  342. package/src/endpoint_parameters.cc +171 -0
  343. package/src/endpoint_parameters.h +28 -0
  344. package/src/glib_context.cc +62 -0
  345. package/src/glib_context.h +29 -0
  346. package/src/glib_object.cc +25 -0
  347. package/src/glib_object.h +37 -0
  348. package/src/iostream.cc +247 -0
  349. package/src/iostream.h +30 -0
  350. package/src/meson.build +26 -0
  351. package/src/operation.h +94 -0
  352. package/src/portal_membership.cc +100 -0
  353. package/src/portal_membership.h +26 -0
  354. package/src/portal_service.cc +401 -0
  355. package/src/portal_service.h +40 -0
  356. package/src/process.cc +135 -0
  357. package/src/process.h +30 -0
  358. package/src/relay.cc +139 -0
  359. package/src/relay.h +31 -0
  360. package/src/runtime.cc +443 -0
  361. package/src/runtime.h +64 -0
  362. package/src/script.cc +301 -0
  363. package/src/script.h +36 -0
  364. package/src/session.cc +860 -0
  365. package/src/session.h +42 -0
  366. package/src/signals.cc +334 -0
  367. package/src/signals.h +47 -0
  368. package/src/spawn.cc +95 -0
  369. package/src/spawn.h +27 -0
  370. package/src/usage_monitor.h +117 -0
  371. package/src/uv_context.cc +118 -0
  372. package/src/uv_context.h +40 -0
  373. package/src/win_delay_load_hook.cc +63 -0
  374. package/subprojects/frida-core.wrap +8 -0
  375. package/subprojects/nan.wrap +9 -0
  376. package/subprojects/packagefiles/nan.patch +13 -0
  377. package/test/data/index.ts +13 -0
  378. package/test/data/unixvictim-linux-x86 +0 -0
  379. package/test/data/unixvictim-linux-x86_64 +0 -0
  380. package/test/data/unixvictim-macos +0 -0
  381. package/test/device.ts +27 -0
  382. package/test/device_manager.ts +16 -0
  383. package/test/labrat.ts +32 -0
  384. package/test/script.ts +176 -0
  385. package/test/session.ts +73 -0
  386. package/tsconfig.json +18 -0
@@ -0,0 +1,161 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+ from __future__ import annotations
4
+
5
+ from .common import cmake_is_debug
6
+ from .. import mlog
7
+ from ..mesonlib import Version
8
+
9
+ from pathlib import Path
10
+ import re
11
+ import typing as T
12
+
13
+ if T.TYPE_CHECKING:
14
+ from .traceparser import CMakeTraceParser
15
+ from ..environment import Environment
16
+ from ..compilers import Compiler
17
+ from ..dependencies import MissingCompiler
18
+
19
+ # Small duplication of ExtraFramework to parse full
20
+ # framework paths as exposed by CMake
21
+ def _get_framework_latest_version(path: Path) -> str:
22
+ versions: list[Version] = []
23
+ for each in path.glob('Versions/*'):
24
+ # macOS filesystems are usually case-insensitive
25
+ if each.name.lower() == 'current':
26
+ continue
27
+ versions.append(Version(each.name))
28
+ if len(versions) == 0:
29
+ # most system frameworks do not have a 'Versions' directory
30
+ return 'Headers'
31
+ return 'Versions/{}/Headers'.format(sorted(versions)[-1]._s)
32
+
33
+ def _get_framework_include_path(path: Path) -> T.Optional[str]:
34
+ trials = ('Headers', 'Versions/Current/Headers', _get_framework_latest_version(path))
35
+ for each in trials:
36
+ trial = path / each
37
+ if trial.is_dir():
38
+ return trial.as_posix()
39
+ return None
40
+
41
+ class ResolvedTarget:
42
+ def __init__(self) -> None:
43
+ self.include_directories: T.List[str] = []
44
+ self.link_flags: T.List[str] = []
45
+ self.public_compile_opts: T.List[str] = []
46
+ self.libraries: T.List[str] = []
47
+
48
+ def resolve_cmake_trace_targets(target_name: str,
49
+ trace: 'CMakeTraceParser',
50
+ env: 'Environment',
51
+ *,
52
+ clib_compiler: T.Union['MissingCompiler', 'Compiler'] = None,
53
+ not_found_warning: T.Callable[[str], None] = lambda x: None) -> ResolvedTarget:
54
+ res = ResolvedTarget()
55
+ targets = [target_name]
56
+
57
+ # recognise arguments we should pass directly to the linker
58
+ reg_is_lib = re.compile(r'^(-l[a-zA-Z0-9_]+|-l?pthread)$')
59
+ reg_is_maybe_bare_lib = re.compile(r'^[a-zA-Z0-9_]+$')
60
+
61
+ is_debug = cmake_is_debug(env)
62
+
63
+ processed_targets: T.List[str] = []
64
+ while len(targets) > 0:
65
+ curr = targets.pop(0)
66
+
67
+ # Skip already processed targets
68
+ if curr in processed_targets:
69
+ continue
70
+
71
+ if curr not in trace.targets:
72
+ curr_path = Path(curr)
73
+ if reg_is_lib.match(curr):
74
+ res.libraries += [curr]
75
+ elif curr_path.is_absolute() and curr_path.exists():
76
+ if any(x.endswith('.framework') for x in curr_path.parts):
77
+ # Frameworks detected by CMake are passed as absolute paths
78
+ # Split into -F/path/to/ and -framework name
79
+ path_to_framework = []
80
+ # Try to slice off the `Versions/X/name.tbd`
81
+ for x in curr_path.parts:
82
+ path_to_framework.append(x)
83
+ if x.endswith('.framework'):
84
+ break
85
+ curr_path = Path(*path_to_framework)
86
+ framework_path = curr_path.parent
87
+ framework_name = curr_path.stem
88
+ res.libraries += [f'-F{framework_path}', '-framework', framework_name]
89
+ else:
90
+ res.libraries += [curr]
91
+ elif reg_is_maybe_bare_lib.match(curr) and clib_compiler:
92
+ # CMake library dependencies can be passed as bare library names,
93
+ # CMake brute-forces a combination of prefix/suffix combinations to find the
94
+ # right library. Assume any bare argument passed which is not also a CMake
95
+ # target must be a system library we should try to link against.
96
+ flib = clib_compiler.find_library(curr, env, [])
97
+ if flib is not None:
98
+ res.libraries += flib
99
+ else:
100
+ not_found_warning(curr)
101
+ else:
102
+ not_found_warning(curr)
103
+ continue
104
+
105
+ tgt = trace.targets[curr]
106
+ cfgs = []
107
+ cfg = ''
108
+ mlog.debug(tgt)
109
+
110
+ if 'INTERFACE_INCLUDE_DIRECTORIES' in tgt.properties:
111
+ res.include_directories += [x for x in tgt.properties['INTERFACE_INCLUDE_DIRECTORIES'] if x]
112
+
113
+ if 'INTERFACE_LINK_OPTIONS' in tgt.properties:
114
+ res.link_flags += [x for x in tgt.properties['INTERFACE_LINK_OPTIONS'] if x]
115
+
116
+ if 'INTERFACE_COMPILE_DEFINITIONS' in tgt.properties:
117
+ res.public_compile_opts += ['-D' + re.sub('^-D', '', x) for x in tgt.properties['INTERFACE_COMPILE_DEFINITIONS'] if x]
118
+
119
+ if 'INTERFACE_COMPILE_OPTIONS' in tgt.properties:
120
+ res.public_compile_opts += [x for x in tgt.properties['INTERFACE_COMPILE_OPTIONS'] if x]
121
+
122
+ if 'IMPORTED_CONFIGURATIONS' in tgt.properties:
123
+ cfgs = [x for x in tgt.properties['IMPORTED_CONFIGURATIONS'] if x]
124
+ cfg = cfgs[0]
125
+
126
+ if is_debug:
127
+ if 'DEBUG' in cfgs:
128
+ cfg = 'DEBUG'
129
+ elif 'RELEASE' in cfgs:
130
+ cfg = 'RELEASE'
131
+ else:
132
+ if 'RELEASE' in cfgs:
133
+ cfg = 'RELEASE'
134
+
135
+ if f'IMPORTED_IMPLIB_{cfg}' in tgt.properties:
136
+ res.libraries += [x for x in tgt.properties[f'IMPORTED_IMPLIB_{cfg}'] if x]
137
+ elif 'IMPORTED_IMPLIB' in tgt.properties:
138
+ res.libraries += [x for x in tgt.properties['IMPORTED_IMPLIB'] if x]
139
+ elif f'IMPORTED_LOCATION_{cfg}' in tgt.properties:
140
+ res.libraries += [x for x in tgt.properties[f'IMPORTED_LOCATION_{cfg}'] if x]
141
+ elif 'IMPORTED_LOCATION' in tgt.properties:
142
+ res.libraries += [x for x in tgt.properties['IMPORTED_LOCATION'] if x]
143
+
144
+ if 'LINK_LIBRARIES' in tgt.properties:
145
+ targets += [x for x in tgt.properties['LINK_LIBRARIES'] if x]
146
+ if 'INTERFACE_LINK_LIBRARIES' in tgt.properties:
147
+ targets += [x for x in tgt.properties['INTERFACE_LINK_LIBRARIES'] if x]
148
+
149
+ if f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}' in tgt.properties:
150
+ targets += [x for x in tgt.properties[f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}'] if x]
151
+ elif 'IMPORTED_LINK_DEPENDENT_LIBRARIES' in tgt.properties:
152
+ targets += [x for x in tgt.properties['IMPORTED_LINK_DEPENDENT_LIBRARIES'] if x]
153
+
154
+ processed_targets += [curr]
155
+
156
+ # Do not sort flags here -- this breaks
157
+ # semantics of eg. `-framework CoreAudio`
158
+ # or `-Lpath/to/root -llibrary`
159
+ # see eg. #11113
160
+
161
+ return res
@@ -0,0 +1,86 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2017 The Meson development team
3
+
4
+ # Public symbols for compilers sub-package when using 'from . import compilers'
5
+ __all__ = [
6
+ 'Compiler',
7
+ 'RunResult',
8
+
9
+ 'all_languages',
10
+ 'base_options',
11
+ 'clib_langs',
12
+ 'clink_langs',
13
+ 'c_suffixes',
14
+ 'cpp_suffixes',
15
+ 'get_base_compile_args',
16
+ 'get_base_link_args',
17
+ 'is_assembly',
18
+ 'is_header',
19
+ 'is_library',
20
+ 'is_llvm_ir',
21
+ 'is_object',
22
+ 'is_source',
23
+ 'is_known_suffix',
24
+ 'lang_suffixes',
25
+ 'LANGUAGES_USING_LDFLAGS',
26
+ 'sort_clink',
27
+ 'SUFFIX_TO_LANG',
28
+
29
+ 'compiler_from_language',
30
+ 'detect_compiler_for',
31
+ 'detect_static_linker',
32
+ 'detect_c_compiler',
33
+ 'detect_cpp_compiler',
34
+ 'detect_cuda_compiler',
35
+ 'detect_fortran_compiler',
36
+ 'detect_objc_compiler',
37
+ 'detect_objcpp_compiler',
38
+ 'detect_java_compiler',
39
+ 'detect_cs_compiler',
40
+ 'detect_vala_compiler',
41
+ 'detect_rust_compiler',
42
+ 'detect_d_compiler',
43
+ 'detect_swift_compiler',
44
+ ]
45
+
46
+ # Bring symbols from each module into compilers sub-package namespace
47
+ from .compilers import (
48
+ Compiler,
49
+ RunResult,
50
+ all_languages,
51
+ base_options,
52
+ clib_langs,
53
+ clink_langs,
54
+ c_suffixes,
55
+ cpp_suffixes,
56
+ get_base_compile_args,
57
+ get_base_link_args,
58
+ is_header,
59
+ is_source,
60
+ is_assembly,
61
+ is_llvm_ir,
62
+ is_object,
63
+ is_library,
64
+ is_known_suffix,
65
+ lang_suffixes,
66
+ LANGUAGES_USING_LDFLAGS,
67
+ sort_clink,
68
+ SUFFIX_TO_LANG,
69
+ )
70
+ from .detect import (
71
+ compiler_from_language,
72
+ detect_compiler_for,
73
+ detect_static_linker,
74
+ detect_c_compiler,
75
+ detect_cpp_compiler,
76
+ detect_cuda_compiler,
77
+ detect_objc_compiler,
78
+ detect_objcpp_compiler,
79
+ detect_fortran_compiler,
80
+ detect_java_compiler,
81
+ detect_cs_compiler,
82
+ detect_vala_compiler,
83
+ detect_rust_compiler,
84
+ detect_d_compiler,
85
+ detect_swift_compiler,
86
+ )
@@ -0,0 +1,307 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import typing as T
5
+
6
+ from ..mesonlib import EnvironmentException, OptionKey, get_meson_command
7
+ from .compilers import Compiler
8
+ from .mixins.metrowerks import MetrowerksCompiler, mwasmarm_instruction_set_args, mwasmeppc_instruction_set_args
9
+
10
+ if T.TYPE_CHECKING:
11
+ from ..environment import Environment
12
+ from ..linkers.linkers import DynamicLinker
13
+ from ..mesonlib import MachineChoice
14
+ from ..envconfig import MachineInfo
15
+
16
+ nasm_optimization_args: T.Dict[str, T.List[str]] = {
17
+ 'plain': [],
18
+ '0': ['-O0'],
19
+ 'g': ['-O0'],
20
+ '1': ['-O1'],
21
+ '2': ['-Ox'],
22
+ '3': ['-Ox'],
23
+ 's': ['-Ox'],
24
+ }
25
+
26
+
27
+ class NasmCompiler(Compiler):
28
+ language = 'nasm'
29
+ id = 'nasm'
30
+
31
+ # https://learn.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features
32
+ crt_args: T.Dict[str, T.List[str]] = {
33
+ 'none': [],
34
+ 'md': ['/DEFAULTLIB:ucrt.lib', '/DEFAULTLIB:vcruntime.lib', '/DEFAULTLIB:msvcrt.lib'],
35
+ 'mdd': ['/DEFAULTLIB:ucrtd.lib', '/DEFAULTLIB:vcruntimed.lib', '/DEFAULTLIB:msvcrtd.lib'],
36
+ 'mt': ['/DEFAULTLIB:libucrt.lib', '/DEFAULTLIB:libvcruntime.lib', '/DEFAULTLIB:libcmt.lib'],
37
+ 'mtd': ['/DEFAULTLIB:libucrtd.lib', '/DEFAULTLIB:libvcruntimed.lib', '/DEFAULTLIB:libcmtd.lib'],
38
+ }
39
+
40
+ def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str,
41
+ for_machine: 'MachineChoice', info: 'MachineInfo',
42
+ linker: T.Optional['DynamicLinker'] = None,
43
+ full_version: T.Optional[str] = None, is_cross: bool = False):
44
+ super().__init__(ccache, exelist, version, for_machine, info, linker, full_version, is_cross)
45
+ if 'link' in self.linker.id:
46
+ self.base_options.add(OptionKey('b_vscrt'))
47
+
48
+ def needs_static_linker(self) -> bool:
49
+ return True
50
+
51
+ def get_always_args(self) -> T.List[str]:
52
+ cpu = '64' if self.info.is_64_bit else '32'
53
+ if self.info.is_windows() or self.info.is_cygwin():
54
+ plat = 'win'
55
+ define = f'WIN{cpu}'
56
+ elif self.info.is_darwin():
57
+ plat = 'macho'
58
+ define = 'MACHO'
59
+ else:
60
+ plat = 'elf'
61
+ define = 'ELF'
62
+ args = ['-f', f'{plat}{cpu}', f'-D{define}']
63
+ if self.info.is_64_bit:
64
+ args.append('-D__x86_64__')
65
+ return args
66
+
67
+ def get_werror_args(self) -> T.List[str]:
68
+ return ['-Werror']
69
+
70
+ def get_output_args(self, outputname: str) -> T.List[str]:
71
+ return ['-o', outputname]
72
+
73
+ def unix_args_to_native(self, args: T.List[str]) -> T.List[str]:
74
+ outargs: T.List[str] = []
75
+ for arg in args:
76
+ if arg == '-pthread':
77
+ continue
78
+ outargs.append(arg)
79
+ return outargs
80
+
81
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
82
+ return nasm_optimization_args[optimization_level]
83
+
84
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
85
+ if is_debug:
86
+ if self.info.is_windows():
87
+ return []
88
+ return ['-g', '-F', 'dwarf']
89
+ return []
90
+
91
+ def get_depfile_suffix(self) -> str:
92
+ return 'd'
93
+
94
+ def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
95
+ return ['-MD', outfile, '-MQ', outtarget]
96
+
97
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
98
+ if self.info.cpu_family not in {'x86', 'x86_64'}:
99
+ raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
100
+
101
+ def get_pic_args(self) -> T.List[str]:
102
+ return []
103
+
104
+ def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
105
+ if not path:
106
+ path = '.'
107
+ return ['-I' + path]
108
+
109
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
110
+ build_dir: str) -> T.List[str]:
111
+ for idx, i in enumerate(parameter_list):
112
+ if i[:2] == '-I':
113
+ parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
114
+ return parameter_list
115
+
116
+ def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
117
+ return []
118
+
119
+ # Linking ASM-only objects into an executable or DLL
120
+ # require this, otherwise it'll fail to find
121
+ # _WinMain or _DllMainCRTStartup.
122
+ def get_crt_link_args(self, crt_val: str, buildtype: str) -> T.List[str]:
123
+ if not self.info.is_windows():
124
+ return []
125
+ return self.crt_args[self.get_crt_val(crt_val, buildtype)]
126
+
127
+ class YasmCompiler(NasmCompiler):
128
+ id = 'yasm'
129
+
130
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
131
+ # Yasm is incompatible with Nasm optimization flags.
132
+ return []
133
+
134
+ def get_exelist(self, ccache: bool = True) -> T.List[str]:
135
+ # Wrap yasm executable with an internal script that will write depfile.
136
+ exelist = super().get_exelist(ccache)
137
+ return get_meson_command() + ['--internal', 'yasm'] + exelist
138
+
139
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
140
+ if is_debug:
141
+ if self.info.is_windows():
142
+ return ['-g', 'null']
143
+ return ['-g', 'dwarf2']
144
+ return []
145
+
146
+ def get_dependency_gen_args(self, outtarget: str, outfile: str) -> T.List[str]:
147
+ return ['--depfile', outfile]
148
+
149
+ # https://learn.microsoft.com/en-us/cpp/assembler/masm/ml-and-ml64-command-line-reference
150
+ class MasmCompiler(Compiler):
151
+ language = 'masm'
152
+ id = 'ml'
153
+
154
+ def get_compile_only_args(self) -> T.List[str]:
155
+ return ['/c']
156
+
157
+ def get_argument_syntax(self) -> str:
158
+ return 'msvc'
159
+
160
+ def needs_static_linker(self) -> bool:
161
+ return True
162
+
163
+ def get_always_args(self) -> T.List[str]:
164
+ return ['/nologo']
165
+
166
+ def get_werror_args(self) -> T.List[str]:
167
+ return ['/WX']
168
+
169
+ def get_output_args(self, outputname: str) -> T.List[str]:
170
+ return ['/Fo', outputname]
171
+
172
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
173
+ return []
174
+
175
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
176
+ if is_debug:
177
+ return ['/Zi']
178
+ return []
179
+
180
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
181
+ if self.info.cpu_family not in {'x86', 'x86_64'}:
182
+ raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
183
+
184
+ def get_pic_args(self) -> T.List[str]:
185
+ return []
186
+
187
+ def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
188
+ if not path:
189
+ path = '.'
190
+ return ['-I' + path]
191
+
192
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
193
+ build_dir: str) -> T.List[str]:
194
+ for idx, i in enumerate(parameter_list):
195
+ if i[:2] == '-I' or i[:2] == '/I':
196
+ parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
197
+ return parameter_list
198
+
199
+ def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
200
+ return []
201
+
202
+ def depfile_for_object(self, objfile: str) -> T.Optional[str]:
203
+ return None
204
+
205
+
206
+ # https://learn.microsoft.com/en-us/cpp/assembler/arm/arm-assembler-command-line-reference
207
+ class MasmARMCompiler(Compiler):
208
+ language = 'masm'
209
+ id = 'armasm'
210
+
211
+ def needs_static_linker(self) -> bool:
212
+ return True
213
+
214
+ def get_always_args(self) -> T.List[str]:
215
+ return ['-nologo']
216
+
217
+ def get_werror_args(self) -> T.List[str]:
218
+ return []
219
+
220
+ def get_output_args(self, outputname: str) -> T.List[str]:
221
+ return ['-o', outputname]
222
+
223
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
224
+ return []
225
+
226
+ def get_debug_args(self, is_debug: bool) -> T.List[str]:
227
+ if is_debug:
228
+ return ['-g']
229
+ return []
230
+
231
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
232
+ if self.info.cpu_family not in {'arm', 'aarch64'}:
233
+ raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
234
+
235
+ def get_pic_args(self) -> T.List[str]:
236
+ return []
237
+
238
+ def get_include_args(self, path: str, is_system: bool) -> T.List[str]:
239
+ if not path:
240
+ path = '.'
241
+ return ['-i' + path]
242
+
243
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
244
+ build_dir: str) -> T.List[str]:
245
+ for idx, i in enumerate(parameter_list):
246
+ if i[:2] == '-I':
247
+ parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:]))
248
+ return parameter_list
249
+
250
+ def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
251
+ return []
252
+
253
+ def depfile_for_object(self, objfile: str) -> T.Optional[str]:
254
+ return None
255
+
256
+
257
+ class MetrowerksAsmCompiler(MetrowerksCompiler, Compiler):
258
+ language = 'nasm'
259
+
260
+ def __init__(self, ccache: T.List[str], exelist: T.List[str], version: str,
261
+ for_machine: 'MachineChoice', info: 'MachineInfo',
262
+ linker: T.Optional['DynamicLinker'] = None,
263
+ full_version: T.Optional[str] = None, is_cross: bool = False):
264
+ Compiler.__init__(self, ccache, exelist, version, for_machine, info, linker, full_version, is_cross)
265
+ MetrowerksCompiler.__init__(self)
266
+
267
+ self.warn_args: T.Dict[str, T.List[str]] = {
268
+ '0': [],
269
+ '1': [],
270
+ '2': [],
271
+ '3': [],
272
+ 'everything': []}
273
+ self.can_compile_suffixes.add('s')
274
+
275
+ def get_crt_compile_args(self, crt_val: str, buildtype: str) -> T.List[str]:
276
+ return []
277
+
278
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
279
+ return []
280
+
281
+ def get_pic_args(self) -> T.List[str]:
282
+ return []
283
+
284
+ def needs_static_linker(self) -> bool:
285
+ return True
286
+
287
+
288
+ class MetrowerksAsmCompilerARM(MetrowerksAsmCompiler):
289
+ id = 'mwasmarm'
290
+
291
+ def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
292
+ return mwasmarm_instruction_set_args.get(instruction_set, None)
293
+
294
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
295
+ if self.info.cpu_family not in {'arm'}:
296
+ raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')
297
+
298
+
299
+ class MetrowerksAsmCompilerEmbeddedPowerPC(MetrowerksAsmCompiler):
300
+ id = 'mwasmeppc'
301
+
302
+ def get_instruction_set_args(self, instruction_set: str) -> T.Optional[T.List[str]]:
303
+ return mwasmeppc_instruction_set_args.get(instruction_set, None)
304
+
305
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
306
+ if self.info.cpu_family not in {'ppc'}:
307
+ raise EnvironmentException(f'ASM compiler {self.id!r} does not support {self.info.cpu_family} CPU family')