endif
 
 # Always append ALL so that arch config.mk's can add custom ones
-ALL-y += u-boot.srec u-boot.bin System.map
+ALL-y += u-boot.srec u-boot.bin System.map binary_size_check
 
 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
 ifeq ($(CONFIG_SPL_FSL_PBL),y)
 
 OBJCOPYFLAGS_u-boot.bin := -O binary
 
+binary_size_check: u-boot.bin System.map FORCE
+       @file_size=`stat -c %s u-boot.bin` ; \
+       map_size=$(shell cat System.map | \
+               awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print strtonum("0x" end) - strtonum("0x" start)}'); \
+       if [ "" != "$$map_size" ]; then \
+               if test $$map_size -ne $$file_size; then \
+                       echo "System.map shows a binary size of $$map_size" >&2 ; \
+                       echo "  but u-boot.bin shows $$file_size" >&2 ; \
+                       exit 1; \
+               fi \
+       fi
+
 u-boot.bin: u-boot FORCE
        $(call if_changed,objcopy)
        $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))