This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/52187] New: armeb-unknown-eabi not recognized as big-endian
- From: "egnor at ofb dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 09 Feb 2012 17:50:10 +0000
- Subject: [Bug other/52187] New: armeb-unknown-eabi not recognized as big-endian
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52187
Bug #: 52187
Summary: armeb-unknown-eabi not recognized as big-endian
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: egnor@ofb.net
In gcc/config.gcc, the stanza for Linux recognizes arm*b-* and treats it as
big-endian:
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h
glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
case $target in
arm*b-*)
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
;;
esac
However, the similar stanza for other arm targets does not. In my case I am
using armeb-unknown-eabi (for a bare metal project), which means the
arm*-*-eabi* stanza takes place. This ignores the "eb" suffix and builds a
compiler which defaults to little endian. (Worse, libgcc is built in
little-endian mode, causing subtle bugs even with code compiled with
-mbig-endian.)
Copying the Linux arm*b-* section to the other stanza helps my case, but I'm
not sure it's a general solution.
Bug 16350 may be related -- possibly even a dupe -- though I'm not sure the
scope is the same. Good code _is_ generated with -mbig-endian, it just needs
to be recognized as the default for appropriate targets.