diff options
Diffstat (limited to 'src/build/mkrules')
-rw-r--r-- | src/build/mkrules/cc.rules.mk | 71 | ||||
-rw-r--r-- | src/build/mkrules/cflags.env.mk | 4 | ||||
-rwxr-xr-x | src/build/mkrules/dist.targets.mk | 6 | ||||
-rw-r--r-- | src/build/mkrules/gcov.env.mk | 50 | ||||
-rwxr-xr-x | src/build/mkrules/hbfw/img/makefile | 58 | ||||
-rw-r--r-- | src/build/mkrules/images.rules.mk | 39 |
6 files changed, 184 insertions, 44 deletions
diff --git a/src/build/mkrules/cc.rules.mk b/src/build/mkrules/cc.rules.mk index c89995f82..409166e29 100644 --- a/src/build/mkrules/cc.rules.mk +++ b/src/build/mkrules/cc.rules.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2013,2017 +# Contributors Listed Below - COPYRIGHT 2013,2019 # [+] International Business Machines Corp. # # @@ -31,22 +31,71 @@ $(OBJDIR)/%.list : $(OBJDIR)/%.o $(C2) " OBJDUMP $(notdir $<)" $(C1)$(OBJDUMP) -rdlCS $< > $@ +# SOURCE_FILE and INCLUDE_DIRS are variables that are either absolute +# paths to the .C file being compiled and the include directories if +# we're building with gcov, or else they are relative paths +# otherwise. The key thing to remember is that they are lazily +# expanded, so they're relevant to whatever rule they're used in. We +# don't want to always have absolute paths because of build +# performance and because it causes the build output with +# BUILD_VERBOSE to be larger and less readable. +ifdef HOSTBOOT_PROFILE +SOURCE_FILE=$(shell readlink -f $<) +INCLUDE_DIRS=$(shell $(ROOTPATH)/src/build/tools/cflags.sh $(INCFLAGS)) +else +SOURCE_FILE=$< +INCLUDE_DIRS=$(INCFLAGS) +endif + +# TODO RTC 215692 +# The following script is used to run the cppcheck tool when enabled. If one +# cppcheck error is found, the make process will stop here, the error will be +# printed out to the terminal and stored in a file .`basename $<`.cppcheck in +# the directory where the original file is located +ifdef DOCPPCHECK + CXX_PRINT=$(C2) " CPPCHECK $(notdir $<)" + # NoteL Error code 127 means that the command timed-out. We do not fail + # for timeouts + CXX_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(CXX_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ + if [ "$$exit_code" -ne 1 ]; then \ + rm -f .`basename $<`.cppcheck; \ + if [ "$$exit_code" -eq 127 ]; then \ + exit_code=0; \ + fi; \ + fi; exit "$$exit_code" + C_CPPCHECK_COMMAND=$(C1) set -o pipefail && cd `dirname $<` && timeout 2m $(C_CHECK) `basename $<` 2>&1 | tee .`basename $<`.cppcheck; exit_code=$$? ; \ + if [ "$$exit_code" -ne 1 ]; then \ + rm -f .`basename $<`.cppcheck; \ + if [ "$$exit_code" -eq 127 ]; then \ + exit_code=0; \ + fi; \ + fi; exit "$$exit_code" +else + CXX_PRINT= + CXX_CPPCHECK_COMMAND= + C_CPPCHECK_COMMAND= +endif + $(OBJDIR)/%.o : %.C @mkdir -p $(OBJDIR) $(C2) " CXX $(notdir $<)" - $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $< \ - -o $@.trace $(INCFLAGS) -iquote . + $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \ + -o $@.trace $(INCLUDE_DIRS) -iquote . $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) @rm $@.trace + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) # Compiling *.cc files $(OBJDIR)/%.o : %.cc @mkdir -p $(OBJDIR) $(C2) " CXX $(notdir $<)" - $(C1)$(CXX) -c $(CXXFLAGS) $< -o $@.trace $(INCFLAGS) -iquote . + $(C1)$(CXX) -c $(CXXFLAGS) $(SOURCE_FILE) -o $@.trace \ + $(INCLUDE_DIRS) -iquote . $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) @rm $@.trace - + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) $(OBJDIR)/%.o : %.c @mkdir -p $(OBJDIR) @@ -54,12 +103,16 @@ $(OBJDIR)/%.o : %.c # CC_OVERRIDE is set in the makefile of the component ifndef CC_OVERRIDE $(C2) " CC $(notdir $<)" - $(C1)$(CC) -c $(call FLAGS_FILTER, $(CFLAGS), $<) $< \ - -o $@.trace $(INCFLAGS) -iquote . + $(C1)$(CC) -c $(call FLAGS_FILTER, $(CFLAGS), $<) $(SOURCE_FILE) \ + -o $@.trace $(INCLUDE_DIRS) -iquote . + $(CXX_PRINT) + $(C_CPPCHECK_COMMAND) else $(C2) " CXX $(notdir $<)" - $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $< \ - -o $@.trace $(INCFLAGS) -iquote . + $(C1)$(CXX) -c $(call FLAGS_FILTER, $(CXXFLAGS), $<) $(SOURCE_FILE) \ + -o $@.trace $(INCLUDE_DIRS) -iquote . + $(CXX_PRINT) + $(CXX_CPPCHECK_COMMAND) endif $(C1)$(TRACE_HASHER) $@ $(TRACE_FLAGS) @rm $@.trace diff --git a/src/build/mkrules/cflags.env.mk b/src/build/mkrules/cflags.env.mk index 04ff6fedd..cb25561f8 100644 --- a/src/build/mkrules/cflags.env.mk +++ b/src/build/mkrules/cflags.env.mk @@ -28,7 +28,7 @@ # Description: # Configuration of the compiler, linker, etc. flags. -OPT_LEVEL ?= -O3 +OPT_LEVEL ?= -Os ifdef MODULE COMMONFLAGS += -fPIC -Bsymbolic -Bsymbolic-functions @@ -38,6 +38,8 @@ CFLAGS += -DNO_INITIALIZER_LIST CFLAGS += -D__FAPI endif +# Force all files to pull in the CONFIG_ variables +CFLAGS += -include config.h COMMONFLAGS += $(OPT_LEVEL) -nostdlib CFLAGS += $(COMMONFLAGS) -mcpu=power7 -nostdinc -g -mno-vsx -mno-altivec\ diff --git a/src/build/mkrules/dist.targets.mk b/src/build/mkrules/dist.targets.mk index 0d592b838..c925f25b5 100755 --- a/src/build/mkrules/dist.targets.mk +++ b/src/build/mkrules/dist.targets.mk @@ -304,6 +304,9 @@ fsp.tar_CONTENTS = \ src/build/buildpnor/genfakeheader.pl \ src/build/buildpnor/genPnorImages.pl \ src/build/buildpnor/buildUcdFlashImages.pl \ + src/build/buildpnor/buildBpmFlashImages.pl \ + src/build/buildpnor/bpm-utils/insertBpmFwCrc.py \ + src/build/buildpnor/bpm-utils/imageCrc.c \ src/build/buildpnor/PnorUtils.pm \ src/build/buildpnor/imprintHwKeyHash \ src/build/buildpnor/pkgOcmbFw.pl \ @@ -357,7 +360,8 @@ fsp.tar_CONTENTS = \ src/include/usr/hwas/common/hwasCallout.H:hwas/ \ src/include/usr/devicefw/driverif.H:devicefw/ \ src/include/usr/devicefw/userif.H:devicefw/ \ - obj/genfiles/plugins/errludattribute.H:plugins/ \ + obj/genfiles/plugins/errludattributeP_gen.H:plugins/ \ + src/usr/errl/plugins/errludattributeP.H:plugins/ \ obj/genfiles/plugins/errludtarget.H:plugins/ \ $(addsuffix :plugins/,\ $(call ROOTPATH_WILDCARD,obj/genfiles/plugins/hbfwSrcParse*.C)) \ diff --git a/src/build/mkrules/gcov.env.mk b/src/build/mkrules/gcov.env.mk index 8ddcd3ef6..edce52a24 100644 --- a/src/build/mkrules/gcov.env.mk +++ b/src/build/mkrules/gcov.env.mk @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2013,2014 +# Contributors Listed Below - COPYRIGHT 2013,2019 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -26,21 +28,44 @@ # Configuration of the GCOV settings. GCOVDIR = $(ROOTPATH)/obj/gcov +vpath %.C $(ROOTPATH)/src/sys/prof ifdef MODULE -GCOVNAME = $(MODULE).lcov + +# Don't profile HBRT modules to keep size down +ifdef HOSTBOOT_RUNTIME +HOSTBOOT_PROFILE= +endif + +## We don't want certain modules to be profiled (HBB, HBRT). + +# This is replacing spaces with colons so that we can get an exact +# match on the module name in the list of unprofilable modules with +# findstring, which otherwise would find matches on "partial" +# substrings (i.e. we don't want to deprofile module ABC just because +# module ABCD is blacklisted, so we create a blacklist of modules +# separated by colons and search for :ABC:). +null := +MODULE_PROFILE_BLACKLIST:=:$(subst ${null} ${null},:,$(BASE_MODULES_GCOV_BLACKLIST) $(RUNTIME_MODULES_GCOV_BLACKLIST)): + +ifneq (,$(findstring :$(MODULE):,$(MODULE_PROFILE_BLACKLIST))) +HOSTBOOT_PROFILE= +endif + +GCOVNAME := $(MODULE).lcov + ifndef TESTS ifdef HOSTBOOT_PROFILE -vpath %.C $(ROOTPATH)/src/sys/prof OBJS := gcov.o $(OBJS) endif endif else -GCOVNAME = $(notdir $(shell pwd)).lcov +GCOVNAME := $(notdir $(shell pwd)).lcov endif -## Disable coverage on test cases, any directory that sets -## HOSTBOOT_PROFILE_NO_INSTRUMENT or any file that has 'gcov' in the name. +## Disable coverage on test cases or any directory that sets +## HOSTBOOT_PROFILE_NO_INSTRUMENT + ifndef TESTS ifdef HOSTBOOT_PROFILE ifndef HOSTBOOT_PROFILE_NO_INSTRUMENT @@ -59,5 +84,16 @@ endif ## Reduce the optimization level when profiling is enabled to ensure the ## base image fits in 512k still. ifdef HOSTBOOT_PROFILE -OPT_LEVEL = -Os +# We're not doing this right now because it causes linker errors in +# various parts of hostboot with or without gcov (i.e. functions that +# the code relies on being inlined are not; some const statics that +# aren't defined in a compilation unit have linker references, etc.) +# and it also causes the image to be generated incorrectly (symbol +# names are wrong, calls to functions named things like __savegpr_rXX +# are emitted but the functions themselves aren't and so you end up +# jumping into an area of zeroes, ...). We should come back to this +# later and fix, we might be able to profile more of hostboot with the +# space savings that -Os could give. + +#OPT_LEVEL = -Os endif diff --git a/src/build/mkrules/hbfw/img/makefile b/src/build/mkrules/hbfw/img/makefile index 269a52ce5..114cb6384 100755 --- a/src/build/mkrules/hbfw/img/makefile +++ b/src/build/mkrules/hbfw/img/makefile @@ -65,6 +65,7 @@ SBEI_OBJPATH = ${HBFW_OBJPATH:S/hbfw\/img/sbei\/sbfw\/img/g} ENGD_WOFPATH = ${HBFW_OBJPATH:S/hbfw\/img/engd\/wofdata/g} ENGD_MEMDPATH = ${HBFW_OBJPATH:S/hbfw\/img/engd\/memd/g} HBFW_SIMPATH = ${HBFW_OBJPATH:S/img/simics/g} +EDITED_LAYOUT_PATH = ${DUMMY:!pwd!} ################################################# # Copy Hostboot binary images to obj dir to be grabbed # during build flash pass and consumption by HWSV. @@ -113,7 +114,6 @@ TESTRO_FINAL_IMG = TESTRO.bin TESTLOAD_FINAL_IMG = TESTLOAD.bin HBEL_FINAL_IMG = HBEL.bin GUARD_FINAL_IMG = GUARD.bin -GLOBAL_FINAL_IMG = GLOBAL.bin DJVPD_FINAL_IMG = DJVPD.bin MVPD_FINAL_IMG = MVPD.bin CVPD_FINAL_IMG = CVPD.bin @@ -126,7 +126,7 @@ EECACHE_FINAL_IMG = EECACHE.bin OCMBFW_FINAL_IMG = OCMBFW.bin FINAL_OUTPUT_IMAGES = ${HBBL_FINAL_IMG} ${HBB_FINAL_IMG} ${HBI_FINAL_IMG} \ ${HBRT_FINAL_IMG} ${TEST_FINAL_IMG} ${TESTRO_FINAL_IMG} \ - ${HBEL_FINAL_IMG} ${GUARD_FINAL_IMG} ${GLOBAL_FINAL_IMG} \ + ${HBEL_FINAL_IMG} ${GUARD_FINAL_IMG} \ ${DJVPD_FINAL_IMG} ${MVPD_FINAL_IMG} ${CVPD_FINAL_IMG} \ ${PAYLOAD_FINAL_IMG} ${RINGOVD_FINAL_IMG} ${SBKT_FINAL_IMG} \ ${FIRDATA_FINAL_IMG} ${MEMD_FINAL_IMG} ${EECACHE_FINAL_IMG} \ @@ -214,26 +214,28 @@ BUILD_TYPE_PARAMS = --build-type fspbuild .endif # Decide which images to use for each PNOR layout -GEN_COMMON_BIN_FILES = HBBL=${HBBL_IMG},HBB=${HBB_IMG},HBI=${HBI_IMG},HBRT=${HBRT_IMG},HBEL=EMPTY,GUARD=EMPTY,GLOBAL=EMPTY,MVPD=EMPTY,RINGOVD=EMPTY,SBKT=EMPTY +GEN_COMMON_BIN_FILES = HBBL=${HBBL_IMG},HBB=${HBB_IMG},HBI=${HBI_IMG},HBRT=${HBRT_IMG},HBEL=EMPTY,GUARD=EMPTY,RINGOVD=EMPTY,SBKT=EMPTY GEN_STANDALONE_BIN_FILES = ${GEN_COMMON_BIN_FILES},TEST=EMPTY,TESTRO=EMPTY,TESTLOAD=EMPTY,PAYLOAD=EMPTY,FIRDATA=EMPTY .if (${FAKEPNOR} == "") # Parameters passed into GEN_PNOR_IMAGE_SCRIPT. .if (${PNOR_LAYOUT_SELECTED} == "STANDALONE") - GEN_DEFAULT_BIN_FILES = ${GEN_STANDALONE_BIN_FILES},MEMD=${${ZZ_MEMD_IMG}:P},CVPD=EMPTY,DJVPD=EMPTY + GEN_DEFAULT_BIN_FILES = ${GEN_STANDALONE_BIN_FILES},MEMD=${${ZZ_MEMD_IMG}:P},CVPD=EMPTY,DJVPD=EMPTY,MVPD=EMPTY .elif(${PNOR_LAYOUT_SELECTED} == "AXONE") - GEN_DEFAULT_BIN_FILES = ${GEN_STANDALONE_BIN_FILES},EECACHE=EMPTY,MEMD=${${ZZ_MEMD_IMG}:P},OCMBFW=${${OCMBFW_IMG}:P} + GEN_DEFAULT_BIN_FILES = ${GEN_STANDALONE_BIN_FILES},EECACHE=EMPTY,OCMBFW=${${OCMBFW_IMG}:P} .else - GEN_DEFAULT_BIN_FILES = ${GEN_COMMON_BIN_FILES},MEMD=${${ZZ_MEMD_IMG}:P},CVPD=EMPTY,DJVPD=EMPTY + GEN_DEFAULT_BIN_FILES = ${GEN_COMMON_BIN_FILES},MEMD=${${ZZ_MEMD_IMG}:P},CVPD=EMPTY,DJVPD=EMPTY,MVPD=EMPTY .endif DEFAULT_PARAMS = --build-all --emit-eccless ${TARGET_TEST:b--test} ${HB_STANDALONE:b--hb-standalone} \ ${CONFIG_SECUREBOOT:b--secureboot} --systemBinFiles ${GEN_DEFAULT_BIN_FILES} \ --pnorLayout ${PNOR_LAYOUT} ${KEY_TRANSITION_PARAMS} ${CORRUPT_PARAMS} \ - --hwKeyHashFile ${IMPRINT_HW_KEY_HASH} + --hwKeyHashFile ${IMPRINT_HW_KEY_HASH} \ + --editedLayoutLocation ${EDITED_LAYOUT_PATH} .else PNOR_LAYOUT = ${pnorLayoutFake.xml:P} # Parameters passed into GEN_PNOR_IMAGE_SCRIPT. GEN_DEFAULT_BIN_FILES = HBI=${HBI_IMG},HBEL=EMPTY,MVPD=${${VPO_FAKE_MVPD}:P},DJVPD=${${VPO_FAKE_DJVPD}:P},FIRDATA=EMPTY,MEMD=EMPTY - DEFAULT_PARAMS = --systemBinFiles ${GEN_DEFAULT_BIN_FILES} --pnorLayout ${PNOR_LAYOUT} + DEFAULT_PARAMS = --systemBinFiles ${GEN_DEFAULT_BIN_FILES} --pnorLayout ${PNOR_LAYOUT} \ + --editedLayoutLocation ${EDITED_LAYOUT_PATH} .endif # rule to update hostboot image tags for custom CFM image, only enabled @@ -375,7 +377,6 @@ AXONE_HCODE_IMG = ${ENGD_SRCPATH:Fp9a.hw_ref_image.bin} CUMULUS_CENHWIMG_IMG = ${ENGD_SRCPATH:Fcen.hw_ref_image.bin} NIMBUS_CENHWIMG_IMG = cen.hw_ref_image.bin.fake -AXONE_CENHWIMG_IMG = cen.hw_ref_image.bin.fake NIMBUS_OCC_IMG = ${bb}/images/ppc/lab/fs/p9le/rootfs/opt/extucode/81e00430.lid CUMULUS_OCC_IMG = ${bb}/images/ppc/lab/fs/p9le/rootfs/opt/extucode/81e00430.lid AXONE_OCC_IMG = ${bb}/images/ppc/lab/fs/p9le/rootfs/opt/extucode/81e00430.lid @@ -389,6 +390,8 @@ ZEPPELIN_MEMD_IMG = ${ENGD_MEMDPATH:Fzeppelin_memd_output.dat} FLEETWOOD_MEMD_IMG = ${ENGD_MEMDPATH:Ffleetwood_memd_output.dat} ZZ_HBD_IMG = ${HBFW_TARGPATH:FZZ_hb_targeting.bin} ZZ2U_HBD_IMG = ${HBFW_TARGPATH:FZZ-2U_hb_targeting.bin} +ZZGEN4_HBD_IMG = ${HBFW_TARGPATH:FZZ-GEN4_hb_targeting.bin} +ZZ2UGEN4_HBD_IMG = ${HBFW_TARGPATH:FZZ-2U-GEN4_hb_targeting.bin} ZEPPELIN_HBD_IMG = ${HBFW_TARGPATH:FZEPPELIN_hb_targeting.bin} # Create list of images for each node (in node order) # genPnorImages will handle multiple HBD=binfile pairs @@ -409,7 +412,6 @@ CUMULUS_HCODE_FINAL_IMG = CUMULUS.HCODE.bin AXONE_HCODE_FINAL_IMG = AXONE.HCODE.bin CUMULUS_CENHWIMG_FINAL_IMG = CUMULUS.CENHWIMG.bin NIMBUS_CENHWIMG_FINAL_IMG = NIMBUS.CENHWIMG.bin -AXONE_CENHWIMG_FINAL_IMG = AXONE.CENHWIMG.bin NIMBUS_SBE_FINAL_IMG = NIMBUS.SBE.bin CUMULUS_SBE_FINAL_IMG = CUMULUS.SBE.bin AXONE_SBE_FINAL_IMG = AXONE.SBE.bin @@ -428,7 +430,8 @@ ZZ_HBD_FINAL_IMG = ZZ.HBD.bin ZEPPELIN_HBD_FINAL_IMG = ZEPPELIN.HBD.bin FLEETWOOD_HBD_FINAL_IMGS = FLEETWOOD.HBD_NODE_0.bin,FLEETWOOD.HBD_NODE_1.bin,FLEETWOOD.HBD_NODE_2.bin,FLEETWOOD.HBD_NODE_3.bin,FLEETWOOD_MST.HBD_NODE_0.bin,FLEETWOOD_2N.HBD_NODE_0.bin,FLEETWOOD_2N.HBD_NODE_1.bin,FLEETWOOD_2N.HBD_NODE_2.bin,FLEETWOOD_2N.HBD_NODE_3.bin ZZ2U_HBD_FINAL_IMG = ZZ-2U.HBD.bin - +ZZGEN4_HBD_FINAL_IMG = ZZ-GEN4.HBD.bin +ZZ2UGEN4_HBD_FINAL_IMG = ZZ-2U-GEN4.HBD.bin # Decide which PNOR to build @@ -438,18 +441,20 @@ ZZ2U_HBD_FINAL_IMG = ZZ-2U.HBD.bin GEN_NIMBUS_BIN_FILES = NIMBUS:SBE=${${NIMBUS_SBE_IMG}:P},HCODE=${${NIMBUS_HCODE_IMG}:P},OCC=${${NIMBUS_OCC_IMG}:P},HBD=${${NIMBUS_HBD_IMG}:P},CENHWIMG=${NIMBUS_CENHWIMG_IMG} GEN_CUMULUS_BIN_FILES = CUMULUS:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_HBD_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} GEN_CUMULUS_CDIMM_BIN_FILES = CUMULUS_CDIMM:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_CDIMM_HBD_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} - GEN_AXONE_BIN_FILES = AXONE:SBE=${${AXONE_SBE_IMG}:P},HCODE=${${AXONE_HCODE_IMG}:P},OCC=${${AXONE_OCC_IMG}:P},HBD=${${AXONE_HBD_IMG}:P},CENHWIMG=${AXONE_CENHWIMG_IMG} + GEN_AXONE_BIN_FILES = AXONE:SBE=${${AXONE_SBE_IMG}:P},HCODE=${${AXONE_HCODE_IMG}:P},OCC=${${AXONE_OCC_IMG}:P},HBD=${${AXONE_HBD_IMG}:P} .else GEN_NIMBUS_BIN_FILES = NIMBUS:SBE=${${NIMBUS_SBE_IMG}:P},HCODE=${${NIMBUS_HCODE_IMG}:P},OCC=${${NIMBUS_OCC_IMG}:P},HBD=${${NIMBUS_HBD_IMG}:P},CENHWIMG=${NIMBUS_CENHWIMG_IMG} GEN_CUMULUS_BIN_FILES = CUMULUS:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_HBD_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} GEN_CUMULUS_CDIMM_BIN_FILES = CUMULUS_CDIMM:SBE=${${CUMULUS_SBE_IMG}:P},HCODE=${${CUMULUS_HCODE_IMG}:P},OCC=${${CUMULUS_OCC_IMG}:P},HBD=${${CUMULUS_CDIMM_HBD_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} - GEN_AXONE_BIN_FILES = AXONE:SBE=${${AXONE_SBE_IMG}:P},HCODE=${${AXONE_HCODE_IMG}:P},OCC=${${AXONE_OCC_IMG}:P},HBD=${${AXONE_HBD_IMG}:P},CENHWIMG=${AXONE_CENHWIMG_IMG} + GEN_AXONE_BIN_FILES = AXONE:SBE=${${AXONE_SBE_IMG}:P},HCODE=${${AXONE_HCODE_IMG}:P},OCC=${${AXONE_OCC_IMG}:P},HBD=${${AXONE_HBD_IMG}:P} .endif GEN_ZZ_BIN_FILES = ZZ:WOFDATA=${${ZZ_WOFDATA_IMG}:P},MEMD=${${ZZ_MEMD_IMG}:P},HBD=${${ZZ_HBD_IMG}:P} GEN_ZEPPELIN_BIN_FILES = ZEPPELIN:WOFDATA=${${ZEPPELIN_WOFDATA_IMG}:P},MEMD=${${ZEPPELIN_MEMD_IMG}:P},HBD=${${ZEPPELIN_HBD_IMG}:P} GEN_FLEETWOOD_BIN_FILES = FLEETWOOD:WOFDATA=${${FLEETWOOD_WOFDATA_IMG}:P},MEMD=${${FLEETWOOD_MEMD_IMG}:P},${FLEETWOOD_HBD_IMGS} GEN_ZZ2U_BIN_FILES = ZZ-2U:WOFDATA=${${ZZ_WOFDATA_IMG}:P},MEMD=${${ZZ_MEMD_IMG}:P},HBD=${${ZZ2U_HBD_IMG}:P} + GEN_ZZGEN4_BIN_FILES = ZZ-GEN4:WOFDATA=${${ZZ_WOFDATA_IMG}:P},MEMD=${${ZZ_MEMD_IMG}:P},HBD=${${ZZGEN4_HBD_IMG}:P} + GEN_ZZ2UGEN4_BIN_FILES = ZZ-2U-GEN4:WOFDATA=${${ZZ_WOFDATA_IMG}:P},MEMD=${${ZZ_MEMD_IMG}:P},HBD=${${ZZ2UGEN4_HBD_IMG}:P} SYSTEM_SPECIFIC_PARAMS = --install-all --emit-eccless ${TARGET_TEST:b--test} ${CONFIG_SECUREBOOT:b--secureboot} \ --pnorLayout ${PNOR_LAYOUT} ${CORRUPT_PARAMS} ${HB_STANDALONE:b--hb-standalone} \ @@ -461,18 +466,22 @@ ZZ2U_HBD_FINAL_IMG = ZZ-2U.HBD.bin --systemBinFiles ${GEN_ZEPPELIN_BIN_FILES} \ --systemBinFiles ${GEN_FLEETWOOD_BIN_FILES} \ --systemBinFiles ${GEN_ZZ2U_BIN_FILES} \ - --hwKeyHashFile ${IMPRINT_HW_KEY_HASH} + --systemBinFiles ${GEN_ZZGEN4_BIN_FILES} \ + --systemBinFiles ${GEN_ZZ2UGEN4_BIN_FILES} \ + --hwKeyHashFile ${IMPRINT_HW_KEY_HASH} \ + --editedLayoutLocation ${EDITED_LAYOUT_PATH} .else # Parameters passed into GEN_PNOR_IMAGE_SCRIPT. GEN_NIMBUS_BIN_FILES = NIMBUS:HCODE=${${NIMBUS_HCODE_IMG}:P},HBD=${${NIMBUS_VPO_HBD_IMG}:P},CENHWIMG=EMPTY GEN_CUMULUS_BIN_FILES = CUMULUS:HCODE=${${CUMULUS_HCODE_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} GEN_CUMULUS_CDIMM_BIN_FILES = CUMULUS:HCODE=${${CUMULUS_HCODE_IMG}:P},CENHWIMG=${${CUMULUS_CENHWIMG_IMG}:P} - GEN_AXONE_BIN_FILES = AXONE:HCODE=${${AXONE_HCODE_IMG}:P},HBD=${${AXONE_VPO_HBD_IMG}:P},CENHWIMG=EMPTY + GEN_AXONE_BIN_FILES = AXONE:HCODE=${${AXONE_HCODE_IMG}:P},HBD=${${AXONE_VPO_HBD_IMG}:P} SYSTEM_SPECIFIC_PARAMS = --pnorLayout ${PNOR_LAYOUT} \ --systemBinFiles ${GEN_NIMBUS_BIN_FILES} \ --systemBinFiles ${GEN_CUMULUS_BIN_FILES} \ --systemBinFiles ${GEN_AXONE_BIN_FILES} \ - --systemBinFiles ${GEN_CUMULUS_CDIMM_BIN_FILES} + --systemBinFiles ${GEN_CUMULUS_CDIMM_BIN_FILES} \ + --editedLayoutLocation ${EDITED_LAYOUT_PATH} .endif gen_system_specific_images_bypass_cache : dump-secureboot-config @@ -493,14 +502,14 @@ gen_system_specific_images: build_sbe_partitions .PMAKE .if (${PNOR_LAYOUT_SELECTED} == "FSP") - HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},GLOBAL=${GLOBAL_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG} + HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG} .else - HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},TEST=${TEST_FINAL_IMG},TESTRO=${TESTRO_FINAL_IMG},TESTLOAD=${TESTLOAD_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},GLOBAL=${GLOBAL_FINAL_IMG},PAYLOAD=${PAYLOAD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG} + HOSTBOOT_DEFAULT_SECTIONS = HBBL=${HBBL_FINAL_IMG},HBB=${HBB_FINAL_IMG},HBI=${HBI_FINAL_IMG},HBRT=${HBRT_FINAL_IMG},TEST=${TEST_FINAL_IMG},TESTRO=${TESTRO_FINAL_IMG},TESTLOAD=${TESTLOAD_FINAL_IMG},HBEL=${HBEL_FINAL_IMG},GUARD=${GUARD_FINAL_IMG},PAYLOAD=${PAYLOAD_FINAL_IMG},RINGOVD=${RINGOVD_FINAL_IMG},SBKT=${SBKT_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG} .endif -NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},SBE=${NIMBUS_SBE_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},OCC=${NIMBUS_OCC_FINAL_IMG},WOFDATA=${ZZ_WOFDATA_FINAL_IMG},CENHWIMG=${NIMBUS_CENHWIMG_FINAL_IMG},MEMD=${ZZ_MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG} -CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG},MEMD=${ZEPPELIN_MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG} -CUMULUS_CDIMM_SECT = HBD=${CUMULUS_CDIMM_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG},MEMD=${MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG} -AXONE_SECT = HBD=${AXONE_HBD_FINAL_IMG},SBE=${AXONE_SBE_FINAL_IMG},HCODE=${AXONE_HCODE_FINAL_IMG},OCC=${AXONE_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},CENHWIMG=${AXONE_CENHWIMG_FINAL_IMG},EECACHE=${EECACHE_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG},MEMD=${MEMD_FINAL_IMG},OCMBFW=${OCMBFW_FINAL_IMG} +NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},SBE=${NIMBUS_SBE_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},OCC=${NIMBUS_OCC_FINAL_IMG},WOFDATA=${ZZ_WOFDATA_FINAL_IMG},CENHWIMG=${NIMBUS_CENHWIMG_FINAL_IMG},MEMD=${ZZ_MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG} +CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG},MEMD=${ZEPPELIN_MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG} +CUMULUS_CDIMM_SECT = HBD=${CUMULUS_CDIMM_HBD_FINAL_IMG},SBE=${CUMULUS_SBE_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},OCC=${CUMULUS_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG},MEMD=${MEMD_FINAL_IMG},CVPD=${CVPD_FINAL_IMG},DJVPD=${DJVPD_FINAL_IMG},MVPD=${MVPD_FINAL_IMG} +AXONE_SECT = HBD=${AXONE_HBD_FINAL_IMG},SBE=${AXONE_SBE_FINAL_IMG},HCODE=${AXONE_HCODE_FINAL_IMG},OCC=${AXONE_OCC_FINAL_IMG},WOFDATA=${ZEPPELIN_WOFDATA_FINAL_IMG},EECACHE=${EECACHE_FINAL_IMG},FIRDATA=${FIRDATA_FINAL_IMG},OCMBFW=${OCMBFW_FINAL_IMG} .if (${PNOR_LAYOUT_SELECTED} == "AXONE") @@ -525,7 +534,7 @@ PNOR_IMG_INFO = \ NIMBUS_SECT = HBD=${NIMBUS_HBD_FINAL_IMG},HCODE=${NIMBUS_HCODE_FINAL_IMG},CENHWIMG=${NIMBUS_CENHWIMG_FINAL_IMG} CUMULUS_SECT = HBD=${CUMULUS_HBD_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG} CUMULUS_CDIMM_SECT = HBD=${CUMULUS_CDIMM_HBD_FINAL_IMG},HCODE=${CUMULUS_HCODE_FINAL_IMG},CENHWIMG=${CUMULUS_CENHWIMG_FINAL_IMG} - AXONE_SECT = HBD=${AXONE_HBD_FINAL_IMG},HCODE=${AXONE_HCODE_FINAL_IMG},CENHWIMG=${AXONE_CENHWIMG_FINAL_IMG} + AXONE_SECT = HBD=${AXONE_HBD_FINAL_IMG},HCODE=${AXONE_HCODE_FINAL_IMG} PNOR_IMG_INFO = \ ${FAKEPNOR}:${PNOR_LAYOUT}:${NIMBUS_SECT}:${CUMULUS_SECT}:${CUMULUS_CDIMM_SECT},${HOSTBOOT_DEFAULT_SECTIONS},${AXONE_SECT} \ ${FIPS_PNOR_INFO} @@ -562,7 +571,8 @@ ${IMAGE_TARGET}: ${IMAGE_LAYOUT} ${IMAGE_BINS} ${PNOR_BUILD_SCRIPT} ${FAKEPNOR} == ${IMAGE_TARGET}) ${PNOR_BUILD_SCRIPT} --pnorOutBin ${IMAGE_TARGET} \ ${TARGET_TEST:b--test} --pnorLayout ${IMAGE_LAYOUT} \ - ${IMAGE_BIN_OPTION} --fpartCmd "fpart" --fcpCmd "fcp" + ${IMAGE_BIN_OPTION} --fpartCmd "fpart" --fcpCmd "fcp" \ + --editedLayoutLocation ${EDITED_LAYOUT_PATH} .endif .endif diff --git a/src/build/mkrules/images.rules.mk b/src/build/mkrules/images.rules.mk index 2a611b030..c6b863d89 100644 --- a/src/build/mkrules/images.rules.mk +++ b/src/build/mkrules/images.rules.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2013,2017 +# Contributors Listed Below - COPYRIGHT 2013,2019 # [+] International Business Machines Corp. # # @@ -27,14 +27,49 @@ # Description: # Rules for linking the Hostboot binary images using the custom linker. +# Folder to store *.objdump files in +OBJDUMP_FOLDER := $(IMGDIR)/objdump + +# Clean up after ourselves +clean: clean-objdump + +.PHONY: clean-objdump +clean-objdump: + $(C2) " MAKE objdump CLEAN" + $(C1)rm -rf $(OBJDUMP_FOLDER) + ifdef IMGS _IMGS = $(addprefix $(IMGDIR)/, $(IMGS)) IMAGES += $(addsuffix .bin, $(_IMGS)) $(addsuffix .elf, $(_IMGS)) +ifdef BUILD_FAST +OBJDUMP_MODULES := $(sort $(foreach img, $(IMGS), $($(img)_MODULES) $($(img)_EXTENDED_MODULES))) + +OBJDUMP_BIN_TARGETS := $(addsuffix .elf.objdump, $(IMGS)) +OBJDUMP_LIB_TARGETS := $(addsuffix .so.objdump, $(OBJDUMP_MODULES)) + +OBJDUMP_TARGETS := $(addprefix $(OBJDUMP_FOLDER)/lib, $(OBJDUMP_LIB_TARGETS)) +OBJDUMP_TARGETS += $(addprefix $(OBJDUMP_FOLDER)/, $(OBJDUMP_BIN_TARGETS)) + +# Tell make not to delete our objdumps +.SECONDARY: $(OBJDUMP_TARGETS) +endif + IMAGE_PASS_POST += $(addsuffix .list.bz2, $(_IMGS)) $(addsuffix .syms, $(_IMGS)) CLEAN_TARGETS += $(addsuffix .list.bz2, $(_IMGS)) $(addsuffix .syms, $(_IMGS)) CLEAN_TARGETS += $(addsuffix .lnkout.bz2, $(addprefix $(IMGDIR)/., $(IMGS))) +$(OBJDUMP_FOLDER): + mkdir -p $@ + +$(OBJDUMP_FOLDER)/%.so.objdump: $(IMGDIR)/%.so $(OBJDUMP_FOLDER) + $(C2) " OBJDUMP $(notdir $*)" + $(C1)$(OBJDUMP) -dCS -j .text -j .data -j .rodata $< | bzip2 >$@ + +$(OBJDUMP_FOLDER)/%.elf.objdump: $(IMGDIR)/%.elf $(OBJDUMP_FOLDER) + $(C2) " OBJDUMP $(notdir $*)" + $(C1)$(OBJDUMP) -dCS -j .text -j .data -j .rodata $< | bzip2 >$@ + define ELF_template $$(IMGDIR)/$(1).elf: $$(addprefix $$(OBJDIR)/, $$($(1)_OBJECTS)) \ $$(ROOTPATH)/src/$$($(1)_LDFILE) @@ -63,7 +98,7 @@ $(IMGDIR)/%.bin: $(IMGDIR)/%.elf \ | bzip2 -zc > $(IMGDIR)/.$*.lnkout.bz2' $(C1)$(ROOTPATH)/src/build/tools/addimgid $@ $< -$(IMGDIR)/%.list.bz2 $(IMGDIR)/%.syms: $(IMGDIR)/%.bin +$(IMGDIR)/%.list.bz2 $(IMGDIR)/%.syms: $(IMGDIR)/%.bin $(OBJDUMP_TARGETS) $(C2) " GENLIST $(notdir $*)" $(C1)(cd $(ROOTPATH)&& \ src/build/linker/gensyms $*.bin \ |