lkml.org 
[lkml]   [2006]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 7/11] i386: Kallsyms generate relocatable symbols
    On Mon, Nov 06, 2006 at 03:48:57PM +0100, Haavard Skinnemoen wrote:
    > On Mon, 23 Oct 2006 15:37:48 -0400
    > Vivek Goyal <vgoyal@in.ibm.com> wrote:
    >
    > > Add the _text symbol definitions to the architectures which don't
    > > define it otherwise linker will fail.
    >
    > I get lots of this when building latest -mm for avr32:
    >
    > .tmp_kallsyms2.S:643: Warning: right operand is a bignum; integer 0
    > assumed
    >
    > Reverting this patch makes the warnings go away. I think it's
    > because on avr32, .init is the first section, not .text, so many of the
    > offsets become negative and kallsyms doesn't seem to handle this very
    > well. Here's a few lines from .tmp_kallsyms2.S:
    >
    > kallsyms_addresses:
    > PTR _text + 0xffffffffffff4000
    > PTR _text + 0xffffffffffff4000
    >
    > Any idea how to fix this? Could we introduce a new symbol that always
    > marks the start of the image perhaps?
    >

    Hi Haavard,

    Does the attached patch solve the issue for you?

    Thanks
    Vivek



    o On some platforms like avr32, section init comes before .text and
    not necessarily a symbol's relative position w.r.t _text is positive.
    In such cases assembler detects the overflow and emits warning. This
    patch fixes it.

    Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
    ---

    scripts/kallsyms.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff -puN scripts/kallsyms.c~i386-reloc-kallsyms-_text-symbol-relative-address-fix scripts/kallsyms.c
    --- linux-2.6.19-rc4-reloc/scripts/kallsyms.c~i386-reloc-kallsyms-_text-symbol-relative-address-fix 2006-11-06 10:47:01.000000000 -0500
    +++ linux-2.6.19-rc4-reloc-root/scripts/kallsyms.c 2006-11-06 10:47:01.000000000 -0500
    @@ -277,8 +277,12 @@ static void write_src(void)
    output_label("kallsyms_addresses");
    for (i = 0; i < table_cnt; i++) {
    if (toupper(table[i].sym[0]) != 'A') {
    - printf("\tPTR\t_text + %#llx\n",
    - table[i].addr - _text);
    + if (_text <= table[i].addr)
    + printf("\tPTR\t_text + %#llx\n",
    + table[i].addr - _text);
    + else
    + printf("\tPTR\t_text - %#llx\n",
    + _text - table[i].addr);
    } else {
    printf("\tPTR\t%#llx\n", table[i].addr);
    }
    _
    -
    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/
    \
     
     \ /
      Last update: 2006-11-06 17:07    [W:0.029 / U:60.420 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site