[fpc-devel] AVR systeminfo defaults to dwarf 3

Dimitrios Chr. Ioannidis d.ioannidis at nephelae.eu
Thu Feb 11 09:34:22 CET 2021


Hi,

Στις 10/2/2021 11:12 μ.μ., ο/η Christo Crause έγραψε:
> On Wed, Feb 10, 2021 at 3:16 PM Dimitrios Chr. Ioannidis via fpc-devel 
> <fpc-devel at lists.freepascal.org 
> <mailto:fpc-devel at lists.freepascal.org>> wrote:
>
>     Hi,
>
>     Στις 10/2/2021 2:25 μ.μ., ο/η Christo Crause έγραψε:
>>     On Wed, Feb 10, 2021 at 12:47 PM Dimitrios Chr. Ioannidis via
>>     fpc-devel <fpc-devel at lists.freepascal.org
>>     <mailto:fpc-devel at lists.freepascal.org>> wrote:
>>
>>         Hi,
>>
>>            I read at compiler/systems/i_embed.pas the AVR systeminfo,
>>         is the
>>         only one that, has as default "dbg : dbg_dwarf3". The other
>>         embed
>>         systems that uses dwarf ( ARM, MIPSEL, i8086, m68k,
>>         RISCV32/64, XTENSA,
>>         Z80 ), all have as default "dbg : dbg_dwarf2".
>>
>>            The AVR has problems with dbg_dwarf2 ? If not, could you
>>         please
>>         change the AVR systeminfo to dwarf2 also for consistency ?
>>
>>
>>     That was a fix for compiling controller units with lots of
>>     symbols, refer to this discussion thread:
>>     https://www.mail-archive.com/fpc-devel@lists.freepascal.org/msg35416.html
>>     <https://www.mail-archive.com/fpc-devel@lists.freepascal.org/msg35416.html>
>>     Dwarf2 is fine in general, unless the address (I think address in
>>     dwarf debug section, the details are a bit hazy in my memory) of
>>     symbols exceed 65535. Dwarf3 offers a larger data type for this
>>     scenario.
>
>      I'm using ppcrossavr with systeminfo default "dbg : dbg_dwarf2"
>     with no problems. If I remember correctly, IMHO, fixing the issue
>     33914 ( https://bugs.freepascal.org/view.php?id=33914
>     <https://bugs.freepascal.org/view.php?id=33914> ) had the
>     collateral effect to fixing also the above.
>
>      For test, I just debugged a physical atmega32u2 mcu with Lazarus
>     with no problems at all. Also for test, I builded an avr35 subarch
>     ppcrossavr and also debugged a physical atmega32u2 mcu with no
>     problems.
>
>
> You are probably right, I never checked if the pointer change of 
> #33914 also fixed the original issue in the mailing list so the 
> default dwarf version for AVR could be changed back to 2.  But then 
> Florian does have a point, why not make the default for all targets 
> dwarf 3?

I really don't know enough to have an opinion on this. As Florian wrote, 
Martin can answer this.

But if dwarf 3 is the default for avr, then IMHO, in avr link script 
generation are missing the following  :

===================================================================
--- t_embed.pas    (revision 48516)
+++ t_embed.pas    (working copy)
@@ -1074,6 +1074,11 @@
        Add('  .debug_str      0 : { *(.debug_str) }');
        Add('  .debug_loc      0 : { *(.debug_loc) }');
        Add('  .debug_macinfo  0 : { *(.debug_macinfo) }');
+      Add('  /* DWARF 3 */');
+      Add('  .debug_pubtypes 0 : { *(.debug_pubtypes) }');
+      Add('  .debug_ranges   0 : { *(.debug_ranges) }');
+      Add('  /* DWARF Extension.  */');
+      Add('  .debug_macro    0 : { *(.debug_macro) }');
        Add('}');
      end;
  {$endif AVR}

regards,

-- 

Dimitrios Chr. Ioannidis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20210211/f6d2db6e/attachment-0001.htm>


More information about the fpc-devel mailing list