diff options
-rw-r--r-- | libexec/ld.so/dir.c | 19 | ||||
-rw-r--r-- | libexec/ld.so/dl_printf.c | 4 | ||||
-rw-r--r-- | libexec/ld.so/dlfcn.c | 26 | ||||
-rw-r--r-- | libexec/ld.so/i386/ldasm.S | 6 | ||||
-rw-r--r-- | libexec/ld.so/i386/rtld_machine.c | 8 | ||||
-rw-r--r-- | libexec/ld.so/library.c | 35 | ||||
-rw-r--r-- | libexec/ld.so/loader.c | 33 | ||||
-rw-r--r-- | libexec/ld.so/mips/ldasm.S | 6 | ||||
-rw-r--r-- | libexec/ld.so/mips/rtld_machine.c | 8 | ||||
-rw-r--r-- | libexec/ld.so/powerpc/ldasm.S | 4 | ||||
-rw-r--r-- | libexec/ld.so/powerpc/rtld_machine.c | 12 | ||||
-rw-r--r-- | libexec/ld.so/resolve.c | 21 | ||||
-rw-r--r-- | libexec/ld.so/resolve.h | 6 | ||||
-rw-r--r-- | libexec/ld.so/sod.c | 21 | ||||
-rw-r--r-- | libexec/ld.so/sparc/ldasm.S | 6 | ||||
-rw-r--r-- | libexec/ld.so/sparc/rtld_machine.c | 12 | ||||
-rw-r--r-- | libexec/ld.so/sparc64/ldasm.S | 4 | ||||
-rw-r--r-- | libexec/ld.so/sparc64/rtld_machine.c | 14 | ||||
-rw-r--r-- | libexec/ld.so/util.c | 16 |
19 files changed, 114 insertions, 147 deletions
diff --git a/libexec/ld.so/dir.c b/libexec/ld.so/dir.c index 5526612d02b..a9b2707b7db 100644 --- a/libexec/ld.so/dir.c +++ b/libexec/ld.so/dir.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dir.c,v 1.5 2003/01/31 22:25:34 drahn Exp $ */ +/* $OpenBSD: dir.c,v 1.6 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1983, 1993 * The Regents of the University of California. All rights reserved. @@ -52,13 +52,11 @@ static char rcsid[] = ": opendir.c,v 1.6 1998/08/15 08:10:14 deraadt Exp $"; long _dl_telldir(const DIR *dirp); void _dl_seekdir(DIR *dirp, long loc); - /* * Open a directory. */ DIR * -_dl_opendir(name) - const char *name; +_dl_opendir(const char *name) { DIR *dirp; int fd; @@ -120,8 +118,7 @@ static char rcsid[] = "$ closedir.c,v 1.3 1998/11/20 11:18:37 d Exp $"; * close a directory. */ int -_dl_closedir(dirp) - DIR *dirp; +_dl_closedir(DIR *dirp) { int fd; int ret; @@ -144,8 +141,7 @@ static char rcsid[] = "$ readdir.c,v 1.5 2001/05/17 20:20:36 rees Exp $"; * get next entry in a directory. */ struct dirent * -_dl_readdir(dirp) - DIR *dirp; +_dl_readdir(DIR *dirp) { struct dirent *dp; @@ -211,8 +207,7 @@ static struct ddloc *dd_hash[NDIRHASH]; /* Hash list heads for ddlocs */ * return a pointer into a directory */ long -_dl_telldir(dirp) - const DIR *dirp; +_dl_telldir(const DIR *dirp) { int index; struct ddloc *lp; @@ -233,9 +228,7 @@ _dl_telldir(dirp) * Only values returned by "telldir" should be passed to seekdir. */ void -_dl_seekdir(dirp, loc) - DIR *dirp; - long loc; +_dl_seekdir(DIR *dirp, long loc) { struct ddloc *lp; struct ddloc **prevlp; diff --git a/libexec/ld.so/dl_printf.c b/libexec/ld.so/dl_printf.c index 0a33ee33037..200d9a26052 100644 --- a/libexec/ld.so/dl_printf.c +++ b/libexec/ld.so/dl_printf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dl_printf.c,v 1.10 2002/10/04 03:01:42 drahn Exp $ */ +/* $OpenBSD: dl_printf.c,v 1.11 2003/02/02 16:57:58 deraadt Exp $ */ /*- * Copyright (c) 1993 @@ -185,7 +185,7 @@ reswitch: ul = lflag ? va_arg(ap, u_long) : va_arg(ap, u_int); if (lflag) l = (sizeof(ulong) * 8) - 4; - else + else l = (sizeof(u_int) * 8) - 4; while (l >= 0) { put("0123456789abcdef"[(ul >> l) & 0xf], fd); diff --git a/libexec/ld.so/dlfcn.c b/libexec/ld.so/dlfcn.c index 5b418c8c9ff..67e6856e2c3 100644 --- a/libexec/ld.so/dlfcn.c +++ b/libexec/ld.so/dlfcn.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dlfcn.c,v 1.23 2002/11/23 04:09:34 drahn Exp $ */ +/* $OpenBSD: dlfcn.c,v 1.24 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -68,11 +68,11 @@ dlopen(const char *libname, int how) return((void *)object); /* Already loaded */ /* - * Check for 'needed' objects. For each 'needed' object we - * create a 'shadow' object and add it to a list attached to - * the object so we know our dependencies. This list should - * also be used to determine the library search order when - * resolving undefined symbols. This is not yet done. XXX + * Check for 'needed' objects. For each 'needed' object we + * create a 'shadow' object and add it to a list attached to + * the object so we know our dependencies. This list should + * also be used to determine the library search order when + * resolving undefined symbols. This is not yet done. XXX */ dynobj = object; while (dynobj) { @@ -192,8 +192,8 @@ _dl_real_close(void *handle) } /* - * Scan through the shadow dep list and 'unload' every library - * we depend upon. Shadow objects are removed when removing ourself. + * Scan through the shadow dep list and 'unload' every library + * we depend upon. Shadow objects are removed when removing ourself. */ static void _dl_unload_deps(elf_object_t *object) @@ -212,12 +212,10 @@ _dl_unload_deps(elf_object_t *object) } /* - * dlerror() - * - * Return a character string describing the last dl... error occurred. + * Return a character string describing the last dl... error occurred. */ const char * -dlerror() +dlerror(void) { switch (_dl_errno) { case 0: /* NO ERROR */ @@ -244,7 +242,7 @@ dlerror() } void -_dl_show_objects() +_dl_show_objects(void) { elf_object_t *object; char *objtypename; @@ -254,7 +252,7 @@ _dl_show_objects() object = _dl_objects; if (_dl_traceld) outputfd = STDOUT_FILENO; - else + else outputfd = STDERR_FILENO; if (sizeof(long) == 8) diff --git a/libexec/ld.so/i386/ldasm.S b/libexec/ld.so/i386/ldasm.S index c3ff47b5234..cf20d25310d 100644 --- a/libexec/ld.so/i386/ldasm.S +++ b/libexec/ld.so/i386/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.3 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: ldasm.S,v 1.4 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -266,13 +266,13 @@ _dl_bind_start: pushl %edi pushl %ds pushl %es - + pushl 44(%esp) # Copy of reloff pushl 44(%esp) # Copy of obj call _dl_bind@PLT # Call the binder addl $8,%esp # pop binder args movl %eax,44(%esp) # Store function to be called in obj - + popl %es # restore registers popl %ds popl %edi diff --git a/libexec/ld.so/i386/rtld_machine.c b/libexec/ld.so/i386/rtld_machine.c index e8ce94c1927..750bb2f4c1b 100644 --- a/libexec/ld.so/i386/rtld_machine.c +++ b/libexec/ld.so/i386/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.6 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.7 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -384,7 +384,7 @@ _dl_bind(elf_object_t *object, int index) sigfillset(&nmask); _dl_sigprocmask(SIG_BLOCK, &nmask, &omask); _dl_mprotect((void*)object->got_addr, object->got_size, - PROT_READ|PROT_WRITE); + PROT_READ|PROT_WRITE); } _dl_reloc_plt(addr, ooff + this->st_value); @@ -471,7 +471,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) } /* PLT is already RO on i386, no point in mprotecting it, just GOT */ - if (object->got_addr != NULL && object->got_size != 0) + if (object->got_addr != NULL && object->got_size != 0) _dl_mprotect((void*)object->got_addr, object->got_size, - PROT_READ); + PROT_READ); } diff --git a/libexec/ld.so/library.c b/libexec/ld.so/library.c index 97efb7450bd..9638f03995e 100644 --- a/libexec/ld.so/library.c +++ b/libexec/ld.so/library.c @@ -1,4 +1,4 @@ -/* $OpenBSD: library.c,v 1.25 2003/01/30 03:46:46 drahn Exp $ */ +/* $OpenBSD: library.c,v 1.26 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 2002 Dale Rahn @@ -78,15 +78,13 @@ _dl_match_file(struct sod *sodp, char *name, int namelen) lname = name; if (sodp->sod_library) { - if (_dl_strncmp(name, "lib", 3)) { + if (_dl_strncmp(name, "lib", 3)) return 0; - } lname += 3; } if (_dl_strncmp(lname, (char *)sodp->sod_name, - _dl_strlen((char *)sodp->sod_name))) { + _dl_strlen((char *)sodp->sod_name))) return 0; - } _dl_build_sod(name, &lsod); @@ -111,14 +109,11 @@ char _dl_hint_store[MAXPATHLEN]; char * _dl_find_shlib(struct sod *sodp, const char *searchpath, int nohints) { - int len; - char *hint; - char lp[PATH_MAX + 10]; - char *path; + char *hint, lp[PATH_MAX + 10], *path; + struct dirent *dp; const char *pp; + int match, len; DIR *dd; - struct dirent *dp; - int match; /* if we are to search default directories, and hints * are not to be used, search the standard path from ldconfig @@ -156,6 +151,7 @@ _dl_find_shlib(struct sod *sodp, const char *searchpath, int nohints) pp = 0; } } + /* * For each directory in the searchpath, read the directory * entries looking for a match to sod. filename compare is @@ -180,7 +176,8 @@ nohints: while ((dp = _dl_readdir(dd)) != NULL) { if (_dl_match_file(sodp, dp->d_name, dp->d_namlen)) { - /* When a match is found, sodp is + /* + * When a match is found, sodp is * updated with the minor found. * We continue looking at this * directory, thus this will find @@ -190,7 +187,6 @@ nohints: * so that it doesn't have to be * recreated from the hint. */ - match = 1; len = _dl_strlcpy(_dl_hint_store, lp, MAXPATHLEN); @@ -199,7 +195,7 @@ nohints: len++; } _dl_strlcpy(&_dl_hint_store[len], - dp->d_name, MAXPATHLEN-len); + dp->d_name, MAXPATHLEN-len); } } _dl_closedir(dd); @@ -235,12 +231,10 @@ nohints: elf_object_t * _dl_load_shlib(const char *libname, elf_object_t *parent, int type) { + int try_any_minor, ignore_hints; + struct sod sod, req_sod; elf_object_t *object; - struct sod sod; - struct sod req_sod; char *hint; - int try_any_minor; - int ignore_hints; try_any_minor = 0; ignore_hints = 0; @@ -251,7 +245,6 @@ _dl_load_shlib(const char *libname, elf_object_t *parent, int type) return(object); } - _dl_build_sod(libname, &sod); req_sod = sod; @@ -514,9 +507,9 @@ _dl_link_sub(elf_object_t *dep, elf_object_t *p) if (p->first_child) { p->last_child->next_sibling = n; p->last_child = n; - } else { + } else p->first_child = p->last_child = n; - } + DL_DEB(("linking dep %s as child of %s\n", dep->load_name, p->load_name)); } diff --git a/libexec/ld.so/loader.c b/libexec/ld.so/loader.c index 0302039a9f6..7be6c73e70d 100644 --- a/libexec/ld.so/loader.c +++ b/libexec/ld.so/loader.c @@ -1,4 +1,4 @@ -/* $OpenBSD: loader.c,v 1.53 2003/01/30 03:46:46 drahn Exp $ */ +/* $OpenBSD: loader.c,v 1.54 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -95,8 +95,7 @@ _dl_dtors(void) } void -_dl_dopreload(paths) - char *paths; +_dl_dopreload(char *paths) { char *cp, *dp; @@ -186,8 +185,7 @@ _dl_boot(const char **argv, char **envp, const long loff, long *dl_data) exe_obj = _dl_add_object(argv[0], (Elf_Dyn *)phdp->p_vaddr, dl_data, OBJTYPE_EXE, 0, 0); - } - else if (phdp->p_type == PT_INTERP) { + } else if (phdp->p_type == PT_INTERP) { us = _dl_strdup((char *)phdp->p_vaddr); } phdp++; @@ -260,18 +258,19 @@ _dl_boot(const char **argv, char **envp, const long loff, long *dl_data) sym = NULL; ooff = _dl_find_symbol("atexit", _dl_objects, &sym, SYM_SEARCH_ALL|SYM_NOWARNNOTFOUND|SYM_PLT, 0, ""); - if (sym == NULL) { + if (sym == NULL) _dl_printf("cannot find atexit, destructors will not be run!\n"); - } else { - (*(void (*)(Elf_Addr))(sym->st_value + ooff))((Elf_Addr)_dl_dtors); - } + else + (*(void (*)(Elf_Addr))(sym->st_value + ooff)) + ((Elf_Addr)_dl_dtors); } /* * Finally make something to help gdb when poking around in the code. */ #ifdef __mips__ - map_link = (struct r_debug **)(exe_obj->Dyn.info[DT_MIPS_RLD_MAP - DT_LOPROC + DT_NUM]); + map_link = (struct r_debug **)(exe_obj->Dyn.info[DT_MIPS_RLD_MAP - + DT_LOPROC + DT_NUM]); #else map_link = NULL; for (dynp = exe_obj->load_dyn; dynp->d_tag; dynp++) { @@ -280,9 +279,8 @@ _dl_boot(const char **argv, char **envp, const long loff, long *dl_data) break; } } - if (dynp->d_tag != DT_DEBUG) { + if (dynp->d_tag != DT_DEBUG) DL_DEB(("failed to mark DTDEBUG\n")); - } #endif if (map_link) { debug_map = (struct r_debug *)_dl_malloc(sizeof(*debug_map)); @@ -314,15 +312,13 @@ _dl_boot(const char **argv, char **envp, const long loff, long *dl_data) void _dl_boot_bind(const long sp, long *dl_data) { + struct elf_object dynld; /* Resolver data for the loader */ AuxInfo *auxstack; long *stack; Elf_Dyn *dynp; - int n; - int argc; - char **argv; - char **envp; + int n, argc; + char **argv, **envp; long loff; - struct elf_object dynld; /* Resolver data for the loader */ /* * Scan argument and environment vectors. Find dynamic @@ -411,7 +407,6 @@ _dl_boot_bind(const long sp, long *dl_data) if (dynld.Dyn.info[val] != 0) dynld.Dyn.info[val] += loff; } - } { @@ -444,7 +439,6 @@ _dl_boot_bind(const long sp, long *dl_data) RELOC_REL(rp, sp, ra, loff); rp++; } - } for (n = 0; n < 2; n++) { @@ -573,5 +567,4 @@ _dl_unsetenv(const char *var, char **env) } env++; } - } diff --git a/libexec/ld.so/mips/ldasm.S b/libexec/ld.so/mips/ldasm.S index 9d5b9a503a8..a79b35f4f64 100644 --- a/libexec/ld.so/mips/ldasm.S +++ b/libexec/ld.so/mips/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.3 2002/10/23 12:38:29 pefo Exp $ */ +/* $OpenBSD: ldasm.S,v 1.4 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998-2002 Opsycon AB, Sweden. @@ -39,11 +39,11 @@ * char *kargv[1]; size depends on kargc * char kargstr[1]; size varies * char kenvstr[1]; size varies - * }; + * }; */ LEAF(_dl_start) /* Not really LEAF, but we simplify */ - addu sp, -64 # Some space. + addu sp, -64 # Some space. .cprestore 12 la a1, 1f diff --git a/libexec/ld.so/mips/rtld_machine.c b/libexec/ld.so/mips/rtld_machine.c index 45467e3b9cf..cc9644cf491 100644 --- a/libexec/ld.so/mips/rtld_machine.c +++ b/libexec/ld.so/mips/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.10 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.11 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998-2002 Opsycon AB, Sweden. @@ -226,10 +226,10 @@ DL_DEB(("got: '%s' = %x\n", strt + symp->st_name, symp->st_value)); } object->status |= STAT_GOT_DONE; - if (object->got_addr != NULL && object->got_size != 0) + if (object->got_addr != NULL && object->got_size != 0) _dl_mprotect((void*)object->got_addr, object->got_size, - PROT_READ); - if (object->plt_addr != NULL && object->plt_size != 0) + PROT_READ); + if (object->plt_addr != NULL && object->plt_size != 0) _dl_mprotect((void*)object->plt_addr, object->plt_size, PROT_READ|PROT_EXEC); } diff --git a/libexec/ld.so/powerpc/ldasm.S b/libexec/ld.so/powerpc/ldasm.S index bc9ab5e3b2a..02c85582092 100644 --- a/libexec/ld.so/powerpc/ldasm.S +++ b/libexec/ld.so/powerpc/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.9 2002/12/09 20:56:34 drahn Exp $ */ +/* $OpenBSD: ldasm.S,v 1.10 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1999 Dale Rahn @@ -80,7 +80,7 @@ ENTRY(_dl_start) * operation that would be below would calulate. */ add 28, 18, 5 - mr 6, 5 # save offset for later use + mr 6, 5 # save offset for later use /* mprotect GOT-4 for correct execution of blrl instruction */ li 0, SYS_mprotect diff --git a/libexec/ld.so/powerpc/rtld_machine.c b/libexec/ld.so/powerpc/rtld_machine.c index b1040ac86a6..db8093904f8 100644 --- a/libexec/ld.so/powerpc/rtld_machine.c +++ b/libexec/ld.so/powerpc/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.21 2003/01/30 06:40:38 drahn Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.22 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1999 Dale Rahn @@ -66,7 +66,7 @@ void _dl_syncicache(char *from, size_t len); lval &= ~0xfc000000; \ lval |= 0x48000000; \ (from) = lval; \ -}while(0) +} while (0) /* these are structures/functions offset from PLT region */ #define PLT_CALL_OFFSET 6 @@ -248,7 +248,7 @@ _dl_printf("rel1 r_addr %x val %x loff %x ooff %x addend %x\n", r_addr, relas->r_addend; Elf32_Addr val = target - (Elf32_Addr)r_addr; - if(!B24_VALID_RANGE(val)){ + if (!B24_VALID_RANGE(val)){ int index; #ifdef DL_PRINTF_DEBUG _dl_printf(" ooff %x, sym val %x, addend %x" @@ -296,7 +296,7 @@ _dl_printf(" symn [%s] val 0x%x\n", symn, val); { Elf32_Addr val = ooff + this->st_value + relas->r_addend - (Elf32_Addr)r_addr; - if(!B24_VALID_RANGE(val)){ + if (!B24_VALID_RANGE(val)){ /* invalid offset */ _dl_exit(20); } @@ -520,7 +520,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) PROT_READ|PROT_EXEC); /* only PPC is PROT_EXE */ _dl_syncicache((void*)object->got_addr, 4); } - if (object->plt_addr != NULL && object->plt_size != 0) + if (object->plt_addr != NULL && object->plt_size != 0) _dl_mprotect((void*)object->plt_addr, object->plt_size, PROT_READ|PROT_EXEC); } @@ -561,7 +561,7 @@ _dl_bind(elf_object_t *object, int reloff) sigfillset(&nmask); _dl_sigprocmask(SIG_BLOCK, &nmask, &omask); _dl_mprotect((void*)object->plt_addr, object->plt_size, - PROT_READ|PROT_WRITE|PROT_EXEC); + PROT_READ|PROT_WRITE|PROT_EXEC); } value = ooff + this->st_value; diff --git a/libexec/ld.so/resolve.c b/libexec/ld.so/resolve.c index 903b4f1399b..c3205c527a6 100644 --- a/libexec/ld.so/resolve.c +++ b/libexec/ld.so/resolve.c @@ -1,4 +1,4 @@ -/* $OpenBSD: resolve.c,v 1.16 2003/01/30 03:46:46 drahn Exp $ */ +/* $OpenBSD: resolve.c,v 1.17 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -46,12 +46,12 @@ elf_object_t *_dl_objects; elf_object_t *_dl_last_object; /* - * Initialize and add a new dynamic object to the object list. - * Perform necessary relocations of pointers. + * Initialize and add a new dynamic object to the object list. + * Perform necessary relocations of pointers. */ elf_object_t * _dl_add_object(const char *objname, Elf_Dyn *dynp, const u_long *dl_data, - const int objtype, const long laddr, const long loff) + const int objtype, const long laddr, const long loff) { elf_object_t *object; #if 0 @@ -194,8 +194,7 @@ _dl_find_symbol(const char *name, elf_object_t *startlook, h &= ~g; } - for (object = startlook; - object; + for (object = startlook; object; object = ((flags & SYM_SEARCH_SELF) ? 0 : object->next)) { const Elf_Sym *symt = object->dyn.symtab; const char *strt = object->dyn.strtab; @@ -215,8 +214,7 @@ _dl_find_symbol(const char *name, elf_object_t *startlook, continue; symn = strt + sym->st_name; - if (sym != *ref && - _dl_strcmp(symn, name)) + if (sym != *ref && _dl_strcmp(symn, name)) continue; /* allow this symbol if we are referring to a function @@ -226,11 +224,10 @@ _dl_find_symbol(const char *name, elf_object_t *startlook, * if flags has SYM_PLT set, we must have actual * symbol, so this symbol is skipped. */ - if (sym->st_shndx == SHN_UNDEF) { + if (sym->st_shndx == SHN_UNDEF) { if ((flags & SYM_PLT) || sym->st_value == 0 || - ELF_ST_TYPE(sym->st_info) != STT_FUNC) { + ELF_ST_TYPE(sym->st_info) != STT_FUNC) continue; - } } if (ELF_ST_BIND(sym->st_info) == STB_GLOBAL) { @@ -268,5 +265,5 @@ _dl_find_symbol(const char *name, elf_object_t *startlook, weak_symn); _dl_printf("relink your program\n"); } - return(weak_offs); + return (weak_offs); } diff --git a/libexec/ld.so/resolve.h b/libexec/ld.so/resolve.h index 702a296b0b9..752e721363d 100644 --- a/libexec/ld.so/resolve.h +++ b/libexec/ld.so/resolve.h @@ -1,4 +1,4 @@ -/* $OpenBSD: resolve.h,v 1.20 2003/01/30 03:46:46 drahn Exp $ */ +/* $OpenBSD: resolve.h,v 1.21 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -148,8 +148,8 @@ Elf_Addr _dl_find_symbol(const char *name, elf_object_t *startlook, const Elf_Sym **ref, int flags, int sym_size, const char *module_name); /* * defines for _dl_find_symbol() flag field, three bits of meaning - * myself - clear: search all objects, set: search only this object - * warnnotfound - clear: no warning, set: warn if not found + * myself - clear: search all objects, set: search only this object + * warnnotfound - clear: no warning, set: warn if not found * inplt - clear: possible plt ref set: real matching function. * * inplt - due to how ELF handles function addresses in shared libraries diff --git a/libexec/ld.so/sod.c b/libexec/ld.so/sod.c index d1bf155e5a2..f8589611ddf 100644 --- a/libexec/ld.so/sod.c +++ b/libexec/ld.so/sod.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sod.c,v 1.15 2002/07/29 22:43:36 art Exp $ */ +/* $OpenBSD: sod.c,v 1.16 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1993 Paul Kranenburg @@ -55,9 +55,7 @@ int _dl_hinthash(char *cp, int vmajor, int vminor); * Populate sod struct for dlopen's call to map_object */ void -_dl_build_sod(name, sodp) - const char *name; - struct sod *sodp; +_dl_build_sod(const char *name, struct sod *sodp) { unsigned int tuplet; int major, minor; @@ -116,9 +114,8 @@ _dl_build_sod(name, sodp) goto backout; } } - if (realname == NULL) { + if (realname == NULL) goto backout; - } cp = (char *)sodp->sod_name; sodp->sod_name = (long)_dl_strdup(realname); _dl_free(cp); @@ -142,7 +139,7 @@ char *_dl_hint_search_path = NULL; #define HINTS_VALID (hheader != NULL && hheader != (struct hints_header *)-1) void -_dl_maphints() +_dl_maphints(void) { caddr_t addr; @@ -197,10 +194,7 @@ _dl_maphints() } char * -_dl_findhint(name, major, minor, prefered_path) - char *name; - int major, minor; - char *prefered_path; +_dl_findhint(char *name, int major, int minor, char *prefered_path) { struct hints_bucket *bp; @@ -253,10 +247,9 @@ _dl_findhint(name, major, minor, prefered_path) /* No hints available for name */ return NULL; } + int -_dl_hinthash(cp, vmajor, vminor) - char *cp; - int vmajor, vminor; +_dl_hinthash(char *cp, int vmajor, int vminor) { int k = 0; diff --git a/libexec/ld.so/sparc/ldasm.S b/libexec/ld.so/sparc/ldasm.S index c7a3cf5f86c..b5beae47e50 100644 --- a/libexec/ld.so/sparc/ldasm.S +++ b/libexec/ld.so/sparc/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.10 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: ldasm.S,v 1.11 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 2001 Jason L. Wright (jason@thought.net) @@ -104,7 +104,7 @@ _dl_start: nop add %sp, DL_DATA_SIZE, %sp ! restore stack - + jmp %o0 mov %l1, %g1 ! restore ps_strings @@ -306,7 +306,7 @@ _dl_sigprocmask: cmp %o2, 0 bne,a 1f st %o0, [%o2] -1: +1: retl clr %o0 diff --git a/libexec/ld.so/sparc/rtld_machine.c b/libexec/ld.so/sparc/rtld_machine.c index 9e630647de4..96349dba377 100644 --- a/libexec/ld.so/sparc/rtld_machine.c +++ b/libexec/ld.so/sparc/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.12 2002/12/18 19:21:01 drahn Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.13 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1999 Dale Rahn @@ -361,7 +361,7 @@ _dl_bind(elf_object_t *object, Elf_Word reloff) _dl_sigprocmask(SIG_BLOCK, &nmask, &omask); /* mprotect the actual modified region, not the whole plt */ _dl_mprotect((void*)addr,sizeof (Elf_Addr) * 3, - PROT_READ|PROT_WRITE|PROT_EXEC); + PROT_READ|PROT_WRITE|PROT_EXEC); } _dl_reloc_plt(addr, value); @@ -370,7 +370,7 @@ _dl_bind(elf_object_t *object, Elf_Word reloff) if (object->plt_addr != NULL && object->plt_size != 0) { /* mprotect the actual modified region, not the whole plt */ _dl_mprotect((void*)addr,sizeof (Elf_Addr) * 3, - PROT_READ|PROT_EXEC); + PROT_READ|PROT_EXEC); _dl_sigprocmask(SIG_SETMASK, &omask, NULL); } @@ -447,10 +447,10 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) return; } - if (object->got_addr != NULL && object->got_size != 0) + if (object->got_addr != NULL && object->got_size != 0) _dl_mprotect((void*)object->got_addr, object->got_size, - PROT_READ); - if (object->plt_addr != NULL && object->plt_size != 0) + PROT_READ); + if (object->plt_addr != NULL && object->plt_size != 0) _dl_mprotect((void*)object->plt_addr, object->plt_size, PROT_READ|PROT_EXEC); } diff --git a/libexec/ld.so/sparc64/ldasm.S b/libexec/ld.so/sparc64/ldasm.S index 2391fbe1b40..43c53c92eb4 100644 --- a/libexec/ld.so/sparc64/ldasm.S +++ b/libexec/ld.so/sparc64/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.16 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: ldasm.S,v 1.17 2003/02/02 16:57:58 deraadt Exp $ */ /* $NetBSD: rtld_start.S,v 1.5 2001/08/14 22:17:48 eeh Exp $ */ /* @@ -377,7 +377,7 @@ _dl_sigprocmask: ld [%o1], %o1 ! indirect for new mask mov SYS_sigprocmask, %g1 ! call sys_sigprocmask t ST_SYSCALL ! off to wonderland - ! what about errors? + ! what about errors? cmp %o2, 0 bne,a 1f ! if oset != NULL st %o0, [%o2] ! *oset = oldmask diff --git a/libexec/ld.so/sparc64/rtld_machine.c b/libexec/ld.so/sparc64/rtld_machine.c index a46e471b300..cddca12dc09 100644 --- a/libexec/ld.so/sparc64/rtld_machine.c +++ b/libexec/ld.so/sparc64/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.23 2002/12/18 19:20:02 drahn Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.24 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1999 Dale Rahn @@ -648,7 +648,7 @@ _dl_bind(elf_object_t *object, int index) sigfillset(&nmask); _dl_sigprocmask(SIG_BLOCK, &nmask, &omask); _dl_mprotect((void*)object->plt_addr, object->plt_size, - PROT_READ|PROT_WRITE|PROT_EXEC); + PROT_READ|PROT_WRITE|PROT_EXEC); } _dl_reloc_plt(addr, ooff + this->st_value, rela); @@ -656,7 +656,7 @@ _dl_bind(elf_object_t *object, int index) /* if PLT is (to be protected), change back to RO/X */ if (object->plt_addr != NULL && object->plt_size != 0) { _dl_mprotect((void*)object->plt_addr, object->plt_size, - PROT_READ|PROT_EXEC); + PROT_READ|PROT_EXEC); _dl_sigprocmask(SIG_SETMASK, &omask, NULL); } @@ -725,7 +725,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) NULL); if (this != NULL) object->plt_addr = ooff + this->st_value; - + this = NULL; ooff = _dl_find_symbol("__plt_end", object, &this, SYM_SEARCH_SELF|SYM_NOWARNNOTFOUND|SYM_PLT, SYM_NOTPLT, @@ -743,10 +743,10 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) pltgot[8] = (Elf_Addr)object; - if (object->got_addr != NULL && object->got_size != 0) + if (object->got_addr != NULL && object->got_size != 0) _dl_mprotect((void*)object->got_addr, object->got_size, - PROT_READ); - if (object->plt_addr != NULL && object->plt_size != 0) + PROT_READ); + if (object->plt_addr != NULL && object->plt_size != 0) _dl_mprotect((void*)object->plt_addr, object->plt_size, PROT_READ|PROT_EXEC); } diff --git a/libexec/ld.so/util.c b/libexec/ld.so/util.c index 98e63d09646..c8c4383970c 100644 --- a/libexec/ld.so/util.c +++ b/libexec/ld.so/util.c @@ -1,4 +1,4 @@ -/* $OpenBSD: util.c,v 1.12 2002/12/02 23:17:36 deraadt Exp $ */ +/* $OpenBSD: util.c,v 1.13 2003/02/02 16:57:58 deraadt Exp $ */ /* * Copyright (c) 1998 Per Fogelstrom, Opsycon AB @@ -43,6 +43,7 @@ * this would end up dragging too much code from libc here. */ long __guard[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + void __stack_smash_handler(char func[], int damaged) { @@ -69,14 +70,13 @@ _dl_strdup(const char *orig) } /* - * The following malloc/free code is a very simplified implementation - * of a malloc function. However, we do not need to be very complex here - * because we only free memory when 'dlclose()' is called and we can - * reuse at least the memory allocated for the object descriptor. We have - * one dynamic string allocated, the library name and it is likely that - * we can reuse that one to without a lot of complex colapsing code. + * The following malloc/free code is a very simplified implementation + * of a malloc function. However, we do not need to be very complex here + * because we only free memory when 'dlclose()' is called and we can + * reuse at least the memory allocated for the object descriptor. We have + * one dynamic string allocated, the library name and it is likely that + * we can reuse that one to without a lot of complex colapsing code. */ - void * _dl_malloc(size_t size) { |