qemu/include/exec
Richard Henderson 44b99a6d5f exec: Build page-vary-common.c with -fno-lto
In bbc17caf81, we used an alias attribute to allow target_page
to be declared const, and yet be initialized late.

This fails when using LTO with several versions of gcc.
The compiler looks through the alias and decides that the const
variable is statically initialized to zero, then propagates that
zero to many uses of the variable.

This can be avoided by compiling one object file with -fno-lto.
In this way, any initializer cannot be seen, and the constant
propagation does not occur.

Since we are certain to have this separate compilation unit, we
can drop the alias attribute as well.  We simply have differing
declarations for target_page in different compilation units.
Drop the use of init_target_page, and drop the configure detection
for CONFIG_ATTRIBUTE_ALIAS.

In order to change the compilation flags for a file with meson,
we must use a static_library.  This runs into specific_ss, where
we would need to create many static_library instances.

Fix this by splitting page-vary.c: the page-vary-common.c part is
compiled once as a static_library, while the page-vary.c part is
left in specific_ss in order to handle the target-specific value
of TARGET_PAGE_BITS_MIN.

Reported-by: Gavin Shan <gshan@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210321211534.2101231-1-richard.henderson@linaro.org>
[PMD: Fix typo in subject, split original patch in 3]
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Gavin Shan <gshan@redhat.com>
Message-Id: <20210322112427.4045204-4-f4bug@amsat.org>
[rth: Update MAINTAINERS]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2021-03-23 19:36:47 -06:00
..
user nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
address-spaces.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
confidential-guest-support.h confidential guest support: Introduce cgs "ready" flag 2021-02-08 16:57:38 +11:00
cpu_ldst.h exec: Rename guest_{addr,range}_valid to *_untagged 2021-02-16 11:04:53 +00:00
cpu-all.h exec: Build page-vary-common.c with -fno-lto 2021-03-23 19:36:47 -06:00
cpu-common.h vl: extract softmmu/globals.c 2020-12-15 12:51:50 -05:00
cpu-defs.h exec/cpu-defs: Remove TCG backends dependency 2021-02-05 10:24:14 -10:00
cputlb.h overall/alpha tcg cpus|hppa: Fix Lesser GPL version number 2020-11-15 16:43:54 +01:00
exec-all.h accel/tcg: Precompute curr_cflags into cpu->tcg_cflags 2021-03-06 11:53:57 -08:00
gdbstub.h gdbstub: Remove unused gdb_get_float32() and gdb_get_float64() 2021-02-15 09:38:47 +00:00
gen-icount.h tcg: Use tcg_constant_i32 with icount expander 2021-01-13 08:39:08 -10:00
helper-gen.h tcg: Add support for a helper with 7 arguments 2020-02-11 16:29:16 -08:00
helper-head.h tcg: Add support for a helper with 7 arguments 2020-02-11 16:29:16 -08:00
helper-proto.h tcg: Use memset for large vector byte replication 2021-01-04 06:32:58 -10:00
helper-tcg.h tcg: Add support for a helper with 7 arguments 2020-02-11 16:29:16 -08:00
hwaddr.h move MemMapEntry 2020-09-30 11:29:56 +02:00
ioport.h nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
log.h tcg: Introduce tcg_splitwx_to_{rx,rw} 2021-01-07 05:09:41 -10:00
memattrs.h cputlb: Byte swap memory transaction attribute 2019-09-03 08:30:39 -07:00
memop.h cputlb: Replace size and endian operands for MemOp 2019-09-03 08:30:39 -07:00
memory_ldst_cached.h.inc fuzz: ignore address_space_map is_write flag 2021-02-08 14:43:54 +01:00
memory_ldst_phys.h.inc nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
memory_ldst.h.inc nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
memory-internal.h cputlb: Merge and move memory_notdirty_write_{prepare,complete} 2019-09-25 10:44:29 -07:00
memory.h memory: Add offset_in_region to flatview_cb arguments 2021-03-23 11:47:31 +00:00
page-vary.h exec: Build page-vary-common.c with -fno-lto 2021-03-23 19:36:47 -06:00
plugin-gen.h accel/tcg: allow plugin instrumentation to be disable via cflags 2021-02-18 08:19:23 +00:00
poison.h * Add some missing gitlab-CI job dependencies 2021-03-10 17:22:45 +00:00
ram_addr.h memory: alloc RAM from file at offset 2021-02-09 20:53:56 +00:00
ramblock.h ram_addr: Split RAMBlock definition 2020-01-29 11:28:59 +01:00
ramlist.h qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
softmmu-semi.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
target_page.h migration: Make savevm.c target independent 2017-05-18 19:21:00 +02:00
tb-context.h exec: Move TranslationBlock typedef to qemu/typedefs.h 2021-02-18 08:19:08 +00:00
tb-hash.h overall/alpha tcg cpus|hppa: Fix Lesser GPL version number 2020-11-15 16:43:54 +01:00
tb-lookup.h accel/tcg: drop the use of CF_HASH_MASK and rename params 2021-03-06 11:52:06 -08:00
translate-all.h remove TCG includes from common code 2021-01-02 21:03:36 +01:00
translator.h tcg: Make DisasContextBase.tb const 2021-01-07 05:09:41 -10:00