[PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin - Kernel

This is a discussion on [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin - Kernel ; The purpose of this patch is to make kernel buildable with "gcc -ffunction-sections -fdata-sections". This patch fixes blackfin architecture. Signed-off-by: Denys Vlasenko -- vda --- 0.org/arch/blackfin/kernel/vmlinux.lds.S Wed Jul 2 00:40:40 2008 +++ 1.fixname/arch/blackfin/kernel/vmlinux.lds.S Wed Jul 2 00:45:51 2008 @@ -91,7 ...

+ Reply to Thread
Results 1 to 4 of 4

Thread: [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin

  1. [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin

    The purpose of this patch is to make kernel buildable
    with "gcc -ffunction-sections -fdata-sections".
    This patch fixes blackfin architecture.

    Signed-off-by: Denys Vlasenko
    --
    vda


    --- 0.org/arch/blackfin/kernel/vmlinux.lds.S Wed Jul 2 00:40:40 2008
    +++ 1.fixname/arch/blackfin/kernel/vmlinux.lds.S Wed Jul 2 00:45:51 2008
    @@ -91,7 +91,7 @@
    __sdata = .;
    /* This gets done first, so the glob doesn't suck it in */
    . = ALIGN(32);
    - *(.data.cacheline_aligned)
    + *(.cacheline_aligned.data)

    #if !L1_DATA_A_LENGTH
    . = ALIGN(32);
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin

    On Tue, Jul 1, 2008 at 8:35 PM, Denys Vlasenko wrote:
    > The purpose of this patch is to make kernel buildable
    > with "gcc -ffunction-sections -fdata-sections".
    > This patch fixes blackfin architecture.


    the comment right above what you changed says it already works for
    Blackfin. so you arent fixing it at all.
    > /* This gets done first, so the glob doesn't suck it in */
    > . = ALIGN(32);
    > - *(.data.cacheline_aligned)
    > + *(.cacheline_aligned.data)


    ive built Blackfin kernels with function/data sections a long time ago
    .... but iirc, there were toolchain problems, so i havent pursued it
    since.

    if you're going to muck with names, you might as well do it right the
    first time: move the names into asm-generic/vmlinux.lds.h so we dont
    have to worry about this kind of churn again.
    -mike
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin

    On Wednesday 02 July 2008 00:58, Mike Frysinger wrote:
    > On Tue, Jul 1, 2008 at 8:35 PM, Denys Vlasenko wrote:
    > > The purpose of this patch is to make kernel buildable
    > > with "gcc -ffunction-sections -fdata-sections".
    > > This patch fixes blackfin architecture.

    >
    > the comment right above what you changed says it already works for
    > Blackfin. so you arent fixing it at all.
    > > /* This gets done first, so the glob doesn't suck it in */
    > > . = ALIGN(32);
    > > - *(.data.cacheline_aligned)
    > > + *(.cacheline_aligned.data)


    This may pull in an unrelated data object named "cacheline_aligned"
    (say, a static variable in a driver). If that variable is not
    itself aligned to the cacheline size, it will mess up alignment of all
    objects in .data.cacheline_aligned which follow. Not good.

    To be safe from such weird and hard to debug problems
    it's better to not use names like .data.XXXX at all.
    I just uniformly renamed al such "special sections"
    in the kernel to .XXXXX.data
    --
    vda
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [PATCH 5/23] make section names compatible with -ffunction-sections -fdata-sections: blackfin

    On Tue, Jul 1, 2008 at 8:08 PM, Denys Vlasenko wrote:
    > On Wednesday 02 July 2008 00:58, Mike Frysinger wrote:
    >> On Tue, Jul 1, 2008 at 8:35 PM, Denys Vlasenko wrote:
    >> > The purpose of this patch is to make kernel buildable
    >> > with "gcc -ffunction-sections -fdata-sections".
    >> > This patch fixes blackfin architecture.

    >>
    >> the comment right above what you changed says it already works for
    >> Blackfin. so you arent fixing it at all.
    >> > /* This gets done first, so the glob doesn't suck it in */
    >> > . = ALIGN(32);
    >> > - *(.data.cacheline_aligned)
    >> > + *(.cacheline_aligned.data)

    >
    > This may pull in an unrelated data object named "cacheline_aligned"
    > (say, a static variable in a driver). If that variable is not
    > itself aligned to the cacheline size, it will mess up alignment of all
    > objects in .data.cacheline_aligned which follow. Not good.
    >
    > To be safe from such weird and hard to debug problems
    > it's better to not use names like .data.XXXX at all.
    > I just uniformly renamed al such "special sections"
    > in the kernel to .XXXXX.data


    you're right of course ... i obviously hadnt thought of this. please
    however still abstract this stuff into the common header.

    i just tested the current Blackfin kernel and it does build/link/run
    fine with -ffunction-sections/-fdata-sections. however, --gc-sections
    still causes crashes (but this is because all of the .init.setup
    sections are flagged as unused).
    -mike
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread