All of lore.kernel.org
 help / color / mirror / Atom feed
From: David McCullough <david_mccullough@mcafee.com>
To: Mike Frysinger <vapier@gentoo.org>
Cc: uclinux-dev@uclinux.org, David Howells <dhowells@redhat.com>,
	Greg Ungerer <gerg@uclinux.org>, Paul Mundt <lethal@linux-sh.org>,
	uclinux-dist-devel@blackfin.uclinux.org,
	microblaze-uclinux@itee.uq.edu.au,
	Michal Simek <monstr@monstr.eu>,
	linux-m32r@ml.linux-m32r.org,
	Hirokazu Takata <takata@linux-m32r.org>,
	linux-kernel@vger.kernel.org,
	Yoshinori Sato <ysato@users.sourceforge.jp>
Subject: Re: [PATCH 1/2 v2] FLAT: split the stack & data alignments
Date: Fri, 28 May 2010 16:23:42 +1000	[thread overview]
Message-ID: <20100528062342.GA20365@mcafee.com> (raw)
In-Reply-To: <1274863506-14168-1-git-send-email-vapier@gentoo.org>


Jivin Mike Frysinger lays it down ...
> The stack and data have different alignment requirements, so don't force
> them to wear the same shoe.  Increase the data alignment to match that
> which the elf2flt linker script has always been using: 0x20 bytes.  Not
> only does this bring the kernel loader in line with the toolchain, but
> it also fixes a swath of gcc tests which try to force larger alignment
> values but randomly fail when the FLAT loader fails to deliver.
> 
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>

Acked-by: David McCullough <david_mccullough@mcafee.com>

Cheers,
Davidm

> ---
> v2
> 	- split changes & document better
> 
>  fs/binfmt_flat.c |   23 +++++++++++++++--------
>  1 files changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
> index 49566c1..b865622 100644
> --- a/fs/binfmt_flat.c
> +++ b/fs/binfmt_flat.c
> @@ -56,15 +56,22 @@
>  #endif
>  
>  /*
> - * User data (stack, data section and bss) needs to be aligned
> - * for the same reasons as SLAB memory is, and to the same amount.
> - * Avoid duplicating architecture specific code by using the same
> - * macro as with SLAB allocation:
> + * User data (data section and bss) needs to be aligned.
> + * We pick 0x20 here because it is the max value elf2flt has always
> + * used in producing FLAT files, and because it seems to be large
> + * enough to make all the gcc alignment related tests happy.
> + */
> +#define FLAT_DATA_ALIGN	(0x20)
> +
> +/*
> + * User data (stack) also needs to be aligned.
> + * Here we can be a bit looser than the data sections since this
> + * needs to only meet arch ABI requirements.
>   */
>  #ifdef ARCH_SLAB_MINALIGN
> -#define FLAT_DATA_ALIGN	(ARCH_SLAB_MINALIGN)
> +#define FLAT_STACK_ALIGN	(ARCH_SLAB_MINALIGN)
>  #else
> -#define FLAT_DATA_ALIGN	(sizeof(void *))
> +#define FLAT_STACK_ALIGN	(sizeof(void *))
>  #endif
>  
>  #define RELOC_FAILED 0xff00ff01		/* Relocation incorrect somewhere */
> @@ -129,7 +136,7 @@ static unsigned long create_flat_tables(
>  
>  	sp = (unsigned long *)p;
>  	sp -= (envc + argc + 2) + 1 + (flat_argvp_envp_on_stack() ? 2 : 0);
> -	sp = (unsigned long *) ((unsigned long)sp & -FLAT_DATA_ALIGN);
> +	sp = (unsigned long *) ((unsigned long)sp & -FLAT_STACK_ALIGN);
>  	argv = sp + 1 + (flat_argvp_envp_on_stack() ? 2 : 0);
>  	envp = argv + (argc + 1);
>  
> @@ -876,7 +883,7 @@ static int load_flat_binary(struct linux_binprm * bprm, struct pt_regs * regs)
>  	stack_len = TOP_OF_ARGS - bprm->p;             /* the strings */
>  	stack_len += (bprm->argc + 1) * sizeof(char *); /* the argv array */
>  	stack_len += (bprm->envc + 1) * sizeof(char *); /* the envp array */
> -	stack_len += FLAT_DATA_ALIGN - 1;  /* reserve for upcoming alignment */
> +	stack_len += FLAT_STACK_ALIGN - 1;  /* reserve for upcoming alignment */
>  	
>  	res = load_flat_file(bprm, &libinfo, 0, &stack_len);
>  	if (IS_ERR_VALUE(res))
> -- 
> 1.7.1
> 
> 
> 

-- 
David McCullough,      david_mccullough@mcafee.com,  Ph:+61 734352815
McAfee - SnapGear      http://www.mcafee.com         http://www.uCdot.org

  parent reply	other threads:[~2010-05-28  6:24 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-25 19:24 [PATCH] FLAT: allow arches to declare a larger alignment than the slab Mike Frysinger
2010-05-25 19:50 ` Geert Uytterhoeven
2010-05-25 21:07 ` Paul Mundt
2010-05-25 23:17   ` Mike Frysinger
2010-05-26  2:23     ` Jie Zhang
2010-05-26  6:59       ` Geert Uytterhoeven
2010-05-26  7:23         ` Mike Frysinger
2010-05-26  7:33           ` Paul Mundt
2010-05-26  7:36             ` Mike Frysinger
2010-05-26  7:36       ` Mike Frysinger
2010-05-26  7:48     ` Paul Mundt
2010-05-26  8:01       ` Mike Frysinger
2010-05-26  7:24 ` Michal Simek
2010-05-26  8:45 ` [PATCH 1/2 v2] FLAT: split the stack & data alignments Mike Frysinger
2010-05-27  8:24   ` Michal Simek
2010-05-27 18:30     ` [Uclinux-dist-devel] " Mike Frysinger
2010-05-27 23:15       ` [microblaze-uclinux] " David McCullough
2010-05-28  4:57         ` Mike Frysinger
2010-05-28  6:05   ` Mike Frysinger
2010-05-28  6:23   ` David McCullough [this message]
2010-05-28  6:40   ` Greg Ungerer
2010-05-26  8:45 ` [PATCH 2/2 v2] FLAT: tweak default stack alignment Mike Frysinger
2010-05-28  6:24   ` David McCullough
2010-05-28  6:39   ` Greg Ungerer
2010-06-06  7:12   ` [PATCH v3] " Mike Frysinger

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=20100528062342.GA20365@mcafee.com \
    --to=david_mccullough@mcafee.com \
    --cc=dhowells@redhat.com \
    --cc=gerg@uclinux.org \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m32r@ml.linux-m32r.org \
    --cc=microblaze-uclinux@itee.uq.edu.au \
    --cc=monstr@monstr.eu \
    --cc=takata@linux-m32r.org \
    --cc=uclinux-dev@uclinux.org \
    --cc=uclinux-dist-devel@blackfin.uclinux.org \
    --cc=vapier@gentoo.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 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.