浏览代码

binman: Correct symbol calculation with non-zero image base

At present binman adds the image base address to the symbol value before
it writes it to the binary. This is not correct since the symbol value
itself (e.g. image position) has no relationship to the image base.

Fix this and update the tests to cover this case.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Simon Glass 4 年之前
父节点
当前提交
15c981cc8a
共有 2 个文件被更改,包括 2 次插入4 次删除
  1. 1 3
      tools/binman/elf.py
  2. 1 1
      tools/binman/test/u_boot_binman_syms.lds

+ 1 - 3
tools/binman/elf.py

@@ -135,9 +135,7 @@ def LookupAndWriteSymbols(elf_fname, entry, section):
 
             # Look up the symbol in our entry tables.
             value = section.LookupSymbol(name, sym.weak, msg)
-            if value is not None:
-                value += base.address
-            else:
+            if value is None:
                 value = -1
                 pack_string = pack_string.lower()
             value_bytes = struct.pack(pack_string, value)

+ 1 - 1
tools/binman/test/u_boot_binman_syms.lds

@@ -9,7 +9,7 @@ ENTRY(_start)
 
 SECTIONS
 {
-	. = 0x00000000;
+	. = 0x00000010;
 	_start = .;
 
 	. = ALIGN(4);