This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sun, Sep 29, 2002 at 01:13:57PM -0700, H. J. Lu wrote: > On Sun, Sep 29, 2002 at 08:48:08AM -0700, H. J. Lu wrote: > > On Sun, Sep 29, 2002 at 08:20:21AM -0700, H. J. Lu wrote: > > > On Sat, Sep 28, 2002 at 07:16:53PM -0700, H. J. Lu wrote: > > > > On Sat, Sep 28, 2002 at 10:13:17PM -0400, Daniel Jacobowitz wrote: > > > > > On Sat, Sep 28, 2002 at 04:17:04PM -0700, H. J. Lu wrote: > > > > > > I recompiled my mipsel kernel with binutils in CVS as of 20020928. The > > > > > > resulting kernel doesn't work. I got > > > > > > > > > > > > Unhandled kernel unaligned access in unaligned.c::emulate_load_store_insn, > > > > > > line: > > > > > > $0 : 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > $8 : 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > $16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > $24: 00000000 00000000 00000000 00000000 00000000 00000000 > > > > > > Hi : 00000000 > > > > > > Lo : 00000000 > > > > > > epc : 00000000 Not tainted > > > > > > Status: 00000000 > > > > > > Cause : 00000000 > > > > > > Process sleep (pid: 16, stackpage=87e8c000) > > > > > > > > > > Could you try with the 2.13.1-branch - I believe it should be fine but > > > > > I haven't tested MIPS in a few merges. > > > > > > > > > > > > > I don't have resources to try 2.13.1. The Linux binutils 2.13.90.0.4 > > > > based on 20020814 CVS is ok. I will try to fix CVS. > > > > > > > > > > Linker seems ok. It is as which is broken. > > > > > > > > > H.J. > > > > Here is the diff. The code looks like > > > > LEAF(mips_atomic_set) > > andi v0, a1, 3 # must be word aligned > > bnez v0, bad_alignment > > .... > > LEAF(sys_sysmips) > > beq a0, MIPS_ATOMIC_SET, mips_atomic_set > > j _sys_sysmips > > END(sys_sysmips) > > > > It is assembled with > > > > # mipsel-linux-gcc -D__ASSEMBLY__ -D__KERNEL__ -I/export/linux/src/kernel/mips/mipsel/include -I /export/linux/src/kernel/mips/mipsel/include/asm/gcc -G 0 -mno-abicalls -fno-pic -pipe -mtune=r4600 -mips2 -Wa,--trap -c -o scall_o32.o scall_o32.S > > > > My patch: > > > > http://sources.redhat.com/ml/binutils/2002-09/msg00421.html > > > > fixes the Linux kernel. Eric, could you please find a way to fix it? > > > > Thanks. > > > > > > H.J. > > --- > > 1 2 differ: char 9127, line 328 > > ./arch/mips/kernel/scall_o32.o > > --- 1 Sun Sep 29 08:28:08 2002 > > +++ 2 Sun Sep 29 08:28:08 2002 > > @@ -325,7 +325,8 @@ Disassembly of section .text: > > > > 0000042c <sys_sysmips>: > > 42c: 240107d1 li at,2001 > > - 430: 1081ffd8 beq a0,at,394 <mips_atomic_set> > > + 430: 10810390 beq a0,at,1274 <out+0xd7c> > > + 430: R_MIPS_PC16 mips_atomic_set > > 434: 00000000 nop > > 438: 08000000 j 0 <handle_sys> > > 438: R_MIPS_26 _sys_sysmips > > 1 2 differ: char 239806, line 7177 > > Alan, I believe your patch > > http://sources.redhat.com/ml/binutils/2002-08/msg00611.html > > doesn't work too well. The problem is the gas relocation is very > fragile. Any changes to the gas relocation will potentially break > things. It has been discussed many times before. There are even > documented in bfd: > > The assembler used @samp{bfd_perform_relocation} for a while. This > turned out to be the wrong thing to do, since > @samp{bfd_perform_relocation} was written to handle relocations on an > existing object file, while the assembler needed to create relocations > in a new object file. The assembler was changed to use the new function > @samp{bfd_install_relocation} instead, and @samp{bfd_install_relocation} > was created as a copy of @samp{bfd_perform_relocation}. > > Unfortunately, the work did not progress any farther, so > @samp{bfd_install_relocation} remains a simple copy of > @samp{bfd_perform_relocation}, with all the odd special cases and > confusing code. This again is difficult to change, because again any > change can affect any assembler target, and so is difficult to test. > > In the case of mips, the addend for this file is wrong: > > ---branch-misc-2.s--- > .globl g1 .text > .text > .space 20 # <----- Take it out, addend will be fine. > g1: > .space 20 > x: > bal g1 > --- > > when compiled with > > # ./as-new -g0 -v -KPIC -o branch-misc-2.o branch-misc-2.s > > If I remembered right, it has something to do with addend added twice. > Several years ago, I had the pleasure to fix a COFF relocation bug. > It was ugly. I am afraid your patch may have broken other targets in > some very strange ways. Could you please look into it? > This patch seems to work for me. I can get a working kernel now. Could someone please verify it? Thanks. H.J.
Attachment:
gas-mips.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |