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>
This commit is contained in:
Tim Deegan committed 2012-04-11 13:10:33 +01:00
1 parent 2b7aac7641
commit 05db6ab3e5
3 files changed
+8 -2

No files matched your search

+1 -1
View File
@@ -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 */
+1 -1
View File
@@ -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;
+6
View File
@@ -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)))
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.