mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01: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