]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
propagate from branch 'com.redhat.elfutils.roland.pending' (head e5cfdd13aa39dfae16b9...
authorUlrich Drepper <drepper@redhat.com>
Wed, 12 Jul 2006 19:42:23 +0000 (19:42 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 12 Jul 2006 19:42:23 +0000 (19:42 +0000)
            to branch 'com.redhat.elfutils' (head 60222fc1981540f15e674b6705fd7a6f628f95a4)

24 files changed:
NEWS
libdw/ChangeLog
libdw/dwarf_child.c
libdw/dwarf_getabbrev.c
libdw/dwarf_tag.c
libdw/libdw_form.c
libdw/memory-access.c
libdwfl/=ideas [new file with mode: 0644]
libdwfl/=oops [new file with mode: 0644]
libdwfl/ChangeLog
libdwfl/cu.c
libdwfl/dwfl_error.c
libdwfl/dwfl_module.c
libdwfl/dwfl_module_getdwarf.c
libdwfl/lines.c
libdwfl/relocate.c
libelf/ChangeLog
libelf/elf32_updatefile.c
libelf/elf32_updatenull.c
libelf/elf_begin.c
libelf/elf_getdata.c
src/ChangeLog
src/addr2line.c
tests/Makefile.am

diff --git a/NEWS b/NEWS
index a4d7c98812af0069908d98a4e7a9ad9534715c58..8d7685c9cebba7eaa011b12a8020ec31929c14ba 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,6 @@
 Version 0.122:
 
-libdwfl: New functions dwfl_module_getsymtab, dwfl_module_getsym.
-
-libebl:add function to test for relative relocation
+libebl: add function to test for relative relocation
 
 elflint: fix and extend DT_RELCOUNT/DT_RELACOUNT checks
 
@@ -11,6 +9,8 @@ libelf: add elf_gnu_hash
 
 elflint, readelf: add support for 64-bit SysV-style hash tables
 
+libdwfl: new functions dwfl_module_getsymtab, dwfl_module_getsym.
+
 Version 0.121:
 
 libelf: bug fixes for rewriting existing files when using mmap.
index 69c160a2b6f962f47e2a0b42ab300578ea152872..d1b2dc6dbd0dd737bfda0a625c5468374d4e139e 100644 (file)
@@ -1,11 +1,3 @@
-2006-07-12  Ulrich Drepper  <drepper@redhat.com>
-
-       * dwarf_child.c: Adjust for internal_function_def removal.
-       * dwarf_getabbrev.c: Likewise.
-       * dwarf_tag.c: Likewise.
-       * libdw_form.c: Likewise.
-       * memory-access.c: Likewise.
-
 2006-06-28  Roland McGrath  <roland@redhat.com>
 
        * libdw.map: Export dwfl_linecu, dwfl_line_comp_dir.
index 42b38137a4a51646c88bd27e0646246862ba3cfd..30151e8116d8363ad1800558b461c6dda09c7e77 100644 (file)
@@ -1,5 +1,5 @@
 /* Return vhild of current DIE.
-   Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2003, 2004, 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -60,7 +60,7 @@
 
 
 unsigned char *
-internal_function
+internal_function_def
 __libdw_find_attr (Dwarf_Die *die, unsigned int search_name,
                   unsigned int *codep, unsigned int *formp)
 {
index 07bf6dfc4a9aa16c7b3852f631d3845d59dff73a..7fdbf81c323aa404558e7e19440e1d55c763f920 100644 (file)
@@ -1,5 +1,5 @@
 /* Get abbreviation at given offset.
-   Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2003, 2004, 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -58,7 +58,7 @@
 
 
 Dwarf_Abbrev *
-internal_function
+internal_function_def
 __libdw_getabbrev (dbg, cu, offset, lengthp, result)
      Dwarf *dbg;
      struct Dwarf_CU *cu;
index 05222821b8768b9c6b8fdf7d5859ab8a5c8d8390..80d1951027a7e778893369f3c48427b907daccb7 100644 (file)
@@ -1,5 +1,5 @@
 /* Return tag of given DIE.
-   Copyright (C) 2003, 2004, 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2003, 2004, 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -56,7 +56,7 @@
 
 
 Dwarf_Abbrev *
-internal_function
+internal_function_def
 __libdw_findabbrev (struct Dwarf_CU *cu, unsigned int code)
 {
   Dwarf_Abbrev *abb;
index 779b6c0e0757bd33228beaa797cd917ee24daf77..bf76fcda19a60bb9f137f54d88466306edf0483f 100644 (file)
@@ -1,5 +1,5 @@
 /* Helper functions for form handling.
-   Copyright (C) 2003, 2004, 2006 Red Hat, Inc.
+   Copyright (C) 2003, 2004 Red Hat, Inc.
    This file is part of Red Hat elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2003.
 
@@ -59,7 +59,7 @@
 
 
 size_t
-internal_function
+internal_function_def
 __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form,
                      const unsigned char *valp)
 {
index c9a0ca76da76a28220c1af5b9b5867d92286f360..0b361a03e49d77d9221a842a4ffc392f1be58d85 100644 (file)
@@ -1,5 +1,5 @@
 /* Out of line functions for memory-access.h macros.
-   Copyright (C) 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -54,7 +54,7 @@
 #include "memory-access.h"
 
 uint64_t
-internal_function
+internal_function_def
 __libdw_get_uleb128 (uint64_t acc, unsigned int i, const unsigned char **addrp)
 {
   unsigned char __b;
@@ -62,7 +62,7 @@ __libdw_get_uleb128 (uint64_t acc, unsigned int i, const unsigned char **addrp)
 }
 
 int64_t
-internal_function
+internal_function_def
 __libdw_get_sleb128 (int64_t acc, unsigned int i, const unsigned char **addrp)
 {
   unsigned char __b;
diff --git a/libdwfl/=ideas b/libdwfl/=ideas
new file mode 100644 (file)
index 0000000..bdce325
--- /dev/null
@@ -0,0 +1,16 @@
+* dev+ino+mtime hash table, global
+** share fd; if !isrel, share Elf*,Ebl*,Dwarf*
+
+* find_debuginfo
+  When local search fails, try "yum install-debugfor elf-file".
+  i.e., yum install `rpm -qf elffile --qf '%{SOURCERPM} %{V}-%{R} %{ARCH}\n' | awk '{ print substr($1, 1, length($1)-length("-" $2 ".src.rpm")) "-debuginfo-" $2 "." $3 }' `
+  done in rpm-python inside yum(?)
+** all yum ops should have a -qf mode, means `rpm -qf --qf %{name}.%{arch}`
+   plus debug-of modifier to name.arch or -qf *
+
+* libdw_findcu reads all cu hdrs from beginning
+** good for dwarf_offdie: find cu containing that offset
+** bad for dwarf_addrdie: reads in whole debuginfo file
+** when from aranges (dwarf_addrdie), could read cuhdr offset directly w/o scan
+*** aranges really store cu header offset, but libdw adds in header size to
+    get cu die offset; but libdw_findcu interning should start with header
diff --git a/libdwfl/=oops b/libdwfl/=oops
new file mode 100644 (file)
index 0000000..bba65b0
--- /dev/null
@@ -0,0 +1,88 @@
+* regexp on multiple formats to yield records (pc, mod, sym, offset, size?)
+
+glibc backtrace_symbols_fd:
+
+foo.so(sym+0x123)[0x345]
+foo.so(sym-0x123)[0x345]
+foobar[0x12345678]
+
+       ======= Backtrace: =========
+       /lib/libc.so.6[0x715124]
+       /lib/libc.so.6(__libc_free+0x77)[0x71565f]
+       ./loser[0x80483f8]
+       /lib/libc.so.6(__libc_start_main+0xdf)[0x6c6d5f]
+       ./loser[0x804832d]
+
+-->
+       (0x715124, "/lib/libc.so.6", , , )
+       (0x71565f, "/lib/libc.so.6", "__libc_free", +0x77, )
+       (0x80483f8, "./loser", , , )
+       (0x6c6d5f, "/lib/libc.so.6", "__libc_start_main", +0xdf, )
+       (0x804832d, "./loser", , , )
+
+
+i386 kernel oops:
+
+                st_size
+[<%x>] sym+0x123/0x32
+[<%x>] sym-0x123/0x32
+[<%x>] sym+0x123/0x32 [mod]
+
+       \r <1>Unable to handle kernel NULL pointer dereference at virtual address 00000000
+       \r printing eip:
+       \rf8c54000
+       \r*pde = 2f36a001
+       \rOops: 0002 [#2]
+       \rSMP
+       \rlast sysfs file: /block/hdc/removable
+       \rModules linked in: oopsmod2(U) oopsmod(U) nfs lockd nfs_acl ipv6 lp ppdev autofs4 rfcomm l2cap bluetooth sunrpc video button battery ac parport_pc parport floppy ohci1394 ieee1394 hw_random e1000 snd_intel8x0 snd_ac97_codec snd_ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer i2c_i801 snd soundcore i2c_core ehci_hcd snd_page_alloc shpchp uhci_hcd dm_snapshot dm_zero dm_mirror dm_mod ext3 jbd ata_piix libata sd_mod scsi_mod
+       \rCPU:    0
+       \rEIP:    0060:[<f8c54000>]    Not tainted VLI
+       \rEFLAGS: 00010286   (2.6.14-1.1773_FC5smp)
+       \rEIP is at crasher+0x0/0xc [oopsmod2]
+       \reax: f8bd2000   ebx: f8c54380   ecx: f8c54380   edx: 00000001
+       \resi: 00000000   edi: 00000000   ebp: eecb8000   esp: eecb8fa8
+       \rds: 007b   es: 007b   ss: 0068
+       \rProcess insmod (pid: 3454, threadinfo=eecb8000 task=f768eaa0)
+       \rStack: f8bd2006 c01393d7 083d8018 00000000 c0103f19 083d8018 000109ca 083d8008
+       \r       00000000 00000000 bfc73888 ffffffda 0000007b c010007b 00000080 0059a402
+       \r       00000073 00000206 bfc7381c 0000007b 00000000 00000000
+       \rCall Trace:
+       \r [<f8bd2006>] init_crash+0x6/0x9 [oopsmod2]     [<c01393d7>] sys_init_module+0xe2/0x205
+       \r [<c0103f19>] syscall_call+0x7/0xb
+
+-->
+       kernel-release "2.6.14-1.1773_FC5smp"
+       (0xf8c54000, "oopsmod2", "crasher", 0x0, 0xc)
+       (0xf8bd2006, "oopsmod2", "init_crash", +0x6, 0x9)
+       (0xc01393d7, "kernel", "sys_init_module", +0xe2, 0x205)
+       (0xc0103f19, "kernel", "syscall_call", +0x7, 0xb)
+
+
+x86-64 oops:
+
+[<%x>]
+<%x>{sym+%d}
+<%x>{sym-%d}
+<%x>{:mod:sym+%d}
+<%x>{:mod:sym-%d}
+
+kernel `uname -r`:
+
+... Not tainted  (%s)
+... Tainted: [A-Z]*  (%s)
+
+
+* guess mod loadbase from sym+ofs==pc -> pc-(symval+ofs)==bias
+
+* for kernel
+** seen-modules = "kernel", "mod", ...
+** dwfl_linux_kernel_report_offline with predicate = member seen-modules
+** intuit mod bases
+** dwfl_report_end, dwfl_report_begin, dwfl_report_elf on seen-modules w/bases
+
+* for user
+** seen-modules = files
+** dwfl_report_offline on seen-modules
+** intuit mod bases
+** dwfl_report_end, dwfl_report_begin, dwfl_report_elf on seen-modules w/bases
index dafa98c857e97149e1da4726975d64a7d244c97e..dd0b9b69eecfcfe2d9da1924dfdd4a0a474c0531 100644 (file)
@@ -1,12 +1,3 @@
-2006-07-12  Ulrich Drepper  <drepper@redhat.com>
-
-       * cu.c: Adjust for internal_function_def removal.
-       * dwfl_error.c: Likewise.
-       * dwfl_module.c: Likewise.
-       * dwfl_module_getdwarf.c: Likewise.
-       * lines.c: Likewise.
-       * relocate.c: Likewise.
-
 2006-07-11  Ulrich Drepper  <drepper@redhat.com>
 
        * dwfl_module.c (compare_modules): Don't return GElf_Sxword value,
index 8f01ea6bd2d0cb086d999aaac0e2c6be23d50573..4c6d876ef24e8f49521aa5a524022d03f5013246 100644 (file)
@@ -248,7 +248,7 @@ intern_cu (Dwfl_Module *mod, Dwarf_Off cuoff, struct dwfl_cu **result)
 /* Traverse all the CUs in the module.  */
 
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_nextcu (Dwfl_Module *mod, struct dwfl_cu *lastcu,
                  struct dwfl_cu **cu)
 {
@@ -315,7 +315,7 @@ arangecu (Dwfl_Module *mod, struct dwfl_arange *arange, struct dwfl_cu **cu)
 }
 
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_addrcu (Dwfl_Module *mod, Dwarf_Addr addr, struct dwfl_cu **cu)
 {
   struct dwfl_arange *arange;
index 414fbaf434380ca3faa6e3ffa05d6cc14ce9cac5..891fbf71b369ad4758ac860e7adcdd4e355ec90a 100644 (file)
@@ -1,5 +1,5 @@
 /* Error handling in libdwfl.
-   Copyright (C) 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -162,14 +162,14 @@ canonicalize (Dwfl_Error error)
 }
 
 int
-internal_function
+internal_function_def
 __libdwfl_canon_error (Dwfl_Error error)
 {
   return canonicalize (error);
 }
 
 void
-internal_function
+internal_function_def
 __libdwfl_seterrno (Dwfl_Error error)
 {
   int value = canonicalize (error);
index 3ccf8b1616ebb56640e194985cf13d1d8c8c84a2..e3db1e061f0e1e8679551e6f2438268172ee35c7 100644 (file)
@@ -64,7 +64,7 @@ nofree (void *arg __attribute__ ((unused)))
 }
 
 void
-internal_function
+internal_function_def
 __libdwfl_module_free (Dwfl_Module *mod)
 {
   if (mod->lazy_cu_root != NULL)
index 07248bf78e4d509405c5311e776ea6bfd62ba267..1688f1e4cc9828f8115f6fe9f72173b4b1f9616e 100644 (file)
@@ -319,7 +319,7 @@ find_symtab (Dwfl_Module *mod)
 
 /* Try to open a libebl backend for MOD.  */
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_module_getebl (Dwfl_Module *mod)
 {
   if (mod->ebl == NULL)
index ed4267fc3c510cf70e70c88900cb5e02421fbefa..49005a0d5356e0bb14ae743ddf7ef188a5442424 100644 (file)
@@ -1,5 +1,5 @@
 /* Fetch source line info for CU.
-   Copyright (C) 2005, 2006 Red Hat, Inc.
+   Copyright (C) 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -51,7 +51,7 @@
 #include "../libdw/libdwP.h"
 
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_cu_getsrclines (struct dwfl_cu *cu)
 {
   if (cu->lines == NULL)
index 96cedcc344681bc0419738c1948b026410f22c33..f0013e3b978f192204dfd48514505aa41d8dbf58 100644 (file)
@@ -55,7 +55,7 @@ typedef uint8_t GElf_Byte;
    We update the section header in place to cache the result.  */
 
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_relocate_value (Dwfl_Module *mod, size_t symshstrndx,
                          Elf32_Word shndx, GElf_Addr *value)
 {
@@ -97,7 +97,7 @@ __libdwfl_relocate_value (Dwfl_Module *mod, size_t symshstrndx,
 }
 
 Dwfl_Error
-internal_function
+internal_function_def
 __libdwfl_relocate (Dwfl_Module *mod, Elf *debugfile)
 {
   assert (mod->e_type == ET_REL);
index 77bafae300aa83cd2b669d1ff182d50ebe2a1860..baf589745ad9a72d11c4224de578bd26c52d9425 100644 (file)
@@ -1,10 +1,3 @@
-2006-07-12  Ulrich Drepper  <drepper@redhat.com>
-
-       * elf32_updatefile.c: Adjust for internal_function_def removal.
-       * elf32_updatenull.c: Likewise.
-       * elf_begin.c: Likewise.
-       * elf_getdata.c: Likewise.
-
 2006-07-11  Ulrich Drepper  <drepper@redhat.com>
 
        * libelf.h: Define ELF_T_GNUHASH.
index 682536515017aedfd6c74d5aaa492aade8f16fd5..6eab3cf03f082f81b96d5b552752e13a7e19b397 100644 (file)
@@ -112,7 +112,7 @@ sort_sections (Elf_Scn **scns, Elf_ScnList *list)
 
 
 int
-internal_function
+internal_function_def
 __elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum)
 {
   ElfW2(LIBELFBITS,Ehdr) *ehdr;
@@ -444,7 +444,7 @@ fill (int fd, off_t pos, size_t len, char *fillbuf, size_t *filledp)
 
 
 int
-internal_function
+internal_function_def
 __elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum)
 {
   char fillbuf[FILLBUFSIZE];
index 3b926c1f27bdb6eda4154290ceb1c72b9e6d5257..3516c091a4cfbc056e7c21a5762a0176ce1cfe02 100644 (file)
@@ -132,7 +132,7 @@ ELFW(default_ehdr,LIBELFBITS) (Elf *elf, ElfW2(LIBELFBITS,Ehdr) *ehdr,
 
 
 off_t
-internal_function
+internal_function_def
 __elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum)
 {
   ElfW2(LIBELFBITS,Ehdr) *ehdr = INTUSE(elfw2(LIBELFBITS,getehdr)) (elf);
index be52f464dceb7de94de34cd9df2e96a6ba83bc63..c6ef794773845c79b10170a9c5828bc2db3b6c30 100644 (file)
@@ -1,5 +1,5 @@
 /* Create descriptor for processing file.
-   Copyright (C) 1998-2005, 2006 Red Hat, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc.
    This file is part of Red Hat elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
@@ -434,7 +434,7 @@ file_read_elf (int fildes, void *map_address, unsigned char *e_ident,
 
 
 Elf *
-internal_function
+internal_function_def
 __libelf_read_mmaped_file (int fildes, void *map_address,  off_t offset,
                           size_t maxsize, Elf_Cmd cmd, Elf *parent)
 {
@@ -702,7 +702,7 @@ read_long_names (Elf *elf)
 
 /* Read the next archive header.  */
 int
-internal_function
+internal_function_def
 __libelf_next_arhdr (elf)
      Elf *elf;
 {
index 1fa4a17fce1c5465b36561cb5cf85fd14e9e9e33..5e37cbeb0367e54a5f911c0ec1a4df1f42af93ca 100644 (file)
@@ -215,7 +215,7 @@ convert_data (Elf_Scn *scn, int version __attribute__ ((unused)), int eclass,
 
 /* Store the information for the raw data in the `rawdata' element.  */
 int
-internal_function
+internal_function_def
 __libelf_set_rawdata (Elf_Scn *scn)
 {
   size_t offset;
index 3432dce64bf5a848ac51cc6a465bd83cf4ed8a85..38d9341f69428bcd217680dcc5b97c1ba246ee9c 100644 (file)
@@ -1,7 +1,11 @@
-2006-07-11  Ulrich Drepper  <drepper@redhat.com>
+2006-07-11  Roland McGrath  <roland@redhat.com>
 
-       * readelf.c (handle_gnu_hash): Adjust for final form of .gnu.hash.
-       * elflint.c (check_gnu_hash): Likewise.
+       * addr2line.c (options): English fix in -f doc string.
+
+       * addr2line.c (use_comp_dir): New variable.
+       (options, parse_opt): Grok -A/--absolute to set it.
+       (handle_address): If set, prepend dwfl_line_comp_dir results to
+       relative file names.
 
 2006-07-06  Ulrich Drepper  <drepper@redhat.com>
 
        * Makefile.am: Add hacks to create dependency files for non-generic
        linker.
 
-2006-06-28  Roland McGrath  <roland@redhat.com>
-
-       * addr2line.c (use_comp_dir): New variable.
-       (options, parse_opt): Grok -A/--absolute to set it.
-       (handle_address): If set, prepend dwfl_line_comp_dir results to
-       relative file names.
-
 2006-06-12  Ulrich Drepper  <drepper@redhat.com>
 
        * ldgeneric.c (ld_generic_generate_sections): Don't create .interp
index c849ec792f5701576ad0731416e763f2b4cbb052..e2ea4b4d6123f39a2af96d3649b28acc4f4d70e2 100644 (file)
@@ -64,8 +64,8 @@ static const struct argp_option options[] =
   { NULL, 0, NULL, 0, N_("Output Selection:"), 0 },
   { "basenames", 's', NULL, 0, N_("Show only base names of source files"), 0 },
   { "absolute", 'A', NULL, 0,
-    N_("Show absolute file names using compilation directory"), 0 },
-  { "functions", 'f', NULL, 0, N_("Additional show function names"), 0 },
+    N_("Show absolute directory names of source files"), 0 },
+  { "functions", 'f', NULL, 0, N_("Also show function names"), 0 },
 
   { NULL, 0, NULL, 0, N_("Miscellaneous:"), 0 },
   /* Unsupported options.  */
index 0ceef1b93e2e5650f707548d1c5937551aa28bcc..b608a2bd46fea8452a4ab6fb4a9de9fd20377078 100644 (file)
@@ -57,7 +57,8 @@ noinst_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \
                  show-die-info get-files get-lines get-pubnames \
                  get-aranges allfcts line2addr addrscopes funcscopes \
                  show-abbrev hash newscn ecp dwflmodtest \
-                 find-prologues funcretval allregs rdwrmmap
+                 find-prologues funcretval allregs rdwrmmap \
+                 countcu
 # get-ciefde
 asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
            asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -183,6 +184,7 @@ addrscopes_LDADD = $(libdw) $(libmudflap)
 funcscopes_LDADD = $(libdw) $(libmudflap)
 funcretval_LDADD = $(libdw) $(libmudflap)
 allregs_LDADD = $(libdw) $(libmudflap)
+countcu_LDADD = $(libdw) $(libmudflap)
 find_prologues_LDADD = $(libdw) $(libmudflap)
 #show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) $(libmudflap)
 asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) $(libmudflap) -ldl