|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code and use it
On Fri, Oct 18, 2024 at 02:04:22PM +0200, Jan Beulich wrote:
> On 18.10.2024 13:41, Roger Pau Monné wrote:
> > On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> >> @@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
> >> $(obj)/%.32.o: $(src)/%.c FORCE
> >> $(call if_changed_rule,cc_o_c)
> >>
> >> +orphan-handling-$(call ld-option,--orphan-handling=error) :=
> >> --orphan-handling=error
> >> LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) :=
> >> --no-warn-rwx-segments
> >> LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
> >> LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> >>
> >> -%.bin: %.lnk
> >> - $(OBJCOPY) -j .text -O binary $< $@
> >> +text_gap := 0x010200
> >> +text_diff := 0x408020
> >> +
> >> +$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap)
> >> -DTEXT_DIFF=$(text_diff)
> >> +$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap)
> >> -DTEXT_DIFF=$(text_diff) -DFINAL
> >> +$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S
> >> FORCE
> >> + $(call if_changed_dep,cpp_lds_S)
> >> +
> >> +targets += build32.offset.lds build32.base.lds
> >> +
> >> +# link all 32bit objects together
> >> +$(obj)/built-in-32.tmp.o: $(obj32)
> >> + $(LD32) -r -o $@ $^
> >> +
> >> +# link bundle with a given layout and extract a binary from it
> >> +$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
> >> + $(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o)
> >> $(filter %.o,$^)
> >> + $(OBJCOPY) -j .text -O binary $(@:bin=o) $@
> >> + rm -f $(@:bin=o)
> >> +
> >> +quiet_cmd_combine = GEN $@
> >> +cmd_combine = \
> >> + $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> >> + --gap=$(text_gap) --text-diff=$(text_diff) \
> >> + --script $(obj)/build32.offset.lds \
> >> + --bin1 $(obj)/built-in-32.base.bin \
> >> + --bin2 $(obj)/built-in-32.offset.bin \
> >> + --map $(obj)/built-in-32.offset.map \
> >> + --exports cmdline_parse_early,reloc \
> >> + --output $@
> >
> > See xen/Rules.mk, for consistency the indentation should be done with
> > spaces when defining variables. That would also allow to align the
> > options.
>
> And ideally also such that the options align with the first program
> argument.
Yup, that's what I was attempting to suggest, sorry if it wasn't
clear.
> >> +
> >> +targets += built-in-32.S
> >>
> >> -%.lnk: %.32.o $(src)/build32.lds
> >> - $(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> >> +# generate final object file combining and checking above binaries
> >> +$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin
> >> $(obj)/built-in-32.offset.bin \
> >> + $(srctree)/tools/combine_two_binaries.py FORCE
> >
> > Can you indent this using spaces also, so it's on the same column as
> > the ':'?
>
> The first $(obj) you mean, I think / hope?
Indeed, it's one space after the ':':
# Generate final object file combining and checking above binaries
$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin
\
$(srctree)/tools/combine_two_binaries.py FORCE
Preferably comments should also start with an uppercase letter.
Note this already exceeds the 80 char maximum, as the longest line is
81. I think we have been a bit lax with Makefiles however.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |