32-bit arm-none-eabi-objcopy in release 8 2018-q4-major is fundamentally broken
- Dominant language
- Python
- Stars
- 14
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Description
There's an upstream bug in the latest release of `arm-none-eabi-objcopy` that prevents it from working on 32-bit installations. Unfortunately, the arm release page does not have a 64-bit build posted for windows.
See upstream bug report here:
https://bugs.launchpad.net/gcc-arm-embedded/+bug/1810274
There is a workaround by installing the build here:
https://github.com/gnu-mcu-eclipse/arm-none-eabi-gcc/releases/tag/v8.2.1-1.2
It looks like ARM won't fix the underlying bug for another 9 months so until then the latest arm-none-eabi-gcc version won't pass the test suite in `iotile-build`.
Error log is:
```
(env3) PS C:\Arch\coretools\iotilebuild> pytest test
============================================== test session starts ===============================================
platform win32 -- Python 3.7.2, pytest-4.3.0, py-1.8.0, pluggy-0.9.0
rootdir: C:\Arch\coretools\iotilebuild, inifile: pytest.ini
collected 55 items
test\test_template.py .... [ 7%]
test\test_build\test_architecturegroups.py . [ 9%]
test\test_depresolvers\test_dependency_conflict.py ... [ 14%]
test\test_depresolvers\test_resolverchain.py ..... [ 23%]
test\test_dev\test_resolverchain_basic.py . [ 25%]
test\test_iotilebuild\test_scons.py ..............F. [ 54%]
test\test_release\test_release.py ........... [ 74%]
test\test_tilebus\test_parse_mib.py .............. [100%]
==================================================== FAILURES ====================================================
______________________________________________ test_bootstrap_file _______________________________________________
tmpdir = local('C:\\Users\\TimBurke\\AppData\\Local\\Temp\\pytest-of-TimBurke\\pytest-12\\test_bootstrap_file0')
def test_bootstrap_file(tmpdir):
"""Make sure we can create a bootstrap file"""
olddir = os.getcwd()
builddir = copy_folder('component_bootstrap', tmpdir)
try:
os.chdir(builddir)
hexdata = IntelHex(os.path.join('build', 'output', 'test1.hex'))
assert hexdata.segments() == [(0x10001014, 0x10001018)]
assert not os.path.isfile(os.path.join('build', 'output', 'test2.hex'))
err = subprocess.call(["iotile", "build"])
> assert err == 0
E assert 2 == 0
test\test_iotilebuild\test_scons.py:346: AssertionError
---------------------------------------------- Captured stdout call ----------------------------------------------
Creating intel hex file from: build\output\test2.elf
---------------------------------------------- Captured stderr call ----------------------------------------------
arm-none-eabi-objcopy: build\none\test2.hex 64-bit address 0x4b4fa300001800 out of range for Intel Hex file
arm-none-eabi-objcopy:build\none\test2.hex: bad value
scons: *** [build\none\test2.hex] Error 1
```
Contributor guide
Assessment
This issue has not been assessed yet.