micro-ecc icon indicating copy to clipboard operation
micro-ecc copied to clipboard

'lto-wrapper failed' when building for AtTiny84

Open anderstogern opened this issue 5 years ago • 1 comments

Hi,

I have been looking long and hard for a decent crypto-library and when I finally found this promising gem, I get stuck with linker problems.

I am building for AtTiny84 in PlatformIO (on Mac OS) and have installed the non-static library by adding it to platformio.ini.

When I build everything goes fine until the linker (ld) sets in, then I get:

Compiling .pio/build/attiny84/src/main.cpp.o
Linking .pio/build/attiny84/firmware.elf
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccH5DaXn.s: Assembler messages:
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccH5DaXn.s:33: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccH5DaXn.s:57: Error: illegal opcode or for mcu avr25
lto-wrapper: fatal error: avr-g++ returned 1 exit status
compilation terminated.
/Users/User/.platformio/packages/[email protected]/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
*** [.pio/build/attiny84/firmware.elf] Error 1

Naturally I have tried to disable LTO (build_unflags = -flto in platformio.ini), but that just reduces the error to something about the opcode or (I included every error in case line numbers are relevant):

/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s: Assembler messages:
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:748: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:772: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1403: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1407: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1410: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1415: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1418: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1423: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1426: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1434: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1437: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1445: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1448: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1456: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1459: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1467: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1470: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1478: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1481: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1489: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1492: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1500: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1503: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1511: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1514: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1522: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1525: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1533: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1536: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1544: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1547: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1555: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1558: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1566: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1569: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1577: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1580: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1588: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1591: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1599: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1602: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1610: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1613: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1621: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1624: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1632: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1635: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1643: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1646: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1654: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1657: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1665: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1668: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1676: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1679: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1687: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1690: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1698: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1701: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1709: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1712: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1720: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1723: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1731: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1734: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1741: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1897: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1901: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1904: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1909: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1912: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1917: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1920: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1928: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1931: Error: illegal opcode or for mcu avr25
/var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:1938: Error: illegal opcode or for mcu avr25
*** [.pio/build/attiny84/lib832/micro-ecc_ID1665/uECC.c.o] Error 1

I have tried to reproduce this in Arduino IDE 1.8.5, which gives the same result using the cores from David A. Mellis and Spence Konde.

Compiling for Uno works fine.

I have found records of this library being used for other AtTiny MCUs (e.g. AtTiny85), so it should I guess that I am not trying to do the impossible and that it is supposed to work for AtTiny84 as well.

What I have not tried is another OS and thus maybe another linker, but I am not really able to do so at the moment.

anderstogern avatar Jan 18 '20 22:01 anderstogern

Based on the error messages, the assembler is complaining about some opcode that isn't supported. It seems unlikely that 'or' is not supported though, so maybe the error is pointing at the wrong line or something. Maybe you could look at the output .s file (eg /var/folders/kd/jfx0p40j1yq0yv8rkzgzpr6c0000gp/T//ccIqeFTO.s:748) to see what's going on?

kmackay avatar Oct 07 '20 18:10 kmackay