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,107 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2019 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+
7
+ from . import coredata as cdata
8
+ from .mesonlib import MachineChoice, OptionKey
9
+
10
+ import os.path
11
+ import pprint
12
+ import textwrap
13
+
14
+ # Note: when adding arguments, please also add them to the completion
15
+ # scripts in $MESONSRC/data/shell-completions/
16
+ def add_arguments(parser):
17
+ parser.add_argument('--all', action='store_true', dest='all', default=False,
18
+ help='Show data not used by current backend.')
19
+
20
+ parser.add_argument('builddir', nargs='?', default='.', help='The build directory')
21
+
22
+
23
+ def dump_compilers(compilers):
24
+ for lang, compiler in compilers.items():
25
+ print(' ' + lang + ':')
26
+ print(' Id: ' + compiler.id)
27
+ print(' Command: ' + ' '.join(compiler.exelist))
28
+ if compiler.full_version:
29
+ print(' Full version: ' + compiler.full_version)
30
+ if compiler.version:
31
+ print(' Detected version: ' + compiler.version)
32
+
33
+
34
+ def dump_guids(d):
35
+ for name, value in d.items():
36
+ print(' ' + name + ': ' + value)
37
+
38
+
39
+ def run(options):
40
+ datadir = 'meson-private'
41
+ if options.builddir is not None:
42
+ datadir = os.path.join(options.builddir, datadir)
43
+ if not os.path.isdir(datadir):
44
+ print('Current directory is not a build dir. Please specify it or '
45
+ 'change the working directory to it.')
46
+ return 1
47
+
48
+ all_backends = options.all
49
+
50
+ print('This is a dump of the internal unstable cache of meson. This is for debugging only.')
51
+ print('Do NOT parse, this will change from version to version in incompatible ways')
52
+ print('')
53
+
54
+ coredata = cdata.load(options.builddir)
55
+ backend = coredata.get_option(OptionKey('backend'))
56
+ for k, v in sorted(coredata.__dict__.items()):
57
+ if k in {'backend_options', 'base_options', 'builtins', 'compiler_options', 'user_options'}:
58
+ # use `meson configure` to view these
59
+ pass
60
+ elif k in {'install_guid', 'test_guid', 'regen_guid'}:
61
+ if all_backends or backend.startswith('vs'):
62
+ print(k + ': ' + v)
63
+ elif k == 'target_guids':
64
+ if all_backends or backend.startswith('vs'):
65
+ print(k + ':')
66
+ dump_guids(v)
67
+ elif k == 'lang_guids':
68
+ if all_backends or backend.startswith('vs') or backend == 'xcode':
69
+ print(k + ':')
70
+ dump_guids(v)
71
+ elif k == 'meson_command':
72
+ if all_backends or backend.startswith('vs'):
73
+ print('Meson command used in build file regeneration: ' + ' '.join(v))
74
+ elif k == 'pkgconf_envvar':
75
+ print('Last seen PKGCONFIG environment variable value: ' + v)
76
+ elif k == 'version':
77
+ print('Meson version: ' + v)
78
+ elif k == 'cross_files':
79
+ if v:
80
+ print('Cross File: ' + ' '.join(v))
81
+ elif k == 'config_files':
82
+ if v:
83
+ print('Native File: ' + ' '.join(v))
84
+ elif k == 'compilers':
85
+ for for_machine in MachineChoice:
86
+ print('Cached {} machine compilers:'.format(
87
+ for_machine.get_lower_case_name()))
88
+ dump_compilers(v[for_machine])
89
+ elif k == 'deps':
90
+ def print_dep(dep_key, dep):
91
+ print(' ' + dep_key[0][1] + ": ")
92
+ print(' compile args: ' + repr(dep.get_compile_args()))
93
+ print(' link args: ' + repr(dep.get_link_args()))
94
+ if dep.get_sources():
95
+ print(' sources: ' + repr(dep.get_sources()))
96
+ print(' version: ' + repr(dep.get_version()))
97
+
98
+ for for_machine in iter(MachineChoice):
99
+ items_list = sorted(v[for_machine].items())
100
+ if items_list:
101
+ print(f'Cached dependencies for {for_machine.get_lower_case_name()} machine')
102
+ for dep_key, deps in items_list:
103
+ for dep in deps:
104
+ print_dep(dep_key, dep)
105
+ else:
106
+ print(k + ':')
107
+ print(textwrap.indent(pprint.pformat(v), ' '))
@@ -0,0 +1,276 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2013-2014 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import re
7
+ import typing as T
8
+
9
+ from . import coredata
10
+ from . import mesonlib
11
+ from . import mparser
12
+ from . import mlog
13
+ from .interpreterbase import FeatureNew, FeatureDeprecated, typed_pos_args, typed_kwargs, ContainerTypeInfo, KwargInfo
14
+ from .interpreter.type_checking import NoneType, in_set_validator
15
+
16
+ if T.TYPE_CHECKING:
17
+ from .interpreterbase import TYPE_var, TYPE_kwargs
18
+ from .interpreterbase import SubProject
19
+ from typing_extensions import TypedDict, Literal
20
+
21
+ _DEPRECATED_ARGS = T.Union[bool, str, T.Dict[str, str], T.List[str]]
22
+
23
+ FuncOptionArgs = TypedDict('FuncOptionArgs', {
24
+ 'type': str,
25
+ 'description': str,
26
+ 'yield': bool,
27
+ 'choices': T.Optional[T.List[str]],
28
+ 'value': object,
29
+ 'min': T.Optional[int],
30
+ 'max': T.Optional[int],
31
+ 'deprecated': _DEPRECATED_ARGS,
32
+ })
33
+
34
+ class StringArgs(TypedDict):
35
+ value: str
36
+
37
+ class BooleanArgs(TypedDict):
38
+ value: bool
39
+
40
+ class ComboArgs(TypedDict):
41
+ value: str
42
+ choices: T.List[str]
43
+
44
+ class IntegerArgs(TypedDict):
45
+ value: int
46
+ min: T.Optional[int]
47
+ max: T.Optional[int]
48
+
49
+ class StringArrayArgs(TypedDict):
50
+ value: T.Optional[T.Union[str, T.List[str]]]
51
+ choices: T.List[str]
52
+
53
+ class FeatureArgs(TypedDict):
54
+ value: Literal['enabled', 'disabled', 'auto']
55
+ choices: T.List[str]
56
+
57
+
58
+ class OptionException(mesonlib.MesonException):
59
+ pass
60
+
61
+
62
+ optname_regex = re.compile('[^a-zA-Z0-9_-]')
63
+
64
+
65
+ class OptionInterpreter:
66
+ def __init__(self, subproject: 'SubProject') -> None:
67
+ self.options: 'coredata.MutableKeyedOptionDictType' = {}
68
+ self.subproject = subproject
69
+ self.option_types: T.Dict[str, T.Callable[..., coredata.UserOption]] = {
70
+ 'string': self.string_parser,
71
+ 'boolean': self.boolean_parser,
72
+ 'combo': self.combo_parser,
73
+ 'integer': self.integer_parser,
74
+ 'array': self.string_array_parser,
75
+ 'feature': self.feature_parser,
76
+ }
77
+
78
+ def process(self, option_file: str) -> None:
79
+ try:
80
+ with open(option_file, encoding='utf-8') as f:
81
+ ast = mparser.Parser(f.read(), option_file).parse()
82
+ except mesonlib.MesonException as me:
83
+ me.file = option_file
84
+ raise me
85
+ if not isinstance(ast, mparser.CodeBlockNode):
86
+ e = OptionException('Option file is malformed.')
87
+ e.lineno = ast.lineno()
88
+ e.file = option_file
89
+ raise e
90
+ for cur in ast.lines:
91
+ try:
92
+ self.current_node = cur
93
+ self.evaluate_statement(cur)
94
+ except mesonlib.MesonException as e:
95
+ e.lineno = cur.lineno
96
+ e.colno = cur.colno
97
+ e.file = option_file
98
+ raise e
99
+ except Exception as e:
100
+ raise mesonlib.MesonException(
101
+ str(e), lineno=cur.lineno, colno=cur.colno, file=option_file)
102
+
103
+ def reduce_single(self, arg: T.Union[str, mparser.BaseNode]) -> 'TYPE_var':
104
+ if isinstance(arg, str):
105
+ return arg
106
+ if isinstance(arg, mparser.ParenthesizedNode):
107
+ return self.reduce_single(arg.inner)
108
+ elif isinstance(arg, (mparser.BaseStringNode, mparser.BooleanNode,
109
+ mparser.NumberNode)):
110
+ return arg.value
111
+ elif isinstance(arg, mparser.ArrayNode):
112
+ return [self.reduce_single(curarg) for curarg in arg.args.arguments]
113
+ elif isinstance(arg, mparser.DictNode):
114
+ d = {}
115
+ for k, v in arg.args.kwargs.items():
116
+ if not isinstance(k, mparser.BaseStringNode):
117
+ raise OptionException('Dictionary keys must be a string literal')
118
+ d[k.value] = self.reduce_single(v)
119
+ return d
120
+ elif isinstance(arg, mparser.UMinusNode):
121
+ res = self.reduce_single(arg.value)
122
+ if not isinstance(res, (int, float)):
123
+ raise OptionException('Token after "-" is not a number')
124
+ FeatureNew.single_use('negative numbers in meson_options.txt', '0.54.1', self.subproject)
125
+ return -res
126
+ elif isinstance(arg, mparser.NotNode):
127
+ res = self.reduce_single(arg.value)
128
+ if not isinstance(res, bool):
129
+ raise OptionException('Token after "not" is not a a boolean')
130
+ FeatureNew.single_use('negation ("not") in meson_options.txt', '0.54.1', self.subproject)
131
+ return not res
132
+ elif isinstance(arg, mparser.ArithmeticNode):
133
+ l = self.reduce_single(arg.left)
134
+ r = self.reduce_single(arg.right)
135
+ if not (arg.operation == 'add' and isinstance(l, str) and isinstance(r, str)):
136
+ raise OptionException('Only string concatenation with the "+" operator is allowed')
137
+ FeatureNew.single_use('string concatenation in meson_options.txt', '0.55.0', self.subproject)
138
+ return l + r
139
+ else:
140
+ raise OptionException('Arguments may only be string, int, bool, or array of those.')
141
+
142
+ def reduce_arguments(self, args: mparser.ArgumentNode) -> T.Tuple['TYPE_var', 'TYPE_kwargs']:
143
+ if args.incorrect_order():
144
+ raise OptionException('All keyword arguments must be after positional arguments.')
145
+ reduced_pos = [self.reduce_single(arg) for arg in args.arguments]
146
+ reduced_kw = {}
147
+ for key in args.kwargs.keys():
148
+ if not isinstance(key, mparser.IdNode):
149
+ raise OptionException('Keyword argument name is not a string.')
150
+ a = args.kwargs[key]
151
+ reduced_kw[key.value] = self.reduce_single(a)
152
+ return reduced_pos, reduced_kw
153
+
154
+ def evaluate_statement(self, node: mparser.BaseNode) -> None:
155
+ if not isinstance(node, mparser.FunctionNode):
156
+ raise OptionException('Option file may only contain option definitions')
157
+ func_name = node.func_name.value
158
+ if func_name != 'option':
159
+ raise OptionException('Only calls to option() are allowed in option files.')
160
+ (posargs, kwargs) = self.reduce_arguments(node.args)
161
+ self.func_option(posargs, kwargs)
162
+
163
+ @typed_kwargs(
164
+ 'option',
165
+ KwargInfo(
166
+ 'type',
167
+ str,
168
+ required=True,
169
+ validator=in_set_validator({'string', 'boolean', 'integer', 'combo', 'array', 'feature'})
170
+ ),
171
+ KwargInfo('description', str, default=''),
172
+ KwargInfo(
173
+ 'deprecated',
174
+ (bool, str, ContainerTypeInfo(dict, str), ContainerTypeInfo(list, str)),
175
+ default=False,
176
+ since='0.60.0',
177
+ since_values={str: '0.63.0'},
178
+ ),
179
+ KwargInfo('yield', bool, default=coredata.DEFAULT_YIELDING, since='0.45.0'),
180
+ allow_unknown=True,
181
+ )
182
+ @typed_pos_args('option', str)
183
+ def func_option(self, args: T.Tuple[str], kwargs: 'FuncOptionArgs') -> None:
184
+ opt_name = args[0]
185
+ if optname_regex.search(opt_name) is not None:
186
+ raise OptionException('Option names can only contain letters, numbers or dashes.')
187
+ key = mesonlib.OptionKey.from_string(opt_name).evolve(subproject=self.subproject)
188
+ if not key.is_project():
189
+ raise OptionException('Option name %s is reserved.' % opt_name)
190
+
191
+ opt_type = kwargs['type']
192
+ parser = self.option_types[opt_type]
193
+ description = kwargs['description'] or opt_name
194
+
195
+ # Drop the arguments we've already consumed
196
+ n_kwargs = {k: v for k, v in kwargs.items()
197
+ if k not in {'type', 'description', 'deprecated', 'yield'}}
198
+
199
+ opt = parser(opt_name, description, (kwargs['yield'], kwargs['deprecated']), n_kwargs)
200
+ if key in self.options:
201
+ mlog.deprecation(f'Option {opt_name} already exists.')
202
+ self.options[key] = opt
203
+
204
+ @typed_kwargs(
205
+ 'string option',
206
+ KwargInfo('value', str, default=''),
207
+ )
208
+ def string_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: StringArgs) -> coredata.UserOption:
209
+ return coredata.UserStringOption(name, description, kwargs['value'], *args)
210
+
211
+ @typed_kwargs(
212
+ 'boolean option',
213
+ KwargInfo(
214
+ 'value',
215
+ (bool, str),
216
+ default=True,
217
+ validator=lambda x: None if isinstance(x, bool) or x in {'true', 'false'} else 'boolean options must have boolean values',
218
+ deprecated_values={str: ('1.1.0', 'use a boolean, not a string')},
219
+ ),
220
+ )
221
+ def boolean_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: BooleanArgs) -> coredata.UserOption:
222
+ return coredata.UserBooleanOption(name, description, kwargs['value'], *args)
223
+
224
+ @typed_kwargs(
225
+ 'combo option',
226
+ KwargInfo('value', (str, NoneType)),
227
+ KwargInfo('choices', ContainerTypeInfo(list, str, allow_empty=False), required=True),
228
+ )
229
+ def combo_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: ComboArgs) -> coredata.UserOption:
230
+ choices = kwargs['choices']
231
+ value = kwargs['value']
232
+ if value is None:
233
+ value = kwargs['choices'][0]
234
+ return coredata.UserComboOption(name, description, choices, value, *args)
235
+
236
+ @typed_kwargs(
237
+ 'integer option',
238
+ KwargInfo(
239
+ 'value',
240
+ (int, str),
241
+ default=True,
242
+ deprecated_values={str: ('1.1.0', 'use an integer, not a string')},
243
+ convertor=int,
244
+ ),
245
+ KwargInfo('min', (int, NoneType)),
246
+ KwargInfo('max', (int, NoneType)),
247
+ )
248
+ def integer_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: IntegerArgs) -> coredata.UserOption:
249
+ value = kwargs['value']
250
+ inttuple = (kwargs['min'], kwargs['max'], value)
251
+ return coredata.UserIntegerOption(name, description, inttuple, *args)
252
+
253
+ @typed_kwargs(
254
+ 'string array option',
255
+ KwargInfo('value', (ContainerTypeInfo(list, str), str, NoneType)),
256
+ KwargInfo('choices', ContainerTypeInfo(list, str), default=[]),
257
+ )
258
+ def string_array_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: StringArrayArgs) -> coredata.UserOption:
259
+ choices = kwargs['choices']
260
+ value = kwargs['value'] if kwargs['value'] is not None else choices
261
+ if isinstance(value, str):
262
+ if value.startswith('['):
263
+ FeatureDeprecated('String value for array option', '1.3.0').use(self.subproject)
264
+ else:
265
+ raise mesonlib.MesonException('Value does not define an array: ' + value)
266
+ return coredata.UserArrayOption(name, description, value,
267
+ choices=choices,
268
+ yielding=args[0],
269
+ deprecated=args[1])
270
+
271
+ @typed_kwargs(
272
+ 'feature option',
273
+ KwargInfo('value', str, default='auto', validator=in_set_validator({'auto', 'enabled', 'disabled'})),
274
+ )
275
+ def feature_parser(self, name: str, description: str, args: T.Tuple[bool, _DEPRECATED_ARGS], kwargs: FeatureArgs) -> coredata.UserOption:
276
+ return coredata.UserFeatureOption(name, description, kwargs['value'], *args)