summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ldso/ldso/arm/dl-sysdep.h6
-rw-r--r--ldso/ldso/avr32/dl-sysdep.h14
-rw-r--r--ldso/ldso/bfin/dl-inlines.h32
-rw-r--r--ldso/ldso/bfin/dl-syscalls.h20
-rw-r--r--ldso/ldso/cris/dl-startup.h2
-rw-r--r--ldso/ldso/frv/dl-inlines.h28
-rw-r--r--ldso/ldso/frv/dl-syscalls.h14
-rw-r--r--ldso/ldso/i386/dl-sysdep.h2
-rw-r--r--ldso/ldso/m68k/dl-sysdep.h2
-rw-r--r--ldso/ldso/m68k/resolve.S5
-rw-r--r--ldso/ldso/mips/dl-startup.h2
-rw-r--r--ldso/ldso/mips/dl-sysdep.h2
-rw-r--r--ldso/ldso/powerpc/dl-startup.h2
-rw-r--r--ldso/ldso/powerpc/dl-sysdep.h2
-rw-r--r--ldso/ldso/powerpc/resolve.S14
-rw-r--r--ldso/ldso/sh/dl-startup.h2
-rw-r--r--ldso/ldso/sh/dl-syscalls.h2
-rw-r--r--ldso/ldso/sh/dl-sysdep.h2
-rw-r--r--ldso/ldso/sh64/dl-startup.h2
-rw-r--r--ldso/ldso/sh64/dl-sysdep.h2
-rw-r--r--ldso/ldso/sparc/dl-startup.h2
-rw-r--r--ldso/ldso/sparc/dl-sysdep.h2
-rw-r--r--ldso/ldso/xtensa/resolve.S12
23 files changed, 89 insertions, 84 deletions
diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h
index 2a0bbad77..d99a805e5 100644
--- a/ldso/ldso/arm/dl-sysdep.h
+++ b/ldso/ldso/arm/dl-sysdep.h
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
* Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
*/
@@ -148,3 +148,7 @@ elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
} while (--relative_count);
}
#endif /* !_ARCH_DL_SYSDEP */
+
+#ifdef __ARM_EABI__
+#define DL_MALLOC_ALIGN 8 /* EABI needs 8 byte alignment for STRD LDRD */
+#endif
diff --git a/ldso/ldso/avr32/dl-sysdep.h b/ldso/ldso/avr32/dl-sysdep.h
index 5ee110101..6696382b3 100644
--- a/ldso/ldso/avr32/dl-sysdep.h
+++ b/ldso/ldso/avr32/dl-sysdep.h
@@ -24,15 +24,15 @@
/* Initialization sequence for the application/library GOT. */
#define INIT_GOT(GOT_BASE,MODULE) \
do { \
- unsigned long i, nr_got; \
+ unsigned long _i, _nr_got; \
\
GOT_BASE[0] = (unsigned long) _dl_linux_resolve; \
GOT_BASE[1] = (unsigned long) MODULE; \
\
/* Add load address displacement to all GOT entries */ \
- nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
- for (i = 2; i < nr_got; i++) \
- GOT_BASE[i] += (unsigned long)MODULE->loadaddr; \
+ _nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4; \
+ for (_i = 2; _i < _nr_got; _i++) \
+ GOT_BASE[_i] += (unsigned long)MODULE->loadaddr; \
} while (0)
#define do_rem(result, n, base) ((result) = (n) % (base))
@@ -60,7 +60,7 @@ unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
/* Return the link-time address of _DYNAMIC. Conveniently, this is the
first element of the GOT. This must be inlined in a function which
uses global data. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_dynamic (void)
{
register Elf32_Addr *got __asm__("r6");
@@ -68,7 +68,7 @@ elf_machine_dynamic (void)
}
/* Return the run-time load address of the shared object. */
-static __inline__ Elf32_Addr
+static __always_inline Elf32_Addr
elf_machine_load_address (void)
{
extern void __dl_start __asm__("_dl_start");
@@ -91,7 +91,7 @@ elf_machine_load_address (void)
* Currently, we don't use that tag, but we might in the future as
* this would reduce the startup time somewhat (although probably not by much).
*/
-static __inline__ void
+static __always_inline void
elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
Elf32_Word relative_count)
{
diff --git a/ldso/ldso/bfin/dl-inlines.h b/ldso/ldso/bfin/dl-inlines.h
index f8b8f85f1..6ed1bdaf9 100644
--- a/ldso/ldso/bfin/dl-inlines.h
+++ b/ldso/ldso/bfin/dl-inlines.h
@@ -26,7 +26,7 @@ USA. */
/* Initialize a DL_LOADADDR_TYPE given a got pointer and a complete
load map. */
-inline static void
+static __always_inline void
__dl_init_loadaddr_map (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Addr dl_boot_got_pointer,
struct elf32_fdpic_loadmap *map)
{
@@ -47,7 +47,7 @@ __dl_init_loadaddr_map (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Addr dl_boo
/* Figure out how many LOAD segments there are in the given headers,
and allocate a block for the load map big enough for them.
got_value will be properly initialized later on, with INIT_GOT. */
-inline static int
+static __always_inline int
__dl_init_loadaddr (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Phdr *ppnt,
int pcnt)
{
@@ -73,7 +73,7 @@ __dl_init_loadaddr (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Phdr *ppnt,
}
/* Incrementally initialize a load map. */
-inline static void
+static __always_inline void
__dl_init_loadaddr_hdr (struct elf32_fdpic_loadaddr loadaddr, void *addr,
Elf32_Phdr *phdr, int maxsegs)
{
@@ -99,12 +99,12 @@ __dl_init_loadaddr_hdr (struct elf32_fdpic_loadaddr loadaddr, void *addr,
#endif
}
-inline static void __dl_loadaddr_unmap
+static __always_inline void __dl_loadaddr_unmap
(struct elf32_fdpic_loadaddr loadaddr, struct funcdesc_ht *funcdesc_ht);
/* Figure out whether the given address is in one of the mapped
segments. */
-inline static int
+static __always_inline int
__dl_addr_in_loadaddr (void *p, struct elf32_fdpic_loadaddr loadaddr)
{
struct elf32_fdpic_loadmap *map = loadaddr.map;
@@ -118,7 +118,7 @@ __dl_addr_in_loadaddr (void *p, struct elf32_fdpic_loadaddr loadaddr)
return 0;
}
-inline static void * _dl_funcdesc_for (void *entry_point, void *got_value);
+static __always_inline void * _dl_funcdesc_for (void *entry_point, void *got_value);
/* The hashcode handling code below is heavily inspired in libiberty's
hashtab code, but with most adaptation points and support for
@@ -127,7 +127,7 @@ inline static void * _dl_funcdesc_for (void *entry_point, void *got_value);
Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com). */
-inline static unsigned long
+static __always_inline unsigned long
higher_prime_number (unsigned long n)
{
/* These are primes that are near, but slightly smaller than, a
@@ -202,13 +202,13 @@ struct funcdesc_ht
size_t n_elements;
};
-inline static int
+static __always_inline int
hash_pointer (const void *p)
{
return (int) ((long)p >> 3);
}
-inline static struct funcdesc_ht *
+static __always_inline struct funcdesc_ht *
htab_create (void)
{
struct funcdesc_ht *ht = _dl_malloc (sizeof (struct funcdesc_ht));
@@ -229,7 +229,7 @@ htab_create (void)
/* This is only called from _dl_loadaddr_unmap, so it's safe to call
_dl_free(). See the discussion below. */
-inline static void
+static __always_inline void
htab_delete (struct funcdesc_ht *htab)
{
int i;
@@ -249,7 +249,7 @@ htab_delete (struct funcdesc_ht *htab)
This function also assumes there are no deleted entries in the table.
HASH is the hash value for the element to be inserted. */
-inline static struct funcdesc_value **
+static __always_inline struct funcdesc_value **
find_empty_slot_for_expand (struct funcdesc_ht *htab, int hash)
{
size_t size = htab->size;
@@ -281,7 +281,7 @@ find_empty_slot_for_expand (struct funcdesc_ht *htab, int hash)
this function will return zero, indicating that the table could not be
expanded. If all goes well, it will return a non-zero value. */
-inline static int
+static __always_inline int
htab_expand (struct funcdesc_ht *htab)
{
struct funcdesc_value **oentries;
@@ -339,7 +339,7 @@ htab_expand (struct funcdesc_ht *htab)
When inserting an entry, NULL may be returned if memory allocation
fails. */
-inline static struct funcdesc_value **
+static __always_inline struct funcdesc_value **
htab_find_slot (struct funcdesc_ht *htab, void *ptr, int insert)
{
unsigned int index;
@@ -415,7 +415,7 @@ _dl_funcdesc_for (void *entry_point, void *got_value)
return _dl_stabilize_funcdesc (*entry);
}
-inline static void const *
+static __always_inline void const *
_dl_lookup_address (void const *address)
{
struct elf_resolve *rpnt;
@@ -487,7 +487,7 @@ __dl_loadaddr_unmap (struct elf32_fdpic_loadaddr loadaddr,
htab_delete (funcdesc_ht);
}
-inline static int
+static __always_inline int
__dl_is_special_segment (Elf32_Ehdr *epnt,
Elf32_Phdr *ppnt)
{
@@ -515,7 +515,7 @@ __dl_is_special_segment (Elf32_Ehdr *epnt,
return 0;
}
-inline static char *
+static __always_inline char *
__dl_map_segment (Elf32_Ehdr *epnt,
Elf32_Phdr *ppnt,
int infile,
diff --git a/ldso/ldso/bfin/dl-syscalls.h b/ldso/ldso/bfin/dl-syscalls.h
index 21e4cdd2c..916d0f84e 100644
--- a/ldso/ldso/bfin/dl-syscalls.h
+++ b/ldso/ldso/bfin/dl-syscalls.h
@@ -44,8 +44,8 @@ static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
# endif
#include <bits/uClibc_page.h> /* for PAGE_SIZE */
-inline static void *_dl_memset(void*,int,size_t);
-inline static ssize_t _dl_pread(int fd, void *buf, size_t count, off_t offset);
+static __always_inline void *_dl_memset(void*,int,size_t);
+static __always_inline ssize_t _dl_pread(int fd, void *buf, size_t count, off_t offset);
static __ptr_t
_dl_mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
@@ -152,11 +152,11 @@ _dl_mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
#include <unistd.h>
#define __NR___syscall_lseek __NR_lseek
-inline static unsigned long _dl_read(int fd, const void *buf, unsigned long count);
+static __always_inline unsigned long _dl_read(int fd, const void *buf, unsigned long count);
-inline static _syscall3(__off_t, __syscall_lseek, int, fd, __off_t, offset,
+static __always_inline _syscall3(__off_t, __syscall_lseek, int, fd, __off_t, offset,
int, whence);
-inline static ssize_t
+static __always_inline ssize_t
_dl_pread(int fd, void *buf, size_t count, off_t offset)
{
__off_t orig = __syscall_lseek (fd, 0, SEEK_CUR);
@@ -177,10 +177,10 @@ _dl_pread(int fd, void *buf, size_t count, off_t offset)
}
#else
#define __NR___syscall_pread __NR_pread
-inline static _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
+static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
size_t, count, off_t, offset_hi, off_t, offset_lo);
-inline static ssize_t
+static __always_inline ssize_t
_dl_pread(int fd, void *buf, size_t count, off_t offset)
{
return(__syscall_pread(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset)));
@@ -190,18 +190,18 @@ _dl_pread(int fd, void *buf, size_t count, off_t offset)
#ifdef __NR_sram_alloc
#define __NR__dl_sram_alloc __NR_sram_alloc
-inline static _syscall2(__ptr_t, _dl_sram_alloc,
+static __always_inline _syscall2(__ptr_t, _dl_sram_alloc,
size_t, len, unsigned long, flags);
#endif
#ifdef __NR_sram_free
#define __NR__dl_sram_free __NR_sram_free
-inline static _syscall1(int, _dl_sram_free, __ptr_t, addr);
+static __always_inline _syscall1(int, _dl_sram_free, __ptr_t, addr);
#endif
#ifdef __NR_dma_memcpy
#define __NR__dl_dma_memcpy __NR_dma_memcpy
-inline static _syscall3(__ptr_t, _dl_dma_memcpy,
+static __always_inline _syscall3(__ptr_t, _dl_dma_memcpy,
__ptr_t, dest, __ptr_t, src, size_t, len);
#endif
diff --git a/ldso/ldso/cris/dl-startup.h b/ldso/ldso/cris/dl-startup.h
index 832c3528b..dc9cd8fe2 100644
--- a/ldso/ldso/cris/dl-startup.h
+++ b/ldso/ldso/cris/dl-startup.h
@@ -53,7 +53,7 @@ __asm__("" \
/* Handle relocation of the symbols in the dynamic loader. */
-static inline
+static __always_inline
void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
unsigned long symbol_addr, unsigned long load_addr, Elf32_Sym *symtab)
{
diff --git a/ldso/ldso/frv/dl-inlines.h b/ldso/ldso/frv/dl-inlines.h
index 0d469dd88..95233a7c0 100644
--- a/ldso/ldso/frv/dl-inlines.h
+++ b/ldso/ldso/frv/dl-inlines.h
@@ -10,7 +10,7 @@
/* Initialize a DL_LOADADDR_TYPE given a got pointer and a complete
load map. */
-inline static void
+static __always_inline void
__dl_init_loadaddr_map (struct elf32_fdpic_loadaddr *loadaddr, void *got_value,
struct elf32_fdpic_loadmap *map)
{
@@ -31,7 +31,7 @@ __dl_init_loadaddr_map (struct elf32_fdpic_loadaddr *loadaddr, void *got_value,
/* Figure out how many LOAD segments there are in the given headers,
and allocate a block for the load map big enough for them.
got_value will be properly initialized later on, with INIT_GOT. */
-inline static int
+static __always_inline int
__dl_init_loadaddr (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Phdr *ppnt,
int pcnt)
{
@@ -57,7 +57,7 @@ __dl_init_loadaddr (struct elf32_fdpic_loadaddr *loadaddr, Elf32_Phdr *ppnt,
}
/* Incrementally initialize a load map. */
-inline static void
+static __always_inline void
__dl_init_loadaddr_hdr (struct elf32_fdpic_loadaddr loadaddr, void *addr,
Elf32_Phdr *phdr, int maxsegs)
{
@@ -83,12 +83,12 @@ __dl_init_loadaddr_hdr (struct elf32_fdpic_loadaddr loadaddr, void *addr,
#endif
}
-inline static void __dl_loadaddr_unmap
+static __always_inline void __dl_loadaddr_unmap
(struct elf32_fdpic_loadaddr loadaddr, struct funcdesc_ht *funcdesc_ht);
/* Figure out whether the given address is in one of the mapped
segments. */
-inline static int
+static __always_inline int
__dl_addr_in_loadaddr (void *p, struct elf32_fdpic_loadaddr loadaddr)
{
struct elf32_fdpic_loadmap *map = loadaddr.map;
@@ -102,7 +102,7 @@ __dl_addr_in_loadaddr (void *p, struct elf32_fdpic_loadaddr loadaddr)
return 0;
}
-inline static void * _dl_funcdesc_for (void *entry_point, void *got_value);
+static __always_inline void * _dl_funcdesc_for (void *entry_point, void *got_value);
/* The hashcode handling code below is heavily inspired in libiberty's
hashtab code, but with most adaptation points and support for
@@ -111,7 +111,7 @@ inline static void * _dl_funcdesc_for (void *entry_point, void *got_value);
Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com). */
-inline static unsigned long
+static __always_inline unsigned long
higher_prime_number (unsigned long n)
{
/* These are primes that are near, but slightly smaller than, a
@@ -186,13 +186,13 @@ struct funcdesc_ht
size_t n_elements;
};
-inline static int
+static __always_inline int
hash_pointer (const void *p)
{
return (int) ((long)p >> 3);
}
-inline static struct funcdesc_ht *
+static __always_inline struct funcdesc_ht *
htab_create (void)
{
struct funcdesc_ht *ht = _dl_malloc (sizeof (struct funcdesc_ht));
@@ -213,7 +213,7 @@ htab_create (void)
/* This is only called from _dl_loadaddr_unmap, so it's safe to call
_dl_free(). See the discussion below. */
-inline static void
+static __always_inline void
htab_delete (struct funcdesc_ht *htab)
{
int i;
@@ -233,7 +233,7 @@ htab_delete (struct funcdesc_ht *htab)
This function also assumes there are no deleted entries in the table.
HASH is the hash value for the element to be inserted. */
-inline static struct funcdesc_value **
+static __always_inline struct funcdesc_value **
find_empty_slot_for_expand (struct funcdesc_ht *htab, int hash)
{
size_t size = htab->size;
@@ -265,7 +265,7 @@ find_empty_slot_for_expand (struct funcdesc_ht *htab, int hash)
this function will return zero, indicating that the table could not be
expanded. If all goes well, it will return a non-zero value. */
-inline static int
+static __always_inline int
htab_expand (struct funcdesc_ht *htab)
{
struct funcdesc_value **oentries;
@@ -323,7 +323,7 @@ htab_expand (struct funcdesc_ht *htab)
When inserting an entry, NULL may be returned if memory allocation
fails. */
-inline static struct funcdesc_value **
+static __always_inline struct funcdesc_value **
htab_find_slot (struct funcdesc_ht *htab, void *ptr, int insert)
{
unsigned int index;
@@ -399,7 +399,7 @@ _dl_funcdesc_for (void *entry_point, void *got_value)
return _dl_stabilize_funcdesc (*entry);
}
-inline static void const *
+static __always_inline void const *
_dl_lookup_address (void const *address)
{
struct elf_resolve *rpnt;
diff --git a/ldso/ldso/frv/dl-syscalls.h b/ldso/ldso/frv/dl-syscalls.h
index 093d0dca8..a4bff1d47 100644
--- a/ldso/ldso/frv/dl-syscalls.h
+++ b/ldso/ldso/frv/dl-syscalls.h
@@ -30,8 +30,8 @@ static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
# endif
#include <bits/uClibc_page.h> /* for PAGE_SIZE */
-inline static void *_dl_memset(void*,int,size_t);
-inline static ssize_t _dl_pread(int fd, void *buf, size_t count, off_t offset);
+static __always_inline void *_dl_memset(void*,int,size_t);
+static __always_inline ssize_t _dl_pread(int fd, void *buf, size_t count, off_t offset);
static __ptr_t
_dl_mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
@@ -138,11 +138,11 @@ _dl_mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
#include <unistd.h>
#define __NR___syscall_lseek __NR_lseek
-inline static unsigned long _dl_read(int fd, const void *buf, unsigned long count);
+static __always_inline unsigned long _dl_read(int fd, const void *buf, unsigned long count);
-inline static _syscall3(__off_t, __syscall_lseek, int, fd, __off_t, offset,
+static __always_inline _syscall3(__off_t, __syscall_lseek, int, fd, __off_t, offset,
int, whence);
-inline static ssize_t
+static __always_inline ssize_t
_dl_pread(int fd, void *buf, size_t count, off_t offset)
{
__off_t orig = __syscall_lseek (fd, 0, SEEK_CUR);
@@ -163,10 +163,10 @@ _dl_pread(int fd, void *buf, size_t count, off_t offset)
}
#else
#define __NR___syscall_pread __NR_pread
-inline static _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
+static __always_inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
size_t, count, off_t, offset_hi, off_t, offset_lo);
-inline static ssize_t
+static __always_inline ssize_t
_dl_pread(int fd, void *buf, size_t count, off_t offset)
{
return(__syscall_pread(fd,buf,count,__LONG_LONG_PAIR (offset >> 31, offset)));
diff --git a/ldso/ldso/i386/dl-sysdep.h b/ldso/ldso/i386/dl-sysdep.h
index 19128df7b..7090c929d 100644
--- a/ldso/ldso/i386/dl-sysdep.h
+++ b/ldso/ldso/i386/dl-sysdep.h
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
* Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
*/
diff --git a/ldso/ldso/m68k/dl-sysdep.h b/ldso/ldso/m68k/dl-sysdep.h
index 13e9e6015..e42be3150 100644
--- a/ldso/ldso/m68k/dl-sysdep.h
+++ b/ldso/ldso/m68k/dl-sysdep.h
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
* Copyright (C) 2005 by Erik Andersen <andersen@codepoet.org>
*/
diff --git a/ldso/ldso/m68k/resolve.S b/ldso/ldso/m68k/resolve.S
index d9a2929d6..1bd5c0096 100644
--- a/ldso/ldso/m68k/resolve.S
+++ b/ldso/ldso/m68k/resolve.S
@@ -19,5 +19,10 @@ _dl_linux_resolve:
# Pop parameters
addq.l #8, %sp
# Call real function.
+#if defined __mcoldfire__
+ move.l %d0,-(%sp)
+ rts
+#else
jmp (%d0)
+#endif
.size _dl_linux_resolve,.-_dl_linux_resolve
diff --git a/ldso/ldso/mips/dl-startup.h b/ldso/ldso/mips/dl-startup.h
index d76f4874d..606b162a3 100644
--- a/ldso/ldso/mips/dl-startup.h
+++ b/ldso/ldso/mips/dl-startup.h
@@ -1,4 +1,4 @@
-/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+/* Any assembly language/system dependent hacks needed to setup boot1.c so it
* will work as expected and cope with whatever platform specific wierdness is
* needed for this architecture.
* Copyright (C) 2005 by Joakim Tjernlund
diff --git a/ldso/ldso/mips/dl-sysdep.h b/ldso/ldso/mips/dl-sysdep.h
index 1b5a6e07a..312b9e858 100644
--- a/ldso/ldso/mips/dl-sysdep.h
+++ b/ldso/ldso/mips/dl-sysdep.h
@@ -1,7 +1,7 @@
/* vi: set sw=8 ts=8: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
*/
diff --git a/ldso/ldso/powerpc/dl-startup.h b/ldso/ldso/powerpc/dl-startup.h
index 7033da32b..50e72c3ee 100644
--- a/ldso/ldso/powerpc/dl-startup.h
+++ b/ldso/ldso/powerpc/dl-startup.h
@@ -1,4 +1,4 @@
-/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+/* Any assembly language/system dependent hacks needed to setup boot1.c so it
* will work as expected and cope with whatever platform specific wierdness is
* needed for this architecture.
* Copyright (C) 2005 by Joakim Tjernlund
diff --git a/ldso/ldso/powerpc/dl-sysdep.h b/ldso/ldso/powerpc/dl-sysdep.h
index d5282485d..768482272 100644
--- a/ldso/ldso/powerpc/dl-sysdep.h
+++ b/ldso/ldso/powerpc/dl-sysdep.h
@@ -1,5 +1,5 @@
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
*/
diff --git a/ldso/ldso/powerpc/resolve.S b/ldso/ldso/powerpc/resolve.S
index 03c6a79b8..c83337ccd 100644
--- a/ldso/ldso/powerpc/resolve.S
+++ b/ldso/ldso/powerpc/resolve.S
@@ -11,19 +11,19 @@
.type _dl_linux_resolve,@function
_dl_linux_resolve:
-// We need to save the registers used to pass parameters, and register 0,
-// which is used by _mcount; the registers are saved in a stack frame.
+/* We need to save the registers used to pass parameters, and register 0,
+ which is used by _mcount; the registers are saved in a stack frame. */
stwu 1,-64(1)
stw 0,12(1)
stw 3,16(1)
stw 4,20(1)
-// The code that calls this has put parameters for 'fixup' in r12 and r11.
+/* The code that calls this has put parameters for 'fixup' in r12 and r11. */
mr 3,12
stw 5,24(1)
mr 4,11
stw 6,28(1)
mflr 0
-// We also need to save some of the condition register fields.
+/* We also need to save some of the condition register fields. */
stw 7,32(1)
stw 0,48(1)
stw 8,36(1)
@@ -32,9 +32,9 @@ _dl_linux_resolve:
stw 10,44(1)
stw 0,8(1)
bl _dl_linux_resolver@local
-// 'fixup' returns the address we want to branch to.
+/* 'fixup' returns the address we want to branch to. */
mtctr 3
-// Put the registers back...
+/* Put the registers back... */
lwz 0,48(1)
lwz 10,44(1)
lwz 9,40(1)
@@ -48,7 +48,7 @@ _dl_linux_resolve:
lwz 4,20(1)
lwz 3,16(1)
lwz 0,12(1)
-// ...unwind the stack frame, and jump to the PLT entry we updated.
+/* ...unwind the stack frame, and jump to the PLT entry we updated. */
addi 1,1,64
bctr
diff --git a/ldso/ldso/sh/dl-startup.h b/ldso/ldso/sh/dl-startup.h
index 05e282bd8..7a3fdf235 100644
--- a/ldso/ldso/sh/dl-startup.h
+++ b/ldso/ldso/sh/dl-startup.h
@@ -1,4 +1,4 @@
-/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+/* Any assembly language/system dependent hacks needed to setup boot1.c so it
* will work as expected and cope with whatever platform specific wierdness is
* needed for this architecture. */
diff --git a/ldso/ldso/sh/dl-syscalls.h b/ldso/ldso/sh/dl-syscalls.h
index d3672512f..712852c4c 100644
--- a/ldso/ldso/sh/dl-syscalls.h
+++ b/ldso/ldso/sh/dl-syscalls.h
@@ -9,6 +9,6 @@ extern int _dl_errno;
#warning !!! gcc 4.1 and later have problems with __always_inline so redefined as inline
# ifdef __always_inline
# undef __always_inline
-# define __always_inline inline
+# define __always_inline __inline__
# endif
#endif
diff --git a/ldso/ldso/sh/dl-sysdep.h b/ldso/ldso/sh/dl-sysdep.h
index 2b0f1cc42..b2c2825e1 100644
--- a/ldso/ldso/sh/dl-sysdep.h
+++ b/ldso/ldso/sh/dl-sysdep.h
@@ -1,5 +1,5 @@
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
*/
diff --git a/ldso/ldso/sh64/dl-startup.h b/ldso/ldso/sh64/dl-startup.h
index 8c0a58df8..33512a9bc 100644
--- a/ldso/ldso/sh64/dl-startup.h
+++ b/ldso/ldso/sh64/dl-startup.h
@@ -1,4 +1,4 @@
-/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+/* Any assembly language/system dependent hacks needed to setup boot1.c so it
* will work as expected and cope with whatever platform specific wierdness is
* needed for this architecture.
*/
diff --git a/ldso/ldso/sh64/dl-sysdep.h b/ldso/ldso/sh64/dl-sysdep.h
index dadde6103..21bfffcb6 100644
--- a/ldso/ldso/sh64/dl-sysdep.h
+++ b/ldso/ldso/sh64/dl-sysdep.h
@@ -1,6 +1,6 @@
/* vi: set sw=8 ts=8: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
*/
diff --git a/ldso/ldso/sparc/dl-startup.h b/ldso/ldso/sparc/dl-startup.h
index c310e5df9..cc11ec103 100644
--- a/ldso/ldso/sparc/dl-startup.h
+++ b/ldso/ldso/sparc/dl-startup.h
@@ -1,4 +1,4 @@
-/* Any assmbly language/system dependent hacks needed to setup boot1.c so it
+/* Any assembly language/system dependent hacks needed to setup boot1.c so it
* will work as expected and cope with whatever platform specific wierdness is
* needed for this architecture. See arm/boot1_arch.h for an example of what
* can be done.
diff --git a/ldso/ldso/sparc/dl-sysdep.h b/ldso/ldso/sparc/dl-sysdep.h
index 963ab246d..27cb97e38 100644
--- a/ldso/ldso/sparc/dl-sysdep.h
+++ b/ldso/ldso/sparc/dl-sysdep.h
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
- * Various assmbly language/system dependent hacks that are required
+ * Various assembly language/system dependent hacks that are required
* so that we can minimize the amount of platform specific code.
* Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
*/
diff --git a/ldso/ldso/xtensa/resolve.S b/ldso/ldso/xtensa/resolve.S
index fb298391c..902cd8238 100644
--- a/ldso/ldso/xtensa/resolve.S
+++ b/ldso/ldso/xtensa/resolve.S
@@ -32,15 +32,11 @@
.type _dl_linux_resolve, @function
_dl_linux_resolve:
/* Fix up the high 2 bits of the return address. */
- mov a14, a0 // save a0 temporarily
- _call0 0f
- .align 4
-0: extui a13, a0, 30, 2
- slli a13, a13, 30
- mov a0, a14 // restore a0
+ movi a13, 0f
slli a12, a0, 2
- srli a12, a12, 2
- or a12, a12, a13
+0: extui a13, a13, 30, 2
+ ssai 2
+ src a12, a13, a12
/* Call the fixup function. */
movi a8, _dl_linux_resolver