Skip site navigation (1) Skip section navigation (2)

Re: [PATCHES] Patch for Linux-IA64

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Andreas Schwab <schwab(at)suse(dot)de>
Cc: Reinhard Max <max(at)suse(dot)de>, pgsql-bugs(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org
Subject: Re: [PATCHES] Patch for Linux-IA64
Date: 2000-07-07 01:23:28
Message-ID: 200007070123.VAA27702@candle.pha.pa.us (view raw or flat)
Thread:
Lists: pgsql-bugspgsql-patches
Applied.  Thanks.


[ Charset ISO-8859-1 unsupported, converting... ]
> Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> writes:
> 
> |> The Makefile.shlib changes will have to be discussed with other Linux
> |> developers so we are sure it will work on all platforms.
> 
> The problem with the current settings is that the linker is called
> directly.  This is wrong, it should always be called through the compiler
> driver (the only exception is `ld -r').  This will make sure that the
> necessary libraries like libgcc are linked in.
> 
> But there is still a different problem with the setting of LDFLAGS_ODBC.
> The psqlodbc module defines the functions _init and _fini which are
> reserved for the shared library initialisation.  These should be changed
> to constructor functions.  Then LDFLAGS_ODBC can be changed to be just
> `-lm'.  Btw, why does it use -Bsymbolic?
> 
> Here is a patch to implement this:
> 
> --- src/Makefile.shlib
> +++ src/Makefile.shlib	2000/07/05 16:51:27
> @@ -145,9 +145,9 @@
>  ifeq ($(PORTNAME), linux)
>    install-shlib-dep	:= install-shlib
>    shlib				:= lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
> -  LDFLAGS_SL		:= -Bdynamic -shared -soname $(shlib)
> -  LDFLAGS_ODBC		:= -Bsymbolic -lc -lm
> -  SHLIB_LINK		+= -lc
> +  LD			:= $(CC)
> +  LDFLAGS_SL		:= -shared -Wl,-soname,$(shlib)
> +  LDFLAGS_ODBC		:= -lm
>    CFLAGS			+= $(CFLAGS_SL)
>  endif
>  
> --- src/interfaces/odbc/psqlodbc.c
> +++ src/interfaces/odbc/psqlodbc.c	2000/07/06 10:01:04
> @@ -33,8 +33,6 @@
>  
>  GLOBAL_VALUES globals;
>  
> -BOOL _init(void);
> -BOOL _fini(void);
>  RETCODE SQL_API SQLDummyOrdinal(void);
>  
>  #ifdef WIN32
> @@ -96,6 +94,20 @@
>  #ifndef FALSE
>  #define FALSE	(BOOL)0
>  #endif
> +
> +#ifdef __GNUC__
> +
> +/* This function is called at library initialization time.  */
> +
> +static BOOL
> +__attribute__((constructor))
> +init(void)
> +{
> +	getGlobalDefaults(DBMS_NAME, ODBCINST_INI, FALSE);
> +	return TRUE;
> +}
> +
> +#else
>  
>  /* These two functions do shared library initialziation on UNIX, well at least
>   * on Linux. I don't know about other systems.
> 
> Andreas.
> 
> -- 
> Andreas Schwab                                  "And now for something
> SuSE Labs                                        completely different."
> Andreas(dot)Schwab(at)suse(dot)de
> SuSE GmbH, Schanz?ckerstr. 10, D-90443 N?rnberg
> 


-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

In response to

pgsql-bugs by date

Next:From: Paul McGarryDate: 2000-07-07 01:44:15
Subject: MAX() of 0 records.
Previous:From: Tom LaneDate: 2000-07-06 22:19:38
Subject: Re: upper() problem in 7.0.2

pgsql-patches by date

Next:From: David J. MacKenzieDate: 2000-07-07 15:02:22
Subject: PostgreSQL BSDI BSD/OS port
Previous:From: Andreas SchwabDate: 2000-07-06 10:02:55
Subject: Re: [PATCHES] Patch for Linux-IA64

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group