Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/linux/machine/i386/dl-machine.h')
-rw-r--r--newlib/libc/sys/linux/machine/i386/dl-machine.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/newlib/libc/sys/linux/machine/i386/dl-machine.h b/newlib/libc/sys/linux/machine/i386/dl-machine.h
index 032713e5b..80757e89a 100644
--- a/newlib/libc/sys/linux/machine/i386/dl-machine.h
+++ b/newlib/libc/sys/linux/machine/i386/dl-machine.h
@@ -292,6 +292,20 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
return value;
}
+static inline void __attribute__ ((unused))
+elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
+ const Elf32_Sym *sym, const struct r_found_version *version,
+ Elf32_Addr *const reloc_addr,
+ struct r_scope_elem *scope[]);
+
+static inline void __attribute__ ((unused))
+elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+ Elf32_Addr *const reloc_addr);
+
+static inline void
+elf_machine_lazy_rel (struct link_map *map,
+ Elf32_Addr l_addr, const Elf32_Rel *reloc);
+
#endif /* !dl_machine_h */
#ifdef RESOLVE
@@ -299,10 +313,11 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
MAP is the object containing the reloc. */
-static inline void
+static inline void __attribute__ ((unused))
elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
const Elf32_Sym *sym, const struct r_found_version *version,
- Elf32_Addr *const reloc_addr)
+ Elf32_Addr *const reloc_addr,
+ struct r_scope_elem *scope[])
{
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -316,7 +331,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
(i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the
common defn for _dl_rtld_map, which is incompatible with a
weak decl in the same file. */
- weak_extern (_dl_rtld_map);
+ #pragma weak _dl_rtld_map
if (map != &_dl_rtld_map) /* Already done in rtld itself. */
# endif
*reloc_addr += map->l_addr;
@@ -331,7 +346,9 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
#ifndef RTLD_BOOTSTRAP
const Elf32_Sym *const refsym = sym;
#endif
- Elf32_Addr value = RESOLVE (&sym, version, r_type);
+ /* String table object symbols. */
+ const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+ Elf32_Addr value = RESOLVE (&sym, version, r_type, scope);
if (sym)
value += sym->st_value;
@@ -379,7 +396,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
}
}
-static inline void
+static inline void __attribute__ ((unused))
elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
Elf32_Addr *const reloc_addr)
{