From: David McCullough <David_Mccullough@securecomputing.com>
To: Robin Getz <rgetz@blackfin.uclinux.org>
Cc: uclinux-dist-devel@blackfin.uclinux.org, bryan.wu@analog.com,
Bernd Schmidt <bernd.schmidt@analog.com>,
Greg Ungerer <gerg@snapgear.com>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
ysato@users.sourceforge.jp, lethal@linux-sh.org,
miles@lsi.nec.co.jp, linux-m32r@ml.linux-m32r.org
Subject: Re: [PATCH] binfmt_flat: minimum support for theBlackfin relocations
Date: Thu, 20 Sep 2007 11:55:25 +1000 [thread overview]
Message-ID: <20070920015525.GA16615@securecomputing.com> (raw)
In-Reply-To: <200709192131.09469.rgetz@blackfin.uclinux.org>
Jivin Robin Getz lays it down ...
> On Tue 18 Sep 2007 04:09, Bryan Wu pondered:
> > From: Bernd Schmidt <bernd.schmidt@analog.com>
> >
> > This just adds minimum support for the Blackfin relocations,
> > since we don't have enough space in each reloc. The idea
> > is to store a value with one relocation so that subsequent ones can
> > access it.
> >
> > Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
> > Signed-off-by: Bryan Wu <bryan.wu@analog.com>
> > Cc: David McCullough <davidm@snapgear.com>
> > Cc: Greg Ungerer <gerg@snapgear.com>
>
> Adding the other appropriate maintainers. for h8, m32r, sh and v850.
Looks fine to me, obviously impacts the existing arches very little.
Can't see why it shouldn't get included,
Cheers,
Davidm
> > ---
> > fs/binfmt_flat.c | 5 ++++-
> > include/asm-h8300/flat.h | 3 ++-
> > include/asm-m32r/flat.h | 3 ++-
> > include/asm-m68knommu/flat.h | 3 ++-
> > include/asm-sh/flat.h | 3 ++-
> > include/asm-v850/flat.h | 4 +++-
> > 6 files changed, 15 insertions(+), 6 deletions(-)
> > diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
> > index 7b0265d..13b58f8 100644
> > --- a/fs/binfmt_flat.c
> > +++ b/fs/binfmt_flat.c
> > @@ -742,6 +742,7 @@ static int load_flat_file(struct linux_binprm * bprm,
> > * __start to address 4 so that is okay).
> > */
> > if (rev > OLD_FLAT_VERSION) {
> > + unsigned long persistent = 0;
> > for (i=0; i < relocs; i++) {
> > unsigned long addr, relval;
> >
> > @@ -749,6 +750,8 @@ static int load_flat_file(struct linux_binprm * bprm,
> > relocated (of course, the address has to be
> > relocated first). */
> > relval = ntohl(reloc[i]);
> > + if (flat_set_persistent (relval, &persistent))
> > + continue;
> > addr = flat_get_relocate_addr(relval);
> > rp = (unsigned long *) calc_reloc(addr, libinfo, id, 1);
> > if (rp == (unsigned long *)RELOC_FAILED) {
> > @@ -757,7 +760,7 @@ static int load_flat_file(struct linux_binprm * bprm,
> > }
> >
> > /* Get the pointer's value. */
> > - addr = flat_get_addr_from_rp(rp, relval, flags);
> > + addr = flat_get_addr_from_rp(rp, relval, flags, &persistent);
> > if (addr != 0) {
> > /*
> > * Do the relocation. PIC relocs in the data section are
> > diff --git a/include/asm-h8300/flat.h b/include/asm-h8300/flat.h
> > index c20eee7..2a87350 100644
> > --- a/include/asm-h8300/flat.h
> > +++ b/include/asm-h8300/flat.h
> > @@ -9,6 +9,7 @@
> > #define flat_argvp_envp_on_stack() 1
> > #define flat_old_ram_flag(flags) 1
> > #define flat_reloc_valid(reloc, size) ((reloc) <= (size))
> > +#define flat_set_persistent(relval, p) 0
> >
> > /*
> > * on the H8 a couple of the relocations have an instruction in the
> > @@ -18,7 +19,7 @@
> > */
> >
> > #define flat_get_relocate_addr(rel) (rel)
> > -#define flat_get_addr_from_rp(rp, relval, flags) \
> > +#define flat_get_addr_from_rp(rp, relval, flags, persistent) \
> > (get_unaligned(rp) & ((flags & FLAT_FLAG_GOTPIC) ? 0xffffffff: 0x00ffffff))
> > #define flat_put_addr_at_rp(rp, addr, rel) \
> > put_unaligned (((*(char *)(rp)) << 24) | ((addr) & 0x00ffffff), rp)
> > diff --git a/include/asm-m32r/flat.h b/include/asm-m32r/flat.h
> > index 1b285f6..d851cf0 100644
> > --- a/include/asm-m32r/flat.h
> > +++ b/include/asm-m32r/flat.h
> > @@ -15,9 +15,10 @@
> > #define flat_stack_align(sp) (*sp += (*sp & 3 ? (4 - (*sp & 3)): 0))
> > #define flat_argvp_envp_on_stack() 0
> > #define flat_old_ram_flag(flags) (flags)
> > +#define flat_set_persistent(relval, p) 0
> > #define flat_reloc_valid(reloc, size) \
> > (((reloc) - textlen_for_m32r_lo16_data) <= (size))
> > -#define flat_get_addr_from_rp(rp, relval, flags) \
> > +#define flat_get_addr_from_rp(rp, relval, flags, persistent) \
> > m32r_flat_get_addr_from_rp(rp, relval, (text_len) )
> >
> > #define flat_put_addr_at_rp(rp, addr, relval) \
> > diff --git a/include/asm-m68knommu/flat.h b/include/asm-m68knommu/flat.h
> > index 2d836ed..814b517 100644
> > --- a/include/asm-m68knommu/flat.h
> > +++ b/include/asm-m68knommu/flat.h
> > @@ -9,8 +9,9 @@
> > #define flat_argvp_envp_on_stack() 1
> > #define flat_old_ram_flag(flags) (flags)
> > #define flat_reloc_valid(reloc, size) ((reloc) <= (size))
> > -#define flat_get_addr_from_rp(rp, relval, flags) get_unaligned(rp)
> > +#define flat_get_addr_from_rp(rp, relval, flags, p) get_unaligned(rp)
> > #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp)
> > #define flat_get_relocate_addr(rel) (rel)
> > +#define flat_set_persistent(relval, p) 0
> >
> > #endif /* __M68KNOMMU_FLAT_H__ */
> > diff --git a/include/asm-sh/flat.h b/include/asm-sh/flat.h
> > index 0d5cc04..dc4f595 100644
> > --- a/include/asm-sh/flat.h
> > +++ b/include/asm-sh/flat.h
> > @@ -16,8 +16,9 @@
> > #define flat_argvp_envp_on_stack() 0
> > #define flat_old_ram_flag(flags) (flags)
> > #define flat_reloc_valid(reloc, size) ((reloc) <= (size))
> > -#define flat_get_addr_from_rp(rp, relval, flags) get_unaligned(rp)
> > +#define flat_get_addr_from_rp(rp, relval, flags, p) get_unaligned(rp)
> > #define flat_put_addr_at_rp(rp, val, relval) put_unaligned(val,rp)
> > #define flat_get_relocate_addr(rel) (rel)
> > +#define flat_set_persistent(relval, p) 0
> >
> > #endif /* __ASM_SH_FLAT_H */
> > diff --git a/include/asm-v850/flat.h b/include/asm-v850/flat.h
> > index 3888f59..17f0ea5 100644
> > --- a/include/asm-v850/flat.h
> > +++ b/include/asm-v850/flat.h
> > @@ -25,6 +25,7 @@
> > #define flat_stack_align(sp) /* nothing needed */
> > #define flat_argvp_envp_on_stack() 0
> > #define flat_old_ram_flag(flags) (flags)
> > +#define flat_set_persistent(relval, p) 0
> >
> > /* We store the type of relocation in the top 4 bits of the `relval.'
> > */
> >
> > @@ -46,7 +47,8 @@ flat_get_relocate_addr (unsigned long relval)
> > For the v850, RP should always be half-word aligned. */
> > static inline unsigned long flat_get_addr_from_rp (unsigned long *rp,
> > unsigned long relval,
> > - unsigned long flags)
> > + unsigned long flags,
> > + unsigned long *persistent)
> > {
> > short *srp = (short *)rp;
--
David McCullough, david_mccullough@securecomputing.com, Ph:+61 734352815
Secure Computing - SnapGear http://www.uCdot.org http://www.cyberguard.com
next prev parent reply other threads:[~2007-09-20 1:55 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-18 8:09 [PATCH] binfmt_flat: minimum support for the Blackfin relocations Bryan Wu
2007-09-19 15:52 ` [Uclinux-dist-devel] " Bryan Wu
2007-09-20 1:31 ` [PATCH] binfmt_flat: minimum support for theBlackfin relocations Robin Getz
2007-09-20 1:55 ` David McCullough [this message]
2007-09-20 2:46 ` Robin Getz
2007-09-20 3:18 ` Paul Mundt
2007-09-20 3:42 ` Mike Frysinger
2007-09-20 3:54 ` Paul Mundt
2007-09-20 6:08 ` Robin Getz
2007-09-20 6:34 ` Bryan Wu
2007-09-20 6:41 ` Bryan Wu
2007-09-20 7:35 ` Miles Bader
2007-09-20 12:04 ` Bernd Schmidt
2007-09-20 14:25 ` Paul Mundt
2007-09-20 14:56 ` Bernd Schmidt
2007-09-20 15:03 ` David McCullough
2007-09-21 1:44 ` Robin Getz
2007-09-21 3:32 ` David McCullough
2007-09-28 15:46 ` Bryan Wu
2007-09-20 7:42 ` Hirokazu Takata
2007-09-28 23:08 ` [PATCH] binfmt_flat: minimum support for the Blackfin relocations Andrew Morton
2007-09-28 23:48 ` Bernd Schmidt
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=20070920015525.GA16615@securecomputing.com \
--to=david_mccullough@securecomputing.com \
--cc=akpm@linux-foundation.org \
--cc=bernd.schmidt@analog.com \
--cc=bryan.wu@analog.com \
--cc=gerg@snapgear.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m32r@ml.linux-m32r.org \
--cc=miles@lsi.nec.co.jp \
--cc=rgetz@blackfin.uclinux.org \
--cc=uclinux-dist-devel@blackfin.uclinux.org \
--cc=ysato@users.sourceforge.jp \
/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