diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | libdw/ChangeLog | 8 | ||||
-rw-r--r-- | libdw/Makefile.am | 2 | ||||
-rw-r--r-- | libdw/dwarf_cu_getdwarf.c | 47 | ||||
-rw-r--r-- | libdw/libdw.h | 9 | ||||
-rw-r--r-- | libdw/libdw.map | 5 |
7 files changed, 75 insertions, 2 deletions
@@ -1,3 +1,7 @@ +2014-08-15 Mark Wielaard <mjw@redhat.com> + + * NEWS: Add dwarf_cu_getdwarf. + 2014-07-18 Mark Wielaard <mjw@redhat.com> * configure.ac (AC_CHECK_TYPE): Test for struct user_regs_struct. @@ -1,5 +1,7 @@ Version 0.160 +libdw: New function dwarf_cu_getdwarf. + unstrip: New option -F, --force to combining files even if some ELF headers don't seem to match. diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 28844197..8dfd11e8 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,11 @@ +2014-08-15 Mark Wielaard <mjw@redhat.com> + + * dwarf_cu_getdwarf.c: New file. + * Makefile.am (libdw_a_SOURCES): Add dwarf_cu_getdwarf.c. + * libdw.h (Dwarf_CU): New typedef. + (dwarf_cu_getdwarf): New function declaration. + * libdw.map (ELFUTILS_0.160): New. Add dwarf_cu_getdwarf. + 2014-06-18 Mark Wielaard <mjw@redhat.com> * dwarf.h: Remove DW_TAG_mutable_type. diff --git a/libdw/Makefile.am b/libdw/Makefile.am index 8538d365..e39ab9a6 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -86,7 +86,7 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ dwarf_getcfi.c dwarf_getcfi_elf.c dwarf_cfi_end.c \ dwarf_aggregate_size.c dwarf_getlocation_implicit_pointer.c \ dwarf_getlocation_die.c dwarf_getlocation_attr.c \ - dwarf_getalt.c dwarf_setalt.c + dwarf_getalt.c dwarf_setalt.c dwarf_cu_getdwarf.c if MAINTAINER_MODE BUILT_SOURCES = $(srcdir)/known-dwarf.h diff --git a/libdw/dwarf_cu_getdwarf.c b/libdw/dwarf_cu_getdwarf.c new file mode 100644 index 00000000..f8a2e9b9 --- /dev/null +++ b/libdw/dwarf_cu_getdwarf.c @@ -0,0 +1,47 @@ +/* Retrieve Dwarf descriptor underlying a Dwarf_CU. + Copyright (C) 2014 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stddef.h> + +#include "libdwP.h" + + +Dwarf * +dwarf_cu_getdwarf (cu) + Dwarf_CU *cu; +{ + if (cu == NULL) + /* Some error occurred before. */ + return NULL; + + return cu->dbg; +} diff --git a/libdw/libdw.h b/libdw/libdw.h index a4654c44..61d3b386 100644 --- a/libdw/libdw.h +++ b/libdw/libdw.h @@ -1,5 +1,5 @@ /* Interfaces for libdw. - Copyright (C) 2002-2010, 2013 Red Hat, Inc. + Copyright (C) 2002-2010, 2013, 2014 Red Hat, Inc. This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -112,6 +112,7 @@ typedef struct Dwarf_Aranges_s Dwarf_Aranges; /* CU representation. */ struct Dwarf_CU; +typedef struct Dwarf_CU Dwarf_CU; /* Macro information. */ typedef struct Dwarf_Macro_s Dwarf_Macro; @@ -260,6 +261,12 @@ extern Dwarf *dwarf_begin_elf (Elf *elf, Dwarf_Cmd cmd, Elf_Scn *scngrp); /* Retrieve ELF descriptor used for DWARF access. */ extern Elf *dwarf_getelf (Dwarf *dwarf); +/* Retieve DWARF descriptor used for a Dwarf_Die or Dwarf_Attribute. + A Dwarf_Die or a Dwarf_Attribute is associated with a particular + Dwarf_CU handle. This function returns the DWARF descriptor for + that Dwarf_CU. */ +extern Dwarf *dwarf_cu_getdwarf (Dwarf_CU *cu); + /* Retrieves the DWARF descriptor for debugaltlink data. Returns NULL if no alternate debug data has been supplied. */ extern Dwarf *dwarf_getalt (Dwarf *main); diff --git a/libdw/libdw.map b/libdw/libdw.map index 899e13e1..27e2273e 100644 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@ -301,3 +301,8 @@ ELFUTILS_0.159 { dwelf_elf_gnu_debuglink; dwelf_elf_gnu_build_id; } ELFUTILS_0.158; + +ELFUTILS_0.160 { + global: + dwarf_cu_getdwarf; +} ELFUTILS_0.159;
\ No newline at end of file |