Обсуждение: What's wrong with glibc-devel-2.2
YodaWu (yoda@cef.org.tw) reports a bug with a severity of 2 The lower the number the more severe it is. Short Description What's wrong with glibc-devel-2.2 Long Description This afternoon I download postgresql-7.1.tar.gz. After I extract this tarball,enter ./configure command to config this server. It was always blocked at the procedure of checking accept() function. After 5 hours of struggling I finally know the trouble source. The version of my glibc is 2.2,but seems postgresql based on glibc 2.1. So are there any plans of using glibc v2.2 ? Or I just only change source code of glibc from v2.2 to v2.1 ? It seems that glibc v2.2 is not compatible with v2.1 ,is it ? My English is very poor,thank you for finish reading. :) Sample Code No file was uploaded with this report
pgsql-bugs@postgresql.org writes:
> The version of my glibc is 2.2,but seems postgresql based on glibc 2.1.
Say what? Postgres isn't dependent on any particular version of glibc;
in fact it runs fine on many Unixen that don't use glibc at all.
How about telling us what your problem is, rather than jumping to a
conclusion about what caused it? What we want to see is exactly what
commands you issued and exactly what error messages you got.
regards, tom lane
pgsql-bugs@postgresql.org wrote: > This afternoon I download postgresql-7.1.tar.gz. > After I extract this tarball,enter ./configure command to config this > server. > It was always blocked at the procedure of checking accept() function. > After 5 hours of struggling I finally know the trouble source. > The version of my glibc is 2.2,but seems postgresql based on glibc 2.1. > So are there any plans of using glibc v2.2 ? I have built PostgreSQL 7.1 on a system with glibc-2.2 -- Red Hat 7.1. It works for me. There may be something else going onwith your system -- more details of your system configuration would be helpful. -- Lamar Owen WGCR Internet Radio 1 Peter 4:11
<yoda@cef.org.tw> writes:
> I think the key point is the define of accept() in 2.2.
> accept() define in glibc 2.2
> extern int accept (int __fd, __SOCKADDR_ARG __addr,
> socklen_t *__restrict __addr_len)
> __THROW;
> Definition of __SOCKADDR_ARG in glibc 2.2
> #if defined __cplusplus || !__GNUC_PREREQ (2, 7)
> # define __SOCKADDR_ARG struct sockaddr *__restrict
> # define __CONST_SOCKADDR_ARG __const struct sockaddr *
> #else
> Definition of __restrict in glibc 2.2
> /* __restrict is known in EGCS 1.2 and above. */
> #if !__GNUC_PREREQ (2,92)
> # define __restrict /* Ignore */
> #endif
Looks to me like it should work; int, struct sockaddr *, socklen_t *
are one of the combinations we try for accept() arguments. What does
config.log contain after the failure?
regards, tom lane
<yoda@cef.org.tw> writes:
> I think the key point is the define of accept() in 2.2.
> accept() define in glibc 2.2
> extern int accept (int __fd, __SOCKADDR_ARG __addr,
> socklen_t *__restrict __addr_len)
> __THROW;
> Definition of __SOCKADDR_ARG in glibc 2.2
> #if defined __cplusplus || !__GNUC_PREREQ (2, 7)
> # define __SOCKADDR_ARG struct sockaddr *__restrict
> # define __CONST_SOCKADDR_ARG __const struct sockaddr *
> #else
> Definition of __restrict in glibc 2.2
> /* __restrict is known in EGCS 1.2 and above. */
> #if !__GNUC_PREREQ (2,92)
> # define __restrict /* Ignore */
> #endif
After staring at this a little, I wonder whether the __restrict
qualifiers might be the problem. However, my compiler (gcc 2.95.3)
does not complain about this test program:
struct sockaddr { int x; };
typedef int socklen_t;
extern int accept (int __fd, struct sockaddr *__restrict __addr,
socklen_t *__restrict __addr_len);
extern int accept (int __fd, struct sockaddr * __addr,
socklen_t * __addr_len);
int main() { return 0; }
so at least in this version of gcc, it should not be a problem to
probe for accept's argument types without worrying about __restrict.
What compiler version are you using? Does it reject the above test
program?
regards, tom lane
On Tue, 17 Apr 2001, Tom Lane wrote:
> pgsql-bugs@postgresql.org writes:
> > The version of my glibc is 2.2,but seems postgresql based on glibc 2.1.
>
> Say what? Postgres isn't dependent on any particular version of glibc;
> in fact it runs fine on many Unixen that don't use glibc at all.
After I change the version from 2.2 to 2.1 , this problem solved.
I think the key point is the define of accept() in 2.2.
accept() define in glibc 2.2
extern int accept (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len)
__THROW;
Definition of __SOCKADDR_ARG in glibc 2.2
#if defined __cplusplus || !__GNUC_PREREQ (2, 7)
# define __SOCKADDR_ARG struct sockaddr *__restrict
# define __CONST_SOCKADDR_ARG __const struct sockaddr *
#else
Definition of __restrict in glibc 2.2
/* __restrict is known in EGCS 1.2 and above. */
#if !__GNUC_PREREQ (2,92)
# define __restrict /* Ignore */
#endif
Thank you for your asistance ....:)
>
> How about telling us what your problem is, rather than jumping to a
> conclusion about what caused it? What we want to see is exactly what
> commands you issued and exactly what error messages you got.
>
> regards, tom lane
>
On Tue, 17 Apr 2001, Lamar Owen wrote: > I have built PostgreSQL 7.1 on a system with glibc-2.2 -- Red Hat 7.1. > It works for me. > > There may be something else going onwith your system -- more details of > your system configuration would be helpful. > -- > Lamar Owen > WGCR Internet Radio > 1 Peter 4:11 kernel 2.2.19 gcc 2.96 gmake 3.79.1 glibc 2.2 What else should I offer ? Should I change the /usr/src/linux to the directory of this kernel version ? Thank you for your asistance....:)