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,442 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2018 The Meson development team
3
+
4
+ from __future__ import annotations
5
+ import re
6
+ import os, os.path, pathlib
7
+ import shutil
8
+ import typing as T
9
+
10
+ from . import ExtensionModule, ModuleReturnValue, ModuleObject, ModuleInfo
11
+
12
+ from .. import build, mesonlib, mlog, dependencies
13
+ from ..cmake import TargetOptions, cmake_defines_to_args
14
+ from ..interpreter import SubprojectHolder
15
+ from ..interpreter.type_checking import NATIVE_KW, REQUIRED_KW, INSTALL_DIR_KW, NoneType, in_set_validator
16
+ from ..interpreterbase import (
17
+ FeatureNew,
18
+ FeatureNewKwargs,
19
+
20
+ stringArgs,
21
+ permittedKwargs,
22
+ noPosargs,
23
+ noKwargs,
24
+
25
+ InvalidArguments,
26
+ InterpreterException,
27
+
28
+ typed_pos_args,
29
+ typed_kwargs,
30
+ KwargInfo,
31
+ ContainerTypeInfo,
32
+ )
33
+
34
+ if T.TYPE_CHECKING:
35
+ from typing_extensions import TypedDict
36
+
37
+ from . import ModuleState
38
+ from ..cmake import SingleTargetOptions
39
+ from ..environment import Environment
40
+ from ..interpreter import Interpreter, kwargs
41
+ from ..interpreterbase import TYPE_kwargs, TYPE_var
42
+
43
+ class WriteBasicPackageVersionFile(TypedDict):
44
+
45
+ arch_independent: bool
46
+ compatibility: str
47
+ install_dir: T.Optional[str]
48
+ name: str
49
+ version: str
50
+
51
+ class ConfigurePackageConfigFile(TypedDict):
52
+
53
+ configuration: T.Union[build.ConfigurationData, dict]
54
+ input: T.Union[str, mesonlib.File]
55
+ install_dir: T.Optional[str]
56
+ name: str
57
+
58
+ class Subproject(kwargs.ExtractRequired):
59
+
60
+ options: T.Optional[CMakeSubprojectOptions]
61
+ cmake_options: T.List[str]
62
+ native: mesonlib.MachineChoice
63
+
64
+
65
+ COMPATIBILITIES = ['AnyNewerVersion', 'SameMajorVersion', 'SameMinorVersion', 'ExactVersion']
66
+
67
+ # Taken from https://github.com/Kitware/CMake/blob/master/Modules/CMakePackageConfigHelpers.cmake
68
+ PACKAGE_INIT_BASE = '''
69
+ ####### Expanded from \\@PACKAGE_INIT\\@ by configure_package_config_file() #######
70
+ ####### Any changes to this file will be overwritten by the next CMake run ####
71
+ ####### The input file was @inputFileName@ ########
72
+
73
+ get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/@PACKAGE_RELATIVE_PATH@" ABSOLUTE)
74
+ '''
75
+ PACKAGE_INIT_EXT = '''
76
+ # Use original install prefix when loaded through a "/usr move"
77
+ # cross-prefix symbolic link such as /lib -> /usr/lib.
78
+ get_filename_component(_realCurr "${CMAKE_CURRENT_LIST_DIR}" REALPATH)
79
+ get_filename_component(_realOrig "@absInstallDir@" REALPATH)
80
+ if(_realCurr STREQUAL _realOrig)
81
+ set(PACKAGE_PREFIX_DIR "@installPrefix@")
82
+ endif()
83
+ unset(_realOrig)
84
+ unset(_realCurr)
85
+ '''
86
+ PACKAGE_INIT_SET_AND_CHECK = '''
87
+ macro(set_and_check _var _file)
88
+ set(${_var} "${_file}")
89
+ if(NOT EXISTS "${_file}")
90
+ message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
91
+ endif()
92
+ endmacro()
93
+
94
+ ####################################################################################
95
+ '''
96
+
97
+ class CMakeSubproject(ModuleObject):
98
+ def __init__(self, subp: SubprojectHolder):
99
+ assert isinstance(subp, SubprojectHolder)
100
+ assert subp.cm_interpreter is not None
101
+ super().__init__()
102
+ self.subp = subp
103
+ self.cm_interpreter = subp.cm_interpreter
104
+ self.methods.update({'get_variable': self.get_variable,
105
+ 'dependency': self.dependency,
106
+ 'include_directories': self.include_directories,
107
+ 'target': self.target,
108
+ 'target_type': self.target_type,
109
+ 'target_list': self.target_list,
110
+ 'found': self.found_method,
111
+ })
112
+
113
+ def _args_to_info(self, args: T.List[str]) -> T.Dict[str, str]:
114
+ if len(args) != 1:
115
+ raise InterpreterException('Exactly one argument is required.')
116
+
117
+ tgt = args[0]
118
+ res = self.cm_interpreter.target_info(tgt)
119
+ if res is None:
120
+ raise InterpreterException(f'The CMake target {tgt} does not exist\n' +
121
+ ' Use the following command in your meson.build to list all available targets:\n\n' +
122
+ ' message(\'CMake targets:\\n - \' + \'\\n - \'.join(<cmake_subproject>.target_list()))')
123
+
124
+ # Make sure that all keys are present (if not this is a bug)
125
+ assert all(x in res for x in ['inc', 'src', 'dep', 'tgt', 'func'])
126
+ return res
127
+
128
+ @noKwargs
129
+ @stringArgs
130
+ def get_variable(self, state: ModuleState, args: T.List[str], kwargs: TYPE_kwargs) -> TYPE_var:
131
+ return self.subp.get_variable_method(args, kwargs)
132
+
133
+ @FeatureNewKwargs('dependency', '0.56.0', ['include_type'])
134
+ @permittedKwargs({'include_type'})
135
+ @stringArgs
136
+ def dependency(self, state: ModuleState, args: T.List[str], kwargs: T.Dict[str, str]) -> dependencies.Dependency:
137
+ info = self._args_to_info(args)
138
+ if info['func'] == 'executable':
139
+ raise InvalidArguments(f'{args[0]} is an executable and does not support the dependency() method. Use target() instead.')
140
+ orig = self.get_variable(state, [info['dep']], {})
141
+ assert isinstance(orig, dependencies.Dependency)
142
+ actual = orig.include_type
143
+ if 'include_type' in kwargs and kwargs['include_type'] != actual:
144
+ mlog.debug('Current include type is {}. Converting to requested {}'.format(actual, kwargs['include_type']))
145
+ return orig.generate_system_dependency(kwargs['include_type'])
146
+ return orig
147
+
148
+ @noKwargs
149
+ @stringArgs
150
+ def include_directories(self, state: ModuleState, args: T.List[str], kwargs: TYPE_kwargs) -> build.IncludeDirs:
151
+ info = self._args_to_info(args)
152
+ return self.get_variable(state, [info['inc']], kwargs)
153
+
154
+ @noKwargs
155
+ @stringArgs
156
+ def target(self, state: ModuleState, args: T.List[str], kwargs: TYPE_kwargs) -> build.Target:
157
+ info = self._args_to_info(args)
158
+ return self.get_variable(state, [info['tgt']], kwargs)
159
+
160
+ @noKwargs
161
+ @stringArgs
162
+ def target_type(self, state: ModuleState, args: T.List[str], kwargs: TYPE_kwargs) -> str:
163
+ info = self._args_to_info(args)
164
+ return info['func']
165
+
166
+ @noPosargs
167
+ @noKwargs
168
+ def target_list(self, state: ModuleState, args: TYPE_var, kwargs: TYPE_kwargs) -> T.List[str]:
169
+ return self.cm_interpreter.target_list()
170
+
171
+ @noPosargs
172
+ @noKwargs
173
+ @FeatureNew('CMakeSubproject.found()', '0.53.2')
174
+ def found_method(self, state: ModuleState, args: TYPE_var, kwargs: TYPE_kwargs) -> bool:
175
+ return self.subp is not None
176
+
177
+
178
+ class CMakeSubprojectOptions(ModuleObject):
179
+ def __init__(self) -> None:
180
+ super().__init__()
181
+ self.cmake_options: T.List[str] = []
182
+ self.target_options = TargetOptions()
183
+
184
+ self.methods.update(
185
+ {
186
+ 'add_cmake_defines': self.add_cmake_defines,
187
+ 'set_override_option': self.set_override_option,
188
+ 'set_install': self.set_install,
189
+ 'append_compile_args': self.append_compile_args,
190
+ 'append_link_args': self.append_link_args,
191
+ 'clear': self.clear,
192
+ }
193
+ )
194
+
195
+ def _get_opts(self, kwargs: dict) -> SingleTargetOptions:
196
+ if 'target' in kwargs:
197
+ return self.target_options[kwargs['target']]
198
+ return self.target_options.global_options
199
+
200
+ @typed_pos_args('subproject_options.add_cmake_defines', varargs=dict)
201
+ @noKwargs
202
+ def add_cmake_defines(self, state: ModuleState, args: T.Tuple[T.List[T.Dict[str, TYPE_var]]], kwargs: TYPE_kwargs) -> None:
203
+ self.cmake_options += cmake_defines_to_args(args[0])
204
+
205
+ @typed_pos_args('subproject_options.set_override_option', str, str)
206
+ @permittedKwargs({'target'})
207
+ def set_override_option(self, state: ModuleState, args: T.Tuple[str, str], kwargs: TYPE_kwargs) -> None:
208
+ self._get_opts(kwargs).set_opt(args[0], args[1])
209
+
210
+ @typed_pos_args('subproject_options.set_install', bool)
211
+ @permittedKwargs({'target'})
212
+ def set_install(self, state: ModuleState, args: T.Tuple[bool], kwargs: TYPE_kwargs) -> None:
213
+ self._get_opts(kwargs).set_install(args[0])
214
+
215
+ @typed_pos_args('subproject_options.append_compile_args', str, varargs=str, min_varargs=1)
216
+ @permittedKwargs({'target'})
217
+ def append_compile_args(self, state: ModuleState, args: T.Tuple[str, T.List[str]], kwargs: TYPE_kwargs) -> None:
218
+ self._get_opts(kwargs).append_args(args[0], args[1])
219
+
220
+ @typed_pos_args('subproject_options.append_link_args', varargs=str, min_varargs=1)
221
+ @permittedKwargs({'target'})
222
+ def append_link_args(self, state: ModuleState, args: T.Tuple[T.List[str]], kwargs: TYPE_kwargs) -> None:
223
+ self._get_opts(kwargs).append_link_args(args[0])
224
+
225
+ @noPosargs
226
+ @noKwargs
227
+ def clear(self, state: ModuleState, args: TYPE_var, kwargs: TYPE_kwargs) -> None:
228
+ self.cmake_options.clear()
229
+ self.target_options = TargetOptions()
230
+
231
+
232
+ class CmakeModule(ExtensionModule):
233
+ cmake_detected = False
234
+ cmake_root = None
235
+
236
+ INFO = ModuleInfo('cmake', '0.50.0')
237
+
238
+ def __init__(self, interpreter: Interpreter) -> None:
239
+ super().__init__(interpreter)
240
+ self.methods.update({
241
+ 'write_basic_package_version_file': self.write_basic_package_version_file,
242
+ 'configure_package_config_file': self.configure_package_config_file,
243
+ 'subproject': self.subproject,
244
+ 'subproject_options': self.subproject_options,
245
+ })
246
+
247
+ def detect_voidp_size(self, env: Environment) -> int:
248
+ compilers = env.coredata.compilers.host
249
+ compiler = compilers.get('c', None)
250
+ if not compiler:
251
+ compiler = compilers.get('cpp', None)
252
+
253
+ if not compiler:
254
+ raise mesonlib.MesonException('Requires a C or C++ compiler to compute sizeof(void *).')
255
+
256
+ return compiler.sizeof('void *', '', env)[0]
257
+
258
+ def detect_cmake(self, state: ModuleState) -> bool:
259
+ if self.cmake_detected:
260
+ return True
261
+
262
+ cmakebin = state.find_program('cmake', silent=False)
263
+ if not cmakebin.found():
264
+ return False
265
+
266
+ p, stdout, stderr = mesonlib.Popen_safe(cmakebin.get_command() + ['--system-information', '-G', 'Ninja'])[0:3]
267
+ if p.returncode != 0:
268
+ mlog.log(f'error retrieving cmake information: returnCode={p.returncode} stdout={stdout} stderr={stderr}')
269
+ return False
270
+
271
+ match = re.search('\nCMAKE_ROOT \\"([^"]+)"\n', stdout.strip())
272
+ if not match:
273
+ mlog.log('unable to determine cmake root')
274
+ return False
275
+
276
+ cmakePath = pathlib.PurePath(match.group(1))
277
+ self.cmake_root = os.path.join(*cmakePath.parts)
278
+ self.cmake_detected = True
279
+ return True
280
+
281
+ @noPosargs
282
+ @typed_kwargs(
283
+ 'cmake.write_basic_package_version_file',
284
+ KwargInfo('arch_independent', bool, default=False, since='0.62.0'),
285
+ KwargInfo('compatibility', str, default='AnyNewerVersion', validator=in_set_validator(set(COMPATIBILITIES))),
286
+ KwargInfo('name', str, required=True),
287
+ KwargInfo('version', str, required=True),
288
+ INSTALL_DIR_KW,
289
+ )
290
+ def write_basic_package_version_file(self, state: ModuleState, args: TYPE_var, kwargs: 'WriteBasicPackageVersionFile') -> ModuleReturnValue:
291
+ arch_independent = kwargs['arch_independent']
292
+ compatibility = kwargs['compatibility']
293
+ name = kwargs['name']
294
+ version = kwargs['version']
295
+
296
+ if not self.detect_cmake(state):
297
+ raise mesonlib.MesonException('Unable to find cmake')
298
+
299
+ pkgroot = pkgroot_name = kwargs['install_dir']
300
+ if pkgroot is None:
301
+ pkgroot = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'cmake', name)
302
+ pkgroot_name = os.path.join('{libdir}', 'cmake', name)
303
+
304
+ template_file = os.path.join(self.cmake_root, 'Modules', f'BasicConfigVersion-{compatibility}.cmake.in')
305
+ if not os.path.exists(template_file):
306
+ raise mesonlib.MesonException(f'your cmake installation doesn\'t support the {compatibility} compatibility')
307
+
308
+ version_file = os.path.join(state.environment.scratch_dir, f'{name}ConfigVersion.cmake')
309
+
310
+ conf: T.Dict[str, T.Union[str, bool, int]] = {
311
+ 'CVF_VERSION': version,
312
+ 'CMAKE_SIZEOF_VOID_P': str(self.detect_voidp_size(state.environment)),
313
+ 'CVF_ARCH_INDEPENDENT': arch_independent,
314
+ }
315
+ mesonlib.do_conf_file(template_file, version_file, build.ConfigurationData(conf), 'meson')
316
+
317
+ res = build.Data([mesonlib.File(True, state.environment.get_scratch_dir(), version_file)], pkgroot, pkgroot_name, None, state.subproject)
318
+ return ModuleReturnValue(res, [res])
319
+
320
+ def create_package_file(self, infile: str, outfile: str, PACKAGE_RELATIVE_PATH: str, extra: str, confdata: build.ConfigurationData) -> None:
321
+ package_init = PACKAGE_INIT_BASE.replace('@PACKAGE_RELATIVE_PATH@', PACKAGE_RELATIVE_PATH)
322
+ package_init = package_init.replace('@inputFileName@', os.path.basename(infile))
323
+ package_init += extra
324
+ package_init += PACKAGE_INIT_SET_AND_CHECK
325
+
326
+ try:
327
+ with open(infile, encoding='utf-8') as fin:
328
+ data = fin.readlines()
329
+ except Exception as e:
330
+ raise mesonlib.MesonException(f'Could not read input file {infile}: {e!s}')
331
+
332
+ result = []
333
+ regex = mesonlib.get_variable_regex('cmake@')
334
+ for line in data:
335
+ line = line.replace('@PACKAGE_INIT@', package_init)
336
+ line, _missing = mesonlib.do_replacement(regex, line, 'cmake@', confdata)
337
+
338
+ result.append(line)
339
+
340
+ outfile_tmp = outfile + "~"
341
+ with open(outfile_tmp, "w", encoding='utf-8') as fout:
342
+ fout.writelines(result)
343
+
344
+ shutil.copymode(infile, outfile_tmp)
345
+ mesonlib.replace_if_different(outfile, outfile_tmp)
346
+
347
+ @noPosargs
348
+ @typed_kwargs(
349
+ 'cmake.configure_package_config_file',
350
+ KwargInfo('configuration', (build.ConfigurationData, dict), required=True),
351
+ KwargInfo('input',
352
+ (str, mesonlib.File, ContainerTypeInfo(list, mesonlib.File)), required=True,
353
+ validator=lambda x: 'requires exactly one file' if isinstance(x, list) and len(x) != 1 else None,
354
+ convertor=lambda x: x[0] if isinstance(x, list) else x),
355
+ KwargInfo('name', str, required=True),
356
+ INSTALL_DIR_KW,
357
+ )
358
+ def configure_package_config_file(self, state: ModuleState, args: TYPE_var, kwargs: 'ConfigurePackageConfigFile') -> build.Data:
359
+ inputfile = kwargs['input']
360
+ if isinstance(inputfile, str):
361
+ inputfile = mesonlib.File.from_source_file(state.environment.source_dir, state.subdir, inputfile)
362
+
363
+ ifile_abs = inputfile.absolute_path(state.environment.source_dir, state.environment.build_dir)
364
+
365
+ name = kwargs['name']
366
+
367
+ (ofile_path, ofile_fname) = os.path.split(os.path.join(state.subdir, f'{name}Config.cmake'))
368
+ ofile_abs = os.path.join(state.environment.build_dir, ofile_path, ofile_fname)
369
+
370
+ install_dir = kwargs['install_dir']
371
+ if install_dir is None:
372
+ install_dir = os.path.join(state.environment.coredata.get_option(mesonlib.OptionKey('libdir')), 'cmake', name)
373
+
374
+ conf = kwargs['configuration']
375
+ if isinstance(conf, dict):
376
+ FeatureNew.single_use('cmake.configure_package_config_file dict as configuration', '0.62.0', state.subproject, location=state.current_node)
377
+ conf = build.ConfigurationData(conf)
378
+
379
+ prefix = state.environment.coredata.get_option(mesonlib.OptionKey('prefix'))
380
+ abs_install_dir = install_dir
381
+ if not os.path.isabs(abs_install_dir):
382
+ abs_install_dir = os.path.join(prefix, install_dir)
383
+
384
+ # path used in cmake scripts are POSIX even on Windows
385
+ PACKAGE_RELATIVE_PATH = pathlib.PurePath(os.path.relpath(prefix, abs_install_dir)).as_posix()
386
+ extra = ''
387
+ if re.match('^(/usr)?/lib(64)?/.+', abs_install_dir):
388
+ extra = PACKAGE_INIT_EXT.replace('@absInstallDir@', abs_install_dir)
389
+ extra = extra.replace('@installPrefix@', prefix)
390
+
391
+ self.create_package_file(ifile_abs, ofile_abs, PACKAGE_RELATIVE_PATH, extra, conf)
392
+ conf.used = True
393
+
394
+ conffile = os.path.normpath(inputfile.relative_name())
395
+ self.interpreter.build_def_files.add(conffile)
396
+
397
+ res = build.Data([mesonlib.File(True, ofile_path, ofile_fname)], install_dir, install_dir, None, state.subproject)
398
+ self.interpreter.build.data.append(res)
399
+
400
+ return res
401
+
402
+ @FeatureNew('subproject', '0.51.0')
403
+ @typed_pos_args('cmake.subproject', str)
404
+ @typed_kwargs(
405
+ 'cmake.subproject',
406
+ REQUIRED_KW,
407
+ NATIVE_KW.evolve(since='1.3.0'),
408
+ KwargInfo('options', (CMakeSubprojectOptions, NoneType), since='0.55.0'),
409
+ KwargInfo(
410
+ 'cmake_options',
411
+ ContainerTypeInfo(list, str),
412
+ default=[],
413
+ listify=True,
414
+ deprecated='0.55.0',
415
+ deprecated_message='Use options instead',
416
+ ),
417
+ )
418
+ def subproject(self, state: ModuleState, args: T.Tuple[str], kwargs_: Subproject) -> T.Union[SubprojectHolder, CMakeSubproject]:
419
+ if kwargs_['cmake_options'] and kwargs_['options'] is not None:
420
+ raise InterpreterException('"options" cannot be used together with "cmake_options"')
421
+ dirname = args[0]
422
+ kw: kwargs.DoSubproject = {
423
+ 'required': kwargs_['required'],
424
+ 'options': kwargs_['options'],
425
+ 'cmake_options': kwargs_['cmake_options'],
426
+ 'default_options': {},
427
+ 'version': [],
428
+ 'for_machine': kwargs_['native'],
429
+ }
430
+ subp = self.interpreter.do_subproject(dirname, kw, force_method='cmake')
431
+ if not subp.found():
432
+ return subp
433
+ return CMakeSubproject(subp)
434
+
435
+ @FeatureNew('subproject_options', '0.55.0')
436
+ @noKwargs
437
+ @noPosargs
438
+ def subproject_options(self, state: ModuleState, args: TYPE_var, kwargs: TYPE_kwargs) -> CMakeSubprojectOptions:
439
+ return CMakeSubprojectOptions()
440
+
441
+ def initialize(*args: T.Any, **kwargs: T.Any) -> CmakeModule:
442
+ return CmakeModule(*args, **kwargs)