home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.unix.bsd
- Path: sparky!uunet!cs.utexas.edu!uwm.edu!caen!hellgate.utah.edu!fcom.cc.utah.edu!cs.weber.edu!terry
- From: terry@cs.weber.edu (A Wizard of Earth C)
- Subject: Shared Libraries for 386BSD
- Message-ID: <1992Sep11.154912.25093@fcom.cc.utah.edu>
- Keywords: shared libraries X X11
- Sender: news@fcom.cc.utah.edu
- Organization: Weber State University (Ogden, UT)
- References: <18lkkkINN14d@agate.berkeley.edu> <veit.716107923@du9ds3> <7dnL02y821gh01@JUTS.ccc.amdahl.com>
- Date: Fri, 11 Sep 92 15:49:12 GMT
- Lines: 65
-
- In article <7dnL02y821gh01@JUTS.ccc.amdahl.com> gab10@griffincd.amdahl.com (Gary A Browning) writes:
- >I just finished installing X and noticed that most binaries are several times
- >larger than expected due to the lack of shared libraries. I caught an article
- >posted here a few days back that quickly described the SysVr3 approach of using
- >fixed addresses for the libraries and the Sun/SysVr4 approach of using position
- >independent code.
- >
- >I tend to dislike the SysVr3 method since I got the impression that the source
- >code had to be written differently (though I am not sure why). I also noted
- >that the GCC-2.2.2 compiler I just got compiled can produce PIC code which
- >would be one of the major hurdles for the SysVr4 method.
- >
- >Any knowledgable person want to talk a little more about the pros and cons of
- >these two (or any other) approach?
-
- Position independant code has a lot to recommend it, not the least
- of which is the ability to page the code in and out in pagesize hunks, and
- the ability map these pages, individually, into the end of the processes
- address space for the duration of their use (you would probably want to
- have room for two pages to take into account looping of execution across one
- page boundry).
-
- Fixed code can have the same thing done, but this usually involves
- swapping the library pages for low-core process pages (as opposed to the
- 3B1 method of locating the library at a known location, where the "stub"
- call routines actually do the calling by known address offset and each
- library is loaded to a fixed memory location above the "reasonable" size
- of a user process).
-
- VMS does it using an image, where a process may map sections of the
- image into it's own address space. This was a compromise for persistant
- object mapping without a great deal of change to the OS itself.
-
- I personally vote for the PIC approach, since it seems to restrict
- the size of my programs less, and generally will not result in swapping
- out perfectly good real code in my program while there is space left at
- the end of my address range.
-
- The main problem with PIC is the nature of some of the errors
- in code generation with gcc 2.2.2, problems dealing with the code in
- gas (which still needs a lot of work to make PIC binaries), and the
- linker and kernel work necessary to link against "nonexistant" libraries
- and demand page a file other than our executable into our address space
- and execute it. The other big win, that of loadable kernel modules, is
- actually achievable with the compiler that came with 386bsd, and doesn't
- PIC or gcc 2.2.2.
-
- >What ever happened to the Jolix's special interest groups? Wasn't one of them
- >addressing the shared library problem?
-
- I haven't heard of anything like this, except the sideways reference
- in Lynne's posting of a preferred newsgroup list.
-
-
- Terry Lambert
- terry_lambert@gateway.novell.com
- terry@icarus.weber.edu
- ---
- Any opinions in this posting are my own and not those of my present
- or previous employers.
- --
- -------------------------------------------------------------------------------
- "I have an 8 user poetic license" - me
- Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial
- -------------------------------------------------------------------------------
-