Problem compiling beta2 on Digital Unix (cc)

From: Alessio Bragadini <alessio(at)albourne(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: arrigo(at)albourne(dot)com, adriaan(at)albourne(dot)com
Subject: Problem compiling beta2 on Digital Unix (cc)
Date: 2001-11-15 08:11:31
Message-ID: 3BF378B3.E20A2FF@albourne.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 cannot be done. Option­
ally, RTLD_GLOBAL may be or'ed with flag, in which case
the external symbols defined in 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(at)albourne(dot)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

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Zeugswetter Andreas SB SD 2001-11-15 08:33:10 Re: [HACKERS] Open Items (was: RE: [HACKERS] Beta going well)
Previous Message Stephan Szabo 2001-11-15 07:44:10 Re: Strange ADD CHECK error message