svn commit: r339877 - head/libexec/rtld-elf

Alex Richardson arichardson at FreeBSD.org
Mon Oct 29 21:08:17 UTC 2018


Author: arichardson
Date: Mon Oct 29 21:08:11 2018
New Revision: 339877
URL: https://svnweb.freebsd.org/changeset/base/339877

Log:
  rtld-elf: make it compile with WARNS=3
  
  Reviewed By:	kib
  Approved By:	brooks (mentor)
  Differential Revision: https://reviews.freebsd.org/D17150

Modified:
  head/libexec/rtld-elf/libmap.c
  head/libexec/rtld-elf/libmap.h
  head/libexec/rtld-elf/malloc.c
  head/libexec/rtld-elf/map_object.c
  head/libexec/rtld-elf/rtld.c
  head/libexec/rtld-elf/rtld.h

Modified: head/libexec/rtld-elf/libmap.c
==============================================================================
--- head/libexec/rtld-elf/libmap.c	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/libmap.c	Mon Oct 29 21:08:11 2018	(r339877)
@@ -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;
 

Modified: head/libexec/rtld-elf/libmap.h
==============================================================================
--- head/libexec/rtld-elf/libmap.h	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/libmap.h	Mon Oct 29 21:08:11 2018	(r339877)
@@ -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);

Modified: head/libexec/rtld-elf/malloc.c
==============================================================================
--- head/libexec/rtld-elf/malloc.c	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/malloc.c	Mon Oct 29 21:08:11 2018	(r339877)
@@ -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;
 

Modified: head/libexec/rtld-elf/map_object.c
==============================================================================
--- head/libexec/rtld-elf/map_object.c	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/map_object.c	Mon Oct 29 21:08:11 2018	(r339877)
@@ -340,7 +340,7 @@ get_elf_header(int fd, const char *path, const struct 
 	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);
 	}

Modified: head/libexec/rtld-elf/rtld.c
==============================================================================
--- head/libexec/rtld-elf/rtld.c	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/rtld.c	Mon Oct 29 21:08:11 2018	(r339877)
@@ -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 
 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 tcb
     char *tls;
     Elf_Addr *dtv, *olddtv;
     Elf_Addr segbase, oldsegbase, addr;
-    int i;
+    size_t i;
 
     ralign = tcbalign;
     if (tls_static_max_align > ralign)

Modified: head/libexec/rtld-elf/rtld.h
==============================================================================
--- head/libexec/rtld-elf/rtld.h	Mon Oct 29 21:08:02 2018	(r339876)
+++ head/libexec/rtld-elf/rtld.h	Mon Oct 29 21:08:11 2018	(r339877)
@@ -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;


More information about the svn-src-head mailing list