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 ---