Threading with non-shared libraries - Mailing list pgsql-patches

From Bruce Momjian
Subject Threading with non-shared libraries
Date
Msg-id 200412142331.iBENV0o10035@candle.pha.pa.us
Whole thread Raw
Responses Re: Threading with non-shared libraries  (Peter Eisentraut <peter_e@gmx.net>)
Re: Threading with non-shared libraries  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
OK, it took me a while to figure this out, but it is similar to the
problem we have on AIX.  AIX shared libraries don't track other
libraries needed by the shared library, and non-shared libraries also
have no such dependency information.

I have attached a patch that is very similar to the AIX fix.  It
basically propagates the thread library flags to all uses of libpq.

Would you please test and report back?  Thanks.

---------------------------------------------------------------------------

Frank van Vugt wrote:
> L.S.
>
> I noticed the following :
>
>
> Workstation used to build RC1:
>
>     2.4.21-260-athlon, i686 athlon i386 GNU/Linux
>
>
> Configured with :
>
>     ./configure
>         --enable-thread-safety
>         --disable-shared
>         --prefix=/usr/src/postgresql/install
>
>
> Error during make install :
>
>     in directory src/bin/pg_ctl
>
> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
> -fno-strict-aliasing pg_ctl.o  -L../../../src/interfaces/libpq -lpq
> -L../../../src/port  -Wl,-rpath,/usr/src/postgresql/install/lib -lpgport -lz
> -lreadline -lcrypt -lresolv -lnsl -ldl -lm  -o pg_ctl
> ../../../src/interfaces/libpq/libpq.a(fe-secure.o)(.text+0x140): In function
> `pq_block_sigpipe':
> : undefined reference to `pthread_sigmask'
> ../../../src/interfaces/libpq/libpq.a(fe-secure.o)(.text+0x1e0): In function
> `pq_reset_sigpipe':
> : undefined reference to `pthread_sigmask'
> collect2: ld gaf exit-status 1 terug
>
>
> There seems to be a missing option '-lpthread' here, adding it properly links
> the file.
>
> The same goes for pg_restore, pg_dumpall, psql, createdb, createlang,
> createuser, dropdb, droplang, dropuser, clusterdb and vacuumdb.
>
>
>
>
>
> --
> Best,
>
>
>
>
> Frank.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/Makefile.global.in
===================================================================
RCS file: /cvsroot/pgsql/src/Makefile.global.in,v
retrieving revision 1.205
diff -c -c -r1.205 Makefile.global.in
*** src/Makefile.global.in    19 Nov 2004 00:41:38 -0000    1.205
--- src/Makefile.global.in    14 Dec 2004 22:49:42 -0000
***************
*** 308,313 ****
--- 308,319 ----

  libpq = -L$(libpq_builddir) -lpq

+ # If doing static linking, shared library dependency can't be
+ # used so we specify pthread libs for every usage of libpq.
+ ifeq ($(enable_shared), no)
+ libpq += $(PTHREAD_LIBS)
+ endif
+
  submake-libpq:
      $(MAKE) -C $(libpq_builddir) all


pgsql-patches by date:

Previous
From: Guillaume LELARGE
Date:
Subject: Last french .po file
Next
From: Bruce Momjian
Date:
Subject: Re: fix entab compile with gcc 3.3.5