[pcre-dev] [Bug 1430] Request to spin up a new version of pc…

Top Page
Delete this message
Author: Zoltan Herczeg
Date:  
To: pcre-dev
Subject: [pcre-dev] [Bug 1430] Request to spin up a new version of pcre with ppc64le support
------- 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