This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[Bug ld/17212] Tag_CPU_name merging produces wrong tag for ARM.
- From: Maxim Ostapenko <m dot ostapenko at partner dot samsung dot com>
- To: binutils at sourceware dot org
- Cc: Yury Gribov <y dot gribov at samsung dot com>, Slava Garbuzov <v dot garbuzov at samsung dot com>
- Date: Tue, 02 Sep 2014 13:19:20 +0400
- Subject: [Bug ld/17212] Tag_CPU_name merging produces wrong tag for ARM.
- Authentication-results: sourceware.org; auth=none
- References: <54045103 dot 7000606 at partner dot samsung dot com>
Hi,
I tried to compile a binary optimized for ARM Cortex-A15 with ARM
Cortex-A8 cross-toolchain (host is x86_64-pc-linux-gnu), but
Tag_CPU_name appears to be "Cortex-A8" for the binary instead of
"Cortex-A15". The example session follows:
$ arm-v7a8-linux-gnueabi-gcc -O2 -mcpu=cortex-a15 divtest.c -o divtest.a15
$ readelf -A divtest.a15
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "Cortex-A8"
Tag_CPU_arch: v7
................................................
Tag_DIV_use: Allowed in v7-A with integer division extension
After some investigation I found out, that Tag_CPU_name merging based on
Tag_CPU_arch. Since the first file to appear during linking is crt1.o,
which has Tag_CPU_name: "Cortex-A8" for A8 toolchain, the result
binary's Tag_CPU_name is also "Cortex-A8". Is this expected behavior of
ld, or maybe tags should be merged to a more specific "Cortex-A15"?
Perhaps we should use Tag_DIV_use when merging names?
-Maxim