This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug other/52187] New: armeb-unknown-eabi not recognized as big-endian


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]