rdwarf 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +16 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +28 -0
- data/README.md +39 -0
- data/Rakefile +8 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/ext/rdwarf/depend +5 -0
- data/ext/rdwarf/extconf.rb +29 -0
- data/ext/rdwarf/libdwarf/CHANGES +102 -0
- data/ext/rdwarf/libdwarf/CODINGSTYLE +71 -0
- data/ext/rdwarf/libdwarf/COPYING +28 -0
- data/ext/rdwarf/libdwarf/ChangeLog +619 -0
- data/ext/rdwarf/libdwarf/ChangeLog2006 +835 -0
- data/ext/rdwarf/libdwarf/ChangeLog2007 +217 -0
- data/ext/rdwarf/libdwarf/ChangeLog2008 +263 -0
- data/ext/rdwarf/libdwarf/ChangeLog2009 +348 -0
- data/ext/rdwarf/libdwarf/ChangeLog2010 +175 -0
- data/ext/rdwarf/libdwarf/ChangeLog2011 +297 -0
- data/ext/rdwarf/libdwarf/ChangeLog2012 +131 -0
- data/ext/rdwarf/libdwarf/ChangeLog2013 +238 -0
- data/ext/rdwarf/libdwarf/ChangeLog2014 +399 -0
- data/ext/rdwarf/libdwarf/LGPL.txt +504 -0
- data/ext/rdwarf/libdwarf/LIBDWARFCOPYRIGHT +40 -0
- data/ext/rdwarf/libdwarf/Makefile.in +220 -0
- data/ext/rdwarf/libdwarf/NEWS +535 -0
- data/ext/rdwarf/libdwarf/README +235 -0
- data/ext/rdwarf/libdwarf/checkexamples.c +1179 -0
- data/ext/rdwarf/libdwarf/cmplrs/dwarf_addr_finder.h +55 -0
- data/ext/rdwarf/libdwarf/common.c +62 -0
- data/ext/rdwarf/libdwarf/common.h +38 -0
- data/ext/rdwarf/libdwarf/config.h.in +146 -0
- data/ext/rdwarf/libdwarf/configure +5581 -0
- data/ext/rdwarf/libdwarf/configure.in +167 -0
- data/ext/rdwarf/libdwarf/dw-linetableheader.txt +39 -0
- data/ext/rdwarf/libdwarf/dwarf.h +1342 -0
- data/ext/rdwarf/libdwarf/dwarf_abbrev.c +291 -0
- data/ext/rdwarf/libdwarf/dwarf_abbrev.h +45 -0
- data/ext/rdwarf/libdwarf/dwarf_addr_finder.c +676 -0
- data/ext/rdwarf/libdwarf/dwarf_alloc.c +685 -0
- data/ext/rdwarf/libdwarf/dwarf_alloc.h +38 -0
- data/ext/rdwarf/libdwarf/dwarf_arange.c +595 -0
- data/ext/rdwarf/libdwarf/dwarf_arange.h +62 -0
- data/ext/rdwarf/libdwarf/dwarf_base_types.h +157 -0
- data/ext/rdwarf/libdwarf/dwarf_die_deliv.c +1802 -0
- data/ext/rdwarf/libdwarf/dwarf_die_deliv.h +46 -0
- data/ext/rdwarf/libdwarf/dwarf_elf_access.c +1348 -0
- data/ext/rdwarf/libdwarf/dwarf_elf_access.h +46 -0
- data/ext/rdwarf/libdwarf/dwarf_error.c +492 -0
- data/ext/rdwarf/libdwarf/dwarf_error.h +53 -0
- data/ext/rdwarf/libdwarf/dwarf_form.c +1302 -0
- data/ext/rdwarf/libdwarf/dwarf_frame.c +2454 -0
- data/ext/rdwarf/libdwarf/dwarf_frame.h +418 -0
- data/ext/rdwarf/libdwarf/dwarf_frame2.c +1533 -0
- data/ext/rdwarf/libdwarf/dwarf_frame3.c +282 -0
- data/ext/rdwarf/libdwarf/dwarf_funcs.c +123 -0
- data/ext/rdwarf/libdwarf/dwarf_funcs.h +33 -0
- data/ext/rdwarf/libdwarf/dwarf_gdbindex.c +520 -0
- data/ext/rdwarf/libdwarf/dwarf_gdbindex.h +97 -0
- data/ext/rdwarf/libdwarf/dwarf_global.c +612 -0
- data/ext/rdwarf/libdwarf/dwarf_global.h +117 -0
- data/ext/rdwarf/libdwarf/dwarf_harmless.c +228 -0
- data/ext/rdwarf/libdwarf/dwarf_harmless.h +31 -0
- data/ext/rdwarf/libdwarf/dwarf_incl.h +61 -0
- data/ext/rdwarf/libdwarf/dwarf_init_finish.c +1263 -0
- data/ext/rdwarf/libdwarf/dwarf_leb.c +159 -0
- data/ext/rdwarf/libdwarf/dwarf_line.c +1822 -0
- data/ext/rdwarf/libdwarf/dwarf_line.h +446 -0
- data/ext/rdwarf/libdwarf/dwarf_line2.c +98 -0
- data/ext/rdwarf/libdwarf/dwarf_line_table_reader_common.c +1583 -0
- data/ext/rdwarf/libdwarf/dwarf_loc.c +1525 -0
- data/ext/rdwarf/libdwarf/dwarf_loc.h +149 -0
- data/ext/rdwarf/libdwarf/dwarf_loc2.c +833 -0
- data/ext/rdwarf/libdwarf/dwarf_macro.c +479 -0
- data/ext/rdwarf/libdwarf/dwarf_macro.h +35 -0
- data/ext/rdwarf/libdwarf/dwarf_opaque.h +778 -0
- data/ext/rdwarf/libdwarf/dwarf_original_elf_init.c +219 -0
- data/ext/rdwarf/libdwarf/dwarf_print_lines.c +631 -0
- data/ext/rdwarf/libdwarf/dwarf_pubtypes.c +132 -0
- data/ext/rdwarf/libdwarf/dwarf_query.c +1594 -0
- data/ext/rdwarf/libdwarf/dwarf_ranges.c +194 -0
- data/ext/rdwarf/libdwarf/dwarf_reloc_arm.h +308 -0
- data/ext/rdwarf/libdwarf/dwarf_reloc_mips.h +117 -0
- data/ext/rdwarf/libdwarf/dwarf_reloc_ppc.h +242 -0
- data/ext/rdwarf/libdwarf/dwarf_reloc_ppc64.h +272 -0
- data/ext/rdwarf/libdwarf/dwarf_reloc_x86_64.h +127 -0
- data/ext/rdwarf/libdwarf/dwarf_sort_line.c +665 -0
- data/ext/rdwarf/libdwarf/dwarf_string.c +82 -0
- data/ext/rdwarf/libdwarf/dwarf_stubs.c +38 -0
- data/ext/rdwarf/libdwarf/dwarf_tied.c +423 -0
- data/ext/rdwarf/libdwarf/dwarf_tsearch.h +125 -0
- data/ext/rdwarf/libdwarf/dwarf_tsearchhash.c +675 -0
- data/ext/rdwarf/libdwarf/dwarf_types.c +121 -0
- data/ext/rdwarf/libdwarf/dwarf_types.h +32 -0
- data/ext/rdwarf/libdwarf/dwarf_util.c +913 -0
- data/ext/rdwarf/libdwarf/dwarf_util.h +324 -0
- data/ext/rdwarf/libdwarf/dwarf_vars.c +125 -0
- data/ext/rdwarf/libdwarf/dwarf_vars.h +29 -0
- data/ext/rdwarf/libdwarf/dwarf_weaks.c +123 -0
- data/ext/rdwarf/libdwarf/dwarf_weaks.h +29 -0
- data/ext/rdwarf/libdwarf/dwarf_xu_index.c +579 -0
- data/ext/rdwarf/libdwarf/dwarf_xu_index.h +68 -0
- data/ext/rdwarf/libdwarf/dwgetopt.c +181 -0
- data/ext/rdwarf/libdwarf/dwgetopt.h +51 -0
- data/ext/rdwarf/libdwarf/gennames.c +531 -0
- data/ext/rdwarf/libdwarf/install.sh +119 -0
- data/ext/rdwarf/libdwarf/libdwarf.h.in +3746 -0
- data/ext/rdwarf/libdwarf/libdwarf2.1.mm +9805 -0
- data/ext/rdwarf/libdwarf/libdwarf2.1.pdf +0 -0
- data/ext/rdwarf/libdwarf/libdwarf2p.1.mm +2807 -0
- data/ext/rdwarf/libdwarf/libdwarf2p.1.pdf +0 -0
- data/ext/rdwarf/libdwarf/libdwarfdefs.h +81 -0
- data/ext/rdwarf/libdwarf/malloc_check.c +327 -0
- data/ext/rdwarf/libdwarf/malloc_check.h +52 -0
- data/ext/rdwarf/libdwarf/mips_extensions.mm +1266 -0
- data/ext/rdwarf/libdwarf/mips_extensions.pdf +0 -0
- data/ext/rdwarf/libdwarf/pro_alloc.c +179 -0
- data/ext/rdwarf/libdwarf/pro_alloc.h +33 -0
- data/ext/rdwarf/libdwarf/pro_arange.c +310 -0
- data/ext/rdwarf/libdwarf/pro_arange.h +51 -0
- data/ext/rdwarf/libdwarf/pro_die.c +431 -0
- data/ext/rdwarf/libdwarf/pro_die.h +59 -0
- data/ext/rdwarf/libdwarf/pro_encode_nm.c +108 -0
- data/ext/rdwarf/libdwarf/pro_encode_nm.h +39 -0
- data/ext/rdwarf/libdwarf/pro_error.c +96 -0
- data/ext/rdwarf/libdwarf/pro_error.h +43 -0
- data/ext/rdwarf/libdwarf/pro_expr.c +575 -0
- data/ext/rdwarf/libdwarf/pro_expr.h +36 -0
- data/ext/rdwarf/libdwarf/pro_finish.c +45 -0
- data/ext/rdwarf/libdwarf/pro_forms.c +1271 -0
- data/ext/rdwarf/libdwarf/pro_frame.c +572 -0
- data/ext/rdwarf/libdwarf/pro_frame.h +120 -0
- data/ext/rdwarf/libdwarf/pro_funcs.c +50 -0
- data/ext/rdwarf/libdwarf/pro_incl.h +91 -0
- data/ext/rdwarf/libdwarf/pro_init.c +327 -0
- data/ext/rdwarf/libdwarf/pro_line.c +373 -0
- data/ext/rdwarf/libdwarf/pro_line.h +112 -0
- data/ext/rdwarf/libdwarf/pro_macinfo.c +457 -0
- data/ext/rdwarf/libdwarf/pro_macinfo.h +31 -0
- data/ext/rdwarf/libdwarf/pro_opaque.h +513 -0
- data/ext/rdwarf/libdwarf/pro_pubnames.c +60 -0
- data/ext/rdwarf/libdwarf/pro_reloc.c +253 -0
- data/ext/rdwarf/libdwarf/pro_reloc.h +38 -0
- data/ext/rdwarf/libdwarf/pro_reloc_stream.c +256 -0
- data/ext/rdwarf/libdwarf/pro_reloc_stream.h +52 -0
- data/ext/rdwarf/libdwarf/pro_reloc_symbolic.c +245 -0
- data/ext/rdwarf/libdwarf/pro_reloc_symbolic.h +45 -0
- data/ext/rdwarf/libdwarf/pro_section.c +2233 -0
- data/ext/rdwarf/libdwarf/pro_section.h +100 -0
- data/ext/rdwarf/libdwarf/pro_types.c +274 -0
- data/ext/rdwarf/libdwarf/pro_types.h +34 -0
- data/ext/rdwarf/libdwarf/pro_util.h +38 -0
- data/ext/rdwarf/libdwarf/pro_vars.c +52 -0
- data/ext/rdwarf/libdwarf/pro_weaks.c +51 -0
- data/ext/rdwarf/rdwarf.c +765 -0
- data/ext/rdwarf/rdwarf.h +52 -0
- data/ext/rdwarf/rdwarf_names_gen.rb +109 -0
- data/lib/rdwarf.rb +181 -0
- data/lib/rdwarf/version.rb +3 -0
- data/rdwarf.gemspec +30 -0
- metadata +251 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5025e79195f3e1a040f05e3e0c89c2ff02055a1f
|
4
|
+
data.tar.gz: 46af846fae0a900a921c4617ac0ac4abc9b24be0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1230590d3eeb1b0d42944861f9c57d83eb4ed83c217307a3fcd70a417b7a3c6a053f49f8d5a8777183c2bf806a1a632fcec2ccd73f850d6f75ecbad6ac59500d
|
7
|
+
data.tar.gz: 36b2ab2fe6ad184c5da6c7f03eb6a48e3456372671de43c528cfb3e8da2fc8f624c0aafcd14d7d5fbfe2753e7ec2d94a295c4545e9866061cdacdd82d614a61b
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
Copyright (C) 2015 Kubo Takehiro <kubo@jiubao.org>
|
2
|
+
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
4
|
+
modification, are permitted provided that the following conditions are met:
|
5
|
+
|
6
|
+
1. Redistributions of source code must retain the above copyright
|
7
|
+
notice, this list of conditions and the following disclaimer.
|
8
|
+
|
9
|
+
2. Redistributions in binary form must reproduce the above
|
10
|
+
copyright notice, this list of conditions and the following
|
11
|
+
disclaimer in the documentation and/or other materials provided
|
12
|
+
with the distribution.
|
13
|
+
|
14
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS OR
|
15
|
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
16
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
17
|
+
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR CONTRIBUTORS BE
|
18
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
19
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
20
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
21
|
+
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
22
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
23
|
+
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
24
|
+
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
|
26
|
+
The views and conclusions contained in the software and documentation
|
27
|
+
are those of the authors and should not be interpreted as representing
|
28
|
+
official policies, either expressed or implied, of the authors.
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Rdwarf
|
2
|
+
|
3
|
+
Rdwarf is a ruby module to read DWARF debugging information using [libdwarf](http://www.prevanders.net/dwarf.html).
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'rdwarf'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install rdwarf
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Development
|
26
|
+
|
27
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
28
|
+
|
29
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/kubo/rdwarf.
|
34
|
+
|
35
|
+
## License
|
36
|
+
|
37
|
+
The gem is available as open source under the terms of the [LGPL 2.1](https://opensource.org/licenses/LGPL-2.1) as a whole.
|
38
|
+
|
39
|
+
Files under ext/rdwarf/libdwarf, which were copied from [libdwarf](http://www.prevanders.net/dwarf.html), are licensed under the LGPL2.1. Others are licensed under the 2-clause BSD license.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "rdwarf"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/ext/rdwarf/depend
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require "mkmf"
|
2
|
+
|
3
|
+
if !have_header('libelf.h') || !have_library('elf', 'elf_begin')
|
4
|
+
puts "ERROR: libelf is not found."
|
5
|
+
exit 1
|
6
|
+
end
|
7
|
+
|
8
|
+
libdwarf_dir = "#{File.absolute_path(File.dirname(__FILE__))}/libdwarf"
|
9
|
+
|
10
|
+
Dir.exist?('libdwarf') or Dir.mkdir('libdwarf')
|
11
|
+
|
12
|
+
Dir.chdir('libdwarf') do
|
13
|
+
env = {
|
14
|
+
'CC' => RbConfig::CONFIG['CC'],
|
15
|
+
'CPP' => RbConfig::CONFIG['CPP'],
|
16
|
+
'CFLAGS' => RbConfig::CONFIG['CFLAGS'],
|
17
|
+
}
|
18
|
+
cmd = "#{libdwarf_dir}/configure"
|
19
|
+
message("Executing #{cmd}:\n")
|
20
|
+
if !system(env, cmd)
|
21
|
+
exit 1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
$objs = ['rdwarf.o', 'rdwarf_names.o', 'libdwarf/libdwarf.a']
|
26
|
+
|
27
|
+
$CFLAGS += " -Ilibdwarf"
|
28
|
+
|
29
|
+
create_makefile("rdwarf/rdwarf")
|
@@ -0,0 +1,102 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
-------------------------------------------------------------
|
4
|
+
April 14, 2000 davea@sgi.com
|
5
|
+
Corrected minor bugs in production of 32bit dwarf with
|
6
|
+
64 bit pointers. Fixed omissions in legal
|
7
|
+
DIE children of a DIE. Make small changes in
|
8
|
+
description of regster output in frame information
|
9
|
+
access.
|
10
|
+
|
11
|
+
-------------------------------------------------------------
|
12
|
+
Mar 7, 2000 davea@sgi.com
|
13
|
+
Corrected line table reading so it will handle
|
14
|
+
reading an object with a diffent number of standard
|
15
|
+
op codes than at libdwarf compile time.
|
16
|
+
This was possible all along, but libdwarf did
|
17
|
+
not do it right.
|
18
|
+
|
19
|
+
-------------------------------------------------------------
|
20
|
+
Dec 8, 1999 davea@sgi.com
|
21
|
+
Changed nearly all files.
|
22
|
+
Adding the capability to read and produce
|
23
|
+
the new, accepted by committee, but not
|
24
|
+
released-publically 64bit extension proposal
|
25
|
+
dwarf data.
|
26
|
+
This allows dwarf compilation units
|
27
|
+
with 64bit section offsets and 32bit
|
28
|
+
sections offsets to be mixed.
|
29
|
+
So that offsets can grow very large with
|
30
|
+
64-bit pointer applications (though 64bit pointers
|
31
|
+
and 64bit offsets are not the same notion).
|
32
|
+
|
33
|
+
In addition, removed all the contents (or nearly all)
|
34
|
+
of the dwarf_funcs.c dwarf_weaks.c dwarf_vars.c,
|
35
|
+
and dwarf_types.c, as the data format is identical
|
36
|
+
to dwarf globals (pubnames) and there is no need
|
37
|
+
to duplicate all that code.
|
38
|
+
|
39
|
+
All these sections whose contents were gutted are things that
|
40
|
+
are formatted exactly like pubnames, and all are sgi
|
41
|
+
extensions. Now the implementation uses pubnames code
|
42
|
+
(dwarf_global.c) to do the work for all the pubnames-like
|
43
|
+
sections.
|
44
|
+
|
45
|
+
The (minor, IMO) difference is that in case of an incorrect
|
46
|
+
dwarf file (leading to libdwarf being unable to process
|
47
|
+
something in one of the sgi-specific pubnames-like sections)
|
48
|
+
the dwarf error string may reference pubnames when weaks,
|
49
|
+
static functions, static variables, or global typenames are
|
50
|
+
actually the problem. This is fixable, however the price would
|
51
|
+
appear to be that even globals would need to call a helper
|
52
|
+
function (to pass in the correct error return). Right now the
|
53
|
+
dwarf_weaks.c calls the dwarf_global.c function, for example,
|
54
|
+
with no extra arguments indicating the true section involved.
|
55
|
+
(Other approaches keeping the original error codes exist.
|
56
|
+
Producing the code uniquely via macros seems unappealing.
|
57
|
+
Inline functions would be ok though. This version does not
|
58
|
+
inline the functions we are talking about, such as
|
59
|
+
dwarf_global_name_offsets() when called from
|
60
|
+
dwarf_type_name_offsets().)
|
61
|
+
|
62
|
+
Since these extra sections are SGI only and only really used by
|
63
|
+
SGI's workshop product, and the performance hit is small, the
|
64
|
+
extra function calls in reading each seem acceptable.
|
65
|
+
|
66
|
+
|
67
|
+
-------------------------------------------------------------
|
68
|
+
Sep 29,1999 davea@sgi.com
|
69
|
+
Changed many files, so that it is easy to switch
|
70
|
+
from 32bit-offset-only (like cygnus
|
71
|
+
and dwarf2 v 2.0.0) to sgi/mips 64 bit dwarf.
|
72
|
+
See NEWS for more info on 32bit-offset.
|
73
|
+
|
74
|
+
|
75
|
+
-------------------------------------------------------------
|
76
|
+
Since Oct 95 and before May, 1996
|
77
|
+
|
78
|
+
Added the function dwarf_get_cie_of_fde() which makes it possible
|
79
|
+
to remember a single fde/cie set out of a block usefully.
|
80
|
+
|
81
|
+
Enhanced doc of dwarf_bitoffset()
|
82
|
+
|
83
|
+
Added new function dwarf_global_formref() so all reference
|
84
|
+
forms can be retrieved.
|
85
|
+
|
86
|
+
Fixed bug in retrieving array bounds: was failing to sign extend
|
87
|
+
formsdata.
|
88
|
+
|
89
|
+
Added function dwarf_get_fde_info_for_all_regs(), which makes
|
90
|
+
retrieval of the complete set of registers (as needed by
|
91
|
+
debuggers and exception handlers) effectively N times faster
|
92
|
+
than getting them one a time where N is the number of registers.
|
93
|
+
|
94
|
+
Added support for exception table handling (really just support
|
95
|
+
for a reference to an exception table for c++ exceptions).
|
96
|
+
|
97
|
+
Fixed a bug where useless extra space (several megabytes)
|
98
|
+
were malloc'ed for the abbreviations table by the libdwarf
|
99
|
+
consumer code.
|
100
|
+
|
101
|
+
davea@sgi.com
|
102
|
+
-------------------------------------------------------------
|
@@ -0,0 +1,71 @@
|
|
1
|
+
This document is a brief description of the main
|
2
|
+
coding style conventions in libdwarf. Many of them
|
3
|
+
will be obvious from the code, but over time some
|
4
|
+
accidental diffences crept in.
|
5
|
+
|
6
|
+
Code should be indented in multiples of 4 spaces, and
|
7
|
+
tabs should not be used to indent the source code.
|
8
|
+
Use the dicheck program to check indenting.
|
9
|
+
|
10
|
+
dwarf.h and libdwarf.h must have all arguments commented
|
11
|
+
out as these are public headers. Because a prototype like
|
12
|
+
int dwarf_example_prototype(Dwarf_Debug foo);
|
13
|
+
would be made unusable by a legitimate
|
14
|
+
preprocessor definition
|
15
|
+
such as #define foo +
|
16
|
+
|
17
|
+
The struct naming convention is 'struct Camel_Caps_s' for the
|
18
|
+
struct and 'Camel_Caps' for any typedef for the struct.
|
19
|
+
Admittedly having both camel caps
|
20
|
+
and an underbar is an unusual convention, but it is
|
21
|
+
the way the coding was begun in the early 1990's and
|
22
|
+
we should remain consistent now.
|
23
|
+
|
24
|
+
All user-referenceable data and functions
|
25
|
+
and user_visible types should begin with DW_ or
|
26
|
+
dwarf_. Non-static libdwarf global data and functions
|
27
|
+
should begin with _dwarf (a somewhat questionable
|
28
|
+
approach, but workable).
|
29
|
+
|
30
|
+
Function names should be all lower case with underbars
|
31
|
+
for readability.
|
32
|
+
|
33
|
+
There should never be static data in any function.
|
34
|
+
Nor should there ever be static data outside of libdwarf
|
35
|
+
functions. libdwarf can be called from multiple threads
|
36
|
+
(but only from one thread per Dwarf_Debug) and multiple
|
37
|
+
Dwarf_Debug objects can be open at one time.
|
38
|
+
Instead place such data per-dbg into the Dwarf_Debug structure
|
39
|
+
in dwarf_opaque.h. Similarly for the producer code.
|
40
|
+
|
41
|
+
Function-local variables should be lower-case with
|
42
|
+
underbars for readability. It's ok for a small loop
|
43
|
+
with counters to use single letter names like i or k or m.
|
44
|
+
|
45
|
+
structure members should have a struct-specific
|
46
|
+
2-character prefix to the name (followed by
|
47
|
+
an underbar). That makes it much
|
48
|
+
easier to grep for uses of members.
|
49
|
+
|
50
|
+
Try to keep lines under 80 characters in length.
|
51
|
+
|
52
|
+
Ensure every if() has {} to enclose the actions.
|
53
|
+
|
54
|
+
There is a slight preference for if<single space>(
|
55
|
+
over if(. Similarly with for (, while (, and switch (.
|
56
|
+
Not obsessing about these space-issues...
|
57
|
+
|
58
|
+
Use libdwarf.h types for all the data objects you define,
|
59
|
+
though sometimes an 'unsigned' or 'int' or 'size_t' is
|
60
|
+
ok in restricted circumstances. Dwarf_Unsigned Dwarf_Signed
|
61
|
+
are the preferred integer types for general use.
|
62
|
+
|
63
|
+
No .c file should ever have an 'extern *' to access some external.
|
64
|
+
Instead, such external references should be defined in a header file
|
65
|
+
and every .c with a reference to the external should #include
|
66
|
+
the relevant header. Being obsessive about this ensures that when
|
67
|
+
the definition changes it will match the function declaration.
|
68
|
+
There are a couple violations of this as of 2012, and those
|
69
|
+
should be fixed!
|
70
|
+
|
71
|
+
------------
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
The files:
|
4
|
+
libdwarf.h
|
5
|
+
dwarf.h
|
6
|
+
and all the .h and .c files in this implementation of
|
7
|
+
libdwarf are copyrighted according to the file
|
8
|
+
LIBDWARFCOPYRIGHT (which mentions the LGPL version 2.1).
|
9
|
+
Each file mentions the LGPL.
|
10
|
+
The full text of the LGPL 2.1 is provided in LGPL.txt
|
11
|
+
|
12
|
+
The libdwarf documentation:
|
13
|
+
libdwarf2.1.mm
|
14
|
+
is based on material submitted to the UI PLSIG as proposed
|
15
|
+
interfaces for dwarf, but completely rewritten.
|
16
|
+
Copyright ownership is therefore SGI (but see the document for details)
|
17
|
+
and it seems clear that the intent was there was to be free
|
18
|
+
copying with no fees.
|
19
|
+
|
20
|
+
libdwarf2p.1.mm
|
21
|
+
is documentation of a set of interfaces
|
22
|
+
(not part of the UI PLSIG proposals)
|
23
|
+
and the document was written from scratch at SGI.
|
24
|
+
Copyright ownership is therefore SGI (but see the document for details)
|
25
|
+
and it seems clear that the intent was there was to be free
|
26
|
+
copying with no fees.
|
27
|
+
|
28
|
+
17 March 2014:Updated to remove reference to dwarf.v2.mm.
|
@@ -0,0 +1,619 @@
|
|
1
|
+
2015-11-15 David Anderson
|
2
|
+
* Makefile.in,configure.in: These now support building in separate clean directory.
|
3
|
+
* configure: Regenerated.
|
4
|
+
2015-11-11 David Anderson
|
5
|
+
* dwarf_opaque.h: Delete two useless blank lines.
|
6
|
+
2015-11-09 David Anderson
|
7
|
+
* libdwarf.h.in: Removed unimplemented function
|
8
|
+
declarationfrom the file.
|
9
|
+
* libdwarf2.1.mm: Updated with new interface functions
|
10
|
+
for DWARF5 and split dwarf. Version2.33
|
11
|
+
* libdwarf2.1.mm: Regenerated.
|
12
|
+
2015-11-08 David Anderson
|
13
|
+
* dwarf_alloc.c: Fixed indents, trailing whitespace.
|
14
|
+
* dwarf_loc2.c: Fixed indents, trailing whitespace.
|
15
|
+
* dwarf_form.c: Made too-long line into 2 lines.
|
16
|
+
* dwarf_loc.h: Removed duplicate Dwarf_Loc_c_s etc declarations.
|
17
|
+
* dwarf_util.c(_dwarf_error_mv_s_to_t),dwarf_util.h: New
|
18
|
+
function to eliminate duplicative code.:
|
19
|
+
* dwarf_query.c): Fix bug in dwarf_get_offset_size().
|
20
|
+
Use new _dwarf_error_mv_s_to_t() to get error on correct dbg.
|
21
|
+
Fixed indents, trailing whitespace.
|
22
|
+
* dwarf_ranges.c: Use new _dwarf_error_mv_s_to_t()
|
23
|
+
to get error on correct dbg.
|
24
|
+
Fixed indents, trailing whitespace.
|
25
|
+
2015-11-07 David Anderson
|
26
|
+
* dwarf_alloc.c: Added new checks so user mixing up
|
27
|
+
tied dbg with regular dbg won't lead to crashes
|
28
|
+
when calling dwarf_dealloc or dwarf_finish().
|
29
|
+
Zeroed out some fields to recognize space deallocated.
|
30
|
+
* dwarf_die_deliv.c: Added support of split dwarf
|
31
|
+
DW_AT_[GNU_]ranges_base
|
32
|
+
* dwarf_form.c: Load string from tieddbg when appropriate.
|
33
|
+
* dwarf_harmless.c: On free() zero out a field to show that was done.
|
34
|
+
* dwarf_loc.c: Correct the handling of split dwarf loclist.
|
35
|
+
* dwarf_opaque.h: Add cc_ranges_base_present for split dwarf.
|
36
|
+
Add _dwarf_get_ranges_base_attr_from_tied() for split dwarf.
|
37
|
+
* dwarf_query.c: Get and remember skeleton compilaton unit
|
38
|
+
DW_AT_[GNU_]ranges_base from tied objects for split dwarf.
|
39
|
+
* dwarf_ranges.c: If a tied object present, look for ranges
|
40
|
+
there, not in split dwarf object.
|
41
|
+
* dwarf_util.c: Housekeeping zeros out fields to ensure not
|
42
|
+
used after dealloc.
|
43
|
+
2015-11-01 David Anderson
|
44
|
+
* configure.in: Added -O0 to --enable-wall.
|
45
|
+
So if a coredump while debugging gdb will work well.
|
46
|
+
* configure: Regenerated.
|
47
|
+
2015-11-01 David Anderson
|
48
|
+
* Makefile.in: Split out dwarf_loc2 to put the DWARF5
|
49
|
+
expression code all in one place.
|
50
|
+
* dwarf_alloc.c,dwarf_alloc.h: Three new opaque
|
51
|
+
structs for DWARF5 expression interfaces.
|
52
|
+
* dwarf_error.c: New error codes for DWARF5 expression interfaces.
|
53
|
+
* dwarf_frame.c: Altered internal interfaces to support
|
54
|
+
DWARF5 expression reading.
|
55
|
+
* dwarf_loc.c: Refactored to support DWARF5 and moved
|
56
|
+
some code into dwarf_loc2.c to segregate the new
|
57
|
+
interfaces for clarity.
|
58
|
+
* dwarf_loc.h: Definitions of new library-internal structs
|
59
|
+
(opaque to callers).
|
60
|
+
* dwarf_loc2.c: Contains the new DWARF5 location expression
|
61
|
+
interface code. It is not separately compiled, it is
|
62
|
+
#included by dwarf_loc.c.
|
63
|
+
* dwarf_opaque.h: Commentary change.
|
64
|
+
* dwarf_query.c: dwarf_get_offset_size() new.
|
65
|
+
Refactored to avoid duplicating code.
|
66
|
+
* libdwarf.h.in: DWARF5 location expression interfaces
|
67
|
+
refined and commentary improved.q
|
68
|
+
2015-10-28 David Anderson
|
69
|
+
* dwarf_loc2.c: New file with the new code for DWARF5
|
70
|
+
location expressions put here. Not separate compile,
|
71
|
+
this is brought into dwarf_loc.c via a #include there
|
72
|
+
2015-10-26 David Anderson
|
73
|
+
* Makefile.in: Handle the configure --enable-wall option.
|
74
|
+
* configure.in: Add --enable-wall so we can easily get
|
75
|
+
gcc's -Wall option for the build.
|
76
|
+
* configure: Regenerated.
|
77
|
+
* dwarf_error.c: Amplify the text for DW_DLE_LOCLIST_INTERFACE_ERROR.
|
78
|
+
* dwarf_loc.c(_dwarf_read_loc_expr_op): Correct a sanity test
|
79
|
+
recently introduced. Ensure the location fields all set.
|
80
|
+
#if 0 some code that will be fixed with the new location
|
81
|
+
interface set.
|
82
|
+
* dwarf_loc.h: Revised the prototypes and commentary for the new
|
83
|
+
location list interfaces.
|
84
|
+
2015-10-25 David Anderson
|
85
|
+
* checkexamples.c: Add commentary to example9.
|
86
|
+
* dwarf_alloc.c: Add DW_DLA_LOC_BLOCK_C and DW_CLA_LOCDESC_C
|
87
|
+
allocation descriptions to array.
|
88
|
+
* dwarf_alloc.h: Increase ALLOC_AREA_INDEX_TABLE_MAX to match.
|
89
|
+
* dwarf_base_types.h: Increase MAX_DW_DLA to match.
|
90
|
+
* dwarf_die_deliv.c: Switch some returns from pointer to
|
91
|
+
the standard int DW_DLV_OK etc and return pointer through
|
92
|
+
an argument. Identify which CUs are dwo by checking name
|
93
|
+
for a .dwo ending. Fix whitespace endings.
|
94
|
+
* dwarf_error.c: Add DW_DLE 309 to 311 errors to descriptions array.
|
95
|
+
* dwarf_form.c: Remove trailing whitespace. Reformat one line
|
96
|
+
so it is not so long.
|
97
|
+
* dwarf_line.c: Add {} on if for clarity.
|
98
|
+
Fix whitespace endings.
|
99
|
+
* dwarf_line_table_reader.c: Fix whitespace endings.
|
100
|
+
* dwarf_loc.c: Refactor loc. expr. reader into a
|
101
|
+
routine that reads one expression, _darf_read_loc_expr_op()..
|
102
|
+
Add DWARF5 operators.
|
103
|
+
Add preliminary dwo expression support (which will change
|
104
|
+
but this is a start). Old expression interface now
|
105
|
+
explicitly supports only DWARF 2,3,4. No DWARF5.
|
106
|
+
Add preliminary loclist_c support (it will change).
|
107
|
+
Add commentary about the old loclist interface.
|
108
|
+
* dwarf_loc.h: First cut of new interfaces (functional, not
|
109
|
+
public structs).
|
110
|
+
* dwarf_opaque.h: Add cc_is_dwo flag to cu context struct.
|
111
|
+
* libdwarf.h.in: Rework some loclist commentary.
|
112
|
+
Add first try at new loclist interfaces for DWARF2,3,4,5.
|
113
|
+
New error codes for new loclist/dwo code.
|
114
|
+
* libdwarf2.1.mm: Rev 2.32. New wording on old loclist
|
115
|
+
interfaces.
|
116
|
+
2015-10-15 David Anderson
|
117
|
+
* dwarf_util.c,dwarf_query.c: Added DW_FORM_strp_sup as
|
118
|
+
same idea as DW_FORM_GNU_strp_alt.
|
119
|
+
2015-10-15 David Anderson
|
120
|
+
* checkexamples.c: Fixed data type in the example code.
|
121
|
+
* dwarf.h: Updated comment about DW_FORM_GNU_strp_alt
|
122
|
+
* dwarf_elf_access.c: Fixed trailing whitespace and
|
123
|
+
removed debug printf that got left in.
|
124
|
+
* dwarf_error.c: Add new TIED file errors.
|
125
|
+
DW_DLE_NO_TIED_FILE_AVAILABLE, DW_DLE_NO_TIED_STRING_AVAILABLE.
|
126
|
+
* dwarf_form.c: Added support for DW_FORM_GNU_strp_alt.
|
127
|
+
* dwarf_init_finish.c: #if 0 routine all_sig8bits_zero().
|
128
|
+
* dwarf_line.c: Now always notice windows-like c: etc
|
129
|
+
as start of a full path. Ensure directories with \ are
|
130
|
+
turned to / in line tables. (for full such transforms
|
131
|
+
configure with --enable-windowspath ) Remove some debug #ifdef
|
132
|
+
lines.
|
133
|
+
Alter the linecontext interface to pass back table count,
|
134
|
+
not linecount.
|
135
|
+
* dwarf_line.h: Add commentary and lc_table_count field.
|
136
|
+
* dwarf_line_table_reader_common.c: Fix indent/trailing whitespace.
|
137
|
+
Now sets lc_table_count;
|
138
|
+
* dwarf_opaque.h: Add _dwarf_get_string_from_tied() interface.
|
139
|
+
* dwarf_print_lines.c: Remove trailing whitespace and some debug printf..
|
140
|
+
* libdwarf.h.in: New error codes. Fix trailing whitespace. Expand
|
141
|
+
commentary.
|
142
|
+
2015-10-13 David Anderson
|
143
|
+
* dwarf_line.c: Refactored so we have only one
|
144
|
+
piece of code creating file paths from line table data.
|
145
|
+
deleted obsolete code that was #if 0.
|
146
|
+
* libdwarf.h.in: Fleshed out linecontext
|
147
|
+
versions of two-level table readng.
|
148
|
+
Revised a new interface (dwarf_srclines_b) to
|
149
|
+
make it possible to do a read of just the line header.
|
150
|
+
* libdwarf2.1.mm: Documented new functions.
|
151
|
+
Fixed the example code so it is actually correct
|
152
|
+
2015-10-06 David Anderson
|
153
|
+
* Makefile.in: Removed source files from the build that
|
154
|
+
are only useful to IRIX and only in the context of building
|
155
|
+
an IRIX runtime system.
|
156
|
+
* dwarf_alloc.c: Added constructor/destructor code to
|
157
|
+
Dwarf_Line_Context allocator.
|
158
|
+
* dwarf_elf_access.c: Added additional #defines so we
|
159
|
+
have the IA64 defines we need to compile certain
|
160
|
+
test cases on freebsd.
|
161
|
+
* dwarf_error.c: Two new error codes for Dwarf_Line_Context
|
162
|
+
checking.
|
163
|
+
* dwarf_line_table_reader_common.c: New file. We can compile
|
164
|
+
the line reading with and without detailed print lines
|
165
|
+
for dwarfdump. Now only one body of line reading code
|
166
|
+
to maintain.
|
167
|
+
* dwarf_line.c: Moved code out to dwarf_line_table_reader_common.c
|
168
|
+
Refactored to support skeleton line tables (DWARF5)
|
169
|
+
Eliminated an internal struct, it is no longer needed.
|
170
|
+
a little better.
|
171
|
+
Supports experimental two-level line tables too.
|
172
|
+
* dwarf_print_lines.c: Uses dwarf_line_table_reader_common.c
|
173
|
+
to do much of its work now.
|
174
|
+
* libdwarf.h.in: New interfaces for nicer access to
|
175
|
+
line table headers.
|
176
|
+
* libdwarf2.1.mm: Partial documentation of the new
|
177
|
+
libdwarf line table interfaces.
|
178
|
+
2015-10-01 David Anderson
|
179
|
+
* dwarf_global.h: Now the last __sgi related macro (else, endif)
|
180
|
+
have /* __sgi */.
|
181
|
+
2015-09-30 David Anderson
|
182
|
+
* dwarf_global.c,dwarf_line.c,dwarf_line.h,dwarf_line2.c,
|
183
|
+
dwarf_line_table_reader_common.c,dwarf_sort_line.c,libdwarf.h.in:
|
184
|
+
The SGI IRIX only fields in dwarf_line.h ifdef __sgi now.
|
185
|
+
And all code referencing them that way too. Balancing
|
186
|
+
#endif has /* __sgi */ now for searchability.
|
187
|
+
Functions only usable on SGI IRIX only compiled in if __sgi
|
188
|
+
macro defined.
|
189
|
+
* libdwarf2.1.mm: Added a comment related to experimental
|
190
|
+
two-level line tables.
|
191
|
+
|
192
|
+
2015-09-29 David Anderson
|
193
|
+
* dwarf_die_deliv.c,dwarf_line.c,dwarf_print_lines.c: Now looks for
|
194
|
+
and adds the extra offset from debug_fission: DW_SECT_LINE.
|
195
|
+
2015-09-29 David Anderson
|
196
|
+
* dwarf_line.c,dwarf_line.h,dwarf_line_table_reader_common.c,
|
197
|
+
dwarf_print_lines.c: Moved the prefix reading subroutine
|
198
|
+
into common so the prefix-printing can have
|
199
|
+
print code added (with ifdef so production does not
|
200
|
+
have it).
|
201
|
+
2015-09-29 David Anderson
|
202
|
+
* dwarf_line.c,dwarf_line_table_reader_common.c,dwarf_print_lines.c,
|
203
|
+
dwarf_line.h,dwarf_line2.c,libdwarf.h.in:
|
204
|
+
Moved some code from dwarf_line_table_reader_common.c to dwarf_line.c.
|
205
|
+
Fixed indent and trailing whitespace. Fixed the 'section offset'
|
206
|
+
code by using the proper value from dss_ptr..
|
207
|
+
2015-09-28 David Anderson
|
208
|
+
* dwarf_line_table_reader_common.c: New file is the line table reader
|
209
|
+
extracted from dwarf_line.c. Now compiled into dwarf_line.c
|
210
|
+
and dwarf_print_lines.c with correct two-level line table
|
211
|
+
calculations. No more coding the table twice.
|
212
|
+
* dwarf_line.c,dwarf_print_lines.c: Now #include
|
213
|
+
dwarf_line_table_reader_common.c
|
214
|
+
* Makefile.in: Reflects new source depedencies.
|
215
|
+
* dwarf_line2.c: An internal function interface changed,
|
216
|
+
so accomodated it here.
|
217
|
+
* libdwarf.h.in, dwarf_error.c: New error code, DW_DLE_BAD_LINE_TABLE_OPERATION.
|
218
|
+
Changes not staged for commit:
|
219
|
+
(use "git add <file>..." to update what will be committed)
|
220
|
+
(use "git checkout -- <file>..." to discard changes in working directory)
|
221
|
+
|
222
|
+
modified: Makefile.in
|
223
|
+
modified: dwarf_error.c
|
224
|
+
modified: dwarf_line.c
|
225
|
+
modified: dwarf_line2.c
|
226
|
+
modified: dwarf_line_table_reader_common.c
|
227
|
+
modified: dwarf_print_lines.c
|
228
|
+
modified: libdwarf.h.in
|
229
|
+
|
230
|
+
2015-09-28 David Anderson
|
231
|
+
* dwarf_line.c,dwarf_line.h,dwarf_print_lines.c: made li_ and lr_
|
232
|
+
line register structs agree on spelling of suffix of each name.
|
233
|
+
Now dwarf_srclines (and two-level) use the
|
234
|
+
line register struct instead of a list of local variables.
|
235
|
+
2015-09-26 David Anderson
|
236
|
+
* dwarf_elf_access.c: Removed some trailing spaces.
|
237
|
+
* dwarf_line.c: Update the li_is_actuals_table (new field)
|
238
|
+
where a new line is emitted. For later safe dealloc.
|
239
|
+
Fixed indents and removed trailing spaces.
|
240
|
+
Fixed the dwarf_srclines_dealloc to work properly on
|
241
|
+
all the line table variations.
|
242
|
+
* dwarf_line.h: Removed trailing spaces.
|
243
|
+
Added li_is_actuals_table so the dealloc can work properly.
|
244
|
+
* dwarf_print_lines.c: Fixed the Logicals and Actuals table
|
245
|
+
formatting, Now prints the subprograms table too.
|
246
|
+
* libdwarf.h.in: Added dwarf_get_LNCT_name() to function list.
|
247
|
+
2015-09-25 David Anderson
|
248
|
+
* dwarf_print_lines.c: A first cut at detailed line tables.
|
249
|
+
Not yet computing state register values for all two-level
|
250
|
+
line tables here.
|
251
|
+
2015-09-25 David Anderson
|
252
|
+
* dwarf_line.h: added a comment.
|
253
|
+
* dwarf_print_lines.c: Now finds actuals and logicals
|
254
|
+
tables and prints them. Incomplete but perhaps useful.
|
255
|
+
2015-09-24 David Anderson
|
256
|
+
* dwarf_line.c: Renamed a local var for clarity. Added commentary
|
257
|
+
for clarity. Fixed a memory leak for skeleton lined tables.
|
258
|
+
Added required free() calls on error to avoid memory leaks.
|
259
|
+
Moved an 'overrun' check into a loop to check on every
|
260
|
+
loop iteration.
|
261
|
+
* dwarf_line.h: Added commentary.
|
262
|
+
2015-09-23 David Anderson
|
263
|
+
* dwarf_abbref.c,dwarf_die_deliv.c,dwarf_init_finish.c,dwarf_query.c: Removed
|
264
|
+
unused local variables.
|
265
|
+
* dwarf_line.c: Corrected bugs in the two-level line table
|
266
|
+
support and improved error checking.
|
267
|
+
Revamped the line table header reading code for clarity.
|
268
|
+
See dw-linetableheader.txt .
|
269
|
+
* dw-linetableheader.txt: The line table headers are a bit
|
270
|
+
complicated (mostly by the experimental two-level
|
271
|
+
line table support) so this file shows the header fields
|
272
|
+
in order by version.
|
273
|
+
* dwarf_form.c: Fixed nested comment, removed unused local variables..
|
274
|
+
* dwarf_loc.c: Cast return from _dwarf_get_alloc() to remove
|
275
|
+
a compile warning.
|
276
|
+
* dwarf_tied.c: Removed unused local variable.
|
277
|
+
* dwarf_xu_index.c: Removed unused local variables.
|
278
|
+
2015-09-22 David Anderson
|
279
|
+
* libdwarf/dwarf.h,dwarf_elf_access.c,dwarf_form.c,dwarf_line.h:
|
280
|
+
Fixed indentation errors.
|
281
|
+
* dwarf_line.c: Fixed indentation and corrected an error
|
282
|
+
introduced a couple days ago.
|
283
|
+
2015-09-19 David Anderson
|
284
|
+
* dwarf.h: Adding commentary. a DW_LNS for two-level line tables
|
285
|
+
looks wrong..
|
286
|
+
* dwarf_die_deliv.c: Adding commentary.
|
287
|
+
* dwarf_line.c: An internal function now has a leading _
|
288
|
+
and a context argument.. Added
|
289
|
+
local names of popular pointers.
|
290
|
+
* dwarf_print_lines.c,dwarf_sort_line.c: An internal
|
291
|
+
function now has a leading _ and a context argument..
|
292
|
+
* dwarf_opaque.h: Added cc_segment_selector_size to contex structure.
|
293
|
+
* libdwarf.h.in: Added commentary on two-level line table functions etc.
|
294
|
+
2015-09-17 David Anderson
|
295
|
+
* dwarf.h, dwarf_alloc.c,dwarf_base_types.h,dwarf_init_finish.c,
|
296
|
+
dwarf_line.c,dwarf_line.h,dwarf_line2.c,dwarf_util.c,libdwarf.h.in:
|
297
|
+
Adding support for experimental 2-level line table.
|
298
|
+
2015-09-15 David Anderson
|
299
|
+
* dwarf_form.c(_dwarf_extract_string_offset_via_str_offsets):
|
300
|
+
Modified comment to reflect the current DWARF5 draft (we need not
|
301
|
+
guess about correctness).
|
302
|
+
2015-09-15 David Anderson
|
303
|
+
* dwarf_query.c, dwarf_form.c: We were failing
|
304
|
+
check for off-end-of debug_str_offsets section correctly
|
305
|
+
and had a dwarf_dealloc where it was not wanted.
|
306
|
+
2015-09-15 David Anderson
|
307
|
+
* dwarf_query.c(_dwarf_extract_address_from_debug_addr): At line 540
|
308
|
+
we were deleting a dwarf_error that might not be there.
|
309
|
+
Now conditional on DW_DLV_ERROR. This and around line 605
|
310
|
+
are the very rare situation we can turn one error code off
|
311
|
+
and possibly or definitely substitute another error.
|
312
|
+
Normally we just return the original error as the
|
313
|
+
'lowest level error.'
|
314
|
+
2015-09-15 David Anderson
|
315
|
+
* dwarf_elf_access.c: Added conditional
|
316
|
+
R_MIPS_64 and R_MIPS_TLS_TPREL64 defines
|
317
|
+
as the headers I have for freebsd 32bit VM
|
318
|
+
do not define those and we need them for
|
319
|
+
testinga couple object files.
|
320
|
+
2015-09-15 Carlos Alberto Enciso
|
321
|
+
* dwarf_elf_access.c: For Windows version,
|
322
|
+
some compilers generate
|
323
|
+
EM_PPC64 elf type, but the generated code is 32 bits.
|
324
|
+
Set the correct
|
325
|
+
value for 'dbg->de_pointer_size'.
|
326
|
+
* dwarf_init_finish.c: For Windows version,
|
327
|
+
remove the incorrect hard
|
328
|
+
code value for 'dbg->de_pointer_size'.
|
329
|
+
* dwgetopt.h: Add the guard 'extern "C"'.
|
330
|
+
2015-09-15 David Anderson and Carlos Alberto Enciso
|
331
|
+
* dwarf_form.c (dwarf_formsig8_const): Was failing to
|
332
|
+
return its return code.
|
333
|
+
* dwarf_xu_index.c (_dwarf_search_fission_for_offset): Was
|
334
|
+
failing to return its return code.
|
335
|
+
2015-09-14 David Anderson
|
336
|
+
* dwarf_form.c,dwarf_global.c,dwarf_line.c,dwarf_macro.c,dwarf_util.c:
|
337
|
+
Fixed indents and removed trailing whitespace.
|
338
|
+
2015-09-14 David Anderson
|
339
|
+
* libdwarf2.1.mm: Revision 2.30. Fixed awkward
|
340
|
+
line in UTF-8 section.
|
341
|
+
* libdwarf2.1.pdf: Regenerated
|
342
|
+
2015-09-14 David Anderson
|
343
|
+
* libdwarf2.1.mm: Revision 2.29. Added text
|
344
|
+
to Items Changed section. Added a top level
|
345
|
+
UTF-8 strings section.
|
346
|
+
* libdwarf2.1.pdf: Regenerated
|
347
|
+
2015-09-14 David Anderson
|
348
|
+
* libdwarf2.1.mm: Revision 2.28. Now describes
|
349
|
+
dwarf_set_tied_dbg().
|
350
|
+
* libdwarf2.1.pdf: Regenerated
|
351
|
+
2015-09-13 David Anderson
|
352
|
+
* libdwarf.h.in,dwarf_error.c: New error code for
|
353
|
+
improved string checking.
|
354
|
+
* dwarf_form.c,dwarf_string.c:Now call the string checker
|
355
|
+
on all strings and do a more thorough check.
|
356
|
+
* dwarf_util.c, dwarf_util.h: Revised the interfaces to the
|
357
|
+
string checker to make it more useful and accurate.
|
358
|
+
2015-09-12 David Anderson
|
359
|
+
* dwarf_die_deliv.c,dwarf_form.c,dwarf_opaque.h,
|
360
|
+
dwarf_original_elf_init.c,dwarf_query.c,dwarf_tied.c:
|
361
|
+
Now we can find addresses in the base from the dwp.
|
362
|
+
2015-09-11 David Anderson
|
363
|
+
* Makefile.in: clean now removes test executable ./dwarftied
|
364
|
+
* dwarf.h: Adding DW_AT_GNU_macros attribute, 0x2119.
|
365
|
+
2015-09-11 David Anderson
|
366
|
+
* dwarf.h: Adding DW_AT_GNU_discriminator attribute, 0x2136.
|
367
|
+
2015-09-11 David Anderson
|
368
|
+
* Makefile.in,dwarf_alloc.c,dwarf_die_deliv.c,dwarf_error.c,dwarf_form.c,
|
369
|
+
dwarf_opaque.h,dwarf_original_elf_init.c,dwarf_query.ckdwarf_tied.c,
|
370
|
+
libdwarf.h.in: Added dwarf_tied.c and -x tied= options. So libdwarf
|
371
|
+
can follow DW_FORM_addrx to get the address from another object.
|
372
|
+
2015-09-05 David Anderson
|
373
|
+
* dwarf.h: Fixed indentation of two lines with the 0x
|
374
|
+
values incorrectly indented.
|
375
|
+
2015-07-12 David Anderson
|
376
|
+
* dwarf_init_finish.c: Added commentary about .rela
|
377
|
+
* dwgetopt.c,dwgetopt.h,dwgetopttest.c: Use dwoptind dwoptarg etc,
|
378
|
+
not optind, optarg, optopt opeerror etc.
|
379
|
+
* gennames.h: use dwoptarg dwoptind, not optarg, optind.
|
380
|
+
2015-05-08 David Anderson
|
381
|
+
* dwarf_die_deliv.c, dwarf_frame2.c, dwarf_frame2.c,
|
382
|
+
dwarf_frame.c: The debugging-only #if 0 now have comments
|
383
|
+
so grep for 'if 0' is not alarming.
|
384
|
+
* dwgetopt.c,pro_forms.c,pro_section.c: Removed unused code
|
385
|
+
bracketed with '#if 0'.
|
386
|
+
2015-05-01 David Anderson
|
387
|
+
* dwarf.h: Added DW_DEFAULTED* and DW_IDX* DWARF5 macros.
|
388
|
+
* dwarf_abbrev.c: Expanded comments about the interface
|
389
|
+
used by dwarfdump -a.
|
390
|
+
It is NOT guaranteed to work on all objects.
|
391
|
+
It continues to work usefully on a plain .o .
|
392
|
+
* dwarf_alloc.h: Added code to clean when there
|
393
|
+
are fission package file sections .debug_cu_index or
|
394
|
+
.debug_tu_index.
|
395
|
+
* dwarf_die_deliv.c: Significant changes to internals to support
|
396
|
+
DWARF5 debug fission dwp package objects.
|
397
|
+
Added dwarf_die_from_hash_signature() which lets one
|
398
|
+
find DWP DIE information from a hash signature.
|
399
|
+
* dwarf_error.c: Fifteen new DW_DLE* error messages added related
|
400
|
+
to new DWARF5 sections and to debug fission package files.
|
401
|
+
* dwarf_form.c: New commentary about offsets rrelated to
|
402
|
+
DWP package files. New interface dwarf_formsig8_const()
|
403
|
+
to read the DW_FORM_data8 a DW_AT_dwo_id uses.
|
404
|
+
* dwarf_global.c: Added commentary about an old interface
|
405
|
+
and DWARF5 (the old interface does not support DWARF5,
|
406
|
+
newer (but not new) interfaces do).
|
407
|
+
* dwarf_incl.h: Add dwarf_xu_index.h include.
|
408
|
+
* dwarf_init_finish.c: Removed a couple dwo-section
|
409
|
+
readers (they were not real) Added new DWARF5
|
410
|
+
section readers and the appropriate .dwo section readers.
|
411
|
+
* dwarf_line.c,dwarf_loc.c: Added support for getting the correct line
|
412
|
+
* dwarf_macro.c: Added comment that .debug_macinfo
|
413
|
+
section not supported in DWP
|
414
|
+
Package File (and .debug_macinfo is not in DWARF5).
|
415
|
+
section offset in a DWP package file.
|
416
|
+
* dwarf_opaque.h: Many New fields for the new sections
|
417
|
+
and DWP Package File support.
|
418
|
+
Various new functions (libdwarf internal) for the
|
419
|
+
new sections.
|
420
|
+
* dwarf_query.c: Added support for DWP Package File offsets.
|
421
|
+
* dwarf_tsearch.h: Added ifndef DWARF_TSEARCH so #include
|
422
|
+
more than once does not lead to difficulty.
|
423
|
+
* dwarf_util.c: Added support for DWP Package File data.
|
424
|
+
* dwarf_xu_index.c: Added support for DWP Package File data
|
425
|
+
so it can all be read properly.
|
426
|
+
* dwarf_xu_index.h: Added ifndef DWARF_XU_INDEX_H so #include
|
427
|
+
more than once does not lead to difficulty.
|
428
|
+
* libdwarf.h.in: Added dwarf_get_IDX_name() and
|
429
|
+
dwarf_get_IDX_name(). Added fifteen new DW_DLE error codes.
|
430
|
+
New function dwarf_die_from_hash_signature().
|
431
|
+
* libdwarf2.1.mm: Rev 2.27. Documented interfaces
|
432
|
+
dwarf_next_cu_header_d(),dwarf_die_from_hash_signature(),
|
433
|
+
dwarf_get_debugfission_for_die(),dwarf_get_debugfission_for_key().
|
434
|
+
* libdwarf2.1.pdf: Regenerated.
|
435
|
+
2015-04-23 David Anderson
|
436
|
+
* dwarf.h: Delete spurious blank lines.
|
437
|
+
* dwarf_base_types.h: New defines. DW_CIE_VERSION* DW_CU_VERSION**
|
438
|
+
DW_ARANGES_VERSION* DW_LINE_VERSION* DW_LOC_VERSION*
|
439
|
+
DW_LINE_STR_VERSION5, DW_MACRO_VERSION5,
|
440
|
+
DW_LINE_LOC, DW_NAMES_VERSION5, DW_PUBNAMES_VERSION*,
|
441
|
+
DW_PUBTYPES_VERSION*, DW_STR_OFFSETS_VERSION5,
|
442
|
+
DW_SUP_VERSION*, DW_CU_INDEX_VERSION5,
|
443
|
+
DW_TU_INDEX_VERSION5, making version comparisons
|
444
|
+
more precise and including DWARF5.
|
445
|
+
* dwarf_arange.c: CURRENT_VERSION_STAMP -> DW_ARANGES_VERSION2
|
446
|
+
* dwarf_die_deliv.c,dwarf_global.c,dwarf_line.c, : Use the new
|
447
|
+
DW_*_VERSION* version names.
|
448
|
+
* dwarf_init_finish.c: Added to 3 comments.
|
449
|
+
* dwarf_loc.c: Use the new DW_*_VERSION* version names.
|
450
|
+
Use a local variable to simpify some comparisons
|
451
|
+
for readability.
|
452
|
+
* dwarf_opaque.h: Update the comments about version numbers.
|
453
|
+
Added new comments foreshadowing changes for DebugFission
|
454
|
+
and DWP. REMOVE CURRENT_VERSION_STAMP* macros as they
|
455
|
+
are no longer used.
|
456
|
+
2015-03-10 David Anderson
|
457
|
+
* dwgetopt.c: Was mishandling options
|
458
|
+
missing their required argument.
|
459
|
+
2015-03-09 David Anderson
|
460
|
+
* dwgetopt.c: Fixed a bug in handling options.
|
461
|
+
See dwarfdump build for testing code
|
462
|
+
and test runs for dwgetopt.c
|
463
|
+
2015-02-22 David Anderson
|
464
|
+
* dwgetopt.h, dwgetopt.c: Copied from dwarfdump so
|
465
|
+
libdwarf can compile without dwarfdump source present.
|
466
|
+
* Makefile.in: Builds dwgetopt.o
|
467
|
+
* gennames.c: Now uses dwgetopt.o
|
468
|
+
2015-02-12 David Anderson
|
469
|
+
* dwarf_original_elf_init.c(dwarf_elf_init_file_ownership):
|
470
|
+
When dwarf_elf_object_access_init() returns DW_DLV_ERROR
|
471
|
+
the Dwarf_Error was not getting set. Now it is set.
|
472
|
+
2015-02-04 David Anderson
|
473
|
+
* dwarf.h: Added new TAGs etc from DWARF5. Since DWARF5 is
|
474
|
+
not a completed standard these new things could change.
|
475
|
+
* dwarf_die_deliv.c: Refactored calculation of end_of CU
|
476
|
+
to ensure uniformity. Added checks to catch attempts
|
477
|
+
to read past end and coredump (can happen when the DWARF is
|
478
|
+
erroneous). Notice when bogus attribute wraps memory
|
479
|
+
so the next DIE would be at an earlier address in memory
|
480
|
+
than the current die (DW_DLE_NEXT_DIE_LOW_ERROR).
|
481
|
+
* dwarf_error.c: DW_DLE_NEXT_DIE_LOW_ERROR error code added.
|
482
|
+
* dwarf_form.c: Added check to ensure we do not run off the
|
483
|
+
end of the string section (.debug_str).
|
484
|
+
* dwarf_opaque.h: Declare new internal
|
485
|
+
function _dwarf_calculate_section_end_ptr().
|
486
|
+
* dwarf_query.c(dwarf_attrlist):
|
487
|
+
A little bit of refactoring/reordering done to catch
|
488
|
+
errors.
|
489
|
+
Created new function _dwarf_calculate_section_end_ptr().
|
490
|
+
* dwarf_xu_index.c: Removed trailing space, one line..
|
491
|
+
* libdwarf.h.in: Added define of DW_DLE_NEXT_DIE_LOW_ERROR.
|
492
|
+
2015-01-31 David Anderson
|
493
|
+
* Makefile.in,common.c,common.h,dwarf_abbrev.c,dwarf_abbrev.h,
|
494
|
+
dwarf_addr_finder.c,dwarf_alloc.c,dwarf_alloc.h,dwarf_arange.c,
|
495
|
+
dwarf_arange.h,dwarf_base_types.h,dwarf_die_deliv.c,dwarf_die_deliv.h,
|
496
|
+
dwarf_elf_access.c,dwarf_elf_access.h,dwarf_error.h,dwarf_form.c,
|
497
|
+
dwarf_frame.c,dwarf_frame.h,dwarf_frame2.c,dwarf_frame3.c,dwarf_funcs.c,
|
498
|
+
dwarf_funcs.h,dwarf_gdbindex.c,dwarf_global.c,dwarf_global.h,
|
499
|
+
dwarf_incl.h,dwarf_leb.c,dwarf_line.c,dwarf_line.h,dwarf_line2.c,
|
500
|
+
dwarf_loc.c,dwarf_loc.h,dwarf_macro.c,dwarf_macro.h,
|
501
|
+
dwarf_opaque.h,dwarf_original_elf_init.c,dwarf_print_lines.c,
|
502
|
+
dwarf_pubtypes.c,dwarf_query.c,dwarf_ranges.c,dwarf_reloc_arm.h:
|
503
|
+
Removed obsolete postal address and oss.sgi.com address
|
504
|
+
from copyright.
|
505
|
+
|
506
|
+
2015-01-30 David Anderson
|
507
|
+
* dwarf_init_finish.c: Now uses Dwarf_Sig8 for .debug_cu_index.
|
508
|
+
* dwarf_opaque.h: Use Dwarf_Sig8 for the dfp_hash field.
|
509
|
+
* libdwarf.h.in: dwarf_get_xu_hash_entry() uses Dwarf_Sig8 now.
|
510
|
+
2015-01-30 David Anderson
|
511
|
+
* dwarf.h: Adding some DWARF5 defines.
|
512
|
+
Use with caution: DWARF5 is not yet final.
|
513
|
+
* gennames.c: Local array needed to be bigger
|
514
|
+
due to a longer attribute list.
|
515
|
+
2015-01-28 David Anderson
|
516
|
+
* libdwarf2.1.mm: Fixed .H 2 to .H 3 on
|
517
|
+
dwarf_get_TAG_name etc.
|
518
|
+
Removed duplication of 3 lines of
|
519
|
+
Global Namespace operations.
|
520
|
+
Added doc of dwarf_dwarf_get_debug_str_index()
|
521
|
+
and fixed a level 2 header (starting the quoted
|
522
|
+
string with a period caused trouble in the
|
523
|
+
output).
|
524
|
+
* libdwarf2.1.pdf. Regenerated. Version 2.25.
|
525
|
+
2015-01-25 David Anderson
|
526
|
+
* dwarf_form.c(dwarf_convert_to_global_offset): Removed
|
527
|
+
yesterday's change. The cu_context offset value
|
528
|
+
already has debugfission offset built in.
|
529
|
+
2015-01-24 David Anderson
|
530
|
+
* dwarf_form.c: dwarf_convert_to_global_offset() was not
|
531
|
+
accounting for debugfission data (dwp).
|
532
|
+
* dwarf_die_deliv.c(dwarf_offdie_b): Was not adding
|
533
|
+
cc_extension_size into cu header offset (cc_extension_size
|
534
|
+
is rarely non-zero, but its omission was a bug here).
|
535
|
+
* dwarf_util.h: Improved a line of commentary.
|
536
|
+
2015-01-21 David Anderson
|
537
|
+
* Makefile.in: Now with separate dwarf_names.h and dwarf_names.c
|
538
|
+
rules so parallel make works properly.
|
539
|
+
* dwarf.h: Improved the comment on DW_SECT_TYPES as that
|
540
|
+
is not actually part of DWARF5 but is reserved.
|
541
|
+
* dwarf_die_deliv.c: Added dwarf_get_debugfission_for_die().
|
542
|
+
Now dwarfdump and other clients can access
|
543
|
+
and print fission data for a specific CU easily.
|
544
|
+
* dwarf_init_finish.c(load_debugfission_tables): Deleted
|
545
|
+
unused local variable.
|
546
|
+
* dwarf_opaque.h: Now uses libdwarf.h DW_FISSION_SECT_COUNT
|
547
|
+
for clarity (libdwarf-only name).
|
548
|
+
* libdwarf.h.in: Add DW_DLE_FISSION_VERSION_ERROR as part
|
549
|
+
of error checking. Add prototype for
|
550
|
+
dwarf_get_debugfission_for_die() and declare its struct argument.
|
551
|
+
2015-01-18 David Anderson
|
552
|
+
* dwarf_abbrev.c: Added comment, debugfission not supported
|
553
|
+
in the non-cu-specific interface.
|
554
|
+
* dwarf_alloc.c, dwarf_base_types.h: Add DW_DLA_FISSION_PERCU support.
|
555
|
+
* dwarf_die_deliv.c: Added _dwarf_get_fission_addition_die()
|
556
|
+
and _dwarf_get_fission_addition() for debugfission support.
|
557
|
+
* dwarf_error.c: Add DW_DLE_FISSION_INDEX_WRONG error string.
|
558
|
+
* dwarf_form.c: Add debugfission support for str_offsets.
|
559
|
+
* dwarf_init_finish.c: Load debugfission tables if such exist
|
560
|
+
in an object.
|
561
|
+
* dwarf_line.c: Add debugfission support for .debug_line.dwo
|
562
|
+
* dwarf_loc.c: Add debugfission support for .debug_loc.dwo
|
563
|
+
* dwarf_macro.c: Add comment that debugfission not supported
|
564
|
+
in the non-CU-specific interface.
|
565
|
+
* dwarf_opaque.h: Add structures for debugfission:
|
566
|
+
Dwarf_Fission_Offsets_s,Dwarf_Fission_Per_CU_s,
|
567
|
+
Dwarf_Fission_Section_Offset_s.
|
568
|
+
declare the new functions in dwarf_die_deliv.c
|
569
|
+
* dwarf_util.c: Remove a few lines of traling whitespace.
|
570
|
+
* dwarf_uxu_index.c: Correct bogus formatting.
|
571
|
+
* libdwarf.h.in: Add DW_DLE_FISSION_INDEX_WRONG .
|
572
|
+
2015-01-12 David Anderson
|
573
|
+
* dwarf_init_finish.c(_dwarf_setup): Move freeresult
|
574
|
+
declaration before statements.
|
575
|
+
* dwarf_util.c: Add comments about va_end().
|
576
|
+
2015-01-11 David Anderson
|
577
|
+
* dwarf_init_finish.c(_dwarf_setup): For all returns
|
578
|
+
in _dwarf_setup() free the sections malloc space.
|
579
|
+
2015-01-08 David Anderson
|
580
|
+
* cmplrs/dwarf_addr_finder.h: Fix a comment and remove a trailing
|
581
|
+
whitespace.
|
582
|
+
* dwarf.h: Blank line added accidentally.
|
583
|
+
* dwarf_alloc.c: Removed trailing whitespace.
|
584
|
+
* dwarf_init_finish.c: Remove trailing whitespace. Fix indent.
|
585
|
+
* dwarf_leb.c: Remove trailing whitespace. Fix indent.
|
586
|
+
* dwarf_line.h: Fix macro backslash location, lining things up.
|
587
|
+
* dwarf_util.c: Remove trailing whitespace.
|
588
|
+
2015-01-06 David Anderson
|
589
|
+
* dwarf_alloc.c, dwarf_base_types.h, dwarf_elf_access.c,
|
590
|
+
dwarf_error.c,dwarf_error.h,dwarf_form.c,dwarf_init_finish.c,
|
591
|
+
dwarf_leb.c,dwarf_query.c,pro_section.c: Fixed indents and
|
592
|
+
removed trailing whitespace.
|
593
|
+
2015-01-06 David Anderson
|
594
|
+
* dwarf_frame.c( _dwarf_get_fde_info_for_a_pc_row): Cast
|
595
|
+
the pointer returned from _dwarf_get_alloc(), somehow
|
596
|
+
this cast was omitted.
|
597
|
+
* dwarf_alloc.c(dwarf_dealloc): Ensure a NULL
|
598
|
+
'space' pointer input is not touched before checking
|
599
|
+
if it is set.
|
600
|
+
* dwarf_init_finish.c(_dwarf_setup): For badly formed Elf
|
601
|
+
ensure we do not use stale pointers.
|
602
|
+
2015-01-05 David Anderson
|
603
|
+
* dwarf_original_elf_init.c(dwarf_finish): If the Dwarf_Debug is
|
604
|
+
not initialized do not use it.
|
605
|
+
2015-01-03 David Anderson
|
606
|
+
* libdwarf2p.1.mm: Somehow dwarf_transform_to_disk_form()
|
607
|
+
was not documented. Now it is.
|
608
|
+
* libdwarf2p.1.pdf: Regenerated, version 1.38.
|
609
|
+
2015-01-03 David Anderson
|
610
|
+
* dwarf_allo.c: Comment the allocation table base
|
611
|
+
more carefully.
|
612
|
+
* dwarf_base_types.h: Making DW_DLA defines more
|
613
|
+
readable, more consistent with other instances.
|
614
|
+
* libdwarf.h.in: Adding producer error codes.
|
615
|
+
The producer library has some places error values
|
616
|
+
are misidentified. Main effect: documentation.
|
617
|
+
* dwarf_error.c: Add the strings for the new error codes.
|
618
|
+
2015-01-01 David Anderson
|
619
|
+
* A new year begins.
|