Attached is a shorter program .. toto2.c. I don't know if it fails on
arm. But it makes use of the utrans_openU where the error occurs..
cc -Wall toto2.c -licui18n -g -o toto2
./toto2
#include <string.h>
#include <stdlib.h>
#include <unicode/utrans.h>
#include <unicode/ustring.h>
#include <assert.h>
int main() {
char rules[]="[:Punctuation:] Any-Remove";
int utf16_cap = 1+strlen(rules);
int32_t utf16_len = 0;
UChar * utf16 = malloc(utf16_cap * sizeof(UChar));
UParseError parse_error;
UErrorCode status = U_ZERO_ERROR;
UTransliterator * trans;
u_strFromUTF8(utf16, utf16_cap, &utf16_len,
rules, strlen(rules), &status);
assert(status == U_ZERO_ERROR);
trans=utrans_openU(utf16, utf16_len, UTRANS_FORWARD,
0, 0, &parse_error, &status);
assert(trans);
assert(status == U_ZERO_ERROR);
return 0;
}