Package: romeo
Severity: normal
Tags: patch
When building 'romeo' on amd64 with gcc-4.0,
I get the following error:
assemble.c:581: error: invalid lvalue in assignment
assemble.c: In function 'MergeIfAdjacent':
assemble.c:645: error: invalid lvalue in assignment
assemble.c:647: error: invalid lvalue in assignment
assemble.c:649: error: invalid lvalue in assignment
assemble.c: In function 'ROMfree':
assemble.c:710: error: invalid lvalue in assignment
assemble.c:720: error: invalid lvalue in assignment
assemble.c:744: error: invalid lvalue in assignment
assemble.c:745: error: invalid lvalue in assignment
assemble.c: In function 'CompareTypeCtor':
assemble.c:1420: warning: pointer targets in passing argument 1 of 'strncmp'
differ in signedness
assemble.c:1420: warning: pointer targets in passing argument 2 of 'strncmp'
differ in signedness
assemble.c: In function 'SetSystem':
assemble.c:1504: warning: pointer targets in initialization differ in signedness
assemble.c:1597: warning: pointer targets in passing argument 1 of 'strlen'
differ in signedness
assemble.c:1606: warning: pointer targets in passing argument 1 of 'strlen'
differ in signedness
make[1]: *** [assemble.o] Error 1
make[1]: Leaving directory `/romeo-0.5.0'
make: *** [build-stamp] Error 2
With the attached patch 'romeo' can be compiled
on amd64 using gcc-4.0.
Regards
Andreas Jochens
diff -urN ../tmp-orig/romeo-0.5.0/MemoryPrv.h ./MemoryPrv.h
--- ../tmp-orig/romeo-0.5.0/MemoryPrv.h 2001-03-17 02:27:51.000000000 +0100
+++ ./MemoryPrv.h 2005-03-22 21:26:00.407687297 +0100
@@ -311,6 +311,11 @@
#define memUHeapSize(p,ver) \
(ver>2 ? ((MemHeapHeaderPtr)p)->size : (ver>1 ?
((Mem2HeapHeaderPtr)p)->size : ((Mem1HeapHeaderPtr)p)->size))
+#define memUHeapSizeSet(p,ver,Size) \
+ if (ver>2) ((MemHeapHeaderPtr )p)->size = Size; \
+ else if (ver>1) ((Mem2HeapHeaderPtr)p)->size = Size; \
+ else ((Mem1HeapHeaderPtr)p)->size = Size
+
#define memUHeapFlags(p) \
(((MemHeapHeaderPtr)p)->flags)
@@ -340,6 +345,10 @@
#define memUChunkSize(p,ver) \
(ver>1 ? ((MemChunkHeaderPtr)p)->size : ((Mem1ChunkHeaderPtr)p)->size)
+#define memUChunkSizeSet(p,ver,Size) \
+ if (ver>1) ((MemChunkHeaderPtr)p)->size = Size; \
+ else ((Mem1ChunkHeaderPtr)p)->size = Size
+
#define memUChunkFlags(p,ver) \
(ver>1 ? memChunkFlags(p) : ((Mem1ChunkHeaderPtr)p)->flags & 0xF0)
@@ -355,6 +364,10 @@
#define memUChunkHOffset(p,ver) \
(ver>1 ? ((MemChunkHeaderPtr)p)->hOffset :
((Mem1ChunkHeaderPtr)p)->hOffset)
+#define memUChunkHOffsetSet(p,ver,Offset) \
+ if (ver>1) ((MemChunkHeaderPtr )p)->hOffset = Offset; \
+ else ((Mem1ChunkHeaderPtr)p)->hOffset = Offset
+
diff -urN ../tmp-orig/romeo-0.5.0/assemble.c ./assemble.c
--- ../tmp-orig/romeo-0.5.0/assemble.c 2001-03-17 02:27:57.000000000 +0100
+++ ./assemble.c 2005-03-22 21:27:31.906082885 +0100
@@ -61,7 +61,7 @@
// Initialize this entire heap to 0.
memset (hdr, 0, size); //memUSizeOfHeapHeader(ver));
- memUHeapSize (hdr, ver) = size;
+ memUHeapSizeSet(hdr, ver, size);
memUHeapFlags(hdr) |= memHeapFlagReadOnly;
switch (ver)
@@ -87,7 +87,7 @@
memUSizeOfHeapTerminator(ver));
if (ver > 2)
{
- memUChunkHOffset(pChunk, chunkVer) = memUChunkSize(pChunk,
chunkVer) >> 1;
+ memUChunkHOffsetSet(pChunk, chunkVer, memUChunkSize(pChunk,
chunkVer) >> 1);
}
}
@@ -556,8 +556,8 @@
{
// Only update the hOffset (pointer to next free chunk) if
// the hOffset of the old free chunk was set.
- memUChunkHOffset(newFree, ver) = memUChunkHOffset(oldFree, ver)
-
- ((roundedSize +
memUSizeOfChunkHeader(ver)) >>1);
+ memUChunkHOffsetSet(newFree, ver, memUChunkHOffset(oldFree,
ver) -
+ ((roundedSize +
memUSizeOfChunkHeader(ver)) >>1));
}
@@ -576,9 +576,9 @@
{
// The previous free chunk now needs to point to the new free
chunk.
if (newsize)
- memUChunkHOffset(prevFree, ver) = ((UInt32)newFree -
(UInt32)prevFree) >> 1;
+ memUChunkHOffsetSet(prevFree, ver, ((UInt32)newFree -
(UInt32)prevFree) >> 1);
else
- memUChunkHOffset(prevFree, ver) +=
memUChunkHOffset(oldFree,ver);
+ memUChunkHOffsetSet(prevFree, ver,
memUChunkHOffset(prevFree, ver) + memUChunkHOffset(oldFree,ver));
}
@@ -642,11 +642,11 @@
{
/* Free, contiguous and neither are terminators */
if (memUChunkHOffset(pSecond,ver) != 0)
- memUChunkHOffset(pFirst,ver) +=
memUChunkHOffset(pSecond,ver);
+ memUChunkHOffsetSet(pFirst,ver,
memUChunkHOffset(pFirst,ver) + memUChunkHOffset(pSecond,ver));
else
- memUChunkHOffset(pFirst,ver) = 0;
+ memUChunkHOffsetSet(pFirst,ver, 0);
- memUChunkSize(pFirst,ver) += memUChunkSize(pSecond,ver);
+ memUChunkSizeSet(pFirst,ver,memUChunkSize(pFirst,ver) +
memUChunkSize(pSecond,ver));
return (1);
}
@@ -706,18 +706,18 @@
{
// This new free chunk will be the first one on the free list.
if (pFreeChunk)
- memUChunkHOffset(pChunk,chunkVer) = ((UInt32)pFreeChunk
- (UInt32)pChunk)
-
>> 1;
+ memUChunkHOffsetSet(pChunk,chunkVer,((UInt32)pFreeChunk
- (UInt32)pChunk)
+
>> 1);
if (heapVer > 2)
{
if (! pFreeChunk)
// In version 3 and above, the final free chunk
points
// to the heap terminator.
- memUChunkHOffset(pChunk,chunkVer) =
((UInt32)pHeap +
+ memUChunkHOffsetSet(pChunk,chunkVer,
((UInt32)pHeap +
memUHeapSize(pHeap, heapVer) -
memUSizeOfHeapTerminator(chunkVer) -
-
(UInt32)pChunk) >> 1;
+
(UInt32)pChunk) >> 1);
pHeap->header.ver3.firstFreeChunkOffset =
((UInt32)pChunk - (UInt32)pHeap)>>1;
}
@@ -741,8 +741,8 @@
hOffset =
((UInt32)memUChunkNextFree(pFreeChunk,chunkVer) - (UInt32)pChunk)
>> 1;
- memUChunkHOffset(pChunk, chunkVer) = hOffset;
- memUChunkHOffset(pFreeChunk,chunkVer) = ((UInt32)pChunk -
(UInt32)pFreeChunk)>>1;
+ memUChunkHOffsetSet(pChunk, chunkVer, hOffset);
+ memUChunkHOffsetSet(pFreeChunk,chunkVer, ((UInt32)pChunk -
(UInt32)pFreeChunk)>>1);
}
MergeIfAdjacent(pChunk, memUChunkNextFree(pChunk,chunkVer), chunkVer);
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]