gdb/
[deliverable/binutils-gdb.git] / gdb / elfread.c
index dacc6f054834d933a9ce97c9da8610c1e3b27ce6..200b82fac1c6cdeebdd586d9c341a39bca9bb57b 100644 (file)
@@ -185,7 +185,8 @@ record_minimal_symbol (const char *name, int name_len, int copy_name,
 {
   struct gdbarch *gdbarch = get_objfile_arch (objfile);
 
-  if (ms_type == mst_text || ms_type == mst_file_text)
+  if (ms_type == mst_text || ms_type == mst_file_text
+      || ms_type == mst_text_gnu_ifunc)
     address = gdbarch_smash_text_address (gdbarch, address);
 
   return prim_record_minimal_symbol_full (name, name_len, copy_name, address,
@@ -394,7 +395,10 @@ elf_symtab_read (struct objfile *objfile, int type,
            {
              if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
                {
-                 ms_type = mst_text;
+                 if (sym->flags & BSF_GNU_INDIRECT_FUNCTION)
+                   ms_type = mst_text_gnu_ifunc;
+                 else
+                   ms_type = mst_text;
                }
              else if ((sym->name[0] == '.' && sym->name[1] == 'L')
                       || ((sym->flags & BSF_LOCAL)
This page took 0.033834 seconds and 4 git commands to generate.