This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Setting output EABI version in RVCT3.1

Note: This was originally posted on 15th May 2013 at http://forums.arm.com

Hi I am using a library built with RVCT3.1 and linking it to my linux application using arm-elf-gcc-4.6.1, I am getting an error of EABI versions mis-match.

RVCT3.1 generates a EABI version 5 and arm-elf-gcc is giving a EABI version 0, Is there a way to set the RVCT output EABI version (to make it backward compatible)
or to set the arm-elf-gcc EABI version to make the library and application objects compatible.
  • Note: This was originally posted on 16th May 2013 at http://forums.arm.com

    I don't think there's any way to change what EABI version RVCT 3.1 produces.  I'm surprised to see gcc producing version 0.  Are you using '-flto'?

    If you're really sure that the EABI mismatch doesn't matter you can use --no-warn-mismatch when linking (with GNU ld), but you're inviting a lot of debugging pain if the EABI mismatch does, in fact, matter.
  • Note: This was originally posted on 16th May 2013 at http://forums.arm.com

    I am not using the -flto option.

    I am not sure if EABI mismatch would cause a problem in program execution as such but I was under the impression that  objects of different EABI versions are incompatible.

    Anyway, still I tried using "[size=2]--no-warn-mismatch" in my GNU makefile, it gives me following error[/size]

    arm-elf-gcc: error: unrecognized option '--no-warn-mismatch'
  • Note: This was originally posted on 16th May 2013 at http://forums.arm.com

    If you're passing it to gcc you'll need to mark the option as a linker option:  -Wl,--no-warn-mismatch
  • Note: This was originally posted on 17th May 2013 at http://forums.arm.com

    Thanks scott. The solution worked and I am able to get my final library after partial linking..Will check if the version mismatch is causing any problem while running..

    but observed a strange behavior: the error message I was getting earlier said

    error: Source object *.o has EABI version 5, but target ../lib/*.a has EABI version 0

    But Now after building with option --no-warn-mismatch, when I check the EABI version of generated *.a, its GNU  EABI 4 !!!
    Any idea why this discrepancy?
  • Note: This was originally posted on 20th May 2013 at http://forums.arm.com

    Is your .a file an archive (from ar) or a partial link?  (or something else?).  Maybe show the command-line that produces it.

    (But even with the command-line, I don't think I'll have an answer.  Maybe try asking the same place you the got the GNU tools?)