diff options
30 files changed, 103 insertions, 37 deletions
diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h index 194fd2eb7..5935738e1 100644 --- a/ldso/ldso/arm/dl-sysdep.h +++ b/ldso/ldso/arm/dl-sysdep.h @@ -19,30 +19,31 @@ static inline unsigned long arm_modulus(unsigned long m, unsigned long p) { unsigned long i,t,inc; i=p; t=0; - while(!(i&(1<<31))) { + while (!(i&(1<<31))) { i<<=1; t++; } t--; - for(inc=t;inc>2;inc--) { + for (inc=t;inc>2;inc--) { i=p<<inc; - if(i&(1<<31)) + if (i&(1<<31)) break; - while(m>=i) { + while (m>=i) { m-=i; i<<=1; - if(i&(1<<31)) + if (i&(1<<31)) break; - if(i<p) + if (i<p) break; } } - while(m>=p) { + while (m>=p) { m-=p; } return m; } #define do_rem(result, n, base) ((result) = arm_modulus(n, base)) +#define do_div_10(result, remain) ((result) = (((result) - (remain)) / 2) * -(-1ul / 5ul)) /* Here we define the magic numbers that this dynamic loader should accept */ #define MAGIC1 EM_ARM diff --git a/ldso/ldso/arm/elfinterp.c b/ldso/ldso/arm/elfinterp.c index 16562642b..4ccfba769 100644 --- a/ldso/ldso/arm/elfinterp.c +++ b/ldso/ldso/arm/elfinterp.c @@ -69,7 +69,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) _dl_dprintf(2, "%s: Incorrect relocation type in jump relocations\n", _dl_progname); _dl_exit(1); - }; + } /* Address of jump instruction to fix up */ instr_addr = ((unsigned long) this_reloc->r_offset + @@ -83,14 +83,14 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname); _dl_exit(1); - }; + } #if defined (__SUPPORT_LD_DEBUG__) if ((unsigned long) got_addr < 0x40000000) { if (_dl_debug_bindings) { _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname); - if(_dl_debug_detail) _dl_dprintf(_dl_debug_file, + if (_dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatch %x ==> %x @ %x", *got_addr, new_addr, got_addr); } } @@ -275,7 +275,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, return -1; /*call _dl_exit(1) */ } #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatch: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr); } @@ -308,7 +308,7 @@ _dl_do_lazy_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope, return -1; /*call _dl_exit(1) */ } #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatch: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr); } diff --git a/ldso/ldso/cris/elfinterp.c b/ldso/ldso/cris/elfinterp.c index abf4167a5..7c71df83a 100644 --- a/ldso/ldso/cris/elfinterp.c +++ b/ldso/ldso/cris/elfinterp.c @@ -188,7 +188,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope, if (unlikely(!symbol_addr && ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) { _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname); _dl_exit(1); - }; + } symbol_addr += rpnt->r_addend; } diff --git a/ldso/ldso/m68k/elfinterp.c b/ldso/ldso/m68k/elfinterp.c index e0e14409f..8f7364f30 100644 --- a/ldso/ldso/m68k/elfinterp.c +++ b/ldso/ldso/m68k/elfinterp.c @@ -190,7 +190,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope, if (unlikely(!symbol_addr && ELF_ST_BIND(sym->st_info) != STB_WEAK)) { _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname); _dl_exit(1); - }; + } } #if defined (__SUPPORT_LD_DEBUG__) diff --git a/ldso/ldso/powerpc/elfinterp.c b/ldso/ldso/powerpc/elfinterp.c index d0fa862f4..d2a164287 100644 --- a/ldso/ldso/powerpc/elfinterp.c +++ b/ldso/ldso/powerpc/elfinterp.c @@ -125,14 +125,14 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) if (unlikely(ELF32_R_TYPE(this_reloc->r_info) != R_PPC_JMP_SLOT)) { _dl_dprintf(2, "%s: Incorrect relocation type in jump relocation\n", _dl_progname); _dl_exit(1); - }; + } #endif /* Address of dump instruction to fix up */ reloc_addr = (Elf32_Addr *) (tpnt->loadaddr + this_reloc->r_offset); #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\n\tResolving symbol %s %x --> ", symname, (Elf32_Addr)reloc_addr); #endif @@ -142,10 +142,10 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) if (unlikely(!finaladdr)) { _dl_dprintf(2, "%s: can't resolve symbol '%s' in lib '%s'.\n", _dl_progname, symname, tpnt->libname); _dl_exit(1); - }; + } finaladdr += this_reloc->r_addend; #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "%x\n", finaladdr); #endif delta = finaladdr - (Elf32_Word)reloc_addr; @@ -246,7 +246,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, } case R_PPC_COPY: #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_move) + if (_dl_debug_move) _dl_dprintf(_dl_debug_file,"\n%s move %x bytes from %x to %x", symname, symtab[symtab_index].st_size, symbol_addr, reloc_addr); @@ -264,7 +264,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, #if 0 { Elf32_Sword delta = finaladdr - (Elf32_Word)reloc_addr; - if(unlikely(delta<<6>>6 != delta)) { + if (unlikely(delta<<6>>6 != delta)) { _dl_dprintf(2, "%s: symbol '%s' R_PPC_REL24 is out of range.\n\t" "Compile shared libraries with -fPIC!\n", _dl_progname, symname); @@ -287,7 +287,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, if (symtab_index) _dl_dprintf(2, "'%s'\n", symname); return -1; - }; + } /* instructions were modified */ PPC_DCBST(reloc_addr); @@ -296,7 +296,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, PPC_ISYNC; out_nocode: #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr); #endif return 0; diff --git a/ldso/ldso/sh/elfinterp.c b/ldso/ldso/sh/elfinterp.c index b37bf129d..c34acdf95 100644 --- a/ldso/ldso/sh/elfinterp.c +++ b/ldso/ldso/sh/elfinterp.c @@ -87,7 +87,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry) if ((unsigned long) got_addr < 0x20000000) { if (_dl_debug_bindings) { _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname); - if(_dl_debug_detail) _dl_dprintf(_dl_debug_file, + if (_dl_debug_detail) _dl_dprintf(_dl_debug_file, "\n\tpatched %x ==> %x @ %x\n", *got_addr, new_addr, got_addr); } } @@ -198,7 +198,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, case R_SH_COPY: if (symbol_addr) { #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_move) + if (_dl_debug_move) _dl_dprintf(_dl_debug_file,"\n%s move %x bytes from %x to %x", symname, symtab[symtab_index].st_size, symbol_addr, reloc_addr); @@ -222,7 +222,7 @@ _dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope, return -1; /*call _dl_exit(1) */ } #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr); #endif @@ -259,7 +259,7 @@ _dl_do_lazy_reloc (struct elf_resolve *tpnt, struct dyn_elf *scope, return -1; /*call _dl_exit(1) */ } #if defined (__SUPPORT_LD_DEBUG__) - if(_dl_debug_reloc && _dl_debug_detail) + if (_dl_debug_reloc && _dl_debug_detail) _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x", old_val, *reloc_addr, reloc_addr); #endif return 0; diff --git a/ldso/ldso/x86_64/elfinterp.c b/ldso/ldso/x86_64/elfinterp.c index ef0fcb4e4..e78a80969 100644 --- a/ldso/ldso/x86_64/elfinterp.c +++ b/ldso/ldso/x86_64/elfinterp.c @@ -190,7 +190,7 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope, if (unlikely(!symbol_addr && ELF_ST_BIND(sym->st_info) != STB_WEAK)) { _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname); _dl_exit(1); - }; + } } #if defined (__SUPPORT_LD_DEBUG__) diff --git a/libc/string/arm/bcopy.S b/libc/string/arm/bcopy.S index 0e559225f..db3c9e6c1 100644 --- a/libc/string/arm/bcopy.S +++ b/libc/string/arm/bcopy.S @@ -41,6 +41,8 @@ #include <features.h> +#ifdef __UCLIBC_SUSV3_LEGACY__ + .text .global bcopy .type bcopy,%function @@ -54,3 +56,5 @@ bcopy: b _memcpy /* (PLT) */ .size bcopy,.-bcopy + +#endif diff --git a/libc/string/arm/bzero.S b/libc/string/arm/bzero.S index c1eb93323..ee49cf560 100644 --- a/libc/string/arm/bzero.S +++ b/libc/string/arm/bzero.S @@ -39,6 +39,8 @@ #include <features.h> +#ifdef __UCLIBC_SUSV3_LEGACY__ + .text .global bzero .type bzero,%function @@ -50,3 +52,5 @@ bzero: b HIDDEN_JUMPTARGET(memset) .size bzero,.-bzero + +#endif diff --git a/libc/string/arm/memcmp.S b/libc/string/arm/memcmp.S index af1b876ed..4f78b5128 100644 --- a/libc/string/arm/memcmp.S +++ b/libc/string/arm/memcmp.S @@ -63,4 +63,6 @@ memcmp: .size memcmp,.-memcmp libc_hidden_def(memcmp) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(memcmp,bcmp) +#endif diff --git a/libc/string/arm/strncmp.S b/libc/string/arm/strncmp.S index d6b36312a..eaf0620b4 100644 --- a/libc/string/arm/strncmp.S +++ b/libc/string/arm/strncmp.S @@ -65,4 +65,4 @@ strncmp: .size strncmp,.-strncmp -libc_hidden_def(strncmp) +libc_hidden_weak(strncmp) diff --git a/libc/string/bfin/memchr.S b/libc/string/bfin/memchr.S index 6ecaf37a1..23626d6a4 100644 --- a/libc/string/bfin/memchr.S +++ b/libc/string/bfin/memchr.S @@ -37,8 +37,8 @@ byte_loop_s: R3 = B[P0++](Z); CC = R3 == R1; IF CC JUMP found; - NOP; byte_loop_e: + NOP; failed: R0=0; diff --git a/libc/string/i386/strchr.c b/libc/string/i386/strchr.c index 5ed87e816..7568d48db 100644 --- a/libc/string/i386/strchr.c +++ b/libc/string/i386/strchr.c @@ -51,4 +51,6 @@ char *strchr(const char *s, int c) return __res; } libc_hidden_def(strchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strchr,index) +#endif diff --git a/libc/string/i386/strncmp.c b/libc/string/i386/strncmp.c index 0c42134e1..d716789c3 100644 --- a/libc/string/i386/strncmp.c +++ b/libc/string/i386/strncmp.c @@ -55,4 +55,4 @@ int strncmp(const char *cs, const char *ct, size_t count) :"1" (cs),"2" (ct),"3" (count)); return __res; } -libc_hidden_def(strncmp) +libc_hidden_weak(strncmp) diff --git a/libc/string/i386/strnlen.c b/libc/string/i386/strnlen.c index af512f10a..77b5c7568 100644 --- a/libc/string/i386/strnlen.c +++ b/libc/string/i386/strnlen.c @@ -32,6 +32,7 @@ #include <string.h> +#ifdef __USE_GNU libc_hidden_proto(strnlen) size_t strnlen(const char *s, size_t count) { @@ -52,3 +53,4 @@ size_t strnlen(const char *s, size_t count) return __res; } libc_hidden_def(strnlen) +#endif diff --git a/libc/string/i386/strrchr.c b/libc/string/i386/strrchr.c index 7af990bd7..e3b2df6fb 100644 --- a/libc/string/i386/strrchr.c +++ b/libc/string/i386/strrchr.c @@ -49,4 +49,6 @@ char *strrchr(const char *s, int c) return __res; } libc_hidden_def(strrchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strrchr,rindex) +#endif diff --git a/libc/string/ia64/bcopy.S b/libc/string/ia64/bcopy.S index c4eb22b1f..c5637c369 100644 --- a/libc/string/ia64/bcopy.S +++ b/libc/string/ia64/bcopy.S @@ -1,5 +1,7 @@ #include "sysdep.h" +#ifdef __UCLIBC_SUSV3_LEGACY__ + ENTRY(bcopy) .regstk 3, 0, 0, 0 mov r8 = in0 @@ -8,3 +10,5 @@ ENTRY(bcopy) mov in1 = r8 br.cond.sptk.many HIDDEN_JUMPTARGET(memmove) END(bcopy) + +#endif diff --git a/libc/string/ia64/bzero.S b/libc/string/ia64/bzero.S index 0e2ff09cc..d390838a6 100644 --- a/libc/string/ia64/bzero.S +++ b/libc/string/ia64/bzero.S @@ -33,6 +33,9 @@ to get peak speed. */ #include "sysdep.h" + +#ifdef __UCLIBC_SUSV3_LEGACY__ + #undef ret #define dest in0 @@ -313,3 +316,5 @@ ENTRY(bzero) br.ret.sptk.many rp ;; } END(bzero) + +#endif diff --git a/libc/string/ia64/memcmp.S b/libc/string/ia64/memcmp.S index c6ea7529b..8b0c096ce 100644 --- a/libc/string/ia64/memcmp.S +++ b/libc/string/ia64/memcmp.S @@ -160,6 +160,7 @@ ENTRY(memcmp) mov ar.lc = saved_lc // restore the loop counter br.ret.sptk.many b0 END(memcmp) - -weak_alias (memcmp, bcmp) libc_hidden_def (memcmp) +#ifdef __UCLIBC_SUSV3_LEGACY__ +strong_alias (memcmp, bcmp) +#endif diff --git a/libc/string/ia64/strchr.S b/libc/string/ia64/strchr.S index 7d1a0834e..401a07941 100644 --- a/libc/string/ia64/strchr.S +++ b/libc/string/ia64/strchr.S @@ -107,6 +107,7 @@ ENTRY(strchr) ld8 val2 = [ret0], 8 // bomb out here br.cond.sptk .back END(strchr) - -weak_alias (strchr, index) libc_hidden_def (strchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ +strong_alias (strchr, index) +#endif diff --git a/libc/string/ia64/strncmp.S b/libc/string/ia64/strncmp.S index 74011650c..8e0373c7f 100644 --- a/libc/string/ia64/strncmp.S +++ b/libc/string/ia64/strncmp.S @@ -59,4 +59,4 @@ ENTRY(strncmp) .restore_and_exit: br.ret.sptk.many b0 END(strncmp) -libc_hidden_def (strncmp) +libc_hidden_weak (strncmp) diff --git a/libc/string/sparc/sparc32/memcpy.S b/libc/string/sparc/sparc32/memcpy.S index fb79a601a..25a48844d 100644 --- a/libc/string/sparc/sparc32/memcpy.S +++ b/libc/string/sparc/sparc32/memcpy.S @@ -21,6 +21,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> + /* Both these macros have to start with exactly the same insn */ #define MOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3, t4, t5, t6, t7) \ ldd [%src + offset + 0x00], %t0; \ @@ -161,11 +163,13 @@ b 3f sub %o0, 2, %o0 +#ifdef __UCLIBC_SUSV3_LEGACY__ ENTRY(bcopy) mov %o0, %o3 mov %o1, %o0 mov %o3, %o1 END(bcopy) +#endif ENTRY(memmove) cmp %o0, %o1 diff --git a/libc/string/sparc/sparc32/memset.S b/libc/string/sparc/sparc32/memset.S index d5e1350f2..6c6424cf8 100644 --- a/libc/string/sparc/sparc32/memset.S +++ b/libc/string/sparc/sparc32/memset.S @@ -20,6 +20,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> + /* Store 64 bytes at (BASE + OFFSET) using value SOURCE. */ #define ZERO_BIG_BLOCK(base, offset, source) \ std source, [base + offset + 0x00]; \ @@ -43,9 +45,11 @@ .text .align 4 +#ifdef __UCLIBC_SUSV3_LEGACY__ ENTRY(bzero) b 1f mov %g0, %g3 +#endif 3: cmp %o2, 3 be 2f @@ -60,7 +64,9 @@ ENTRY(bzero) add %o1, %o2, %o1 b 4f sub %o0, %o2, %o0 +#ifdef __UCLIBC_SUSV3_LEGACY__ END(bzero) +#endif ENTRY(memset) and %o1, 0xff, %g3 diff --git a/libc/string/sparc/sparc32/strchr.S b/libc/string/sparc/sparc32/strchr.S index d06bbe3cc..16710d4e8 100644 --- a/libc/string/sparc/sparc32/strchr.S +++ b/libc/string/sparc/sparc32/strchr.S @@ -35,6 +35,8 @@ in these days for an average user. */ +#include <features.h> + .text .align 4 10: ldub [%o0], %g4 @@ -217,7 +219,9 @@ ENTRY(strchr) ld [%o0], %g4 END(strchr) libc_hidden_def(strchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strchr,index) +#endif ENTRY(strrchr) andcc %o1, 0xff, %o1 @@ -278,4 +282,6 @@ ENTRY(strrchr) mov %o5, %o0 END(strrchr) libc_hidden_def(strrchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strrchr,rindex) +#endif diff --git a/libc/string/sparc/sparc64/memcpy.S b/libc/string/sparc/sparc64/memcpy.S index 2fdff7b52..db63d1da2 100644 --- a/libc/string/sparc/sparc64/memcpy.S +++ b/libc/string/sparc/sparc64/memcpy.S @@ -20,6 +20,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> #include <asm/asi.h> #ifndef XCC #define USE_BPR @@ -191,6 +192,7 @@ .text .align 32 +#ifdef __UCLIBC_SUSV3_LEGACY__ ENTRY(bcopy) sub %o1, %o0, %o4 /* IEU0 Group */ mov %o0, %g3 /* IEU1 */ @@ -206,6 +208,7 @@ ENTRY(bcopy) retl nop END(bcopy) +#endif .align 32 200: be,pt %xcc, 201f /* CTI */ diff --git a/libc/string/sparc/sparc64/memset.S b/libc/string/sparc/sparc64/memset.S index 284713556..50e404bcc 100644 --- a/libc/string/sparc/sparc64/memset.S +++ b/libc/string/sparc/sparc64/memset.S @@ -20,6 +20,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> #include <asm/asi.h> #ifndef XCC #define XCC xcc @@ -191,11 +192,13 @@ libc_hidden_def(memset) .text .align 32 +#ifdef __UCLIBC_SUSV3_LEGACY__ ENTRY(bzero) #ifndef USE_BPR srl %o1, 0, %o1 #endif mov %o0, %o5 +#endif 50: cmp %o1, 7 bleu,pn %xcc, 17f andcc %o0, 3, %o2 @@ -309,4 +312,6 @@ ENTRY(bzero) stb %g0, [%o0 - 1] 0: retl mov %o5, %o0 +#ifdef __UCLIBC_SUSV3_LEGACY__ END(bzero) +#endif diff --git a/libc/string/sparc/sparc64/sparcv9b/memcpy.S b/libc/string/sparc/sparc64/sparcv9b/memcpy.S index b49c9cde9..64f6a92e0 100644 --- a/libc/string/sparc/sparc64/sparcv9b/memcpy.S +++ b/libc/string/sparc/sparc64/sparcv9b/memcpy.S @@ -19,6 +19,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> + #define ASI_BLK_P 0xf0 #define FPRS_FEF 0x04 #define VISEntryHalf rd %fprs, %o5; wr %g0, FPRS_FEF, %fprs @@ -36,6 +38,7 @@ .text .align 32 +#ifdef __UCLIBC_SUSV3_LEGACY__ ENTRY(bcopy) sub %o1, %o0, %o4 mov %o0, %g4 @@ -51,6 +54,7 @@ ENTRY(bcopy) retl nop END(bcopy) +#endif /* Special/non-trivial issues of this code: * diff --git a/libc/string/sparc/sparc64/strchr.S b/libc/string/sparc/sparc64/strchr.S index 6a371352a..da26d1f9c 100644 --- a/libc/string/sparc/sparc64/strchr.S +++ b/libc/string/sparc/sparc64/strchr.S @@ -20,6 +20,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> #include <asm/asi.h> #ifndef XCC #define XCC xcc @@ -329,7 +330,9 @@ ENTRY(strchr) add %o0, -1, %o0 /* IEU0 */ END(strchr) libc_hidden_def(strchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strchr,index) +#endif .align 32 ENTRY(strrchr) @@ -478,4 +481,6 @@ ENTRY(strrchr) ldx [%o0], %o3 /* Load */ END(strrchr) libc_hidden_def(strrchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias(strrchr,rindex) +#endif diff --git a/libc/string/x86_64/bzero.S b/libc/string/x86_64/bzero.S index b6e41fb0f..4d179ec4e 100644 --- a/libc/string/x86_64/bzero.S +++ b/libc/string/x86_64/bzero.S @@ -1,2 +1,5 @@ -#define memset bzero -#include "memset.S" +#include <features.h> +#ifdef __UCLIBC_SUSV3_LEGACY__ +# define memset bzero +# include "memset.S" +#endif diff --git a/libc/string/x86_64/strchr.S b/libc/string/x86_64/strchr.S index 6f6635a39..8e59c4c19 100644 --- a/libc/string/x86_64/strchr.S +++ b/libc/string/x86_64/strchr.S @@ -285,4 +285,6 @@ ENTRY (BP_SYM (strchr)) END (BP_SYM (strchr)) libc_hidden_def(strchr) +#ifdef __UCLIBC_SUSV3_LEGACY__ strong_alias (BP_SYM (strchr), BP_SYM (index)) +#endif |