>>> On 29.11.18 at 18:44, <wei.l...@citrix.com> wrote: > On Thu, Nov 08, 2018 at 09:05:45AM -0700, Jan Beulich wrote: >> --- a/xen/arch/x86/efi/Makefile >> +++ b/xen/arch/x86/efi/Makefile >> @@ -5,7 +5,11 @@ CFLAGS += -fshort-wchar >> >> boot.init.o: buildid.o >> >> +EFIOBJ := boot.init.o compat.o runtime.o >> + >> +$(EFIOBJ): CFLAGS-stack-boundary := -mpreferred-stack-boundary=4 > > From gcc's manual on -mincoming-stack-boundary: > > "Thus calling a function compiled with a higher preferred stack boundary > from a function compiled with a lower preferred stack boundary most > likely misaligns the stack." > > I notice runtime.o now has stack alignment of 2^4 while the rest of xen > has 2^3. > > There is at least one example (efi_get_time) that could misalign the > stack. Is that okay?
It would not be okay if the runtime call machinery wouldn't force 32-byte alignment of the stack. See the declaration of struct efi_rs_state, an instance of which gets put on the stack of every function making runtime calls. Also note how this is no different from prior to this change, as explained by the comment in that structure declaration, except that instead of always running on a reliably mis-aligned stack we will now run on a mixture (hence the code [and stack] size savings mentioned in the description). Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel