Thread: 6.5.2 broken on alpha/Tru64 Unix 4.0d/cc
Hi, all. Someone has changed the "#if defined(__alpha)" tests that existed in include/storage/s_lock.h in 6.5.1 to "#if defined(__alpha__)". The problem is that DEC (¿Compaq?) C only defines __alpha, (gcc defines both __alpha and __alpha__) so it doesn't work anymore. In fact, there are two places where the test is used, one inside a "#if defined(__GNUC__)" and the other one inside the corresponding "#else". It seems that the easiest sollution is to change the check inside the "#else" back to "#if defined(__alpha)". Cheers, Pedro. -- ------------------------------------------------------------------- Pedro José Lobo Perea Tel: +34 91 336 78 19 Centro de Cálculo Fax: +34 91 331 92 29 E.U.I.T. Telecomunicación e-mail: pjlobo@euitt.upm.es Universidad Politécnica de Madrid Ctra. de Valencia, Km. 7 E-28031 Madrid - España / Spain
"Pedro J. Lobo" <pjlobo@euitt.upm.es> writes: > Someone has changed the "#if defined(__alpha)" tests that existed in > include/storage/s_lock.h in 6.5.1 to "#if defined(__alpha__)". The problem > is that DEC (�Compaq?) C only defines __alpha, (gcc defines both __alpha > and __alpha__) so it doesn't work anymore. I thought that was bogus when it was done. Should be #if defined(__alpha) || defined(__alpha__) to cover both compilers. > In fact, there are two places where the test is used, one inside a "#if > defined(__GNUC__)" and the other one inside the corresponding "#else". It > seems that the easiest sollution is to change the check inside the "#else" > back to "#if defined(__alpha)". ... which would break whichever compiler is being used by the person who submitted the patch. I don't think it was changed on a whim. regards, tom lane
> "Pedro J. Lobo" <pjlobo@euitt.upm.es> writes: > > Someone has changed the "#if defined(__alpha)" tests that existed in > > include/storage/s_lock.h in 6.5.1 to "#if defined(__alpha__)". The problem > > is that DEC (�Compaq?) C only defines __alpha, (gcc defines both __alpha > > and __alpha__) so it doesn't work anymore. > > I thought that was bogus when it was done. Should be > #if defined(__alpha) || defined(__alpha__) > to cover both compilers. > > > In fact, there are two places where the test is used, one inside a "#if > > defined(__GNUC__)" and the other one inside the corresponding "#else". It > > seems that the easiest sollution is to change the check inside the "#else" > > back to "#if defined(__alpha)". > > ... which would break whichever compiler is being used by the person who > submitted the patch. I don't think it was changed on a whim. I recommend putting something in the alpha template to define __alpha, so we don't have to double-compare everywhere. I will make the change now. -- Bruce Momjian | http://www.op.net/~candle maillist@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
> "Pedro J. Lobo" <pjlobo@euitt.upm.es> writes: > > Someone has changed the "#if defined(__alpha)" tests that existed in > > include/storage/s_lock.h in 6.5.1 to "#if defined(__alpha__)". The problem > > is that DEC (�Compaq?) C only defines __alpha, (gcc defines both __alpha > > and __alpha__) so it doesn't work anymore. > > I thought that was bogus when it was done. Should be > #if defined(__alpha) || defined(__alpha__) > to cover both compilers. > > > In fact, there are two places where the test is used, one inside a "#if > > defined(__GNUC__)" and the other one inside the corresponding "#else". It > > seems that the easiest sollution is to change the check inside the "#else" > > back to "#if defined(__alpha)". > > ... which would break whichever compiler is being used by the person who > submitted the patch. I don't think it was changed on a whim. New code in Makefile.alpha is: /* some platforms define __alpha, but not __alpha__ */ #if defined(__alpha) && !defined(__alpha__) #define __alpha__ #endif -- Bruce Momjian | http://www.op.net/~candle maillist@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
Bruce Momjian <maillist@candle.pha.pa.us> writes: > New code in Makefile.alpha is: > /* some platforms define __alpha, but not __alpha__ */ > #if defined(__alpha) && !defined(__alpha__) > #define __alpha__ > #endif OK, so we're going to standardize on __alpha__ to recognize that platform? OK by me, unless the Alpha users know a reason not to. But the above doesn't belong in Makefile.alpha does it? I'd have thought include/port/alpha.h, since __alpha__ is being looked for by C code not makefiles. BTW, a quick glimpse shows no occurrences of __alpha except in contrib/int8/int8.c, which is presumably unmaintained dead code now that int8 is in the mainstream. Shouldn't we delete contrib/int8 entirely? regards, tom lane
> Bruce Momjian <maillist@candle.pha.pa.us> writes: > > New code in Makefile.alpha is: > > > /* some platforms define __alpha, but not __alpha__ */ > > #if defined(__alpha) && !defined(__alpha__) > > #define __alpha__ > > #endif > > OK, so we're going to standardize on __alpha__ to recognize that > platform? OK by me, unless the Alpha users know a reason not to. > > But the above doesn't belong in Makefile.alpha does it? I'd have > thought include/port/alpha.h, since __alpha__ is being looked for > by C code not makefiles. Moved to port/alpha.h, both trees. > > BTW, a quick glimpse shows no occurrences of __alpha except in > contrib/int8/int8.c, which is presumably unmaintained dead code now > that int8 is in the mainstream. Shouldn't we delete contrib/int8 > entirely? contrib/int8 removed. -- Bruce Momjian | http://www.op.net/~candle maillist@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
egcs, also defines both __alpha & __alpha__ ( if u havent't test there already ) I believe this covers all avail compiled on the Digital Alpha box gat Tom Lane wrote: > "Pedro J. Lobo" <pjlobo@euitt.upm.es> writes: > > Someone has changed the "#if defined(__alpha)" tests that existed in > > include/storage/s_lock.h in 6.5.1 to "#if defined(__alpha__)". The problem > > is that DEC (¿Compaq?) C only defines __alpha, (gcc defines both __alpha > > and __alpha__) so it doesn't work anymore. > > I thought that was bogus when it was done. Should be > #if defined(__alpha) || defined(__alpha__) > to cover both compilers. > > > In fact, there are two places where the test is used, one inside a "#if > > defined(__GNUC__)" and the other one inside the corresponding "#else". It > > seems that the easiest sollution is to change the check inside the "#else" > > back to "#if defined(__alpha)". > > ... which would break whichever compiler is being used by the person who > submitted the patch. I don't think it was changed on a whim. > > regards, tom lane > > ************
On Fri, 8 Oct 1999, Tom Lane wrote: >Bruce Momjian <maillist@candle.pha.pa.us> writes: >> New code in Makefile.alpha is: > >> /* some platforms define __alpha, but not __alpha__ */ >> #if defined(__alpha) && !defined(__alpha__) >> #define __alpha__ >> #endif > >OK, so we're going to standardize on __alpha__ to recognize that >platform? OK by me, unless the Alpha users know a reason not to. I don't see any. The only problem I can see is that __alpha (or __alpha__) used to mean "Alpha/Tru64 Unix", and this is no longer true because of Alpha/Linux. If there is any place in the code that's valid only for Alpha/Tru64, then __osf__ should be used. For example, s_lock.h uses the msem_xxx functions to implement spinlocks when gcc is not used. These functions are related to msemaphores, which are semaphores that live in shared memory segments (or "mmap"ed files). I don't know wheter this group of functions is specific to Tru64 Unix, but at least FreeBSD doesn't have them. If Alpha/Linux doesn't have them, then __osf__ should be used there instead of __alpha__ (or at least a combination of both). Regards, Pedro. -- ------------------------------------------------------------------- Pedro José Lobo Perea Tel: +34 91 336 78 19 Centro de Cálculo Fax: +34 91 331 92 29 E.U.I.T. Telecomunicación e-mail: pjlobo@euitt.upm.es Universidad Politécnica de Madrid Ctra. de Valencia, Km. 7 E-28031 Madrid - España / Spain