aboutsummaryrefslogtreecommitdiff
path: root/libexec/rtld-elf
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2018-10-29 21:08:11 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2018-10-29 21:08:11 +0000
commit78b648465d34c1d96cd60b65b64a824393a19f91 (patch)
tree4f65d189f0ace4adde7171eb6e127215ebbc8496 /libexec/rtld-elf
parentca7e27bbcea0b2cdf7ac64006059847986f3f6da (diff)
downloadsrc-78b648465d34c1d96cd60b65b64a824393a19f91.tar.gz
src-78b648465d34c1d96cd60b65b64a824393a19f91.zip
rtld-elf: make it compile with WARNS=3
Reviewed By: kib Approved By: brooks (mentor) Differential Revision: https://reviews.freebsd.org/D17150
Notes
Notes: svn path=/head/; revision=339877
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r--libexec/rtld-elf/libmap.c5
-rw-r--r--libexec/rtld-elf/libmap.h2
-rw-r--r--libexec/rtld-elf/malloc.c37
-rw-r--r--libexec/rtld-elf/map_object.c2
-rw-r--r--libexec/rtld-elf/rtld.c13
-rw-r--r--libexec/rtld-elf/rtld.h2
6 files changed, 34 insertions, 27 deletions
diff --git a/libexec/rtld-elf/libmap.c b/libexec/rtld-elf/libmap.c
index 33c824a65aff..3777e7bbc4dc 100644
--- a/libexec/rtld-elf/libmap.c
+++ b/libexec/rtld-elf/libmap.c
@@ -199,8 +199,7 @@ lmc_parse(char *lm_p, size_t lm_len)
char prog[MAXPATHLEN];
/* allow includedir + full length path */
char line[MAXPATHLEN + 13];
- size_t cnt;
- int i;
+ size_t cnt, i;
cnt = 0;
p = NULL;
@@ -403,7 +402,7 @@ lm_find(const char *p, const char *f)
* replacement library, or NULL.
*/
char *
-lm_findn(const char *p, const char *f, const int n)
+lm_findn(const char *p, const char *f, const size_t n)
{
char pathbuf[64], *s, *t;
diff --git a/libexec/rtld-elf/libmap.h b/libexec/rtld-elf/libmap.h
index 54b4a2fe2e82..0e9c668b4444 100644
--- a/libexec/rtld-elf/libmap.h
+++ b/libexec/rtld-elf/libmap.h
@@ -5,4 +5,4 @@
int lm_init (char *);
void lm_fini (void);
char * lm_find (const char *, const char *);
-char * lm_findn (const char *, const char *, const int);
+char * lm_findn (const char *, const char *, const size_t);
diff --git a/libexec/rtld-elf/malloc.c b/libexec/rtld-elf/malloc.c
index 188916b69606..f8fcbdc489c1 100644
--- a/libexec/rtld-elf/malloc.c
+++ b/libexec/rtld-elf/malloc.c
@@ -60,15 +60,11 @@ static char *rcsid = "$FreeBSD$";
#include "rtld_printf.h"
#include "paths.h"
-static void morecore();
-static int findbucket();
-
/*
* Pre-allocate mmap'ed pages
*/
#define NPOOLPAGES (128*1024/pagesz)
static caddr_t pagepool_start, pagepool_end;
-static int morepages();
/*
* The overhead on a block is at least 4 bytes. When free, this space
@@ -96,6 +92,11 @@ union overhead {
#define ov_size ovu.ovu_size
};
+static void morecore(int bucket);
+static int morepages(int n);
+static int findbucket(union overhead *freep, int srchlen);
+
+
#define MAGIC 0xef /* magic # on accounting info */
#define RMAGIC 0x5555 /* magic # on range info */
@@ -156,10 +157,10 @@ void *
malloc(nbytes)
size_t nbytes;
{
- register union overhead *op;
- register int bucket;
- register long n;
- register unsigned amt;
+ union overhead *op;
+ int bucket;
+ size_t n;
+ unsigned amt;
/*
* First time malloc is called, setup page size and
@@ -259,8 +260,8 @@ static void
morecore(bucket)
int bucket;
{
- register union overhead *op;
- register int sz; /* size of desired block */
+ union overhead *op;
+ int sz; /* size of desired block */
int amt; /* amount to allocate */
int nblks; /* how many blocks we get */
@@ -303,8 +304,8 @@ void
free(cp)
void *cp;
{
- register int size;
- register union overhead *op;
+ int size;
+ union overhead *op;
if (cp == NULL)
return;
@@ -346,8 +347,8 @@ realloc(cp, nbytes)
void *cp;
size_t nbytes;
{
- register u_int onb;
- register int i;
+ u_int onb;
+ int i;
union overhead *op;
char *res;
int was_alloced = 0;
@@ -417,8 +418,8 @@ findbucket(freep, srchlen)
union overhead *freep;
int srchlen;
{
- register union overhead *p;
- register int i, j;
+ union overhead *p;
+ int i, j;
for (i = 0; i < NBUCKETS; i++) {
j = 0;
@@ -442,8 +443,8 @@ findbucket(freep, srchlen)
mstats(s)
char *s;
{
- register int i, j;
- register union overhead *p;
+ int i, j;
+ union overhead *p;
int totfree = 0,
totused = 0;
diff --git a/libexec/rtld-elf/map_object.c b/libexec/rtld-elf/map_object.c
index 101156ac3e63..1a9ad2f1be7e 100644
--- a/libexec/rtld-elf/map_object.c
+++ b/libexec/rtld-elf/map_object.c
@@ -340,7 +340,7 @@ get_elf_header(int fd, const char *path, const struct stat *sbp)
Elf_Ehdr *hdr;
/* Make sure file has enough data for the ELF header */
- if (sbp != NULL && sbp->st_size < sizeof(Elf_Ehdr)) {
+ if (sbp != NULL && sbp->st_size < (off_t)sizeof(Elf_Ehdr)) {
_rtld_error("%s: invalid file format", path);
return (NULL);
}
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index ba4a238e1d06..eca8569e5a51 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -70,7 +70,7 @@ __FBSDID("$FreeBSD$");
#include "notes.h"
/* Types. */
-typedef void (*func_ptr_type)();
+typedef void (*func_ptr_type)(void);
typedef void * (*path_enum_proc) (const char *path, size_t len, void *arg);
/*
@@ -236,6 +236,13 @@ int _rtld_get_stack_prot(void) __exported;
int _rtld_is_dlopened(void *) __exported;
void _rtld_error(const char *, ...) __exported;
+/* Only here to fix -Wmissing-prototypes warnings */
+int __getosreldate(void);
+void __pthread_cxa_finalize(struct dl_phdr_info *a);
+func_ptr_type _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp);
+Elf_Addr _rtld_bind(Obj_Entry *obj, Elf_Size reloff);
+
+
int npagesizes, osreldate;
size_t *pagesizes;
@@ -262,7 +269,7 @@ size_t tls_last_offset; /* Static TLS offset of last module */
size_t tls_last_size; /* Static TLS size of last module */
size_t tls_static_space; /* Static TLS space allocated */
size_t tls_static_max_align;
-int tls_dtv_generation = 1; /* Used to detect when dtv size changes */
+Elf_Addr tls_dtv_generation = 1; /* Used to detect when dtv size changes */
int tls_max_index = 1; /* Largest module index allocated */
bool ld_library_path_rpath = false;
@@ -4846,7 +4853,7 @@ allocate_tls(Obj_Entry *objs, void *oldtls, size_t tcbsize, size_t tcbalign)
char *tls;
Elf_Addr *dtv, *olddtv;
Elf_Addr segbase, oldsegbase, addr;
- int i;
+ size_t i;
ralign = tcbalign;
if (tls_static_max_align > ralign)
diff --git a/libexec/rtld-elf/rtld.h b/libexec/rtld-elf/rtld.h
index a86eba0b8a1e..d17f40e0bad9 100644
--- a/libexec/rtld-elf/rtld.h
+++ b/libexec/rtld-elf/rtld.h
@@ -54,7 +54,7 @@ typedef unsigned char bool;
extern size_t tls_last_offset;
extern size_t tls_last_size;
extern size_t tls_static_space;
-extern int tls_dtv_generation;
+extern Elf_Addr tls_dtv_generation;
extern int tls_max_index;
extern int npagesizes;