瀏覽代碼

* Dwarf 3+: write always a type for enums

florian 3 月之前
父節點
當前提交
51b9f31f7c
共有 1 個文件被更改,包括 27 次插入1 次删除
  1. 27 1
      compiler/dbgdwarf.pas

+ 27 - 1
compiler/dbgdwarf.pas

@@ -1516,7 +1516,33 @@ implementation
             DW_AT_byte_size,DW_FORM_data1,def.size
             ]);
         if assigned(def.basedef) then
-          append_labelentry_ref(DW_AT_type,def_dwarf_lab(def.basedef));
+          append_labelentry_ref(DW_AT_type,def_dwarf_lab(def.basedef))
+        else if dwarf_version>=3 then
+          case def.size of
+            1:
+               if def.min<0 then
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(s8inttype))
+               else
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(u8inttype));
+            2:
+               if def.min<0 then
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(s16inttype))
+               else
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(u16inttype));
+            4:
+               if def.min<0 then
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(s32inttype))
+               else
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(u32inttype));
+            8:
+               if def.min<0 then
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(s64inttype))
+               else
+                 append_labelentry_ref(DW_AT_type,def_dwarf_lab(u64inttype));
+            else
+              Internalerror(2025041701);
+          end;
+
         finish_entry;
 
         case def.size of