Lines Matching refs:symbols
138 # Special routine name that should not have any symbols.
155 <profile> is a remote form. Symbols are obtained from host:port$SYMBOL_PAGE
167 jeprof --symbols <program>
183 --add_lib=<file> Read additional symbols and line info from the given library
200 --symbols Print demangled symbol names found at given addresses
397 "symbols!" => \$main::opt_symbols,
446 # Disassembly/listing/symbols mode requires address-level info
535 # --symbols needs a binary-name (to run nm on, etc) but not profiles
577 my ($profile, $symbols, $libs, $thread) = @_;
583 $profile = RemoveUninterestingFrames($symbols, $profile);
587 $profile = FocusProfile($symbols, $profile, $main::opt_focus);
592 $profile = IgnoreProfile($symbols, $profile, $main::opt_ignore);
595 my $calls = ExtractCalls($symbols, $profile);
599 my $reduced = ReduceProfile($symbols, $profile);
620 PrintText($symbols, $flat, $cumulative, -1);
622 PrintSymbolizedProfile($symbols, $profile, $main::prog);
626 if (PrintDot($main::prog, $symbols, $profile, $flat, $cumulative, $total)) {
652 InteractiveMode($profile, $symbols, $libs, $total);
662 # Printing symbols is special and requires a lot less info that most.
664 PrintSymbols(*STDIN); # Get /proc/maps and symbols output from stdin
671 # this will hold symbols that we read from the profile files
679 $symbol_map = MergeSymbols($symbol_map, $data->{symbols});
687 $symbol_map = MergeSymbols($symbol_map, $data2->{symbols});
696 $symbol_map = MergeSymbols($symbol_map, $base->{symbols});
699 # Collect symbols
700 my $symbols;
702 $symbols = FetchSymbols($pcs, $symbol_map);
704 $symbols = FetchSymbols($pcs);
710 $symbols = ExtractSymbols($libs, $pcs);
714 FilterAndPrint($profile, $symbols, $libs);
721 FilterAndPrint($thread_profile, $symbols, $libs, $thread);
811 my ($orig_profile, $symbols, $libs, $total) = @_;
822 if (!InteractiveCommand($orig_profile, $symbols, $libs, $total, $_)) {
836 if (!InteractiveCommand($orig_profile, $symbols, $libs, $total, $_)) {
849 my($orig_profile, $symbols, $libs, $total, $command) = @_;
880 my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore);
881 my $reduced = ReduceProfile($symbols, $profile);
887 PrintText($symbols, $flat, $cumulative, $line_limit);
894 my $calls = ExtractCalls($symbols, $orig_profile);
915 my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore);
916 my $reduced = ReduceProfile($symbols, $profile);
933 my $profile = ProcessProfile($total, $orig_profile, $symbols, "", $ignore);
934 my $reduced = ReduceProfile($symbols, $profile);
960 my $profile = ProcessProfile($total, $orig_profile, $symbols,
962 my $reduced = ReduceProfile($symbols, $profile);
968 if (PrintDot($main::prog, $symbols, $profile, $flat, $cumulative, $total)) {
991 my $symbols = shift;
999 $profile = FocusProfile($symbols, $profile, $focus);
1007 $profile = IgnoreProfile($symbols, $profile, $ignore);
1142 # Print symbols and profile data
1144 my $symbols = shift;
1155 while (my ($pc, $name) = each(%{$symbols})) {
1206 my $symbols = shift;
1225 if (exists($symbols->{$k})) {
1226 $sym = $symbols->{$k}->[0] . " " . $symbols->{$k}->[1];
1403 my $symbols = ExtractSymbols($libs, $pcs);
1407 print(($symbols->{$pc}->[0] || "??") . "\n");
1597 my $symbols = {};
1598 MapToSymbols($lib, $offset, $pcs, $symbols);
1604 my $sym = $symbols->{$addr};
2021 my $symbols = shift;
2158 FillFullnameToShortnameMap($symbols, $fullname_to_shortname_map);
2162 my @translated = TranslateStack($symbols, $fullname_to_shortname_map, $k);
2548 # shortname for all symbols, which is usually fine, but sometimes --
2556 my $symbols = shift;
2561 foreach my $symlist (values(%{$symbols})) {
2562 # TODO(csilvers): deal with inlined symbols too.
2576 foreach my $symlist (values(%{$symbols})) {
2603 # Translate a stack of addresses into a stack of symbols
2605 my $symbols = shift;
2625 my $symlist = $symbols->{$a};
2630 # We can have a sequence of symbols for a particular entry
2813 my $symbols = shift;
2818 if (exists $symbols->{$address}) {
2819 my $file = $symbols->{$address}->[1];
2823 $location = $file . ":" . $symbols->{$address}->[0];
2830 my $symbols = shift;
2836 my $destination = ExtractSymbolLocation($symbols, $address[0]);
2839 my $source = ExtractSymbolLocation($symbols, $address[$i]);
2850 my $symbols = shift;
2864 if (exists($symbols->{$a})) {
2865 $sym = $symbols->{$a}->[0];
2887 my $symbols = shift;
2994 if (exists($symbols->{$second_pc})) {
2995 $second_pc = $symbols->{$second_pc}->[0];
3015 if (exists($symbols->{$a})) {
3016 my $func = $symbols->{$a}->[0];
3031 $result = FilterFrames($symbols, $result);
3038 my $symbols = shift;
3042 FillFullnameToShortnameMap($symbols, $fullname_to_shortname_map);
3045 my @translated = TranslateStack($symbols, $fullname_to_shortname_map, $k);
3079 my $symbols = shift;
3088 if (($a =~ m/$focus/) || SymbolMatches($symbols->{$a}, $focus)) {
3099 my $symbols = shift;
3109 if (($a =~ m/$ignore/) || SymbolMatches($symbols->{$a}, $ignore)) {
3263 error("Stripped binary. No symbols available.\n");
3266 error("Failed to get the number of symbols from $url\n");
3301 # We fetch symbols from the first profile argument.
3354 # the resulting symbol map. Also processes variables relating to symbols.
3362 # Removes all the leading zeroes from the symbols, see comment below.
3380 printf STDERR ("Ignoring unknown variable in symbols list: " .
3409 # Fetches and processes symbols to prepare them for use in the profile output
3410 # code. If the optional 'symbol_map' arg is not given, fetches symbols from
3411 # $SYMBOL_PAGE for all PC values found in profile. Otherwise, the raw symbols
3441 # We use c++filt in case $SYMBOL_PAGE gives us mangled symbols.
3448 my $symbols = {};
3451 # For 64 bits binaries, symbols are extracted with 8 leading zeroes.
3452 # Then /symbol reads the long symbols in as uint64, and outputs
3454 # By removing all the leading zeroes in both $pc and the symbols from
3455 # /symbol, the symbols match and are retrievable from the map.
3468 $symbols->{$pc} = $sym;
3474 return $symbols;
3845 my $symbols;
3854 $symbols = ReadSymbols(*PROFILE{IO});
3889 if (defined($symbols)) {
3891 error("$fname: Cannot recognize profile section after symbols.\n");
3900 # if we got symbols along with the profile, return those as well
3901 if (defined($symbols)) {
3902 $result->{symbols} = $symbols;
4435 # Return path to library with debugging symbols.
4436 # For libc libraries, the copy in /usr/lib/debug contains debugging symbols
4828 # Extract symbols for all PC values found in profile
4833 my $symbols = {};
4872 # Map to symbols
4873 MapToSymbols($libname, AddressSub($start, $offset), $contained, $symbols);
4876 return $symbols;
4879 # Map list of PC values to symbols for a given image
4884 my $symbols = shift;
4902 MapSymbolsWithNM($image, $offset, $pclist, $symbols);
4946 open(SYMBOLS, "$cmd <" . ShellEscape($main::tmpfile_sym) . " |")
4949 while (<SYMBOLS>) {
4953 $_ = <SYMBOLS>;
4981 # catch overloaded, inlined symbols, which nm doesn't see.
4990 # Prepend to accumulated symbols for pcstr
4992 my $sym = $symbols->{$pcstr};
4995 $symbols->{$pcstr} = $sym;
5004 close(SYMBOLS);
5007 # Use nm to map the list of referenced PCs to symbols. Return true iff we
5013 my $symbols = shift;
5025 # No symbols: just use addresses
5028 $symbols->{$pc} = [$pcstr, "?", $pcstr];
5046 $symbols->{$pc} = [$name, "?", $fullname];
5049 $symbols->{$pc} = [$pcstr, "?", $pcstr];
5063 # Trim overly long symbols found in disassembler output
5255 # It's possible for two symbols to share the same address, if
5338 # For libc libraries, the copy in /usr/lib/debug contains debugging symbols
5370 # -D to at least get *exported* symbols. If we can't use --demangle,