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
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-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

Browse pgsql-bugs by date

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

Browse pgsql-patches by date

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