2
0
Эх сурвалжийг харах

* Dwarf 3+: write always a type for enums

florian 3 сар өмнө
parent
commit
51b9f31f7c

+ 27 - 1
compiler/dbgdwarf.pas

@@ -1516,7 +1516,33 @@ implementation
             DW_AT_byte_size,DW_FORM_data1,def.size
             DW_AT_byte_size,DW_FORM_data1,def.size
             ]);
             ]);
         if assigned(def.basedef) then
         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;
         finish_entry;
 
 
         case def.size of
         case def.size of