1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#! /usr/bin/perl -w
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownuse strict;
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownwhile (<>)
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/ __getsockname / getsockname /;
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/ __sigaction / sigaction /;
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/ __GI___/ __/;
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/ __([a-z]*)_nocancel / $1 /;
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    # "libSystem*" occurs on Darwin.
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/\(in \/.*(libc|libSystem).*\)$/(in \/...libc...)/;
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/\(within \/.*(libc|libSystem).*\)$/(within \/...libc...)/;
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    # Filter out dynamic loader
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov    s/ \(in \/.*ld-.*so\)$//;
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    # Remove the filename -- on some platforms (eg. Linux) it will be in
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    # libc, on some (eg. Darwin) it will be in the main executable.
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/\(below main\) \(.+\)$/(below main)/;
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    # Merge the different C++ operator variations.
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)__builtin_new/$1...operator new.../;
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)operator new\(unsigned(| int| long)\)/$1...operator new.../;
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)__builtin_vec_new/$1...operator new.../;
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)operator new\[\]\(unsigned(| int| long)\)/$1...operator new[].../;
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)__builtin_delete/$1...operator delete.../;
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)operator delete\(void\*\)/$1...operator delete.../;
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)__builtin_vec_delete/$1...operator delete[].../;
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    s/(at.*)operator delete\[\]\(void\*\)/$1...operator delete[].../;
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    print;
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownexit 0;
40