| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2024-08-22 | Dwarf: cleanup emitted debug info | Jacob Young | |
| * reduce iteration cost by not tracking unused entries * avoid emitting unused abbrevs to `.debug_abbrev` * get the compiler executable passing `llvm-dwarfdump --verify` * make it possible to skip `.debug_line` padding much more quickly | |||
| 2024-08-16 | Dwarf: rework self-hosted debug info from scratch | Jacob Young | |
| This is in preparation for incremental and actually being able to debug executables built by the x86_64 backend. | |||
| 2024-08-01 | std: dwarf namespace reorg | Andrew Kelley | |
| std.debug.Dwarf is the parsing/decoding logic. std.dwarf remains the unopinionated types and bits alone. If you look at this diff you can see a lot less redundancy in namespaces. | |||
| 2024-07-10 | dwarf: use StackIterator.MemoryAccessor to check memory accesses instead of ↵ | kcbanner | |
| isValidMemory | |||
| 2024-06-23 | Rename *[UI]LEB128 functions to *[UI]leb128 | Michael Bradshaw | |
| 2024-05-11 | riscv: remove an allocation from `dwarf.zig` | David Rubin | |
| 2024-03-19 | extract std.posix from std.os | Andrew Kelley | |
| closes #5019 | |||
| 2024-03-14 | std: make std.dwarf.FixedBufferReader public | Luuk de Gram | |
| Also fixes a compile-error as the field `is_64` no longer exists. | |||
| 2024-03-10 | improve documentation in std | Andrew Kelley | |
| A lot of these "shorthand" doc comments were redundant, low quality filler content. Better to let the actual modules speak for themselves with top level doc comments rather than trying to document their aliases. | |||
| 2024-02-18 | dwarf: optimize dwarf parsing for speed | Jacob Young | |
| This code is run when printing a stack trace in a debug executable, so it has to be fast even without compiler optimizations. Adding a `@panic` to the top of `main` and running an x86_64 backend compiled compiler goes from `1m32.773s` to `0m3.232s`. | |||
| 2023-11-19 | lib: correct unnecessary uses of 'var' | mlugg | |
| 2023-10-31 | mem: fix ub in writeInt | Jacob Young | |
| Use inline to vastly simplify the exposed API. This allows a comptime-known endian parameter to be propogated, making extra functions for a specific endianness completely unnecessary. | |||
| 2023-08-06 | std: remove some unused imports (#16710) | Zachary Raineri | |
| 2023-07-26 | target: emit unwind tables if the platform supports unwinding | kcbanner | |
| 2023-07-25 | reduce the number of duplicate instantiations due to differing stream parameters | kcbanner | |
| 2023-07-24 | switch to sortUnstable when sorting FDEs (~16ms improvement) | kcbanner | |
| 2023-07-20 | dwarf: move macho unwind code from macho -> dwarf | kcbanner | |
| dwarf: fixup unchecked .eh_frame CIE offset subtraction | |||
| 2023-07-20 | test: disable omit_frame_pointer unwinding tests on aarch64-macos | kcbanner | |
| dwarf: handle signal frame CIE flag | |||
| 2023-07-20 | debug: disable the new unwinder on aarch64-macos | kcbanner | |
| 2023-07-20 | dwarf: implement aarch64 default register rules | kcbanner | |
| 2023-07-20 | dwarf: fixup rules for setting ip | kcbanner | |
| 2023-07-20 | dwarf: update the pc register | kcbanner | |
| 2023-07-20 | dwarf: fix the unwinder using the incorrect row from the FDE in certain cases | kcbanner | |
| 2023-07-20 | dwarf: write the CFA as SP before the register update, in case the SP itself ↵ | kcbanner | |
| is updated by a column rule | |||
| 2023-07-20 | macho: don't scan all eh_frame entries, instead follow the offset from the ↵ | kcbanner | |
| __unwind_info directly | |||
| 2023-07-20 | dwarf: add explicit_fde_offset to support more optimal __unwind_info dwarf ↵ | kcbanner | |
| lookups | |||
| 2023-07-20 | dwarf: fixup integer overflow in readEhPointer | kcbanner | |
| debug: handle the possibility of eh_frame / debug_frame being mapped in memory or loaded from disk | |||
| 2023-07-20 | dwarf: add abi.stripInstructionPtrAuthCode | kcbanner | |
| 2023-07-20 | dwarf: use cie.return_address_register instead of assuming it's in the IP ↵ | kcbanner | |
| register | |||
| 2023-07-20 | debug: fix initialization of the optional fields on StackIterator | kcbanner | |
| dwarf: documentation fixups target: enable unwind tables on macho | |||
| 2023-07-20 | macho: add unwindFrame which can unwind stack frames using the __unwind_info ↵ | kcbanner | |
| section dwarf: fixup missing error | |||
| 2023-07-20 | dwarf: add ExpressionError to work around the compiler not being able to ↵ | kcbanner | |
| infer it dwarf: implement OP.entry_value, add tests | |||
| 2023-07-20 | dwarf: skip register tests on unimplemented arch / os, add tests for type ↵ | kcbanner | |
| convesions debug: dupeContext -> copyContext | |||
| 2023-07-20 | dwarf: fixup regBytes for the case where there is no context support | kcbanner | |
| expressions: add more tests, fix tests for mipsel debug: add lookupModuleName implementation for macos | |||
| 2023-07-20 | debug: add dupeContext, store a pointer to a copy of ThreadContext on ↵ | kcbanner | |
| UnwindContext | |||
| 2023-07-20 | debug: rename StackTraceContext to ThreadContext | kcbanner | |
| dwarf: use ThreadContext instead of os.ucontext_t dwarf: add regBytes impl for windows dwarf: fixup expression types for non-native | |||
| 2023-07-20 | dwarf: expression fixups for non-64bit arches, check call_frame_context when ↵ | kcbanner | |
| writing expressions | |||
| 2023-07-20 | dwarf: introduce ExpressionContext, add more expression opcodes | kcbanner | |
| 2023-07-20 | debug: fixup base address calculations for macho | kcbanner | |
| dwarf: fixup x86 register mapping logic dwarf: change the register context update to update in-place instead of copying debug: always print the unwind error type | |||
| 2023-07-20 | dwarf: don't dupe function names, as they are backed by the memory mapped ↵ | kcbanner | |
| sections dwarf: const-correctness fixups dwarf: implement the remaining register rules dwarf: start implmenting the DWARF expression stack machine | |||
| 2023-07-20 | debug: rework how unwind errors are printed, and add module name lookup for ↵ | kcbanner | |
| linux This change enhances stack trace output to include a note that debug info was missing, and therefore the stack trace may not be accurate. For example, if the user is using a libc compiled with -fomit-frame-pointer and doesn't have debug symbols installed, any traces that begin in a libc function may not unwind correctly. This allows the user to notice this and potentially install debug symbols to improve the output. | |||
| 2023-07-20 | dwarf: add support for DWARF5 DW_AT_ranges in subprograms, add ↵ | kcbanner | |
| DebugRangeIterator Some DWARF5 subprograms have non-contiguous instruction ranges. An example of such a function is `puts` in Ubuntu's libc. This change fixes name lookups for functions that use DW_AT_range in their DIE. | |||
| 2023-07-20 | dwarf: fix logic error in eh_frame_hdry binary search | kcbanner | |
| 2023-07-20 | debug: x86 unwinding support, more unwinding fixes | kcbanner | |
| - Fix unwindFrame using the previous FDE row instead of the current one - Handle unwinding through noreturn functions - Add x86-linux getcontext - Fixup x86_64-linux getcontext not restoring the fp env - Fix start_addr filtering on x86-windows | |||
| 2023-07-20 | dwarf: add support for .debug_frame and CIE version 4 | kcbanner | |
| 2023-07-20 | update to new builtin syntax | kcbanner | |
| 2023-07-20 | dwarf: use eh_frame length if it's available | kcbanner | |
| 2023-07-20 | add more safety checks when searching for eh_frame entries using findEntry | kcbanner | |
| 2023-07-20 | - rebase and update to lastest master | kcbanner | |
| 2023-07-20 | dwarf: fixup pointer cast | kcbanner | |
