#49 Undefined symbols: ___cmpdi2 ___floatdisf ___fixunssfdi

open
nobody
None
5
2012-12-06
2012-12-06
No

Hello, I'm the maintainer of graphite2, harfbuzz, and pango in the MacPorts
package management system. I haven't been able to update our pango to 1.32
because it requires harfbuzz which requires graphite2, and I'm having trouble
building graphite2 1.2.0 on OS X 10.5 Leopard on my Power Mac G4. Using the
Apple gcc 4.2.1 compiler I get:

Undefined symbols:
"___floatundisf", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___fixunssfdi", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
ld: symbol(s) not found

Using the Apple gcc 4.0.1 compiler I get:

Undefined symbols:
"___cmpdi2", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___floatdisf", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
"___fixunssfdi", referenced from:
graphite2::SegCache::purge(graphite2::SegCacheStore*)in SegCache.cpp.o
graphite2::SegCache::cache(graphite2::SegCacheStore*, unsigned short const*, unsigned long, graphite2::Segment*, unsigned long)in SegCache.cpp.o
ld: symbol(s) not found

Discussion

  • Ryan Schmidt

    Ryan Schmidt - 2013-01-23

    Martin Hosken had trouble responding in the issue tracker so we had a
    discussion about this problem in email.

    I found that the problem only occurred on PowerPC, not on Intel (same
    compilers and OS version).

    Martin said he doesn't know why it can't find the symbols, "But there
    is a convenient workaround, and that is to disable the building of the
    segment caching code. You can do this by modifying your cmake command
    to add -DGRAPHITE2_NSEGCACHE:BOOL=ON. The only thing I know using the
    segcache code is libreoffice and unfortunately we haven't integrated
    graphite into libreoffice on the mac yet, so even that usage disappears
    for you."

    That workaround did indeed work for me, and that's what we're now doing
    in MacPorts on PowerPC:

    https://trac.macports.org/changeset/101970

     

Log in to post a comment.