summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/ChangeLog4
-rw-r--r--lib/eu-config.h17
-rw-r--r--libdw/ChangeLog14
-rw-r--r--libdw/dwarf_arrayorder.c2
-rw-r--r--libdw/dwarf_bitoffset.c2
-rw-r--r--libdw/dwarf_bitsize.c2
-rw-r--r--libdw/dwarf_bytesize.c2
-rw-r--r--libdw/dwarf_decl_column.c4
-rw-r--r--libdw/dwarf_decl_file.c2
-rw-r--r--libdw/dwarf_decl_line.c2
-rw-r--r--libdw/dwarf_srclang.c2
-rw-r--r--libdw/libdw.map16
-rw-r--r--libdwfl/ChangeLog4
-rw-r--r--libdwfl/dwfl_module_build_id.c22
14 files changed, 81 insertions, 14 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 06991826..73f8e73a 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-09 Roland McGrath <[email protected]>
+
+ * eu-config.h (OLD_VERSION, NEW_VERSION, COMPAT_VERSION): New macros.
+
2009-01-23 Roland McGrath <[email protected]>
* eu-config.h: Add multiple inclusion protection.
diff --git a/lib/eu-config.h b/lib/eu-config.h
index 32f501ae..f814604f 100644
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -183,4 +183,21 @@ asm (".section predict_data, \"aw\"; .previous\n"
#define ELFUTILS_HEADER(name) <lib##name.h>
+#ifdef SHARED
+# define OLD_VERSION(name, version) \
+ asm (".globl _compat." #version "." #name "\n" \
+ "_compat." #version "." #name " = " #name "\n" \
+ ".symver _compat." #version "." #name "," #name "@" #version);
+# define NEW_VERSION(name, version) \
+ asm (".symver " #name "," #name "@@@" #version);
+# define COMPAT_VERSION(name, version, prefix) \
+ asm (".symver _compat." #version "." #name "," #name "@" #version); \
+ __typeof (name) _compat_##prefix##_##name asm ("_compat." #version "." #name);
+#else
+# define OLD_VERSION(name, version) /* Nothing for static linking. */
+# define NEW_VERSION(name, version) /* Nothing for static linking. */
+# define COMPAT_VERSION(name, version, prefix) error "should use #ifdef SHARED"
+#endif
+
+
#endif /* eu-config.h */
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 30c84897..3aa75c81 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,17 @@
+2009-08-09 Roland McGrath <[email protected]>
+
+ * libdw.map (ELFUTILS_0.143): New version set,
+ inherits from ELFUTILS_0.142.
+ * dwarf_arrayorder.c: Use OLD_VERSION and NEW_VERSION to define an
+ alias in the ELFUTILS_0.122 version set and the default in the new set.
+ * dwarf_srclang.c: Likewise.
+ * dwarf_decl_file.c: Likewise.
+ * dwarf_decl_line.c: Likewise.
+ * dwarf_decl_column.c: Likewise.
+ * dwarf_bytesize.c: Likewise.
+ * dwarf_bitsize.c: Likewise.
+ * dwarf_bitoffset.c: Likewise.
+
2009-08-07 Roland McGrath <[email protected]>
* dwarf_arrayorder.c: Use dwarf_attr_integrate.
diff --git a/libdw/dwarf_arrayorder.c b/libdw/dwarf_arrayorder.c
index 35939242..4929fb3c 100644
--- a/libdw/dwarf_arrayorder.c
+++ b/libdw/dwarf_arrayorder.c
@@ -67,3 +67,5 @@ dwarf_arrayorder (die)
(die, DW_AT_ordering, &attr_mem),
&value) == 0 ? (int) value : -1;
}
+OLD_VERSION (dwarf_arrayorder, ELFUTILS_0.122)
+NEW_VERSION (dwarf_arrayorder, ELFUTILS_0.143)
diff --git a/libdw/dwarf_bitoffset.c b/libdw/dwarf_bitoffset.c
index 99d1071f..3ab14683 100644
--- a/libdw/dwarf_bitoffset.c
+++ b/libdw/dwarf_bitoffset.c
@@ -67,3 +67,5 @@ dwarf_bitoffset (die)
(die, DW_AT_bit_offset, &attr_mem),
&value) == 0 ? (int) value : -1;
}
+OLD_VERSION (dwarf_bitoffset, ELFUTILS_0.122)
+NEW_VERSION (dwarf_bitoffset, ELFUTILS_0.143)
diff --git a/libdw/dwarf_bitsize.c b/libdw/dwarf_bitsize.c
index 7cfbc5d6..67d97dc1 100644
--- a/libdw/dwarf_bitsize.c
+++ b/libdw/dwarf_bitsize.c
@@ -67,3 +67,5 @@ dwarf_bitsize (die)
(die, DW_AT_bit_size, &attr_mem),
&value) == 0 ? (int) value : -1;
}
+OLD_VERSION (dwarf_bitsize, ELFUTILS_0.122)
+NEW_VERSION (dwarf_bitsize, ELFUTILS_0.143)
diff --git a/libdw/dwarf_bytesize.c b/libdw/dwarf_bytesize.c
index 536fcd58..2f2e1985 100644
--- a/libdw/dwarf_bytesize.c
+++ b/libdw/dwarf_bytesize.c
@@ -67,3 +67,5 @@ dwarf_bytesize (die)
(die, DW_AT_byte_size, &attr_mem),
&value) == 0 ? (int) value : -1;
}
+OLD_VERSION (dwarf_bytesize, ELFUTILS_0.122)
+NEW_VERSION (dwarf_bytesize, ELFUTILS_0.143)
diff --git a/libdw/dwarf_decl_column.c b/libdw/dwarf_decl_column.c
index 5e0f3e0c..11ba5d74 100644
--- a/libdw/dwarf_decl_column.c
+++ b/libdw/dwarf_decl_column.c
@@ -1,5 +1,5 @@
/* Get column number of beginning of given declaration.
- Copyright (C) 2005 Red Hat, Inc.
+ Copyright (C) 2005-2009 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <[email protected]>, 2005.
@@ -61,3 +61,5 @@ dwarf_decl_column (Dwarf_Die *decl, int *colp)
{
return __libdw_attr_intval (decl, colp, DW_AT_decl_column);
}
+OLD_VERSION (dwarf_decl_column, ELFUTILS_0.122)
+NEW_VERSION (dwarf_decl_column, ELFUTILS_0.143)
diff --git a/libdw/dwarf_decl_file.c b/libdw/dwarf_decl_file.c
index b5ea27db..c81e35b8 100644
--- a/libdw/dwarf_decl_file.c
+++ b/libdw/dwarf_decl_file.c
@@ -106,3 +106,5 @@ dwarf_decl_file (Dwarf_Die *die)
return cu->files->info[idx].name;
}
+OLD_VERSION (dwarf_decl_file, ELFUTILS_0.122)
+NEW_VERSION (dwarf_decl_file, ELFUTILS_0.143)
diff --git a/libdw/dwarf_decl_line.c b/libdw/dwarf_decl_line.c
index 27abc504..ab64e510 100644
--- a/libdw/dwarf_decl_line.c
+++ b/libdw/dwarf_decl_line.c
@@ -63,6 +63,8 @@ dwarf_decl_line (Dwarf_Die *func, int *linep)
{
return __libdw_attr_intval (func, linep, DW_AT_decl_line);
}
+OLD_VERSION (dwarf_decl_line, ELFUTILS_0.122)
+NEW_VERSION (dwarf_decl_line, ELFUTILS_0.143)
int internal_function
diff --git a/libdw/dwarf_srclang.c b/libdw/dwarf_srclang.c
index 7d0e9071..f1ff954c 100644
--- a/libdw/dwarf_srclang.c
+++ b/libdw/dwarf_srclang.c
@@ -67,3 +67,5 @@ dwarf_srclang (die)
(die, DW_AT_language, &attr_mem),
&value) == 0 ? (int) value : -1;
}
+OLD_VERSION (dwarf_srclang, ELFUTILS_0.122)
+NEW_VERSION (dwarf_srclang, ELFUTILS_0.143)
diff --git a/libdw/libdw.map b/libdw/libdw.map
index b4759baf..6fc86b34 100644
--- a/libdw/libdw.map
+++ b/libdw/libdw.map
@@ -209,3 +209,19 @@ ELFUTILS_0.142 {
dwfl_module_dwarf_cfi;
dwfl_module_eh_cfi;
} ELFUTILS_0.138;
+
+ELFUTILS_0.143 {
+ global:
+ # Replaced ELFUTILS_0.122 versions. Both versions point to the
+ # same implementation, but users of the new symbol version can
+ # presume that they use dwarf_attr_integrate properly.
+ dwarf_arrayorder;
+ dwarf_bitoffset;
+ dwarf_bitsize;
+ dwarf_bytesize;
+ dwarf_decl_column;
+ dwarf_decl_file;
+ dwarf_decl_line;
+ dwarf_srclang;
+
+} ELFUTILS_0.142;
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 624f59b6..129d520f 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-09 Roland McGrath <[email protected]>
+
+ * dwfl_module_build_id.c: Use new macros for versioned definitions.
+
2009-07-08 Roland McGrath <[email protected]>
* dwfl_module_dwarf_cfi.c: New file.
diff --git a/libdwfl/dwfl_module_build_id.c b/libdwfl/dwfl_module_build_id.c
index d7bbb3ca..07a62ba4 100644
--- a/libdwfl/dwfl_module_build_id.c
+++ b/libdwfl/dwfl_module_build_id.c
@@ -150,8 +150,8 @@ __libdwfl_find_build_id (Dwfl_Module *mod, bool set, Elf *elf)
}
int
-__dwfl_module_build_id (Dwfl_Module *mod,
- const unsigned char **bits, GElf_Addr *vaddr)
+dwfl_module_build_id (Dwfl_Module *mod,
+ const unsigned char **bits, GElf_Addr *vaddr)
{
if (mod == NULL)
return -1;
@@ -174,24 +174,20 @@ __dwfl_module_build_id (Dwfl_Module *mod,
*vaddr = mod->build_id_vaddr;
return mod->build_id_len;
}
+INTDEF (dwfl_module_build_id)
+NEW_VERSION (dwfl_module_build_id, ELFUTILS_0.138)
+
#ifdef SHARED
-extern __typeof__ (dwfl_module_build_id) INTUSE(dwfl_module_build_id)
- __attribute__ ((alias ("__dwfl_module_build_id")));
-asm (".symver "
- "__dwfl_module_build_id, dwfl_module_build_id@@ELFUTILS_0.138");
+COMPAT_VERSION (dwfl_module_build_id, ELFUTILS_0.130, vaddr_at_end)
int
-_BUG_COMPAT_dwfl_module_build_id (Dwfl_Module *mod,
- const unsigned char **bits, GElf_Addr *vaddr)
+_compat_vaddr_at_end_dwfl_module_build_id (Dwfl_Module *mod,
+ const unsigned char **bits,
+ GElf_Addr *vaddr)
{
int result = INTUSE(dwfl_module_build_id) (mod, bits, vaddr);
if (result > 0)
*vaddr += (result + 3) & -4;
return result;
}
-asm (".symver "
- "_BUG_COMPAT_dwfl_module_build_id, dwfl_module_build_id@ELFUTILS_0.130");
-#else
-extern __typeof__ (dwfl_module_build_id) dwfl_module_build_id
- __attribute__ ((alias ("__dwfl_module_build_id")));
#endif