blob: 888e50967f268273f4af02a10ae0cf1992672f19 [file] [log] [blame]
Mark Wielaard8961f332017-11-26 17:51:11 +010012018-02-09 Mark Wielaard <mark@klomp.org>
2
3 * dwarf_child.c (__libdw_find_attr): Handle DW_FORM_implicit_const.
4 * dwarf_formsdata.c (dwarf_formsdata): Likewise.
5 * dwarf_formudata.c (dwarf_formudata): Likewise.
6 * dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
7 * dwarf_getattrs.c (dwarf_getattrs): Likewise.
8 * dwarf_hasattr.c (dwarf_hasattr): Likewise.
9 * dwarf_getabbrevattr.c (dwarf_getabbrevattr_data): New function
10 that will also return any data associated with the abbrev. Which
11 currently is only for DW_FORM_implicit_const. Based on...
12 (dwarf_getabbrevattr): ... this function. Which now just calls
13 dwarf_getabbrevattr_data.
14 * libdw.h (dwarf_getabbrevattr_data): Declare new function.
15 * libdw.map (ELFUTILS_0.170): Add dwarf_getabbrevattr_data.
16 * libdwP.h (dwarf_getabbrevattr_data): INTDECL.
17 * memory-access.h (__libdw_get_sleb128_unchecked): New inlined
18 function based on __libdw_get_uleb128_unchecked.
19
Mark Wielaardeb11b0f2017-11-26 17:40:56 +0100202018-02-08 Mark Wielaard <mark@klomp.org>
21
22 * dwarf.h: Add DWARF5 DW_FORMs.
23 * libdwP.h (__libdw_form_val_compute_len): Handle fix length
24 DW_FORM_implicit_const, DW_FORM_addrx[1234], DW_FORM_strx[1234],
25 DW_FORM_ref_sup[48] and DW_FORM_data16.
26 * libdw_form.c (__libdw_form_val_compute_len): DW_FORM_strp_sup
27 and DW_FORM_line_strp are offset_size. DW_FORM_addrx, DW_FORM_strx,
28 DW_FORM_loclistx and DW_FORM_rnglistx are uleb128.
29
Mark Wielaard79f0e622018-01-30 12:05:57 +0100302018-01-30 Mark Wielaard <mark@klomp.org>
31
32 * Makefile.am (libdw_a_SOURCES): Add dwarf_get_units.c.
33 * dwarf_get_units.c: New file.
34 * libdw.h (dwarf_get_units): New function declaration.
35 * libdw.map (ELFUTILS_0.170): Add dwarf_get_units.
36
Mark Wielaard532ab1e2018-01-29 15:59:05 +0100372018-01-29 Mark Wielaard <mark@klomp.org>
38
39 * dwarf.h (DW_UT_*): Add DWARF Unit Header Types.
40 * dwarf_cu_die.c (dwarf_cu_die): Rename arguments. type_signaturep
41 is now called unit_idp. type_offsetp is now called subdie_offsetp.
42 * dwarf_formref_die.c (dwarf_formref_die): Scan both .debug_info
43 and .debug_types sections for type units when type signature ref
44 not found.
45 * dwarf_getaranges.c (dwarf_getaranges): Use __libdw_findcu and
46 __libdw_first_die_off_from_cu instead of trying by hand.
47 * dwarf_getlocation_die.c (dwarf_getlocation_die): Use ISV4TU
48 instead of checking type_offset by hand.
49 * dwarf_getlocation_implicit_pointer.c
50 (dwarf_getlocation_implicit_pointer): Likewise.
51 * dwarf_nextcu.c (dwarf_next_unit): Call __libdw_next_unit.
52 (__libdw_next_unit): New function based on dwarf_next_unit with
53 DWARF5 header support.
54 * libdwP.h (struct Dwarf_CU): Renamed type_offset to subdie_offset
55 and type_sig8 to unit_id8.
56 (ISV4TU): New macro to determine whether a CU is a version 4 type
57 unit (which comes from the .debug_types section).
58 (DIE_OFFSET_FROM_CU_OFFSET): Replaced macro by real function...
59 (__libdw_first_die_from_cu_start): ... that also handles DWARF5
60 unit headers.
61 (__libdw_first_die_off_from_cu): New function that calls the above
62 using the CU fields.
63 (CUDIE): Use __libdw_first_die_off_from_cu.
64 (SUBDIE): New macro that provides the DIE for a CU using the
65 subdie_offset.
66 (__libdw_next_unit): New internal function declaration.
67 * libdw_findcu.c (__libdw_intern_next_unit): Use __libdw_next_unit.
68 Accept DWARF version 5 headers. Setup unit_type.
69 (__libdw_findcu): Rename debug_types argument to v4_debug_types
70 argument (to indicate that we are looking in the .debug_types
71 section). Support finding the exact offset (unit header start).
72
Mark Wielaard212b4e32018-01-25 01:13:10 +0100732018-01-25 Mark Wielaard <mark@klomp.org>
74
75 * Makefile.am (libdw_a_SOURCES): Add dwarf_die_addr_die.c.
76 * dwarf_die_addr_die.c: New file.
77 * libdw.h (dwarf_die_addr_die): New function declaration.
78 * libdw.map (ELFUTILS_0.171): New section with dwarf_die_addr_die.
79 * libdwP.h (__libdw_findcu_addr): New internal function declaration.
80 * libdw_findcu.c (__libdw_findcu_addr): New internal function.
81
Joshua Watt555e15e2018-02-09 10:27:18 -0600822018-02-09 Joshua Watt <JPEWhacker@gmail.com>
83
84 * cfi.c (execute_cfi): Use FALLTHROUGH macro instead of comment.
85 * dwarf_frame_register.c (dwarf_frame_register): Likewise.
86
Mark Wielaard240a0682018-01-19 23:59:21 +0100872018-01-22 Mark Wielaard <mark@klomp.org>
88
89 * Makefile.am (AM_CPPFLAGS): Add -I libdwelf.
90 * dwarf_begin_elf.c (dwarf_begin_elf): Initialize Dwarf alt_fd to -1.
91 * dwarf_end.c (dwarf_end): Call dwarf_end and close on the alt_dwarf
92 and alt_fd if we allocated them.
93 * dwarf_fromref_die.c (dwarf_formref_die): Call dwarf_getalt.
94 * dwarf_formstring.c (dwarf_formstring): Likewise.
95 * dwarf_getalt.c (__libdw_filepath): New internal function.
96 (find_debug_altlink): New static function.
97 (dwarf_getalt): Check Dwarf alt_dwarf and call find_debug_altlink.
98 Cache result.
99 * dwarf_setalt.c (dwarf_setalt): Clean up Dwarf alt_dwarf and alt_fd
100 if we allocated.
101 * libdw.h (dwarf_getalt): Extend documentation.
102 (dwarf_setalt): Likewise.
103 * libdwP.h (struct Dwarf): Add alt_fd field.
104 (filepath): Declare new internal function.
105
Petr Machata1e2c8862018-01-14 03:22:05 +01001062018-01-14 Petr Machata <pmachata@gmail.com>
107
108 * dwarf_formsdata.c (dwarf_formsdata):
109 <DW_FORM_data1>: Cast to signed char.
110 <DW_FORM_data2,4,8>: Use read_*sbyte_unaligned instead of
111 read_*ubyte_unaligned.
112
Mark Wielaardbfb21172017-12-26 11:52:06 +01001132017-12-26 Mark Wielaard <mark@klomp.org>
114
Mark Wielaardc09d6112017-12-26 16:49:46 +0100115 * libdwP.h (struct Dwarf_Abbrev): Pack struct. Remove attrcnt,
116 use bitfields for has_children and code.
117 * dwarf_getabbrev.c (__libdw_getabbrev): Don't count attrs.
118 * dwarf_getattrcnt.c (dwarf_getattrcnt): Count attrs.
119
1202017-12-26 Mark Wielaard <mark@klomp.org>
121
Mark Wielaardbfb21172017-12-26 11:52:06 +0100122 * memory-access.h (__libdw_get_uleb128_unchecked): New function.
123 (get_uleb128_unchecked): New define.
124 * dwarf_child.c (__libdw_find_attr): Use get_uleb128_unchecked to
125 read attr name and form.
126 * dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
127 * dwarf_getattrs.c (dwarf_getattrs): Likewise.
128 * dwarf_hasattr.c (dwarf_hasattr): Likewise.
129
Mark Wielaard4af2f2e2017-12-29 00:34:14 +01001302017-12-28 Mark Wielaard <mark@klomp.org>
131
132 * dwarf_offdie.c (__libdw_offdie): Check sectiondata exists.
133
Ulf Hermann0d100f62017-05-09 18:28:33 +02001342017-05-09 Ulf Hermann <ulf.hermann@qt.io>
135 Mark Wielaard <mark@klomp.org>
136
137 * libdwP.h (__libdw_in_section): Fix check for the upper border of
138 the range.
139 (__libdw_offset_in_section): Likewise.
140
Mark Wielaard51a72922017-12-20 16:50:57 +01001412017-12-20 Mark Wielaard <mark@klomp.org>
142
143 * libdwP.h (struct Dwarf_CU): Add sec_idx field.
144 (cu_sec_idx): Return cu->sec_idx.
145 * libdw_findcu.c (__libdw_intern_next_unit): Set cu sec_idx to
146 IDX_debug_info or IDX_debug_types.
147 * dwarf_begin_elf.c (valid_p): Set fake_loc_cu->sec_idx to
148 IDX_debug_loc.
149 * dwarf_getmacros.c (read_macros): Set fake_cu->sec_idx to
150 IDX_debug_macro or IDX_debug_macinfo.
151
Mark Wielaardc25dc622017-12-11 23:58:34 +01001522017-12-12 Mark Wielaard <mark@klomp.org>
153
154 * dwarf_aggregate_size.c (dwarf_aggregate_size): Don't peel the
155 given DIE. Reserve memory for a new DIE first.
156
Dima Kogana2246aa2017-12-08 01:45:10 -08001572017-12-11 Dima Kogan <dima@secretsauce.net>
158
159 * dwarf_aggregate_size.c (array_size): Handle multi-dimensional
160 arrays properly.
161
Mark Wielaarde23c7132017-11-02 16:23:24 +01001622017-11-03 Mark Wielaard <mark@klomp.org>
163
Mark Wielaardafda91c2017-11-02 16:24:41 +0100164 * dwarf_getlocation.c (__libdw_intern_expression): Handle
165 DW_OP_GNU_variable_value.
166 * dwarf_getlocation_attr.c (dwarf_getlocation_attr): Likewise.
167 * dwarf_getlocation_die.c (dwarf_getlocation_die): Likewise.
168
1692017-11-03 Mark Wielaard <mark@klomp.org>
170
Mark Wielaard7286e5c2017-11-02 16:24:17 +0100171 * dwarf_getlocation.c (attr_ok): Always accept DW_FORM_exprloc.
172 Update list of acceptable attribute codes based on DWARF5.
173
1742017-11-03 Mark Wielaard <mark@klomp.org>
175
Mark Wielaarde23c7132017-11-02 16:23:24 +0100176 * dwarf.h: Add DW_OP_GNU_variable_value.
177
Mark Wielaard73411842017-10-03 23:08:01 +02001782017-10-03 Mark Wielaard <mark@klomp.org>
179
180 * libdw.h: Define LIBDW_CIE_ID and use it in dwarf_cfi_cie_p.
181
Ulf Hermann17d71942017-08-18 14:05:10 +02001822017-08-18 Ulf Hermann <ulf.hermann@qt.io>
183
184 * memory-access.h: Use attribute_packed.
185
Ulf Hermann07737582017-08-18 12:41:11 +02001862017-02-27 Ulf Hermann <ulf.hermann@qt.io>
187
Ulf Hermann11274702017-08-18 13:06:36 +0200188 * libdwP.h: Use attribute_hidden.
189 * libdw_alloc.c: Likewise.
190
1912017-02-27 Ulf Hermann <ulf.hermann@qt.io>
192
Ulf Hermann07737582017-08-18 12:41:11 +0200193 * Makefile.am: Use fpic_CFLAGS and dso_LDFLAGS.
194
Mark Wielaard2d906d82017-07-26 17:38:22 +02001952017-07-26 Mark Wielaard <mark@klomp.org>
196
Mark Wielaardf9d791a2017-07-26 23:02:18 +0200197 * dwarf.h: Add DW_MACRO_* and compat defines for DW_MACRO_GNU_*.
198 * dwarf_getmacros.c (get_table_for_offset): Accept either version
199 4 or 5. Use DW_MACRO names instead of DW_MACRO_GNU names.
200 (read_macros): Use table version for fake_cu.
201
2022017-07-26 Mark Wielaard <mark@klomp.org>
203
Mark Wielaard274f28c2017-07-26 22:54:59 +0200204 * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type,
205 DW_TAG_packed_type and DW_TAG_shared_type.
206 * libdw.h (dwarf_peel_type): Extend documentation.
207
2082017-07-26 Mark Wielaard <mark@klomp.org>
209
Mark Wielaard02e30932017-07-26 18:32:27 +0200210 * dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and
211 DW_DEFAULTED_out_of_class.
212
2132017-07-26 Mark Wielaard <mark@klomp.org>
214
Mark Wielaard75834f32017-07-26 18:15:20 +0200215 * dwarf.h: Add DW_CC_pass_by_reference and DW_CC_pass_by_reference.
216
2172017-07-26 Mark Wielaard <mark@klomp.org>
218
Mark Wielaard2eb1e342017-07-26 18:06:21 +0200219 * dwarf_default_lower_bound.c: New file.
220 * Makefile.am (libdw_a_SOURCES): Add dwarf_default_lower_bound.c.
221 * dwarf_aggregate_size.c (array_size): Use dwarf_default_lower_bound.
222 * dwarf_error.c (errmsgs): Add DWARF_E_UNKNOWN_LANGUAGE.
223 * libdw.h: Add dwarf_default_lower_bound.
224 * libdw.map (ELFUTILS_0.170): Add dwarf_default_lower_bound.
225 * libdwP.h: Add DWARF_E_UNKNOWN_LANGUAGE and
226 dwarf_default_lower_bound INTDECL.
227
2282017-07-26 Mark Wielaard <mark@klomp.org>
229
Mark Wielaardd14fd3b2017-07-26 17:44:29 +0200230 * dwarf.h: Add DW_LANG_OpenCL, DW_LANG_Modula3,
231 DW_LANG_C_plus_plus_03, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
232 DW_LANG_Julia, DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_BLISS.
233 * dwarf_aggregate_size.c (array_size): Add lower bound for
234 DW_LANG_C_plus_plus_03, DW_LANG_Python, DW_LANG_OpenCL,
235 DW_LANG_Haskell, DW_LANG_OCaml, DW_LANG_Rust, DW_LANG_Swift,
236 DW_LANG_Dylan, DW_LANG_RenderScript, DW_LANG_Modula3,
237 DW_LANG_Julia and DW_LANG_BLISS.
238
2392017-07-26 Mark Wielaard <mark@klomp.org>
240
Mark Wielaard2d906d82017-07-26 17:38:22 +0200241 * dwarf.h: Add DW_ATE_UCS and DW_ATE_ASCII.
242
Mark Wielaard8e9c76b2017-07-25 15:29:10 +02002432017-07-25 Mark Wielaard <mark@klomp.org>
244
Mark Wielaard9619d342017-07-26 17:06:07 +0200245 * dwarf.h: Add DW_TAG_coarray_type, DW_TAG_generic_subrange,
246 DW_TAG_dynamic_type, DW_TAG_call_site, DW_TAG_call_site_parameter,
247 DW_TAG_skeleton_unit, DW_TAG_immutable_type. Add reserved comments
248 for currently unused numbers.
249
2502017-07-25 Mark Wielaard <mark@klomp.org>
251
Mark Wielaard8e9c76b2017-07-25 15:29:10 +0200252 * dwarf.h (DWARF attributes enum): Remove DW_AT_subscr_data,
253 DW_AT_element_list and DW_AT_member. Add DWARF5 attribute constants.
254 (DW_AT_subscr_data, DW_AT_element_list, DW_AT_member): New defines.
255
Mark Wielaardc24b9002017-07-21 21:23:07 +02002562017-07-21 Mark Wielaard <mark@klomp.org>
257
258 * dwarf_line_file.c: New file.
259 * Makefile.am (libdw_a_SOURCES): Add dwarf_line_file.c.
260 * libdw.h (dwarf_line_file): New function declaration.
261 * libdw.map (ELFUTILS_0.170): New. Add dwarf_line_file.
262
Ulf Hermann8abf0b52017-02-17 16:11:28 +01002632017-02-17 Ulf Hermann <ulf.hermann@qt.io>
264
265 * Makefile.am: Add libdw_so_LIBS to specify the archives libdw is is
266 made of, libdw_so_DEPS for libraries it depends on (including
267 libeu.a), libdw_so_LDLIBS to specify libraries libdw links against.
268 (libdw.so$(EXEEXT)): Add $(libdw_so_LDLIBS), remove enumeration of
269 library dependencies, use libdw_so_LIBS rather than relying on the
270 order of dependencies specified, add -z,relro.
271
Ulf Hermann037be822017-04-20 17:07:37 +02002722017-04-20 Ulf Hermann <ulf.hermann@qt.io>
273
Ulf Hermannc73a00d2017-04-20 15:55:47 +0200274 * libdw.h: Remove attribute macro declarations and use
275 __noreturn_attribute__ as defined in libelf.h.
276
2772017-04-20 Ulf Hermann <ulf.hermann@qt.io>
278
Ulf Hermann037be822017-04-20 17:07:37 +0200279 * dwarf_begin_elf.c: Include endian.h.
280
Mark Wielaardf339da92017-03-30 12:19:53 +02002812017-03-30 Mark Wielaard <mjw@redhat.com>
282
283 * dwarf_peel_type.c (dwarf_peel_type): Call dwarf_attr_integrate on
284 result.
285
Mark Wielaardee38b262016-10-22 19:18:51 +02002862016-10-22 Mark Wielaard <mjw@redhat.com>
287
288 * dwarf.h: Correct spelling of DW_LANG_PLI. Add compatibility define.
289 * dwarf_aggregate_size.c (array_size): Use correct spelling of
290 DW_LANG_PLI.
291
Mark Wielaarda3cc8182016-11-02 13:29:26 +01002922016-11-02 Mark Wielaard <mjw@redhat.com>
293
294 * cfi.c (execute_cfi): Add fallthrough comments.
295 * encoded-value.h (encoded_value_size): Add explicit return instead
296 of relying on fallthrough.
297 * dwfl_report_elf.c (__libdwfl_elf_address_range): Add fallthrough
298 comment.
299
3002016-10-11 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Akihiko Odaki60b2bf12016-10-11 23:06:48 +0900301
302 * dwarf_getpubnames.c: Remove sys/param.h include, add system.h.
303 * libdw_alloc.c: Likewise.
304
Mark Wielaarddd906c12016-07-08 14:08:22 +02003052016-07-08 Mark Wielaard <mjw@redhat.com>
306
307 * libdw.map (ELFUTILS_0.167): New. Add dwelf_strtab_init,
308 dwelf_strtab_add, dwelf_strtab_add_len, dwelf_strtab_finalize,
309 dwelf_strent_off, dwelf_strent_str and dwelf_strtab_free.
310
Mark Wielaarde93e6f92016-02-13 19:36:50 +01003112016-02-13 Mark Wielaard <mjw@redhat.com>
312
313 * dwarf_getsrclines.c (read_srclines): Calculate ndirs first, then
314 assign to ndirlist.
315
Mark Wielaardc495d752015-12-30 14:18:40 +01003162015-12-18 Mark Wielaard <mjw@redhat.com>
317
318 * libdwP.h (struct Dwarf): Remove sectiondata_gzip_mask.
319 (__libdw_free_zdata): Remove.
320 * dwarf_begin_elf.c (inflate_section): Remove.
321 (check_section): Remove __libdw_free_zdata calls. Use elf_compress
322 and elf_compress_gnu to decompress if necessary.
323 (valid_p): Remove __libdw_free_zdata calls.
324 (scngrp_read): Use elf_compress if section is compressed. Remove
325 __libdw_free_zdata calls.
326 * dwarf_end.c (__libdw_free_zdata): Remove.
327 (dwarf_end): Don't call __libdw_free_zdata.
328
Mark Wielaard0c32b6f2015-11-17 23:52:39 +01003292015-10-28 Mark Wielaard <mjw@redhat.com>
330
331 * libdw.map (ELFUTILS_0.165): New. Add dwelf_scn_gnu_compressed_size.
332
Mark Wielaard8bbfc552015-12-02 17:07:40 +01003332015-12-02 Mark Wielaard <mjw@redhat.com>
334
335 * fde.c (intern_fde): Don't leak duplicate FDEs.
336
Mark Wielaarddb30f8b2015-12-01 15:21:55 +01003372015-12-01 Mark Wielaard <mjw@redhat.com>
338
Mark Wielaarde04da0e2015-12-02 00:21:07 +0100339 * fde.c (intern_fde): Don't intern an fde that doesn't cover a
340 valid code range.
341
3422015-12-01 Mark Wielaard <mjw@redhat.com>
343
Mark Wielaarddb30f8b2015-12-01 15:21:55 +0100344 * dwarf_end.c (dwarf_end): Call cu_free on fake_loc_cu if it exists.
345
Chih-Hung Hsieh454a8282015-10-14 12:23:34 -07003462015-10-14 Chih-Hung Hsieh <chh@google.com>
347
Chih-Hung Hsiehe0b020f2015-10-14 12:30:11 -0700348 * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Move recursive
349 functions 'add_bkpt', 'entrypc_bkpt', and 'search_range' to file scope.
350
3512015-10-14 Chih-Hung Hsieh <chh@google.com>
352
Chih-Hung Hsieh454a8282015-10-14 12:23:34 -0700353 * libdw_visit_scopes.c (__libdw_visit_scopes): Move recursive nested
354 function 'walk_children' to file scope; inline 'recurse' at its call
355 site.
356
Mark Wielaarde2cf85c2015-11-19 12:37:08 +01003572015-10-19 Mark Wielaard <mjw@redhat.com>
358
359 * frame-cache.c (__libdw_destroy_frame_cache): Call ebl_closebackend
360 if necessary.
361
Dmitry V. Levinb47fb232015-11-16 18:11:23 +03003622015-10-16 Dmitry V. Levin <ldv@altlinux.org>
363
364 * dwarf_getsrclines.c (read_srclines): Initialize state early.
365
Chih-Hung Hsiehb926e562015-10-13 15:26:14 -07003662015-10-13 Chih-Hung Hsieh <chh@google.com>
367
Chih-Hung Hsiehf8443bd2015-10-13 15:26:14 -0700368 * dwarf_getsrclines.c (read_srclines): Move nested functions
369 'advance_pc' and 'add_new_line' to file scope and keep many
370 local state variables within one structure.
371
3722015-10-13 Chih-Hung Hsieh <chh@google.com>
373
Chih-Hung Hsiehb926e562015-10-13 15:26:14 -0700374 * dwarf_getscopevar.c (dwarf_getscopevar): Move nested
375 function 'file_matches' to file scope.
376
Mark Wielaard528cb452015-10-16 23:07:12 +02003772015-10-16 Mark Wielaard <mjw@redhat.com>
378
379 * Makefile.am (libdw.so): Add -lz.
380
Chih-Hung Hsieh34bb96a2015-10-14 11:59:53 -07003812015-10-14 Chih-Hung Hsieh <chh@google.com>
382
383 * cfi.c (execute_cfi): Move nested functions 'enough_registers'
384 and 'require_cfa_offset' to file scope.
385
Josh Stone34254542015-10-09 10:10:37 -07003862015-10-09 Josh Stone <jistone@redhat.com>
387
388 * dwarf_begin.c (dwarf_begin): Replace stat64 and fstat64 with stat
389 and fstat.
390
Josh Stonedaee4712015-10-05 11:04:15 -07003912015-10-05 Josh Stone <jistone@redhat.com>
392
393 * Makefile.am (libdw.so): Add AM_V_CCLD and AM_V_at silencers.
394
Jose E. Marchesi133509f2015-10-05 17:36:30 +02003952015-09-24 Jose E. Marchesi <jose.marchesi@oracle.com>
396
397 * Makefile.am (AM_CFLAGS): Use -fPIC instead of -fpic to avoid
398 relocation overflows in some platforms.
399
Mark Wielaardd8698e52015-09-23 20:44:06 +02004002015-09-23 Mark Wielaard <mjw@redhat.com>
401
402 * dwarf_error.c (__libdw_seterrno): Mark as internal_function.
403 * dwarf_formref.c (__libdw_formref): Likewise.
404 * libdw_findcu.c (__libdw_findcu): Likewise.
405 * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
406
Mark Wielaard1ccdfb62015-09-22 22:27:01 +02004072015-09-22 Mark Wielaard <mjw@redhat.com>
408
409 * *.c: Remove old-style function definitions.
410
Mark Wielaarddd8bd912015-09-15 10:55:10 +02004112015-09-15 Mark Wielaard <mjw@redhat.com>
412
413 * dwarf_peel_type.c (dwarf_peel_type): Don't reassign result pointer.
414
Chih-Hung Hsieh2d982862015-09-09 12:32:07 -07004152015-09-09 Chih-Hung Hsieh <chh@google.com>
416
417 * dwarf_macro_getsrcfiles.c (dwarf_macro_getsrcfiles): Remove
418 redundant NULL tests on parameters declared with __nonnull_attribute__.
419 * dwarf_siblingof.c (dwarf_siblingof): Likewise.
420 * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise.
421
Chih-Hung Hsiehaa1c2ca2015-09-04 12:04:11 -07004222015-09-04 Chih-Hung Hsieh <chh@google.com>
Chih-Hung Hsiehf6b93912015-09-04 12:04:11 -0700423 Mark Wielaard <mjw@redhat.com>
424
425 * dwarf_getlocation.c (getlocations_addr): Replace K&R function
426 definition with ansi-C definition and add const qualifier to
427 locs argument.
428
4292015-09-04 Chih-Hung Hsieh <chh@google.com>
Chih-Hung Hsiehaa1c2ca2015-09-04 12:04:11 -0700430
431 * libdw_findcu.c (__libdw_intern_next_unit): Replace K&R function
432 definition with ansi-C definitions.
433 (__libdw_findcu): Likewise.
434
Mark Wielaarda74bdbd2015-08-25 15:11:01 +02004352015-08-25 Mark Wielaard <mjw@redhat.com>
436
437 * dwarf.h: Add DW_LANG_Haskell.
438
Mark Wielaard1dcbe0c2015-06-18 10:38:12 +02004392015-06-18 Mark Wielaard <mjw@redhat.com>
440
Mark Wielaard85cc9c62015-06-18 11:50:50 +0200441 * dwarf_begin_elf.c (dwarf_begin_elf): Assert page size is big enough
442 to hold a Dwarf.
443
4442015-06-18 Mark Wielaard <mjw@redhat.com>
445
Mark Wielaard65e58822015-06-18 10:41:42 +0200446 * dwarf_getpubnames.c (get_offsets): Always free mem on error.
447
4482015-06-18 Mark Wielaard <mjw@redhat.com>
449
Mark Wielaard1dcbe0c2015-06-18 10:38:12 +0200450 * dwarf_getmacros.c (get_macinfo_table): Return NULL when
451 dwarf_formudata reports an error.
452 (get_table_for_offset): Likewise.
453
Mark Wielaard9e3d5c22015-06-09 00:31:25 +02004542015-06-08 Mark Wielaard <mjw@redhat.com>
455
456 * dwarf_getsrclines.c (read_srclines): Initialize dirarray early.
457
Mark Wielaard20956b82015-06-03 17:42:38 +02004582015-06-06 Mark Wielaard <mjw@redhat.com>
459
460 * dwarf_getsrclines.c (read_srclines): Initialize filelist early.
461
Mark Wielaard1ae83ee2015-05-27 14:05:15 +02004622015-05-27 Mark Wielaard <mjw@redhat.com>
463
464 * encoded-value.h (read_encoded_value): Check data d_size contains
465 at least enough data to hold a pointer for DW_EH_PE_indirect.
466
Mark Wielaarde69f59c2015-05-22 23:33:56 +02004672015-05-22 Mark Wielaard <mjw@redhat.com>
468
469 * dwarf_getsrclines.c (read_srclines): Limit stack usage of lines
470 with MAX_STACK_LINES, files with MAX_STACK_LINES and dirs with
471 MAX_STACK_DIRS. Calculate number of dirs needed first, then
472 create dirarray directly, without needing the next field. Free
473 not stack allocated lines and files at the end.
474
Mark Wielaard720f83a2015-05-19 11:52:58 +02004752015-05-19 Mark Wielaard <mjw@redhat.com>
476
477 * dwarf_getlocation.c (__libdw_intern_expression): Create a stack
478 allocated array to hold locs. Allocate locs bigger than the array
479 with malloc and free them when done.
480
Jonathan Lebon90659072015-05-11 15:38:13 -04004812015-05-11 Jonathan Lebon <jlebon@redhat.com>
482
Jonathan Lebon987e3d72015-05-11 15:38:14 -0400483 * libdwP.h (DWARF_E_COMPRESSED_ERROR): New enumerator.
484 * dwarf_error.c (errmsgs): Add DWARF_E_COMPRESSED_ERROR message.
485 * dwarf_begin_elf.c (inflate_section): New static function, lifted
486 from...
487 (check_section): ... here. Call inflate_section, set libdw errno to
488 DWARF_E_COMPRESSED_ERROR if .debug_info section couldn't be inflated.
489
4902015-05-11 Jonathan Lebon <jlebon@redhat.com>
491
Jonathan Lebon90659072015-05-11 15:38:13 -0400492 * dwarf_begin_elf.c (check_section): Add compressed flag. Always
493 check for .zdebug sections. Only wrap decompression in #if USE_ZLIB.
494
Mark Wielaarddedb5e72015-05-06 12:55:21 +02004952015-05-06 Mark Wielaard <mjw@redhat.com>
496
497 * dwarf_getsrclines.c (read_srclines): Use an int64_t to store and
498 check the line number.
499
Mark Wielaardae029162015-05-05 10:16:42 +02005002015-05-05 Mark Wielaard <mjw@redhat.com>
501
502 * dwarf_getaranges.c (dwarf_getaranges): Check there is enough data
503 left before reading values.
504
Anthony G. Basile1ab3c2b2015-05-04 02:25:39 +03005052015-05-04 Anthony G. Basile <blueness@gentoo.org>
506
507 * Makefile.am (libdw_so_SOURCES): Append $(argp_LDADD) to link
508 command.
509
Mark Wielaard65a211f2015-04-22 12:28:30 +02005102015-04-22 Mark Wielaard <mjw@redhat.com>
511
512 * memory-access.h (__libdw_max_len_leb128): Take type_len as argument.
513 (__libdw_max_len_uleb128): New function.
514 (__libdw_max_len_sleb128): Likewise.
515 (__libdw_get_uleb128): Use __libdw_max_len_uleb128.
516 (__libdw_get_sleb128): Use __libdw_max_len_sleb128.
517
Mark Wielaardf98b99d2015-04-21 15:46:01 +02005182015-04-21 Mark Wielaard <mjw@redhat.com>
519
520 * dwarf_getmacros.c (read_macros): Allocate attributes dynamically
521 when there are more than 8.
522
Petr Machata71de1d22015-04-01 21:44:32 +02005232015-04-01 Petr Machata <pmachata@redhat.com>
524
525 * libdwP.h (DWARF_E_NOT_CUDIE): New enumerator.
526 (is_cudie): New function.
527 * dwarf_error.c (errmsgs): Add message for DWARF_E_NOT_CUDIE.
528 * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Call is_cudie instead
529 of white-listing valid tags.
530 * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
531
Petr Machata7f617342015-03-18 19:42:02 +01005322015-03-18 Petr Machata <pmachata@redhat.com>
533
534 * Makefile.am (pkginclude_HEADERS): Add known-dwarf.h.
535 (EXTRA_DIST): Remove known-dwarf.h.
536
Mark Wielaard7fb80312015-02-09 16:24:04 +01005372015-02-09 Mark Wielaard <mjw@redhat.com>
538
Mark Wielaardd3c816d2015-02-09 16:47:08 +0100539 * dwarf.h: Add DW_LANG_Fortran03 and DW_LANG_Fortran08.
540 * dwarf_aggregate_size.c (array_size): Recognize array lower bound
541 for new Fortran language codes is 1.
542
5432015-02-09 Mark Wielaard <mjw@redhat.com>
544
Mark Wielaard7fb80312015-02-09 16:24:04 +0100545 * dwarf.h: Add DW_TAG_atomic_type.
546 * libdw.h (dwarf_peel_type): Document DW_TAG_atomic_type.
547 * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_atomic_type.
548
Josh Stone031db7c2015-02-11 13:53:14 -08005492015-02-11 Josh Stone <jistone@redhat.com>
550
551 * encoded-value.h (read_encoded_value): Initialize value.
552
Petr Machatab4da85d2015-02-11 22:11:46 +01005532015-02-11 Petr Machata <pmachata@redhat.com>
554
555 * dwarf_ranges.c (dwarf_ranges): Do not bail out when neither
556 DW_AT_entry_pc nor DW_AT_low_pc are available. Instead remember
557 the fact in *BASEP and bail out later if it hasn't been updated by
558 __libdw_read_begin_end_pair_inc.
559
Mark Wielaardddbf23a2014-12-24 13:17:23 +01005602014-12-24 Mark Wielaard <mjw@redhat.com>
561
562 * dwarf_getsrc_die.c (dwarf_getsrc_die): Return the last line record
563 smaller than or equal to addr, rather than returning immediately on
564 a match.
565
Mark Wielaardb4b2de92015-01-07 23:39:28 +01005662015-01-07 Mark Wielaard <mjw@redhat.com>
567
568 * cfi.h (struct Dwarf_CFI_s): Add search_table_len.
569 * dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Check there is enough
570 room in the search table for all entries. Store search_table_len.
571 (getcfi_scn_eh_frame): Likewise.
572 * encoded-value.h (encoded_value_size): Don't abort, return zero.
573 (__libdw_cfi_read_address_inc): Check there is enough room to read
574 values. Pass other byte order to read functions.
575 (read_encoded_value): Check encoded_value_size. Don't abort, but
576 set libdw errno and report failure. Check there is enough room to
577 read values.
578 * fde.c (binary_search_fde): Check encoded value size. Add hdr
579 data buf and size to dummy_cfi.
580
Mark Wielaarda1ea2422015-01-04 16:08:22 +01005812015-01-04 Mark Wielaard <mjw@redhat.com>
582
Mark Wielaard43e924e2015-01-05 00:03:03 +0100583 * dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute
584 is after current DIE.
585
5862015-01-04 Mark Wielaard <mjw@redhat.com>
587
Mark Wielaarda1ea2422015-01-04 16:08:22 +0100588 * cfi.c (enough_registers): Check reg < INT32_MAX / sizeof
589 (dwarf_frame_register).
590
Mark Wielaard5316e412015-01-03 00:09:45 +01005912015-01-02 Mark Wielaard <mjw@redhat.com>
592
Mark Wielaard9ceebe62015-01-03 00:27:58 +0100593 * dwarf_getcfi_elf.c (parse_eh_frame_hdr): Add size check.
594 (getcfi_gnu_eh_frame): Remove size check. Check d_buf is not NULL.
595 (getcfi_scn_eh_frame): Check d_buf is not NULL.
596
5972015-01-02 Mark Wielaard <mjw@redhat.com>
598
Mark Wielaard5316e412015-01-03 00:09:45 +0100599 * dwarf_getlocation.c (__libdw_intern_expression): Check dbg is not
600 NULL for DW_OP_call_ref and DW_OP_GNU_implicit_pointer. For
601 DW_OP_addr if dbg is NULL then read argument directly.
602
Jason P. Leasure7c713822015-01-14 09:26:55 -05006032015-01-14 Jason P. Leasure <jpleasu@super.org>
604
605 * dwarf_formref_die.c (dwarf_formref_die): Offset is cu->type_offset
606 plus cu->start.
607
Mark Wielaard3fa17962014-12-27 12:13:50 +01006082014-12-27 Mark Wielaard <mjw@redhat.com>
609
610 * dwarf_siblingof.c (dwarf_siblingof): Check sibling attribute offset
611 still falls inside CU data.
612
Mark Wielaarddaf278f2015-01-11 15:00:52 +01006132015-01-11 Mark Wielaard <mjw@redhat.com>
614
615 * dwarf_func_inline.c (dwarf_func_inline_instances): Call
616 __libdw_visit_scopes with NULL imports.
617 * dwarf_getfuncs.c (dwarf_getfuncs): Likewise.
618 * dwarf_getscopes.c (pc_record): Likewise.
619 (dwarf_getscopes): Likewise.
620 * dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
621 * libdwP.h (__libdw_visit_scopes): Add imports argument.
622 * libdw_visit_scopes.c (__libdw_visit_scopes): Likewise. Add new
623 function imports_contains. Push and pop imports around walk_children
624 when processing DW_TAG_imported_unit.
625
Ulrich Drepper898ed262014-12-18 12:32:39 -05006262014-12-18 Ulrich Drepper <drepper@gmail.com>
627
628 * Makefile.am: Suppress output of textrel_check command.
629
Mark Wielaardff1ce972014-12-16 16:10:28 +01006302014-12-16 Mark Wielaard <mjw@redhat.com>
631
Mark Wielaardecd78d32014-12-16 22:47:39 +0100632 * dwarf_getsrclines.c (read_srclines): Check diridx is valid under
633 DW_LNE_define_file.
634
6352014-12-16 Mark Wielaard <mjw@redhat.com>
636
Mark Wielaard7f9ea702014-12-16 16:41:19 +0100637 * dwarf_getpubnames.c (dwarf_getpubnames): Make sure there is enough
638 space to read die offset.
639
6402014-12-16 Mark Wielaard <mjw@redhat.com>
641
Mark Wielaardff1ce972014-12-16 16:10:28 +0100642 * dwarf_getsrclines.c (read_srclines): Correct overflow check for
643 unit_length.
644
Mark Wielaard38648042014-12-15 14:56:07 +01006452014-12-15 Mark Wielaard <mjw@redhat.com>
646
647 * dwarf_getpubnames.c (get_offsets): Make sure whole unit fall inside
Mark Wielaard138a9ba2014-12-15 16:56:49 +0100648 section data. Set error to DWARF_E_NO_ENTRY if cnt is zero.
Mark Wielaard38648042014-12-15 14:56:07 +0100649 (dwarf_getpubnames): Make sure section data contains string zero
650 terminator.
651
Mark Wielaard1b5477d2014-12-16 10:53:22 +01006522014-12-16 Mark Wielaard <mjw@redhat.com>
653
654 * memory-access.h (__libdw_get_sleb128): Unroll the first step to help
655 the compiler optimize for the common single-byte case.
656
Josh Stone54662f12014-12-15 12:18:25 -08006572014-12-15 Josh Stone <jistone@redhat.com>
658
659 * memory-access.h (__libdw_max_len_leb128): New.
660 (__libdw_get_uleb128): Use __libdw_max_len_leb128.
661 (__libdw_get_sleb128): Likewise.
662
Mark Wielaard7a053472014-12-14 21:48:23 +01006632014-12-14 Mark Wielaard <mjw@redhat.com>
664
665 * cfi.c (execute_cfi): Add program bounds checks.
666 * dwarf_child.c (__libdw_find_attr): Add attrp bounds checks.
667 * dwarf_formblock.c (dwarf_formblock): Call get_uleb128 with endp.
668 * dwarf_formref.c (__libdw_formref): Add datap bounds checks.
669 * dwarf_formsdata.c (dwarf_formsdata): Likewise.
670 * dwarf_formudata.c (dwarf_formudata): Likewise.
671 * dwarf_frame_register.c (dwarf_frame_register): Call get_uleb128
672 with end of data buf.
673 * dwarf_getabbrev.c (__libdw_getabbrev): Add abbrevp bounds checks.
674 * dwarf_getabbrevattr.c (dwarf_getabbrevattr): Assume get_uleb128
675 call gets enough data.
676 * dwarf_getattrs,c (dwarf_getattrs): Call get_uleb128 with endp.
677 * dwarf_getlocation.c (store_implicit_value): Call get_uleb128
678 with enough data.
679 (__libdw_intern_expression): Call get_uleb128/get_sleb128 with
680 end_data.
681 * dwarf_getmacros.c (get_table_for_offset): Add nforms bounds check.
682 * dwarf_getsrclines.c (read_srclines): Bounds check linep and call
683 get_uleb128 with lineendp.
684 * dwarf_hasattr.c (dwarf_hasattr): Bounds check attrp and call
685 get_uleb128 with endp.
686 * dwarf_next_cfi.c (dwarf_next_cfi): Bounds check bytes and call
687 get_uleb128/get_sleb128 with limit.
688 * encoded-value.h (read_encoded_value): Assume get_uleb128 and
689 get_sleb128 get called with enough data.
690 * fde.c (intern_fde): Call get_uleb128 with instructions_end.
691 * libdwP.h (__libdw_dieabbrev): Call get_uleb128 with die->cu->endp.
692 * libdw_form.c (__libdw_form_val_compute_len): Call get_uleb128 with
693 endp.
694 * memory-access.h (__libdw_get_uleb128): Take an extra endp.
695 Don't call get_uleb128_step if out of data.
696 (__libdw_get_sleb128): Likewise for get_sleb128_step.
697
Mark Wielaard92026652014-12-12 16:43:04 +01006982014-12-12 Mark Wielaard <mjw@redhat.com>
699
700 * libdwP.h (struct Dwarf): Add fake_loc_cu.
701 (cu_data): Removed.
702 (DIE_OFFSET_FROM_CU_OFFSET): Don't use cu_data, use cu_sec_idx.
703 (__libdw_form_val_compute_len): Drop dbg and endp arguments.
704 (__libdw_form_val_len): Likewise.
705 * libdw_form.c (__libdw_form_val_compute_len): Likewise.
706 * libdw_findcu.c (__libdw_intern_next_unit): Don't use cu_data, use
707 the already found data buffer directly.
708 * dwarf_begin_elf.c (valid_p): Setup fake_loc_cu.
709 * dwarf_end.c (dwarf_end): Free fake_loc_cu.
710 * dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len with
711 just cu.
712 * dwarf_getattrs.c (dwarf_getattrs): Likewise.
713 * dwarf_formblock.c (dwarf_formblock): Add bounds checking.
714 * dwarf_getlocation_attr.c (attr_form_cu): New function.
715 (dwarf_getlocation_attr): Use attr_form_cu to set result->cu.
716 (getlocation): Handle empty blocks immediately.
717 * dwarf_getlocation_implicit_pointer.c (empty_cu): New static var.
718 (__libdw_empty_loc_attr): Drop cu argument, use empty_cu.
719 (dwarf_getlocation_implicit_pointer): Call __libdw_empty_loc_attr with
720 one argument.
721 * dwarf_getmacros.c (read_macros): Also setup startp and endp for
722 fake_cu. Call __libdw_form_val_len with just fake_cu.
723 * dwarf_formref_die.c (dwarf_formref_die): Don't use cu_data, get
724 datap and size directly from cu startp and endp.
725
Mark Wielaardf73385e2014-12-12 00:22:31 +01007262014-12-11 Mark Wielaard <mjw@redhat.com>
727
728 * libdw_findcu.c (__libdw_intern_next_unit): Sanity check offset.
729
Mark Wielaard4a330f62014-12-14 00:09:29 +01007302014-12-13 Mark Wielaard <mjw@redhat.com>
731
732 * dwarf_getaranges.c (compare_aranges): Make sure Dwarf_Addr
733 difference doesn't wrap around before returning as int.
734
Josh Stone6e1c0d92014-12-11 16:22:48 -08007352014-12-11 Josh Stone <jistone@redhat.com>
736
737 * dwarf_getsrclines.c (struct linelist): Add sequence.
738 (compare_lines): Take linelists, and break ties by sequence.
739 (read_srclines): Use linelists for sorting.
740 (read_srclines::add_new_line): Set sequence.
741
Josh Stoneb849f812014-12-10 18:28:04 -08007422014-12-10 Josh Stone <jistone@redhat.com>
743
Josh Stone8d200b52014-12-10 18:41:43 -0800744 * libdwP.h (Dwarf_CU): Add startp and endp boundaries.
745 * libdw_findcu.c (__libdw_intern_next_unit): Set startp and endp.
746 * dwarf_child.c (dwarf_child): Use cu->endp.
747 * dwarf_cuoffset.c (dwarf_cuoffset): Use cu->startp.
748 * dwarf_dieoffset.c (dwarf_dieoffset): Use cu->startp.
749 * dwarf_siblingof.c (dwarf_siblingof): Use both.
750
7512014-12-10 Josh Stone <jistone@redhat.com>
752
Josh Stone64e44df2014-12-10 18:33:34 -0800753 * dwarf_hasattr.c (dwarf_hasattr): Just walk abbrev for presence.
754
7552014-12-10 Josh Stone <jistone@redhat.com>
756
Josh Stoneb849f812014-12-10 18:28:04 -0800757 * libdwP.h (__libdw_dieabbrev): New die->abbrev lookup function.
758 * dwarf_child.c (__libdw_find_attr, dwarf_child): Use it.
759 * dwarf_getattrs.c (dwarf_getattrs): Likewise.
760 * dwarf_haschildren.c (dwarf_haschildren): Likewise.
761 * dwarf_tag.c (dwarf_tag): Likewise.
762
Mark Wielaardcb73b5a2014-12-04 21:43:44 +01007632014-12-04 Mark Wielaard <mjw@redhat.com>
764
765 * libdwP.h (__libdw_form_val_compute_len): Add endp argument.
766 (__libdw_form_val_len): Likewise and check len doesn't overflow.
767 * libdw_form.c (__libdw_form_val_compute_len): Likewise.
768 * dwarf_child.c (__libdw_find_attr): Call __libdw_form_val_len
769 with endp.
770 * dwarf_getattrs.c (dwarf_getattrs): Likewise.
771 * dwarf_getmacros.c (read_macros): Likewise and check for errors.
772
Petr Machataedb079a2014-12-02 21:22:14 +01007732014-12-02 Petr Machata <pmachata@redhat.com>
774
775 * dwarf_getmacros.c (token_from_offset, offset_from_token): New
776 helper functions.
777 (do_dwarf_getmacros_die): Merge into dwarf_getmacros.
778 * libdw.h (DWARF_GETMACROS_START): New macro.
779
Mark Wielaard12ab7002014-11-27 23:41:57 +01007802014-11-27 Mark Wielaard <mjw@redhat.com>
781
Mark Wielaard805ec832014-11-27 23:53:30 +0100782 * Makefile.am (libdw.so): Use textrel_check.
783
7842014-11-27 Mark Wielaard <mjw@redhat.com>
785
Mark Wielaard12ab7002014-11-27 23:41:57 +0100786 * dwarf_getcfi_elf.c (getcfi_gnu_eh_frame): Initialize
787 search_table_entries and search_table_encoding.
788
Mark Wielaard020fc022014-11-24 21:54:42 +01007892014-11-24 Mark Wielaard <mjw@redhat.com>
790
791 * dwarf_getsrclines.c (read_srclines): Check line_range is not zero
792 before usage.
793
Mark Wielaard04b61f82014-11-23 23:13:55 +01007942014-11-23 Mark Wielaard <mjw@redhat.com>
795
Mark Wielaard59480ba2014-11-23 23:21:05 +0100796 * dwarf_attr.c (dwarf_attr): Check __libdw_find_attr return value.
797 * dwarf_hasattr.c (dwarf_hasattr): Likewise.
798 * dwarf_siblingof.c (dwarf_siblingof): Likewise.
799
8002014-11-23 Mark Wielaard <mjw@redhat.com>
801
Mark Wielaard04b61f82014-11-23 23:13:55 +0100802 * dwarf_getabbrev.c (__libdw_getabbrev): Don't assert on bad DWARF.
803 Set libdw errno and return NULL.
804
Mark Wielaard9f8c08e2014-11-24 22:17:51 +01008052014-11-24 Mark Wielaard <mjw@redhat.com>
806
807 * dwarf.h (DW_LANG_C_plus_plus_11): Added.
808 (DW_LANG_C11): Likewise.
809 (DW_LANG_C_plus_plus_14): Likewise.
810 * dwarf_aggregate_size.c (array_size): Handle DW_LANG_C11,
811 DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 and DW_LANG_Go
812 lower bound.
813 * dwarf_getfuncs.c (dwarf_getfuncs): Set c_cu to true for
814 DW_LANG_C11.
815
Mark Wielaard03c033f2014-11-26 17:51:28 +01008162014-11-26 Mark Wielaard <mjw@redhat.com>
817
818 * dwarf.h (DW_AT_noreturn): Added.
819
Mark Wielaard09086232014-11-11 14:10:04 +01008202014-11-11 Mark Wielaard <mjw@redhat.com>
821
822 * dwarf_getsrclines.c (read_srclines): Do address_size comparison
823 explicitly as uint8_t.
824 (__libdw_getsrclines): Add internal_function to declaration.
825
Petr Machatafb90bf32014-10-17 02:47:03 +02008262014-09-10 Petr Machata <pmachata@redhat.com>
827
828 * dwarf_macro_getparamcnt.c: New file.
829 * dwarf_macro_param.c: New file.
830 * dwarf_macro_getsrcfiles.c: New file.
831 * Makefile.am (libdw_a_SOURCES): Add the new files.
832 * libdwP.h (struct files_lines_s): New structure.
833 (DWARF_E_INVALID_OPCODE): New enumerator.
834 (struct Dwarf): New fields macro_ops, files_lines.
835 (Dwarf_Macro_Op_Proto, Dwarf_Macro_Op_Table): New structures for
836 keeping macro opcode prototypes in.
837 (Dwarf_Macro_s): Redefine from scratch.
838 (__libdw_getsrclines, __libdw_getcompdir, libdw_macro_nforms): New
839 internal interfaces.
840 * dwarf_error.c (errmsgs): Add a message for
841 DWARF_E_INVALID_OPCODE.
842 * dwarf_end.c (dwarf_end): Destroy struct Dwarf.macro_ops and
843 files_lines.
844 * libdw.h (dwarf_getmacros_off, dwarf_macro_getparamcnt)
845 (dwarf_macro_getsrcfiles, dwarf_macro_param): New public
846 interfaces.
847 * dwarf_getmacros.c (dwarf_getmacros_off): New function,
848 (get_offset_from, macro_op_compare, build_table)
849 (init_macinfo_table, get_macinfo_table, get_table_for_offset)
850 (cache_op_table, read_macros, gnu_macros_getmacros_off)
851 (macro_info_getmacros_off, do_dwarf_getmacros_die): New helper
852 functions.
853 (dwarf_getmacros): Adjust to dispatch to the new interfaces.
854 * dwarf_getsrclines.c (read_srclines): New function with guts
855 taken from dwarf_getsrclines.
856 (__libdw_getsrclines): Likewise.
857 (__libdw_getcompdir, files_lines_compare): New functions.
858 (dwarf_getsrclines): Make it dispatch to the new interfaces.
859 * dwarf_macro_param1.c (dwarf_macro_param1): Adjust to dispatch to
860 the new interfaces.
861 * dwarf_macro_param2.c (dwarf_macro_param2): Likewise.
862 * libdw.map (ELFUTILS_0.161): New. Add dwarf_getmacros_off,
863 dwarf_macro_getsrcfiles, dwarf_macro_getparamcnt, dwarf_macro_param.
864
Mark Wielaard3a36e8a2014-10-06 22:00:16 +02008652014-10-06 Mark Wielaard <mjw@redhat.com>
866
867 * Makefile.am (libdw_a_SOURCES): Add dwarf_peel_type.c.
868 * dwarf_aggregate_size.c (get_type): Use dwarf_peel_type.
869 (aggregate_size): Likewise. Add old and new version.
870 * dwarf_peel_type.c: New file.
871 * libdw.h (dwarf_peel_type): New function declaration.
872 * libdwP.h (dwarf_peel_type): New internal declaration.
873 * libdw.map (ELFUTILS_0.161): New section.
874
Petr Machata564cfbe2014-10-15 19:28:08 +02008752014-10-15 Petr Machata <pmachata@redhat.com>
876
877 * libdwP.h (struct Dwarf_Files_s.cu): Drop field.
878 * dwarf_getsrclines.c (dwarf_getsrclines): Don't set it.
879
Mark Wielaard2e83c642014-10-05 17:12:41 +02008802014-10-05 Mark Wielaard <mjw@redhat.com>
881
882 * dwarf.h: Add DW_AT_GNU_deleted.
883
Mark Wielaardb50014f2014-10-02 14:00:47 +02008842014-10-02 Mark Wielaard <mjw@redhat.com>
885
886 * dwarf_aggregate_size.c (aggregate_size): Return CU address_size
887 for sizeless DW_TAG_pointer_type, DW_TAG_reference_type or
888 DW_TAG_rvalue_reference_type.
889
Petr Machata1498f542014-09-12 19:03:33 +02008902014-09-12 Petr Machata <pmachata@redhat.com>
891
892 * memory-access.h (read_ubyte_unaligned_inc): Allow only 4- and
893 8-byte quantities. Consequently, rename to...
894 (read_addr_unaligned_inc): ... this.
895 (read_sbyte_unaligned_inc, read_ubyte_unaligned): Drop.
896 (read_sbyte_unaligned): Drop.
897
Petr Machata476feb12014-09-10 22:26:28 +02008982014-09-10 Petr Machata <pmachata@redhat.com>
899
900 * dwarf_getlocation.c (attr_ok): Also accept
901 DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
902 DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered.
903
Mark Wielaard209f1492014-08-15 13:08:24 +02009042014-08-15 Mark Wielaard <mjw@redhat.com>
905
Mark Wielaardf18f2332014-08-15 16:03:21 +0200906 * dwarf_cu_die.c: New file.
907 * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_die.c.
908 * libdw.h (dwarf_cu_die): New function declaration.
909 * libdw.map (ELFUTILS_0.160): Add dwarf_cu_die.
910
9112014-08-15 Mark Wielaard <mjw@redhat.com>
912
Mark Wielaard209f1492014-08-15 13:08:24 +0200913 * dwarf_cu_getdwarf.c: New file.
914 * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_getdwarf.c.
915 * libdw.h (Dwarf_CU): New typedef.
916 (dwarf_cu_getdwarf): New function declaration.
917 * libdw.map (ELFUTILS_0.160): New. Add dwarf_cu_getdwarf.
918
Mark Wielaardaf1e6ed2014-06-18 10:57:58 +02009192014-06-18 Mark Wielaard <mjw@redhat.com>
920
921 * dwarf.h: Remove DW_TAG_mutable_type.
922
Mark Wielaardbb096d02014-05-03 00:23:06 +02009232014-05-02 Mark Wielaard <mjw@redhat.com>
924
925 * libdwP.h (__check_build_id): Removed now unused.
926
Mark Wielaarddf85bf92014-05-01 14:48:27 +02009272014-05-01 Mark Wielaard <mjw@redhat.com>
928
929 * libdwP.h (struct Dwarf): Remove free_alt.
930 * dwarf_end.c (dwarf_end): Don't check free_alt, don't end alt_dwarf.
931 * dwarf_setalt.c (dwarf_setalt): Don't check or set free_alt.
932
Mark Wielaardd81d32d2014-04-30 23:00:40 +02009332014-04-30 Mark Wielaard <mjw@redhat.com>
934
935 * libdw.map (ELFUTILS_0.159): Add dwelf_elf_gnu_build_id.
936
Florian Weimer920f03d2014-04-15 17:11:17 +02009372014-04-15 Florian Weimer <fweimer@redhat.com>
938
939 * dwarf_begin_elf.c (__check_build_id, try_debugaltlink)
940 (open_debugaltlink): Move to libdwfl.
941 (check_section): Do not locate alternate debuginfo.
942
Florian Weimer4813dbb2014-04-24 14:06:43 +02009432014-04-24 Florian Weimer <fweimer@redhat.com>
944
945 * libdw.map (ELFUTILS_0.159): Export dwelf_dwarf_gnu_debugaltlink.
946
Florian Weimer35e2a762014-04-15 14:31:55 +02009472014-04-22 Florian Weimer <fweimer@redhat.com>
948
949 * dwarf_getalt.c, dwarf_setalt.c: New files.
950 * Makefile.am (libdw_a_SOURCES): Add them.
951 * libdw.h (dwarf_getalt, dwarf_setalt): Add function declarations.
952 * libdwP.h (dwarf_getalt, dwarf_setalt): Add internal function
953 declarations.
954 * libdw.map (ELFUTILS_0.159): Export the two new functions.
955
Florian Weimerefa72a02014-04-15 14:04:19 +02009562014-04-15 Florian Weimer <fweimer@redhat.com>
957
958 * libdwP.h (enum IDX_gnu_debugaltlink): New.
959 * dwarf_begin_elf.c (dwarf_scnnames): Increase string size and add
960 .gnu_debugaltlink.
961 (check_section): Obtain .gnu_debugaltlink section from the
962 setiondata array.
963
Mark Wielaard93802972014-04-11 23:52:47 +02009642014-04-11 Mark Wielaard <mjw@redhat.com>
965
966 * libdw.map (ELFUTILS_0.159): New. Add dwelf_elf_gnu_debuglink.
967 * Makefile.am (libdw.so): Depend on libdwelf_pic.a.
968 (libdwelf_objects): New variable.
969 (libdw_a_LIBADD): Add libdwelf objects.
970
Mark Wielaardeb4da482014-04-22 16:43:11 +02009712014-04-22 Mark Wielaard <mjw@redhat.com>
972
973 * memory-access.h (get_sleb128_step): Remove undefined behavior
974 of left shifting a signed value. Replace it with a multiplication.
975
Mark Wielaard32324792014-04-13 17:39:57 +02009762014-04-13 Mark Wielaard <mjw@redhat.com>
977
978 * Makefile.am: Remove !MUDFLAP conditions.
979
Mark Wielaard7f1eec32014-04-09 11:33:23 +02009802014-04-09 Mark Wielaard <mjw@redhat.com>
981
982 * dwarf_begin_elf.c (check_section): Check for unsigned overflow
983 before calling malloc to uncompress data.
984
Jan Kratochvildff2a992014-03-04 00:04:27 +01009852014-03-03 Jan Kratochvil <jan.kratochvil@redhat.com>
986
987 Fix abort() on missing section headers.
988 * dwarf_begin_elf.c (check_section): Replace abort call by goto err.
989 New label err to return NULL.
990
Josh Stone50d5b2c2014-02-05 11:26:27 -08009912014-02-05 Josh Stone <jistone@redhat.com>
992
993 * dwarf_decl_file.c (dwarf_decl_file): Read the idx as unsigned.
994 * dwarf_decl_line.c (__libdw_attr_intval): Read the line/column as
995 unsigned. Change the range assert to DWARF_E_INVALID_DWARF.
996
Mark Wielaard19108012013-12-30 22:00:57 +01009972013-12-30 Mark Wielaard <mjw@redhat.com>
998
999 * libdw.map (ELFUTILS_0.158): Add dwfl_core_file_attach and
1000 dwfl_linux_proc_attach.
1001
Mark Wielaarde962ec32013-12-20 10:09:12 +010010022013-12-20 Mark Wielaard <mjw@redhat.com>
1003
1004 * libdw.map (ELFUTILS_0.158): Add dwfl_getthread_frames.
1005
Mark Wielaard159ac522013-12-18 11:05:54 +010010062013-12-18 Mark Wielaard <mjw@redhat.com>
1007
1008 * libdw.map (ELFUTILS_0.158): Remove dwfl_module_addrsym_elf and
1009 dwfl_module_getsym_elf. Add dwfl_module_addrinfo and
1010 dwfl_module_getsym_info.
1011
Mark Wielaard14c2d9e2013-12-16 13:28:59 +010010122013-12-16 Mark Wielaard <mjw@redhat.com>
1013
1014 * libdw.map (ELFUTILS_0.158): Add dwfl_module_getsymtab_first_global.
1015
Josh Stone4e2787c2013-12-10 14:19:09 -080010162013-12-10 Josh Stone <jistone@redhat.com>
1017
1018 * memory-access.h (get_uleb128_rest_return): Removed.
1019 (get_sleb128_rest_return): Removed.
1020 (get_uleb128_step): Make this a self-contained block.
1021 (get_sleb128_step): Ditto, and use a bitfield to extend signs.
1022 (get_uleb128): Make this wholly implemented by __libdw_get_uleb128.
1023 (get_sleb128): Make this wholly implemented by __libdw_get_sleb128.
1024 (__libdw_get_uleb128): Simplify and inline for all callers.
1025 (__libdw_get_sleb128): Ditto.
1026 * dwarf_getlocation.c (store_implicit_value): Void the unused uleb128.
1027 * memory-access.c: Delete file.
1028 * Makefile.am (libdw_a_SOURCES): Remove it.
1029 (DEFS): Remove the now unused -DIS_LIBDW.
1030
Josh Stonec0d2a0b2013-12-09 13:52:10 -080010312013-12-09 Josh Stone <jistone@redhat.com>
1032
1033 * libdw_form.c (__libdw_form_val_compute_len): Renamed function from
1034 __libdw_form_val_len, now handling only non-constant form lengths.
1035 * libdwP.h (__libdw_form_val_len): New inlined function.
1036
Mark Wielaard3951f2e2013-12-09 16:33:26 +010010372013-12-09 Mark Wielaard <mjw@redhat.com>
1038
1039 * dwarf_getlocation.c (__libdw_intern_expression): Handle empty
1040 location expressions.
1041 * dwarf_getlocation_attr.c (dwarf_getlocation_attr): When no
1042 location found, return empty location expression.
1043 * dwarf_getlocation_implicit_pointer.c
1044 (dwarf_getlocation_implicit_pointer): Likewise.
1045 (__libdw_empty_loc_attr): New internal function.
1046 * libdwP.h (__libdw_empty_loc_attr): Define.
1047
Mark Wielaard819c3492013-11-27 16:45:44 +010010482013-11-27 Mark Wielaard <mjw@redhat.com>
1049
1050 * libdw.map (ELFUTILS_0.158): Add dwfl_module_addrsym_elf and
1051 dwfl_module_getsym_elf.
1052
Mark Wielaard16bc4562013-11-26 15:13:22 +010010532013-11-26 Mark Wielaard <mjw@redhat.com>
1054
1055 * libdw.map (ELFUTILS_0.156): Move dwfl_attach_state, dwfl_pid,
1056 dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
1057 dwfl_thread_state_registers, dwfl_thread_state_register_pc,
1058 dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc to ...
1059 (ELFUTILS_0.158): ... here.
1060
Mark Wielaard03d76f42013-11-09 16:45:22 +010010612013-11-09 Mark Wielaard <mjw@redhat.com>
1062
1063 * dwarf_getaranges.c (dwarf_getaranges): Read segment_size and
1064 check that it is zero.
1065
Jan Kratochvil0b867462013-05-30 14:37:38 +020010662013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com>
1067
1068 * cfi.h (struct Dwarf_Frame_s): Make the comment more specific.
1069 * libdw.map (ELFUTILS_0.156): Add dwfl_attach_state, dwfl_pid,
1070 dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread,
1071 dwfl_thread_state_registers, dwfl_thread_state_register_pc,
1072 dwfl_getthreads, dwfl_thread_getframes and dwfl_frame_pc.
1073
Michael Forneya45c8042013-11-01 00:51:04 -070010742013-11-01 Michael Forney <mforney@mforney.org>
1075
Michael Forneycdc09432013-11-01 00:51:05 -07001076 * Makefile.am (libdwfl_objects): New definition.
1077 (libdw_a_LIBADD): Use libdwfl_objects.
1078
10792013-11-01 Michael Forney <mforney@mforney.org>
1080
Michael Forneya45c8042013-11-01 00:51:04 -07001081 * Makefile.am: Use READELF.
1082
Jan Kratochvil3cf491e2013-10-30 10:48:20 +010010832013-10-30 Jan Kratochvil <jan.kratochvil@redhat.com>
1084
1085 * libdw.map (ELFUTILS_0.158): New.
1086
Mark Wielaarde6a9bb82013-10-10 11:40:12 +020010872013-10-10 Mark Wielaard <mjw@redhat.com>
1088
1089 * dwarf_getfuncs.c (struct visitor_info): Rename start_offset to
1090 start_addr and rename last_offset to last_addr. Now both void *.
1091 (tree_visitor): Use start_add and die_addr instead of start_offset
1092 and die_offset.
1093 (dwarf_getfuncs): Use last_addr instead of last_offset.
1094
Mark Wielaard3dec3e12013-10-06 17:04:07 +020010952013-10-06 Mark Wielaard <mjw@redhat.com>
1096
1097 * cfi.c (execute_cfi): Make sure DW_CFA_expression and
1098 DW_CFA_val_expression are not used with abi_cfi.
1099
Josh Stone5dbbc5e2013-10-03 12:38:25 -070011002013-10-03 Josh Stone <jistone@redhat.com>
1101
1102 * dwarf_formref_die.c (dwarf_formref_die): Don't hash the sig8 here.
1103 * libdw_findcu.c (__libdw_intern_next_unit): Since this never revisits
1104 a unit, make sure to always hash the sig8 here, so none are missed.
1105
Mark Wielaard74f9b732013-09-30 00:39:07 +020011062013-09-29 Mark Wielaard <mjw@redhat.com>
1107
1108 * dwarf_getlocation.c (store_implicit_value): Cast op->number2 to
1109 uintptr_t before casting to char *.
1110 (__libdw_intern_expression): Cast data to uintptr_t before casting
1111 to Dwarf_Word.
1112 * dwarf_getlocation_attr.c (dwarf_getlocation_attr): Cast
1113 op->number2 to uintptr_t before casting to char *.
1114
Josh Stonef06c8582013-09-24 15:52:05 -070011152013-09-24 Josh Stone <jistone@redhat.com>
1116
1117 * libdw_visit_scopes.c (classify_die): Removed.
1118 (may_have_scopes): New function to replace classify_die. There's no
1119 need for full classification; just find tags that may contain scopes.
1120 (__libdw_visit_scopes): Use a direct tag comparison for imported
1121 units, and use may_have_scopes to test if recursion is needed.
1122
Mark Wielaard1b734df2013-09-20 09:50:42 -040011232013-09-20 Mark Wielaard <mjw@redhat.com>
1124
1125 * dwarf_getfuncs.c (visitor_info): New struct.
1126 (tree_visitor): New function.
1127 (dwarf_getfuncs): Use __libdw_visit_scopes with tree_visitor.
1128 * libdw.h (dwarf_getfuncs): Expand function documentation.
1129
Mark Wielaard18b2c672013-09-12 15:49:47 +020011302013-09-12 Mark Wielaard <mjw@redhat.com>
1131
1132 * fde.c (intern_fde): Free fde and set libdw errno when start
1133 or end could not be read.
1134
Mark Wielaardb2535b62013-08-30 23:55:12 +020011352013-08-24 Mark Wielaard <mjw@redhat.com>
1136
1137 * dwarf_getlocation.c (store_implicit_value): Don't take data
1138 as argument, get block data from op number2. Return false when
1139 block data length and op number don't match up.
1140 (__libdw_intern_expression): Store start of block for
1141 DW_OP_implicit_value and DW_OP_GNU_entry_value instead of
1142 relative data offset. Also store block start (including length)
1143 for DW_OP_GNU_const_type. Don't pass data to store_implicit_value.
1144 * dwarf_getlocation_attr.c: New file.
1145 * dwarf_getlocation_die.c: Likewise.
1146 * libdw.h (dwarf_getlocation_die): New function definition.
1147 (dwarf_getlocation_attr): Likewise.
1148 * libdwP.h: Declare internal dwarf_getlocation_die.
1149 * libdw.map (ELFUTILS_0.157): Add dwarf_getlocation_die and
1150 dwarf_getlocation_attr.
1151 * Makefile.am (libdw_a_SOURCES): Add dwarf_getlocation_die.c and
1152 dwarf_getlocation_attr.c.
1153
Mark Wielaard66eaae92013-08-23 16:12:37 +020011542013-08-23 Mark Wielaard <mjw@redhat.com>
1155
1156 * dwarf_getlocation.c (attr_ok): Also accept DW_AT_segment.
1157 (attr_base_address): New function.
1158 (initial_offset_base): New function.
1159 (getlocations_addr): New function. Taken from...
1160 (dwarf_getlocation_addr): here. Use new initial_offset_base and
1161 getlocations_addr.
1162 (dwarf_getlocations): New function.
1163 * libdw.h (dwarf_getlocations): New function definition.
1164 * libdw.map (ELFUTILS_0.157): New.
1165
Mark Wielaard5704c8c2013-07-02 11:22:35 +020011662013-07-02 Mark Wielaard <mjw@redhat.com>
1167
Mark Wielaard4aacfc12013-07-02 16:36:16 +02001168 * dwarf_getsrclines.c (dwarf_getsrclines): Add new stack allocation
1169 limit MAX_STACK_ALLOC. After MAX_STACK_ALLOC lines use malloc in
1170 NEW_LINE macro. Free malloced line records if any at the end.
1171
11722013-07-02 Mark Wielaard <mjw@redhat.com>
1173
Mark Wielaard5704c8c2013-07-02 11:22:35 +02001174 * dwarf_getcfi_elf.c (getcfi_shdr): Check sh_type == SHT_PROGBITS.
1175
Mark Wielaard79277072013-06-26 11:42:52 -040011762013-06-26 Mark Wielaard <mjw@redhat.com>
1177
1178 * libdw_visit_scopes.c (__libdw_visit_scopes): Don't reject root
1179 DIEs without children. Return an error whenever dwarf_child or
1180 dwarf_siblingof return an error. Don't call recurse and increase
1181 the depth for an imported unit. Walk the children of an imported
1182 unit as if they are logical children of the parent root DIE.
1183
Mark Wielaard9affad32013-05-03 11:28:49 +020011842013-05-03 Mark Wielaard <mjw@redhat.com>
1185
1186 * dwarf_getsrclines.c (dwarf_getsrclines): Only set end_sequence
1187 when nlinelist > 0.
1188
Jan Kratochvil904aec22013-04-30 14:27:16 +020011892013-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
1190
1191 * libdw.map (ELFUTILS_0.156): New.
1192
Mark Wielaardcdaaf212013-04-25 16:50:11 -040011932013-04-24 Mark Wielaard <mjw@redhat.com>
1194
1195 * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES.
1196
Mark Wielaardd4744a72013-04-10 15:52:57 +020011972013-04-10 Mark Wielaard <mjw@redhat.com>
1198
1199 * dwarf_formref_die.c (dwarf_formref_die): Reference size is only
1200 equal to address size when we have a DW_FORM_ref_addr for DWARF
1201 version 2.
1202
Mark Wielaard60ef9ab2013-03-25 17:07:21 +010012032013-03-25 Mark Wielaard <mjw@redhat.com>
1204
1205 * dwarf_getsrclines.c (dwarf_getsrclines): Mark highest address as
1206 end_sequence.
1207
Mark Wielaardf1b06b52013-03-12 12:02:51 +010012082013-03-12 Mark Wielaard <mjw@redhat.com>
1209
1210 * dwarf_getsrcfiles.c (dwarf_getsrcfiles): Allow DW_TAG_partial_unit.
1211 * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
1212
Mark Wielaard443304e2013-02-15 22:45:22 +010012132013-02-15 Mark Wielaard <mjw@redhat.com>
1214
1215 * dwarf_formstring.c (dwarf_formstring): Check dbg_ret->sectiondata,
1216 not dbg->sectiondata.
1217
Roland McGrath3999ce12013-01-07 14:53:37 -080012182013-01-07 Roland McGrath <roland@hack.frob.com>
1219
1220 * memory-access.h
1221 [ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New macro.
1222 [!ALLOW_UNALIGNED] (read_8ubyte_unaligned_noncvt): New inline function.
1223
Mark Wielaard59254422012-12-18 14:14:22 +010012242012-12-18 Mark Wielaard <mjw@redhat.com>
1225
1226 * dwarf_begin_elf.c (valid_p): Call Dwarf_Sig8_Hash_free if invalid.
1227 (check_section): Likewise on error.
1228 (scngrp_read): Likewise.
1229 (dwarf_begin_elf): Likewise.
1230
Petr Machatab5c0b032012-10-09 02:11:29 +020012312012-10-09 Petr Machata <pmachata@redhat.com>
1232
1233 * dwarf_getlocation.c (__libdw_intern_expression): Handle
1234 DW_OP_GNU_parameter_ref, DW_OP_GNU_convert, DW_OP_GNU_reinterpret,
1235 DW_OP_GNU_regval_type, DW_OP_GNU_entry_value,
1236 DW_OP_GNU_deref_type, DW_OP_GNU_const_type.
1237
Jan Kratochvil6c45f4a2012-10-08 23:04:54 +020012382012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
1239
Jan Kratochvil1d67c0c2012-10-08 23:51:31 +02001240 * cfi.c: New include system.h.
1241 (execute_cfi) (enough_registers): Clear new memory after realloc.
1242
12432012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
1244
Jan Kratochvil07f35072012-10-08 23:34:35 +02001245 * fde.c (__libdw_find_fde): Change <fde != NULL> to likely. Return
1246 DWARF_E_NO_MATCH if .eh_frame_hdr points to FDE which is too short for
1247 searched PC.
1248
12492012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
1250
Jan Kratochvil96a9fc62012-10-08 23:08:01 +02001251 * dwarf_getlocation.c (__libdw_intern_expression) <cfap>: Make new
1252 loclist element DW_OP_call_frame_cfa before decoding the opcodes.
1253 Remove the later DW_OP_call_frame_cfa push to RESULT.
1254
12552012-10-08 Jan Kratochvil <jan.kratochvil@redhat.com>
1256
Jan Kratochvil6c45f4a2012-10-08 23:04:54 +02001257 Code cleanup.
1258 * fde.c (binary_search_fde): Remove always true <address >= start>
1259 conditional. Move L initialization upwards.
1260
Mark Wielaardf5519fc2012-08-24 13:54:52 +020012612012-08-24 Mark Wielaard <mjw@redhat.com>
1262
1263 * dwarf_begin_elf.c (check_section): Only probe for dwz multi files
1264 when ENABLE_DWZ is defined.
1265 * libdwP.h (__check_build_id): Only declare when ENABLE_DWZ is
1266 defined.
1267
Mark Wielaardf31c4412012-08-17 00:35:03 +020012682012-08-16 Mark Wielaard <mjw@redhat.com>
1269
1270 * Makefile.am (EXTRA_DIST): Add known-dwarf.h.
1271 * dwarf.h (DW_LANG_Go): Update comment.
1272 (DW_LANG_Mips_Assembler): Likewise.
1273
Mark Wielaard775375e2012-06-22 12:02:45 +020012742012-06-27 Mark Wielaard <mjw@redhat.com>
1275
1276 * dwarf.h: Add DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt.
1277 * dwarf_begin.c (dwarf_begin): Add INTDEF.
1278 * dwarf_begin_elf.c (__check_build_id): New internal_function.
1279 (try_debugaltlink): New function.
1280 (open_debugaltlink): Likewise.
1281 (check_section): Try open_debugaltlink for .gnu_debugaltlink.
1282 * dwarf_end.c (dwarf_end): Free the alternative Dwarf descriptor if
1283 necessary.
1284 * dwarf_error.c (errmsgs): Add DWARF_E_NO_ALT_DEBUGLINK.
1285 * dwarf_formref.c (__libdw_formref): Using DW_FORM_GNU_ref_alt
1286 is an error here.
1287 * dwarf_formref_die.c (dwarf_formref_die): Handle DW_FORM_GNU_ref_alt.
1288 * dwarf_formstring.c (dwarf_formstring): Handle DW_FORM_GNU_strp_alt.
1289 * dwarf_formudata.c (__libdw_formptr): Adjust __libdw_read_offset
1290 calls.
1291 * dwarf_getpubnames.c (get_offsets): Adjust __libdw_read_offset call.
1292 * libdwP.h: Add DWARF_E_NO_ALT_DEBUGLINK.
1293 (struct Dwarf): Add alt_dwarf and free_alt fields.
1294 (__libdw_read_offset): Add dbg_ret argument, use to check with
1295 __libdw_offset_in_section.
1296 (__check_build_id): New function declaration.
1297 (dwarf_begin): Define as INTDECL.
1298 * libdw_form.c (__libdw_form_val_len): Handle DW_FORM_GNU_ref_alt
1299 and DW_FORM_GNU_strp_alt.
1300
Mark Wielaard515fba92012-07-20 00:09:56 +020013012012-07-19 Mark Wielaard <mjw@redhat.com>
1302
1303 * dwarf.h: Add DW_OP_GNU_parameter_ref.
1304
Mark Wielaarddf9ec3f2012-07-24 20:00:14 +020013052012-07-24 Mark Wielaard <mjw@redhat.com>
1306
Mark Wielaardc4010b82012-07-24 13:20:41 +02001307 * dwarf.h: Correct spelling of DW_LANG_ObjC.
1308 * dwarf_aggregate_size.c (array_size): Use correct spelling of
1309 DW_LANG_ObjC.
1310
13112012-07-24 Mark Wielaard <mjw@redhat.com>
1312
Mark Wielaarddf9ec3f2012-07-24 20:00:14 +02001313 * dwarf.h: Add DW_ATE_UTF.
1314
Mark Wielaardef5688e2012-06-27 10:15:27 +020013152012-06-27 Mark Wielaard <mjw@redhat.com>
1316
1317 * dwarf.h: Add DW_MACRO_GNU .debug_macro type encodings.
1318
Mark Wielaarda0172d72012-06-25 17:18:53 +020013192012-06-26 Mark Wielaard <mjw@redhat.com>
1320
1321 * libdwP.h: Add IDX_debug_macro.
1322 * dwarf.h: Add DW_AT_GNU_macros.
1323 * dwarf_begin_elf.c (dwarf_scnnames): Add .debug_macro.
1324 * dwarf_formudata.c (dwarf_formudata): Recognize DW_AT_GNU_macros.
1325
Mark Wielaard54797252012-04-27 13:00:50 +020013262012-04-27 Mark Wielaard <mjw@redhat.com>
1327
1328 * libdw/dwarf_highpc.c (dwarf_highpc): Handle DW_AT_high_pc being
1329 a constant offset from DW_AT_low_pc.
1330
Tom Tromey581c3f62012-03-21 08:54:32 -060013312012-03-19 Tom Tromey <tromey@redhat.com>
1332
1333 * libdw_findcu.c (findcu_cb): Move earlier.
1334 (__libdw_intern_next_unit): Add new CU to search tree here...
1335 (__libdw_findcu): ... not here.
1336
Mark Wielaardcb643d62012-01-31 19:22:03 +010013372012-01-31 Mark Wielaard <mjw@redhat.com>
1338
1339 * dwarf_formudata.c (dwarf_formudata): Handle DW_FORM_sec_offset.
1340
Mark Wielaard387998b2011-10-31 15:01:50 +010013412011-11-31 Mark Wielaard <mjw@redhat.com>
1342
1343 * Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
1344
Mark Wielaard0b72b652011-07-14 12:59:26 +020013452011-07-14 Mark Wielaard <mjw@redhat.com>
1346
1347 * libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
1348
Jakub Jelinek03124242011-05-17 17:00:14 +020013492011-05-16 Jakub Jelinek <jakub@redhat.com>
1350
1351 * dwarf.h (DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
1352 DW_OP_GNU_deref_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret):
1353 New.
1354
Mark Wielaardf4c39c72011-04-26 17:15:28 +020013552011-04-26 Mark Wielaard <mjw@redhat.com>
1356
1357 * dwarf_child (dwarf_child): Sanity check end of section against
1358 cu_data () of die->cu.
1359
Mark Wielaarde3368c52011-03-22 23:03:31 +010013602011-03-22 Mark Wielaard <mjw@redhat.com>
1361
1362 * dwarf.h: Add DW_TAG_GNU_call_site,
1363 DW_TAG_GNU_call_site_parameter,
1364 DW_AT_GNU_call_site_value,
1365 DW_AT_GNU_call_site_data_value,
1366 DW_AT_GNU_call_site_target,
1367 DW_AT_GNU_call_site_target_clobbered,
1368 DW_AT_GNU_tail_call,
1369 DW_AT_GNU_all_tail_call_sites,
1370 DW_AT_GNU_all_call_sites,
1371 DW_AT_GNU_all_source_call_sites,
1372 and DW_OP_GNU_entry_value.
1373
Petr Machata02c56192011-03-10 01:50:32 +010013742011-03-10 Petr Machata <pmachata@redhat.com>
1375
1376 * libdw/dwarf_tag.c (__libdw_findabbrev): Reject requests for
1377 abbreviation with code 0.
1378
Petr Machata35870872011-03-09 10:01:29 -080013792011-03-09 Petr Machata <pmachata@redhat.com>
1380
1381 * libdw/dwarf_child.c (dwarf_child): Check for section overrun.
1382
Roland McGrath725aad52011-02-23 19:52:46 -080013832011-02-23 Roland McGrath <roland@redhat.com>
1384
1385 * libdwP.h (struct Dwarf) [USE_ZLIB]: New member sectiondata_gzip_mask.
1386 Declare __libdw_free_zdata.
1387 * dwarf_end.c [USE_ZLIB] (__libdw_free_zdata): New function.
1388 (dwarf_end): Call it.
1389
1390 * dwarf_begin_elf.c (valid_p): Likewise.
1391 (check_section, scngrp_read): Likewise.
1392 (check_section) [USE_ZLIB]: Grok .z* flavors of sections.
1393
Roland McGrath8c0a3822010-10-13 11:21:17 -070013942010-10-13 Roland McGrath <roland@redhat.com>
1395
1396 * dwarf.h: Add DW_LANG_Go.
1397
Roland McGrath5f95e2b2010-10-05 00:56:30 -070013982010-10-05 Roland McGrath <roland@redhat.com>
1399
1400 * dwarf_getaranges.c: Use malloc rather than alloca,
1401 since the total number of elements can be quite huge.
1402
Roland McGrath932585d2010-05-08 04:01:14 -070014032010-07-26 Roland McGrath <roland@redhat.com>
1404
1405 * dwarf_getlocation_implicit_pointer.c: New file.
1406 * Makefile.am (libdw_a_SOURCES): Add it.
1407 * libdw.map (ELFUTILS_0.149): New set.
1408 Add dwarf_getlocation_implicit_pointer.
1409 * libdw.h: Declare it.
1410
1411 * dwarf_offdie.c (do_offdie): Renamed to __libdw_offdie, made global.
1412 (dwarf_offdie, dwarf_offdie_types): Update callers.
1413 * libdwP.h: Declare it.
1414
1415 * dwarf.h: Add DW_OP_GNU_implicit_pointer.
1416 * dwarf_getlocation.c (__libdw_intern_expression): Handle it.
1417
Roland McGrathde44f132010-08-24 15:38:42 -070014182010-08-24 Roland McGrath <roland@redhat.com>
1419
1420 * libdw.map (ELFUTILS_0.149): New set. Add dwfl_dwarf_line.
1421
Roland McGrath00aca7f2010-07-27 04:40:23 -070014222010-07-27 Roland McGrath <roland@redhat.com>
1423
1424 * dwarf_formref_die.c: Fix sig8 hash insertion.
1425
Roland McGrath9616b852010-06-23 03:17:28 -070014262010-06-23 Roland McGrath <roland@redhat.com>
1427
1428 * cfi.c (dwarf_cfi_validate_fde): Function removed.
1429 * libdw.h: Remove it.
1430 * libdw.map: Likewise.
1431
Roland McGrath499b8ff2010-06-22 13:13:53 -070014322010-06-22 Roland McGrath <roland@redhat.com>
1433
Roland McGrathc16966a2010-06-22 17:08:43 -07001434 * dwarf_getlocation.c (check_constant_offset): data[48] are constant.
1435
Roland McGrath499b8ff2010-06-22 13:13:53 -07001436 * dwarf_getsrclines.c: Fix signed comparison warning in extended
1437 opcode parsing.
1438
Roland McGrath0c5638c2010-06-21 23:00:35 -070014392010-06-21 Roland McGrath <roland@redhat.com>
1440
Roland McGrath474cb482010-06-22 00:10:54 -07001441 * dwarf.h: Add DW_TAG_GNU_* constants.
1442
Roland McGrath0c5638c2010-06-21 23:00:35 -07001443 * memory-access.h (get_sleb128_rest_return): Fix sign extension for
1444 10-byte case.
1445
Roland McGrath5cc030d2010-06-20 17:25:35 -070014462010-06-20 Roland McGrath <roland@redhat.com>
1447
Roland McGrath2b1f0952010-06-20 17:55:50 -07001448 * libdw_findcu.c (__libdw_findcu): Take new flag argument,
1449 to search TUs instead of CUs.
1450 * libdwP.h: Update decl.
1451 (struct Dwarf): New member tu_tree.
1452 * dwarf_end.c (dwarf_end): Clean up tu_tree.
1453 * dwarf_offdie.c (do_offdie): New function, broken out of ...
1454 (dwarf_offdie): ... here.
1455 (dwarf_offdie_types): New function.
1456 * libdw.h: Declare it.
1457 * libdw.map (ELFUTILS_0.148): Add it.
1458
Roland McGrath5cc030d2010-06-20 17:25:35 -07001459 * libdwP.h (CUDIE): Use cu_data.
1460 * dwarf_formblock.c: Likewise.
1461 * dwarf_formref_die.c: Likewise.
1462 * dwarf_diecu.c: Use CUDIE macro.
1463 * dwarf_formaddr.c: Use cu_sec_idx.
1464
Roland McGrathc70ebc02010-06-16 02:21:26 -070014652010-06-16 Roland McGrath <roland@redhat.com>
1466
Roland McGrath3e0f7d12010-06-15 23:10:35 -07001467 * dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
1468 we don't repeat a CU lookup we've already done. Handle
1469 DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.
1470
1471 * libdw_findcu.c (__libdw_intern_next_unit): New function,
1472 broken out of ...
1473 (__libdw_findcu): ... here. Call it.
1474 * libdwP.h: Declare it.
1475 (struct Dwarf): New member next_tu_offset.
1476
1477 * dwarf_sig8_hash.c: New file.
1478 * dwarf_sig8_hash.h: New file.
1479 * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
1480 * dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
1481 defining NO_UNDEF.
1482 * libdwP.h (struct Dwarf): New member sig8_hash.
1483 * dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
1484 * dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.
1485
1486 * dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
1487 (dwarf_nextcu): ... here. Call it.
1488 * libdw.h: Declare it.
1489 * libdwP.h: Add INTDECL.
1490 * libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
1491 * libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.
1492
1493 * libdwP.h (cu_sec_idx, cu_data): New functions.
1494 Use .debug_types when CU is a TU.
1495 * dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
1496 * dwarf_siblingof.c: Likewise.
1497 * dwarf_formstring.c: Likewise.
1498 * dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
1499 * dwarf_getlocation.c (dwarf_getlocation): Likewise.
1500 (dwarf_getlocation_addr): Likewise.
1501
1502 * libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
1503 (DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
1504 .debug_types header size instead of .debug_info header size.
1505 (CUDIE): Use it.
1506 * dwarf_diecu.c: Update caller.
1507 * dwarf_getaranges.c: Likewise.
1508 * dwarf_nextcu.c: Likewise.
1509 * libdw_findcu.c (__libdw_findcu): Initialize new members.
1510
Roland McGrath3e4b5bb2010-06-16 03:40:56 -07001511 * fde.c (fde_by_offset): Renamed to ...
1512 (__libdw_fde_by_offset): ... this, made global and internal_function.
1513 Don't take ADDRESS argument.
1514 (__libdw_find_fde): Update caller. Do address sanity check here.
1515 * cfi.h: Declare __libdw_fde_by_offset.
1516 * cfi.c (dwarf_cfi_validate_fde): New function.
1517 * libdw.h: Declare it.
1518 * libdw.map (ELFUTILS_0.148): Add it.
1519
Roland McGrath5f4b5082010-06-16 03:11:57 -07001520 * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
1521 either DW_EH_PE_udata8 or DW_EH_PE_udata4.
1522
Roland McGrath7934ded2010-06-16 03:04:09 -07001523 * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
1524 Don't assume DW_EH_PE_aligned refers to native address size.
1525
Roland McGrathc70ebc02010-06-16 02:21:26 -07001526 * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
1527 address.
1528
Roland McGrathc70cf4e2010-06-18 17:01:05 -070015292010-06-17 Roland McGrath <roland@redhat.com>
1530
1531 * libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
1532 op_index.
1533 * dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
1534 into an inner inline function. Set new fields. Check all fields for
1535 overflow when setting.
1536 * dwarf_lineisa.c: New file.
1537 * dwarf_linediscriminator.c: New file.
1538 * dwarf_lineop_index.c: New file.
1539 * Makefile.am (libdw_a_SOURCES): Add them.
1540 * libdw.map (ELFUTILS_0.148): Add them.
1541 * libdw.h: Declare them.
1542
Roland McGrath3f633072010-06-15 22:17:04 -070015432010-06-16 Roland McGrath <roland@redhat.com>
1544
Roland McGrath4a87dfa2010-06-16 16:35:10 -07001545 * dwarf_next_cfi.c: Fix version 4 return_address_register decoding.
1546
Roland McGrathb75f4442010-06-15 22:24:19 -07001547 * fde.c (fde_by_offset): Renamed to ...
1548 (__libdw_fde_by_offset): ... this, made global and internal_function.
1549 Don't take ADDRESS argument.
1550 (__libdw_find_fde): Update caller. Do address sanity check here.
1551 * cfi.h: Declare __libdw_fde_by_offset.
Roland McGrath9bcd2652010-06-15 22:17:20 -07001552 * cfi.c (dwarf_cfi_validate_fde): New function.
1553 * libdw.h: Declare it.
Roland McGrath3f633072010-06-15 22:17:04 -07001554 * libdw.map (ELFUTILS_0.148): Add it.
1555
Roland McGrath0b3363e2010-06-01 15:42:14 -07001556 * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
1557 either DW_EH_PE_udata8 or DW_EH_PE_udata4.
Roland McGrath827d4d12010-06-01 20:17:36 -07001558
1559 * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
1560 Don't assume DW_EH_PE_aligned refers to native address size.
Roland McGrath1a030b32010-06-01 20:11:40 -07001561
1562 * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
Roland McGrath675229b2010-06-01 20:10:19 -07001563 address.
1564
15652010-06-15 Roland McGrath <roland@redhat.com>
Roland McGrath52123962010-06-01 19:05:08 -07001566
1567 * dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like
Roland McGrath7fac1ce2010-06-01 15:56:58 -07001568 DW_FORM_ref_addr.
1569 * dwarf_formref_die.c (dwarf_formref_die): Diagnose it the same way
Roland McGrath0b3363e2010-06-01 15:42:14 -07001570 here, since we don't support it yet.
1571
Mark Wielaard3f507bd2010-05-31 15:06:31 +02001572 * dwarf_next_cfi.c: Handle version 4 format.
1573
Mark Wielaard08e71db2010-05-31 15:39:15 +02001574 * dwarf_getsrclines.c: Handle version 4 format.
1575
15762010-06-01 Roland McGrath <roland@redhat.com>
1577
1578 * libdwP.h: Remove unused IDX_debug_*names, add IDX_debug_types.
Mark Wielaard3f507bd2010-05-31 15:06:31 +02001579 * dwarf_begin_elf.c (dwarf_scnnames): Likewise.
1580
Eduardo Santiagod2240bc2010-05-28 14:26:52 -07001581 * libdwP.h (CIE_VERSION): Remove unused macro.
Ulrich Drepper6fb34512010-05-28 20:28:04 -07001582
Ulrich Drepper49fe7142010-05-28 20:32:37 -07001583 * dwarf_getsrclines.c: Fix version field test.
1584 * libdwP.h (DWARF_VERSION): Remove useless macro.
Ulrich Drepper6fb34512010-05-28 20:28:04 -07001585
Roland McGrathcfa5da22010-05-27 13:49:25 -07001586 * dwarf_formudata.c (__libdw_formptr): Fix DW_FORM_sec_offset handling.
1587
1588 * dwarf_formblock.c (dwarf_formblock): Handle DW_FORM_exprloc.
1589
1590 * libdw_findcu.c (__libdw_findcu): Accept version 4.
Roland McGrath688f7fc2010-05-08 03:22:59 -07001591
15922010-05-31 Mark Wielaard <mjw@redhat.com>
1593
1594 * cfi.h (dwarf_cfi_cie_p): Move definition from here, to ..
1595 * libdw.h (dwarf_cfi_cie_p): ... here.
1596
15972010-05-31 Mark Wielaard <mjw@redhat.com>
1598
1599 * dwarf.h: Fix DW_LANG_Python constant.
Roland McGrath0ab97832010-04-26 11:50:27 -07001600
16012010-05-28 Eduardo Santiago <santiago@redhat.com>
Roland McGrath3b10ac02010-04-26 18:45:36 -07001602
1603 * dwarf_getlocation.c (dwarf_getlocation): Do attr_ok check first
1604 thing.
1605
16062010-05-27 Roland McGrath <roland@redhat.com>
Roland McGrath0ab97832010-04-26 11:50:27 -07001607
1608 * dwarf.h: Add DW_AT_enum_class, DW_AT_linkage_name,
1609 DW_TAG_template_alias, DW_LANG_Python, DW_LNE_set_discriminator.
1610
16112010-05-08 Roland McGrath <roland@redhat.com>
1612
1613 * dwarf_getlocation.c (__libdw_intern_expression): Take new argument
Roland McGrath3f9d9552010-04-22 20:51:07 -07001614 REF_SIZE. Use that to handle DW_OP_call_ref correctly.
1615 (getlocation): Update caller.
1616 * dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
1617 * dwarf_frame_register.c (dwarf_frame_register): Likewise.
1618 * libdwP.h: Update decl.
1619
16202010-04-26 Roland McGrath <roland@redhat.com>
Roland McGrath8068e062010-03-10 23:49:13 -08001621
1622 * cfi.h (struct Dwarf_Frame_s): Add cfa_invalid alternative in cfa_rule.
1623 * cfi.c (execute_cfi): Set that instead of doing cfi_assert for
1624 DW_CFA_def_cfa_{offset*,register} when a non-offset rule is in force.
Roland McGrath22359e22010-02-15 15:57:03 -08001625 * dwarf_frame_cfa.c (dwarf_frame_cfa): Handle cfa_invalid.
1626
1627 * dwarf_getlocation.c (__libdw_intern_expression): Take new arg CFAP.
1628 Prepend DW_OP_call_frame_cfa if true.
Mark Wielaardee29a312010-02-02 20:44:53 +01001629 (getlocation): Update caller.
1630 * dwarf_frame_cfa.c (dwarf_frame_cfa): Likewise.
1631 * dwarf_frame_register.c (dwarf_frame_register): Likewise.
1632 * libdwP.h: Update decl.
Roland McGrathf95760a2010-01-07 20:24:34 -08001633
16342010-04-22 Roland McGrath <roland@redhat.com>
1635
1636 * cfi.c (execute_cfi): Never return without cleanup.
Roland McGrath019d9fb2010-01-05 13:36:07 -08001637 Free FS on failure.
1638 (cie_cache_initial_state): Adjust caller to expect that free.
Roland McGrathebc5c882010-01-05 22:53:31 -08001639 (__libdw_frame_at_address): Likewise.
1640
16412010-03-10 Roland McGrath <roland@redhat.com>
1642
1643 * libdw.map (ELFUTILS_0.146): New set. Add dwfl_core_file_report.
1644
16452010-02-15 Roland McGrath <roland@redhat.com>
1646
1647 * Makefile.am: Use config/eu.am for common stuff.
Roland McGrath0cb19832010-01-05 13:38:15 -08001648
16492010-02-02 Mark Wielaard <mjw@redhat.com>
Roland McGrath019d9fb2010-01-05 13:36:07 -08001650
1651 * fde.c (intern_fde): Fix length check for sized_augmentation_data.
Roland McGrath888381b2009-11-21 17:03:34 -08001652
16532010-01-07 Roland McGrath <roland@redhat.com>
1654
1655 * dwarf_getcfi_elf.c (getcfi_phdr): Use elf_getphdrnum.
1656
Roland McGrath9ca7bc42009-10-15 12:26:49 -070016572010-01-05 Roland McGrath <roland@redhat.com>
1658
1659 * dwarf_aggregate_size.c: New file.
1660 * Makefile.am (libdw_a_SOURCES): Add it.
1661 * libdw.h: Declare it.
Roland McGrath7e0aecd2009-09-17 15:02:34 -07001662 * libdwP.h: Add INTDECL.
1663 * libdw.map (ELFUTILS_0.144): New set. Add dwarf_aggregate_size.
1664
1665 * dwarf_srclang.c: Add INTDEF.
1666 * libdwP.h: Add INTDECL.
1667
Roland McGrathf0371042009-09-10 12:39:09 -07001668 * dwarf.h: Add some more DW_AT_GNU_* types from gcc.
1669
1670 * dwarf.h: Add DW_AT_GNU_vector, DW_AT_GNU_template_name.
1671
16722009-11-21 Roland McGrath <roland@redhat.com>
1673
1674 * dwarf_getlocation.c (check_constant_offset): Return 1 for all
1675 non-constant forms.
Mark Wielaard418ae4c2009-09-09 20:59:26 +02001676
16772009-10-15 Roland McGrath <roland@redhat.com>
1678
1679 * libdw_form.c (__libdw_form_val_len): Grok DW_FORM_sec_offset,
Josh Stonecc93cc42009-08-21 18:04:44 -07001680 DW_FORM_exprloc, DW_FORM_flag_present, and DW_FORM_ref_sig8.
1681
16822009-09-17 Roland McGrath <roland@redhat.com>
1683
Roland McGrath08277ba2009-08-10 15:08:08 -07001684 * dwarf_getlocation.c (dwarf_getlocation_implicit_value): Make OP
1685 argument a pointer to const.
1686 * libdw.h: Update decl.
1687
Roland McGrathebfb6482009-08-09 15:40:52 -070016882009-09-10 Roland McGrath <roland@redhat.com>
1689
1690 * dwarf_getlocation.c (store_implicit_value): New function.
1691 (__libdw_intern_expression): Use it, handle DW_OP_implicit_value.
1692 (dwarf_getlocation_implicit_value): New function.
1693 * libdw.h: Declare it.
1694 * libdw.map (ELFUTILS_0.143): Add it.
1695
16962009-09-09 Mark Wielaard <mjw@redhat.com>
1697
1698 * dwarf_getcfi.c (dwarf_getcfi): Clear cfi->ebl.
1699
17002009-08-21 Josh Stone <jistone@redhat.com>
1701
Roland McGrathde69d522009-08-07 18:26:19 -07001702 * dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
1703
17042009-08-10 Roland McGrath <roland@redhat.com>
1705
1706 * dwarf_getscopevar.c: Use dwarf_diename.
1707
17082009-08-09 Roland McGrath <roland@redhat.com>
1709
1710 * libdw.map (ELFUTILS_0.143): New version set,
1711 inherits from ELFUTILS_0.142.
Roland McGrathaf800142009-07-22 13:55:50 -07001712 * dwarf_arrayorder.c: Use OLD_VERSION and NEW_VERSION to define an
1713 alias in the ELFUTILS_0.122 version set and the default in the new set.
1714 * dwarf_srclang.c: Likewise.
1715 * dwarf_decl_file.c: Likewise.
1716 * dwarf_decl_line.c: Likewise.
1717 * dwarf_decl_column.c: Likewise.
1718 * dwarf_bytesize.c: Likewise.
1719 * dwarf_bitsize.c: Likewise.
1720 * dwarf_bitoffset.c: Likewise.
1721
17222009-08-07 Roland McGrath <roland@redhat.com>
1723
1724 * dwarf_arrayorder.c: Use dwarf_attr_integrate.
1725 * dwarf_srclang.c: Likewise.
1726 * dwarf_decl_file.c: Likewise.
1727 * dwarf_decl_line.c (__libdw_attr_intval): Likewise.
Roland McGrathe23e9e72009-07-21 18:14:52 -07001728 * dwarf_bytesize.c: Likewise.
1729 * dwarf_bitsize.c: Likewise.
1730 * dwarf_bitoffset.c: Likewise.
1731
17322009-07-22 Roland McGrath <roland@redhat.com>
1733
1734 * dwarf_frame_cfa.c: Change calling convention.
1735 * libdw.h: Update decl.
Roland McGrath96349ff2009-07-20 11:51:41 -07001736
1737 * dwarf_frame_register.c: Change calling/return-value convention for
1738 value-only results and undefined/same_value.
1739 * libdw.h: Update decl.
1740
Roland McGratha6abdfd2009-07-16 17:40:19 -07001741 * dwarf_getlocation.c (__libdw_intern_expression): Take new bool
1742 argument, append DW_OP_stack_value if set. Don't take NOPS argument,
Roland McGrathe160cc92009-07-16 17:48:27 -07001743 return that value instead.
1744 (getlocation): Update caller.
1745 * dwarf_frame_cfa.c: Likewise.
1746 * libdwP.h: Update decl.
1747
Roland McGratha6abdfd2009-07-16 17:40:19 -070017482009-07-21 Roland McGrath <roland@redhat.com>
1749
1750 * dwarf_getsrc_file.c: Ignore a CU that just has no DW_AT_stmt_list.
1751 Fix loop iteration after skipping a bogus or useless CU.
1752
1753 * dwarf_entry_breakpoints.c: Handle 0 dwarf_errno () as harmless
1754 absence, not DWARF_E_NO_DEBUG_LINE.
Roland McGrath7dd94642009-07-15 11:14:23 -07001755
17562009-07-20 Roland McGrath <roland@redhat.com>
1757
1758 * dwarf_getlocation.c (__libdw_intern_expression):
1759 Handle DW_OP_stack_value.
Roland McGrath80893432009-07-13 12:08:55 -07001760
17612009-07-16 Roland McGrath <roland@redhat.com>
1762
1763 * dwarf_formudata.c (__libdw_formptr): Handle DW_FORM_sec_offset,
Roland McGrathcfdd86e2009-07-08 13:15:07 -07001764 reject others when CU's version > 3.
1765
Roland McGrath3c84db32009-06-24 17:41:40 -07001766 * dwarf_formflag.c: Handle DW_FORM_flag_present.
1767
1768 * dwarf.h: Add DW_OP_{implicit,stack}_value from DWARF 4 draft.
1769 Also DW_TAG_type_unit and DW_TAG_rvalue_reference_type.
1770 Also DW_AT_signature, DW_AT_main_subprogram, DW_AT_data_bit_offset,
1771 and DW_AT_const_expr.
1772 Also DW_FORM_sec_offset, DW_FORM_exprloc, DW_FORM_flag_present,
1773 and DW_FORM_ref_sig8.
1774
17752009-07-15 Roland McGrath <roland@redhat.com>
1776
1777 * dwarf_getlocation.c: Grok DW_OP_form_tls_address,
1778 DW_OP_GNU_push_tls_address, and DW_OP_bit_piece.
1779
17802009-07-13 Roland McGrath <roland@redhat.com>
1781
1782 * dwarf_getlocation.c: Grok DW_OP_call_frame_cfa.
1783
17842009-07-08 Roland McGrath <roland@redhat.com>
1785
1786 * libdw.map (ELFUTILS_0.142): Add dwfl_module_dwarf_cfi,
1787 dwfl_module_eh_cfi.
1788
1789 * libdwP.h (struct Dwarf): Add member `cfi'.
1790 * dwarf_end.c (dwarf_end): Call __libdw_destroy_frame_cache on it.
1791 * dwarf_getcfi.c: New file.
1792 * dwarf_getcfi_elf.c: New file.
1793 * dwarf_cfi_end.c: New file.
1794 * dwarf_cfi_addrframe.c: New file.
1795 * dwarf_frame_cfa.c: New file.
1796 * dwarf_frame_register.c: New file.
1797 * dwarf_frame_return_address_register.c: New file.
1798 * Makefile.am (libdw_a_SOURCES): Add them.
1799 * unwind.h: Declare those functions.
1800 * libdw.map (ELFUTILS_0.142): Export them.
1801
1802 * dwarf_getlocation.c (__libdw_intern_expression): New function,
1803 broken out of ...
1804 (getlocation): ... here, call it.
1805 * libdwP.h: Declare it.
1806
1807 * cie.c: New file.
1808 * fde.c: New file.
1809 * frame-cache.c: New file.
1810 * cfi.c: New file.
1811 * cfi.h: New file.
1812 * encoded-value.h: New file.
1813 * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
1814 * libdwP.h: Add DWARF_E_INVALID_CFI to errors enum.
1815 * dwarf_error.c (errmsgs): Add element for it.
1816
1817 * dwarf_next_cfi.c: New file.
1818 * Makefile.am (libdw_a_SOURCES): Add it.
Roland McGrath6e1f4652009-07-08 14:48:34 -07001819 * libdw.h (Dwarf_CIE, Dwarf_FDE, Dwarf_CIE_Entry): New types.
1820 Declare dwarf_next_cfi.
Roland McGrathcfdd86e2009-07-08 13:15:07 -07001821 * libdw.map (ELFUTILS_0.142): New set, inherits from ELFUTILS_0.136.
1822 Add dwarf_next_cfi.
1823
1824 * memory-access.h [! ALLOW_UNALIGNED]
Roland McGrath05c4e042009-06-18 13:56:02 -07001825 (read_2ubyte_unaligned): Renamed to ...
1826 (read_2ubyte_unaligned_1): ... this. Take bool rather than Dwarf *.
1827 (read_2ubyte_unaligned): Define as macro passing dbg->other_byte_order.
1828 (read_2sbyte_unaligned): Likewise.
1829 (read_4ubyte_unaligned): Likewise.
1830 (read_4sbyte_unaligned): Likewise.
1831 (read_8ubyte_unaligned): Likewise.
1832 (read_8sbyte_unaligned): Likewise.
1833
Ulrich Drepper99d23722009-06-14 20:19:45 -07001834 * libdwP.h (IDX_eh_frame): Remove it.
1835 * dwarf_begin_elf.c (dwarf_scnnames): Remove its element.
1836
18372009-07-08 Roland McGrath <roland@redhat.com>
1838
1839 * libdwP.h (struct Dwarf_Line_s): Reorder members to pack better.
1840
1841 * dwarf_getlocation.c (check_constant_offset): New function.
1842 (dwarf_getlocation, dwarf_getlocation_addr): Call it to
1843 handle DW_AT_data_member_location of data[48] as constant offset.
1844
18452009-06-18 Roland McGrath <roland@redhat.com>
1846
1847 * libdwP.h (__libdw_read_address_inc): Constify.
1848 (__libdw_read_offset_inc): Likewise.
1849 * dwarf_getaranges.c: Likewise.
1850 * dwarf_getlocation.c: Likewise.
1851 * dwarf_getsrclines.c: Likewise.
1852 * dwarf_nextcu.c: Likewise.
1853
18542009-05-05 Petr Machata <pmachata@redhat.com>
1855
1856 * libdwP.h (__libdw_formptr): Declare new function.
1857 * dwarf_formudata.c: Implement it here.
1858 * dwarf_getlocation.c (dwarf_getlocation_addr):
1859 Call it instead of hand-rolled offset handling code.
1860 * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
1861 * dwarf_ranges.c (dwarf_ranges): Likewise.
1862
18632009-05-04 Petr Machata <pmachata@redhat.com>
1864
1865 * libdwP.h (__libdw_read_begin_end_pair_inc): Declare new function.
1866 * dwarf_ranges.c: Implement it here.
1867 (dwarf_ranges): Call it.
Roland McGrathe2eabd82009-05-07 18:54:52 -07001868 * dwarf_getlocation.c (dwarf_getlocation_addr): Call it also here.
1869
18702009-04-23 Petr Machata <pmachata@redhat.com>
1871
1872 * dwarf_formaddr.c (dwarf_formaddr): Call __libdw_read_* instead
1873 of read_*ubyte_unaligned.
Petr Machataf3df61f2009-05-07 21:02:33 +02001874 * dwarf_formref_die.c (dwarf_formref_die): Likewise.
1875 * dwarf_formstring.c (dwarf_formstring): Likewise.
1876 * dwarf_formudate.c (dwarf_formudata): Likewise.
1877 * dwarf_getaranges.c (dwarf_getaranges): Likewise.
1878 * dwarf_getlocation.c (dwarf_getlocation_addr): Likewise.
Roland McGrath2fb90512009-04-15 14:47:13 -07001879 * dwarf_getpubnames.c (get_offsets): Likewise.
1880 * dwarf_nextcu.c (dwarf_nextcu): Likewise.
1881
18822009-04-23 Petr Machata <pmachata@redhat.com>
1883
Roland McGrath6a4bdd92009-04-01 14:25:29 -07001884 * libdwP.h (__libdw_read_addr_inc, __libdw_read_off_inc,
1885 __libdw_read_addr, __libdw_read_off): Add four new internal
1886 functions.
1887
Roland McGrathc5acb302009-01-28 18:28:52 -080018882009-05-07 Roland McGrath <roland@redhat.com>
1889
Roland McGrath03288f02009-01-28 22:00:54 -08001890 * dwarf_getmacros.c (dwarf_getmacros): Use absolute section offset in
1891 return value and OFFSET argument, not CU-relative. Only fetch the
1892 attribute data when called with OFFSET of 0.
Roland McGrathc5acb302009-01-28 18:28:52 -08001893
18942009-05-07 Petr Machata <pmachata@redhat.com>
Roland McGrathf46272a2009-01-26 18:36:16 -08001895
1896 * dwarf_getmacros.c (dwarf_getmacros): Take into account offset in
1897 DW_AT_macro_info attribute of CU DIE.
1898
Roland McGrathd31505f2009-01-25 19:37:33 -080018992009-04-15 Roland McGrath <roland@redhat.com>
1900
1901 * dwarf.h (DW_CIE_ID): Removed.
1902 (DW_CIE_ID_32, DW_CIE_ID_64): New constants replace it.
Roland McGrath3bf7a092009-01-23 16:34:07 -08001903
19042009-04-01 Roland McGrath <roland@redhat.com>
1905
1906 * dwarf.h: Add DW_CFA_GNU_negative_offset_extended.
1907
Roland McGrathafdd51e2009-01-22 02:26:24 -080019082009-01-28 Roland McGrath <roland@redhat.com>
1909
1910 * libdwP.h (struct Dwarf_Line_s): Move out of struct Dwarf_Lines_s
1911 defn so C++ doesn't scope the name to not match the Dwarf_Line typedef.
Roland McGrath1ea4fdc2009-01-21 19:14:37 -08001912
1913 * libdwP.h (struct Dwarf_Files_s): Replace dbg field with cu field.
1914
19152009-01-26 Roland McGrath <roland@redhat.com>
1916
1917 * dwarf_ranges.c: Return 0 when no ranges or *_pc attrs at all.
Roland McGrath24b03302009-01-17 14:34:13 -08001918
19192009-01-25 Roland McGrath <roland@redhat.com>
Roland McGrath54456d82009-01-17 14:39:35 -08001920
1921 * dwarf_getattrs.c: Correctly skip attribute values when restarting.
1922
Roland McGrath5513e642009-01-11 01:35:11 -080019232009-01-23 Roland McGrath <roland@redhat.com>
1924
1925 * Makefile.am ($(srcdir)/known-dwarf.h): Target renamed back.
1926 Put these rules under if MAINTAINER_MODE.
1927
19282009-01-22 Roland McGrath <roland@redhat.com>
1929
Roland McGrath24b03302009-01-17 14:34:13 -08001930 * dwarf.h: Add DW_OP_GNU_encoded_addr.
1931
Ulrich Drepper7e678fa2009-01-10 18:02:05 -080019322009-01-21 Roland McGrath <roland@redhat.com>
1933
1934 * Makefile.am (CLEANFILES): Renamed to ...
1935 (MOSTLYCLEANFILES): ... here.
Roland McGrathe06762c2009-01-08 13:39:08 -08001936 (CLEANFILES): New variable, add known-dwarf.h.
1937
19382009-01-17 Roland McGrath <roland@redhat.com>
1939
Roland McGrath7e827f22009-01-06 02:09:50 -08001940 * Makefile.am (known-dwarf.h): Target renamed, not in $(srcdir).
Roland McGrath1f6d2012008-12-31 00:21:04 -08001941 Make it unconditional.
1942 (BUILT_SOURCES): Updated.
1943
1944 * dwarf.h: Add description comments for DW_LANG_* values.
Roland McGrathbca43152009-01-05 23:59:32 -08001945
1946 * Makefile.am [MAINTAINER_MODE]
1947 ($(srcdir)/known-dwarf.h): New target.
Ulrich Drepperac194d02009-01-06 00:30:01 -08001948 (BUILT_SOURCES): Add it.
1949
Roland McGrathc462c632009-01-06 01:04:31 -08001950 * dwarf.h: Add DW_OP_GNU_push_tls_address, DW_OP_GNU_uninit.
Ulrich Drepperac194d02009-01-06 00:30:01 -08001951
19522009-01-10 Ulrich Drepper <drepper@redhat.com>
1953
1954 * dwarf_error.c: Always use __thread. Remove all !USE_TLS code.
Roland McGrathb4d6f0f2008-08-25 22:55:17 +00001955
19562009-01-08 Roland McGrath <roland@redhat.com>
1957
1958 * Makefile.am (libdw.so): Don't depend on $(zip_LIBS), just link it in.
1959
Ulrich Drepper8d358d92008-01-22 06:34:31 +000019602008-01-06 Roland McGrath <roland@redhat.com>
1961
1962 * libdwP.h (struct Dwarf_Abbrev): Change type of 'has_children' to bool.
1963 Reorder members.
1964 * dwarf_haschildren.c: Return -1 for error case, not 0.
1965
1966 * Makefile.am (libdw.so): Link in $(zip_LIBS).
1967
Ulrich Drepperb27ce002008-01-18 20:08:54 +000019682009-01-06 Ulrich Drepper <drepper@redhat.com>
1969
1970 * dwarf.h: Add definition for unwind and call frame information.
1971
1972 * memory-access.h: Define read_ubyte_unaligned, read_sbyte_unaligned,
Ulrich Drepper35f08c42008-01-18 19:59:08 +00001973 read_ubyte_unaligned_inc, and read_sbyte_unaligned_inc.
1974
19752008-08-15 Roland McGrath <roland@redhat.com>
1976
1977 * libdw.map (ELFUTILS_0.136): New version set, inherits from
1978 ELFUTILS_0.130. Add dwfl_addrsegment, dwfl_report_segment.
1979
19802008-01-21 Ulrich Drepper <drepper@redhat.com>
1981
1982 * dwarf_child.c: Minor optimizations.
1983 * dwarf_getattrs.c: Likewise.
1984 * dwarf_getpubnames.c: Likewise.
1985 * dwarf_siblingof.c: Likewise.
Ulrich Dreppera969d8e2008-01-22 06:15:00 +00001986 * dwarf_tag.c: Likewise.
Ulrich Drepper35f08c42008-01-18 19:59:08 +00001987
19882008-01-18 Ulrich Drepper <drepper@redhat.com>
1989
1990 * dwarf_getsrclines.c (dwarf_getsrclines): Don't require exact match
1991 of DWARF_VERSION comparison, just fail if the file's version is newer.
1992
19932008-01-17 Nick Clifton <nickc@redhat.com>
1994
1995 * dwarf.h (DWARF3_LENGTH_MIN_ESCAPE_CODE): New define.
1996 (DWARF3_LENGTH_MAX_ESCAPE_CODE): New define.
1997 (DWARF3_LENGTH_64_BIT): New define.
1998 * dwarf_getaranges (dwarf_getaranges): Use the new definitions.
1999 * dwarf_getpubnames: Include dwarf.h.
2000 (get_offsets): Use the new definitions.
2001 * dwarf_getsrclines.c (dwarf_getsrclines): Use the new defintions.
2002 * dwarf_nextcu.c: Include dwarf.h. Correct comment.
2003 (dwarf_nextcu): Use the new definitions.
2004
2005 * libdwP.h (DIE_OFFSET_FROM_CU_OFFSET): New macro.
2006 * dwarf_diecu.c (dwarf_diecu): Use the new macro.
2007 * dwarf_getaranges (dwarf_getaranges): Use the new macro.
2008 * dwarf_nextcu.c (dwarf_nextcu): Use the new macro.
2009
2010 * dwarf_getpubnames (get_offsets): Replace assertion with test and
2011 error return.
2012
2013 * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Use CUDIE.
2014
2015 * dwarf_siblingof (dwarf_siblingof): Detect a NULL return pointer.
2016 Set the address in the return structure to the address of the next
2017 non-sibling die, if there is no sibling and the return pointer is
2018 not the same as the die pointer.
Ulrich Dreppere219f1c2008-01-09 05:49:49 +00002019 * libdw.h: Expand the description of the dwarf_siblingof prototype.
2020
2021 * dwarf_child.c: Fix typo in comment.
2022
2023 * libdwP.h (DWARF_VERSION): Change to 3.
2024
Roland McGrathe4c22ea2007-10-23 13:07:39 +00002025 * dwarf_formref.c (__libdw_formref.c): Handle attributes which do
2026 not have a initialised valp pointer.
2027
2028 * dwarf_getattrs.c (dwarf_getattrs): Return 1 rather than 0 when
2029 the end of the attributes is reached. When the callback fails,
2030 return the address of the failing attribute, not the address of
2031 its successor.
2032 * libdw.h: Expand the description of the dwarf_getattrs prototype.
2033
2034 * dwarf_child.c (__libdw_find_attr): Use the new definition.
2035 (dwarf_child): Likewise.
2036 * dwarf_tag.c (__libdw_findabbrev): Likewise.
2037 (dwarf_tag): Likewise.
2038
20392008-01-08 Roland McGrath <roland@redhat.com>
2040
2041 * Makefile.am (euinclude): Variable removed.
2042 (pkginclude_HEADERS): Set this instead of euinclude_HEADERS.
2043 (libdw.so): Pass -Wl,--enable-new-dtags,-rpath,$(pkglibdir).
Ulrich Drepperb597dfa2007-10-16 05:21:27 +00002044
20452007-10-17 Roland McGrath <roland@redhat.com>
2046
2047 * libdw.h (__deprecated_attribute__): New macro.
2048 (dwarf_formref): Mark it deprecated.
2049 * dwarf_formref.c (__libdw_formref): New function, broken out of ...
2050 (dwarf_formref): ... here. Call it. Remove INTDEF.
Roland McGrath59ea7f32007-10-04 08:50:09 +00002051 * libdwP.h: Remove INTDECL.
2052 Declare __libdw_formref.
2053 * dwarf_siblingof.c (dwarf_siblingof): Call __libdw_formref instead.
2054 * dwarf_formref_die.c: Likewise. Handle DW_FORM_ref_addr here.
2055
2056 * libdw_form.c (__libdw_form_val_len): Fix DW_FORM_ref_addr result,
2057 needs to check CU->version.
2058
Roland McGrath057ec6b2007-10-02 20:55:05 +00002059 * libdwP.h (struct Dwarf_CU): New member `version'.
2060 * libdw_findcu.c (__libdw_findcu): Initialize it.
2061
2062 * dwarf_child.c: Return 1 for null entry as first child.
2063
Roland McGrathd1a48172007-08-07 19:51:01 +000020642007-10-05 Roland McGrath <roland@redhat.com>
2065
2066 * dwarf_begin_elf.c (check_section): Punt on SHT_NOBITS sections.
2067
2068 * libdw.h (__extern_inline): Rename to __libdw_extern_inline.
2069 [__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Update uses.
2070
20712007-10-03 Roland McGrath <roland@redhat.com>
2072
2073 * libdw.map (ELFUTILS_0.130: Add dwfl_build_id_find_elf
2074 and dwfl_build_id_find_debuginfo.
Roland McGrath87d47802007-07-16 22:23:37 +00002075
2076 * libdw.map (ELFUTILS_0.130): New version set, inherits from
2077 ELFUTILS_0.127. Add dwfl_module_build_id, dwfl_module_report_build_id.
2078
20792007-10-02 Roland McGrath <roland@redhat.com>
Roland McGrath43da9892007-04-16 23:13:37 +00002080
2081 * libdw_visit_scopes.c (classify_die): Return walk for class_type and
2082 structure_type.
2083
Roland McGrathbf2ee482007-04-05 09:27:36 +000020842007-08-07 Roland McGrath <roland@redhat.com>
2085
Roland McGrath43da9892007-04-16 23:13:37 +00002086 * dwarf_getscopes.c (pc_match): Swallow dwarf_haspc error return when
2087 error code is DWARF_E_NOERROR (0).
2088
2089 * dwarf_getscopes.c (pc_record): Always bail early if DIE->prune.
2090 Fix typo in __libdw_visit_scopes argument.
2091
2092 * dwarf_getscopes.c (pc_match): Check dwarf_haspc error return,
2093 swallow DWARF_E_NO_DEBUG_RANGES but not other errors.
2094
20952007-07-03 Roland McGrath <roland@redhat.com>
Roland McGrathbf2ee482007-04-05 09:27:36 +00002096
2097 * libdw.h (__extern_inline): New macro.
2098 [__OPTIMIZE__] (dwarf_whatattr, dwarf_whatform): Use it.
2099
Ulrich Drepperc07fbb32007-03-30 19:14:59 +000021002007-04-16 Roland McGrath <roland@redhat.com>
2101
2102 * libdw.map (ELFUTILS_0.127): Add dwfl_module_address_section.
2103
21042007-04-05 Roland McGrath <roland@redhat.com>
2105
2106 * dwarf_getsrcdirs.c: New file.
2107 * Makefile.am (libdw_a_SOURCES): Add it.
Ulrich Drepper6258e742007-03-13 06:22:40 +00002108 * libdw.h: Declare dwarf_getsrcdirs.
2109 * libdw.map (ELFUTILS_0.127): Add it.
2110
2111 * libdwP.h (struct Dwarf_Files_s): New member ndirs.
2112 * dwarf_getsrclines.c (dwarf_getsrclines): Don't clobber NDIRLIST to
2113 zero before we use it to check for DWARF_E_INVALID_DIR_IDX.
2114 Save DIRARRAY in the Dwarf_Files.
2115
2116 * dwarf_ranges.c (dwarf_ranges): Don't sign-extend 32-bit BEGIN
Ulrich Drepper903c1162007-02-15 19:40:37 +00002117 address to check for all-ones base address entry. Check directly.
2118 Reported by Sébastien Dugué <sebastien.dugue@bull.net>.
2119
21202007-03-25 Roland McGrath <roland@redhat.com>
Ulrich Drepperaa915fd2007-02-05 07:25:33 +00002121
2122 * dwarf_begin_elf.c (check_section): Return Dwarf * instead of void.
2123 Return NULL when freeing RESULT on error.
2124 (global_read, scngrp_read): Check return value from check_section,
2125 break out of loop after it has freed RESULT.
2126 (valid_p): Handle null argument.
2127
Roland McGrath8190db62006-12-17 23:56:51 +000021282007-03-12 Roland McGrath <roland@redhat.com>
2129
2130 * libdw.map (ELFUTILS_0.127): Add dwfl_report_begin_add.
2131
21322007-03-04 Roland McGrath <roland@redhat.com>
Roland McGrathc373d852006-10-10 00:25:21 +00002133
2134 * libdw.map (ELFUTILS_0.127): New version set, inherits from
2135 ELFUTILS_0.126. Add dwfl_module_addrsym.
2136
21372007-02-10 Roland McGrath <roland@redhat.com>
2138
2139 * dwarf.h (DW_OP_fbreg): Comment fix.
2140
21412007-02-03 Roland McGrath <roland@redhat.com>
2142
2143 * dwarf_getelf.c (dwarf_getelf): Renamed from dwarf_get_elf.
2144 * libdw.map (ELFUTILS_0.126): New version set, inherits from
Ulrich Drepper077c65f2006-07-12 19:54:51 +00002145 ELFUTILS_0.122. Move dwarf_getelf there; it was never truly
2146 exported in the past.
2147
21482006-12-17 Roland McGrath <roland@redhat.com>
2149
2150 * dwarf_getlocation.c (dwarf_getlocation_addr): Use zero as base
2151 address when the CU is missing attributes due to buggy GCC.
2152
Ulrich Dreppere1812e12006-07-12 07:46:03 +000021532006-08-29 Roland McGrath <roland@redhat.com>
2154
2155 * Makefile.am (CLEANFILES): Add libdw.so.$(VERSION).
2156
2157 * libdw.h (dwarf_diecu): Add __nonnull_attribute__.
2158 (dwarf_child): Don't list arg 1 in __nonnull_attribute__.
2159
Ulrich Drepper3be74472006-05-27 18:15:40 +00002160 * libdw_alloc.c (__libdw_allocate): Take new ALIGN argument, make sure
2161 result is aligned. Adjust NEWP->remaining here for this allocation.
2162 * libdwP.h: Update decl.
2163 (libdw_alloc): Update caller.
Ulrich Dreppere7a73172006-05-22 18:16:45 +00002164
21652006-07-12 Ulrich Drepper <drepper@redhat.com>
2166
2167 * dwarf_child.c: Adjust for internal_function_def removal.
2168 * dwarf_getabbrev.c: Likewise.
Ulrich Drepper4f3d2a22006-05-22 01:30:56 +00002169 * dwarf_tag.c: Likewise.
2170 * libdw_form.c: Likewise.
2171 * memory-access.c: Likewise.
2172
21732006-06-28 Roland McGrath <roland@redhat.com>
Roland McGrath2dade662006-02-28 22:13:20 +00002174
2175 * libdw.map: Export dwfl_linecu, dwfl_line_comp_dir.
2176
2177 * libdw.map: Bump to 0.122; export dwfl_module_getsymtab and
2178 dwfl_module_getsym.
2179
Roland McGrath08333122006-02-27 04:54:26 +000021802006-05-27 Ulrich Drepper <drepper@redhat.com>
2181
2182 * libdw.h: Add extern "C".
2183
Roland McGrath50ffcbf2005-12-23 01:51:43 +000021842006-05-22 Ulrich Drepper <drepper@redhat.com>
2185
2186 * dwarf_getaranges.c (dwarf_getaranges): Handle files without
2187 aranges information.
Roland McGrathdec3a242005-12-12 08:35:55 +00002188
21892006-05-21 Ulrich Drepper <drepper@redhat.com>
2190
2191 * libdw.h: Add nonnull attributes to dwarf_tag, dwarf_getattrs,
2192 dwarf_haschildren.
Roland McGrathf64a4422005-12-09 23:40:30 +00002193
21942006-02-28 Roland McGrath <roland@redhat.com>
2195
2196 * dwarf.h: Add missing DW_ATE_*, DW_TAG_*, DW_LANG_*, DW_CFA_*,
2197 DW_OP_* values, to match DWARF 3.0. Add new DW_DS_*, DW_END_*
2198 values from DWARF 3.0.
Roland McGrath994b4892005-12-05 22:46:21 +00002199
22002006-02-22 Roland McGrath <roland@redhat.com>
2201
2202 * libdw.map: Bump to 0.120; export dwfl_version.
Roland McGrathe47ab762005-11-17 03:16:00 +00002203
22042005-12-22 Roland McGrath <roland@redhat.com>
2205
2206 * libdw.map: Bump to 0.119; export dwfl_linux_proc_maps_report.
2207
22082005-12-12 Roland McGrath <roland@redhat.com>
2209
2210 * dwarf_ranges.c: Copy CU base address-finding code from
Roland McGrath07d4f2f2005-10-28 06:56:24 +00002211 dwarf_getlocation.
2212
22132005-12-09 Roland McGrath <roland@redhat.com>
2214
2215 * dwarf_getlocation.c (dwarf_getlocation_addr): Add some unlikelys.
2216 Delay CU base lookup until it's needed.
2217 If CU base lookup fails with no error, flag invalid DWARF.
2218
22192005-11-25 Roland McGrath <roland@redhat.com>
2220
2221 * libdw.map: Bump to 0.118; export dwfl_module_register_names.
2222
Roland McGrath6724c902005-10-28 07:07:19 +000022232005-11-15 Roland McGrath <roland@redhat.com>
2224
2225 * Makefile.am [BUILD_STATIC] (AM_CFLAGS): Add -fpic.
2226
22272005-11-13 Roland McGrath <roland@redhat.com>
2228
2229 * libdw.map: Bump to 0.117; export dwfl_module_return_value_location.
2230
22312005-10-27 Roland McGrath <roland@redhat.com>
2232
2233 * dwarf_entry_breakpoints.c (search_range): Fix binary search code;
2234 don't match end_sequence markers.
2235
2236 * dwarf_getsrclines.c (compare_lines): Sort end_sequence markers
2237 before normal records at the same address.
2238 * dwarf_getsrc_die.c (dwarf_getsrc_die): Don't match an end_sequence
2239 marker.
2240
22412005-10-26 Roland McGrath <roland@redhat.com>
2242
2243 * dwarf_getfuncs.c (dwarf_getfuncs): Use Dwarf_Die, not Dwarf_Func.
2244 * dwarf_func_file.c: Renamed to ...
2245 * dwarf_decl_file.c: ... here.
2246 * dwarf_func_col.c: Renamed to ...
2247 * dwarf_decl_column.c: ... here.
2248 * dwarf_func_line.c: Renamed to ...
2249 * dwarf_decl_line.c: ... here.
2250 (dwarf_func_line): Renamed to ...
2251 (dwarf_decl_line): ... this. Take a Dwarf_Die * argument.
2252 (__libdw_func_intval): Renamed __libdw_attr_intval.
2253 * dwarf_func_name.c: File removed.
2254 * dwarf_func_lowpc.c: File removed.
2255 * dwarf_func_highpc.c: File removed.
2256 * dwarf_func_entrypc.c: File removed.
2257 * dwarf_func_die.c: File removed.
2258 * Makefile.am (libdw_a_SOURCES): Updated.
2259 * libdw.h: Update decls.
2260 (Dwarf_Func): Type removed.
2261 * libdwP.h: Update decls.
Roland McGrath07d4f2f2005-10-28 06:56:24 +00002262 (struct Dwarf_Func_s): Type removed.
2263 * libdw.map: Updated.
2264
2265 * libdwP.h (CUDIE): New macro.
2266 * dwarf_getlocation.c (dwarf_getlocation_addr): Use it.
2267 * dwarf_getscopes_die.c (dwarf_getscopes_die): Likewise.
2268 * dwarf_ranges.c (dwarf_ranges): Likewise.
2269
2270 * dwarf_getloclist.c: Renamed to ...
2271 * dwarf_getlocation.c: ... here.
2272 (getloclist): Renamed to getlocation.
2273 (dwarf_getloclist): Renamed to dwarf_getlocation.
2274 (dwarf_addrloclists): Renamed to dwarf_getlocation_addr.
2275 * Makefile.am (libdw_a_SOURCES): Updated.
2276 * libdw.h (dwarf_getloclist): Renamed to dwarf_getlocation.
2277 (dwarf_addrloclists): Renamed dwarf_getlocation_addr.
2278 (Dwarf_Loc): Renamed Dwarf_Op.
2279 * libdwP.h (struct loc_s): Update use.
2280 * libdw.map: Update map.
2281
2282 * dwarf_entry_breakpoints.c: Use the second line record within the
2283 function, regardless of its source location data.
2284
22852005-10-25 Roland McGrath <roland@redhat.com>
2286
2287 * dwarf_entry_breakpoints.c: Fall back to entrypc for contiguous too.
2288
2289 * libdw.map: Add dwarf_entrypc, dwarf_entry_breakpoints.
2290
22912005-10-14 Roland McGrath <roland@redhat.com>
2292
2293 * dwarf_diecu.c (dwarf_diecu): New file.
2294 * Makefile.am (libdw_a_SOURCES): Add it.
2295 * libdw.h: Declare dwarf_diecu.
2296 * libdw.map: Export it.
2297
2298 * libdw.map: Bump to 0.116; export dwarf_ranges.
2299
23002005-09-20 Roland McGrath <roland@redhat.com>
2301
2302 * dwarf_haspc.c: Use dwarf_ranges.
2303 * dwarf_entry_breakpoints.c: Likewise.
2304
2305 * dwarf_ranges.c: New file.
2306 * Makefile.am (libdw_a_SOURCES): Add it.
2307 * libdw.h: Declare dwarf_ranges.
2308 * libdwP.h: Add INTDECL.
2309
Ulrich Drepperfbe998a2005-08-29 16:27:10 +000023102005-09-14 Roland McGrath <roland@redhat.com>
2311
2312 * dwarf_entry_breakpoints.c (dwarf_entry_breakpoints): Fix braino in
2313 prologue_end marker scanning loop.
2314
23152005-09-11 Roland McGrath <roland@redhat.com>
Roland McGrath71e15a02005-08-27 10:33:26 +00002316
2317 * dwarf.h: Comment typo fix.
2318
23192005-09-07 Roland McGrath <roland@redhat.com>
2320
2321 * dwarf_entry_breakpoints.c: New file.
2322 * Makefile.am (libdw_a_SOURCES): Add it.
2323 * libdw.h: Declare dwarf_entry_breakpoints.
2324
2325 * dwarf_entrypc.c: New file.
2326 * Makefile.am (libdw_a_SOURCES): Add it.
2327 * libdw.h: Declare dwarf_entrypc.
2328 * libdwP.h: Add INTDECL.
2329
23302005-08-28 Ulrich Drepper <drepper@redhat.com>
2331
2332 * Makefile.am: Use $(LINK) not $(CC) when creating DSO.
2333 (%.os): Use COMPILE.os.
2334 (COMPILE.os): Filter out gconv options.
2335
23362005-08-27 Roland McGrath <roland@redhat.com>
2337
Roland McGrathd17fac72005-08-23 08:20:21 +00002338 * dwarf_getscopes.c (dwarf_getscopes): Rewritten using
2339 __libdw_visit_scopes.
2340
2341 * dwarf_getscopes_die.c: New file.
2342 * Makefile.am (libdw_a_SOURCES): Add it.
2343 * libdw.h: Declare dwarf_getscopes_die.
2344 * libdw.map: Bump to 0.115 and add it.
2345
2346 * libdw_visit_scopes.c (__libdw_visit_scopes): Pass a struct
2347 containing a DIE and its parent pointer, instead of just Dwarf_Die.
2348 Take two functions for both preorder and postorder visitors.
2349 * libdwP.h: Update decl.
2350 (struct Dwarf_Die_Chain): New type.
2351 * dwarf_func_inline.c: Update uses.
2352
2353 * dwarf_diename.c (dwarf_diename): Use dwarf_attr_integrate.
2354 Add INTDEF.
Roland McGrathf5fda7d2005-08-18 22:01:57 +00002355 * libdwP.h: Add INTDECL.
2356 * dwarf_func_name.c (dwarf_func_name): Use dwarf_diename.
2357
23582005-08-23 Roland McGrath <roland@redhat.com>
2359
Roland McGrath1ecb6062005-08-15 09:53:04 +00002360 * dwarf_attr_integrate.c (dwarf_attr_integrate): Treat
2361 DW_AT_specification the same as DW_AT_abstract_origin.
2362
23632005-08-20 Roland McGrath <roland@redhat.com>
2364
2365 * libdw.map: Add dwfl_cumodule, remove dwfl_linecu.
2366 Add dwfl_linux_kernel_report_offline, dwfl_offline_section_address,
2367 and dwfl_report_offline.
2368
23692005-08-19 Roland McGrath <roland@redhat.com>
2370
2371 * libdw.map: Bump version to ELFUTILS_0.114 for libdwfl changes.
Roland McGrath1c83bf12005-08-11 07:03:55 +00002372 Add dwfl_module_relocate_address, dwfl_module_relocations,
Ulrich Drepper6d5c3bd2005-08-11 04:37:52 +00002373 dwfl_module_relocation_info.
Roland McGrath1c83bf12005-08-11 07:03:55 +00002374
23752005-08-18 Roland McGrath <roland@redhat.com>
Ulrich Drepper6d5c3bd2005-08-11 04:37:52 +00002376
Roland McGrath4959bf82005-08-09 10:31:08 +00002377 * dwarf_getscopes.c (dwarf_getscopes): Include the CU itself as
2378 outermost scope in the results.
Roland McGrathb6312e12005-08-09 10:36:01 +00002379
23802005-08-15 Roland McGrath <roland@redhat.com>
Roland McGrath4959bf82005-08-09 10:31:08 +00002381
2382 * dwarf_func_inline.c: New file.
2383 * Makefile.am (libdw_a_SOURCES): Add it.
2384 * libdw.h: Declare dwarf_func_inline, dwarf_func_inline_instances.
Roland McGratha5a89682005-08-02 01:24:01 +00002385 * libdw.map: Add them.
2386
2387 * dwarf_func_die.c: New file.
2388 * Makefile.am (libdw_a_SOURCES): Add it.
2389 * libdw.h: Declare dwarf_func_die.
Ulrich Drepper18618fd2005-07-28 21:29:22 +00002390 * libdw.map: Add it. Bump version to ELFUTILS_0.114.
2391
23922005-08-10 Ulrich Drepper <drepper@redhat.com>
2393
2394 * dwarf_getsrclines.c (dwarf_getsrclines): Correct fallout of renaming
Roland McGrath366784a2005-07-28 06:20:53 +00002395 of DW_LNS_set_epilog_begin.
2396
Roland McGrath18385902005-07-28 07:12:38 +000023972005-08-09 Roland McGrath <roland@redhat.com>
2398
2399 * dwarf.h (DW_LNS_set_epilog_begin): Renamed DW_LNS_set_epilogue_begin.
2400
2401 * dwarf_end.c: Add INTDEF.
2402 * dwarf_error.c (dwarf_errmsg): Likewise.
Roland McGrath366784a2005-07-28 06:20:53 +00002403 * libdwP.h (dwarf_end, dwarf_errmsg): Add INTDECLs.
2404
24052005-08-01 Roland McGrath <roland@redhat.com>
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00002406
2407 * dwarf_getaranges.c (dwarf_getaranges): Check for bogus offset.
2408 * dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
2409
24102005-07-28 Ulrich Drepper <drepper@redhat.com>
2411
2412 * Makefile.am (libdw.so): No need to link with libeu.a anymore.
2413 (libdw_a_LIBADD): Add all files from libdwfl.a.
2414
24152005-07-27 Roland McGrath <roland@redhat.com>
2416
2417 * Makefile.am (libdw.so): Link ../libdwfl/libdwfl_pic.a in,
2418 along with ../libebl/libebl.a and ../lib/libeu.a;
2419 depend on ../libelf/libelf.so.
2420 (libdw_so_LDADD): New variable.
2421 * libdw.map: Add dwfl_* symbols formerly in ../libdwfl/libdwfl.map.
2422
2423 * libdw.map: Define an empty base version and move all symbols to
2424 version ELFUTILS_0.111; don't define ELFUTILS_1.0 at all yet.
2425
24262005-07-23 Ulrich Drepper <drepper@redhat.com>
2427
2428 * dwarf_error.c: Add internal alias for dwarf_errno.
2429 * libdwP.h: Declare __dwarf_errno_internal.
2430 * dwarf_getloclist.c: Use INTDEF for dwarf_errno.
2431
2432 * dwarf_error.c [USE_TLS]: Actually use __thread in definition of
2433 global_error.
2434
24352005-06-01 Roland McGrath <roland@redhat.com>
2436
2437 * dwarf_getaranges.c (dwarf_getaranges): Sort result array.
2438 * dwarf_getarange_addr.c (dwarf_getarange_addr): Use binary search.
2439
24402005-06-08 Roland McGrath <roland@redhat.com>
2441
2442 * memory-access.h (get_uleb128_step, get_uleb128): Remove casts.
2443 (get_sleb128_step, get_sleb128): Likewise.
2444 * dwarf_getattrs.c (dwarf_getattrs): Add consts.
2445 * dwarf_getloclist.c (getloclist): Likewise.
2446 * dwarf_formblock.c (dwarf_formblock): Likewise.
2447 * dwarf_getsrclines.c (dwarf_getsrclines): Likewise.
2448 * dwarf_getabbrevattr.c (dwarf_getabbrevattr): Likewise.
2449 * dwarf_formref.c (dwarf_formref): Likewise.
2450 * dwarf_formsdata.c (dwarf_formsdata): Likewise.
2451 * dwarf_formudata.c (dwarf_formudata): Likewise.
2452 * dwarf_haschildren.c (dwarf_haschildren): Likewise.
2453 * dwarf_child.c (__libdw_find_attr, __libdw_find_attr): Likewise.
2454 * dwarf_tag.c (dwarf_tag): Likewise.
2455 * dwarf_getabbrev.c (__libdw_getabbrev): Likewise.
2456 * memory-access.c (__libdw_get_uleb128, __libdw_get_sleb128): Likewise.
2457 * libdw_form.c (__libdw_form_val_len): Likewise.
2458 * libdwP.h: Update decl.
2459
24602005-06-04 Roland McGrath <roland@redhat.com>
2461
2462 * memory-access.h (get_uleb128_rest_return): New macro.
2463 [! IS_LIBDW] (__libdw_get_uleb128): New static, defined using it.
2464 (get_sleb128_rest_return): New macro.
2465 [! IS_LIBDW] (__libdw_get_sleb128): New static, defined using it.
2466 * memory-access.c: New file.
2467 * Makefile.am (libdw_a_SOURCES): Add it.
2468 (DEFS): Add -DIS_LIBDW.
2469
24702005-05-31 Roland McGrath <roland@redhat.com>
2471
2472 * dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to
2473 formref offset.
2474
24752005-05-30 Roland McGrath <roland@redhat.com>
2476
2477 * dwarf_getloclist.c (dwarf_addrloclists): Use DW_AT_entry_pc for base
2478 address if DW_AT_low_pc is missing. Not to spec, but GCC generates it.
2479
2480 * dwarf_getloclist.c (dwarf_addrloclists): Don't sign-extend 4-byte
2481 BEGIN value. Instead, match base address entries separately for
2482 32/64 size cases.
2483
24842005-05-28 Roland McGrath <roland@redhat.com>
2485
2486 * dwarf_getloclist.c (dwarf_addrloclists): Fix decoding to advance
2487 past location expression contents.
2488
24892005-05-23 Roland McGrath <roland@redhat.com>
2490
2491 * dwarf_getsrclines.c: Comment typo fix.
2492
2493 * dwarf_haspc.c (dwarf_haspc): Fix CU DIE address calculation.
2494 * dwarf_getloclist.c (dwarf_addrloclists): Likewise.
2495
24962005-05-22 Ulrich Drepper <drepper@redhat.com>
2497
2498 * libdwP.h: Only use INTDECL for alias prototypes.
2499
25002005-05-19 Roland McGrath <roland@redhat.com>
2501
2502 * dwarf_getloclist.c (attr_ok): Permit DW_AT_static_link too.
2503
2504 * dwarf_getscopevar.c: New file.
2505 * Makefile.am (libdw_a_SOURCES): Add it.
2506 * libdw.h: Declare dwarf_getscopevar.
2507
2508 * dwarf_getsrcfiles.c: Add INTDEF.
2509 * dwarf_haschildren.c: Likewise.
2510 * libdwP.h (dwarf_getsrcfiles, dwarf_haschildren): Add INTDECL.
2511
2512 * dwarf_getscopes.c: New file.
2513 * Makefile.am (libdw_a_SOURCES): Add it.
2514 * libdw.h: Declare dwarf_getscopes.
2515 * libdw.map: Add it.
2516
25172005-05-18 Roland McGrath <roland@redhat.com>
2518
2519 * libdwP.h (IDX_debug_ranges): New enum constant.
2520 * dwarf_begin_elf.c (dwarf_scnnames): Add it for ".debug_ranges".
2521 * libdwP.h (DWARF_E_NO_DEBUG_RANGES): New enum constant.
2522 * dwarf_error.c (errmsgs): Add it.
2523 * dwarf_haspc.c: New file.
2524 * libdw.h: Declare dwarf_haspc.
2525 * libdw.map: Add it.
2526 * libdwP.h: Add INTDECL.
2527
2528 * dwarf_attr_integrate.c: New file.
2529 * dwarf_hasattr_integrate.c: New file.
2530 * Makefile.am (libdw_a_SOURCES): Add them.
2531 * libdw.h: Declare dwarf_attr_integrate, dwarf_hasattr_integrate.
2532 * libdw.map: Add them.
2533
2534 * dwarf_hasattr.c: Add INTDEF.
2535 * libdwP.h: Add INTDECL for it.
2536
2537 * dwarf_formref_die.c: New file.
2538 * Makefile.am (libdw_a_SOURCES): Add it.
2539 * libdw.h (dwarf_formref_die): Declare it.
2540 * libdwP.h (dwarf_formref_die): Add INTDECL.
2541 * libdw.map: Add it.
2542
2543 * dwarf_getloclist.c (attr_ok, getloclist): New functions, broken out
2544 of ...
2545 (dwarf_getloclist): ... here. Call them.
2546 (dwarf_addrloclists): New function.
2547 * libdw.h: Declare it.
2548 * libdw.map: Add it.
2549
2550 * dwarf_getmacros.c (dwarf_getmacros): Don't bail at
2551 DW_MACINFO_end_file. Recognize type 0 as terminator.
2552
25532005-05-05 Roland McGrath <roland@redhat.com>
2554
2555 * dwarf_getsrc_die.c (dwarf_getsrc_die): Use binary search.
2556
2557 * dwarf_getsrclines.c (dwarf_getsrclines): Sort result array, since
2558 the line program does not produce all entries in ascending order.
2559
25602005-04-25 Ulrich Drepper <drepper@redhat.com>
2561
2562 * dwarf_getsrc_file.c (dwarf_getsrc_file): Handle multiple
2563 occurences (e.g., inlines) better.
2564
25652005-04-24 Ulrich Drepper <drepper@redhat.com>
2566
2567 * libdw.h (DWARF_END_ABBREV): Define.
2568 * dwarf_getabbrev.c (__libdw_getabbrev): Return DWARF_END_ABBREV if
2569 end is reached.
2570 * dwarf_offabbrev.c (dwarf_offabbrev): Return -1 on error, 1 if end
2571 of records reached.
2572 * dwarf_tag.c (__libdw_findabbrev): Also recognize DWARF_END_ABBREV
2573 as error of __libdw_getabbrev.
2574
25752005-04-04 Ulrich Drepper <drepper@redhat.com>
2576
2577 * dwarf_getsrc_file.c (dwarf_getsrc_file): Minor optimization.
2578
2579 * dwarf_getsrc_file.c (dwarf_getsrc_file): Always pass number of
2580 results back to caller.
2581
25822005-04-04 Roland McGrath <roland@redhat.com>
2583
2584 * dwarf_getsrc_file.c (dwarf_getsrc_file): Use size_t for CUHL.
2585
2586 * dwarf_func_line.c (__libdw_func_intval): Use internal_function in
2587 defn.
2588
25892005-04-04 Ulrich Drepper <drepper@redhat.com>
2590
2591 * dwarf_getsrc_file.c (dwarf_getsrc_file): Use INTUSE.
2592
2593 * dwarf_getsrc_file.c: New file.
2594 * Makefile.am (libdw_a_SOURCES): Add dwarf_getsrc_file.c.
2595 * libdw.h: Declare dwarf_getsrc_file.
2596 * libdw.map: Add dwarf_getsrc_file.
2597
25982005-04-02 Ulrich Drepper <drepper@redhat.com>
2599
2600 * dwarf_func_entrypc.c: New file.
2601 * dwarf_func_col.c: New file.
2602 * dwarf_func_line.c: New file.
2603 * dwarf_func_file.c: New file.
2604 * libdw.h: Add prototypes for new functions.
2605 * libdw.map: Add dwarf_func_entrypc, dwarf_func_col, dwarf_func_line,
2606 dwarf_func_file.
2607 * Makefile.am (libdw_a_SOURCES): Add dwarf_func_entrypc.c,
2608 dwarf_func_col.c, dwarf_func_line.c, dwarf_func_file.c.
2609 * libdwP.h (struct Dwarf_Func_s): Add cudie element.
2610 Declare __libdw_func_intval and __dwarf_formsdata_internal.
2611 * dwarf_getfuncs.c: Also fill in cudie in Dwarf_Func object.
2612 * dwarf_formsdata.c: Use INTUSE and INTDEF to avoid PLTs.
2613
2614 * dwarf.h: Add some DWARF3 definitions.
2615
26162005-04-01 Ulrich Drepper <drepper@redhat.com>
2617
2618 * dwarf_getfuncs.c: New file.
2619 * dwarf_func_highpc.c: New file.
2620 * dwarf_func_lowpc.c: New file.
2621 * dwarf_func_name.c: New file.
2622 * Makefile.am (libdw_a_SOURCES): Add dwarf_getfuncs.c,
2623 dwarf_func_highpc.c, dwarf_func_lowpc.c, and dwarf_func_name.c.
2624 * libdw.map: Add dwarf_getfuncs, dwarf_func_highpc, dwarf_func_lowpc,
2625 and dwarf_func_name.
2626 * libdw.h: Add prototypes for new functions.
2627 * dwarf_child.c: Use INTUSE and INTDEF to avoid PLTs.
2628 * dwarf_siblingof.c: Likewise.
2629 * dwarf_dieoffset.c: Likewise.
2630 * dwarf_highpc.c: Likewise.
2631 * dwarf_lowpc.c: Likewise.
2632 * libdwP.h: Add prototypes for internal functions.
2633 Define Dwarf_Func_s structure.
2634
26352005-03-29 Ulrich Drepper <drepper@redhat.com>
2636
2637 * libdw.h: Add padding in Dwarf_die.
2638
2639 * dwarf_arrayorder.c: Use INTUSE and INTDEF to avoid PLTs.
2640 * dwarf_attr.c: Likewise.
2641 * dwarf_begin.c: Likewise.
2642 * dwarf_begin_elf.c: Likewise.
2643 * dwarf_bitoffset.c: Likewise.
2644 * dwarf_bitsize.c: Likewise.
2645 * dwarf_bytesize.c: Likewise.
2646 * dwarf_diename.c: Likewise.
2647 * dwarf_formaddr.c: Likewise.
2648 * dwarf_formblock.c: Likewise.
2649 * dwarf_formref.c: Likewise.
2650 * dwarf_formstring.c: Likewise.
2651 * dwarf_formudata.c: Likewise.
2652 * dwarf_getarange_addr.c: Likewise.
2653 * dwarf_getarangeinfo.c: Likewise.
2654 * dwarf_getaranges.c: Likewise.
2655 * dwarf_getloclist.c: Likewise.
2656 * dwarf_getmacros.c: Likewise.
2657 * dwarf_getsrc_die.c: Likewise.
2658 * dwarf_getsrcfiles.c: Likewise.
2659 * dwarf_getsrclines.c: Likewise.
2660 * dwarf_highpc.c: Likewise.
2661 * dwarf_lowpc.c: Likewise.
2662 * dwarf_nextcu.c: Likewise.
2663 * dwarf_offdie.c: Likewise.
2664 * dwarf_siblingof.c: Likewise.
2665 * dwarf_srclang.c: Likewise.
2666 * dwarf_tag.c: Likewise.
2667 * libdw_findcu.c: Likewise.
2668 * libdwP.h: Add prototypes for internal functions.
2669
2670 * dwarf_addrdie.c: New file.
2671 * dwarf_macro_opcode.c: New file.
2672 * dwarf_macro_param1.c: New file.
2673 * dwarf_macro_param2.c: New file.
2674 * libdw.h: Add declarations. Move Dwarf_Macro definition to libdwP.h.
2675 * libdwP.h: Remove Dwarf_Macro definition.
2676 * Makefile.am (libdw_a_SOURCES): Add dwarf_addrdie.c,
2677 dwarf_macro_opcode.c, dwarf_macro_param1.c, and dwarf_macro_param2.c.
2678 * libdw.map: Add entries for new functions.
2679
26802005-03-21 Ulrich Drepper <drepper@redhat.com>
2681
2682 * libdw.h: Handle broken gcc < 4.
2683
26842005-02-15 Ulrich Drepper <drepper@redhat.com>
2685
2686 * Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
2687
2688 * dwarf_begin_elf.c: Fix warnings.
2689 * dwarf_dieoffset.c: Likewise.
2690 * dwarf_end.c: Likewise.
2691 * dwarf_error.c: Likewise.
2692 * dwarf_getpubnames.c: Likewise.
2693
2694 * libdwP.h: Add new error values.
2695 * dwarf_error.c: Support new error values.
2696 * dwarf_getpubnames.c: Check parameter value.
2697
26982005-02-05 Ulrich Drepper <drepper@redhat.com>
2699
2700 * Makefile.am: Check for text relocations in constructed DSO.
2701
2702 * Makefile.am [MUDFLAP] (AM_CFLAGS): Add -fmudflap.
2703
27042005-02-04 Ulrich Drepper <drepper@redhat.com>
2705
2706 * dwarf_siblingof.c (dwarf_siblingof): Add some buffer boundary
2707 checks to not read over buffer boundaries for ill-formed DWARF data.
2708
27092004-09-25 Ulrich Drepper <drepper@redhat.com>
2710
2711 * dwarf_child.c: Make compile with gcc 4.0.
2712 * dwarf_error.c: Likewise.
2713 * dwarf_formblock.c: Likewise.
2714 * dwarf_getabbrev.c: Likewise.
2715 * dwarf_getattrs.c: Likewise.
2716 * dwarf_getsrclines.c: Likewise.
2717 * dwarf_tag.c: Likewise.
2718 * libdw_form.c: Likewise.
2719
27202004-01-20 Ulrich Drepper <drepper@redhat.com>
2721
2722 * Makefile.am: Support building with mudflap.
2723
2724 * dwarf_getloclist.c: Fix warnings gcc 3.4 spits out.
2725 * dwarf_getsrclines.c: Likewise.
2726 * dwarf_memory-access.h: Likewise.
2727
27282004-01-19 Ulrich Drepper <drepper@redhat.com>
2729
2730 * dwarf_getsrcfiles.c: Third parameter can be NULL.
2731
2732 * libdw.h: Define Dwarf_macro. Declare dwarf_getmacros.
2733 Third parameter of dwarf_getsrcfiles can be NULL.
2734
2735 * libdw.map: Add dwarf_getmacros.
2736 * Makefile.am (libdw_a_SOURCES): Add dwarf_getmacros.
2737 * dwarf_getmacros.c: New file.
2738
27392004-01-18 Ulrich Drepper <drepper@redhat.com>
2740
2741 * libdw.h: Second parameter of dwarf_getaranges can be NULL.
2742
2743 * dwarf_nextcu.c: Return -1 if dwarf parameter is NULL.
2744
2745 * dwarf_getsrclines.c:
2746 Use read_2ubyte_unaligned_inc instead of _inc-less variant.
2747
2748 * dwarf_getaranges.c: Allow naranges parameter to be NULL.
2749
2750 * libdwP.h (_): Use elfutils domain.
2751
2752 * dwarf_getsrclines.c (dwarf_getsrclines): Add more branch prediction.
2753
2754 * dwarf_getsrclines.c: Fix typo in comment.
2755
27562004-01-17 Ulrich Drepper <drepper@redhat.com>
2757
2758 * Makefile.am: Support building with mudflap.
2759
27602004-01-16 Ulrich Drepper <drepper@redhat.com>
2761
2762 * memory-access.h: Add lots of const in case a pointer passed is const.
2763
2764 * dwarf_formflag.c: New file.
2765 * dwarf_getattrs.c: New file.
2766 * dwarf_error.c: Add new error value.
2767 * libdw.h: Add prototypes for new functions. Adjust prototype for
2768 dwarf_getpubnames.
2769 * libdw.map: Add new functions.
2770 * dwarf_getpubnames.c: Change type of return value and fourth parameter
2771 to ptrdiff_t.
2772 * libdwP.h: Add new error value.
2773 * Makefile.am (libdw_a_SOURCES): Add dwarf_getattrs.c and
2774 dwarf_formflag.c.
2775
2776 * dwarf_getpubnames.c (dwarf_getpubnames): Just fail if dbg is NULL.
2777
27782004-01-12 Ulrich Drepper <drepper@redhat.com>
2779
2780 * dwarf_getarange_addr.c: New file
2781 * dwarf_getarangeinfo.c: New file.
2782 * dwarf_getaranges.c: New file.
2783 * dwarf_onerange.c: New file.
2784 * libdw.h: Declare new functions. Define Dwarf_Arange and
2785 Dwarf_Aranges.
2786 * libdw.map: Add new functions.
2787 * libdwP.h: Add new errors. Add aranges member to struct Dwarf.
2788 Define Dwarf_Aranges_s and Dwarf_Arange_s.
2789 * Makefile.am (libdw_a_SOURCES): Add dwarf_getaranges.c,
2790 dwarf_onearange.c, dwarf_getarangeinfo.c, dwarf_getarange_addr.c.
2791 * dwarf_error.c: Add new message.
2792
27932004-01-11 Ulrich Drepper <drepper@redhat.com>
2794
2795 * Makefile.am (libdw_a_SOURCES): Add dwarf_lineaddr.c, dwarf_linecol.c,
2796 dwarf_linebeginstatement.c, dwarf_lineendsequence.c, dwarf_lineblock.c,
2797 dwarf_lineprologueend.c, dwarf_lineepiloguebegin.c, dwarf_onesrcline.c.
2798 * dwarf_error.c: Add another message.
2799 * dwarf_getsrc_die.c: Adjust for Dwarf_Files and Dwarf_Lines
2800 introduction.
2801 * dwarf_filesrc.c: Likewise.
2802 * dwarf_getsrcfiles.c: Likewise.
2803 * dwarf_getsrclines.c: Likewise.
2804 * dwarf_lineaddr.c: New file.
2805 * dwarf_linebeginstatement.c: New file.
2806 * dwarf_lineblock.c: New file.
2807 * dwarf_linecol.c: New file.
2808 * dwarf_lineendsequence.c: New file.
2809 * dwarf_lineepiloguebegin.c: New file.
2810 * dwarf_lineno.c: New file.
2811 * dwarf_lineprologueend.c: New file.
2812 * dwarf_onesrcline.c: New file.
2813 * dwarf_lineno.c: Change interface to store result in object pointed
2814 to by second parameter.
2815 * libdw.h: Add prototypes for new functions. Change dwarf_lineno
2816 prototype. Define Dwarf_Files and Dwarf_Lines.
2817 * libdw.map: Add new functions.
2818 * libdwP.h: Define Dwarf_Files_s and Dwarf_Lines_s.
2819 * libdw_findcu.c: Don't initialize nlines field.
2820
2821 * dwarf_siblingof: Little optimization.
2822
2823 * dwarf_begin.c: Remember that the ELF descriptor must be closed.
2824 * dwarf_end.c: Close ELF descriptor if free_elf is set.
2825 * libdwP.h (struct Dwarf): Add free_elf field.
2826
2827 * Makefile.am (libdw_a_SOURCES): Add dwarf_getstring.c and
2828 dwarf_offabbrev.c.
2829 * dwarf_getstring.c: New file.
2830 * dwarf_offabbrev.c: New file.
2831 * libdw.map: Add dwarf_getstring and dwarf_offabbrev.
2832 * dwarf_getabbrev.c (__libdw_getabbrev): Add new dbg and result
2833 parameters. Don't allocate memory if not necessary and don't lookup
2834 previous results if no CU given.
2835 (dwarf_getabbrev): Adjust call to __libdw_getabbrev.
2836 * dwarf_tag.c: Adjust call to __libdw_getabbrev.
2837 * libdw.h: Declare dwarf_offabbrev and dwarf_getstring.
2838 * libdwP.h: Change prototype for __libdw_getabbrev.
2839
2840 * dwarf_getabbrevattr.c: Add offsetp parameter. Fill in before
2841 returning if this is wanted.
2842
28432004-01-09 Ulrich Drepper <drepper@redhat.com>
2844
2845 * dwarf_nextcu.c: Add new parameter offset_sizep. Initialize it
2846 with offset_size value.
2847 * libdw.h: Adjust dwarf_nextcu prototype.
2848 * libdwP.h (struct Dwarf_CU): Add offset_size member.
2849 * libdw_findcu.c: Adjust dwarf_nextcu call. Initialize offset_size
2850 member of new CU struct.
2851 * dwarf_formstring.c: Depend on offset_size not address_size for
2852 DW_FORM_strp handling.
2853 * dwarf_form.c: Likewise for DW_FORM_strp and DW_FORM_ref_addr.
2854
2855 * dwarf_tag.c (__libdw_findabbrev): Return correct value for
2856 failing lookup.
2857 (dwarf_tag): Correctly recognize failed lookup.
2858
2859 * dwarf_end.c (cu_free): Call tdestroy for locs member. Use new
2860 function noop_free.
2861 * dwarf_error.c: Add message for DWARF_E_NO_BLOCK.
2862 * dwarf_formblock.c: New file.
2863 * dwarf_getloclist.c: Rewrite to handle a single block.
2864 * libdw.h: Define Dwarf_Block. Rename Dwarf_Loc members. Remove
2865 Dwarf_Locdesc definition. Declare dwarf_formblock. Remove
2866 dwarf_getloclistent declaration.
2867 * libdw.map: Add dwarf_formblock, remove dwarf_getloclistent.
2868 * libdwP.h: Define struct loc_s and DWARF_E_NO_BLOCK.
2869 Add locs member to struct Dwarf_CU.
2870 * libdw_fundcu.c: Initialize locs member of new CU.
2871 * Makefile.am (libdw_a_SOURCES): Add dwarf_formblock.c.
2872 Remove dwarf_getloclistent.c.
2873
28742004-01-07 Ulrich Drepper <drepper@redhat.com>
2875
2876 * libdw.h: Use __nonnull__ attribute only for gcc >= 3.3.
2877 * libdwP.h: Likewise.
2878
2879 * dwarf_getloclist.c: New file.
2880 * dwarf_getloclistent.c: New file.
2881 * libdw.h: Define Dwarf_Loc and Dwarf_Locdesc.
2882 Declare dwarf_getloclistent and dwarf_getloclist.
2883 * libdw.map: Add dwarf_getloclistent and dwarf_getloclist.
2884 * libdwP.h: Define DWARF_E_NO_LOCLIST.
2885 * Makefile.am (libdw_a_SOURCES): Add dwarf_getloclistent.c and
2886 dwarf_getloclist.c.
2887
2888 * dwarf_error.c: More error messages.
2889
28902004-01-06 Ulrich Drepper <drepper@redhat.com>
2891
2892 * dwarf_getsrclines.c: Remove debugging support.
2893
2894 * dwarf_getsrcfiles.c: New file.
2895 * dwarf_filesrc.c: New file.
2896 * libdw.h: Declare these functions. Define Dwarf_File.
2897 * libdwP.c: Adjust Dwarf_File_s definition.
2898 * libdw.map: Add these functions.
2899 * Makefile.am (libdw_a_SOURCES): Add dwarf_getsrcfiles.c and
2900 dwarf_filesrc.c.
2901 * dwarf_getsrclines.c: Initialize cu->files.
2902
29032004-01-05 Ulrich Drepper <drepper@redhat.com>
2904
2905 * libdw.h: Add more nonnull function attributes.
2906
2907 * dwarf_begin_elf.c (dwarf_begin_elf): Don't initialize mem_tail->next.
2908 * dwarf_end.c (cu_free): New function.
2909 (dwarf_end): Also free CU tree. Correct freeing of memory blocks.
2910 * dwarf_error.c (errmsgs): Add new messages.
2911 * dwarf_getsrc_die.c: New file.
2912 * dwarf_getsrclines.c: New file.
2913 * dwarf_lineno.c: New file.
2914 * dwarf_linesrc.c: New file.
2915 * dwarf_nextcu.c (dwarf_nextcu): Use read_*byte_unaligned_inc
2916 instead of the *_inc-less variants.
Ulrich Drepper6fb34512010-05-28 20:28:04 -07002917 * libdw.h: Define Dwarf_Line. Add some function attributes. Declare
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00002918 dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, and dwarf_linesrc.
2919 * libdw.map: Add dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno,
2920 and dwarf_linesrc.
2921 * libdwP.h: Add more error codes.
2922 (struct Dwarf): Remove mem_tail.next member.
2923 (Dwarf_File): Define type.
2924 (struct Dwarf_Line_s): Define type.
2925 (struct Dwarf_CU): Add lines and nlines members.
2926 (libdw_alloc): Define local variable _tail and use it.
2927 Add some function attributes.
2928 * libdw_alloc.c (__libdw_allocate): Don't initialize next member.
2929 * libdw_findcu.c (__libdw_findcu): Initialize lines and nlines members.
2930 * memory-access.h: Add unlikely for the endian conversion paths.
2931 * Makefile.am (AM_CFLAGS): Add -std parameter.
2932 (libdw_a_SOURCES): Add dwarf_getsrclines, dwarf_getsrc_die,
2933 dwarf_lineno, and dwarf_linesrc.
2934
29352003-08-11 Ulrich Drepper <drepper@redhat.com>
2936
2937 * Moved to CVS archive.