From owner-freebsd-alpha Wed Feb 20 19: 7:28 2002 Delivered-To: freebsd-alpha@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id 4AF2C37B400 for ; Wed, 20 Feb 2002 19:07:22 -0800 (PST) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.3/8.9.3) with ESMTP id WAA08580; Wed, 20 Feb 2002 22:07:21 -0500 (EST) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.6/8.9.1) id g1L36pB71925; Wed, 20 Feb 2002 22:06:51 -0500 (EST) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15476.25675.437556.224218@grasshopper.cs.duke.edu> Date: Wed, 20 Feb 2002 22:06:51 -0500 (EST) To: dfr@nlsystems.com Cc: freebsd-alpha@freebsd.org Subject: alpha klds and the new linker X-Mailer: VM 6.75 under 21.1 (patch 12) "Channel Islands" XEmacs Lucid Sender: owner-freebsd-alpha@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org 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> 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