procdefs after writing it, so that it can be written multiple times in
different units. It was only written once now, namely the first time it
was used. If this occurred before the implementation had been parsed, then
no info about low/high pc was written for this procdef.
* checking whether procstarttai is assigned is not a good way to determine
whether or not a procdef is defined in the current unit (it can also be
set if we are in the middle of parsing a uses clause, since all procdefs
are only reset afterwards). Check whether the parent static/globalsymtable
"iscurrentunit" instead.
git-svn-id: trunk@13912 -
o add accessibility info for fields and methods (public/protected/private)
o write method type info for methods not implemented in the current module
(for tf_dwarf_only_local_labels systems)
git-svn-id: trunk@13833 -
Darwin anymore), because otherwise if unit A is compiled without debug
info and unit B uses one of its types, the debug info will contain no
DW_TAG_typedef for that type and hence gdb will not recognise it as
a type definition that's part of the program.
git-svn-id: trunk@13424 -
TDebugInfoDwarf, so DWARFv2 and DWARFv3 generators can share protected
methods.
* fixed the debug info for sets whose language-level lower bound is not
equal to the actual set base used when storing the data (e.g., a "set
of 1..5" is actually stored as a "set of 0..7" or "set of 0..31")
(mantis #13984)
+ interactive test for the above
git-svn-id: trunk@13302 -
* Use DW_AT_byte_stride when possible, because gdb does not support DW_AT_stride_size
* Add stride to dynamic-array definitions
git-svn-id: trunk@13280 -
linker does not like two global labels both pointing at the end of a
section (causes "atom sorting error" warnings), and this happened for
units without any code after r13098
git-svn-id: trunk@13111 -
attribute is available via the new append_attribute() method
(to enable easily adding extra attributes)
* write the definitions of methods as child entries of the
objectdef, instead of in the global scope
* only write DW_AT_calling_convention and DW_AT_external attributes
if their value is different from the DWARF default one
+ write DW_AT_virtuality and DW_AT_vtable_elem_location attributes
for virtual methods
* write the debug info for the hidden "self" parameter before all
other parameters and mark it as "artificial", because that is
how GDB distinguishes regular methods from static methods
git-svn-id: trunk@13003 -
Borland's i386 calling convention (its value may still change)
* specify the calling convention of each procedure in the DWARF info
* don't add the function result twice or even thrice to the debug
info, and don't add it at all to the parameter lists (even if it's
a hidden parameter, gdb will automatically add it according to the
ABI rules when calling the function)
-> calling "register" functions/procedures works with my experimental
gdb patch (methods not yet tested, and probably won't work yet)
git-svn-id: trunk@12995 -
of in the DWARF, as it's more efficient and avoids a gdb bug which
occurs on some platforms (thanks to Jan Kratochvil for the tip,
http://sourceware.org/ml/gdb/2009-03/msg00094.html )
git-svn-id: trunk@12905 -
Needs a fix in gdb when referencing a location relative to a
global variable (an array element other than the first, a field
other than the first) on Mac OS X and when using external debug
info on Linux/Windows.
git-svn-id: trunk@12877 -
a dwarf entry
- (dwarf3) removed stride size from dynamic array entries because
it's not required there (the stride always equals the element size)
+ (dwarf3) added "allocated" attribute for dynamic arrays
+ (dwarf3) added generic implementation of string support for dwarf3,
which no longer depends on the hacked fake record type in gdb's
Pascal support. Includes support for all string types, except for
winlike widestrings (because I don't know how to extract the
length from them)
git-svn-id: trunk@12444 -
the array type, rather than an array type (since they are pointers)
+ fully implemented debug info for dynamic arrays using dwarf3 (as supported
by the gdb "archer" project with the archer-jankratochvil-vla branch)
(mantis #12789)
git-svn-id: trunk@12436 -
a) cpu64bitaddr, which means that we are generating a compiler which
will generate code for targets with a 64 bit address space/abi
b) cpu64bitalu, which means that we are generating a compiler which
will generate code for a cpu with support for 64 bit integer
operations (possibly running in a 32 bit address space, depending
on the cpu64bitaddr define)
All cpus which had cpu64bit set now have both the above defines set,
and none of the 32 bit cpus have cpu64bitalu set (and none will
compile with it currently)
+ pint and puint types, similar to aint/aword (not pword because that
that conflicts with pword=^word)
* several changes from aint/aword to pint/pword
* some changes of tcgsize2size[OS_INT] to sizeof(pint)
git-svn-id: trunk@10320 -
for qwordbool) + test:
o assigning true to such a variable now sets them to $ff/$ffff/$ffffffff
o these types are now all signed
o converting an integer type to a byte/word/long/qwordbool using an
explicit type cast keeps the integer's original value stored in the
bool, instead of forcing it to ord(true)/ord(false)
(mantis #10233 and #10613, implemented for all architectures, testsuite
tested for ppc32, sparc and x86)
* fixed some places where the rtl depended on longbool(true) having the
value 1
* extended several boolean tests (and adapted some to no longer assume
that byte/word/long/qwordbool(true)=1)
+ support for converting to qwordbool in second_int_to_bool for x86, ppc
and sparc
git-svn-id: trunk@9898 -
* transform directories to their dwarf format name while registering
them so that e.g. "./" gets properly mapped to "." already at that
point
* fixed wrong (but harmless) typecast in self checking
git-svn-id: trunk@9525 -
use the DW_TAG_typedef entries, because without them a type is
only locally visible in the file where it is declared (see
comments)
git-svn-id: trunk@9426 -
instruction of the function, like in the example in the dwarf2
specifications appendix 3 and as done by gcc (expected by Apple's
dsymutil)
git-svn-id: trunk@9425 -
* compile unit name requires (relative) path prefix otherwise the debugger
thinks that there is also a copy of the file in the current directory
git-svn-id: trunk@8847 -
moved to it)
+ -go[no]dwarfsets switch to [disable]/enable generation of dwarf set
information, as this breaks gdb < 6.5 (used to be disabled in the
compiler by an ifdef, still off by default)
git-svn-id: trunk@8414 -
* fixed some (harmless) ptrint warnings
- removed some commented code in agppcmpw
* added one missing field in a typed constant in cp1251
git-svn-id: trunk@8081 -