<html>
<head>
<meta content="text/html; charset=ISO-8859-15"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">I guess this applies at least to all
dwarf related code in mips targets. I found the following post:<br>
<br>
<a class="moz-txt-link-freetext" href="http://sourceware.org/ml/binutils/2010-07/msg00096.html">http://sourceware.org/ml/binutils/2010-07/msg00096.html</a><br>
<br>
there the author says:<br>
<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-15">
<pre><meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">A brief look at the contents of your .debug_info section reveals
non-standard usage of platform-specific GAS directives to emit DWARF-2
records. You should be using .2byte, .4byte, etc., that have been
invented specifically for DWARF records, rather than .short, .long, etc.,
whose behaviour (size, alignment) is target-dependent.<pre></pre></pre>
<br>
also, .2byte and .4byte and .8byte are already (kind of)
implemented in aggas.pas:<br>
<br>
{ Generic unaligned pseudo-instructions, seems ELF specific
}<br>
use_ua_elf_systems =
[system_mipsel_linux,system_mipseb_linux,system_mipsel_embedded,system_mipseb_embedded];<br>
ait_ua_elf_const2str :
array[aitconst_16bit_unaligned..aitconst_64bit_unaligned]<br>
of string[20]=(<br>
#9'.2byte'#9,#9'.4byte'#9,#9'.8byte'#9<br>
);<br>
<br>
<br>
<br>
Am 07.07.13 09:26, schrieb Florian Klämpfl:<br>
</div>
<blockquote cite="mid:51D91840.8000504@freepascal.org" type="cite">
<pre wrap="">Am 05.07.2013 22:23, schrieb Michael Ring:
</pre>
<blockquote type="cite">
<pre wrap="">I have now found out why debug symbols get discarded by
pic32mx-elf32-gdb. The problem is a bug in the generation of
dwarf-debuginfo. My guess is that the problem should also exist in linux
target.
For mips unaligned data in dward debug info needs to be defined as
.4byte and .2byte instead of .long and .short.
This is implemented in most places but it seems not everywhere.
When I compile this program:
program hello;
var
i : integer;
begin
end.
the symbol I has one entry with .long, the resulting binary does not
load in gdb with the error-message: Dwarf Error: wrong version in
compilation unit header (is 10752, should be 2, 3, or 4)
# Syms - Begin Staticsymtable
# Symbol SYSTEM
# Symbol OBJPAS
# Symbol PIC32MX2XXFXXXC
# Symbol HELLO
# Symbol main
# Symbol I
.uleb128 2
.ascii "I\000"
.byte 5
.byte 3
.long U_$P$HELLO_$$_I
.4byte _$HELLO$_Ld1
# Syms - End Staticsymtable
when I replace the '.long' with '.4byte' and recompile then the
resulting hello.elf loads fine into gdb. I could see before with readelf
that the dwarf info was misaligned compared to the dwarf imfo when I
compile the same code for arm-embedded
Can anybody help with a fix?
</pre>
</blockquote>
<pre wrap="">
Do I understand it correctly, that it is sufficient so replace .long by
.4byte and .short by .2byte at all locations? Does it apply to all targets?
_______________________________________________
fpc-devel maillist - <a class="moz-txt-link-abbreviated" href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freepascal.org/mailman/listinfo/fpc-devel">http://lists.freepascal.org/mailman/listinfo/fpc-devel</a>
</pre>
</blockquote>
<br>
</body>
</html>