[uClibc-cvs] uClibc/ldso/ldso ldso.c, 1.89, 1.90 readelflib1.c, 1.63, 1.64
Erik Andersen
andersen at uclibc.org
Tue Feb 10 06:50:31 UTC 2004
Update of /var/cvs/uClibc/ldso/ldso
In directory nail:/tmp/cvs-serv22093/ldso
Modified Files:
ldso.c readelflib1.c
Log Message:
Fixup the definition of _dl_open, and move some bits back where they were,
till I properly finish the next step in my evil plan.
Index: readelflib1.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/readelflib1.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- readelflib1.c 8 Feb 2004 10:59:52 -0000 1.63
+++ readelflib1.c 10 Feb 2004 06:50:28 -0000 1.64
@@ -51,7 +51,7 @@
return 0;
if (_dl_stat(LDSO_CACHE, &st)
- || (fd = _dl_open(LDSO_CACHE, O_RDONLY)) < 0) {
+ || (fd = _dl_open(LDSO_CACHE, O_RDONLY, 0)) < 0) {
_dl_dprintf(2, "%s: can't open cache '%s'\n", _dl_progname, LDSO_CACHE);
_dl_cache_addr = (caddr_t) - 1; /* so we won't try again */
return -1;
@@ -429,7 +429,7 @@
}
libaddr = 0;
- infile = _dl_open(libname, O_RDONLY);
+ infile = _dl_open(libname, O_RDONLY, 0);
if (infile < 0) {
#if 0
/*
Index: ldso.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/ldso.c,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- ldso.c 8 Feb 2004 10:59:52 -0000 1.89
+++ ldso.c 10 Feb 2004 06:50:28 -0000 1.90
@@ -314,7 +314,7 @@
filename[len1] = '.';
_dl_strcpy (&filename[len1+1], tmp1);
- _dl_debug_file= _dl_open (filename, O_WRONLY|O_CREAT, 0644);
+ _dl_debug_file= _dl_open(filename, O_WRONLY|O_CREAT, 0644);
if (_dl_debug_file<0)
{
_dl_debug_file = 2;
@@ -422,7 +422,7 @@
struct stat st;
char *preload;
if (!_dl_stat(LDSO_PRELOAD, &st) && st.st_size > 0) {
- if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY)) < 0) {
+ if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY, 0)) < 0) {
_dl_dprintf(2, "%s: can't open file '%s'\n",
_dl_progname, LDSO_PRELOAD);
} else {
@@ -767,135 +767,5 @@
return 0;
}
-/* Minimal printf which handles only %s, %d, and %x */
-void _dl_dprintf(int fd, const char *fmt, ...)
-{
- int num;
- va_list args;
- char *start, *ptr, *string;
- static char *buf;
-
- buf = _dl_mmap((void *) 0, PAGE_SIZE, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
- if (_dl_mmap_check_error(buf)) {
- _dl_write(fd, "mmap of a spare page failed!\n", 29);
- _dl_exit(20);
- }
-
- start = ptr = buf;
-
- if (!fmt)
- return;
-
- if (_dl_strlen(fmt) >= (PAGE_SIZE - 1)) {
- _dl_write(fd, "overflow\n", 11);
- _dl_exit(20);
- }
-
- _dl_strcpy(buf, fmt);
- va_start(args, fmt);
-
- while (start) {
- while (*ptr != '%' && *ptr) {
- ptr++;
- }
-
- if (*ptr == '%') {
- *ptr++ = '\0';
- _dl_write(fd, start, _dl_strlen(start));
-
- switch (*ptr++) {
- case 's':
- string = va_arg(args, char *);
-
- if (!string)
- _dl_write(fd, "(null)", 6);
- else
- _dl_write(fd, string, _dl_strlen(string));
- break;
-
- case 'i':
- case 'd':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoa(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- case 'x':
- case 'X':
- {
- char tmp[22];
- num = va_arg(args, int);
-
- string = _dl_simple_ltoahex(tmp, num);
- _dl_write(fd, string, _dl_strlen(string));
- break;
- }
- default:
- _dl_write(fd, "(null)", 6);
- break;
- }
-
- start = ptr;
- } else {
- _dl_write(fd, start, _dl_strlen(start));
- start = NULL;
- }
- }
- _dl_munmap(buf, PAGE_SIZE);
- return;
-}
-
-char *_dl_strdup(const char *string)
-{
- char *retval;
- int len;
-
- len = _dl_strlen(string);
- retval = _dl_malloc(len + 1);
- _dl_strcpy(retval, string);
- return retval;
-}
-
-void *(*_dl_malloc_function) (size_t size) = NULL;
-void *_dl_malloc(int size)
-{
- void *retval;
-
-#if 0
-#ifdef __SUPPORT_LD_DEBUG_EARLY__
- _dl_dprintf(2, "malloc: request for %d bytes\n", size);
-#endif
-#endif
-
- if (_dl_malloc_function)
- return (*_dl_malloc_function) (size);
-
- if (_dl_malloc_addr - _dl_mmap_zero + size > PAGE_SIZE) {
-#ifdef __SUPPORT_LD_DEBUG_EARLY__
- _dl_dprintf(2, "malloc: mmapping more memory\n");
-#endif
- _dl_mmap_zero = _dl_malloc_addr = _dl_mmap((void *) 0, size,
- PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
- if (_dl_mmap_check_error(_dl_mmap_zero)) {
- _dl_dprintf(2, "%s: mmap of a spare page failed!\n", _dl_progname);
- _dl_exit(20);
- }
- }
- retval = _dl_malloc_addr;
- _dl_malloc_addr += size;
-
- /*
- * Align memory to 4 byte boundary. Some platforms require this, others
- * simply get better performance.
- */
- _dl_malloc_addr = (unsigned char *) (((unsigned long) _dl_malloc_addr + 3) & ~(3));
- return retval;
-}
-
-
#include "hash.c"
#include "readelflib1.c"
More information about the uClibc-cvs
mailing list