git: 10cc3e39d6ea - main - Retire obsolete a.out rtld

Ed Maste emaste at FreeBSD.org
Thu Jan 7 23:50:41 UTC 2021


The branch main has been updated by emaste:

URL: https://cgit.FreeBSD.org/src/commit/?id=10cc3e39d6eaf8acd8bd7ba4156fdcef96cbc927

commit 10cc3e39d6eaf8acd8bd7ba4156fdcef96cbc927
Author:     Ed Maste <emaste at FreeBSD.org>
AuthorDate: 2021-01-07 22:39:49 +0000
Commit:     Ed Maste <emaste at FreeBSD.org>
CommitDate: 2021-01-07 23:50:01 +0000

    Retire obsolete a.out rtld
    
    This was disconnected from the build in 2001 in commit 66422f5b7a1a
    with a comment that it was long overdue even then.
    
    Sponsored by:   The FreeBSD Foundation
---
 libexec/rtld-aout/shlib.c   | 327 --------------------------------------------
 libexec/rtld-aout/shlib.h   |  45 ------
 libexec/rtld-aout/support.c |  84 ------------
 libexec/rtld-aout/support.h |  37 -----
 4 files changed, 493 deletions(-)

diff --git a/libexec/rtld-aout/shlib.c b/libexec/rtld-aout/shlib.c
deleted file mode 100644
index c9724a2203af..000000000000
--- a/libexec/rtld-aout/shlib.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-4-Clause
- *
- * Copyright (c) 1993 Paul Kranenburg
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *      This product includes software developed by Paul Kranenburg.
- * 4. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/file.h>
-#include <sys/time.h>
-#include <a.out.h>
-#include <ctype.h>
-#include <dirent.h>
-#include <err.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <sys/link_aout.h>
-#include "shlib.h"
-#include "support.h"
-
-/*
- * Standard directories to search for files specified by -l.
- */
-#ifndef STANDARD_SEARCH_DIRS
-#define STANDARD_SEARCH_DIRS    "/usr/lib/aout"
-#endif
-
-/*
- * Actual vector of library search directories,
- * including `-L'ed and LD_LIBRARY_PATH spec'd ones.
- */
-char	 **search_dirs;
-int	n_search_dirs;
-
-static const char *standard_search_dirs[] = {
-	STANDARD_SEARCH_DIRS
-};
-
-
-void
-add_search_dir(const char *name)
-{
-	int n;
-
-	for (n = 0; n < n_search_dirs; n++)
-		if (strcmp(search_dirs[n], name) == 0)
-			return;
-	n_search_dirs++;
-	search_dirs = (char **)
-		xrealloc(search_dirs, n_search_dirs * sizeof search_dirs[0]);
-	search_dirs[n_search_dirs - 1] = strdup(name);
-}
-
-void
-add_search_path(char *path)
-{
-	register char	*cp, *dup;
-
-	if (path == NULL)
-		return;
-
-	/* Add search directories from `path' */
-	path = dup = strdup(path);
-	while ((cp = strsep(&path, ":")) != NULL)
-		add_search_dir(cp);
-	free(dup);
-}
-
-void
-std_search_path(void)
-{
-	int	i, n;
-
-	/* Append standard search directories */
-	n = sizeof standard_search_dirs / sizeof standard_search_dirs[0];
-	for (i = 0; i < n; i++)
-		add_search_dir(standard_search_dirs[i]);
-}
-
-/*
- * Return true if CP points to a valid dewey number.
- * Decode and leave the result in the array DEWEY.
- * Return the number of decoded entries in DEWEY.
- */
-
-int
-getdewey(int dewey[], char *cp)
-{
-	int	i, n;
-
-	for (n = 0, i = 0; i < MAXDEWEY; i++) {
-		if (*cp == '\0')
-			break;
-
-		if (*cp == '.') cp++;
-		if (!isdigit(*cp))
-			return 0;
-
-		dewey[n++] = strtol(cp, &cp, 10);
-	}
-
-	return n;
-}
-
-/*
- * Compare two dewey arrays.
- * Return -1 if `d1' represents a smaller value than `d2'.
- * Return  1 if `d1' represents a greater value than `d2'.
- * Return  0 if equal.
- */
-int
-cmpndewey(int d1[], int n1, int d2[], int n2)
-{
-	register int	i;
-
-	for (i = 0; i < n1 && i < n2; i++) {
-		if (d1[i] < d2[i])
-			return -1;
-		if (d1[i] > d2[i])
-			return 1;
-	}
-
-	if (n1 == n2)
-		return 0;
-
-	if (i == n1)
-		return -1;
-
-	if (i == n2)
-		return 1;
-
-	errx(1, "cmpndewey: can't happen");
-	return 0;
-}
-
-/*
- * Search directories for a shared library matching the given
- * major and minor version numbers.  See search_lib_dir() below for
- * the detailed matching rules.
- *
- * As soon as a directory with an acceptable match is found, the search
- * terminates.  Subsequent directories are not searched for a better
- * match.  This is in conformance with the SunOS searching rules.  Also,
- * it avoids a lot of directory searches that are virtually guaranteed to
- * be fruitless.
- *
- * The return value is a full pathname to the matching library.  The
- * string is dynamically allocated.  If no matching library is found, the
- * function returns NULL.
- */
-
-char *
-findshlib(char *name, int *majorp, int *minorp, int do_dot_a)
-{
-	int		i;
-
-	for (i = 0; i < n_search_dirs; i++) {
-		char	*path;
-
-		path = search_lib_dir(search_dirs[i], name, majorp, minorp,
-			do_dot_a);
-		if(path != NULL)
-			return path;
-	}
-
-	return NULL;
-}
-
-/*
- * Search library directories for a file with the given name.  The
- * return value is a full pathname to the matching file.  The string
- * is dynamically allocated.  If no matching file is found, the function
- * returns NULL.
- */
-
-char *
-find_lib_file(const char *name)
-{
-	int		i;
-
-	for (i = 0; i < n_search_dirs; i++) {
-		char		*path = concat(search_dirs[i], "/", name);
-		struct stat	sb;
-
-		if (lstat(path, &sb) != -1)	/* We found it */
-			return path;
-
-		free(path);
-	}
-
-	return NULL;
-}
-
-/*
- * Search a given directory for a library (preferably shared) satisfying
- * the given criteria.
- *
- * The matching rules are as follows:
- *
- *	if(*majorp == -1)
- *		find the library with the highest major version;
- *	else
- *		insist on a major version identical to *majorp;
- *
- *	Always find the library with the highest minor version;
- *	if(*minorp != -1)
- *		insist on a minor version >= *minorp;
- *
- * It is invalid to specify a specific minor number while wildcarding
- * the major number.
- *
- * The actual major and minor numbers found are returned via the pointer
- * arguments.
- *
- * A suitable shared library is always preferred over a static (.a) library.
- * If do_dot_a is false, then a static library will not be accepted in
- * any case.
- *
- * The return value is a full pathname to the matching library.  The
- * string is dynamically allocated.  If no matching library is found, the
- * function returns NULL.
- */
-
-char *
-search_lib_dir(char *dir, char *name, int *majorp, int *minorp, int do_dot_a)
-{
-	size_t		namelen;
-	DIR		*dd;
-	struct dirent	*dp;
-	int		best_dewey[MAXDEWEY];
-	int		best_ndewey;
-	char		dot_a_name[MAXNAMLEN+1];
-	char		dot_so_name[MAXNAMLEN+1];
-
-	if((dd = opendir(dir)) == NULL)
-		return NULL;
-
-	namelen = strlen(name);
-	best_ndewey = 0;
-	dot_a_name[0] = '\0';
-	dot_so_name[0] = '\0';
-
-	while((dp = readdir(dd)) != NULL) {
-		char *extension;
-
-		if(strlen(dp->d_name) < 3 + namelen + 2 ||	/* lib+xxx+.a */
-		   strncmp(dp->d_name, "lib", 3) != 0 ||
-		   strncmp(dp->d_name + 3, name, namelen) != 0 ||
-		   dp->d_name[3+namelen] != '.')
-			continue;
-
-		extension = dp->d_name + 3 + namelen + 1;	/* a or so.* */
-
-		if(strncmp(extension, "so.", 3) == 0) {
-			int cur_dewey[MAXDEWEY];
-			int cur_ndewey;
-
-			cur_ndewey = getdewey(cur_dewey, extension+3);
-			if(cur_ndewey < 2)	/* Too few version numbers */
-				continue;
-
-			if(*majorp != -1) {	/* Need exact match on major */
-				if(cur_dewey[0] != *majorp)
-					continue;
-				if(*minorp != -1) {  /* Need minor >= minimum */
-					if(cur_dewey[1] < *minorp)
-						continue;
-				}
-			}
-
-			if(cmpndewey(cur_dewey, cur_ndewey, best_dewey,
-			   best_ndewey) <= 0)	/* No better than prior match */
-				continue;
-
-			/* We found a better match */
-			strcpy(dot_so_name, dp->d_name);
-			bcopy(cur_dewey, best_dewey,
-				cur_ndewey * sizeof best_dewey[0]);
-			best_ndewey = cur_ndewey;
-		} else if(do_dot_a && strcmp(extension, "a") == 0)
-			strcpy(dot_a_name, dp->d_name);
-	}
-	closedir(dd);
-
-	if(dot_so_name[0] != '\0') {
-		*majorp = best_dewey[0];
-		*minorp = best_dewey[1];
-		return concat(dir, "/", dot_so_name);
-	}
-
-	if(dot_a_name[0] != '\0')
-		return concat(dir, "/", dot_a_name);
-
-	return NULL;
-}
diff --git a/libexec/rtld-aout/shlib.h b/libexec/rtld-aout/shlib.h
deleted file mode 100644
index 7c42a29e6084..000000000000
--- a/libexec/rtld-aout/shlib.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*-
- * Copyright (C) 1996
- *	Peter Wemm.  All rights reserved.
- *
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *-
- * $FreeBSD$
- */
-
-/*
- * prototypes for shlib.c.  Big deal.
- */
-
-extern char	**search_dirs;
-extern int	n_search_dirs;
-
-void	add_search_dir __P((const char *));
-void	add_search_path __P((char *));
-void	std_search_path __P((void));
-int	getdewey __P((int[], char *));
-int	cmpndewey __P((int[], int, int[], int));
-char	*findshlib __P((char *, int *, int *, int));
-char	*find_lib_file __P((const char *));
-char	*search_lib_dir __P((char *, char *, int *, int *, int));
diff --git a/libexec/rtld-aout/support.c b/libexec/rtld-aout/support.c
deleted file mode 100644
index 034935d893fb..000000000000
--- a/libexec/rtld-aout/support.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*-
- * Generic "support" routines to replace those obtained from libiberty for ld.
- *
- * I've collected these from random bits of (published) code I've written
- * over the years, not that they are a big deal.  peter at freebsd.org
- *
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (C) 1996
- *	Peter Wemm.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *-
- * $FreeBSD$
- */
-#include <sys/types.h>
-#include <string.h>
-#include <stdlib.h>
-#include <err.h>
-
-#include "support.h"
-
-char *
-concat(const char *s1, const char *s2, const char *s3)
-{
-	int len = 1;
-	char *s;
-	if (s1)
-		len += strlen(s1);
-	if (s2)
-		len += strlen(s2);
-	if (s3)
-		len += strlen(s3);
-	s = xmalloc(len);
-	s[0] = '\0';
-	if (s1)
-		strcat(s, s1);
-	if (s2)
-		strcat(s, s2);
-	if (s3)
-		strcat(s, s3);
-	return s;
-}
-
-void *
-xmalloc(size_t n)
-{
-	char *p = malloc(n);
-
-	if (p == NULL)
-		errx(1, "Could not allocate memory");
-
-	return p;
-}
-
-void *
-xrealloc(void *p, size_t n)
-{
-	p = realloc(p, n);
-
-	if (p == NULL)
-		errx(1, "Could not allocate memory");
-
-	return p;
-}
diff --git a/libexec/rtld-aout/support.h b/libexec/rtld-aout/support.h
deleted file mode 100644
index dd38959df6ee..000000000000
--- a/libexec/rtld-aout/support.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (C) 1996
- *	Peter Wemm.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *-
- * $FreeBSD$
- */
-
-/*
- * prototypes for support.c.  Big deal.
- */
-
-void	*xmalloc __P((size_t));
-void	*xrealloc __P((void *, size_t));
-char	*concat __P((const char *, const char *, const char *));


More information about the dev-commits-src-all mailing list