mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-19 05:04:35 +00:00
arm: ensure u-boot only uses relative relocations
Add a Makefile target ('checkarmreloc') which fails if the ELF binary contains relocation records of types other than R_ARM_RELATIVE. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net> Tested-by: Lubomir Popov <lpopov@mm-sol.com> Tested-by: Jeroen Hofstee <jeroen@myspectrum.nl> Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
This commit is contained in:
parent
7737c99460
commit
c37980c31a
2 changed files with 12 additions and 0 deletions
7
Makefile
7
Makefile
|
@ -743,6 +743,13 @@ tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
|
||||||
$(MAKE) -C $@ all
|
$(MAKE) -C $@ all
|
||||||
endif # config.mk
|
endif # config.mk
|
||||||
|
|
||||||
|
# ARM relocations should all be R_ARM_RELATIVE.
|
||||||
|
checkarmreloc: $(obj)u-boot
|
||||||
|
@if test "R_ARM_RELATIVE" != \
|
||||||
|
"`readelf -r $< | cut -d ' ' -f 4 | grep R_ARM | sort -u`"; \
|
||||||
|
then echo "$< contains relocations other than \
|
||||||
|
R_ARM_RELATIVE"; false; fi
|
||||||
|
|
||||||
$(VERSION_FILE):
|
$(VERSION_FILE):
|
||||||
@mkdir -p $(dir $(VERSION_FILE))
|
@mkdir -p $(dir $(VERSION_FILE))
|
||||||
@( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \
|
@( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \
|
||||||
|
|
|
@ -109,3 +109,8 @@ ifeq ($(GAS_BUG_12532),y)
|
||||||
PLATFORM_RELFLAGS += -fno-optimize-sibling-calls
|
PLATFORM_RELFLAGS += -fno-optimize-sibling-calls
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# check that only R_ARM_RELATIVE relocations are generated
|
||||||
|
ifneq ($(CONFIG_SPL_BUILD),y)
|
||||||
|
ALL-y += checkarmreloc
|
||||||
|
endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue