Public bug reported:

The multilib setup is not working in the bionic version of gcc-arm-none-
eabi (gcc v6.3.1). For example, if I build a project with
"-mcpu=cortex-m4" or "-march=armv7e-m" and link with:

arm-none-eabi-gcc -o someoutput.elf  object1.o object2.o -mthumb -Wl
,--gc-sections -ffast-math -march=armv7-m -Tlinker_script.ld

I get as output:

/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: error: 
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/crt0.o: Conflicting 
CPU architectures 13/1
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: failed to merge 
target specific data of file 
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/crt0.o

arm-none-eabi-readelf -A on any of my object files produces:

Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "Cortex-M4"
  Tag_CPU_arch: v7E-M
  Tag_CPU_arch_profile: Microcontroller
  Tag_THUMB_ISA_use: Thumb-2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_number_model: Finite
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: small
  Tag_ABI_optimization_goals: Prefer Speed
  Tag_CPU_unaligned_access: v6

But "arm-none-eabi-readelf -A /usr/lib/gcc/arm-none-eabi/6.3.1
/../../../arm-none-eabi/lib/crt0.o" gives

Attribute Section: aeabi
File Attributes
  Tag_CPU_arch: v4
  Tag_ARM_ISA_use: Yes

If I define "void _init(void){}" and use -nostartfiles, compilation
finishes but the resulting binary does not work. I have not examined the
output file but it appears that it has somehow linked to code containing
ARM as well as thumb code:

# readelf -A someoutput.elf
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "Cortex-M4"
  Tag_CPU_arch: v7E-M
  Tag_CPU_arch_profile: Microcontroller
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: small
  Tag_ABI_optimization_goals: Prefer Speed
  Tag_CPU_unaligned_access: v6

I can work around the problem by manually specifying compatible versions
of libc and libgcc with -nostdlib:

-nostdlib /usr/lib/arm-none-eabi/newlib/thumb/libc.a /usr/lib/gcc/arm-
none-eabi/6.3.1/thumb/v7e-m/libgcc.a

This produces a working binary. However, there is still something wrong
because readelf -A still includes "Tag_ARM_ISA_use: Yes":

Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "Cortex-M4"
  Tag_CPU_arch: v7E-M
  Tag_CPU_arch_profile: Microcontroller
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: small
  Tag_ABI_optimization_goals: Prefer Speed
  Tag_CPU_unaligned_access: v6

Previously, using xenial and gcc v4, readelf gives the following output on the 
output binary:
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7E-M"
  Tag_CPU_arch: v7E-M
  Tag_CPU_arch_profile: Microcontroller
  Tag_THUMB_ISA_use: Thumb-2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_enum_size: small
  Tag_ABI_optimization_goals: Prefer Speed
  Tag_CPU_unaligned_access: v6

(Also, what happened to gdb-arm-none-eabi?)

** Affects: gcc-arm-none-eabi (Ubuntu)
     Importance: Undecided
         Status: New

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

Title:
  multilib selects wrong start files

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-arm-none-eabi/+bug/1767223/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to