diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index b1c8572eb13ecef21f6f6f809f11c92dc1e3f977..2f22d9e45935a5dff2b88197e43d042abd555783 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -1095,7 +1095,7 @@ static unsigned dwarf2_map_register(int regno)
 
     switch (regno)
     {
-    case Wine_DW_no_register: FIXME("What the heck\n"); reg = 0; break;
+    case Wine_DW_no_register: FIXME("What the heck map reg 0x%x\n",regno); reg = 0; break;
     /* FIXME: this is a dirty hack */
     case Wine_DW_frame_register: reg = 0;          break;
     case  0: reg = CV_REG_EAX; break;
@@ -1394,8 +1394,16 @@ static struct symt* dwarf2_parse_subprogram(dwarf2_parse_context_t* ctx,
 
     subpgm.ctx = ctx;
     subpgm.compiland = compiland;
-    if (dwarf2_compute_location(ctx, di, DW_AT_frame_base, &subpgm.frame_offset, &subpgm.frame_reg))
+    if (dwarf2_compute_location(ctx, di, DW_AT_frame_base, &subpgm.frame_offset, &subpgm.frame_reg)) {
         TRACE("For %s got %ld/%d\n", name.u.string, subpgm.frame_offset, subpgm.frame_reg);
+	if (subpgm.frame_reg == Wine_DW_no_register) {
+	   /* Likely a constant, meaning a location list offset.
+	      We do not handle those yet. */
+           /*FIXME("need to handle location lists\n"); */
+           subpgm.frame_reg = 0;
+           subpgm.frame_offset = 0;
+	}
+    }
     else /* on stack !! */
     {
         subpgm.frame_reg = 0;