in src/main/abi-symbols/abi-dumper.pl [4431:4496]
sub setSource(@)
{
my $R = shift(@_);
my $ID = shift(@_);
my $Target = undef;
if(@_) {
$Target = shift(@_);
}
my $File = $DWARF_Info{$ID}{"file"};
my $Line = $DWARF_Info{$ID}{"line"};
if(defined $File)
{
my $InfoName = undef;
if(index($File, "(")!=-1)
{ # Support for new elfutils (Fedora 30)
if($File=~s/\A(.+?)\s+\((\d+)\)/$1/) {
$InfoName = $1;
}
}
my $Name = undef;
if($ID>=0) {
$Name = $SourceFile{$DWARF_Info{$ID}{"unit"}}{$File};
}
else
{ # imported
$Name = $SourceFile_Alt{0}{$File};
}
if(not $Name) {
$Name = $InfoName;
}
if($Name=~/\.($HEADER_EXT)\Z/i
or index($Name, ".")==-1)
{ # header
if(not defined $Target or $Target eq "Header")
{
$R->{"Header"} = $Name;
if(defined $Line) {
$R->{"Line"} = $Line;
}
}
elsif($Target eq "Line")
{
if(defined $Line and $R->{"Header"} eq $Name) {
$R->{"Line"} = $Line;
}
}
}
elsif(index($Name, "<built-in>")==-1)
{ # source
if(not defined $Target or $Target eq "Source")
{
$R->{"Source"} = $Name;
if(defined $Line) {
$R->{"SourceLine"} = $Line;
}
}
}
}
}