[Rd] ICU_531 and sjlj vs.seh

Avraham Adler avraham.adler at gmail.com
Mon Mar 9 05:37:57 CET 2015


It seems that version of ICU_531 in
<http://www.stats.ox.ac.uk/pub/Rtools/goodies/> as of June 25, 2014,
was compiled using sjlj exception handling (current gcc-4.6.3,
perhaps?).  I say that as I am trying a 4.9.2 distribution which uses
seh handling, and I get errors like:


gcc -std=gnu99 -m64 -shared -s -mwindows -o R.dll R.def console.o
dynload.o editor.o embeddedR.o extra.o malloc.o opt.o pager.o
preferences.o psignal.o rhome.o rt_complete.o rui.o run.o shext.o
sys-win32.o system.o dos_wglob.o dllversion.o ../main/libmain.a
../appl/libappl.a ../nmath/libnmath.a getline/gl.a
../extra/xdr/libxdr.a ../extra/intl/libintl.a ../extra/trio/libtrio.a
../extra/tzone/libtz.a ../extra/tre/libtre.a -fopenmp -L. -lgfortran
-lquadmath -lRblas -L../../bin/x64 -lRgraphapp -lRiconv -lcomctl32
-lversion -L"F:/R/RLocalSoft"/lib/x64 -lpcre -lz -lbz2 -llzma
-L"F:/R/ICU_531"/lib/x64 -lsicuin -lsicuuc -lsicudt -lstdc++

F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0xb):
undefined reference to `__gxx_personality_sj0'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0x72):
undefined reference to `_Unwind_SjLj_Register'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0x142):
undefined reference to `_Unwind_SjLj_Unregister'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0x1b6):
undefined reference to `_Unwind_SjLj_Resume'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0x9bb):
undefined reference to `__gxx_personality_sj0'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0xa16):
undefined reference to `_Unwind_SjLj_Register'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0xaa6):
undefined reference to `_Unwind_SjLj_Unregister'
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao):ucol.cpp:(.text+0xb6f):
undefined reference to `_Unwind_SjLj_Resume'
F:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe:
F:/R/ICU_531/lib/x64/libsicuin.a(ucol.ao): bad reloc address 0x0 in
section `.pdata'
collect2.exe: error: ld returned 1 exit status
make[3]: *** [R.dll] Error 1
make[2]: *** [../../bin/x64/R.dll] Error 2
make[1]: *** [rbuild] Error 2
make: *** [all] Error 2


which seem to reflect the difference in error handling. Is there any
intention to recompile the ICU pack in the goodies directory of Rtools
with seh? If not, are there relatively straightforward directions as
to how to compile ICU from source for R which a neophyte can follow?
Ostensibly, seh provides better performance[1], [2], and if a 4.9.2
toolchain is being developed, it may be worth considering using seh.

Thank you,

Avi

[1] <http://sourceforge.net/p/mingw-w64/mailman/message/30532139/>
[2] <http://wiki.qt.io/MinGW-64-bit#Exception_handling:_SJLJ.2C_DWARF.2C_and_SEH>



More information about the R-devel mailing list