On Thu, 2023-01-19 at 12:40 +0100, Marc Hartmayer wrote: > Use the C pre-processor for the linker script generation. For example, > this enables us the use of constants in the "linker scripts" `*.lds.S`. > > Signed-off-by: Marc Hartmayer <mhartmay@xxxxxxxxxxxxx> > --- > .gitignore | 1 + > s390x/Makefile | 6 ++++-- > s390x/{flat.lds => flat.lds.S} | 0 > s390x/snippets/asm/{flat.lds => flat.lds.S} | 0 > s390x/snippets/c/{flat.lds => flat.lds.S} | 0 > 5 files changed, 5 insertions(+), 2 deletions(-) > rename s390x/{flat.lds => flat.lds.S} (100%) > rename s390x/snippets/asm/{flat.lds => flat.lds.S} (100%) > rename s390x/snippets/c/{flat.lds => flat.lds.S} (100%) > > diff --git a/.gitignore b/.gitignore > index 601822d67325..29f352c5ceb6 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -31,3 +31,4 @@ cscope.* > /s390x/comm.key > /s390x/snippets/*/*.hdr > /s390x/snippets/*/*.*obj > +/s390x/**/*.lds > diff --git a/s390x/Makefile b/s390x/Makefile > index 8719f0c837cf..44ccca8102d6 100644 > --- a/s390x/Makefile > +++ b/s390x/Makefile > @@ -76,7 +76,7 @@ CFLAGS += -fno-delete-null-pointer-checks > LDFLAGS += -nostdlib -Wl,--build-id=none > > # We want to keep intermediate files > -.PRECIOUS: %.o > +.PRECIOUS: %.o %.lds > > asm-offsets = lib/$(ARCH)/asm-offsets.h > include $(SRCDIR)/scripts/asm-offsets.mak > @@ -159,6 +159,8 @@ $(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPP > %.hdr.obj: %.hdr > $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ > > +%.lds: %.lds.S > + $(CPP) $(autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< Where is CPP defined? Do you need the $(autodepend-flags)? It generates a rule with target flat.lds.o. I don't think that would be used anywhere. In the next patch you add $(asm-offsets) as a prerequisite, if the generated rule would be effective, you wouldn't need that, would you? > > .SECONDEXPANSION: > %.elf: $(FLATLIBS) $(asmlib) $(SRCDIR)/s390x/flat.lds $$(snippets-obj) $$(snippet-hdr-obj) %.o > @@ -211,7 +213,7 @@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets) > > > arch_clean: asm_offsets_clean > - $(RM) $(TEST_DIR)/*.{o,elf,bin} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) > + $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) > > generated-files = $(asm-offsets) > $(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files) > diff --git a/s390x/flat.lds b/s390x/flat.lds.S > similarity index 100% > rename from s390x/flat.lds > rename to s390x/flat.lds.S > diff --git a/s390x/snippets/asm/flat.lds b/s390x/snippets/asm/flat.lds.S > similarity index 100% > rename from s390x/snippets/asm/flat.lds > rename to s390x/snippets/asm/flat.lds.S > diff --git a/s390x/snippets/c/flat.lds b/s390x/snippets/c/flat.lds.S > similarity index 100% > rename from s390x/snippets/c/flat.lds > rename to s390x/snippets/c/flat.lds.S