aboutsummaryrefslogtreecommitdiff
path: root/lib/std/debug.zig
AgeCommit message (Collapse)Author
2023-02-18update std lib and compiler sources to new for loop syntaxAndrew Kelley
2023-01-29std.debug: disable sporadically failing testAndrew Kelley
see tracking issue #13963
2023-01-24debug: re-enable resource management test on x86_64 windowskcbanner
2023-01-23std: eliminate pointless meta.assumeSentinel() usageIsaac Freund
This fixes a bug in std.net caused during the introduction of meta.assumeSentinel due to the unfortunate semantics of mem.span() This leaves only 3 remaining uses of meta.assumeSentinel() in the standard library, each of which could be a simple @ptrCast([*:0]T, foo) instead. I think this function should likely be removed.
2023-01-21FreeBSD: add mcontext_t for aarch64Stephen Gregoratto
What isn't disabled for test-std mostly passes, except for the copysign and signbit tests for f16. Seemingly related to #14366.
2023-01-18netbsd: add mcontext_t for aarch64Michael Dusan
- test `lib/std/std.zig` passes - stack traces work
2023-01-08debug: fixup memory managementkcbanner
2023-01-08windows: rework DebugInfo to use less file operations and fix some memory ↵kcbanner
management issues
2023-01-06Implement some more environment functions for WASI.Brendan Burns
2023-01-05std: collect all options under one namespaceVeikka Tuominen
2023-01-04debug: replace RtlCaptureStackBackTrace (which was spuriously failing) with ↵Casey Banner
a new implementation which uses RtlVirtualUnwind instead (#12740) windows: add RtlCaptureContext, RtlLookupFunctionEntry, RtlVirtualUnwind and supporting types windows: fix alignment of CONTEXT structs to match winnt.h as required by RtlCaptureContext (fxsave instr) windows aarch64: fix __chkstk being defined twice if libc is not linked on msvc Co-authored-by: Jakub Konka <kubkon@jakubkonka.com>
2022-12-29Replace tabs with spaces when printing a line for trace output.IntegratedQuantum
2022-12-15std.debug: disable sporadically failing testAndrew Kelley
see tracking issue #13963
2022-12-15std.debug.TTY: Fix colors not resetting on WindowsRyan Liptak
This fixes a regression introduced in #12298 where colors would never reset in a Windows console because the attributes would be queried on every `setColor` call, and then try to 'reset' the attributes to what it just queried (i.e. it was essentially doing a complicated no-op on .Reset). This fixes the problem while (I think) keeping with the spirit of the changes in #12298--that is, `TTY.Config` is not specifically tied to stderr like it was before #12298. To that end, detectTTYConfig now takes a `File` and that's what gets used to query the initial attributes to reset to. (for context, before #12298, the first `setColor` call is where the reset attributes would get queried and it would always use stderr to do it)
2022-12-13std.debug: use OpenSelfDebugInfoErrorr00ster91
2022-12-13cleanup: inline color constantsr00ster91
Originally I just wanted to move these down because they seemed to be in some random position of the file, but these constants look very old with their CASING and pretty unnecessary anyway so I just inlined them.
2022-12-13fix(terminal): handle some possible errors and resolve TODOsr00ster91
2022-12-11Remove incorrect assertion in readMachODebugInfo panicking during panicJakub Konka
This fixes a class of bugs on macOS where a segfault happening in a loaded dylib with no debug info would cause a panic in the panic handler instead of simply noting that the dylib has no valid debug info via `error.MissingDebugInfo`. An example could be code linking some system dylib and causing some routine to segfault on say invalid pointer value, which should normally cause Zig to print an incomplete stack trace anchored at the currently loaded image and backtrace all the way back to the Zig binary with valid debug info. Currently, in a situation like this we would trigger a panic within a panic.
2022-11-29std.mem.Allocator: allow shrink to failAndrew Kelley
closes #13535
2022-11-12Make invalidFmtError public and use in place of compileErrors for bad format ↵Nick Cernis
strings (#13526) * Export invalidFmtErr To allow consistent use of "invalid format string" compile error response for badly formatted format strings. See https://github.com/ziglang/zig/pull/13489#issuecomment-1311759340. * Replace format compile errors with invalidFmtErr - Provides more consistent compile errors. - Gives user info about the type of the badly formated value. * Rename invalidFmtErr as invalidFmtError For consistency. Zig seems to use “Error” more often than “Err”. * std: add invalid format string checks to remaining custom formatters * pass reference-trace to comp when building build file; fix checkobjectstep
2022-11-04all: rename i386 to x86Ali Chraghi
2022-10-25cbe: get enough things working to support basic programsJacob Young
* Enable advanced start support. * Enable advanced test_runner support. * Zig Language Reference's Hello World now works.
2022-10-21builtin.zig: Do not overwrite error frames when trace fullCody Tapscott
Previously, we'd overwrite the errors in a circular buffer. Now that error return traces are intended to follow a stack discipline, we no longer have to support the index rolling over. By treating the trace like a saturating stack, any pop/restore code still behaves correctly past-the-end of the trace. As a bonus, this adds a small blurb to let the user know when the trace saturated and x number of frames were dropped.
2022-10-20Revert "add std.debug.todo"Andrew Kelley
This reverts commit 80ac022c4667e1995ccdf70fff90e5af26b6eb97. I changed my mind on this one, sorry. I don't think this belongs in the standard library.
2022-10-18all: rename `@maximum` to `@max` and `@minimum` to `@min`Ali Chraghi
2022-10-18std.debug: define error set in DebugInfo.lookupModuleDlMeghan
2022-10-18std: check for overflow in dumpStackTraceFromBaseXavier Bouchoux
same change as [68e26a2ceea85a1] "std: check for overflow in writeCurrentStackTrace" On arm64 macOS, the address of the last frame is 0x0 rather than a positive value like 0x1 on x86_64 macOS, therefore, we overflow an integer trying to subtract 1 when printing the stack trace. This patch fixes it by first checking for this condition before trying to subtract 1. Same behaviour on i386-windows-msvc. Note that we do not need to signal the `SignalIterator` about this as it will correctly detect this condition on the subsequent iteration and return `null`, thus terminating the loop.
2022-09-20std: add return address parameter to panic fnVeikka Tuominen
2022-08-23std.debug: DWARFv5 fixesAndrew Kelley
handle str_offsets_base and addr_base correctly. handle data16 fix compilation on 32-bit hosts remove stray debug print statement closes #12120
2022-08-23coff: fix compile errors in std.debugJakub Konka
2022-08-23macho: fix compile errors in std.debugJakub Konka
2022-08-23std.debug: implement support for DWARFv5Andrew Kelley
2022-08-23coff: improve default COFF/PE object parserJakub Konka
We now do not allocate memory for headers and other metadata unless requested by the caller. Instead, we read-in the entire contents of the image into memory and operate on pointers and casts wherever possible. I have a left a TODO to hook up Windows' memory-mapped API here in-place of standard `readToEndAlloc` which should be more memory proof on memory constrained hosts. This commit also supplements our `std.coff` with a lot missing basic extern structs required to make our COFF linker.
2022-08-22Windows: Fix incorrect output when .pdb file is not found during stack traceRyan Liptak
This `pdb.Pdb.init` call can return `error.FileNotFound`, which was previously resulting in: Unable to print stack trace: FileNotFound which also aborts the stack trace printing (so any deeper stack traces are not printed). It makes more sense to treat it as `MissingDebugInfo` which then gets printed as: ???:?:?: 0x7fffa8817033 in ??? (???) and allows the stack trace to continue printing. Note: locally, the error.FileNotFound was being triggered for me when looking for kernel32.pdb and ntdll.pdb
2022-08-22Dwarf: Added stroffsetsptr support (#12270)Keith Chambers
* Added support for stroffsetsptr class in Dwarf stdlib * Proper initializion of debug_str_offsets in DwarfInfo * Added missing null initializer to DwarfInfo in Macho * Added missing is_64 field to getAttrString in DwarfInfo * Fixed formatting * Added missing is_64 param to getAttrString * Added required cast to usize * Adding missing .debug_str_offsets initialization * getAttrString now uses the str_offsets_base attr
2022-08-16AstGen: detect declarations shadowing localsVeikka Tuominen
Closes #9355
2022-08-11std: fix definition of SIG_IGN, SIG_DFL, etc.Isaac Freund
POSIX specifies that the sa_handler field of the sigaction struct may be set to SIG_IGN or SIG_DFL. However, the current constants in the standard library use the function pointer signature corresponding to the sa_sigaction field instead. This may not cause issues in practice because the fields usually occupy the same memory in a union, but this isn't required by POSIX and there may be systems we do not yet support that do this differently. Fixing this also makes the Zig interface less confusing to use after reading the man page.
2022-08-06std: use std.macho.LoadCommandIterator for MachO parsing in std.debugJakub Konka
2022-07-29std.debug: default signal handler also handles SIGFPEAndrew Kelley
2022-06-28Merge pull request #11919 from squeek502/failing-allocator-stacktraceAndrew Kelley
Add stack trace capturing to `FailingAllocator` and use it to improve `checkAllAllocationFailures`
2022-06-27Fix stack traces with non-null `first_address` on WindowsRyan Liptak
Before this commit, the passed in length would always be given to the RtlCaptureStackBackTrace call. Now we always give the length of the actual buffer we're using (the addr_buf_stack size of 32 or the passed in length if it's larger than 32; this matches what the doc comment says the function was meant to be doing as well). This was causing empty stack traces for things like the GeneralPurposeAllocator leak checking. Fixes #6687
2022-06-25Move sys_can_stack_trace from GPA to std.debug so that it can be re-used as ↵Ryan Liptak
needed
2022-06-23std.debug: fix ConfigurableTrace.dump OOBFlandreScarlet
The for-loop in dump() would index out of bounds if `t.index` is greater than size, because `end` is the maximum of `t.index` and `size` rather than the minimum.
2022-06-12add std.debug.Trace.formatAndrew Kelley
This makes it show up in some useful places; for example in the self-hosted compiler we already print it now with --debug-compile-errors.
2022-06-09std.debug.Trace: improve APIAndrew Kelley
Now `std.debug.Trace` is a concrete type with pre-chosen defaults. `std.debug.ConfigurableTrace` can be used for more advanced cases.
2022-06-09introduce std.debug.TraceAndrew Kelley
And use it to debug a LazySrcLoc in stage2 that is set to a bogus value. The actual fix in this commit is: ```diff - try sema.emitBackwardBranch(&child_block, call_src); + try sema.emitBackwardBranch(block, call_src); ```
2022-05-27math: make `cast` return optional instead of an errorAli Chraghi
2022-05-24stage2: fixes for error union semanticsAndrew Kelley
* Sema: avoid unnecessary safety checks when an error set is empty. * Sema: make zirErrorToInt handle comptime errors that are represented as integers. * Sema: make empty error sets properly integrate with typeHasOnePossibleValue. * Type: correct the ABI alignment and size of error unions which have both zero-bit error set and zero-bit payload. The previous code did not account for the fact that we still need to store a bit for whether there is an error. * LLVM: lower error unions possibly with the payload first or with the error code first, depending on alignment. Previously it always put the error code first and used a padding array. * LLVM: lower functions which have an empty error set as the return type the same as anyerror, so that they can be used where fn()anyerror function pointers are expected. In such functions, Zig will lower ret to returning zero instead of void. As a result, one more behavior test is passing.
2022-05-13target: Rename sparcv9 -> sparc64Koakuma
Rename all references of sparcv9 to sparc64, to make Zig align more with other projects. Also, added new function to convert glibc arch name to Zig arch name, since it refers to the architecture as sparcv9. This is based on the suggestion by @kubkon in PR 11847. (https://github.com/ziglang/zig/pull/11487#pullrequestreview-963761757)
2022-05-04std: Single-threaded `panicImpl` sleep is unreachable (#11569)Jay Petacat
Adding `unreachable` prevents the futex code from being inspected during a single-threaded build. Without futex, first draft BYOS packages don't need to implement `nanosleep` to get a single-threaded "hello world" program working. Use of `assert()` did not achieve the desired effect of avoiding futex in a single-threaded build.