Building from a linux x86_64 host targeting arm has missing symbols for
functions relating to 32bit elf reading.

$  gcc -v 2>&1 | grep -i ^Target
Target: x86_64-linux-gnu

#==================================
PREFIX=/tmp/libunwind/
TARGET_SUFFIX=linux-gnu
HOST=x86_64-${TARGET_SUFFIX}

#Generic Build
 ./configure --build=${HOST} \
             --enable-coredump --enable-ptrace \
                --prefix=${PREFIX}
make -j
make install
make check

for TARGET in \
    arm-${TARGET_SUFFIX} \
    x86_64-${TARGET_SUFFIX} \
    x86-${TARGET_SUFFIX}
do
    ./configure --build=${HOST} \
                --target=${TARGET} \
                --enable-coredump --enable-ptrace \
                --prefix=${PREFIX}
    make -j
    make install
    make check
done
#==================================

During make check:
libtool: link: gcc -g -O2 -fexceptions -Wall -Wsign-compare -o
.libs/test-proc-info test-proc-info.o  ../src/.libs/libunwind-arm.so
-Wl,-rpath -Wl,/tmp/libunwind/lib
/usr/bin/ld: ../src/.libs/libunwind-arm.so: undefined reference to
`_Uelf32_load_debuglink'
/usr/bin/ld: ../src/.libs/libunwind-arm.so: undefined reference to
`_Uelf32_find_section'

$ nm /tmp/lib/libunwind-arm.so | grep Uelf
                 U _Uelf32_find_section
                 U _Uelf32_load_debuglink

$ nm /tmp/lib/libunwind-generic.so | grep Uelf
000000000000fb60 t _Uelf64_find_section
00000000000103c0 t _Uelf64_get_proc_name
000000000000fc70 t _Uelf64_get_proc_name_in_image
000000000000ff50 t _Uelf64_load_debuglink
000000000000f990 t _Uelf64_lookup_symbol.isra.0

$ nm /tmp/lib/libunwind.so | grep Uelf
000000000000a010 t _Uelf64_find_section
000000000000a870 t _Uelf64_get_proc_name
000000000000a120 t _Uelf64_get_proc_name_in_image
000000000000a400 t _Uelf64_load_debuglink

It seems likely I am overlooking some obvious configure option or build
step that is preventing the 32 bit elf functions from ending up in
libunwind-arm.so (or related libraries). Could anyone point me in the right
direction?

-- 
-Mitch

Reply via email to