binman: Use the Makefile for u_boot_ucode_ptr

Remove this file from git and instead build it using the Makefile.

Update tools.GetInputFilename() to support reading files from an absolute
path, so that we can read the Elf test files easily. Also make sure that
the temp directory is report in ELF tests as this was commented out.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2019-08-24 07:22:54 -06:00
parent 53e22bf38c
commit f514d8f23d
6 changed files with 26 additions and 14 deletions

View file

@ -75,18 +75,29 @@ def BuildElfTestFiles(target_dir):
class TestElf(unittest.TestCase): class TestElf(unittest.TestCase):
@classmethod @classmethod
def setUpClass(self): def setUpClass(cls):
cls._indir = tempfile.mkdtemp(prefix='elf.')
tools.SetInputDirs(['.']) tools.SetInputDirs(['.'])
BuildElfTestFiles(cls._indir)
@classmethod
def tearDownClass(cls):
if cls._indir:
shutil.rmtree(cls._indir)
@classmethod
def ElfTestFile(cls, fname):
return os.path.join(cls._indir, fname)
def testAllSymbols(self): def testAllSymbols(self):
"""Test that we can obtain a symbol from the ELF file""" """Test that we can obtain a symbol from the ELF file"""
fname = os.path.join(binman_dir, 'test', 'u_boot_ucode_ptr') fname = self.ElfTestFile('u_boot_ucode_ptr')
syms = elf.GetSymbols(fname, []) syms = elf.GetSymbols(fname, [])
self.assertIn('.ucode', syms) self.assertIn('.ucode', syms)
def testRegexSymbols(self): def testRegexSymbols(self):
"""Test that we can obtain from the ELF file by regular expression""" """Test that we can obtain from the ELF file by regular expression"""
fname = os.path.join(binman_dir, 'test', 'u_boot_ucode_ptr') fname = self.ElfTestFile('u_boot_ucode_ptr')
syms = elf.GetSymbols(fname, ['ucode']) syms = elf.GetSymbols(fname, ['ucode'])
self.assertIn('.ucode', syms) self.assertIn('.ucode', syms)
syms = elf.GetSymbols(fname, ['missing']) syms = elf.GetSymbols(fname, ['missing'])
@ -201,7 +212,7 @@ class TestElf(unittest.TestCase):
self.assertEqual(elf.ElfInfo(b'\0\0' + expected[2:], self.assertEqual(elf.ElfInfo(b'\0\0' + expected[2:],
load, entry, len(expected)), load, entry, len(expected)),
elf.DecodeElf(data, load + 2)) elf.DecodeElf(data, load + 2))
#shutil.rmtree(outdir) shutil.rmtree(outdir)
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -152,8 +152,8 @@ class TestFunctional(unittest.TestCase):
elf_test.BuildElfTestFiles(cls._elf_testdir) 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: TestFunctional._MakeInputFile('u-boot',
TestFunctional._MakeInputFile('u-boot', fd.read()) tools.ReadFile(cls.ElfTestFile('u_boot_ucode_ptr')))
# Intel flash descriptor file # Intel flash descriptor file
with open(cls.TestFile('descriptor.bin'), 'rb') as fd: with open(cls.TestFile('descriptor.bin'), 'rb') as fd:
@ -489,7 +489,7 @@ class TestFunctional(unittest.TestCase):
Filename of ELF file to use as SPL Filename of ELF file to use as SPL
""" """
# TODO(sjg@chromium.org): Drop this when all Elf files use ElfTestFile() # TODO(sjg@chromium.org): Drop this when all Elf files use ElfTestFile()
if src_fname in ['bss_data']: if src_fname in ['bss_data', 'u_boot_ucode_ptr']:
fname = cls.ElfTestFile(src_fname) fname = cls.ElfTestFile(src_fname)
else: else:
fname = cls.TestFile(src_fname) fname = cls.TestFile(src_fname)
@ -1101,8 +1101,8 @@ class TestFunctional(unittest.TestCase):
finally: finally:
# Put the original file back # Put the original file back
with open(self.TestFile('u_boot_ucode_ptr'), 'rb') as fd: TestFunctional._MakeInputFile('u-boot',
TestFunctional._MakeInputFile('u-boot', fd.read()) tools.ReadFile(self.ElfTestFile('u_boot_ucode_ptr')))
def testMicrocodeNotInImage(self): def testMicrocodeNotInImage(self):
"""Test that microcode must be placed within the image""" """Test that microcode must be placed within the image"""
@ -1818,8 +1818,8 @@ class TestFunctional(unittest.TestCase):
u-boot-tpl.dtb with the microcode removed u-boot-tpl.dtb with the microcode removed
the microcode the microcode
""" """
with open(self.TestFile('u_boot_ucode_ptr'), 'rb') as fd: TestFunctional._MakeInputFile('tpl/u-boot-tpl',
TestFunctional._MakeInputFile('tpl/u-boot-tpl', fd.read()) tools.ReadFile(self.ElfTestFile('u_boot_ucode_ptr')))
first, pos_and_size = self._RunMicrocodeTest('093_x86_tpl_ucode.dts', first, pos_and_size = self._RunMicrocodeTest('093_x86_tpl_ucode.dts',
U_BOOT_TPL_NODTB_DATA) U_BOOT_TPL_NODTB_DATA)
self.assertEqual(b'tplnodtb with microc' + pos_and_size + self.assertEqual(b'tplnodtb with microc' + pos_and_size +

View file

@ -10,7 +10,7 @@
VPATH := $(SRC) 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 $(SRC)u_boot_ucode_ptr.lds
LDS_BINMAN := -T u_boot_binman_syms.lds LDS_BINMAN := -T u_boot_binman_syms.lds
LDS_BINMAN_BAD := -T u_boot_binman_syms_bad.lds LDS_BINMAN_BAD := -T u_boot_binman_syms_bad.lds

Binary file not shown.

View file

@ -9,9 +9,10 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
. = 0xfffffdf0; . = 0xfffffe14;
_start = .; _start = .;
.ucode : { .ucode : {
*(.ucode) *(.ucode)
} }
.interp : { *(.interp*) }
} }

View file

@ -125,7 +125,7 @@ def GetInputFilename(fname):
Returns: Returns:
The full path of the filename, within the input directory The full path of the filename, within the input directory
""" """
if not indir: if not indir or fname[:1] == '/':
return fname return fname
for dirname in indir: for dirname in indir:
pathname = os.path.join(dirname, fname) pathname = os.path.join(dirname, fname)