]> xenbits.xensource.com Git - xen.git/commit
x86: make hypervisor build with gcc11
authorJan Beulich <jbeulich@suse.com>
Thu, 27 May 2021 12:40:29 +0000 (14:40 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 27 May 2021 12:40:29 +0000 (14:40 +0200)
commit722f59d38c710a940ab05e542a83020eb5546dea
tree2be319594ad3729b1a3b552095a24af126f8da1a
parentb509d4a688d80e802ff580990288ef5e17859df6
x86: make hypervisor build with gcc11

Gcc 11 looks to make incorrect assumptions about valid ranges that
pointers may be used for addressing when they are derived from e.g. a
plain constant. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100680.

Utilize RELOC_HIDE() to work around the issue, which for x86 manifests
in at least
- mpparse.c:efi_check_config(),
- tboot.c:tboot_probe(),
- tboot.c:tboot_gen_frametable_integrity(),
- x86_emulate.c:x86_emulate() (at -O2 only).
The last case is particularly odd not just because it only triggers at
higher optimization levels, but also because it only affects one of at
least three similar constructs. Various "note" diagnostics claim the
valid index range to be [0, 2⁶³-1].

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Tested-by: Jason Andryuk <jandryuk@gmail.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
tools/tests/x86_emulator/x86-emulate.c
xen/arch/x86/x86_emulate/x86_emulate.c
xen/include/asm-x86/fixmap.h
xen/include/xen/compiler.h
xen/include/xen/pdx.h