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