[ragel-users] signed/unsigned portability issue

Peter van Dijk peter.van.dijk at netherlabs.nl
Thu Oct 24 18:52:17 UTC 2013

Hello folks,

we (PowerDNS) have a small Ragel parser for segmenting and unescaping DNS TXT record data. Some time ago, we expanded the allowed inputs for this parser to the full 8 bit 'extended ASCII' range (which Ragel calls 'extend').

This works well on most platforms - but it failed for us on Debian/s390x.

After a lot of digging I found that char is unsigned on s390x, while it is signed on amd64, i386 and many other platforms.

I have added 'alphtype unsigned char' to our Ragel file. This makes the parser work reliably on both amd64 and s390x (and,  hopefully, many other platforms).

However, I feel something is wrong. It seems that on s390x, Ragel is mostly confused about the type of char. It generates a parser that treats extend as -128..127, but maps non-ASCII inputs in the 128..255 range. This discrepancy feels like a Ragel issue to me.

A much longer version of this story is at https://www.evernote.com/shard/s344/sh/cb968134-4d58-4e46-8b5e-47366a129038/60fafaf56d5a350edf891cf82cefc66d

My question: is this a Ragel bug? Regardless of yes/no, is what I did (alphtype unsigned char) the best workaround?

I did most of the debugging with ragel 6.7-1 (Debian version number), but verified that the problem is identical in 6.8-1.

Kind regards,
Peter van Dijk
Netherlabs Computer Consulting BV - http://www.netherlabs.nl/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://www.colm.net/pipermail/ragel-users/attachments/20131024/a3b83a44/attachment-0001.sig>
-------------- next part --------------
ragel-users mailing list
ragel-users at complang.org

More information about the ragel-users mailing list