diff --git a/tools/ovl_offset.pl b/tools/ovl_offset.pl index 89c3468556..10419999d6 100755 --- a/tools/ovl_offset.pl +++ b/tools/ovl_offset.pl @@ -4,6 +4,10 @@ # on a reference map file (.refmap) sub map_scan { + # The buflib handle table is a few hundred bytes, just before + # the plugin buffer. We assume it's never more than 1024 bytes. + # If this assumption is wrong, overlay loading will fail. + my $max_handle_table_size = 1024; my ($map) = @_; my $ramstart = -1, $ramsize = -1, $startaddr = -1, $endaddr = -1; open (MAP, "<$map"); @@ -25,7 +29,7 @@ sub map_scan { printf "Could not analyze map file.\n"; exit 1; } - return $ramstart + $ramsize - $endaddr; + return $ramstart + $ramsize - $endaddr - $max_handle_table_size; } printf map_scan($ARGV[0]) & ~0xf;