Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Jul 2008 17:00:02 -0700
From:      "Peter Wemm" <peter@wemm.org>
To:        obrien@freebsd.org
Cc:        cvs-src@freebsd.org, src-committers@freebsd.org, "cvs-all@freebsd.org" <cvs-all@freebsd.org>
Subject:   Re: svn commit: r180431 - in head/sys: kern sys
Message-ID:  <e7db6d980807101700u59628892g75f01aabed22bda5@mail.gmail.com>
In-Reply-To: <e7db6d980807101658o6e1da3b6j188b8eb7afd81079@mail.gmail.com>
References:  <200807101635.m6AGZv7I090311@svn.freebsd.org> <e7db6d980807101035x67390f4cx7ff762e286bc67ed@mail.gmail.com> <20080710233721.GA55073@dragon.NUXI.org> <e7db6d980807101658o6e1da3b6j188b8eb7afd81079@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 10, 2008 at 4:58 PM, Peter Wemm <peter@wemm.org> wrote:
> On Thu, Jul 10, 2008 at 4:37 PM, David O'Brien <obrien@freebsd.org> wrote:
>> On Thu, Jul 10, 2008 at 10:35:35AM -0700, Peter Wemm wrote:
>>> On Thu, Jul 10, 2008 at 9:35 AM, David E. O'Brien <obrien@freebsd.org> wrote:
>>> > Author: obrien
>>> > Date: Thu Jul 10 16:35:57 2008
>>> > New Revision: 180431
>>> > URL: http://svn.freebsd.org/changeset/base/180431
>>> >
>>> > Log:
>>> >  Allow 'elf_file_t' to be used in a wider scope.
>>> >
>>> > Modified:
>>> >  head/sys/kern/link_elf.c
>>> >  head/sys/sys/link_elf.h
>>>
>>> This really was intentional.  elf_file_t was supposed to be opaque and
>>> changeable.  What do you need this for?
>>
>> Juniper needs to be able to call functions in the loadable modules before
>> the modules are actually linked into the kernel. This will be used to
>> call platform specific initialization functions early in the bootup
>> process.  Will also need un-static link_elf_preload_parse_symbols,
>> parse_dynamic, symbol_name, link_elf_lookup_symbol,
>> link_elf_symbol_values.
>
> I think you should leave it in Juniper's tree for a tad longer:
> ../../../kern/link_elf_obj.c:88: error: redefinition of 'struct elf_file'
> ../../../kern/link_elf_obj.c:119: error: redefinition of typedef 'elf_file_t'
> ../../../sys/link_elf.h:133: error: previous declaration of
> 'elf_file_t' was here
>
> There is a better way to do what you want though.  You're using loader
> still, right?  I have old code kicking around that allowed linking the
> kernel against a hal module properly.  I did this to support linking
> the kernel against an apic / smp / apic / 8259 module and
> combinations.

I forgot to mention.. the fact that kld's happen to currently be ELF
is very specifically and deliberately not part of any public API.  All
references go via linker_* because there is no guarantee about elf,
a.out, pecoff, raw binary, whatever.

-- 
Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
"All of this is for nothing if we don't go to the stars" - JMS/B5
"If Java had true garbage collection, most programs would delete
themselves upon execution." -- Robert Sewell



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