Problem compiling beta2 on Digital Unix (cc) - Mailing list pgsql-hackers

From Alessio Bragadini
Subject Problem compiling beta2 on Digital Unix (cc)
Date
Msg-id 3BF378B3.E20A2FF@albourne.com
Whole thread Raw
Responses Re: Problem compiling beta2 on Digital Unix (cc)
List pgsql-hackers
I have a problem building the beta2 (tarball, not current CVS) on
alphaev67-dec-osf4.0f, compiled by cc -std. All the 7.1.X tree compiled
fine, and I didn't have a chance before to build 7.2.

While building backend/utils/fmgr/dfmgr.c

make[4]: Entering directory
`/usr/local/src/postgresql-7.2b2/src/backend/utils/fmgr'
cc -std -O4 -Olimit 2000 -I../../../../src/include 
-DPKGLIBDIR=\"/tmp/pg72b2/usr/local/pgsql/lib\" -DDLSUFFIX=\".so\"  -c
-o dfmgr.o dfmgr.c
cc: Error: dfmgr.c, line 123: In this statement, "RTLD_GLOBAL" is not
declared.
(undeclared)               file_scanner->handle = pg_dlopen(fullname);
---------------------------------------^
make[4]: *** [dfmgr.o] Error 1

pg_dlopen is defined in src/include/dynloader.h

#define  pg_dlopen(f)  dlopen((f), RTLD_LAZY | RTLD_GLOBAL)

This is what my Digital Unix sysadm told me:

RTLD_GLOBAL is not a valid definition under 4.0x - possibly under 5.x
but I haven't got a machine handy to check it on.  The only two
allowed values are:
 If mode is RTLD_LAZY, then the run-time loader does symbol resolution
only as needed.  Typically, this means that the first call to a function in
the newly loaded library will cause the resolution of the address of that
func- tion to occur.  If mode is RTLD_NOW, then the run-time loader must do
all symbol binding during the dlopen call.  The dlopen function returns a
han- dle that is used by dlsym or dlclose call.  If an error occurs, a NULL pointer is returned.

I suspect that RTLD_GLOBAL might be something new... actually it
appears to be a Linuxism or glibcism.  From the Linux dlopen man page:
      flag  must  be either RTLD_LAZY, meaning resolve undefined      symbols as code from the dynamic library is
executed, or      RTLD_NOW,  meaning  resolve  all  undefined symbols before      dlopen returns, and fail if this
cannotbe done.   Option­      ally,  RTLD_GLOBAL  may  be or'ed with flag, in which case      the external symbols
definedin the library will  be  made      available to subsequently loaded libraries.
 

the last few lines being the relevant ones.  I suspect it is something
to be sent off to the mailing list.   The flag appears to be available
also under Solaris 2.8 (where they also have RTLD_LOCAL for the
opposite effect).

Hope this helps, do you prefer I file it as a bug?

-- 
Alessio F. Bragadini        alessio@albourne.com
APL Financial Services        http://village.albourne.com
Nicosia, Cyprus             phone: +357-22-755750

"It is more complicated than you think"    -- The Eighth Networking Truth from RFC 1925


pgsql-hackers by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: Strange ADD CHECK error message
Next
From: "Zeugswetter Andreas SB SD"
Date:
Subject: Re: Open Items (was: RE: [HACKERS] Beta going well)