Skip to content

Test test_libmix_differences fails

I get the following error for test_libmix_differences on openSUSE Tumbleweed:

[   31s] ___________________________ test_libmix_differences ____________________________
[   31s] 
[   31s] libmix_differences = [<Difference file list -- file list []>, <Difference Mach-O.o -- Mach-O.o []>, <Difference return42_or_3_long_name.o -...ection=.text {} -- objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} []>]>]
[   31s] 
[   31s]     @skip_unless_tools_exist("xxd")
[   31s]     @skip_unless_tools_exist("readelf", "objdump")
[   31s]     @skip_if_tool_version_is("readelf", readelf_version, "2.29")
[   31s]     @skip_if_binutils_does_not_support_x86()
[   31s]     def test_libmix_differences(libmix_differences):
[   31s]         assert len(libmix_differences) == 5
[   31s]         file_list, mach_o, x86_o, src_c, x_obj = libmix_differences
[   31s]     
[   31s]         # Check order and basic identification
[   31s]         assert file_list.source1 == "file list"
[   31s]         assert "Falling back to binary" in mach_o.comments[0]
[   31s]         x86_o = x86_o.details[0]
[   31s]         assert x86_o.source1.startswith("objdump ")
[   31s]         assert src_c.source1.endswith(".c")
[   31s]         x_obj = x_obj.details[0]
[   31s] >       assert x_obj.source1.startswith("readelf ")
[   31s] E       AssertionError: assert False
[   31s] E        +  where False = <built-in method startswith of str object at 0x7f087427eb70>('readelf ')
[   31s] E        +    where <built-in method startswith of str object at 0x7f087427eb70> = 'objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}'.startswith
[   31s] E        +      where 'objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}' = <Difference objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} -- objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} []>.source1
[   31s] 
[   31s] tests/comparators/test_elf.py:186: AssertionError
[   31s] ------------------------------ Captured log setup ------------------------------
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "42-Mach-O.o" or "42-Mach-O.o" ([Errno 2] No such file or directory: '42-Mach-O.o')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "43-Mach-O.o" or "43-Mach-O.o" ([Errno 2] No such file or directory: '43-Mach-O.o')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "Mach-O.o" or "Mach-O.o" ([Errno 2] No such file or directory: 'Mach-O.o')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".text" or ".text" ([Errno 2] No such file or directory: '.text')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".data" or ".data" ([Errno 2] No such file or directory: '.data')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".bss" or ".bss" ([Errno 2] No such file or directory: '.bss')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".strtab" or ".strtab" ([Errno 2] No such file or directory: '.strtab')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".shstrtab" or ".shstrtab" ([Errno 2] No such file or directory: '.shstrtab')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.o" or "return42_or_3_long_name.o" ([Errno 2] No such file or directory: 'return42_or_3_long_name.o')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.c" or "return42_or_3_long_name.c" ([Errno 2] No such file or directory: 'return42_or_3_long_name.c')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "regen_elfmix.sh" or "regen_elfmix.sh" ([Errno 2] No such file or directory: 'regen_elfmix.sh')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".text" or ".text" ([Errno 2] No such file or directory: '.text')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".data" or ".data" ([Errno 2] No such file or directory: '.data')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".bss" or ".bss" ([Errno 2] No such file or directory: '.bss')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".xt.prop" or ".xt.prop" ([Errno 2] No such file or directory: '.xt.prop')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".strtab" or ".strtab" ([Errno 2] No such file or directory: '.strtab')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file ".shstrtab" or ".shstrtab" ([Errno 2] No such file or directory: '.shstrtab')
[   31s] WARNING  diffoscope.comparators.directory:directory.py:178 Unable to stat file "return42_or_3_long_name.obj" or "return42_or_3_long_name.obj" ([Errno 2] No such file or directory: 'return42_or_3_long_name.obj')

The content of the variable x_obj.source1 is:

objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}

wich starts with objdump instead of readelf.

I don't know where to start with debugging this, maybe it's a version compatibility issue. Both programs are installed in the build/test environment, version 2.36.0.20210204-1 each.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information