NetBSD Problem Report #2824

Received: (qmail-queue invoked from smtpd); 9 Oct 1996 18:15:58 -0000
Message-Id: <199610091809.OAA14247@inca.>
Date: Wed, 9 Oct 1996 14:09:21 -0400 (EDT)
From: Ezra Story <ezy@panix.com>
Reply-To: ezy@panix.com
To: gnats-bugs@gnats.netbsd.org
Subject: Fixes objc runtime for dynamic loading of modules
X-Send-Pr-Version: 3.95

>Number:         2824
>Category:       lib
>Synopsis:       Fixes objc runtime for dynamic loading of modules
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    lib-bug-people
>State:          closed
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 09 11:20:02 +0000 1996
>Closed-Date:    Tue Oct 15 21:03:47 +0000 2002
>Last-Modified:  Tue Oct 15 21:03:47 +0000 2002
>Originator:     Ezra Story
>Release:        1.2_BETA
>Organization:
>Environment:
System: NetBSD inca 1.2 NetBSD 1.2 (INCA) #124: Wed Sep 18 10:10:24 EDT 1996 ezy@inca:/usr/src/sys/arch/amiga/compile/INCA amiga


>Description:
These are a set of patches to the objc runtime for dynamic loading and
linking of libraries with modules in them.  It consists of a simple patch
to class.c to add a hook in lookup_class which points to code in dynamic.c
which does all the dirty work.  This stuff is NetBSD specific since it
relies on internals of the rtld netbsd uses.  It shouldn't be arch
specific however.

On the first class lookup, it will locate any constructor lists generated
by ld in the shared libraries the executable has linked to, and call the
constructors.  Then it will restart the lookup -- which will probably find
the class it wanted this time. :)  dynamic.c also provides a wrapper around
dlopen (objc_dlopen) which does a dlopen on a shared object and calls any
constructors hiding in it before returning the handle.

When you dynamically link objc modules, you will find the linker
complaining about RRS Text relocation.  This is because cc1obj plops a
reference to objc_class_name_* in the text segment of generated objects in
order to pull in statically linked module libraries.  It really doesn't
harm anything since its not used otherwise, but I've also included a patch
to objc-act.c that may or may not eliminate that problem (my computer is
way too slow to wait for cc1obj to compile :)).
>How-To-Repeat:
>Fix:
The fix:

begin 644 objcdynruntime.tgz
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
)`;L+@GP`*```
`
end
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: lib-bug-people->tv 
Responsible-Changed-By: is 
Responsible-Changed-When: Sat Feb 13 12:32:02 PST 1999 
Responsible-Changed-Why:  
tv is the de facto Mr Toolchain. 
.# 
Responsible-Changed-From-To: tv->lib-bug-people 
Responsible-Changed-By: fair 
Responsible-Changed-When: Tue Jul 23 19:35:42 PDT 2002 
Responsible-Changed-Why:  
Todd Vierling has resigned from the NetBSD Project. 
State-Changed-From-To: open->closed 
State-Changed-By: is 
State-Changed-When: Tue Oct 15 14:01:27 PDT 2002 
State-Changed-Why:  
The original  problem is that the a.out ld.so didn't run constructors. 
With the switch of NetBSD to the new toolchain, this problem is fixed, so 
the workaround in this PR isn't necessary. 
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.