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,281 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2013-2017 The Meson development team
3
+
4
+ # This file contains the detection logic for external dependencies that
5
+ # are UI-related.
6
+ from __future__ import annotations
7
+
8
+ import os
9
+ import re
10
+ import subprocess
11
+ import typing as T
12
+
13
+ from .. import mlog
14
+ from .. import mesonlib
15
+ from ..compilers.compilers import CrossNoRunException
16
+ from ..mesonlib import (
17
+ Popen_safe, extract_as_list, version_compare_many
18
+ )
19
+ from ..environment import detect_cpu_family
20
+
21
+ from .base import DependencyException, DependencyMethods, DependencyTypeName, SystemDependency
22
+ from .configtool import ConfigToolDependency
23
+ from .detect import packages
24
+ from .factory import DependencyFactory
25
+
26
+ if T.TYPE_CHECKING:
27
+ from ..environment import Environment
28
+
29
+
30
+ class GLDependencySystem(SystemDependency):
31
+ def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any]) -> None:
32
+ super().__init__(name, environment, kwargs)
33
+
34
+ if self.env.machines[self.for_machine].is_darwin():
35
+ self.is_found = True
36
+ # FIXME: Use AppleFrameworks dependency
37
+ self.link_args = ['-framework', 'OpenGL']
38
+ # FIXME: Detect version using self.clib_compiler
39
+ return
40
+ elif self.env.machines[self.for_machine].is_windows():
41
+ self.is_found = True
42
+ # FIXME: Use self.clib_compiler.find_library()
43
+ self.link_args = ['-lopengl32']
44
+ # FIXME: Detect version using self.clib_compiler
45
+ return
46
+ else:
47
+ links = self.clib_compiler.find_library('GL', environment, [])
48
+ has_header = self.clib_compiler.has_header('GL/gl.h', '', environment)[0]
49
+ if links and has_header:
50
+ self.is_found = True
51
+ self.link_args = links
52
+ elif links:
53
+ raise DependencyException('Found GL runtime library but no development header files')
54
+
55
+ class GnuStepDependency(ConfigToolDependency):
56
+
57
+ tools = ['gnustep-config']
58
+ tool_name = 'gnustep-config'
59
+
60
+ def __init__(self, environment: 'Environment', kwargs: T.Dict[str, T.Any]) -> None:
61
+ super().__init__('gnustep', environment, kwargs, language='objc')
62
+ if not self.is_found:
63
+ return
64
+ self.modules = kwargs.get('modules', [])
65
+ self.compile_args = self.filter_args(
66
+ self.get_config_value(['--objc-flags'], 'compile_args'))
67
+ self.link_args = self.weird_filter(self.get_config_value(
68
+ ['--gui-libs' if 'gui' in self.modules else '--base-libs'],
69
+ 'link_args'))
70
+
71
+ def find_config(self, versions: T.Optional[T.List[str]] = None, returncode: int = 0) -> T.Tuple[T.Optional[T.List[str]], T.Optional[str]]:
72
+ tool = [self.tools[0]]
73
+ try:
74
+ p, out = Popen_safe(tool + ['--help'])[:2]
75
+ except (FileNotFoundError, PermissionError):
76
+ return (None, None)
77
+ if p.returncode != returncode:
78
+ return (None, None)
79
+ self.config = tool
80
+ found_version = self.detect_version()
81
+ if versions and not version_compare_many(found_version, versions)[0]:
82
+ return (None, found_version)
83
+
84
+ return (tool, found_version)
85
+
86
+ @staticmethod
87
+ def weird_filter(elems: T.List[str]) -> T.List[str]:
88
+ """When building packages, the output of the enclosing Make is
89
+ sometimes mixed among the subprocess output. I have no idea why. As a
90
+ hack filter out everything that is not a flag.
91
+ """
92
+ return [e for e in elems if e.startswith('-')]
93
+
94
+ @staticmethod
95
+ def filter_args(args: T.List[str]) -> T.List[str]:
96
+ """gnustep-config returns a bunch of garbage args such as -O2 and so
97
+ on. Drop everything that is not needed.
98
+ """
99
+ result = []
100
+ for f in args:
101
+ if f.startswith('-D') \
102
+ or f.startswith('-f') \
103
+ or f.startswith('-I') \
104
+ or f == '-pthread' \
105
+ or (f.startswith('-W') and not f == '-Wall'):
106
+ result.append(f)
107
+ return result
108
+
109
+ def detect_version(self) -> str:
110
+ gmake = self.get_config_value(['--variable=GNUMAKE'], 'variable')[0]
111
+ makefile_dir = self.get_config_value(['--variable=GNUSTEP_MAKEFILES'], 'variable')[0]
112
+ # This Makefile has the GNUStep version set
113
+ base_make = os.path.join(makefile_dir, 'Additional', 'base.make')
114
+ # Print the Makefile variable passed as the argument. For instance, if
115
+ # you run the make target `print-SOME_VARIABLE`, this will print the
116
+ # value of the variable `SOME_VARIABLE`.
117
+ printver = "print-%:\n\t@echo '$($*)'"
118
+ env = os.environ.copy()
119
+ # See base.make to understand why this is set
120
+ env['FOUNDATION_LIB'] = 'gnu'
121
+ p, o, e = Popen_safe([gmake, '-f', '-', '-f', base_make,
122
+ 'print-GNUSTEP_BASE_VERSION'],
123
+ env=env, write=printver, stdin=subprocess.PIPE)
124
+ version = o.strip()
125
+ if not version:
126
+ mlog.debug("Couldn't detect GNUStep version, falling back to '1'")
127
+ # Fallback to setting some 1.x version
128
+ version = '1'
129
+ return version
130
+
131
+ packages['gnustep'] = GnuStepDependency
132
+
133
+
134
+ class SDL2DependencyConfigTool(ConfigToolDependency):
135
+
136
+ tools = ['sdl2-config']
137
+ tool_name = 'sdl2-config'
138
+
139
+ def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
140
+ super().__init__(name, environment, kwargs)
141
+ if not self.is_found:
142
+ return
143
+ self.compile_args = self.get_config_value(['--cflags'], 'compile_args')
144
+ self.link_args = self.get_config_value(['--libs'], 'link_args')
145
+
146
+
147
+ class WxDependency(ConfigToolDependency):
148
+
149
+ tools = ['wx-config-3.0', 'wx-config-3.1', 'wx-config', 'wx-config-gtk3']
150
+ tool_name = 'wx-config'
151
+
152
+ def __init__(self, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
153
+ super().__init__('WxWidgets', environment, kwargs, language='cpp')
154
+ if not self.is_found:
155
+ return
156
+ self.requested_modules = self.get_requested(kwargs)
157
+
158
+ extra_args = []
159
+ if self.static:
160
+ extra_args.append('--static=yes')
161
+
162
+ # Check to make sure static is going to work
163
+ err = Popen_safe(self.config + extra_args)[2]
164
+ if 'No config found to match' in err:
165
+ mlog.debug('WxWidgets is missing static libraries.')
166
+ self.is_found = False
167
+ return
168
+
169
+ # wx-config seems to have a cflags as well but since it requires C++,
170
+ # this should be good, at least for now.
171
+ self.compile_args = self.get_config_value(['--cxxflags'] + extra_args + self.requested_modules, 'compile_args')
172
+ self.link_args = self.get_config_value(['--libs'] + extra_args + self.requested_modules, 'link_args')
173
+
174
+ @staticmethod
175
+ def get_requested(kwargs: T.Dict[str, T.Any]) -> T.List[str]:
176
+ if 'modules' not in kwargs:
177
+ return []
178
+ candidates = extract_as_list(kwargs, 'modules')
179
+ for c in candidates:
180
+ if not isinstance(c, str):
181
+ raise DependencyException('wxwidgets module argument is not a string')
182
+ return candidates
183
+
184
+ packages['wxwidgets'] = WxDependency
185
+
186
+ class VulkanDependencySystem(SystemDependency):
187
+
188
+ def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any], language: T.Optional[str] = None) -> None:
189
+ super().__init__(name, environment, kwargs, language=language)
190
+
191
+ try:
192
+ self.vulkan_sdk = os.environ['VULKAN_SDK']
193
+ if not os.path.isabs(self.vulkan_sdk):
194
+ raise DependencyException('VULKAN_SDK must be an absolute path.')
195
+ except KeyError:
196
+ self.vulkan_sdk = None
197
+
198
+ if self.vulkan_sdk:
199
+ # TODO: this config might not work on some platforms, fix bugs as reported
200
+ # we should at least detect other 64-bit platforms (e.g. armv8)
201
+ lib_name = 'vulkan'
202
+ lib_dir = 'lib'
203
+ inc_dir = 'include'
204
+ if mesonlib.is_windows():
205
+ lib_name = 'vulkan-1'
206
+ lib_dir = 'Lib32'
207
+ inc_dir = 'Include'
208
+ if detect_cpu_family(self.env.coredata.compilers.host) == 'x86_64':
209
+ lib_dir = 'Lib'
210
+
211
+ # make sure header and lib are valid
212
+ inc_path = os.path.join(self.vulkan_sdk, inc_dir)
213
+ header = os.path.join(inc_path, 'vulkan', 'vulkan.h')
214
+ lib_path = os.path.join(self.vulkan_sdk, lib_dir)
215
+ find_lib = self.clib_compiler.find_library(lib_name, environment, [lib_path])
216
+
217
+ if not find_lib:
218
+ raise DependencyException('VULKAN_SDK point to invalid directory (no lib)')
219
+
220
+ if not os.path.isfile(header):
221
+ raise DependencyException('VULKAN_SDK point to invalid directory (no include)')
222
+
223
+ # XXX: this is very odd, and may deserve being removed
224
+ self.type_name = DependencyTypeName('vulkan_sdk')
225
+ self.is_found = True
226
+ self.compile_args.append('-I' + inc_path)
227
+ self.link_args.append('-L' + lib_path)
228
+ self.link_args.append('-l' + lib_name)
229
+ else:
230
+ # simply try to guess it, usually works on linux
231
+ libs = self.clib_compiler.find_library('vulkan', environment, [])
232
+ if libs is not None and self.clib_compiler.has_header('vulkan/vulkan.h', '', environment, disable_cache=True)[0]:
233
+ self.is_found = True
234
+ for lib in libs:
235
+ self.link_args.append(lib)
236
+
237
+ if self.is_found:
238
+ get_version = '''\
239
+ #include <stdio.h>
240
+ #include <vulkan/vulkan.h>
241
+
242
+ int main() {
243
+ printf("%i.%i.%i", VK_VERSION_MAJOR(VK_HEADER_VERSION_COMPLETE),
244
+ VK_VERSION_MINOR(VK_HEADER_VERSION_COMPLETE),
245
+ VK_VERSION_PATCH(VK_HEADER_VERSION_COMPLETE));
246
+ return 0;
247
+ }
248
+ '''
249
+ try:
250
+ run = self.clib_compiler.run(get_version, environment, extra_args=self.compile_args)
251
+ except CrossNoRunException:
252
+ run = None
253
+ if run and run.compiled and run.returncode == 0:
254
+ self.version = run.stdout
255
+ elif self.vulkan_sdk:
256
+ # fall back to heuristics: detect version number in path
257
+ # matches the default install path on Windows
258
+ match = re.search(rf'VulkanSDK{re.escape(os.path.sep)}([0-9]+(?:\.[0-9]+)+)', self.vulkan_sdk)
259
+ if match:
260
+ self.version = match.group(1)
261
+ else:
262
+ mlog.warning(f'Environment variable VULKAN_SDK={self.vulkan_sdk} is present, but Vulkan version could not be extracted.')
263
+
264
+ packages['gl'] = gl_factory = DependencyFactory(
265
+ 'gl',
266
+ [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM],
267
+ system_class=GLDependencySystem,
268
+ )
269
+
270
+ packages['sdl2'] = sdl2_factory = DependencyFactory(
271
+ 'sdl2',
272
+ [DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL, DependencyMethods.EXTRAFRAMEWORK, DependencyMethods.CMAKE],
273
+ configtool_class=SDL2DependencyConfigTool,
274
+ cmake_name='SDL2',
275
+ )
276
+
277
+ packages['vulkan'] = vulkan_factory = DependencyFactory(
278
+ 'vulkan',
279
+ [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM],
280
+ system_class=VulkanDependencySystem,
281
+ )
@@ -0,0 +1,82 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 Red Hat, Inc.
3
+
4
+ from __future__ import annotations
5
+
6
+ import typing as T
7
+
8
+
9
+ def parse(lines: T.Iterable[str]) -> T.List[T.Tuple[T.List[str], T.List[str]]]:
10
+ rules: T.List[T.Tuple[T.List[str], T.List[str]]] = []
11
+ targets: T.List[str] = []
12
+ deps: T.List[str] = []
13
+ in_deps = False
14
+ out = ''
15
+ for line in lines:
16
+ if not line.endswith('\n'):
17
+ line += '\n'
18
+ escape = None
19
+ for c in line:
20
+ if escape:
21
+ if escape == '$' and c != '$':
22
+ out += '$'
23
+ if escape == '\\' and c == '\n':
24
+ continue
25
+ out += c
26
+ escape = None
27
+ continue
28
+ if c in {'\\', '$'}:
29
+ escape = c
30
+ continue
31
+ elif c in {' ', '\n'}:
32
+ if out != '':
33
+ if in_deps:
34
+ deps.append(out)
35
+ else:
36
+ targets.append(out)
37
+ out = ''
38
+ if c == '\n':
39
+ rules.append((targets, deps))
40
+ targets = []
41
+ deps = []
42
+ in_deps = False
43
+ continue
44
+ elif c == ':':
45
+ targets.append(out)
46
+ out = ''
47
+ in_deps = True
48
+ continue
49
+ out += c
50
+ return rules
51
+
52
+ class Target(T.NamedTuple):
53
+
54
+ deps: T.Set[str]
55
+
56
+
57
+ class DepFile:
58
+ def __init__(self, lines: T.Iterable[str]):
59
+ rules = parse(lines)
60
+ depfile: T.Dict[str, Target] = {}
61
+ for (targets, deps) in rules:
62
+ for target in targets:
63
+ t = depfile.setdefault(target, Target(deps=set()))
64
+ for dep in deps:
65
+ t.deps.add(dep)
66
+ self.depfile = depfile
67
+
68
+ def get_all_dependencies(self, name: str, visited: T.Optional[T.Set[str]] = None) -> T.List[str]:
69
+ deps: T.Set[str] = set()
70
+ if not visited:
71
+ visited = set()
72
+ if name in visited:
73
+ return []
74
+ visited.add(name)
75
+
76
+ target = self.depfile.get(name)
77
+ if not target:
78
+ return []
79
+ deps.update(target.deps)
80
+ for dep in target.deps:
81
+ deps.update(self.get_all_dependencies(dep, visited))
82
+ return sorted(deps)