Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Feb 2002 22:06:51 -0500 (EST)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        dfr@nlsystems.com
Cc:        freebsd-alpha@freebsd.org
Subject:   alpha klds and the new linker
Message-ID:  <15476.25675.437556.224218@grasshopper.cs.duke.edu>

next in thread | raw e-mail | index | archive | help

Doug,

There's something about the new linker (from the latest binutils
import) which breaks klds on alpha.  If I attempt to load a module
built with the new binutils, things go kaboom like this:

<...>
fatal kernel trap:

    trap entry     = 0x2 (memory management fault)
    faulting va    = 0xfffffe00015502f4
    type           = access violation
    cause          = load instructon
    pc             = 0xfffffc0000490984
    ra             = 0xfffffc000049094c
    sp             = 0xfffffe000b749b80
    usp            = 0x11fffcb0
    curthread      = 0xfffffe000b3627c0
        pid = 45, comm = kldload

Stopped at      linker_file_register_modules+0xa4:      ldl     t0,0x4(a0) <0xfffffe00015502f4> <t0=0x1,a0=0xfffffe00015502f0>
db> tr
linker_file_register_modules() at linker_file_register_modules+0xa4
linker_load_file() at linker_load_file+0xc4
linker_load_module() at linker_load_module+0x13c
kldload() at kldload+0x148
syscall() at syscall+0x2c4
XentSys() at XentSys+0x64
--- syscall (304, FreeBSD ELF, kldload) ---


The faulting code is:

    for (mdp = start; mdp < stop; mdp++) {
    if ((*mdp)->md_type != MDT_MODULE)	<-----------	
        continue;


Of course, I don't have a good stack from inside of gdb.  But I"m able
to get at the lf.  The elf info looks like this:

  preloaded = 0, 
  address = 0xfffffe0001516000 "\177ELF\002\001\001\t", 
  dynamic = 0xfffffe00015332c8, 
  nbuckets = 197, 
  nchains = 231, 
  buckets = 0xfffffe00015160f8, 
  chains = 0xfffffe0001516720, 
  hash = 0x0, 
  strtab = 0xfffffe0001518400 "", 
  strsz = 1882, 
  symtab = 0xfffffe0001516e58, 
  got = 0xfffffe00015333f8, 
  pltrel = 0x0, 
  pltrelsize = 0, 
  pltrela = 0xfffffe000151b158, 
  pltrelasize = 2160, 
  rel = 0x0, 
  relsize = 0, 
  rela = 0xfffffe0001518b60, 
  relasize = 9720, 
  modptr = 0x0, 
  ddbsymtab = 0xfffffe0001534000, 
  ddbsymcnt = 349, 
  ddbstrtab = 0xfffffe0001539000 "", 
  ddbstrcnt = 3865, 
  symbase = 0xfffffe0001534000 "", 
  strbase = 0xfffffe0001539000 "", 



The klds produced by the new linker look like this:

osf1.ko:     file format elf64-alpha

Sections:
Idx Name          Size      VMA               LMA               File off  Algn  Flags
  0 .hash         00000d70  00000000000000e8  00000000000000e8  000000e8  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .dynsym       000015a8  0000000000000e58  0000000000000e58  00000e58  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .dynstr       0000075a  0000000000002400  0000000000002400  00002400  2**0  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .rela.data    00001e60  0000000000002b60  0000000000002b60  00002b60  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .relaset_modmetadata_set 00000078  00000000000049c0  00000000000049c0  000049c0  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .relaset_sysinit_set 00000018  0000000000004a38  0000000000004a38  00004a38  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .rela.got     00000708  0000000000004a50  0000000000004a50  00004a50  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .rela.plt     00000870  0000000000005158  0000000000005158  00005158  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .text         00005be0  00000000000059e0  00000000000059e0  000059e0  2**5  CONTENTS, ALLOC, LOAD, READONLY, CODE
  9 .rodata       00000883  000000000000b5c0  000000000000b5c0  0000b5c0  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 10 set_modmetadata_set 00000028  000000000000be48  000000000000be48  0000be48  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 11 set_sysinit_set 00000008  000000000000be70  000000000000be70  0000be70  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 12 .data         00001450  000000000001be78  000000000001be78  0000be78  2**3  CONTENTS, ALLOC, LOAD, DATA
 13 .dynamic      00000130  000000000001d2c8  000000000001d2c8  0000d2c8  2**3  CONTENTS, ALLOC, LOAD, DATA
 14 .plt          00000458  000000000001d3f8  000000000001d3f8  0000d3f8  2**3  CONTENTS, ALLOC, LOAD, CODE
 15 .got          00000528  000000000001d850  000000000001d850  0000d850  2**3  CONTENTS, ALLOC, LOAD, DATA
 16 .sbss         00000000  000000000001dd78  000000000001dd78  0000dd78  2**0  CONTENTS, SMALL_DATA
 17 .bss          00000000  000000000001dd78  000000000001dd78  0000dd78  2**0  ALLOC
 18 .comment      0000010a  0000000000000000  0000000000000000  0000dd78  2**0  CONTENTS, READONLY
 19 .debug_line   00000129  0000000000000000  0000000000000000  0000de82  2**0  CONTENTS, READONLY, DEBUGGING
 20 .note         0000008c  0000000000000000  0000000000000000  0000dfab  2**0  CONTENTS, READONLY


And those produced by the old linker look like this:

osf1.ko.works:     file format elf64-alpha

Sections:
Idx Name          Size      VMA               LMA               File off  Algn  Flags
  0 .hash         00000d70  00000000000000e8  00000000000000e8  000000e8  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .dynsym       000015a8  0000000000000e58  0000000000000e58  00000e58  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .dynstr       000007d3  0000000000002400  0000000000002400  00002400  2**0  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .rela.data    00001e60  0000000000002bd8  0000000000002bd8  00002bd8  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .relaset_modmetadata_set 00000078  0000000000004a38  0000000000004a38  00004a38  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .relaset_sysinit_set 00000018  0000000000004ab0  0000000000004ab0  00004ab0  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .rela.got     00000708  0000000000004ac8  0000000000004ac8  00004ac8  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .rela.plt     00000870  00000000000051d0  00000000000051d0  000051d0  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .text         00005be0  0000000000005a40  0000000000005a40  00005a40  2**5  CONTENTS, ALLOC, LOAD, READONLY, CODE
  9 .rodata       00000883  000000000000b620  000000000000b620  0000b620  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 10 set_modmetadata_set 00000028  000000000000bea8  000000000000bea8  0000bea8  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 11 set_sysinit_set 00000008  000000000000bed0  000000000000bed0  0000bed0  2**3  CONTENTS, ALLOC, LOAD, READONLY, DATA
 12 .data         00001450  000000000001bed8  000000000001bed8  0000bed8  2**3  CONTENTS, ALLOC, LOAD, DATA
 13 .plt          00000458  000000000001d328  000000000001d328  0000d328  2**3  CONTENTS, ALLOC, LOAD, CODE
 14 .got          00000528  000000000001d780  000000000001d780  0000d780  2**3  CONTENTS, ALLOC, LOAD, DATA
 15 .dynamic      000000e0  000000000001dca8  000000000001dca8  0000dca8  2**3  CONTENTS, ALLOC, LOAD, DATA
 16 .sbss         00000000  000000000001dd88  000000000001dd88  0000dd88  2**0  CONTENTS, SMALL_DATA
 17 .bss          00000000  000000000001dd88  000000000001dd88  0000dd88  2**0  ALLOC
 18 .comment      0000010a  0000000000000000  0000000000000000  0000dd88  2**0  CONTENTS, READONLY
 19 .debug_line   00000129  0000000000000000  0000000000000000  0000de92  2**0  CONTENTS, READONLY, DEBUGGING
 20 .note         0000008c  0000000000000000  0000000000000000  0000dfbb  2**0  CONTENTS, READONLY


Do you have any feeling for what might be going wrong here?

Thanks,

Drew

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15476.25675.437556.224218>