All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thiemo Seufer <ths@networkno.de>
To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org, sam@ravnborg.org
Subject: Re: [PATCH] fix modpost segfault for 64bit mipsel kernel
Date: Thu, 20 Apr 2006 17:23:19 +0100	[thread overview]
Message-ID: <20060420162319.GD10665@networkno.de> (raw)
In-Reply-To: <20060421.010237.25910405.anemo@mba.ocn.ne.jp>

Atsushi Nemoto wrote:
> On Thu, 20 Apr 2006 01:19:00 +0100, Thiemo Seufer <ths@networkno.de> wrote:
> > > +#define ELF64_MIPS_R_TYPE(i) \
> > > +  (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
> > > +   | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
> > > +		   ).r_info_fields.r_type2 << 8) \
> > > +   | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
> > > +		   ).r_info_fields.r_type3 << 16) \
> > > +   | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
> > > +		   ).r_info_fields.r_ssym << 24))
> > 
> > Why is it the right thing to combine the type info into a 32bit word?
> 
> Well, I just take ELF64_MIPS_R_TYPE() from glibc source.

It is not more useful in glibc. :-)  Any use of the TYPE data will have
to take the MIPS64 specifics in account, and thus split it up again
into single characters.

> > It will never get used as such for MIPS ELF64. I would have expected
> > something like:
> > 
> > #define ELF64_MIPS_R_INFO(sym,ssym,t3,t2,t1)		\
> > {(							\
> > 	_Elf64_Mips_R_Info info = {			\
> > 		.r_sym = sym,				\
> > 		.r_ssym = ssym,				\
> > 		.r_type3 = t3,				\
> > 		.r_type2 = t2,				\
> > 		.r_type1 = t1,				\
> > 	}						\
> > 	(Elf64_Xword)info;				\
> > )}
> > 
> > without a corresponding ELF64_MIPS_R_TYPE, and then:
> > 
> > 	if (hdr->e_ident[EI_CLASS] == ELFCLASS64
> > 	    && hdr->e_machine == EM_MIPS) {
> > 		_Elf64_Mips_R_Info info = (_Elf64_Mips_R_Info)r.r_info;
> > 		r.r_info = ELF64_MIPS_R_INFO(TO_NATIVE(info.r_sym),
> > 					     info.r_ssym, info.r_type3,
> > 					     info.r_type2, info.r_type1);
> > 	}
> 
> Sorry, I can not see what you mean ... it just does byte-swap only
> r_sym part, doesn't it?  It is not enough because a position of r_sym
> in MIPS ELF64 r_info is different from standard ELF64 r_info.

But it does so for a _Elf64_Mips_R_Info struct, which already keeps
the position of its r_sym field endianness independent.


Thiemo

  reply	other threads:[~2006-04-20 16:11 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-17 12:00 [PATCH] fix modpost segfault for 64bit mipsel kernel Atsushi Nemoto
2006-04-17 12:53 ` Thiemo Seufer
2006-04-17 14:07   ` Thiemo Seufer
2006-04-17 15:47     ` Atsushi Nemoto
2006-04-17 16:27       ` Thiemo Seufer
2006-04-19  2:22         ` Atsushi Nemoto
2006-04-20  0:19           ` Thiemo Seufer
2006-04-20 16:02             ` Atsushi Nemoto
2006-04-20 16:23               ` Thiemo Seufer [this message]
2006-04-20 17:05                 ` Atsushi Nemoto
2006-04-21 13:57                   ` Thiemo Seufer
2006-04-17 13:40 ` Sam Ravnborg
2006-04-17 16:03   ` Atsushi Nemoto

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=20060420162319.GD10665@networkno.de \
    --to=ths@networkno.de \
    --cc=anemo@mba.ocn.ne.jp \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.org \
    --cc=sam@ravnborg.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.