gdare2 0.1.0__tar.gz

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 (139) hide show
  1. gdare2-0.1.0/.github/workflows/ci.yml +82 -0
  2. gdare2-0.1.0/.github/workflows/publish.yml +130 -0
  3. gdare2-0.1.0/.gitignore +19 -0
  4. gdare2-0.1.0/CHANGELOG.md +102 -0
  5. gdare2-0.1.0/LICENSE +21 -0
  6. gdare2-0.1.0/PKG-INFO +547 -0
  7. gdare2-0.1.0/README.md +516 -0
  8. gdare2-0.1.0/RELEASING.md +222 -0
  9. gdare2-0.1.0/assets/badges/license.svg +23 -0
  10. gdare2-0.1.0/assets/badges/pypi.svg +23 -0
  11. gdare2-0.1.0/assets/badges/python.svg +23 -0
  12. gdare2-0.1.0/pyproject.toml +84 -0
  13. gdare2-0.1.0/src/gdare2/__init__.py +4 -0
  14. gdare2-0.1.0/src/gdare2/__main__.py +3 -0
  15. gdare2-0.1.0/src/gdare2/arch_matrix.py +33 -0
  16. gdare2-0.1.0/src/gdare2/argv.py +417 -0
  17. gdare2-0.1.0/src/gdare2/assembler.py +157 -0
  18. gdare2-0.1.0/src/gdare2/cli.py +344 -0
  19. gdare2-0.1.0/src/gdare2/client.py +112 -0
  20. gdare2-0.1.0/src/gdare2/cmd/__init__.py +142 -0
  21. gdare2-0.1.0/src/gdare2/cmd/analysis.py +367 -0
  22. gdare2-0.1.0/src/gdare2/cmd/assemble.py +140 -0
  23. gdare2-0.1.0/src/gdare2/cmd/comments.py +147 -0
  24. gdare2-0.1.0/src/gdare2/cmd/eval.py +401 -0
  25. gdare2-0.1.0/src/gdare2/cmd/extras.py +576 -0
  26. gdare2-0.1.0/src/gdare2/cmd/flags.py +460 -0
  27. gdare2-0.1.0/src/gdare2/cmd/info.py +481 -0
  28. gdare2-0.1.0/src/gdare2/cmd/meta.py +228 -0
  29. gdare2-0.1.0/src/gdare2/cmd/metadata.py +195 -0
  30. gdare2-0.1.0/src/gdare2/cmd/misc.py +54 -0
  31. gdare2-0.1.0/src/gdare2/cmd/print.py +915 -0
  32. gdare2-0.1.0/src/gdare2/cmd/search.py +481 -0
  33. gdare2-0.1.0/src/gdare2/cmd/seek.py +269 -0
  34. gdare2-0.1.0/src/gdare2/cmd/types.py +355 -0
  35. gdare2-0.1.0/src/gdare2/cmd/write.py +288 -0
  36. gdare2-0.1.0/src/gdare2/cmd/xrefs.py +323 -0
  37. gdare2-0.1.0/src/gdare2/completion.py +86 -0
  38. gdare2-0.1.0/src/gdare2/config.py +197 -0
  39. gdare2-0.1.0/src/gdare2/errors.py +103 -0
  40. gdare2-0.1.0/src/gdare2/escape.py +31 -0
  41. gdare2-0.1.0/src/gdare2/expr.py +262 -0
  42. gdare2-0.1.0/src/gdare2/filter.py +243 -0
  43. gdare2-0.1.0/src/gdare2/flags.py +96 -0
  44. gdare2-0.1.0/src/gdare2/fmt/__init__.py +1 -0
  45. gdare2-0.1.0/src/gdare2/fmt/codegen.py +143 -0
  46. gdare2-0.1.0/src/gdare2/fmt/disasm.py +113 -0
  47. gdare2-0.1.0/src/gdare2/fmt/graph.py +93 -0
  48. gdare2-0.1.0/src/gdare2/fmt/listing.py +11 -0
  49. gdare2-0.1.0/src/gdare2/fmt/memory.py +75 -0
  50. gdare2-0.1.0/src/gdare2/fmt/strings.py +93 -0
  51. gdare2-0.1.0/src/gdare2/formats/__init__.py +5 -0
  52. gdare2-0.1.0/src/gdare2/formats/elf.py +888 -0
  53. gdare2-0.1.0/src/gdare2/formats/magic.py +43 -0
  54. gdare2-0.1.0/src/gdare2/jsonutil.py +22 -0
  55. gdare2-0.1.0/src/gdare2/launcher.py +215 -0
  56. gdare2-0.1.0/src/gdare2/parity.py +172 -0
  57. gdare2-0.1.0/src/gdare2/parser.py +225 -0
  58. gdare2-0.1.0/src/gdare2/pf.py +486 -0
  59. gdare2-0.1.0/src/gdare2/pipe.py +59 -0
  60. gdare2-0.1.0/src/gdare2/protocol.py +75 -0
  61. gdare2-0.1.0/src/gdare2/r2pipe_server.py +177 -0
  62. gdare2-0.1.0/src/gdare2/rc.py +74 -0
  63. gdare2-0.1.0/src/gdare2/registry.py +217 -0
  64. gdare2-0.1.0/src/gdare2/session.py +1087 -0
  65. gdare2-0.1.0/src/gdare2d/__init__.py +3 -0
  66. gdare2-0.1.0/src/gdare2d/__main__.py +245 -0
  67. gdare2-0.1.0/src/gdare2d/context.py +29 -0
  68. gdare2-0.1.0/src/gdare2d/dispatch.py +122 -0
  69. gdare2-0.1.0/src/gdare2d/executor.py +68 -0
  70. gdare2-0.1.0/src/gdare2d/import_plan.py +218 -0
  71. gdare2-0.1.0/src/gdare2d/ops/__init__.py +1 -0
  72. gdare2-0.1.0/src/gdare2d/ops/_helpers.py +88 -0
  73. gdare2-0.1.0/src/gdare2d/ops/analysis.py +299 -0
  74. gdare2-0.1.0/src/gdare2d/ops/assemble.py +70 -0
  75. gdare2-0.1.0/src/gdare2d/ops/batch.py +220 -0
  76. gdare2-0.1.0/src/gdare2d/ops/comments.py +151 -0
  77. gdare2-0.1.0/src/gdare2d/ops/decompile.py +84 -0
  78. gdare2-0.1.0/src/gdare2d/ops/disasm.py +221 -0
  79. gdare2-0.1.0/src/gdare2d/ops/escape.py +26 -0
  80. gdare2-0.1.0/src/gdare2d/ops/graph.py +163 -0
  81. gdare2-0.1.0/src/gdare2d/ops/info.py +315 -0
  82. gdare2-0.1.0/src/gdare2d/ops/memory.py +56 -0
  83. gdare2-0.1.0/src/gdare2d/ops/names.py +125 -0
  84. gdare2-0.1.0/src/gdare2d/ops/search.py +324 -0
  85. gdare2-0.1.0/src/gdare2d/ops/session.py +74 -0
  86. gdare2-0.1.0/src/gdare2d/ops/types.py +482 -0
  87. gdare2-0.1.0/src/gdare2d/ops/write.py +246 -0
  88. gdare2-0.1.0/src/gdare2d/ops/xrefs.py +61 -0
  89. gdare2-0.1.0/src/gdare2d/runtime.py +551 -0
  90. gdare2-0.1.0/src/gdare2d/server.py +146 -0
  91. gdare2-0.1.0/tests/arch_matrix/test_arch_matrix.py +50 -0
  92. gdare2-0.1.0/tests/golden/ls.json +1414 -0
  93. gdare2-0.1.0/tests/golden/upnpd.json +2799 -0
  94. gdare2-0.1.0/tests/integration/test_real_ghidra.py +941 -0
  95. gdare2-0.1.0/tests/parity/conftest.py +60 -0
  96. gdare2-0.1.0/tests/parity/test_parity.py +181 -0
  97. gdare2-0.1.0/tests/test_argv.py +104 -0
  98. gdare2-0.1.0/tests/test_assembler.py +160 -0
  99. gdare2-0.1.0/tests/test_batch.py +75 -0
  100. gdare2-0.1.0/tests/test_cli.py +78 -0
  101. gdare2-0.1.0/tests/test_client.py +25 -0
  102. gdare2-0.1.0/tests/test_codegen.py +191 -0
  103. gdare2-0.1.0/tests/test_command_coverage.py +423 -0
  104. gdare2-0.1.0/tests/test_completion.py +35 -0
  105. gdare2-0.1.0/tests/test_config.py +79 -0
  106. gdare2-0.1.0/tests/test_daemon_info.py +27 -0
  107. gdare2-0.1.0/tests/test_errors.py +79 -0
  108. gdare2-0.1.0/tests/test_eval_cmds.py +109 -0
  109. gdare2-0.1.0/tests/test_expr.py +51 -0
  110. gdare2-0.1.0/tests/test_extras.py +287 -0
  111. gdare2-0.1.0/tests/test_filter.py +105 -0
  112. gdare2-0.1.0/tests/test_flags_spaces.py +273 -0
  113. gdare2-0.1.0/tests/test_fmt.py +174 -0
  114. gdare2-0.1.0/tests/test_formats_elf.py +286 -0
  115. gdare2-0.1.0/tests/test_graph_out.py +138 -0
  116. gdare2-0.1.0/tests/test_import_plan.py +65 -0
  117. gdare2-0.1.0/tests/test_info_formats.py +113 -0
  118. gdare2-0.1.0/tests/test_instance_id.py +59 -0
  119. gdare2-0.1.0/tests/test_language.py +152 -0
  120. gdare2-0.1.0/tests/test_launcher.py +119 -0
  121. gdare2-0.1.0/tests/test_packaging.py +74 -0
  122. gdare2-0.1.0/tests/test_parity_utils.py +95 -0
  123. gdare2-0.1.0/tests/test_parser.py +77 -0
  124. gdare2-0.1.0/tests/test_pf.py +224 -0
  125. gdare2-0.1.0/tests/test_protocol.py +21 -0
  126. gdare2-0.1.0/tests/test_r2pipe_server.py +92 -0
  127. gdare2-0.1.0/tests/test_rc.py +127 -0
  128. gdare2-0.1.0/tests/test_registry.py +34 -0
  129. gdare2-0.1.0/tests/test_runtime_sessions.py +107 -0
  130. gdare2-0.1.0/tests/test_search_gaps.py +150 -0
  131. gdare2-0.1.0/tests/test_seek_gaps.py +80 -0
  132. gdare2-0.1.0/tests/test_session.py +1399 -0
  133. gdare2-0.1.0/tests/test_xrefs_gaps.py +243 -0
  134. gdare2-0.1.0/tools/arch_matrix.py +151 -0
  135. gdare2-0.1.0/tools/capture_r2_golden.py +199 -0
  136. gdare2-0.1.0/tools/perf_probe.py +136 -0
  137. gdare2-0.1.0/tools/spike_pyghidra.py +120 -0
  138. gdare2-0.1.0/tools/update_badges.py +119 -0
  139. gdare2-0.1.0/uv.lock +790 -0
@@ -0,0 +1,82 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ concurrency:
13
+ group: ci-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ test:
18
+ name: Test Python ${{ matrix.python-version }}
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
24
+ steps:
25
+ - uses: actions/checkout@v7
26
+ with:
27
+ persist-credentials: false
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v7
30
+ with:
31
+ python-version: ${{ matrix.python-version }}
32
+ - name: Set up uv
33
+ uses: astral-sh/setup-uv@v10.3.3
34
+ with:
35
+ enable-cache: true
36
+ cache-dependency-glob: uv.lock
37
+ - name: Install dependencies
38
+ run: uv sync --group dev
39
+ - name: Run tests
40
+ run: uv run pytest
41
+
42
+ lint:
43
+ name: Lint
44
+ runs-on: ubuntu-latest
45
+ steps:
46
+ - uses: actions/checkout@v7
47
+ with:
48
+ persist-credentials: false
49
+ - name: Set up Python
50
+ uses: actions/setup-python@v7
51
+ with:
52
+ python-version: "3.13"
53
+ - name: Set up uv
54
+ uses: astral-sh/setup-uv@v10.3.3
55
+ with:
56
+ enable-cache: true
57
+ cache-dependency-glob: uv.lock
58
+ - name: Install dependencies
59
+ run: uv sync --group dev
60
+ - name: Check style
61
+ run: uv run ruff check .
62
+
63
+ build:
64
+ name: Build distributions
65
+ runs-on: ubuntu-latest
66
+ steps:
67
+ - uses: actions/checkout@v7
68
+ with:
69
+ persist-credentials: false
70
+ - name: Set up Python
71
+ uses: actions/setup-python@v7
72
+ with:
73
+ python-version: "3.13"
74
+ - name: Set up uv
75
+ uses: astral-sh/setup-uv@v10.3.3
76
+ with:
77
+ enable-cache: true
78
+ cache-dependency-glob: uv.lock
79
+ - name: Build sdist and wheel
80
+ run: uv build
81
+ - name: Validate package metadata
82
+ run: uv run --with twine twine check dist/*
@@ -0,0 +1,130 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ target:
9
+ description: Index to publish to
10
+ required: true
11
+ default: testpypi
12
+ type: choice
13
+ options:
14
+ - testpypi
15
+ - pypi
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ test:
22
+ name: Test before release
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v7
26
+ with:
27
+ persist-credentials: false
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v7
30
+ with:
31
+ python-version: "3.13"
32
+ - name: Set up uv
33
+ uses: astral-sh/setup-uv@v10.3.3
34
+ with:
35
+ enable-cache: true
36
+ cache-dependency-glob: uv.lock
37
+ - name: Install dependencies
38
+ run: uv sync --group dev
39
+ - name: Run tests
40
+ run: uv run pytest
41
+ - name: Check style
42
+ run: uv run ruff check .
43
+
44
+ build:
45
+ name: Build distributions
46
+ needs: test
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v7
50
+ with:
51
+ persist-credentials: false
52
+ - name: Set up Python
53
+ uses: actions/setup-python@v7
54
+ with:
55
+ python-version: "3.13"
56
+ - name: Check that the tag matches the package version
57
+ if: startsWith(github.ref, 'refs/tags/v')
58
+ run: |
59
+ python - <<'PY'
60
+ import os
61
+ import pathlib
62
+ import re
63
+ import sys
64
+
65
+ tag = os.environ["GITHUB_REF_NAME"].removeprefix("v")
66
+ text = pathlib.Path("src/gdare2/__init__.py").read_text(encoding="utf-8")
67
+ match = re.search(r'^__version__ = "([^"]+)"', text, re.MULTILINE)
68
+ version = match.group(1) if match else "<missing>"
69
+ if tag != version:
70
+ sys.exit(f"tag {tag!r} does not match package version {version!r}")
71
+ PY
72
+ - name: Install build frontend and validator
73
+ run: python -m pip install --upgrade build twine
74
+ - name: Build sdist and wheel
75
+ run: python -m build
76
+ - name: Validate package metadata
77
+ run: python -m twine check dist/*
78
+ - name: Store distribution packages
79
+ uses: actions/upload-artifact@v7
80
+ with:
81
+ name: python-package-distributions
82
+ path: dist/
83
+ if-no-files-found: error
84
+
85
+ publish-to-testpypi:
86
+ name: Publish to TestPyPI
87
+ if: >-
88
+ github.event_name == 'workflow_dispatch' &&
89
+ inputs.target == 'testpypi'
90
+ needs: build
91
+ runs-on: ubuntu-latest
92
+ environment:
93
+ name: testpypi
94
+ url: https://test.pypi.org/p/gdare2
95
+ permissions:
96
+ contents: read
97
+ id-token: write
98
+ steps:
99
+ - name: Download all the dists
100
+ uses: actions/download-artifact@v8
101
+ with:
102
+ name: python-package-distributions
103
+ path: dist/
104
+ - name: Publish to TestPyPI
105
+ uses: pypa/gh-action-pypi-publish@release/v1
106
+ with:
107
+ repository-url: https://test.pypi.org/legacy/
108
+ skip-existing: true
109
+
110
+ publish-to-pypi:
111
+ name: Publish to PyPI
112
+ if: >-
113
+ github.event_name == 'release' ||
114
+ (github.event_name == 'workflow_dispatch' && inputs.target == 'pypi')
115
+ needs: build
116
+ runs-on: ubuntu-latest
117
+ environment:
118
+ name: pypi
119
+ url: https://pypi.org/p/gdare2
120
+ permissions:
121
+ contents: read
122
+ id-token: write
123
+ steps:
124
+ - name: Download all the dists
125
+ uses: actions/download-artifact@v8
126
+ with:
127
+ name: python-package-distributions
128
+ path: dist/
129
+ - name: Publish to PyPI
130
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,19 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ .venv/
7
+ dist/
8
+ build/
9
+ .coverage
10
+ htmlcov/
11
+ site/
12
+ .pypirc
13
+ *.whl
14
+ *.tar.gz
15
+ *.log
16
+ *.gpr
17
+ *.rep/
18
+ # Local-only design and development notes; never commit or publish.
19
+ docs/
@@ -0,0 +1,102 @@
1
+ # Changelog
2
+
3
+ All notable changes to gdare2 are documented here. The format follows
4
+ [Keep a Changelog](https://keepachangelog.com/) and the project uses
5
+ [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [0.1.0] - 2026-11-14
8
+
9
+ First public release.
10
+
11
+ v2 compatibility batches A–C (G1–G18) and the first batch-D item (G19).
12
+
13
+ v3 batch A: command-language layer (`?` expression family, `@` temporary
14
+ modifiers, macros, `.cmd`/`.!cmd` interpretation, repeat-prefix output
15
+ accumulation) and the parity environment repair (radare2 6.2.6 + rebuilt
16
+ goldens).
17
+
18
+ v3 batch B: output/input format families (`pc` code-generation family,
19
+ compare variants `c2/c4/c8/cJ/cv`, yank variants `yj/y*/yp/yq/ys/yw/yz`,
20
+ flag subcommands `fc/fm/fo/fd`, `fs` flag spaces, seek gaps `sa/sC/sd`).
21
+
22
+ v3 batch C: search and graph completion (`/b` backward hex search, `agC`
23
+ call graph with DOT rendering, `axg` reference graph, explicit
24
+ not-supported decisions for the remaining `/` and `ax` variants).
25
+
26
+ v3 batch D: configuration and ecosystem (new keys `asm.offset`,
27
+ `scr.utf8`, `bin.demangle`, `cfg.sandbox`, `search.maxhits`; explicit
28
+ errors for unsupported r2 keys like `asm.emu`/`anal.*`; `--pipe-listen`
29
+ r2pipe-compatible TCP command channel; CLI option audit).
30
+
31
+ ### Added
32
+
33
+ - Expanded radare2 command compatibility: `p6`/`p=`/`pj`/`pr`/`ph`/`pwd`,
34
+ `pdq`/`pdC`/`pdJ`/`pd,`, `s:`/`s=`, `fn`/`fN`/`fx`, `e*`/`e-`/`e!`/`env`/
35
+ `es`/`et`/`ev`, `bj`/`bf`/`bm`, `iD`/`iC`/`iV`/`iv`/`iT`/`iee`/`ies`,
36
+ `Ch`/`Cs`/`Cm`/`Cf`/`Ct`/`CL`, and `tn`/`to`/`tk`/`tl`/`tx`.
37
+ - Search variants `/i`, `/d`, `/z`, `/m`, `/c` and `/R`; `/m` and `/c` share a
38
+ deterministic built-in magic/crypto signature scanner.
39
+ - Write commands `wt`/`wv`/`wr`/`ws`/`ww`, including width and float variants
40
+ for `wv`.
41
+ - Project snapshots now preserve hidden ranges, string/magic metadata, type
42
+ comments, source lines, type links, no-return marks and notes; `Pc` emits
43
+ replay commands for all of them.
44
+ - PyPI-ready packaging: PEP 639 license metadata, a required
45
+ `pyghidra>=3.2.0` runtime dependency, a `dev` dependency group, self-hosted
46
+ README badges, packaging regression tests, and TestPyPI/PyPI Trusted
47
+ Publishing workflows.
48
+ - `pip install gdare2` is now the documented installation path.
49
+ - `--assembler=ghidra|rasm2|auto` now configures `asm.assembler`; explicit
50
+ values override rc files, and `-e asm.assembler=...` wins on the same
51
+ command line.
52
+ - `pdi` emits r2-style `address flag:` lines for client-side flags without
53
+ duplicating the current instruction symbol.
54
+ - `iSS` reads ELF program headers from the input file; `ih`/`iH`/`il`/`ir`
55
+ expose the ELF header, `DT_NEEDED` libraries and relocations.
56
+ - Replayable command variants: `f*`, `C*`/`CC*`/`C*.`, `CCu base64:`,
57
+ `t*`, `s*`, `b*`, `iS*` and `ax*`/`axlj`/`axlq`/`axlc`.
58
+ - `pf`/`pfj`/`pfs`/`pf.<name>` formatting with scalars, arrays, offset
59
+ controls, unions and named formats.
60
+ - `~` filter v2: multi-column/negative/range selectors, column sorting and
61
+ `~{}` JSON pretty-printing.
62
+ - `p` family read commands: `pdb`, `pC`, `pA`, `pxd`/`pxu`/`pxj`, the `ps`
63
+ variants, `p8` projections and `pvu`/`pvd`/`pvp`.
64
+ - Tab completion for flags/functions and `$` variables; rc hierarchy with
65
+ `rc.d/*`, project ancestor files and `GDARE2_RCFILE`.
66
+ - Backtick command substitution and `px` layout aligned with r2
67
+ (`hex.pairs`/`hex.offset`/`hex.ascii`).
68
+ - GitHub Actions CI, configuration/format test suites and a PyPI publish
69
+ workflow.
70
+
71
+ ### Changed
72
+
73
+ - The README is now English-only. The `docs/` tree is maintained locally and
74
+ excluded from Git and release artifacts.
75
+ - `pd`/`pdi` render instruction bytes as contiguous hexpairs (r2 shape);
76
+ instructions longer than eight bytes are elided with `..`.
77
+ - `@@f`/`@@F` skip external, thunk and non-executable function entries.
78
+ - `pd -j` JSON and `-j` command resolution follow the r2 line-oriented
79
+ filter model.
80
+
81
+ ### Fixed
82
+
83
+ - First-import analysis no longer cuts off at 180 seconds. The daemon-side
84
+ cap defaulted to a hard 180 s, which truncated slow-arch imports (measured:
85
+ i386 684 s, mipsel 665 s, big-endian MIPS 483 s) and silently cached a
86
+ broken one-function database that later runs reused. The default is now
87
+ unlimited; a cap can be set explicitly with the new client option
88
+ `--analysis-timeout <sec>` (0 disables it).
89
+ - Entry-point detection prefers an executable `_start` and ignores
90
+ non-executable DWARF symbols named `entry` (seen in the Tenda `httpd`
91
+ firmware sample).
92
+ - `tp`/`tpv` no longer crash on built-in integer types; `tc <name>` only emits
93
+ the requested declaration.
94
+ - JSON output participates in `~`/`|` line by line.
95
+ - `~` filters keep backslash escapes such as `~\.text`.
96
+ - Pagination via `--list-offset`/`e list.offset`, with explicit metadata.
97
+
98
+ ## [0.1.0] - 2026-11-07
99
+
100
+ Initial import: two-process daemon/client architecture, read-only core,
101
+ analysis, disassembly, decompilation, types, writes, search, flags, scripts,
102
+ parity golden files and the 22-configuration architecture matrix.
gdare2-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 fire3
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.