xermicus
b238913a7d
emit YUL builtins debug line info and fix debug info source file ( #358 )
...
This PR fixes and enhances debug info generation:
1. Adds line information for each lowered YUL builtin and the `if`
statement.
2. Fixes the debug info source path to match the YUL file of the
contract dumped to the `--debug-output-dir`.
This improves inspection of the generated code a lot. Excerpt from
`llvm-objdump -Sl /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.so`:
```
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:203
; let _1 := memoryguard(0x80)
13c3e: 3aa5b023 sd a0, 0x3a0(a1)
13c42: 38a5bc23 sd a0, 0x398(a1)
13c46: 38a5b823 sd a0, 0x390(a1)
13c4a: 08000513 li a0, 0x80
13c4e: 38a5b423 sd a0, 0x388(a1)
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:204
; mstore(64, _1)
13c52: 3885b503 ld a0, 0x388(a1)
13c56: 3905b603 ld a2, 0x390(a1)
13c5a: 3985b683 ld a3, 0x398(a1)
13c5e: 3a05b703 ld a4, 0x3a0(a1)
13c62: 38e5b023 sd a4, 0x380(a1)
13c66: 36d5bc23 sd a3, 0x378(a1)
13c6a: 36c5b823 sd a2, 0x370(a1)
13c6e: 36a5b423 sd a0, 0x368(a1)
13c72: 04000513 li a0, 0x40
13c76: 65d9 lui a1, 0x16
13c78: a605859b addiw a1, a1, -0x5a0
13c7c: 95a6 add a1, a1, s1
13c7e: 00000097 auipc ra, 0x0
13c82: 000080e7 jalr ra <__runtime+0x1de>
0000000000013c86 <.Lpcrel_hi27>:
; /tmp/dbg/contracts_EndpointV2.sol.EndpointV2.yul:205
; if iszero(lt(calldatasize(), 4))
13c86: 00000517 auipc a0, 0x0
13c8a: 00053503 ld a0, 0x0(a0)
13c8e: 4108 lw a0, 0x0(a0)
13c90: 4591 li a1, 0x4
13c92: 06b56263 bltu a0, a1, 0x13cf6 <.Lpcrel_hi27+0x70>
13c96: a009 j 0x13c98 <.Lpcrel_hi27+0x12>
```
---------
Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com >
2025-07-04 19:56:52 +02:00
wpt967
bb4a4dddde
[solidity,llvm-context] Improve support for debugging the compiler ( #32 )
...
Add option --recursive-process-input <filename> for use with
--recursive-process to specify the name of a file to use instead of
reading from stdin.
If --debug-output-dir is set, dump the file passed to the recursive
invocation of the compiler as a JSON file suitable for use with
--recursive-process-input.
These changes are intended to support debugging the compiler and are
only available with DEBUG builds.
2024-08-23 18:18:07 +02:00