summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmerigo Wang <amwang@redhat.com>2010-10-27 12:42:01 -0700
committerMichal Marek <mmarek@suse.cz>2010-10-28 00:07:46 +0200
commitabb438526201c6a79949ad45375c051b6681c253 (patch)
tree107b5354d68b2b9199abdd6b372608a3b0cda376
parente8cf981346b78ee50c2bfce83be9ee55704b3d4f (diff)
downloadlinux-abb438526201c6a79949ad45375c051b6681c253.tar.gz
linux-abb438526201c6a79949ad45375c051b6681c253.tar.bz2
linux-abb438526201c6a79949ad45375c051b6681c253.zip
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>
-rwxr-xr-xscripts/namespace.pl21
1 files changed, 12 insertions, 9 deletions
diff --git a/scripts/namespace.pl b/scripts/namespace.pl
index bccf61044eda..a71be6b7cdec 100755
--- a/scripts/namespace.pl
+++ b/scripts/namespace.pl
@@ -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}}) {