visualfail: high-level code mapping fixes and cleanups
Now high-level to low-level code mapping seems to be right for the first time. Change-Id: I3c6a7cfdf3f3e4da32420a74280ae4ae042acc09
This commit is contained in:
@ -224,30 +224,26 @@ function getHighlevelCode()
|
|||||||
$kleinsteAdresse = mysql_fetch_object($kleinsteAdresseErgebnis);
|
$kleinsteAdresse = mysql_fetch_object($kleinsteAdresseErgebnis);
|
||||||
|
|
||||||
$highlevelCodeAbfrage = "SELECT linenumber, line FROM dbg_source WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id']. "' ORDER BY linenumber;";
|
$highlevelCodeAbfrage = "SELECT linenumber, line FROM dbg_source WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id']. "' ORDER BY linenumber;";
|
||||||
$mappingAbfrage = "SELECT instr_absolute, linenumber FROM dbg_mapping WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id'] . "' AND instr_absolute >= '" . $kleinsteAdresse->instr_address . "' ORDER BY instr_absolute;";
|
$mappingAbfrage = "SELECT linenumber, instr_absolute, line_range_size FROM dbg_mapping WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id'] . "' AND instr_absolute >= '" . $kleinsteAdresse->instr_address . "' ORDER BY instr_absolute;";
|
||||||
|
|
||||||
$highlevelCode = mysql_query($highlevelCodeAbfrage);
|
$highlevelCode = mysql_query($highlevelCodeAbfrage);
|
||||||
$mappingInfo = mysql_query($mappingAbfrage);
|
$mappingInfo = mysql_query($mappingAbfrage);
|
||||||
|
|
||||||
$fehlerdaten = resultsDB($_GET['variant_id'], $_GET['version'], $resulttypes);
|
$fehlerdaten = resultsDB($_GET['variant_id'], $_GET['version'], $resulttypes);
|
||||||
|
|
||||||
|
// retrieve mapping of linenumber -> array of [start-address;end-address) ranges
|
||||||
$mappingRanges = array();
|
$mappingRanges = array();
|
||||||
$numEntrysMapping = mysql_num_rows($mappingInfo);
|
while (($row = mysql_fetch_object($mappingInfo))) {
|
||||||
|
|
||||||
$row = mysql_fetch_object($mappingInfo);
|
|
||||||
|
|
||||||
// FIXME use values from DB instead
|
|
||||||
for ($i = 0; $i < $numEntrysMapping-1; $i++) {
|
|
||||||
if (!isset($mappingRanges[$row->linenumber])) {
|
if (!isset($mappingRanges[$row->linenumber])) {
|
||||||
$mappingRanges[$row->linenumber] = array();
|
$mappingRanges[$row->linenumber] = array();
|
||||||
}
|
}
|
||||||
$oldLineNumber = $row->linenumber;
|
$mappingRanges[$row->linenumber][] =
|
||||||
$firstAddr = $row->instr_absolute;
|
array(intval($row->instr_absolute),
|
||||||
$row = mysql_fetch_object($mappingInfo);
|
$row->instr_absolute + $row->line_range_size);
|
||||||
array_push($mappingRanges[$oldLineNumber], array($firstAddr, $row->instr_absolute));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$mapping = array();
|
$mapping = array();
|
||||||
|
// "maxFehler" should be "sumFehler" or alike
|
||||||
$maxFehlerMapping = array();
|
$maxFehlerMapping = array();
|
||||||
|
|
||||||
foreach ($mappingRanges as $lineNumber => $value) {
|
foreach ($mappingRanges as $lineNumber => $value) {
|
||||||
@ -260,13 +256,13 @@ function getHighlevelCode()
|
|||||||
$InstrMappingAbfrage = "SELECT instr_address, disassemble FROM objdump WHERE variant_id = '" . $_GET['variant_id']. "' AND instr_address >= '" . $ranges[0] . "' AND instr_address < '" . $ranges[1] . "' ORDER BY instr_address;";
|
$InstrMappingAbfrage = "SELECT instr_address, disassemble FROM objdump WHERE variant_id = '" . $_GET['variant_id']. "' AND instr_address >= '" . $ranges[0] . "' AND instr_address < '" . $ranges[1] . "' ORDER BY instr_address;";
|
||||||
$mappingErgebnis = mysql_query($InstrMappingAbfrage);
|
$mappingErgebnis = mysql_query($InstrMappingAbfrage);
|
||||||
while ($row = mysql_fetch_object($mappingErgebnis)) {
|
while ($row = mysql_fetch_object($mappingErgebnis)) {
|
||||||
|
|
||||||
if (array_key_exists($row->instr_address,$fehlerdaten['Daten'])) {
|
if (array_key_exists($row->instr_address,$fehlerdaten['Daten'])) {
|
||||||
$newline .= '<span data-address="' . dechex($row->instr_address) . '" class="hasFehler" ';
|
$newline = '<span data-address="' . dechex($row->instr_address) . '" class="hasFehler" ';
|
||||||
|
|
||||||
foreach ($resulttypes as $value) {
|
foreach ($resulttypes as $value) {
|
||||||
|
// FIXME prefix with 'data-results-', adapt JS
|
||||||
$newline .= $value . '="' . $fehlerdaten['Daten'][$row->instr_address][$value] . '" ';
|
$newline .= $value . '="' . $fehlerdaten['Daten'][$row->instr_address][$value] . '" ';
|
||||||
$maxFehler[$value] = $maxFehler[$value] + $fehlerdaten['Daten'][$row->instr_address][$value];
|
$maxFehler[$value] += $fehlerdaten['Daten'][$row->instr_address][$value];
|
||||||
}
|
}
|
||||||
|
|
||||||
$newline .= ' style="cursor: pointer;">' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '</span>';
|
$newline .= ' style="cursor: pointer;">' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '</span>';
|
||||||
|
|||||||
Reference in New Issue
Block a user