зеркало из https://github.com/mozilla/pjs.git
Use vmaddr for __TEXT section, not first section, so that we get correct results for the binary.
This commit is contained in:
Родитель
b9f9cb3abe
Коммит
d439557679
|
@ -36,7 +36,7 @@
|
||||||
#
|
#
|
||||||
# ***** END LICENSE BLOCK *****
|
# ***** END LICENSE BLOCK *****
|
||||||
|
|
||||||
# $Id: fix-macosx-stack.pl,v 1.3 2007-08-14 04:35:29 dbaron%dbaron.org Exp $
|
# $Id: fix-macosx-stack.pl,v 1.4 2007-08-14 04:44:33 dbaron%dbaron.org Exp $
|
||||||
#
|
#
|
||||||
# This script processes the output of nsTraceRefcnt's Mac OS X stack
|
# This script processes the output of nsTraceRefcnt's Mac OS X stack
|
||||||
# walking code. This is useful for two things:
|
# walking code. This is useful for two things:
|
||||||
|
@ -61,17 +61,23 @@ my %address_adjustments;
|
||||||
sub address_adjustment($) {
|
sub address_adjustment($) {
|
||||||
my ($file) = @_;
|
my ($file) = @_;
|
||||||
unless (exists $address_adjustments{$file}) {
|
unless (exists $address_adjustments{$file}) {
|
||||||
my $result = 0;
|
my $result = -1;
|
||||||
|
|
||||||
open(OTOOL, '-|', 'otool', '-l', $file);
|
open(OTOOL, '-|', 'otool', '-l', $file);
|
||||||
while (<OTOOL>) {
|
while (<OTOOL>) {
|
||||||
if (/^ vmaddr (0x[0-9a-f]{8})$/) {
|
if (/^ segname __TEXT$/) {
|
||||||
$result = hex($1);
|
if (<OTOOL> =~ /^ vmaddr (0x[0-9a-f]{8})$/) {
|
||||||
last;
|
$result = hex($1);
|
||||||
|
last;
|
||||||
|
} else {
|
||||||
|
die "Bad output from otool";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(OTOOL);
|
close(OTOOL);
|
||||||
|
|
||||||
|
$result >= 0 || die "Bad output from otool";
|
||||||
|
|
||||||
$address_adjustments{$file} = $result;
|
$address_adjustments{$file} = $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче