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

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
...@@ -133,6 +133,12 @@ my %nameexception = ( ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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}}) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment