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 definitionIn config.h, the symbol in question on line 2183 is:
#define _(args) argsIn 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