Public bug reported:

After I updated from Ubuntu 18.04 to 18.10, avr-g++ sometimes fails to
link a project (which is built automatically on Jenkins). It seems to
misinterpret the command line by taking one of the define options
("-Dsomething"), stripping the "-D" and then using the remaining token
as a file name. This leads to an error message like "avr-g++: error:
something: No such file or directory" (in case of "-Dsomething"). I ran
the command (just the link command manually at the command line)
multiple times without any change, and the error occurs with something
like 50% probability.

The real full command line is this:

jenkins@tartaros:~/workspace/Repetier_RFx000_community_development/PRINTER/RF1000/build$
/usr/bin/avr-g++  -Os -w --std=c++11 -fno-exceptions -ffunction-sections
-fdata-sections -fno-threadsafe-statics -MMD
-DMOTHERBOARD=DEVICE_TYPE_RF1000 -Os -w --std=c++11 -fno-exceptions
-ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD  -w -Os
-Wl,--gc-sections -fuse-linker-plugin -Wl,--gc-sections,--relax -w -Os
-Wl,--gc-sections -fuse-linker-plugin -Wl,--gc-sections,--relax
-mmcu=atmega2560  -flto
CMakeFiles/Repetier.dir/Repetier_Repetier.ino.cpp.obj
CMakeFiles/Repetier.dir/Commands.cpp.obj
CMakeFiles/Repetier.dir/Communication.cpp.obj
CMakeFiles/Repetier.dir/Eeprom.cpp.obj
CMakeFiles/Repetier.dir/Extruder.cpp.obj
CMakeFiles/Repetier.dir/HAL.cpp.obj
CMakeFiles/Repetier.dir/Printer.cpp.obj
CMakeFiles/Repetier.dir/RF.cpp.obj
CMakeFiles/Repetier.dir/SDCard.cpp.obj
CMakeFiles/Repetier.dir/gcode.cpp.obj
CMakeFiles/Repetier.dir/motion.cpp.obj
CMakeFiles/Repetier.dir/ui.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/MinimumSerial.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFile.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFileLFN.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFilePrint.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFileSFN.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatVolume.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/FmtNumber.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/StdioStream.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/fstream.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/istream.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/FatLib/ostream.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdSpiCard.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdSpiCardEX.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdioCardEX.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdioTeensy.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiESP8266.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiSAM3X.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiSTM32.cpp.obj
CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiTeensy3.cpp.obj  -o
Repetier.elf libmega_SPI.a libmega_Wire.a libmega_twi.a libmega_CORE.a
-lc -lm

The exact output on failure is this:

avr-g++: error: MOTHERBOARD=DEVICE_TYPE_RF1000: No such file or directory
lto-wrapper: fatal error: /usr/bin/avr-g++ returned 1 exit status
compilation terminated.
/usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status

In case of no failure, no output is printed and the elf file is
successfully produced. The behaviour seems to depend on the order of
command line options. I cannot reproduce the error if I put the define
option in question ("-DMOTHERBOARD=DEVICE_TYPE_RF1000") at the end of
the command line instead. (This may be a work around, but it might be
difficult to change the order of arguments in my case since this is a
cmake project.)

Additional information:

1) lsb_release -rd
Description:    Ubuntu 18.10
Release:        18.10

2) apt-cache policy gcc-avr
gcc-avr:
  Installed: 1:5.4.0+Atmel3.6.1-1
  Candidate: 1:5.4.0+Atmel3.6.1-1
  Version table:
 *** 1:5.4.0+Atmel3.6.1-1 500
        500 http://de.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
        100 /var/lib/dpkg/status

3) Expected behaviour: Always produce the elf file without an error
message.

4) Instead I got random failures with the error message mentioned above.

** Affects: gcc-avr (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  After I updated from Ubuntu 18.04 to 18.10, avr-g++ sometimes fails to
  link a project (which is built automatically on Jenkins). It seems to
  misinterpret the command line by taking one of the define options
  ("-Dsomething"), stripping the "-D" and then using the remaining token
  as a file name. This leads to an error message like "avr-g++: error:
- something: No such file or directory" (in case of ("-Dsomething"). I ran
+ something: No such file or directory" (in case of "-Dsomething"). I ran
  the command (just the link command manually at the command line)
  multiple times without any change, and the error occurs with something
  like 50% probability.
  
  The real full command line is this:
  
  
jenkins@tartaros:~/workspace/Repetier_RFx000_community_development/PRINTER/RF1000/build$
  /usr/bin/avr-g++  -Os -w --std=c++11 -fno-exceptions -ffunction-sections
  -fdata-sections -fno-threadsafe-statics -MMD
  -DMOTHERBOARD=DEVICE_TYPE_RF1000 -Os -w --std=c++11 -fno-exceptions
  -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD  -w -Os
  -Wl,--gc-sections -fuse-linker-plugin -Wl,--gc-sections,--relax -w -Os
  -Wl,--gc-sections -fuse-linker-plugin -Wl,--gc-sections,--relax
  -mmcu=atmega2560  -flto
  CMakeFiles/Repetier.dir/Repetier_Repetier.ino.cpp.obj
  CMakeFiles/Repetier.dir/Commands.cpp.obj
  CMakeFiles/Repetier.dir/Communication.cpp.obj
  CMakeFiles/Repetier.dir/Eeprom.cpp.obj
  CMakeFiles/Repetier.dir/Extruder.cpp.obj
  CMakeFiles/Repetier.dir/HAL.cpp.obj
  CMakeFiles/Repetier.dir/Printer.cpp.obj
  CMakeFiles/Repetier.dir/RF.cpp.obj
  CMakeFiles/Repetier.dir/SDCard.cpp.obj
  CMakeFiles/Repetier.dir/gcode.cpp.obj
  CMakeFiles/Repetier.dir/motion.cpp.obj
  CMakeFiles/Repetier.dir/ui.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/MinimumSerial.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFile.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFileLFN.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFilePrint.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatFileSFN.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FatVolume.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/FmtNumber.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/StdioStream.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/fstream.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/istream.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/FatLib/ostream.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdSpiCard.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdSpiCardEX.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdioCardEX.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SdCard/SdioTeensy.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiESP8266.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiSAM3X.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiSTM32.cpp.obj
  CMakeFiles/Repetier.dir/src/SdFat/SpiDriver/SdSpiTeensy3.cpp.obj  -o
  Repetier.elf libmega_SPI.a libmega_Wire.a libmega_twi.a libmega_CORE.a
  -lc -lm
  
- 
  The exact output on failure is this:
  
  avr-g++: error: MOTHERBOARD=DEVICE_TYPE_RF1000: No such file or directory
  lto-wrapper: fatal error: /usr/bin/avr-g++ returned 1 exit status
  compilation terminated.
  /usr/lib/gcc/avr/5.4.0/../../../avr/bin/ld: error: lto-wrapper failed
  collect2: error: ld returned 1 exit status
  
- 
- In case of no failure, no output is printed and the elf file is successfully 
produced. The behaviour seems to depend on the order of command line options. I 
cannot reproduce the error if I put the define option in question 
("-DMOTHERBOARD=DEVICE_TYPE_RF1000") at the end of the command line instead. 
(This may be a work around, but it might be difficult to change the order of 
arguments in my case since this is a cmake project.)
- 
+ In case of no failure, no output is printed and the elf file is
+ successfully produced. The behaviour seems to depend on the order of
+ command line options. I cannot reproduce the error if I put the define
+ option in question ("-DMOTHERBOARD=DEVICE_TYPE_RF1000") at the end of
+ the command line instead. (This may be a work around, but it might be
+ difficult to change the order of arguments in my case since this is a
+ cmake project.)
  
  Additional information:
  
  1) lsb_release -rd
  Description:  Ubuntu 18.10
  Release:      18.10
  
  2) apt-cache policy gcc-avr
  gcc-avr:
-   Installed: 1:5.4.0+Atmel3.6.1-1
-   Candidate: 1:5.4.0+Atmel3.6.1-1
-   Version table:
-  *** 1:5.4.0+Atmel3.6.1-1 500
-         500 http://de.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
-         100 /var/lib/dpkg/status
+   Installed: 1:5.4.0+Atmel3.6.1-1
+   Candidate: 1:5.4.0+Atmel3.6.1-1
+   Version table:
+  *** 1:5.4.0+Atmel3.6.1-1 500
+         500 http://de.archive.ubuntu.com/ubuntu cosmic/universe amd64 Packages
+         100 /var/lib/dpkg/status
  
  3) Expected behaviour: Always produce the elf file without an error
  message.
  
  4) Instead I got random failures with the error message mentioned above.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1807865

Title:
  Linker occasionally misinterprets command line

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-avr/+bug/1807865/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to