Index: lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py =================================================================== --- lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py +++ lldb/packages/Python/lldbsuite/test/tools/lldb-mi/data/TestMiData.py @@ -56,6 +56,14 @@ "\^done,asm_insns=\[{address=\"0x0*%x\",func-name=\"main\",offset=\"0\",size=\"[1-9]+\",inst=\".+?\"}," % addr) + # Test -data-disassemble with source line information + self.runCmd("-data-disassemble -s %#x -e %#x -- 1" % (addr, addr + 0x10)) + self.expect( + '\^done,asm_insns=\[src_and_asm_line={line="\d+",file="main.cpp",' + 'line_asm_insn=\[{address="0x0*%x",func-name="main",offset="0",size="[1-9]+",inst=".+?"}\],' + 'fullname="%s"}' % + (addr, os.path.abspath("main.cpp")) ) + # Run to hello_world self.runCmd("-break-insert -f hello_world") self.expect("\^done,bkpt={number=\"2\"") Index: lldb/tools/lldb-mi/MICmdCmdData.cpp =================================================================== --- lldb/tools/lldb-mi/MICmdCmdData.cpp +++ lldb/tools/lldb-mi/MICmdCmdData.cpp @@ -415,8 +415,12 @@ const MIuint nLine = lineEntry.GetLine(); const char *pFileName = lineEntry.GetFileSpec().GetFilename(); pFileName = (pFileName != nullptr) ? pFileName : pUnknown; + // Get a full path to the file. + static char pPathBuffer[PATH_MAX]; + lineEntry.GetFileSpec().GetPath(pPathBuffer, sizeof(pPathBuffer)); - // MI "src_and_asm_line={line=\"%u\",file=\"%s\",line_asm_insn=[ ]}" + // MI "src_and_asm_line={line=\"%u\",file=\"%s\",line_asm_insn=[ ], + // fullname=\"%s\"}" const CMICmnMIValueConst miValueConst( CMIUtilString::Format("%u", nLine)); const CMICmnMIValueResult miValueResult("line", miValueConst); @@ -427,6 +431,9 @@ const CMICmnMIValueList miValueList(miValueTuple); const CMICmnMIValueResult miValueResult3("line_asm_insn", miValueList); miValueTuple2.Add(miValueResult3); + const CMICmnMIValueConst miValueConst5(pPathBuffer); + const CMICmnMIValueResult miValueResult5("fullname", miValueConst5); + miValueTuple2.Add(miValueResult5); const CMICmnMIValueResult miValueResult4("src_and_asm_line", miValueTuple2); m_miValueList.Add(miValueResult4);