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

Commit abb43852 authored by Amerigo Wang's avatar Amerigo Wang Committed by Michal Marek
Browse files

scripts/namespace.pl: improve to get more correct results



Exclude more symbols from arch/x86/vdso/ and arch/x86/boot/; add some more
linker-defined symbols into exception list; add other cond_syscalls
besides "sys_*".

Signed-off-by: default avatarAmerigo Wang <amwang@redhat.com>
Cc: Stephen Hemminger <shemminger@vyatta.com>
Cc: Michal Marek <mmarek@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent e8cf9813
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -133,6 +133,12 @@ my %nameexception = (
    '__nosave_begin'	=> 1,
    '__nosave_end'	=> 1,
    'pg0'		=> 1,
    'vdso_enabled'	=> 1,
    '__stack_chk_fail'  => 1,
    'VDSO32_PRELINK'	=> 1,
    'VDSO32_vsyscall'	=> 1,
    'VDSO32_rt_sigreturn'=>1,
    'VDSO32_sigreturn'	=> 1,
);


@@ -157,7 +163,8 @@ sub linux_objects
	if (/.*\.o$/ &&
		! (
		m:/built-in.o$:
		|| m:arch/x86/kernel/vsyscall-syms.o$:
		|| m:arch/x86/vdso/:
		|| m:arch/x86/boot/:
		|| m:arch/ia64/ia32/ia32.o$:
		|| m:arch/ia64/kernel/gate-syms.o$:
		|| m:arch/ia64/lib/__divdi3.o$:
@@ -200,6 +207,7 @@ sub linux_objects
		|| m:^.*/\.tmp_:
		|| m:^\.tmp_:
		|| m:/vmlinux-obj.o$:
		|| m:^tools/:
		)
	) {
		do_nm($basename, $_);
@@ -355,20 +363,15 @@ sub list_multiply_defined
	foreach my $name (keys(%def)) {
		if ($#{$def{$name}} > 0) {
			# Special case for cond_syscall
			if ($#{$def{$name}} == 1 && $name =~ /^sys_/) {
			if ($#{$def{$name}} == 1 &&
			   ($name =~ /^sys_/ || $name =~ /^compat_sys_/ ||
			    $name =~ /^sys32_/)) {
				if($def{$name}[0] eq "kernel/sys_ni.o" ||
				   $def{$name}[1] eq "kernel/sys_ni.o") {
					&drop_def("kernel/sys_ni.o", $name);
					next;
				}
			}
			# Special case for i386 entry code
			if ($#{$def{$name}} == 1 && $name =~ /^__kernel_/ &&
			    $def{$name}[0] eq "arch/x86/kernel/vsyscall-int80_32.o" &&
			    $def{$name}[1] eq "arch/x86/kernel/vsyscall-sysenter_32.o") {
				&drop_def("arch/x86/kernel/vsyscall-sysenter_32.o", $name);
				next;
			}

			printf "$name is multiply defined in :-\n";
			foreach my $module (@{$def{$name}}) {