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]