BUG #4731: compile with -fast fails on ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

Started by Ceriel Jacobsabout 17 years ago4 messagesbugs
Jump to latest
#1Ceriel Jacobs
cerieljacobs@gmail.com

The following bug has been logged online:

Bug reference: 4731
Logged by: Ceriel Jacobs
Email address: cerieljacobs@gmail.com
PostgreSQL version: 8.3.7
Operating system: OS X 10.5.6
Description: compile with -fast fails on ld: duplicate symbol
_PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o
Details:

Compilation fails on:
/usr/bin/gcc-4.2 -no-cpp-precomp -fast -march=nocona -isysroot
/Developer/SDKs/MacOSX10.5.sdk -arch x86_64 -Wall -Wmissing-prototypes
-Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels
-fno-strict-aliasing -fwrapv -bundle -multiply_defined suppress pgcrypto.o
px.o px-hmac.o px-crypt.o crypt-gensalt.o crypt-blowfish.o crypt-des.o
crypt-md5.o openssl.o pgp-mpi-openssl.o mbuf.o pgp.o pgp-armor.o pgp-cfb.o
pgp-compress.o pgp-decrypt.o pgp-encrypt.o pgp-info.o pgp-mpi.o pgp-pubdec.o
pgp-pubenc.o pgp-pubkey.o pgp-s2k.o pgp-pgsql.o -L../../src/port
-L/opt/local/lib -L/opt/local/lib -L/opt/local/lib -bundle_loader
../../src/backend/postgres -lcrypto -lz -o libpgcrypto.0.0.so
ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o
collect2: ld returned 1 exit status
gnumake: *** [libpgcrypto.0.0.so] Error 1

Environment:
Processor: core2duo (64-bit)
GCC: i686-apple-darwin9-gcc-4.2.1

-fast = -O3
-fomit-frame-pointer
-fstrict-aliasing
-momit-leaf-frame-pointer
-fno-tree-pre
-falign-loops

When only specifying -O3, compilation succeeds.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ceriel Jacobs (#1)
Re: BUG #4731: compile with -fast fails on ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

"Ceriel Jacobs" <cerieljacobs@gmail.com> writes:

ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

I think at bottom that's a compiler/linker bug which you should mention
to Apple. However, I see what is causing it: pgp.h contains

enum
{
PGP_S2K_SIMPLE = 0,
PGP_S2K_SALTED = 1,
PGP_S2K_ISALTED = 3
} PGP_S2K_TYPE;

I think what was meant was

enum PGP_S2K_TYPE
{
PGP_S2K_SIMPLE = 0,
PGP_S2K_SALTED = 1,
PGP_S2K_ISALTED = 3
};

because what the first one is doing is defining a global variable
that is of an anonymous enum type.

Marko, am I right that this is just a syntax mistake, and not
intentional creation of a variable? There are several occurrences
of the pattern in pgp.h.

regards, tom lane

#3Marko Kreen
markokr@gmail.com
In reply to: Tom Lane (#2)
Re: BUG #4731: compile with -fast fails on ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

On 3/25/09, Tom Lane <tgl@sss.pgh.pa.us> wrote:

"Ceriel Jacobs" <cerieljacobs@gmail.com> writes:

ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

I think at bottom that's a compiler/linker bug which you should mention
to Apple. However, I see what is causing it: pgp.h contains

enum
{
PGP_S2K_SIMPLE = 0,
PGP_S2K_SALTED = 1,
PGP_S2K_ISALTED = 3
} PGP_S2K_TYPE;

I think what was meant was

enum PGP_S2K_TYPE
{
PGP_S2K_SIMPLE = 0,
PGP_S2K_SALTED = 1,
PGP_S2K_ISALTED = 3
};

because what the first one is doing is defining a global variable
that is of an anonymous enum type.

Eh, it's silly mistake indeed.

Marko, am I right that this is just a syntax mistake, and not
intentional creation of a variable? There are several occurrences
of the pattern in pgp.h.

Yes, it's syntax bug. Should I send patch?

--
marko

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marko Kreen (#3)
Re: BUG #4731: compile with -fast fails on ld: duplicate symbol _PGP_S2K_TYPE in pgp.o and pgp-mpi-openssl.o

Marko Kreen <markokr@gmail.com> writes:

On 3/25/09, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Marko, am I right that this is just a syntax mistake, and not
intentional creation of a variable? There are several occurrences
of the pattern in pgp.h.

Yes, it's syntax bug. Should I send patch?

No need, I think I can figure it out ;-)

regards, tom lane