diff options
author | Tim Deegan <tim@xen.org> | 2012-04-11 13:10:33 +0100 |
---|---|---|
committer | Tim Deegan <tim@xen.org> | 2012-04-11 13:10:33 +0100 |
commit | 05db6ab3e5cbe1e5d7edaf7caaa246bb97bc45ca (patch) | |
tree | 810b79071d4d65f38f822cb5c6a494e0e284e06d | |
parent | 2b7aac76417d57e336f41b6f6d5b0cb301d512f8 (diff) | |
download | xen-05db6ab3e5cbe1e5d7edaf7caaa246bb97bc45ca.tar.gz xen-05db6ab3e5cbe1e5d7edaf7caaa246bb97bc45ca.tar.bz2 xen-05db6ab3e5cbe1e5d7edaf7caaa246bb97bc45ca.zip |
x86: explicitly mark __initdata variables as used when building with clang.
This stops LLVM from replacing it with a different, auto-generated
variable as part of an optimization. (The auto-generated variable
ends up in the normal data section.)
Remove stray __read_mostly annotations on declarations that this unmasked.
Signed-off-by: Tim Deegan <tim@xen.org>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
-rw-r--r-- | xen/arch/x86/oprofile/op_x86_model.h | 2 | ||||
-rw-r--r-- | xen/include/acpi/cpufreq/cpufreq.h | 2 | ||||
-rw-r--r-- | xen/include/xen/compiler.h | 6 |
3 files changed, 8 insertions, 2 deletions
diff --git a/xen/arch/x86/oprofile/op_x86_model.h b/xen/arch/x86/oprofile/op_x86_model.h index 87beedbf87..31d473b7f6 100644 --- a/xen/arch/x86/oprofile/op_x86_model.h +++ b/xen/arch/x86/oprofile/op_x86_model.h @@ -53,6 +53,6 @@ extern struct op_x86_model_spec const op_amd_fam15h_spec; void arch_perfmon_setup_counters(void); extern int ppro_has_global_ctrl; -extern struct op_x86_model_spec const *__read_mostly model; +extern struct op_x86_model_spec const *model; #endif /* OP_X86_MODEL_H */ diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h index 3377232ccd..1798b9bb19 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -22,7 +22,7 @@ DECLARE_PER_CPU(spinlock_t, cpufreq_statistic_lock); -extern bool_t __read_mostly cpufreq_verbose; +extern bool_t cpufreq_verbose; struct cpufreq_governor; diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h index 04f84ec393..8c26756afa 100644 --- a/xen/include/xen/compiler.h +++ b/xen/include/xen/compiler.h @@ -14,7 +14,13 @@ #define always_inline __inline__ __attribute__ ((always_inline)) #define noinline __attribute__((noinline)) +#ifdef __clang__ +/* Clang can replace some vars with new automatic ones that go in .data; + * mark all explicit-segment vars 'used' to prevent that. */ +#define __section(s) __attribute_used__ __attribute__((__section__(s))) +#else #define __section(s) __attribute__((__section__(s))) +#endif #define __used_section(s) __attribute_used__ __attribute__((__section__(s))) #define __text_section(s) __attribute__((__section__(s))) |