I thought I'd give 2.0.36 a go, seeing as I'd been having such
memory problems with 2.2.2. However, I've returned to the same
getconstants.h problems (`extractinfo.perl' was completely failing
to grok the objdump output). I think I've tracked this down to a
change in binutils's objdump output format somewhere along the line.
The relevant broken code is:
open (DATA, $OBJDUMP.' --syms getconsdata.o | grep \' 07 \' |') ||
die ('Cant objdump!');
while (<DATA>) {
($addr, $flags, $sect, $a1, $a2, $a3, $name) = split (' ');
$nam[hex($addr)] = substr($name, 1);
}
close (DATA);
Changing that `07' to `O' in the grep statement, and removing one of
the $a[123] variables, and also changing the substr to ($name, 0)
appears to fix the problem and provide intelligble output again, but
I'm not actually sure whether it's correct.
Here's what objdump says:
% armv2-linux-objdump --syms linux/arch/arm/lib/getconsdata.o
getconsdata.o: file format elf32-arm
SYMBOL TABLE:
00000000 l df *ABS* 00000000 getconsdata.c
00000000 l d .text 00000000
00000000 l d .data 00000000
00000000 l d .bss 00000000
00000000 l .text 00000000 gcc2_compiled.
00000000 l .text 00000000 __gnu_compiled_c
00000000 l d .comment 00000000
00000000 g O .data 00000004 tss_memmap
00000004 g O .data 00000004 mm
00000008 g O .data 00000004 pgd
0000000c g O .data 00000004 tss_save
00000010 g O .data 00000004 tss_fpesave
00000014 g O .data 00000004 tss_memcmap
And, with my patches, here's the modified getconstants.h:
unsigned long tss_memmap = 696;
#define __HAS_tss_memmap
unsigned long mm = 1732;
#define __HAS_mm
unsigned long pgd = 4;
#define __HAS_pgd
unsigned long tss_save = 692;
#define __HAS_tss_save
unsigned long tss_fpesave = 552;
#define __HAS_tss_fpesave
unsigned long tss_memcmap = 700;
#define __HAS_tss_memcmap
It looks *plausible*, but I've none other to test against. Can anyone
verify that my patch does the right thing?
--
Chris <[EMAIL PROTECTED]> ( http://www.fluff.org/chris )
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]