Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24a54f79 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by Michal Marek
Browse files

namespace: add source file location exceptions



Teach namespace checker about some special case files where the
source is in unusual location.  This fixes many of the source file
not found errors (more can be added), and also prevents false positives
for functions not being used.

Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent 532cf290
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -141,6 +141,26 @@ my %nameexception = (
    'VDSO32_sigreturn'	=> 1,
);

# Files with exceptions to source file location
my %sourceloc = (
    'net/dccp/dccp_probe.o'	=> 'probe',
    'net/dccp/dccp_ipv4.o'	=> 'ipv4',
    'net/dccp/dccp_ipv6.o'	=> 'ipv6',
    'net/dccp/dccp_diag.o'	=> 'diag',
    'drivers/char/hw_random/rng-core.o'	=> 'core',
    'fs/fat/msdos.o'		=> 'namei_msdos',
    'fs/fat/vfat.o'		=> 'namei_vfat',
    'fs/nfs_common/nfs_acl.o'	=> 'nfsacl',
    'sound/soundcore.o'		=> 'sound_core',
    'drivers/md/dm-mirror.o'	=> 'dm-raid1',
    'drivers/message/i2o/i2o_bus.o' => 'bus-osm',
    'arch/x86/kvm/kvm-amd.o'	=> 'svm',
    'arch/x86/kvm/kvm-intel.o'	=> 'vmx',
    'arch/x86/crypto/twofish-x86_64.o' => 'twofish-x86_64-asm_64',
    'arch/x86/crypto/aes-x86_64.o' => 'aes-x86_64-asm_64',
    'arch/x86/crypto/aesni-intel.o' => 'aesni-intel_asm',
    'arch/x86/crypto/salsa20-x86_64.o' => 'salsa20-x86_64-asm_64',
);

&find(\&linux_objects, '.');	# find the objects and do_nm on them
&list_multiply_defined();
@@ -228,11 +248,15 @@ sub do_nm
		return;
	}
	($source = $basename) =~ s/\.o$//;

	$source = $sourceloc{$fullname} if ($sourceloc{$fullname});

	if (-e "$source.c" || -e "$source.S") {
		$source = "$objtree$File::Find::dir/$source";
	} else {
		$source = "$srctree$File::Find::dir/$source";
	}

	if (! -e "$source.c" && ! -e "$source.S") {
		# No obvious source, exclude the object if it is conglomerate
	        open(my $objdumpdata, "$objdump $basename|")