------- You are receiving this mail because: -------
You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1430
--- Comment #7 from Zoltan Herczeg <hzmester@???> 2014-01-13 21:11:25 ---
The pcretest test program is the easiest way to test PCRE. I suggest to compile
it with zero optimization level and static:
export CFLAGS="-O0 -g -Wall" ; export LDFLAGS="-g" ; ./configure
--enable-shared=no --enable-pcre16 --enable-pcre32 --enable-unicode-properties
--enable-jit
After you have a working pcretest, just run it with gdb:
gdb --args ./pcretest -s+
The -s+ argument enables JIT all the time.
Then write and match a simple pattern:
re> /ab+c/
data> abbc
0: abbc
You could put a breakpoint to the line "return
convert_executable_func.call_executable_func(arguments);" in
jit_machine_stack_exec function, and use the "si" gdb command to enter to the
function. You can disassemble the instructions when you entered to the native
code.
I suspect that even in little endian mode, the instructions must be in big
endian mode. At least I used a CPU a long time ago, where this was true. This
would explain the illegal instructions. If this is the case, the push_inst(...)
call and some updates in
sljit_generate_code/sljit_set_jump_addr/sljit_set_const needs to be changed to
save data in the other endianness. As far as I remember PPC has such
instructions.
--
Configure bugmail:
http://bugs.exim.org/userprefs.cgi?tab=email