[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4974AAA9.2000406@twiddle.net>
Date: Mon, 19 Jan 2009 08:30:33 -0800
From: Richard Henderson <rth@...ddle.net>
To: Christoph Lameter <cl@...ux-foundation.org>
CC: Rusty Russell <rusty@...tcorp.com.au>, Ingo Molnar <mingo@...e.hu>,
akpm@...ux-foundation.org, torvalds@...ux-foundation.org,
andi@...stfloor.org, ak@...ux.intel.com, sfr@...b.auug.org.au,
travis@....com, linux-kernel@...r.kernel.org
Subject: Re: [patch 2/8] compiler-gcc.h: add more comments to RELOC_HIDE
Christoph Lameter wrote:
> On Thu, 15 Jan 2009, Richard Henderson wrote:
>
>> I didn't explore the space of possible solutions, merely gave Rusty a solution
>> that I knew would work, and would never fail because the compiler would never
>> look through the asm.
>>
>> I wouldn't be surprised if the compiler thought "(long)&foo - large_constant"
>> could be put back together into a small-data relocation, simply because at the
>> level at which that optimization is performed, we've thrown away type data
>> like long and void*; we only have modes.
>
> We are talking about
>
> (long)&foo + long_variable
>
> Are you saying that the compiler will be ignoring the high bits in
> variable because of the size of foo?
No, I'm saying that all those high bits will be passed along and won't
fit in the 16-bit relocation that'll come out of the assembler, leading
to a hard linker error.
> It looks like its useless and more an indication of either a broken
> compiler or wrong assumptions about the compiler. Removing RELOC_HIDE
> should allow the compiler to freely optimize the per cpu address
> calculations.
Something I'm pretty sure we don't want the compiler to be able to do.
r~
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists