rdwarf 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +28 -0
  6. data/README.md +39 -0
  7. data/Rakefile +8 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +7 -0
  10. data/ext/rdwarf/depend +5 -0
  11. data/ext/rdwarf/extconf.rb +29 -0
  12. data/ext/rdwarf/libdwarf/CHANGES +102 -0
  13. data/ext/rdwarf/libdwarf/CODINGSTYLE +71 -0
  14. data/ext/rdwarf/libdwarf/COPYING +28 -0
  15. data/ext/rdwarf/libdwarf/ChangeLog +619 -0
  16. data/ext/rdwarf/libdwarf/ChangeLog2006 +835 -0
  17. data/ext/rdwarf/libdwarf/ChangeLog2007 +217 -0
  18. data/ext/rdwarf/libdwarf/ChangeLog2008 +263 -0
  19. data/ext/rdwarf/libdwarf/ChangeLog2009 +348 -0
  20. data/ext/rdwarf/libdwarf/ChangeLog2010 +175 -0
  21. data/ext/rdwarf/libdwarf/ChangeLog2011 +297 -0
  22. data/ext/rdwarf/libdwarf/ChangeLog2012 +131 -0
  23. data/ext/rdwarf/libdwarf/ChangeLog2013 +238 -0
  24. data/ext/rdwarf/libdwarf/ChangeLog2014 +399 -0
  25. data/ext/rdwarf/libdwarf/LGPL.txt +504 -0
  26. data/ext/rdwarf/libdwarf/LIBDWARFCOPYRIGHT +40 -0
  27. data/ext/rdwarf/libdwarf/Makefile.in +220 -0
  28. data/ext/rdwarf/libdwarf/NEWS +535 -0
  29. data/ext/rdwarf/libdwarf/README +235 -0
  30. data/ext/rdwarf/libdwarf/checkexamples.c +1179 -0
  31. data/ext/rdwarf/libdwarf/cmplrs/dwarf_addr_finder.h +55 -0
  32. data/ext/rdwarf/libdwarf/common.c +62 -0
  33. data/ext/rdwarf/libdwarf/common.h +38 -0
  34. data/ext/rdwarf/libdwarf/config.h.in +146 -0
  35. data/ext/rdwarf/libdwarf/configure +5581 -0
  36. data/ext/rdwarf/libdwarf/configure.in +167 -0
  37. data/ext/rdwarf/libdwarf/dw-linetableheader.txt +39 -0
  38. data/ext/rdwarf/libdwarf/dwarf.h +1342 -0
  39. data/ext/rdwarf/libdwarf/dwarf_abbrev.c +291 -0
  40. data/ext/rdwarf/libdwarf/dwarf_abbrev.h +45 -0
  41. data/ext/rdwarf/libdwarf/dwarf_addr_finder.c +676 -0
  42. data/ext/rdwarf/libdwarf/dwarf_alloc.c +685 -0
  43. data/ext/rdwarf/libdwarf/dwarf_alloc.h +38 -0
  44. data/ext/rdwarf/libdwarf/dwarf_arange.c +595 -0
  45. data/ext/rdwarf/libdwarf/dwarf_arange.h +62 -0
  46. data/ext/rdwarf/libdwarf/dwarf_base_types.h +157 -0
  47. data/ext/rdwarf/libdwarf/dwarf_die_deliv.c +1802 -0
  48. data/ext/rdwarf/libdwarf/dwarf_die_deliv.h +46 -0
  49. data/ext/rdwarf/libdwarf/dwarf_elf_access.c +1348 -0
  50. data/ext/rdwarf/libdwarf/dwarf_elf_access.h +46 -0
  51. data/ext/rdwarf/libdwarf/dwarf_error.c +492 -0
  52. data/ext/rdwarf/libdwarf/dwarf_error.h +53 -0
  53. data/ext/rdwarf/libdwarf/dwarf_form.c +1302 -0
  54. data/ext/rdwarf/libdwarf/dwarf_frame.c +2454 -0
  55. data/ext/rdwarf/libdwarf/dwarf_frame.h +418 -0
  56. data/ext/rdwarf/libdwarf/dwarf_frame2.c +1533 -0
  57. data/ext/rdwarf/libdwarf/dwarf_frame3.c +282 -0
  58. data/ext/rdwarf/libdwarf/dwarf_funcs.c +123 -0
  59. data/ext/rdwarf/libdwarf/dwarf_funcs.h +33 -0
  60. data/ext/rdwarf/libdwarf/dwarf_gdbindex.c +520 -0
  61. data/ext/rdwarf/libdwarf/dwarf_gdbindex.h +97 -0
  62. data/ext/rdwarf/libdwarf/dwarf_global.c +612 -0
  63. data/ext/rdwarf/libdwarf/dwarf_global.h +117 -0
  64. data/ext/rdwarf/libdwarf/dwarf_harmless.c +228 -0
  65. data/ext/rdwarf/libdwarf/dwarf_harmless.h +31 -0
  66. data/ext/rdwarf/libdwarf/dwarf_incl.h +61 -0
  67. data/ext/rdwarf/libdwarf/dwarf_init_finish.c +1263 -0
  68. data/ext/rdwarf/libdwarf/dwarf_leb.c +159 -0
  69. data/ext/rdwarf/libdwarf/dwarf_line.c +1822 -0
  70. data/ext/rdwarf/libdwarf/dwarf_line.h +446 -0
  71. data/ext/rdwarf/libdwarf/dwarf_line2.c +98 -0
  72. data/ext/rdwarf/libdwarf/dwarf_line_table_reader_common.c +1583 -0
  73. data/ext/rdwarf/libdwarf/dwarf_loc.c +1525 -0
  74. data/ext/rdwarf/libdwarf/dwarf_loc.h +149 -0
  75. data/ext/rdwarf/libdwarf/dwarf_loc2.c +833 -0
  76. data/ext/rdwarf/libdwarf/dwarf_macro.c +479 -0
  77. data/ext/rdwarf/libdwarf/dwarf_macro.h +35 -0
  78. data/ext/rdwarf/libdwarf/dwarf_opaque.h +778 -0
  79. data/ext/rdwarf/libdwarf/dwarf_original_elf_init.c +219 -0
  80. data/ext/rdwarf/libdwarf/dwarf_print_lines.c +631 -0
  81. data/ext/rdwarf/libdwarf/dwarf_pubtypes.c +132 -0
  82. data/ext/rdwarf/libdwarf/dwarf_query.c +1594 -0
  83. data/ext/rdwarf/libdwarf/dwarf_ranges.c +194 -0
  84. data/ext/rdwarf/libdwarf/dwarf_reloc_arm.h +308 -0
  85. data/ext/rdwarf/libdwarf/dwarf_reloc_mips.h +117 -0
  86. data/ext/rdwarf/libdwarf/dwarf_reloc_ppc.h +242 -0
  87. data/ext/rdwarf/libdwarf/dwarf_reloc_ppc64.h +272 -0
  88. data/ext/rdwarf/libdwarf/dwarf_reloc_x86_64.h +127 -0
  89. data/ext/rdwarf/libdwarf/dwarf_sort_line.c +665 -0
  90. data/ext/rdwarf/libdwarf/dwarf_string.c +82 -0
  91. data/ext/rdwarf/libdwarf/dwarf_stubs.c +38 -0
  92. data/ext/rdwarf/libdwarf/dwarf_tied.c +423 -0
  93. data/ext/rdwarf/libdwarf/dwarf_tsearch.h +125 -0
  94. data/ext/rdwarf/libdwarf/dwarf_tsearchhash.c +675 -0
  95. data/ext/rdwarf/libdwarf/dwarf_types.c +121 -0
  96. data/ext/rdwarf/libdwarf/dwarf_types.h +32 -0
  97. data/ext/rdwarf/libdwarf/dwarf_util.c +913 -0
  98. data/ext/rdwarf/libdwarf/dwarf_util.h +324 -0
  99. data/ext/rdwarf/libdwarf/dwarf_vars.c +125 -0
  100. data/ext/rdwarf/libdwarf/dwarf_vars.h +29 -0
  101. data/ext/rdwarf/libdwarf/dwarf_weaks.c +123 -0
  102. data/ext/rdwarf/libdwarf/dwarf_weaks.h +29 -0
  103. data/ext/rdwarf/libdwarf/dwarf_xu_index.c +579 -0
  104. data/ext/rdwarf/libdwarf/dwarf_xu_index.h +68 -0
  105. data/ext/rdwarf/libdwarf/dwgetopt.c +181 -0
  106. data/ext/rdwarf/libdwarf/dwgetopt.h +51 -0
  107. data/ext/rdwarf/libdwarf/gennames.c +531 -0
  108. data/ext/rdwarf/libdwarf/install.sh +119 -0
  109. data/ext/rdwarf/libdwarf/libdwarf.h.in +3746 -0
  110. data/ext/rdwarf/libdwarf/libdwarf2.1.mm +9805 -0
  111. data/ext/rdwarf/libdwarf/libdwarf2.1.pdf +0 -0
  112. data/ext/rdwarf/libdwarf/libdwarf2p.1.mm +2807 -0
  113. data/ext/rdwarf/libdwarf/libdwarf2p.1.pdf +0 -0
  114. data/ext/rdwarf/libdwarf/libdwarfdefs.h +81 -0
  115. data/ext/rdwarf/libdwarf/malloc_check.c +327 -0
  116. data/ext/rdwarf/libdwarf/malloc_check.h +52 -0
  117. data/ext/rdwarf/libdwarf/mips_extensions.mm +1266 -0
  118. data/ext/rdwarf/libdwarf/mips_extensions.pdf +0 -0
  119. data/ext/rdwarf/libdwarf/pro_alloc.c +179 -0
  120. data/ext/rdwarf/libdwarf/pro_alloc.h +33 -0
  121. data/ext/rdwarf/libdwarf/pro_arange.c +310 -0
  122. data/ext/rdwarf/libdwarf/pro_arange.h +51 -0
  123. data/ext/rdwarf/libdwarf/pro_die.c +431 -0
  124. data/ext/rdwarf/libdwarf/pro_die.h +59 -0
  125. data/ext/rdwarf/libdwarf/pro_encode_nm.c +108 -0
  126. data/ext/rdwarf/libdwarf/pro_encode_nm.h +39 -0
  127. data/ext/rdwarf/libdwarf/pro_error.c +96 -0
  128. data/ext/rdwarf/libdwarf/pro_error.h +43 -0
  129. data/ext/rdwarf/libdwarf/pro_expr.c +575 -0
  130. data/ext/rdwarf/libdwarf/pro_expr.h +36 -0
  131. data/ext/rdwarf/libdwarf/pro_finish.c +45 -0
  132. data/ext/rdwarf/libdwarf/pro_forms.c +1271 -0
  133. data/ext/rdwarf/libdwarf/pro_frame.c +572 -0
  134. data/ext/rdwarf/libdwarf/pro_frame.h +120 -0
  135. data/ext/rdwarf/libdwarf/pro_funcs.c +50 -0
  136. data/ext/rdwarf/libdwarf/pro_incl.h +91 -0
  137. data/ext/rdwarf/libdwarf/pro_init.c +327 -0
  138. data/ext/rdwarf/libdwarf/pro_line.c +373 -0
  139. data/ext/rdwarf/libdwarf/pro_line.h +112 -0
  140. data/ext/rdwarf/libdwarf/pro_macinfo.c +457 -0
  141. data/ext/rdwarf/libdwarf/pro_macinfo.h +31 -0
  142. data/ext/rdwarf/libdwarf/pro_opaque.h +513 -0
  143. data/ext/rdwarf/libdwarf/pro_pubnames.c +60 -0
  144. data/ext/rdwarf/libdwarf/pro_reloc.c +253 -0
  145. data/ext/rdwarf/libdwarf/pro_reloc.h +38 -0
  146. data/ext/rdwarf/libdwarf/pro_reloc_stream.c +256 -0
  147. data/ext/rdwarf/libdwarf/pro_reloc_stream.h +52 -0
  148. data/ext/rdwarf/libdwarf/pro_reloc_symbolic.c +245 -0
  149. data/ext/rdwarf/libdwarf/pro_reloc_symbolic.h +45 -0
  150. data/ext/rdwarf/libdwarf/pro_section.c +2233 -0
  151. data/ext/rdwarf/libdwarf/pro_section.h +100 -0
  152. data/ext/rdwarf/libdwarf/pro_types.c +274 -0
  153. data/ext/rdwarf/libdwarf/pro_types.h +34 -0
  154. data/ext/rdwarf/libdwarf/pro_util.h +38 -0
  155. data/ext/rdwarf/libdwarf/pro_vars.c +52 -0
  156. data/ext/rdwarf/libdwarf/pro_weaks.c +51 -0
  157. data/ext/rdwarf/rdwarf.c +765 -0
  158. data/ext/rdwarf/rdwarf.h +52 -0
  159. data/ext/rdwarf/rdwarf_names_gen.rb +109 -0
  160. data/lib/rdwarf.rb +181 -0
  161. data/lib/rdwarf/version.rb +3 -0
  162. data/rdwarf.gemspec +30 -0
  163. metadata +251 -0
@@ -0,0 +1,399 @@
1
+ 2014-12-31: David Anderson
2
+ * dwarf_error.c: Add DW_DLE_DW_DLE_ATTR_OUTSIDE_SECTION.
3
+ * libdwarf.h.in: Add DW_DLE_DW_DLE_ATTR_OUTSIDE_SECTION.
4
+ * dwarf_form.c(dwarf_formexprloc): Call the new function
5
+ _dwarf_reference_outside_section() as a check
6
+ for an exprloc with data that is outside the section it
7
+ belongs in. Ie, a bug somewhere. Return error
8
+ DW_DLE_DW_DLE_ATTR_OUTSIDE_SECTION if applicable.
9
+ * dwarf_frame2.c(read_encoded_ptr): Pass error down so we set
10
+ a complete Dwarf_Error record at the point of error.
11
+ Just three functions that could use this were changed.
12
+ * dwarf_leb.c(_dwarf_decode_u_leb128): Presented with bogus
13
+ leb values we stop scanning the leb number before
14
+ overrunning our value-output buffer (and dumping core).
15
+ The change is reasonably adequate but will not catch
16
+ all cases.
17
+ * dwarf_query.c(dwarf_attrlist): Call _dwarf_reference_outside_section
18
+ to check the pointer is valid.
19
+ * dwarf_util.c,dwarf_util.h: Implement _dwarf_reference_outside_section().
20
+ 2014-12-28: David Anderson
21
+ * dwarf_alloc.c: Added global _dwarf_failsafe_error
22
+ to enable better error reporting when malloc arena
23
+ has no space left. On dwarf_dealloc() avoids attempting
24
+ a free() of the static struct.
25
+ * dwarf_error.c,libdwarf.h.in: New error code
26
+ DW_DLE_FAILSAFE_ERRVAL for the malloc-arena-exhausted
27
+ case. Now use that static instead of aborting.
28
+ * dwarf_error.h: New field and library-private extern declaration
29
+ for the malloc-arena-exhausted case.
30
+ * libdwarf2.1.mm: Documented the handling of Dwarf_Error
31
+ when malloc space exhausted.
32
+ * libdwarf2.1.pdf: Regenerated. Rev 2.23.
33
+ 2014-09-10: David Anderson
34
+ * dwarf_tsearchhash.c(calculate_allowed_fill): Moved a declaration
35
+ to avoid using a C99 feature.
36
+ * dwarf_query.c(dwarf_highpc_b): Moved a declaration to avoid using
37
+ aC99 feature.
38
+ * dwarf_util.c(dwarf_print): Moved a declaration to avoid using
39
+ aC99 feature.
40
+ 2014-08-11 David Anderson, avoiding some compiler warnings.
41
+ *dwarf_xu_index.c,dwarf_macro.c: Failed to cast the pointer
42
+ returned by _dwarf_get_macro (one place in each file).
43
+ 2014-08-04 David Anderson, avoiding some compiler warnings.
44
+ * dwarf_alloc.c, dwarf_alloc.h: Change some uses of Dwarf_Ptr to be char *
45
+ so we avoid adding (etc) to Dwarf_Ptr.
46
+ * dwarf_gdbindex.c: Cast _dwarf_get_alloc() return properly.
47
+ * dwarf_loc.c: Cast Dwarf_Ptr to char * in a couple places.
48
+ * dwarf_query.c,dwarf_sort_line.c,pro_arange.c: Change names of local
49
+ variables to avoid
50
+ compiler warning about shadowing other locals.
51
+ * dwarf_tsearchhash.c: Changed to avoid compiler warnings
52
+ about const casts whereever possible.
53
+ * libdwarf.h.in: Added prototypes for DWARF5
54
+ dwarf_get_SECT_name() and dwarf_get_MACRO_name().
55
+ * pro_alloc.c: Add include of pro_alloc.h.
56
+ * pro_forms.c: Made _dwarf_add_AT_reference_internal()
57
+ static to avoid warning.
58
+ * pro_types.c: Add include of pro_types.h.
59
+ 2014-08-02 David Anderson
60
+ * dwarf_gdbindex.c: Fix an argument list by adding section name.
61
+ * libdwarf.h.in: Fix an argument list by adding section name.
62
+ Clarify some commentary on dwarf_get_xu* function declarations.
63
+ * libdwarf2.1.mm: Documented the new gdbindex and dwarf_get_xu*
64
+ functions.
65
+ * libdwarf2.1.pdf: Regenerate. Version 2.22.
66
+ 2014-07-12 David Anderson
67
+ * dwarf_die_deliv.c: Remove trailing whitespace.
68
+ Implement dwarf_get_die_section_name() allow
69
+ clients to get the Elf
70
+ section name actually used for the section.
71
+ * dwarf_xu_index.c: Remmove traling whitespace and fix
72
+ indents.
73
+ 2014-07-11 David Anderson
74
+ * dwarf_opaque.h: Various CU context fields were
75
+ not clarified by comments, so comments added.
76
+ 2014-07-11 David Anderson
77
+ * dwarf_opaque.h: Clarified a couple comments.
78
+ 2014-07-11 David Anderson
79
+ * dwarf_xu_index.c: Now extracts the offset and size table
80
+ data correctly.
81
+ 2014-07-10 David Anderson
82
+ * dwarf_die_deliv.c: Clarify a comment a little bit.
83
+ No change in the code.
84
+ 2014-07-10 David Anderson
85
+ * dwarf_error.c,libdwarf.h.in: Added new error codes.
86
+ * dwarf_xu_index.c: Now extracts the hash table
87
+ values from .debug_tu_index and .debug_cu_index sections.
88
+ 2014-07-09 David Anderson
89
+ * dwarf_alloc.c,dwarf_xu_index.c,dwarf_xu_index.h:
90
+ Removed trailing whitespace characters.
91
+ 2014-07-09 David Anderson
92
+ * Makefile.in: Added dwarf_xu_index.o. Moved dwarf_macro.o
93
+ to get closer to alphabetical order in the list.
94
+ * dwarf.h: Added DW_SECT codes so the .debug_[tc]u.index
95
+ sections can be interpreted properly. DWARF5.
96
+ * dwarf_alloc.c: Added dwarf_xu_index.h #include. Added
97
+ struct Dwarf_Xu_Index_Header_s to alloced structs.
98
+ Added a couple lines of commentary about .gdb_index
99
+ section access type.
100
+ * dwarf_alloc.h: Increased ALLOC_AREA_INDEX_TABLE_MAX to 57
101
+ for the new alloc type.
102
+ * dwarf_die_deliv.c: Removed trailing whitespace.
103
+ * dwarf_elf_access.c: Added commentary.
104
+ * dwarf_error.c: Added new error codes for .debug_tu_index
105
+ and .debug_cu_index sections code.
106
+ * dwarf_init_finish.c: Add handling of .debug_tu_index
107
+ and .debug_cu_index sections.
108
+ * dwarf_opaque.h: Add de_debug_cu_index and
109
+ de_debug_tu_index to Dwarf_Debug_s struct.
110
+ * dwarf_xu_index.c: New code for the newly handled
111
+ DWARF5 sections .debug_tu_index and .debug_cu_index .
112
+ * dwarf_xu_index.h: Defines struct Dwarf_Xu_Index_Header_s.
113
+ * libdwarf.h.in: Declares new functions implementing some of the
114
+ new section interfaces.
115
+ 2014-07-05 David Anderson
116
+ * dwarf_arange.c(dwarf_get_aranges_list): Remove the length variable
117
+ as its calculated value is unused. rename length to area_length
118
+ for clarity. Calculate arange_ptr_past_end early and
119
+ correctly. Ensure that the test for version 4 is a >=
120
+ to reflect normal standards upgrades.
121
+ * dwarf_die_deliv.c(dwarf_find_offdie_CU_Context): Add commentary
122
+ about offsets and lengths for clarity.
123
+ Rename fields for clarity about local vs global offset.
124
+ Use the newly named fields for precise tests of section overflow of
125
+ a type unit.
126
+ * dwarf_frame.h: Add commentary about pointers in the cie_fde_prefix_s
127
+ structure.
128
+ * dwarf_global.c(_dwarf_internal_get_pubnames_like_data): Add
129
+ commentary about the of fields.
130
+ * dwarf_opaque.h: Improve commentary about offsets.
131
+ 2014-07-03 David Anderson
132
+ * dwarf_die_deliv.c: Fixed CU type offset check. Created local variable
133
+ so we do not repeat a calculation so the error does not recur and simplifying
134
+ nearby code.
135
+ * gdb_index.c: Remove unused local variable.
136
+ * dwarf_opaque.h: Change offset entries from Dwarf_Word to Dwarf_Unsigned
137
+ to ensure we do not remove bits from values.
138
+ * dwarf_query.c: Remove unused local variable and a comment referencing
139
+ that unused variable.
140
+ * pro_reloc_stream.c: Remove unused local variable.
141
+ 2014-07-01 David Anderson
142
+ * dwarf_alloc.c, dwarf_gdbindex.c, dwarf_init_finish.c, dwarf_opaque.h, libdwarf.h.in:
143
+ Fixed indent errors and removed trailing whitespace.
144
+ 2014-07-01 David Anderson
145
+ * libdwarf.h.in: Matched up gdbindex symboltable interfaces with
146
+ the C source.
147
+ * dwarf_gdbindex.c: Implement Symbol table access.
148
+ 2014-06-30 David Anderson
149
+ * libdwarf.h.in: Remove useless interface to gdbindex.
150
+ * dwarf_gdbindex.c: Implement TU list access code.
151
+ Implement access to the address area.
152
+ 2014-06-29 David Anderson
153
+ * dwarf_error.c: Added error codes for gdbindex access.
154
+ * libdwarf.h.in: Revised gdbindex function interface: simpler.
155
+ * dwarf_gdbindex.c, dwarf_gdbindex.h: Implement gdbindex
156
+ functions.
157
+ 2014-06-28 David Anderson
158
+ * Makefile.in: Add dwarf_gdbindex.o to objects.
159
+ * dwarf_alloc.c: Add new type Dwarf_Gdbindex_s to allocatable
160
+ types.
161
+ * dwarf_elf_access.c: Add a comment reflecting lack of need
162
+ to relocate a .gdb_index section.
163
+ * dwarf_error.c: Add new error strings for gdb_index
164
+ related errors.
165
+ * dwarf_init_finish.c: Add .gdb_index section to the
166
+ sections we read. Refactor a test into a function
167
+ this_section_dwarf_relevant() to make code more readable.
168
+ * dwarf_opaque.h: Add de_debug_gdbindex to Dwarf_Debug_s.
169
+ * libdwarf.h.in: Add opaque types for .gdb_index section
170
+ interfaces. Add DW_DLA_GDBINDEX for allocatability of
171
+ the new type. Add new GDB_INDEX error codes in DW_DLA list.
172
+ Declare new gdb_index interfaces.
173
+ 2014-05-19 David Anderson
174
+ * dwarf_init_finish.c: Removed unused local variable.
175
+ * dwarf_opaque.h: Added _dwarf_extract_string_offset_via_str_offsets()
176
+ to communicate the argument list to other libdwarf source files.
177
+ * dwarf_query.c: Fixed botch in call argument list, the dwarf_opaque.h
178
+ change exposed it. Deleted an unused local variable.
179
+ * pro_reloc_symbolic.c: Deleted an unused local variable.
180
+ 2014-05-18 David Anderson
181
+ * libdwarf2.1.mm: Fixed a typo in the H3 line
182
+ for dwarf_get_debug_add_index().
183
+ * libdwarf2.1.pdf: Regenerated. Rev 2.20, May 18 2014.
184
+ 2014-05-18 David Anderson
185
+ * dwarf_loc.: Fixed offset update for DW_OP_constx/addrx.
186
+ 2014-05-18 David Anderson
187
+ * dwarf_form.c: Removed trailing whitespace, added commentary.
188
+ * dwarf_loc.c: Added commentary.
189
+ 2014-05-18 David Anderson
190
+ * libdwarf.h.in, dwarf_form.c: Restored the function
191
+ dwarf_get_debug_addr_index(). It is useful as a convenience
192
+ for apps like dwarfdump.
193
+ 2014-05-18 David Anderson
194
+ * dwarf_die_deliv.c,dwarf_error.c,dwarf_form.c,dwarf_init_finish.c,
195
+ dwarf_opaque.h,dwarf_query.c,dwarf_util.c,libdwarf.h.in:
196
+ Fixed numerous indent errors and removed trailing whitespace.
197
+ 2014-05-17 David Anderson
198
+ * dwarf.h: Minor comment enhancement.
199
+ * dwarf_loc.c: Fixed code for DW_OP_constx, DW_OP_addrx,
200
+ DW_OP_GNU_addr_index, DW_OP_GNU_const_index.
201
+ * dwarf_form.c: DW_FORM_addr_index, DW_FORM_addrx,
202
+ DW_FORM_strx, DW_FORM_GNU_str_index
203
+ * dwarf_opaque.h: added new field dss_name to help
204
+ debugging.
205
+ * dwarf_query.c: Returns DW_DLE_MISSING_NEEDED_DEBUG_ADDR_SECTION when
206
+ debug_addr is missing so address cannot be
207
+ literally extracted.
208
+ New functions: dwarf_get_debug_addr_index()
209
+ and dwarf_get_debug_str_index().
210
+ * libdwarf.h.in: New error codes for FORM errors.
211
+ New function declarations: dwarf_get_debug_addr_index()
212
+ and dwarf_get_debug_str_index().
213
+ 2014-05-14 David Anderson
214
+ * dwarf_die_deliv.c: Refactored several interfaces and used
215
+ DW_DLV_OK (etc) returned values internally much more than
216
+ before to get the desired behavior easily.
217
+ * dwarf_error.c: Error strings for 8 new error numbers.
218
+ * dwarf_form.c: DW_FORM_addr_index, DW_FORM_addrx
219
+ support added.
220
+ * dwarf_init_finish.c: Sections .debug_addr and
221
+ .debug_addr.dwo now handled if present.
222
+ * dwarf_opaque.h: New Dwarf_CU_Context fields added
223
+ so we can get CU DIE attributes for DW_FORM_addrx
224
+ DW_FORM_strx etc.
225
+ New de_debug* fields added for the new DebugFission
226
+ sections.
227
+ * dwarf_query.c: Using the revised _dwarf_get_size_of_val()
228
+ internal function.
229
+ Handling DW_FORM_GNU_str_index, DW_FORM_strx.
230
+ New functions (internal) for DW_FORM_strx, DW_FORM_addrx
231
+ and the GNU version of these to avoid duplicating code.
232
+ * dwarf_util.c: Implement revised _dwarf_get_size_of_val().
233
+ Handling DW_FORM_GNU_str_index, DW_FORM_strx.
234
+ * dwarf_util.h: Updated _dwarf_get_size_of_val()
235
+ declaration.
236
+ * libdwarf2.1.mm: Revision 2.8. May 15 2014. Documented
237
+ a restriction to a sensible view to strings that
238
+ dwarf_errmsg() returns. However without actually
239
+ changing anything to take advantage of that restriction.
240
+ * libdwarf2.1.pdf: Regenerated.
241
+ 2014-05-11 David Anderson
242
+ * dwarf_error.c: Added 3 new error strings.
243
+ * dwarf_form.c: Added DW_FORM_GNU_str_index and partial
244
+ DW_FORM_GNU_addr_index handling.
245
+ * dwarf_init_finish.c: Refactored initial section setup
246
+ so we can handle dwo (DebugFission) or regular sections.
247
+ * dwarf_query.c: Add support for DW_FORM_GNU_str_index.
248
+ Partial support for DW_FORM_GNU_addr_index.
249
+ * dwarf_util.c: Add support for DW_FORM_GNU_str_index,
250
+ DW_FORM_GNU_addr_index.
251
+ * libdwarf.h.in: 4 new error codes in DW_DLE_ list. Last now 248.
252
+ 2014-05-09 David Anderson
253
+ * Makefile.in: Write ar std-out to ar-output-temp
254
+ so the text is not needlessly filling a terminal window.
255
+ 2014-05-08 David Anderson
256
+ * dwarf.h: Adds DW_AT_GNU_dwo_id, DW_AT_GNU_dwo_name and other
257
+ GNU extensions.
258
+ * libdwarf.h.in: Producer code changes:
259
+ The dwarf_producer_init_d() is new and has new arguments.
260
+ The older dwarf_producer_init() and _b _c versions are removed.
261
+ Only one producer callback declaration exists now:
262
+ Dwarf_Callback_Func.
263
+ * pro_init.c: Implements the new dwarf_producer_init_d()
264
+ function and initializes fields at runtime to select
265
+ what DWARF to emit. Messy and confusing initialization code
266
+ rewritten to depend on the runtime arguments
267
+ to dwarf_producer_init_d, not library compile-time.
268
+ * pro_opaque.h: New runtime fields set by initialization code.
269
+ * pro_reloc.c: Fix a couple comment indentations.
270
+ * pro_forms.c: Add curly braces in an if to avoid
271
+ a hard-to-find bug (there was none yet, but it was a trap...).
272
+ * pro_reloc_symbolic.c,pro_reloc_stream.c: Remove use
273
+ of obsolete callback functions.
274
+ * pro_section.c: Ensure only IRIX isa/abi target generates
275
+ an exception CIE entry. Remove use of obsolete
276
+ callbacks.
277
+ * pro_util.h: Remove confusing and unreadable
278
+ relocation number ifdefs that
279
+ depended on settings at library compile-time. Most of the
280
+ content of the file is deleted now. See
281
+ isa_relocs[] in pro_init.c
282
+ * dwarf_error.c: Added error code (used by producer code).
283
+ * libdwarf2p.1.mm: Now version 1.36. Updated dwarf_producer_init()
284
+ documentation.
285
+ * libdwarf2p.1.pdf: Regenerated.
286
+ 2014-04-14 David Anderson
287
+ * pro_forms.c: Modified a comment about DW_FORM_ref_addr.
288
+ No logic change.
289
+ * bldDWindex.sh: Deleted. This shell script was intended for
290
+ DWARF2 postscript post-processing and was never useful.
291
+ 2014-04-12 David Anderson
292
+ * dwarf_die_deliv.c,dwarf_query.c: Gets the version stamp passed to
293
+ _dwarf_get_size_of_val() so DW_FORM_ref_addr handled
294
+ correctly.
295
+ * dwarf_form.c: Handle DW_FORM_ref_addr as the V2
296
+ specification says (V3 and later continue to
297
+ be handled unchanged.).
298
+ * dwarf_util.c: Handle DW_FORM_ref_addr as the V2
299
+ specification says (V3 and later continue to
300
+ be handled unchanged.).
301
+ * dwarf_addr_finder.c: Removed a mistaken handling
302
+ of DW_FORM_ref_addr. No one should be using this
303
+ function's features though...
304
+ * pro_forms.c: Made a comment clearer about
305
+ DW_FORM_ref_addr.
306
+ * pro_section.c: Made a comment clearer, removed
307
+ #if 0 code.
308
+ 2014-04-02 David Anderson
309
+ * libdwarf2.1.mm: Examples using dwarf_offdie_b() were
310
+ miscoded (is_info argument not provided). Now fixed.
311
+ Now at version 2.17.
312
+ * libdwarf2.1.pdf: Regenerated
313
+ 2014-03-17 David Anderson
314
+ * dwarf.v2.mm,dwarf.v2.pdf,index.v2.mm,index.v2.pdf: Removed
315
+ these files, they are now on dwarfstd.org.
316
+ * Makefile.in: Removed mention of the deleted files.
317
+ * README, COPYING: Removed mention of the deleted files.
318
+ 2014-02-08 David Anderson
319
+ * libdwarf2p.1.mm: Now version 1.35. Added a few words
320
+ about the sect_name_index field in the callback
321
+ from libdwarf to your code for each new Elf section
322
+ to be generated.
323
+ * libdwarf2p.1.pdf: Regenerated.
324
+ 2014-02-02 David Anderson
325
+ * dwarf_alloc.c: Added commentary.
326
+ * dwarf_loc.c: Fixed two indents.
327
+ * gennames.c: Removed trailing newlines from the printf
328
+ output (dwarf_names_new.h is the file generated).
329
+ * libdwarf.h.in: Removed trailing whitespace.
330
+ 2014-02-01 David Anderson
331
+ * dwarf_alloc.c: Instead of doing a long list of address compares,
332
+ use the hash 'tree' and tfind() to determine if we malloced
333
+ the space or simply took an address from .debug_info (
334
+ or other in-memory section) when
335
+ we returned a _dwarf_get_alloc() pointer to the user.
336
+ 2014-01-31 David Anderson
337
+ * configure.in: The test to generate HAVE___UINT32_T_IN_SYS_TYPES_H
338
+ was in a strange place. Moved it up a few lines.
339
+ * configure: Regenerated.
340
+ * dwarf_alloc.c: Added comment hinting at how dwarf_dealloc
341
+ can be further simplified.
342
+ 2014-01-30 David Anderson
343
+ * dwarf_loc.c: Add support for DW_FORM_exprloc
344
+ to dwarf_loclist_n().
345
+ * libdwarf2.1.mm: Document support for DW_FORM_exprloc.Version 2.16
346
+ * libdwarf2.1.pdf: Regenerate.
347
+ * dwarf.h, dwarf_form.c, dwarf_line.c,
348
+ dwarf_query.c, dwarf_util.c: Add limited support for DW_FORM_GNU_ref_alt
349
+ and DW_FORM_GNU_strp_alt.
350
+ 2014-01-30 David Anderson
351
+ * dwarf_alloc.c: Refactored and added relevant commentary.
352
+ Added a check for debug_types in dwarf_dealloc().
353
+ * dwarf_init_finish.c: Corrected a comment and made one line
354
+ declation-is-initialization.
355
+ * dwarf_opaque.h: Added commentary.
356
+
357
+ 2014-01-29 David Anderson
358
+ * common.h,dwarf.h,dwarf_abbrev.c,dwarf_abbrev.h,dwarf_addr_finder.c,
359
+ dwarf_alloc.c,dwarf_alloc.h,dwarf_arange.c,dwarf_arange.h,
360
+ dwarf_base_types.h,dwarf_die_deliv.c,dwarf_die_deliv.h,
361
+ dwarf_elf_access.c,dwarf_elf_access.h,dwarf_error.c,dwarf_error.h,
362
+ dwarf_form.c,dwarf_frame.c,dwarf_frame.h,dwarf_frame2.c,
363
+ dwarf_frame3.c,dwarf_funcs.c,dwarf_funcs.h,dwarf_global.c,
364
+ dwarf_global.h,dwarf_harmless.c,dwarf_harmless.h,dwarf_incl.h,
365
+ dwarf_init_finish.c,dwarf_line.c,dwarf_line.h,dwarf_line2.c,
366
+ dwarf_loc.h,dwarf_macro.h,dwarf_opaque.h,dwarf_reloc_arm.h,
367
+ dwarf_reloc_mips.h,dwarf_reloc_ppc.h,dwarf_reloc_ppc64.h,
368
+ dwarf_reloc_x86_64.h,dwarf_tsearch.h,dwarf_types.h,dwarf_util.h,
369
+ dwarf_vars.h,dwarf_weaks.h,libdwarfdefs.h,malloc_check.h,
370
+ pro_alloc.h,pro_arange.h,pro_die.h,pro_encode_nm.h,pro_error.h,
371
+ pro_frame.h,pro_incl.h,pro_line.h,pro_opaque.h,dwarf_tsearch.h:
372
+ Remove trailing whitespace.
373
+ 2014-01-29 David Anderson
374
+ * dwarf_tsearch.h, dwarf_tsearchhash.c: New files implementing
375
+ a hashed tree with tsearch() interfaces.
376
+ * Makefile.in: Add dwarf_tsearchhash.c to the build.
377
+ * dwarf_init_finish.c: Remove references to malloc_check and _dwarf_setup_debug()
378
+ and include of "malloc_check.h" as those are no longer needed.
379
+ * dwarf_line.c: Removed a superfluous _dwarf_get_alloc(). The result of the call
380
+ was never used.
381
+ * dwarf_opaque.h: Removed Dwarf_Alloc_Hdr_s references and simple malloc references.
382
+ added de_alloc_tree as base of a hash database replacing most of dwarf_alloc.c.
383
+ * dwarf_query.c: Removed an unused local variable.
384
+ * dwarf_alloc.h,dwarf_alloc.c: Removed simple malloc support and all the
385
+ complicated code handling allocation record-keeping in favor of
386
+ much simpler code calling functions
387
+ using a tsearch-like interface.
388
+ 2014-01-10 David Anderson
389
+ * dwarf_print_lines.c,dwarf_macro.c: Remove trailing whitespace.
390
+ * dwarf_ranges.c, dwarf_sort_lines.c: Remove trailing whitespace.
391
+ * dwarf_query.c, dwarf_pubtypes.c: Remove trailing whitespace.
392
+ * dwarf_original_elf_init.c,dwarf_loc.c: Remove trailing whitespace.
393
+ * gennames.c: Fix a printf so the generated dwarf_names.c
394
+ does not have a trailing space.
395
+ 2014-01-10 David Anderson
396
+ * gennames.c: Added comment clarifying why error is set
397
+ before the call to fgets, and fixing the declaration
398
+ order to avoid c99-ism.
399
+ * dwarf_frame2.c: Use /* not // for comments in C.
@@ -0,0 +1,504 @@
1
+ GNU LESSER GENERAL PUBLIC LICENSE
2
+ Version 2.1, February 1999
3
+
4
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ [This is the first released version of the Lesser GPL. It also counts
10
+ as the successor of the GNU Library Public License, version 2, hence
11
+ the version number 2.1.]
12
+
13
+ Preamble
14
+
15
+ The licenses for most software are designed to take away your
16
+ freedom to share and change it. By contrast, the GNU General Public
17
+ Licenses are intended to guarantee your freedom to share and change
18
+ free software--to make sure the software is free for all its users.
19
+
20
+ This license, the Lesser General Public License, applies to some
21
+ specially designated software packages--typically libraries--of the
22
+ Free Software Foundation and other authors who decide to use it. You
23
+ can use it too, but we suggest you first think carefully about whether
24
+ this license or the ordinary General Public License is the better
25
+ strategy to use in any particular case, based on the explanations below.
26
+
27
+ When we speak of free software, we are referring to freedom of use,
28
+ not price. Our General Public Licenses are designed to make sure that
29
+ you have the freedom to distribute copies of free software (and charge
30
+ for this service if you wish); that you receive source code or can get
31
+ it if you want it; that you can change the software and use pieces of
32
+ it in new free programs; and that you are informed that you can do
33
+ these things.
34
+
35
+ To protect your rights, we need to make restrictions that forbid
36
+ distributors to deny you these rights or to ask you to surrender these
37
+ rights. These restrictions translate to certain responsibilities for
38
+ you if you distribute copies of the library or if you modify it.
39
+
40
+ For example, if you distribute copies of the library, whether gratis
41
+ or for a fee, you must give the recipients all the rights that we gave
42
+ you. You must make sure that they, too, receive or can get the source
43
+ code. If you link other code with the library, you must provide
44
+ complete object files to the recipients, so that they can relink them
45
+ with the library after making changes to the library and recompiling
46
+ it. And you must show them these terms so they know their rights.
47
+
48
+ We protect your rights with a two-step method: (1) we copyright the
49
+ library, and (2) we offer you this license, which gives you legal
50
+ permission to copy, distribute and/or modify the library.
51
+
52
+ To protect each distributor, we want to make it very clear that
53
+ there is no warranty for the free library. Also, if the library is
54
+ modified by someone else and passed on, the recipients should know
55
+ that what they have is not the original version, so that the original
56
+ author's reputation will not be affected by problems that might be
57
+ introduced by others.
58
+
59
+ Finally, software patents pose a constant threat to the existence of
60
+ any free program. We wish to make sure that a company cannot
61
+ effectively restrict the users of a free program by obtaining a
62
+ restrictive license from a patent holder. Therefore, we insist that
63
+ any patent license obtained for a version of the library must be
64
+ consistent with the full freedom of use specified in this license.
65
+
66
+ Most GNU software, including some libraries, is covered by the
67
+ ordinary GNU General Public License. This license, the GNU Lesser
68
+ General Public License, applies to certain designated libraries, and
69
+ is quite different from the ordinary General Public License. We use
70
+ this license for certain libraries in order to permit linking those
71
+ libraries into non-free programs.
72
+
73
+ When a program is linked with a library, whether statically or using
74
+ a shared library, the combination of the two is legally speaking a
75
+ combined work, a derivative of the original library. The ordinary
76
+ General Public License therefore permits such linking only if the
77
+ entire combination fits its criteria of freedom. The Lesser General
78
+ Public License permits more lax criteria for linking other code with
79
+ the library.
80
+
81
+ We call this license the "Lesser" General Public License because it
82
+ does Less to protect the user's freedom than the ordinary General
83
+ Public License. It also provides other free software developers Less
84
+ of an advantage over competing non-free programs. These disadvantages
85
+ are the reason we use the ordinary General Public License for many
86
+ libraries. However, the Lesser license provides advantages in certain
87
+ special circumstances.
88
+
89
+ For example, on rare occasions, there may be a special need to
90
+ encourage the widest possible use of a certain library, so that it becomes
91
+ a de-facto standard. To achieve this, non-free programs must be
92
+ allowed to use the library. A more frequent case is that a free
93
+ library does the same job as widely used non-free libraries. In this
94
+ case, there is little to gain by limiting the free library to free
95
+ software only, so we use the Lesser General Public License.
96
+
97
+ In other cases, permission to use a particular library in non-free
98
+ programs enables a greater number of people to use a large body of
99
+ free software. For example, permission to use the GNU C Library in
100
+ non-free programs enables many more people to use the whole GNU
101
+ operating system, as well as its variant, the GNU/Linux operating
102
+ system.
103
+
104
+ Although the Lesser General Public License is Less protective of the
105
+ users' freedom, it does ensure that the user of a program that is
106
+ linked with the Library has the freedom and the wherewithal to run
107
+ that program using a modified version of the Library.
108
+
109
+ The precise terms and conditions for copying, distribution and
110
+ modification follow. Pay close attention to the difference between a
111
+ "work based on the library" and a "work that uses the library". The
112
+ former contains code derived from the library, whereas the latter must
113
+ be combined with the library in order to run.
114
+
115
+ GNU LESSER GENERAL PUBLIC LICENSE
116
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
117
+
118
+ 0. This License Agreement applies to any software library or other
119
+ program which contains a notice placed by the copyright holder or
120
+ other authorized party saying it may be distributed under the terms of
121
+ this Lesser General Public License (also called "this License").
122
+ Each licensee is addressed as "you".
123
+
124
+ A "library" means a collection of software functions and/or data
125
+ prepared so as to be conveniently linked with application programs
126
+ (which use some of those functions and data) to form executables.
127
+
128
+ The "Library", below, refers to any such software library or work
129
+ which has been distributed under these terms. A "work based on the
130
+ Library" means either the Library or any derivative work under
131
+ copyright law: that is to say, a work containing the Library or a
132
+ portion of it, either verbatim or with modifications and/or translated
133
+ straightforwardly into another language. (Hereinafter, translation is
134
+ included without limitation in the term "modification".)
135
+
136
+ "Source code" for a work means the preferred form of the work for
137
+ making modifications to it. For a library, complete source code means
138
+ all the source code for all modules it contains, plus any associated
139
+ interface definition files, plus the scripts used to control compilation
140
+ and installation of the library.
141
+
142
+ Activities other than copying, distribution and modification are not
143
+ covered by this License; they are outside its scope. The act of
144
+ running a program using the Library is not restricted, and output from
145
+ such a program is covered only if its contents constitute a work based
146
+ on the Library (independent of the use of the Library in a tool for
147
+ writing it). Whether that is true depends on what the Library does
148
+ and what the program that uses the Library does.
149
+
150
+ 1. You may copy and distribute verbatim copies of the Library's
151
+ complete source code as you receive it, in any medium, provided that
152
+ you conspicuously and appropriately publish on each copy an
153
+ appropriate copyright notice and disclaimer of warranty; keep intact
154
+ all the notices that refer to this License and to the absence of any
155
+ warranty; and distribute a copy of this License along with the
156
+ Library.
157
+
158
+ You may charge a fee for the physical act of transferring a copy,
159
+ and you may at your option offer warranty protection in exchange for a
160
+ fee.
161
+
162
+ 2. You may modify your copy or copies of the Library or any portion
163
+ of it, thus forming a work based on the Library, and copy and
164
+ distribute such modifications or work under the terms of Section 1
165
+ above, provided that you also meet all of these conditions:
166
+
167
+ a) The modified work must itself be a software library.
168
+
169
+ b) You must cause the files modified to carry prominent notices
170
+ stating that you changed the files and the date of any change.
171
+
172
+ c) You must cause the whole of the work to be licensed at no
173
+ charge to all third parties under the terms of this License.
174
+
175
+ d) If a facility in the modified Library refers to a function or a
176
+ table of data to be supplied by an application program that uses
177
+ the facility, other than as an argument passed when the facility
178
+ is invoked, then you must make a good faith effort to ensure that,
179
+ in the event an application does not supply such function or
180
+ table, the facility still operates, and performs whatever part of
181
+ its purpose remains meaningful.
182
+
183
+ (For example, a function in a library to compute square roots has
184
+ a purpose that is entirely well-defined independent of the
185
+ application. Therefore, Subsection 2d requires that any
186
+ application-supplied function or table used by this function must
187
+ be optional: if the application does not supply it, the square
188
+ root function must still compute square roots.)
189
+
190
+ These requirements apply to the modified work as a whole. If
191
+ identifiable sections of that work are not derived from the Library,
192
+ and can be reasonably considered independent and separate works in
193
+ themselves, then this License, and its terms, do not apply to those
194
+ sections when you distribute them as separate works. But when you
195
+ distribute the same sections as part of a whole which is a work based
196
+ on the Library, the distribution of the whole must be on the terms of
197
+ this License, whose permissions for other licensees extend to the
198
+ entire whole, and thus to each and every part regardless of who wrote
199
+ it.
200
+
201
+ Thus, it is not the intent of this section to claim rights or contest
202
+ your rights to work written entirely by you; rather, the intent is to
203
+ exercise the right to control the distribution of derivative or
204
+ collective works based on the Library.
205
+
206
+ In addition, mere aggregation of another work not based on the Library
207
+ with the Library (or with a work based on the Library) on a volume of
208
+ a storage or distribution medium does not bring the other work under
209
+ the scope of this License.
210
+
211
+ 3. You may opt to apply the terms of the ordinary GNU General Public
212
+ License instead of this License to a given copy of the Library. To do
213
+ this, you must alter all the notices that refer to this License, so
214
+ that they refer to the ordinary GNU General Public License, version 2,
215
+ instead of to this License. (If a newer version than version 2 of the
216
+ ordinary GNU General Public License has appeared, then you can specify
217
+ that version instead if you wish.) Do not make any other change in
218
+ these notices.
219
+
220
+ Once this change is made in a given copy, it is irreversible for
221
+ that copy, so the ordinary GNU General Public License applies to all
222
+ subsequent copies and derivative works made from that copy.
223
+
224
+ This option is useful when you wish to copy part of the code of
225
+ the Library into a program that is not a library.
226
+
227
+ 4. You may copy and distribute the Library (or a portion or
228
+ derivative of it, under Section 2) in object code or executable form
229
+ under the terms of Sections 1 and 2 above provided that you accompany
230
+ it with the complete corresponding machine-readable source code, which
231
+ must be distributed under the terms of Sections 1 and 2 above on a
232
+ medium customarily used for software interchange.
233
+
234
+ If distribution of object code is made by offering access to copy
235
+ from a designated place, then offering equivalent access to copy the
236
+ source code from the same place satisfies the requirement to
237
+ distribute the source code, even though third parties are not
238
+ compelled to copy the source along with the object code.
239
+
240
+ 5. A program that contains no derivative of any portion of the
241
+ Library, but is designed to work with the Library by being compiled or
242
+ linked with it, is called a "work that uses the Library". Such a
243
+ work, in isolation, is not a derivative work of the Library, and
244
+ therefore falls outside the scope of this License.
245
+
246
+ However, linking a "work that uses the Library" with the Library
247
+ creates an executable that is a derivative of the Library (because it
248
+ contains portions of the Library), rather than a "work that uses the
249
+ library". The executable is therefore covered by this License.
250
+ Section 6 states terms for distribution of such executables.
251
+
252
+ When a "work that uses the Library" uses material from a header file
253
+ that is part of the Library, the object code for the work may be a
254
+ derivative work of the Library even though the source code is not.
255
+ Whether this is true is especially significant if the work can be
256
+ linked without the Library, or if the work is itself a library. The
257
+ threshold for this to be true is not precisely defined by law.
258
+
259
+ If such an object file uses only numerical parameters, data
260
+ structure layouts and accessors, and small macros and small inline
261
+ functions (ten lines or less in length), then the use of the object
262
+ file is unrestricted, regardless of whether it is legally a derivative
263
+ work. (Executables containing this object code plus portions of the
264
+ Library will still fall under Section 6.)
265
+
266
+ Otherwise, if the work is a derivative of the Library, you may
267
+ distribute the object code for the work under the terms of Section 6.
268
+ Any executables containing that work also fall under Section 6,
269
+ whether or not they are linked directly with the Library itself.
270
+
271
+ 6. As an exception to the Sections above, you may also combine or
272
+ link a "work that uses the Library" with the Library to produce a
273
+ work containing portions of the Library, and distribute that work
274
+ under terms of your choice, provided that the terms permit
275
+ modification of the work for the customer's own use and reverse
276
+ engineering for debugging such modifications.
277
+
278
+ You must give prominent notice with each copy of the work that the
279
+ Library is used in it and that the Library and its use are covered by
280
+ this License. You must supply a copy of this License. If the work
281
+ during execution displays copyright notices, you must include the
282
+ copyright notice for the Library among them, as well as a reference
283
+ directing the user to the copy of this License. Also, you must do one
284
+ of these things:
285
+
286
+ a) Accompany the work with the complete corresponding
287
+ machine-readable source code for the Library including whatever
288
+ changes were used in the work (which must be distributed under
289
+ Sections 1 and 2 above); and, if the work is an executable linked
290
+ with the Library, with the complete machine-readable "work that
291
+ uses the Library", as object code and/or source code, so that the
292
+ user can modify the Library and then relink to produce a modified
293
+ executable containing the modified Library. (It is understood
294
+ that the user who changes the contents of definitions files in the
295
+ Library will not necessarily be able to recompile the application
296
+ to use the modified definitions.)
297
+
298
+ b) Use a suitable shared library mechanism for linking with the
299
+ Library. A suitable mechanism is one that (1) uses at run time a
300
+ copy of the library already present on the user's computer system,
301
+ rather than copying library functions into the executable, and (2)
302
+ will operate properly with a modified version of the library, if
303
+ the user installs one, as long as the modified version is
304
+ interface-compatible with the version that the work was made with.
305
+
306
+ c) Accompany the work with a written offer, valid for at
307
+ least three years, to give the same user the materials
308
+ specified in Subsection 6a, above, for a charge no more
309
+ than the cost of performing this distribution.
310
+
311
+ d) If distribution of the work is made by offering access to copy
312
+ from a designated place, offer equivalent access to copy the above
313
+ specified materials from the same place.
314
+
315
+ e) Verify that the user has already received a copy of these
316
+ materials or that you have already sent this user a copy.
317
+
318
+ For an executable, the required form of the "work that uses the
319
+ Library" must include any data and utility programs needed for
320
+ reproducing the executable from it. However, as a special exception,
321
+ the materials to be distributed need not include anything that is
322
+ normally distributed (in either source or binary form) with the major
323
+ components (compiler, kernel, and so on) of the operating system on
324
+ which the executable runs, unless that component itself accompanies
325
+ the executable.
326
+
327
+ It may happen that this requirement contradicts the license
328
+ restrictions of other proprietary libraries that do not normally
329
+ accompany the operating system. Such a contradiction means you cannot
330
+ use both them and the Library together in an executable that you
331
+ distribute.
332
+
333
+ 7. You may place library facilities that are a work based on the
334
+ Library side-by-side in a single library together with other library
335
+ facilities not covered by this License, and distribute such a combined
336
+ library, provided that the separate distribution of the work based on
337
+ the Library and of the other library facilities is otherwise
338
+ permitted, and provided that you do these two things:
339
+
340
+ a) Accompany the combined library with a copy of the same work
341
+ based on the Library, uncombined with any other library
342
+ facilities. This must be distributed under the terms of the
343
+ Sections above.
344
+
345
+ b) Give prominent notice with the combined library of the fact
346
+ that part of it is a work based on the Library, and explaining
347
+ where to find the accompanying uncombined form of the same work.
348
+
349
+ 8. You may not copy, modify, sublicense, link with, or distribute
350
+ the Library except as expressly provided under this License. Any
351
+ attempt otherwise to copy, modify, sublicense, link with, or
352
+ distribute the Library is void, and will automatically terminate your
353
+ rights under this License. However, parties who have received copies,
354
+ or rights, from you under this License will not have their licenses
355
+ terminated so long as such parties remain in full compliance.
356
+
357
+ 9. You are not required to accept this License, since you have not
358
+ signed it. However, nothing else grants you permission to modify or
359
+ distribute the Library or its derivative works. These actions are
360
+ prohibited by law if you do not accept this License. Therefore, by
361
+ modifying or distributing the Library (or any work based on the
362
+ Library), you indicate your acceptance of this License to do so, and
363
+ all its terms and conditions for copying, distributing or modifying
364
+ the Library or works based on it.
365
+
366
+ 10. Each time you redistribute the Library (or any work based on the
367
+ Library), the recipient automatically receives a license from the
368
+ original licensor to copy, distribute, link with or modify the Library
369
+ subject to these terms and conditions. You may not impose any further
370
+ restrictions on the recipients' exercise of the rights granted herein.
371
+ You are not responsible for enforcing compliance by third parties with
372
+ this License.
373
+
374
+ 11. If, as a consequence of a court judgment or allegation of patent
375
+ infringement or for any other reason (not limited to patent issues),
376
+ conditions are imposed on you (whether by court order, agreement or
377
+ otherwise) that contradict the conditions of this License, they do not
378
+ excuse you from the conditions of this License. If you cannot
379
+ distribute so as to satisfy simultaneously your obligations under this
380
+ License and any other pertinent obligations, then as a consequence you
381
+ may not distribute the Library at all. For example, if a patent
382
+ license would not permit royalty-free redistribution of the Library by
383
+ all those who receive copies directly or indirectly through you, then
384
+ the only way you could satisfy both it and this License would be to
385
+ refrain entirely from distribution of the Library.
386
+
387
+ If any portion of this section is held invalid or unenforceable under any
388
+ particular circumstance, the balance of the section is intended to apply,
389
+ and the section as a whole is intended to apply in other circumstances.
390
+
391
+ It is not the purpose of this section to induce you to infringe any
392
+ patents or other property right claims or to contest validity of any
393
+ such claims; this section has the sole purpose of protecting the
394
+ integrity of the free software distribution system which is
395
+ implemented by public license practices. Many people have made
396
+ generous contributions to the wide range of software distributed
397
+ through that system in reliance on consistent application of that
398
+ system; it is up to the author/donor to decide if he or she is willing
399
+ to distribute software through any other system and a licensee cannot
400
+ impose that choice.
401
+
402
+ This section is intended to make thoroughly clear what is believed to
403
+ be a consequence of the rest of this License.
404
+
405
+ 12. If the distribution and/or use of the Library is restricted in
406
+ certain countries either by patents or by copyrighted interfaces, the
407
+ original copyright holder who places the Library under this License may add
408
+ an explicit geographical distribution limitation excluding those countries,
409
+ so that distribution is permitted only in or among countries not thus
410
+ excluded. In such case, this License incorporates the limitation as if
411
+ written in the body of this License.
412
+
413
+ 13. The Free Software Foundation may publish revised and/or new
414
+ versions of the Lesser General Public License from time to time.
415
+ Such new versions will be similar in spirit to the present version,
416
+ but may differ in detail to address new problems or concerns.
417
+
418
+ Each version is given a distinguishing version number. If the Library
419
+ specifies a version number of this License which applies to it and
420
+ "any later version", you have the option of following the terms and
421
+ conditions either of that version or of any later version published by
422
+ the Free Software Foundation. If the Library does not specify a
423
+ license version number, you may choose any version ever published by
424
+ the Free Software Foundation.
425
+
426
+ 14. If you wish to incorporate parts of the Library into other free
427
+ programs whose distribution conditions are incompatible with these,
428
+ write to the author to ask for permission. For software which is
429
+ copyrighted by the Free Software Foundation, write to the Free
430
+ Software Foundation; we sometimes make exceptions for this. Our
431
+ decision will be guided by the two goals of preserving the free status
432
+ of all derivatives of our free software and of promoting the sharing
433
+ and reuse of software generally.
434
+
435
+ NO WARRANTY
436
+
437
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
438
+ WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
439
+ EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
440
+ OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
441
+ KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
442
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
443
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
444
+ LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
445
+ THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
446
+
447
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
448
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
449
+ AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
450
+ FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
451
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
452
+ LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
453
+ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
454
+ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
455
+ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
456
+ DAMAGES.
457
+
458
+ END OF TERMS AND CONDITIONS
459
+
460
+ How to Apply These Terms to Your New Libraries
461
+
462
+ If you develop a new library, and you want it to be of the greatest
463
+ possible use to the public, we recommend making it free software that
464
+ everyone can redistribute and change. You can do so by permitting
465
+ redistribution under these terms (or, alternatively, under the terms of the
466
+ ordinary General Public License).
467
+
468
+ To apply these terms, attach the following notices to the library. It is
469
+ safest to attach them to the start of each source file to most effectively
470
+ convey the exclusion of warranty; and each file should have at least the
471
+ "copyright" line and a pointer to where the full notice is found.
472
+
473
+ <one line to give the library's name and a brief idea of what it does.>
474
+ Copyright (C) <year> <name of author>
475
+
476
+ This library is free software; you can redistribute it and/or
477
+ modify it under the terms of the GNU Lesser General Public
478
+ License as published by the Free Software Foundation; either
479
+ version 2.1 of the License, or (at your option) any later version.
480
+
481
+ This library is distributed in the hope that it will be useful,
482
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
483
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
484
+ Lesser General Public License for more details.
485
+
486
+ You should have received a copy of the GNU Lesser General Public
487
+ License along with this library; if not, write to the Free Software
488
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
489
+
490
+ Also add information on how to contact you by electronic and paper mail.
491
+
492
+ You should also get your employer (if you work as a programmer) or your
493
+ school, if any, to sign a "copyright disclaimer" for the library, if
494
+ necessary. Here is a sample; alter the names:
495
+
496
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
497
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
498
+
499
+ <signature of Ty Coon>, 1 April 1990
500
+ Ty Coon, President of Vice
501
+
502
+ That's all there is to it!
503
+
504
+