diff options
Diffstat (limited to 'source/d/binutils/binutils.addr2line.dynsymtab.diff')
-rw-r--r-- | source/d/binutils/binutils.addr2line.dynsymtab.diff | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/source/d/binutils/binutils.addr2line.dynsymtab.diff b/source/d/binutils/binutils.addr2line.dynsymtab.diff deleted file mode 100644 index ee71eb7e1..000000000 --- a/source/d/binutils/binutils.addr2line.dynsymtab.diff +++ /dev/null @@ -1,128 +0,0 @@ ---- ./bfd/opncls.c.orig 2013-02-27 14:28:03.000000000 -0600 -+++ ./bfd/opncls.c 2013-04-02 15:56:55.703204116 -0500 -@@ -1297,6 +1297,8 @@ - bfd_malloc (strlen (debug_file_directory) + 1 - + (canon_dirlen > dirlen ? canon_dirlen : dirlen) - + strlen (".debug/") -+#define FEDORA_LIB_DEBUG_DIR "/usr/lib/debug/" -+ + strlen (FEDORA_LIB_DEBUG_DIR) + strlen ("usr/") - + strlen (base) - + 1); - if (debugfile == NULL) -@@ -1332,6 +1334,26 @@ - return debugfile; - } - -+ /* Then try in the global debug dir for Fedora libraries. */ -+ sprintf (debugfile, "%s%s%s", FEDORA_LIB_DEBUG_DIR, dir, base); -+ if (separate_debug_file_exists (debugfile, crc32)) -+ { -+ free (base); -+ free (dir); -+ free (canon_dir); -+ return debugfile; -+ } -+ -+ /* Then try in the usr subdirectory of the global debug dir for Fedora libraries. */ -+ sprintf (debugfile, "%s/usr%s%s", FEDORA_LIB_DEBUG_DIR, dir, base); -+ if (separate_debug_file_exists (debugfile, crc32)) -+ { -+ free (base); -+ free (dir); -+ free (canon_dir); -+ return debugfile; -+ } -+ - /* Then try in the global debugfile directory. */ - strcpy (debugfile, debug_file_directory); - dirlen = strlen (debug_file_directory) - 1; ---- ./bfd/dwarf2.c.orig 2013-02-27 14:28:03.000000000 -0600 -+++ ./bfd/dwarf2.c 2013-04-02 15:56:55.704204116 -0500 -@@ -3339,8 +3339,11 @@ - struct dwarf2_debug *stash; - /* What address are we looking for? */ - bfd_vma addr; -+ /* What is the address without relocation ? */ -+ bfd_vma unrelocated_addr; - struct comp_unit* each; - bfd_vma found = FALSE; -+ bfd_vma possible_find = FALSE; - bfd_boolean do_line; - - *filename_ptr = NULL; -@@ -3380,6 +3383,12 @@ - else - abort (); - -+ /* If we are dealing with PIC code then the debug information -+ will be based on unrelocated addresses. Since we cannot be -+ sure if this is a PIC address we test both with and without -+ relocation. */ -+ unrelocated_addr = addr; -+ - if (section->output_section) - addr += section->output_section->vma + section->output_offset; - else -@@ -3442,6 +3451,16 @@ - stash)); - if (found) - goto done; -+ -+ if (! possible_find) -+ possible_find = ((each->arange.high == 0 -+ || comp_unit_contains_address (each, unrelocated_addr)) -+ && comp_unit_find_nearest_line (each, unrelocated_addr, -+ filename_ptr, -+ functionname_ptr, -+ linenumber_ptr, -+ discriminator_ptr, -+ stash)); - } - } - -@@ -3535,6 +3554,16 @@ - discriminator_ptr, - stash)); - -+ if (! found && ! do_line && ! possible_find) -+ possible_find = ((each->arange.high == 0 -+ || comp_unit_contains_address (each, unrelocated_addr)) -+ && comp_unit_find_nearest_line (each, unrelocated_addr, -+ filename_ptr, -+ functionname_ptr, -+ linenumber_ptr, -+ discriminator_ptr, -+ stash)); -+ - if ((bfd_vma) (stash->info_ptr - stash->sec_info_ptr) - == stash->sec->size) - { -@@ -3552,6 +3581,8 @@ - if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0) - unset_sections (stash); - -+ if (! found) -+ return possible_find; - return found; - } - ---- ./binutils/addr2line.c.orig 2013-02-27 14:28:03.000000000 -0600 -+++ ./binutils/addr2line.c 2013-04-02 15:56:55.703204116 -0500 -@@ -130,6 +130,17 @@ - symcount = bfd_canonicalize_symtab (abfd, syms); - if (symcount < 0) - bfd_fatal (bfd_get_filename (abfd)); -+ -+ /* If there are no symbols left after canonicalization and -+ we have not tried the dynamic symbols then give them a go. */ -+ if (symcount == 0 -+ && ! dynamic -+ && (storage = bfd_get_dynamic_symtab_upper_bound (abfd)) > 0) -+ { -+ free (syms); -+ syms = xmalloc (storage); -+ symcount = bfd_canonicalize_dynamic_symtab (abfd, syms); -+ } - } - - /* These global variables are used to pass information between |