From the GCC manual:
The type char is always a distinct type from each of signed char or unsigned char, even though its behavior is always just like one of those two.
It appears that if Gambit should define SCHAR as "signed char" unconditionally if it doesn't want to get type mismatch warnings with external APIs that use "signed char" explicitly.
The specific form of the warning is misleading, however; see the discussion at
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23087
Brad