* coffread.c (coff_symfile_read): Make a cleanup for 'debugfile'
[platform/upstream/binutils.git] / gdb / elfread.c
1 /* Read ELF (Executable and Linking Format) object files for GDB.
2
3    Copyright (C) 1991-2012 Free Software Foundation, Inc.
4
5    Written by Fred Fish at Cygnus Support.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "bfd.h"
24 #include "gdb_string.h"
25 #include "elf-bfd.h"
26 #include "elf/common.h"
27 #include "elf/internal.h"
28 #include "elf/mips.h"
29 #include "symtab.h"
30 #include "symfile.h"
31 #include "objfiles.h"
32 #include "buildsym.h"
33 #include "stabsread.h"
34 #include "gdb-stabs.h"
35 #include "complaints.h"
36 #include "demangle.h"
37 #include "psympriv.h"
38 #include "filenames.h"
39 #include "probe.h"
40 #include "arch-utils.h"
41 #include "gdbtypes.h"
42 #include "value.h"
43 #include "infcall.h"
44 #include "gdbthread.h"
45 #include "regcache.h"
46 #include "bcache.h"
47 #include "gdb_bfd.h"
48
49 extern void _initialize_elfread (void);
50
51 /* Forward declarations.  */
52 static const struct sym_fns elf_sym_fns_gdb_index;
53 static const struct sym_fns elf_sym_fns_lazy_psyms;
54
55 /* The struct elfinfo is available only during ELF symbol table and
56    psymtab reading.  It is destroyed at the completion of psymtab-reading.
57    It's local to elf_symfile_read.  */
58
59 struct elfinfo
60   {
61     asection *stabsect;         /* Section pointer for .stab section */
62     asection *stabindexsect;    /* Section pointer for .stab.index section */
63     asection *mdebugsect;       /* Section pointer for .mdebug section */
64   };
65
66 /* Per-objfile data for probe info.  */
67
68 static const struct objfile_data *probe_key = NULL;
69
70 static void free_elfinfo (void *);
71
72 /* Minimal symbols located at the GOT entries for .plt - that is the real
73    pointer where the given entry will jump to.  It gets updated by the real
74    function address during lazy ld.so resolving in the inferior.  These
75    minimal symbols are indexed for <tab>-completion.  */
76
77 #define SYMBOL_GOT_PLT_SUFFIX "@got.plt"
78
79 /* Locate the segments in ABFD.  */
80
81 static struct symfile_segment_data *
82 elf_symfile_segments (bfd *abfd)
83 {
84   Elf_Internal_Phdr *phdrs, **segments;
85   long phdrs_size;
86   int num_phdrs, num_segments, num_sections, i;
87   asection *sect;
88   struct symfile_segment_data *data;
89
90   phdrs_size = bfd_get_elf_phdr_upper_bound (abfd);
91   if (phdrs_size == -1)
92     return NULL;
93
94   phdrs = alloca (phdrs_size);
95   num_phdrs = bfd_get_elf_phdrs (abfd, phdrs);
96   if (num_phdrs == -1)
97     return NULL;
98
99   num_segments = 0;
100   segments = alloca (sizeof (Elf_Internal_Phdr *) * num_phdrs);
101   for (i = 0; i < num_phdrs; i++)
102     if (phdrs[i].p_type == PT_LOAD)
103       segments[num_segments++] = &phdrs[i];
104
105   if (num_segments == 0)
106     return NULL;
107
108   data = XZALLOC (struct symfile_segment_data);
109   data->num_segments = num_segments;
110   data->segment_bases = XCALLOC (num_segments, CORE_ADDR);
111   data->segment_sizes = XCALLOC (num_segments, CORE_ADDR);
112
113   for (i = 0; i < num_segments; i++)
114     {
115       data->segment_bases[i] = segments[i]->p_vaddr;
116       data->segment_sizes[i] = segments[i]->p_memsz;
117     }
118
119   num_sections = bfd_count_sections (abfd);
120   data->segment_info = XCALLOC (num_sections, int);
121
122   for (i = 0, sect = abfd->sections; sect != NULL; i++, sect = sect->next)
123     {
124       int j;
125       CORE_ADDR vma;
126
127       if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
128         continue;
129
130       vma = bfd_get_section_vma (abfd, sect);
131
132       for (j = 0; j < num_segments; j++)
133         if (segments[j]->p_memsz > 0
134             && vma >= segments[j]->p_vaddr
135             && (vma - segments[j]->p_vaddr) < segments[j]->p_memsz)
136           {
137             data->segment_info[i] = j + 1;
138             break;
139           }
140
141       /* We should have found a segment for every non-empty section.
142          If we haven't, we will not relocate this section by any
143          offsets we apply to the segments.  As an exception, do not
144          warn about SHT_NOBITS sections; in normal ELF execution
145          environments, SHT_NOBITS means zero-initialized and belongs
146          in a segment, but in no-OS environments some tools (e.g. ARM
147          RealView) use SHT_NOBITS for uninitialized data.  Since it is
148          uninitialized, it doesn't need a program header.  Such
149          binaries are not relocatable.  */
150       if (bfd_get_section_size (sect) > 0 && j == num_segments
151           && (bfd_get_section_flags (abfd, sect) & SEC_LOAD) != 0)
152         warning (_("Loadable section \"%s\" outside of ELF segments"),
153                  bfd_section_name (abfd, sect));
154     }
155
156   return data;
157 }
158
159 /* We are called once per section from elf_symfile_read.  We
160    need to examine each section we are passed, check to see
161    if it is something we are interested in processing, and
162    if so, stash away some access information for the section.
163
164    For now we recognize the dwarf debug information sections and
165    line number sections from matching their section names.  The
166    ELF definition is no real help here since it has no direct
167    knowledge of DWARF (by design, so any debugging format can be
168    used).
169
170    We also recognize the ".stab" sections used by the Sun compilers
171    released with Solaris 2.
172
173    FIXME: The section names should not be hardwired strings (what
174    should they be?  I don't think most object file formats have enough
175    section flags to specify what kind of debug section it is.
176    -kingdon).  */
177
178 static void
179 elf_locate_sections (bfd *ignore_abfd, asection *sectp, void *eip)
180 {
181   struct elfinfo *ei;
182
183   ei = (struct elfinfo *) eip;
184   if (strcmp (sectp->name, ".stab") == 0)
185     {
186       ei->stabsect = sectp;
187     }
188   else if (strcmp (sectp->name, ".stab.index") == 0)
189     {
190       ei->stabindexsect = sectp;
191     }
192   else if (strcmp (sectp->name, ".mdebug") == 0)
193     {
194       ei->mdebugsect = sectp;
195     }
196 }
197
198 static struct minimal_symbol *
199 record_minimal_symbol (const char *name, int name_len, int copy_name,
200                        CORE_ADDR address,
201                        enum minimal_symbol_type ms_type,
202                        asection *bfd_section, struct objfile *objfile)
203 {
204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
205
206   if (ms_type == mst_text || ms_type == mst_file_text
207       || ms_type == mst_text_gnu_ifunc)
208     address = gdbarch_smash_text_address (gdbarch, address);
209
210   return prim_record_minimal_symbol_full (name, name_len, copy_name, address,
211                                           ms_type, bfd_section->index,
212                                           bfd_section, objfile);
213 }
214
215 /* Read the symbol table of an ELF file.
216
217    Given an objfile, a symbol table, and a flag indicating whether the
218    symbol table contains regular, dynamic, or synthetic symbols, add all
219    the global function and data symbols to the minimal symbol table.
220
221    In stabs-in-ELF, as implemented by Sun, there are some local symbols
222    defined in the ELF symbol table, which can be used to locate
223    the beginnings of sections from each ".o" file that was linked to
224    form the executable objfile.  We gather any such info and record it
225    in data structures hung off the objfile's private data.  */
226
227 #define ST_REGULAR 0
228 #define ST_DYNAMIC 1
229 #define ST_SYNTHETIC 2
230
231 static void
232 elf_symtab_read (struct objfile *objfile, int type,
233                  long number_of_symbols, asymbol **symbol_table,
234                  int copy_names)
235 {
236   struct gdbarch *gdbarch = get_objfile_arch (objfile);
237   asymbol *sym;
238   long i;
239   CORE_ADDR symaddr;
240   CORE_ADDR offset;
241   enum minimal_symbol_type ms_type;
242   /* If sectinfo is nonNULL, it contains section info that should end up
243      filed in the objfile.  */
244   struct stab_section_info *sectinfo = NULL;
245   /* If filesym is nonzero, it points to a file symbol, but we haven't
246      seen any section info for it yet.  */
247   asymbol *filesym = 0;
248   /* Name of filesym.  This is either a constant string or is saved on
249      the objfile's filename cache.  */
250   const char *filesymname = "";
251   struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info;
252   int stripped = (bfd_get_symcount (objfile->obfd) == 0);
253
254   for (i = 0; i < number_of_symbols; i++)
255     {
256       sym = symbol_table[i];
257       if (sym->name == NULL || *sym->name == '\0')
258         {
259           /* Skip names that don't exist (shouldn't happen), or names
260              that are null strings (may happen).  */
261           continue;
262         }
263
264       /* Skip "special" symbols, e.g. ARM mapping symbols.  These are
265          symbols which do not correspond to objects in the symbol table,
266          but have some other target-specific meaning.  */
267       if (bfd_is_target_special_symbol (objfile->obfd, sym))
268         {
269           if (gdbarch_record_special_symbol_p (gdbarch))
270             gdbarch_record_special_symbol (gdbarch, objfile, sym);
271           continue;
272         }
273
274       offset = ANOFFSET (objfile->section_offsets, sym->section->index);
275       if (type == ST_DYNAMIC
276           && sym->section == bfd_und_section_ptr
277           && (sym->flags & BSF_FUNCTION))
278         {
279           struct minimal_symbol *msym;
280           bfd *abfd = objfile->obfd;
281           asection *sect;
282
283           /* Symbol is a reference to a function defined in
284              a shared library.
285              If its value is non zero then it is usually the address
286              of the corresponding entry in the procedure linkage table,
287              plus the desired section offset.
288              If its value is zero then the dynamic linker has to resolve
289              the symbol.  We are unable to find any meaningful address
290              for this symbol in the executable file, so we skip it.  */
291           symaddr = sym->value;
292           if (symaddr == 0)
293             continue;
294
295           /* sym->section is the undefined section.  However, we want to
296              record the section where the PLT stub resides with the
297              minimal symbol.  Search the section table for the one that
298              covers the stub's address.  */
299           for (sect = abfd->sections; sect != NULL; sect = sect->next)
300             {
301               if ((bfd_get_section_flags (abfd, sect) & SEC_ALLOC) == 0)
302                 continue;
303
304               if (symaddr >= bfd_get_section_vma (abfd, sect)
305                   && symaddr < bfd_get_section_vma (abfd, sect)
306                                + bfd_get_section_size (sect))
307                 break;
308             }
309           if (!sect)
310             continue;
311
312           /* On ia64-hpux, we have discovered that the system linker
313              adds undefined symbols with nonzero addresses that cannot
314              be right (their address points inside the code of another
315              function in the .text section).  This creates problems
316              when trying to determine which symbol corresponds to
317              a given address.
318
319              We try to detect those buggy symbols by checking which
320              section we think they correspond to.  Normally, PLT symbols
321              are stored inside their own section, and the typical name
322              for that section is ".plt".  So, if there is a ".plt"
323              section, and yet the section name of our symbol does not
324              start with ".plt", we ignore that symbol.  */
325           if (strncmp (sect->name, ".plt", 4) != 0
326               && bfd_get_section_by_name (abfd, ".plt") != NULL)
327             continue;
328
329           symaddr += ANOFFSET (objfile->section_offsets, sect->index);
330
331           msym = record_minimal_symbol
332             (sym->name, strlen (sym->name), copy_names,
333              symaddr, mst_solib_trampoline, sect, objfile);
334           if (msym != NULL)
335             msym->filename = filesymname;
336           continue;
337         }
338
339       /* If it is a nonstripped executable, do not enter dynamic
340          symbols, as the dynamic symbol table is usually a subset
341          of the main symbol table.  */
342       if (type == ST_DYNAMIC && !stripped)
343         continue;
344       if (sym->flags & BSF_FILE)
345         {
346           /* STT_FILE debugging symbol that helps stabs-in-elf debugging.
347              Chain any old one onto the objfile; remember new sym.  */
348           if (sectinfo != NULL)
349             {
350               sectinfo->next = dbx->stab_section_info;
351               dbx->stab_section_info = sectinfo;
352               sectinfo = NULL;
353             }
354           filesym = sym;
355           filesymname = bcache (filesym->name, strlen (filesym->name) + 1,
356                                 objfile->filename_cache);
357         }
358       else if (sym->flags & BSF_SECTION_SYM)
359         continue;
360       else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
361         {
362           struct minimal_symbol *msym;
363
364           /* Select global/local/weak symbols.  Note that bfd puts abs
365              symbols in their own section, so all symbols we are
366              interested in will have a section.  */
367           /* Bfd symbols are section relative.  */
368           symaddr = sym->value + sym->section->vma;
369           /* Relocate all non-absolute and non-TLS symbols by the
370              section offset.  */
371           if (sym->section != bfd_abs_section_ptr
372               && !(sym->section->flags & SEC_THREAD_LOCAL))
373             {
374               symaddr += offset;
375             }
376           /* For non-absolute symbols, use the type of the section
377              they are relative to, to intuit text/data.  Bfd provides
378              no way of figuring this out for absolute symbols.  */
379           if (sym->section == bfd_abs_section_ptr)
380             {
381               /* This is a hack to get the minimal symbol type
382                  right for Irix 5, which has absolute addresses
383                  with special section indices for dynamic symbols.
384
385                  NOTE: uweigand-20071112: Synthetic symbols do not
386                  have an ELF-private part, so do not touch those.  */
387               unsigned int shndx = type == ST_SYNTHETIC ? 0 :
388                 ((elf_symbol_type *) sym)->internal_elf_sym.st_shndx;
389
390               switch (shndx)
391                 {
392                 case SHN_MIPS_TEXT:
393                   ms_type = mst_text;
394                   break;
395                 case SHN_MIPS_DATA:
396                   ms_type = mst_data;
397                   break;
398                 case SHN_MIPS_ACOMMON:
399                   ms_type = mst_bss;
400                   break;
401                 default:
402                   ms_type = mst_abs;
403                 }
404
405               /* If it is an Irix dynamic symbol, skip section name
406                  symbols, relocate all others by section offset.  */
407               if (ms_type != mst_abs)
408                 {
409                   if (sym->name[0] == '.')
410                     continue;
411                   symaddr += offset;
412                 }
413             }
414           else if (sym->section->flags & SEC_CODE)
415             {
416               if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
417                 {
418                   if (sym->flags & BSF_GNU_INDIRECT_FUNCTION)
419                     ms_type = mst_text_gnu_ifunc;
420                   else
421                     ms_type = mst_text;
422                 }
423               /* The BSF_SYNTHETIC check is there to omit ppc64 function
424                  descriptors mistaken for static functions starting with 'L'.
425                  */
426               else if ((sym->name[0] == '.' && sym->name[1] == 'L'
427                         && (sym->flags & BSF_SYNTHETIC) == 0)
428                        || ((sym->flags & BSF_LOCAL)
429                            && sym->name[0] == '$'
430                            && sym->name[1] == 'L'))
431                 /* Looks like a compiler-generated label.  Skip
432                    it.  The assembler should be skipping these (to
433                    keep executables small), but apparently with
434                    gcc on the (deleted) delta m88k SVR4, it loses.
435                    So to have us check too should be harmless (but
436                    I encourage people to fix this in the assembler
437                    instead of adding checks here).  */
438                 continue;
439               else
440                 {
441                   ms_type = mst_file_text;
442                 }
443             }
444           else if (sym->section->flags & SEC_ALLOC)
445             {
446               if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
447                 {
448                   if (sym->section->flags & SEC_LOAD)
449                     {
450                       ms_type = mst_data;
451                     }
452                   else
453                     {
454                       ms_type = mst_bss;
455                     }
456                 }
457               else if (sym->flags & BSF_LOCAL)
458                 {
459                   /* Named Local variable in a Data section.
460                      Check its name for stabs-in-elf.  */
461                   int special_local_sect;
462
463                   if (strcmp ("Bbss.bss", sym->name) == 0)
464                     special_local_sect = SECT_OFF_BSS (objfile);
465                   else if (strcmp ("Ddata.data", sym->name) == 0)
466                     special_local_sect = SECT_OFF_DATA (objfile);
467                   else if (strcmp ("Drodata.rodata", sym->name) == 0)
468                     special_local_sect = SECT_OFF_RODATA (objfile);
469                   else
470                     special_local_sect = -1;
471                   if (special_local_sect >= 0)
472                     {
473                       /* Found a special local symbol.  Allocate a
474                          sectinfo, if needed, and fill it in.  */
475                       if (sectinfo == NULL)
476                         {
477                           int max_index;
478                           size_t size;
479
480                           max_index = SECT_OFF_BSS (objfile);
481                           if (objfile->sect_index_data > max_index)
482                             max_index = objfile->sect_index_data;
483                           if (objfile->sect_index_rodata > max_index)
484                             max_index = objfile->sect_index_rodata;
485
486                           /* max_index is the largest index we'll
487                              use into this array, so we must
488                              allocate max_index+1 elements for it.
489                              However, 'struct stab_section_info'
490                              already includes one element, so we
491                              need to allocate max_index aadditional
492                              elements.  */
493                           size = (sizeof (struct stab_section_info)
494                                   + (sizeof (CORE_ADDR) * max_index));
495                           sectinfo = (struct stab_section_info *)
496                             xmalloc (size);
497                           memset (sectinfo, 0, size);
498                           sectinfo->num_sections = max_index;
499                           if (filesym == NULL)
500                             {
501                               complaint (&symfile_complaints,
502                                          _("elf/stab section information %s "
503                                            "without a preceding file symbol"),
504                                          sym->name);
505                             }
506                           else
507                             {
508                               sectinfo->filename =
509                                 (char *) filesym->name;
510                             }
511                         }
512                       if (sectinfo->sections[special_local_sect] != 0)
513                         complaint (&symfile_complaints,
514                                    _("duplicated elf/stab section "
515                                      "information for %s"),
516                                    sectinfo->filename);
517                       /* BFD symbols are section relative.  */
518                       symaddr = sym->value + sym->section->vma;
519                       /* Relocate non-absolute symbols by the
520                          section offset.  */
521                       if (sym->section != bfd_abs_section_ptr)
522                         symaddr += offset;
523                       sectinfo->sections[special_local_sect] = symaddr;
524                       /* The special local symbols don't go in the
525                          minimal symbol table, so ignore this one.  */
526                       continue;
527                     }
528                   /* Not a special stabs-in-elf symbol, do regular
529                      symbol processing.  */
530                   if (sym->section->flags & SEC_LOAD)
531                     {
532                       ms_type = mst_file_data;
533                     }
534                   else
535                     {
536                       ms_type = mst_file_bss;
537                     }
538                 }
539               else
540                 {
541                   ms_type = mst_unknown;
542                 }
543             }
544           else
545             {
546               /* FIXME:  Solaris2 shared libraries include lots of
547                  odd "absolute" and "undefined" symbols, that play
548                  hob with actions like finding what function the PC
549                  is in.  Ignore them if they aren't text, data, or bss.  */
550               /* ms_type = mst_unknown; */
551               continue; /* Skip this symbol.  */
552             }
553           msym = record_minimal_symbol
554             (sym->name, strlen (sym->name), copy_names, symaddr,
555              ms_type, sym->section, objfile);
556
557           if (msym)
558             {
559               /* Pass symbol size field in via BFD.  FIXME!!!  */
560               elf_symbol_type *elf_sym;
561
562               /* NOTE: uweigand-20071112: A synthetic symbol does not have an
563                  ELF-private part.  However, in some cases (e.g. synthetic
564                  'dot' symbols on ppc64) the udata.p entry is set to point back
565                  to the original ELF symbol it was derived from.  Get the size
566                  from that symbol.  */
567               if (type != ST_SYNTHETIC)
568                 elf_sym = (elf_symbol_type *) sym;
569               else
570                 elf_sym = (elf_symbol_type *) sym->udata.p;
571
572               if (elf_sym)
573                 MSYMBOL_SIZE(msym) = elf_sym->internal_elf_sym.st_size;
574
575               msym->filename = filesymname;
576               gdbarch_elf_make_msymbol_special (gdbarch, sym, msym);
577             }
578
579           /* For @plt symbols, also record a trampoline to the
580              destination symbol.  The @plt symbol will be used in
581              disassembly, and the trampoline will be used when we are
582              trying to find the target.  */
583           if (msym && ms_type == mst_text && type == ST_SYNTHETIC)
584             {
585               int len = strlen (sym->name);
586
587               if (len > 4 && strcmp (sym->name + len - 4, "@plt") == 0)
588                 {
589                   struct minimal_symbol *mtramp;
590
591                   mtramp = record_minimal_symbol (sym->name, len - 4, 1,
592                                                   symaddr,
593                                                   mst_solib_trampoline,
594                                                   sym->section, objfile);
595                   if (mtramp)
596                     {
597                       MSYMBOL_SIZE (mtramp) = MSYMBOL_SIZE (msym);
598                       mtramp->created_by_gdb = 1;
599                       mtramp->filename = filesymname;
600                       gdbarch_elf_make_msymbol_special (gdbarch, sym, mtramp);
601                     }
602                 }
603             }
604         }
605     }
606 }
607
608 /* Build minimal symbols named `function@got.plt' (see SYMBOL_GOT_PLT_SUFFIX)
609    for later look ups of which function to call when user requests
610    a STT_GNU_IFUNC function.  As the STT_GNU_IFUNC type is found at the target
611    library defining `function' we cannot yet know while reading OBJFILE which
612    of the SYMBOL_GOT_PLT_SUFFIX entries will be needed and later
613    DYN_SYMBOL_TABLE is no longer easily available for OBJFILE.  */
614
615 static void
616 elf_rel_plt_read (struct objfile *objfile, asymbol **dyn_symbol_table)
617 {
618   bfd *obfd = objfile->obfd;
619   const struct elf_backend_data *bed = get_elf_backend_data (obfd);
620   asection *plt, *relplt, *got_plt;
621   int plt_elf_idx;
622   bfd_size_type reloc_count, reloc;
623   char *string_buffer = NULL;
624   size_t string_buffer_size = 0;
625   struct cleanup *back_to;
626   struct gdbarch *gdbarch = objfile->gdbarch;
627   struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
628   size_t ptr_size = TYPE_LENGTH (ptr_type);
629
630   if (objfile->separate_debug_objfile_backlink)
631     return;
632
633   plt = bfd_get_section_by_name (obfd, ".plt");
634   if (plt == NULL)
635     return;
636   plt_elf_idx = elf_section_data (plt)->this_idx;
637
638   got_plt = bfd_get_section_by_name (obfd, ".got.plt");
639   if (got_plt == NULL)
640     return;
641
642   /* This search algorithm is from _bfd_elf_canonicalize_dynamic_reloc.  */
643   for (relplt = obfd->sections; relplt != NULL; relplt = relplt->next)
644     if (elf_section_data (relplt)->this_hdr.sh_info == plt_elf_idx
645         && (elf_section_data (relplt)->this_hdr.sh_type == SHT_REL
646             || elf_section_data (relplt)->this_hdr.sh_type == SHT_RELA))
647       break;
648   if (relplt == NULL)
649     return;
650
651   if (! bed->s->slurp_reloc_table (obfd, relplt, dyn_symbol_table, TRUE))
652     return;
653
654   back_to = make_cleanup (free_current_contents, &string_buffer);
655
656   reloc_count = relplt->size / elf_section_data (relplt)->this_hdr.sh_entsize;
657   for (reloc = 0; reloc < reloc_count; reloc++)
658     {
659       const char *name;
660       struct minimal_symbol *msym;
661       CORE_ADDR address;
662       const size_t got_suffix_len = strlen (SYMBOL_GOT_PLT_SUFFIX);
663       size_t name_len;
664
665       name = bfd_asymbol_name (*relplt->relocation[reloc].sym_ptr_ptr);
666       name_len = strlen (name);
667       address = relplt->relocation[reloc].address;
668
669       /* Does the pointer reside in the .got.plt section?  */
670       if (!(bfd_get_section_vma (obfd, got_plt) <= address
671             && address < bfd_get_section_vma (obfd, got_plt)
672                          + bfd_get_section_size (got_plt)))
673         continue;
674
675       /* We cannot check if NAME is a reference to mst_text_gnu_ifunc as in
676          OBJFILE the symbol is undefined and the objfile having NAME defined
677          may not yet have been loaded.  */
678
679       if (string_buffer_size < name_len + got_suffix_len + 1)
680         {
681           string_buffer_size = 2 * (name_len + got_suffix_len);
682           string_buffer = xrealloc (string_buffer, string_buffer_size);
683         }
684       memcpy (string_buffer, name, name_len);
685       memcpy (&string_buffer[name_len], SYMBOL_GOT_PLT_SUFFIX,
686               got_suffix_len + 1);
687
688       msym = record_minimal_symbol (string_buffer, name_len + got_suffix_len,
689                                     1, address, mst_slot_got_plt, got_plt,
690                                     objfile);
691       if (msym)
692         MSYMBOL_SIZE (msym) = ptr_size;
693     }
694
695   do_cleanups (back_to);
696 }
697
698 /* The data pointer is htab_t for gnu_ifunc_record_cache_unchecked.  */
699
700 static const struct objfile_data *elf_objfile_gnu_ifunc_cache_data;
701
702 /* Map function names to CORE_ADDR in elf_objfile_gnu_ifunc_cache_data.  */
703
704 struct elf_gnu_ifunc_cache
705 {
706   /* This is always a function entry address, not a function descriptor.  */
707   CORE_ADDR addr;
708
709   char name[1];
710 };
711
712 /* htab_hash for elf_objfile_gnu_ifunc_cache_data.  */
713
714 static hashval_t
715 elf_gnu_ifunc_cache_hash (const void *a_voidp)
716 {
717   const struct elf_gnu_ifunc_cache *a = a_voidp;
718
719   return htab_hash_string (a->name);
720 }
721
722 /* htab_eq for elf_objfile_gnu_ifunc_cache_data.  */
723
724 static int
725 elf_gnu_ifunc_cache_eq (const void *a_voidp, const void *b_voidp)
726 {
727   const struct elf_gnu_ifunc_cache *a = a_voidp;
728   const struct elf_gnu_ifunc_cache *b = b_voidp;
729
730   return strcmp (a->name, b->name) == 0;
731 }
732
733 /* Record the target function address of a STT_GNU_IFUNC function NAME is the
734    function entry address ADDR.  Return 1 if NAME and ADDR are considered as
735    valid and therefore they were successfully recorded, return 0 otherwise.
736
737    Function does not expect a duplicate entry.  Use
738    elf_gnu_ifunc_resolve_by_cache first to check if the entry for NAME already
739    exists.  */
740
741 static int
742 elf_gnu_ifunc_record_cache (const char *name, CORE_ADDR addr)
743 {
744   struct minimal_symbol *msym;
745   asection *sect;
746   struct objfile *objfile;
747   htab_t htab;
748   struct elf_gnu_ifunc_cache entry_local, *entry_p;
749   void **slot;
750
751   msym = lookup_minimal_symbol_by_pc (addr);
752   if (msym == NULL)
753     return 0;
754   if (SYMBOL_VALUE_ADDRESS (msym) != addr)
755     return 0;
756   /* minimal symbols have always SYMBOL_OBJ_SECTION non-NULL.  */
757   sect = SYMBOL_OBJ_SECTION (msym)->the_bfd_section;
758   objfile = SYMBOL_OBJ_SECTION (msym)->objfile;
759
760   /* If .plt jumps back to .plt the symbol is still deferred for later
761      resolution and it has no use for GDB.  Besides ".text" this symbol can
762      reside also in ".opd" for ppc64 function descriptor.  */
763   if (strcmp (bfd_get_section_name (objfile->obfd, sect), ".plt") == 0)
764     return 0;
765
766   htab = objfile_data (objfile, elf_objfile_gnu_ifunc_cache_data);
767   if (htab == NULL)
768     {
769       htab = htab_create_alloc_ex (1, elf_gnu_ifunc_cache_hash,
770                                    elf_gnu_ifunc_cache_eq,
771                                    NULL, &objfile->objfile_obstack,
772                                    hashtab_obstack_allocate,
773                                    dummy_obstack_deallocate);
774       set_objfile_data (objfile, elf_objfile_gnu_ifunc_cache_data, htab);
775     }
776
777   entry_local.addr = addr;
778   obstack_grow (&objfile->objfile_obstack, &entry_local,
779                 offsetof (struct elf_gnu_ifunc_cache, name));
780   obstack_grow_str0 (&objfile->objfile_obstack, name);
781   entry_p = obstack_finish (&objfile->objfile_obstack);
782
783   slot = htab_find_slot (htab, entry_p, INSERT);
784   if (*slot != NULL)
785     {
786       struct elf_gnu_ifunc_cache *entry_found_p = *slot;
787       struct gdbarch *gdbarch = objfile->gdbarch;
788
789       if (entry_found_p->addr != addr)
790         {
791           /* This case indicates buggy inferior program, the resolved address
792              should never change.  */
793
794             warning (_("gnu-indirect-function \"%s\" has changed its resolved "
795                        "function_address from %s to %s"),
796                      name, paddress (gdbarch, entry_found_p->addr),
797                      paddress (gdbarch, addr));
798         }
799
800       /* New ENTRY_P is here leaked/duplicate in the OBJFILE obstack.  */
801     }
802   *slot = entry_p;
803
804   return 1;
805 }
806
807 /* Try to find the target resolved function entry address of a STT_GNU_IFUNC
808    function NAME.  If the address is found it is stored to *ADDR_P (if ADDR_P
809    is not NULL) and the function returns 1.  It returns 0 otherwise.
810
811    Only the elf_objfile_gnu_ifunc_cache_data hash table is searched by this
812    function.  */
813
814 static int
815 elf_gnu_ifunc_resolve_by_cache (const char *name, CORE_ADDR *addr_p)
816 {
817   struct objfile *objfile;
818
819   ALL_PSPACE_OBJFILES (current_program_space, objfile)
820     {
821       htab_t htab;
822       struct elf_gnu_ifunc_cache *entry_p;
823       void **slot;
824
825       htab = objfile_data (objfile, elf_objfile_gnu_ifunc_cache_data);
826       if (htab == NULL)
827         continue;
828
829       entry_p = alloca (sizeof (*entry_p) + strlen (name));
830       strcpy (entry_p->name, name);
831
832       slot = htab_find_slot (htab, entry_p, NO_INSERT);
833       if (slot == NULL)
834         continue;
835       entry_p = *slot;
836       gdb_assert (entry_p != NULL);
837
838       if (addr_p)
839         *addr_p = entry_p->addr;
840       return 1;
841     }
842
843   return 0;
844 }
845
846 /* Try to find the target resolved function entry address of a STT_GNU_IFUNC
847    function NAME.  If the address is found it is stored to *ADDR_P (if ADDR_P
848    is not NULL) and the function returns 1.  It returns 0 otherwise.
849
850    Only the SYMBOL_GOT_PLT_SUFFIX locations are searched by this function.
851    elf_gnu_ifunc_resolve_by_cache must have been already called for NAME to
852    prevent cache entries duplicates.  */
853
854 static int
855 elf_gnu_ifunc_resolve_by_got (const char *name, CORE_ADDR *addr_p)
856 {
857   char *name_got_plt;
858   struct objfile *objfile;
859   const size_t got_suffix_len = strlen (SYMBOL_GOT_PLT_SUFFIX);
860
861   name_got_plt = alloca (strlen (name) + got_suffix_len + 1);
862   sprintf (name_got_plt, "%s" SYMBOL_GOT_PLT_SUFFIX, name);
863
864   ALL_PSPACE_OBJFILES (current_program_space, objfile)
865     {
866       bfd *obfd = objfile->obfd;
867       struct gdbarch *gdbarch = objfile->gdbarch;
868       struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
869       size_t ptr_size = TYPE_LENGTH (ptr_type);
870       CORE_ADDR pointer_address, addr;
871       asection *plt;
872       gdb_byte *buf = alloca (ptr_size);
873       struct minimal_symbol *msym;
874
875       msym = lookup_minimal_symbol (name_got_plt, NULL, objfile);
876       if (msym == NULL)
877         continue;
878       if (MSYMBOL_TYPE (msym) != mst_slot_got_plt)
879         continue;
880       pointer_address = SYMBOL_VALUE_ADDRESS (msym);
881
882       plt = bfd_get_section_by_name (obfd, ".plt");
883       if (plt == NULL)
884         continue;
885
886       if (MSYMBOL_SIZE (msym) != ptr_size)
887         continue;
888       if (target_read_memory (pointer_address, buf, ptr_size) != 0)
889         continue;
890       addr = extract_typed_address (buf, ptr_type);
891       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
892                                                  &current_target);
893
894       if (addr_p)
895         *addr_p = addr;
896       if (elf_gnu_ifunc_record_cache (name, addr))
897         return 1;
898     }
899
900   return 0;
901 }
902
903 /* Try to find the target resolved function entry address of a STT_GNU_IFUNC
904    function NAME.  If the address is found it is stored to *ADDR_P (if ADDR_P
905    is not NULL) and the function returns 1.  It returns 0 otherwise.
906
907    Both the elf_objfile_gnu_ifunc_cache_data hash table and
908    SYMBOL_GOT_PLT_SUFFIX locations are searched by this function.  */
909
910 static int
911 elf_gnu_ifunc_resolve_name (const char *name, CORE_ADDR *addr_p)
912 {
913   if (elf_gnu_ifunc_resolve_by_cache (name, addr_p))
914     return 1;
915
916   if (elf_gnu_ifunc_resolve_by_got (name, addr_p))
917     return 1;
918
919   return 0;
920 }
921
922 /* Call STT_GNU_IFUNC - a function returning addresss of a real function to
923    call.  PC is theSTT_GNU_IFUNC resolving function entry.  The value returned
924    is the entry point of the resolved STT_GNU_IFUNC target function to call.
925    */
926
927 static CORE_ADDR
928 elf_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc)
929 {
930   const char *name_at_pc;
931   CORE_ADDR start_at_pc, address;
932   struct type *func_func_type = builtin_type (gdbarch)->builtin_func_func;
933   struct value *function, *address_val;
934
935   /* Try first any non-intrusive methods without an inferior call.  */
936
937   if (find_pc_partial_function (pc, &name_at_pc, &start_at_pc, NULL)
938       && start_at_pc == pc)
939     {
940       if (elf_gnu_ifunc_resolve_name (name_at_pc, &address))
941         return address;
942     }
943   else
944     name_at_pc = NULL;
945
946   function = allocate_value (func_func_type);
947   set_value_address (function, pc);
948
949   /* STT_GNU_IFUNC resolver functions have no parameters.  FUNCTION is the
950      function entry address.  ADDRESS may be a function descriptor.  */
951
952   address_val = call_function_by_hand (function, 0, NULL);
953   address = value_as_address (address_val);
954   address = gdbarch_convert_from_func_ptr_addr (gdbarch, address,
955                                                 &current_target);
956
957   if (name_at_pc)
958     elf_gnu_ifunc_record_cache (name_at_pc, address);
959
960   return address;
961 }
962
963 /* Handle inferior hit of bp_gnu_ifunc_resolver, see its definition.  */
964
965 static void
966 elf_gnu_ifunc_resolver_stop (struct breakpoint *b)
967 {
968   struct breakpoint *b_return;
969   struct frame_info *prev_frame = get_prev_frame (get_current_frame ());
970   struct frame_id prev_frame_id = get_stack_frame_id (prev_frame);
971   CORE_ADDR prev_pc = get_frame_pc (prev_frame);
972   int thread_id = pid_to_thread_id (inferior_ptid);
973
974   gdb_assert (b->type == bp_gnu_ifunc_resolver);
975
976   for (b_return = b->related_breakpoint; b_return != b;
977        b_return = b_return->related_breakpoint)
978     {
979       gdb_assert (b_return->type == bp_gnu_ifunc_resolver_return);
980       gdb_assert (b_return->loc != NULL && b_return->loc->next == NULL);
981       gdb_assert (frame_id_p (b_return->frame_id));
982
983       if (b_return->thread == thread_id
984           && b_return->loc->requested_address == prev_pc
985           && frame_id_eq (b_return->frame_id, prev_frame_id))
986         break;
987     }
988
989   if (b_return == b)
990     {
991       struct symtab_and_line sal;
992
993       /* No need to call find_pc_line for symbols resolving as this is only
994          a helper breakpointer never shown to the user.  */
995
996       init_sal (&sal);
997       sal.pspace = current_inferior ()->pspace;
998       sal.pc = prev_pc;
999       sal.section = find_pc_overlay (sal.pc);
1000       sal.explicit_pc = 1;
1001       b_return = set_momentary_breakpoint (get_frame_arch (prev_frame), sal,
1002                                            prev_frame_id,
1003                                            bp_gnu_ifunc_resolver_return);
1004
1005       /* set_momentary_breakpoint invalidates PREV_FRAME.  */
1006       prev_frame = NULL;
1007
1008       /* Add new b_return to the ring list b->related_breakpoint.  */
1009       gdb_assert (b_return->related_breakpoint == b_return);
1010       b_return->related_breakpoint = b->related_breakpoint;
1011       b->related_breakpoint = b_return;
1012     }
1013 }
1014
1015 /* Handle inferior hit of bp_gnu_ifunc_resolver_return, see its definition.  */
1016
1017 static void
1018 elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b)
1019 {
1020   struct gdbarch *gdbarch = get_frame_arch (get_current_frame ());
1021   struct type *func_func_type = builtin_type (gdbarch)->builtin_func_func;
1022   struct type *value_type = TYPE_TARGET_TYPE (func_func_type);
1023   struct regcache *regcache = get_thread_regcache (inferior_ptid);
1024   struct value *func_func;
1025   struct value *value;
1026   CORE_ADDR resolved_address, resolved_pc;
1027   struct symtab_and_line sal;
1028   struct symtabs_and_lines sals, sals_end;
1029
1030   gdb_assert (b->type == bp_gnu_ifunc_resolver_return);
1031
1032   while (b->related_breakpoint != b)
1033     {
1034       struct breakpoint *b_next = b->related_breakpoint;
1035
1036       switch (b->type)
1037         {
1038         case bp_gnu_ifunc_resolver:
1039           break;
1040         case bp_gnu_ifunc_resolver_return:
1041           delete_breakpoint (b);
1042           break;
1043         default:
1044           internal_error (__FILE__, __LINE__,
1045                           _("handle_inferior_event: Invalid "
1046                             "gnu-indirect-function breakpoint type %d"),
1047                           (int) b->type);
1048         }
1049       b = b_next;
1050     }
1051   gdb_assert (b->type == bp_gnu_ifunc_resolver);
1052   gdb_assert (b->loc->next == NULL);
1053
1054   func_func = allocate_value (func_func_type);
1055   set_value_address (func_func, b->loc->related_address);
1056
1057   value = allocate_value (value_type);
1058   gdbarch_return_value (gdbarch, func_func, value_type, regcache,
1059                         value_contents_raw (value), NULL);
1060   resolved_address = value_as_address (value);
1061   resolved_pc = gdbarch_convert_from_func_ptr_addr (gdbarch,
1062                                                     resolved_address,
1063                                                     &current_target);
1064
1065   gdb_assert (current_program_space == b->pspace || b->pspace == NULL);
1066   elf_gnu_ifunc_record_cache (b->addr_string, resolved_pc);
1067
1068   sal = find_pc_line (resolved_pc, 0);
1069   sals.nelts = 1;
1070   sals.sals = &sal;
1071   sals_end.nelts = 0;
1072
1073   b->type = bp_breakpoint;
1074   update_breakpoint_locations (b, sals, sals_end);
1075 }
1076
1077 struct build_id
1078   {
1079     size_t size;
1080     gdb_byte data[1];
1081   };
1082
1083 /* Locate NT_GNU_BUILD_ID from ABFD and return its content.  */
1084
1085 static struct build_id *
1086 build_id_bfd_get (bfd *abfd)
1087 {
1088   struct build_id *retval;
1089
1090   if (!bfd_check_format (abfd, bfd_object)
1091       || bfd_get_flavour (abfd) != bfd_target_elf_flavour
1092       || elf_tdata (abfd)->build_id == NULL)
1093     return NULL;
1094
1095   retval = xmalloc (sizeof *retval - 1 + elf_tdata (abfd)->build_id_size);
1096   retval->size = elf_tdata (abfd)->build_id_size;
1097   memcpy (retval->data, elf_tdata (abfd)->build_id, retval->size);
1098
1099   return retval;
1100 }
1101
1102 /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value.  */
1103
1104 static int
1105 build_id_verify (const char *filename, struct build_id *check)
1106 {
1107   bfd *abfd;
1108   struct build_id *found = NULL;
1109   int retval = 0;
1110
1111   /* We expect to be silent on the non-existing files.  */
1112   abfd = bfd_open_maybe_remote (filename);
1113   if (abfd == NULL)
1114     return 0;
1115
1116   found = build_id_bfd_get (abfd);
1117
1118   if (found == NULL)
1119     warning (_("File \"%s\" has no build-id, file skipped"), filename);
1120   else if (found->size != check->size
1121            || memcmp (found->data, check->data, found->size) != 0)
1122     warning (_("File \"%s\" has a different build-id, file skipped"),
1123              filename);
1124   else
1125     retval = 1;
1126
1127   gdb_bfd_unref (abfd);
1128
1129   xfree (found);
1130
1131   return retval;
1132 }
1133
1134 static char *
1135 build_id_to_debug_filename (struct build_id *build_id)
1136 {
1137   char *link, *debugdir, *retval = NULL;
1138   VEC (char_ptr) *debugdir_vec;
1139   struct cleanup *back_to;
1140   int ix;
1141
1142   /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */
1143   link = alloca (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1
1144                  + 2 * build_id->size + (sizeof ".debug" - 1) + 1);
1145
1146   /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
1147      cause "/.build-id/..." lookups.  */
1148
1149   debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory);
1150   back_to = make_cleanup_free_char_ptr_vec (debugdir_vec);
1151
1152   for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix)
1153     {
1154       size_t debugdir_len = strlen (debugdir);
1155       gdb_byte *data = build_id->data;
1156       size_t size = build_id->size;
1157       char *s;
1158
1159       memcpy (link, debugdir, debugdir_len);
1160       s = &link[debugdir_len];
1161       s += sprintf (s, "/.build-id/");
1162       if (size > 0)
1163         {
1164           size--;
1165           s += sprintf (s, "%02x", (unsigned) *data++);
1166         }
1167       if (size > 0)
1168         *s++ = '/';
1169       while (size-- > 0)
1170         s += sprintf (s, "%02x", (unsigned) *data++);
1171       strcpy (s, ".debug");
1172
1173       /* lrealpath() is expensive even for the usually non-existent files.  */
1174       if (access (link, F_OK) == 0)
1175         retval = lrealpath (link);
1176
1177       if (retval != NULL && !build_id_verify (retval, build_id))
1178         {
1179           xfree (retval);
1180           retval = NULL;
1181         }
1182
1183       if (retval != NULL)
1184         break;
1185     }
1186
1187   do_cleanups (back_to);
1188   return retval;
1189 }
1190
1191 static char *
1192 find_separate_debug_file_by_buildid (struct objfile *objfile)
1193 {
1194   struct build_id *build_id;
1195
1196   build_id = build_id_bfd_get (objfile->obfd);
1197   if (build_id != NULL)
1198     {
1199       char *build_id_name;
1200
1201       build_id_name = build_id_to_debug_filename (build_id);
1202       xfree (build_id);
1203       /* Prevent looping on a stripped .debug file.  */
1204       if (build_id_name != NULL
1205           && filename_cmp (build_id_name, objfile->name) == 0)
1206         {
1207           warning (_("\"%s\": separate debug info file has no debug info"),
1208                    build_id_name);
1209           xfree (build_id_name);
1210         }
1211       else if (build_id_name != NULL)
1212         return build_id_name;
1213     }
1214   return NULL;
1215 }
1216
1217 /* Scan and build partial symbols for a symbol file.
1218    We have been initialized by a call to elf_symfile_init, which
1219    currently does nothing.
1220
1221    SECTION_OFFSETS is a set of offsets to apply to relocate the symbols
1222    in each section.  We simplify it down to a single offset for all
1223    symbols.  FIXME.
1224
1225    This function only does the minimum work necessary for letting the
1226    user "name" things symbolically; it does not read the entire symtab.
1227    Instead, it reads the external and static symbols and puts them in partial
1228    symbol tables.  When more extensive information is requested of a
1229    file, the corresponding partial symbol table is mutated into a full
1230    fledged symbol table by going back and reading the symbols
1231    for real.
1232
1233    We look for sections with specific names, to tell us what debug
1234    format to look for:  FIXME!!!
1235
1236    elfstab_build_psymtabs() handles STABS symbols;
1237    mdebug_build_psymtabs() handles ECOFF debugging information.
1238
1239    Note that ELF files have a "minimal" symbol table, which looks a lot
1240    like a COFF symbol table, but has only the minimal information necessary
1241    for linking.  We process this also, and use the information to
1242    build gdb's minimal symbol table.  This gives us some minimal debugging
1243    capability even for files compiled without -g.  */
1244
1245 static void
1246 elf_symfile_read (struct objfile *objfile, int symfile_flags)
1247 {
1248   bfd *synth_abfd, *abfd = objfile->obfd;
1249   struct elfinfo ei;
1250   struct cleanup *back_to;
1251   long symcount = 0, dynsymcount = 0, synthcount, storage_needed;
1252   asymbol **symbol_table = NULL, **dyn_symbol_table = NULL;
1253   asymbol *synthsyms;
1254
1255   if (symtab_create_debug)
1256     {
1257       fprintf_unfiltered (gdb_stdlog,
1258                           "Reading minimal symbols of objfile %s ...\n",
1259                           objfile->name);
1260     }
1261
1262   init_minimal_symbol_collection ();
1263   back_to = make_cleanup_discard_minimal_symbols ();
1264
1265   memset ((char *) &ei, 0, sizeof (ei));
1266
1267   /* Allocate struct to keep track of the symfile.  */
1268   objfile->deprecated_sym_stab_info = (struct dbx_symfile_info *)
1269     xmalloc (sizeof (struct dbx_symfile_info));
1270   memset ((char *) objfile->deprecated_sym_stab_info,
1271           0, sizeof (struct dbx_symfile_info));
1272   make_cleanup (free_elfinfo, (void *) objfile);
1273
1274   /* Process the normal ELF symbol table first.  This may write some
1275      chain of info into the dbx_symfile_info in
1276      objfile->deprecated_sym_stab_info, which can later be used by
1277      elfstab_offset_sections.  */
1278
1279   storage_needed = bfd_get_symtab_upper_bound (objfile->obfd);
1280   if (storage_needed < 0)
1281     error (_("Can't read symbols from %s: %s"),
1282            bfd_get_filename (objfile->obfd),
1283            bfd_errmsg (bfd_get_error ()));
1284
1285   if (storage_needed > 0)
1286     {
1287       symbol_table = (asymbol **) xmalloc (storage_needed);
1288       make_cleanup (xfree, symbol_table);
1289       symcount = bfd_canonicalize_symtab (objfile->obfd, symbol_table);
1290
1291       if (symcount < 0)
1292         error (_("Can't read symbols from %s: %s"),
1293                bfd_get_filename (objfile->obfd),
1294                bfd_errmsg (bfd_get_error ()));
1295
1296       elf_symtab_read (objfile, ST_REGULAR, symcount, symbol_table, 0);
1297     }
1298
1299   /* Add the dynamic symbols.  */
1300
1301   storage_needed = bfd_get_dynamic_symtab_upper_bound (objfile->obfd);
1302
1303   if (storage_needed > 0)
1304     {
1305       /* Memory gets permanently referenced from ABFD after
1306          bfd_get_synthetic_symtab so it must not get freed before ABFD gets.
1307          It happens only in the case when elf_slurp_reloc_table sees
1308          asection->relocation NULL.  Determining which section is asection is
1309          done by _bfd_elf_get_synthetic_symtab which is all a bfd
1310          implementation detail, though.  */
1311
1312       dyn_symbol_table = bfd_alloc (abfd, storage_needed);
1313       dynsymcount = bfd_canonicalize_dynamic_symtab (objfile->obfd,
1314                                                      dyn_symbol_table);
1315
1316       if (dynsymcount < 0)
1317         error (_("Can't read symbols from %s: %s"),
1318                bfd_get_filename (objfile->obfd),
1319                bfd_errmsg (bfd_get_error ()));
1320
1321       elf_symtab_read (objfile, ST_DYNAMIC, dynsymcount, dyn_symbol_table, 0);
1322
1323       elf_rel_plt_read (objfile, dyn_symbol_table);
1324     }
1325
1326   /* Contrary to binutils --strip-debug/--only-keep-debug the strip command from
1327      elfutils (eu-strip) moves even the .symtab section into the .debug file.
1328
1329      bfd_get_synthetic_symtab on ppc64 for each function descriptor ELF symbol
1330      'name' creates a new BSF_SYNTHETIC ELF symbol '.name' with its code
1331      address.  But with eu-strip files bfd_get_synthetic_symtab would fail to
1332      read the code address from .opd while it reads the .symtab section from
1333      a separate debug info file as the .opd section is SHT_NOBITS there.
1334
1335      With SYNTH_ABFD the .opd section will be read from the original
1336      backlinked binary where it is valid.  */
1337
1338   if (objfile->separate_debug_objfile_backlink)
1339     synth_abfd = objfile->separate_debug_objfile_backlink->obfd;
1340   else
1341     synth_abfd = abfd;
1342
1343   /* Add synthetic symbols - for instance, names for any PLT entries.  */
1344
1345   synthcount = bfd_get_synthetic_symtab (synth_abfd, symcount, symbol_table,
1346                                          dynsymcount, dyn_symbol_table,
1347                                          &synthsyms);
1348   if (synthcount > 0)
1349     {
1350       asymbol **synth_symbol_table;
1351       long i;
1352
1353       make_cleanup (xfree, synthsyms);
1354       synth_symbol_table = xmalloc (sizeof (asymbol *) * synthcount);
1355       for (i = 0; i < synthcount; i++)
1356         synth_symbol_table[i] = synthsyms + i;
1357       make_cleanup (xfree, synth_symbol_table);
1358       elf_symtab_read (objfile, ST_SYNTHETIC, synthcount,
1359                        synth_symbol_table, 1);
1360     }
1361
1362   /* Install any minimal symbols that have been collected as the current
1363      minimal symbols for this objfile.  The debug readers below this point
1364      should not generate new minimal symbols; if they do it's their
1365      responsibility to install them.  "mdebug" appears to be the only one
1366      which will do this.  */
1367
1368   install_minimal_symbols (objfile);
1369   do_cleanups (back_to);
1370
1371   /* Now process debugging information, which is contained in
1372      special ELF sections.  */
1373
1374   /* We first have to find them...  */
1375   bfd_map_over_sections (abfd, elf_locate_sections, (void *) & ei);
1376
1377   /* ELF debugging information is inserted into the psymtab in the
1378      order of least informative first - most informative last.  Since
1379      the psymtab table is searched `most recent insertion first' this
1380      increases the probability that more detailed debug information
1381      for a section is found.
1382
1383      For instance, an object file might contain both .mdebug (XCOFF)
1384      and .debug_info (DWARF2) sections then .mdebug is inserted first
1385      (searched last) and DWARF2 is inserted last (searched first).  If
1386      we don't do this then the XCOFF info is found first - for code in
1387      an included file XCOFF info is useless.  */
1388
1389   if (ei.mdebugsect)
1390     {
1391       const struct ecoff_debug_swap *swap;
1392
1393       /* .mdebug section, presumably holding ECOFF debugging
1394          information.  */
1395       swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap;
1396       if (swap)
1397         elfmdebug_build_psymtabs (objfile, swap, ei.mdebugsect);
1398     }
1399   if (ei.stabsect)
1400     {
1401       asection *str_sect;
1402
1403       /* Stab sections have an associated string table that looks like
1404          a separate section.  */
1405       str_sect = bfd_get_section_by_name (abfd, ".stabstr");
1406
1407       /* FIXME should probably warn about a stab section without a stabstr.  */
1408       if (str_sect)
1409         elfstab_build_psymtabs (objfile,
1410                                 ei.stabsect,
1411                                 str_sect->filepos,
1412                                 bfd_section_size (abfd, str_sect));
1413     }
1414
1415   if (dwarf2_has_info (objfile, NULL))
1416     {
1417       /* elf_sym_fns_gdb_index cannot handle simultaneous non-DWARF debug
1418          information present in OBJFILE.  If there is such debug info present
1419          never use .gdb_index.  */
1420
1421       if (!objfile_has_partial_symbols (objfile)
1422           && dwarf2_initialize_objfile (objfile))
1423         objfile->sf = &elf_sym_fns_gdb_index;
1424       else
1425         {
1426           /* It is ok to do this even if the stabs reader made some
1427              partial symbols, because OBJF_PSYMTABS_READ has not been
1428              set, and so our lazy reader function will still be called
1429              when needed.  */
1430           objfile->sf = &elf_sym_fns_lazy_psyms;
1431         }
1432     }
1433   /* If the file has its own symbol tables it has no separate debug
1434      info.  `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to
1435      SYMTABS/PSYMTABS.  `.gnu_debuglink' may no longer be present with
1436      `.note.gnu.build-id'.  */
1437   else if (!objfile_has_partial_symbols (objfile))
1438     {
1439       char *debugfile;
1440
1441       debugfile = find_separate_debug_file_by_buildid (objfile);
1442
1443       if (debugfile == NULL)
1444         debugfile = find_separate_debug_file_by_debuglink (objfile);
1445
1446       if (debugfile)
1447         {
1448           struct cleanup *cleanup = make_cleanup (xfree, debugfile);
1449           bfd *abfd = symfile_bfd_open (debugfile);
1450
1451           make_cleanup_bfd_unref (abfd);
1452           symbol_file_add_separate (abfd, symfile_flags, objfile);
1453           do_cleanups (cleanup);
1454         }
1455     }
1456
1457   if (symtab_create_debug)
1458     fprintf_unfiltered (gdb_stdlog, "Done reading minimal symbols.\n");
1459 }
1460
1461 /* Callback to lazily read psymtabs.  */
1462
1463 static void
1464 read_psyms (struct objfile *objfile)
1465 {
1466   if (dwarf2_has_info (objfile, NULL))
1467     dwarf2_build_psymtabs (objfile);
1468 }
1469
1470 /* This cleans up the objfile's deprecated_sym_stab_info pointer, and
1471    the chain of stab_section_info's, that might be dangling from
1472    it.  */
1473
1474 static void
1475 free_elfinfo (void *objp)
1476 {
1477   struct objfile *objfile = (struct objfile *) objp;
1478   struct dbx_symfile_info *dbxinfo = objfile->deprecated_sym_stab_info;
1479   struct stab_section_info *ssi, *nssi;
1480
1481   ssi = dbxinfo->stab_section_info;
1482   while (ssi)
1483     {
1484       nssi = ssi->next;
1485       xfree (ssi);
1486       ssi = nssi;
1487     }
1488
1489   dbxinfo->stab_section_info = 0;       /* Just say No mo info about this.  */
1490 }
1491
1492
1493 /* Initialize anything that needs initializing when a completely new symbol
1494    file is specified (not just adding some symbols from another file, e.g. a
1495    shared library).
1496
1497    We reinitialize buildsym, since we may be reading stabs from an ELF
1498    file.  */
1499
1500 static void
1501 elf_new_init (struct objfile *ignore)
1502 {
1503   stabsread_new_init ();
1504   buildsym_new_init ();
1505 }
1506
1507 /* Perform any local cleanups required when we are done with a particular
1508    objfile.  I.E, we are in the process of discarding all symbol information
1509    for an objfile, freeing up all memory held for it, and unlinking the
1510    objfile struct from the global list of known objfiles.  */
1511
1512 static void
1513 elf_symfile_finish (struct objfile *objfile)
1514 {
1515   if (objfile->deprecated_sym_stab_info != NULL)
1516     {
1517       xfree (objfile->deprecated_sym_stab_info);
1518     }
1519
1520   dwarf2_free_objfile (objfile);
1521 }
1522
1523 /* ELF specific initialization routine for reading symbols.
1524
1525    It is passed a pointer to a struct sym_fns which contains, among other
1526    things, the BFD for the file whose symbols are being read, and a slot for
1527    a pointer to "private data" which we can fill with goodies.
1528
1529    For now at least, we have nothing in particular to do, so this function is
1530    just a stub.  */
1531
1532 static void
1533 elf_symfile_init (struct objfile *objfile)
1534 {
1535   /* ELF objects may be reordered, so set OBJF_REORDERED.  If we
1536      find this causes a significant slowdown in gdb then we could
1537      set it in the debug symbol readers only when necessary.  */
1538   objfile->flags |= OBJF_REORDERED;
1539 }
1540
1541 /* When handling an ELF file that contains Sun STABS debug info,
1542    some of the debug info is relative to the particular chunk of the
1543    section that was generated in its individual .o file.  E.g.
1544    offsets to static variables are relative to the start of the data
1545    segment *for that module before linking*.  This information is
1546    painfully squirreled away in the ELF symbol table as local symbols
1547    with wierd names.  Go get 'em when needed.  */
1548
1549 void
1550 elfstab_offset_sections (struct objfile *objfile, struct partial_symtab *pst)
1551 {
1552   const char *filename = pst->filename;
1553   struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info;
1554   struct stab_section_info *maybe = dbx->stab_section_info;
1555   struct stab_section_info *questionable = 0;
1556   int i;
1557
1558   /* The ELF symbol info doesn't include path names, so strip the path
1559      (if any) from the psymtab filename.  */
1560   filename = lbasename (filename);
1561
1562   /* FIXME:  This linear search could speed up significantly
1563      if it was chained in the right order to match how we search it,
1564      and if we unchained when we found a match.  */
1565   for (; maybe; maybe = maybe->next)
1566     {
1567       if (filename[0] == maybe->filename[0]
1568           && filename_cmp (filename, maybe->filename) == 0)
1569         {
1570           /* We found a match.  But there might be several source files
1571              (from different directories) with the same name.  */
1572           if (0 == maybe->found)
1573             break;
1574           questionable = maybe; /* Might use it later.  */
1575         }
1576     }
1577
1578   if (maybe == 0 && questionable != 0)
1579     {
1580       complaint (&symfile_complaints,
1581                  _("elf/stab section information questionable for %s"),
1582                  filename);
1583       maybe = questionable;
1584     }
1585
1586   if (maybe)
1587     {
1588       /* Found it!  Allocate a new psymtab struct, and fill it in.  */
1589       maybe->found++;
1590       pst->section_offsets = (struct section_offsets *)
1591         obstack_alloc (&objfile->objfile_obstack,
1592                        SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
1593       for (i = 0; i < maybe->num_sections; i++)
1594         (pst->section_offsets)->offsets[i] = maybe->sections[i];
1595       return;
1596     }
1597
1598   /* We were unable to find any offsets for this file.  Complain.  */
1599   if (dbx->stab_section_info)   /* If there *is* any info, */
1600     complaint (&symfile_complaints,
1601                _("elf/stab section information missing for %s"), filename);
1602 }
1603
1604 /* Implementation of `sym_get_probes', as documented in symfile.h.  */
1605
1606 static VEC (probe_p) *
1607 elf_get_probes (struct objfile *objfile)
1608 {
1609   VEC (probe_p) *probes_per_objfile;
1610
1611   /* Have we parsed this objfile's probes already?  */
1612   probes_per_objfile = objfile_data (objfile, probe_key);
1613
1614   if (!probes_per_objfile)
1615     {
1616       int ix;
1617       const struct probe_ops *probe_ops;
1618
1619       /* Here we try to gather information about all types of probes from the
1620          objfile.  */
1621       for (ix = 0; VEC_iterate (probe_ops_cp, all_probe_ops, ix, probe_ops);
1622            ix++)
1623         probe_ops->get_probes (&probes_per_objfile, objfile);
1624
1625       if (probes_per_objfile == NULL)
1626         {
1627           VEC_reserve (probe_p, probes_per_objfile, 1);
1628           gdb_assert (probes_per_objfile != NULL);
1629         }
1630
1631       set_objfile_data (objfile, probe_key, probes_per_objfile);
1632     }
1633
1634   return probes_per_objfile;
1635 }
1636
1637 /* Implementation of `sym_get_probe_argument_count', as documented in
1638    symfile.h.  */
1639
1640 static unsigned
1641 elf_get_probe_argument_count (struct probe *probe)
1642 {
1643   return probe->pops->get_probe_argument_count (probe);
1644 }
1645
1646 /* Implementation of `sym_evaluate_probe_argument', as documented in
1647    symfile.h.  */
1648
1649 static struct value *
1650 elf_evaluate_probe_argument (struct probe *probe, unsigned n)
1651 {
1652   return probe->pops->evaluate_probe_argument (probe, n);
1653 }
1654
1655 /* Implementation of `sym_compile_to_ax', as documented in symfile.h.  */
1656
1657 static void
1658 elf_compile_to_ax (struct probe *probe,
1659                    struct agent_expr *expr,
1660                    struct axs_value *value,
1661                    unsigned n)
1662 {
1663   probe->pops->compile_to_ax (probe, expr, value, n);
1664 }
1665
1666 /* Implementation of `sym_relocate_probe', as documented in symfile.h.  */
1667
1668 static void
1669 elf_symfile_relocate_probe (struct objfile *objfile,
1670                             struct section_offsets *new_offsets,
1671                             struct section_offsets *delta)
1672 {
1673   int ix;
1674   VEC (probe_p) *probes = objfile_data (objfile, probe_key);
1675   struct probe *probe;
1676
1677   for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++)
1678     probe->pops->relocate (probe, ANOFFSET (delta, SECT_OFF_TEXT (objfile)));
1679 }
1680
1681 /* Helper function used to free the space allocated for storing SystemTap
1682    probe information.  */
1683
1684 static void
1685 probe_key_free (struct objfile *objfile, void *d)
1686 {
1687   int ix;
1688   VEC (probe_p) *probes = d;
1689   struct probe *probe;
1690
1691   for (ix = 0; VEC_iterate (probe_p, probes, ix, probe); ix++)
1692     probe->pops->destroy (probe);
1693
1694   VEC_free (probe_p, probes);
1695 }
1696
1697 \f
1698
1699 /* Implementation `sym_probe_fns', as documented in symfile.h.  */
1700
1701 static const struct sym_probe_fns elf_probe_fns =
1702 {
1703   elf_get_probes,               /* sym_get_probes */
1704   elf_get_probe_argument_count, /* sym_get_probe_argument_count */
1705   elf_evaluate_probe_argument,  /* sym_evaluate_probe_argument */
1706   elf_compile_to_ax,            /* sym_compile_to_ax */
1707   elf_symfile_relocate_probe,   /* sym_relocate_probe */
1708 };
1709
1710 /* Register that we are able to handle ELF object file formats.  */
1711
1712 static const struct sym_fns elf_sym_fns =
1713 {
1714   bfd_target_elf_flavour,
1715   elf_new_init,                 /* init anything gbl to entire symtab */
1716   elf_symfile_init,             /* read initial info, setup for sym_read() */
1717   elf_symfile_read,             /* read a symbol file into symtab */
1718   NULL,                         /* sym_read_psymbols */
1719   elf_symfile_finish,           /* finished with file, cleanup */
1720   default_symfile_offsets,      /* Translate ext. to int. relocation */
1721   elf_symfile_segments,         /* Get segment information from a file.  */
1722   NULL,
1723   default_symfile_relocate,     /* Relocate a debug section.  */
1724   &elf_probe_fns,               /* sym_probe_fns */
1725   &psym_functions
1726 };
1727
1728 /* The same as elf_sym_fns, but not registered and lazily reads
1729    psymbols.  */
1730
1731 static const struct sym_fns elf_sym_fns_lazy_psyms =
1732 {
1733   bfd_target_elf_flavour,
1734   elf_new_init,                 /* init anything gbl to entire symtab */
1735   elf_symfile_init,             /* read initial info, setup for sym_read() */
1736   elf_symfile_read,             /* read a symbol file into symtab */
1737   read_psyms,                   /* sym_read_psymbols */
1738   elf_symfile_finish,           /* finished with file, cleanup */
1739   default_symfile_offsets,      /* Translate ext. to int. relocation */
1740   elf_symfile_segments,         /* Get segment information from a file.  */
1741   NULL,
1742   default_symfile_relocate,     /* Relocate a debug section.  */
1743   &elf_probe_fns,               /* sym_probe_fns */
1744   &psym_functions
1745 };
1746
1747 /* The same as elf_sym_fns, but not registered and uses the
1748    DWARF-specific GNU index rather than psymtab.  */
1749 static const struct sym_fns elf_sym_fns_gdb_index =
1750 {
1751   bfd_target_elf_flavour,
1752   elf_new_init,                 /* init anything gbl to entire symab */
1753   elf_symfile_init,             /* read initial info, setup for sym_red() */
1754   elf_symfile_read,             /* read a symbol file into symtab */
1755   NULL,                         /* sym_read_psymbols */
1756   elf_symfile_finish,           /* finished with file, cleanup */
1757   default_symfile_offsets,      /* Translate ext. to int. relocatin */
1758   elf_symfile_segments,         /* Get segment information from a file.  */
1759   NULL,
1760   default_symfile_relocate,     /* Relocate a debug section.  */
1761   &elf_probe_fns,               /* sym_probe_fns */
1762   &dwarf2_gdb_index_functions
1763 };
1764
1765 /* STT_GNU_IFUNC resolver vector to be installed to gnu_ifunc_fns_p.  */
1766
1767 static const struct gnu_ifunc_fns elf_gnu_ifunc_fns =
1768 {
1769   elf_gnu_ifunc_resolve_addr,
1770   elf_gnu_ifunc_resolve_name,
1771   elf_gnu_ifunc_resolver_stop,
1772   elf_gnu_ifunc_resolver_return_stop
1773 };
1774
1775 void
1776 _initialize_elfread (void)
1777 {
1778   probe_key = register_objfile_data_with_cleanup (NULL, probe_key_free);
1779   add_symtab_fns (&elf_sym_fns);
1780
1781   elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
1782   gnu_ifunc_fns_p = &elf_gnu_ifunc_fns;
1783 }