Subject: Link problems with 2.4.3 kernel

From: Scott A McConnell <[email-masked]>
Date: Mon, 16 Apr 2001 13:09:37 -0700

Using Hardhat linux targeting a NEC VR5432 and a 2.4.0-test 5 kernel I
get an image that looks like the following:

vmlinux:     file format elf32-littlemips

Disassembly of section .text:

0000000080001000 <_ftext>:
 ...
    80002000: 6e 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00
n...............
 ...

0000000080002288 <except_vec0_r4000>:
....
00000000800025bc <kernel_entry>:

--------------------------------------
using the cvs 2.4.3 kernel (about a week old) and the same tool chain I
get an image that looks like:
Using a loadaddr of 8000000

vmlinux:     file format elf32-littlemips

Disassembly of section .text:

0000000080000000 <_ftext>:
    80000000: 6b 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00
k...............
 ...

0000000080000288 <except_vec0_r4000>:
....
00000000800005b0 <kernel_entry>:
 ...

--------------------------------------
If I change the loadaddr to 80001000 I get:

vmlinux:     file format elf32-littlemips

Disassembly of section .text:

0000000080002000 <_ftext>:
    80002000: 6b 01 00 10 00 00 00 00 00 00 00 00 00 00 00 00
k...............
 ...

0000000080002288 <except_vec0_r4000>:
....

00000000800025b0 <kernel_entry>:

-------------------------------------

No matter what I do I can not get _ftext to appear at 80001000. I use
identical ld.scripts for bother kernels.
At first I thought it was my binutils so I switched to the same tools
that I used with my 2.4.0-test5 kernel.

Addresses appear to be off by 0x1000.  Which is why my 2.4.3 kernel dies
on the jump to init_arch out of kernel_entry.

Any thoughts about what I might be doing wrong?

Thanks,
Scott

---

From: Scott A McConnell <[email-masked]>
Date: Tue, 17 Apr 2001 10:48:33 -0700

> Any thoughts about what I might be doing wrong?

I tracked it down to a missing:

ifdef LOADADDR
LINKFLAGS     += -Ttext $(word 1,$(LOADADDR))
endif

in arch/mips/Makefile

I have no idea who added it or removed it.

I also am forced to edit the ld.script file to replace the LOADADDR
inserted with sed with 80000000.

Am I suppose to be accomplishing what I did above some other way?

Scott

---

From: Ralf Baechle <[email-masked]>
Date: Tue, 17 Apr 2001 13:32:51 -0300

> Any thoughts about what I might be doing wrong?

Thinking you can change the address to 0x80001000.  .text needs 8kb
aligment for 32-bit kernels, 16kb for 64-bit.

  Ralf