Re: "." in vmlinux.lds.S

From: HÃn ShÄn (ææ)
Date: Fri Jun 06 2014 - 13:09:07 EST


A gentle ping?

On Tue, Jun 3, 2014 at 2:46 PM, HÃn ShÄn (ææ) <shenhan@xxxxxxxxxx> wrote:
> Hi we are trying to boot up a x86_64 chrome book using binutils 2.24 and
> kernel 3.8, but failed.
>
> After some triage work, we found that a 2-year-old binutil CL changed the
> interpretation of "." in linker script ïshort story: absolute -> relative,
> long story: https://sourceware.org/ml/binutils/2012-06/msg00155.html).
>
> After some further work, we are able to boot the kernel with a kernel patch
> pasted at EOM. I am curious, why the upstream kernel is never hit by this
> behavior? We enabled "CONFIG_DEBUG_RODATA", so we were hit, is this some
> macro not usually turned on?
>
> Patch here ----
> diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
> index d329fc4..d5dc570 100644
> --- a/arch/x86/kernel/vmlinux.lds.S
> +++ b/arch/x86/kernel/vmlinux.lds.S
> @@ -58,7 +58,7 @@ jiffies_64 = jiffies;
>
> #define X64_ALIGN_DEBUG_RODATA_END \
> . = ALIGN(HPAGE_SIZE); \
> - __end_rodata_hpage_align = .;
> + __end_rodata_hpage_align = ABSOLUTE(.);
>
> #else
>
> @@ -159,7 +159,7 @@ SECTIONS
> #ifdef CONFIG_X86_64
>
> . = ALIGN(PAGE_SIZE);
> - __vvar_page = .;
> + __vvar_page = ABSOLUTE(.);
>
> .vvar : AT(ADDR(.vvar) - LOAD_OFFSET) {
> /* work around gold bug 13023 */
> @@ -325,7 +325,7 @@ SECTIONS
> __brk_limit = .;
> }
>
> - _end = .;
> + _end = ABSOLUTE(.);
>
> STABS_DEBUG
> DWARF_DEBUG
>



--
Han Shen | Software Engineer | shenhan@xxxxxxxxxx | +1-650-440-3330
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/