Amit Kapila <amit.kapil...@gmail.com> writes: > On Sat, Oct 26, 2019 at 10:49 PM Tom Lane <t...@sss.pgh.pa.us> wrote: >> I'm inclined to think that we need to make ecpglib.h's bool-related >> definitions exactly match c.h, which will mean that it has to pull in >> <stdbool.h> on most platforms, which will mean adding a control symbol >> for that to ecpg_config.h. I do not think we should export >> HAVE_STDBOOL_H and SIZEOF_BOOL there though; probably better to have >> configure make the choice and export something named like PG_USE_STDBOOL.
> This sounds reasonable to me, but we also might want to do something > for probes.d. To be clear, I am not immediately planning to write a > patch for this. As far as probes.d goes, it seems to work to do @@ -20,7 +20,7 @@ #define BlockNumber unsigned int #define Oid unsigned int #define ForkNumber int -#define bool char +#define bool _Bool provider postgresql { although removing the macro altogether leads to compilation failures. I surmise that dtrace is trying to compile the generated code without any #include's, so that only compiler built-in types will do. (I tried this on macOS, FreeBSD, and NetBSD, to the extent of seeing whether a build with --enable-dtrace goes through. I don't know enough about dtrace to test the results easily, but I suppose that if it compiles then this is OK.) This would, of course, not work on any platform where we're not using <stdbool.h>, but I doubt that the set of platforms where dtrace works includes any such. A plausible alternative is to do -#define bool char +#define bool unsigned char which is correct on platforms where we don't use <stdbool.h>, and is at least no worse than now on those where we do. In practice, since we know sizeof(_Bool) == 1 on platforms where we use it, this is probably just fine for dtrace's purposes. Anyone have a preference? regards, tom lane