bool cmpDISP(const DISubprogram & SP1, const DISubprogram & SP2) { int cmp = SP1.getDirectory().compare(SP2.getDirectory()); if (cmp == 0) { cmp = SP1.getFilename().compare(SP2.getFilename()); if (cmp == 0) { cmp = SP1.getLineNumber() - SP2.getLineNumber(); } } return cmp >= 0 ? false : true; }
/// addSourceLine - Add location information to specified debug information /// entry. void CompileUnit::addSourceLine(DIE *Die, DISubprogram SP) { // Verify subprogram. if (!SP.Verify()) return; // If the line number is 0, don't add it. if (SP.getLineNumber() == 0) return; unsigned Line = SP.getLineNumber(); if (!SP.getContext().Verify()) return; unsigned FileID = DD->GetOrCreateSourceID(SP.getFilename(), SP.getDirectory()); assert(FileID && "Invalid file id"); addUInt(Die, dwarf::DW_AT_decl_file, 0, FileID); addUInt(Die, dwarf::DW_AT_decl_line, 0, Line); }