Commit Graph

48 Commits

Author SHA1 Message Date
nickysn
b18602485a * fixed base segment calculation on i8086 (code moved after call to OpenDwarf,
because it needs to have e.processsegment initialized)

git-svn-id: trunk@39114 -
2018-05-25 00:52:14 +00:00
nickysn
45bcbca71b * fixed reading of DW_FORM_ref_addr on i8086
git-svn-id: trunk@39113 -
2018-05-25 00:21:53 +00:00
nickysn
2a5fbd4598 * continue reading the segment when walking the dwarf arange tuples on i8086
git-svn-id: trunk@39076 -
2018-05-20 22:51:52 +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
6fedf7e930 + debug dump the address size from the header in ParseCompilationUnitForFunctionName
git-svn-id: trunk@39070 -
2018-05-20 20:41:13 +00:00
nickysn
1d3ad2b078 + also take the segment portion of the address in lnfodwrf.ParseCompilationUnit
git-svn-id: trunk@39067 -
2018-05-20 17:20:29 +00:00
nickysn
4ce5db5188 + also check the arange segment in ParseCompilationUnitForDebugInfoOffset
git-svn-id: trunk@39066 -
2018-05-20 17:00:56 +00:00
nickysn
81d5483ab1 * subtract the process load segment from the code segment on i8086
git-svn-id: trunk@39064 -
2018-05-20 16:55:18 +00:00
nickysn
875330d84f + pass a segment (0 on non-i8086) to all ParseCompilationUnit* functions in unit
lnfodwrf

git-svn-id: trunk@39063 -
2018-05-20 16:51:49 +00:00
nickysn
d7a3f755e4 + also read arange segments on i8086
git-svn-id: trunk@39062 -
2018-05-20 16:07:28 +00:00
nickysn
3989e57fed * take into account the address size in lnfodwrf.ReadAddress on i8086; support
2-byte and 4-byte addresses

git-svn-id: trunk@39060 -
2018-05-20 15:48:58 +00:00
nickysn
a7f5a69000 + added an address size parameter to lnfodrwf.ReadAddress(); pass the expected
address size, as taken from the dwarf header structure

git-svn-id: trunk@39059 -
2018-05-20 15:43:19 +00:00
nickysn
dc8b78abe6 + debug print the arange address and segment sizes
git-svn-id: trunk@39058 -
2018-05-20 14:58:09 +00:00
nickysn
1f76f52996 * use hexstr(addr) in the dwarf backtrace function, so it displays always a good
value, according to the x86 pointer type

git-svn-id: trunk@39057 -
2018-05-20 14:42:17 +00:00
nickysn
96b53c168c * use hexstr(baseaddr) to print out the pointer value, regardless of its x86 type (near/far, etc.)
git-svn-id: trunk@39056 -
2018-05-20 14:39:28 +00:00
nickysn
abe61d0daa * the 'addr' and 'baseaddr' parameters of exeinfo.GetModuleByAddr changed to
far pointers on i8086
* the 'addr' parameter of lnfodwrf.OpenDwarf changed to codepointer

git-svn-id: trunk@39055 -
2018-05-20 14:33:17 +00:00
nickysn
0ceb1244bf * changed the type of the first parameter ('addr') of lnfodwrf.GetLineInfo to
CodePtrUInt instead of PtrUInt

git-svn-id: trunk@39053 -
2018-05-20 13:41:10 +00:00
nickysn
2411cb3f24 * fix save/restore of base/index/pos on i8086
git-svn-id: trunk@39050 -
2018-05-20 12:55:22 +00:00
nickysn
0ca05f042b + parse the openwatcom dwarf extension DW_LNE_SET_SEGMENT and also track segment
data in the dwarf state machine on i8086

git-svn-id: trunk@39049 -
2018-05-20 12:43:53 +00:00
nickysn
60d49d696a * fix for ReadLEB128 on 16-bit CPUs
git-svn-id: trunk@39047 -
2018-05-20 12:06:36 +00:00
nickysn
994783db95 + introduce the TFilePos type for storing file offsets; use longint instead of
sizeint on i8086, because sizeint is 16-bit and file offsets are 32-bit there

git-svn-id: trunk@39046 -
2018-05-20 11:55:47 +00:00
nickysn
8364b1f4ca * changed the result of function Pos() to SizeInt (same type as the 'index'
variable it returns). Fixes the register allocation failure error when
  compiling on i8086.

git-svn-id: trunk@39033 -
2018-05-20 10:40:00 +00:00
maciej-izak
322720236c + added missing dwarf constants: DW_FORM_sec_offset, DW_FORM_exprloc and DW_FORM_flag_present
git-svn-id: trunk@35717 -
2017-04-03 10:42:27 +00:00
florian
71b7cd7e1d * the size of DW_FORM_ref_addr entries depends on the DWARF version
git-svn-id: trunk@33477 -
2016-04-10 19:46:05 +00:00
florian
a7346b2f9d + make use of .debug_aranges section for faster name search when generating stack backtraces
git-svn-id: trunk@33470 -
2016-04-10 12:21:35 +00:00
florian
feb15f08b3 * abbrev section must be re-read for each chunk of debug info, should resolve #29825
git-svn-id: trunk@33233 -
2016-03-13 14:41:56 +00:00
florian
928027a7a4 * read Dwarf data blocks correctly
git-svn-id: trunk@33232 -
2016-03-13 12:52:25 +00:00
florian
8a2917639b * improved comments
* tried to make code more robust

git-svn-id: trunk@33231 -
2016-03-13 12:28:26 +00:00
florian
5109ad9c55 + write also the function name in stack backtraces when dwarf debugging info is used, resolves #17574
git-svn-id: trunk@33228 -
2016-03-12 22:35:29 +00:00
michael
9225ff3293 * Fix for bug ID #28283 by Denis Kozlov
git-svn-id: trunk@32919 -
2016-01-10 20:14:28 +00:00
nickysn
75ec4adcf9 * fixed compilation of lnfodwrf in the i8086 medium and compact memory models
git-svn-id: trunk@30638 -
2015-04-18 01:56:29 +00:00
florian
f7785be945 * make the dwarf line info reader more fault tolerant, patch by Martin Friebe, resolves #24900
git-svn-id: trunk@26812 -
2014-02-18 20:36:25 +00:00
sergei
35a2ed9a6c - Removed unused variable
- Removed inline directive (formal arguments are unsupported and only cause compiler noise)

git-svn-id: trunk@17988 -
2011-07-13 22:14:39 +00:00
pierre
8bcad0c07f avoid range check error in ParseCompilationUnit
git-svn-id: trunk@15478 -
2010-06-25 22:21:38 +00:00
michael
3e9b6151ee * Added warning about thread-safety
git-svn-id: trunk@14169 -
2009-11-14 10:29:45 +00:00
michael
740bd6744b * Patch from Martin Friebe to buffer reading dwarf info
git-svn-id: trunk@14168 -
2009-11-14 10:12:53 +00:00
yury
628b0c23ac * exeinfo: Return executable image base and current module base address on Windows.
* exeinfo: Properly handle long COFF section names. Bug #13499.
* lineinfo, lnfodwrf: Properly use executable image base and current module base address.

git-svn-id: trunk@13145 -
2009-05-15 22:14:09 +00:00
florian
29ba36e70b * when the end of a sequence is reached, first_row has to be set for proper address checking, resolves #10856
git-svn-id: trunk@11063 -
2008-05-23 21:12:03 +00:00
florian
d955c9b4f7 + proper handling of lineinfo retrival for dyn. libs in unix
git-svn-id: trunk@11010 -
2008-05-18 18:42:09 +00:00
florian
96f8576bf2 * handle lineinfo in dlls correctly, resolves #4171 and #10797 for windows
git-svn-id: trunk@11004 -
2008-05-18 16:46:17 +00:00
peter
cc710dc05f * remove objpas dependency, patch by Giulio
git-svn-id: trunk@10154 -
2008-02-02 16:16:21 +00:00
peter
482ad1334b * support .gnu_debuglink section to have the debug info in an
external file

git-svn-id: trunk@9813 -
2008-01-20 13:13:55 +00:00
peter
a504c974ab * use exeinfo unit to find .debug_line section
git-svn-id: trunk@9801 -
2008-01-19 22:09:58 +00:00
peter
2a0bf2b491 * return previous line that contains the call when we have found the address
* append / to directory if needed

git-svn-id: trunk@9067 -
2007-11-02 21:20:16 +00:00
yury
05f718fbd2 * Fixed warnings and notes.
git-svn-id: trunk@9044 -
2007-11-01 15:45:33 +00:00
florian
0ae5dedbc2 * last commit fixed, the steps are: saving, testing, committing, not testing, saving, commtting ;)
git-svn-id: trunk@8961 -
2007-10-27 20:42:48 +00:00
florian
d35fae6c74 * monster line fixed
git-svn-id: trunk@8959 -
2007-10-27 20:21:41 +00:00
tom_at_work
949aa60805 * DWARF debug lineinfo reader
git-svn-id: trunk@5632 -
2006-12-17 23:11:25 +00:00