rtld.c (7f49ce7a0b5f0d501d233308d73ccb1bf191a68b) | rtld.c (b54a59f3ba244b76a34488090653df687527e53c) |
---|---|
1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright 1996, 1997, 1998, 1999, 2000 John D. Polstra. 5 * Copyright 2003 Alexander Kabaev <kan@FreeBSD.ORG>. 6 * Copyright 2009-2013 Konstantin Belousov <kib@FreeBSD.ORG>. 7 * Copyright 2012 John Marino <draco@marino.st>. 8 * Copyright 2014-2017 The FreeBSD Foundation --- 55 unchanged lines hidden (view full) --- 64#include "rtld.h" 65#include "libmap.h" 66#include "paths.h" 67#include "rtld_tls.h" 68#include "rtld_printf.h" 69#include "rtld_malloc.h" 70#include "rtld_utrace.h" 71#include "notes.h" | 1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright 1996, 1997, 1998, 1999, 2000 John D. Polstra. 5 * Copyright 2003 Alexander Kabaev <kan@FreeBSD.ORG>. 6 * Copyright 2009-2013 Konstantin Belousov <kib@FreeBSD.ORG>. 7 * Copyright 2012 John Marino <draco@marino.st>. 8 * Copyright 2014-2017 The FreeBSD Foundation --- 55 unchanged lines hidden (view full) --- 64#include "rtld.h" 65#include "libmap.h" 66#include "paths.h" 67#include "rtld_tls.h" 68#include "rtld_printf.h" 69#include "rtld_malloc.h" 70#include "rtld_utrace.h" 71#include "notes.h" |
72#include "rtld_libc.h" |
|
72 73/* Types. */ 74typedef void (*func_ptr_type)(void); 75typedef void * (*path_enum_proc) (const char *path, size_t len, void *arg); 76 77 78/* Variables that cannot be static: */ 79extern struct r_debug r_debug; /* For GDB */ 80extern int _thread_autoinit_dummy_decl; | 73 74/* Types. */ 75typedef void (*func_ptr_type)(void); 76typedef void * (*path_enum_proc) (const char *path, size_t len, void *arg); 77 78 79/* Variables that cannot be static: */ 80extern struct r_debug r_debug; /* For GDB */ 81extern int _thread_autoinit_dummy_decl; |
81extern char* __progname; | |
82extern void (*__cleanup)(void); 83 84 85/* 86 * Function declarations. 87 */ 88static const char *basename(const char *); 89static void digest_dynamic1(Obj_Entry *, int, const Elf_Dyn **, --- 155 unchanged lines hidden (view full) --- 245int dl_iterate_phdr(__dl_iterate_hdr_callback, void *) __exported; 246int _rtld_addr_phdr(const void *, struct dl_phdr_info *) __exported; 247int _rtld_get_stack_prot(void) __exported; 248int _rtld_is_dlopened(void *) __exported; 249void _rtld_error(const char *, ...) __exported; 250 251/* Only here to fix -Wmissing-prototypes warnings */ 252int __getosreldate(void); | 82extern void (*__cleanup)(void); 83 84 85/* 86 * Function declarations. 87 */ 88static const char *basename(const char *); 89static void digest_dynamic1(Obj_Entry *, int, const Elf_Dyn **, --- 155 unchanged lines hidden (view full) --- 245int dl_iterate_phdr(__dl_iterate_hdr_callback, void *) __exported; 246int _rtld_addr_phdr(const void *, struct dl_phdr_info *) __exported; 247int _rtld_get_stack_prot(void) __exported; 248int _rtld_is_dlopened(void *) __exported; 249void _rtld_error(const char *, ...) __exported; 250 251/* Only here to fix -Wmissing-prototypes warnings */ 252int __getosreldate(void); |
253void __pthread_cxa_finalize(struct dl_phdr_info *a); | |
254func_ptr_type _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp); 255Elf_Addr _rtld_bind(Obj_Entry *obj, Elf_Size reloff); 256 257 258int npagesizes; 259static int osreldate; 260size_t *pagesizes; 261 --- 5380 unchanged lines hidden (view full) --- 5642 oid[1] = KERN_OSRELDATE; 5643 osrel = 0; 5644 len = sizeof(osrel); 5645 error = sysctl(oid, 2, &osrel, &len, NULL, 0); 5646 if (error == 0 && osrel > 0 && len == sizeof(osrel)) 5647 osreldate = osrel; 5648 return (osreldate); 5649} | 253func_ptr_type _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp); 254Elf_Addr _rtld_bind(Obj_Entry *obj, Elf_Size reloff); 255 256 257int npagesizes; 258static int osreldate; 259size_t *pagesizes; 260 --- 5380 unchanged lines hidden (view full) --- 5641 oid[1] = KERN_OSRELDATE; 5642 osrel = 0; 5643 len = sizeof(osrel); 5644 error = sysctl(oid, 2, &osrel, &len, NULL, 0); 5645 if (error == 0 && osrel > 0 && len == sizeof(osrel)) 5646 osreldate = osrel; 5647 return (osreldate); 5648} |
5650 5651void 5652exit(int status) 5653{ 5654 5655 _exit(status); 5656} 5657 5658void (*__cleanup)(void); 5659int __isthreaded = 0; 5660int _thread_autoinit_dummy_decl = 1; 5661 5662/* 5663 * No unresolved symbols for rtld. 5664 */ 5665void 5666__pthread_cxa_finalize(struct dl_phdr_info *a __unused) 5667{ 5668} 5669 | |
5670const char * 5671rtld_strerror(int errnum) 5672{ 5673 5674 if (errnum < 0 || errnum >= sys_nerr) 5675 return ("Unknown error"); 5676 return (sys_errlist[errnum]); 5677} --- 51 unchanged lines hidden --- | 5649const char * 5650rtld_strerror(int errnum) 5651{ 5652 5653 if (errnum < 0 || errnum >= sys_nerr) 5654 return ("Unknown error"); 5655 return (sys_errlist[errnum]); 5656} --- 51 unchanged lines hidden --- |