From 6fb0f1a0cd8ec063070d26b8ba4e4cfa6e7e888e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 20 Sep 2014 18:06:09 +0000 Subject: [PATCH] [DBGHELP] * Work around a Clang bug w.r.t. dwarf emission. Brought to you by the mighty Arty. CORE-8516 #comment Now ReactOS can compile a bootcd with Clang, and it boots to shell. Only some PSEH bug(s) remain for it to be fully functional and ready for testman (I'm looking at you, Timo ;) ) svn path=/trunk/; revision=64203 --- reactos/dll/win32/dbghelp/dwarf.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/reactos/dll/win32/dbghelp/dwarf.c b/reactos/dll/win32/dbghelp/dwarf.c index 2e007826f0c..a64cba64446 100644 --- a/reactos/dll/win32/dbghelp/dwarf.c +++ b/reactos/dll/win32/dbghelp/dwarf.c @@ -2381,7 +2381,17 @@ static BOOL dwarf2_parse_compilation_unit(const dwarf2_section_t* sections, } if (dwarf2_find_attribute(&ctx, di, DW_AT_stmt_list, &stmt_list)) { +#ifdef __REACTOS__ + unsigned long stmt_list_val = stmt_list.u.uvalue; + if (stmt_list_val > module->module.BaseOfImage) + { + /* FIXME: Clang is recording this as an address, not an offset */ + stmt_list_val -= module->module.BaseOfImage + sections[section_line].rva; + } + if (dwarf2_parse_line_numbers(sections, &ctx, comp_dir.u.string, stmt_list_val)) +#else if (dwarf2_parse_line_numbers(sections, &ctx, comp_dir.u.string, stmt_list.u.uvalue)) +#endif module->module.LineNumbers = TRUE; } ret = TRUE;