From avraham.adler at gmail.com  Mon Mar  9 05:37:57 2015
From: avraham.adler at gmail.com (Avraham Adler)
Date: Mon, 9 Mar 2015 00:37:57 -0400
Subject: [Rd] ICU_531 and sjlj vs.seh
Message-ID: <CAL6gwnJyKX_TRd__dNoFVtQ=Vg-MyCN6xHR9LLHBfKX+N=LhQQ@mail.gmail.com>

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>



[Rd] ICU_531 and sjlj vs.seh
Avraham Adler