Importing lorder
Change-Id: I0043c56a40a69ea809c909285c06de0273bada9f
This commit is contained in:
		
							parent
							
								
									0fbbaa43e9
								
							
						
					
					
						commit
						d71cc7b9f6
					
				@ -276,6 +276,7 @@
 | 
			
		||||
./usr/bin/logger			minix-sys
 | 
			
		||||
./usr/bin/login				minix-sys
 | 
			
		||||
./usr/bin/look				minix-sys
 | 
			
		||||
./usr/bin/lorder			minix-sys
 | 
			
		||||
./usr/bin/lpd				minix-sys
 | 
			
		||||
./usr/bin/lp				minix-sys
 | 
			
		||||
./usr/bin/lspci				minix-sys
 | 
			
		||||
@ -1291,6 +1292,7 @@
 | 
			
		||||
./usr/man/man1/logger.1			minix-sys
 | 
			
		||||
./usr/man/man1/login.1			minix-sys
 | 
			
		||||
./usr/man/man1/look.1			minix-sys
 | 
			
		||||
./usr/man/man1/lorder.1			minix-sys
 | 
			
		||||
./usr/man/man1/lp.1			minix-sys
 | 
			
		||||
./usr/man/man1/ls.1			minix-sys
 | 
			
		||||
./usr/man/man1/lspci.1			minix-sys
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,8 @@
 | 
			
		||||
20121205:
 | 
			
		||||
	lorder requires a newer version of sort, so to ensure it is present
 | 
			
		||||
	do the following:
 | 
			
		||||
	# make -C usr.bin/sort clean all install
 | 
			
		||||
 | 
			
		||||
20121127:
 | 
			
		||||
	/etc/mtab is now obsoleted by /proc/mounts. You need to create a
 | 
			
		||||
	symlink:
 | 
			
		||||
 | 
			
		||||
@ -54,6 +54,7 @@
 | 
			
		||||
2012/10/17 12:00:00,tools/headerlist
 | 
			
		||||
2012/10/17 12:00:00,tools/host-mkdep
 | 
			
		||||
2012/10/17 12:00:00,tools/lex
 | 
			
		||||
2012/10/17 12:00:00,tools/lorder
 | 
			
		||||
2012/10/17 12:00:00,tools/Makefile
 | 
			
		||||
2012/10/17 12:00:00,tools/Makefile.gnuhost
 | 
			
		||||
2012/10/17 12:00:00,tools/Makefile.host
 | 
			
		||||
@ -66,6 +67,7 @@
 | 
			
		||||
2012/10/17 12:00:00,tools/tic
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/gzip/Makefile
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/indent
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/lorder
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/Makefile
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/Makefile.inc
 | 
			
		||||
2012/10/17 12:00:00,usr.bin/passwd/Makefile
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ LINT_BITS= lint lint2
 | 
			
		||||
SUBDIR=	host-mkdep .WAIT compat .WAIT \
 | 
			
		||||
	binstall .WAIT mktemp .WAIT sed .WAIT \
 | 
			
		||||
		genassym \
 | 
			
		||||
		makewhatis mkdep mtree .WAIT \
 | 
			
		||||
		lorder makewhatis mkdep mtree .WAIT \
 | 
			
		||||
		m4 \
 | 
			
		||||
	.WAIT mkfs.mfs \
 | 
			
		||||
	.WAIT yacc \
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								tools/lorder/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tools/lorder/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
#	$NetBSD: Makefile,v 1.11 2008/10/25 22:15:28 apb Exp $
 | 
			
		||||
 | 
			
		||||
.include <bsd.own.mk>
 | 
			
		||||
 | 
			
		||||
COMPATOBJ!=	cd ${.CURDIR}/../compat && ${PRINTOBJDIR}
 | 
			
		||||
.-include	"${COMPATOBJ}/defs.mk"
 | 
			
		||||
 | 
			
		||||
TIMESTAMP=	${TOOLDIR}/bin/${_TOOL_PREFIX}lorder
 | 
			
		||||
 | 
			
		||||
CLEANFILES+=	lorder
 | 
			
		||||
 | 
			
		||||
.PATH: ${.CURDIR}/../../usr.bin/lorder
 | 
			
		||||
 | 
			
		||||
.include <bsd.hostprog.mk>
 | 
			
		||||
 | 
			
		||||
install: ${TIMESTAMP}
 | 
			
		||||
${TIMESTAMP}: lorder
 | 
			
		||||
	${HOST_INSTALL_FILE} -m ${BINMODE} ${.ALLSRC} ${.TARGET}
 | 
			
		||||
 | 
			
		||||
lorder: lorder.sh
 | 
			
		||||
	${TOOL_SED} -e "s,/bin/sh,"${HOST_BSHELL:Q}",g" \
 | 
			
		||||
	    -e "s,{JOIN:=.*},{JOIN:="${TOOL_JOIN:Q}"}," \
 | 
			
		||||
	    -e "s,{MKTEMP:=.*},{MKTEMP:="${TOOL_MKTEMP:Q}"}," \
 | 
			
		||||
	    -e "s,{NM:=.*},{NM:="${NM:Q}"}," \
 | 
			
		||||
	    -e "s,{SED:=.*},{SED:="${TOOL_SED:Q}"}," \
 | 
			
		||||
	    < ${.ALLSRC} > ${.TARGET}
 | 
			
		||||
 | 
			
		||||
realall: lorder
 | 
			
		||||
@ -12,7 +12,7 @@ SUBDIR= \
 | 
			
		||||
	genassym \
 | 
			
		||||
	indent \
 | 
			
		||||
	ldd \
 | 
			
		||||
	login m4 \
 | 
			
		||||
	login lorder m4 \
 | 
			
		||||
	make man \
 | 
			
		||||
	mkdep mktemp \
 | 
			
		||||
	newgrp \
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								usr.bin/lorder/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								usr.bin/lorder/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#	$NetBSD: Makefile,v 1.11 1997/03/24 21:59:43 christos Exp $
 | 
			
		||||
#	@(#)Makefile	8.1 (Berkeley) 6/6/93
 | 
			
		||||
 | 
			
		||||
MAN=	lorder.1
 | 
			
		||||
 | 
			
		||||
SCRIPTS=lorder.sh
 | 
			
		||||
 | 
			
		||||
.include <bsd.prog.mk>
 | 
			
		||||
							
								
								
									
										71
									
								
								usr.bin/lorder/lorder.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								usr.bin/lorder/lorder.1
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,71 @@
 | 
			
		||||
.\"	$NetBSD: lorder.1,v 1.8 2012/03/22 07:58:19 wiz Exp $
 | 
			
		||||
.\"
 | 
			
		||||
.\" Copyright (c) 1990, 1993
 | 
			
		||||
.\"	The Regents of the University of California.  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. Neither the name of the University nor the names of its contributors
 | 
			
		||||
.\"    may be used to endorse or promote products derived from this software
 | 
			
		||||
.\"    without specific prior written permission.
 | 
			
		||||
.\"
 | 
			
		||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
 | 
			
		||||
.\"
 | 
			
		||||
.\"     @(#)lorder.1	8.2 (Berkeley) 4/28/95
 | 
			
		||||
.\"
 | 
			
		||||
.Dd April 28, 1995
 | 
			
		||||
.Dt LORDER 1
 | 
			
		||||
.Os
 | 
			
		||||
.Sh NAME
 | 
			
		||||
.Nm lorder
 | 
			
		||||
.Nd list dependencies for object files
 | 
			
		||||
.Sh SYNOPSIS
 | 
			
		||||
.Nm
 | 
			
		||||
.Ar
 | 
			
		||||
.Sh DESCRIPTION
 | 
			
		||||
The
 | 
			
		||||
.Nm
 | 
			
		||||
utility uses
 | 
			
		||||
.Xr nm 1
 | 
			
		||||
to determine interdependencies in the list of object files
 | 
			
		||||
specified on the command line.
 | 
			
		||||
.Nm
 | 
			
		||||
outputs a list of file names where the first file contains a symbol
 | 
			
		||||
which is defined by the second file.
 | 
			
		||||
.Pp
 | 
			
		||||
The output is normally used with
 | 
			
		||||
.Xr tsort 1
 | 
			
		||||
when a library is created to determine the optimum ordering of the
 | 
			
		||||
object modules so that all references may be resolved in a single
 | 
			
		||||
pass of the loader.
 | 
			
		||||
.Sh EXAMPLES
 | 
			
		||||
.Bd -literal -offset indent
 | 
			
		||||
ar cr library.a `lorder ${OBJS} | tsort`
 | 
			
		||||
.Ed
 | 
			
		||||
.Sh SEE ALSO
 | 
			
		||||
.Xr ar 1 ,
 | 
			
		||||
.Xr ld 1 ,
 | 
			
		||||
.Xr nm 1 ,
 | 
			
		||||
.Xr ranlib 1 ,
 | 
			
		||||
.Xr tsort 1
 | 
			
		||||
.Sh HISTORY
 | 
			
		||||
An
 | 
			
		||||
.Nm
 | 
			
		||||
utility appeared in
 | 
			
		||||
.At v7 .
 | 
			
		||||
							
								
								
									
										102
									
								
								usr.bin/lorder/lorder.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								usr.bin/lorder/lorder.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,102 @@
 | 
			
		||||
#!/bin/sh -
 | 
			
		||||
#	$NetBSD: lorder.sh,v 1.15 2007/01/14 16:29:35 apb Exp $
 | 
			
		||||
#
 | 
			
		||||
# Copyright (c) 1990, 1993
 | 
			
		||||
#	The Regents of the University of California.  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 the University of
 | 
			
		||||
#	California, Berkeley and its contributors.
 | 
			
		||||
# 4. Neither the name of the University nor the names of its contributors
 | 
			
		||||
#    may be used to endorse or promote products derived from this software
 | 
			
		||||
#    without specific prior written permission.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
 | 
			
		||||
#
 | 
			
		||||
#	@(#)lorder.sh	8.1 (Berkeley) 6/6/93
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# If the user has set ${NM} then we use it, otherwise we use 'nm'.
 | 
			
		||||
# Similarly for JOIN, MKTEMP, SED, and SORT.
 | 
			
		||||
#
 | 
			
		||||
# For each of these, we try to find the command in the user's path, and
 | 
			
		||||
# if that fails we try to find it in the default path.  If we can't
 | 
			
		||||
# find it, we punt.  Once we find it, we canonicalize its name and set
 | 
			
		||||
# the path to the default path so that other commands we use are picked
 | 
			
		||||
# properly.
 | 
			
		||||
 | 
			
		||||
: ${JOIN:=join}
 | 
			
		||||
: ${MKTEMP:=mktemp}
 | 
			
		||||
: ${NM:=nm}
 | 
			
		||||
: ${SED:=sed}
 | 
			
		||||
: ${SORT:=sort}
 | 
			
		||||
for var in JOIN MKTEMP NM SED SORT ; do
 | 
			
		||||
	if ! eval type "\$${var}" >/dev/null 2>&1 ; then
 | 
			
		||||
		PATH=/bin:/usr/bin
 | 
			
		||||
		export PATH
 | 
			
		||||
		if ! eval type "\$${var}" > /dev/null 2>&1; then
 | 
			
		||||
			eval echo "lorder: \$${var}: not found" >&2
 | 
			
		||||
			exit 1
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
	cmd='set $(eval type "\$${var}") ; eval echo \$$#'
 | 
			
		||||
	eval "${var}=\$(eval \${cmd})"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# only one argument is a special case, just output the name twice
 | 
			
		||||
case $# in
 | 
			
		||||
	0)
 | 
			
		||||
		echo "usage: lorder file ..." >&2;
 | 
			
		||||
		exit ;;
 | 
			
		||||
	1)
 | 
			
		||||
		echo $1 $1;
 | 
			
		||||
		exit ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# temporary files
 | 
			
		||||
N=$("${MKTEMP}" /tmp/_nm_.XXXXXX) || exit 1
 | 
			
		||||
R=$("${MKTEMP}" /tmp/_reference_.XXXXXX) || exit 1
 | 
			
		||||
S=$("${MKTEMP}" /tmp/_symbol_.XXXXXX) || exit 1
 | 
			
		||||
 | 
			
		||||
# remove temporary files on exit
 | 
			
		||||
trap "rm -f $N $R $S; exit 0" 0
 | 
			
		||||
trap "rm -f $N $R $S; exit 1" HUP INT QUIT PIPE TERM 2>/dev/null || \
 | 
			
		||||
	trap "rm -f $N $R $S; exit 1" 1 2 3 13 15
 | 
			
		||||
 | 
			
		||||
# if the line ends in a colon, assume it's the first occurrence of a new
 | 
			
		||||
# object file.  Echo it twice, just to make sure it gets into the output.
 | 
			
		||||
#
 | 
			
		||||
# if the line has " T " or " D " it's a globally defined symbol, put it
 | 
			
		||||
# into the symbol file.
 | 
			
		||||
#
 | 
			
		||||
# if the line has " U " it's a globally undefined symbol, put it into
 | 
			
		||||
# the reference file.
 | 
			
		||||
(for file in $* ; do echo $file":" ; done ; $NM -go $*) >$N
 | 
			
		||||
"${SED}" -ne '/:$/{s/://;s/.*/& &/;p;}' <$N
 | 
			
		||||
"${SED}" -ne 's/:.* [TDGR] / /p' <$N >$S
 | 
			
		||||
"${SED}" -ne 's/:.* U / /p' <$N >$R
 | 
			
		||||
 | 
			
		||||
# sort symbols and references on the second field (the symbol)
 | 
			
		||||
# join on that field, and print out the file names.
 | 
			
		||||
"${SORT}" -k2 $R -o $R
 | 
			
		||||
"${SORT}" -k2 $S -o $S
 | 
			
		||||
"${JOIN}" -j 2 -o 1.1,2.1 $R $S
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user