linux-mips
[Top] [All Lists]

The Linux binutils vs. the FSF binutils on Linux/mips

To: binutils@sourceware.cygnus.com, linux-mips@oss.sgi.com
Subject: The Linux binutils vs. the FSF binutils on Linux/mips
From: "H . J . Lu" <hjl@lucon.org>
Date: Fri, 14 Sep 2001 12:36:42 -0700
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.2.5i
FYI, the Linux binutils contains a 64bit MIPS ELF patch which doesn't
exist in the FSF binutils. At first, I thought this 64bit MIPS ELF
patch shouldn't affect the 32bit MIPS ELF. But for some reason, I
cannot get a stable 32bit Linux/mips kernel without this 64bit MIPS ELF
patch. I compared kernels generated by 2 linkers from the same input.
They are identical. Then I compared the object files generated from
2 assemblers. Some of them are different. Here is one example:

--- /tmp/2      Fri Sep 14 12:22:08 2001
+++ /tmp/1      Fri Sep 14 12:22:08 2001
@@ -1,5 +1,5 @@
 
-../linux-mips-0914/./net/socket.o:     file format elf32-tradlittlemips
+./net/socket.o:     file format elf32-tradlittlemips
 
 Disassembly of section .text:
 
@@ -2475,14 +2475,15 @@ Disassembly of section .text.init:
   60:  02002021        move    a0,s0
   64:  3c010000        lui     at,0x0
                        64: R_MIPS_HI16 .bss
-  68:  0c000000        jal     0 <sock_init>
-                       68: R_MIPS_26   rtnetlink_init
-  6c:  ac220084        sw      v0,132(at)
-                       6c: R_MIPS_LO16 .bss
-  70:  0c000000        jal     0 <sock_init>
-                       70: R_MIPS_26   init_netlink
-  74:  00000000        nop
-  78:  8fbf0014        lw      ra,20(sp)
-  7c:  8fb00010        lw      s0,16(sp)
-  80:  03e00008        jr      ra
-  84:  27bd0018        addiu   sp,sp,24
+  68:  ac220084        sw      v0,132(at)
+                       68: R_MIPS_LO16 .bss
+  6c:  0c000000        jal     0 <sock_init>
+                       6c: R_MIPS_26   rtnetlink_init
+  70:  00000000        nop
+  74:  0c000000        jal     0 <sock_init>
+                       74: R_MIPS_26   init_netlink
+  78:  00000000        nop
+  7c:  8fbf0014        lw      ra,20(sp)
+  80:  8fb00010        lw      s0,16(sp)
+  84:  03e00008        jr      ra
+  88:  27bd0018        addiu   sp,sp,24

It seems that those small differences between 2 assemblers make a big
difference for the Linux/mips kernel. Does anyone know why?


H.J.

<Prev in Thread] Current Thread [Next in Thread>