| author | |
| committer | |
| log | 7d4a0cfed0fe03e3642a9b1518b8fb5b4a302f50 |
| tree | 101f5fa50efa5484a04ec1d1403ccdeaedd71108 |
| parent | 1a1598c58cf506217355c6b8eec84c0e9a3a6d2e |
| signature | Commit is signed but in an unrecognized format. |
4 files changed, 14 insertions(+), 0 deletions(-)
src-self-hosted/stage1.zig+7| ... | @@ -455,3 +455,10 @@ export const stage2_DepNextResult = extern struct { | ... | @@ -455,3 +455,10 @@ export const stage2_DepNextResult = extern struct { |
| 455 | prereq, | 455 | prereq, |
| 456 | }; | 456 | }; |
| 457 | }; | 457 | }; |
| 458 | |||
| 459 | // ABI warning | ||
| 460 | export fn stage2_attach_segfault_handler() void { | ||
| 461 | if (std.debug.runtime_safety and std.debug.have_segfault_handling_support) { | ||
| 462 | std.debug.attachSegfaultHandler(); | ||
| 463 | } | ||
| 464 | } |
src/main.cpp+2| ... | @@ -262,6 +262,8 @@ static bool get_cache_opt(CacheOpt opt, bool default_value) { | ... | @@ -262,6 +262,8 @@ static bool get_cache_opt(CacheOpt opt, bool default_value) { |
| 262 | extern "C" int ZigClang_main(int argc, char **argv); | 262 | extern "C" int ZigClang_main(int argc, char **argv); |
| 263 | 263 | ||
| 264 | int main(int argc, char **argv) { | 264 | int main(int argc, char **argv) { |
| 265 | stage2_attach_segfault_handler(); | ||
| 266 | |||
| 265 | char *arg0 = argv[0]; | 267 | char *arg0 = argv[0]; |
| 266 | Error err; | 268 | Error err; |
| 267 | 269 |
src/userland.cpp+2| ... | @@ -26,6 +26,8 @@ void stage2_zen(const char **ptr, size_t *len) { | ... | @@ -26,6 +26,8 @@ void stage2_zen(const char **ptr, size_t *len) { |
| 26 | stage2_panic(msg, strlen(msg)); | 26 | stage2_panic(msg, strlen(msg)); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | void stage2_attach_segfault_handler(void) { } | ||
| 30 | |||
| 29 | void stage2_panic(const char *ptr, size_t len) { | 31 | void stage2_panic(const char *ptr, size_t len) { |
| 30 | fwrite(ptr, 1, len, stderr); | 32 | fwrite(ptr, 1, len, stderr); |
| 31 | fprintf(stderr, "\n"); | 33 | fprintf(stderr, "\n"); |
src/userland.h+3| ... | @@ -113,6 +113,9 @@ ZIG_EXTERN_C void stage2_render_ast(struct Stage2Ast *ast, FILE *output_file); | ... | @@ -113,6 +113,9 @@ ZIG_EXTERN_C void stage2_render_ast(struct Stage2Ast *ast, FILE *output_file); |
| 113 | // ABI warning | 113 | // ABI warning |
| 114 | ZIG_EXTERN_C void stage2_zen(const char **ptr, size_t *len); | 114 | ZIG_EXTERN_C void stage2_zen(const char **ptr, size_t *len); |
| 115 | 115 | ||
| 116 | // ABI warning | ||
| 117 | ZIG_EXTERN_C void stage2_attach_segfault_handler(void); | ||
| 118 | |||
| 116 | // ABI warning | 119 | // ABI warning |
| 117 | ZIG_EXTERN_C ZIG_ATTRIBUTE_NORETURN void stage2_panic(const char *ptr, size_t len); | 120 | ZIG_EXTERN_C ZIG_ATTRIBUTE_NORETURN void stage2_panic(const char *ptr, size_t len); |
| 118 | 121 |