From 9def269b470f74d8ea4bb7919f927d16efb35cfa Mon Sep 17 00:00:00 2001 From: Maxime Chevalier-Boisvert Date: Sun, 24 Jan 2021 18:21:18 -0500 Subject: [PATCH] Fix issue with block address accessor. Print absolute addresses. --- ujit.rb | 6 +++--- ujit_iface.c | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ujit.rb b/ujit.rb index 3697e50b1c..8690ffc37a 100644 --- a/ujit.rb +++ b/ujit.rb @@ -15,14 +15,14 @@ module UJIT str << "\n" # Sort the blocks by increasing addresses - blocks.sort_by(&:address).reverse.each do |block| + blocks.sort_by(&:address).each do |block| str << "== ISEQ RANGE: [#{block.iseq_start_index},#{block.iseq_end_index}[ ".ljust(80, "=") str << "\n" cs.disasm(block.code, 0).each do |i| str << sprintf( - "\t%
04X:\t%s\t%
s\n", - address: i.address, + "\t%
08X:\t%s\t%
s\n", + address: block.address + i.address, instruction: i.mnemonic, details: i.op_str ) diff --git a/ujit_iface.c b/ujit_iface.c index 981c882ceb..7c553f4b3c 100644 --- a/ujit_iface.c +++ b/ujit_iface.c @@ -335,7 +335,8 @@ block_address(VALUE self) { block_t * block; TypedData_Get_Struct(self, block_t, &ujit_block_type, block); - return LONG2NUM((intptr_t)block); + uint8_t* code_addr = cb_get_ptr(cb, block->start_pos); + return LONG2NUM((intptr_t)code_addr); } /* Get the machine code for UJIT::Block as a binary string */