[uClinux-dev] "reloc outside program" error

Steven Veigas sveigas at velankani.com
Sun Jan 7 23:47:50 EST 2007


May be cross compiler is not applied. Check once

Steven


-----Original Message-----
From: Aaron Zhong [mailto:aaron.zhong at juphoon.com] 
Sent: Saturday, January 06, 2007 6:56 AM
To: uclinux-dev
Subject: [uClinux-dev] "reloc outside program" error


Hi all,

I have a problem when I run my test program on uclinux for 
mips. The output is
# ./test
BINFMT_FLAT: reloc outside program 0xffbb2563 (0 - 
0x4df98/0x3e220)  start_brk !
calc_reloc fail 3 id  = 0 i=3,rp=81f6a22c
BINFMT_FLAT: reloc outside program 0xffbb2563 (0 - 
0x4df98/0x3e220)  start_brk !
calc_reloc fail 3 id  = 0 i=3,rp=81f6a22c
Memory fault

I noticed that there is a warning when compile the program:
...
mips-linux-gcc -O2 -msoft-float -DPARANOID_TTYS -DUSE_TERMIO 
-DKLUDGELINEMODE 
-D_GNU_SOURCE -D__uClinux__   -c -o logout.o logout.c
mips-linux-gcc -Wl,-elf2flt="-z -s 8192 -v" -o test telnetd.o 
state.o termstat.o
slc.o sys_term.o utility.o global.o authenc.o logwtmp.o 
logout.o  -L. -lfoo -lpthread
TEXT -> vma=400000 len=3e250
        lma=400000 clen=0 oo=3e250 ap=0 fp=0
DATA -> vma=43e260 len=c140
        lma=43e260 clen=0 oo=c140 ap=0 fp=0
WARNING: data=43e260 does not directly follow text=3e250
BSS  -> vma=44a3a0 len=3c38
        lma=44a3a0 clen=0 oo=3c38 ap=0 fp=0
GOT table contains 708 entries (2832 bytes)
SECTION: .text [96df414]: flags=233 vma=400000
SECTION: .data [96df4cc]: flags=243 vma=43e260
 RELOCS: .data [96d75d4]: flags=247 vma=43e260
WARN: GPREL32
WARN: GPREL32
WARN: GPREL32
...

Is the warning cause the problem? Which confused me is that a 
simple program
like "hello world" could run correctly. Could anybody help me? 
And the following
is flthdr and objdump information, and last is the elf2flt.ld:
# mips-linux-flthdr test
test
    Magic:        bFLT
    Rev:          4
    Build Date:   Fri Jan  5 11:07:49 2007
    Entry:        0x400060
    Data Start:   0x3e2a0
    Data End:     0x4a3e0
    BSS End:      0x4e018
    Stack Size:   0x2000
    Reloc Start:  0x4a3e0
    Reloc Count:  0x112
    Flags:        0x6 ( Has-PIC-GOT Gzip-Compressed )

# mips-linux-objdump -h test.gdb

test.gdb:     file format elf32-tradbigmips

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0003e250  00400000  00400000  00001000  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000c140  0043e260  0043e260  0003f260  2**5
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00003c38  0044a3a0  0044a3a0  0004b3a0  2**4
                  ALLOC
  3 .junk         00000000  00000000  00000000  00001000  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .comment      00000402  00000000  00000000  0004b3a0  2**0
                  CONTENTS, READONLY
  5 .debug_aranges 00000200  00000000  00000000  0004b7a2  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 0000024a  00000000  00000000  0004b9a2  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00007521  00000000  00000000  0004bbec  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 0000204d  00000000  00000000  0005310d  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00001148  00000000  00000000  0005515a  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  0000031c  00000000  00000000  000562a4  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    0000079d  00000000  00000000  000565c0  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .pdr          00006c80  00000000  00000000  00056d60  2**2
                  CONTENTS, READONLY
 13 .mdebug.abi32 00000000  00000000  00000000  0005d9e0  2**0
                  CONTENTS, READONLY
 14 .debug_ranges 00000380  00000000  00000000  0005d9e0  2**0
                  CONTENTS, READONLY, DEBUGGING


# cat elf2flt.ld

ENTRY (__start)

MEMORY {
        flatmem : ORIGIN = 0x400000, LENGTH = 0xffffff
        junk    : ORIGIN = 0x0, LENGTH = 0x100000
}

SECTIONS {
        .text 0x400000 : {
                . = . + 4;
                . = ALIGN(0x4) ;
                _stext = . ;
                *(.reginfo)
                *(.text)
                *(.text.*)
                *(.gnu.warning)
                *(.stub)
                *(.gnu.linkonce.t*)
                *(.glue_7t)
                *(.glue_7)
                *(.jcr)
                *(.init)
                *(.fini)

W_RODAT         *(.rodata)
W_RODAT         *(.rodata1)
W_RODAT         *(.rodata.*)

                /* This is special code area at the end of the normal
                   text section.  It contains a small lookup table at
                   the start followed by the code pointed to by entries
                   in the lookup table.  */
                . = ALIGN (4) ;
                PROVIDE(__ctbp = .);
                *(.call_table_data)
                *(.call_table_text)

                . = ALIGN(0x10) ;
                _etext = . ;
        } > flatmem
        .data : {
                . = ALIGN(0x4) ;
                _sdata = . ;
                __data_start = . ;
                data_start = . ;
                _gp = . ;
                *(.got.plt)
                *(.got)
                . = ALIGN(0x10) ;
                LONG(-1)
R_RODAT         *(.rodata)
R_RODAT         *(.rodata1)
R_RODAT         *(.rodata.*)
                *(.gnu.linkonce.r*)
                *(.data)
                *(.data1)
                *(.data.*)
                *(.gnu.linkonce.d*)
                *(.data1)
                *(.eh_frame)
                *(.gcc_except_table)
                *(.sdata)
                *(.sdata.*)
                *(.gnu.linkonce.s.*)
                *(__libc_atexit)
                *(__libc_subinit)
                *(__libc_subfreeres)
                *(.note.ABI-tag)
                . = ALIGN(4) ;
                *(.ctors.*)
                *(.ctors)
                LONG(0)
                *(.dtors.*)
                *(.dtors)
                LONG(0)
                . = ALIGN(0x10) ;
                _edata = . ;
        } > flatmem
        .bss : {
                . = ALIGN(0x4) ;
                _sbss = ALIGN(0x4) ;
                __bss_start = . ;
                *(.dynsbss)
                *(.sbss)
                *(.sbss.*)
                *(.scommon)
                *(.dynbss)
                *(.bss)
                *(.bss.*)
                *(COMMON)
                . = ALIGN(0x4) ;
                _ebss = . ;
                _end = . ;
                end = . ;
        } > flatmem

        .junk : {
                *(.rel*)
                *(.rela*)
        } > junk
}








More information about the uClinux-dev mailing list