2005-10-29 05:43:06

by Al Viro

[permalink] [raw]
Subject: [PATCH] MACHINE_START fix

unreferenced static variables can be killed by cc(1), so when
we want them to survive (we collect these suckers in array in special
section), we'd better not make them static.

Signed-off-by: Al Viro <[email protected]>
----
diff -urN RC14-base/include/asm-arm/mach/arch.h current/include/asm-arm/mach/arch.h
--- RC14-base/include/asm-arm/mach/arch.h 2005-10-28 18:17:09.000000000 -0400
+++ current/include/asm-arm/mach/arch.h 2005-10-28 20:25:09.000000000 -0400
@@ -49,7 +49,7 @@
* a table by the linker.
*/
#define MACHINE_START(_type,_name) \
-static const struct machine_desc __mach_desc_##_type \
+const struct machine_desc __mach_desc_##_type \
__attribute__((__section__(".arch.info.init"))) = { \
.nr = MACH_TYPE_##_type, \
.name = _name,


2005-10-29 08:52:57

by Andreas Schwab

[permalink] [raw]
Subject: Re: [PATCH] MACHINE_START fix

Al Viro <[email protected]> writes:

> unreferenced static variables can be killed by cc(1), so when
> we want them to survive (we collect these suckers in array in special
> section), we'd better not make them static.

What about __attribute__used__?

Andreas.

--
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstra?e 5, 90409 N?rnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

2005-10-29 08:54:53

by Russell King

[permalink] [raw]
Subject: Re: [PATCH] MACHINE_START fix

On Sat, Oct 29, 2005 at 06:43:01AM +0100, Al Viro wrote:
> unreferenced static variables can be killed by cc(1), so when
> we want them to survive (we collect these suckers in array in special
> section), we'd better not make them static.

Except this causes sparse to complain, which is why I made it static
last night. Patch nacked.

What I did miss was making it __attribute_used__ which would be the
correct answer.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core