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
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 |
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 |