Message ID | 42875d48-10e4-cc88-70ac-8979fea2493c@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] x86emul: avoid assembler warning about .type not taking effect in test harness | expand |
On 14.07.2020 10:06, Jan Beulich wrote: > gcc re-orders top level blocks by default when optimizing. This > re-ordering results in all our .type directives to get emitted to the > assembly file first, followed by gcc's. The assembler warns about > attempts to change the type of a symbol when it was already set (and > when there's no intervening setting to "notype"). > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > --- > v2: Refine description to no longer claim a gcc change to be the reason. > > --- a/tools/tests/x86_emulator/Makefile > +++ b/tools/tests/x86_emulator/Makefile > @@ -295,4 +295,9 @@ x86-emulate.o cpuid.o test_x86_emulator. > x86-emulate.o: x86_emulate/x86_emulate.c > x86-emulate.o: HOSTCFLAGS += -D__XEN_TOOLS__ > > +# In order for our custom .type assembler directives to reliably land after > +# gcc's, we need to keep it from re-ordering top-level constructs. > +$(call cc-option-add,HOSTCFLAGS-toplevel,HOSTCC,-fno-toplevel-reorder) > +test_x86_emulator.o: HOSTCFLAGS += $(HOSTCFLAGS-toplevel) > + > test_x86_emulator.o: $(addsuffix .h,$(TESTCASES)) $(addsuffix -opmask.h,$(OPMASK)) >
On 31/07/2020 15:54, Jan Beulich wrote: > On 14.07.2020 10:06, Jan Beulich wrote: >> gcc re-orders top level blocks by default when optimizing. This >> re-ordering results in all our .type directives to get emitted to the >> assembly file first, followed by gcc's. The assembler warns about >> attempts to change the type of a symbol when it was already set (and >> when there's no intervening setting to "notype"). >> >> Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
--- a/tools/tests/x86_emulator/Makefile +++ b/tools/tests/x86_emulator/Makefile @@ -295,4 +295,9 @@ x86-emulate.o cpuid.o test_x86_emulator. x86-emulate.o: x86_emulate/x86_emulate.c x86-emulate.o: HOSTCFLAGS += -D__XEN_TOOLS__ +# In order for our custom .type assembler directives to reliably land after +# gcc's, we need to keep it from re-ordering top-level constructs. +$(call cc-option-add,HOSTCFLAGS-toplevel,HOSTCC,-fno-toplevel-reorder) +test_x86_emulator.o: HOSTCFLAGS += $(HOSTCFLAGS-toplevel) + test_x86_emulator.o: $(addsuffix .h,$(TESTCASES)) $(addsuffix -opmask.h,$(OPMASK))
gcc re-orders top level blocks by default when optimizing. This re-ordering results in all our .type directives to get emitted to the assembly file first, followed by gcc's. The assembler warns about attempts to change the type of a symbol when it was already set (and when there's no intervening setting to "notype"). Signed-off-by: Jan Beulich <jbeulich@suse.com> --- v2: Refine description to no longer claim a gcc change to be the reason.