Have the glibc build use the cross-objdump, rather than the host one.
On some distros (eg. Fedora), the native objdump can not interpret objects not for the native system, and thus fail.
This commit adds a new patch against glibc-2.7 that introduces OBJDUMP_FOR_HOST, wich, if set, overides the detected objdump.
Note: bizarely enough, glibc already has code to detect the cross-objdump, but that does not work for an unknown reason... :-(
/trunk/patches/glibc/2.7/220-objdump_for_host.patch | 13 13 0 0 +++++++++
/trunk/scripts/build/libc_glibc.sh | 37 21 16 0 +++++++++++++++------------
2 files changed, 34 insertions(+), 16 deletions(-)
1 diff -durN gcc-3.4.6.orig/gcc/flow.c gcc-3.4.6/gcc/flow.c
2 --- gcc-3.4.6.orig/gcc/flow.c 2005-09-01 22:51:09.000000000 +0200
3 +++ gcc-3.4.6/gcc/flow.c 2007-08-15 23:00:30.000000000 +0200
5 rtx set_src = SET_SRC (pc_set (BB_END (bb)));
6 rtx cond_true = XEXP (set_src, 0);
7 rtx reg = XEXP (cond_true, 0);
8 + enum rtx_code inv_cond;
10 if (GET_CODE (reg) == SUBREG)
11 reg = SUBREG_REG (reg);
12 @@ -1892,11 +1893,13 @@
13 in the form of a comparison of a register against zero.
14 If the condition is more complex than that, then it is safe
15 not to record any information. */
16 - if (GET_CODE (reg) == REG
17 + inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
18 + if (inv_cond != UNKNOWN
19 + && GET_CODE (reg) == REG
20 && XEXP (cond_true, 1) == const0_rtx)
23 - = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
24 + = gen_rtx_fmt_ee (inv_cond,
25 GET_MODE (cond_true), XEXP (cond_true, 0),
27 if (GET_CODE (XEXP (set_src, 1)) == PC)