Commit Graph

281 Commits

Author SHA1 Message Date
yury
ad269dedd4 * If ds_dwarf_cpp (C++ emulation) is enabled, add DW_AT_linkage_name attribute for methods.
LLDB uses it to display fully qualified method names. Add a simple C++ mangled name without params to achieve at least "Class::Method()" instead of just "Method" in LLDB.

git-svn-id: trunk@40498 -
2018-12-07 20:55:50 +00:00
yury
f0d42db82d * When ds_dwarf_cpp option is enabled, use dwarf2 implementation of strings debug info. It makes LLDB happy.
git-svn-id: trunk@40492 -
2018-12-07 16:14:02 +00:00
Jonas Maebe
758a8dd34a * fixed dwarf debug info after r40398 (mantis #34622)
git-svn-id: trunk@40421 -
2018-11-29 23:21:15 +00:00
pierre
8f7707d474 Use correct field for sl_absolutetype or sl_typeconv ppropaccesslistitem type (revealed by compilation with -CriotR)
git-svn-id: trunk@40109 -
2018-10-31 14:43:18 +00:00
pierre
92acd38f40 Fix for bug report #34380
git-svn-id: trunk@39986 -
2018-10-18 20:21:54 +00:00
Jonas Maebe
0b246f3dbd * converted Boolean8 to an internal type, and mapped Boolean to the
new internal pasbool1(type) (part of mantis #34411)
   o apply the _Bool x86-64 parameter passing rules only to pasbool1

git-svn-id: trunk@39949 -
2018-10-16 21:14:18 +00:00
florian
f48203b66f * generate no uleb with differences for line information
git-svn-id: branches/laksen/riscv_new@39490 -
2018-07-22 19:43:47 +00:00
nickysn
052da5c921 * use DW_OP_reg0..DW_OP_reg31 instead of DW_OP_regx in TDebugInfoDwarf.append_seg_reg
in case the dwarf register number is 31 or smaller

git-svn-id: trunk@39131 -
2018-05-28 14:21:53 +00:00
nickysn
ad96cf758b + emit a DW_AT_address_class dwarf attribute on i8086 for procdefs, indicating
their call model (near or far)

git-svn-id: trunk@39120 -
2018-05-25 20:03:15 +00:00
nickysn
6bd99b65bf + emit DW_AT_frame_base dwarf attributes on i8086. Even though the Watcom
Debugger doesn't require them (it uses BP as the frame register by default),
  the dwarf spec requires that we emit them on i8086, because we also use
  DW_OP_fbreg on i8086.

git-svn-id: trunk@39112 -
2018-05-24 22:49:12 +00:00
nickysn
c5fe78201c + emit DW_OP_bregx dwarf ops for local variables and parameters, relative to BP
on i8086. This fixes Watcom Debugger not showing them right in memory models,
  where DS<>SS (Watcom seems to ignore the DW_AT_segment attribute for register
  relative variables, even though we emit it correctly :/ )

git-svn-id: trunk@39111 -
2018-05-24 22:27:11 +00:00
nickysn
855c810c09 + emit a DW_AT_WATCOM_memory_model dwarf attribute, when compiling for i8086
git-svn-id: trunk@39110 -
2018-05-24 21:59:50 +00:00
nickysn
87e1fa8fc7 + added enum with the values for DW_AT_WATCOM_memory_model
git-svn-id: trunk@39109 -
2018-05-24 21:50:55 +00:00
nickysn
dc12d4d789 + added constants with the watcom dwarf attribute extensions
git-svn-id: trunk@39108 -
2018-05-24 21:49:28 +00:00
nickysn
749872aaf7 + generate DW_AT_segment dwarf attribute for local variables and parameters on i8086
git-svn-id: trunk@39107 -
2018-05-24 21:30:37 +00:00
nickysn
217c75f84e + generate dwarf DW_AT_address_class attributes for pointer types on i8086
git-svn-id: trunk@39106 -
2018-05-24 20:22:59 +00:00
nickysn
76fb8c3afd * fix for dwarf debug info generation of localsym vars with offset (thx Pierre for spotting this)
git-svn-id: trunk@39104 -
2018-05-24 16:31:01 +00:00
nickysn
69fbf0e0d8 * use unaligned constants, when writing the final dwarf arange record on i8086
git-svn-id: trunk@39103 -
2018-05-24 15:43:02 +00:00
nickysn
5417eb043d * fix for the encoding of dwarf debug info of local variables, whose base is a
register that has a dwarf register number higher than 31

git-svn-id: trunk@39099 -
2018-05-23 15:58:51 +00:00
nickysn
308e439d5d + emit segment information in the dwarf debug info for static variables on i8086
git-svn-id: trunk@39082 -
2018-05-21 15:30:58 +00:00
nickysn
76ff01beda + also emit the non-standard DW_LNE_set_segment watcom extended opcode in the
dwarf line info on i8086

git-svn-id: trunk@39081 -
2018-05-21 14:54:11 +00:00
nickysn
9d167dbd2a + emit DW_AT_segment attributes in the dwarf debug info for subroutines
(DW_TAG_subprogram) on i8086

git-svn-id: trunk@39080 -
2018-05-21 14:40:39 +00:00
nickysn
4aa66d9033 * emit a 32-bit offset for DW_FORM_ref_addr on i8086 (Watcom compatibility)
git-svn-id: trunk@39077 -
2018-05-21 01:36:23 +00:00
nickysn
d1cdd8be7c * do not emit padding bytes after the dwarf arange header on i8086 for
compatibility with Open Watcom (also, the dwarf spec is not very clear about
  the alignment requirements on segmented architectures, so that's why we do
  this by default, instead of putting it behind a -go debug switch)

git-svn-id: trunk@39075 -
2018-05-20 22:50:46 +00:00
nickysn
1a2f364e68 * use 32-bit address_size in the dwarf arange sections on i8086 (for Open Watcom
compatibility)

git-svn-id: trunk@39074 -
2018-05-20 21:59:32 +00:00
nickysn
0efb86518b + emit dwarf segment information on i8086 in the .debug_aranges section
git-svn-id: trunk@39073 -
2018-05-20 21:28:26 +00:00
nickysn
651571c00f + added comments, indicating where we emit the address_size and segment_size
fields of the dwarf arange header

git-svn-id: trunk@39072 -
2018-05-20 21:21:26 +00:00
nickysn
b048da4284 + added the non-standard Open Watcom DWARF extension DW_LNE_set_segment extended
opcode constant; not emitted yet; will be needed on i8086

git-svn-id: trunk@39048 -
2018-05-20 12:25:03 +00:00
nickysn
600b460ecd + added new debug output option -godwarfomflinnum for generating line number
information in OMF LINNUM records, in addition to the DWARF debug information.
  This enables source level debugging on i8086-msdos, when using the Open Watcom
  Debugger, provided the source was compiled with this option and the external
  linker (wlink) was used for generating the executable (the internal linker
  does not yet support generating debug information).

git-svn-id: trunk@39014 -
2018-05-17 14:38:50 +00:00
pierre
e7d724981c Replace $notes off/on by $push/$notes off/$pop to avoid getting note messages if notes are not on at start of unit compilation
git-svn-id: trunk@38718 -
2018-04-09 09:45:19 +00:00
nickysn
5bba79afb3 * use create_int_dataptr_unaligned instead of create_pint_unaligned in TDebugInfoDwarf.appendsym_absolute
git-svn-id: trunk@34837 -
2016-11-07 15:41:44 +00:00
nickysn
163d54c33e * emit a sizeint-sized string length for long string constants in the DWARF
debug info, instead of using create_pint

git-svn-id: trunk@34649 -
2016-10-07 22:36:48 +00:00
yury
db590da1e6 * Added a new debug option switch -godwarfcpp - Simulate C++ debug information in DWARF. It is more correct way to workaround LLDB issues than in r34558. This option can be used for debuggers, which does not support Pascal correctly.
git-svn-id: trunk@34562 -
2016-09-26 13:05:17 +00:00
yury
c36faacd57 * dwarf: Internal option to generate a LLDB compatible debug info. It is enabled for the Android targets.
git-svn-id: trunk@34558 -
2016-09-23 15:51:55 +00:00
svenbarth
3a9f8e88fd * don't write or reference debug information for a unit if it belongs to a/another package
git-svn-id: trunk@34382 -
2016-08-26 15:09:24 +00:00
Jonas Maebe
aa1be3276f - removed default value of _typ parameter of TAsmData.(Weak)RefAsmSymbol():
it was AT_NONE, which is invalid and should never be used
  * explicitly pass the correct value for all calls to those methods elsewhere
    in the compiler

git-svn-id: trunk@34250 -
2016-08-05 07:09:16 +00:00
Jonas Maebe
1cb8c0d00c * specify the def of assembler level symbols defined via
tasmdata.DefineAsmSymbol() and all routines that call it
   o will be used to automatically generate AB_INDIRECT sybols when
     necessary

git-svn-id: trunk@34164 -
2016-07-20 20:52:59 +00:00
Jonas Maebe
3177199d94 * changed all debug info labels from AT_DATA to AT_METADATA
git-svn-id: trunk@34150 -
2016-07-19 11:57:52 +00:00
florian
9daa4bd48d * always generate unaligned pointer entries (so .4bytes instead of .long is generated) in dwarf debugging info
git-svn-id: trunk@33782 -
2016-05-24 18:58:01 +00:00
florian
35b18fbf85 * change address related variables from aint to PInt to avoid range check errors
git-svn-id: trunk@33701 -
2016-05-16 19:24:09 +00:00
Jonas Maebe
953c47dd97 - disabled DWARF (a)ranges for Darwin, it's not supported/used there
git-svn-id: trunk@33479 -
2016-04-10 21:16:55 +00:00
florian
90b284e169 + generate .debug_aranges sections for dwarf debug info: enables faster address to debug info translation
git-svn-id: trunk@33454 -
2016-04-08 20:19:59 +00:00
Jonas Maebe
d44100448c * add support in the debug info for the dummy s128bit/u128bit types added
in r32735 (mantis #29259)

git-svn-id: trunk@32758 -
2015-12-27 11:45:24 +00:00
pierre
6d0c5b234b Avoid unsupported .uleb128 with diff of two sympbols for native solaris assembler
git-svn-id: trunk@32200 -
2015-10-30 13:38:03 +00:00
Jonas Maebe
91be1d0f2d * removed the DWARF label fields from tdef/tobjectdef, and dynamically
allocate them only while necessary
   o also unified the conditions under which we allocate a separate
     struct label

git-svn-id: trunk@32045 -
2015-10-13 15:59:03 +00:00
Jonas Maebe
add015f808 * ensure that the dwarf file table contains an entry if the current unit
contains any code, even if we cannot generate any debug info for that
    code (because the default file is file number 1, and if that table is
    empty some gdb versions crash)

git-svn-id: trunk@31335 -
2015-08-17 08:47:38 +00:00
Jonas Maebe
687bb15299 * renamed getdatalabel() to getglobaldatalabel
git-svn-id: branches/hlcgllvm@30336 -
2015-03-27 21:25:34 +00:00
Jonas Maebe
bd203a5b57 * synchronised with trunk till r30240
git-svn-id: branches/hlcgllvm@30241 -
2015-03-15 19:44:58 +00:00
Jonas Maebe
1e227f78fe * factored out the check for whether we have to generate dotted function
names, and disabled them for ppc64 ELFv2
  * disabling those also disables the function descriptors, so use the
    _CALL_ELF compiler variable to check whether there is in fact a
    function descriptor

git-svn-id: trunk@30196 -
2015-03-14 18:35:25 +00:00
Jonas Maebe
67b8aceaee * synchronized with privatetrunk till r30095
git-svn-id: branches/hlcgllvm@30101 -
2015-03-05 20:32:15 +00:00