Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This linker error is <em>usually</em> not related to the <code>-Olink</code> optimization <code>-auto_sda</code>. The linker sees your whole program and will try not to screw it up by autoSDAizing more than 64K of your data. (It might still be a linker bug, but that's unlikely.)</p> <p>This error usually happens because someone who is <em>not</em> as perceptive as the linker has <em>already</em> put more than 64K bytes into SDA sections before the linker even gets a chance to have a go at it. The unperceptive individual might be you, if you did something like</p> <pre><code>#pragma startsda int small_data[10000]; // 40Kbytes int small_data_also[10000]; // another 40Kbytes #pragma endsda </code></pre> <p>(possibly split across multiple files; in fact I think you'll get a compiler or assembler diagnostic if you try to create more than 64K of SDA in a single file).</p> <p>But the unperceptive individual might also be the compiler, if you're passing options such as <code>-sda=4</code> (which acts as if you threw a <code>#pragma startsda</code> around every global variable of 4 bytes or smaller in the entire file) and you have a ton of global variables. The compiler will happily SDAize 10,000 bytes in each of 20 individual files, and then the linker will complain that you're handing it 200,000 bytes of SDA. (The linker is smart enough to rewrite regular data references into SDA references, but has never been taught how to rewrite things in the opposite direction.)</p> <p>Finally, even if you <em>think</em> you're not passing <code>-sda=</code>, you might be surprised. Run the driver with the <code>-#</code> or <code>-v</code> option. IIRC, <code>ccintppc</code> secretly passes <code>-sda=4</code> by default. You can get the driver to stop "helping" you; just pass <code>-sda=none</code> or <code>-sda=0</code>, which should override the driver's default. You might want to pass this option on a file-by-file basis, starting with your <a href="http://www.altdevblogaday.com/2011/11/03/cold-code-the-last-bastion-of-code-optimization/" rel="noreferrer">coldest code</a>.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload