diff options
30 files changed, 40 insertions, 35 deletions
diff --git a/Makefile.main b/Makefile.main index 46ad3b0..9683638 100644 --- a/Makefile.main +++ b/Makefile.main @@ -126,7 +126,7 @@ LDFLAGS += -Wl,-pie LDFLAGS += -Wl,-Ttext-segment,$(LD_TEXT) -Wl,-N -Wl,--build-id=none LDFLAGS += -Wl,--no-multi-toc LDFLAGS += -mcpu=power7 -mbig-endian -Wl,--oformat,elf64-powerpc - +LDFLAGS_FINAL = $(LDFLAGS) -Wl,--whole-archive LDRFLAGS=-melf64ppc # Debug stuff #LDFLAGS += -Wl,-v -Wl,-Map,foomap @@ -213,8 +213,8 @@ OBJS += $(LIBC) $(CCAN) $(DEVSRC_OBJ) $(LIBPORE) OBJS_NO_VER = $(OBJS) ALL_OBJS = $(OBJS) version.o -ALL_OBJS_1 = $(ALL_OBJS) asm/dummy_map.o -ALL_OBJS_2 = $(ALL_OBJS) asm/real_map.o +ALL_OBJS_1 = $(TARGET).tmp.a asm/dummy_map.o +ALL_OBJS_2 = $(TARGET).tmp.a asm/real_map.o $(TARGET).lid.xz: $(TARGET).lid $(call Q,XZ, cat $^ | xz -9 -C crc32 > $@, $@) @@ -228,13 +228,17 @@ $(TARGET).lid.stb: $(TARGET).lid libstb/create-container $(TARGET).lid.xz.stb: $(TARGET).lid.xz libstb/create-container $(call Q,STB-DEVELOPMENT-SIGNED-CONTAINER,$(SRC)/libstb/sign-with-local-keys.sh $< $@ $(SRC)/libstb/keys/ PAYLOAD,$@) +$(TARGET).tmp.a: $(ALL_OBJS) + @rm -f $(TARGET).tmp.a + $(call Q,AR, $(AR) rcsTPD $@ $(ALL_OBJS), $@) + $(TARGET).tmp.elf: $(ALL_OBJS_1) $(TARGET).lds $(KERNEL) - $(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_1) -o $@, $@) + $(call Q,LD, $(CC) $(LDFLAGS_FINAL) -o $@ -T $(TARGET).lds $(ALL_OBJS_1), $@) asm/real_map.o : $(TARGET).tmp.map $(TARGET).elf: $(ALL_OBJS_2) $(TARGET).lds $(KERNEL) - $(call Q,LD, $(CC) $(LDFLAGS) -T $(TARGET).lds $(ALL_OBJS_2) -o $@, $@) + $(call Q,LD, $(CC) $(LDFLAGS_FINAL) -o $@ -T $(TARGET).lds $(ALL_OBJS_2), $@) $(SUBDIRS): $(call Q,MKDIR,mkdir -p $@, $@) diff --git a/Makefile.rules b/Makefile.rules index 80121c3..e5f6dfc 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -67,8 +67,9 @@ endif %.i : %.c $(call Q,CC, $(CC) $(call cook_cflags,$@) -E -c $< -o $@, $@) -%built-in.o : - $(call Q,LD, $(LD) $(LDRFLAGS) -r $^ -o $@, $@) +%built-in.a : + @rm -f $@ + $(call Q,AR, $(AR) rcSTPD $@ $^, $@) %.lds : %.lds.S $(call Q,CC, $(CC) $(CPPFLAGS) -P -E $< -o $@, $@) diff --git a/asm/Makefile.inc b/asm/Makefile.inc index 2828caf..343abc2 100644 --- a/asm/Makefile.inc +++ b/asm/Makefile.inc @@ -2,7 +2,7 @@ SUBDIRS += asm ASM_OBJS = head.o misc.o kernel-wrapper.o cvc_entry.o -ASM=asm/built-in.o +ASM=asm/built-in.a # Add extra dependency to the kernel wrapper kernel_wrapper.o : $(KERNEL) diff --git a/ccan/Makefile.inc b/ccan/Makefile.inc index 1a89b2e..36e7577 100644 --- a/ccan/Makefile.inc +++ b/ccan/Makefile.inc @@ -2,7 +2,7 @@ SUBDIRS += ccan ccan/list ccan/str CCAN_OBJS = list/list.o str/str.o -CCAN=ccan/built-in.o +CCAN=ccan/built-in.a $(CCAN): $(CCAN_OBJS:%=ccan/%) diff --git a/core/Makefile.inc b/core/Makefile.inc index 5c12056..d363505 100644 --- a/core/Makefile.inc +++ b/core/Makefile.inc @@ -15,7 +15,7 @@ ifeq ($(SKIBOOT_GCOV),1) CORE_OBJS += gcov-profiling.o endif -CORE=core/built-in.o +CORE=core/built-in.a CFLAGS_SKIP_core/relocate.o = -pg -fstack-protector-all CFLAGS_SKIP_core/relocate.o += -fstack-protector -fstack-protector-strong diff --git a/hdata/Makefile.inc b/hdata/Makefile.inc index c17b04f..6f47314 100644 --- a/hdata/Makefile.inc +++ b/hdata/Makefile.inc @@ -3,6 +3,6 @@ SUBDIRS += hdata HDATA_OBJS = spira.o paca.o pcia.o hdif.o memory.o fsp.o iohub.o vpd.o slca.o HDATA_OBJS += cpu-common.o vpd-common.o hostservices.o i2c.o tpmrel.o -DEVSRC_OBJ = hdata/built-in.o +DEVSRC_OBJ = hdata/built-in.a $(DEVSRC_OBJ): $(HDATA_OBJS:%=hdata/%) diff --git a/hw/Makefile.inc b/hw/Makefile.inc index 04cacd1..2dc3cc0 100644 --- a/hw/Makefile.inc +++ b/hw/Makefile.inc @@ -8,7 +8,7 @@ HW_OBJS += phb3.o sfc-ctrl.o fake-rtc.o bt.o p8-i2c.o prd.o HW_OBJS += dts.o lpc-rtc.o npu.o npu-hw-procedures.o xive.o phb4.o HW_OBJS += fake-nvram.o lpc-mbox.o npu2.o npu2-hw-procedures.o HW_OBJS += phys-map.o sbe-p9.o capp.o occ-sensor.o vas.o -HW=hw/built-in.o +HW=hw/built-in.a # FIXME hack this for now CFLAGS_hw/phb4.o = -Wno-unused-value -Wno-unused-parameter diff --git a/hw/ast-bmc/Makefile.inc b/hw/ast-bmc/Makefile.inc index a97c0db..29e7a35 100644 --- a/hw/ast-bmc/Makefile.inc +++ b/hw/ast-bmc/Makefile.inc @@ -1,5 +1,5 @@ SUBDIRS += hw/ast-bmc AST_BMC_OBJS = ast-io.o ast-sf-ctrl.o -AST_BMC = hw/ast-bmc/built-in.o +AST_BMC = hw/ast-bmc/built-in.a $(AST_BMC): $(AST_BMC_OBJS:%=hw/ast-bmc/%) diff --git a/hw/ec/Makefile.inc b/hw/ec/Makefile.inc index 09c9c84..f944d4d 100644 --- a/hw/ec/Makefile.inc +++ b/hw/ec/Makefile.inc @@ -3,6 +3,6 @@ SUBDIRS += hw/ec EC_OBJS = gpio.o -EC=hw/ec/built-in.o +EC=hw/ec/built-in.a $(EC): $(EC_OBJS:%=hw/ec/%) diff --git a/hw/fsp/Makefile.inc b/hw/fsp/Makefile.inc index 7169095..7a477db 100644 --- a/hw/fsp/Makefile.inc +++ b/hw/fsp/Makefile.inc @@ -6,5 +6,5 @@ FSP_OBJS += fsp-diag.o fsp-leds.o fsp-mem-err.o fsp-op-panel.o FSP_OBJS += fsp-elog-read.o fsp-elog-write.o fsp-epow.o fsp-dpo.o FSP_OBJS += fsp-dump.o fsp-mdst-table.o fsp-chiptod.o fsp-ipmi.o FSP_OBJS += fsp-attn.o -FSP = hw/fsp/built-in.o +FSP = hw/fsp/built-in.a $(FSP): $(FSP_OBJS:%=hw/fsp/%) diff --git a/hw/ipmi/Makefile.inc b/hw/ipmi/Makefile.inc index a54602c..34d6bd3 100644 --- a/hw/ipmi/Makefile.inc +++ b/hw/ipmi/Makefile.inc @@ -3,5 +3,5 @@ SUBDIRS += hw/ipmi IPMI_OBJS = ipmi-rtc.o ipmi-power.o ipmi-fru.o ipmi-sel.o IPMI_OBJS += ipmi-watchdog.o ipmi-sensor.o ipmi-attn.o -IPMI = hw/ipmi/built-in.o +IPMI = hw/ipmi/built-in.a $(IPMI): $(IPMI_OBJS:%=hw/ipmi/%) diff --git a/libc/Makefile.inc b/libc/Makefile.inc index 66ce4ab..13f8034 100644 --- a/libc/Makefile.inc +++ b/libc/Makefile.inc @@ -1,7 +1,7 @@ LIBCDIR = libc SUBDIRS += $(LIBCDIR) -LIBC = $(LIBCDIR)/built-in.o $(LIBCDIR)/time.o +LIBC = $(LIBCDIR)/built-in.a $(LIBCDIR)/time.o include $(SRC)/$(LIBCDIR)/string/Makefile.inc include $(SRC)/$(LIBCDIR)/ctype/Makefile.inc diff --git a/libc/ctype/Makefile.inc b/libc/ctype/Makefile.inc index da78c98..c183a54 100644 --- a/libc/ctype/Makefile.inc +++ b/libc/ctype/Makefile.inc @@ -14,6 +14,6 @@ SUBDIRS += $(LIBCDIR)/ctype CTYPE_OBJS = isdigit.o isprint.o isspace.o isxdigit.o tolower.o toupper.o -CTYPE = $(LIBCDIR)/ctype/built-in.o +CTYPE = $(LIBCDIR)/ctype/built-in.a $(CTYPE): $(CTYPE_OBJS:%=$(LIBCDIR)/ctype/%) diff --git a/libc/stdio/Makefile.inc b/libc/stdio/Makefile.inc index d2aee0f..a5436d7 100644 --- a/libc/stdio/Makefile.inc +++ b/libc/stdio/Makefile.inc @@ -17,5 +17,5 @@ STDIO_OBJS = vfprintf.o vsnprintf.o fprintf.o \ setvbuf.o fputc.o puts.o fputs.o putchar.o \ stdchnls.o fileno.o snprintf.o -STDIO = $(LIBCDIR)/stdio/built-in.o +STDIO = $(LIBCDIR)/stdio/built-in.a $(STDIO): $(STDIO_OBJS:%=$(LIBCDIR)/stdio/%) diff --git a/libc/stdlib/Makefile.inc b/libc/stdlib/Makefile.inc index 22417df..8a78d17 100644 --- a/libc/stdlib/Makefile.inc +++ b/libc/stdlib/Makefile.inc @@ -15,6 +15,6 @@ SUBDIRS += $(LIBCDIR)/stdlib STDLIB_OBJS = error.o atoi.o atol.o strtol.o strtoul.o \ rand.o labs.o -STDLIB = $(LIBCDIR)/stdlib/built-in.o +STDLIB = $(LIBCDIR)/stdlib/built-in.a $(STDLIB): $(STDLIB_OBJS:%=$(LIBCDIR)/stdlib/%) diff --git a/libc/string/Makefile.inc b/libc/string/Makefile.inc index fb2f037..122f5da 100644 --- a/libc/string/Makefile.inc +++ b/libc/string/Makefile.inc @@ -16,6 +16,6 @@ STRING_OBJS = strcat.o strchr.o strcmp.o strcpy.o strlen.o \ strncmp.o strncpy.o strstr.o memset.o memcpy.o memcpy_from_ci.o \ memmove.o memchr.o memcmp.o strcasecmp.o strncasecmp.o \ strtok.o strdup.o -STRING = $(LIBCDIR)/string/built-in.o +STRING = $(LIBCDIR)/string/built-in.a $(STRING): $(STRING_OBJS:%=$(LIBCDIR)/string/%) diff --git a/libfdt/Makefile.inc b/libfdt/Makefile.inc index e477d7c..63c9d38 100644 --- a/libfdt/Makefile.inc +++ b/libfdt/Makefile.inc @@ -12,7 +12,7 @@ LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o) CFLAGS_SKIP_libfdt/fdt_sw.o = -Wstack-usage=4096 SUBDIRS += libfdt -LIBFDT = libfdt/built-in.o +LIBFDT = libfdt/built-in.a $(LIBFDT): $(LIBFDT_OBJS:%=libfdt/%) diff --git a/libflash/Makefile.inc b/libflash/Makefile.inc index ea64eb4..2474abf 100644 --- a/libflash/Makefile.inc +++ b/libflash/Makefile.inc @@ -2,6 +2,6 @@ LIBFLASH_SRCS = libflash.c libffs.c ecc.c blocklevel.c mbox-flash.c LIBFLASH_OBJS = $(LIBFLASH_SRCS:%.c=%.o) SUBDIRS += libflash -LIBFLASH = libflash/built-in.o +LIBFLASH = libflash/built-in.a $(LIBFLASH): $(LIBFLASH_OBJS:%=libflash/%) diff --git a/libpore/Makefile.inc b/libpore/Makefile.inc index cc89127..1060a04 100644 --- a/libpore/Makefile.inc +++ b/libpore/Makefile.inc @@ -3,7 +3,7 @@ LIBPORE_SRCS += p8_pore_table_static_data.c sbe_xip_image.c pore_inline_assemble LIBPORE_OBJS_1 = $(LIBPORE_SRCS:%.c=%.o) LIBPORE_OBJS = $(LIBPORE_OBJS_1:%.C=%.o) SUBDIRS += libpore -LIBPORE = libpore/built-in.o +LIBPORE = libpore/built-in.a CFLAGS_SKIP_libpore/pore_inline_assembler.o=-Wsuggest-attribute=const diff --git a/libstb/Makefile.inc b/libstb/Makefile.inc index 3ea530a..6d54c5c 100644 --- a/libstb/Makefile.inc +++ b/libstb/Makefile.inc @@ -6,7 +6,7 @@ SUBDIRS += $(LIBSTB_DIR) LIBSTB_SRCS = container.c tpm_chip.c cvc.c secureboot.c trustedboot.c LIBSTB_OBJS = $(LIBSTB_SRCS:%.c=%.o) -LIBSTB = $(LIBSTB_DIR)/built-in.o +LIBSTB = $(LIBSTB_DIR)/built-in.a include $(SRC)/$(LIBSTB_DIR)/mbedtls/Makefile.inc include $(SRC)/$(LIBSTB_DIR)/drivers/Makefile.inc diff --git a/libstb/drivers/Makefile.inc b/libstb/drivers/Makefile.inc index 3b8ed0f..80356eb 100644 --- a/libstb/drivers/Makefile.inc +++ b/libstb/drivers/Makefile.inc @@ -6,6 +6,6 @@ SUBDIRS += $(DRIVERS_DIR) DRIVERS_SRCS = tpm_i2c_interface.c tpm_i2c_nuvoton.c DRIVERS_OBJS = $(DRIVERS_SRCS:%.c=%.o) -DRIVERS = $(DRIVERS_DIR)/built-in.o +DRIVERS = $(DRIVERS_DIR)/built-in.a $(DRIVERS): $(DRIVERS_OBJS:%=$(DRIVERS_DIR)/%) diff --git a/libstb/mbedtls/Makefile.inc b/libstb/mbedtls/Makefile.inc index 07aa26a..deacd26 100644 --- a/libstb/mbedtls/Makefile.inc +++ b/libstb/mbedtls/Makefile.inc @@ -6,6 +6,6 @@ SUBDIRS += $(MBEDTLS_DIR) MBEDTLS_SRCS = sha512.c MBEDTLS_OBJS = $(MBEDTLS_SRCS:%.c=%.o) -MBEDTLS = $(MBEDTLS_DIR)/built-in.o +MBEDTLS = $(MBEDTLS_DIR)/built-in.a $(MBEDTLS): $(MBEDTLS_OBJS:%=$(MBEDTLS_DIR)/%) diff --git a/libstb/tss/Makefile.inc b/libstb/tss/Makefile.inc index 2b5c3b9..ed5154d 100644 --- a/libstb/tss/Makefile.inc +++ b/libstb/tss/Makefile.inc @@ -7,7 +7,7 @@ SUBDIRS += $(TSS_DIR) TSS_SRCS = trustedbootCmds.C trustedTypes.C trustedbootUtils.C \ tpmLogMgr.C TSS_OBJS = $(TSS_SRCS:%.C=%.o) -TSS = $(TSS_DIR)/built-in.o +TSS = $(TSS_DIR)/built-in.a $(TSS): $(TSS_OBJS:%=$(TSS_DIR)/%) diff --git a/libxz/Makefile.inc b/libxz/Makefile.inc index 2987328..4fe7c3e 100644 --- a/libxz/Makefile.inc +++ b/libxz/Makefile.inc @@ -2,6 +2,6 @@ LIBXZ_SRCS = xz_dec_stream.c xz_dec_lzma2.c xz_crc32.c LIBXZ_OBJS = $(LIBXZ_SRCS:%.c=%.o) SUBDIRS += libxz -LIBXZ = libxz/built-in.o +LIBXZ = libxz/built-in.a $(LIBXZ): $(LIBXZ_OBJS:%=libxz/%) diff --git a/platforms/Makefile.inc b/platforms/Makefile.inc index 90cd0f1..3269532 100644 --- a/platforms/Makefile.inc +++ b/platforms/Makefile.inc @@ -1,7 +1,7 @@ PLATDIR = platforms SUBDIRS += $(PLATDIR) -PLATFORMS = $(PLATDIR)/built-in.o +PLATFORMS = $(PLATDIR)/built-in.a include $(SRC)/$(PLATDIR)/ibm-fsp/Makefile.inc include $(SRC)/$(PLATDIR)/rhesus/Makefile.inc diff --git a/platforms/astbmc/Makefile.inc b/platforms/astbmc/Makefile.inc index 49292c1..d996536 100644 --- a/platforms/astbmc/Makefile.inc +++ b/platforms/astbmc/Makefile.inc @@ -6,6 +6,6 @@ ASTBMC_OBJS = pnor.o common.o slots.o \ garrison.o barreleye.o \ witherspoon.o zaius.o romulus.o p9dsu.o -ASTBMC = $(PLATDIR)/astbmc/built-in.o +ASTBMC = $(PLATDIR)/astbmc/built-in.a $(ASTBMC): $(ASTBMC_OBJS:%=$(PLATDIR)/astbmc/%) diff --git a/platforms/ibm-fsp/Makefile.inc b/platforms/ibm-fsp/Makefile.inc index e9daab2..c4b55a3 100644 --- a/platforms/ibm-fsp/Makefile.inc +++ b/platforms/ibm-fsp/Makefile.inc @@ -2,6 +2,6 @@ SUBDIRS += $(PLATDIR)/ibm-fsp IBM_FSP_OBJS = common.o lxvpd.o apollo.o apollo-pci.o \ firenze.o firenze-pci.o zz.o -IBM_FSP = $(PLATDIR)/ibm-fsp/built-in.o +IBM_FSP = $(PLATDIR)/ibm-fsp/built-in.a $(IBM_FSP): $(IBM_FSP_OBJS:%=$(PLATDIR)/ibm-fsp/%) diff --git a/platforms/mambo/Makefile.inc b/platforms/mambo/Makefile.inc index f3023ef..b0e6b0c 100644 --- a/platforms/mambo/Makefile.inc +++ b/platforms/mambo/Makefile.inc @@ -1,6 +1,6 @@ SUBDIRS += $(PLATDIR)/mambo MAMBO_OBJS = mambo.o console.o -MAMBO = $(PLATDIR)/mambo/built-in.o +MAMBO = $(PLATDIR)/mambo/built-in.a $(MAMBO): $(MAMBO_OBJS:%=$(PLATDIR)/mambo/%) diff --git a/platforms/qemu/Makefile.inc b/platforms/qemu/Makefile.inc index 11a44db..d4f988e 100644 --- a/platforms/qemu/Makefile.inc +++ b/platforms/qemu/Makefile.inc @@ -1,6 +1,6 @@ SUBDIRS += $(PLATDIR)/qemu QEMU_OBJS = qemu.o -QEMU = $(PLATDIR)/qemu/built-in.o +QEMU = $(PLATDIR)/qemu/built-in.a $(QEMU): $(QEMU_OBJS:%=$(PLATDIR)/qemu/%) diff --git a/platforms/rhesus/Makefile.inc b/platforms/rhesus/Makefile.inc index 5899ca2..3a3fd87 100644 --- a/platforms/rhesus/Makefile.inc +++ b/platforms/rhesus/Makefile.inc @@ -1,6 +1,6 @@ SUBDIRS += $(PLATDIR)/rhesus RHESUS_OBJS = rhesus.o -RHESUS = $(PLATDIR)/rhesus/built-in.o +RHESUS = $(PLATDIR)/rhesus/built-in.a $(RHESUS): $(RHESUS_OBJS:%=$(PLATDIR)/rhesus/%) |