Thread: Duplicate Symbols - Compiler Warnings
Greetings: We are converting from 7.4.19 to 8.3. While compiling our application using version 8.3, I have noticed the following warning from the compiler when compiling perlAPI.c: gcc -ggdb -Wall -Wmissing-prototypes -Wmissing-declarations -fforce-addr -DUNIX-DSTDERR_MSG -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE -I/usr/X11R6/include -I/usr/local/pg83/include -I/usr/local/pg83/include/server -I/esc/logpro/4.0/pgrnd/prog -c utility/perlAPI.c In file included from /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/perl.h:37, from /esc/logpro/4.0/pgrnd/prog/utility/perlAPI.h:10, from utility/perlAPI.c:11: /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/config.h:2183:1: warning: "_"redefined In file included from /usr/local/pg83/include/postgresql/server/postgres.h:48, from /esc/logpro/4.0/pgrnd/prog/logpro.h:35, from /esc/logpro/4.0/pgrnd/prog/utility/perlAPI.h:8, from utility/perlAPI.c:11: /usr/local/pg83/include/postgresql/server/c.h:94:1: warning: this is the location of the previous definition In config.h, the symbol in question on line 2183 is: #define _(args) args In c.h (postgres) the offending symbol on line 94 is: #define _(x) gettext((x)) I expect this to cause random core dumps when putting the application into production and it concerns me greatly. So, my question is, do you see this as a serious problem and, if so, what shall I do to resolve it? By the way, this problem does not exist when compiling with 7.4.19. TIA -- Terry Lee Tucker Turbo's IT Manager Turbo, division of Ozburn-Hessey Logistics 2251 Jesse Jewell Pkwy NE Gainesville, GA 30501 Tel: (336) 372-6812 Fax: (336) 372-6812 Cell: (336) 404-6987 terry@turbocorp.com www.turbocorp.com
Didn't get any nibbles on this one. Can anybody provide any insight on this? Thanks... On Thursday 17 April 2008 10:03, Terry Lee Tucker wrote: > Greetings: > > We are converting from 7.4.19 to 8.3. While compiling our application using > version 8.3, I have noticed the following warning from the compiler when > compiling perlAPI.c: > > gcc -ggdb -Wall -Wmissing-prototypes -Wmissing-declarations -fforce-addr > -DUNIX-DSTDERR_MSG -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING > -fno-strict-aliasing -pipe-I/usr/local/include -D_LARGEFILE_SOURCE > -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm > -I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE -I/usr/X11R6/include > -I/usr/local/pg83/include -I/usr/local/pg83/include/server > -I/esc/logpro/4.0/pgrnd/prog -c utility/perlAPI.c > In file included > from /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/perl.h:37, > from /esc/logpro/4.0/pgrnd/prog/utility/perlAPI.h:10, > from utility/perlAPI.c:11: > /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/config.h:2183:1: warning: > "_"redefined > In file included from > /usr/local/pg83/include/postgresql/server/postgres.h:48, from > /esc/logpro/4.0/pgrnd/prog/logpro.h:35, > from /esc/logpro/4.0/pgrnd/prog/utility/perlAPI.h:8, > from utility/perlAPI.c:11: > /usr/local/pg83/include/postgresql/server/c.h:94:1: warning: this is the > location of the previous definition > > In config.h, the symbol in question on line 2183 is: > #define _(args) args > > In c.h (postgres) the offending symbol on line 94 is: > #define _(x) gettext((x)) > > I expect this to cause random core dumps when putting the application into > production and it concerns me greatly. So, my question is, do you see this > as a serious problem and, if so, what shall I do to resolve it? By the way, > this problem does not exist when compiling with 7.4.19. > > TIA > -- > Terry Lee Tucker > Turbo's IT Manager > Turbo, division of Ozburn-Hessey Logistics > 2251 Jesse Jewell Pkwy NE > Gainesville, GA 30501 > Tel: (336) 372-6812 Fax: (336) 372-6812 Cell: (336) 404-6987 > terry@turbocorp.com > www.turbocorp.com -- Terry Lee Tucker Turbo's IT Manager Turbo, division of Ozburn-Hessey Logistics 2251 Jesse Jewell Pkwy NE Gainesville, GA 30501 Tel: (336) 372-6812 Fax: (336) 372-6812 Cell: (336) 404-6987 terry@turbocorp.com www.turbocorp.com
Terry Lee Tucker <terry@chosen-ones.org> writes: > Didn't get any nibbles on this one. Can anybody provide any insight on this? You're complaining in the wrong place ... I dunno what perlAPI.c is, but it's not part of Postgres. FWIW, plperl.c seems to work around the issue this way: #include "postgres.h" /* Defined by Perl */ #undef _ // include Perl headers here I'm not sure that's entirely the right solution, because Perl's _ macro is 100% useless in any project that considers ANSI C a prerequisite, whereas ours could be useful ... but right now plperl doesn't have any localization so it doesn't need the _ macro anyway. regards, tom lane
On Thursday 17 April 2008 19:32, Tom Lane wrote: > Terry Lee Tucker <terry@chosen-ones.org> writes: > > Didn't get any nibbles on this one. Can anybody provide any insight on > > this? > > You're complaining in the wrong place ... I dunno what perlAPI.c is, but > it's not part of Postgres. > > FWIW, plperl.c seems to work around the issue this way: > > #include "postgres.h" > /* Defined by Perl */ > #undef _ > > // include Perl headers here > > I'm not sure that's entirely the right solution, because Perl's _ macro > is 100% useless in any project that considers ANSI C a prerequisite, > whereas ours could be useful ... but right now plperl doesn't have any > localization so it doesn't need the _ macro anyway. > > regards, tom lane Tom, Thanks for the reply. I've implemented your suggestion and the warning goes away. perlAPI.c is our own source file of functions which allows access to the Perl interpreter which is linked in with the application. We use this to access various Perl hashes that configure and control the system. We'll do some serious testing to see if I've broken anything. As usual, thanks for your invaluable assistance... -- Terry Lee Tucker Turbo's IT Manager Turbo, division of Ozburn-Hessey Logistics 2251 Jesse Jewell Pkwy NE Gainesville, GA 30501 Tel: (336) 372-6812 Fax: (336) 372-6812 Cell: (336) 404-6987 terry@turbocorp.com www.turbocorp.com