home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cc65v261.zip / HTM.ZIP / bugs.php < prev    next >
Text File  |  2001-03-24  |  21KB  |  476 lines

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html-40/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <meta name="author" content="Ullrich von Bassewitz">
  6. <title>CC65 - known bugs</title>
  7. </head>
  8.  
  9.  
  10. <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#000080" alink="#FF0000" background="cc65-bg.png">
  11.  
  12.  
  13. <!-- GO -->
  14. <table align="left" border="0" cellpadding="0" cellspacing="0" width="100%">
  15. <tr><td><img  src="null.gif" width="110" alt=""></td><td>
  16.  
  17. <table width="100%">
  18. <tr><td>
  19.         <img width="290" height="50"  src="knownbugs.png" alt="Known Bugs">
  20.     </td><td align="right">
  21.         <img width="300" height="150"  src="cc65.png" alt="">
  22.     </td>
  23. </tr>
  24. </table>
  25.  
  26. <hr size=1 noshade><p><br><p>
  27.  
  28.  
  29. <h2>Version 2.6.1</h2>
  30.  
  31. <center>
  32. <table border="0" width="100%">
  33. <tr><td><img width="10" alt="" src="null.gif"></td><td>
  34. <table width="100%" border="1" cellspacing="0" cellpadding="0">
  35. <tr>
  36.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Component</strong></td></tr></table></td>
  37.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Description</strong></td></tr></table></td>
  38. </tr><tr>
  39.     <td align="center">
  40.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  41.         Compiler
  42.         </td></tr></table>
  43.     </td><td>
  44.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  45.         The compiler will crash after a function declaration that uses two
  46.         or more identical parameter names, and a call to this function.
  47.         This input is of course wrong, but the compiler shouldn't crash.<br>
  48.         <strong>Workaround: </strong>Don't do it:-)<br>
  49.         <strong>Fix: </strong>Is fixed in the development version.
  50.         </td></tr></table>
  51.     </td>
  52. </tr>
  53. </table>
  54. </td><td><img width="10" alt="" src="null.gif"></td></table></center>
  55. <p><br><p>
  56.  
  57.  
  58. <h2>Version 2.6.0</h2>
  59.  
  60. <center>
  61. <table border="0" width="100%">
  62. <tr><td><img width="10" alt="" src="null.gif"></td><td>
  63. <table width="100%" border="1" cellspacing="0" cellpadding="0">
  64. <tr>
  65.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Component</strong></td></tr></table></td>
  66.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Description</strong></td></tr></table></td>
  67. </tr><tr>
  68.     <td align="center">
  69.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  70.         Assembler
  71.         </td></tr></table>
  72.     </td><td>
  73.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  74.         Absolute long addressing does not work in 65816 mode. This is a problem
  75.         that was introduced some time ago with a change in the handling of
  76.         pseudo instructions (assembler commands). The problem is that the
  77.         dot (which is needed to separate bank and address in long addressing
  78.         mode) is not handled as a separate token by the scanner, but as part
  79.         of an (illegal) pseudo instruction.<br>
  80.         <strong>Workaround: </strong>You may use a macro that encodes the
  81.         necessary instructions by emitting literal bytes. Here is an example:
  82.         <pre>
  83.             .macro  ldaf    addr
  84.                     .byte           $AF
  85.                     .faraddr        addr
  86.             .endmacro
  87.         </pre>
  88.         <strong>Fix: </strong>Download and apply the
  89.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.6.0-03.txt">patch</a>,
  90.         then recompile the assembler. Please note that this patch is not a
  91.         complete solution for the problem. If the intra bank address is a
  92.         symbol, you will have to enclose it in parenthesis to make it work.<br>
  93.         <strong>Bug found by: </strong>John Weidman <jweidman@slip.net><br>
  94.         </td></tr></table>
  95.     </td>
  96. </tr><tr>
  97.     <td align="center">
  98.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  99.         Runtime library
  100.         </td></tr></table>
  101.     </td><td>
  102.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  103.         Several small subroutines that increment the primary register (ax)
  104.         have errors.<br>
  105.         <strong>Workaround: </strong>None<br>
  106.         <strong>Fix: </strong>Download the replacement modules
  107.         <ul>
  108.         <li><a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/incax3.s">incax3.s</a>
  109.         <li><a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/incax5.s">incax5.s</a>
  110.         <li><a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/incax6.s">incax6.s</a>
  111.         <li><a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/incax7.s">incax7.s</a>
  112.         <li><a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/incax8.s">incax8.s</a>
  113.         </ul>
  114.         from the patch directory, and recompile the library. You may also add
  115.         these files to your project, so they are used instead of the ones from
  116.         the library when linking.<br>
  117.         <strong>Bug found by: </strong>Eric Au <eric_au@hotmail.com><br>
  118.         </td></tr></table>
  119.     </td>
  120. </tr><tr>
  121.     <td align="center">
  122.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  123.         Compiler
  124.         </td></tr></table>
  125.     </td><td>
  126.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  127.         In 65C02 mode (that is, with an explicit <code>--cpu 65C02</code> given
  128.         on the command line) with optimization enabled, the optimizer
  129.         generates several dangling pointers when trying to translate bit
  130.         operations into the 65C02 <code>TRB</code> and <code>TSB</code>
  131.         instructions. The results differ from platform to platform but are
  132.         usually unpleasant: The Linux version often generates wrong code,
  133.         the Windows version will crash with a segmentation violation.<br>
  134.         <strong>Please note </strong>that this bug is <strong>only</strong>
  135.         triggered in 65C02 mode with optimization enabled. If you use 6502
  136.         mode (the default) or disable optimizations, you don't need to care
  137.         about it.<br>
  138.         <strong>Workaround: </strong>Disable the buggy optimizer step by using
  139.         the (undocumented) <code>-Of</code> option. Add
  140.         <pre>
  141.                 -Of0x1000
  142.         </pre>
  143.         to the compiler command line. You may also disable optimization
  144.         completely, but this is often not desirable.<br>
  145.         <strong>Fix: </strong>Apply
  146.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.6.0-01.txt">this patch</a>
  147.         to the <code>optimize.c</code> module and and recompile the compiler.<br>
  148.         <strong>Bug found by: </strong>Dennis Lin <dennis@mosart.com.tw><br>
  149.         </td></tr></table>
  150.     </td>
  151. </tr><tr>
  152.     <td align="center">
  153.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  154.         Linker
  155.         </td></tr></table>
  156.     </td><td>
  157.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  158.         Using separate <code>load</code> and <code>run</code> areas
  159.         does not work correctly.<br>
  160.         <strong>Note: </strong>None of the predefined system uses this feature,
  161.         you have to supply a configuration file to the linker to make use of
  162.         it.<br>
  163.         <strong>Workaround: </strong>In the linker configuration file, place
  164.         all memory areas that are used as <code>load</code> areas before
  165.         those used as <code>run</code> areas. That is, place the lines
  166.         describing ROM areas before those describing RAM areas.<br>
  167.         <strong>Fix: </strong>Apply
  168.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.6.0-02.txt">this patch</a>
  169.         and recompile the linker.<br>
  170.         <strong>Bug found by: </strong>Eric Bacher <ebacher@teaser.fr><br>
  171.         </td></tr></table>
  172.     </td>
  173. </tr>
  174. </table>
  175. </td><td><img width="10" alt="" src="null.gif"></td></table></center>
  176. <p><br><p>
  177.  
  178.  
  179. <h2>Version 2.5.0</h2>
  180.  
  181. <center>
  182. <table border="0" width="100%">
  183. <tr><td><img width="10" alt="" src="null.gif"></td><td>
  184. <table width="100%" border="1" cellspacing="0" cellpadding="0">
  185. <tr>
  186.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Component</strong></td></tr></table></td>
  187.     <td align="center"><table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td><strong>Description</strong></td></tr></table></td>
  188. </tr><tr>
  189.     <td align="center">
  190.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  191.         Assembler
  192.         </td></tr></table>
  193.     </td><td>
  194.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  195.         The <code>.IFP02</code>, <code>.IFPC02</code> and <code>.IFP816</code>
  196.         instructions described in the docs are not available.<br>
  197.         <strong>Workaround: </strong>Use
  198.         <pre>
  199.                 .if     .cpu = x
  200.         </pre>
  201.         instead.<br>
  202.         <strong>Fix: </strong>Is fixed in the development version.<br>
  203.         </td></tr></table>
  204.     </td>
  205. </tr><tr>
  206.     <td align="center">
  207.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  208.         Standard C library
  209.         </td></tr></table>
  210.     </td><td>
  211.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  212.         The '+' and ' ' (space) flags in any of the printf functions do not
  213.         work correctly. A plus or space character is added, even if the value
  214.         is negative.<br>
  215.         <strong>Workaround: </strong>None.<br>
  216.         <strong>Fix: </strong>Apply the
  217.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.5.0-04.txt">patch</a>
  218.         to the _printf.c module and and recompile the library.<br>
  219.         </td></tr></table>
  220.     </td>
  221. </tr><tr>
  222.     <td align="center">
  223.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  224.         Linker
  225.         </td></tr></table>
  226.     </td><td>
  227.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  228.         The linker does not accept the <code>-h</code> command line option.<br>
  229.         <strong>Workaround: </strong>Use <code>--help</code> instead.<br>
  230.         <strong>Fix: </strong>Is fixed in the development version.<br>
  231.         <strong>Bug found by: </strong>Christian Groessler, cpg@aladdin.de<br>
  232.         </td></tr></table>
  233.     </td>
  234. </tr><tr>
  235.     <td align="center">
  236.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  237.         Compiler
  238.         </td></tr></table>
  239.     </td><td>
  240.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  241.         Macro redefinitions are not detected and flagged as an error.<br>
  242.         <strong>Workaround: </strong>None.<br>
  243.         <strong>Fix: </strong>Is fixed in the development version.<br>
  244.         </td></tr></table>
  245.     </td>
  246. </tr><tr>
  247.     <td align="center">
  248.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  249.         Compiler
  250.         </td></tr></table>
  251.     </td><td>
  252.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  253.         The code generated for explicit type casts is sometimes wrong.<br>
  254.         <strong>Workaround: </strong>Don't use explicit type casts if you don't
  255.         need them.<br>
  256.         <strong>Fix: </strong>I'm currently testing replacement code and will
  257.         post a patch as soon as I'm confident that it works.<br>
  258.         <strong>Bug found by: </strong>Eric Au, eric_au@hotmail.com<br>
  259.         </td></tr></table>
  260.     </td>
  261. </tr><tr>
  262.     <td align="center">
  263.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  264.         Standard C library
  265.         </td></tr></table>
  266.     </td><td>
  267.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  268.         The <code>memcmp()</code> function does not work correctly.<br>
  269.         <strong>Workaround: </strong>None available.<br>
  270.         <strong>Fix: </strong>Use
  271.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/memcmp.s">this</a>
  272.         replacement function. Be sure to recompile the library or use it as
  273.         part of your project (in this case the buggy one from the library
  274.         will not be used).<br>
  275.         <strong>Bug found by: </strong>Eric Au, eric_au@hotmail.com<br>
  276.         </td></tr></table>
  277.     </td>
  278. </tr><tr>
  279.     <td align="center">
  280.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  281.         Runtime library
  282.         </td></tr></table>
  283.     </td><td>
  284.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  285.         The routine that handles <code>switch</code> statements for longs
  286.         has a bug. There is a high chance that a label is not found, and
  287.         the program may even crash.<br>
  288.         <strong>Workaround: </strong>None available.<br>
  289.         <strong>Fix: </strong>Apply the
  290.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.5.0-03.txt">patch</a>
  291.         to the lswitch.s module and and recompile the library.<br>
  292.         <strong>Bug found by: </strong>Greg King, gngking@erols.com<br>
  293.         </td></tr></table>
  294.     </td>
  295. </tr><tr>
  296.     <td align="center">
  297.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  298.         conio library
  299.         </td></tr></table>
  300.     </td><td>
  301.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  302.         A change in the newline handling applied to v2.5 broke the
  303.         <code>cvline</code> and <code>cvlinexy</code> functions. After
  304.         output of the first character, the X position is reset to zero.<br>
  305.         <strong>Workaround: </strong>Use calls to <code>cputc</code> or
  306.         <code>cputcxy</code> to draw vertical lines.<br>
  307.         <strong>Fix: </strong>There is currently no fix available.<br>
  308.         </td></tr></table>
  309.     </td>
  310. </tr><tr>
  311.     <td align="center">
  312.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  313.         Assembler
  314.         </td></tr></table>
  315.     </td><td>
  316.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  317.         When using 65SC02 mode, the <code>BIT</code> instruction has a wrong
  318.         encoding in immidiate mode. Both, 6502 mode and 65816 mode, as well as
  319.         the other addressing modes are ok.<br>
  320.         <strong>Workaround: </strong>Temporarily switch to 816 mode.<br>
  321.         <strong>Fix: </strong>Apply the
  322.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.5.0-02.txt">patch</a>
  323.         and recompile the assembler.<br>
  324.         <strong>Bug found by: </strong>C. N. Wong, superufo@netvigator.com<br>
  325.         </td></tr></table>
  326.     </td>
  327. </tr><tr>
  328.     <td align="center">
  329.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  330.         Compiler
  331.         </td></tr></table>
  332.     </td><td>
  333.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  334.         Subtracting zero from a variable will compile but not link:
  335.         <pre><code>
  336.         Unresolved external `decax0' in ...
  337.         </code></pre>
  338.         <strong>Workaround: </strong>Don't do it:-)<br>
  339.         <strong>Bug found by: </strong>Christian Groessler, cpg@aladdin.de<br>
  340.         </td></tr></table>
  341.     </td>
  342. </tr><tr>
  343.     <td align="center">
  344.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  345.         RedHat RPMs
  346.         </td></tr></table>
  347.     </td><td>
  348.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  349.         The header files needed for GEOS programs are not installed by the
  350.         source RPMs and they are not included in the binary RPMs. In the
  351.         second version of the RPMs, the geos subdirectory has the wrong
  352.         permissions (I didn't notice because I tested it as root :-().<br>
  353.         <strong>Fix: </strong>If you have the -2 RPMs, just fix the permissions
  354.         of the <code>/usr/lib/cc65/include/geos</code> directory. If you have
  355.         the -1 RPMs and if you want to create GEOS programs, download the
  356.         updated -3 RPMs. Otherwise don't care.-)<br>
  357.         </td></tr></table>
  358.     </td>
  359. </tr><tr>
  360.     <td align="center">
  361.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  362.         Assembler
  363.         </td></tr></table>
  364.     </td><td>
  365.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  366.         The <code>.ERROR</code> directive does not work. The error message
  367.         "String constant expected" is displayed instead of the requested
  368.         one.<br>
  369.         <strong>Workaround: </strong>None. You may use <code>.OUT</code>
  370.         instead, but you cannot avoid generation of the resulting binary.<br>
  371.         <strong>Fix: </strong>Apply the
  372.         <a href="ftp://ftp.musoftware.de/pub/uz/cc65/patches/patch-2.5.0-01.txt">patch</a>
  373.         and recompile the assembler.<br>
  374.         <strong>Bug found by: </strong>Dagan Galarneau, dagan@dnai.com<br>
  375.         </td></tr></table>
  376.     </td>
  377. </tr><tr>
  378.     <td align="center">
  379.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  380.         Assembler
  381.         </td></tr></table>
  382.     </td><td>
  383.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  384.         Defining a macro with <code>.DEFINE</code> in a <code>.IF...</code>
  385.         sequence that is assembled more than once (for example because you
  386.         writing an idempotent include file) will fail if the macro takes
  387.         parameters. Here is an example:<br>
  388.         <pre>
  389.         .define foo(bar)        fubar, bar
  390.         .if     0
  391.         .define foo(bar)        fubar, bar
  392.         .endif
  393.         </pre>
  394.         Defining the macro twice should not matter since the second definition
  395.         should get skipped. Unfortunately, <code>.DEFINE</code> style macros
  396.         are expanded when transforming the input into tokens. This is needed
  397.         because you may also replace keywords by using these macros. So, when
  398.         seeing the second "foo", the assembler tries to expand the macro
  399.         <code>foo</code> and expects a parameter, but in fact a left paren
  400.         follows, so it prints an error message, even if the resulting token
  401.         would be skipped later.<br>
  402.         <strong>Workaround: </strong>Try to avoid redefining
  403.         <code>.DEFINE</code> style macros, even if the second definition is
  404.         inside a <code>.IF...</code> statement. You may also use a classic
  405.         macro instead.<br>
  406.         <strong>Fix: </strong>This problem is inherent in the design and I'm
  407.         not sure if it is possible to fix it.<br>
  408.         <strong>Bug found by: </strong>Dagan Galarneau, dagan@dnai.com<br>
  409.         </td></tr></table>
  410.     </td>
  411. </tr><tr>
  412.     <td align="center">
  413.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  414.         Standard Headers
  415.         </td></tr></table>
  416.     </td><td>
  417.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  418.         <code>time.h</code> contains a wrong definition. The macro
  419.         <code>CLOCKS_PER_TICK</code> should be named
  420.         <code>CLOCKS_PER_SEC</code>. One of the sample programs (nachtm.c)
  421.         is using this wrong identifier.<br>
  422.         <strong>Fix: </strong>Replace the identifier by
  423.         <code>CLOCKS_PER_SEC</code>.
  424.         </td></tr></table>
  425.     </td>
  426. </tr><tr>
  427.     <td align="center">
  428.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  429.         Compiler
  430.         </td></tr></table>
  431.     </td><td>
  432.         <table bgcolor="#ffffff" border="0" cellspacing="2"><tr><td>
  433.         A local, static, uninitialized variable declaration, immidiately
  434.         followed by the declaration of an initialized auto variable inside
  435.         a function will cause the compiler to emit wrong code. What happens
  436.         is that the segment is not switched, so the code to initialize the
  437.         auto variable is emitted into the BSS segment.<br>
  438.         The error is easily detected since the linker will emit a warning.<br>
  439.         <strong>Workaround: </strong>Change the order of declarations, declare
  440.         the static variable after the auto one, or place the declaration of an
  441.         uninitialized auto varable between the two other decls.<br>
  442.         <strong>Fix: </strong>Is fixed in the development version.<br>
  443.         </td></tr></table>
  444.     </td>
  445. </tr>
  446. </table>
  447. </td><td><img width="10" alt="" src="null.gif"></td></table></center>
  448. <p><br><p>
  449.  
  450.  
  451. <!-- ------------------------- -->
  452. <a href="oldbugs.php">Old bugs</a>
  453. <p><br><p>
  454.  
  455. <table><tr>
  456.     <td><a href="http://www.cc65.org/"><img border=0 width=35 height=32 alt=""  src="back.png"></a></td>
  457.     <td><a href="http://www.cc65.org/">Back to the cc65 Main Page</a>.</td>
  458. </tr></table>
  459. <p>
  460.  
  461. <!-- Footer -->
  462.  
  463. <hr size=1 noshade>
  464. <address>
  465.     <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.cc65.org%2Fbugs.php">       <img border=0 src="http://validator.w3.org/images/vh40"
  466.        alt="Valid HTML 4.0!" height=31 width=88 align=right></a>
  467.     bugs.php; last change: 22-Mar-2001<br>
  468.     <a href="mailto:webmaster@cc65.org">webmaster@cc65.org</a>
  469. </address>
  470.  
  471. </td><td><img src="null.gif" width="20" alt=""></td></tr></table>
  472.  
  473. </body>
  474. </html>
  475.  
  476.