|
|
|
Date: 2005-07-31
Problem: The ca65html utility doesn't handle the
.word and .addr assembler commands correctly,
if the operands contain an expression and not just a label.
Workaround: None.
Fix: Download the
patch
and apply it to the ca65html perl script.
Bug found by: Spiro Trikaliotis <ml-cc65 at trikaliotis. net>
|
|
|
Date: 2005-07-05
Problem: The subroutine that does divisions for
longs overwrites the high byte of the divisor instead of the high byte
of the result. This leads to errorneous results if the high byte of the
divisor is not zero.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the library. You may alternatively assemble the patched
module and link it to your application. If the module name preceeds the
library on the command line, the new module will be used instead that
from the library.
Bug found by: <priit at tefs. ee>
|
|
|
Date: 2005-06-30
Problem: If the last range in the binary file is
explicitly marked as "Code", and the operand byte(s) of the last opcode
are not part of the ROM, the disassembler will abort with an internal
error. This does usually happen if the specification as "Code" is wrong
and should probably be some sort of data table.
Workaround: Leave the last few bytes unmarked, or mark
it as some sort of data table.
Fix: Download and apply the
patch,
then recompile the disassembler.
Bug found by: Keith Howell
|
|
|
Date: 2005-06-08
Problem: Compiling an empty source file leads to an
internal compiler error:
cc65: Check failed: LI != 0, file `lineinfo.c', line 125
Workaround: Create some content for your source
files:-)
Fix: Download and apply the
patch,
then recompile the compiler.
|
|
|
Date: 2005-05-29
Problem: The assembler doesn't allow empty or comment
lines within a .struct or .union declaration.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the assembler.
Bug found by: Wolfgang Moser <w. moser at gm. fh-koeln. de>
|
|
|
Date: 2005-04-02
Problem: The co65 program fails to convert symbols
that depend on imports correctly.
Workaround: None.
Fix: Is fixed in the development version.
Bug found by: Spiro Trikaliotis <ml-cc65 at trikaliotis. net>
|
|
|
Date: 2005-04-02
Problem: The assembler does not allow a unary plus
in expressions.
Workaround: Remove the unary plus.
Fix: Download and apply the
patch,
then recompile the assembler.
Bug found by: Spiro Trikaliotis <ml-cc65 at trikaliotis. net>
|
|
|
Date: 2005-03-11
Problem: When testing a local variable of type
long or unsigned long , the compiler just
loads the variable and omits the test.
Workaround: Use an explicit compare:
long l;
while (l) { ... } /* Will NOT work */
while (l != 0) { ... } /* Will work */
Fix: Download and apply the
patch,
then recompile the library.
Bug found by: Carlos Sánchez de La Lama <csanchez at sidsa. es>
|
|
|
Date: 2005-02-14
Problem: The vfprintf function contained
another problem that was not fixed by patch #16 (2005-02-08). The
function did not handle file errors correctly. As with the last
problem, this is also true for all functions calling
vfprintf , namely printf , fprintf
and vprintf .
Note: Be sure to apply the patch after #16.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the library.
Bug found by: Greg King <gngking at erols. com>
|
|
|
Date: 2005-02-08
Problem: The vfprintf function contains an
error that prevents it from returning the correct result. A more or
less random number is returned instead of the number of output bytes.
Since printf , fprintf and vprintf
call vfprintf for output, these functions do also return
invalid values.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the library.
Bug found by: Oliver Schmidt <ol. sc at web. de>
|
|
|
Date: 2005-01-14
Problem: The linker does not update the size of an
internal buffer used to store relocation entries when generating o65
output files. Relocation table grow beyond 4096 bytes will cause memory
corruption. Core dumps or similar things are possible.
Note: The erroneous function is triggered only when
larger relocatable o65 files are generated. Most platforms use binary
output files and are therefore not affected.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the linker.
Bug found by: Greg King <gngking at erols. com>
|
|
|
Date: 2004-11-30
Problem: The _swap library function does
not work correctly for blocks greater than 256 bytes.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the library.
Bug found by: Oliver Schmidt <ol. sc at web. de>
|
|
|
Date: 2004-10-26
Problem: The disassembler doesn't handle the "absolute
X indirect" mode that is available with the 65SC02 and 65C02 CPUs. It
bails out with
Error: Not implemented
Workaround: None.
Fix: Download and apply the
patch,
then recompile the disassembler.
Bug found by: Miroslav Zinaić <mzinaic at globalnet. hr>
|
|
|
Date: 2004-10-10
Problem: The utility does not work correctly,
aborting with
co65: Internal error: Invalid size field value in o65 header
Workaround: None.
Fix: Download and apply the
patch,
then recompile the utility.
Bug found by: Karri Kaksonen <karri at sipo. fi>
|
|
|
Date: 2004-10-10
Problem: The --forget-inc-paths option
does not work correctly.
Workaround: Call the compiler directly, not through
cl65 .
Fix: Download and apply the
patch,
then recompile the utility.
Bug found by: Christian Groessler <cpg at aladdin. de>
|
|
|
Date: 2004-09-22
Problem: The compiler generates wrong code for a
switch statement without labels.
Workaround: Remove the switch statement.
Fix: Download and apply the
patch,
then recompile the compiler.
Bug found by: Stefan A. Haubenthal <polluks at web. de>
|
|
|
Date: 2004-08-09
Problem: Closing all open files on program exit did
not work correctly.
Workaround: Close all files before terminating the
program.
Fix: Download and apply the
patch,
then recompile the library.
Bug found by: Stefan A. Haubenthal <polluks at web. de>
|
|
|
Date: 2004-08-02
Problem: Functions are not converted to pointers when
passed as parameters to a function without a prototype or in the
variadic part of an argument list. A prominent example where this
happens is printf :
#include <stdio.h>
int main (void)
{
printf ("The address of main is %p\n", main);
return 0;
}
Workaround: Use the "address of" operator (&).
Fix: Download and apply the
patch,
then recompile the compiler.
Bug found by: Christian Groessler <cpg at aladdin. de>
|
|
|
Date: 2004-07-18
Problem: Inline assembler instructions that have
accumulator addressing mode when used without an argument
(lsr , ...), may cause strange optimizer behavior when
used without the "a" argument that denotes accumulator addressing.
Workaround: Always use the (otherwise optional)
"a" argument that denotes accumulator addressing with these
instructions. Disabling the optimizer will also work around
the problem.
Fix: Download and apply the
patch,
then recompile the compiler.
Bug found by: Glenn Jones <glenn. jones at rogers. com>
|
|
|
Date: 2004-07-15
Problem: The compiler generates bad code for pointer
arithmetic were one of the operands is a string literal. Example:
puts ("xxxxxxxxxxxxxxxxxxxx" + 10);
Workaround: Use a char array instead of a string
literal.
Fix: Download and apply the
patch,
then recompile the compiler.
Bug found by: MagerValp <MagerValp at cling. gu. se>
|
|
|
Date: 2004-06-30
Problem: The example given for the .REPEAT
command is wrong. Instead of the .XOR operator,
^ has to be used.
Workaround: None.
Fix: Use ^ instead of .XOR .
Bug found by: Stefan A. Haubenthal <polluks at web. de>
|
|
|
Date: 2004-06-10
Problem: Compiled binaries do not work on 64 bit
systems that use the LP64 model. See bug report from 2004-05-06 below.
Workaround: Use a 32 bit machine or compile the
compiler as 32 bit program.
Fix: Download and apply the
patch,
then recompile the compiler.
Bug found by: Joachim Strömbergson <Joachim. Strombergson at InformAsic. com>
Thanks to: MagerValp, for giving me a temporary account
on a 64 bit machine, so I could locate and fix the problem.
|
|
|
Date: 2004-06-05
Problem: Data declared as volatile is not
always parsed correctly.
Workaround: None.
Fix: Download and apply the
patch,
then recompile the compiler.
|
|
|
Date: 2004-06-02
Problem: The __XXX_LAST__ symbol created by the
linker for a memory area is not the first address not used by data,
as documented, but the number of bytes allocated in this memory area.
Workaround: Use
__XXX_START__+__XXX_LAST__ instead, eventually with an
additional check of .VERSION .
Fix: Download and apply the
patch,
then recompile the linker.
Bug found by: Oliver Schmidt <ol. sc at web. de>
|
|
|
Date: 2004-05-28
Problem: The compiler accepts types that are not
ints or pointers on the left side of op= operators.
Example:
struct {
char a, b;
} x;
x += 3;
Workaround: Don't do it:-)
Fix: Will get fixed in the development version.
|
|
|
Date: 2004-05-27
Problem: The compiler allows values that aren't
(constant numeric) integers in several places without emitting a
diagnostic. Example:
int i;
int a[];
char* p;
enum foo {
bar = (int) &a;
};
char x[(int)&(a+1)];
i = a[p];
p = -p;
p = +p;
p = ~p;
Workaround: Don't do it:-)
Fix: Will get fixed in the development version.
|
|
|
Date: 2004-05-23
Problem: The compiler doesn't accept an array as left
hand side for the -> operator. Example:
struct foo {
unsigned char a, b;
} bar[2];
...
bar->a = 0;
Workaround: Use array/dot syntax.
Fix: Download and apply the
patch,
then rebuild the compiler.
|
|
|
Date: 2004-05-12
Problem: The _scanf function, on which
all other scanf functions are based, doesn't parse
negative integers correctly.
Workaround: None.
Fix: Download and apply the
patch,
then rebuild the library.
|
|