On Friday, 17 August 2018 at 19:28:47 UTC, Basile B. wrote:
Now that -m64 + LLD + MINGW works, the question is obvious.

The background idea is of course to allow the use of GDB under Windows. At first glance the debug info API is not uniform. This is visible if you compare dmd.backend.dwarf and dmd.backend.cgcv and the naive idea which would be to replace all the calls starting with 'cv8_' with their "dwarf_" equivalent won't work (let's say to test in a first time, later a new compiler switch could be added to select the debug info format).

Conctretly the idea is to do that :

------------------------- src/dmd/backend/mscoffobj.c -------------------------
index 45f1f4219..1b1d34376 100644
@@ -26,8 +26,13 @@
 #include        "mach.h"
 #include        "outbuf.h"
 #include        "filespec.h"
-#include        "cv4.h"
-#include        "cgcv.h"
+
+//#include        "cv4.h"
+//#include        "cgcv.h"
+
+#include        "dwarf2.h"
+#include        "dwarf.h"
+
 #include        "dt.h"

 #include        "aa.h"
@@ -430,7 +435,8 @@ MsCoffObj *MsCoffObj::init(Outbuffer *objbuf, const char *filename, const char *
     assert(SegData[UDATA]->SDseg == UDATA);

     if (config.fulltypes)
-        cv8_initfile(filename);
+        //cv8_initfile(filename);
+        dwarf_initfile(filename);
     assert(objbuf->size() == 0);
     return obj;
 }
@@ -464,7 +470,8 @@ void MsCoffObj::initfile(const char *filename, const char *csegname, const char
     }
 #endif
     if (config.fulltypes)
-        cv8_initmodule(filename, modname);
+        //cv8_initmodule(filename, modname);
+        dwarf_initmodule(filename, modname);
 }

 /************************************
@@ -670,7 +677,8 @@ void MsCoffObj::termfile()
     //dbg_printf("MsCoffObj::termfile\n");
     if (configv.addlinenumbers)
     {
-        cv8_termmodule();
+        //cv8_termmodule();
+        dwarf_termmodule();
     }
 }

@@ -692,7 +700,8 @@ void MsCoffObj::term(const char *objfilename)

     if (configv.addlinenumbers)
     {
-        cv8_termfile(objfilename);
+        //cv8_termfile(objfilename);
+        dwarf_termfile(objfilename);
     }

 #if SCPP
@@ -1032,7 +1041,7 @@ void MsCoffObj::linnum(Srcpos srcpos, int seg, targ_size_t offset)
     if (srcpos.Slinnum == 0 || !srcpos.Sfilename)
         return;

-    cv8_linnum(srcpos, offset);
+    //cv8_linnum(srcpos, offset);
 }


@@ -1850,7 +1859,8 @@ void MsCoffObj::func_start(Symbol *sfunc)
     sfunc->Soffset = Offset(cseg);

     if (config.fulltypes)
-        cv8_func_start(sfunc);
+        //cv8_func_start(sfunc);
+        dward_func_start(sfunc);
 }

 /*******************************
@@ -1863,7 +1873,8 @@ void MsCoffObj::func_term(Symbol *sfunc)
// sfunc->Sident, sfunc->Soffset,Offset(cseg),sfunc->Sxtrnnum);

     if (config.fulltypes)
-        cv8_func_term(sfunc);
+        //cv8_func_term(sfunc);
+        dwarf_func_term(sfunc);
 }

 /********************************


However this doesn't build for now and i don't get error messages for some reasons (dmc sterrr not redirected ?)

Reply via email to