------- Comment #1 from tom at giftssoft dot com 2009-11-20 17:26 ------- It looks like this bug is related to bug 16350, which was created on 2004-07-03 and resulted in patch 800-arm-bigendian.patch being applied on 2007-11-07 to gcc 4.3.0. Prior to this patch, gcc defaulted to little-endian mode on both big-endian and little-endian arm targets, and had to be explicitly told to compile in big-endian mode. This patch modified gcc to detault to big-endian mode on big-endian arm targets and little-endian mode on littlr-endian arm targets. However, the hunk of the patch that replaced:
{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } with: { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } was somehow not applied. Therefore, this bug can be restated as follows: The patch to resolve bug 16350 was only partially applied and resulted in an inconsistent linux-elf.h file in which part of it still assumes little-endian on all arm targets (the old behavor) and part of it assumes big-endian on big-endian arm targets (the new behavior). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42081