[PATCH] __init dependencies: ignore __param

From: Randy.Dunlap
Date: Wed Oct 20 2004 - 11:46:06 EST


Keith Owens wrote:


They may only be OK because the code is never run more than once.
Normal code that refers to data.*init and is run more than once is a
bug just waiting to bite you.

Andrew - small fix for reference_init.pl, against 2.6.9-rc4.

------------------------------------------------------------

Treat .pci_fixup entries the same as .init code/data.

Signed off by: Keith Owens <kaos@xxxxxxxxxx>

Index: linux/scripts/reference_init.pl
===================================================================
--- linux.orig/scripts/reference_init.pl Sat Aug 14 15:37:37 2004
+++ linux/scripts/reference_init.pl Tue Oct 12 15:59:39 2004
@@ -93,6 +93,8 @@ foreach $object (sort(keys(%object))) {
$from !~ /\.stab$/ &&
$from !~ /\.rodata$/ &&
$from !~ /\.text\.lock$/ &&
+ $from !~ /\.pci_fixup_header$/ &&
+ $from !~ /\.pci_fixup_final$/ &&
$from !~ /\.debug_/)) {
printf("Error: %s %s refers to %s\n", $object, $from, $line);
}

Keith,

It looks like __param section references can also be safely
ignored by 'reference_init.pl', since they are not discarded AFAIK.
Or am I wrong about that one?
Patch attached -- applies on top of yours.

--
~Randy

Ignore __param section references; they aren't discarded.

Error: ./drivers/mtd/devices/phram.o __param refers to 0000000000000010 R_X86_64_64 .init.text+0x0000000000000013
Error: ./drivers/scsi/dc395x.o __param refers to 0000000000000020 R_X86_64_64 .init.data+0x0000000000000064
Error: ./drivers/usb/gadget/ether.o __param refers to 0000000000000048 R_X86_64_64 .init.data+0x0000000000000020

Signed-off-by: Randy Dunlap <rddunlap@xxxxxxxx>

diffstat:=
scripts/reference_init.pl | 1 +
1 files changed, 1 insertion(+)

diff -Naurp ./scripts/reference_init.pl~refer_param ./scripts/reference_init.pl
--- ./scripts/reference_init.pl~refer_param 2004-10-20 08:39:44.976489696 -0700
+++ ./scripts/reference_init.pl 2004-10-20 08:45:26.217613160 -0700
@@ -95,6 +95,7 @@ foreach $object (sort(keys(%object))) {
$from !~ /\.text\.lock$/ &&
$from !~ /\.pci_fixup_header$/ &&
$from !~ /\.pci_fixup_final$/ &&
+ $from !~ /\__param$/ &&
$from !~ /\.debug_/)) {
printf("Error: %s %s refers to %s\n", $object, $from, $line);
}