mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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:
1 parent
2b7aac7641
commit
05db6ab3e5
3 files changed
+8
-2
No files matched your search
@@ -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 */
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)))
|
||||
|
||||
|
||||