Thread: odd 7.4 build failure on new sparc machine

odd 7.4 build failure on new sparc machine

From
Andrew Dunstan
Date:
I am seeing a strange failure on the new box Sun donated, when trying to 
build 7.4 for the buildfarm. This is what I get:

gmake[3]: Entering directory `/export/home/oicu/bf/root/REL7_4_STABLE/pgsql.5463/src/backend/port'
ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include
-I/export/home/oicu/mysw/include -c -o dynloader.o dynloader.c
 
ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include
-I/export/home/oicu/mysw/include -c -o pg_sema.o pg_sema.c
 
ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../src/include
-I/export/home/oicu/mysw/include -c -o pg_shmem.o pg_shmem.c
 
pg_shmem.c: In function `PGSharedMemoryAttach':
pg_shmem.c:394: warning: passing arg 1 of `shmdt' from incompatible pointer type
ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -c tas.s
/usr/ccs/bin/ld -r -o SUBSYS.o dynloader.o pg_sema.o pg_shmem.o tas.o
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0xec1 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0xec5 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0x115d is non-aligned
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0x46 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0xeb7 is non-aligned
ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0xebd is non-aligned
gmake[3]: *** [SUBSYS.o] Error 1



What is odd is that the identical file seems to succeeed on the later 
8.0 and 8.1 branches.

I also don't understand the logic of what's in the file:
   ldstub [%o0],%o0   !!   !! if it was already set when we set it, somebody else already   !! owned the lock -- return
1.  !!   cmp %o0,0   bne .LL2   mov 1,%o0   !!   !! otherwise, it was clear and we now own the lock -- return 0.   !!
mov0,%o0
 
.LL2:   !!   !! this is a leaf procedure - no need to restore windows and   !! diddle the CWP.   !!   retl


Why do we have "mov 1,%o0" immediately followed by "mov 0,%o0"? As far 
as I can understand this code it doesn't seem to do what the comments 
say it does.

I'm not sure I care that much about 7.4 on this new machine, but it did 
seem to me like it might indicate a deeper problem.

cheers

andrew






Re: odd 7.4 build failure on new sparc machine

From
Andrew Dunstan
Date:

Andrew Dunstan wrote:

>
> I am seeing a strange failure on the new box Sun donated, when trying 
> to build 7.4 for the buildfarm. This is what I get:
>
>
[snip]

>
>
> What is odd is that the identical file seems to succeeed on the later 
> 8.0 and 8.1 branches.
>
>

This part at least is not true - in the later branches we use dummy.s.

So at this stage I think I will probably just abandon building 7.4 for 
this machine.

cheers

andrew


Re: odd 7.4 build failure on new sparc machine

From
Tom Lane
Date:
Andrew Dunstan <andrew@dunslane.net> writes:
> I am seeing a strange failure on the new box Sun donated, when trying to 

> ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes -Wmissing-declarations -c tas.s
> /usr/ccs/bin/ld -r -o SUBSYS.o dynloader.o pg_sema.o pg_shmem.o tas.o
> ld: fatal: relocation error: R_SPARC_32: file tas.o: symbol <unknown>: offset 0xec1 is non-aligned
> [etc]

> What is odd is that the identical file seems to succeeed on the later 
> 8.0 and 8.1 branches.

The solaris_sparc.s file seems identical in these branches up to CVS
label ... but are the compilation options the same?  The critical fix
might be somewhere in the configure/Makefile chain.

Another thing to try is whether it works without ccache.  We've seen
plenty of trouble from that tool :-(

> Why do we have "mov 1,%o0" immediately followed by "mov 0,%o0"?

Better read up on branch delay slots...
        regards, tom lane


Re: odd 7.4 build failure on new sparc machine

From
"Andrew Dunstan"
Date:
Tom Lane said:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> I am seeing a strange failure on the new box Sun donated, when trying
>> to
>
>> ccache gcc -O2 -fno-strict-aliasing -g -Wall -Wmissing-prototypes
>> -Wmissing-declarations -c tas.s /usr/ccs/bin/ld -r -o SUBSYS.o
>> dynloader.o pg_sema.o pg_shmem.o tas.o ld: fatal: relocation error:
>> R_SPARC_32: file tas.o: symbol <unknown>: offset 0xec1 is non-aligned
>> [etc]
>
>> What is odd is that the identical file seems to succeeed on the later
>> 8.0 and 8.1 branches.
>
> The solaris_sparc.s file seems identical in these branches up to CVS
> label ... but are the compilation options the same?  The critical fix
> might be somewhere in the configure/Makefile chain.


Yes - see later email where I concluded that.

>
> Another thing to try is whether it works without ccache.  We've seen
> plenty of trouble from that tool :-(


I am still waiting to see a smoking gun on it. So far there has been some
smoke but no gun or fire (sorry for mixed metaphor).

What I am thinking of doing is having buildfarm blow away the cache on
failure, so that ccache would be forced to recompile fropm scratch unless
the last case was a success. Thoughts?


>> Why do we have "mov 1,%o0" immediately followed by "mov 0,%o0"?
>
> Better read up on branch delay slots...
>


Yes, ok, I understand. I must have forgotten that one had to write the
assembler in that non-linear fashion to get the benefit of saving an
instruction cycle.


cheers

andrew