forked from Archive/PX4-Autopilot
Fix generating $3_len in BIN_TO_OBJ makefile function
This commit is contained in:
parent
b938f12ccb
commit
c5ae02deda
|
@ -296,6 +296,9 @@ endef
|
||||||
#
|
#
|
||||||
# - compile an empty file to generate a suitable object file
|
# - compile an empty file to generate a suitable object file
|
||||||
# - relink the object and insert the binary file
|
# - relink the object and insert the binary file
|
||||||
|
# - extract the length
|
||||||
|
# - create const unsigned $3_len with the extracted length as its value and compile it to an object file
|
||||||
|
# - link the two generated object files together
|
||||||
# - edit symbol names to suit
|
# - edit symbol names to suit
|
||||||
#
|
#
|
||||||
# NOTE: exercise caution using this with absolute pathnames; it looks
|
# NOTE: exercise caution using this with absolute pathnames; it looks
|
||||||
|
@ -320,11 +323,14 @@ define BIN_TO_OBJ
|
||||||
@$(MKDIR) -p $(dir $2)
|
@$(MKDIR) -p $(dir $2)
|
||||||
$(Q) $(ECHO) > $2.c
|
$(Q) $(ECHO) > $2.c
|
||||||
$(call COMPILE,$2.c,$2.c.o)
|
$(call COMPILE,$2.c,$2.c.o)
|
||||||
$(Q) $(LD) -r -o $2 $2.c.o -b binary $1
|
$(Q) $(LD) -r -o $2.bin.o $2.c.o -b binary $1
|
||||||
|
$(Q) $(ECHO) "const unsigned int $3_len = 0x`$(NM) $2.bin.o | egrep $(call BIN_SYM_PREFIX,$1)_size$$ | cut -d' ' -f1`;" > $2.c
|
||||||
|
$(call COMPILE,$2.c,$2.c.o)
|
||||||
|
$(Q) $(LD) -r -o $2 $2.c.o $2.bin.o
|
||||||
$(Q) $(OBJCOPY) $2 \
|
$(Q) $(OBJCOPY) $2 \
|
||||||
--redefine-sym $(call BIN_SYM_PREFIX,$1)_start=$3 \
|
--redefine-sym $(call BIN_SYM_PREFIX,$1)_start=$3 \
|
||||||
--redefine-sym $(call BIN_SYM_PREFIX,$1)_size=$3_len \
|
--strip-symbol $(call BIN_SYM_PREFIX,$1)_size \
|
||||||
--strip-symbol $(call BIN_SYM_PREFIX,$1)_end \
|
--strip-symbol $(call BIN_SYM_PREFIX,$1)_end \
|
||||||
--rename-section .data=.rodata
|
--rename-section .data=.rodata
|
||||||
$(Q) $(REMOVE) $2.c $2.c.o
|
$(Q) $(REMOVE) $2.c $2.c.o $2.bin.o
|
||||||
endef
|
endef
|
||||||
|
|
Loading…
Reference in New Issue