]> Zhao Yanbai Git Server - minix.git/commitdiff
Importing lorder 33/133/5
authorLionel Sambuc <lionel@minix3.org>
Tue, 4 Dec 2012 12:14:52 +0000 (13:14 +0100)
committerLionel Sambuc <lionel@minix3.org>
Fri, 7 Dec 2012 12:58:07 +0000 (13:58 +0100)
Change-Id: I0043c56a40a69ea809c909285c06de0273bada9f

distrib/sets/lists/minix/mi
docs/UPDATING
releasetools/nbsd_ports
tools/Makefile
tools/lorder/Makefile [new file with mode: 0644]
usr.bin/Makefile
usr.bin/lorder/Makefile [new file with mode: 0644]
usr.bin/lorder/lorder.1 [new file with mode: 0644]
usr.bin/lorder/lorder.sh [new file with mode: 0644]

index 60a5dbc514142af1b39c5efbc6465c90c2bef3ba..66cba42c30bd1029a36255eed02baab9378696d4 100644 (file)
 ./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
 ./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
index 7216c3d4cbd20b8c0d4779837d7336836a1ea87f..841663ed566550aa6d28b1a0b7bd737deb326961 100644 (file)
@@ -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:
index 2914f32ac12b0c712979dc9382bba599989c170f..3f558b623fb21a3e68845f3675b7dd74da02b349 100644 (file)
@@ -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
index aaf7680043b886fb2d406586c688e35115231fd0..9eabe1902c2afee5c42d9397b6adf1105b5dd111 100644 (file)
@@ -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 \
diff --git a/tools/lorder/Makefile b/tools/lorder/Makefile
new file mode 100644 (file)
index 0000000..b64d0ad
--- /dev/null
@@ -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
index fbfcea4b61caa7d395d444a6be2b40ca29ab74b1..1741911103a9a75cd4cc34a7396c082a96c71b29 100644 (file)
@@ -12,7 +12,7 @@ SUBDIR= \
        genassym \
        indent \
        ldd \
-       login m4 \
+       login lorder m4 \
        make man \
        mkdep mktemp \
        newgrp \
diff --git a/usr.bin/lorder/Makefile b/usr.bin/lorder/Makefile
new file mode 100644 (file)
index 0000000..761bec7
--- /dev/null
@@ -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>
diff --git a/usr.bin/lorder/lorder.1 b/usr.bin/lorder/lorder.1
new file mode 100644 (file)
index 0000000..19b47ad
--- /dev/null
@@ -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 .
diff --git a/usr.bin/lorder/lorder.sh b/usr.bin/lorder/lorder.sh
new file mode 100644 (file)
index 0000000..5fe5a17
--- /dev/null
@@ -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