frida 16.2.1 → 16.2.3

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,88 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+ from __future__ import annotations
4
+
5
+ import typing as T
6
+
7
+ from ...interpreterbase import (
8
+ ObjectHolder,
9
+ IterableObject,
10
+ MesonOperator,
11
+ typed_operator,
12
+ noKwargs,
13
+ noPosargs,
14
+ noArgsFlattening,
15
+ typed_pos_args,
16
+
17
+ TYPE_var,
18
+
19
+ InvalidArguments,
20
+ )
21
+
22
+ if T.TYPE_CHECKING:
23
+ # Object holders need the actual interpreter
24
+ from ...interpreter import Interpreter
25
+ from ...interpreterbase import TYPE_kwargs
26
+
27
+ class DictHolder(ObjectHolder[T.Dict[str, TYPE_var]], IterableObject):
28
+ def __init__(self, obj: T.Dict[str, TYPE_var], interpreter: 'Interpreter') -> None:
29
+ super().__init__(obj, interpreter)
30
+ self.methods.update({
31
+ 'has_key': self.has_key_method,
32
+ 'keys': self.keys_method,
33
+ 'get': self.get_method,
34
+ })
35
+
36
+ self.trivial_operators.update({
37
+ # Arithmetic
38
+ MesonOperator.PLUS: (dict, lambda x: {**self.held_object, **x}),
39
+
40
+ # Comparison
41
+ MesonOperator.EQUALS: (dict, lambda x: self.held_object == x),
42
+ MesonOperator.NOT_EQUALS: (dict, lambda x: self.held_object != x),
43
+ MesonOperator.IN: (str, lambda x: x in self.held_object),
44
+ MesonOperator.NOT_IN: (str, lambda x: x not in self.held_object),
45
+ })
46
+
47
+ # Use actual methods for functions that require additional checks
48
+ self.operators.update({
49
+ MesonOperator.INDEX: self.op_index,
50
+ })
51
+
52
+ def display_name(self) -> str:
53
+ return 'dict'
54
+
55
+ def iter_tuple_size(self) -> int:
56
+ return 2
57
+
58
+ def iter_self(self) -> T.Iterator[T.Tuple[str, TYPE_var]]:
59
+ return iter(self.held_object.items())
60
+
61
+ def size(self) -> int:
62
+ return len(self.held_object)
63
+
64
+ @noKwargs
65
+ @typed_pos_args('dict.has_key', str)
66
+ def has_key_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
67
+ return args[0] in self.held_object
68
+
69
+ @noKwargs
70
+ @noPosargs
71
+ def keys_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.List[str]:
72
+ return sorted(self.held_object)
73
+
74
+ @noArgsFlattening
75
+ @noKwargs
76
+ @typed_pos_args('dict.get', str, optargs=[object])
77
+ def get_method(self, args: T.Tuple[str, T.Optional[TYPE_var]], kwargs: TYPE_kwargs) -> TYPE_var:
78
+ if args[0] in self.held_object:
79
+ return self.held_object[args[0]]
80
+ if args[1] is not None:
81
+ return args[1]
82
+ raise InvalidArguments(f'Key {args[0]!r} is not in the dictionary.')
83
+
84
+ @typed_operator(MesonOperator.INDEX, str)
85
+ def op_index(self, other: str) -> TYPE_var:
86
+ if other not in self.held_object:
87
+ raise InvalidArguments(f'Key {other} is not in the dictionary.')
88
+ return self.held_object[other]
@@ -0,0 +1,86 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+ from __future__ import annotations
4
+
5
+ from ...interpreterbase import (
6
+ FeatureBroken, InvalidArguments, MesonOperator, ObjectHolder, KwargInfo,
7
+ noKwargs, noPosargs, typed_operator, typed_kwargs
8
+ )
9
+
10
+ import typing as T
11
+
12
+ if T.TYPE_CHECKING:
13
+ # Object holders need the actual interpreter
14
+ from ...interpreter import Interpreter
15
+ from ...interpreterbase import TYPE_var, TYPE_kwargs
16
+
17
+ class IntegerHolder(ObjectHolder[int]):
18
+ def __init__(self, obj: int, interpreter: 'Interpreter') -> None:
19
+ super().__init__(obj, interpreter)
20
+ self.methods.update({
21
+ 'is_even': self.is_even_method,
22
+ 'is_odd': self.is_odd_method,
23
+ 'to_string': self.to_string_method,
24
+ })
25
+
26
+ self.trivial_operators.update({
27
+ # Arithmetic
28
+ MesonOperator.UMINUS: (None, lambda x: -self.held_object),
29
+ MesonOperator.PLUS: (int, lambda x: self.held_object + x),
30
+ MesonOperator.MINUS: (int, lambda x: self.held_object - x),
31
+ MesonOperator.TIMES: (int, lambda x: self.held_object * x),
32
+
33
+ # Comparison
34
+ MesonOperator.EQUALS: (int, lambda x: self.held_object == x),
35
+ MesonOperator.NOT_EQUALS: (int, lambda x: self.held_object != x),
36
+ MesonOperator.GREATER: (int, lambda x: self.held_object > x),
37
+ MesonOperator.LESS: (int, lambda x: self.held_object < x),
38
+ MesonOperator.GREATER_EQUALS: (int, lambda x: self.held_object >= x),
39
+ MesonOperator.LESS_EQUALS: (int, lambda x: self.held_object <= x),
40
+ })
41
+
42
+ # Use actual methods for functions that require additional checks
43
+ self.operators.update({
44
+ MesonOperator.DIV: self.op_div,
45
+ MesonOperator.MOD: self.op_mod,
46
+ })
47
+
48
+ def display_name(self) -> str:
49
+ return 'int'
50
+
51
+ def operator_call(self, operator: MesonOperator, other: TYPE_var) -> TYPE_var:
52
+ if isinstance(other, bool):
53
+ FeatureBroken.single_use('int operations with non-int', '1.2.0', self.subproject,
54
+ 'It is not commutative and only worked because of leaky Python abstractions.',
55
+ location=self.current_node)
56
+ return super().operator_call(operator, other)
57
+
58
+ @noKwargs
59
+ @noPosargs
60
+ def is_even_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> bool:
61
+ return self.held_object % 2 == 0
62
+
63
+ @noKwargs
64
+ @noPosargs
65
+ def is_odd_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> bool:
66
+ return self.held_object % 2 != 0
67
+
68
+ @typed_kwargs(
69
+ 'to_string',
70
+ KwargInfo('fill', int, default=0, since='1.3.0')
71
+ )
72
+ @noPosargs
73
+ def to_string_method(self, args: T.List[TYPE_var], kwargs: T.Dict[str, T.Any]) -> str:
74
+ return str(self.held_object).zfill(kwargs['fill'])
75
+
76
+ @typed_operator(MesonOperator.DIV, int)
77
+ def op_div(self, other: int) -> int:
78
+ if other == 0:
79
+ raise InvalidArguments('Tried to divide by 0')
80
+ return self.held_object // other
81
+
82
+ @typed_operator(MesonOperator.MOD, int)
83
+ def op_mod(self, other: int) -> int:
84
+ if other == 0:
85
+ raise InvalidArguments('Tried to divide by 0')
86
+ return self.held_object % other
@@ -0,0 +1,38 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+ from __future__ import annotations
4
+
5
+ import typing as T
6
+
7
+ from ...interpreterbase import (
8
+ MesonInterpreterObject,
9
+ IterableObject,
10
+ MesonOperator,
11
+ InvalidArguments,
12
+ )
13
+
14
+ if T.TYPE_CHECKING:
15
+ from ...interpreterbase import SubProject
16
+
17
+ class RangeHolder(MesonInterpreterObject, IterableObject):
18
+ def __init__(self, start: int, stop: int, step: int, *, subproject: 'SubProject') -> None:
19
+ super().__init__(subproject=subproject)
20
+ self.range = range(start, stop, step)
21
+ self.operators.update({
22
+ MesonOperator.INDEX: self.op_index,
23
+ })
24
+
25
+ def op_index(self, other: int) -> int:
26
+ try:
27
+ return self.range[other]
28
+ except IndexError:
29
+ raise InvalidArguments(f'Index {other} out of bounds of range.')
30
+
31
+ def iter_tuple_size(self) -> None:
32
+ return None
33
+
34
+ def iter_self(self) -> T.Iterator[int]:
35
+ return iter(self.range)
36
+
37
+ def size(self) -> int:
38
+ return len(self.range)
@@ -0,0 +1,247 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ import os
7
+
8
+ import typing as T
9
+
10
+ from ...mesonlib import version_compare
11
+ from ...interpreterbase import (
12
+ ObjectHolder,
13
+ MesonOperator,
14
+ FeatureNew,
15
+ typed_operator,
16
+ noArgsFlattening,
17
+ noKwargs,
18
+ noPosargs,
19
+ typed_pos_args,
20
+ InvalidArguments,
21
+ FeatureBroken,
22
+ stringifyUserArguments,
23
+ )
24
+
25
+
26
+ if T.TYPE_CHECKING:
27
+ # Object holders need the actual interpreter
28
+ from ...interpreter import Interpreter
29
+ from ...interpreterbase import TYPE_var, TYPE_kwargs
30
+
31
+ class StringHolder(ObjectHolder[str]):
32
+ def __init__(self, obj: str, interpreter: 'Interpreter') -> None:
33
+ super().__init__(obj, interpreter)
34
+ self.methods.update({
35
+ 'contains': self.contains_method,
36
+ 'startswith': self.startswith_method,
37
+ 'endswith': self.endswith_method,
38
+ 'format': self.format_method,
39
+ 'join': self.join_method,
40
+ 'replace': self.replace_method,
41
+ 'split': self.split_method,
42
+ 'splitlines': self.splitlines_method,
43
+ 'strip': self.strip_method,
44
+ 'substring': self.substring_method,
45
+ 'to_int': self.to_int_method,
46
+ 'to_lower': self.to_lower_method,
47
+ 'to_upper': self.to_upper_method,
48
+ 'underscorify': self.underscorify_method,
49
+ 'version_compare': self.version_compare_method,
50
+ })
51
+
52
+ self.trivial_operators.update({
53
+ # Arithmetic
54
+ MesonOperator.PLUS: (str, lambda x: self.held_object + x),
55
+
56
+ # Comparison
57
+ MesonOperator.EQUALS: (str, lambda x: self.held_object == x),
58
+ MesonOperator.NOT_EQUALS: (str, lambda x: self.held_object != x),
59
+ MesonOperator.GREATER: (str, lambda x: self.held_object > x),
60
+ MesonOperator.LESS: (str, lambda x: self.held_object < x),
61
+ MesonOperator.GREATER_EQUALS: (str, lambda x: self.held_object >= x),
62
+ MesonOperator.LESS_EQUALS: (str, lambda x: self.held_object <= x),
63
+ })
64
+
65
+ # Use actual methods for functions that require additional checks
66
+ self.operators.update({
67
+ MesonOperator.DIV: self.op_div,
68
+ MesonOperator.INDEX: self.op_index,
69
+ MesonOperator.IN: self.op_in,
70
+ MesonOperator.NOT_IN: self.op_notin,
71
+ })
72
+
73
+ def display_name(self) -> str:
74
+ return 'str'
75
+
76
+ @noKwargs
77
+ @typed_pos_args('str.contains', str)
78
+ def contains_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
79
+ return self.held_object.find(args[0]) >= 0
80
+
81
+ @noKwargs
82
+ @typed_pos_args('str.startswith', str)
83
+ def startswith_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
84
+ return self.held_object.startswith(args[0])
85
+
86
+ @noKwargs
87
+ @typed_pos_args('str.endswith', str)
88
+ def endswith_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
89
+ return self.held_object.endswith(args[0])
90
+
91
+ @noArgsFlattening
92
+ @noKwargs
93
+ @typed_pos_args('str.format', varargs=object)
94
+ def format_method(self, args: T.Tuple[T.List[TYPE_var]], kwargs: TYPE_kwargs) -> str:
95
+ arg_strings: T.List[str] = []
96
+ for arg in args[0]:
97
+ try:
98
+ arg_strings.append(stringifyUserArguments(arg, self.subproject))
99
+ except InvalidArguments as e:
100
+ FeatureBroken.single_use(f'str.format: {str(e)}', '1.3.0', self.subproject, location=self.current_node)
101
+ arg_strings.append(str(arg))
102
+
103
+ def arg_replace(match: T.Match[str]) -> str:
104
+ idx = int(match.group(1))
105
+ if idx >= len(arg_strings):
106
+ raise InvalidArguments(f'Format placeholder @{idx}@ out of range.')
107
+ return arg_strings[idx]
108
+
109
+ return re.sub(r'@(\d+)@', arg_replace, self.held_object)
110
+
111
+ @noKwargs
112
+ @noPosargs
113
+ @FeatureNew('str.splitlines', '1.2.0')
114
+ def splitlines_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.List[str]:
115
+ return self.held_object.splitlines()
116
+
117
+ @noKwargs
118
+ @typed_pos_args('str.join', varargs=str)
119
+ def join_method(self, args: T.Tuple[T.List[str]], kwargs: TYPE_kwargs) -> str:
120
+ return self.held_object.join(args[0])
121
+
122
+ @noKwargs
123
+ @FeatureNew('str.replace', '0.58.0')
124
+ @typed_pos_args('str.replace', str, str)
125
+ def replace_method(self, args: T.Tuple[str, str], kwargs: TYPE_kwargs) -> str:
126
+ return self.held_object.replace(args[0], args[1])
127
+
128
+ @noKwargs
129
+ @typed_pos_args('str.split', optargs=[str])
130
+ def split_method(self, args: T.Tuple[T.Optional[str]], kwargs: TYPE_kwargs) -> T.List[str]:
131
+ return self.held_object.split(args[0])
132
+
133
+ @noKwargs
134
+ @typed_pos_args('str.strip', optargs=[str])
135
+ def strip_method(self, args: T.Tuple[T.Optional[str]], kwargs: TYPE_kwargs) -> str:
136
+ if args[0]:
137
+ FeatureNew.single_use('str.strip with a positional argument', '0.43.0', self.subproject, location=self.current_node)
138
+ return self.held_object.strip(args[0])
139
+
140
+ @noKwargs
141
+ @FeatureNew('str.substring', '0.56.0')
142
+ @typed_pos_args('str.substring', optargs=[int, int])
143
+ def substring_method(self, args: T.Tuple[T.Optional[int], T.Optional[int]], kwargs: TYPE_kwargs) -> str:
144
+ start = args[0] if args[0] is not None else 0
145
+ end = args[1] if args[1] is not None else len(self.held_object)
146
+ return self.held_object[start:end]
147
+
148
+ @noKwargs
149
+ @noPosargs
150
+ def to_int_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> int:
151
+ try:
152
+ return int(self.held_object)
153
+ except ValueError:
154
+ raise InvalidArguments(f'String {self.held_object!r} cannot be converted to int')
155
+
156
+ @noKwargs
157
+ @noPosargs
158
+ def to_lower_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
159
+ return self.held_object.lower()
160
+
161
+ @noKwargs
162
+ @noPosargs
163
+ def to_upper_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
164
+ return self.held_object.upper()
165
+
166
+ @noKwargs
167
+ @noPosargs
168
+ def underscorify_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
169
+ return re.sub(r'[^a-zA-Z0-9]', '_', self.held_object)
170
+
171
+ @noKwargs
172
+ @typed_pos_args('str.version_compare', str)
173
+ def version_compare_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
174
+ return version_compare(self.held_object, args[0])
175
+
176
+ @staticmethod
177
+ def _op_div(this: str, other: str) -> str:
178
+ return os.path.join(this, other).replace('\\', '/')
179
+
180
+ @FeatureNew('/ with string arguments', '0.49.0')
181
+ @typed_operator(MesonOperator.DIV, str)
182
+ def op_div(self, other: str) -> str:
183
+ return self._op_div(self.held_object, other)
184
+
185
+ @typed_operator(MesonOperator.INDEX, int)
186
+ def op_index(self, other: int) -> str:
187
+ try:
188
+ return self.held_object[other]
189
+ except IndexError:
190
+ raise InvalidArguments(f'Index {other} out of bounds of string of size {len(self.held_object)}.')
191
+
192
+ @FeatureNew('"in" string operator', '1.0.0')
193
+ @typed_operator(MesonOperator.IN, str)
194
+ def op_in(self, other: str) -> bool:
195
+ return other in self.held_object
196
+
197
+ @FeatureNew('"not in" string operator', '1.0.0')
198
+ @typed_operator(MesonOperator.NOT_IN, str)
199
+ def op_notin(self, other: str) -> bool:
200
+ return other not in self.held_object
201
+
202
+
203
+ class MesonVersionString(str):
204
+ pass
205
+
206
+ class MesonVersionStringHolder(StringHolder):
207
+ @noKwargs
208
+ @typed_pos_args('str.version_compare', str)
209
+ def version_compare_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
210
+ self.interpreter.tmp_meson_version = args[0]
211
+ return version_compare(self.held_object, args[0])
212
+
213
+ # These special subclasses of string exist to cover the case where a dependency
214
+ # exports a string variable interchangeable with a system dependency. This
215
+ # matters because a dependency can only have string-type get_variable() return
216
+ # values. If at any time dependencies start supporting additional variable
217
+ # types, this class could be deprecated.
218
+ class DependencyVariableString(str):
219
+ pass
220
+
221
+ class DependencyVariableStringHolder(StringHolder):
222
+ def op_div(self, other: str) -> T.Union[str, DependencyVariableString]:
223
+ ret = super().op_div(other)
224
+ if '..' in other:
225
+ return ret
226
+ return DependencyVariableString(ret)
227
+
228
+
229
+ class OptionString(str):
230
+ optname: str
231
+
232
+ def __new__(cls, value: str, name: str) -> 'OptionString':
233
+ obj = str.__new__(cls, value)
234
+ obj.optname = name
235
+ return obj
236
+
237
+ def __getnewargs__(self) -> T.Tuple[str, str]: # type: ignore # because the entire point of this is to diverge
238
+ return (str(self), self.optname)
239
+
240
+
241
+ class OptionStringHolder(StringHolder):
242
+ held_object: OptionString
243
+
244
+ def op_div(self, other: str) -> T.Union[str, OptionString]:
245
+ ret = super().op_div(other)
246
+ name = self._op_div(self.held_object.optname, other)
247
+ return OptionString(ret, name)