@@ -49,6 +49,14 @@ define VENDOR_DB =
4949 --change-section-address .db=$(call DB_ADDRESS, $(1 ) , 1) ,)
5050endef
5151
52+ define add-vendor-sbat
53+ $(OBJCOPY ) --add-section ".$(patsubst % .csv,% ,$(1 ) ) =$(1 ) " $(2 )
54+
55+ endef
56+
57+ SBATPATH = $(TOPDIR ) /data/sbat.csv
58+ VENDOR_SBATS := $(sort $(foreach x,$(wildcard $(TOPDIR ) /data/sbat.* .csv data/sbat.* .csv) ,$(notdir $(x ) ) ) )
59+
5260OBJFLAGS =
5361SOLIBS =
5462
@@ -78,11 +86,12 @@ endif
7886
7987all : certmule.efi
8088
89+ certmule.so : sbat_data.o certmule.o
8190certmule.so : SOLIBS=
8291certmule.so : SOFLAGS=
8392certmule.so : BUILDFLAGS+=-DVENDOR_DB
8493certmule.efi : OBJFLAGS = --strip-unneeded $(call VENDOR_DB, $< )
85- certmule.efi : SECTIONS=.text .reloc .db
94+ certmule.efi : SECTIONS=.text .reloc .db .sbat
8695certmule.efi : VENDOR_DB_FILE?=db.esl
8796
8897% .efi : % .so
@@ -94,6 +103,14 @@ endif
94103 $(OBJFLAGS) \
95104 $(FORMAT) $^ $@
96105
106+ sbat_data.o : | $(SBATPATH ) $(VENDOR_SBATS )
107+ sbat_data.o : /dev/null
108+ $(CC ) $(BUILDFLAGS ) -x c -c -o $@ $<
109+ $(OBJCOPY ) --add-section .sbat=$(SBATPATH ) \
110+ --set-section-flags .sbat=contents,alloc,load,readonly,data \
111+ $@
112+ $(foreach vs,$(VENDOR_SBATS ) ,$(call add-vendor-sbat,$(vs ) ,$@ ) )
113+
97114% .so : % .o
98115 $(CC ) $(CCLDFLAGS ) $(SOFLAGS ) -o $@ $^ $(SOLIBS ) \
99116 $(shell $(CC ) -print-libgcc-file-name) \
0 commit comments