mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 09:12:08 +02:00
binman: Use the Makefile to build ELF test files
At present the ELF test files are checked into the U-Boot tree. This is covenient since the files never change and can be used on non-x86 platforms. However it is not good practice to check in binaries and in this case it does not seem essential. Update the binman test-file Makefile to support having source in a different directory. Adjust binman to run it to build bss_data, as a start. We can add other files as needed. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -50,6 +50,29 @@ class FakeSection:
|
|||||||
return self.sym_value
|
return self.sym_value
|
||||||
|
|
||||||
|
|
||||||
|
def BuildElfTestFiles(target_dir):
|
||||||
|
"""Build ELF files used for testing in binman
|
||||||
|
|
||||||
|
This compiles and links the test files into the specified directory. It the
|
||||||
|
Makefile and source files in the binman test/ directory.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
target_dir: Directory to put the files into
|
||||||
|
"""
|
||||||
|
if not os.path.exists(target_dir):
|
||||||
|
os.mkdir(target_dir)
|
||||||
|
testdir = os.path.join(binman_dir, 'test')
|
||||||
|
|
||||||
|
# If binman is involved from the main U-Boot Makefile the -r and -R
|
||||||
|
# flags are set in MAKEFLAGS. This prevents this Makefile from working
|
||||||
|
# correctly. So drop any make flags here.
|
||||||
|
if 'MAKEFLAGS' in os.environ:
|
||||||
|
del os.environ['MAKEFLAGS']
|
||||||
|
tools.Run('make', '-C', target_dir, '-f',
|
||||||
|
os.path.join(testdir, 'Makefile'), 'SRC=%s/' % testdir,
|
||||||
|
'bss_data', 'u_boot_ucode_ptr')
|
||||||
|
|
||||||
|
|
||||||
class TestElf(unittest.TestCase):
|
class TestElf(unittest.TestCase):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(self):
|
def setUpClass(self):
|
||||||
|
@@ -23,6 +23,7 @@ import cmdline
|
|||||||
import command
|
import command
|
||||||
import control
|
import control
|
||||||
import elf
|
import elf
|
||||||
|
import elf_test
|
||||||
import fdt
|
import fdt
|
||||||
from etype import fdtmap
|
from etype import fdtmap
|
||||||
from etype import image_header
|
from etype import image_header
|
||||||
@@ -147,6 +148,9 @@ class TestFunctional(unittest.TestCase):
|
|||||||
TestFunctional._MakeInputFile('bmpblk.bin', BMPBLK_DATA)
|
TestFunctional._MakeInputFile('bmpblk.bin', BMPBLK_DATA)
|
||||||
TestFunctional._MakeInputFile('refcode.bin', REFCODE_DATA)
|
TestFunctional._MakeInputFile('refcode.bin', REFCODE_DATA)
|
||||||
|
|
||||||
|
cls._elf_testdir = os.path.join(cls._indir, 'elftest')
|
||||||
|
elf_test.BuildElfTestFiles(cls._elf_testdir)
|
||||||
|
|
||||||
# ELF file with a '_dt_ucode_base_size' symbol
|
# ELF file with a '_dt_ucode_base_size' symbol
|
||||||
with open(cls.TestFile('u_boot_ucode_ptr'), 'rb') as fd:
|
with open(cls.TestFile('u_boot_ucode_ptr'), 'rb') as fd:
|
||||||
TestFunctional._MakeInputFile('u-boot', fd.read())
|
TestFunctional._MakeInputFile('u-boot', fd.read())
|
||||||
@@ -484,13 +488,21 @@ class TestFunctional(unittest.TestCase):
|
|||||||
Args:
|
Args:
|
||||||
Filename of ELF file to use as SPL
|
Filename of ELF file to use as SPL
|
||||||
"""
|
"""
|
||||||
with open(cls.TestFile(src_fname), 'rb') as fd:
|
# TODO(sjg@chromium.org): Drop this when all Elf files use ElfTestFile()
|
||||||
TestFunctional._MakeInputFile('spl/u-boot-spl', fd.read())
|
if src_fname in ['bss_data']:
|
||||||
|
fname = cls.ElfTestFile(src_fname)
|
||||||
|
else:
|
||||||
|
fname = cls.TestFile(src_fname)
|
||||||
|
TestFunctional._MakeInputFile('spl/u-boot-spl', tools.ReadFile(fname))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def TestFile(cls, fname):
|
def TestFile(cls, fname):
|
||||||
return os.path.join(cls._binman_dir, 'test', fname)
|
return os.path.join(cls._binman_dir, 'test', fname)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def ElfTestFile(cls, fname):
|
||||||
|
return os.path.join(cls._elf_testdir, fname)
|
||||||
|
|
||||||
def AssertInList(self, grep_list, target):
|
def AssertInList(self, grep_list, target):
|
||||||
"""Assert that at least one of a list of things is in a target
|
"""Assert that at least one of a list of things is in a target
|
||||||
|
|
||||||
@@ -1551,7 +1563,7 @@ class TestFunctional(unittest.TestCase):
|
|||||||
def testTpl(self):
|
def testTpl(self):
|
||||||
"""Test that an image with TPL and ots device tree can be created"""
|
"""Test that an image with TPL and ots device tree can be created"""
|
||||||
# ELF file with a '__bss_size' symbol
|
# ELF file with a '__bss_size' symbol
|
||||||
with open(self.TestFile('bss_data'), 'rb') as fd:
|
with open(self.ElfTestFile('bss_data'), 'rb') as fd:
|
||||||
TestFunctional._MakeInputFile('tpl/u-boot-tpl', fd.read())
|
TestFunctional._MakeInputFile('tpl/u-boot-tpl', fd.read())
|
||||||
data = self._DoReadFile('078_u_boot_tpl.dts')
|
data = self._DoReadFile('078_u_boot_tpl.dts')
|
||||||
self.assertEqual(U_BOOT_TPL_DATA + U_BOOT_TPL_DTB_DATA, data)
|
self.assertEqual(U_BOOT_TPL_DATA + U_BOOT_TPL_DTB_DATA, data)
|
||||||
@@ -1861,16 +1873,16 @@ class TestFunctional(unittest.TestCase):
|
|||||||
def testElf(self):
|
def testElf(self):
|
||||||
"""Basic test of ELF entries"""
|
"""Basic test of ELF entries"""
|
||||||
self._SetupSplElf()
|
self._SetupSplElf()
|
||||||
with open(self.TestFile('bss_data'), 'rb') as fd:
|
with open(self.ElfTestFile('bss_data'), 'rb') as fd:
|
||||||
TestFunctional._MakeInputFile('tpl/u-boot-tpl', fd.read())
|
TestFunctional._MakeInputFile('tpl/u-boot-tpl', fd.read())
|
||||||
with open(self.TestFile('bss_data'), 'rb') as fd:
|
with open(self.ElfTestFile('bss_data'), 'rb') as fd:
|
||||||
TestFunctional._MakeInputFile('-boot', fd.read())
|
TestFunctional._MakeInputFile('-boot', fd.read())
|
||||||
data = self._DoReadFile('096_elf.dts')
|
data = self._DoReadFile('096_elf.dts')
|
||||||
|
|
||||||
def testElfStrip(self):
|
def testElfStrip(self):
|
||||||
"""Basic test of ELF entries"""
|
"""Basic test of ELF entries"""
|
||||||
self._SetupSplElf()
|
self._SetupSplElf()
|
||||||
with open(self.TestFile('bss_data'), 'rb') as fd:
|
with open(self.ElfTestFile('bss_data'), 'rb') as fd:
|
||||||
TestFunctional._MakeInputFile('-boot', fd.read())
|
TestFunctional._MakeInputFile('-boot', fd.read())
|
||||||
data = self._DoReadFile('097_elf_strip.dts')
|
data = self._DoReadFile('097_elf_strip.dts')
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0+
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
#
|
#
|
||||||
|
|
||||||
|
VPATH := $(SRC)
|
||||||
CFLAGS := -march=i386 -m32 -nostdlib -I ../../../include
|
CFLAGS := -march=i386 -m32 -nostdlib -I ../../../include
|
||||||
|
|
||||||
LDS_UCODE := -T u_boot_ucode_ptr.lds
|
LDS_UCODE := -T u_boot_ucode_ptr.lds
|
||||||
@@ -25,7 +26,7 @@ u_boot_no_ucode_ptr: u_boot_no_ucode_ptr.c
|
|||||||
u_boot_ucode_ptr: CFLAGS += $(LDS_UCODE)
|
u_boot_ucode_ptr: CFLAGS += $(LDS_UCODE)
|
||||||
u_boot_ucode_ptr: u_boot_ucode_ptr.c
|
u_boot_ucode_ptr: u_boot_ucode_ptr.c
|
||||||
|
|
||||||
bss_data: CFLAGS += bss_data.lds
|
bss_data: CFLAGS += $(SRC)bss_data.lds
|
||||||
bss_data: bss_data.c
|
bss_data: bss_data.c
|
||||||
|
|
||||||
u_boot_binman_syms.bin: u_boot_binman_syms
|
u_boot_binman_syms.bin: u_boot_binman_syms
|
||||||
|
Binary file not shown.
Reference in New Issue
Block a user