summaryrefslogtreecommitdiff
path: root/libdwarf
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2019-06-29 15:27:18 +0000
committerEd Maste <emaste@FreeBSD.org>2019-06-29 15:27:18 +0000
commita5b08c1484eac2c6a65e726f550b3189ff84c6c8 (patch)
tree01cd9d6d76e2c378b391422460c6f233ead08179 /libdwarf
parent2b92b30119ed91ed88f102ba9ecc40cd1c046a65 (diff)
Notes
Diffstat (limited to 'libdwarf')
-rw-r--r--libdwarf/dwarf.h20
-rw-r--r--libdwarf/dwarf_dump.c40
-rw-r--r--libdwarf/libdwarf_attr.c7
-rw-r--r--libdwarf/libdwarf_reloc.c10
4 files changed, 67 insertions, 10 deletions
diff --git a/libdwarf/dwarf.h b/libdwarf/dwarf.h
index 632256886981..8f3733566527 100644
--- a/libdwarf/dwarf.h
+++ b/libdwarf/dwarf.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: dwarf.h 3494 2016-09-20 17:16:13Z emaste $
+ * $Id: dwarf.h 3749 2019-06-28 01:10:44Z emaste $
*/
#ifndef _DWARF_H_
@@ -523,6 +523,24 @@
#define DW_LANG_ObjC_plus_plus 0x0011
#define DW_LANG_UPC 0x0012
#define DW_LANG_D 0x0013
+#define DW_LANG_Python 0x0014
+#define DW_LANG_OpenCL 0x0015
+#define DW_LANG_Go 0x0016
+#define DW_LANG_Modula3 0x0017
+#define DW_LANG_Haskell 0x0018
+#define DW_LANG_C_plus_plus_03 0x0019
+#define DW_LANG_C_plus_plus_11 0x001a
+#define DW_LANG_OCaml 0x001b
+#define DW_LANG_Rust 0x001c
+#define DW_LANG_C11 0x001d
+#define DW_LANG_Swift 0x001e
+#define DW_LANG_Julia 0x001f
+#define DW_LANG_Dylan 0x0020
+#define DW_LANG_C_plus_plus_14 0x0021
+#define DW_LANG_Fortran03 0x0022
+#define DW_LANG_Fortran08 0x0023
+#define DW_LANG_RenderScript 0x0024
+#define DW_LANG_BLISS 0x0025
#define DW_LANG_lo_user 0x8000
#define DW_LANG_Mips_Assembler 0x8001
#define DW_LANG_hi_user 0xffff
diff --git a/libdwarf/dwarf_dump.c b/libdwarf/dwarf_dump.c
index aa7ef1dfc82d..fe61bffc6a17 100644
--- a/libdwarf/dwarf_dump.c
+++ b/libdwarf/dwarf_dump.c
@@ -27,7 +27,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: dwarf_dump.c 3494 2016-09-20 17:16:13Z emaste $");
+ELFTC_VCSID("$Id: dwarf_dump.c 3749 2019-06-28 01:10:44Z emaste $");
int
dwarf_get_ACCESS_name(unsigned access, const char **s)
@@ -605,7 +605,7 @@ dwarf_get_DS_name(unsigned ds, const char **s)
case DW_DS_leading_separate:
*s = "DW_DS_leading_separate"; break;
case DW_DS_trailing_separate:
- *s = "DW_DS_trailing_separate";
+ *s = "DW_DS_trailing_separate"; break;
default:
return (DW_DLV_NO_ENTRY);
}
@@ -788,6 +788,42 @@ dwarf_get_LANG_name(unsigned lang, const char **s)
*s = "DW_LANG_UPC"; break;
case DW_LANG_D:
*s = "DW_LANG_D"; break;
+ case DW_LANG_Python:
+ *s = "DW_LANG_Python"; break;
+ case DW_LANG_OpenCL:
+ *s = "DW_LANG_OpenCL"; break;
+ case DW_LANG_Go:
+ *s = "DW_LANG_Go"; break;
+ case DW_LANG_Modula3:
+ *s = "DW_LANG_Modula3"; break;
+ case DW_LANG_Haskell:
+ *s = "DW_LANG_Haskell"; break;
+ case DW_LANG_C_plus_plus_03:
+ *s = "DW_LANG_C_plus_plus_03"; break;
+ case DW_LANG_C_plus_plus_11:
+ *s = "DW_LANG_C_plus_plus_11"; break;
+ case DW_LANG_OCaml:
+ *s = "DW_LANG_OCaml"; break;
+ case DW_LANG_Rust:
+ *s = "DW_LANG_Rust"; break;
+ case DW_LANG_C11:
+ *s = "DW_LANG_C11"; break;
+ case DW_LANG_Swift:
+ *s = "DW_LANG_Swift"; break;
+ case DW_LANG_Julia:
+ *s = "DW_LANG_Julia"; break;
+ case DW_LANG_Dylan:
+ *s = "DW_LANG_Dylan"; break;
+ case DW_LANG_C_plus_plus_14:
+ *s = "DW_LANG_C_plus_plus_14"; break;
+ case DW_LANG_Fortran03:
+ *s = "DW_LANG_Fortran03"; break;
+ case DW_LANG_Fortran08:
+ *s = "DW_LANG_Fortran08"; break;
+ case DW_LANG_RenderScript:
+ *s = "DW_LANG_RenderScript"; break;
+ case DW_LANG_BLISS:
+ *s = "DW_LANG_BLISS"; break;
case DW_LANG_lo_user:
*s = "DW_LANG_lo_user"; break;
case DW_LANG_Mips_Assembler:
diff --git a/libdwarf/libdwarf_attr.c b/libdwarf/libdwarf_attr.c
index dfbbc484c352..a25deedaa5b1 100644
--- a/libdwarf/libdwarf_attr.c
+++ b/libdwarf/libdwarf_attr.c
@@ -27,7 +27,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: libdwarf_attr.c 3064 2014-06-06 19:35:55Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_attr.c 3748 2019-06-28 01:11:13Z emaste $");
int
_dwarf_attr_alloc(Dwarf_Die die, Dwarf_Attribute *atp, Dwarf_Error *error)
@@ -100,7 +100,6 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, uint64_t *offsetp,
uint64_t form, int indirect, Dwarf_Error *error)
{
struct _Dwarf_Attribute atref;
- Dwarf_Section *str;
int ret;
ret = DW_DLE_NONE;
@@ -183,9 +182,7 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, uint64_t *offsetp,
break;
case DW_FORM_strp:
atref.u[0].u64 = dbg->read(ds->ds_data, offsetp, dwarf_size);
- str = _dwarf_find_section(dbg, ".debug_str");
- assert(str != NULL);
- atref.u[1].s = (char *) str->ds_data + atref.u[0].u64;
+ atref.u[1].s = _dwarf_strtab_get_table(dbg) + atref.u[0].u64;
break;
case DW_FORM_ref_sig8:
atref.u[0].u64 = 8;
diff --git a/libdwarf/libdwarf_reloc.c b/libdwarf/libdwarf_reloc.c
index 2b1ad7214db6..e76675838e41 100644
--- a/libdwarf/libdwarf_reloc.c
+++ b/libdwarf/libdwarf_reloc.c
@@ -26,7 +26,7 @@
#include "_libdwarf.h"
-ELFTC_VCSID("$Id: libdwarf_reloc.c 3578 2017-09-14 02:21:28Z emaste $");
+ELFTC_VCSID("$Id: libdwarf_reloc.c 3741 2019-06-07 06:32:01Z jkoshy $");
Dwarf_Unsigned
_dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64)
@@ -44,7 +44,7 @@ _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64)
case DW_ISA_SPARC:
return (is64 ? R_SPARC_UA64 : R_SPARC_UA32);
case DW_ISA_PPC:
- return (R_PPC_ADDR32);
+ return (is64 ? R_PPC64_ADDR64 : R_PPC_ADDR32);
case DW_ISA_ARM:
return (R_ARM_ABS32);
case DW_ISA_MIPS:
@@ -97,6 +97,12 @@ _dwarf_get_reloc_size(Dwarf_Debug dbg, Dwarf_Unsigned rel_type)
if (rel_type == R_PPC_ADDR32)
return (4);
break;
+ case EM_PPC64:
+ if (rel_type == R_PPC_ADDR32)
+ return (4);
+ else if (rel_type == R_PPC64_ADDR64)
+ return (8);
+ break;
case EM_MIPS:
if (rel_type == R_MIPS_32)
return (4);