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: Amerigo Wang <amwang@redhat.com>
Cc: Stephen Hemminger <shemminger@vyatta.com>
Cc: Michal Marek <mmarek@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
Amerigo Wang 2010-10-27 12:42:01 -07:00 committed by Michal Marek
parent e8cf981346
commit abb4385262

View File

@ -133,6 +133,12 @@ my %nameexception = (
'__nosave_begin' => 1, '__nosave_begin' => 1,
'__nosave_end' => 1, '__nosave_end' => 1,
'pg0' => 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$/ && if (/.*\.o$/ &&
! ( ! (
m:/built-in.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/ia32/ia32.o$:
|| m:arch/ia64/kernel/gate-syms.o$: || m:arch/ia64/kernel/gate-syms.o$:
|| m:arch/ia64/lib/__divdi3.o$: || m:arch/ia64/lib/__divdi3.o$:
@ -200,6 +207,7 @@ sub linux_objects
|| m:^.*/\.tmp_: || m:^.*/\.tmp_:
|| m:^\.tmp_: || m:^\.tmp_:
|| m:/vmlinux-obj.o$: || m:/vmlinux-obj.o$:
|| m:^tools/:
) )
) { ) {
do_nm($basename, $_); do_nm($basename, $_);
@ -355,20 +363,15 @@ sub list_multiply_defined
foreach my $name (keys(%def)) { foreach my $name (keys(%def)) {
if ($#{$def{$name}} > 0) { if ($#{$def{$name}} > 0) {
# Special case for cond_syscall # 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" || if($def{$name}[0] eq "kernel/sys_ni.o" ||
$def{$name}[1] eq "kernel/sys_ni.o") { $def{$name}[1] eq "kernel/sys_ni.o") {
&drop_def("kernel/sys_ni.o", $name); &drop_def("kernel/sys_ni.o", $name);
next; 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"; printf "$name is multiply defined in :-\n";
foreach my $module (@{$def{$name}}) { foreach my $module (@{$def{$name}}) {