This bug has been introduced by Paul Brook on 29/12/2005.
See the diffs here :
http://gcc.gnu.org/viewcvs/branches/gcc-4_2-branch/gcc/config/m68k/lb1sf68.asm?r1=109143&r2=109145&diff_format=h

It occurs when building some executables on m68k targets where
__USER_LABEL_PREFIX__ is not defined or not empty.
When ld tries to link a program with _float.o inside libgcc.a, it fails with :
...lb1sf68.asm:3759: relocation truncated to fit: DISP16 against undefined
symbol `__cmpsf2_internal'

The problem is in the file gcc/config/m68k/lb1sf68.asm, in the definition of
the function SYM (__cmpsf2).
There is function call using bsr (__cmpsf2_internal), but the target function
was defined with SYM (__cmpdf2_internal)
The macro SYM prepends __USER_LABEL_PREFIX__ to its argument.
If __USER_LABEL_PREFIX__ is defined to an empty string (like ELF), the bug is
not visible. But if it is defined to something else (like "_" by default), the
bsr references a symbol named __cmpsf2_internal which will stay undefined
because the actual definition contains 3 leading underscores.

This problem is present in the definition of the function __cmpsf2, but the
similar function __cmpdf2 is ok.


-- 
           Summary: m68k undefined symbol __cmpsf2_internal
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: vincent dot riviere at freesbee dot fr
GCC target triplet: m68k-*-*


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32381

Reply via email to