diff options
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | NEWS | 1 | ||||
| -rw-r--r-- | libdw/ChangeLog | 6 | ||||
| -rw-r--r-- | libdw/dwarf_peel_type.c | 7 | ||||
| -rw-r--r-- | libdw/libdw.h | 28 |
5 files changed, 34 insertions, 12 deletions
@@ -1,5 +1,9 @@ 2017-07-26 Mark Wielaard <[email protected]> + * NEWS: Mention dwarf_peel_type DWARF5 tags improvement. + +2017-07-26 Mark Wielaard <[email protected]> + * NEWS: Mention new DWARF5 calling conventions and defaulted member function. @@ -3,6 +3,7 @@ Version 0.170 libdw: Added new DWARF5 attribute, tag, character encoding, language code, calling convention and defaulted member function constants to dwarf.h. New function dwarf_default_lower_bound. + dwarf_peel_type now handles DWARF5 immutable, packed and shared tags. strip: Add -R, --remove-section=SECTION and --keep-section=SECTION. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index a74733c2..d0b3f4ca 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,5 +1,11 @@ 2017-07-26 Mark Wielaard <[email protected]> + * dwarf_peel_type.c (dwarf_peel_type): Handle DW_TAG_immutable_type, + DW_TAG_packed_type and DW_TAG_shared_type. + * libdw.h (dwarf_peel_type): Extend documentation. + +2017-07-26 Mark Wielaard <[email protected]> + * dwarf.h: Add DW_DEFAULTED_no, DW_DEFAULTED_in_class and DW_DEFAULTED_out_of_class. diff --git a/libdw/dwarf_peel_type.c b/libdw/dwarf_peel_type.c index 97356944..6bbfd424 100644 --- a/libdw/dwarf_peel_type.c +++ b/libdw/dwarf_peel_type.c @@ -1,5 +1,5 @@ /* Peel type aliases and qualifier tags from a type DIE. - Copyright (C) 2014, 2015 Red Hat, Inc. + Copyright (C) 2014, 2015, 2016 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -50,7 +50,10 @@ dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result) || tag == DW_TAG_const_type || tag == DW_TAG_volatile_type || tag == DW_TAG_restrict_type - || tag == DW_TAG_atomic_type) + || tag == DW_TAG_atomic_type + || tag == DW_TAG_immutable_type + || tag == DW_TAG_packed_type + || tag == DW_TAG_shared_type) { Dwarf_Attribute attr_mem; Dwarf_Attribute *attr = INTUSE (dwarf_attr_integrate) (result, DW_AT_type, diff --git a/libdw/libdw.h b/libdw/libdw.h index 49c4ebb9..63a38ff9 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -1,5 +1,5 @@ /* Interfaces for libdw. - Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc. + Copyright (C) 2002-2010, 2013, 2014, 2016 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -378,8 +378,11 @@ extern int dwarf_child (Dwarf_Die *die, Dwarf_Die *result) extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) __nonnull_attribute__ (2); -/* For type aliases and qualifier type DIEs follow the DW_AT_type - attribute (recursively) and return the underlying type Dwarf_Die. +/* For type aliases and qualifier type DIEs, which don't modify or + change the structural layout of the underlying type, follow the + DW_AT_type attribute (recursively) and return the underlying type + Dwarf_Die. + Returns 0 when RESULT contains a Dwarf_Die (possibly equal to the given DIE) that isn't a type alias or qualifier type. Returns 1 when RESULT contains a type alias or qualifier Dwarf_Die that @@ -387,13 +390,18 @@ extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) attribute). Returns -1 when an error occured. The current DWARF specification defines one type alias tag - (DW_TAG_typedef) and three qualifier type tags (DW_TAG_const_type, - DW_TAG_volatile_type, DW_TAG_restrict_type). DWARF5 defines one - other qualifier type tag (DW_TAG_atomic_type). A future version of - this function might peel other alias or qualifier type tags if a - future DWARF version or GNU extension defines other type aliases or - qualifier type tags that don't modify or change the structural - layout of the underlying type. */ + (DW_TAG_typedef) and seven modifier/qualifier type tags + (DW_TAG_const_type, DW_TAG_volatile_type, DW_TAG_restrict_type, + DW_TAG_atomic_type, DW_TAG_immutable_type, DW_TAG_packed_type and + DW_TAG_shared_type). This function won't peel modifier type + tags that change the way the underlying type is accessed such + as the pointer or reference type tags (DW_TAG_pointer_type, + DW_TAG_reference_type or DW_TAG_rvalue_reference_type). + + A future version of this function might peel other alias or + qualifier type tags if a future DWARF version or GNU extension + defines other type aliases or qualifier type tags that don't modify, + change the structural layout or the way to access the underlying type. */ extern int dwarf_peel_type (Dwarf_Die *die, Dwarf_Die *result) __nonnull_attribute__ (2); |
