Re: Small patch: fix warnings during compilation on FreeBSD
От | Aleksander Alekseev |
---|---|
Тема | Re: Small patch: fix warnings during compilation on FreeBSD |
Дата | |
Msg-id | 20160315175447.0a526341@fujitsu обсуждение исходный текст |
Ответ на | Re: Small patch: fix warnings during compilation on FreeBSD (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Small patch: fix warnings during compilation on FreeBSD
(Alvaro Herrera <alvherre@2ndquadrant.com>)
Re: Small patch: fix warnings during compilation on FreeBSD (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
> Yeah. In practice, there are exactly two cases we care about: either > both of these functions will be declared in <stdlib.h> like POSIX > says, or both of them will be in <xlocale.h>. There's no need to > work harder than we have to do to figure that out. > > I'm totally unimpressed with the proposal of depending on the > __FreeBSD__ macro instead of having a proper configure check. For > one thing, we have no idea whether NetBSD or OpenBSD have this same > issue. For another, it might be version-specific, or might become so > if FreeBSD decides to start following POSIX on this point someday. OK, I'm not an expert in Autotools but this patch (see attachment) seems to solve a problem. Here are some notes. Unfortunately test program requires two include files: ``` #include <stdlib.h> #include <xlocale.h> int main() { size_t tmp = wcstombs_l(NULL, NULL, 0, 0); return 0; } ``` Thus I need two checks - 1) that test program compiles when xlocal.h is included 2) that test program does not compile if only stdlib.h is included (what if wcstombs_l is actually declared there?). On Ubuntu 14.04: ``` $ ./configure ... checking whether wcstombs_l is available if stdlib.h is included... no checking whether wcstombs_l is available if stdlib.h and xlocale.h are included... no ... $ cat ./src/include/pg_config.h | grep WCSTOMBS_L_IN_XLOCALE /* #undef WCSTOMBS_L_IN_XLOCALE */ $ make -j2 -s Writing postgres.bki Writing schemapg.h Writing postgres.description Writing postgres.shdescription Writing fmgroids.h Writing fmgrtab.c In file included from gram.y:14933:0: scan.c: In function ‘yy_try_NUL_trans’: scan.c:10321:23: warning: unused variable ‘yyg’ [-Wunused-variable] struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ ^ $ make check ... ======================= All 161 tests passed. ======================= ``` On FreeBSD 10.2: ``` $ ./configure ... checking whether wcstombs_l is available if stdlib.h is included... no checking whether wcstombs_l is available if stdlib.h and xlocale.h are included... yes ... $ cat ./src/include/pg_config.h | grep WCSTOMBS_L_IN_XLOCALE #define WCSTOMBS_L_IN_XLOCALE 1 $ gmake -j2 -s Writing postgres.bki Writing schemapg.h Writing postgres.description Writing postgres.shdescription Writing fmgroids.h Writing fmgrtab.c $ gmake check ... ======================= All 161 tests passed. ======================= ``` As you can see warnings are gone. Warning on Ubuntu was always there and as comment suggests is irrelevant in current context. Please note that these changes: ``` -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) ``` ... were generated but `autoreconf -iv`. I was not sure what to do about them. Eventually I decided to keep them. Still these changes could be safely discarded. -- Best regards, Aleksander Alekseev http://eax.me/
Вложения
В списке pgsql-hackers по дате отправления:
Следующее
От: Alvaro HerreraДата:
Сообщение: Re: Minor bug affecting ON CONFLICT lock wait log messages