Thread

  1. Solaris ODBC - linker flag needs to be set when building shared objects

    PostgreSQL Bugs List <pgsql-bugs@postgresql.org> — 2000-12-12T18:37:25Z

    Mike McDonough (mpm@goldwiretech.com) reports a bug with a severity of 2
    The lower the number the more severe it is.
    
    Short Description
    Solaris ODBC - linker flag needs to be set when building shared objects
    
    Long Description
    Linker flag which needs to be set when building shared objects to prevent a symbol in the executable overriding one in the shared object: '-Bsymbolic' needs to be set in Makefile.shlib. This flag is set for linux builds, but not for solaris.
    
      LDFLAGS_ODBC          := -Bsymbolic
      
    
    
    Sample Code
    Makefile.shlib:
    
    ---- CUT -------
    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
      CFLAGS                        += $(CFLAGS_SL)
    endif
    
    ifeq ($(PORTNAME), solaris_i386)
      install-shlib-dep     := install-shlib
      shlib                         := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
      LDFLAGS_SL            := -G
    #+++rwhit, 12/12/00 added -Bsymbolic to fix SQLPrimaryKeys() - it's calls
    #                   to other SQL*() functions were being resolved by
    #                   the driver manager versions rather than the pgsql
    #                   versions
      LDFLAGS_ODBC          := -Bsymbolic
      SHLIB_LINK            += -ldl -lsocket -lresolv -lnsl -lm -lc
      CFLAGS                        += $(CFLAGS_SL)
    endif
    
    ifeq ($(PORTNAME), solaris_sparc)
      install-shlib-dep     := install-shlib
      shlib                         := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
      LDFLAGS_SL            := -G
    #+++rwhit, 12/12/00 added -Bsymbolic to fix SQLPrimaryKeys() - it's calls
    #                   to other SQL*() functions were being resolved by
    #                   the driver manager versions rather than the pgsql
    #                   versions
      LDFLAGS_ODBC          := -Bsymbolic
      SHLIB_LINK            += -ldl -lsocket -lresolv -lnsl -lm -lc
      CFLAGS                        += $(CFLAGS_SL)
    endif
    --- END CUT ---
    
    No file was uploaded with this report
    
    
    
  2. Re: Solaris ODBC - linker flag needs to be set when building shared objects

    Peter Eisentraut <peter_e@gmx.net> — 2000-12-13T19:09:17Z

    > Mike McDonough (mpm@goldwiretech.com) reports a bug with a severity of 2
    
    > Solaris ODBC - linker flag needs to be set when building shared objects
    
    > Long Description
    
    > Linker flag which needs to be set when building shared objects to
    > prevent a symbol in the executable overriding one in the shared
    > object: '-Bsymbolic' needs to be set in Makefile.shlib. This flag is
    > set for linux builds, but not for solaris.
    
    > #+++rwhit, 12/12/00 added -Bsymbolic to fix SQLPrimaryKeys() - it's calls
    > #                   to other SQL*() functions were being resolved by
    > #                   the driver manager versions rather than the pgsql
    > #                   versions
    
    Can you explain why this flag is needed?  What call is getting resolved
    how and how should it have been resolved?  Since this flag is only
    portable to ELF systems the problem should really be fixed some other way.
    
    -- 
    Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/