]> git.pld-linux.org Git - packages/gdb.git/blob - gdb-6.6-buildid-locate-solib-missing-ids.patch
- updated build-id patches from fedora to gdb 7.6
[packages/gdb.git] / gdb-6.6-buildid-locate-solib-missing-ids.patch
1 Index: gdb-7.5.50.20130310/gdb/solib-svr4.c
2 ===================================================================
3 --- gdb-7.5.50.20130310.orig/gdb/solib-svr4.c   2013-03-10 16:37:49.000000000 +0100
4 +++ gdb-7.5.50.20130310/gdb/solib-svr4.c        2013-03-10 16:43:45.498585091 +0100
5 @@ -1225,14 +1225,27 @@ svr4_read_so_list (CORE_ADDR lm, struct
6         }
7  
8        {
9 -       struct elf_build_id *build_id;
10 +       struct elf_build_id *build_id = NULL;
11  
12         strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
13         new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
14         /* May get overwritten below.  */
15         strcpy (new->so_name, new->so_original_name);
16  
17 -       build_id = build_id_addr_get (new->lm_info->l_ld);
18 +       /* In the case the main executable was found according to its build-id
19 +          (from a core file) prevent loading a different build of a library
20 +          with accidentally the same SO_NAME.
21 +
22 +          It suppresses bogus backtraces (and prints "??" there instead) if
23 +          the on-disk files no longer match the running program version.
24 +
25 +          If the main executable was not loaded according to its build-id do
26 +          not do any build-id checking of the libraries.  There may be missing
27 +          build-ids dumped in the core file and we would map all the libraries
28 +          to the only existing file loaded that time - the executable.  */
29 +       if (symfile_objfile != NULL
30 +           && (symfile_objfile->flags & OBJF_BUILD_ID_CORE_LOADED) != 0)
31 +         build_id = build_id_addr_get (new->lm_info->l_ld);
32         if (build_id != NULL)
33           {
34             char *name, *build_id_filename;
35 @@ -1247,23 +1260,7 @@ svr4_read_so_list (CORE_ADDR lm, struct
36                 xfree (name);
37               }
38             else
39 -             {
40 -               debug_print_missing (new->so_name, build_id_filename);
41 -
42 -               /* In the case the main executable was found according to
43 -                  its build-id (from a core file) prevent loading
44 -                  a different build of a library with accidentally the
45 -                  same SO_NAME.
46 -
47 -                  It suppresses bogus backtraces (and prints "??" there
48 -                  instead) if the on-disk files no longer match the
49 -                  running program version.  */
50 -
51 -               if (symfile_objfile != NULL
52 -                   && (symfile_objfile->flags
53 -                       & OBJF_BUILD_ID_CORE_LOADED) != 0)
54 -                 new->so_name[0] = 0;
55 -             }
56 +             debug_print_missing (new->so_name, build_id_filename);
57  
58             xfree (build_id_filename);
59             xfree (build_id);
This page took 0.038813 seconds and 3 git commands to generate.