put flat view in the cfg space (usable) and add tags view

This commit is contained in:
George Hotz 2019-03-23 23:44:41 -07:00
parent 31fedda718
commit fac560bc00
4 changed files with 65 additions and 20 deletions

View File

@ -105,17 +105,12 @@ $(document).ready(function() {
});
$('body').on('mousewheel', '.flat', function(e) {
var cdr = $(".flat").children();
// TODO: HAXX!!!
p(e.originalEvent.wheelDelta);
if (e.originalEvent.wheelDelta < 0) {
Session.set('iview', get_address_from_class(cdr[16].childNodes[0]));
} else if (e.originalEvent.wheelDelta > 0) {
Session.set('iview', get_address_from_class(cdr[14].childNodes[0]));
}
/*if (e.originalEvent.wheelDelta < 0) {
Session.set('iview', bn_add(Session.get('iview'), -1));
} else if (e.originalEvent.wheelDelta > 0) {
Session.set('iview', bn_add(Session.get('iview'), 1));
}*/
}
});
$("#idump")[0].addEventListener("mousewheel", function(e) {
//p("idump mousewheel");

View File

@ -7,12 +7,45 @@ Deps.autorun(function() { DA("update static view");
var flat = Session.get('flat');
if (iview === undefined) return;
var size = get_size("#flat-static");
p(size);
var size = get_size("#cfg-static");
stream.emit('getstaticview', iview, flat, [-5,size-5]);
});
function draw_tags(addr, x) {
var ret = "<table>"
var keys = [];
for (var key in x) { keys[keys.length] = key; }
keys = keys.sort();
for (var i = 0; i < keys.length; i++) {
key = keys[i];
if (x[key] !== null) {
ret += "<tr>"
ret += "<td>"+key+"</td>"
if (key == "address") {
ret += "<td><span class='hexnumber'>"+x[key]+"</span></td>"
} else {
ret += "<td>"+x[key]+"</td>"
}
ret += "</tr>"
}
}
ret += "</table>"
return ret;
}
Deps.autorun(function() { DA("update itags view");
var addr = Session.get('iaddr');
async_tags_request([addr], function(x) {
$("#itags-static").html(draw_tags(addr, x[0]));
})
});
Deps.autorun(function() { DA("update dtags view");
var addr = Session.get('daddr');
async_tags_request([addr], function(x) {
$("#dtags-static").html(draw_tags(addr, x[0]));
})
});
// TODO: this code is replicated in idump.js
function instruction_html_from_tags(ins) {
@ -55,7 +88,7 @@ function display_flat(addrs) {
idump += instruction_html_from_tags(addrs[i]);
}
idump += '</div>';
$("#flat-static").html(idump);
$("#cfg-static").html(idump);
}
function on_flat(addrs) { DS("flat");

View File

@ -15,7 +15,7 @@ $(document).ready(function() {
var cfgDef = $.Deferred();
var memoryDef = $.Deferred();
var straceDef = $.Deferred();
var flatDef = $.Deferred();
var tagsDef = $.Deferred();
var controlDef = $.Deferred();
var dynamicDef = $.Deferred();
var idumpDef = $.Deferred();
@ -64,10 +64,10 @@ $(document).ready(function() {
},
});
myDocker.registerPanelType('Flat', {
myDocker.registerPanelType('Tags', {
onCreate: function(myPanel, options) {
myPanel.layout().addItem($("<div class='fill' id='flat-static'></div>"));
flatDef.resolve();
myPanel.layout().addItem($("<div class='fill' id='tags-static'><div class='tags' id='itags-static'></div><div class='tags' id='dtags-static'></div></div>"));
tagsDef.resolve();
},
});
@ -88,7 +88,7 @@ $(document).ready(function() {
controlPanel.maxSize(1000, 70);
if (has_static) {
var cfgPanel = myDocker.addPanel("Control Flow", wcDocker.DOCK.RIGHT, controlPanel);
var flatPanel = myDocker.addPanel("Flat", wcDocker.DOCK.BOTTOM, cfgPanel, {h: 200});
var flatPanel = myDocker.addPanel("Tags", wcDocker.DOCK.BOTTOM, cfgPanel, {h: 120});
}
var idumpPanel = myDocker.addPanel("idump", wcDocker.DOCK.BOTTOM, controlPanel);
@ -99,7 +99,6 @@ $(document).ready(function() {
var stracePanel = myDocker.addPanel("strace", wcDocker.DOCK.BOTTOM, dynamicPanel, {h: 200});
// apply the panel defaults
myDocker.findPanels().forEach(function(x) {
x.title(false);
@ -111,8 +110,6 @@ $(document).ready(function() {
}
});
//$.when(timelineDef, dynamicDef, cfgDef, flatDef, memoryDef, straceDef)
function is_done() {
p("loading UI");
$.holdReady(true);
@ -122,7 +119,7 @@ $(document).ready(function() {
}
if (has_static) {
$.when(timelineDef, idumpDef, memoryDef, straceDef, controlDef, dynamicDef, cfgDef, flatDef).done(is_done);
$.when(timelineDef, idumpDef, memoryDef, straceDef, controlDef, dynamicDef, cfgDef, tagsDef).done(is_done);
} else {
$.when(timelineDef, idumpDef, memoryDef, straceDef, controlDef, dynamicDef).done(is_done);
}

View File

@ -131,3 +131,23 @@ td {
top: 0;
}
.tags {
border: 1px solid grey;
width: 49.8%;
display: inline-block;
height: 100%;
min-height: 18px;
position: absolute;
top: 0;
}
#itags-static {
border-color: #cc0000;
}
#dtags-static {
border-color: #888800;
left: 50%;
}