Merge branch 'master' of git://git.etalabs.net/musl
This commit is contained in:
commit
c5ec5b2ce9
3 changed files with 103 additions and 6 deletions
|
|
@ -1,4 +1,3 @@
|
||||||
#ifdef __PIC__
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
@ -18,6 +17,10 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
|
static int errflag;
|
||||||
|
|
||||||
|
#ifdef __PIC__
|
||||||
|
|
||||||
#include "reloc.h"
|
#include "reloc.h"
|
||||||
|
|
||||||
#if ULONG_MAX == 0xffffffff
|
#if ULONG_MAX == 0xffffffff
|
||||||
|
|
@ -631,12 +634,13 @@ void *dlopen(const char *file, int mode)
|
||||||
tail = orig_tail;
|
tail = orig_tail;
|
||||||
tail->next = 0;
|
tail->next = 0;
|
||||||
p = 0;
|
p = 0;
|
||||||
|
} else p = load_library(file);
|
||||||
|
|
||||||
|
if (!p) {
|
||||||
|
errflag = 1;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = load_library(file);
|
|
||||||
if (!p) goto end;
|
|
||||||
|
|
||||||
/* First load handling */
|
/* First load handling */
|
||||||
if (!p->deps) {
|
if (!p->deps) {
|
||||||
load_deps(p);
|
load_deps(p);
|
||||||
|
|
@ -674,8 +678,11 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
|
||||||
if (!p) p=head;
|
if (!p) p=head;
|
||||||
p=p->next;
|
p=p->next;
|
||||||
}
|
}
|
||||||
if (p == head || p == RTLD_DEFAULT)
|
if (p == head || p == RTLD_DEFAULT) {
|
||||||
return find_sym(head, s, 0);
|
void *res = find_sym(head, s, 0);
|
||||||
|
if (!res) errflag = 1;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
h = hash(s);
|
h = hash(s);
|
||||||
sym = lookup(s, h, p->syms, p->hashtab, p->strings);
|
sym = lookup(s, h, p->syms, p->hashtab, p->strings);
|
||||||
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
|
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
|
||||||
|
|
@ -686,6 +693,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
|
||||||
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
|
if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
|
||||||
return p->deps[i]->base + sym->st_value;
|
return p->deps[i]->base + sym->st_value;
|
||||||
}
|
}
|
||||||
|
errflag = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -710,6 +718,8 @@ void *__dlsym(void *p, const char *s, void *ra)
|
||||||
|
|
||||||
char *dlerror()
|
char *dlerror()
|
||||||
{
|
{
|
||||||
|
if (!errflag) return 0;
|
||||||
|
errflag = 0;
|
||||||
return "unknown error";
|
return "unknown error";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
45
src/math/i386/hypot.s
Normal file
45
src/math/i386/hypot.s
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
.global hypot
|
||||||
|
.type hypot,@function
|
||||||
|
hypot:
|
||||||
|
mov 8(%esp),%eax
|
||||||
|
mov 16(%esp),%ecx
|
||||||
|
add %eax,%eax
|
||||||
|
add %ecx,%ecx
|
||||||
|
and %eax,%ecx
|
||||||
|
cmp $0xffe00000,%ecx
|
||||||
|
jae 2f
|
||||||
|
or 4(%esp),%eax
|
||||||
|
jnz 1f
|
||||||
|
fldl 12(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: mov 16(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
or 12(%esp),%eax
|
||||||
|
jnz 1f
|
||||||
|
fldl 4(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: fldl 4(%esp)
|
||||||
|
fld %st(0)
|
||||||
|
fmulp
|
||||||
|
fldl 12(%esp)
|
||||||
|
fld %st(0)
|
||||||
|
fmulp
|
||||||
|
faddp
|
||||||
|
fsqrt
|
||||||
|
ret
|
||||||
|
2: sub $0xffe00000,%eax
|
||||||
|
or 4(%esp),%eax
|
||||||
|
jnz 1f
|
||||||
|
fldl 4(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: mov 16(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
sub $0xffe00000,%eax
|
||||||
|
or 12(%esp),%eax
|
||||||
|
fldl 12(%esp)
|
||||||
|
jnz 1f
|
||||||
|
fabs
|
||||||
|
1: ret
|
||||||
42
src/math/i386/hypotf.s
Normal file
42
src/math/i386/hypotf.s
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
.global hypotf
|
||||||
|
.type hypotf,@function
|
||||||
|
hypotf:
|
||||||
|
mov 4(%esp),%eax
|
||||||
|
mov 8(%esp),%ecx
|
||||||
|
add %eax,%eax
|
||||||
|
add %ecx,%ecx
|
||||||
|
and %eax,%ecx
|
||||||
|
cmp $0xff000000,%ecx
|
||||||
|
jae 2f
|
||||||
|
test %eax,%eax
|
||||||
|
jnz 1f
|
||||||
|
flds 8(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: mov 8(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
jnz 1f
|
||||||
|
flds 4(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: flds 4(%esp)
|
||||||
|
fld %st(0)
|
||||||
|
fmulp
|
||||||
|
flds 8(%esp)
|
||||||
|
fld %st(0)
|
||||||
|
fmulp
|
||||||
|
faddp
|
||||||
|
fsqrt
|
||||||
|
ret
|
||||||
|
2: cmp $0xff000000,%eax
|
||||||
|
jnz 1f
|
||||||
|
flds 4(%esp)
|
||||||
|
fabs
|
||||||
|
ret
|
||||||
|
1: mov 8(%esp),%eax
|
||||||
|
add %eax,%eax
|
||||||
|
cmp $0xff000000,%eax
|
||||||
|
flds 8(%esp)
|
||||||
|
jnz 1f
|
||||||
|
fabs
|
||||||
|
1: ret
|
||||||
Loading…
Add table
Add a link
Reference in a new issue