Return-Path: <phcoder@gmail.com>
Received: from ?82.130.80.49? (hg-public-dock-49-dhcp.ethz.ch [82.130.80.49])
        by mx.google.com with ESMTPS id 13sm998483fks.27.2009.03.12.06.21.43
        (version=SSLv3 cipher=RC4-MD5);
        Thu, 12 Mar 2009 06:21:44 -0700 (PDT)
Message-ID: <49B90C69.60703@gmail.com>
Date: Thu, 12 Mar 2009 14:21:45 +0100
From: phcoder <phcoder@gmail.com>
User-Agent: Thunderbird 2.0.0.19 (X11/20090105)
MIME-Version: 1.0
To: David Miller <davem@davemloft.net>
Subject: Re: ELF bugfixes
References: <49B8C686.5060508@gmail.com>	<20090312.020757.187232522.davem@davemloft.net>	<49B8F067.2040503@gmail.com> <20090312.055819.95768237.davem@davemloft.net>
In-Reply-To: <20090312.055819.95768237.davem@davemloft.net>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

David Miller wrote:
> From: phcoder <phcoder@gmail.com>
> Date: Thu, 12 Mar 2009 12:22:15 +0100
> 
>> David Miller wrote:
>>> From: phcoder <phcoder@gmail.com>
>>> Date: Thu, 12 Mar 2009 09:23:34 +0100
>>>
>>>> Index: include/grub/elf.h
>>>> ===================================================================
>>>> --- include/grub/elf.h	(revision 2036)
>>>> +++ include/grub/elf.h	(working copy)
>>>> @@ -77,7 +77,7 @@
>>>>    Elf32_Half	e_shentsize;		/* Section header table entry size */
>>>>    Elf32_Half	e_shnum;		/* Section header table entry count */
>>>>    Elf32_Half	e_shstrndx;		/* Section header string table index */
>>>> -} Elf32_Ehdr;
>>>> +} __attribute__ ((packed)) Elf32_Ehdr;
>>>>  
>>> There is no reason why you should need the packed attribute here.
>>> I can't think of any cpu where this could even remotely be necessary.
>>> And if it's not necessary, all it does it emit terribly suboptimal
>>> code on RISC cpus.
>> If it doesn't make a difference in the structure why does the compiler generate different code?
> 
> Because packed also means that the alignment of the structure
> can't be assumed to be naturally word aligned.  So the compiler
> has to use byte loads and stores to load a word, for example,
> on RISC machines.
> 
> This is because the packed attribute influences how the structure is
> embedded into other structures.
> 
> This attribute controls two different things, not just local packing.

I knew it but normally when you parse files normally offsets aren't 
guaranteed to be aligned. But now it seems that elf parser is written in 
a way to guarantee at least some alignments. Then this part of patch 
probably is to be dropped or changed to proper aligned attribute

-- 

Regards
Vladimir 'phcoder' Serbinenko
