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 ?)