Linking Error: relocation truncated to fit: R_68K_PC16

Groleo Marius groleo at gmail.com
Tue Mar 17 08:02:12 UTC 2009


On Tue, Mar 17, 2009 at 2:07 AM, Khem Raj <raj.khem at gmail.com> wrote:
> On Mon, Mar 16, 2009 at 1:34 AM, Groleo Marius <groleo at gmail.com> wrote:
>> On Fri, Mar 13, 2009 at 8:39 PM, Khem Raj <raj.khem at gmail.com> wrote:
>>> On (13/03/09 18:40), Groleo Marius wrote:
>>>> Hi list,
>>>> I'm trying my luck compiling uClibc on a m68k Coldfire 5475 processor.
>>>> I modified the Makefiles so the sources gets compiled with the -fPIC
>>>> flag but I still get the error:
>>>>
>>>> /mnt/workspace/trunk/targets/m68k-unknown-linux-uclibc/build/build-libc/ldso/ldso/m68k/elfinterp.c:326:
>>>> relocation truncated to fit: R_68K_PC16 against symbol `_dl_skip_args'
>>>> defined in .bss section in ldso/ldso/ld-uClibc_so.a(ldso.oS).
>>>>
>>>> Does any one has any ideea ?
>>>
>>> can you try the attached patch
>> I patched successfully but now I get other errors. below you have a
>> snip of the log.
>>
>> [ALL  ]    ./libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h:33:
>> warning: no previous prototype for 'testandset'
>> [ALL  ]    libpthread/linuxthreads.old/manager.c: In function
>> '__pthread_manager_event':
>> [ALL  ]    libpthread/linuxthreads.old/manager.c:252: warning:
>> function might be possible candidate for attribute 'noreturn'
>> [ALL  ]    libpthread/linuxthreads.old/manager.c: In function
>> 'pthread_handle_create':
>> [ALL  ]    libpthread/linuxthreads.old/manager.c:582: warning:
>> declaration of 'mask' shadows a parameter
>> [ALL  ]    libpthread/linuxthreads.old/manager.c:472: warning:
>> shadowed declaration is here
>> [ALL  ]    m68k-unknown-linux-uclibc-gcc -c
>> libpthread/linuxthreads.old/mutex.c -o
>> libpthread/linuxthreads.old/mutex.os -include ./include/libc-symbols.h
>> -Wall -pipe -Wstrict-prototypes -fno-strict-aliasing -Wnested-externs
>> -Wshadow -Wmissing-noreturn -Wmissing-format-attribute -Wformat=2
>> -Wmissing-prototypes -Wmissing-declarations -Wnonnull -Wundef
>> -fno-stack-protector -fno-builtin -nostdinc -I./include -I.
>> -I./libc/sysdeps/linux/m68k -fno-asm
>> -I/home/mariusn/workspace/trunk/_src/linux-2.6.26/include/asm-m68k
>> -I/home/mariusn/workspace/trunk/_src/uClibc-0.9.29/libc/sysdeps/linux/common/
>> -I/home/mariusn/workspace/trunk/_src/uClibc-0.9.29/libc/sysdeps/linux/
>> -DUCLIBC_INTERNAL -std=gnu99 -O0 -g3
>> -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux/m68k
>> -I./libpthread/linuxthreads.old/sysdeps/m68k
>> -I./libpthread/linuxthreads.old/sysdeps/unix/sysv/linux
>> -I./libpthread/linuxthreads.old/sysdeps/pthread
>> -I./libpthread/linuxthreads.old -I./libpthread
>> -I/home/mariusn/cross-compiled/m68k-unknown-linux-uclibc/m68k-unknown-linux-uclibc/sys-root/usr/include/
>> -I/mnt/workspace/trunk/targets/m68k-unknown-linux-uclibc/build/gcc-core-static/lib/gcc/m68k-unknown-linux-uclibc/4.3.2//include-fixed
>> -I/mnt/workspace/trunk/targets/m68k-unknown-linux-uclibc/build/gcc-core-static/lib/gcc/m68k-unknown-linux-uclibc/4.3.2/include
>> -DMALLOC_DEBUGGING -DHEAP_DEBUGGING -fpic -DNOT_IN_libc
>> -DIS_IN_libpthread -MT libpthread/linuxthreads.old/mutex.os -MD -MP
>> -MF libpthread/linuxthreads.old/.mutex.os.dep
>> [ALL  ]    In file included from libpthread/linuxthreads.old/internals.h:30,
>> [ALL  ]                     from libpthread/linuxthreads.old/mutex.c:22:
>> [ALL  ]    ./libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h:33:
>> warning: no previous prototype for 'testandset'
>> [ALL  ]    {standard input}: Assembler messages:
>> [ALL  ]    {standard input}:10013: Error: operands mismatch --
>> statement `sne -1(%fp)' ignored
>> [ALL  ]    {standard input}:10120: Error: operands mismatch --
>> statement `sne -1(%fp)' ignored
>> [ERROR]    make[1]: *** [libpthread/linuxthreads.old/mutex.os] Error 1
>>
>
> May be someone who has got pthreads working with coldfire can pitch in.
> Check the manuals and see if it the instruction sne -1(%fp) has the
> right syntax for whatever addressing mode it is trying to address.
> You might have more problems due to missing atomic operations in coldfire.
>

I checked [1] and the sne instruction is used ok.
In my previously attached patch I included your fix for the PC-relative
addressing issue and the fix for the sne operand error.
  The problem is that the output operand (%1)
is used before the input operand (%0) in the extended
asm construct. After reading [2] I added the earlyclobber operand(&).
I got it to compile/link but I will test it after I deploy the
binaries on the board.


[1] - http://www.freescale.com/files/dsp/doc/ref_manual/CFPRM.pd
[2] - http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#s5

-- 
Regards, Groleo!


More information about the uClibc mailing list