Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: "H . J . Lu" <hjl@lucon.org>
To: Jakub Jelinek <jakub@redhat.com>
Cc: GNU libc hacker <libc-hacker@sources.redhat.com>,
	binutils@sourceware.cygnus.com, linux-mips@oss.sgi.com
Subject: Re: Prelink for mips (Re: MIPS broken in 2.3)
Date: Mon, 7 Jan 2002 18:29:55 -0800	[thread overview]
Message-ID: <20020107182955.A11352@lucon.org> (raw)
In-Reply-To: <20020107131604.A6383@lucon.org>; from hjl@lucon.org on Mon, Jan 07, 2002 at 01:16:04PM -0800

On Mon, Jan 07, 2002 at 01:16:04PM -0800, H . J . Lu wrote:
> > I know, but from what I understood, quickstart e.g. just assumes there won't
> > be conflicts and if there are, their handling is very costly (their
> > conflicts are just symbol indices which need to be checked out).
> > prelink conflicts are ElfW(Rela) relocs against r_symndx 0.
> > 
> > To port prelink to a new architecture, you need basically:
> > 1) determine what you need to do with relocations and special CPU sections
> >    when relocating a shared library from one address to another one
> >    (e.g. you can link a shared libs once at VMA 0, once at VMA 0xdeadb000
> >    and see what changed) - these are *_adjust_* functions
> > 2) write routines which apply relocs (*_prelink_rel*)
> > 3) write routines which create conflict relocs
> > 4) as MIPS is rel, it needs to be figured out when it is needed to convert
> >    from Rel to Rela (in i386/arm case in most cases it can be avoided,
> >    the only relocs which require it are (on i386): R_386_32 with nonzero
> >    addend (otherwise R_386_GLOB_DAT does exactly the same thing) and
> >    R_386_PC32). This is needed, because otherwise the information about the
> >    original addend is lost when the final relocated value is stored at
> >    r_offset address. Original addend is needed, if prelink cannot be used,
> >    during dynamic linking. If MIPS has some place where it stashes this
> >    for Quickstart, then it could be reused, otherwise I'm afraid REL->RELA will
> >    happen more often on MIPS than on IA-32/ARM.
> > 5) write routines which apply relocs to a buffer or apply a conflict
> >    to a buffer (these are used when doing comparisons on relocated content)
> > 
> 
> As I unsterstand, MIPS only has R_MIPS_REL32 for GOT in DSO and EXE. Do you
> have any suggestions? 

The ld.so relocates R_MIPS_REL32 using GOT which is relocated first by
a special rule. There is no relocation information for GOT. Also there
is no symbol lookup for relocating R_MIPS_REL32. I am not sure how
it will work with the current prelink.


H.J.

      reply	other threads:[~2002-01-08  3:30 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <u8ellzsg3q.fsf@gromit.moeb>
     [not found] ` <20011213093958.A6057@lucon.org>
     [not found]   ` <hou1uqclnk.fsf@gee.suse.de>
     [not found]     ` <20011217123631.G542@sunsite.ms.mff.cuni.cz>
2001-12-17 17:10       ` Prelink for mips (Re: MIPS broken in 2.3) H . J . Lu
2001-12-17 17:52         ` Jakub Jelinek
2002-01-07 21:16           ` H . J . Lu
2002-01-08  2:29             ` H . J . Lu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020107182955.A11352@lucon.org \
    --to=hjl@lucon.org \
    --cc=binutils@sourceware.cygnus.com \
    --cc=jakub@redhat.com \
    --cc=libc-hacker@sources.redhat.com \
    --cc=linux-mips@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox