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 From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by
2 Richard Earnshaw. Fixes http://gcc.gnu.org/PR22528
4 --- gcc-3.3.4/gcc/config/arm/arm.md.orig 2004-03-30 22:43:44.000000000 +0200
5 +++ gcc-3.3.4/gcc/config/arm/arm.md 2005-08-15 12:21:55.000000000 +0200
8 (ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
10 - (set (match_dup 4) (subreg:QI (match_dup 2) 0))] ;explicit subreg safe
11 + (set (match_dup 4) (match_dup 5))]
16 operands[1] = adjust_address (operands[1], QImode, 0);
17 operands[3] = gen_lowpart (QImode, operands[0]);
18 operands[0] = gen_lowpart (SImode, operands[0]);
19 - operands[2] = gen_reg_rtx (SImode);
20 + operands[2] = gen_reg_rtx (SImode);
21 + operands[5] = gen_lowpart (QImode, operands[2]);
26 [(set (match_dup 4) (match_dup 3))
28 (ashiftrt:SI (match_operand 0 "" "") (const_int 8)))
29 - (set (match_operand 1 "" "") (subreg:QI (match_dup 2) 3))]
30 + (set (match_operand 1 "" "") (match_dup 5))]
34 @@ -4316,13 +4317,14 @@
35 operands[3] = gen_lowpart (QImode, operands[0]);
36 operands[0] = gen_lowpart (SImode, operands[0]);
37 operands[2] = gen_reg_rtx (SImode);
38 + operands[5] = gen_lowpart (QImode, operands[2]);
42 ;; Subroutine to store a half word integer constant into memory.
43 (define_expand "storeinthi"
44 [(set (match_operand 0 "" "")
45 - (subreg:QI (match_operand 1 "" "") 0))
46 + (match_operand 1 "" ""))
47 (set (match_dup 3) (match_dup 2))]
51 operands[3] = adjust_address (op0, QImode, 1);
52 operands[0] = adjust_address (operands[0], QImode, 0);
53 operands[2] = gen_lowpart (QImode, operands[2]);
54 + operands[1] = gen_lowpart (QImode, operands[1]);
58 @@ -4682,11 +4685,12 @@
60 (ashiftrt:SI (match_dup 2) (const_int 16)))
61 (set (match_operand:HI 0 "s_register_operand" "")
62 - (subreg:HI (match_dup 3) 0))]
66 operands[2] = gen_reg_rtx (SImode);
67 operands[3] = gen_reg_rtx (SImode);
68 + operands[4] = gen_lowpart (HImode, operands[3]);