aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_debug.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-11-23 22:46:02 +0000
committergingerBill <bill@gingerbill.org>2022-11-23 22:46:02 +0000
commit5ac36b5f25435a495d8516d5c9df06c09d3ca20e (patch)
tree331a2c8bae9a3908a8cd7dd583a3ea7916795755 /src/llvm_backend_debug.cpp
parent22bcf1ba70690c4ba446327a54b3ad562f2a747a (diff)
HACK: Get around debugging type generation for slices and dynamic arrays of *nix systems
Diffstat (limited to 'src/llvm_backend_debug.cpp')
-rw-r--r--src/llvm_backend_debug.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp
index 768c4cd1e..65cefcd39 100644
--- a/src/llvm_backend_debug.cpp
+++ b/src/llvm_backend_debug.cpp
@@ -688,13 +688,25 @@ void lb_debug_complete_types(lbModule *m) {
case Type_Slice:
element_count = 2;
elements = gb_alloc_array(temporary_allocator(), LLVMMetadataRef, element_count);
- elements[0] = lb_debug_struct_field(m, str_lit("data"), alloc_type_pointer(bt->Slice.elem), 0*word_bits);
+ #if defined(GB_SYSTEM_WINDOWS)
+ elements[0] = lb_debug_struct_field(m, str_lit("data"), alloc_type_pointer(bt->Slice.elem), 0*word_bits);
+ #else
+ // FIX HACK TODO(bill): For some reason this causes a crash in *nix systems due to the reference counting
+ // of the debug type information
+ elements[0] = lb_debug_struct_field(m, str_lit("data"), t_rawptr, 0*word_bits);
+ #endif
elements[1] = lb_debug_struct_field(m, str_lit("len"), t_int, 1*word_bits);
break;
case Type_DynamicArray:
element_count = 4;
elements = gb_alloc_array(temporary_allocator(), LLVMMetadataRef, element_count);
- elements[0] = lb_debug_struct_field(m, str_lit("data"), alloc_type_pointer(bt->DynamicArray.elem), 0*word_bits);
+ #if defined(GB_SYSTEM_WINDOWS)
+ elements[0] = lb_debug_struct_field(m, str_lit("data"), alloc_type_pointer(bt->DynamicArray.elem), 0*word_bits);
+ #else
+ // FIX HACK TODO(bill): For some reason this causes a crash in *nix systems due to the reference counting
+ // of the debug type information
+ elements[0] = lb_debug_struct_field(m, str_lit("data"), t_rawptr, 0*word_bits);
+ #endif
elements[1] = lb_debug_struct_field(m, str_lit("len"), t_int, 1*word_bits);
elements[2] = lb_debug_struct_field(m, str_lit("cap"), t_int, 2*word_bits);
elements[3] = lb_debug_struct_field(m, str_lit("allocator"), t_allocator, 3*word_bits);