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
7
Makefile
7
Makefile
@ -743,6 +743,13 @@ tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
|
||||
$(MAKE) -C $@ all
|
||||
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):
|
||||
@mkdir -p $(dir $(VERSION_FILE))
|
||||
@( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \
|
||||
|
@ -109,3 +109,8 @@ ifeq ($(GAS_BUG_12532),y)
|
||||
PLATFORM_RELFLAGS += -fno-optimize-sibling-calls
|
||||
endif
|
||||
endif
|
||||
|
||||
# check that only R_ARM_RELATIVE relocations are generated
|
||||
ifneq ($(CONFIG_SPL_BUILD),y)
|
||||
ALL-y += checkarmreloc
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user