Re: [PATCHES] Patch for Linux-IA64 - Mailing list pgsql-bugs
From | Bruce Momjian |
---|---|
Subject | Re: [PATCHES] Patch for Linux-IA64 |
Date | |
Msg-id | 200007070123.VAA27702@candle.pha.pa.us Whole thread Raw |
In response to | Re: [PATCHES] Patch for Linux-IA64 (Andreas Schwab <schwab@suse.de>) |
List | pgsql-bugs |
Applied. Thanks. [ Charset ISO-8859-1 unsupported, converting... ] > Bruce Momjian <pgman@candle.pha.pa.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.Schwab@suse.de > SuSE GmbH, Schanz?ckerstr. 10, D-90443 N?rnberg > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
pgsql-bugs by date: