Finish the deorbital burn of the i386-only a.out toolchain.
This commit is contained in:
parent
407c3de522
commit
02f7e15bfa
@ -1,11 +0,0 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/6/93
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= ranlib
|
||||
SRCS= archive.c build.c misc.c ranlib.c touch.c
|
||||
CFLAGS+=-I${.CURDIR} -I${.CURDIR}/../ar
|
||||
MAN= ranlib.1aout ranlib.5
|
||||
BINDIR= /usr/libexec/aout
|
||||
VPATH= ${.CURDIR}/../ar
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,296 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)build.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <a.out.h>
|
||||
#include <ar.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
#include <ranlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "archive.h"
|
||||
#include "extern.h"
|
||||
|
||||
typedef struct _rlib {
|
||||
struct _rlib *next; /* next structure */
|
||||
off_t pos; /* offset of defining archive file */
|
||||
char *sym; /* symbol */
|
||||
int symlen; /* strlen(sym) */
|
||||
} RLIB;
|
||||
RLIB *rhead, **pnext;
|
||||
|
||||
FILE *fp;
|
||||
|
||||
long symcnt; /* symbol count */
|
||||
long tsymlen; /* total string length */
|
||||
|
||||
static void rexec(int, int);
|
||||
static void symobj(void);
|
||||
|
||||
static char tname[] = "temporary file"; /* temporary file "name" */
|
||||
|
||||
int
|
||||
build(void)
|
||||
{
|
||||
CF cf;
|
||||
int afd, tfd;
|
||||
off_t size;
|
||||
|
||||
afd = open_archive(O_RDWR);
|
||||
fp = fdopen(afd, "r+");
|
||||
tfd = tmp();
|
||||
|
||||
SETCF(afd, archive, tfd, tname, RPAD|WPAD);
|
||||
|
||||
/* Read through the archive, creating list of symbols. */
|
||||
pnext = &rhead;
|
||||
symcnt = tsymlen = 0;
|
||||
while(get_arobj(afd)) {
|
||||
if (!strcmp(chdr.name, RANLIBMAG)) {
|
||||
skip_arobj(afd);
|
||||
continue;
|
||||
}
|
||||
rexec(afd, tfd);
|
||||
put_arobj(&cf, (struct stat *)NULL);
|
||||
}
|
||||
*pnext = NULL;
|
||||
|
||||
/* Create the symbol table. */
|
||||
symobj();
|
||||
|
||||
/* Copy the saved objects into the archive. */
|
||||
size = lseek(tfd, (off_t)0, SEEK_CUR);
|
||||
(void)lseek(tfd, (off_t)0, SEEK_SET);
|
||||
SETCF(tfd, tname, afd, archive, WPAD);
|
||||
copy_ar(&cf, size);
|
||||
(void)ftruncate(afd, lseek(afd, (off_t)0, SEEK_CUR));
|
||||
(void)close(tfd);
|
||||
|
||||
/* Set the time. */
|
||||
settime(afd);
|
||||
close_archive(afd);
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* rexec
|
||||
* Read the exec structure; ignore any files that don't look
|
||||
* exactly right.
|
||||
*/
|
||||
static void
|
||||
rexec(int rfd, int wfd)
|
||||
{
|
||||
RLIB *rp;
|
||||
long nsyms;
|
||||
int nr, symlen;
|
||||
char *strtab = 0, *sym;
|
||||
struct exec ebuf;
|
||||
struct nlist nl;
|
||||
off_t r_off, w_off;
|
||||
long strsize;
|
||||
|
||||
/* Get current offsets for original and tmp files. */
|
||||
r_off = lseek(rfd, (off_t)0, SEEK_CUR);
|
||||
w_off = lseek(wfd, (off_t)0, SEEK_CUR);
|
||||
|
||||
/* Read in exec structure. */
|
||||
nr = read(rfd, &ebuf, sizeof(struct exec));
|
||||
if (nr != sizeof(struct exec))
|
||||
goto badread;
|
||||
|
||||
/* Check magic number and symbol count. */
|
||||
if (N_BADMAG(ebuf) || ebuf.a_syms == 0)
|
||||
goto bad1;
|
||||
|
||||
/* Seek to string table. */
|
||||
if (lseek(rfd, r_off + N_STROFF(ebuf), SEEK_SET) == (off_t)-1)
|
||||
error(archive);
|
||||
|
||||
/* Read in size of the string table. */
|
||||
nr = read(rfd, &strsize, sizeof(strsize));
|
||||
if (nr != sizeof(strsize))
|
||||
goto badread;
|
||||
|
||||
/* Read in the string table. */
|
||||
strsize -= sizeof(strsize);
|
||||
if ((strtab = malloc(strsize)) == NULL)
|
||||
error(archive);
|
||||
nr = read(rfd, strtab, strsize);
|
||||
if (nr != strsize) {
|
||||
badread: if (nr < 0)
|
||||
error(archive);
|
||||
goto bad2;
|
||||
}
|
||||
|
||||
/* Seek to symbol table. */
|
||||
if (fseek(fp, (long)r_off + N_SYMOFF(ebuf), SEEK_SET))
|
||||
goto bad2;
|
||||
|
||||
/* For each symbol read the nlist entry and save it as necessary. */
|
||||
nsyms = ebuf.a_syms / sizeof(struct nlist);
|
||||
while (nsyms--) {
|
||||
if (!fread(&nl, sizeof(struct nlist), 1, fp)) {
|
||||
if (feof(fp))
|
||||
badfmt();
|
||||
error(archive);
|
||||
}
|
||||
|
||||
/* Ignore if no name or local. */
|
||||
if (!nl.n_un.n_strx || !(nl.n_type & N_EXT))
|
||||
continue;
|
||||
|
||||
/*
|
||||
* If the symbol is an undefined external and the n_value
|
||||
* field is non-zero, keep it.
|
||||
*/
|
||||
if ((nl.n_type & N_TYPE) == N_UNDF && !nl.n_value)
|
||||
continue;
|
||||
|
||||
/* First four bytes are the table size. */
|
||||
sym = strtab + nl.n_un.n_strx - sizeof(long);
|
||||
symlen = strlen(sym) + 1;
|
||||
|
||||
if ((rp = malloc(sizeof(RLIB))) == NULL)
|
||||
error(archive);
|
||||
if ((rp->sym = malloc(symlen)) == NULL)
|
||||
error(archive);
|
||||
bcopy(sym, rp->sym, symlen);
|
||||
rp->symlen = symlen;
|
||||
rp->pos = w_off;
|
||||
|
||||
/* Build in forward order for "ar -m" command. */
|
||||
*pnext = rp;
|
||||
pnext = &rp->next;
|
||||
|
||||
++symcnt;
|
||||
tsymlen += symlen;
|
||||
}
|
||||
|
||||
bad2: free(strtab);
|
||||
bad1: (void)lseek(rfd, r_off, SEEK_SET);
|
||||
}
|
||||
|
||||
/*
|
||||
* symobj --
|
||||
* Write the symbol table into the archive, computing offsets as
|
||||
* writing.
|
||||
*/
|
||||
static void
|
||||
symobj(void)
|
||||
{
|
||||
RLIB *rp, *rpnext;
|
||||
struct ranlib rn;
|
||||
off_t ransize;
|
||||
long size, stroff;
|
||||
char hb[sizeof(struct ar_hdr) + 1], pad;
|
||||
|
||||
/* Rewind the archive, leaving the magic number. */
|
||||
if (fseek(fp, (long)SARMAG, SEEK_SET))
|
||||
error(archive);
|
||||
|
||||
/* Size of the ranlib archive file, pad if necessary. */
|
||||
ransize = sizeof(long) +
|
||||
symcnt * sizeof(struct ranlib) + sizeof(long) + tsymlen;
|
||||
if (ransize & 01) {
|
||||
++ransize;
|
||||
pad = '\n';
|
||||
} else
|
||||
pad = '\0';
|
||||
|
||||
/* Put out the ranlib archive file header. */
|
||||
#define DEFMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
|
||||
(void)sprintf(hb, HDR2, RANLIBMAG, 0L, getuid(), getgid(),
|
||||
DEFMODE & ~umask(0), ransize, ARFMAG);
|
||||
if (!fwrite(hb, sizeof(struct ar_hdr), 1, fp))
|
||||
error(tname);
|
||||
|
||||
/* First long is the size of the ranlib structure section. */
|
||||
size = symcnt * sizeof(struct ranlib);
|
||||
if (!fwrite(&size, sizeof(size), 1, fp))
|
||||
error(tname);
|
||||
|
||||
/* Offset of the first archive file. */
|
||||
size = SARMAG + sizeof(struct ar_hdr) + ransize;
|
||||
|
||||
/*
|
||||
* Write out the ranlib structures. The offset into the string
|
||||
* table is cumulative, the offset into the archive is the value
|
||||
* set in rexec() plus the offset to the first archive file.
|
||||
*/
|
||||
for (rp = rhead, stroff = 0; rp; rp = rp->next) {
|
||||
rn.ran_un.ran_strx = stroff;
|
||||
stroff += rp->symlen;
|
||||
rn.ran_off = size + rp->pos;
|
||||
if (!fwrite(&rn, sizeof(struct ranlib), 1, fp))
|
||||
error(archive);
|
||||
}
|
||||
|
||||
/* Second long is the size of the string table. */
|
||||
if (!fwrite(&tsymlen, sizeof(tsymlen), 1, fp))
|
||||
error(tname);
|
||||
|
||||
/* Write out the string table. */
|
||||
for (rp = rhead; rp; rp = rpnext) {
|
||||
if (!fwrite(rp->sym, rp->symlen, 1, fp))
|
||||
error(tname);
|
||||
rpnext = rp->next;
|
||||
free(rp->sym);
|
||||
free(rp);
|
||||
}
|
||||
rhead = NULL;
|
||||
|
||||
if (pad && !fwrite(&pad, sizeof(pad), 1, fp))
|
||||
error(tname);
|
||||
|
||||
(void)fflush(fp);
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
extern int build(void);
|
||||
extern int touch(void);
|
||||
extern int tmp(void);
|
||||
extern void error(char *);
|
||||
extern void badfmt(void);
|
||||
extern void settime(int);
|
||||
|
||||
extern CHDR chdr; /* converted header */
|
||||
extern char *archive; /* archive name */
|
@ -1,98 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/signal.h>
|
||||
|
||||
#include <dirent.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "archive.h"
|
||||
#include "extern.h"
|
||||
#include "pathnames.h"
|
||||
|
||||
extern char *archive; /* archive name */
|
||||
|
||||
void error(char *);
|
||||
|
||||
int
|
||||
tmp(void)
|
||||
{
|
||||
sigset_t set, oset;
|
||||
int fd;
|
||||
char *envtmp, path[MAXPATHLEN];
|
||||
|
||||
if ((envtmp = getenv("TMPDIR")) != NULL)
|
||||
(void)sprintf(path, "%s%s", envtmp, strrchr(_PATH_RANTMP, '/'));
|
||||
else
|
||||
bcopy(_PATH_RANTMP, path, sizeof(_PATH_RANTMP));
|
||||
|
||||
sigfillset(&set);
|
||||
(void)sigprocmask(SIG_BLOCK, &set, &oset);
|
||||
if ((fd = mkstemp(path)) == -1)
|
||||
error(path);
|
||||
(void)unlink(path);
|
||||
(void)sigprocmask(SIG_SETMASK, &oset, NULL);
|
||||
return(fd);
|
||||
}
|
||||
|
||||
void
|
||||
badfmt(void)
|
||||
{
|
||||
errno = EFTYPE;
|
||||
error(archive);
|
||||
}
|
||||
|
||||
void
|
||||
error(char *name)
|
||||
{
|
||||
err(1, "%s", name);
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
/*-
|
||||
* 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.
|
||||
*
|
||||
* @(#)pathnames.h 8.1 (Berkeley) 6/6/93
|
||||
*/
|
||||
|
||||
#define _PATH_RANTMP "/tmp/ranlib.XXXXXX"
|
@ -1,92 +0,0 @@
|
||||
.\" 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.
|
||||
.\"
|
||||
.\" @(#)ranlib.1 8.1 (Berkeley) 6/6/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 6, 1993
|
||||
.Dt RANLIB 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ranlib
|
||||
.Nd table-of-contents for archive libraries
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl t
|
||||
.Ar
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility creates a table of external references for archive libraries,
|
||||
normally used by the loader,
|
||||
.Xr ld 1 .
|
||||
This table is named ``__.SYMDEF'' and is prepended to the archive.
|
||||
Files in the archive which are not executable and symbols which are
|
||||
uninteresting to the loader are ignored.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl t
|
||||
Set the modification time of the __.SYMDEF file.
|
||||
Some loaders (but not the
|
||||
.Fx
|
||||
one)
|
||||
compared this time with the modification time of the
|
||||
archive to verify that the table is up-to-date with respect to the
|
||||
archive.
|
||||
If the modification time has been changed without any change to the
|
||||
archive (for example, by a
|
||||
.Xr cp 1 ) ,
|
||||
the
|
||||
.Fl t
|
||||
option can be used to ``touch'' the modification time so that it
|
||||
appears that the table is up-to-date.
|
||||
This is also useful after using the
|
||||
.Fl t
|
||||
option of
|
||||
.Xr make 1 .
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /tmp/ranlib.XXXXXX -compact
|
||||
.It Pa /tmp/ranlib.XXXXXX
|
||||
Temporary file names.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr ar 1 ,
|
||||
.Xr ld 1 ,
|
||||
.Xr lorder 1 ,
|
||||
.Xr nm 1 ,
|
||||
.Xr ranlib 5
|
||||
.Sh HISTORY
|
||||
A
|
||||
.Nm
|
||||
command appeared in
|
||||
.At v7 .
|
@ -1,91 +0,0 @@
|
||||
.\" 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.
|
||||
.\"
|
||||
.\" @(#)ranlib.1 8.1 (Berkeley) 6/6/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 6, 1993
|
||||
.Dt RANLIB 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ranlib
|
||||
.Nd table-of-contents for archive libraries
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl t
|
||||
.Ar
|
||||
.Sh DESCRIPTION
|
||||
.Nm Ranlib
|
||||
creates a table of external references for archive libraries,
|
||||
normally used by the loader,
|
||||
.Xr ld 1 .
|
||||
This table is named ``__.SYMDEF'' and is prepended to the archive.
|
||||
Files in the archive which are not executable and symbols which are
|
||||
uninteresting to the loader are ignored.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl t
|
||||
Set the modification time of the __.SYMDEF file.
|
||||
Some loaders (but not the
|
||||
.Fx
|
||||
one)
|
||||
compared this time with the modification time of the
|
||||
archive to verify that the table is up-to-date with respect to the
|
||||
archive.
|
||||
If the modification time has been changed without any change to the
|
||||
archive (for example, by a
|
||||
.Xr cp 1 ) ,
|
||||
the
|
||||
.Fl t
|
||||
option can be used to ``touch'' the modification time so that it
|
||||
appears that the table is up-to-date.
|
||||
This is also useful after using the
|
||||
.Fl t
|
||||
option of
|
||||
.Xr make 1 .
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width /tmp/ranlib.XXXXXX -compact
|
||||
.It Pa /tmp/ranlib.XXXXXX
|
||||
Temporary file names.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr ar 1 ,
|
||||
.Xr ld 1 ,
|
||||
.Xr lorder 1 ,
|
||||
.Xr nm 1 ,
|
||||
.Xr ranlib 5
|
||||
.Sh HISTORY
|
||||
A
|
||||
.Nm
|
||||
command appeared in
|
||||
.At v7 .
|
@ -1,71 +0,0 @@
|
||||
.\" Copyright (c) 1990, 1991, 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.
|
||||
.\"
|
||||
.\" @(#)ranlib.5.5 8.1 (Berkeley) 6/6/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 6, 1993
|
||||
.Dt RANLIB 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ranlib
|
||||
.Nd archive (library) table-of-contents format
|
||||
.Sh SYNOPSIS
|
||||
.In ranlib.h
|
||||
.Sh DESCRIPTION
|
||||
The archive table-of-contents command
|
||||
.Nm
|
||||
creates a table of contents for archives, containing object files, to
|
||||
be used by the link-editor
|
||||
.Xr ld 1 .
|
||||
It operates on archives created with the utility
|
||||
.Xr ar 1 .
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
function
|
||||
prepends a new file to the archive which has three separate parts.
|
||||
The first part is a standard archive header, which has a special name
|
||||
field, "__.SYMDEF".
|
||||
.Pp
|
||||
The second part is a ``long'' followed by a list of ranlib structures.
|
||||
The long is the size, in bytes, of the list of ranlib structures.
|
||||
Each of the ranlib structures consists of a zero based offset into the
|
||||
next section (a string table of symbols) and an offset from the beginning
|
||||
of the archive to the start of the archive file which defines the symbol.
|
||||
The actual number of ranlib structures is this number divided by the size
|
||||
of an individual ranlib structure.
|
||||
.Pp
|
||||
The third part is a ``long'' followed by a string table.
|
||||
The long is the size, in bytes of the string table.
|
||||
.Sh SEE ALSO
|
||||
.Xr ar 1 ,
|
||||
.Xr ranlib 1
|
@ -1,100 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static const char copyright[] =
|
||||
"@(#) Copyright (c) 1990, 1993\n\
|
||||
The Regents of the University of California. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)ranlib.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <dirent.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "archive.h"
|
||||
#include "extern.h"
|
||||
|
||||
static void usage(void);
|
||||
|
||||
CHDR chdr;
|
||||
u_int options; /* UNUSED -- keep open_archive happy */
|
||||
char *archive;
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int ch, eval, tflag;
|
||||
|
||||
tflag = 0;
|
||||
while ((ch = getopt(argc, argv, "t")) != -1)
|
||||
switch(ch) {
|
||||
case 't':
|
||||
tflag = 1;
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
usage();
|
||||
}
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (!*argv)
|
||||
usage();
|
||||
|
||||
for (eval = 0; (archive = *argv++); )
|
||||
eval |= tflag ? touch() : build();
|
||||
exit(eval);
|
||||
}
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
(void)fprintf(stderr, "usage: ranlib [-t] archive ...\n");
|
||||
exit(1);
|
||||
}
|
||||
|
@ -1,94 +0,0 @@
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Hugh Smith at The University of Guelph.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)touch.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <ar.h>
|
||||
#include <dirent.h>
|
||||
#include <err.h>
|
||||
#include <fcntl.h>
|
||||
#include <ranlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "archive.h"
|
||||
#include "extern.h"
|
||||
|
||||
void settime( int );
|
||||
int touch( void );
|
||||
|
||||
int
|
||||
touch(void)
|
||||
{
|
||||
int afd;
|
||||
|
||||
afd = open_archive(O_RDWR);
|
||||
|
||||
if (!get_arobj(afd) ||
|
||||
strncmp(RANLIBMAG, chdr.name, sizeof(RANLIBMAG) - 1)) {
|
||||
warnx("%s: no symbol table", archive);
|
||||
return(1);
|
||||
}
|
||||
settime(afd);
|
||||
close_archive(afd);
|
||||
return(0);
|
||||
}
|
||||
|
||||
void
|
||||
settime(int afd)
|
||||
{
|
||||
struct ar_hdr *hdr;
|
||||
off_t size;
|
||||
char buf[50];
|
||||
|
||||
size = SARMAG + sizeof(hdr->ar_name);
|
||||
if (lseek(afd, size, SEEK_SET) == (off_t)-1)
|
||||
error(archive);
|
||||
(void)sprintf(buf, "%-12ld", (long)time((time_t *)NULL) + RANLIBSKEW);
|
||||
if (write(afd, buf, sizeof(hdr->ar_date)) != sizeof(hdr->ar_date))
|
||||
error(archive);
|
||||
}
|
Loading…
Reference in New Issue
Block a user