Lines Matching refs:Line
638 fprintf(stderr, "%s: warning: line number data offset beyond end"
662 void DwarfCUToModule::WarningReporter::UncoveredLine(const Module::Line &line) {
666 fprintf(stderr, " line%s: %s:%d at 0x%" PRIx64 "\n",
667 (line.size == 0 ? " (zero-length)" : ""),
668 line.file->name.c_str(), line.number, line.address);
721 case dwarf2reader::DW_AT_stmt_list: // Line number information.
842 // This would be simpler if we assumed that source line entries
845 // line wouldn't get coalesced into one line number entry. The
856 std::sort(lines_.begin(), lines_.end(), Module::Line::CompareByAddress);
858 // The last line that we used any piece of. We use this only for
860 const Module::Line *last_line_used = NULL;
862 // The last function and line we warned about --- so we can avoid
865 const Module::Line *last_line_cited = NULL;
872 vector<Module::Line>::const_iterator line_it = lines_.begin();
879 const Module::Line *line;
881 // Start current at the beginning of the first line or function,
885 line = &*line_it;
886 current = std::min(func->address, line->address);
889 line = &*line_it;
890 current = line->address;
893 line = NULL;
899 while (func || line) {
904 line that contains or starts after CURRENT.
908 // covered or not covered by a line.
918 // starts with a line, has a gap, and then a second line, and
920 // the first line. The next transition address is the start of
921 // the second line, after the gap, so the iteration should
923 // the invariants require that the line iterator be pointing at
924 // the second line. But this is also true at the head of the
930 assert(!line || current < line->address || within(*line, current));
938 if (line && current >= line->address) {
939 // Covered by both a line and a function.
941 Module::Address line_left = line->size - (current - line->address);
944 Module::Line l = *line;
948 last_line_used = line;
950 // Covered by a function, but no line.
955 if (line && within(*func, line->address))
956 next_transition = line->address;
962 if (line && current >= line->address) {
963 // Covered by a line, but no function.
967 // instructions to the last source line of function (to reduce
968 // the size of the line number info), but omit it from the
971 // some of the line we're about to skip, and it ends at the
974 if (line != last_line_cited
976 && line == last_line_used
977 && func->address - line->address == line->size)) {
978 reporter->UncoveredLine(*line);
979 last_line_cited = line;
981 if (func && within(*line, func->address))
985 next_transition = line->address + line->size;
987 // Covered by neither a function nor a line. By the invariant,
988 // both func and line begin after CURRENT. The next transition
989 // is the start of the next function or next line, whichever
991 assert(func || line);
992 if (func && line)
993 next_transition = std::min(func->address, line->address);
997 next_transition = line->address;
1001 // If a function or line abuts the end of the address space, then
1021 line = (line_it != lines_.end()) ? &*line_it : NULL;
1031 // no place to store our line numbers (even though the GNU toolchain
1032 // will happily produce source line info for assembly language
1038 // Read source line info, if we have any.