Compare commits

...
1509 Commits
Author SHA1 Message Date
cvs2svn fcc0587080 This commit was manufactured by cvs2svn to create tag
'RELENG_2_2_2_RELEASE'.
1997-05-19 10:35:55 +00:00
Jordan K. Hubbard 8935d79733 Well, I've gotten enough "go for it!" responses from core that I guess
it's time to call this 2.2.2.
1997-05-16 09:03:14 +00:00
Jordan K. Hubbard 06187df476 Try and document some of the things added since 2.2.1, while I'm
thinking about it.
1997-05-16 08:15:43 +00:00
Jordan K. Hubbard b3f6e5e9f1 Fix cretinous typo and re-enable userconfig saving. 1997-05-16 07:46:59 +00:00
Masafumi Max NAKANE 214e0c9020 Merge from Rev.1.29: typo fix. 1997-05-15 09:03:18 +00:00
David Nugent cacb7e6814 YAMFC: Consider root-owned files 'secure' for non-root uids. 1997-05-15 06:08:44 +00:00
Tor Egge 270fd87cbb Merge from current: Don't send arp request for the ip address 0.0.0.0. 1997-05-14 16:45:42 +00:00
Doug Rabson 188d6589ff Fix merge problem in previous commit. 1997-05-14 12:06:34 +00:00
Jordan K. Hubbard 0e8064dff4 YAMFC (PR#3596) 1997-05-14 09:57:16 +00:00
Jordan K. Hubbard 442c3b7577 YAMFC (use correct name for mkisofs) 1997-05-14 09:39:47 +00:00
Doug Rabson 7877839a22 YAMFC. NFS fixes, make NFSv3 the default, some other fs fixes.
Reviewed by:	Hidetoshi Shimokawa <[email protected]>
1997-05-14 08:19:35 +00:00
Jordan K. Hubbard a53a472ff4 Update ftpmail reference. 1997-05-14 07:13:39 +00:00
Tor Egge fae3d6e480 Merge from current: improved bootp support for netboot.
Submitted by:	Luigi Rizzo <[email protected]>
1997-05-14 02:47:46 +00:00
Tor Egge e8e1bc02c0 Use same syntax as netboot for root and swap mounts.
Handle mount options.
Ignore T16 (swap server address) and T6 (DNS server).
1997-05-14 01:36:51 +00:00
Brian Somers dab7f20af9 YAMFC: Build pid_filename without a double slash.
Make ``Dial attempt'' diagnostics consistent.

       Reset lostCarrier when it has reached max.
       Suggested by:	Kevin Street <[email protected]>
1997-05-14 01:21:29 +00:00
Brian Somers bd0ed0fef9 YAMFC: Don't attempt to ioctl(modem...) when modem is
closed.  Just DownConnection().
1997-05-14 01:20:28 +00:00
Andrey A. Chernov 6a15d061c8 Merge memory leak fixes from -current 1997-05-14 00:17:50 +00:00
Andrey A. Chernov c8e5bc75de Remove 8859-1 extension of C locale, it breaks POSIX 1997-05-14 00:13:15 +00:00
Alexander Langer 3a32adb8f5 YAMFC: overallocation of _thread_fd_table from rev 1.5. 1997-05-13 23:57:49 +00:00
Brian Somers 17cea34886 YAMFC: Don't output extraneous tab
Submitted by:	Garance A Drosehn <[email protected]>
1997-05-13 20:54:08 +00:00
Brian Somers f533df855d YAMFC: Don't drop into the troff args after parsing -#.
Submitted by:    Garance A Drosehn <[email protected]>
1997-05-13 20:48:44 +00:00
Steve Price 9b56baa39f Merge a fix from current to correct an invalid return
value from the return command.  Closes PR# 3388 and
3587.
Memory jogged by: Stephen McKay <[email protected]>
1997-05-13 19:18:56 +00:00
John Polstra 80be3bf6bd Merge from main branch 1.54 -> 1.55 (partial): Use "gcc -shared" to
build shared libraries.
1997-05-13 17:27:21 +00:00
John Polstra ebd954b83d Merge from main branch 1.51 -> 1.52: Use "-pg" instead of "-p" for
profiling.
1997-05-13 16:18:58 +00:00
John Polstra 5bd7156a38 Merge from main branch 1.120 -> 1.121: process "lib/csu/i386" before
building any libraries.
1997-05-13 16:09:59 +00:00
John Polstra 1fac13be5b Merge from main branch 1.6 -> 1.8: Complain about plain "-p" when
linking, and support "gcc -shared" for building shared libraries.
1997-05-13 16:03:09 +00:00
Brian Somers 8719ea484d YAMFC: Correct the files section for tunX.pid and ttyXX.if 1997-05-13 09:32:17 +00:00
Jordan K. Hubbard 5a537073db Merge arp_proxyall knob from -current. 1997-05-13 08:27:49 +00:00
Satoshi Asami 1a1dd3927c Merge 1.4. 1997-05-13 07:28:01 +00:00
Satoshi Asami 60e815c4f0 Merge 1.10. 1997-05-13 06:29:09 +00:00
Satoshi Asami 52bb8d914e Merge 1.2 and 1.3. 1997-05-13 05:58:56 +00:00
Tor Egge 4216d60d32 Save/restore %ebx, %esi and %edi when calling bios routines.
Don't save/restore %ecx and %edx.
Reset segment limits when going to real mode.
Reviewed by:	phk (briefly)
1997-05-12 22:58:47 +00:00
Tor Egge f69cb5c9a0 Don't forget to copy the gateway to the new diskless structure. 1997-05-12 18:56:19 +00:00
Brian Somers 2969e2ae42 YAMFC: Bring pmdemand example in line with handbook and man
page examples.
       Updates for working LQR.
1997-05-12 14:08:52 +00:00
Brian Somers 88624191ca YAMFC: Correct sample file name. 1997-05-12 11:55:16 +00:00
Brian Somers 073ac28a4e YAMFC: Make uu_* const correct.
Suggested by:	joerg
1997-05-12 10:37:19 +00:00
KATO Takenori a96d1e75b7 Synchronize with sys/i386/conf/options.i386 and sys/i386/isa/wd.c
revisions 1.26.2.8 and 1.119.2.5, respectively.

Submitted by:	H. Nokubi <[email protected]>
1997-05-12 09:13:15 +00:00
KATO Takenori e31f41339e Synchronize with sys/i386/isa/clock.c revision 1.72.2.4.
Submitted by:	H. Nokubi <[email protected]>
1997-05-12 08:43:08 +00:00
Andrey A. Chernov 19ae55f383 Merge cosmtique changes from -current 1997-05-12 02:42:20 +00:00
Masafumi Max NAKANE 211afe2cd0 Merge the typo fix from -current. 1997-05-11 23:47:35 +00:00
Paul Traina a604799d09 Update the manual page to call more attention to the probe override flags. 1997-05-11 18:28:08 +00:00
Tor Egge 5337d7a2a5 Bring in some kernel bootp support. This removes the need for netboot
to fill in the nfs_diskless structure, at the cost of some kernel
bloat. The advantage is that this code works on a wider range of
network adapters than netboot. Several new kernel options are
documented in LINT.
Obtained from: parts of the code comes from NetBSD.
1997-05-11 18:05:39 +00:00
Bruce Evans 7fa52a6ce5 YAMFC (1.17: fixed null pointer panic, etc. in devtotty()).
PR:	1687, 2324, 3004
1997-05-11 13:20:57 +00:00
Brian Somers af738435af Use uu_lock et al from libutil. 1997-05-11 12:58:58 +00:00
Bruce Evans a5fb94c9f9 YAMFC (1.163: fixed "timeout table full" panics under weird conditions). 1997-05-11 12:57:38 +00:00
Bruce Evans 2d0ae92a99 YAMFC (1.25: avoid division by 0 in check_part()). 1997-05-11 12:48:33 +00:00
Brian Somers ec6ceacea2 YAMFC: Create ttyXX.if and tunX.pid irrespective of
whether we're -dedicated.

Required by:    David Nugent <[email protected]>
1997-05-11 10:25:08 +00:00
David Nugent 0509eb8c40 MFC: #include <sys/types.h> in synopsis. 1997-05-11 08:52:08 +00:00
David Nugent 5708147189 Bugfix: put back foolishly moved variable initialisation in arrayize()
that caused login_getcaplist() to trap.
1997-05-11 08:06:10 +00:00
Kazutaka YOKOTA 084f6a26f3 YAMFC Brought in fixes in 1.212, 1.213, 1.214. 1997-05-11 06:09:02 +00:00
David Nugent e2708d8dab MFC: getty enhancements including modem/chat handling and hw= gettytab
capability for forcing crtscts.
1997-05-11 05:28:54 +00:00
David Nugent 4e66f8c158 MFC: MAP_FAILED was not declared (but was documented in manpage). 1997-05-11 04:41:23 +00:00
Jordan K. Hubbard 439e13cd0d An updated Italian keymap.
Submitted-By: Gianmarco Giovannelli <[email protected]>
1997-05-10 23:03:08 +00:00
David Nugent 49f41c222b MFC: Make su login.conf aware. 1997-05-10 22:07:58 +00:00
David Nugent a2cd26dd26 MFC: login.conf support.
[only remaining difference from -current is reserved port handling]
1997-05-10 21:41:51 +00:00
David Nugent 111698cd41 MFC: login.conf awareness.
[only difference is now the random number generation in -current]
1997-05-10 21:32:33 +00:00
David Nugent 31f3e70ec1 MFC: Add login.conf support. 1997-05-10 21:20:14 +00:00
David Nugent 2d390ebe39 [Branch is RELENG_2_2]
MFC: Add MLINKS for isdialuptty.3 isnetworktty.3.
1997-05-10 21:16:37 +00:00
David Nugent c6d822bd7e MFC: Add support for tty-group field in struct ttyent, and hooks for
isnetworktty() and isdialuptty().
1997-05-10 21:10:24 +00:00
David Nugent 7227eaef88 Merge from current, support for tty-group field in struct ttyent,
add prototypes for isdialuptty() and isnetworktty().
1997-05-10 20:48:55 +00:00
David Nugent 1bc6dd3cb1 Bring in limits(1) from -current. 1997-05-10 20:04:20 +00:00
David Nugent 6151498945 YAMFC: Adds login.conf support. 1997-05-10 19:57:55 +00:00
David Nugent e28f66ee9c Merge from current: adds login.conf support & bugfix mmap failure. 1997-05-10 19:48:13 +00:00
David Nugent ccd4f86e06 Brings in login.conf, uucplock to 2.2 branch.
Bumps sharedlib version to 2.2, in line with current (since they are
now identical in both branches).
1997-05-10 19:33:07 +00:00
cvs2svn d092a4ec45 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-05-10 19:00:59 +00:00
Paul Traina 13b226b3a7 MFH: fix core dump on 'A' 1997-05-10 17:14:22 +00:00
Brian Somers 45d935933c YAMFC: Refuse to negotiate HISADDR of 0.0.0.0 (NAK it)
Submitted by:	NAKAMURA Motonori <[email protected]>
1997-05-10 15:39:29 +00:00
Brian Somers 91f457d5d9 Pay attention to what Bruce actually says
rather than what I think he's going to say.
(Now undoing the last timerval change)

Really suggested by:	bde
1997-05-10 06:04:23 +00:00
Brian Somers f1b2470e25 YAMFC: Sync setitimer behaviour with the
documentation.

Suggested by:	bde & ache
1997-05-10 05:34:36 +00:00
Brian Somers a8029cb9a2 YAMFC: Ouch. This was dying to cause problems !
Luckily the side-effects were what was
       intended.
1997-05-10 03:45:51 +00:00
Brian Somers e194d8cb90 YAMFC: Add a ttyXX.if file in /var/run that points to
the tunX.pid file.  Change the ppp.tunX.pid name
       to tunX.pid

Requested by:	Daniel O Callaghan <[email protected]>
1997-05-10 03:42:36 +00:00
Brian Somers 05a025dddb YAMFC: Bring in Eivind's tidy-up.
Submitted by:	eivind
1997-05-10 01:24:42 +00:00
Brian Somers 789eb1f255 YAMFC: Don't reconnect after close command. 1997-05-09 23:36:27 +00:00
Brian Somers 221b4dcfb8 YAMFC: Allow filters with remote printing. 1997-05-09 23:14:53 +00:00
Brian Somers a6cdc48471 YAMFC: The only bits missing from 2.2 now are
the urandomdev stuff and the uu_lock stuff

This means:

o   Increase maximum chat args from 20 to 40,
    stop scribbling when the limit is hit.
o   Allow mixed case commands.
o   Allow HISADDR, MYADDR, ALL and INTERFACE
    in mixed case.
o   Add reconnect command.
o   Add redial next timer (for next number redial).
o   Change logfile name to ppp.tunX.log.
o   Discard HDLC frames with less than two bytes.
o   Make background mode exit on loss of carrier.
o   Initialise lqrsendcnt for each connection.
o   Initialise VarLocalAuth for each connection.
o   Exit on failure to open the log file.
o   Ignore SIGPIPE.
o   Select() on the correct number of fds.
o   Only compress TCP packets.
o   Update documentation.
o   Bring in various minor fixes from -current.
1997-05-09 17:36:35 +00:00
Joerg Wunsch 8e9239893a YAMFC (rev 1.13, ensure string termination) 1997-05-09 16:02:47 +00:00
Jordan K. Hubbard fdef63144f Run chflags before upgrading bindist. This fixes problems with an old, bogus
ld.so being used after an upgrade.
1997-05-09 07:43:55 +00:00
Joerg Wunsch 0e0be1b309 YAMFC (rev 1.11) 1997-05-08 15:32:14 +00:00
Joerg Wunsch fadc189a5b YAMFC (rev 1.9) 1997-05-08 15:29:48 +00:00
Joerg Wunsch 0a51b1ff1f YAMFC: rev 1.6, add explanation about secondary setup. 1997-05-08 15:25:32 +00:00
Satoshi Asami 1ac6f2d09a Merge Bruce's de-bogosifying chagnes from -current (1.24). 1997-05-08 07:11:32 +00:00
Brian Somers aea12503a4 YAMFC: Fix HISADDR usage & correct loopback routes.
PR:		3114
Submitted by:	Kenneth R. Westerback <[email protected]>
1997-05-08 01:51:50 +00:00
Brian Somers f6d39af95e YAMFC -detach documentation. 1997-05-07 23:57:42 +00:00
Joerg Wunsch 114cd4e652 YAMFC: rev 1.16, hide kernel parts inside KERNEL. 1997-05-07 13:23:42 +00:00
Joerg Wunsch 30343e0985 Merge rev 1.17 (added CDIOREADTOCENTRY) now that worm.c does already
(preliminarily) reference it.
1997-05-07 08:28:05 +00:00
Satoshi Asami 0921567ffe Merge Bruce's malloc() declaration eliminations from -current. 1997-05-07 05:24:36 +00:00
Satoshi Asami bc7110d7e3 Merge Bruce's malloc() declaration eliminations from -current. 1997-05-07 05:19:24 +00:00
Satoshi Asami 4d8d2df850 Merge 1.2 (remove bogus malloc() decl). People, please merge these
trivial changes by yourself!
1997-05-07 04:16:43 +00:00
Joerg Wunsch c7d8b0e516 YAMFC: rev 1.6, fix error mishandling 1997-05-06 20:54:50 +00:00
Alexander Langer 76275a6104 Merge from -current: create default rule with IP_FW_F_IN | IP_FW_F_OUT. 1997-05-06 02:21:28 +00:00
Joerg Wunsch 4dd24a5a6c YAMFC: rev 1.37, implement the CDIO*TOC* ioctl commands. 1997-05-05 13:35:51 +00:00
KATO Takenori ad2126e920 Extended copyright of PC-98 to 1997. 1997-05-05 13:24:16 +00:00
Jordan K. Hubbard 70b2c8e405 C++ safety. 1997-05-05 11:19:11 +00:00
Jordan K. Hubbard eda11af7c7 Merge r1.8 from HEAD 1997-05-05 09:33:13 +00:00
Jordan K. Hubbard af8bf61211 Fix looping package extractor. 1997-05-05 08:38:30 +00:00
Jordan K. Hubbard f49fbf7d98 YAMFC 1997-05-05 07:09:05 +00:00
Jordan K. Hubbard 12ec7eeec5 Update to rc.conf routing glue (YAMFC) 1997-05-05 06:41:36 +00:00
Paul Traina 9f05ed9b32 Merge from head: new variable support 1997-05-05 05:17:50 +00:00
Andreas Klemm 226ec65268 backed out my previous change, re-enabled:
. /etc/rc.${arch}

PR:
Reviewed by:
Submitted by:
Obtained from:	Bruce
1997-05-04 22:35:26 +00:00
Alexander Langer df2b319ff2 Extended copyright to 1997. Closes PR#2705. 1997-05-04 21:10:54 +00:00
John Polstra 47c9256192 Merge from main branch 1.7 -> 1.8: Make it safe to link c++rt0.o
into all shared libraries.
1997-05-04 19:52:38 +00:00
Andreas Klemm 3555f7305a merged etc.i386/rc.i386 fix into RELENG_2_2
PR:
Reviewed by:
Submitted by:
Obtained from:
1997-05-04 13:13:10 +00:00
Jordan K. Hubbard 2649070a45 Don't --exclude CVS when building the src distributions. It's
actually a lot more convenient to have this information around now
than it is to save a few measly megs (if even that much) of space.
1997-05-04 01:29:08 +00:00
Joerg Wunsch 8508495309 YAMFC: rev 1.85, add the Archive 4586NP tape changer. 1997-05-03 22:24:50 +00:00
Masafumi Max NAKANE f5d0795a1e Merge from current: `appears'' -> `appeared'' in the HISTORY section. 1997-05-03 21:10:30 +00:00
Masafumi Max NAKANE 3f9969c610 Merge from current: add md5(1) to the SEE ALSO section. 1997-05-03 20:50:59 +00:00
Jordan K. Hubbard 655820bbe0 Merge 1.30 from -current. 1997-05-03 20:16:25 +00:00
Peter Wemm 18bf0ef63c YAMFC: we already recognise the -h flag (work on symlinks, not the target)
and now that lchown() exists, implement -h fully.
1997-05-03 11:28:33 +00:00
Peter Wemm af9d21a285 YAMFC: lchown() syscall and man page 1997-05-03 11:22:34 +00:00
Jordan K. Hubbard d3aa551242 Turn tickadj off by default now that it's a separate knob.
Reminded-By: Wolfgang Helbig <[email protected]>
1997-05-03 11:20:42 +00:00
Peter Wemm 7586373a05 YAMFC: prototype lchown() 1997-05-03 11:13:25 +00:00
Peter Wemm 14c6b9ff03 Regenerate 1997-05-03 11:11:32 +00:00
Peter Wemm ebfce84390 YAMFC: add lchown() syscall 1997-05-03 11:09:38 +00:00
Peter Wemm 49673092dc YAMFC: for stat() and lstat(), do not use the directory permissions on
symlinks, they exist in their own right.
1997-05-03 11:08:39 +00:00
Peter Wemm b52c5b8a0f Disable overwriting the real owner of symlinks with the directory's owner. 1997-05-03 11:06:48 +00:00
Masafumi Max NAKANE 7621d88604 Typo fix.
SUbmitted by:	Josh Gilliam <[email protected]>
1997-05-03 00:13:28 +00:00
Daniel O'Callaghan 066914d08c Bring in ppp.{deny,shells} handling from -current.
Bring in /var/run/ttyXX.if creation from -current.
1997-05-02 21:51:46 +00:00
Gary Jennejohn f6a94edde0 YAMFC
delete kcorelow.c since it didn't produce any code and broke init.c

remove kcorelow.c from XSRCS in the Makefile
1997-05-02 11:26:03 +00:00
Jordan K. Hubbard 84862e63a7 Actually, a mail group probably isn't a bad idea in any case. Give it GID 6. 1997-05-02 00:03:37 +00:00
Jordan K. Hubbard ebb640e37b DOH! I "corrected" the spelling in exactly the opposite way
I meant to.  Urk.  Fix.
Reminded by:	wollman
1997-05-01 23:42:19 +00:00
Jordan K. Hubbard 8b8e9060b1 YAMFC 1997-05-01 20:28:48 +00:00
Jordan K. Hubbard 274d5fa01e Source rc.firewall, don't execute it (so that variables get passed in
properly).  Closes PR#3456

Submitted-By: Christopher Masto <[email protected]>
1997-05-01 20:02:58 +00:00
Jordan K. Hubbard 26c25ec91e Whoops!! Add global to Makefile here too.
Pointed-out-By: Chris Timmons <[email protected]>
1997-05-01 17:11:42 +00:00
Paul Traina bbed0325d9 Bring Peter's changes into 2.2's gdb 1997-05-01 16:34:46 +00:00
Paul Traina b30249d957 Figured out why gdb wasn't finding init.c -- I feel like such a fool.
I forgot to do a make depend after moving the file.  You'll need to do
so too.

Makefile now uses standard rules for autogened files.
1997-05-01 16:17:57 +00:00
Jordan K. Hubbard 83a04e4fb0 Merge 1.11 from -current. 1997-05-01 06:09:38 +00:00
Jordan K. Hubbard b67946a431 Shut up the uprintf() on init - it only screws up the console
output.
1997-05-01 06:07:32 +00:00
Jordan K. Hubbard 31b5435674 YAMF22 1997-05-01 06:01:35 +00:00
Jordan K. Hubbard 6d26efa8ef Be a little more descriptive about what daemons we're starting.
Submitted-By: "Philippe Charnier" <[email protected]>
1997-05-01 04:41:04 +00:00
Jordan K. Hubbard 9537a8b04d Correct bogosity with tcp_extensions clause.
Submitted-By: "Philippe Charnier" <[email protected]>
1997-05-01 04:37:10 +00:00
Paul Traina e2b601e6c3 Merge cleanup from -current 1997-05-01 00:27:48 +00:00
Paul Traina 6b5bc93a28 Add in ser-tcp.c for debugging over tcp again (sigh).
Make init.c auto-generated.
1997-05-01 00:13:56 +00:00
Satoshi Asami 46c6c6d2e1 Bump RELDATE by 1 (to 221002). We now have top in RELENG_2_2. 1997-04-30 23:42:22 +00:00
Paul Traina 151c42b44e Merge from head 1997-04-30 18:41:22 +00:00
Satoshi Asami 0fa58b56ec Merge 1.257. 1997-04-30 03:16:20 +00:00
Mike Smith 435c642891 YAMFC - use local copy of dlfcn.h
Submitted by:	Terry Lambert <[email protected]>
1997-04-30 03:13:33 +00:00
David Nugent 4414763f4d Merge from -current: virtual hosting capability. 1997-04-29 12:55:33 +00:00
Doug Rabson db5c241aba YAMFC (hesiod support). 1997-04-29 10:11:58 +00:00
Jordan K. Hubbard 016d972ea2 Yikes! Fix a dyslexic trinary operator. 1997-04-29 09:14:05 +00:00
John Polstra 9e0a20e6bd Merge from main branch 1.10 -> 1.11: bugfix for pattern with trailing "*"
and (FNM_PATHNAME | FNM_LEADING_DIR).
1997-04-29 03:27:21 +00:00
John Polstra 5d8ff3922a Merge from main branch 1.10 -> 1.11: mark weak symbols as external. 1997-04-29 02:16:51 +00:00
Stefan Eßer 8ba175812b Merge in from -current: Put #define of CMD640 option into opt_wd.h 1997-04-28 19:33:20 +00:00
Jordan K. Hubbard a13546d7e7 YAMFC (for once). 1997-04-28 10:34:42 +00:00
Jordan K. Hubbard 98bbf54ffa Put all arguments in quotes. 1997-04-28 10:14:28 +00:00
Jordan K. Hubbard d55382bcbc Add support for keybell, correct linux entry. 1997-04-28 10:07:00 +00:00
Jordan K. Hubbard eeee68fd82 Back out previous R/W root change. It didn't work and it's better
done in MFS's mountroot, which is now done.
1997-04-28 09:17:33 +00:00
Jordan K. Hubbard 16bc8f3c7b lpd -> lpd_enable
Pointed-On-By: [email protected]
1997-04-28 07:34:40 +00:00
Jordan K. Hubbard d11af0bfda Mount MFS root read/write (I think - we'll have to check :).
Frob around the CDE setup a little more since we've found it's so
pathological to the Xaccel install.
1997-04-28 06:22:15 +00:00
Jordan K. Hubbard 0bd0bd9c82 Move apm configuration to rc.i386 where it belongs.
Fix the rndcontrol stuff (it can't possibly have ever worked :-)
1997-04-28 05:50:13 +00:00
Mike Smith 2ce04713fe Merge from current; always include PROT_READ in linux_mmap(). 1997-04-28 02:55:10 +00:00
David Nugent f05c7cc1e6 Add top from -current. 1997-04-27 22:34:29 +00:00
Alexander Langer 26daf24714 Merge from -current: disallow debugger attachment when securelevel > 0. 1997-04-27 21:33:31 +00:00
Stephen McKay b4f05001f3 Merge from rev 1.80: Prevent stat clock wedging. 1997-04-27 13:44:19 +00:00
Jordan K. Hubbard eea7c212a5 tickadj is useful even if ntpdate isn't selected (clock drift isn't
isolated to network time users) so make it a fully independant knob.
Suggested-By: Richard Crook <[email protected]>
1997-04-27 11:13:39 +00:00
Kazutaka YOKOTA 8f55fa3b8b YAMFC. Incorporates fixes in 1.211. 1997-04-27 09:09:49 +00:00
David Nugent e6874927ec Mandoc fix. 1997-04-27 08:25:42 +00:00
David Nugent c109bf1446 Allow @group entries in /etc/ftpusers and /etc/ftpchroot to (respectively)
deny and chroot ftp access to entire groups.
1997-04-27 08:19:50 +00:00
David Nugent 1cbbbc10fc Marge internal ls changes from -current. 1997-04-26 23:39:31 +00:00
Jordan K. Hubbard f85c49b786 Bring in rc reorganizational changes. I'm bringing them into 2.2
first rather than 3.0 because, ironically, I have every confidence that
they run in 2.2 but not in 3.0 yet.  3.0 commits will follow just as I've
finished an inventory for any new knobs in -current which need accomodation.
In any case, it's good to get them into 2.2 early because there is going
to be a doc hit for this (all the references to sysconfig) and I'd just
as soon start getting people used to the new files ASAP rather than
prolonging the pain any more than necessary.
1997-04-26 22:39:36 +00:00
Paul Traina b9bdf5b8cb Merge from head: Activate gdbserver and gdbreplay 1997-04-26 17:34:52 +00:00
Masafumi Max NAKANE b749b3bb3e Merge the typo fix from -current. 1997-04-26 05:10:45 +00:00
Justin T. Gibbs b57e894043 Sync with current. 1997-04-26 05:05:00 +00:00
Jordan K. Hubbard 971d1e6fff Pick better values for fixit and MFS inode counts. 1997-04-26 03:52:40 +00:00
Paul Traina 3d337f13fc Merge from head - secure mode fixes 1997-04-26 00:05:19 +00:00
cvs2svn 2412cdd3e9 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-04-25 22:25:51 +00:00
Jordan K. Hubbard 61b481c7f4 Merge Joerg's bootstrap support in from -current. 1997-04-25 11:42:09 +00:00
Jordan K. Hubbard 9230146b39 YAMFC 1997-04-25 09:12:47 +00:00
Peter Wemm 82f4e70650 YAMFC rev 1.83, copyin export net mask to correct variable 1997-04-25 06:53:07 +00:00
Justin T. Gibbs aba290e1d7 Sync with current. 1997-04-24 16:53:17 +00:00
Stefan Eßer 3d76eec03d Merge in rev 1.14 from -current: Definition of PCI_SUBID_REG2 1997-04-24 08:05:15 +00:00
Stefan Eßer 4c3d4253f3 Merge in rev. 1.69 from -current (header type 2 support). 1997-04-23 20:25:04 +00:00
KATO Takenori 57133a9ade Merge PC-98 code into i386/isa/ft.c. 1997-04-23 13:22:07 +00:00
Mike Smith c9335a049c Merge from -current: don't call getnetbyname() on a netmask. 1997-04-23 11:04:58 +00:00
Jordan K. Hubbard 53b1134004 Turn off userconfig saving for now; something has changed in kernel-land
(since this code certainly hasn't for awhile) which breaks it.
1997-04-23 08:16:45 +00:00
David Greenman 7bbdef777c Merged from -current: better # of pv entry calculation. Fixes out of KVM
panic on large memory machines.
1997-04-23 02:20:06 +00:00
David Greenman c1364f7838 Partial merge from -current: check received packet length, a couple of
performance optimizations, and don't treat if_bpf as a pointer.
1997-04-23 01:49:12 +00:00
Jordan K. Hubbard 13e2fc0a0f Whups! Missed one. 1997-04-22 21:13:34 +00:00
Jordan K. Hubbard a76e875480 Sync with -current. 1997-04-22 18:35:46 +00:00
cvs2svn 96537300fa This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-04-22 10:24:30 +00:00
Peter Wemm c80009a4e9 Merge from current - bandaid for kernel backtracing without full symbols. 1997-04-21 15:12:46 +00:00
KATO Takenori 198bfce040 Synchronize with sys/i386/conf/files.i386 revision 1.141.2.12. 1997-04-21 12:56:02 +00:00
KATO Takenori 1031171ee4 Synchronize with sys/i386/conf/GENERIC revision up to 1.77.2.8. 1997-04-21 12:52:17 +00:00
Jordan K. Hubbard 03081c7928 Sync from -current; global tag support (it was actually tested in 2.2)
and some miscellaneous fixes.  Also bring in some fixes to the explanatory
text in bsd.port.mk since Satoshi never responded to my submission (and
around here, that == yes :-).
1997-04-20 20:16:34 +00:00
Jordan K. Hubbard d3d6a8fb1d Tweak more docs and remove annoying RELEASETAG value (since you
can now build 3.0 releases from 2.2, this should NOT be set here).
1997-04-20 19:30:11 +00:00
Jordan K. Hubbard b9bcff08c0 Update to match current situation. 1997-04-20 19:18:32 +00:00
KATO Takenori b1df7f9a19 YAMFC (revision 1.61 and 1.62; recognize Allied Telesis CenterCOM
LA100-PCI and Accton EN1207-TX).
1997-04-20 05:21:34 +00:00
Jordan K. Hubbard 08fe4eb387 Install CDE first since it contains the X environment as well. 1997-04-19 23:54:46 +00:00
Jordan K. Hubbard 2b7895902e Clear the screen in a few strategic places. 1997-04-19 23:26:52 +00:00
Jordan K. Hubbard 024b62e1bb Whoops! Pass in the signal we caught and don't just print random
stack garbage for the value.
1997-04-19 21:07:44 +00:00
Jordan K. Hubbard 3e0dd5e7df Xaccel 3.1 requires the compat21 distribution. 1997-04-19 14:46:08 +00:00
Jordan K. Hubbard 13abd41167 Don't risk looping on a signal - longjmp out instead and try to
save things gracefully before dying.
1997-04-19 06:55:10 +00:00
John Polstra cd252574b1 Merge from main branch 1.9 -> 1.10: Support the ".p2align" directive. 1997-04-18 17:10:45 +00:00
Justin T. Gibbs 1b4569257b Sync with current. 1997-04-18 16:38:36 +00:00
Nate Williams 6440f26160 - Moved the flags in npx0 before the vector declaration, else config
blows chunks.

Pointed out by:	bde
1997-04-18 14:06:20 +00:00
John-Mark Gurney 3192c775e6 YAMFC: fix up man page 1997-04-18 11:14:30 +00:00
David Nugent 6f63b1f2b2 YAMFC. 1997-04-18 04:48:59 +00:00
David Greenman ccba9c3f37 Fixed two bugs that came into kern_exec just after the 2.2.1 release:
1) I wasn't assuring that the file size was large enough for the data
   to be contained in a FS block. Calling bread for a block when the
   data is in a fragment causes BAD things to happen, including file
   corruption.
2) I was not passing in a residual pointer to vn_rdwr(), and this
   caused "slow" mode image header reads that were less than the
   page size to fail with EIO. I now get the residual and properly
   zero the tail of the image header buffer, too.
1997-04-18 02:37:08 +00:00
John Polstra caf9e52f18 Merge from main branch 1.19 -> 1.20: Don't pad the "-c" command
field if it is the last field on the line.
1997-04-16 16:10:48 +00:00
KATO Takenori 29bd2e6e45 YAMFC (revision 1.79; use CPU reset port on PC-98). 1997-04-16 12:27:03 +00:00
Jordan K. Hubbard c37590dda2 Make one vn device in "all" rule. 1997-04-15 18:07:06 +00:00
Jordan K. Hubbard 6d3e1e88a4 Add 1 vn device to this by default. The reason is so that I can tell
people how to add swap files without also having to go through the
whole "well, first you gotta add a vn device" song and dance.
1997-04-15 18:05:59 +00:00
Jordan K. Hubbard dc6d5fe517 Set flags to 0x1 on npx0 by default - too damn many people are being
bitten by the Pentium bcopy() stuff right now and I really don't want to
be answering this question for 2.2.x also.
1997-04-15 17:37:23 +00:00
Satoshi Asami a94b094efb Merge rev. 1.255 from -current. 1997-04-15 08:38:36 +00:00
Satoshi Asami 3d8fed90ed Merge rev. 1.47 from -current. 1997-04-15 08:26:19 +00:00
John-Mark Gurney 9b542d5380 YAMFC: fix some typos, and other minor clean-up.. 1997-04-15 08:12:11 +00:00
John-Mark Gurney deeacf7682 YAMFC: fix some typos, and minor clean-up's
(Note that even though the first message had a Branch: line, it really
did go to head)
1997-04-15 08:09:11 +00:00
John-Mark Gurney f932f046b2 YAMFC: fix typos 1997-04-15 08:04:48 +00:00
Satoshi Asami c2efd23f3a Bump reldate to 221001 now that we are now a little past 2.2.1R and
have texinfo-3.9.  (We probably should have changed it to 221000 for
2.2.1 release, but hindsight is always 20/20. ;)

Whenever a major component is brought in from -current, please add 1
to this number.
1997-04-15 05:29:32 +00:00
Jordan K. Hubbard 4e4245448f fix and feature add for asc driver (see PR#3268 for details).
Submitted-By: Luigi Rizzo <[email protected]>
Really-Should-By-A-Committer-By-This-Point: Luigi Rizzo [:-)]
1997-04-14 16:41:21 +00:00
Justin T. Gibbs 2e8ac4e109 Remove reference to dead ix man page. 1997-04-14 15:45:50 +00:00
Justin T. Gibbs e7668b2043 Sync with current 1997-04-14 02:31:44 +00:00
Justin T. Gibbs e39e17dfa0 Sync with current: ie driver now understands the EtherExpress16 1997-04-14 00:51:23 +00:00
Justin T. Gibbs c0e6bef5c9 Sync with current: ie driver understands Intel EtherExpress16 1997-04-14 00:48:48 +00:00
Joerg Wunsch 055d577dc9 YAMFC: rev 1.4, fix the $@ macro. 1997-04-13 17:52:24 +00:00
Jordan K. Hubbard e07824536f Don't put ifconfig_ppp0 lines in /etc/sysconfig if you're using the ppp
install.  Evil will result.
1997-04-13 05:39:42 +00:00
Jordan K. Hubbard c063e3aedc XiG now distributes CDE 1.1 with a full X11R6.1 environment; make
more sweeping changes to the USE_XIG_ENVIRONMENT variable handling
to deal with this.
1997-04-12 16:11:21 +00:00
David E. O'Brien 1f199dffd0 Merge from rev 1.4 (EOF => -1) and rev 1.5 (fix usage()). 1997-04-11 20:01:53 +00:00
Satoshi Asami 65892ed949 (I'm not sure why this didn't get committed last time....)
Merge in texinfo changes from -current to use src/contrib/texinfo.
1997-04-11 17:54:01 +00:00
Satoshi Asami 77f9139893 Merge in from -current all the changes needed to make world with the
latest texinfo.
1997-04-11 16:58:46 +00:00
Satoshi Asami 67a61d68a0 Bring in latest texinfo from -current. Note src/contrib/texinfo
is already tagged into RELENG_2_2.
1997-04-11 16:54:09 +00:00
Satoshi Asami ad8f99bb3a Bring in latest libreadline from -current. Note src/contrib/libreadline
is already tagged into RELENG_2_2.
1997-04-11 16:44:10 +00:00
Brian Somers 9c89b851c9 YAMFC: Update FAQ with sysmouse section, add comment before
mousedtype setting in sysconfig.
1997-04-11 15:45:35 +00:00
David E. O'Brien 65d9ba4eb1 Merge revision 1.4 from -CURRENT. 1997-04-11 10:37:41 +00:00
KATO Takenori a29bf0ab58 Synchronize with sys/i386/isa/syscons.c revision 1.182.2.16. 1997-04-11 07:44:39 +00:00
Jordan K. Hubbard 86f23c4237 Whups! This commit got lost somehow, no wonder pds was confused! :-} 1997-04-10 21:28:16 +00:00
Bill Paul 7aca2d6d19 Merge from -current: sanity checks on domain names. 1997-04-10 20:29:35 +00:00
Justin T. Gibbs bf2db90612 Sync with current. 1997-04-10 19:26:09 +00:00
Bill Paul fee7bfeffb Merge from -current (don't process bogus domain names). 1997-04-10 14:18:48 +00:00
Bill Paul ecd64598ee Merge sanity checks from -current to 2.2 branch.
Oh, forgot to mention: also removed trailing semicolons from
instances of the YPXFR_RETURN() macro. The last line in the macro
already ends with a semicolon.
1997-04-10 14:16:19 +00:00
Satoshi Asami 11adaa2b2e Merge 1.43 -> 1.44 delta from -current so RELENG_2_2 users get info
about the packages they need.
1997-04-10 13:56:43 +00:00
Bill Paul 8a1209f238 Merge from -current: add extra paranoia test. 1997-04-10 13:53:31 +00:00
Kazutaka YOKOTA 67068fe3e8 Merge recent keyboard related fixes from -current (v1.207, v1.209). 1997-04-10 12:39:08 +00:00
Mike Pritchard ddb6133958 YAMFC: Typo police. 1997-04-09 23:06:21 +00:00
Guido van Rooij 647edf6222 From current: Fix mountd so the privport stuff is backwards compatible
with older systems. Add sysconfig variable to control the privport
stuff.
1997-04-09 20:31:33 +00:00
Jordan K. Hubbard 7fe4d17490 NO_PORTS -> NOPORTS
Will-Make-Happy: msmith
1997-04-09 09:22:02 +00:00
Mike Pritchard 4ef5cab369 YAMFC: document wakeup_one(). 1997-04-09 05:40:58 +00:00
Mike Pritchard 9c8744932e YAMFC: document non-getopt ways of removing file names that begin
with a dash.
1997-04-09 05:05:46 +00:00
Mike Pritchard 09bc20bed2 YAMFC: improve the wording in the NOTES section. 1997-04-08 20:43:37 +00:00
KATO Takenori 8771f74895 YAMFC (added lnc driver). 1997-04-08 12:03:26 +00:00
KATO Takenori c99311c81d YAMFC (enables lnc driver on PC-98). 1997-04-08 11:00:54 +00:00
KATO Takenori 1b698c4f58 Synchronize with sys/i386/conf/files.i386 revision 1.141.2.11. 1997-04-08 10:56:12 +00:00
Brian Somers 54e3ff158e YAMFC. Add null-modem example 1997-04-07 20:22:04 +00:00
Justin T. Gibbs 98f6d1b8ba sync with current 1997-04-07 18:33:10 +00:00
Guido van Rooij 24ad92549c From -current: fix race
Obtained from: Keith Bostic
1997-04-07 18:03:25 +00:00
Jordan K. Hubbard 3a75219a88 OK, now that I've gotten dtinstall to actually work, I can
see that it wants to be more interactive (grrr, the person who
wrote dtinstall never counted on RockRidge translation files being
added!).
1997-04-07 13:20:28 +00:00
Jordan K. Hubbard 6698fe083f Run the Xinstall over on 2nd screen - I changed my mind about
wanting to see its output on the 1st.
1997-04-07 05:59:23 +00:00
Jordan K. Hubbard 8dfac1c97b Ack. Typo police. 1997-04-07 03:02:39 +00:00
Jordan K. Hubbard 9d7c73393b Whups! Forgot that CDE install script expects $CWD to be the CDE install
directory or it will fall over.
1997-04-07 01:11:51 +00:00
Jordan K. Hubbard a007f2ea7a Correct error with AcceleratedX setup & add support for installing the
CDE desktop software.
1997-04-07 01:07:40 +00:00
Jordan K. Hubbard faa363b6ef Update last modified date. 1997-04-06 19:46:58 +00:00
Jordan K. Hubbard 2f4dff0ed1 Add options for compiling sysinstall for an AcceleratedX environment.
This just handles the server for now - the CDE extentions come in the
next pass.
1997-04-06 18:00:00 +00:00
Justin T. Gibbs 0f2f502705 Sync with current. 1997-04-05 22:04:28 +00:00
Justin T. Gibbs dd15aae6d7 Sync with current. 1997-04-05 21:41:49 +00:00
Poul-Henning Kamp 20bba48b3d YAMFC (recognize ZNYX314 cards better) 1997-04-05 08:00:46 +00:00
Jordan K. Hubbard d8bd056aaa Close PR#3192 (just in time for the CD!); fixes bad package run deps
list.
1997-04-05 07:07:55 +00:00
Jordan K. Hubbard cabf9e56a5 YAMFC 1997-04-04 22:13:36 +00:00
Justin T. Gibbs 8d75a27388 Sync with current: Add 1ms delay in XS_BUSY processing. 1997-04-04 19:50:04 +00:00
Justin T. Gibbs 4706824e3f Sync with current. 1997-04-04 19:49:39 +00:00
KATO Takenori ced2724a6c Merged from current (revision 1.4). 1997-04-04 16:48:12 +00:00
David Greenman d86aa8b7c9 From -current (1.56): free cn buffer only once. 1997-04-04 07:30:44 +00:00
Justin T. Gibbs 463d56f4bc Sync with current 1997-04-04 04:35:55 +00:00
Justin T. Gibbs 4bc69d1149 Sync with current: Fixup aic7xxx assembler clean rules 1997-04-04 04:35:46 +00:00
David Greenman 363b506043 Merged from -current: Bruce's fixes. 1997-04-04 04:18:20 +00:00
David Greenman d01342629b Sort of from -current: lose the vnode lock on a permissions failure. 1997-04-04 01:32:09 +00:00
Mike Pritchard 282fd6c84c YAMFC: typo fix. 1997-04-04 01:26:08 +00:00
Mike Pritchard 614317b095 YAMFC: document the -u option. 1997-04-04 00:50:40 +00:00
David Greenman 5397377bf1 Merged from -current: Killed exech_map and do image header reads in a FS-
centric way instead of VM-centric. This appears to fix a hang that Peter
was seeing as well as allowing detection of errors during the header
read (important for NFS).
1997-04-03 06:37:49 +00:00
David Greenman 00699bdaa9 Merged from -current: avoid potential "accept" panic by re-ordering the
code a bit, plus changed a wakeup to a wakeup_one in the socket code.
1997-04-03 06:24:36 +00:00
Jordan K. Hubbard ce106a445f Add libg++ 3.0 1997-04-03 06:20:32 +00:00
Mike Pritchard 1900e82b71 YAMFC: Honor the nouser/nogroup flag for cached non-existent ids. 1997-04-03 01:52:48 +00:00
John-Mark Gurney a86ad81a8d YAMFC: arg... add back the "stray" `-' (it is used by indent) 1997-04-03 00:38:30 +00:00
Paul Traina f82d4db913 Merge fixes from HEAD 1997-04-03 00:30:15 +00:00
Poul-Henning Kamp 09eee860d0 YAMFC (allow net/mask syntax) 1997-04-02 17:06:20 +00:00
Poul-Henning Kamp 04c18344d2 Remove ccitt_addr.c file. 1997-04-02 16:56:45 +00:00
Poul-Henning Kamp 3e08d472d4 YAMFC (unifdef CCITT, ISO & CRUFT) 1997-04-02 16:56:23 +00:00
John Polstra 2a7fbb663d Add missing backslash.
Submitted by:	Chris Timmons <[email protected]>
1997-04-02 15:43:12 +00:00
Jordan K. Hubbard c794cd4b81 Preserve /etc/gettytab in upgrade. Fixes PR#3174 1997-04-02 11:57:35 +00:00
John-Mark Gurney a22a955450 YAMFC: remove a stray `-' 1997-04-02 11:28:02 +00:00
Jordan K. Hubbard 7118179c50 Close a security hole - anonymous FTP user was being created without
a password.
1997-04-02 07:05:16 +00:00
Mike Pritchard c56029c1c2 YAMFC: fix user_from_{uid,gid} to return the proper value when
a non-existent user is in the cache.
1997-04-02 06:21:51 +00:00
Jordan K. Hubbard dad1e4d981 YAMFC (and remove an entry pending resolution of namespace issue). 1997-04-02 06:05:01 +00:00
John Polstra b8490f0625 Merge from main branch 1.4 -> 1.5: fix glaring errors. 1997-04-02 01:45:52 +00:00
Mike Pritchard 49d9611cc7 YAMFC: describe which flags can be changed in secure mode better. 1997-04-01 20:42:24 +00:00
Joerg Wunsch 536e33d9f6 YAMFC: rev 1.11, fix hostname length handling. 1997-04-01 20:41:55 +00:00
Joerg Wunsch 769b3c79bc YAMFC: rev 1.83, add the new Philips CD-R devices 1997-04-01 19:29:06 +00:00
Mike Pritchard fc43f514d9 YAMFC: Xref the appropriate set*id(2) man pages (and no, I didn't
let issetugid xrefs slip in here :-).
1997-04-01 19:28:13 +00:00
Mike Pritchard 612ca3f7dd YAMFC: remove doubled word. 1997-04-01 19:22:05 +00:00
Mike Pritchard 822dd9e1e0 YAMFC: Don't say that fchown follows symbolic links. This was
part of Peter's lchown commit, but applies to 2.2.
1997-04-01 19:19:04 +00:00
Mike Pritchard 8f04263f3f YAMFC: update BUGS section. 1997-04-01 19:10:18 +00:00
Mike Pritchard b3d6b19930 YAMFC: update text concerning strftime failures. 1997-04-01 19:07:21 +00:00
Mike Pritchard 555ce93ce3 Add bsd-family-tree.
Someone else already tagged the file onto the RELENG_2_2 branch.
1997-04-01 19:01:58 +00:00
Paul Traina 6bd66a6bd6 Merge Bruce's changes from HEAD 1997-04-01 18:07:11 +00:00
Jordan K. Hubbard d9ac39faed Put this back on the 2.2 releng branch again. 1997-04-01 10:58:26 +00:00
Paul Traina 1ccb288333 Merge from head 1997-04-01 06:22:53 +00:00
John Polstra 2359546b66 Merge from main branch 1.10 -> 1.11: correct an include file name. 1997-04-01 04:07:06 +00:00
Paul Traina 78567912f2 Merge from HEAD: use mediaClose() instead of shutdown 1997-04-01 02:04:58 +00:00
Paul Traina c28702b61b Add portmapflags and syslogdflags
Reviewed by:	jkh
1997-04-01 00:59:48 +00:00
Jordan K. Hubbard 97786e63d0 Add back one of my hats since I seem to be sticking with it for now. 1997-03-30 23:52:42 +00:00
Mike Pritchard 9ccd6e6efd YAMFC: fix the text for exit values >1. 1997-03-29 20:02:34 +00:00
Jordan K. Hubbard 668b5184c8 Close PR#3105 - message box cursor positioning was off.
Submitted-By: "Kenneth R. Westerback" <[email protected]>
1997-03-29 19:50:51 +00:00
Jordan K. Hubbard 1e7f63411c Nuke extra include of <dialog.h>. Closes PR #3135
Submitted-By: Kenneth R. Westerback <[email protected]>
1997-03-29 06:41:56 +00:00
Jordan K. Hubbard 835b56e5ba Bring in Peter's fix from -current. Maybe this is "fixing" the problem
with a pair of bolt cutters, but having the tree stand broken while
everyone sits in a mexican standoff over it hardly wins any awards for
elegance in operational methodology either.  If a better fix comes along,
it can be my most welcome guest..
1997-03-29 06:32:31 +00:00
Jordan K. Hubbard c8fc6b7a38 Doh! Fix a clear and obvious bogon. 1997-03-28 23:17:23 +00:00
Jordan K. Hubbard 3bda9cc428 Correct the old off-by-one error. 1997-03-28 23:07:09 +00:00
Jordan K. Hubbard 6f97fa6e1d Simplify mulit-line entry handling. 1997-03-28 12:14:14 +00:00
Jordan K. Hubbard ca77442146 Clarify @srcdir vs @cwd.
Submitted-By: "Chad R. Larson" <[email protected]>
1997-03-28 10:42:16 +00:00
Jordan K. Hubbard 3e40cfcf3b Make attribute handler read data in blocks rather than by character.
This is more efficient and somewhat easier to follow with two extra states.

Put dist_attrs in proper scope.

Fix a long standing bug with the package installer and dependencies - it's
been using the *build* dep list all this time!  And nobody noticed!  D'oh! :)
Make it use the more proper run deps.

Make root password selection non-optional.
1997-03-28 09:30:18 +00:00
Jordan K. Hubbard 7416bd11b9 Update pst's config loading code, add a few strategic clears, put
more debugging into the attribute code so I can chase a long-standing
problem.
1997-03-28 02:25:15 +00:00
Joerg Wunsch 61b25a7e99 We are no longer at 2.2.1-RELEASE here. 1997-03-27 21:50:51 +00:00
Guido van Rooij 9ba3240efc Get the privport stuff from current 1997-03-27 20:04:15 +00:00
Guido van Rooij 7887637757 There is no srandomdev() in 2.2 1997-03-27 19:34:39 +00:00
Mike Pritchard 7351afe798 YAMFC: update HISTORY. 1997-03-27 18:47:42 +00:00
Mike Pritchard 3736df61ba YAMFC: Teach .Fx about FreeBSD 1.x* releases. Also fix the .Bf usage. 1997-03-27 18:29:15 +00:00
Mike Pritchard be48bcdb2d YAMFC: fix w+ entry. 1997-03-27 18:10:18 +00:00
David Nugent 5aaa15bf31 Fixed erroneous logic in handling non-passworded accounts.
Pointy-hat-thoroughly-desrved-by: me :-(
1997-03-27 10:06:43 +00:00
Jordan K. Hubbard 48663a646e amend to say flag value of 1 instead of 0x7.
Submitted-by: hosokawa
1997-03-27 09:11:59 +00:00
cvs2svn 53e5d3057b This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-03-27 03:07:26 +00:00
Jordan K. Hubbard 8d1dd37cea Document problems with the Panasonic AL-N1, and Rios Chandler
machines and how to work-around them.
1997-03-27 03:03:36 +00:00
Jordan K. Hubbard 7e88e4033e Fix a bogon I introduced at the last minute with the packages menu.
People who follow the instructions (and using RETURN) will not bump into
it, but those blindly hitting SPACE at the first menu will yell that it's
now a shortcut for "Install" rather than a category selection.  This was
because, in my desire to make things all nice and cosmetic, I added the label
in as " Install " - forgetting that the first character is used implicitly
as the accelerator.  D'oh!!

Fix a clipping bug in the top level menu introduced when the fixit item
text was lengthened.

I'm going to re-roll the boot floppy for this one since the CDROM has now
been delayed a week (the artwork is not ready now) and I'd like to fix these
two minor but annoying problems there.  There's also a reported problem with
loading the "compat21" distribution which could be a real nasty if true; I'll
batch the tag sliding for that and these changes if I can reproduce and fix
it.
1997-03-27 00:41:02 +00:00
Guido van Rooij b745c9dd21 Backport of the fsirand stuff to 2.2. I'm sorry this is too late for 2.2.1 1997-03-26 20:05:57 +00:00
David E. O'Brien 4545e9f856 Add -k option to SYNOPSIS
Add -o option to usage()
1997-03-26 17:55:19 +00:00
Joerg Wunsch 49136cd513 YAMFC: rev 1.93, bring dev/pdq into alphabetical order 1997-03-26 17:02:11 +00:00
Mike Pritchard 16ace871f3 YAMFC: fix my last commit. 1997-03-25 18:36:33 +00:00
Peter Wemm 4dde74dae8 - adapt part of rev 1.27 - don't deref kernel space pointers
- when a ufs inode is locked, apppend the locking pid. This is useful
  for tracking down ufslk2 deadlocks.
1997-03-25 15:51:50 +00:00
KATO Takenori 0d81c0a8c7 YAMFC (fixed reset port address of PC9801-108). 1997-03-25 10:14:52 +00:00
Jordan K. Hubbard 61a870c842 Roll some last minute doc changes in. 1997-03-25 06:29:10 +00:00
David Nugent 396eacd821 Bring in fixes from -current;
strdup() term, fix for authentication when kerberos enabled,
don't bypass password prompt for root with empty password for
insecure ttys.
1997-03-25 05:26:29 +00:00
John Dyson ca3216c9ae 1. Fix the vm_page_zero_count accounting. This should improve the
performance of the pre-zero loop.
2.  Fix madvise.  It had a myriad of bugs, including the potential
    for system crashes.
3.  Improve vm_map handling.  This is a result of work done by both
    <[email protected]> (Alan Cox) and me.  Earlier versions of the
    map handling code was very unintelligent about map coalescing.
4.  Support a working and closer to POSIX mlock.
5.  A couple of performance enhancements that came along for the ride,
    including changing certain bitfields to flags in vm_map.
6.  Bring procfs up to date with respect to the changes.

This code has been carefully extracted from -current.

Reviewed by:	David Greenman <[email protected]>
1997-03-25 04:54:38 +00:00
Mike Pritchard 92c252206b YAMFC: remove some incorrect text on how passwords are validated. 1997-03-25 03:55:01 +00:00
Mike Pritchard accba27143 YAMFC: document function return type, tell how the system really
works when attempts are made to block SIGKILL/SIGSTOP.
1997-03-25 03:41:36 +00:00
Mike Pritchard 040cdff758 YAMFC: Xref getpeername. 1997-03-25 02:49:27 +00:00
Mike Pritchard bcab5a28a5 YAMFC: .Tn cleanup. 1997-03-25 02:47:12 +00:00
Jordan K. Hubbard cd765480f2 o Fix bogon in paranoia check for !distributions.
o Clean up package installer menus a little and make certain things
  more clear by changing the button labels.  Also add category description
  for Korean ports/packages.
o Turn on secure NFS (-P) by default for John P.
o Put release name in top menu.
o Fix UK FTP sites since they now follow canon.
o Change release notes to say we're 2.2.1 now.

The RELENG_2_1_1_RELEASE tag will slide forward on all these files.
1997-03-25 02:46:05 +00:00
Mike Pritchard 50192c3ed7 YAMFC: .Tn cleanup and other misc cleanup. 1997-03-25 02:45:33 +00:00
Mike Pritchard d35f3ae11f YAMFC: .Fx/.Tn cleanup. 1997-03-25 02:41:46 +00:00
Jordan K. Hubbard bd37be6edd Add Imaginary Landscape, LLC. for their monetary contributions to FreeBSD
development.
1997-03-25 02:32:56 +00:00
Mike Pritchard fd7be8bc8f YAMFC: mdoc cleanup. 1997-03-24 23:46:20 +00:00
Justin T. Gibbs 4e59b4292c Sync with current - Fix fencepost error. 1997-03-24 19:19:08 +00:00
Warner Losh 57dec3a67d yamfc: 1.8 anti-whine-o-matic buffer overflow deltas 1997-03-24 06:04:52 +00:00
Warner Losh ed1e041772 YAMFC: 1.16 bound strcpy of DNS data 1997-03-24 06:03:11 +00:00
Warner Losh 58da3cfa14 YAMFC: 1.14 chdir as user 1997-03-24 05:58:57 +00:00
Warner Losh fd8889c85b YAMFC: 1.11 fix permission race 1997-03-24 05:53:41 +00:00
Warner Losh def236013c YAMFC: 1.4 buffer overflow from bsdi 1997-03-24 05:52:25 +00:00
Warner Losh 1dbef5b79f YAMFC: 1.2 mkstemp 1997-03-24 05:50:51 +00:00
Warner Losh f63018e9b5 YAMFC: 1.11 mkstemp from OpenBSD 1997-03-24 05:46:18 +00:00
Warner Losh 49d27bdc83 Use mkstemp rather than mktemp to prevent a small race.
Obtained from: OpenBSD
1997-03-24 05:44:28 +00:00
Justin T. Gibbs 33a35e056b Sync with current.
Forgot to mention that I enabled the use of AAP (Auto Access Pause) when
queueing commands again since the bug I just fixed accounts for the problems
I thought were caused by AAP.
1997-03-24 05:11:03 +00:00
Justin T. Gibbs 7c2b54b21e Sync with current. 1997-03-24 05:10:04 +00:00
KATO Takenori d7487e5e4a Synchronize with sys/i386/conf/files.i386 revision 1.141.2.10. 1997-03-24 02:43:38 +00:00
KATO Takenori a140d348a3 YAMFC (Fixed CFLAGS; revision 1.12). 1997-03-24 02:40:50 +00:00
Justin T. Gibbs e8acfe1aff Bring in splbio protection to free_xs call from rev 1.47
Submitted by:	Tor Egge <[email protected]>
Obtained from: PR kern/2891
1997-03-24 01:48:10 +00:00
Warner Losh 60feda37c7 YAMFC: 1.7: Buffer overflow 1997-03-23 23:33:17 +00:00
Warner Losh 93a18dff8f YAMCF: 1.3 fix buffer overflow 1997-03-23 23:27:18 +00:00
Joerg Wunsch 08c07cd420 Merge revs 1.5 of both files: fix argument handling for select(), and
move amq service to TCP for better reliability.
1997-03-23 19:13:03 +00:00
Joerg Wunsch 08fbd37c67 YAMFC: rev 1.13 of both files, providing backward binary compatibility
if /var/run/log could not be found.
1997-03-23 19:09:07 +00:00
John-Mark Gurney 51c616f6a8 YAMFC: slight fix to gcc man page... 1997-03-23 09:24:12 +00:00
Mike Pritchard 10891800ac YAMFC: Don't say that pr and nroff disallow writes to the tty. 1997-03-22 17:20:33 +00:00
David Greenman e53c87bc5d Backed out change from rev 1.27/1.22.2.1 since it causes panics during
reboot.
1997-03-22 16:05:06 +00:00
Jordan K. Hubbard 1e241f19a9 I don't think that this is a new record for a point release
interval for us (I think that's 3 days :) but it comes close.  Sigh.
1997-03-22 15:52:55 +00:00
Jordan K. Hubbard fd08c444e6 I was an idiot to take the sigpipe handling code out of here;
even if it *is* unnecessary in the FTP media case, that's still not true
for the others (like CDROM for example :).
1997-03-22 15:20:26 +00:00
David Greenman f9eba749d7 Merged fixes from -current: DP83840A support, bug fix, link0/1/2 support. 1997-03-21 08:02:52 +00:00
Hiroyuki Hanai 8a90f6c3ad Fixed the <date>. 1997-03-21 06:50:10 +00:00
Jordan K. Hubbard 61e660abb9 Add Iceland to mirror sites.
Add Paul Traina's script loading code.
1997-03-21 04:49:59 +00:00
Mike Pritchard c35e478053 YAMFC: Update to use .An and .Rv. 1997-03-20 16:18:12 +00:00
Mike Pritchard 9d9e22bbbf YAMFC: Document .Rv and .An. Other misc cleanup. 1997-03-20 16:09:22 +00:00
David Nugent 371bf72731 Merge -d <dir> overflow fix from current. 1997-03-20 04:00:21 +00:00
David Nugent b8a0e88098 YAMFC (partial).
Reimplement root login access failure as a login failure:
	Issue message "Login incorrect".
	Standard backoff behaviour.
   #defines for RETRIES/BACKOFF constants
1997-03-19 13:45:08 +00:00
David E. O'Brien dc35556033 fixed typo for RELENG_2_2 branch. 1997-03-19 03:01:49 +00:00
Mike Pritchard 2d69cd14a9 YAMFC: From rev 1.11: fix .Ic macro "usage". 1997-03-18 20:02:13 +00:00
Justin T. Gibbs 1575ff5b59 Sync with current. 1997-03-18 19:19:10 +00:00
Eivind Eklund c7bcb06440 YAMFC (tgoto 1.6) 1997-03-18 16:34:23 +00:00
Mike Pritchard 0f1b35f61b YAMFC: From rev 1.2: add framemaker 5.0. 1997-03-18 16:22:06 +00:00
Poul-Henning Kamp 467194d9b6 YAMFC (check for overflow in size argument) 1997-03-18 16:18:24 +00:00
Mike Pritchard 365738c9e2 YAMFC: backout part of my previous VMIN/VTIME change. 1997-03-18 07:18:23 +00:00
Mike Pritchard 7753eed96f YAMFC: be consistent in how we list our mailing list addresses. 1997-03-18 07:03:41 +00:00
John-Mark Gurney 4937b79d09 merge in my patches to prevent patch from going into a loop...
also merged in the -Wall fixes while I'm hear... along with silencing and
some of the CVS Log entries in the files...
1997-03-17 22:32:29 +00:00
David Greenman c0eea35fcb Brought in fixes from main branch: fixes for full duplex and PCI Pro/10. 1997-03-17 11:09:44 +00:00
Eivind Eklund a7efd265c0 YAMFC (tgoto.c 1.5) 1997-03-17 09:34:23 +00:00
Jordan K. Hubbard e506051a5b Two procedures were bogusly in the variable list. 1997-03-17 05:00:53 +00:00
Jordan K. Hubbard d85926e0cf Correct date with english handbook, update 2.1.7 -> 2.2 in Japanese
handbook (d'oh!  forgot about the japanese handbook entirely!).
1997-03-17 04:05:03 +00:00
John-Mark Gurney 1c7bd47f2d YAMFC: fix typo (from rev1.11) 1997-03-17 00:29:48 +00:00
Jordan K. Hubbard a460193410 Fix a bogus debugging statement.
Stick saved registrations directly in / so they're visible and annoying
(and you'll complete and remove the thing).  Sticking them in /tmp was
really stupid because they only get removed when you come back up.

My last-minute change to support joerg's insufferably long email addresses
(anyone who need more than 20 characters for both username and hostname
should be shot :-) also broke the form layout completely, necessitating
the display kludge you see here.
1997-03-16 20:08:26 +00:00
Justin T. Gibbs f8b9627ac5 Merge with current. Add white spce before line continuation backslash.
sys/conf/files was okay in my initial commit for this branch.
1997-03-16 19:02:54 +00:00
Justin T. Gibbs 2bd74093d6 Merge with current. Don't rely on sys/types being included by stdio.h 1997-03-16 19:01:28 +00:00
Mike Pritchard 9a9f7322bf YAMFC: Typo police. 1997-03-16 18:18:59 +00:00
Justin T. Gibbs f94d869a9b Sync with current. 1997-03-16 07:22:03 +00:00
cvs2svn 274b8bdee7 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-03-16 07:21:33 +00:00
Jordan K. Hubbard bd168eeaad Update the FTP site map to reflect reality. D'oh! I should have done
this long before now.
1997-03-16 04:06:39 +00:00
Jordan K. Hubbard f509c4c435 Merge from -current (modulo the release string, which is set to 2.2. in this
branch).
1997-03-15 23:36:46 +00:00
Jordan K. Hubbard 2d3b605d6f Bump to RELEASE. 1997-03-15 23:29:16 +00:00
Jordan K. Hubbard 2825ff93f6 Update to RELEASE. 1997-03-15 23:21:18 +00:00
Bruce Evans f07e5bc8ea Revert $FreeBSD$ to $Id$. 1997-03-15 21:23:40 +00:00
Joerg Wunsch 4f3d99485b YAMFC (rev 1.17: fix promiscuous mode) 1997-03-15 21:03:25 +00:00
Joerg Wunsch be153092d7 YAMFC (rev 1.287 and 1.288: export BUILDNAME, RELEASETAG, and NO_PORTS
into the chroot build area)
1997-03-15 20:59:35 +00:00
Jordan K. Hubbard d29096165b Reorder some failure clauses, fix a bug with distribution extract status. 1997-03-15 18:00:28 +00:00
Jordan K. Hubbard a33296462b Increase the size of the email address field.
Requested-By: joerg
1997-03-15 16:24:32 +00:00
KATO Takenori 10349c7e01 Synchronize with sys/i386/conf/majors.i386 revision 1.9.2.1. 1997-03-15 15:52:35 +00:00
KATO Takenori d529d2b19c Synchronize with sys/i386/i386/userconfig.c revision 1.63.2.17. 1997-03-15 15:45:20 +00:00
Joerg Wunsch 63d6cd97cb YAMFC (\0-terminate the strings for strftime(), pending some better fix
that should be done in the future, according to Bruce's suggestions)
1997-03-15 10:52:45 +00:00
Joerg Wunsch 556bf008c9 YAMFC (rev 1.12: sgtty->termios, fix buffer overflow condition, use
sysexits(3))
1997-03-15 10:48:58 +00:00
Joerg Wunsch f08e0f77bd YAMFC (rev 1.6: recognize being called as kgdb, some people do it
this way)
1997-03-15 10:46:21 +00:00
Joerg Wunsch c1e644e298 23:59's mega-merge for ppp(8).
I've merged the three changes:

    re-open on HUP (+doc)
    Working -background option
    pending sig changes

and enclosed patches to get from the current RELENG_2_2.
The pending signal stuff is the most important, without it it's possible
to corrupt the caused variable, resulting in a call to (*NULL)() :(

(I'm not totally comfortable with the SIGHUP changes, but they are not
very harmful either. -- Joerg)

Submitted by:	brian
1997-03-15 10:44:30 +00:00
Joerg Wunsch decd933ec9 YAMFC (rev 1.5/1.9: fix security problem) 1997-03-15 10:40:15 +00:00
Jordan K. Hubbard 6cc65521df YAMFC 1997-03-14 07:01:18 +00:00
Mike Pritchard b21a8f477d YAMFC: From rev 1.4: s/NetBSD/FreeBSD/ 1997-03-14 06:10:09 +00:00
Mike Pritchard ec42787081 YAMFC: update some mailing list addresses. 1997-03-14 05:24:26 +00:00
Mike Pritchard b9486dfe71 YAMFC: Use the correct symbols for VMIN/VTIME. 1997-03-14 05:02:12 +00:00
Mike Pritchard 608cb943ff YAMFC: add some text regarding shell scripts as login shells. 1997-03-14 02:38:33 +00:00
Joerg Wunsch de653435c9 YAMFC (rev 1.21) 1997-03-14 01:35:16 +00:00
Jean-Marc Zucconi a47a52fd33 Merge from current (add __BEGIN_DECLS/__END_DECLS) 1997-03-14 00:04:18 +00:00
Joerg Wunsch 9173804e1f YAMFC (Fix the declaration of num_eisa_slots)
Building sysinstall was broken previously anyway, thanks to Paul
Traina for pointing it out.
1997-03-13 22:24:36 +00:00
Bruce Evans bcb1ab7077 YAMFC (everything: worm bdev and recently assigned nonexistent cdevs). 1997-03-13 18:28:40 +00:00
Joerg Wunsch 641b3c3a27 New compared to 2.2-BETA:
. CMD 640 hack
. number of EISA slots an official option

New compared to 2.1.7:

. moused
. phkmalloc
. functional AppleTalk

The last three items have been obtained from Andres Klemm's and
Lars Koeller's FreeBSD article in the most recent c't magazine.
1997-03-13 18:20:36 +00:00
Bruce Evans 70e16c24be YAMFC (1.30: wrapped mi_switch() with splstatclock()/splx()). 1997-03-13 18:09:38 +00:00
KATO Takenori 2d950f8de6 Synchronize with sys/i386/isa/wd.c revision 1.119.2.4. 1997-03-13 17:11:06 +00:00
KATO Takenori 8c4827362a Synchronize with sys/i386/conf/options.i386 revsion 1.26.2.7. 1997-03-13 17:06:19 +00:00
Adam David ada88fa941 sync with -current 1997-03-13 15:18:55 +00:00
KATO Takenori c6bb93ef85 YAMFC (#ifdef FreeBSD --> #ifdef __FreeBSD__; revision 1.5). 1997-03-13 02:17:32 +00:00
KATO Takenori 70bb51efed YAMFC (fix CFLAGS definition; revision 1.11). 1997-03-13 02:12:28 +00:00
Joerg Wunsch 159383909b YAMFC (rev 1.26: mention the CMD640) 1997-03-13 01:06:34 +00:00
Stefan Eßer a939b979e6 Synchronize with -current: Add CMD640 workaround.
This introduces no code change, as long as CMD640 is not defined.

The files /sys/pci/wdc_p.c and /sys/i386/isa/wdc_p.h have been tagged
for the RELENG_2_2 branch already.

OKed by: joerg
1997-03-12 19:50:33 +00:00
Bruce Evans 1aea294e0b YAMFC (fixed checking for a non-numeric minor number). 1997-03-12 19:05:01 +00:00
Joerg Wunsch 785731e6ee YAMFC (rev 1.25: update HP NetServer LC info) 1997-03-12 18:59:36 +00:00
Joerg Wunsch 4a29037187 YAMFC (rev 1.8: record num_eisa_slots) 1997-03-12 18:55:50 +00:00
Joerg Wunsch bad3094753 YAMFC (rev 1.285: don't spam the tarballs with BOOTMFS stuff) 1997-03-12 18:11:11 +00:00
Joerg Wunsch c56e7e0d33 YAMFC (make EISA_SLOTS a fully supported option) 1997-03-12 17:46:10 +00:00
Mike Pritchard b270f2184a YAMFC: add a missing '\'. 1997-03-12 16:06:18 +00:00
Mike Pritchard c9696ffda7 YAMFC: correct info on the "tabs" option. 1997-03-12 16:00:05 +00:00
Mike Pritchard 2d2c13fa44 YAMFC: Lite2 man page cleanup that applies to 2.2. 1997-03-12 15:12:16 +00:00
Mike Pritchard 59a43aeeb3 YAMFC: Lite2 man page cleanup that applies to 2.2. 1997-03-12 15:07:15 +00:00
Mike Pritchard fe9924ea93 YAMFC: Some man page cleanup that applies to 2.2 from the Lite2 merge. 1997-03-12 14:50:51 +00:00
Mike Pritchard e6a450f7ed YAMFC: Update to reflect the current dirent.h. This was
part of the Lite2 merge.
1997-03-12 14:34:23 +00:00
Mike Pritchard 52fb1ea4d6 YAMFC: Document the various link-level flags for these drivers,
plus a typo fix.
1997-03-12 13:54:35 +00:00
Mike Pritchard f5bffdc45d YAMFC: FRom rev 1.9: minor mdoc cleanup. 1997-03-12 13:31:08 +00:00
Jordan K. Hubbard 8d5ff86730 Obey NO_PORTS more properly everywhere.
Submitted-By: joerg
1997-03-12 02:41:54 +00:00
Jordan K. Hubbard 285135278e Copy ABOUT.TXT to CD. 1997-03-12 02:32:08 +00:00
Jordan K. Hubbard 175bf9790f Adjust tabbing in /etc/fstab 1997-03-12 02:19:15 +00:00
Mike Pritchard 1e69c26406 Make this man page really match the 2.2 mount.h. 1997-03-12 00:39:00 +00:00
Stefan Eßer ecad4f2956 Add description of the CMD640 option for the wdc driver.
Submitted by:	Wolfgang Helbig <[email protected]>
1997-03-11 23:30:50 +00:00
Stefan Eßer 4791321c6b Add support for the buggy CMD640B PCI EIDE controller chip, which
can't perform overlapping commands on both of its channels.

To enable the CMD640B work-around, the kernel must be compiled with
"options CMD640". Without that option there should be no difference
in the code produced compared to the previous revision of wd.c.

Submitted by:	Wolfgang Helbig <[email protected]>
1997-03-11 23:17:28 +00:00
Joerg Wunsch d59831fba9 YAMFC (rev 1.6: fix FTP timeout handling) 1997-03-11 20:09:49 +00:00
Joerg Wunsch 0259d93a5f YAMFC (rev 1.183: put a .cdrom.inf file into the ftp area, too) 1997-03-11 20:04:43 +00:00
Bruce Evans ef9d30dc02 YAMFC (fixed clist limits). 1997-03-11 19:40:37 +00:00
Joerg Wunsch 32d57bb4c9 YAMFC (rev 1.11: retrofit changes from rev 1.7) 1997-03-11 19:39:07 +00:00
Jordan K. Hubbard 2b61e1aeed YAMFC 1997-03-11 17:49:21 +00:00
Bill Paul 86656d3255 Update this to reflect reality. 1997-03-11 17:42:37 +00:00
Jordan K. Hubbard 3e9b5f9cb4 Fix some bogons with static storage usage.
Fix UK mirrors.
1997-03-11 16:41:22 +00:00
Joerg Wunsch 0a6b754d8d Add a little blurb to two explanations where the past experience
shows that many users have problems.
1997-03-11 16:22:22 +00:00
KATO Takenori 05ff977879 Synchronize with sys/i386/i386/userconfig.c revision 1.63.2.16. 1997-03-11 16:21:32 +00:00
Joerg Wunsch 3f7e5cf977 Introduce a hack that eases bootstrapping from a more recent hosting
environment than the target version will be: move the shared libs
out of the way while doing the `make world', so the binaries will link
against the newly built libs.

This will probably become even more important once 2.2 is released...
1997-03-11 13:53:11 +00:00
Joerg Wunsch 8d16a7ecc8 YAMFC (rev 1.3: more randomization) 1997-03-11 11:17:03 +00:00
Joerg Wunsch b243620314 YAMFC (rev 1.139: add more tun devices) 1997-03-11 11:15:39 +00:00
Joerg Wunsch 0979eb2d5b YAMFC (rev 1.4: fix <ss> and ss sorting) 1997-03-11 11:13:54 +00:00
Jordan K. Hubbard dc7f46c388 Whap two $FreeBSD$ lines which somehow survived Peter's ethnic clensing. 1997-03-11 09:13:13 +00:00
Jordan K. Hubbard 69262873f5 Fix what Guido stomped in rev 1.14 - we should be calling _res_close() from
within this file, not res_close().
1997-03-11 07:23:55 +00:00
Jordan K. Hubbard 818f20ada7 Yikes! BUILDNAME should most definitely not be set yet. 1997-03-11 07:17:52 +00:00
Mike Smith d4ed5bacb5 YAMFC (rev 1.84, avoid double-s)
(Yes, this is on the 2.2 branch)
1997-03-11 07:13:43 +00:00
Jordan K. Hubbard e25f9792ba Delete a superfluous entry for setting the root password. 1997-03-11 06:39:54 +00:00
Mike Pritchard 3acc35a3fc YAMFC: From rev 1.12: update ioctl values. 1997-03-11 05:49:04 +00:00
Jordan K. Hubbard 13501768c0 Whoops! I got my own address stuck back in here during testing. 1997-03-10 22:47:32 +00:00
Paul Traina e1ad2787bf Mergen in IMAP change from head 1997-03-10 22:28:46 +00:00
Jordan K. Hubbard 13adfb6d0e o Add alias for register' so you can say /stand/sysinstall register' to
go straight to the registration screen.

o Add ports collection option a little more prominently to distribution
  choices.

o Tell user how to register if they elect to say "No" the first time.
1997-03-10 21:10:45 +00:00
Joerg Wunsch d47f9a7cbf YAMFC (rev 1.3: update to the new open() semantics) 1997-03-10 20:56:34 +00:00
Joerg Wunsch 9a109dc04d YAMFC (rev 1.81: add the HP6020i) 1997-03-10 20:53:16 +00:00
Jordan K. Hubbard 0baf3d70f0 Merge rev 1.7 into 2.2. 1997-03-10 20:35:46 +00:00
Guido van Rooij d322f3e58d Fix buffer overflow 1997-03-10 19:52:12 +00:00
Guido van Rooij 3c716c531d From current: overflow in FD_SET was possible. 1997-03-10 19:35:22 +00:00
Joerg Wunsch dd700cf503 YAMFC (rev 1.3: fix gross uninitiliazed variable problem) 1997-03-10 19:23:57 +00:00
Joerg Wunsch 3e31ac95cd YAMFC (rev 1.24: fix a logico) 1997-03-10 19:22:43 +00:00
Guido van Rooij 67c5e4bd27 Fix buffer overflow. 1997-03-10 19:10:52 +00:00
Jordan K. Hubbard 6b84ce2f40 Make the russian mirrors follow canon. 1997-03-10 12:20:10 +00:00
Bill Fenner cb0bae6ef8 YAMFC. Fix FTP URL parsing, new FTP_PROXY behavior, allow non-
standard FTP ports, handle almost-HTTP/1.0 servers (PR#2868),
fix restarting HTTP transfers (PR#2870).
1997-03-10 07:12:51 +00:00
Jordan K. Hubbard 92e864d54d Add sample entries for Samba. 1997-03-10 01:57:32 +00:00
Jordan K. Hubbard de330f7d1a Merge changes from -current for registration screen
(also forgot to mention - fixed a window leak in all clients
of the Layout* code).
1997-03-09 22:38:01 +00:00
cvs2svn 922dfe46d8 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-03-09 22:35:13 +00:00
Mike Pritchard 320253280e YAMFC: From rev 1.8: Clarify how dup2 works. 1997-03-09 22:16:51 +00:00
KATO Takenori b00337aa84 YAMFC (PC-98 object; revisions 1.7 and 1.7). 1997-03-09 16:56:18 +00:00
KATO Takenori ec8d8f8d52 YAMFC (PC-98 battery status code; revision 1.16). 1997-03-09 16:52:49 +00:00
KATO Takenori 9668f9bcc8 Synchronize with sys/i386/isa/syscons.{c,h} revisions 1.182.2.15 and
1.23.2.3, respectively.
1997-03-09 13:30:08 +00:00
Paul Traina 7b4e38e0a6 Merge from current.
Reviewed by:	jkh
1997-03-09 09:28:29 +00:00
Bruce Evans b6546c8a6a YAMFC (added forgotten directories netns and pccard). 1997-03-09 06:58:45 +00:00
Kazutaka YOKOTA d206b50808 YAMFC - at last, kbdio with keyboard/mouse data queues is brought
to 2.2.
1997-03-09 06:32:30 +00:00
Mike Pritchard d6063caca2 YAMFC: Fix fts_set declaration, and update specify the correct
function in pause.
1997-03-09 00:51:58 +00:00
Mike Pritchard a4ab3288cc YAMFC: Fix example. 1997-03-09 00:50:47 +00:00
Mike Pritchard be0a15870e YAMFC: Fix some typos. 1997-03-09 00:34:37 +00:00
Mike Pritchard ef3e1ddfdf YAMFC: document the MAIL env variable. Sync up hier with reality. 1997-03-09 00:25:10 +00:00
Mike Pritchard 06f5f562aa YAMFC: From rev 1.7: make "fd" static. 1997-03-09 00:16:23 +00:00
Jordan K. Hubbard f1836b812a Merge r1.24 from -current, modulo one small change to avoid line-wrap. 1997-03-08 23:57:22 +00:00
Jordan K. Hubbard 4a2aa32363 Update version on samba package. 1997-03-08 23:47:04 +00:00
Bruce Evans 3a109e38e0 YAMFC (don't use dot in a chown command). 1997-03-08 19:48:05 +00:00
Bruce Evans 672eda858a YAMFC (don't use a dot in the chown commands - only use install commands). 1997-03-08 19:29:54 +00:00
Paul Traina 291827ef18 Merge API fixes from current.
Reviewed by:	jkh
1997-03-08 19:09:24 +00:00
Bruce Evans bcf16a2550 YAMFC (fixed substitution of @TMAC_S_PREFIX@ and @TMAC_M_PREFIX@). 1997-03-08 19:09:01 +00:00
Jordan K. Hubbard d462bb102e o Be just a wee bit more paranoid about saving configuration data before
running off to invoke the XFree86 setup tool or the package manager or
  anything else which might die badly.

o Tidy up the label editor a bit.
1997-03-08 16:16:15 +00:00
KATO Takenori e3d8f93fdd Synchronize with sys/i386/boot/biosboot/Makefile revision 1.50.2.3. 1997-03-08 15:48:18 +00:00
Guido van Rooij c6cae98b06 Fix style and other bug in NFS fix. 1997-03-08 15:16:18 +00:00
Jordan K. Hubbard 6ceab96a3b Add ports as a distribution target.
Clean up the way distributions are added post-install time (make it easier).
Describe boot managers and drive geometry a little more elaborately
in the relevant docfile.  It's 5am and I'm probably rambling incoherently
at this point, so perhaps someone should also review help/drives.hlp if they
get the chance. :)
1997-03-08 12:56:23 +00:00
Jordan K. Hubbard 94f52bf536 Remove overly chatty debuging. 1997-03-08 11:13:22 +00:00
Jordan K. Hubbard 71b0ec5043 Update Apache to correct version. 1997-03-08 11:06:09 +00:00
Jordan K. Hubbard 6ef2311075 Correct some of my late-night attempts at using the english language. 1997-03-08 10:18:29 +00:00
Jordan K. Hubbard 9c8e81767c Fix style bogons noticed while merging into -current. 1997-03-07 17:36:48 +00:00
Jordan K. Hubbard 7144d76f46 Add some additional protection for a NULL media device.
Noticed-By: Neil J Long <[email protected]>
1997-03-07 16:16:58 +00:00
Jordan K. Hubbard be568c1ee7 Prepare this documentation a little more for its upcoming release day. 1997-03-07 13:24:48 +00:00
Joerg Wunsch bd8cb93189 YAMFC (rev 1.7: activate chio(1), which has been tagged into the branch) 1997-03-07 09:39:06 +00:00
Joerg Wunsch 75fdc89614 YAMFC (new medium changer driver) 1997-03-07 09:34:48 +00:00
Joerg Wunsch ce16f788cf YAMFC (rev 1.26: try a no-wait malloc first in clist_alloc_cblocks().) 1997-03-07 09:22:57 +00:00
Joerg Wunsch d00d48e97c YAMFC (rev 1.27: supply the mount point when getting a vnode) 1997-03-07 09:21:36 +00:00
Joerg Wunsch 7a924bc194 YAMFC (rev 1.27: check for NULL pointer before dereffing) 1997-03-07 09:20:08 +00:00
Joerg Wunsch 0195cf74be YAMFC (rev 1.1: make this texinfo file info-aware) 1997-03-07 09:14:30 +00:00
Joerg Wunsch 2c08ee2b9e YAMFC (rev 1.8: Fixed handling of input failure by the scanf family.) 1997-03-07 09:12:11 +00:00
Joerg Wunsch 062db0d664 YAMFC (rev 1.7, and 1.4 resp: don't exit immediately on short file if -e
is given, so alternate screen buffers can be used at all)
1997-03-07 09:04:01 +00:00
Joerg Wunsch 1b6a4dc3b7 YAMFC (rev 1.8, and 1.18 resp: empty group wheel semantics) 1997-03-07 09:01:23 +00:00
Joerg Wunsch bc36e9dd0c YAMFC (fix the characterset designation code so box character drawing
will work as in VTxxx)
1997-03-07 08:58:27 +00:00
Gary Palmer 7eb3fa8a45 Fix (I hope) the NFS hole. This is only compile tested.
Submitted by:	(partly) [email protected] via BUGTRAQ
1997-03-07 07:48:00 +00:00
Jordan K. Hubbard 7337d34dc1 Fix bogus reference to /etc/update.
Pointed-out-by:  Someone on the net who's email I now can't find.
1997-03-07 07:46:40 +00:00
Mike Pritchard 16b906ec80 YAMFC: clean up this man page. 1997-03-07 07:45:39 +00:00
Mike Pritchard 099426dba3 Some months ago I accidently committed a change that allowed the
2.2 version of adduser to accept user names longer than 8 characters.
Back this part of the change out.

Submitted by:	 Marc Slemko <[email protected]>
1997-03-07 06:23:00 +00:00
Mike Pritchard eaeae9c9f9 YAMFC: add a missing semi-colon. 1997-03-07 06:17:09 +00:00
Mike Pritchard e3a1b47d04 YAMFC: add missing cvs Id strings. 1997-03-07 04:18:30 +00:00
Mike Pritchard 0f1b409dfb YAMFC: minor mdoc cleanup. 1997-03-07 03:43:05 +00:00
Mike Pritchard 4e91a6e488 YAMFC: add missing cvs Id lines. 1997-03-07 03:08:41 +00:00
Mike Pritchard 8cf50cdd84 YAMFC: typo fix. 1997-03-07 02:00:30 +00:00
Mike Pritchard aa8916c463 YAMFC: Fix a couple of typos. 1997-03-07 01:50:30 +00:00
Joerg Wunsch 3c996673c2 YAMFC (rev 1.13: don't clobber $TERM if already set) 1997-03-06 22:27:37 +00:00
KATO Takenori 0299f215cc YAMFC (revision 1.18; missing i8251 code). 1997-03-06 15:09:27 +00:00
Wolfram Schneider c019b24d18 Merge: Fix broken output due the obj dir changes in make(1) 1997-03-06 12:21:31 +00:00
Joerg Wunsch 4e3c4a518c YAMFC (rev 1.23: fix the daily prune example) 1997-03-06 10:57:14 +00:00
Jordan K. Hubbard a7f1456b9c YAMFC 1997-03-06 10:23:02 +00:00
Satoshi Asami c1f72c5bcd Merge 1.254. 1997-03-06 08:33:34 +00:00
Mike Pritchard a5b108bc51 YAMFC:
- sort xrefs
- typo fixes.
1997-03-06 08:01:10 +00:00
Mike Pritchard a7261a4ea8 Fix some more $ FreeBSD $ lines that made it into 2.2. 1997-03-06 07:54:19 +00:00
Joerg Wunsch 8d64d78a5f YAMFC (rev 1.279: still need RELEASEDIR) 1997-03-06 07:53:11 +00:00
Mike Pritchard 5f391b7e81 YAMFC:
- typo fixes
- sort xrefs
- some other minor cleanup.
1997-03-06 07:45:28 +00:00
Mike Pritchard c6864fc4fc Fix couple of $ FreeBSD $ lines that made it into 2.2.
I noticed these while looking for 2.2 -> 3.0 man page changes,
so there may be more of these.
1997-03-06 07:21:40 +00:00
Mike Pritchard ab1413285d YAMFC: Update the .Os, .Fx, and .Nx macros. Add the .Ox macro. 1997-03-06 07:08:07 +00:00
Mike Pritchard 598199b3a5 YAMFC: add some more Minnestoa Cities. 1997-03-06 06:25:55 +00:00
Mike Pritchard da600acca1 YAMFC: typo fix. 1997-03-06 05:34:43 +00:00
Mike Pritchard e2e226b38b YAMFC: fix a couple of typos. 1997-03-06 05:22:24 +00:00
Paul Traina 8da1d91e69 Remove ckRELEASEDIR checks that were missed during merge. 1997-03-06 00:10:39 +00:00
Bruce Evans 19ffddc927 YAMFC (made FPU stuff conditional on npx as well as I586_CPU). 1997-03-05 16:31:51 +00:00
KATO Takenori 14134c617e Synchronize with sys/i386/isa/clock.c revision 1.72.2.3. 1997-03-05 16:21:28 +00:00
Bruce Evans e1d109ba5e YAMFC (added -mno-486 to CFLAGS). 1997-03-05 15:50:20 +00:00
Joerg Wunsch b9f759ce33 YAMFC (rev 1.138: fix permissions of worm devices) 1997-03-05 14:05:38 +00:00
Joerg Wunsch c8d2ac2c6c YAMFC (rev 1.135: add bdev entries for worm(4)) 1997-03-05 13:58:16 +00:00
Joerg Wunsch 424090734c YAMFC: rev 1.32 of worm.c. This brings the ability to also read media
using /dev/wormN, and uses restructured code that is supposed to avoid
problems that arose in the old code e.g. with the HP6020i (although i
have yet to see any positive respsonse to this).

Additional cleanup will follow, but it's easier for me to do this if i
merge this one first.
1997-03-05 13:56:28 +00:00
Bruce Evans 5f98e8fe8e YAMFC (1.41: force null termination after 2 errant strncpy()s; 1.35:
include <sys/time.he> and fix up some other #include messes).
1997-03-05 12:30:08 +00:00
Bruce Evans 661c69b39b YAMFC (fixed wrong magic numbers in scaling). 1997-03-05 11:54:54 +00:00
Bruce Evans 77553ccede YAMFC (shorten the main clock calibration message, only print clock
calibration messages if the system was booted with -v, and corrupt
a tab).
1997-03-05 08:19:02 +00:00
David Greenman 476e9ce6a5 Brought in fix from rev 1.80: vinvalbuf/splbio fix. 1997-03-05 04:58:43 +00:00
Doug Rabson 8081bf16e2 Merge a bugfix from current which prevented nfsv3 commits from working
at all and include a simple performance optimisation (clustering commits).

Reviewed by:	[email protected] (J Wunsch)
1997-03-04 17:59:42 +00:00
Doug Rabson 9f21280dee YAMFC 1997-03-04 10:08:16 +00:00
KATO Takenori 7ce1a53095 YAMFC (fixed devfs code; revision 1.17). 1997-03-04 06:52:04 +00:00
KATO Takenori 29025a4bb3 Synchronize with sys/i386/isa/syscons.c revision 1.182.2.14. 1997-03-04 06:49:40 +00:00
Mike Pritchard 55fc7c214c YAMFC: add the VFS_*/VOP_* v* man pages.
All of the new man pages were tagged onto the RELENG_2_2 branch by hand.
1997-03-04 06:32:12 +00:00
cvs2svn bb92c09e2c This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-03-04 06:20:49 +00:00
Alexander Langer 087ab6aea2 YAMFC (rev 1.5, disable definition of _POSIX_THREAD_PRIORITY_SCHEDULING). 1997-03-04 01:35:21 +00:00
Nate Williams 97c31386d4 YAMFC:
Moved pccard_configure() to the end of the configure() list.  This
  avoids problems with the PCIC controller grabbing an interrupt that
  another card needs.

Ok'd by:	joerg
1997-03-04 00:31:13 +00:00
Nate Williams de6d2cb7e5 YAMFC:
- Added PCIC resume function
- Cleaned up includes
- Better handling of PCIC controller IRQ's (Dynamically determine a free
  IRQ instead of just grabbing one.)
- Cleaned up VLSI-PCIC chipset detection better, necessary for some newer
  laptops such as the NEC 6030H.

OK'd by:	joerg
1997-03-04 00:27:35 +00:00
Bruce Evans 7e64a9cd0a YAMFC (improved description of the device names). 1997-03-03 18:48:11 +00:00
Bruce Evans 7a7238f66d YAMFC (updated descriptions of minor numbers and filees, etc.). 1997-03-03 18:40:13 +00:00
Bruce Evans 2b76afd7dc YAMFC (fixed struct access bug). 1997-03-03 16:36:13 +00:00
Bruce Evans e054a15e04 YAMFC (extend the unit field to 9 bits for disk devices). 1997-03-03 16:07:30 +00:00
Bruce Evans d37fafaf19 YAMFC (lots of cleanups). 1997-03-03 15:11:52 +00:00
Bruce Evans 113f6d8634 YAMFC (use install flags ${COPY} instead of -C). 1997-03-03 14:57:06 +00:00
Bruce Evans 66b24d028d YAMFC (use log10() instead of a home made version). 1997-03-03 14:52:07 +00:00
Bruce Evans 331f06654c YAMFC (use log10f() instead of log10()). 1997-03-03 14:51:17 +00:00
Bruce Evans 513641e110 YAMFC (sort cross references). 1997-03-03 14:46:33 +00:00
Bruce Evans 9bbc1e268e YAMFC (split up Bessel function wrapper files). 1997-03-03 14:21:08 +00:00
Bruce Evans 558655a970 YAMFC (avoid easily avoidable loss of precision when |x| is nearly 1). 1997-03-03 14:17:20 +00:00
Warner Losh 4e5fe43329 Backport changes from current:
1) getopt returnes -1 and remove 'h:' that isn't needed
 2) -l needs super user now to work
 3) check to make sure that address returned from gethostbyname will fit in
    sin_addr
 4) Fix minor strncpy bug.
 5) Don't leak information about ICMP packets that aren't for you, unless
    superuser.
1997-03-03 09:44:16 +00:00
David Greenman ab8e448055 Merged with -current: improved PCB hash algorithm. 1997-03-03 09:24:40 +00:00
Mike Pritchard 216a0aac23 YAMFC: remove the -g option from the "find ... | xargs ls ..." line. 1997-03-03 07:05:47 +00:00
Mike Pritchard 85bcbd5f7a YAMFC:
Mostly xrefs sorts, but some general man page cleanup and mdoc
cleanup.
1997-03-03 07:01:52 +00:00
Adam David cf05d67b8c sync with -current 1997-03-03 05:06:19 +00:00
Bill Fenner a64f983145 Bring in comment fix from -current.
Ok'd by:	jkh
1997-03-02 19:03:01 +00:00
Jordan K. Hubbard bfb12a9b40 Properly segregate CDs into their own release dirs. 1997-03-02 15:28:58 +00:00
Joerg Wunsch d4ded98203 YAMFC (rev 1.19, and 1.4 resp.: allow piping to subprocess) 1997-03-02 14:59:49 +00:00
Joerg Wunsch b4155293fd YAMFC (sync with revs 1.9, and 1.6, resp.) 1997-03-02 14:56:50 +00:00
Joerg Wunsch c4449cb256 YAMFC (rev 1.19: use find -print0 and xargs -0) 1997-03-02 14:50:31 +00:00
Joerg Wunsch d9893762d6 YAMFC (rev 1.6: try using /dev/urandom) 1997-03-02 14:48:25 +00:00
Joerg Wunsch d6b9f0f39a YAMFC (rev 1.7: minor problem for other-endian machines) 1997-03-02 14:43:51 +00:00
Joerg Wunsch 3643b3db58 Ick, the previous commit was a little pointless. Sync this file with
-current now.
1997-03-02 14:40:36 +00:00
Joerg Wunsch 3371efedb4 YAMFC (rev 1.6: add version control system template) 1997-03-02 14:37:30 +00:00
Joerg Wunsch 7213b30c36 YAMFC (rev 1.31: overflow and cursor placement fixes) 1997-03-02 14:35:57 +00:00
Joerg Wunsch 060ff5394c YAMFC (rev 1.205: check validity of signals) 1997-03-02 14:34:06 +00:00
Joerg Wunsch aeb0aaa71b YAMFC (rev 1.9: check validity of signals) 1997-03-02 14:31:40 +00:00
Joerg Wunsch 9ec400a387 Add the ex(4) driver to the hardware.hlp, and fix some stray tabs.
Add some more items to the relnotes where i remember that they went
in lately.

Again, my dear developers: please, please read this file, and watch
out whether something's missing that went into the tree between 2.1.x
and 2.2.
1997-03-02 14:23:38 +00:00
Joerg Wunsch 860319f79c YAMFC:
. remove ${RELEASEDIR}
. add scsi_modes to fixit

Not from -current:

. bump RELNAME to "2.2-RELEASE", so we don't forget about this (it was
  still at GAMMA which was quite somewhat out of date)
1997-03-02 12:03:31 +00:00
Joerg Wunsch 8383e3914a YAMFC (rev 1.5/1.8, resp. Avoid inconsitent usage.) 1997-03-02 11:27:09 +00:00
Joerg Wunsch 28fb9d9eed YAMFC (rev 1.12: remove extraneous shift op) 1997-03-02 09:20:22 +00:00
KATO Takenori af19acb140 Synchronize with sys/i386/conf/options.i386 revision 1.26.2.6. 1997-03-01 11:10:34 +00:00
KATO Takenori c979e2cde7 Synchronize with sys/i386/isa/clock.c revision 1.72.2.2. 1997-03-01 11:07:51 +00:00
KATO Takenori ab510b97db Synchronize with sys/i386/isa/syscons.c up to revision 1.182.2.13. 1997-03-01 10:57:15 +00:00
Justin T. Gibbs 21a48510e3 Somehow these file had their Id changed to FreeBSD.
Sync aic7xxx.c with current

Pointed out by:	[email protected]
1997-03-01 06:53:37 +00:00
Justin T. Gibbs bde4810ce6 Somehow this file had its Id changed to FreeBSD.
Pointed out by:	[email protected]
1997-03-01 06:53:07 +00:00
Bruce Evans 4004fff4e0 YAMFC (rev.1.91: don't redefine SCSI_NCR_DFLT_TAGS). 1997-03-01 06:23:33 +00:00
Bruce Evans 1b13c48dbc YAMFC (add missing #include <machine/segments.h>). 1997-03-01 06:10:44 +00:00
Adam David 1298790f23 added 8859-2 stuff from -current 1997-03-01 01:19:30 +00:00
Mike Pritchard cf051f307b YAMFC: sync with the new bsd-copyright. 1997-02-28 22:58:28 +00:00
Adam David d7ef05ed1d added ko_KR.EUC and lt_LN.ISO_8859-2
sync with -current
1997-02-28 22:54:47 +00:00
Adam David 41971a3e9a add lt_LN.ISO_8859-2 from -current 1997-02-28 20:14:09 +00:00
Bruce Evans c67e8bf9ee YAMFC (in DELAY(), don't adjust the delay by -20 usec, and use a better
method to convert from usec to ticks).
1997-02-28 17:26:10 +00:00
Bruce Evans 70974df7db YAMFC (added KBD_MAXRETRY). 1997-02-28 16:59:52 +00:00
Bruce Evans 9f19a95bf2 YAFC (added INCLUDE_CONFIG_FILE, LINT_PCCARD_HACK and zillions of
undocumented options).
1997-02-28 16:09:01 +00:00
Bruce Evans c1194b5b47 YAMFC (include "opt_config.h", don't clobber timestamp, and don't
generate non-C).
1997-02-28 15:49:29 +00:00
Bruce Evans cbe28762a4 YAMFC (put INCLUDE_CONFIG_FILE into opt_config.h rather than the CFLAGS
line).
1997-02-28 15:41:25 +00:00
Bruce Evans 0432e0f9ba Fixed spelling error in a variable name here too. 1997-02-28 14:28:53 +00:00
Bruce Evans 4605357768 YAMFC (print syscall numbers in the current radix, etc). 1997-02-28 12:39:23 +00:00
Jordan K. Hubbard b11d2ed3b6 Update this ancient document and add more labels for easy cross-reference. 1997-02-28 12:10:59 +00:00
Bruce Evans e924648f8c YAMFC (turned off _POSIX_SAVED_IDS. Everything in /usr/src that
depended on this misfeature has already been synced with -current.
Syncing was easy because nothing really depended on it.  Also merged
some tiny xref and standards changes in the man page).
1997-02-28 12:03:03 +00:00
Bruce Evans 0dffd04e0e YAMFC (nuked EXTRAVNODES option). 1997-02-28 11:12:00 +00:00
Bruce Evans 1ba87f5fbd Removed warnings that don't apply in this branch. 1997-02-28 10:17:29 +00:00
cvs2svn 58c1412c7b This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-02-28 10:14:25 +00:00
Bruce Evans 695d072d41 YAMFC (everything except INCLUDE_CONFIG_FILE, CHILD_MAX, OPEN_MAX and
ARP_PROXYALL.  This merge is mainly to start nuking EXTRAVNODES.  It
also removes some non-optional MSG* and SEM* "options" and sorts the
options).
1997-02-28 09:10:26 +00:00
Kazutaka YOKOTA debaa35e88 Removed a obsolete test which prevented mouse movement from quiting
screen saver. Added a missing `break' statement  in set_normal_mode().

Reviewed by: sos
1997-02-28 08:47:34 +00:00
KATO Takenori 6cb62f7dc6 YAMFC (synchronize with NetBSD/pc98 patch level 81). 1997-02-28 08:40:13 +00:00
Mike Pritchard 37c2653dd1 YAMFC:
- misc cleanup.
- sort xrefs.
1997-02-28 07:54:48 +00:00
Mike Pritchard 8df56bf066 YAMFC: add a missing period. 1997-02-28 07:34:37 +00:00
Mike Pritchard 31ed8fb267 YAMFC: sort xrefs. 1997-02-28 07:28:48 +00:00
Mike Pritchard 6bf2c9e247 YAMFC: remove an extra comma. 1997-02-28 07:25:11 +00:00
Mike Pritchard 722f0ff4e1 YAMFC: sort xrefs. 1997-02-28 07:23:19 +00:00
Bruce Evans a59f490a9f YAMFC (use gcc features if available to get proper varargs handling
for old-style varargs functions).
1997-02-28 07:21:04 +00:00
Mike Pritchard 15d1d9dd9c YAMFC: minor mdoc changes. 1997-02-28 06:48:13 +00:00
Mike Pritchard 80df5a3374 YAMFC: sort xrefs. 1997-02-28 06:43:48 +00:00
Mike Pritchard e8115fb7f2 YAMFC: sync up with the -current ch.4. 1997-02-28 06:10:08 +00:00
Mike Pritchard b343a69fdd Update fs.5 to reflect the 2.2 fs.h. 1997-02-28 06:05:52 +00:00
Mike Pritchard d53055b7e8 Updated to reflect the current 2.2 types.h. 1997-02-28 05:53:25 +00:00
Mike Pritchard e6864ce05b YAMFC:
Commit all of the -current changes that apply to 2.2.  These fall into
several categories:

- Cosmetic/mdoc changes.  They don't really afect the output
  at all, but having them in 2.2 will make it easier to diff the man
  pages later when looking for real changes.
- Update some man pages to reflect the current 2.2 header files.
- Sort xrefs.
- A few typo fixes.
- And a few changes that actualy added text to the man page that should
  be reflected in 2.2.
- Add some missing MLINKS.

Requested by: bde
1997-02-28 05:51:15 +00:00
Bruce Evans 30255d6255 YAMFC (don't hide inconsistencies by #undef'ing MSGMAX). 1997-02-28 05:29:04 +00:00
Justin T. Gibbs 47b81c7f4d Sync with current. 1997-02-28 04:31:04 +00:00
Mike Pritchard c2fd089d26 YAMFC:
Commit all of the -current changes that apply to 2.2.  These fall into
several categories:

- Cosmetic/mdoc changes.  They don't really afect the output
  at all, but having them in 2.2 will make it easier to diff the man
  pages later when looking for real changes.
- Remove a few $FreeBSD$ lines that made it into 2.2 :-(.
- Update some man pages to reflect the current 2.2 header files.
  I still need to go through some of these man pages by hand and
  complete this job.
- Sort xrefs.
- A few typo fixes.
- And a few changes that actualy added text to the man page that should
  be reflected in 2.2.

Requested by: bde
1997-02-28 03:27:31 +00:00
Adam David 51c3452d11 YAMFC (hr_HR and de_AT) 1997-02-27 17:41:47 +00:00
Bruce Evans 9dffc61f80 YAMFC (moved definition of FUNCTION_ALIGNMENT to a machine-dependent
place and changed it from 4 to 16 for i386's).
1997-02-27 17:24:46 +00:00
Adam David feb04644ee YAMFC (entries for Croatia and Korea) 1997-02-27 16:03:47 +00:00
Jordan K. Hubbard 05a2b453a6 Add partition and label editors in a few more menus with various
aliases.
1997-02-27 12:56:44 +00:00
Jordan K. Hubbard a8a0474845 Fix an ftp-retry bug which is probably responsible for all those folks
with funky network connections having FTP problems in 2.1.7. :-(
1997-02-27 11:48:39 +00:00
Mike Pritchard 91322dd77a Login names are still only 8 characters long in 2.2, not 16.
Closes PR# 2820.

Submitted by:	 Fred Cawthorne <[email protected]>
1997-02-26 17:29:20 +00:00
Mike Pritchard 212c14bc97 YAMFC: make this compile again by removing -lrpclib. 1997-02-26 06:59:14 +00:00
Warner Losh 910d59af8e YAMFC(1.12: buffer overflow) 1997-02-26 06:14:11 +00:00
Mike Pritchard 18a219a4b2 YAMFC: fix default jobname calculation. 1997-02-26 02:31:53 +00:00
Mike Pritchard 44ee0824d1 YAMFC: From rev 1.29: create /var/games/larn. 1997-02-26 01:18:15 +00:00
Adam David dae2cd6398 YAMFC fix man path for no X 1997-02-25 17:52:00 +00:00
Jordan K. Hubbard 516fea4749 Don't be so greedy about using argument space. The actual "secret"
threshold is somewhere below what sysconf() tells us so just divide
this number in two and be satisfied with 32K or thereabours.

Fixes PR#2459
1997-02-25 07:19:32 +00:00
Mike Pritchard 746b3dd00b YAMFC: From rev 1.3: initialize umask later. 1997-02-25 06:13:26 +00:00
Justin T. Gibbs 8919fc8de8 Sync with current. 1997-02-25 03:06:22 +00:00
Mike Pritchard 192d6d9064 YAMFC: sync up all of the calendars with -current. 1997-02-25 01:58:11 +00:00
Mike Pritchard 6b48cb2e17 YAMFC: From rev 1.11: add missing period; document depreciated -g option. 1997-02-25 00:38:13 +00:00
Eivind Eklund 2919a5feb9 YAMFC (Corresponds t rev 1.2/1.3 - security fixes) 1997-02-24 21:21:05 +00:00
Joerg Wunsch 941faf963e YAMFC (1997/01/02: merge the `a' option) 1997-02-24 12:12:38 +00:00
Jordan K. Hubbard 231a1e21e9 Correct minor formatting nits.
Submitted-By: gpalmer
1997-02-24 05:03:04 +00:00
Bill Fenner 329a83ad9f Add mtest. The files in the mtest subdirectory were tagged seperately.
Ok'd by:	jkh
1997-02-24 04:43:26 +00:00
Bill Fenner 3590d16a9f Merge multicast additions (ping.c rev 1.15, ping.8 rev 1.4) from current.
Ok'd by:	jkh
1997-02-24 04:14:58 +00:00
Jordan K. Hubbard 34e50ed326 Sync to Peter's latest version.
Submitted-By: pds
1997-02-24 00:23:26 +00:00
Joerg Wunsch 43d0d0e4ee Un-break RELENG_2_2 again. Sigh, it used to be un-broken for just
some 3 hours or so only. :-(

Forgotten-by: eiind
1997-02-23 23:44:01 +00:00
Joerg Wunsch aec04a773f YAMFC (make dotfile perms more sane, comment out rarely used or bogus
cruft)
1997-02-23 20:57:42 +00:00
Brian Somers b86e9f2ff2 Pointed out by: Joerg
Fix broken signal.h include
1997-02-23 19:30:15 +00:00
Mike Pritchard 3831584c2e YAMFC: Correct section number in .Dt line. 1997-02-23 18:00:53 +00:00
Joerg Wunsch f58cd85384 Also add `printing'. 1997-02-23 17:06:02 +00:00
Joerg Wunsch c9a97b033b YAMFC (rev 1.83 through 1.85; some of them are not strictly necessary yet
in RELENG_2_2, but they don't hurt here either)
1997-02-23 16:55:53 +00:00
Eivind Eklund 905a1bafc7 YAMFC (Remove buffer overflow) 1997-02-23 16:55:15 +00:00
Joerg Wunsch a62b18d55f YAMFC (rev 1.8; makes mrouted in RELENG_2_2 compilable again) 1997-02-23 16:53:27 +00:00
Joerg Wunsch c332172e2c YAMFC (rev 1.277: install /etc when bootstrapping) 1997-02-23 15:53:25 +00:00
Joerg Wunsch b5ba9b5b72 YAMFC (rev 1.13: rename START_ENTRY to _START_ENTRY; this makes msun
compilable again on RELENG_2_2)
1997-02-23 15:48:14 +00:00
Jordan K. Hubbard 01ba62d67b YAMFC 1997-02-23 15:07:42 +00:00
Satoshi Asami cc95b0e8b1 Merge 1.251, 1.252 and 1.253. 1997-02-23 13:27:40 +00:00
Joerg Wunsch f15f2c057c YAMFC (rev 1.2: turn into legal texinfo; this eases bootstrapping 2.2
from 3.0-current)
1997-02-23 11:48:16 +00:00
Joerg Wunsch dac585682d YAMFC (rev 1.3: remove bogus redeclaration of getenv()) 1997-02-23 11:46:32 +00:00
Joerg Wunsch 5ab47bf0c0 Mega-merge Bruce's msun changes into 2.2. This should bring the
FPU autodetecting code here.
1997-02-23 11:03:23 +00:00
Joerg Wunsch cf9e07cfa0 YAMFC (rev 1.60: add suport for the SMC9332BDT) 1997-02-23 11:00:44 +00:00
Joerg Wunsch 1f9608ebc3 YAMFC (rev 1.2: security fix)
NB: RELENG_2_1_0 still to be done.
1997-02-23 10:48:53 +00:00
Joerg Wunsch ed0ff6f519 YAMFC (rev 1.4: security fixes)
NB: RELENG_2_1_0 still to be done.
1997-02-23 10:47:44 +00:00
KATO Takenori e5ef9193c5 Synchronize with sys/i386/isa/wd.c revision 1.119.2.3. 1997-02-23 05:21:54 +00:00
Joerg Wunsch fbc7b0e509 Update (f)lex to 2.5.4.
Closes PR # bin/2674.
1997-02-23 01:37:13 +00:00
Wolfram Schneider 4e7d561f99 YAMFC: This man page will appear in 2.2, not 3.0. 1997-02-22 23:48:47 +00:00
Mike Pritchard 3d17db0dcf YAMFC: this man page will first appear in 2.2, and is i386 specific. 1997-02-22 23:38:11 +00:00
cvs2svn dd99818c30 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-02-22 22:50:58 +00:00
Mike Pritchard 974c0777cc YAMFC: Bring in sysmouse.4.
The new file sysmouse.4 was tagged onto the RELENG_2_2 branch.
1997-02-22 21:28:37 +00:00
Joerg Wunsch e5bb55672b YAMFC (rev 1.35: allow for cdev LKMs) 1997-02-22 20:50:43 +00:00
Joerg Wunsch 6813038dde Enable ex0. It has been commented out accidentally only. 1997-02-22 20:31:26 +00:00
Joerg Wunsch 1b3d1898b6 YAMFC (danny's change from 97/02/11) 1997-02-22 20:27:07 +00:00
Joerg Wunsch c8dc0e1c0c YAMFC (rev 1.19 and 1.8, resp; move _PathLocale into table.c) 1997-02-22 20:17:22 +00:00
Joerg Wunsch 86a15af733 YAMFC (rev 1.4, Reorder the default man sections) 1997-02-22 20:15:06 +00:00
Joerg Wunsch f6109ac0ba YAMFC (rev 1.27 and 1.39, resp; add -q flag and other fixes) 1997-02-22 20:12:46 +00:00
Joerg Wunsch 637938f272 YAMFC (rev 1.11, fixes PR#2686) 1997-02-22 19:47:28 +00:00
Joerg Wunsch c3f1838328 Humm, should have committed this together with the previous one. 1997-02-22 19:38:46 +00:00
Joerg Wunsch 6915509db8 YAMFC (rev 1.11: fix EOF handling)
Peter or Andrey: please have a look at this.  The diff from rev 1.10
to 1.11 partially failed patching.
1997-02-22 19:36:44 +00:00
Joerg Wunsch cce50feb48 YAMFC (rev 1.5: prevent buffer overrung) 1997-02-22 19:32:49 +00:00
Joerg Wunsch 15468857a8 YAMFC (rev 1.15: fix expansion bug) 1997-02-22 19:31:23 +00:00
Joerg Wunsch 5f9fe6fb8a Merge the revamped fetch(1) from -current. 1997-02-22 19:14:04 +00:00
Joerg Wunsch b0da4f99a3 YAMFC (rev 1.5, and 1.7 respectively) 1997-02-22 18:08:04 +00:00
Joerg Wunsch fe8278e78f YAMFC (rev 1.124: prevent numerical overflow) 1997-02-22 18:02:04 +00:00
Joerg Wunsch 11c9b76503 YAMFC: clean up the signal handling, as committed to -current by
Brian on 97/02/18 17:14:44.
1997-02-22 17:59:11 +00:00
Jordan K. Hubbard 81cb9671d5 Commit a very minor typo fix to a prototype.
Submitted-By: Bill Richter <[email protected]>
1997-02-22 07:34:11 +00:00
Nate Williams 761b159955 Changed FreeBSD -> Id in the release, since the whole FreeBSD matter is
unresolved and the tools don't support it.  It's better to not ship
*anything* with the new ID until things are resolved.
1997-02-22 05:16:10 +00:00
Nate Williams 49a9d4f853 YAMFC: Add ${.CURDIR}/ to relative path to contrib. 1997-02-22 05:00:19 +00:00
Bill Fenner fff8b0e6e4 Bring in fix for PR#misc/2733 from rev 1.32: use interface MTU
instead of TUNMTU constant, and allow "ifconfig ... mtu"

Ok'd by:	jkh
1997-02-21 17:35:37 +00:00
Bill Fenner dc824c3006 Bring in fix for PR#kern/2647 & kern/2783 from rev 1.25 .
Ok'd by:	joerg
1997-02-21 17:30:17 +00:00
Garrett Wollman d028ae87b8 Daring greatly, since everyone else seems to defer to him in these matters,
ourt fearless network person dons his asbestos suit and commits a
security/crash bug fix to the 2.2 release branch.

This merge includes revs. 1.28 (delete mondo switch statement form Hell) and
1.30 (fix bug where ordinary users could panic the system)).
Rev. 1.29 was not merged because of outside dependencies.
1997-02-21 16:48:34 +00:00
Ollivier Robert 9c554cd98b Import security fix from -current:
Security patch from OpenBSD: fixes potential buffer overflow.

Reviewed by:	Warner Losh
Obtained from:	OpenBSD
1997-02-21 08:25:22 +00:00
Adam David a2e146f240 added {de,es,is}_* collates from -current 1997-02-21 02:48:30 +00:00
Jordan K. Hubbard e586c18cb5 Calm down signal behavior here too. 1997-02-20 16:46:39 +00:00
Jordan K. Hubbard 214e44ba18 Merge r1.4 from -current 1997-02-20 07:22:43 +00:00
Mike Pritchard 126ad52993 YAMFC: sort xrefs and fix typo. 1997-02-20 07:05:48 +00:00
Jordan K. Hubbard 3dd3fa5fea YAMFC 1997-02-19 17:12:26 +00:00
David Greenman 0aeb8cb2ed Brought in change from rev 1.15: protect from stack overrun. 1997-02-19 08:09:20 +00:00
Mike Pritchard 289c42d817 YAMFC: Add history section. 1997-02-19 07:13:40 +00:00
Mike Pritchard 1b036924a6 YAMFC: sort xrefs, fix ranges. 1997-02-19 07:09:16 +00:00
Satoshi Asami bcaf230c7a Merge from -current (well, sort of). Make RELDATE=220000 so that we
can add new releases (2.1.8, 2.1.9, whatever) without crossing
lines again.

Silently approved by:	current, core
1997-02-19 06:08:42 +00:00
Mark Murray 627b5340af YAMFC (fix default whois server)
OK'ed by: jkh
1997-02-19 05:48:25 +00:00
Adam David e70b568c25 sync with current 1997-02-19 04:12:35 +00:00
David Greenman a527226685 Brought in change from rev 1.51: preserve P_SUGID if {u,g}gid != r{u,g}id
Note that this doesn't actually fix any known security holes, it just
protects against sloppy programming.
1997-02-19 03:53:35 +00:00
Justin T. Gibbs a3854291d7 Sync with current. 1997-02-19 01:02:21 +00:00
David Greenman 306386c0b9 Brought in change from rev 1.6: update to Jan 22, 1997 rev. 1997-02-18 23:39:17 +00:00
John Dyson 80af0cab46 Move -current's na.phone into release 2.2. 1997-02-18 21:55:10 +00:00
Justin T. Gibbs c2bba5201e Sync with HEAD. 1997-02-18 20:31:44 +00:00
Justin T. Gibbs 65515dc44a Kill the initialization of two old scratch ram variables. They were removed
to make space for the larger message buffer.
1997-02-18 20:01:36 +00:00
Justin T. Gibbs 63a4bcfeb5 Enlarge the message out buffer from 6 to 8 bytes. Now that sync and wide
negotiation messages may be tagged, we were overrunning the old buffer.
The variable that was getting squashed is updated before the message goes
out, causing corrupted SDTR or WDTR messages.  Depending on the phases
traversed before message out, this could cause the wrong offset to be
negotiated allowing data overruns to occur.  The problem is easier to
detect with wide targets on the chain since the allowed offset is smaller.

Also removed the unnecessary  clearing of SPIORDY during the message out
phase.  We don't rely on SPIORDY any more.
1997-02-18 20:00:38 +00:00
Jordan K. Hubbard e691d32024 YAMFC 1997-02-18 16:23:10 +00:00
Bruce Evans 2c09824abe YAMFC (quad_t -> rlim_t in struct rlimit). 1997-02-18 08:09:30 +00:00
Bruce Evans 57dbe911a3 YAMFC (rev.1.9: HAVE_SAVED_SETUID 1 -> 0) to prepare for killing
_POSIX_SAVED_IDS in 2.2.  This change actually has no effect at
runtime, since uucp prefers to use setreuid() for everything.
1997-02-18 07:09:20 +00:00
Jordan K. Hubbard 331fe8330f YAMFC 1997-02-18 04:39:18 +00:00
Justin T. Gibbs b32ee09c8f Sync with current - Disable use of AAP in queueing commands and fix a few
error recovery bugs.
1997-02-18 04:27:08 +00:00
Jordan K. Hubbard 9422a6d178 merge ftp timeout fix. 1997-02-18 01:36:53 +00:00
Jordan K. Hubbard 6582763782 YAMFC 1997-02-17 22:09:41 +00:00
Mike Pritchard df8e89cdb9 YAMFC: These will appear in 2.2, not 3.0. 1997-02-17 16:40:35 +00:00
Mike Pritchard d7275460e4 YAMFC: From rev 1.3: This man page will appear in 2.2, not 3.0. 1997-02-17 16:01:20 +00:00
Mike Pritchard b0f110daff YAMFC: These man pages will first appear in FreeBSD 2.2, not 3.0. 1997-02-17 15:23:00 +00:00
Mike Pritchard df289582fc YAMFC: Sort xrefs, bring man page into line with reality. 1997-02-17 15:03:33 +00:00
Mike Pritchard 2855038af9 YAMFC: From rev 1.25: MLINK fts_set.3 -> fts.3 1997-02-17 14:50:42 +00:00
Jordan K. Hubbard 7eb46df189 YAMFC 1997-02-17 13:42:53 +00:00
Jordan K. Hubbard c132df4a7b YAMFC 1997-02-17 13:31:52 +00:00
David Greenman 9d71d451b9 Brought in change from rev 1.31: pass P_SUGID on to the child of fork(). 1997-02-17 10:59:40 +00:00
Jordan K. Hubbard fab6f7b788 YAMFC 1997-02-17 04:56:34 +00:00
Jordan K. Hubbard 79011b4f90 YAMFC 1997-02-16 23:55:32 +00:00
Jordan K. Hubbard d026de01dd YAMFC 1997-02-16 23:36:45 +00:00
Mike Pritchard a5f5026375 YAMFC: From rev 1.8: fix typos in error messages
From rev 1.9: don't call sendmail with "-f root".
1997-02-16 18:26:18 +00:00
Bruce Evans 319ad1705e YAMFC (use log10() instead of a home made version). 1997-02-16 17:55:41 +00:00
Bruce Evans 4b4336a91d YAMFC (fixed exp(+-Inf), etc.). 1997-02-16 17:40:11 +00:00
Bruce Evans 7d79becfbd YAMFC (don't include <sys/dir.h>). 1997-02-16 17:23:01 +00:00
Bruce Evans ea90c5aaa6 YAMFC (fixed FP register printing, and don't include <sys/dir.h>). 1997-02-16 17:21:16 +00:00
Mike Pritchard b675c197ce YAMFC: From rev 1.6: Add xrefs. 1997-02-16 16:45:18 +00:00
Mike Pritchard 39a8a91c10 YAMFC: Add man6 to SUBDIRS.
The new man6 files were tagged onto the RELENG_2_2 branch.
1997-02-16 16:41:16 +00:00
Mike Pritchard 746a26eb74 YAMFC: add intro(5).
The new file intro.5 was tagged onto the RELENG_2_2 branch.
1997-02-16 16:40:25 +00:00
cvs2svn 2db9c7a614 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-02-16 16:36:32 +00:00
Jordan K. Hubbard e32f43c694 YAMFC 1997-02-16 10:29:51 +00:00
Mike Pritchard 788ddff855 YAMFC: From rev 1.5: mdoc'ify man page. 1997-02-16 07:18:39 +00:00
Mike Pritchard f451897ae7 YAMFC: From rev 1.6: update description of screen layout. 1997-02-16 07:07:11 +00:00
Jordan K. Hubbard 4a99364b5c YAMFC 1997-02-16 00:55:36 +00:00
Bruce Evans bec90bdd5c YAMFC (don't use private versions of vasprintf(), strerror() or
install rule).
1997-02-15 16:55:51 +00:00
Jordan K. Hubbard 7df4319b3e YAMFC 1997-02-15 16:36:16 +00:00
Jordan K. Hubbard a8500cf25d Bring share/examples/mdoc over from -current. Not sure about drivers
or printing, so I'll leave that out for now.
1997-02-15 16:09:33 +00:00
Jordan K. Hubbard 9fb6f4bc07 Sync. 1997-02-15 15:41:44 +00:00
Eivind Eklund f9fc83ddba YAMFC. (Removed a setuid permissions, updated man-page to reflect
this, and removed a now largely irrelevant buffer-overflow.)

Approved by:	joerg
1997-02-15 14:51:47 +00:00
Eivind Eklund 72ab9614f3 YAMFC. (Remove setuid bit and update man-page to reflect this)
Approved by:	joerg
1997-02-15 14:43:35 +00:00
Jordan K. Hubbard ca84108c43 YAMFC42.2 1997-02-15 14:19:04 +00:00
Jordan K. Hubbard 196e927400 Add back missing .endif in 2.2 also.
I don't know if it was the intention to make this no longer
depend on HAVE_FPU or just a slip of the delete finger over the .endif,
but either way it was broke. :)
1997-02-15 14:07:05 +00:00
Jordan K. Hubbard 1287944895 YAMFC 1997-02-15 13:21:19 +00:00
Masafumi Max NAKANE 0cc9e8a2d7 Merge from -current (Addition of -h option). 1997-02-15 11:23:49 +00:00
Joerg Wunsch 6e5da338ec YAMFC (rev 1.2: plug a security hole) 1997-02-15 10:18:12 +00:00
Bruce Evans 296cc427f1 YAMFC (deleted confusing -D's and disabled log1p()). 1997-02-15 05:33:05 +00:00
Bill Paul 8cd5129a74 Merge from -current: disallow empty keys. 1997-02-15 04:37:16 +00:00
Bill Paul d830b1de0e Merge from -current: update the ypservers map first and fix small bogon
in publickey target.
1997-02-15 04:34:30 +00:00
John Polstra cd2995a11b Sync with main branch, except Id->FreeBSD. This is a merge
of 1.10 -> 1.13.
1997-02-14 22:09:15 +00:00
Jordan K. Hubbard 29dab0d8f3 YAMFC 1997-02-14 21:29:27 +00:00
Bruce Evans 35997c43cb YAMFC (moved definitions of PIC* and fixed START_ENTRY). 1997-02-14 11:08:47 +00:00
Mike Pritchard 971ab02ae2 YAMFC: Style fixes. 1997-02-14 07:53:01 +00:00
Mike Pritchard a7d36b2a89 YAMFC: Add boot(9).
The new file boot.9 was tagged onto the RELENG_2_2 branch.
1997-02-14 07:10:05 +00:00
Mike Pritchard c4f3341e83 YAMFC: Add MD5(9). 1997-02-14 06:43:55 +00:00
Mike Pritchard 0745c2980d YAMFC: Document /usr/share/examples/mdoc. 1997-02-14 06:01:04 +00:00
KATO Takenori 148dcd2c00 Synchronize with sys/i386/i386/machdep.c revision 1.209.2.9. 1997-02-14 05:37:48 +00:00
KATO Takenori 39b4b59298 Synchronize with sys/i386/conf/Makefile.i386 revision 1.89.2.2. 1997-02-14 05:35:07 +00:00
John Polstra 5ed050e322 Merge from main branch 1.17 -> 1.18: Always remove old-style "obj"
links in the "cleanobj" target.
1997-02-14 05:11:07 +00:00
Jordan K. Hubbard 3f5bbac8b8 Add entry for the Cortex frame grabber.
Requested-By: Mark Taylor <[email protected]>
1997-02-14 04:37:56 +00:00
David Greenman de965d524d Changed timeout for requesting sense from 100ms to 1 second.
Submitted by:	gibbs
1997-02-14 03:13:37 +00:00
Jordan K. Hubbard c8d3cc14a8 YAMFC (configResolv()). 1997-02-14 02:56:10 +00:00
Jean-Marc Zucconi 20c114834b Apply fix from current (rev 1.49): asssembler->assembler 1997-02-14 01:54:28 +00:00
Jordan K. Hubbard 04ada11a89 YAMFC (pst change to restore @owner/@group/@mode behavior for all files). 1997-02-14 01:53:29 +00:00
Bruce Evans 31687f30cf YAMFC (1.223: don't use magic number 0 in useracc() calls.
1.226: initialize and configure npx stuff better...).
1997-02-14 01:11:30 +00:00
Bruce Evans 6d10ebd1c9 YAMFC (moved nonstandard compiler profiling options out of config).
The 2.2 mkmakefile.c is now the same as rev.1.20 (this commit merges
rev.1.19; rev 1.20 was already merged; 1.21 hasn't been merged).
1997-02-14 00:08:10 +00:00
Bruce Evans c826bcdacb YAMFC (added LINT_PCCARD_HACK stuff so that LINT can be built). 1997-02-13 22:46:43 +00:00
Masafumi Max NAKANE f3c10a6811 Merge from current (Rev.1.2). (Typo fix.) 1997-02-13 22:41:19 +00:00
Bruce Evans bdbc9b998e YAMFC (correctly account for header length in m_pkthdr.len). 1997-02-13 22:36:06 +00:00
Guido van Rooij a13b63d54b YAMFC 1997-02-13 20:07:16 +00:00
Mike Pritchard 7100359a84 YAMFC: sort xrefs and xref vn(4). 1997-02-13 19:00:21 +00:00
Mike Pritchard 251479d8f3 YAMFC: Add sl(4) and ppp(4).
The new files were tagged onto the RELENG_2_2 branch.
1997-02-13 18:49:52 +00:00
KATO Takenori 32a155b983 Synchronize with sys/i386/isa/syscons.c revision 1.182.2.11. 1997-02-13 18:46:01 +00:00
Mike Pritchard 5cc842d4b3 YAMFC: add vn(4).
The new file vn.4 was tagged onto the RELENG_2_2 branch.

Note: the original commit message never went out due to my
aborting part of the commit.

Obtained from: NetBSD
1997-02-13 18:39:10 +00:00
Mike Pritchard 8d171aab67 YAMFC: add motd(5).
The new file motd.5 was tagged onto the RELENG_2_2 branch.
1997-02-13 18:04:53 +00:00
Mike Pritchard f0c81c7d74 YAMFC: From rev 1.3: typo fix. 1997-02-13 17:39:23 +00:00
Mike Pritchard a599a6544a YAMFC: Add psignal(9).
The new file psignal.9 was tagged onto the RELENG_2_2 branch.
1997-02-13 17:22:49 +00:00
Mike Pritchard c5205e865b YAMFC: Add panic(9).
The new file panic.9 was tagged onto the RELENG_2_2 branch.
1997-02-13 17:04:17 +00:00
KATO Takenori 972af13e36 Synchronize with sys/i386/i386/trap.c revision 1.83.2.2. 1997-02-13 12:32:37 +00:00
KATO Takenori 0b0e2c09e5 Synchronize with sys/i386/i386/userconfig.c revision .163.2.15. 1997-02-13 12:30:13 +00:00
KATO Takenori 54222cc0b9 Synchronize with sys/i386/isa/isa.c revision 1.74.2.1. 1997-02-13 12:26:42 +00:00
KATO Takenori f36f8e69e5 Synchronize with sys/i386/isa/npx.c revision 1.31.2.6. 1997-02-13 12:22:35 +00:00
Søren Schmidt 64c944dd10 Oops, cut/paste could be done on tthe WRONG vty :(
pointed out by Kazu.
1997-02-13 11:58:49 +00:00
Bruce Evans ac84106d13 YAMFC (align text to 16-byte boundaries if profiling). 1997-02-13 08:34:40 +00:00
Bruce Evans 764e29ea40 YAMFC (do spl0() in fork1() and not in kernel processes). 1997-02-13 08:17:32 +00:00
Bruce Evans 788bd3dc89 YAMFC (remove some dead code from trapwrite). 1997-02-13 07:51:53 +00:00
Bruce Evans ed29dd348e YAMFC (add the userconfig part of the `ex' driver). 1997-02-13 07:49:51 +00:00
Bruce Evans 23949df397 YAMFC (fixed pedantic syntax error). 1997-02-13 07:33:37 +00:00
Bruce Evans 36b1a75460 YAMFC (don't sync the directory entry for every successful write). 1997-02-13 07:27:18 +00:00
Bruce Evans a19ccc06ec YAMFC (0xa0000 -> ISA_HOLE_START). 1997-02-13 07:20:42 +00:00
Mike Pritchard e6906093bd YAMFC: From rev 1.2: correctly document the ranges of the dom/month
parameters.
1997-02-13 07:18:39 +00:00
Bruce Evans 57180617c4 YAMFC (added a missing prototype). 1997-02-13 07:16:56 +00:00
Satoshi Asami b8b3e79c89 Merge 1.3. 1997-02-13 07:14:55 +00:00
Bruce Evans 5973a24e47 YAMFC (fixed printing of small offsets). 1997-02-13 07:13:19 +00:00
Bruce Evans f0d11942ef YAMFC (fixed benign bogus linkage of one of the ddb linker sets). 1997-02-13 07:10:19 +00:00
Bruce Evans 3ed07c30b6 YAMFC (fixed benign type mismatch; fixed writing just above etext); 1997-02-13 07:06:53 +00:00
Bruce Evans 5b8b7a92ca YAMFC (reenabled i586_optimized_copyin/out yet again). 1997-02-13 06:59:51 +00:00
Jordan K. Hubbard 9715f661f8 Merge recent changes. 1997-02-13 00:32:02 +00:00
Justin T. Gibbs 7ce550ea4b Sync with current. 1997-02-12 18:29:02 +00:00
Justin T. Gibbs 4a4fd54cf6 Sync with current. Clear up data overrun problems. 1997-02-12 18:28:29 +00:00
KATO Takenori f034e62cbd Synchronize with sys/i386/isa/syscons.c revision 1.182.2.10. 1997-02-12 17:52:12 +00:00
Mike Pritchard 4e98f30779 YAMFC: From rev 1.3: typo fix. 1997-02-12 13:50:45 +00:00
KATO Takenori f849645ee2 YAMFC (revision 1.22; check routine for memory window config). 1997-02-12 13:41:21 +00:00
KATO Takenori f88e4783cf YAMFC (revision 1.16; memory address of ed8). 1997-02-12 13:35:52 +00:00
Steven Wallace 3c7741ac29 Bug fix for SNDCTL_DSP_GETOSPACE ioctl. It would report 0 bytes
available in buffer when buffer was completely empty.
It now correctly reports the total buffer space available.

Reviewed by:    jkh, davidg
Obtained from:  Linux 1.3.20's sound driver code (same copyright)
1997-02-12 07:09:14 +00:00
Masafumi Max NAKANE 07fb93e9a2 Merge from -current, rev.1.2. 1997-02-11 18:59:31 +00:00
KATO Takenori 1ce32669fa YAMFC (deleted prototypes; revision 1.11). 1997-02-11 15:02:20 +00:00
KATO Takenori 52d7038694 YAMFC (moved BIOS work area related macros to pc98_machdep.h). 1997-02-11 14:24:55 +00:00
Bill Fenner 0dd7b60d43 Another fix related to pr#bin/2585 . That'll teach me to
grep h_length *.c ...
1997-02-10 06:46:37 +00:00
Bill Fenner 397f220718 Merge mtrace 5.1 from -current. mtrace.h got tagged seperately. 1997-02-10 01:29:40 +00:00
Bill Fenner 70ec6a1c15 Fix possible gethostbyname-related overflows as pointed out in
PR#bin/2585 .

OK'd-by:	joerg
1997-02-10 00:56:38 +00:00
Jordan K. Hubbard bb8a3d7dca Merge r1.12 from HEAD 1997-02-09 23:19:24 +00:00
Mark Murray fecc0c61eb YAMFC (Julian Assange's buffer length fixes) 1997-02-09 21:39:39 +00:00
Mike Pritchard 0773f3467b YAMFC: From rev 1.2: typo police. 1997-02-09 21:19:12 +00:00
Mike Pritchard 94cc32c946 YAMFC: Fix typos. 1997-02-09 21:11:13 +00:00
Joerg Wunsch 06b7ab6997 YAMFC (fix xrefs) 1997-02-09 20:40:46 +00:00
Joerg Wunsch c51e3ae17c YAMFC (add bradelf.1, and merge rev 1.3 of brandelf.c) 1997-02-09 20:38:03 +00:00
cvs2svn f732ee7ed2 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-02-09 20:35:55 +00:00
Joerg Wunsch 68c4e97c48 Various additions from -current: SCSI-related pages, uio.9.
I'm uncertain about ifnet.9, and thus have left it out.
1997-02-09 20:34:08 +00:00
Mark Murray 3dff96feaa YAMFC (Fix the way obj/ is found) 1997-02-09 15:46:43 +00:00
Mark Murray 9a2b8c3aa1 YAMFC (Security fixes and buffer overruns) 1997-02-09 15:26:51 +00:00
KATO Takenori 49dec39aa9 Synchronize with sys/i386/conf/files.i386 revision 1.141.2.7. 1997-02-09 11:01:37 +00:00
KATO Takenori 26c9d108dc Synchronize with sys/i386/conf/files.i386 revision 1.141.2.6. 1997-02-09 10:37:07 +00:00
KATO Takenori c2dfa024ee Synchronize with sys/i386/i386/userconfig.c revision 1.63.2.14. 1997-02-09 10:35:35 +00:00
Mike Pritchard 3d9565db10 YAMFC: From rev 1.7: check return value from system(). 1997-02-09 07:58:34 +00:00
Mike Pritchard d5545015ef YAMFC: From rev 1.4: s/-depth/-d/ 1997-02-09 07:55:05 +00:00
Mike Pritchard 9c027e79d9 YAMFC: From rev 1.7: really drop privs when run with "calendar -a". 1997-02-09 07:47:33 +00:00
Mike Pritchard 8191cddc17 YAMFC: typo fix. 1997-02-09 07:04:16 +00:00
Warner Losh 95736afb74 backport 1.11 (possible security hole in rcmd.c) 1997-02-09 06:57:54 +00:00
Warner Losh a04ca26cbf Merge buffer oflow from -current (rev 1.5) 1997-02-09 05:20:06 +00:00
Warner Losh 18e7b43363 Merge buffer oflow from -current (rev 1.3) 1997-02-09 05:10:04 +00:00
Warner Losh 24f5e22778 Merge buffer oflow from -current (rev 1.4) 1997-02-09 05:05:43 +00:00
Warner Losh 8c96e7942d Merge 1.3 from -current (buffer overflow from OpenBSD) 1997-02-09 04:53:42 +00:00
Warner Losh 8ad09cf030 buffer overflow merge from -current 1.12 1997-02-09 04:41:22 +00:00
Warner Losh 2f4d298701 Backport IP option parsing from -current 1997-02-09 04:34:54 +00:00
John Polstra 6c75387d25 Merge from main branch 1.21 -> 1.22: don't include encrypted passwords
in master.passwd diff output.
1997-02-09 02:08:35 +00:00
Joerg Wunsch b45ea39946 Another driver merge from current: ex(4).
I had to change one line of code, in order to address the changed
syntax/semantics of the address list handling.  Please somebody with
such a card test this driver again in RELENG_2_2.
1997-02-08 15:42:26 +00:00
Joerg Wunsch da207089b6 YAMFC (rev 1.321: correct usage of fea0 driver) 1997-02-08 15:22:39 +00:00
Joerg Wunsch 77cc0a07e9 YAMFC (rev 1.6 and 1.7) 1997-02-08 15:20:28 +00:00
Joerg Wunsch d1d7010e5c Mega-merge from -current: bring in the FDDI driver update.
OKed by:	davidg
1997-02-08 15:14:03 +00:00
Joerg Wunsch f1d1aa0b46 No such thing like too much constant string bloat in the kernel. :-)
YAMFC, no feedback is good feedback, brinng in the help functionality
from rev 1.80.
1997-02-08 14:19:48 +00:00
Joerg Wunsch 2cd42b9ff9 YAMFC: use setlocale.h instead of hardcoded constants and `private'
external declarations all over the place.
1997-02-08 14:16:11 +00:00
Joerg Wunsch b8f0e2e3c7 YAMFC (rev 1.78: add entry for the Nakamichi 4-disk changer) 1997-02-08 13:27:56 +00:00
KATO Takenori d668fc5de5 YAMFC (revision 1.10; hardcoded unit number). 1997-02-08 10:01:29 +00:00
KATO Takenori 472be89b7c Deleted DDB, DIAGNOSTIC and KTRACE. 1997-02-08 06:39:38 +00:00
Daniel O'Callaghan 6f5db6157a Reviewed by: Gary jennejohn
Submitted by:	Bruce Murphy <[email protected]>

Add '-a' audible flag to 2.2, and fix up earlier confusion.
1997-02-08 04:11:36 +00:00
Daniel O'Callaghan 6d6b708d6d Back out the 'audible' changes which went to the wrong branch. 1997-02-08 01:33:34 +00:00
Jordan K. Hubbard f64ca7742b Merge PR#2642 fix from -current 1997-02-07 20:04:53 +00:00
KATO Takenori 33f0d2fc11 YAMFC (revision 1.19; enabled pccard code). 1997-02-07 19:10:01 +00:00
Paul Traina 5f6195af04 Put libopie.a in libnames 1997-02-07 17:06:24 +00:00
David Nugent 883d8d0e9d Change group -P formatting for consistency. 1997-02-07 11:24:51 +00:00
David Nugent fc88536775 Bring in changes from -current:
Corrected usage of MAXLOGNAME (to include NUL)
	Format -P changes.
	rmskey() when deleting user.
1997-02-07 11:21:46 +00:00
Kazutaka YOKOTA 241d2d762b Fix for the Compaq Armada laptop.
The PS/2 mouse device responds to a reset command with a sequence of
ACK(fa), RESULT(aa) and ID(00).  Most PS/2 mice immediately returns
ACK, but spend sometime before sending RESULT. The Armada takes time
before ACK; extra delay is necessary before the call to read ACK.

The problem was reported in comp.unix.bsd.freebsd.misc and the patch
was tested by the reporter. No PR was filed, by the way.
1997-02-07 11:02:44 +00:00
John Fieber 66384342a9 Merge from current.
Approved by:	Jordan
1997-02-07 02:47:27 +00:00
John Fieber 70d202889b Merge from current.
Approved by:	Jordan
1997-02-07 02:40:45 +00:00
John Fieber 52b8f2c72b Merge revision 1.81 changes from current (add share/sgml/docbook). 1997-02-07 02:32:33 +00:00
John Fieber cc43410934 Merge from current.
Approved by:	Jordan
1997-02-07 02:29:33 +00:00
Daniel O'Callaghan d925c163b6 Submitted by: Bruce Murphy <[email protected]>
Update man page to reflect '-a' audible flag.
1997-02-06 22:52:29 +00:00
Daniel O'Callaghan 5e149c858e Reviewed by: Gary Jennejohn
Submitted by:	Bruce Murphy <[email protected]>
Modified files:
	ping.c
Add the '-a' audible flag to ping, useful for debugging ethernets
without requiring the operator to jump up and look at the ping results
every 15 seconds.
1997-02-06 22:48:25 +00:00
cvs2svn 02dc1b38dc This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-02-06 17:52:31 +00:00
Mike Pritchard c374a1f622 YAMFC: s/mfs/mount_mfs/ in the NAME section. 1997-02-06 17:50:44 +00:00
KATO Takenori 9a8ecff9c0 YAMFC (deleted ioskip member; if_ed.c and if_ed98.h revisions 1.20 and
1.12, respectively).
1997-02-06 14:54:22 +00:00
KATO Takenori 4038ce187a YAMFC (revison 1.9; cosmetic change). 1997-02-06 14:13:17 +00:00
Mike Pritchard 7eceaf6714 YAMFC:
- Remove PATH_LOCALE references.
- Don't use hardcoded font changes.
- sort xrefs.
1997-02-06 13:38:34 +00:00
Brian Somers 13e681f359 Roll in info about ip_sum not being zero'd from -current. 1997-02-06 11:38:42 +00:00
Brian Somers e3a85c2378 Roll ip_sum mods into 2.2:
Don't zero ip->ip_sum during sum validation.  This should only
    affect programs that sit on top of divert(4) sockets.  The
    multicast routing code already unconditionally zeros the sum
    before recalculating.

    Any code that unconditionaly sums a packet without first zeroing
    the sum (assuming that it's already zero'd) will break.  No such
    code seems to exist.
1997-02-06 11:33:38 +00:00
Paul Traina df761b7872 Merge from -current 1997-02-06 08:32:55 +00:00
Mike Pritchard a8384ba264 YAMFC: From revs 1.7, and 1.8: fix the -t option, and
don't print strange stuff on Jan 1st.
1997-02-06 05:49:56 +00:00
Mike Pritchard 3ecb22a80b YAMFC: init group list on uid switch, drop privs on exec. 1997-02-06 05:44:32 +00:00
Bill Paul cb20b66654 Merge from -current: close PR# 2645. (Add forgotten curly braces.) 1997-02-06 05:31:10 +00:00
Mike Pritchard 2c96b9b24c YAMFC: From rev 1.3: add some xrefs. 1997-02-06 05:23:07 +00:00
Joerg Wunsch 59ed9f9a48 YAMFC (rev 1.20: fix -a handling upon receipt of SIGHUP) 1997-02-05 23:25:10 +00:00
Joerg Wunsch f708c3addf YAMFC (rev 1.15: comment update) 1997-02-05 23:22:13 +00:00
Joerg Wunsch 8cb12e4158 YAMFC (comment fixes, now that we no longer call getenv(), plus
the initialization fix from rev 1.8 of setrunelocale)
1997-02-05 23:20:54 +00:00
David Greenman 54c0930bf7 Brought in fix from rev 1.4: added missing ioport offset 1997-02-05 22:20:10 +00:00
KATO Takenori cd2621e849 YAMFC (move PC-98 code to pc98_machdep.c; pc98_machdep.c,
pc98_machdep.h, sd.c revisions 1.8, 1.5, 1.100, respectively).
1997-02-05 19:02:22 +00:00
KATO Takenori f7e6b011ab YAMFC (revision 1.2; encoding system). 1997-02-05 16:54:33 +00:00
Mike Pritchard b0596a4a03 YAMFC: sync up with -current. 1997-02-05 14:32:24 +00:00
Mike Pritchard ead16f740d YAMFC: From rev 1.13: don't force postscript output w/man -t. 1997-02-05 14:24:30 +00:00
Mike Pritchard 94b5898f8d YAMFC: From rev 1.8: s/ngen/count/ 1997-02-05 14:18:24 +00:00
KATO Takenori a22ab7531b YAMFC (number of I/O ports; if_ed.c and if_ed98.h revisions 1.19 and
1.11, respectively).
1997-02-05 13:27:22 +00:00
David Greenman 98abd65ab2 Brought in change from rev 1.14: nuke getenv(PATH_LOCALE) 1997-02-05 09:56:14 +00:00
Thomas Gellekum d471695aea Merge from rev 1.4: typos. 1997-02-05 07:39:50 +00:00
Peter Wemm eaa6f67a71 Update 8.8.4 -> 8.8.5 on 2.2 branch 1997-02-05 07:29:29 +00:00
Paul Traina 5e2ef6007b Merge man page (only) with -current 1997-02-05 06:02:38 +00:00
Paul Traina 589b31cbeb Merge with -current 1997-02-05 06:01:06 +00:00
Paul Traina eb148c60f5 Merge from head:
revision 1.48
    date: 1997/01/26 01:37:05;  author: pst;  state: Exp;  lines: +1 -1
    Don't use /tmp for afterdepend cleanup target
1997-02-05 05:09:13 +00:00
Jordan K. Hubbard b5a3c3e7fc Propagate "real filesystem" changes to 2.2. 1997-02-05 04:36:42 +00:00
Joerg Wunsch 2795d6e0e2 Resurrect the broken `doc' subdir, now that i've got access to a real
2.2 machine.
1997-02-05 00:37:28 +00:00
KATO Takenori 88c978ca37 YAMFC (revision 1.10; deleted struct pc98_device). 1997-02-04 22:32:31 +00:00
Joerg Wunsch 9cbc895934 Remove extraneous cruft we don't need anymore. This fixes the
compilation problems people have been seeing (which were caused by the
compilation picking up the old header files).

I've already wondered while doing the mega-merge why these files had
magically disappeared... of course, they weren't cvs rm'ed yet.
1997-02-04 22:26:53 +00:00
John Hay 1b4463c060 Merge the ntp changes from current. This is the latest code from David Mills
and is needed for the latest versions of xntpd.
1997-02-04 21:04:17 +00:00
David Greenman 23341251a4 Brough in changes from rev 1.28: changes to configuration options 1997-02-04 11:45:02 +00:00
David Greenman 3ff13177ef Brought in changes from main branch: do selective rather than full reset. 1997-02-04 10:54:00 +00:00
David Greenman 1cfaa777c5 Brought in fix from rev 1.26: don't count a short frame as an input error. 1997-02-04 07:41:01 +00:00
Thomas Gellekum b9f48c3707 Merge from rev. 1.10: typo. 1997-02-04 07:08:44 +00:00
Joerg Wunsch b7f68923a3 Fix my misplaced patch from yesterday... *blush* 1997-02-03 23:15:51 +00:00
Justin T. Gibbs 4d250fe326 AHC_FORCE_PIO hasn't existed for a while now. Remove it from here.
Memory mapped I/O is now a "positive" option AHC_ALLOW_MEMIO.
1997-02-03 22:53:24 +00:00
KATO Takenori 9bdc010363 YAMFC (revision 1.13; retry count and deleted extra DEALY). 1997-02-03 17:56:27 +00:00
Justin T. Gibbs 7edc5cfbbe Initialization of a variable got lost in the last commit when I moved
a piece of code into a subroutine.
1997-02-03 17:24:25 +00:00
Justin T. Gibbs bd0cb3611b Sync with -current. 1997-02-03 16:29:29 +00:00
KATO Takenori 6801fcf5ea Synchronize with sys/i386/isa{clock.c,if_fe.c} revisions 1.72.2.1 and
1.20.2.2, respectively.
1997-02-03 11:00:42 +00:00
Justin T. Gibbs 432cad44e2 Sync with current. 1997-02-03 02:18:18 +00:00
John Polstra d1c849bab3 Merge two bug fixes from main branch:
Use xmalloc instead of malloc:
        ld.c            1.38 -> 1.39
        support.c       1.2  -> 1.3

    Fix miscounting of N_INDR (alias) symbols:
        ld.c            1.39 -> 1.40
1997-02-03 00:50:35 +00:00
Joerg Wunsch 6ca99aea7a YAMFC (rev 1.76: don't default a failing device to T_DIRECT) 1997-02-02 20:58:31 +00:00
Joerg Wunsch 27386147e5 Mega-merge to bring over the new gdb (now from `contrib').
Note that the `doc' subdir is currently broken and disabled, but i
need to see all this on a true 2.2 machine before i can fix this, and
therefore need this commit first.
1997-02-02 20:50:26 +00:00
Joerg Wunsch ddb3f981e5 YAMFC (rev 1.30, fix a typo) 1997-02-02 19:14:08 +00:00
Joerg Wunsch 6b6d5f89f3 YAMFC (various timer fixes -- rev 1.30, 1.7, 1.7 resp.) 1997-02-02 19:06:21 +00:00
Joerg Wunsch 2bf15eb191 YAMFC (rev 1.19: avoid illegal tags in <TITLE>) 1997-02-02 18:58:52 +00:00
Joerg Wunsch 180023a2d7 YAMFC (rev 1.11: fix handling the name "msdos") 1997-02-02 18:57:22 +00:00
Joerg Wunsch 8f4f036260 YAMFC (revisions 1.4, 1.56, and 1.48, respectively) 1997-02-02 18:55:34 +00:00
Joerg Wunsch e8c76d4d79 YAMFC (rev 1.26: put newlines after log messages) 1997-02-02 18:52:09 +00:00
Joerg Wunsch 75fd7b88d9 YAMFC (rev 1.74: guard against unititialized timer etc.) 1997-02-02 18:50:13 +00:00
Joerg Wunsch 378fefac4f YAMFC (rev 1.11 & 1.12: identify AMD CPUs) 1997-02-02 18:47:05 +00:00
Joerg Wunsch a362408f6b YAMFC (rev 1.76 & 1.77, eliminate im and ei caps for VTxxx-style ttys) 1997-02-02 18:44:45 +00:00
Joerg Wunsch 87a161ec5d YAMFC: add the ex.4 man page. 1997-02-02 18:34:54 +00:00
Joerg Wunsch 4346598573 YAMFC (rev 1.5 Use collate in [a-z] ranges) 1997-02-02 18:30:54 +00:00
Joerg Wunsch 200f358489 YAMFC (rev 1.12) 1997-02-02 18:12:29 +00:00
Joerg Wunsch 6816d661e3 YAMFC (rev 1.72: add dtterm) 1997-02-02 18:11:01 +00:00
Masafumi Max NAKANE 44da356598 Merge from -current:
- Better handling of command-line arguments.
  - Drop the privilege right after the program execution so that it doesn't
    have problem with saving game in progress.

backgammon/main.c (Rev.1.5)
common_source/back.h (Rev.1.2)
              init.c (Rev.1.2)
              subs.c (Rev.1.6)
teachgammon/teach.c (Rev.1.5)
1997-02-02 13:18:45 +00:00
KATO Takenori a943dcb724 YAMFC (deleted i386_cpus[]). 1997-02-02 10:51:24 +00:00
KATO Takenori ef4608e82a Synchronize with sys/i386/isa/sio.c revision 1.147.2.7. 1997-02-02 08:10:39 +00:00
Mike Pritchard b5c00e6e60 YAMFC: From rev 1.8: update some path refs. 1997-02-02 01:01:50 +00:00
Joerg Wunsch 5693435cc2 YAMFC (rev 1.3: correct synopsis of PCI driver) 1997-02-01 19:56:04 +00:00
John Hay 29f9a22a0d Bring in v1.5 from -current which fix pr 2595. 1997-02-01 18:36:27 +00:00
Bruce Evans ce6f3eb6e4 YAMFC (everything except $FreeBSD$, i.e., ESP fixes from rev.1.157 and
SMC-fix fix and DCD timestamp fix from rev.1.158.  The SMC-fix fix
isn't really necessary here yet since DELAY() still subtracts 20).
1997-02-01 16:19:05 +00:00
KATO Takenori b3865af487 Synchronize with sys/i386/i386/locore.s revision 1.75.2.2. 1997-02-01 15:55:17 +00:00
David Greenman 6541c2e8da Merge changes from main branch: kill use of PG_N. It's confirmed that
this was the cause of the panics when using the Cyclades PCI card with
FreeBSD. (Yeah!)
1997-02-01 12:11:03 +00:00
John Polstra 94025afd98 Merge from main branch 1.4 -> 1.5: update list of mirror sites. 1997-02-01 05:43:41 +00:00
Jordan K. Hubbard f0b17814b2 Add 2.2 GAMMA site to FTP site list. 1997-02-01 03:03:02 +00:00
Jordan K. Hubbard 150ba25539 Merge this file too, from previous set of changes. 1997-02-01 02:49:50 +00:00
Jordan K. Hubbard f3f6dfe8d8 Merge helpfile changes from -current. 1997-02-01 01:32:23 +00:00
KATO Takenori e57bbcf3b6 YAMFC (KNFize). 1997-01-31 17:47:35 +00:00
KATO Takenori 8e6865783d Synchronize with sys/i386/conf/options.i386 revision 1.26.2.5. 1997-01-31 11:25:54 +00:00
Jordan K. Hubbard aeda4adfb0 Set branch to GAMMA 1997-01-31 09:09:25 +00:00
David Greenman 30eeff9b56 Brought in change from rev 1.26: extend disk units to 512. 1997-01-31 05:40:46 +00:00
John Dyson e324519f9c Move forward the inherit fix from copy on write segs from -current.
Submitted by:	Alan Cox <[email protected]>
1997-01-31 04:17:20 +00:00
Mike Pritchard 75218277dd YAMFC: From rev 1.2: add more arguments. 1997-01-31 02:26:24 +00:00
Mike Pritchard c4234a8c67 YAMFC: Correct Sydney's settlement date. 1997-01-31 02:25:08 +00:00
Mike Pritchard b57cf10195 YAMFC: From rev 1.5: fix a typo. 1997-01-31 00:16:15 +00:00
Mike Pritchard c37c596aa3 YAMFC: From rev 1.2: improve example. 1997-01-31 00:15:27 +00:00
Joerg Wunsch cfe71dcfa5 YAMFC (type mismatch, rev 1.43) 1997-01-30 22:49:29 +00:00
KATO Takenori 5a2eb6a516 Synchronize with sys/i386/isa/sio.c revision 1.147.2.6. 1997-01-30 12:00:59 +00:00
KATO Takenori ba994902a5 Synchronize with sys/i386/isa/npx.c revision 1.31.2.5. 1997-01-30 11:57:44 +00:00
Kazutaka YOKOTA 93876b521a Modified to include option headers. No functional change. 1997-01-30 11:42:02 +00:00
Kazutaka YOKOTA 36ed0fef31 Listed PSM_XXX and KBDIO_XXX options. 1997-01-30 11:38:57 +00:00
Satoshi Asami 2963eaba88 Merge 1.11 -> 1.12 and 1.13 -> 1.14 (rlim_t). The one missing revision
is (of course) $FreeBSD$.
1997-01-30 11:08:01 +00:00
Thomas Gellekum 974763d9b1 Merge from rev. 1.28: PRINTER -> PRINTERDEVICE. 1997-01-30 07:37:14 +00:00
Jordan K. Hubbard d470daecc3 Fix typo. 1997-01-30 06:36:56 +00:00
Jordan K. Hubbard 0812916a8c Sync with Justin's latest.
Requested-By: gibbs
1997-01-30 01:14:17 +00:00
Jordan K. Hubbard a30424396e Allow user to delete as well as install packages from the package
installer menu.

Fix status line code so informationals show up properly again.
1997-01-29 22:35:05 +00:00
Jordan K. Hubbard 50e199358e Merge. 1997-01-29 21:46:13 +00:00
Bruce Evans 54d4400365 Disabled resetting of fifos in siostop(). It wedges Hayes ESPs. 1997-01-29 21:41:02 +00:00
Jordan K. Hubbard c08597167b MFC. 1997-01-29 21:16:36 +00:00
Bruce Evans 5f6eb1011e YAMFC (removed `Debugger("sdopen: no slices")'). 1997-01-29 14:20:16 +00:00
Bruce Evans 33d8f81e70 YAMFC (disabled logging of masked exceptions on exit). 1997-01-29 13:47:29 +00:00
Adam David f96090af37 sync with -current
(pick up some debris)
1997-01-29 13:25:26 +00:00
Adam David 7336d9e0b5 merge improvements from -current
("not" keyword)
1997-01-29 13:15:43 +00:00
KATO Takenori 28d18b3fe2 YAMFC (reset port address of PC-9801-108). 1997-01-29 12:49:29 +00:00
Jordan K. Hubbard 5c16f4c852 Merge 1.97 FC. 1997-01-29 03:30:46 +00:00
Jordan K. Hubbard 0c95cba4f1 Merge 1.43 FC. 1997-01-29 01:23:22 +00:00
Jordan K. Hubbard 9a83ffce5e Sync with -current. 1997-01-29 01:11:29 +00:00
Poul-Henning Kamp 59f767f587 YAMFC (8K buffer instead of 4K) 1997-01-28 11:28:36 +00:00
Poul-Henning Kamp 0246071dc0 YAMFC (if_vx is always in promiscous mode) 1997-01-28 11:22:25 +00:00
David Greenman 42165f24a1 Brought in fixes from 1.30/1.31: fix for signal handler race condition 1997-01-28 07:15:44 +00:00
Mike Pritchard 05ec449cf0 YAMFC: From rev 1.6: update man page to reflect current
state of fstab.h.
1997-01-28 06:17:31 +00:00
Mike Pritchard d08a245552 YAMFC: from rev 1.2: fix the comment on fs_passno. 1997-01-28 06:15:55 +00:00
Mike Pritchard 8a4586b4f7 YAMFC: from rev 1.6: add some additional xrefs. 1997-01-28 05:44:09 +00:00
Mike Pritchard 48efa2070b YAMFC:
From rev 1.5 of mkfifio.2 and rev 1.4 of mknod.2:

Add some additional xrefs.
1997-01-28 05:43:20 +00:00
Joerg Wunsch e0dde95954 YAMFC (local copy of fromname from rev. 1.11) 1997-01-27 15:39:28 +00:00
Poul-Henning Kamp 0d434c76d3 YAMFC (netatalk entries) 1997-01-26 09:21:39 +00:00
Mike Pritchard 4b20a12169 YAMFC: from rev 1.6: re-document the "-v" option. 1997-01-26 07:48:21 +00:00
Mike Pritchard 9ce30cea88 YAMFC: From rev 1.5: fix some grammar. 1997-01-26 05:51:55 +00:00
Mike Pritchard 953e4e95fd YAMFC: add a couple of missing errno's. 1997-01-26 03:57:11 +00:00
John Dyson 07806cbe19 Move a missing object (panic fix) in vmspace_fork from -current
into 2.2.
1997-01-26 03:14:59 +00:00
Mike Pritchard 7716bdd089 YAMFC:
From rev 1.7: typo fix
From rev 1.5: sort xrefs
1997-01-26 02:35:15 +00:00
Mike Pritchard aea254eca8 YAMFC:
Install the new de.4, fxp.4, ix.4, le.4, lnc.4, ze.4 and zp.4 man
pages.  They have all been tagged onto the RELENG_2_2 branch.
1997-01-25 20:51:30 +00:00
KATO Takenori c0baec9032 YAMFC (revision 1.11; default IORT). 1997-01-25 10:43:18 +00:00
Warner Losh f4ddc6009c Apply patch from pr2536, after testing locally.
Fixes: PR2446 and PR2536

Submitted by: Flemming Jacobsen <[email protected]>
1997-01-25 05:28:20 +00:00
John Dyson e1b2d1f0b8 Move i386 support.s fixes into the 2.2 branch. 1997-01-25 03:23:09 +00:00
Satoshi Asami 2c212bcf3c Merge from 1.249 minus $FreeBSD$ changes. 1997-01-25 02:52:10 +00:00
Satoshi Asami 95459e3032 Merge from 1.5: explain interleave and mirroring. 1997-01-25 02:13:02 +00:00
Stefan Eßer d29f638121 Merge in 1.62 -> 1.63 from main branch. 1997-01-25 02:02:40 +00:00
Jordan K. Hubbard 609f1afc83 Merge slicing naming changes from -current. 1997-01-24 21:08:30 +00:00
Jordan K. Hubbard af0719316a Merge the last 3 days worth of hackery from -current. This will also require
a merge of libdisk (coming next).
1997-01-24 21:06:06 +00:00
Stefan Eßer 349a45442f Merge in diff from 1.61 to 1.62 from -current: Make pci_map_int() reject
a request to use IRQ 0 for a PCI card interrupt. The PCI standard requires
255 to be put into the INTERRUPT LINE register if no IRQ has been routed to
some PCI device, but a value of 0 is used by many PCI BIOS implementations.

This patch fixes a panic for a system with an on-board AMD SCSI chip, that
was disabled in the BIOS setup, but got attached with IRQ 0 by the previous
code.
1997-01-23 23:28:14 +00:00
Jordan K. Hubbard 22a63264ba Merge fixes for mondo-brokenness from -current (my face is red). 1997-01-22 00:29:00 +00:00
David Nugent 5ec8eddb49 Merge from current: copy proc resource before modification. 1997-01-21 16:40:21 +00:00
KATO Takenori 394e4817a9 Synchronize with sys/i386/isa/syscons.h revision 1.23.2.2. 1997-01-21 08:11:20 +00:00
KATO Takenori f4dd6e9335 Synchronize with sys/i386/isa/syscons.c revision 1.182.2.10. 1997-01-21 07:24:37 +00:00
Søren Schmidt 7150fcec2a Update usage of load_palette to mach reality... 1997-01-20 19:59:47 +00:00
Søren Schmidt 37f318c694 Oops dont define SC_SPLASH_SCREEN as default :( 1997-01-20 19:59:31 +00:00
John Polstra 561a4a3115 Merge bug fix from main branch 1.43 -> 1.44: If a library is found
in the hints file, but the library doesn't exist, ignore the hint.
1997-01-20 19:37:13 +00:00
KATO Takenori 13fa038b31 Synchronize with sys/i386/i386/machdep.c revision 1.209.2.8. 1997-01-20 18:30:45 +00:00
Jordan K. Hubbard bd56e1cac2 Merge David O'Brien's changes from -current. 1997-01-20 16:15:30 +00:00
Jordan K. Hubbard 5ed4d4ff27 Merge fix for +DISPLAY files. 1997-01-20 15:42:57 +00:00
Mike Smith bacd92f6bd Fix prototype for load_palette to match reality. Tsk. 1997-01-20 12:44:10 +00:00
KATO Takenori a18e956177 Synchronize with sys/i386/isa/syscons.c revision 1.182.2.8. 1997-01-20 12:39:07 +00:00
Søren Schmidt 542f144a0b Fix the bug that caused CTRL & ALT keys to be hanging sometimes after
an X seesion. Really stupid error of me, and I've been looking at
this code SO many times. Thanks to Kazutaka YOKOTA for seeing this..

Submitted by: Kazutaka YOKOTA
1997-01-20 08:14:33 +00:00
Søren Schmidt 8984b3eb9f Modified moused to use select rather than read. This fixes using
the PS/2 mouse (psm device).
Submitted by:   Kazutaka YOKOTA <[email protected]>
1997-01-20 08:12:07 +00:00
Bill Paul 82948804fa Bring in fix from -current (remember to set index pointer). 1997-01-20 03:34:55 +00:00
Søren Schmidt 4d68f8cff8 Oops the position of the savefont code was wrong, cur_console
wasn't set yet..
1997-01-19 17:32:51 +00:00
Jordan K. Hubbard 159634069a Whups! Eliminate one small change which shouldn't have been merged. 1997-01-19 10:59:06 +00:00
Jordan K. Hubbard d024529317 Merge 1.159 and 1.31 (respectively). 1997-01-19 10:27:58 +00:00
Jordan K. Hubbard 5b8ca72619 Syncronize with -current; too many merge lines to really put here. 1997-01-19 09:59:43 +00:00
KATO Takenori 62eb84fb2b YAMFC (staticize PC98 functions). 1997-01-18 16:16:52 +00:00
KATO Takenori dc5712fbc2 YAMFC (device_info[]; revision 1.26). 1997-01-18 16:01:38 +00:00
Paul Traina 578a8776c7 Fix buffer overrun problem. 1997-01-18 08:35:17 +00:00
Joerg Wunsch 61dfdc30ed Bump the escapetime here, too. 1997-01-17 23:12:33 +00:00
Joerg Wunsch cd39ec838a YAMFC (rev 1.11: Matsushita 634 MB PhaseChange Drive) 1997-01-17 23:07:31 +00:00
David Greenman 2cb0b70080 Brought in fixes from current: fix for network/map entry alloc panic. 1997-01-17 19:28:39 +00:00
Joerg Wunsch 606b584c67 YAMFC (page 0x10 from rev 1.5) 1997-01-17 18:57:12 +00:00
Joerg Wunsch cd989fcb86 YAMFC (off-by-one error from rev 1.4) 1997-01-17 18:56:47 +00:00
KATO Takenori 953048e352 YAMFC (fix unit select; revision 1.16). 1997-01-17 17:02:33 +00:00
KATO Takenori a7dff83e9a YAMFC (LPC_ENA in lpt driver related change). 1997-01-17 14:56:54 +00:00
Jordan K. Hubbard 9aef5b5c3c Merge:
1.53      +3 -1      src/release/sysinstall/Makefile
  1.36      +1 -2      src/release/sysinstall/main.c
1997-01-17 10:59:22 +00:00
Jordan K. Hubbard 6af2152dde Merge last 3 days worth of -current changes. 1997-01-17 08:53:50 +00:00
Jordan K. Hubbard 943b5ee50a Merge:
1.32      +50 -40    src/gnu/lib/libdialog/checklist.c
  1.9       +4 -0      src/gnu/lib/libdialog/dialog.priv.h
  1.30      +74 -65    src/gnu/lib/libdialog/menubox.c
  1.34      +61 -52    src/gnu/lib/libdialog/radiolist.c

From -current [do people like that format better?]
1997-01-17 08:28:42 +00:00
KATO Takenori 5b8cb7bb4c YAMFC (ds_subtype and ds_name fix in revision 1.7). 1997-01-16 08:31:47 +00:00
Jordan K. Hubbard 38fce2654f Merge serial device selection fix, better FTP error handling, etc. from
-current
1997-01-16 01:19:27 +00:00
Jordan K. Hubbard 7dd33c60bc Merge r1.41 from -current 1997-01-15 15:32:26 +00:00
Jordan K. Hubbard 634237a465 Merge fixes to upgrade and ppp/slip registration. 1997-01-15 13:46:16 +00:00
Søren Schmidt db156c4427 Oops upgrade the docs in the 2.2 branch
Reviewed by:
Submitted by:
Obtained from:
1997-01-15 12:13:39 +00:00
Søren Schmidt 73d3688442 Latest fixes for the psm mouse device, also updates the docs
to reflect the new options etc..

Submitted by:	Kazutaka YOKOTA <[email protected]>
1997-01-15 12:04:11 +00:00
Jordan K. Hubbard 4c5d22195d Merge signal handler bug. 1997-01-15 08:01:32 +00:00
Jordan K. Hubbard b9e6b2024a Get a head start on GAMMA 1997-01-15 07:44:50 +00:00
Jordan K. Hubbard 4b9e037d02 Merge this up-to-date. 1997-01-15 07:31:24 +00:00
KATO Takenori 13b4fb51ba Undo dirty fix for the overfolw of wdp_cylinder, becasue wdreg.h
revision 1.15, was merged.
1997-01-15 05:39:12 +00:00
Jordan K. Hubbard ab1d6ce62a Merge the current state of sysinstall into 2.2. 1997-01-15 04:50:23 +00:00
Mike Pritchard 7062700ba4 YAMFC: From rev 1.11: document the "more" command. 1997-01-15 04:47:23 +00:00
Jordan K. Hubbard 71aa8f61b0 Merge emacs command support from -current 1997-01-15 04:33:27 +00:00
Bruce Evans 695756726e YAMFC (fixed type of wdp_cylinders, etc.). 1997-01-14 17:32:07 +00:00
Nate Williams 116a3e078e Bring in the apm & pccard devices into 2.2. 1997-01-14 17:19:38 +00:00
Bruce Evans 99144cad40 YAMFC (made this work again). 1997-01-14 16:54:20 +00:00
Bruce Evans 88ae6de546 YAMFC (everything from rev.1.17). 1997-01-14 16:43:51 +00:00
Bruce Evans 58efa27338 YAMFC (fixed context switching of FPU state after a fault in
i586_optimized_copyin/out).

i586_optimized_copyin/out is still disabled in 2.2.

Not a full merge - $FreeBSD$ gets in the way now.
1997-01-14 16:17:21 +00:00
Bruce Evans 5eb0eb940e YAMFC (fixed misapplied patch in rev.1.3 (not in rev.1.2 like the HEAD
log says)).
1997-01-14 10:35:10 +00:00
Bill Paul 844f16e692 Sync ypserv with current. This brings in the async resolver support,
which is needed to help prevent ypserv from blocking due to repeated
DNS lookup requests. (Sendmail seems to be a source of lots of these;
if you mail to an domain who's nameserver is dead or unreachable, lots of
child ypservs can accumulate while waiting for the timeout. This is
no longer a problem with the async resolver.)

Tested and suggested by: Peter Wemm
1997-01-14 01:33:57 +00:00
Bill Paul 8d84153a09 change yp_errno to enum ypstat (another merge from -current) 1997-01-14 01:27:41 +00:00
Bill Paul 697b58ad00 Bring in __dns_getanswer() wrapper from -current. 1997-01-14 01:26:38 +00:00
David Nugent 11a58db513 This is a partial close on PR bin/1387 for the RELENG2_2 branch.
Skip invalid lines in /etc/group rather than bailing out and
losing all remaining groups in the file after the error.
syslog message at LOG_ALERT issued (this may get a little
verbose, unfortunately, but I can't see any way of avoiding
that).
1997-01-13 17:52:14 +00:00
Poul-Henning Kamp e07d8383ef YAMFC (fix BB profiling) 1997-01-13 12:16:21 +00:00
Satoshi Asami aec050dd2a Merge from 1.16: skip non-existent SUBDIRs. 1997-01-13 02:15:40 +00:00
Joerg Wunsch 3140a58b50 YAMFC (The ``Logical unit is in the process of becoming ready''
fix from rev 1.40)
1997-01-12 22:09:53 +00:00
Joerg Wunsch b0cf53ede5 YAMFC (rev 1.75) 1997-01-12 22:08:57 +00:00
Joerg Wunsch ab5eb680ec YAMFC (add libgmp.so.2.0) 1997-01-12 22:08:03 +00:00
Joerg Wunsch c7f3ae3b92 YAMFC (don't log twice to wtmp file) 1997-01-12 22:06:13 +00:00
Joerg Wunsch eec2bf7d68 YAMFC (various corrections up to rev 1.6) 1997-01-12 22:04:52 +00:00
Joerg Wunsch b9ab266923 YAMFC (buffer overflow fixes) 1997-01-12 22:02:49 +00:00
Joerg Wunsch c263d83522 YAMFC (workaround for fg pipelines failing on tcsetpgrp) 1997-01-12 21:58:49 +00:00
Joerg Wunsch d82f9fa210 YAMFC (buffer overrun fixes, don't check for username starting with
a dash)
1997-01-12 21:56:36 +00:00
Joerg Wunsch 979943e28c YAMFC (fix some fd leaks) 1997-01-12 21:54:32 +00:00
Joerg Wunsch e68599c201 YAMFC (various buffer overflow condx, imp's commit from 97/01/09 23:53:31) 1997-01-12 21:52:50 +00:00
Joerg Wunsch 3e3413d2cb YAMFC (rev 1.20) 1997-01-12 21:44:54 +00:00
Joerg Wunsch 6a5706b5ab YAMFC (rev 1.4 of swap.c) 1997-01-12 19:39:21 +00:00
Satoshi Asami 7ccbdf2b62 Merge in rev. 1.245 and 1.246. 1997-01-12 12:40:51 +00:00
Mike Pritchard b1f8852f84 YAMFC: add missing RETURN VALUES/ERRORS sections 1997-01-12 00:39:28 +00:00
Mike Pritchard c7fd256104 YAMFC: DIAGNOSTICS -> RETURN VALUES 1997-01-12 00:09:35 +00:00
Mike Pritchard 25e2834400 YAMFC:
Remove error definitions about path arguments having
the high-order bit set.
1997-01-12 00:00:45 +00:00
Mike Pritchard 7257d9ea3b YAMFC:
Minor mdoc cleanup and add missing RETURN VALUES/ERRORS sections.
1997-01-11 23:34:47 +00:00
Mike Pritchard d1ddff807e YAMFC: From rev 1.6: remove the comment about file
names having to be 7 bit clean.
1997-01-11 22:32:26 +00:00
Mike Pritchard 7047728be3 YAMFC: bring the stat(2) manpage into line with what
is actually in stat.h.
1997-01-11 21:46:43 +00:00
Mike Pritchard e780e210db YAMFC: add a note to the -l option about configuring syslog. 1997-01-11 20:20:08 +00:00
Mike Pritchard 8f0398b23f YAMFC: add some xrefs. 1997-01-11 20:01:47 +00:00
Satoshi Asami ddf26eb51e Merge 1.244 - "!(" -> "! (". 1997-01-11 11:33:49 +00:00
KATO Takenori 0aa9d5efd8 YAMFC (rev. 1.9; fix typo). 1997-01-11 09:03:39 +00:00
KATO Takenori 47b1da8f2c YAMFC (rev. 1.8; initialize routine of Cyrix 5x86). 1997-01-11 07:34:22 +00:00
Poul-Henning Kamp 67ef4dfb9a YAMFC (aha1 doesn't work) 1997-01-10 09:08:46 +00:00
KATO Takenori c2665e8ab1 Very dirty fix for the overflow of the number of cylinders problem.
This fix use casts to the wdp_cylinder ralated variables, because
wdreg.h has not yet been merged.

I will remove those casts, when wdreg.h, revision 1.15, is merged from
current.

Reviewed by:	H. Nokubi <[email protected]>
            	Akinobu Tanaka <[email protected]>
1997-01-10 09:04:00 +00:00
Nate Williams 1e7cf1d995 The 2.2-Beta version doesn't have the brackets after the if statement.
This has the effect of making every link a "passthrough" which means the
TCP or UDP port won't be freed after link deletion -- so there could be
eventual port exhaustion if the program were allowed to operate long
enough.

Submitted by:	Charles Mott <[email protected]>
1997-01-10 08:32:05 +00:00
KATO Takenori 95e773d574 YAMFC (revision 1.8; fix ft driver panics). 1997-01-10 06:54:36 +00:00
Mike Pritchard 6064ff51d3 YAMFC: add a man page for mixer(8).
The new file mixer.8 was tagged onto the RELENG_2_2 branch.
1997-01-10 06:34:46 +00:00
Mike Pritchard 46cdecc8f3 YAMFC: install the linux(8) man page.
The new man page was tagged onto the RELENG_2_2 branch.
1997-01-10 05:54:36 +00:00
Mike Pritchard 6607514e50 YAMFC: fix some spelling errors. 1997-01-10 05:30:42 +00:00
Mike Pritchard 9845480ec7 YAMFC: From rev 1.8: xref cd(1). 1997-01-10 05:07:47 +00:00
John Dyson 8c503437a8 Fix CCD for bounced devices. 1997-01-10 04:09:13 +00:00
John Polstra 89ebd1bc49 Sync with main branch: return sysexits(3) status codes on failure. 1997-01-09 20:01:47 +00:00
Poul-Henning Kamp ada021190f YAMFC (i386/2427: 2.2-BETA ft driver panics when there're no floppy drives) 1997-01-09 12:51:33 +00:00
Mike Pritchard 77cfd388b2 YAMFC:
From rev 1.7: make the man page agree with the command output.

Closes PR# 646.
1997-01-09 06:50:34 +00:00
Mike Pritchard 29b303100b YAMFC:
From rev 1.10: EAGAIN, not EACESS is returned when F_SETLK
collides with an existing lock.
1997-01-09 05:31:08 +00:00
Alexander Langer 695d72618d YAMFC (typo fix from rev 1.55). 1997-01-09 02:42:45 +00:00
John Polstra 1fa5aafa53 Bring in "lockf" from the main branch.
Approved by:	joerg, phk
1997-01-08 23:35:09 +00:00
cvs2svn e60a1ae5dd This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-01-08 20:13:00 +00:00
Joerg Wunsch 844e36350c YAMFC (rev 1.8) 1997-01-08 12:03:59 +00:00
Joerg Wunsch 6c389d217d YAMFC (round offset down to page boundary, and fix an uninitialized
variable).
1997-01-08 12:03:20 +00:00
Mike Pritchard d9ec28f982 YAMFC:
A collection of spelling fixes and minor grammar corrections.
1997-01-08 07:18:28 +00:00
Mike Pritchard bb40138019 YAMFC:
From rev 1.2: Correct some misleading text.
1997-01-08 07:13:29 +00:00
Mike Pritchard 34bf612540 YAMFC:
Fix some typos and remove some duplicate fortunes.
1997-01-08 07:08:05 +00:00
Mike Pritchard ce09c14eb9 YAMFC
Fix some formatting problems.
1997-01-08 06:43:36 +00:00
Mike Pritchard 5d8c96c6c3 YAMFC:
From rev 1.3: Fix a couple of typos.
1997-01-08 06:38:49 +00:00
Peter Wemm 87d4c57515 Fix double typo that breaks the build 1997-01-08 03:02:09 +00:00
Warner Losh ee81c82fec Fix many buffer overflows, correct usage of strcat and implement
$TAPE.  Inspired by OpenBSD's work in this area.

Reviewed by:	Peter Wemm, Guido van Rooij and Jordan Hubbard.
Obtained from: OpenBSD
1997-01-07 20:48:24 +00:00
Satoshi Asami 8f5ce86a9d Merge from 1.10: -C error message fix. 1997-01-07 10:46:31 +00:00
Satoshi Asami 78f34660c1 Regenerate these from tcl_bmake/mkMakefile.sh so expect and friends
compile again.  (Sort of a YAMFC, I guess.)
1997-01-07 06:22:36 +00:00
Bill Paul a7a5e2ff03 Bring in fix for 'panic: sillyrename dir' crash from -current. (Don't
sillyrename directories in nfs_rename().)
1997-01-07 06:18:27 +00:00
Stefan Eßer 14c2e8fb7b Merge in 1.93 from main branch: Fix typo ...
Submitted by:	sos
1997-01-06 21:12:40 +00:00
Stefan Eßer 741a5baf4d Fix NetBSD pr kern/3067, which also applies to FreeBSD:
NCR driver dies when "xmcd" accesses the CD-ROM drive

Restrict cacheing of INQUIRY results to LUN 0.

Thanks to Dave Huang <[email protected]> for reporting the problem
and suggesting a fix, though I chose a slightly different one.
1997-01-05 23:10:23 +00:00
Nate Williams 7eddd59e83 BIOSETIF -> BIOCSETIF. 1997-01-05 22:17:18 +00:00
Joerg Wunsch 469644f0bf Add a few notes of a warning regarding SCB paging on the `ahc' driver,
and use of tagged command queuing in general.  Too many people get
hosed by this.

By now, only done in the release candidate.  Matters in -current are
more of a moving target.

Closes (basically) PR # kern/2371: SCSI disk corruption
1997-01-05 16:13:44 +00:00
KATO Takenori 6306d1dc2f Merge from current (Undo RCS keyword change). 1997-01-05 07:25:14 +00:00
Nate Williams b9e8885465 Bring in pointer validation fix from -current. 1997-01-05 06:34:11 +00:00
KATO Takenori 769e8242e4 Merge from current, revision 1.11 (declaration of the rtc_outb). 1997-01-05 05:12:06 +00:00
David Nugent 657f308675 Merge from -current (fix dup #include). 1997-01-05 04:55:32 +00:00
David Nugent 18ab2258f2 Merge typo fix from -current. 1997-01-05 04:06:43 +00:00
KATO Takenori 496830aff2 Merge from current rev. 1.10 (disable i586_optimized_copyin/out). 1997-01-05 02:49:13 +00:00
KATO Takenori 3be071ece6 YAMFC (from rev. 1.14: fix collapse code). 1997-01-04 20:18:34 +00:00
KATO Takenori 857ec2877f Change $NetBSD$ into $Id$. 1997-01-04 19:53:44 +00:00
KATO Takenori b6362673fd Merge from elink.h revision 1.2 and if_ep.c revision 1.55 (3COM 3C569
support on PC98).
1997-01-04 19:04:58 +00:00
KATO Takenori bc01087993 The reference to b_cylin was removed in revision 1.11.2.3. Undo. 1997-01-04 18:42:46 +00:00
KATO Takenori fefe0bb8a5 Merge from revision 1.2 (fix cursor address calculation). 1997-01-04 18:05:35 +00:00
KATO Takenori ccbc5de87d YAMFC (use breakpoint instead of Debugger). 1997-01-04 17:05:45 +00:00
KATO Takenori c695660a97 YAMFC (fix typo). 1997-01-04 17:03:55 +00:00
KATO Takenori 9a1148eda0 YAMFC (staticize). 1997-01-04 17:02:27 +00:00
KATO Takenori f3b8430a6c YAMFC (fix IMR in isa_defaultirq). 1997-01-04 17:01:01 +00:00
KATO Takenori 56d12bc8e0 YAMFC (test in mseopen). 1997-01-04 16:59:17 +00:00
KATO Takenori 1a5ffb430b YAMFC (correct include file). 1997-01-04 16:58:31 +00:00
KATO Takenori cd300f685d YAMFC (fix I/O port table). 1997-01-04 16:52:36 +00:00
KATO Takenori 9a448be597 YAMFC (fix uninitialized block of memory). 1997-01-04 16:50:53 +00:00
KATO Takenori 59e6adf4a8 YAMFC (C-NET(98) support). 1997-01-04 16:48:26 +00:00
KATO Takenori 3f6d6d8487 YAMFC (cosmetic change). 1997-01-04 16:32:38 +00:00
KATO Takenori c91d3fedc2 YAMFC (from rev. 1.19). 1997-01-04 16:31:24 +00:00
KATO Takenori 7b874305ea YAMFC (up to rev. 1.14). 1997-01-04 16:29:37 +00:00
KATO Takenori 11f809b1ee YAMFC (clean up). 1997-01-04 16:19:16 +00:00
KATO Takenori ef7557a989 YAMFC. 1997-01-04 16:16:06 +00:00
Poul-Henning Kamp fffd976e09 YAMFC (keep dmesg.boot in /var/run) 1997-01-03 08:18:58 +00:00
Jordan K. Hubbard 5dda5c003d Merge r1.17 from current 1997-01-03 07:24:16 +00:00
Jordan K. Hubbard 21089c9020 Merge. 1997-01-03 06:41:51 +00:00
Jordan K. Hubbard a4dcbe5762 Merge all the -current changes in /usr/src/release. 1997-01-03 06:38:42 +00:00
David Nugent 1e6ba99b30 Brings /usr symlink kludge into 2.2 branch. 1997-01-03 06:33:15 +00:00
Mike Pritchard f1825b4272 YAMFC:
From rev 1.2: correct short description of the function
1997-01-02 20:18:13 +00:00
Mike Pritchard 84840809b7 YAMFC:
Change the description for section 4 man pages.
1997-01-02 20:03:17 +00:00
Mike Pritchard 2951b6480c YAMFC: various minor man page cleanups 1997-01-02 17:48:16 +00:00
Mike Pritchard e638b2b555 YAMFC:
From rev 1.3: Grammatical changes.
1997-01-02 16:45:32 +00:00
cvs2svn 848077bb79 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1997-01-02 10:14:19 +00:00
John Dyson 49a79574c8 By mistake (my omission) did not include Alan Cox for previous contributions.
This is now remedied for 2.2-RELEASE also.
1997-01-02 04:27:59 +00:00
Stefan Eßer b03fd3ad93 Merge from -current: Copy LDT on fork, if necessary.
Approved by: jkh
1997-01-02 02:21:09 +00:00
Stefan Eßer 4f1edbefe8 Merge from -current: Add Intel VX chip set. 1997-01-02 01:26:18 +00:00
Warner Losh 04f88c6864 Merge into 2.2, per jordan.
Various security related deltas from OpenBSD

dirs.c:
	From OpenBSD 1.2, 1.3, 1.5, 1.8, 1.10, 1.11, 1.12
	1.2:
		use unique temporary files; netbsd pr#2544;
		[email protected]
	1.3:
		updated patch from [email protected]
		to also make -r and -R work again
	1.5:
		mktemp open & fdopen
	1.8:
		/tmp// -> /tmp/
	1.10:
		Fix strncpy usage and correct strncat length field,
		from Theo.  Also change some occurrence of MAXPATHLEN
		with sizeof(foo).
	1.11:
		does noone know how to use strncat correctly?
	1.12:
		use mkstemp()
	From NetBSD:
		Use open rather than create so we can specify
		exclusive open mode.

main.c:
	From OpenBSD 1.2, 1.5
	1.2:
		From NetBSD: support $TAPE.
	1.5
		Set umask to be read only by owner until we set real
		file permissions.
tape.c:
	From NetBSD:
		Use open rather than create so we can specify
		exclusive open mode.
1997-01-01 00:05:22 +00:00
Mike Pritchard 98879271af YAMFC:
Sort xrefs.
1996-12-31 22:58:00 +00:00
Mike Pritchard dcad4baeb2 YAMFC:
sort xrefs
1996-12-31 22:50:44 +00:00
Mike Pritchard 0d4f1e61ad YAMFC:
- sort xrefs
- add i386 to .Dt macro
- mdoc police
1996-12-31 22:44:49 +00:00
Mike Pritchard 5a025b743a YAMFC:
Give each manual section a unique name.
1996-12-31 22:34:15 +00:00
Bill Paul 806f378fa2 Merge in rest of YP buffer/NUL termination fixes. 1996-12-31 17:42:32 +00:00
Bill Paul 85921a688f Bring in YP buffer size/NUL termination fixes from -current. 1996-12-31 16:22:35 +00:00
Satoshi Asami 7fe6940156 Merge from 1.22. 1996-12-31 14:02:05 +00:00
Mike Smith bc552e377a YAMFC (add 'de' capability)
Approved-by:	jkh
1996-12-31 05:50:28 +00:00
Joerg Wunsch 1ae18b6ed0 YAMFC (rev 1.22: fix a NULL dereference) 1996-12-30 21:18:32 +00:00
Mike Pritchard f14e86f4e2 YAMFC:
Install the new login*.3 man pages and pty.3.
mdoc changes to setproctitle.3.

The new man pages were tagged onto the RELENG_2_2.
branch.
1996-12-30 21:15:45 +00:00
Joerg Wunsch 9323e8f562 YAMFC (rev 1.130: make all the gsc devs) 1996-12-30 20:52:22 +00:00
Joerg Wunsch 7c6605ed8b YAMFC (rev 1.23, fix a NULL dereference) 1996-12-30 20:46:19 +00:00
Peter Wemm bb641fdbaa Provide weak references to functions that will replace certain names in
the 4.9.4-P1 resolver that we have in libc as of 2.2 and current 3.0.

When 4.9.5-P1 is imported, certain well known functions will "go away"
and be replaced by functions under new names.. which just happen to be
what these weak references point to.

The result should be that while 2.2 and 3.0 keep using libc.so.3.0, they
should be binary compatable even though they have a different version of
the resolver in their libc's.  Of course, if the new resolver makes it into
2.2-RELEASE (which it probably should if it's stable), then this is
irrelevant. :-)
1996-12-30 12:35:20 +00:00
David Nugent f6324c7720 Merge hyphen fix and base homedir creation from -current. 1996-12-30 12:06:23 +00:00
Jordan K. Hubbard 4075bea7ed Merge ^Q fix from current. 1996-12-30 09:06:10 +00:00
Poul-Henning Kamp ef00de5be9 YAMFC (document MD5 option) 1996-12-30 08:20:26 +00:00
Poul-Henning Kamp 6a38ef7676 YAMFC (Make md5 available in kernel.) 1996-12-30 08:18:18 +00:00
Poul-Henning Kamp c15e202a5b YAMFC (md5 is now available in the kernel too) 1996-12-30 08:16:09 +00:00
Alexander Langer 0fdb40467e Bring in thread locking fix from rev 1.19.
Approved by:	jkh
1996-12-30 01:35:15 +00:00
Bruce Evans e254454834 YAMFC (fixed keeping track of interrupt nesting level across ASTs). 1996-12-29 22:06:49 +00:00
Joerg Wunsch 70257027f1 YAMFC (staticize from rev 1.12) 1996-12-29 11:05:57 +00:00
Joerg Wunsch 490c6897ca YAMFC (revert to trailing space abbrevs) 1996-12-29 11:04:35 +00:00
Joerg Wunsch e0ceff1ee9 YAMFC (use strcoll() instead of strcmp()) 1996-12-29 11:02:19 +00:00
Joerg Wunsch 8295b2b6a6 YAMFC (rev 1.11, 1.7, and 1.13 resp.) 1996-12-29 11:01:36 +00:00
Joerg Wunsch 84f5c83a10 YAMFC (rev 1.17: turn off debug) 1996-12-29 10:56:49 +00:00
David Greenman fba82b9e7a Brought in change from rev 1.8: delete bogus inconsistency check. 1996-12-29 09:23:37 +00:00
Mike Pritchard 9528d56cf3 YAMFC:
From rev 1.9: add examples for mount_mfs
From rev 1.8: Update default values, misc cleanup
1996-12-28 23:54:14 +00:00
Mike Pritchard 719eb902bd YAMFC:
From rev 1.6: Note that sysconf isn't completely POSIX conforming.
1996-12-28 23:47:37 +00:00
Mike Pritchard 06979aa7b7 YMAFC:
Teach mdoc about section 9 and i386 man pages
Teach the FreeBSD (.Fx) macro about 2.1.6 and 3.0.
1996-12-28 22:53:35 +00:00
Bruce Evans 510c2423d2 Disabled i586-optimized copyin and copyout again. The fault handler
is still broken - it doesn't restore the floating point state.

2.2-BETA users should disable it using npx0 flags 0x04 the same as
2.2-ALPHA users should have.
1996-12-28 12:19:25 +00:00
Warner Losh f216293217 Merge Marc Slemko's overflow patches from -current.
Approved by:	[email protected]
1996-12-27 05:52:11 +00:00
John Polstra 5829140eff Sync with main branch: add src-release and src-tools collections. 1996-12-27 04:09:59 +00:00
Mike Pritchard 7635785c65 YAMFC:
Bring in various man page cleanups.
1996-12-26 22:54:52 +00:00
Joerg Wunsch 5a00ef4e01 Sync documentation with HEAD (rev 1.15 and rev 1.29, resp.) 1996-12-26 21:31:42 +00:00
Joerg Wunsch 08cfa6778d YAMFC (rev 1.15) 1996-12-26 18:54:46 +00:00
Joerg Wunsch 267f2ccd8a YAMFC (rev 1.10 for Makefile, with en_US.ISO_8859-1.src being tagged
into 2.2 behind the scene)
1996-12-26 18:52:45 +00:00
Joerg Wunsch 271c7565fa Remove a bogus free() to a variable that was alloca'ed.
Mmmmaybe closes PR # misc/2281: sysinstall panics...
1996-12-26 18:46:13 +00:00
Joerg Wunsch 7dcc9e9d95 Merge the patch from -current to enable the `eisa' keyword in the CLI
UserConfig.  I've unfortunately missed this one before the BETA. :-(
1996-12-26 18:44:35 +00:00
Joerg Wunsch 56bde78c23 YAMFC (rev 1.77: allow ports up to 0xffff) 1996-12-26 18:42:38 +00:00
Jordan K. Hubbard 60d598e641 Whups, back out this change which made it in erroneously in the last commit. 1996-12-26 04:52:55 +00:00
Jordan K. Hubbard a9b1d7e43b Merge r1.146. 1996-12-26 03:33:19 +00:00
Bill Paul 4213c47f70 Merge from current: remember to NUL terminate local result buffer. 1996-12-24 17:15:16 +00:00
Steven Wallace ca80cc518a In the IBCS2 semctl system call, the last parameter arg is passed by
value, but in the FreeBSD semctl system call implementation, is passed
by  reference.

Submitted by:    [email protected] <Miguel Angel Sagreras>
1996-12-24 07:06:35 +00:00
Jordan K. Hubbard 0a89823eef YAMFC 1996-12-24 01:10:25 +00:00
Jordan K. Hubbard 48fafb06a7 Whups, nuke release.10 over here too. 1996-12-23 23:27:50 +00:00
Jordan K. Hubbard 519bf94796 YAMFC 1996-12-23 21:47:59 +00:00
cvs2svn 91823711a8 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-12-23 21:19:31 +00:00
Bruce Evans dc73e5cef6 YAMFC (use breakpoint() instead of Debugger() in siointr1()). 1996-12-23 19:59:08 +00:00
Joerg Wunsch ab3fde8480 YAMFC (de-quote the DFLDSIZ and MAXDSIZ options) 1996-12-23 18:59:06 +00:00
Bruce Evans 9466d1ad0f YAMFC (fixed spelling of SCSI_NCR_MAX*). 1996-12-23 18:58:25 +00:00
Joerg Wunsch 95f3cfd06c YAMFC (fix a logico in the manpath handling, and drop locate's stderr). 1996-12-23 18:56:53 +00:00
Nate Williams e33ea312cf Style issues.
Used complete sentences in the error messages (including punctuation), and
re-ordered the include files to be more consistant.

Not done:

Dynamically determine if the old drivers and the new drivers both exist,
since LINT currently won't compile now with both sets included. (This
will be fixed when we can remove the old drivers permanently.)

Suggested by:	bde
1996-12-23 18:42:38 +00:00
Jordan K. Hubbard 7043e4bae9 Document new features of ppp. 1996-12-23 18:16:45 +00:00
Jordan K. Hubbard 1b56107ab7 Merge from -current. 1996-12-23 18:13:50 +00:00
Joerg Wunsch 6eb5e8ec19 YAMFC (from rev 1.79) 1996-12-23 12:35:16 +00:00
Joerg Wunsch cdac2477b3 YAMFC (security enhancements) 1996-12-23 12:30:24 +00:00
Joerg Wunsch bff34fa53a Merge from -current: add kernelopts.sgml. 1996-12-23 12:27:51 +00:00
Jordan K. Hubbard 799705e20d Fix breakage from -current. 1996-12-23 06:37:48 +00:00
Peter Wemm 03e827f3c1 Almost forgot the sample entries in make.conf to turn on the compat stuff. 1996-12-23 06:21:53 +00:00
Peter Wemm 2fc7d538ec Use the new compat dist build method so Jordan can use it. 1996-12-23 05:56:51 +00:00
Peter Wemm ff89164460 Add compat to SUBDIR so Jordan can use it. 1996-12-23 05:54:57 +00:00
Satoshi Asami 10cd5b4b04 Merge from 1.241: checksum code improvements. 1996-12-23 02:53:12 +00:00
Mike Pritchard d78a110902 YAMFC:
More man page cleanup.
1996-12-23 02:20:37 +00:00
Mike Pritchard a668d5a7b8 YAMFC:
Convert some man pages to mdoc format.  Other minor
mdoc/style/spelling/grammar fixes.
1996-12-23 02:09:59 +00:00
Jordan K. Hubbard 190dda712d Syncronize the entire /usr/src/share/doc tree with -current.
I'm sure John Fieber will scream at me concerning some magic symbol
buried *somewhere* in this, but I can't find the last mail he sent me
about such things so if my fears prove correct, we can just fix it
for the release.
1996-12-23 02:03:46 +00:00
Joerg Wunsch 5ef42f014e YAMFC (rev 1.36) 1996-12-23 01:55:21 +00:00
Jordan K. Hubbard f12d340f1b Some last-minute tweaks for the BETA. 1996-12-23 01:52:16 +00:00
Jordan K. Hubbard 350480d9d8 Correct breakage from -current. 1996-12-23 01:28:54 +00:00
Joerg Wunsch b868bfb31a Merge the fix from rev 1.108: consider all ptys. 1996-12-23 00:36:58 +00:00
Mike Pritchard 60fea1acec YAMC:
Add the appropriate MLINKS for the new skey.3 man page,
and skey.3 was tagged onto the 2.2 branch.
1996-12-22 23:21:58 +00:00
Joerg Wunsch 9b04918f3b YAMFC: Make DFLDSIZ and MAXDSIZ fully-supported options.
(This commit is in the RELENG_2_2 branch, in case this ain't obvious
from the message.  I just don't know yet for sure.)
1996-12-22 23:21:26 +00:00
Mike Pritchard 8192cecc4c YAMFC:
- Correct various man page xrefs
- Fix some spelling errors
- Add misssing documentation bits in some man pages
- mount_std.8 now documents mount_{devfs,fdesc,kernfs,procfs}
- New man pages for moused(8), devfs(5), fdesc(5), kernfs(5), procfs(5)
  were tagged onto the 2.2 branch.
1996-12-22 23:05:40 +00:00
John Dyson 51aa0fbfe3 Support the DFLDSIZ and MAXDSIZ options in LINT. 1996-12-22 20:25:52 +00:00
Jordan K. Hubbard 195cd56e1a Merge revision 1.7 from -current. 1996-12-22 18:04:25 +00:00
Joerg Wunsch c5c14b6a39 Back out the change from rev 1.3.2.2: the overflow is already handled
elsewhere.
1996-12-22 15:46:43 +00:00
Joerg Wunsch 21fbeb540e YAMFC (rev 1.2) 1996-12-22 15:39:20 +00:00
Joerg Wunsch 7f2ed5ccbe YAMFC (Add \' to valid escapes list to be compatible with printf) 1996-12-22 15:38:42 +00:00
Joerg Wunsch ce29a74cca YAMFC (cvsup client moved from sbin to bin) 1996-12-22 15:37:52 +00:00
Joerg Wunsch 1e818beb7b Part 2 of backing out the botched localtime merge from -current. 1996-12-22 15:36:08 +00:00
Joerg Wunsch 8cc1a336c1 Back out my botched merge of the libc_r ctime functions.
(More commits to follow.)
1996-12-22 15:34:31 +00:00
Joerg Wunsch 1e4b25596c YAMFC (Whitespace handling in <start>, <end> and <replace>...) 1996-12-22 15:32:27 +00:00
Joerg Wunsch ac633b67ad YAMFC (rev 1.2, buffer overrun condition) 1996-12-22 15:28:04 +00:00
Joerg Wunsch 3e076a19b7 YAMFC (Fix the tclsh build environment.) 1996-12-22 15:17:59 +00:00
Joerg Wunsch d67bce6c2c YAMFC (Close PR #2193: support backslash line continuations.) 1996-12-22 15:13:03 +00:00
Joerg Wunsch ef0f098c83 YAMFC: rev 1.14. 1996-12-22 15:10:27 +00:00
Joerg Wunsch 8bdcd94e29 YAMFC (merged rev 1.2). 1996-12-22 15:05:14 +00:00
Joerg Wunsch c0808fc268 YAMFC:
Initialize the upper 16 bits of the memory sizes properly (to 0).
1996-12-22 15:04:15 +00:00
Joerg Wunsch cb566ccbd3 YAMFC (rev 1.3, fix for PR#bin/2212) 1996-12-22 15:03:05 +00:00
Joerg Wunsch 0a241f8499 YAMFC (everything up to rev 1.78) 1996-12-22 15:01:42 +00:00
Joerg Wunsch 55b59b472d YAMFC (various buffer overflow fixes) 1996-12-22 14:57:53 +00:00
David Nugent 369f28e650 Fix for -d home directory in usermod.
Approved by: joerg
1996-12-22 10:48:48 +00:00
Mike Pritchard 2d21c22f9d YAMFC:
Convert various man pages to mdoc format.

Grammar/style/misc changes in calendar.1.

Update mdoc.template(7) to reflect two required requests.
1996-12-21 23:59:59 +00:00
Satoshi Asami 848120aac4 Merge from HEAD (1.10): NLS support. 1996-12-21 22:47:17 +00:00
Joerg Wunsch feddc8e960 Fix a bug i've introduced in rev 1.4 of options.c. A missing trailing
`foo' in `-b foo' caused an access to never-never-land.

(The version in -current is changed, so this fix is not applicable
there but only in the 2.2 branch.)
1996-12-21 21:10:25 +00:00
Nate Williams 8919369190 YAMFC (buffer over-run problems, fixed IP cksum code)
Ok'd by:	jkh
1996-12-21 20:09:57 +00:00
Nate Williams 8f1ab9ea75 Bring in PCCARD safety belts from the HEAD.
Ok'd by:	jkh
1996-12-21 20:03:36 +00:00
Bruce Evans 52ce0e98ad YAMFC (fixed spelling in comments). 1996-12-21 19:26:09 +00:00
Bruce Evans dc03510277 YAMFC (fixed lseek() on named pipes by adding new descriptor type
DTYPE_FIFO).
1996-12-21 19:04:32 +00:00
Bruce Evans 26077d50d8 YAMFC (allow harmless sigactions for SIGKILL and SIGSTOP). 1996-12-21 18:57:24 +00:00
Poul-Henning Kamp d4e935b63f YAMFC (MFS_ROOT before NFS) 1996-12-21 18:55:34 +00:00
Mark Murray caf2429980 YAMFC (Fix separate streams fom mixing their output) 1996-12-21 18:55:18 +00:00
Bruce Evans 2533321273 YAMFC (don't accept negative pgids in setpgid()). 1996-12-21 18:50:15 +00:00
Bruce Evans 4df87281a9 YAMFC (fixed arg checking in if_advlock()). 1996-12-21 18:46:21 +00:00
Bruce Evans 9a7e03d399 YAMFC (fixed nonexistent checking of lock type for F_GETLK). 1996-12-21 18:44:04 +00:00
Bruce Evans 5f6a8c30c5 YAMFC (disabled half-baked disk statistics support). 1996-12-21 18:33:49 +00:00
Bruce Evans 7eafa1dd4c YAMFC (only handle copyin/out/etc faults when not in an interrupt handler). 1996-12-21 18:27:28 +00:00
Bill Paul d6aae70445 >Date: Fri, 20 Dec 1996 11:46:33 -0800
>Message-ID: <[email protected]>
>From: "Jordan K. Hubbard" <[email protected]>
>Status: O

>Permission granted!

>> wpaul       96/12/20 11:41:16
>>
>>   Modified:    lib/libc/yp  yplib.c
>>   Log:
>>   Fix for bug noticed by Christoph Kukulies.
[file descriptors getting host by _yp_dobind()]
>>   This is basically a one-liner. Once I confirm that it fixes Christoph's
>>   problem, I'd like permission to put it in the 2.2-RELENG branch.

Target confirmed destroyed.
1996-12-21 18:17:42 +00:00
Bruce Evans 347feb399c YAMFC (moved printing of BIOS geometries to correct place). 1996-12-21 18:16:22 +00:00
Bruce Evans 114067edf0 YAMFC (fixed formatting of KERN_DUMPDEV). 1996-12-21 18:03:38 +00:00
Stefan Eßer 636d90ebac Partial merge from -current:
Remove unused struct element ns_async.
Add support for larger offsets support by 53c825A and 53c875.
Modify negotiation message to report actual MB/s (taking WIDE into account).
1996-12-21 12:25:29 +00:00
Stefan Eßer cd8e4119d2 Merge from -current: Remove unused struct element ns_async. 1996-12-21 12:13:40 +00:00
Stefan Eßer e8c2e7ac64 Add options for NCR PCI SCSI driver. 1996-12-21 02:23:23 +00:00
Stefan Eßer 0ca566d112 Merge in some -current changes:
1) Remove MAX_LUN=2 hack, 8 LUNs are probed now, even if FAILSAFE is defined.
2) Include "opt_ncr.h" for driver options.
3) Rename SCSI_DEBUG_FLAGS to SCSI_NCR_DEBUG.
4) Add brackets to expansion of OUTx macros.
5) Fix recognition of 53c810A and 53c825A chips.
6) Improve snooptest failure message.
7) Removed (previously disabled) timeout code.
1996-12-21 02:22:34 +00:00
Stefan Eßer a59d796a6d Add "controller amd0" to enable AMD 53c974 PCI SCSI driver. 1996-12-21 02:10:51 +00:00
Stefan Eßer 8aeef2dacd Add amd driver.
List NCR/Symbios chips supported by ncr driver.
1996-12-21 02:05:51 +00:00
Stefan Eßer c0276ffe11 Add "amd" driver: AMD 53c974 PCI SCSI (eg. Tekram DC-390 and DC-390T) 1996-12-21 02:01:57 +00:00
Stefan Eßer 395e9b6d91 Merge in rev. 1.6 from -current: Add ProLAN and Compex PCI IDs. 1996-12-21 01:56:48 +00:00
Andrey A. Chernov 06b0068a37 Merge with current 1996-12-21 01:24:08 +00:00
Joerg Wunsch 038377282f Merge the fix from rev 1.4. 1996-12-20 22:28:54 +00:00
cvs2svn 33317389ba This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-12-20 21:52:12 +00:00
Joerg Wunsch 8cfed4babe Merge the fix from rev 1.73 into 2.2. 1996-12-20 20:49:09 +00:00
Satoshi Asami 8cf9852d19 Merge from HEAD, -DALLLANG explanation. 1996-12-20 08:20:06 +00:00
Joerg Wunsch d102185c03 Merge the fix form rev 1.29: refuse to open the device if not configured. 1996-12-19 18:34:49 +00:00
Joerg Wunsch ca1ec5cff4 Merge rev 1.107: add /usr/local/sbin to $PATH. 1996-12-19 18:08:00 +00:00
David Greenman f6d5d2430b Merge with -current: Digiboard driver improvements from davidn. 1996-12-19 14:57:36 +00:00
Satoshi Asami cc0bc1b4dc Back out my "moving HEAD" fix, apparently this was just a tip of an iceberg
of ugly hacks, and causes many side-effects in places it shouldn't.

The cvs people are aware of the problem but can't solve it, so I don't think
I should be touching it either.  Instead, I'll fix the documentation to say
"HEAD is meaningless if you have a sticky tag in a file".
1996-12-19 08:53:49 +00:00
Jordan K. Hubbard 5be747a14d YAMFC, drop man privs before calling popen(). 1996-12-19 00:31:20 +00:00
Bruce Evans 9af4dc78d2 YAMFC (updated _POSIX_VERSION). 1996-12-18 13:18:37 +00:00
Bruce Evans 78dc821756 YAMFC (made O_NOCTTY distinct). 1996-12-18 13:08:08 +00:00
Bruce Evans 2b55b6092c YAMFC (fixed unportabilities in calibration of nullfunc_loop_profiled()). 1996-12-18 13:03:56 +00:00
Bruce Evans 6e8049bcfd YAMFC (updated comments to reflect IEXTEN fixes in tty.c). 1996-12-18 12:49:51 +00:00
Bruce Evans 078b6507fe Merged revs 1.85-1.88 from -current: fixed handling of IEXTEN, BREAK and
orphaned process groups, and help broken d_stop() routines.
1996-12-18 12:38:40 +00:00
Bruce Evans 84890e0612 YAMFC (fixed garbage being returned for constant int values. The log
message for rev.1.67 neglected to say that there is only a problem for
values of 0).
1996-12-18 11:45:41 +00:00
Satoshi Asami 15ea322f05 Merge from HEAD. 1996-12-18 02:29:17 +00:00
Jordan K. Hubbard 2eb03efcdd Merge -r1.21 from current. 1996-12-17 20:28:06 +00:00
Jordan K. Hubbard 62bb4104e0 Merge r1.6 (fix for PR#1864). 1996-12-17 19:30:37 +00:00
Jordan K. Hubbard 29566ebf6d Don't use CBREAK, use RAW. 1996-12-17 15:20:20 +00:00
Stephen McKay bde343ed7f Fix from main branch: a Makefile that installs ctm_dequeue.1 instead of just
looking like it could install it.  It might be a bit soon for me to get the
pointy hat, but I think I should try it on for size, just in case...

Approved by: joerg (I hope)
1996-12-17 14:40:40 +00:00
Stephen McKay fac24c27e3 Brought in ctm_dequeue documentation from the main branch.
Approved by: joerg
1996-12-17 14:07:51 +00:00
Satoshi Asami 6bb58cd48a Merge from HEAD. 1996-12-17 12:24:44 +00:00
David Greenman 89f1e2ea47 Sync with ../i386/i386/machdep.c changes for buffer/map allocations. 1996-12-17 04:37:25 +00:00
Nate Williams 216dea5a61 Added comments on how to setup syscons to work on older ThinkPads.
Ok'd by:	jkh
1996-12-17 00:54:52 +00:00
Joerg Wunsch f6dc336fdb Merge the buffer overflow fix from HEAD. 1996-12-16 17:39:02 +00:00
John Polstra aadcaa4ec1 Sync with the main branch. 1996-12-16 17:36:13 +00:00
Bruce Evans d1ec3bf6e4 Merged revs 1.150-1.154 from -current: cleaned up CONSPEED changes and
fixed handling of CREAD, TS_BUSY, flushing and BREAKs.
1996-12-15 20:24:39 +00:00
Bruce Evans f95983b84c YAMFC (added -I for keyboard #defines). 1996-12-15 19:46:10 +00:00
Bruce Evans 1122dc8b88 YAMFC (don't clobber the SIGCONT bit in the signal mask in sigreturn()). 1996-12-15 19:25:41 +00:00
Jordan K. Hubbard ce0ec49084 Merge r1.16 by request of Bill Fenner. 1996-12-15 18:59:49 +00:00
Jordan K. Hubbard 32664a7872 Merge from HEAD.
Also forgot to mention in previous commit that all the help changes are
my attempt to update things a bit before 2.2 BETA.
1996-12-15 18:29:54 +00:00
Bruce Evans 4c3ef1e2db Merge from -current (don't use space below the CPU stack). 1996-12-15 15:23:17 +00:00
Bruce Evans 855b9610a8 Merge from -current (clean up the FPU stack before returning). 1996-12-15 15:15:45 +00:00
Bruce Evans 710f53404d YAMFC (added -I for keyboard #defines). 1996-12-15 15:05:23 +00:00
Bruce Evans 99fb6017f4 YAMFC (give up early for empty partitions). 1996-12-15 14:52:14 +00:00
Joerg Wunsch 3506b1e893 Merge from HEAD: increase the size of the execv() vector. 1996-12-15 11:29:24 +00:00
David Greenman fd9e75afff Merge from -current: vm_map_entry leak fix, John's vm_map coallesce fixes,
and changes for dynamically-sized buffers.
1996-12-15 09:57:15 +00:00
David Greenman 9947fb2825 Merge from -current: John's dynamically-sized buffer changes. Needed to
fix msdosfs corruption.
1996-12-15 09:54:28 +00:00
Jordan K. Hubbard b5d4a968bf Merge simplification of Makefile. 1996-12-14 23:54:42 +00:00
Jordan K. Hubbard a90a687539 Reference floppy readme.txt and toplevel about.txt files appropriately. 1996-12-14 22:50:25 +00:00
Jordan K. Hubbard 7aae518ae0 Bring in changes for better -c behavior from -current. 1996-12-14 22:37:54 +00:00
Jordan K. Hubbard 91e116b49f Sync doc fixes from current 1996-12-14 22:32:31 +00:00
Jordan K. Hubbard 0925934a27 To use the dosio library fully, I also (duh!) have to retain full
use of stdio, I can't just go handing fileno(fp) around and expect
that to work.  Since this means I need to have sysinstall play pipeline
on single file distributions now, that means I can also finally add a
progress indicator for them.

Change installation instructions to note that there's no dists directory
anymore on CDROMs.
1996-12-14 22:23:37 +00:00
Joerg Wunsch 683d60d301 Merge the fixes for the more embarassing bugs from HEAD, mostly
potential buffer overflow conditions.
1996-12-14 19:57:01 +00:00
Joerg Wunsch 863d888fa8 sync this file with the HEAD version. 1996-12-14 18:10:47 +00:00
Jordan K. Hubbard 452117852a Fix some very minor cosmetic cruft I couldn't help tweaking when
I went over the code.

Add shortcuts for addUser and addGroup, documenting same.

Add a password field for adduser and use no-echo string field for it.
This requires my latest libdialog changes (in RELENG_2_2 or -current) to work.
1996-12-14 16:24:01 +00:00
Jordan K. Hubbard 13a9ed8dc4 Merge from -current so that sysinstall can stay the same in 2.2 and 3.0 (the
user.c changes in sysinstall require the no-echo string fields which these
patches implement).
1996-12-14 16:18:15 +00:00
Joerg Wunsch 808602d2d5 YAMFC 1996-12-14 14:52:48 +00:00
Joerg Wunsch d0f4c70000 YAMFC 1996-12-14 14:42:07 +00:00
Joerg Wunsch 09b61f6e64 YAMFC 1996-12-14 14:32:59 +00:00
Joerg Wunsch 2796078a72 YAMFC 1996-12-14 14:04:52 +00:00
Joerg Wunsch 6614561c3d YAMFC 1996-12-14 13:57:58 +00:00
Joerg Wunsch ab157260c5 YAMFC 1996-12-14 13:46:49 +00:00
Joerg Wunsch 03ae2d20fd YAMFC 1996-12-14 11:59:07 +00:00
Joerg Wunsch be85758a53 YAMFC 1996-12-14 11:36:00 +00:00
Joerg Wunsch 2cb00a8f4a YAMFC 1996-12-14 11:26:10 +00:00
Joerg Wunsch ae0f252d4c YAMFC (Now that Jordan did already merge /etc.) 1996-12-14 10:10:45 +00:00
Joerg Wunsch 466e8541a5 ...and into 2.2 as well. 1996-12-14 10:00:07 +00:00
Poul-Henning Kamp be3d2f30aa Restore a couple of crucial variables here. 1996-12-14 09:46:18 +00:00
Satoshi Asami 9dca203f8e Merge from 1.2.
Reviewed by:	peter
Pre-approved by:	jkh
1996-12-13 19:36:28 +00:00
Joerg Wunsch e1ced5ee97 YAMFC 1996-12-13 17:15:11 +00:00
Joerg Wunsch cd90937335 Merge rev 1.3: fix the fix. 1996-12-13 13:31:48 +00:00
Jordan K. Hubbard 45e057b331 This one merits its own comment: Merge in the IP alias features from
-current.  There is *strong* support for this going into 2.2.
1996-12-13 11:30:45 +00:00
Jordan K. Hubbard e0320585b7 YIYAMFCOK? 1996-12-13 10:25:29 +00:00
Jordan K. Hubbard 1ad635a7d6 Close PR#2198:
I've added an installation from optical disk drive facility.
	This enables FreeBSD to be installed from an optical disk, which
	may be formatted in "super floppy" style or sliced into MSDOS-FS
	and UFS partitions.

	Note:  ncr.c should be reviewed by Stefan Esser <[email protected]>
	and cd.c by Joerg Wunsch <[email protected]> before bringing this
	into 2.2.

Submitted-By: Shunsuke Akiyama <[email protected]>
1996-12-13 07:55:14 +00:00
Joerg Wunsch aee9ddd759 Merge the fix from scsiconf.c 1.71: update `od' entries. 1996-12-13 00:06:59 +00:00
Joerg Wunsch 7412592f9c YAMFC 1996-12-12 23:53:19 +00:00
Jordan K. Hubbard efdc77ca2a OGIYAMFC 1996-12-12 23:13:15 +00:00
Jordan K. Hubbard c28cabbcc4 YAMFC 1996-12-12 22:57:01 +00:00
Joerg Wunsch f94c70c905 Merge the fix from rev 1.2: uninitialized local variable use. 1996-12-12 21:22:59 +00:00
Jordan K. Hubbard 861b05e390 YAMFC 1996-12-12 20:03:48 +00:00
Jordan K. Hubbard 9ff735d1ad YAMFC 1996-12-12 19:47:05 +00:00
Jordan K. Hubbard 7be67f38cf YAMFC
Requested-By: swallace
1996-12-12 19:39:19 +00:00
Jordan K. Hubbard 17d47d00ac YAMFC 1996-12-12 19:35:40 +00:00
Jordan K. Hubbard 93dfb3962d Soften range-check for LDTs, as in -current.
Requested-By: swallace
1996-12-12 16:51:23 +00:00
Jordan K. Hubbard ea47cf9f3a YAMFC 1996-12-12 12:11:05 +00:00
Jordan K. Hubbard 4d347eff29 YAMFC, now that I'm happy with sysinstall again. It should now be safe
to build releases in both 2.2 and 3.0-current.
1996-12-12 11:18:37 +00:00
Jordan K. Hubbard 3581ef2de9 YAMFC 1996-12-12 11:06:32 +00:00
Satoshi Asami 3460dd628d Merge from HEAD.
Approved by: phk, jkh (in order of arrival).
1996-12-12 10:46:08 +00:00
Satoshi Asami b48e760dfa Merge in rev. 1.238. 1996-12-12 04:49:53 +00:00
David Greenman ecc4cbacf2 Partial merge from main branch: make exech_map 16*PAGE_SIZE. 1996-12-12 04:30:06 +00:00
Joerg Wunsch c2d5daf530 YAMFC 1996-12-11 15:17:10 +00:00
Satoshi Asami 8080b06dee Merge from rev. 1.237. 1996-12-11 10:25:04 +00:00
Satoshi Asami 1043d75814 Bring in all of 1.236. No more HEAD crap. 1996-12-11 04:53:35 +00:00
Joerg Wunsch a88ae1dd19 Merge David's copyright updates from HEAD. 1996-12-11 00:14:19 +00:00
Joerg Wunsch 69a825ccf7 Mea maxima culpa. Previous merge was in error.
Pointed out by:	ache
1996-12-10 23:56:02 +00:00
Joerg Wunsch 1d9df7afd1 YAMFC 1996-12-10 22:05:57 +00:00
Joerg Wunsch d3ee664668 YAMFC 1996-12-10 21:59:42 +00:00
Joerg Wunsch abab9471bd YAMFC 1996-12-10 21:08:53 +00:00
Joerg Wunsch ce67681ee3 YAMFC 1996-12-10 20:59:06 +00:00
Joerg Wunsch c0621c83c9 YAMFC 1996-12-10 17:24:10 +00:00
Joerg Wunsch 36faf98976 YAMFC 1996-12-10 16:53:56 +00:00
Joerg Wunsch 6dca99bf55 YAMFC 1996-12-10 16:46:32 +00:00
Jordan K. Hubbard e8df6853f1 YAMFC 1996-12-10 07:53:08 +00:00
Joerg Wunsch 6b924af4b2 YAMFC 1996-12-10 00:32:03 +00:00
cvs2svn cab7562f08 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-12-09 15:36:55 +00:00
Jordan K. Hubbard 75f7dd61e2 Merge. 1996-12-09 15:18:50 +00:00
Jordan K. Hubbard db03f0e3fc Merge one-liner from HEAD. 1996-12-09 15:18:39 +00:00
Jordan K. Hubbard a23e671ff7 Merge-o-matic. 1996-12-09 09:29:16 +00:00
Jordan K. Hubbard 5a7c7ec0b6 Merge. 1996-12-09 06:45:23 +00:00
Jordan K. Hubbard 88defe7480 Merge with HEAD. 1996-12-09 06:41:43 +00:00
Joerg Wunsch 00d9d07947 YAMFC
Requested by:	ache
1996-12-08 18:45:53 +00:00
Joerg Wunsch e1679b91ee Merge rev 1.16 from HEAD: synchronize with main syscons.c.
Requested by:	kato
1996-12-08 18:40:08 +00:00
Joerg Wunsch 4f390903d3 Merge from HEAD: add the tar replacement script. (Makefile rev 1.260,
the actual tar.sh file has been tagged behind the scene.)
1996-12-08 18:24:26 +00:00
Joerg Wunsch 596640ff0a Merge from rev 1.2: don't lookup rsh(1) at bogus pathnames. 1996-12-08 14:21:23 +00:00
Andrey A. Chernov d68500f3f1 Link Dutch catalog to nl_NL instead of da_DK
Requested-by: joerg
1996-12-08 14:10:46 +00:00
Jordan K. Hubbard cd7f325fc4 Merge revisions 1.52, 1.80, 1.20, 1.34, 1.99 and 1.17 (respectively). 1996-12-08 12:32:22 +00:00
Joerg Wunsch 37ba690bf1 Merge the fix from rev 1.70: opnly one LUN for CDs. 1996-12-07 22:48:42 +00:00
Søren Schmidt f035d401ed Fix the broken support for monochrome VGA's.
It was MY fault after all, damn..
1996-12-07 22:33:05 +00:00
Poul-Henning Kamp 73ae6fecac Back out this change. 1996-12-04 19:07:52 +00:00
Poul-Henning Kamp 9d0a97d053 YAMFC 1996-12-04 16:12:00 +00:00
Satoshi Asami 45e4924e18 Merge 1.233, sort -u optimization.
Pre-approved by:	phk
1996-12-04 05:56:03 +00:00
Poul-Henning Kamp e56cec74b4 YAMFC 1996-12-03 15:55:45 +00:00
Poul-Henning Kamp 4420bcc126 YAMFC 1996-12-03 15:25:18 +00:00
Poul-Henning Kamp 1c9966455e YAMFC 1996-12-03 11:06:25 +00:00
Poul-Henning Kamp 245110794e YAMFC 1996-12-03 10:53:06 +00:00
Joerg Wunsch 0a950567fc Merge from rev 1.11: simplify the disklabel trickery. 1996-12-01 17:20:49 +00:00
Jordan K. Hubbard 1c77154fa0 Merge r1.143 from HEAD 1996-12-01 12:28:29 +00:00
Poul-Henning Kamp ba97584a87 YAMFC 1996-11-30 12:02:02 +00:00
Satoshi Asami 9a4aea776f (1) Add ${DIST_SUBDIR} in front of filename in files/md5. This will make
it possible to obtain the list of distfiles/patchfiles by only
    looking at files/md5 instead of parsing the Makefile.

    Also, we can now share the same files/md5 for distfiles of same
    names.  (If you are wondering why this is good, look at the
    www/netscape3 port.)

Submitted by: max
(2) Fix handling of ${DIST_SUBDIR} when ${DISTDIR} is defined by the
    user.

(3) Use and define variable ${MASTER_SITE_BACKUP} instead of repeating
    ftp.freebsd.org all over the place.  In addition to being more
    aesthetically pleasing (bsd.port.mk thrives in this, you know),
    the user can define this to be their closest FreeBSD mirror in
    order to reduce the load on ftp.freebsd.org.

Submitted by: fenner
(4) Print out descriptive messages when the port is being ignored, for
    example, because it IS_INTERACTIVE and BATCH is set.

Submitted by: max
(5) Make clean-depends target as non-fallible as possible.

Submitted by: max
(6) Misc, cleanup, fix typo, remove "test ! -d" in front of ${MKDIR}
    (which already has the -p flag and can't fail), etc.

This should go into 2.2.
1996-11-30 09:53:38 +00:00
Poul-Henning Kamp 0c60a50211 YAMFC 1996-11-29 19:52:49 +00:00
Joerg Wunsch 71bfa3647d YAMFC. The appropriate changes to the mtree files have already
been commited, so 2.2 did no longer install.

Forgotten by:	phk
1996-11-29 18:41:08 +00:00
Poul-Henning Kamp f1709b7eea YAMFC 1996-11-28 22:07:16 +00:00
Joerg Wunsch d9f69d3a36 Mergomanic. (1.2->1.3 of fixit.profile) 1996-11-28 08:58:25 +00:00
Poul-Henning Kamp f72f5a58cc YAMFC 1996-11-28 08:28:35 +00:00
Poul-Henning Kamp 716ca698cf YAMFC 1996-11-28 08:09:56 +00:00
Poul-Henning Kamp 6da12f666a YAMFC 1996-11-25 18:40:36 +00:00
Poul-Henning Kamp 010de69620 YAMFC 1996-11-25 07:32:38 +00:00
Poul-Henning Kamp ecffe94354 YAMFC 1996-11-25 07:23:37 +00:00
Poul-Henning Kamp 3814657f3e YAMFC 1996-11-24 07:54:08 +00:00
Poul-Henning Kamp ed12016a9d YAMFC 1996-11-23 18:22:27 +00:00
Poul-Henning Kamp 3b020d9f64 YAMFC 1996-11-23 08:35:39 +00:00
Poul-Henning Kamp 8e6f97674c YAMFC 1996-11-22 07:51:40 +00:00
Nate Williams 98890d6198 More missing bits from the AWE32 sound support merge. 1996-11-22 00:23:40 +00:00
Nate Williams 2dc2f43bb2 Bring in the rest of the AWE sound driver changes from the HEAD. Sound
support was broken w/out these changes.
1996-11-22 00:03:33 +00:00
Poul-Henning Kamp e327282419 YAMFC 1996-11-21 16:51:15 +00:00
Joerg Wunsch a384ea263c Merge from HEAD: don't duplicate the Posix regex stuff in libregex,
it's already in libc (and both implementations clash when linking both
libs simultaneously).
1996-11-20 15:05:51 +00:00
cvs2svn c6431fb76a This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-11-19 23:21:53 +00:00
Nate Williams 1f6094077f Add kbdio.[ch] since they are necessary for the new syscons & PS/2
drivers.
1996-11-19 18:35:43 +00:00
Nate Williams 909b8efc13 Go ahead and merge in the now working syscons and PS/2 mouse driver that
use the new shared kbdio routines.
1996-11-19 17:25:31 +00:00
Poul-Henning Kamp 6abe331786 YAMFC 1996-11-18 19:14:57 +00:00
David Greenman 838a0b30cb Fixed obsolete comment. 1996-11-18 02:45:46 +00:00
Joerg Wunsch ed93b122dd Merge from rev 1.6: initilaize memory obtained with malloc(). 1996-11-16 22:50:21 +00:00
Joerg Wunsch 149348ab9e Merge from rev 1.142. 1996-11-16 22:46:17 +00:00
Joerg Wunsch 7c0884065f Merge from rev 1.258. 1996-11-16 22:45:51 +00:00
Peter Wemm eed1a21eae Redo last merge from -current.. phk accidently spammed a slightly
older version over the previous fix.

Damn, and I can't even come up with some sarcastic comment.. :-)
1996-11-16 21:45:35 +00:00
Poul-Henning Kamp c49818001a YAMFC 1996-11-16 21:34:19 +00:00
Peter Wemm 42ff3e9e3a merge rev 1.8 from -current 1996-11-16 16:44:25 +00:00
Jordan K. Hubbard fc476a58e6 Merge r1.257 1996-11-15 22:18:44 +00:00
Peter Wemm 58dceb6fa6 bring in rev 1.2: initialise length variable so that accept()
doesn't EFAULT, depending on random stack values.

bring in rev 1.3: initialise length in sockaddr_un.sun_len, and account
for the sun_len field that is new since 4.3BSD.

(Approved by: phk :-)
1996-11-15 18:25:51 +00:00
Jordan K. Hubbard ce7e86be94 Merge from HEAD (be thorough!). 1996-11-15 18:15:45 +00:00
Peter Wemm fa07a91825 bring in rev 1.8 from -current, don't return pointers to a non-static
stack variable.. causes random chpass failures in some circumstances.
1996-11-15 18:12:25 +00:00
Satoshi Asami 5dd007e4c0 Merge from HEAD.
Approved by:	phk
1996-11-15 09:34:41 +00:00
Jordan K. Hubbard 2bcb06a690 D'oh! I did change this one, but never committed it. Too many source
trees.
1996-11-15 08:44:24 +00:00
Poul-Henning Kamp e0b2d75e45 Darn! This slipped under my nose. 1996-11-14 12:53:15 +00:00
Poul-Henning Kamp 44e8268080 Grumble, I messed up the last commit here. 1996-11-14 08:04:50 +00:00
Poul-Henning Kamp ba0f8ead95 YAMFC 1996-11-13 20:30:16 +00:00
Poul-Henning Kamp 55207c2d12 YAMFC 1996-11-13 20:19:36 +00:00
Poul-Henning Kamp 1ab306b335 Ok, guys, you missed the ALPHA, now we're "POST-ALPHA"
And more than 600 packages, (each with it's own signature theme :-)
1996-11-13 20:05:56 +00:00
Jordan K. Hubbard a70a83f9d2 Merge from HEAD (compat dist changes) 1996-11-13 14:14:17 +00:00
Jordan K. Hubbard 1697699b9a Merge from 1.4 (back out freebsd local changes).
Requested-By: pst
1996-11-13 12:32:31 +00:00
Jordan K. Hubbard 624c3e13e7 Merge from HEAD. Why? Because the Meistersinger asked me to. 1996-11-13 12:28:27 +00:00
Jordan K. Hubbard afd4757fab Actually, it's over 600 packages now. 1996-11-13 12:15:26 +00:00
Jordan K. Hubbard 9ea6fa13e5 Update the documentation for 2.2-ALPHA 1996-11-13 11:49:44 +00:00
Poul-Henning Kamp 41c841ccec YAMFC 1996-11-12 22:19:13 +00:00
Jordan K. Hubbard 37dbbb898f Bring back-out of r1.7 to 2.2.
Requested-By: peter
1996-11-12 19:23:44 +00:00
Jordan K. Hubbard 805b7660a6 Merge from r1.140 1996-11-12 18:41:29 +00:00
Poul-Henning Kamp 330c3f7085 yamfc 1996-11-12 13:54:49 +00:00
Poul-Henning Kamp b5f8fcfeba YAMFC 1996-11-12 11:29:17 +00:00
Poul-Henning Kamp 17adef6fc2 Mega-merge from -current 1996-11-12 09:11:51 +00:00
Poul-Henning Kamp 567e9f9540 Merge from -current 1996-11-12 08:02:24 +00:00
Poul-Henning Kamp 2f4ed0f31b Merge from -current 1996-11-11 23:42:30 +00:00
Poul-Henning Kamp 0d97ecc09a Merge from -current 1996-11-11 22:37:26 +00:00
Søren Schmidt afec3c65ed 1. Avoid a race in scclose(). tty.c has kludges so that the race is
actually harmless.

2. Fixed code to match comment in scintr().

3. Don't allow even root to take control of the machine when securelevel > 0.
   I've secured the accesses to PSL_IOPL in all drivers and asked pst to
   review it, but he seems to be busy.  Write access to /dev/kmem and
   other critival devices currently leaks across raisings of securelevel
   via open fd's, so there may as well be a similar leak for PSL_IOPL.

4. (Most important.)  Don't corrupt memory beyond the screen buffers if
   the cursor happens to be off the 80x25 screen when syscons starts.

5. Fix console cursor update (not perfect yet).
Submitted by:	bruce
1996-11-11 22:07:17 +00:00
Poul-Henning Kamp 17a55a6941 Merge from -current 1996-11-11 21:24:26 +00:00
Jordan K. Hubbard 35ac24c699 Mr. Snake is 2.2-RELEASE in this branch. 1996-11-11 14:17:35 +00:00
Poul-Henning Kamp ab74d3fb25 Merge from -current 1996-11-10 12:15:19 +00:00
Poul-Henning Kamp 8b62f74164 Merge from -current 1996-11-10 12:03:38 +00:00
Joerg Wunsch fd61a027dd Being here, also add the description of MNT_FORCE for mount(2). 1996-11-10 09:26:58 +00:00
Joerg Wunsch e654624bb8 Merge David O'Brien's description of the new mount flags. 1996-11-10 09:24:53 +00:00
Poul-Henning Kamp 223741ae0b Merge from -current 1996-11-09 21:51:14 +00:00
Poul-Henning Kamp 2dc41d6bf5 Remove advansys driver from 2.2 1996-11-09 21:36:42 +00:00
Jordan K. Hubbard 03e783dbec Merge 1996-11-09 21:16:09 +00:00
Poul-Henning Kamp 452eae5de8 Merge from -current 1996-11-09 21:16:08 +00:00
Jordan K. Hubbard 6b48679c13 Merge Makefile fix, an old disks.c fix which somehow didn't get in
and kill the mysterious extra copy of keymap.c appended to itself.
1996-11-09 21:04:03 +00:00
Jordan K. Hubbard ba2399849f Merge. 1996-11-09 19:56:25 +00:00
Jordan K. Hubbard 22a0665099 Merge. 1996-11-09 19:26:19 +00:00
Jordan K. Hubbard ea5e30913d Merge from HEAD. 1996-11-09 18:13:38 +00:00
Joerg Wunsch 1bb386962c Merge from HEAD: enable the installation of a keymap early in the game. 1996-11-09 16:49:16 +00:00
cvs2svn 87e7c5616f This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-11-09 16:47:09 +00:00
Joerg Wunsch 6aa90e5e21 Merge from HEAD: various improvements to the fixit floppy. 1996-11-09 16:34:21 +00:00
Joerg Wunsch a816720e5b Merge the -L option from HEAD; sysinstall will need it. 1996-11-09 16:17:48 +00:00
Jordan K. Hubbard d30487f10f Merge list from HEAD as requested by Justin. 1996-11-09 13:52:34 +00:00
Joerg Wunsch 6e63ff8f7c Merge from rev 1.6: fix rename for different parent dirs.
Requested by:	bde
1996-11-09 12:13:56 +00:00
Joerg Wunsch ac6f1989ed Merge from HEAD: try mounting the fixit floppy with MNT_FORCE if all
else fails.
1996-11-09 12:00:15 +00:00
Joerg Wunsch 6acb8030bb Merge the fix from rev 1.48: fix an ordering bug.
Requested by:	dyson
1996-11-09 10:42:28 +00:00
Joerg Wunsch de5fe9e9af Merge from rev 1.3: fix a syntax error. 1996-11-09 03:05:40 +00:00
Joerg Wunsch f85d01574b Merge the fix from rev 1.25: sanity checks etc. 1996-11-08 23:21:17 +00:00
Joerg Wunsch 7f6109e927 Merge from rev 1.16: fix the ldconfig handling for non-existant
directories.
1996-11-08 23:20:38 +00:00
Jordan K. Hubbard e50b5f9464 It slices! It dices! It surges! It merges! NOW how much would you pay? 1996-11-08 05:39:46 +00:00
Jordan K. Hubbard 3b64d1be73 Merge. 1996-11-07 18:31:38 +00:00
Jordan K. Hubbard 17d3f4664f Merge from HEAD. 1996-11-07 16:34:37 +00:00
Jordan K. Hubbard 9048021e9b Install an evil work-around for /etc/sendmail.cw 1996-11-07 15:45:08 +00:00
Jordan K. Hubbard 109c629653 Merge. 1996-11-07 15:36:38 +00:00
Joerg Wunsch af1a4a5973 Activate the ISO 8859-1 -> CP437 screeenmap also in 2.2.
Reviewed by:	jkh
1996-11-07 14:53:02 +00:00
Joerg Wunsch 514951087d Merge Bruce's fast interrupt handler fix from rev 1.23. 1996-11-07 14:47:07 +00:00
Joerg Wunsch b4d97e34a4 Merge Bruce's fixes for the message buffer mapping.
Reviewed by:	davidg
Submitted by:	bde
1996-11-07 14:45:41 +00:00
Jordan K. Hubbard a628ec42ca Merge from HEAD. 1996-11-07 14:20:08 +00:00
Jordan K. Hubbard e59bfaaada Merge from HEAD. 1996-11-07 09:08:23 +00:00
Joerg Wunsch 51a4e988b1 Update to HEAD. 1996-11-07 08:53:52 +00:00
Joerg Wunsch f1afedd412 Merge the fix from rev 1.65: make the "piix" device known (and
hidden), so it cannot accidentally be removed.
1996-11-07 08:52:16 +00:00
Joerg Wunsch 7867148daf Merge the syslog.conf changes from rev 1.6. 1996-11-06 23:42:04 +00:00
Joerg Wunsch b687d11813 Fix the name of our vi inside the fixit_crunch file.
Activate the hook to build the vi on the fixit floppy without Tcl or
Perl APIs.
1996-11-06 22:48:03 +00:00
Joerg Wunsch de424e8b2f Add hooks to allow the build of a vi without Tcl or Perl APIs in an
environment where either or both are normally to be built.

The next commit to release/Makefile will use these hooks for the
creation of the `fixit' floppy.

(Failing to find a better method, we might also consider pulling them
into -current.  By now, they just live in the 2.2 branch only.)

Agreed by:	jkh,phk,peter
1996-11-06 22:46:26 +00:00
Joerg Wunsch a7bd1576fd Merge from HEAD: mention that we also support the Philips CDD2000. 1996-11-06 19:32:31 +00:00
Joerg Wunsch 230fede891 Merge the fixes from rev 1.30 worm.c and 1.65 scsiconf.c:
. support for the Philips CDD2000
. fix the CD-DA blocksize handling and multitrack handling

(Again, i'm certainly the most knowledgable committer for this stuff.)
1996-11-06 19:21:53 +00:00
Joerg Wunsch a13a7ffd28 Merge the change from rev. 1.23: make the `od' driver work again with
media of different size.

(I dare to commit this myself to the 2.2 branch since i think there's
nobody else around who could even test it at all.)
1996-11-06 19:12:01 +00:00
Joerg Wunsch 79c8e4b873 Merge the changes from rev 1.12 of fdisk.c and 1.7 of fdisk.8: allow
a script-driven automated configuration.

Reviewed by:	joerg
1996-11-06 19:02:18 +00:00
Poul-Henning Kamp e7a72d31ae Merge from -current 1996-11-06 11:31:07 +00:00
Poul-Henning Kamp 714fb74c24 Merge from -current 1996-11-06 11:19:51 +00:00
Poul-Henning Kamp aaadd24076 Merge from -current 1996-11-06 10:33:28 +00:00
Poul-Henning Kamp 2077e4e6a4 Merge from -current 1996-11-06 10:23:48 +00:00
Poul-Henning Kamp 2f12b88ae7 Merge from -current 1996-11-06 10:14:01 +00:00
Poul-Henning Kamp 80e0dad1c8 Merge from -current 1996-11-06 10:08:33 +00:00
Poul-Henning Kamp 97fd70d685 Merge from -current 1996-11-06 09:39:45 +00:00
Poul-Henning Kamp baae2b6f3c Merge from -current 1996-11-06 09:25:51 +00:00
Poul-Henning Kamp 5a0156c1fc Merge from -current 1996-11-06 08:46:44 +00:00
Poul-Henning Kamp a50e0de122 Merge from -current. 1996-11-06 08:43:35 +00:00
Poul-Henning Kamp 5bc589fc3f Merge from -current 1996-11-05 20:18:00 +00:00
Poul-Henning Kamp a1ec9373e1 Merge from -current. 1996-11-05 20:14:23 +00:00
Poul-Henning Kamp c9a6465a45 Merger from -current. 1996-11-05 20:07:46 +00:00
Søren Schmidt 94782a8b1f Fix the hanging keyboard problem under Xaccel. Apprently we are loosing
an interrupt somewhere. The solution here is to check for keyboard
input each time the screen update timer ticks. Not pretty, but works.
1996-11-04 20:40:00 +00:00
Poul-Henning Kamp ddae0b00e5 Merge from -current. 1996-11-04 19:47:11 +00:00
Poul-Henning Kamp 385b5b1262 Merge from -current. 1996-11-04 10:11:50 +00:00
Poul-Henning Kamp 21df92fc11 Set RELDATE=199612 1996-11-03 12:04:55 +00:00
Poul-Henning Kamp 40235fd9cb Set the BUILDNAME, RELEASETAG and fix a bug Joerg found a couple of seconds
before me.
1996-11-03 12:01:12 +00:00
Poul-Henning Kamp 76da2e9a28 Merge from -current.
Back out daemon.* addition, ssh port should be fixed instead
1996-11-02 21:04:22 +00:00
Poul-Henning Kamp 6372d68ce3 Merge from -current.
bin/1942 curses problem in systat
truncate if too long for field.
1996-11-02 20:35:53 +00:00
Poul-Henning Kamp 7796e18bc5 Merge from -current.
Fill in BIOS geometries in struct bootinfo.
1996-11-02 20:32:18 +00:00
cvs2svn 2fce0b4e66 This commit was manufactured by cvs2svn to create branch 'RELENG_2_2'. 1996-11-02 10:41:29 +00:00
4900 changed files with 641433 additions and 542157 deletions

No files matched your search

+13 -8
View File
@@ -1,11 +1,13 @@
#
# $Id: Makefile,v 1.108 1996/10/25 14:22:50 bde Exp $
# $Id: Makefile,v 1.109.2.3 1997/04/11 16:57:40 asami Exp $
#
# Make command line options:
# -DCLOBBER will remove /usr/include
# -DMAKE_LOCAL to add ./local to the SUBDIR list
# -DMAKE_PORTS to add ./ports to the SUBDIR list
# -DMAKE_EBONES to build eBones (KerberosIV)
# -DALLLANG to build documentation for all languages
# (where available -- see share/doc/Makefile)
#
# -DNOCLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
# -DNOCLEAN do not clean at all
@@ -16,6 +18,7 @@
# -DNOSECURE do not go into secure subdir
# -DNOGAMES do not go into games subdir
# -DNOSHARE do not go into share subdir
# -DNOINFO do not make or install info files
#
# The intended user-driven targets are:
@@ -117,7 +120,7 @@ SUPFLAGS?= -v
# While building tools for bootstrapping, we dont need to waste time on
# profiled libraries or man pages. This speeds things up somewhat.
#
MK_FLAGS= -DNOMAN -DNOPROFILE
MK_FLAGS= -DNOINFO -DNOMAN -DNOPROFILE
#
# world
@@ -129,7 +132,7 @@ MK_FLAGS= -DNOMAN -DNOPROFILE
#
world:
@echo "--------------------------------------------------------------"
@echo "make world started on `LC_TIME= date`"
@echo "make world started on `LC_TIME=C date`"
@echo "--------------------------------------------------------------"
.if target(pre-world)
@echo "--------------------------------------------------------------"
@@ -222,7 +225,7 @@ world:
.endif
@echo
@echo "--------------------------------------------------------------"
@echo "make world completed on `LC_TIME= date`"
@echo "make world completed on `LC_TIME=C date`"
@echo "--------------------------------------------------------------"
#
@@ -452,6 +455,10 @@ lib-tools:
# libraries - build and install the libraries
#
libraries:
.if exists(lib/csu/i386)
cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
.endif
.if exists(lib/libcompat)
cd ${.CURDIR}/lib/libcompat && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
@@ -464,10 +471,6 @@ libraries:
cd ${.CURDIR}/lib/libtermcap && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
.endif
.if exists(lib)
cd ${.CURDIR}/lib/csu/i386 && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
.endif
.if exists(gnu)
cd ${.CURDIR}/gnu/lib && ${MAKE} depend && \
${MAKE} ${MK_FLAGS} all install ${CLEANDIR} ${OBJDIR}
@@ -499,6 +502,8 @@ libraries:
#
build-tools:
.for d in \
share/info \
gnu/usr.bin/texinfo \
usr.bin/symorder \
usr.bin/sgmls \
usr.bin/sgmlfmt \
+73
View File
@@ -0,0 +1,73 @@
This is the top level of the FreeBSD source directory. This file
was last revised on: $Id$
For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).
The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel. Please see the top of the Makefile for more information on
the standard build targets and compile-time flags.
Building a kernel with config(1) is a somewhat more involved process,
documentation for which can be found at:
http://www.freebsd.org/handbook/kernelconfig.html
And in the config(1) man page.
The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel. The file LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).
Source Roadmap:
---------------
bin System/User commands.
contrib Packages contributed by 3rd parties.
eBones Kerberos package - NOT FOR EXPORT!
etc Template files for /etc
games Amusements.
gnu Various commands and libraries under the GNU Public License.
Please see gnu/COPYING* for more information.
include System include files.
lib System libraries.
libexec System daemons.
lkm Loadable Kernel Modules.
release Release building Makefile & associated tools.
sbin System commands.
secure DES and DES-related utilities - NOT FOR EXPORT!
share Shared resources.
sys Kernel sources.
tools Utilities for regression testing and miscellaneous tasks.
usr.bin User commands.
usr.sbin System administration commands.
For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:
http://www.freebsd.org/handbook/synching.html
+2 -2
View File
@@ -1,7 +1,7 @@
# From: @(#)Makefile 8.1 (Berkeley) 5/31/93
# $Id: Makefile,v 1.3 1995/09/29 19:31:55 ache Exp $
# $Id: Makefile,v 1.4 1995/10/01 14:24:01 markm Exp $
SUBDIR= cat chmod cp csh date dd df domainname echo ed expr hostname \
SUBDIR= cat chio chmod cp csh date dd df domainname echo ed expr hostname \
kill ln ls mkdir mv pax ps pwd rcp rm rmail rmdir sh sleep \
stty sync test
+7 -8
View File
@@ -32,10 +32,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)cat.1 8.1 (Berkeley) 6/29/93
.\" $Id: cat.1,v 1.2 1994/09/24 02:53:25 davidg Exp $
.\" @(#)cat.1 8.3 (Berkeley) 5/2/95
.\" $Id: cat.1,v 1.6 1997/02/22 14:01:26 peter Exp $
.\"
.Dd June 29, 1993
.Dd May 2, 1995
.Dt CAT 1
.Os BSD 3
.Sh NAME
@@ -69,9 +69,7 @@ option, and displays a dollar sign
at the end of each line
as well.
.It Fl n
Number the
.Ar output
lines, starting at 1.
Number the output lines, starting at 1.
.It Fl s
Squeeze multiple adjacent empty lines, causing the output to be
single spaced.
@@ -79,7 +77,7 @@ single spaced.
Implies the
.Fl v
option, and displays tab characters as
.Pq Ql ^I
.Ql ^I
as well.
.It Fl u
The
@@ -109,7 +107,8 @@ will cause the original data in file1 to be destroyed!
.Xr head 1 ,
.Xr more 1 ,
.Xr pr 1 ,
.Xr tail 1
.Xr tail 1 ,
.Xr vis 1
.Rs
.%A Rob Pike
.%T "UNIX Style, or cat -v Considered Harmful"
-9
View File
@@ -1,9 +0,0 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
NOSHARED= true
PROG= chflags
SRCS= chflags.c stat_flags.c
.PATH: ${.CURDIR}/../../bin/ls
.include <bsd.prog.mk>
-125
View File
@@ -1,125 +0,0 @@
.\" Copyright (c) 1989, 1990, 1993, 1994
.\" The Regents of the University of California. All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" the Institute of Electrical and Electronics Engineers, Inc.
.\"
.\" 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.
.\"
.\" @(#)chflags.1 8.2 (Berkeley) 3/31/94
.\"
.Dd March 31, 1994
.Dt CHFLAGS 1
.Os
.Sh NAME
.Nm chflags
.Nd change file flags
.Sh SYNOPSIS
.Nm chflags
.Oo
.Fl R
.Op Fl H | Fl L | Fl P
.Oc
.Ar flags
.Ar file ...
.Sh DESCRIPTION
The
.Nm chflags
utility modifies the file flags of the listed files
as specified by the
.Ar flags
operand.
.Pp
The options are as follows:
.Bl -tag -width Ds
.It Fl H
If the
.Fl R
option is specified, symbolic links on the command line are followed.
(Symbolic links encountered in the tree traversal are not followed.)
.It Fl L
If the
.Fl R
option is specified, all symbolic links are followed.
.It Fl P
If the
.Fl R
option is specified, no symbolic links are followed.
.It Fl R
Change the file flags for the file hierarchies rooted
in the files instead of just the files themselves.
.El
.Pp
Flags are a comma separated list of keywords.
The following keywords are currently defined:
.Bd -literal -offset indent compact
arch set the archived flag (super-user only)
dump set the dump flag
sappnd set the system append-only flag (super-user only)
schg set the system immutable flag (super-user only)
uappnd set the user append-only flag (owner or super-user only)
uchg set the user immutable flag (owner or super-user only)
archived, sappend, schange, simmutable, uappend, uchange, uimmutable
aliases for the above
.Ed
.Pp
Putting the letters
.Dq no
before an option causes the flag to be turned off.
For example:
.Bd -literal -offset indent compact
nodump the file should never be dumped
.Ed
.Pp
Symbolic links do not have flags, so unless the
.Fl H
or
.Fl L
option is set,
.Nm chflags
on a symbolic link always succeeds and has no effect.
The
.Fl H ,
.Fl L
and
.Fl P
options are ignored unless the
.Fl R
option is specified.
In addition, these options override each other and the
command's actions are determined by the last one specified.
.Pp
The
.Nm chflags
utility exits 0 on success, and >0 if an error occurs.
.Sh SEE ALSO
.Xr chflags 2 ,
.Xr stat 2 ,
.Xr fts 3 ,
.Xr symlink 7
-180
View File
@@ -1,180 +0,0 @@
/*
* Copyright (c) 1992, 1993, 1994
* 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.
*/
#ifndef lint
static char copyright[] =
"@(#) Copyright (c) 1992, 1993, 1994\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
static char sccsid[] = "@(#)chflags.c 8.5 (Berkeley) 4/1/94";
#endif /* not lint */
#include <sys/types.h>
#include <sys/stat.h>
#include <err.h>
#include <errno.h>
#include <fts.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
u_long string_to_flags __P((char **, u_long *, u_long *));
void usage __P((void));
int
main(argc, argv)
int argc;
char *argv[];
{
FTS *ftsp;
FTSENT *p;
u_long clear, set;
long val;
int Hflag, Lflag, Pflag, Rflag, ch, fts_options, oct, rval;
char *flags, *ep;
Hflag = Lflag = Pflag = Rflag = 0;
while ((ch = getopt(argc, argv, "HLPR")) != EOF)
switch (ch) {
case 'H':
Hflag = 1;
Lflag = Pflag = 0;
break;
case 'L':
Lflag = 1;
Hflag = Pflag = 0;
break;
case 'P':
Pflag = 1;
Hflag = Lflag = 0;
break;
case 'R':
Rflag = 1;
break;
case '?':
default:
usage();
}
argv += optind;
argc -= optind;
if (argc < 2)
usage();
fts_options = FTS_PHYSICAL;
if (Rflag) {
if (Hflag)
fts_options |= FTS_COMFOLLOW;
if (Lflag) {
fts_options &= ~FTS_PHYSICAL;
fts_options |= FTS_LOGICAL;
}
}
flags = *argv;
if (*flags >= '0' && *flags <= '7') {
errno = 0;
val = strtol(flags, &ep, 8);
if (val < 0)
errno = ERANGE;
if (errno)
err(1, "invalid flags: %s", flags);
if (*ep)
errx(1, "invalid flags: %s", flags);
set = val;
oct = 1;
} else {
if (string_to_flags(&flags, &set, &clear))
errx(1, "invalid flag: %s", flags);
clear = ~clear;
oct = 0;
}
if ((ftsp = fts_open(++argv, fts_options , 0)) == NULL)
err(1, NULL);
for (rval = 0; (p = fts_read(ftsp)) != NULL;) {
switch (p->fts_info) {
case FTS_D:
if (Rflag) /* Change it at FTS_DP. */
continue;
fts_set(ftsp, p, FTS_SKIP);
break;
case FTS_DNR: /* Warn, chflag, continue. */
warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
rval = 1;
break;
case FTS_ERR: /* Warn, continue. */
case FTS_NS:
warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
rval = 1;
continue;
case FTS_SL: /* Ignore. */
case FTS_SLNONE:
/*
* The only symlinks that end up here are ones that
* don't point to anything and ones that we found
* doing a physical walk.
*/
continue;
default:
break;
}
if (oct) {
if (!chflags(p->fts_accpath, set))
continue;
} else {
p->fts_statp->st_flags |= set;
p->fts_statp->st_flags &= clear;
if (!chflags(p->fts_accpath, p->fts_statp->st_flags))
continue;
}
warn("%s", p->fts_path);
rval = 1;
}
if (errno)
err(1, "fts_read");
exit(rval);
}
void
usage()
{
(void)fprintf(stderr,
"usage: chflags [-R [-H | -L | -P]] flags file ...\n");
exit(1);
}
+9
View File
@@ -0,0 +1,9 @@
# $Id: $
# @(#)Makefile 8.1 (Berkeley) 6/6/93
PROG= chio
SRCS= chio.c
BINOWN= root
BINMODE=4555
.include <bsd.prog.mk>
+202
View File
@@ -0,0 +1,202 @@
.\" $NetBSD: $
.\"
.\" Copyright (c) 1996 Jason R. Thorpe <[email protected]>
.\" 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 acknowledgements:
.\" This product includes software developed by Jason R. Thorpe
.\" for And Communications, http://www.and.com/
.\" 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.
.\"
.Dd April 2, 1996
.Dt CHIO 1
.Os
.Sh NAME
.Nm chio
.Nd medium changer control utility
.Sh SYNOPSIS
.Nm chio
.Op Fl f Ar changer
.Ar command
.Ar arg1
.Ar arg2
.Oo
.Ar arg3 Oo ...
.Oc
.Oc
.Sh DESCRIPTION
.Nm Chio
is used to control the operation of medium changers, such as those found
in tape and optical disk jukeboxes.
.Pp
The options are as follows:
.Bl -tag -width indent
.It Fl f Ar changer
Use the device
.Pa changer
rather than the default device
.Pa /dev/ch0 .
.El
.Pp
The default changer may be overridden by setting the environment variable
.Nm CHANGER
to the desired changer device.
.Pp
A medium changer apparatus is made up of
.Pa elements .
There are four element types:
.Pa picker
(medium transport),
.Pa slot
(storage),
.Pa portal
(import/export), and
.Pa drive
(data transfer). In this command description, the shorthand
.Nm ET
will be used to represent an element type, and
.Nm EU
will be used to represent an element unit. For example, to represent
the first robotic arm in the changer, the ET would be
.Dq picker
and the EU would be
.Dq 0 .
.Pp
.Sh SUPPORTED COMMANDS
.Nm chio move
.Ar <from ET> <from EU> <to ET> <to EU>
.Op Ar inv
.Pp
Moves the media unit from
.Pa <from ET/EU>
to
.Pa <to ET/EU> .
If the optional modifier
.Pa inv
is specified, the media unit will be inverted before insertion.
.Pp
.Nm chio exchange
.Ar <src ET> <src EU> <dst1 ET> <dst1 EU>
.Op Ar <dst2 ET> <dst2 ET>
.Op Ar inv1
.Op Ar inv2
.Pp
Performs a media unit exchange operation. The media unit in
.Pa <src ET/EU>
is moved to
.Pa <dst1 ET/EU>
and the media unit previously in
.Pa <dst1 ET/EU>
is moved to
.Pa <dst2 ET/EU> .
In the case of a simple exchange,
.Pa <dst2 ET/EU>
is omitted and the values
.Pa <src ET/EU>
are used in their place.
The optional modifiers
.Pa inv1
and
.Pa inv2
specify whether the media units are to be inverted before insertion into
.Pa <dst1 ET/EU>
and
.Pa <dst2 ET/EU>
respecitively.
.Pp
Note that not all medium changers support the
.Nm exchange
operation; The changer must have multiple free pickers or emulate
multiple free pickers with transient storage.
.Pp
.Nm chio position
.Ar <to ET> <to EU>
.Op Ar inv
.Pp
Position the picker in front of the element described by
.Pa <to ET/EU> .
If the optional modifier
.Pa inv
is specified, the media unit will be inverted before insertion.
.Pp
Note that not all changers behave as expected when issued this command.
.Pp
.Nm chio params
.Pp
Report the number of slots, drives, pickers, and portals in the changer,
and which picker unit the changer is currently configured to use.
.Pp
.Nm chio getpicker
.Pp
Report which picker unit the changer is currently configured to use.
.Pp
.Nm chio setpicker
.Ar <unit>
.Pp
Configure the changer to use picker
.Pa <unit> .
.Pp
.Nm chio status
.Op Ar <type>
.Pp
Report the status of all elements in the changer. If
.Pa <type>
is specified, report the status of all elements of type
.Pa <type> .
.Pp
The status bits are defined as follows:
.Bl -tag -width indent
.It Nm FULL
Element contains a media unit.
.It Nm IMPEXP
Media was deposited into element by an outside human operator.
.It Nm EXCEPT
Element is in an abnormal state.
.It Nm ACCESS
Media in this element is accessible by a picker.
.It Nm EXENAB
Element supports passing media (exporting) to an outsite human operator.
.It Nm INENAB
Element supports receiving media (importing) from an outside human operator.
.El
.Pp
.Sh EXAMPLES
.Nm chio move slot 3 drive 0
.Pp
Moves the media in slot 3 (fourth slot) to drive 0 (first drive).
.Pp
.Nm chio setpicker 2
Configures the changer to use picker 2 (third picker) for operations.
.Pp
.Sh FILES
/dev/ch0 - default changer device
.Sh SEE ALSO
.Xr mt 1 ,
.Xr mount 8 .
.Sh AUTHOR
The
.Nm chio
program and SCSI changer driver were written by Jason R. Thorpe
<[email protected]> for And Communications, http://www.and.com/
+663
View File
@@ -0,0 +1,663 @@
/* $Id: $ */
/*
* Copyright (c) 1996 Jason R. Thorpe <[email protected]>
* 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 acknowledgements:
* This product includes software developed by Jason R. Thorpe
* for And Communications, http://www.and.com/
* 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.
*/
#include <sys/param.h>
#include <sys/ioctl.h>
#include <sys/chio.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "defs.h"
#include "pathnames.h"
extern char *__progname; /* from crt0.o */
static void usage __P((void));
static void cleanup __P((void));
static int parse_element_type __P((char *));
static int parse_element_unit __P((char *));
static int parse_special __P((char *));
static int is_special __P((char *));
static char *bits_to_string __P((int, const char *));
static int do_move __P((char *, int, char **));
static int do_exchange __P((char *, int, char **));
static int do_position __P((char *, int, char **));
static int do_params __P((char *, int, char **));
static int do_getpicker __P((char *, int, char **));
static int do_setpicker __P((char *, int, char **));
static int do_status __P((char *, int, char **));
/* Valid changer element types. */
const struct element_type elements[] = {
{ "picker", CHET_MT },
{ "slot", CHET_ST },
{ "portal", CHET_IE },
{ "drive", CHET_DT },
{ NULL, 0 },
};
/* Valid commands. */
const struct changer_command commands[] = {
{ "move", do_move },
{ "exchange", do_exchange },
{ "position", do_position },
{ "params", do_params },
{ "getpicker", do_getpicker },
{ "setpicker", do_setpicker },
{ "status", do_status },
{ NULL, 0 },
};
/* Valid special words. */
const struct special_word specials[] = {
{ "inv", SW_INVERT },
{ "inv1", SW_INVERT1 },
{ "inv2", SW_INVERT2 },
{ NULL, 0 },
};
static int changer_fd;
static char *changer_name;
int
main(argc, argv)
int argc;
char **argv;
{
int ch, i;
char *cp;
while ((ch = getopt(argc, argv, "f:")) != -1) {
switch (ch) {
case 'f':
changer_name = optarg;
break;
default:
usage();
}
}
argc -= optind;
argv += optind;
if (argc == 0)
usage();
/* Get the default changer if not already specified. */
if (changer_name == NULL)
if ((changer_name = getenv(CHANGER_ENV_VAR)) == NULL)
changer_name = _PATH_CH;
/* Open the changer device. */
if ((changer_fd = open(changer_name, O_RDWR, 0600)) == -1)
err(1, "%s: open", changer_name);
/* Register cleanup function. */
if (atexit(cleanup))
err(1, "can't register cleanup function");
/* Find the specified command. */
for (i = 0; commands[i].cc_name != NULL; ++i)
if (strcmp(*argv, commands[i].cc_name) == 0)
break;
if (commands[i].cc_name == NULL)
errx(1, "unknown command: %s", *argv);
/* Skip over the command name and call handler. */
++argv; --argc;
exit ((*commands[i].cc_handler)(commands[i].cc_name, argc, argv));
}
static int
do_move(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
struct changer_move cmd;
int val;
/*
* On a move command, we expect the following:
*
* <from ET> <from EU> <to ET> <to EU> [inv]
*
* where ET == element type and EU == element unit.
*/
if (argc < 4) {
warnx("%s: too few arguments", cname);
goto usage;
} else if (argc > 5) {
warnx("%s: too many arguments", cname);
goto usage;
}
bzero(&cmd, sizeof(cmd));
/* <from ET> */
cmd.cm_fromtype = parse_element_type(*argv);
++argv; --argc;
/* <from EU> */
cmd.cm_fromunit = parse_element_unit(*argv);
++argv; --argc;
/* <to ET> */
cmd.cm_totype = parse_element_type(*argv);
++argv; --argc;
/* <to EU> */
cmd.cm_tounit = parse_element_unit(*argv);
++argv; --argc;
/* Deal with optional command modifier. */
if (argc) {
val = parse_special(*argv);
switch (val) {
case SW_INVERT:
cmd.cm_flags |= CM_INVERT;
break;
default:
errx(1, "%s: inappropriate modifier `%s'",
cname, *argv);
/* NOTREACHED */
}
}
/* Send command to changer. */
if (ioctl(changer_fd, CHIOMOVE, (char *)&cmd))
err(1, "%s: CHIOMOVE", changer_name);
return (0);
usage:
fprintf(stderr, "usage: %s %s "
"<from ET> <from EU> <to ET> <to EU> [inv]\n", __progname, cname);
return (1);
}
static int
do_exchange(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
struct changer_exchange cmd;
int val;
/*
* On an exchange command, we expect the following:
*
* <src ET> <src EU> <dst1 ET> <dst1 EU> [<dst2 ET> <dst2 EU>] [inv1] [inv2]
*
* where ET == element type and EU == element unit.
*/
if (argc < 4) {
warnx("%s: too few arguments", cname);
goto usage;
} else if (argc > 8) {
warnx("%s: too many arguments", cname);
goto usage;
}
bzero(&cmd, sizeof(cmd));
/* <src ET> */
cmd.ce_srctype = parse_element_type(*argv);
++argv; --argc;
/* <src EU> */
cmd.ce_srcunit = parse_element_unit(*argv);
++argv; --argc;
/* <dst1 ET> */
cmd.ce_fdsttype = parse_element_type(*argv);
++argv; --argc;
/* <dst1 EU> */
cmd.ce_fdstunit = parse_element_unit(*argv);
++argv; --argc;
/*
* If the next token is a special word or there are no more
* arguments, then this is a case of simple exchange.
* dst2 == src.
*/
if ((argc == 0) || is_special(*argv)) {
cmd.ce_sdsttype = cmd.ce_srctype;
cmd.ce_sdstunit = cmd.ce_srcunit;
goto do_special;
}
/* <dst2 ET> */
cmd.ce_sdsttype = parse_element_type(*argv);
++argv; --argc;
/* <dst2 EU> */
cmd.ce_sdstunit = parse_element_unit(*argv);
++argv; --argc;
do_special:
/* Deal with optional command modifiers. */
while (argc) {
val = parse_special(*argv);
++argv; --argc;
switch (val) {
case SW_INVERT1:
cmd.ce_flags |= CE_INVERT1;
break;
case SW_INVERT2:
cmd.ce_flags |= CE_INVERT2;
break;
default:
errx(1, "%s: inappropriate modifier `%s'",
cname, *argv);
/* NOTREACHED */
}
}
/* Send command to changer. */
if (ioctl(changer_fd, CHIOEXCHANGE, (char *)&cmd))
err(1, "%s: CHIOEXCHANGE", changer_name);
return (0);
usage:
fprintf(stderr, "usage: %s %s <src ET> <src EU> <dst1 ET> <dst1 EU>\n"
" [<dst2 ET> <dst2 EU>] [inv1] [inv2]\n",
__progname, cname);
return (1);
}
static int
do_position(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
struct changer_position cmd;
int val;
/*
* On a position command, we expect the following:
*
* <to ET> <to EU> [inv]
*
* where ET == element type and EU == element unit.
*/
if (argc < 2) {
warnx("%s: too few arguments", cname);
goto usage;
} else if (argc > 3) {
warnx("%s: too many arguments", cname);
goto usage;
}
bzero(&cmd, sizeof(cmd));
/* <to ET> */
cmd.cp_type = parse_element_type(*argv);
++argv; --argc;
/* <to EU> */
cmd.cp_unit = parse_element_unit(*argv);
++argv; --argc;
/* Deal with optional command modifier. */
if (argc) {
val = parse_special(*argv);
switch (val) {
case SW_INVERT:
cmd.cp_flags |= CP_INVERT;
break;
default:
errx(1, "%s: inappropriate modifier `%s'",
cname, *argv);
/* NOTREACHED */
}
}
/* Send command to changer. */
if (ioctl(changer_fd, CHIOPOSITION, (char *)&cmd))
err(1, "%s: CHIOPOSITION", changer_name);
return (0);
usage:
fprintf(stderr, "usage: %s %s <to ET> <to EU> [inv]\n",
__progname, cname);
return (1);
}
static int
do_params(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
struct changer_params data;
/* No arguments to this command. */
if (argc) {
warnx("%s: no arguements expected", cname);
goto usage;
}
/* Get params from changer and display them. */
bzero(&data, sizeof(data));
if (ioctl(changer_fd, CHIOGPARAMS, (char *)&data))
err(1, "%s: CHIOGPARAMS", changer_name);
printf("%s: %d slot%s, %d drive%s, %d picker%s",
changer_name,
data.cp_nslots, (data.cp_nslots > 1) ? "s" : "",
data.cp_ndrives, (data.cp_ndrives > 1) ? "s" : "",
data.cp_npickers, (data.cp_npickers > 1) ? "s" : "");
if (data.cp_nportals)
printf(", %d portal%s", data.cp_nportals,
(data.cp_nportals > 1) ? "s" : "");
printf("\n%s: current picker: %d\n", changer_name, data.cp_curpicker);
return (0);
usage:
fprintf(stderr, "usage: %s %s\n", __progname, cname);
return (1);
}
static int
do_getpicker(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
int picker;
/* No arguments to this command. */
if (argc) {
warnx("%s: no arguments expected", cname);
goto usage;
}
/* Get current picker from changer and display it. */
if (ioctl(changer_fd, CHIOGPICKER, (char *)&picker))
err(1, "%s: CHIOGPICKER", changer_name);
printf("%s: current picker: %d\n", changer_name, picker);
return (0);
usage:
fprintf(stderr, "usage: %s %s\n", __progname, cname);
return (1);
}
static int
do_setpicker(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
int picker;
if (argc < 1) {
warnx("%s: too few arguments", cname);
goto usage;
} else if (argc > 1) {
warnx("%s: too many arguments", cname);
goto usage;
}
picker = parse_element_unit(*argv);
/* Set the changer picker. */
if (ioctl(changer_fd, CHIOSPICKER, (char *)&picker))
err(1, "%s: CHIOSPICKER", changer_name);
return (0);
usage:
fprintf(stderr, "usage: %s %s <picker>\n", __progname, cname);
return (1);
}
static int
do_status(cname, argc, argv)
char *cname;
int argc;
char **argv;
{
struct changer_element_status cmd;
struct changer_params data;
u_int8_t *statusp;
int i, count, chet, schet, echet;
char *cmdname, *description;
/*
* On a status command, we expect the following:
*
* [<ET>]
*
* where ET == element type.
*
* If we get no arguments, we get the status of all
* known element types.
*/
if (argc > 1) {
warnx("%s: too many arguments", cname);
goto usage;
}
/*
* Get params from changer. Specifically, we need the element
* counts.
*/
bzero(&data, sizeof(data));
if (ioctl(changer_fd, CHIOGPARAMS, (char *)&data))
err(1, "%s: CHIOGPARAMS", changer_name);
if (argc)
schet = echet = parse_element_type(*argv);
else {
schet = CHET_MT;
echet = CHET_DT;
}
for (chet = schet; chet <= echet; ++chet) {
switch (chet) {
case CHET_MT:
count = data.cp_npickers;
description = "picker";
break;
case CHET_ST:
count = data.cp_nslots;
description = "slot";
break;
case CHET_IE:
count = data.cp_nportals;
description = "portal";
break;
case CHET_DT:
count = data.cp_ndrives;
description = "drive";
break;
}
if (count == 0) {
if (argc == 0)
continue;
else {
printf("%s: no %s elements\n",
changer_name, description);
return (0);
}
}
/* Allocate storage for the status bytes. */
if ((statusp = (u_int8_t *)malloc(count)) == NULL)
errx(1, "can't allocate status storage");
bzero(statusp, count);
bzero(&cmd, sizeof(cmd));
cmd.ces_type = chet;
cmd.ces_data = statusp;
if (ioctl(changer_fd, CHIOGSTATUS, (char *)&cmd)) {
free(statusp);
err(1, "%s: CHIOGSTATUS", changer_name);
}
/* Dump the status for each element of this type. */
for (i = 0; i < count; ++i) {
printf("%s %d: %s\n", description, i,
bits_to_string(statusp[i], CESTATUS_BITS));
}
free(statusp);
}
return (0);
usage:
fprintf(stderr, "usage: %s %s [<element type>]\n", __progname,
cname);
return (1);
}
static int
parse_element_type(cp)
char *cp;
{
int i;
for (i = 0; elements[i].et_name != NULL; ++i)
if (strcmp(elements[i].et_name, cp) == 0)
return (elements[i].et_type);
errx(1, "invalid element type `%s'", cp);
}
static int
parse_element_unit(cp)
char *cp;
{
int i;
char *p;
i = (int)strtol(cp, &p, 10);
if ((i < 0) || (*p != '\0'))
errx(1, "invalid unit number `%s'", cp);
return (i);
}
static int
parse_special(cp)
char *cp;
{
int val;
val = is_special(cp);
if (val)
return (val);
errx(1, "invalid modifier `%s'", cp);
}
static int
is_special(cp)
char *cp;
{
int i;
for (i = 0; specials[i].sw_name != NULL; ++i)
if (strcmp(specials[i].sw_name, cp) == 0)
return (specials[i].sw_value);
return (0);
}
static char *
bits_to_string(v, cp)
int v;
const char *cp;
{
const char *np;
char f, sep, *bp;
static char buf[128];
bp = buf;
bzero(buf, sizeof(buf));
for (sep = '<'; (f = *cp++) != 0; cp = np) {
for (np = cp; *np >= ' ';)
np++;
if ((v & (1 << (f - 1))) == 0)
continue;
bp += sprintf(bp, "%c%.*s", sep, np - cp, cp);
sep = ',';
}
if (sep != '<')
*bp = '>';
return (buf);
}
static void
cleanup()
{
/* Simple enough... */
(void)close(changer_fd);
}
static void
usage()
{
fprintf(stderr, "usage: %s command arg1 arg2 ...\n", __progname);
exit(1);
}
+57
View File
@@ -0,0 +1,57 @@
/* $Id: $ */
/*
* Copyright (c) 1996 Jason R. Thorpe <[email protected]>
* 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 acknowledgements:
* This product includes software developed by Jason R. Thorpe
* for And Communications, http://www.and.com/
* 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.
*/
struct element_type {
char *et_name; /* name; i.e. "picker, "slot", etc. */
int et_type; /* type number */
};
struct changer_command {
char *cc_name; /* command name */
/* command handler */
int (*cc_handler) __P((char *, int, char **));
};
struct special_word {
char *sw_name; /* special word */
int sw_value; /* token value */
};
/* sw_value */
#define SW_INVERT 1 /* set "invert media" flag */
#define SW_INVERT1 2 /* set "invert media 1" flag */
#define SW_INVERT2 3 /* set "invert media 2" flag */
/* Environment variable to check for default changer. */
#define CHANGER_ENV_VAR "CHANGER"
+35
View File
@@ -0,0 +1,35 @@
/* $Id: $ */
/*
* Copyright (c) 1996 Jason R. Thorpe <[email protected]>
* 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 acknowledgements:
* This product includes software developed by Jason R. Thorpe
* for And Communications, http://www.and.com/
* 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.
*/
#define _PATH_CH "/dev/ch0"
+3 -2
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)chmod.1 8.4 (Berkeley) 3/31/94
.\" $Id: chmod.1,v 1.3 1996/02/16 00:08:53 joerg Exp $
.\" $Id: chmod.1,v 1.7 1997/02/22 14:01:29 peter Exp $
.\"
.Dd March 31, 1994
.Dt CHMOD 1
@@ -286,7 +286,8 @@ option for the naughty bits.
.Sh STANDARDS
The
.Nm chmod
utility is expected to be POSIX 1003.2
utility is expected to be
.St -p1003.2
compatible with the exception of the
.Ar perm
symbols
+2 -2
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)cp.1 8.3 (Berkeley) 4/18/94
.\" $Id: cp.1,v 1.5 1996/03/08 06:58:05 wosch Exp $
.\" $Id: cp.1,v 1.9 1997/02/22 14:01:32 peter Exp $
.\"
.Dd April 18, 1994
.Dt CP 1
@@ -213,7 +213,7 @@ or fifo's.
.Xr umask 2 ,
.Xr fts 3 ,
.Xr symlink 7
.Sh HISTORY
.Sh STANDARDS
The
.Nm cp
command is expected to be
+3 -3
View File
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)csh.1 8.2 (Berkeley) 1/21/94
.\" $Id: csh.1,v 1.4 1996/04/06 09:47:15 mpp Exp $
.\" $Id: csh.1,v 1.8 1997/02/22 14:01:40 peter Exp $
.\"
.Dd January 21, 1994
.Dt CSH 1
@@ -2121,13 +2121,13 @@ substitutions on a single line to 20.
.Xr fork 2 ,
.Xr killpg 2 ,
.Xr pipe 2 ,
.Xr setrlimit 2 ,
.Xr sigvec 2 ,
.Xr umask 2 ,
.Xr setrlimit 2 ,
.Xr wait 2 ,
.Xr tty 4 ,
.Xr a.out 5 ,
.Xr environ 7 ,
.Xr environ 7
.br
.Em An introduction to the C shell
.Sh HISTORY
+11 -8
View File
@@ -32,8 +32,8 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)date.1 8.2 (Berkeley) 11/17/93
.\" $Id: date.1,v 1.7 1996/03/12 05:30:39 nate Exp $
.\" @(#)date.1 8.3 (Berkeley) 4/28/95
.\" $Id: date.1,v 1.11 1997/02/22 14:02:31 peter Exp $
.\"
.Dd November 17, 1993
.Dt DATE 1
@@ -50,7 +50,7 @@
.Op Cm + Ns Ar format
.Op [yy[mm[dd[hh]]]]mm[\&.ss]
.Sh DESCRIPTION
.Nm Date
.Nm
displays the current date and time when invoked without arguments.
Providing arguments will format the date and time in a user-defined
way or set the date.
@@ -105,9 +105,11 @@ The format string may contain any of the conversion specifications described
in the
.Xr strftime 3
manual page, as well as any arbitrary text.
A <newline> character is always output after the characters specified by
the format string.
The format string for the default display is:
.Bd -literal -offset indent
``%+''.
``+%+''
.Ed
.Pp
If an operand does not have a leading plus sign, it is interpreted as
@@ -137,7 +139,7 @@ and years are handled automatically.
.Sh EXAMPLES
The command:
.Bd -literal -offset indent
date ``+DATE: %m/%d/%y%nTIME: %H:%M:%S%n''
date ``+DATE: %m/%d/%y%nTIME: %H:%M:%S''
.Ed
.Pp
will display:
@@ -162,9 +164,10 @@ date 1432
sets the time to
.Li "2:32 PM" ,
without modifying the date.
.Sh ENVIRONMENTAL VARIABLES
The following environment variables affect the execution of
.Nm date :
.Sh ENVIRONMENT VARIABLES
The execution of
.Nm
is affected by the following evironment variables:
.Bl -tag -width Ds
.It Ev TZ
The timezone to use when displaying dates.
+3 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: netdate.c,v 1.2 1994/09/24 02:54:38 davidg Exp $
* $Id: netdate.c,v 1.3 1995/05/30 00:06:41 rgrimes Exp $
*/
#ifndef lint
@@ -116,7 +116,8 @@ netsettime(tval)
warn("gethostname");
goto bad;
}
(void)strncpy(msg.tsp_name, hostname, sizeof(hostname));
(void)strncpy(msg.tsp_name, hostname, sizeof(msg.tsp_name));
msg.tsp_name[sizeof(msg.tsp_name) - 1] = '\0';
msg.tsp_seq = htons((u_short)0);
msg.tsp_time.tv_sec = htonl((u_long)tval);
msg.tsp_time.tv_usec = htonl((u_long)0);
+2 -2
View File
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: args.c,v 1.3 1994/09/24 02:54:42 davidg Exp $
*/
#ifndef lint
@@ -100,7 +100,7 @@ jcl(argv)
in.dbsz = out.dbsz = 512;
while ((oper = *++argv)) {/* JEAG */
while ((oper = *++argv) != NULL) {
if ((arg = strchr(oper, '=')) == NULL)
errx(1, "unknown operand %s", oper);
*arg++ = '\0';
+5 -5
View File
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: conv.c,v 1.3 1994/09/24 02:54:44 davidg Exp $
*/
#ifndef lint
@@ -61,7 +61,7 @@ def()
int cnt;
u_char *inp, *t;
if ((t = ctab))
if ((t = ctab) != NULL)
for (inp = in.dbp - (cnt = in.dbrcnt); cnt--; ++inp)
*inp = t[*inp];
@@ -105,7 +105,6 @@ block()
int ch, cnt, maxlen;
u_char *inp, *outp, *t;
ch = 0;
/*
* Record truncation can cross block boundaries. If currently in a
* truncation state, keep tossing characters until reach a newline.
@@ -130,9 +129,10 @@ block()
* Copy records (max cbsz size chunks) into the output buffer. The
* translation is done as we copy into the output buffer.
*/
ch = 0; /* Help the compiler. */
for (inp = in.dbp - in.dbcnt, outp = out.dbp; in.dbcnt;) {
maxlen = MIN(cbsz, in.dbcnt);
if ((t = ctab))
if ((t = ctab) != NULL)
for (cnt = 0;
cnt < maxlen && (ch = *inp++) != '\n'; ++cnt)
*outp++ = t[ch];
@@ -216,7 +216,7 @@ unblock()
u_char *inp, *t;
/* Translation and case conversion. */
if ((t = ctab))
if ((t = ctab) != NULL)
for (cnt = in.dbrcnt, inp = in.dbp; cnt--;)
*--inp = t[*inp];
/*
+1 -1
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)dd.1 8.2 (Berkeley) 1/13/94
.\" $Id$
.\" $Id: dd.1,v 1.4 1997/02/22 14:02:43 peter Exp $
.\"
.Dd January 13, 1994
.Dt DD 1
+6 -4
View File
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: dd.c,v 1.4 1995/01/17 23:04:29 ache Exp $
* $Id: dd.c,v 1.5 1995/10/23 21:31:48 ache Exp $
*/
#ifndef lint
@@ -56,12 +56,12 @@ static char sccsid[] = "@(#)dd.c 8.5 (Berkeley) 4/2/94";
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <locale.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <locale.h>
#include "dd.h"
#include "extern.h"
@@ -85,7 +85,7 @@ main(argc, argv)
int argc;
char *argv[];
{
(void) setlocale(LC_CTYPE, "");
(void)setlocale(LC_CTYPE, "");
jcl(argv);
setup();
@@ -105,6 +105,7 @@ static void
setup()
{
u_int cnt;
struct timeval tv;
if (in.name == NULL) {
in.name = "stdin";
@@ -213,7 +214,8 @@ setup()
ctab[cnt] = cnt;
}
}
(void)time(&st.start); /* Statistics timestamp. */
(void)gettimeofday(&tv, (struct timezone *)NULL);
st.start = tv.tv_sec + tv.tv_usec * 1e-6;
}
static void
+2 -2
View File
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* @(#)dd.h 8.3 (Berkeley) 4/2/94
* $Id$
* $Id: dd.h,v 1.2 1994/09/24 02:54:54 davidg Exp $
*/
/* Input/output stream state. */
@@ -70,7 +70,7 @@ typedef struct {
u_long trunc; /* # of truncated records */
u_long swab; /* # of odd-length swab blocks */
u_long bytes; /* # of bytes written */
time_t start; /* start time of dd */
double start; /* start time of dd */
} STAT;
/* Flags (in ddflags). */
+9 -6
View File
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: misc.c,v 1.2 1994/09/24 02:55:01 davidg Exp $
*/
#ifndef lint
@@ -42,6 +42,7 @@ static char sccsid[] = "@(#)misc.c 8.3 (Berkeley) 4/2/94";
#endif /* not lint */
#include <sys/types.h>
#include <sys/time.h>
#include <err.h>
#include <stdio.h>
@@ -56,12 +57,14 @@ static char sccsid[] = "@(#)misc.c 8.3 (Berkeley) 4/2/94";
void
summary()
{
time_t secs;
struct timeval tv;
double secs;
char buf[100];
(void)time(&secs);
if ((secs -= st.start) == 0)
secs = 1;
(void)gettimeofday(&tv, (struct timezone *)NULL);
secs = tv.tv_sec + tv.tv_usec * 1e-6 - st.start;
if (secs < 1e-6)
secs = 1e-6;
/* Use snprintf(3) so that we don't reenter stdio(3). */
(void)snprintf(buf, sizeof(buf),
"%u+%u records in\n%u+%u records out\n",
@@ -78,7 +81,7 @@ summary()
(void)write(STDERR_FILENO, buf, strlen(buf));
}
(void)snprintf(buf, sizeof(buf),
"%u bytes transferred in %u secs (%u bytes/sec)\n",
"%u bytes transferred in %.6f secs (%.0f bytes/sec)\n",
st.bytes, secs, st.bytes / secs);
(void)write(STDERR_FILENO, buf, strlen(buf));
}
+6 -3
View File
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)df.1 8.2 (Berkeley) 1/13/94
.\" $Id: df.1,v 1.3 1994/09/24 02:55:08 davidg Exp $
.\" $Id: df.1,v 1.4 1996/08/29 18:05:48 wosch Exp $
.\"
.Dd January 13, 1994
.Dt DF 1
@@ -78,11 +78,14 @@ with the possibly stale statistics that were previously obtained.
.It Fl t
Only print out statistics for filesystems of the specified types.
The recognized types are:
ufs, nfs, mfs, lfs, msdos, fdesc, portal, kernfs, procfs, afs and isofs.
ufs, nfs, mfs, lfs, msdos, fdesc, portal, kernfs, procfs, afs, isofs,
iso9660fs, cdfs, and cd9660,
along with the aggregates:
all (the default),
local (ufs, mfs, lfs, msdos, isofs),
local (ufs, mfs, lfs, msdos, cd9660),
and misc (fdesc, portal, kernfs, procfs).
The names isofs, iso9660fs, cdfs, and cd9660 are aliases to each other
all of them refering to the same type of file system.
The string ``no'' may be prepending to a type to get its complement
(e.g. ``nonfs'' to get non-NFS filesystems). The first
.Fl t
+3 -1
View File
@@ -35,7 +35,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: df.c,v 1.7 1995/05/30 00:06:42 rgrimes Exp $
* $Id: df.c,v 1.8 1996/01/14 18:55:09 bde Exp $
*/
#ifndef lint
@@ -95,6 +95,8 @@ struct typetab {
{"procfs", MT(MOUNT_PROCFS)},
{"afs", MT(MOUNT_AFS)},
{"iso9660fs", MT(MOUNT_CD9660)},
{"isofs", MT(MOUNT_CD9660)},
{"cd9660", MT(MOUNT_CD9660)},
{"cdfs", MT(MOUNT_CD9660)},
{"misc", MT(MOUNT_LOFS)|MT(MOUNT_FDESC)|MT(MOUNT_PORTAL)|
MT(MOUNT_KERNFS)|MT(MOUNT_PROCFS)},
+8 -4
View File
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: buf.c,v 1.6 1994/09/24 02:55:22 davidg Exp $
* $Id: buf.c,v 1.7 1995/05/30 00:06:43 rgrimes Exp $
*/
#ifndef lint
static char *rcsid = "@(#)buf.c,v 1.4 1994/02/01 00:34:35 alm Exp";
@@ -198,14 +198,18 @@ char sfn[15] = ""; /* scratch file name */
int
open_sbuf()
{
int fd = -1;
int u;
isbinary = newline_added = 0;
u = umask(077);
strcpy(sfn, "/tmp/ed.XXXXXX");
if (mktemp(sfn) == NULL || (sfp = fopen(sfn, "w+")) == NULL) {
fprintf(stderr, "%s: %s\n", sfn, strerror(errno));
sprintf(errmsg, "cannot open temp file");
if ((fd = mkstemp(sfn)) == -1 ||
(sfp = fdopen(fd, "w+")) == NULL) {
if (fd != -1)
close(fd);
perror(sfn);
strcpy(errmsg, "cannot open temp file");
umask(u);
return ERR;
}
+5 -5
View File
@@ -29,10 +29,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)hostname.1 8.1 (Berkeley) 5/31/93
.\" $Id: hostname.1,v 1.2 1994/09/24 02:55:40 davidg Exp $
.\" @(#)hostname.1 8.2 (Berkeley) 4/28/95
.\" $Id: hostname.1,v 1.6 1997/02/22 14:03:41 peter Exp $
.\"
.Dd May 31, 1993
.Dd April 28, 1995
.Dt HOSTNAME 1
.Os BSD 4.2
.Sh NAME
@@ -41,9 +41,9 @@
.Sh SYNOPSIS
.Nm hostname
.Op Fl s
.Op Ar nameofhost
.Op Ar name-of-host
.Sh DESCRIPTION
.Nm Hostname
.Nm
prints the name of the current host. The super-user can
set the hostname by supplying an argument; this is usually done in the
network initialization script
+3 -3
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
* $Id: cmp.c,v 1.2 1994/09/24 02:55:52 davidg Exp $
*/
#ifndef lint
@@ -53,14 +53,14 @@ int
namecmp(a, b)
const FTSENT *a, *b;
{
return (strcmp(a->fts_name, b->fts_name));
return (strcoll(a->fts_name, b->fts_name));
}
int
revnamecmp(a, b)
const FTSENT *a, *b;
{
return (strcmp(b->fts_name, a->fts_name));
return (strcoll(b->fts_name, a->fts_name));
}
int
+10 -3
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)ls.1 8.6 (Berkeley) 4/18/94
.\" $Id: ls.1,v 1.4 1995/09/26 08:48:09 mpp Exp $
.\" $Id: ls.1,v 1.5.2.2 1997/03/07 02:00:30 mpp Exp $
.\"
.Dd April 18, 1994
.Dt LS 1
@@ -43,7 +43,7 @@
.Nd list directory contents
.Sh SYNOPSIS
.Nm ls
.Op Fl ACFLRTacdfiloqrstu1
.Op Fl ACFLRTacdfgikloqrstu1
.Op Ar file ...
.Sh DESCRIPTION
For each operand that names a
@@ -104,6 +104,13 @@ Directories are listed as plain files (not searched recursively) and
symbolic links in the argument list are not indirected through.
.It Fl f
Output is not sorted.
.It Fl g
This option is deprecated and is only available for compatibility
with
.Bx 4.3 ;
it was used to display the group name in the long
.Pq Fl l
format output.
.It Fl i
For each file, print the file's file serial number (inode number).
.It Fl k
@@ -116,7 +123,7 @@ sizes is output on a line before the long listing.
.It Fl o
Include the file flags in a long
.Pq Fl l
output
output.
.It Fl q
Force printing of non-graphic characters in file names as
the character `?'; this is the default when output is to a terminal.
+2 -2
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: util.c,v 1.4 1994/10/09 15:25:23 ache Exp $
* $Id: util.c,v 1.5 1996/03/31 16:14:11 ache Exp $
*/
#ifndef lint
@@ -68,6 +68,6 @@ prcopy(src, dest, len)
void
usage()
{
(void)fprintf(stderr, "usage: ls [-1ACFLRTacdfiklqrstu] [file ...]\n");
(void)fprintf(stderr, "usage: ls [-1ACFLRTacdfikloqrstu] [file ...]\n");
exit(1);
}
+3 -3
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)mkdir.1 8.2 (Berkeley) 1/25/94
.\" $Id: mkdir.1,v 1.2 1994/09/24 02:56:02 davidg Exp $
.\" $Id: mkdir.1,v 1.6 1997/02/22 14:04:08 peter Exp $
.\"
.Dd January 25, 1994
.Dt MKDIR 1
@@ -47,7 +47,7 @@
.Op Fl m Ar mode
.Ar directory_name ...
.Sh DESCRIPTION
.Nm Mkdir
.Nm
creates the directories named as operands, in the order specified,
using mode
.Li rwxrwxrwx (\&0777)
@@ -81,7 +81,7 @@ permission for the owner.
.Pp
The user must have write permission in the parent directory.
.Pp
.Nm Mkdir
.Nm
exits 0 if successful, and >0 if an error occurred.
.Sh SEE ALSO
.Xr rmdir 1
+2 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: fmt.c,v 1.5 1995/03/09 20:40:17 davidg Exp $
* $Id: fmt.c,v 1.6 1995/10/23 21:03:40 ache Exp $
*/
#ifndef lint
@@ -59,7 +59,7 @@ shquote(argv)
char **argv;
{
char **p, *dst, *src;
static char buf[ARG_MAX]; /* XXX */
static char buf[4*ARG_MAX]; /* XXX */
if (*argv == 0) {
buf[0] = 0;
+5 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: print.c,v 1.15 1996/06/29 10:25:31 peter Exp $
* $Id: print.c,v 1.16 1996/10/21 07:30:24 peter Exp $
*/
#ifndef lint
@@ -103,7 +103,10 @@ command(k, ve)
v = ve->var;
if (cflag) {
(void)printf("%-*s", v->width, KI_PROC(k)->p_comm);
if (ve->next == NULL) /* last field, don't pad */
(void)printf("%s", KI_PROC(k)->p_comm);
else
(void)printf("%-*s", v->width, KI_PROC(k)->p_comm);
return;
}
+1 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ps.c,v 1.12 1996/01/20 10:43:54 mpp Exp $
* $Id: ps.c,v 1.13 1996/10/21 07:30:26 peter Exp $
*/
#ifndef lint
@@ -47,7 +47,6 @@ static char sccsid[] = "@(#)ps.c 8.4 (Berkeley) 4/2/94";
#include <sys/user.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/proc.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/sysctl.h>
+6 -6
View File
@@ -32,10 +32,10 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)pwd.1 8.1 (Berkeley) 5/31/93
.\" $Id$
.\" @(#)pwd.1 8.2 (Berkeley) 4/28/95
.\" $Id: pwd.1,v 1.5 1997/02/22 14:05:15 peter Exp $
.\"
.Dd May 31, 1993
.Dd April 28, 1995
.Dt PWD 1
.Os BSD 4
.Sh NAME
@@ -44,7 +44,7 @@
.Sh SYNOPSIS
.Nm pwd
.Sh DESCRIPTION
.Nm Pwd
.Nm
writes the absolute pathname of the current working directory to
the standard output.
.Pp
@@ -54,11 +54,11 @@ The
.Nm pwd
command is expected to be
.St -p1003.2
compatible .
compatible.
.Sh SEE ALSO
.Xr cd 1 ,
.Xr csh 1 ,
.Xr getwd 3
.Xr getcwd 3
.Sh BUGS
In
.Xr csh 1
+3 -3
View File
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rcp.1 8.1 (Berkeley) 5/31/93
.\" $Id$
.\" $Id: rcp.1,v 1.5 1997/02/22 14:05:21 peter Exp $
.\"
.Dd May 31, 1993
.Dt RCP 1
@@ -130,8 +130,8 @@ are on the current machine.
.Sh SEE ALSO
.Xr cp 1 ,
.Xr ftp 1 ,
.Xr rsh 1 ,
.Xr rlogin 1
.Xr rlogin 1 ,
.Xr rsh 1
.Sh HISTORY
The
.Nm rcp
+3 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: rcp.c,v 1.7 1996/02/11 09:01:32 markm Exp $
* $Id$
*/
#ifndef lint
@@ -131,7 +131,8 @@ main(argc, argv)
#ifdef KERBEROS
case 'k':
dest_realm = dst_realm_buf;
(void)strncpy(dst_realm_buf, optarg, REALM_SZ);
(void)strncpy(dst_realm_buf, optarg, REALM_SZ - 1);
dst_realm_buf[REALM_SZ - 1] = '\0';
break;
#ifdef CRYPT
case 'x':
+19 -13
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rm.1 8.2 (Berkeley) 4/18/94
.\" $Id: rm.1,v 1.3 1996/03/07 23:26:58 wosch Exp $
.\" $Id: rm.1,v 1.4.2.1 1997/04/08 20:43:37 mpp Exp $
.\"
.Dd April 18, 1994
.Dt RM 1
@@ -119,20 +119,26 @@ If an error occurs,
.Nm rm
exits with a value >0.
.Sh NOTE
.Nm rm
use
The
.Nm
command uses
.Xr getopt 3
parsing routine. Getopt accept a
to parse its arguments, which allows it to accept
the
.Sq Li --
argument, which stop reading options, anything after this
is not an option.
So
.Nm rm
handle files whose names begins with a
.Sq Li - .
Example:
``$ rm -- -filename''.
option which will cause it to stop processing flag options at that
point. This will allow the removal of file names that begin
with a dash
.Pq Sq - .
For example:
.Dl rm -- -filename
The same behavior can be obtained by using an absolute or relative
path reference. For example:
.Dl rm /home/user/-filename
.Dl rm ./-filename
This is useful for commands that do not use
.Xr getopt 3
to parse the command line arguments.
.Sh SEE ALSO
.Xr rmdir 1 ,
.Xr unlink 2 ,
+4 -4
View File
@@ -30,7 +30,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)rmail.8 6.10 (Berkeley) 4/29/93
.\" $Id$
.\" $Id: rmail.8,v 1.5 1997/02/22 14:05:30 peter Exp $
.\"
.Dd April 29, 1993
.Dt RMAIL 8
@@ -42,7 +42,7 @@
.Nm rmail
.Ar user ...
.Sh DESCRIPTION
.Nm Rmail
.Nm
interprets incoming mail received via
.Xr uucp 1 ,
collapsing ``From'' lines in the form generated
@@ -52,7 +52,7 @@ into a single line of the form ``return-path!sender'',
and passing the processed mail on to
.Xr sendmail 8 .
.Pp
.Nm Rmail
.Nm
is explicitly designed for use with
.Xr uucp
and
@@ -67,6 +67,6 @@ The
program appeared in
.Bx 4.2 .
.Sh BUGS
.Nm Rmail
.Nm
should not reside in
.Pa /bin .
+3 -20
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: eval.c,v 1.6 1996/10/06 15:17:19 steve Exp $
* $Id: eval.c,v 1.7.2.1 1996/11/12 19:23:44 jkh Exp $
*/
#ifndef lint
@@ -854,24 +854,7 @@ cmddone:
parent: /* parent process gets here (if we forked) */
if (mode == 0) { /* argument to fork */
INTOFF;
if (minusc) {
struct sigaction iact, qact, oiact, oqact;
(void)sigaction(SIGINT, (struct sigaction *)NULL, &oiact);
(void)sigaction(SIGQUIT, (struct sigaction *)NULL, &oqact);
iact = oiact;
qact = oqact;
qact.sa_handler = iact.sa_handler = SIG_IGN;
(void)sigaction(SIGINT, &iact, (struct sigaction *)NULL);
(void)sigaction(SIGQUIT, &qact, (struct sigaction *)NULL);
exitstatus = waitforjob(jp);
(void)sigaction(SIGINT, &oiact, (struct sigaction *)NULL);
(void)sigaction(SIGQUIT, &oqact, (struct sigaction *)NULL);
} else
exitstatus = waitforjob(jp);
exitstatus = waitforjob(jp);
INTON;
} else if (mode == 2) {
backcmd->fd = pip[0];
@@ -974,7 +957,7 @@ returncmd(argc, argv)
{
int ret;
ret = exitstatus;
ret = oexitstatus;
if (argc > 1)
ret = number(argv[1]);
if (funcnest) {
+6 -3
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: expand.c,v 1.10 1996/09/10 02:42:30 peter Exp $
* $Id: expand.c,v 1.11 1996/10/31 07:15:54 ache Exp $
*/
#ifndef lint
@@ -335,7 +335,10 @@ expari(flag)
* have to rescan starting from the beginning since CTLESC
* characters have to be processed left to right.
*/
CHECKSTRSPACE(8, expdest);
#if INT_MAX / 1000000000 >= 10 || INT_MIN / 1000000000 <= -10
#error "integers with more than 10 digits are not supported"
#endif
CHECKSTRSPACE(12 - 2, expdest);
USTPUTC('\0', expdest);
start = stackblock();
p = expdest;
@@ -350,7 +353,7 @@ expari(flag)
if (quotes)
rmescapes(p+1);
result = arith(p+1);
fmtstr(p, 10, "%d", result);
fmtstr(p, 12, "%d", result);
while (*p++)
;
result = expdest - p + 1;
+2 -3
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: jobs.c,v 1.7 1996/09/03 14:15:52 peter Exp $
* $Id: jobs.c,v 1.8 1996/10/16 02:30:39 steve Exp $
*/
#ifndef lint
@@ -580,8 +580,7 @@ forkshell(jp, n, mode)
pgrp = getpid();
else
pgrp = jp->ps[0].pid;
setpgid(0, pgrp);
if (mode == FORK_FG) {
if (setpgid(0, pgrp) == 0 && mode == FORK_FG) {
/*** this causes superfluous TIOCSPGRPS ***/
if (ioctl(2, TIOCSPGRP, (char *)&pgrp) < 0)
error("TIOCSPGRP failed, errno=%d", errno);
+2 -1
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: options.c,v 1.7 1996/09/01 10:21:16 peter Exp $
* $Id: options.c,v 1.8 1996/10/29 03:12:48 steve Exp $
*/
#ifndef lint
@@ -408,6 +408,7 @@ atend:
if (*p == '\0' && (p = *shellparam.optnext++) == NULL) {
out1fmt("No arg for -%c option\n", c);
c = '?';
shellparam.optnext--;
goto out;
}
setvar("OPTARG", p, 0);
+106 -50
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sh.1 8.6 (Berkeley) 5/4/95
.\" $Id: sh.1,v 1.8 1996/09/03 14:15:59 peter Exp $
.\" $Id: sh.1,v 1.12 1997/02/22 13:58:43 peter Exp $
.\"
.na
.TH SH 1
@@ -200,11 +200,11 @@ no effect when set after the shell has already started
running (i.e. with set(1)).
.TP
-V vi
Enable the builtin vi(1) command line editor (disables
Enable the built-in vi(1) command line editor (disables
-E if it has been set).
.TP
-E emacs
Enable the builtin emacs(1) command line editor (disables
Enable the built-in emacs(1) command line editor (disables
-V if it has been set).
.TP
-b notify
@@ -250,7 +250,8 @@ a <newline> is treated as a line continuation.
.sp
.LP
Enclosing characters in single quotes preserves the literal
meaning of all the characters.
meaning of all the characters (except single quotes, making
it impossible to put single-quotes in a single-quoted string).
.sp 2
.B Double Quotes
.sp
@@ -355,33 +356,33 @@ previously. Following is a list of the possible redirections.
The [n] is an optional number, as in '3' (not '[3]'), that
refers to a file descriptor.
.TP
[n]> file
[n]> file
Redirect standard output (or n) to file.
.TP
[n]>| file
[n]>| file
Same, but override the -C option.
.TP
[n]>> file
[n]>> file
Append standard output (or n) to file.
.TP
[n]< file
[n]< file
Redirect standard input (or n) from file.
.TP
[n1]<&n2
[n1]<&n2
Duplicate standard input (or n1) from
file descriptor n2.
.TP
[n]<&-
[n]<&-
Close standard input (or n).
.TP
[n1]>&n2
[n1]>&n2
Duplicate standard output (or n) from
n2.
.TP
[n]>&-
[n]>&-
Close standard output (or n).
.TP
[n]<> file
[n]<> file
Open file for reading and writing on
standard input (or n).
.LP
@@ -406,11 +407,13 @@ in the here-doc-text are stripped.
.B Search and Execution
.sp
.LP
There are three types of commands: shell functions, builtin commands, and normal programs -- and the
There are three types of commands: shell functions,
builtin commands, and normal programs -- and the
command is searched for (by name) in that order. They
each are executed in a different way.
.LP
When a shell function is executed, all of the shell positional parameters (except $0, which remains unchanged) are
When a shell function is executed, all of the shell positional
parameters (except $0, which remains unchanged) are
set to the arguments of the shell function.
The variables which are explicitly placed in the environment of
the command (by placing assignments to them before the
@@ -418,37 +421,49 @@ function name) are made local to the function and are set
to the values given. Then the command given in the function
definition is executed. The positional parameters are
restored to their original values when the command completes.
This all occurs within the current shell.
.LP
Shell builtins are executed internally to the shell, without spawning a new process.
Shell builtins are executed internally to the shell, without
spawning a new process.
.LP
Otherwise, if the command name doesn't match a function
or builtin, the command is searched for as a normal
program in the filesystem (as described in the next section).
When a normal program is executed, the shell runs the program,
passing the arguments and the environment to the
program. If the program is a shell procedure, the shell
will interpret the program in a subshell. The shell will
program. If the program is not a normal executable file
(i.e., if it does not begin with the "magic number"
whose ASCII representation is "#!", so execve(2) returns
ENOEXEC then) the shell
will interpret the program in a subshell. The child shell will
reinitialize itself in this case, so that the effect will
be as if a new shell had been invoked to handle the shell
procedure, except that the location of commands located in
be as if a new shell had been invoked to handle the ad-hoc shell
script, except that the location of hashed commands located in
the parent shell will be remembered by the child.
.LP
Note that previous versions of this document
and the source code itself misleadingly and sporadically
refer to a shell script without a magic number
as a "shell procedure".
.sp 2
.B Path Search
.sp
.LP
When locating a command, the shell first looks to see if
it has a shell function by that name. Then it looks for a
builtin command by that name.
Finally, it searches each
entry in PATH in turn for the command.
.LP
builtin command by that name. If a builtin command is not found,
one of two things happen:
.sp
1) Command names containing a slash are simply executed without
performing any searches.
.sp
2) The shell searches each entry in PATH in turn for the command.
The value of the PATH variable should be a series of
entries separated by colons. Each entry consists of a
directory name.
The current directory
may be indicated by an empty directory name.
.LP
Command names containing a slash are simply executed without performing any of the above searches.
may be indicated implicitly by an empty directory name,
or explicitly by a single period.
.sp 2
.B Command Exit Status
.sp
@@ -459,7 +474,7 @@ with zero for normal or success, and non-zero for failure,
error, or a false indication. The man page for each command
should indicate the various exit codes and what they mean.
Additionally, the builtin commands return exit codes, as does
an executed function.
an executed shell function.
.sp 2
.B Complex Commands
.sp
@@ -484,13 +499,14 @@ command. More generally, a command is one of the following:
Unless otherwise stated, the exit status of a command is
that of the last simple command executed by the command.
.sp 2
.B Pipeline
.B Pipelines
.sp
.LP
A pipeline is a sequence of one or more commands separated
by the control operator |. The standard output of all but
the last command is connected to the standard input
of the next command.
of the next command. The standard output of the last
command is inherited from the shell, as usual.
.LP
The format for a pipeline is:
.nf
@@ -530,6 +546,12 @@ to the standard input of command2.
A ; or <newline> terminator causes the preceding
AND-OR-list (described next) to be executed sequentially; a & causes
asynchronous execution of the preceding AND-OR-list.
.LP
Note that unlike some other shells, each process in the
pipeline is a child of the invoking shell (unless it
is a shell builtin, in which case it executes in the
current shell -- but any effect it has on the
environment is wiped).
.sp 2
.B Background Commands -- &
.sp
@@ -560,6 +582,9 @@ If command is followed by an ampersand, the shell starts the
command and immediately proceed onto the next command;
otherwise it waits for the command to terminate before
proceeding to the next one.
.sp 2
.B Short-Circuit List Operators
.sp
.LP
``&&'' and ``||'' are AND-OR list operators. ``&&'' executes
the first command, and then executes the second command
@@ -567,6 +592,9 @@ iff the exit status of the first command is zero. ``||''
is similar, but executes the second command iff the exit
status of the first command is nonzero. ``&&'' and ``||''
both have the same priority.
.sp 2
.B Flow-Control Constructs -- if, while, for, case
.sp
.LP
The syntax of the if command is
.nf
@@ -587,7 +615,9 @@ The syntax of the while command is
done
.fi
The two lists are executed repeatedly while the exit status of the first list is zero. The until command is similar, but has the word until in place of while
The two lists are executed repeatedly while the exit status of the
first list is zero. The until command is similar, but has the word
until in place of while, which causes it to
repeat until the exit status of the first list is zero.
.LP
The syntax of the for command is
@@ -610,7 +640,8 @@ The syntax of the break and continue command is
.fi
Break terminates the num innermost for or while loops.
Continue continues with the next iteration of the innermost loop. These are implemented as builtin commands.
Continue continues with the next iteration of the innermost loop.
These are implemented as builtin commands.
.LP
The syntax of the case command is
.nf
@@ -624,7 +655,9 @@ The syntax of the case command is
.LP
The pattern can actually be one or more patterns (see Shell
Patterns described later), separated by ``|'' characters.
.sp 2
.B Grouping Commands Together
.sp
.LP
Commands may be grouped by writing either
.nf
@@ -639,6 +672,17 @@ or
.fi
The first of these executes the commands in a subshell.
Builtin commands grouped into a (list) will not affect
the current shell.
The second form does not fork another shell so is
slightly more efficient.
Grouping commands together this way allows you to
redirect their output as though they were one program:
.nf
{ echo -n "hello"; echo " world" } > greeting
.fi
.sp 2
.B Functions
.sp
@@ -799,7 +843,7 @@ The $ character is used to introduce parameter expansion, command
substitution, or arithmetic evaluation.
.sp 2
.B Tilde Expansion (substituting a user's home directory)
.sp
.sp
.LP
A word beginning with an unquoted tilde character (~) is
subjected to tilde expansion. All the characters up to
@@ -889,13 +933,13 @@ String Length. The length in characters of
the value of parameter.
.LP
The following four varieties of parameter expansion provide for substring
processing. In each case, pattern matching notation (see Shell Patterns), rather
processing. In each case, pattern matching notation (see Shell Patterns),
rather
than regular expression notation, is used to evaluate the patterns.
If parameter is * or @, the result of the expansion is unspecified.
Enclosing the full parameter expansion string in double-quotes does not
cause the following four varieties of pattern characters to be quoted,
whereas quoting characters within the braces has this effect.
(UNIMPLEMENTED IN 4.4alpha)
.TP
${parameter%word}
Remove Smallest Suffix Pattern. The word
@@ -903,7 +947,6 @@ is expanded to produce a pattern. The
parameter expansion then results in
parameter, with the smallest portion of the
suffix matched by the pattern deleted.
.TP
${parameter%%word}
Remove Largest Suffix Pattern. The word
@@ -991,12 +1034,14 @@ substitution into fields.
.B Pathname Expansion (File Name Generation)
.sp
.LP
Unless the -f flag is set, file name generation is performed after word splitting is complete. Each word is
Unless the -f flag is set, file name generation is performed
after word splitting is complete. Each word is
viewed as a series of patterns, separated by slashes. The
process of expansion replaces the word with the names of
all existing files whose names can be formed by replacing
each pattern with a string that matches the specified pattern.
There are two restrictions on this: first, a pattern cannot match a string containing a slash, and second,
There are two restrictions on this: first, a pattern cannot match
a string containing a slash, and second,
a pattern cannot match a string starting with a period
unless the first character of the pattern is a period.
The next section describes the patterns used for both
@@ -1037,8 +1082,8 @@ minus sign, make it the first or last character listed
.LP
This section lists the builtin commands which
are builtin because they need to perform some operation
that can't be performed by a separate process. In addition
to these, there are several other commands that may
that can't be performed by a separate process. In addition to
these, there are several other commands that may
be builtin for efficiency (e.g. printf(1), echo(1), test(1),
etc).
.TP
@@ -1060,8 +1105,8 @@ Continue the specified jobs (or the current job if no
jobs are given) in the background.
.TP
command command arg...
Execute the specified builtin command. (This is useful
when you have a shell function with the same name
Execute the specified builtin command. (This is useful when you
have a shell function with the same name
as a builtin command.)
.TP
cd [ directory ]
@@ -1071,7 +1116,8 @@ of the cd command or the shell variable CDPATH is set
and the directory name does not begin with a slash,
then the directories listed in CDPATH will be
searched for the specified directory. The format of
CDPATH is the same as that of PATH. In an interactive shell, the cd command will print out the name of
CDPATH is the same as that of PATH. In an interactive shell,
the cd command will print out the name of
the directory that it actually switched to if this is
different from the name that the user gave. These
may be different either because the CDPATH mechanism
@@ -1085,7 +1131,8 @@ exec [ command arg... ]
Unless command is omitted, the shell process is
replaced with the specified program (which must be a
real program, not a shell builtin or function). Any
redirections on the exec command are marked as permanent, so that they are not undone when the exec command finishes.
redirections on the exec command are marked as permanent,
so that they are not undone when the exec command finishes.
.TP
exit [ exitstatus ]
Terminate the shell process. If exitstatus is given
@@ -1183,6 +1230,14 @@ foreground.
.TP
getopts optstring var
The POSIX getopts command.
The getopts command deprecates the older getopt command.
The first argument should be a series of letters, each possibly
followed by a colon which indicates that the option takes an argument.
The specified variable is set to the parsed option. The index of
the next argument is placed into the shell variable OPTIND.
If an option takes an argument, it is placed into the shell variable
OPTARG. If an invalid option is encountered, var is set to '?'.
It returns a false value (1) when it encounters the end of the options.
.TP
hash -rv command...
The shell maintains a hash table which remembers the
@@ -1192,8 +1247,8 @@ table. Entries which have not been looked at since
the last cd command are marked with an asterisk; it
is possible for these entries to be invalid.
.sp
With arguments, the hash command removes the specified
commands from the hash table (unless they are
With arguments, the hash command removes the specified commands
from the hash table (unless they are
functions) and then locates them. With the -v
option, hash prints the locations of the commands as
it finds them. The -r option causes the hash command
@@ -1261,7 +1316,8 @@ called ``Argument List Processing''.
The third use of the set command is to set the values
of the shell's positional parameters to the specified
args. To change the positional parameters without
changing any options, use ``--'' as the first argument to set. If no args are present, the set command
changing any options, use ``--'' as the first argument
to set. If no args are present, the set command
will clear all the positional parameters (equivalent
to executing ``shift $#''.
.TP
@@ -1341,8 +1397,8 @@ The maximal amount of CPU time to be used by each process, in seconds.
.RE
.TP
umask [ mask ]
Set the value of umask (see umask(2)) to the specified octal value.
If the argument is omitted, the
Set the value of umask (see umask(2)) to the specified
octal value. If the argument is omitted, the
umask value is printed.
.TP
unalias [-a] [name]
+5 -5
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sleep.1 8.3 (Berkeley) 4/18/94
.\" $Id$
.\" $Id: sleep.1,v 1.6 1997/02/22 14:05:44 peter Exp $
.\"
.Dd April 18, 1994
.Dt SLEEP 1
@@ -50,13 +50,13 @@ The
command
suspends execution for a minimum of
.Ar seconds .
.Nm Sleep
.Nm
is used to schedule the execution of other commands (see
.Sx EXAMPLES
below).
.Pp
The
.Nm Sleep
.Nm
utility exits with one of the following values:
.Bl -tag -width flag
.It Li \&0
@@ -105,10 +105,10 @@ when the file is found, then another portion processing
is done courteously by sleeping for 70 seconds in between each
awk job.
.Sh SEE ALSO
.Xr at 1 ,
.Xr setitimer 2 ,
.Xr alarm 3 ,
.Xr sleep 3 ,
.Xr at 1
.Xr sleep 3
.Sh STANDARDS
The
.Nm sleep
+2 -2
View File
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: key.c,v 1.3 1995/03/19 13:29:25 joerg Exp $
* $Id: key.c,v 1.4 1995/04/28 19:29:29 ache Exp $
*/
#ifndef lint
@@ -192,7 +192,7 @@ f_extproc(ip)
struct info *ip;
{
if (ip->set) {
if (!ip->off) {
int tmp = 1;
(void)ioctl(ip->fd, TIOCEXT, &tmp);
} else {
+2 -2
View File
@@ -33,7 +33,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)stty.1 8.4 (Berkeley) 4/18/94
.\" $Id: stty.1,v 1.3 1995/11/11 03:31:13 bde Exp $
.\" $Id: stty.1,v 1.7 1997/03/12 15:59:22 mpp Exp $
.\"
.Dd April 18, 1994
.Dt STTY 1
@@ -551,7 +551,7 @@ The converse of
.Cm opost .
.It Cm tabs Pq Fl tabs
The converse of
.Cm tabs .
.Cm oxtabs .
.It Cm brk Ar value
Same as the control character
.Cm eol .
+2 -2
View File
@@ -33,7 +33,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: test.c,v 1.12 1995/10/28 11:54:42 ache Exp $
* $Id: test.c,v 1.13 1996/03/11 11:01:03 joerg Exp $
*/
#ifndef lint
@@ -157,7 +157,7 @@ main(argc, argv)
ret_val = posix_unary_op(&argv[1]);
if (ret_val >= 0)
return (!ret_val);
} else {
} else if (lookup_op(argv[2], andor_op) < 0) {
ret_val = posix_binary_op(&argv[1]);
if (ret_val >= 0)
return (ret_val);
+9 -5
View File
@@ -86,17 +86,21 @@ Boston, MA 02111-1307, USA. */
#define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
/* Like the default, except no -lg. */
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
/* Like the default, except no -lg, and no -p. */
#define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}"
#define LINK_SPEC \
"%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*} \
%{p:-Bstatic} %{pg:-Bstatic} %{Z} %{R*}"
"%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
%{shared:-Bshareable} \
%{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
%{pg:-Bstatic} %{Z}} \
%{assert*} %{R*}"
#define LINK_LIBGCC_SPECIAL_1 1
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
"%{shared:c++rt0.o%s} \
%{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
/* This goes away when the math emulator is fixed. */
#undef TARGET_DEFAULT
+9 -5
View File
@@ -86,17 +86,21 @@ Boston, MA 02111-1307, USA. */
#define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
/* Like the default, except no -lg. */
#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
/* Like the default, except no -lg, and no -p. */
#define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}"
#define LINK_SPEC \
"%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*} \
%{p:-Bstatic} %{pg:-Bstatic} %{Z} %{R*}"
"%{p:%e`-p' not supported; use `-pg' and gprof(1)} \
%{shared:-Bshareable} \
%{!shared:%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} \
%{pg:-Bstatic} %{Z}} \
%{assert*} %{R*}"
#define LINK_LIBGCC_SPECIAL_1 1
#define STARTFILE_SPEC \
"%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
"%{shared:c++rt0.o%s} \
%{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
/* This goes away when the math emulator is fixed. */
#undef TARGET_DEFAULT
+1 -1
View File
@@ -4,7 +4,7 @@
@ifinfo
@format
START-INFO-DIR-ENTRY
* Reno 1: (reno-1). The GNU C++ Renovation Project, Phase 1.
* Reno 1: (reno). The GNU C++ Renovation Project, Phase 1.
END-INFO-DIR-ENTRY
@end format
@end ifinfo
+2 -2
View File
@@ -341,12 +341,12 @@ end_final (filename)
ASM_OUTPUT_ALIGN (asm_out_file, align);
fprintf(asm_out_file,".stabs \"bbset\", 25, 0, 0, LPBX0\n");
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LPBX", 0);
/* zero word */
assemble_integer (const0_rtx, UNITS_PER_WORD, 1);
fprintf(asm_out_file,".stabs \"bbset\", 25, 0, 0, LPBX0\n");
/* address of filename */
ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 1);
assemble_integer (gen_rtx (SYMBOL_REF, Pmode, name), UNITS_PER_WORD, 1);
+9 -3
View File
@@ -1189,13 +1189,17 @@ Like `\|\c
.B \-M\c
\&\|' but the output mentions only the user header files
included with `\|\c
.B #include "\c
.B
#include "\c
.I file\c
.B
\&"\c
\&\|'. System header files
included with `\|\c
.B #include <\c
.B
#include <\c
.I file\c
.B
\&>\c
\&\|' are omitted.
.TP
@@ -1472,8 +1476,10 @@ option are searched only for the case of `\|\c
\&"\c
\&\|';
they are not searched for `\|\c
.B #include <\c
.B
#include <\c
.I file\c
.B
\&>\c
\&\|'.
.Sp
File renamed without changes.
File renamed without changes.
File diff suppressed because it is too large. Load diff
+50
View File
@@ -0,0 +1,50 @@
README for GNU development tools
This directory contains various GNU compilers, assemblers, linkers,
debuggers, etc., plus their support routines, definitions, and documentation.
If you are receiving this as part of a GDB release, see the file gdb/README.
If with a gas release, see gas/README; if with a libg++ release,
see libg++/README, etc. That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.
It is now possible to automatically configure and build a variety of
tools with one command. To build all of the tools contained herein,
run the ``configure'' script here, e.g.:
./configure
make
To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
make install
If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''. You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)
If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make. For example (assuming sh/bash/ksh):
CC=gcc ./configure
make CC=gcc
A similar example using csh:
setenv CC gcc
./configure
make CC=gcc
See etc/cfg-paper.texi, etc/configure.texi, and/or the README files in
various subdirectories, for more details.
Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc. See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.
REPORTING BUGS: Again, see gdb/README, gas/README, etc., for info on where and
how to report problems.
File renamed without changes.
File diff suppressed because it is too large. Load diff
+83
View File
@@ -0,0 +1,83 @@
Preliminary Notes on Porting BFD
--------------------------------
The 'host' is the system a tool runs *on*.
The 'target' is the system a tool runs *for*, i.e.
a tool can read/write the binaries of the target.
Porting to a new host
---------------------
Pick a name for your host. Call that <host>.
(<host> might be sun4, ...)
Create a file hosts/<host>.mh.
Porting to a new target
-----------------------
Pick a name for your target. Call that <target>.
Call the name for your CPU architecture <cpu>.
You need to create <target>.c and config/<target>.mt,
and add a case for it to a case statements in bfd/configure.host and
bfd/config.bfd, which associates each canonical host type with a BFD
host type (used as the base of the makefile fragment names), and to the
table in bfd/configure.in which associates each target vector with
the .o files it uses.
config/<target>.mt is a Makefile fragment.
The following is usually enough:
DEFAULT_VECTOR=<target>_vec
SELECT_ARCHITECTURES=bfd_<cpu>_arch
See the list of cpu types in archures.c, or "ls cpu-*.c".
If your architecture is new, you need to add it to the tables
in bfd/archures.c, opcodes/configure.in, and binutils/objdump.c.
For more information about .mt and .mh files, see config/README.
The file <target>.c is the hard part. It implements the
bfd_target <target>_vec, which includes pointers to
functions that do the actual <target>-specific methods.
Porting to a <target> that uses the a.out binary format
-------------------------------------------------------
In this case, the include file aout-target.h probaby does most
of what you need. The program gen-aout generates <target>.c for
you automatically for many a.out systems. Do:
make gen-aout
./gen-aout <target> > <target>.c
(This only works if you are building on the target ("native").
If you must make a cross-port from scratch, copy the most
similar existing file that includes aout-target.h, and fix what is wrong.)
Check the parameters in <target>.c, and fix anything that is wrong.
(Also let us know about it; perhaps we can improve gen-aout.c.)
TARGET_IS_BIG_ENDIAN_P
Should be defined if <target> is big-endian.
N_HEADER_IN_TEXT(x)
See discussion in ../include/aout/aout64.h.
BYTES_IN_WORD
Number of bytes per word. (Usually 4 but can be 8.)
ARCH
Number of bits per word. (Usually 32, but can be 64.)
ENTRY_CAN_BE_ZERO
Define if the extry point (start address of an
executable program) can be 0x0.
TEXT_START_ADDR
The address of the start of the text segemnt in
virtual memory. Normally, the same as the entry point.
TARGET_PAGE_SIZE
SEGMENT_SIZE
Usually, the same as the TARGET_PAGE_SIZE.
Alignment needed for the data segment.
TARGETNAME
The name of the target, for run-time lookups.
Usually "a.out-<target>"
+25
View File
@@ -0,0 +1,25 @@
Things that still need to be done: -*- Text -*-
o - A source of space lossage is that all the target-dependent code
is in a single bfd_target structure. Hence all the code for
*writing* object files is still pulled into all the applications
that only care about *reading* (gdb, nm, objdump), while gas has
to carry along all the unneded baggage for reading objects. And
so on. This would be a substantial change, and the payoff would
not all that great (essentially none if bfd is used as a shared
library).
o - The storage needed by BFD data structures is also larger than strictly
needed. This may be difficult to do much about.
o - implement bfd_abort, which should close the bfd but not alter the
filesystem.
o - update the bfd doc; write a how-to-write-a-backend doc, take out
the stupid quips and fill in all the blanks.
o - upgrade the reloc handling as per Steve's suggestion.
+1
View File
@@ -0,0 +1 @@
cygnus-2.6
+19
View File
@@ -0,0 +1,19 @@
/* Whether malloc must be declared even if <stdlib.h> is included. */
#undef NEED_DECLARATION_MALLOC
/* Whether free must be declared even if <stdlib.h> is included. */
#undef NEED_DECLARATION_FREE
@TOP@
/* Do we need to use the b modifier when opening binary files? */
#undef USE_BINARY_FOPEN
/* Name of host specific header file to include in trad-core.c. */
#undef TRAD_HEADER
/* Define only if <sys/procfs.h> is available *and* it defines prstatus_t. */
#undef HAVE_SYS_PROCFS_H
/* Do we really want to use mmap if it's available? */
#undef USE_MMAP
+43
View File
@@ -0,0 +1,43 @@
dnl See whether we need to use fopen-bin.h rather than fopen-same.h.
AC_DEFUN(BFD_BINARY_FOPEN,
[AC_REQUIRE([AC_CANONICAL_SYSTEM])
case "${host}" in
changequote(,)dnl
i[345]86-*-msdos* | i[345]86-*-go32* | *-*-cygwin32)
changequote([,])dnl
AC_DEFINE(USE_BINARY_FOPEN) ;;
esac])dnl
dnl Get a default for CC_FOR_BUILD to put into Makefile.
AC_DEFUN(BFD_CC_FOR_BUILD,
[# Put a plausible default for CC_FOR_BUILD in Makefile.
AC_REQUIRE([AC_C_CROSS])dnl
if test -z "$CC_FOR_BUILD"; then
if test "x$cross_compiling" = "xno"; then
CC_FOR_BUILD='$(CC)'
else
CC_FOR_BUILD=gcc
fi
fi
AC_SUBST(CC_FOR_BUILD)])dnl
dnl See whether we need a declaration for a function.
AC_DEFUN(BFD_NEED_DECLARATION,
[AC_MSG_CHECKING([whether $1 must be declared])
AC_CACHE_VAL(bfd_cv_decl_needed_$1,
[AC_TRY_COMPILE([
#include <stdio.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif],
[char *(*pfn) = (char *(*)) $1],
bfd_cv_decl_needed_$1=no, bfd_cv_decl_needed_$1=yes)])
AC_MSG_RESULT($bfd_cv_decl_needed_$1)
if test $bfd_cv_decl_needed_$1 = yes; then
bfd_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
AC_DEFINE_UNQUOTED($bfd_tr_decl)
fi
])dnl
+285
View File
@@ -0,0 +1,285 @@
/* BFD back-end for AIX on PS/2 core files.
This was based on trad-core.c, which was written by John Gilmore of
Cygnus Support.
Copyright 1988, 1989, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Written by Minh Tran-Le <TRANLE@INTELLICORP.COM>.
Converted to back end form by Ian Lance Taylor <ian@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/i386.h"
#include "coff/internal.h"
#include "libcoff.h"
#include <stdio.h>
#include <stddef.h>
#include <signal.h>
#include <errno.h>
#if defined (_AIX) && defined (_I386)
#define NOCHECKS /* this is for coredump.h */
#define _h_USER /* avoid including user.h from coredump.h */
#include <uinfo.h>
#include <sys/i386/coredump.h>
#endif /* _AIX && _I386 */
/* maybe this could work on some other i386 but I have not tried it
* mtranle@paris - Tue Sep 24 12:49:35 1991
*/
#ifndef COR_MAGIC
# define COR_MAGIC "core"
#endif
/* need this cast because ptr is really void * */
#define core_hdr(bfd) \
(((bfd->tdata.trad_core_data))->hdr)
#define core_section(bfd,n) \
(((bfd)->tdata.trad_core_data)->sections[n])
#define core_regsec(bfd) \
(((bfd)->tdata.trad_core_data)->reg_section)
#define core_reg2sec(bfd) \
(((bfd)->tdata.trad_core_data)->reg2_section)
/* These are stored in the bfd's tdata */
struct trad_core_struct {
struct corehdr *hdr; /* core file header */
asection *reg_section;
asection *reg2_section;
asection *sections[MAX_CORE_SEGS];
};
static const bfd_target *
aix386_core_file_p (abfd)
bfd *abfd;
{
int i,n;
unsigned char longbuf[4]; /* Raw bytes of various header fields */
int core_size = sizeof (struct corehdr);
struct corehdr *core;
struct mergem {
struct trad_core_struct coredata;
struct corehdr internal_core;
} *mergem;
if (bfd_read ((PTR)longbuf, 1, sizeof (longbuf), abfd) != sizeof (longbuf))
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
if (strncmp(longbuf,COR_MAGIC,4)) return 0;
if (bfd_seek (abfd, 0L, false) < 0) return 0;
mergem = (struct mergem *)bfd_zalloc (abfd, sizeof (struct mergem));
if (mergem == NULL)
return 0;
core = &mergem->internal_core;
if ((bfd_read ((PTR) core, 1, core_size, abfd)) != core_size)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
bfd_release (abfd, (char *)mergem);
return 0;
}
set_tdata (abfd, &mergem->coredata);
core_hdr (abfd) = core;
/* create the sections. This is raunchy, but bfd_close wants to reclaim
them */
core_regsec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_regsec (abfd) == NULL)
{
loser:
bfd_release (abfd, (char *)mergem);
return 0;
}
core_reg2sec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_reg2sec (abfd) == NULL)
{
loser1:
bfd_release (abfd, core_regsec (abfd));
goto loser;
}
for (i=0, n=0 ; (i < MAX_CORE_SEGS) && (core->cd_segs[i].cs_type) ; i++)
{
if (core->cd_segs[i].cs_offset == 0)
continue;
core_section (abfd,n) =
(asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_section (abfd,n) == NULL)
{
int j;
if (n > 0)
{
for (j=0; j < n; j++)
bfd_release (abfd, core_section(abfd, j));
}
bfd_release (abfd, (char *)mergem);
goto loser1;
}
switch (core->cd_segs[i].cs_type)
{
case COR_TYPE_DATA:
core_section (abfd, n)->name = ".data";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_LOAD +
SEC_HAS_CONTENTS);
break;
case COR_TYPE_STACK:
core_section (abfd, n)->name = ".stack";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_LOAD +
SEC_HAS_CONTENTS);
break;
case COR_TYPE_LIBDATA:
core_section (abfd, n)->name = ".libdata";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS);
break;
case COR_TYPE_WRITE:
core_section (abfd, n)->name = ".writeable";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS);
break;
case COR_TYPE_MSC:
core_section (abfd, n)->name = ".misc";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS);
break;
default:
core_section (abfd, n)->name = ".unknown";
core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS);
break;
}
core_section (abfd, n)->_raw_size = core->cd_segs[i].cs_len;
core_section (abfd, n)->vma = core->cd_segs[i].cs_address;
core_section (abfd, n)->filepos = core->cd_segs[i].cs_offset;
core_section (abfd, n)->alignment_power = 2;
core_section (abfd, n)->next = NULL;
if (n > 0)
core_section (abfd, (n-1))->next = core_section (abfd, n);
abfd->section_count = ++n;
}
core_regsec (abfd)->name = ".reg";
core_reg2sec (abfd)->name = ".reg2";
core_regsec (abfd)->flags = SEC_HAS_CONTENTS;
core_reg2sec (abfd)->flags = SEC_HAS_CONTENTS;
core_regsec (abfd)->_raw_size = sizeof(core->cd_regs);
core_reg2sec (abfd)->_raw_size = sizeof(core->cd_fpregs);
core_regsec (abfd)->vma = -1;
core_reg2sec (abfd)->vma = -1;
/* We'll access the regs afresh in the core file, like any section: */
core_regsec (abfd)->filepos = (file_ptr)offsetof(struct corehdr,cd_regs[0]);
core_reg2sec (abfd)->filepos = (file_ptr)offsetof(struct corehdr,
cd_fpregs);
/* add the 2 reg fake sections to abfd */
abfd->section_count += 2;
abfd->sections = core_regsec (abfd);
core_regsec (abfd)->next = core_reg2sec (abfd);
core_reg2sec (abfd)->next = core_section (abfd, 0);
return abfd->xvec;
}
static char *
aix386_core_file_failing_command (abfd)
bfd *abfd;
{
return core_hdr (abfd)->cd_comm;
}
static int
aix386_core_file_failing_signal (abfd)
bfd *abfd;
{
return core_hdr (abfd)->cd_cursig;
}
static boolean
aix386_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd;
bfd *exec_bfd;
{
return true; /* FIXME, We have no way of telling at this
point */
}
/* If somebody calls any byte-swapping routines, shoot them. */
void
swap_abort()
{
abort(); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((PROTO(bfd_vma, (*), ( const bfd_byte *))) swap_abort )
#define NO_GETS ((PROTO(bfd_signed_vma, (*), (const bfd_byte *))) swap_abort )
#define NO_PUT ((PROTO(void, (*), (bfd_vma, bfd_byte *))) swap_abort )
const bfd_target aix386_core_vec =
{
"aix386-core",
bfd_target_unknown_flavour,
BFD_ENDIAN_BIG, /* target byte order */
BFD_ENDIANG_BIG, /* target headers byte order */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
0, /* leading underscore */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT, /* data */
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT,
NO_GET, NO_GETS, NO_PUT, /* hdrs */
{_bfd_dummy_target, _bfd_dummy_target,
_bfd_dummy_target, aix386_core_file_p},
{bfd_false, bfd_false, /* bfd_create_object */
bfd_false, bfd_false},
{bfd_false, bfd_false, /* bfd_write_contents */
bfd_false, bfd_false},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (aix386),
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
BFD_JUMP_TABLE_WRITE (_bfd_generic),
BFD_JUMP_TABLE_LINK (_bfd_nolink),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
(PTR) 0
};
+528
View File
@@ -0,0 +1,528 @@
/* BFD back-end for a.out.adobe binaries.
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Written by Cygnus Support. Based on bout.c.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "aout/adobe.h"
#include "aout/stab_gnu.h"
#include "libaout.h" /* BFD a.out internal data structures */
extern const bfd_target a_out_adobe_vec; /* Forward decl */
static const bfd_target *aout_adobe_callback PARAMS ((bfd *));
extern boolean aout_32_slurp_symbol_table PARAMS ((bfd *abfd));
extern boolean aout_32_write_syms PARAMS ((bfd *));
static void aout_adobe_write_section PARAMS ((bfd *abfd, sec_ptr sect));
/* Swaps the information in an executable header taken from a raw byte
stream memory image, into the internal exec_header structure. */
void aout_adobe_swap_exec_header_in
PARAMS ((bfd *abfd, struct external_exec *raw_bytes,
struct internal_exec *execp));
void
aout_adobe_swap_exec_header_in (abfd, raw_bytes, execp)
bfd *abfd;
struct external_exec *raw_bytes;
struct internal_exec *execp;
{
struct external_exec *bytes = (struct external_exec *)raw_bytes;
/* Now fill in fields in the execp, from the bytes in the raw data. */
execp->a_info = bfd_h_get_32 (abfd, bytes->e_info);
execp->a_text = GET_WORD (abfd, bytes->e_text);
execp->a_data = GET_WORD (abfd, bytes->e_data);
execp->a_bss = GET_WORD (abfd, bytes->e_bss);
execp->a_syms = GET_WORD (abfd, bytes->e_syms);
execp->a_entry = GET_WORD (abfd, bytes->e_entry);
execp->a_trsize = GET_WORD (abfd, bytes->e_trsize);
execp->a_drsize = GET_WORD (abfd, bytes->e_drsize);
}
/* Swaps the information in an internal exec header structure into the
supplied buffer ready for writing to disk. */
PROTO(void, aout_adobe_swap_exec_header_out,
(bfd *abfd,
struct internal_exec *execp,
struct external_exec *raw_bytes));
void
aout_adobe_swap_exec_header_out (abfd, execp, raw_bytes)
bfd *abfd;
struct internal_exec *execp;
struct external_exec *raw_bytes;
{
struct external_exec *bytes = (struct external_exec *)raw_bytes;
/* Now fill in fields in the raw data, from the fields in the exec struct. */
bfd_h_put_32 (abfd, execp->a_info , bytes->e_info);
PUT_WORD (abfd, execp->a_text , bytes->e_text);
PUT_WORD (abfd, execp->a_data , bytes->e_data);
PUT_WORD (abfd, execp->a_bss , bytes->e_bss);
PUT_WORD (abfd, execp->a_syms , bytes->e_syms);
PUT_WORD (abfd, execp->a_entry , bytes->e_entry);
PUT_WORD (abfd, execp->a_trsize, bytes->e_trsize);
PUT_WORD (abfd, execp->a_drsize, bytes->e_drsize);
}
static const bfd_target *
aout_adobe_object_p (abfd)
bfd *abfd;
{
struct internal_exec anexec;
struct external_exec exec_bytes;
char *targ;
if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
!= EXEC_BYTES_SIZE) {
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
anexec.a_info = bfd_h_get_32 (abfd, exec_bytes.e_info);
/* Normally we just compare for the magic number.
However, a bunch of Adobe tools aren't fixed up yet; they generate
files using ZMAGIC(!).
If the environment variable GNUTARGET is set to "a.out.adobe", we will
take just about any a.out file as an Adobe a.out file. FIXME! */
if (N_BADMAG (anexec)) {
extern char *getenv ();
targ = getenv ("GNUTARGET");
if (targ && !strcmp (targ, a_out_adobe_vec.name))
; /* Just continue anyway, if specifically set to this format */
else
{
bfd_set_error (bfd_error_wrong_format);
return 0;
}
}
aout_adobe_swap_exec_header_in (abfd, &exec_bytes, &anexec);
return aout_32_some_aout_object_p (abfd, &anexec, aout_adobe_callback);
}
/* Finish up the opening of a b.out file for reading. Fill in all the
fields that are not handled by common code. */
static const bfd_target *
aout_adobe_callback (abfd)
bfd *abfd;
{
struct internal_exec *execp = exec_hdr (abfd);
asection *sect;
struct external_segdesc ext[1];
char *section_name;
char try_again[30]; /* name and number */
char *newname;
int trynum;
flagword flags;
/* Architecture and machine type -- unknown in this format. */
bfd_set_arch_mach(abfd, bfd_arch_unknown, 0);
/* The positions of the string table and symbol table. */
obj_str_filepos (abfd) = N_STROFF (*execp);
obj_sym_filepos (abfd) = N_SYMOFF (*execp);
/* Suck up the section information from the file, one section at a time. */
for (;;) {
if (bfd_read ((PTR) ext, 1, sizeof (*ext), abfd) != sizeof (*ext)) {
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
switch (ext->e_type[0]) {
case N_TEXT:
section_name = ".text";
flags = SEC_CODE | SEC_LOAD | SEC_ALLOC | SEC_HAS_CONTENTS;
break;
case N_DATA:
section_name = ".data";
flags = SEC_DATA | SEC_LOAD | SEC_ALLOC | SEC_HAS_CONTENTS;
break;
case N_BSS:
section_name = ".bss";
flags = SEC_DATA | SEC_HAS_CONTENTS;
break;
case 0:
goto no_more_sections;
default:
(*_bfd_error_handler)
("%s: Unknown section type in a.out.adobe file: %x\n",
bfd_get_filename (abfd), ext->e_type[0]);
goto no_more_sections;
}
/* First one is called ".text" or whatever; subsequent ones are
".text1", ".text2", ... */
bfd_set_error (bfd_error_no_error);
sect = bfd_make_section (abfd, section_name);
trynum = 0;
while (!sect) {
if (bfd_get_error () != bfd_error_no_error)
return 0; /* Some other error -- slide into the sunset */
sprintf (try_again, "%s%d", section_name, ++trynum);
sect = bfd_make_section (abfd, try_again);
}
/* Fix the name, if it is a sprintf'd name. */
if (sect->name == try_again) {
newname = (char *) bfd_zalloc(abfd, strlen (sect->name));
if (newname == NULL)
return 0;
strcpy (newname, sect->name);
sect->name = newname;
}
/* Now set the section's attributes. */
bfd_set_section_flags (abfd, sect, flags);
sect->_raw_size = ((ext->e_size[0] << 8) /* Assumed big-endian */
| ext->e_size[1] << 8)
| ext->e_size[2];
sect->_cooked_size = sect->_raw_size;
sect->vma = bfd_h_get_32 (abfd, ext->e_virtbase);
sect->filepos = bfd_h_get_32 (abfd, ext->e_filebase);
/* FIXME XXX alignment? */
/* Set relocation information for first section of each type. */
if (trynum == 0) switch (ext->e_type[0]) {
case N_TEXT:
sect->rel_filepos = N_TRELOFF (*execp);
sect->reloc_count = execp->a_trsize;
break;
case N_DATA:
sect->rel_filepos = N_DRELOFF (*execp);
sect->reloc_count = execp->a_drsize;
break;
}
}
no_more_sections:
adata(abfd).reloc_entry_size = sizeof (struct reloc_std_external);
adata(abfd).symbol_entry_size = sizeof (struct external_nlist);
adata(abfd).page_size = 1; /* Not applicable. */
adata(abfd).segment_size = 1; /* Not applicable. */
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
return abfd->xvec;
}
struct bout_data_struct {
struct aoutdata a;
struct internal_exec e;
};
static boolean
aout_adobe_mkobject (abfd)
bfd *abfd;
{
struct bout_data_struct *rawptr;
rawptr = (struct bout_data_struct *) bfd_zalloc (abfd, sizeof (struct bout_data_struct));
if (rawptr == NULL)
return false;
abfd->tdata.bout_data = rawptr;
exec_hdr (abfd) = &rawptr->e;
adata(abfd).reloc_entry_size = sizeof (struct reloc_std_external);
adata(abfd).symbol_entry_size = sizeof (struct external_nlist);
adata(abfd).page_size = 1; /* Not applicable. */
adata(abfd).segment_size = 1; /* Not applicable. */
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
return true;
}
static boolean
aout_adobe_write_object_contents (abfd)
bfd *abfd;
{
struct external_exec swapped_hdr;
static struct external_segdesc sentinel[1]; /* Initialized to zero */
asection *sect;
exec_hdr (abfd)->a_info = ZMAGIC;
/* Calculate text size as total of text sections, etc. */
exec_hdr (abfd)->a_text = 0;
exec_hdr (abfd)->a_data = 0;
exec_hdr (abfd)->a_bss = 0;
exec_hdr (abfd)->a_trsize = 0;
exec_hdr (abfd)->a_drsize = 0;
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_CODE) {
exec_hdr (abfd)->a_text += sect->_raw_size;
exec_hdr (abfd)->a_trsize += sect->reloc_count *
sizeof (struct reloc_std_external);
} else if (sect->flags & SEC_DATA) {
exec_hdr (abfd)->a_data += sect->_raw_size;
exec_hdr (abfd)->a_drsize += sect->reloc_count *
sizeof (struct reloc_std_external);
} else if (sect->flags & SEC_ALLOC && !(sect->flags & SEC_LOAD)) {
exec_hdr (abfd)->a_bss += sect->_raw_size;
}
}
exec_hdr (abfd)->a_syms = bfd_get_symcount (abfd)
* sizeof (struct external_nlist);
exec_hdr (abfd)->a_entry = bfd_get_start_address (abfd);
aout_adobe_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr);
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
|| (bfd_write ((PTR) &swapped_hdr, 1, EXEC_BYTES_SIZE, abfd)
!= EXEC_BYTES_SIZE))
return false;
/* Now write out the section information. Text first, data next, rest
afterward. */
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_CODE) {
aout_adobe_write_section (abfd, sect);
}
}
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_DATA) {
aout_adobe_write_section (abfd, sect);
}
}
for (sect = abfd->sections; sect; sect = sect->next) {
if (!(sect->flags & (SEC_CODE|SEC_DATA))) {
aout_adobe_write_section (abfd, sect);
}
}
/* Write final `sentinel` section header (with type of 0). */
if (bfd_write ((PTR) sentinel, 1, sizeof (*sentinel), abfd)
!= sizeof (*sentinel))
return false;
/* Now write out reloc info, followed by syms and strings */
if (bfd_get_symcount (abfd) != 0)
{
if (bfd_seek (abfd, (file_ptr)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET)
!= 0)
return false;
if (! aout_32_write_syms (abfd))
return false;
if (bfd_seek (abfd, (file_ptr)(N_TRELOFF(*exec_hdr(abfd))), SEEK_SET)
!= 0)
return false;
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_CODE) {
if (!aout_32_squirt_out_relocs (abfd, sect))
return false;
}
}
if (bfd_seek (abfd, (file_ptr)(N_DRELOFF(*exec_hdr(abfd))), SEEK_SET)
!= 0)
return false;
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_DATA) {
if (!aout_32_squirt_out_relocs (abfd, sect))
return false;
}
}
}
return true;
}
static void
aout_adobe_write_section (abfd, sect)
bfd *abfd;
sec_ptr sect;
{
/* FIXME XXX */
}
static boolean
aout_adobe_set_section_contents (abfd, section, location, offset, count)
bfd *abfd;
asection *section;
PTR location;
file_ptr offset;
bfd_size_type count;
{
file_ptr section_start;
sec_ptr sect;
if (abfd->output_has_begun == false) { /* set by bfd.c handler */
/* Assign file offsets to sections. Text sections are first, and
are contiguous. Then data sections. Everything else at the end. */
section_start = N_TXTOFF (ignore<-->me);
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_CODE) {
sect->filepos = section_start;
/* FIXME: Round to alignment */
section_start += sect->_raw_size;
}
}
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_DATA) {
sect->filepos = section_start;
/* FIXME: Round to alignment */
section_start += sect->_raw_size;
}
}
for (sect = abfd->sections; sect; sect = sect->next) {
if (sect->flags & SEC_HAS_CONTENTS &&
!(sect->flags & (SEC_CODE|SEC_DATA))) {
sect->filepos = section_start;
/* FIXME: Round to alignment */
section_start += sect->_raw_size;
}
}
}
/* regardless, once we know what we're doing, we might as well get going */
if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
return false;
if (count != 0) {
return (bfd_write ((PTR)location, 1, count, abfd) == count) ?true:false;
}
return true;
}
static boolean
aout_adobe_set_arch_mach (abfd, arch, machine)
bfd *abfd;
enum bfd_architecture arch;
unsigned long machine;
{
if (! bfd_default_set_arch_mach (abfd, arch, machine))
return false;
if (arch == bfd_arch_unknown
|| arch == bfd_arch_m68k)
return true;
return false;
}
static int
aout_adobe_sizeof_headers (ignore_abfd, ignore)
bfd *ignore_abfd;
boolean ignore;
{
return sizeof(struct internal_exec);
}
/* Build the transfer vector for Adobe A.Out files. */
#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info
#define aout_32_bfd_make_debug_symbol \
((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
#define aout_32_bfd_reloc_type_lookup \
((reloc_howto_type *(*) \
PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr)
#define aout_32_set_arch_mach aout_adobe_set_arch_mach
#define aout_32_set_section_contents aout_adobe_set_section_contents
#define aout_32_sizeof_headers aout_adobe_sizeof_headers
#define aout_32_bfd_get_relocated_section_contents \
bfd_generic_get_relocated_section_contents
#define aout_32_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
#define aout_32_bfd_relax_section bfd_generic_relax_section
#define aout_32_bfd_link_hash_table_create \
_bfd_generic_link_hash_table_create
#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols
#define aout_32_bfd_final_link _bfd_generic_final_link
#define aout_32_bfd_link_split_section _bfd_generic_link_split_section
const bfd_target a_out_adobe_vec =
{
"a.out.adobe", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_BIG, /* data byte order is unknown (big assumed) */
BFD_ENDIAN_BIG, /* hdr byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT ),
/* section flags */
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_DATA | SEC_RELOC),
'_', /* symbol leading char */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, aout_adobe_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, aout_adobe_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, aout_adobe_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (aout_32),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd),
BFD_JUMP_TABLE_SYMBOLS (aout_32),
BFD_JUMP_TABLE_RELOCS (aout_32),
BFD_JUMP_TABLE_WRITE (aout_32),
BFD_JUMP_TABLE_LINK (aout_32),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
(PTR) 0
};
+548
View File
@@ -0,0 +1,548 @@
/* BFD back-end for raw ARM a.out binaries.
Copyright (C) 1994, 1995 Free Software Foundation, Inc.
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define N_TXTADDR(x) \
((N_MAGIC(x) == NMAGIC) ? 0x8000 : \
(N_MAGIC(x) != ZMAGIC) ? 0 : \
(N_SHARED_LIB(x)) ? ((x).a_entry & ~(TARGET_PAGE_SIZE - 1)) : \
TEXT_START_ADDR)
#define TEXT_START_ADDR 0x8000
#define TARGET_PAGE_SIZE 0x8000
#define SEGMENT_SIZE TARGET_PAGE_SIZE
#define DEFAULT_ARCH bfd_arch_arm
#define MY(OP) CAT(aoutarm_,OP)
#define N_BADMAG(x) ((((x).a_info & ~007200) != ZMAGIC) && \
(((x).a_info & ~006000) != OMAGIC) && \
((x).a_info != NMAGIC))
#define N_MAGIC(x) ((x).a_info & ~07200)
#include "bfd.h"
#include "sysdep.h"
#include "assert.h"
#define MYARM(OP) CAT(aoutarm_,OP)
reloc_howto_type *MYARM(bfd_reloc_type_lookup)
PARAMS((bfd *, bfd_reloc_code_real_type));
static boolean MYARM(write_object_contents) PARAMS((bfd *));
/* Avoid multiple defininitions from aoutx if supporting standarad a.out
as well as our own. */
#define NAME(x,y) CAT3(aoutarm,_32_,y)
#define MY_bfd_reloc_type_lookup aoutarm_bfd_reloc_type_lookup
#include "libaout.h"
#include "aout/aout64.h"
static bfd_reloc_status_type
MY(fix_pcrel_26_done) PARAMS ((bfd *, arelent *, asymbol *, PTR,
asection *, bfd *, char **));
static bfd_reloc_status_type
MY(fix_pcrel_26) PARAMS ((bfd *, arelent *, asymbol *, PTR,
asection *, bfd *, char **));
static void MY(swap_std_reloc_in) PARAMS ((bfd *, struct reloc_std_external *,
arelent *, asymbol **,
bfd_size_type));
void MY(swap_std_reloc_out) PARAMS ((bfd *, arelent *,
struct reloc_std_external *));
reloc_howto_type MY(howto_table)[] =
{
/* type rs size bsz pcrel bitpos ovrf sf name part_inpl readmask setmask
pcdone */
HOWTO (0, 0, 0, 8, false, 0, complain_overflow_bitfield, 0, "8", true,
0x000000ff, 0x000000ff, false),
HOWTO (1, 0, 1, 16, false, 0, complain_overflow_bitfield, 0, "16", true,
0x0000ffff, 0x0000ffff, false),
HOWTO (2, 0, 2, 32, false, 0, complain_overflow_bitfield, 0, "32", true,
0xffffffff, 0xffffffff, false),
HOWTO (3, 2, 2, 26, true, 0, complain_overflow_signed, MY(fix_pcrel_26),
"ARM26", true, 0x00ffffff, 0x00ffffff, true),
HOWTO (4, 0, 0, 8, true, 0, complain_overflow_signed, 0, "DISP8", true,
0x000000ff, 0x000000ff, true),
HOWTO (5, 0, 1, 16, true, 0, complain_overflow_signed, 0, "DISP16", true,
0x0000ffff, 0x0000ffff, true),
HOWTO (6, 0, 2, 32, true, 0, complain_overflow_signed, 0, "DISP32", true,
0xffffffff, 0xffffffff, true),
HOWTO (7, 2, 2, 26, false, 0, complain_overflow_signed,
MY(fix_pcrel_26_done), "ARM26D", true, 0x0, 0x0,
false),
{-1},
HOWTO (9, 0, -1, 16, false, 0, complain_overflow_bitfield, 0, "NEG16", true,
0x0000ffff, 0x0000ffff, false),
HOWTO (10, 0, -2, 32, false, 0, complain_overflow_bitfield, 0, "NEG32", true,
0xffffffff, 0xffffffff, false)
};
#define RELOC_ARM_BITS_NEG_BIG ((unsigned int) 0x08)
#define RELOC_ARM_BITS_NEG_LITTLE ((unsigned int) 0x10)
reloc_howto_type *
MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
bfd *abfd;
struct reloc_std_external *rel;
int *r_index;
int *r_extern;
int *r_pcrel;
{
unsigned int r_length;
unsigned int r_pcrel_done;
unsigned int r_neg;
int index;
*r_pcrel = 0;
if (bfd_header_big_endian (abfd))
{
*r_index = ((rel->r_index[0] << 16)
| (rel->r_index[1] << 8)
| rel->r_index[2]);
*r_extern = (0 != (rel->r_type[0] & RELOC_STD_BITS_EXTERN_BIG));
r_pcrel_done = (0 != (rel->r_type[0] & RELOC_STD_BITS_PCREL_BIG));
r_neg = (0 != (rel->r_type[0] & RELOC_ARM_BITS_NEG_BIG));
r_length = ((rel->r_type[0] & RELOC_STD_BITS_LENGTH_BIG)
>> RELOC_STD_BITS_LENGTH_SH_BIG);
}
else
{
*r_index = ((rel->r_index[2] << 16)
| (rel->r_index[1] << 8)
| rel->r_index[0]);
*r_extern = (0 != (rel->r_type[0] & RELOC_STD_BITS_EXTERN_LITTLE));
r_pcrel_done = (0 != (rel->r_type[0] & RELOC_STD_BITS_PCREL_LITTLE));
r_neg = (0 != (rel->r_type[0] & RELOC_ARM_BITS_NEG_LITTLE));
r_length = ((rel->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE)
>> RELOC_STD_BITS_LENGTH_SH_LITTLE);
}
index = r_length + 4 * r_pcrel_done + 8 * r_neg;
if (index == 3)
*r_pcrel = 1;
return MY(howto_table) + index;
}
#define MY_reloc_howto(BFD, REL, IN, EX, PC) \
MY(reloc_howto) (BFD, REL, &IN, &EX, &PC)
void
MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
bfd *abfd;
int r_extern;
int r_index;
long value;
reloc_howto_type *howto;
struct reloc_std_external *reloc;
{
unsigned int r_length;
int r_pcrel;
int r_neg;
PUT_WORD (abfd, value, reloc->r_address);
r_length = howto->size ; /* Size as a power of two */
/* Special case for branch relocations. */
if (howto->type == 3 || howto->type == 7)
r_length = 3;
r_pcrel = howto->type & 4; /* PC Relative done? */
r_neg = howto->type & 8; /* Negative relocation */
if (bfd_header_big_endian (abfd))
{
reloc->r_index[0] = r_index >> 16;
reloc->r_index[1] = r_index >> 8;
reloc->r_index[2] = r_index;
reloc->r_type[0] =
((r_extern ? RELOC_STD_BITS_EXTERN_BIG : 0)
| (r_pcrel ? RELOC_STD_BITS_PCREL_BIG : 0)
| (r_neg ? RELOC_ARM_BITS_NEG_BIG : 0)
| (r_length << RELOC_STD_BITS_LENGTH_SH_BIG));
}
else
{
reloc->r_index[2] = r_index >> 16;
reloc->r_index[1] = r_index >> 8;
reloc->r_index[0] = r_index;
reloc->r_type[0] =
((r_extern ? RELOC_STD_BITS_EXTERN_LITTLE : 0)
| (r_pcrel ? RELOC_STD_BITS_PCREL_LITTLE : 0)
| (r_neg ? RELOC_ARM_BITS_NEG_LITTLE : 0)
| (r_length << RELOC_STD_BITS_LENGTH_SH_LITTLE));
}
}
#define MY_put_reloc(BFD, EXT, IDX, VAL, HOWTO, RELOC) \
MY(put_reloc)(BFD, EXT, IDX, VAL, HOWTO, RELOC)
void
MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
reloc_howto_type *howto;
bfd *abfd;
struct reloc_std_external *reloc;
bfd_vma *amount;
bfd_vma r_addr;
{
if (howto->type == 3)
{
if (reloc->r_type[0]
& (bfd_header_big_endian (abfd)
? RELOC_STD_BITS_EXTERN_BIG : RELOC_STD_BITS_EXTERN_LITTLE))
{
/* The reloc is still external, so don't modify anything. */
*amount = 0;
}
else
{
*amount -= r_addr;
/* Change the r_pcrel value -- on the ARM, this bit is set once the
relocation is done. */
if (bfd_header_big_endian (abfd))
reloc->r_type[0] |= RELOC_STD_BITS_PCREL_BIG;
else
reloc->r_type[0] |= RELOC_STD_BITS_PCREL_LITTLE;
}
}
else if (howto->type == 7)
*amount = 0;
}
#define MY_relocatable_reloc(HOW, BFD, REL, AMOUNT, ADDR) \
MY(relocatable_reloc)(HOW, BFD, REL, &(AMOUNT), ADDR)
static bfd_reloc_status_type
MY(fix_pcrel_26_done) (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
/* This is dead simple at present. */
return bfd_reloc_ok;
}
static bfd_reloc_status_type
MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
bfd_vma relocation;
bfd_size_type addr = reloc_entry->address;
long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
bfd_reloc_status_type flag = bfd_reloc_ok;
/* If this is an undefined symbol, return error */
if (symbol->section == &bfd_und_section
&& (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined;
/* If the sections are different, and we are doing a partial relocation,
just ignore it for now. */
if (symbol->section->name != input_section->name
&& output_bfd != (bfd *)NULL)
return bfd_reloc_ok;
relocation = (target & 0x00ffffff) << 2;
relocation = (relocation ^ 0x02000000) - 0x02000000; /* Sign extend */
relocation += symbol->value;
relocation += symbol->section->output_section->vma;
relocation += symbol->section->output_offset;
relocation += reloc_entry->addend;
relocation -= input_section->output_section->vma;
relocation -= input_section->output_offset;
relocation -= addr;
if (relocation & 3)
return bfd_reloc_overflow;
/* Check for overflow */
if (relocation & 0x02000000)
{
if ((relocation & ~0x03ffffff) != ~0x03ffffff)
flag = bfd_reloc_overflow;
}
else if (relocation & ~0x03ffffff)
flag = bfd_reloc_overflow;
target &= ~0x00ffffff;
target |= (relocation >> 2) & 0x00ffffff;
bfd_put_32 (abfd, target, (bfd_byte *) data + addr);
/* Now the ARM magic... Change the reloc type so that it is marked as done.
Strictly this is only necessary if we are doing a partial relocation. */
reloc_entry->howto = &MY(howto_table)[7];
return flag;
}
reloc_howto_type *
MY(bfd_reloc_type_lookup)(abfd,code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
#define ASTD(i,j) case i: return &MY(howto_table)[j]
if (code == BFD_RELOC_CTOR)
switch (bfd_get_arch_info (abfd)->bits_per_address)
{
case 32:
code = BFD_RELOC_32;
break;
default: return (CONST struct reloc_howto_struct *) 0;
}
switch (code)
{
ASTD (BFD_RELOC_16, 1);
ASTD (BFD_RELOC_32, 2);
ASTD (BFD_RELOC_ARM_PCREL_BRANCH, 3);
ASTD (BFD_RELOC_8_PCREL, 4);
ASTD (BFD_RELOC_16_PCREL, 5);
ASTD (BFD_RELOC_32_PCREL, 6);
default: return (CONST struct reloc_howto_struct *) 0;
}
}
#define MY_swap_std_reloc_in MY(swap_std_reloc_in)
#define MY_swap_std_reloc_out MY(swap_std_reloc_out)
#define MY_get_section_contents _bfd_generic_get_section_contents
/* #define MY_bfd_link_hash_table_create _bfd_generic_link_hash_table_create */
/* #define MY_bfd_link_add_symbols _bfd_generic_link_add_symbols */
/* #define MY_bfd_final_link _bfd_generic_final_link */
#include "aoutx.h"
static void
MY_swap_std_reloc_in (abfd, bytes, cache_ptr, symbols, symcount)
bfd *abfd;
struct reloc_std_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
bfd_size_type symcount;
{
int r_index;
int r_extern;
unsigned int r_length;
int r_pcrel;
struct aoutdata *su = &(abfd->tdata.aout_data->a);
cache_ptr->address = bfd_h_get_32 (abfd, bytes->r_address);
cache_ptr->howto = MY_reloc_howto (abfd, bytes, r_index, r_extern, r_pcrel);
MOVE_ADDRESS (0);
}
void
MY_swap_std_reloc_out (abfd, g, natptr)
bfd *abfd;
arelent *g;
struct reloc_std_external *natptr;
{
int r_index;
asymbol *sym = *(g->sym_ptr_ptr);
int r_extern;
int r_length;
int r_pcrel;
int r_neg = 0; /* Negative relocs use the BASEREL bit. */
asection *output_section = sym->section->output_section;
PUT_WORD(abfd, g->address, natptr->r_address);
r_length = g->howto->size ; /* Size as a power of two */
if (r_length < 0)
{
r_length = -r_length;
r_neg = 1;
}
r_pcrel = (int) g->howto->pc_relative; /* Relative to PC? */
/* For RISC iX, in pc-relative relocs the r_pcrel bit means that the
relocation has been done already (Only for the 26-bit one I think)???!!!
*/
if (g->howto->type == 3)
{
r_length = 3;
r_pcrel = 0;
}
else if (g->howto->type == 7)
{
r_length = 3;
r_pcrel = 1;
}
#if 0
/* For a standard reloc, the addend is in the object file. */
r_addend = g->addend + (*(g->sym_ptr_ptr))->section->output_section->vma;
#endif
/* name was clobbered by aout_write_syms to be symbol index */
/* If this relocation is relative to a symbol then set the
r_index to the symbols index, and the r_extern bit.
Absolute symbols can come in in two ways, either as an offset
from the abs section, or as a symbol which has an abs value.
check for that here
*/
if (bfd_is_com_section (output_section)
|| output_section == &bfd_abs_section
|| output_section == &bfd_und_section)
{
if (bfd_abs_section.symbol == sym)
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
r_index = 0;
r_extern = 0;
}
else
{
/* Fill in symbol */
r_extern = 1;
r_index = (*(g->sym_ptr_ptr))->KEEPIT;
}
}
else
{
/* Just an ordinary section */
r_extern = 0;
r_index = output_section->target_index;
}
/* now the fun stuff */
if (bfd_header_big_endian (abfd))
{
natptr->r_index[0] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
natptr->r_index[2] = r_index;
natptr->r_type[0] =
( (r_extern ? RELOC_STD_BITS_EXTERN_BIG: 0)
| (r_pcrel ? RELOC_STD_BITS_PCREL_BIG: 0)
| (r_neg ? RELOC_ARM_BITS_NEG_BIG: 0)
| (r_length << RELOC_STD_BITS_LENGTH_SH_BIG));
}
else
{
natptr->r_index[2] = r_index >> 16;
natptr->r_index[1] = r_index >> 8;
natptr->r_index[0] = r_index;
natptr->r_type[0] =
( (r_extern ? RELOC_STD_BITS_EXTERN_LITTLE: 0)
| (r_pcrel ? RELOC_STD_BITS_PCREL_LITTLE: 0)
| (r_neg ? RELOC_ARM_BITS_NEG_LITTLE: 0)
| (r_length << RELOC_STD_BITS_LENGTH_SH_LITTLE));
}
}
#define MY_BFD_TARGET
#include "aout-target.h"
const bfd_target aout_arm_little_vec =
{
"a.out-arm-little", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_LITTLE, /* target byte order (little) */
BFD_ENDIAN_LITTLE, /* target headers byte order (little) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
MY_symbol_leading_char,
AR_PAD_CHAR, /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{_bfd_dummy_target, MY_object_p, /* bfd_check_format */
bfd_generic_archive_p, MY_core_file_p},
{bfd_false, MY_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, MY_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (MY),
(PTR) MY_backend_data,
};
const bfd_target aout_arm_big_vec =
{
"a.out-arm-big", /* name */
bfd_target_aout_flavour,
BFD_ENDIAN_BIG, /* target byte order (big) */
BFD_ENDIAN_BIG, /* target headers byte order (big) */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
MY_symbol_leading_char,
AR_PAD_CHAR, /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, MY_object_p, /* bfd_check_format */
bfd_generic_archive_p, MY_core_file_p},
{bfd_false, MY_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, MY_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (MY),
BFD_JUMP_TABLE_COPY (MY),
BFD_JUMP_TABLE_CORE (MY),
BFD_JUMP_TABLE_ARCHIVE (MY),
BFD_JUMP_TABLE_SYMBOLS (MY),
BFD_JUMP_TABLE_RELOCS (MY),
BFD_JUMP_TABLE_WRITE (MY),
BFD_JUMP_TABLE_LINK (MY),
BFD_JUMP_TABLE_DYNAMIC (MY),
(PTR) MY_backend_data,
};
+236
View File
@@ -0,0 +1,236 @@
/* BFD back-end for a.out files encapsulated with COFF headers.
Copyright (C) 1990, 1991 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* THIS MODULE IS NOT FINISHED. IT PROBABLY DOESN'T EVEN COMPILE. */
#if 0
#define TARGET_PAGE_SIZE 4096
#define SEGMENT_SIZE TARGET_PAGE_SIZE
#define TEXT_START_ADDR 0
#define BYTES_IN_WORD 4
#endif
#include "bfd.h"
#include <sysdep.h>
#include "libbfd.h"
#include <aout/aout64.h>
#include "aout/stab_gnu.h"
#include "aout/ar.h"
#include "libaout.h" /* BFD a.out internal data structures */
const bfd_target *encap_real_callback ();
const bfd_target *
encap_object_p (abfd)
bfd *abfd;
{
unsigned char magicbuf[4]; /* Raw bytes of magic number from file */
unsigned long magic; /* Swapped magic number */
short coff_magic;
struct external_exec exec_bytes;
struct internal_exec exec;
if (bfd_read ((PTR)magicbuf, 1, sizeof (magicbuf), abfd) !=
sizeof (magicbuf))
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
coff_magic = bfd_h_get_16 (abfd, magicbuf);
if (coff_magic != COFF_MAGIC)
return 0; /* Not an encap coff file */
__header_offset_temp==COFF_MAGIC ? sizeof(struct coffheader) : 0)
(fseek ((f), HEADER_OFFSET((f)), 1))
magic = bfd_h_get_32 (abfd, magicbuf);
if (N_BADMAG (*((struct internal_exec *) &magic))) return 0;
struct external_exec exec_bytes;
if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
!= EXEC_BYTES_SIZE) {
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
return aout_32_some_aout_object_p (abfd, &exec, encap_realcallback);
}
/* Finish up the reading of a encapsulated-coff a.out file header */
const bfd_target *
encap_real_callback (abfd)
bfd *abfd;
{
struct internal_exec *execp = exec_hdr (abfd);
MY(callback)(abfd, execp);
/* If we have a coff header, it can give us better values for
text_start and exec_data_start. This is particularly useful
for remote debugging of embedded systems. */
if (N_FLAGS(exec_aouthdr) & N_FLAGS_COFF_ENCAPSULATE)
{
struct coffheader ch;
int val;
val = lseek (execchan, -(sizeof (AOUTHDR) + sizeof (ch)), 1);
if (val == -1)
perror_with_name (filename);
val = myread (execchan, &ch, sizeof (ch));
if (val < 0)
perror_with_name (filename);
text_start = ch.text_start;
exec_data_start = ch.data_start;
} else
{
text_start =
IS_OBJECT_FILE (exec_aouthdr) ? 0 : N_TXTADDR (exec_aouthdr);
exec_data_start = IS_OBJECT_FILE (exec_aouthdr)
? exec_aouthdr.a_text : N_DATADDR (exec_aouthdr);
}
/* Determine the architecture and machine type of the object file. */
bfd_default_set_arch_mach(abfd, bfd_arch_m68k, 0); /* FIXME */
return abfd->xvec;
}
/* Write an object file in Encapsulated COFF format.
Section contents have already been written. We write the
file header, symbols, and relocation. */
boolean
encap_write_object_contents (abfd)
bfd *abfd;
{
bfd_size_type data_pad = 0;
struct external_exec exec_bytes;
struct internal_exec *execp = exec_hdr (abfd);
/****** FIXME: Fragments from the old GNU LD program for dealing with
encap coff. */
struct coffheader coffheader;
int need_coff_header;
/* Determine whether to count the header as part of
the text size, and initialize the text size accordingly.
This depends on the kind of system and on the output format selected. */
N_SET_MAGIC (outheader, magic);
#ifdef INITIALIZE_HEADER
INITIALIZE_HEADER;
#endif
text_size = sizeof (struct exec);
#ifdef COFF_ENCAPSULATE
if (relocatable_output == 0 && file_table[0].just_syms_flag == 0)
{
need_coff_header = 1;
/* set this flag now, since it will change the values of N_TXTOFF, etc */
N_SET_FLAGS (outheader, aout_backend_info (abfd)->exec_hdr_flags);
text_size += sizeof (struct coffheader);
}
#endif
#ifdef COFF_ENCAPSULATE
if (need_coff_header)
{
/* We are encapsulating BSD format within COFF format. */
struct coffscn *tp, *dp, *bp;
tp = &coffheader.scns[0];
dp = &coffheader.scns[1];
bp = &coffheader.scns[2];
strcpy (tp->s_name, ".text");
tp->s_paddr = text_start;
tp->s_vaddr = text_start;
tp->s_size = text_size;
tp->s_scnptr = sizeof (struct coffheader) + sizeof (struct exec);
tp->s_relptr = 0;
tp->s_lnnoptr = 0;
tp->s_nreloc = 0;
tp->s_nlnno = 0;
tp->s_flags = 0x20;
strcpy (dp->s_name, ".data");
dp->s_paddr = data_start;
dp->s_vaddr = data_start;
dp->s_size = data_size;
dp->s_scnptr = tp->s_scnptr + tp->s_size;
dp->s_relptr = 0;
dp->s_lnnoptr = 0;
dp->s_nreloc = 0;
dp->s_nlnno = 0;
dp->s_flags = 0x40;
strcpy (bp->s_name, ".bss");
bp->s_paddr = dp->s_vaddr + dp->s_size;
bp->s_vaddr = bp->s_paddr;
bp->s_size = bss_size;
bp->s_scnptr = 0;
bp->s_relptr = 0;
bp->s_lnnoptr = 0;
bp->s_nreloc = 0;
bp->s_nlnno = 0;
bp->s_flags = 0x80;
coffheader.f_magic = COFF_MAGIC;
coffheader.f_nscns = 3;
/* store an unlikely time so programs can
* tell that there is a bsd header
*/
coffheader.f_timdat = 1;
coffheader.f_symptr = 0;
coffheader.f_nsyms = 0;
coffheader.f_opthdr = 28;
coffheader.f_flags = 0x103;
/* aouthdr */
coffheader.magic = ZMAGIC;
coffheader.vstamp = 0;
coffheader.tsize = tp->s_size;
coffheader.dsize = dp->s_size;
coffheader.bsize = bp->s_size;
coffheader.entry = outheader.a_entry;
coffheader.text_start = tp->s_vaddr;
coffheader.data_start = dp->s_vaddr;
}
#endif
#ifdef COFF_ENCAPSULATE
if (need_coff_header)
mywrite (&coffheader, sizeof coffheader, 1, outdesc);
#endif
#ifndef COFF_ENCAPSULATE
padfile (N_TXTOFF (outheader) - sizeof outheader, outdesc);
#endif
text_size -= N_TXTOFF (outheader);
WRITE_HEADERS(abfd, execp);
return true;
}
#define MY_write_object_content encap_write_object_contents
#define MY_object_p encap_object_p
#define MY_exec_hdr_flags N_FLAGS_COFF_ENCAPSULATE
#include "aout-target.h"
+399
View File
@@ -0,0 +1,399 @@
/* BFD back-end for ns32k a.out-ish binaries.
Copyright (C) 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc.
Contributed by Ian Dall (idall@eleceng.adelaide.edu.au).
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define BYTES_IN_WORD 4
#include "bfd.h"
#include "aout/aout64.h"
#define MYNS(OP) CAT(ns32kaout_,OP)
reloc_howto_type *
MYNS(bfd_reloc_type_lookup)
PARAMS((bfd *abfd AND
bfd_reloc_code_real_type code));
boolean
MYNS(write_object_contents)
PARAMS((bfd *abfd));
/* Avoid multiple definitions from aoutx if supporting standard a.out format(s)
* as well as this one
*/
#define NAME(x,y) CAT3(ns32kaout,_32_,y)
void bfd_ns32k_arch PARAMS ((void));
long ns32k_get_displacement PARAMS ((bfd_byte *buffer, long offset, long size));
int ns32k_put_displacement PARAMS ((long value, bfd_byte *buffer, long offset, long size));
long ns32k_get_immediate PARAMS ((bfd_byte *buffer, long offset, long size));
int ns32k_put_immediate PARAMS ((long value, bfd_byte *buffer, long offset, long size));
bfd_reloc_status_type
ns32k_reloc_disp PARAMS ((bfd *abfd, arelent *reloc_entry,
struct symbol_cache_entry *symbol,
PTR data,
asection *input_section,
bfd *output_bfd,
char **error_message));
bfd_reloc_status_type
ns32k_reloc_imm PARAMS ((bfd *abfd,
arelent *reloc_entry,
struct symbol_cache_entry *symbol,
PTR data,
asection *input_section,
bfd *output_bfd,
char **error_message));
bfd_reloc_status_type
ns32k_final_link_relocate PARAMS ((reloc_howto_type *howto,
bfd *input_bfd,
asection *input_section,
bfd_byte *contents,
bfd_vma address,
bfd_vma value,
bfd_vma addend ));
bfd_reloc_status_type
ns32k_relocate_contents PARAMS ((reloc_howto_type *howto,
bfd *input_bfd,
bfd_vma relocation,
bfd_byte *location));
#include "libaout.h"
#define MY(OP) MYNS(OP)
#define MY_swap_std_reloc_in MY(swap_std_reloc_in)
#define MY_swap_std_reloc_out MY(swap_std_reloc_out)
static void
MY_swap_std_reloc_in PARAMS ((bfd *abfd, struct reloc_std_external *bytes,
arelent *cache_ptr, asymbol **symbols,
bfd_size_type symcount));
static void
MY_swap_std_reloc_out PARAMS ((bfd *abfd, arelent *g,
struct reloc_std_external *natptr));
/* The ns32k series is ah, unusual, when it comes to relocation.
* There are three storage methods for relocateable objects. There
* are displacements, immediate operands and ordinary twos complement
* data. Of these, only the last fits into the standard relocation
* scheme. Immediate operands are stored huffman encoded and
* immediate operands are stored big endian (where as the natural byte
* order is little endian for this achitecture).
* Note that the ns32k displacement storage method is orthogonal to
* whether the relocation is pc relative or not. The "displacement"
* storage scheme is used for essentially all address constants. The
* displacement can be relative to zero (absolute displacement),
* relative to the pc (pc relative), the stack pointer, the frame
* pointer, the static base register and general purpose register etc.
* For example:
*
* sym1: .long . # pc relative 2's complement
* sym1: .long foo # 2's complement not pc relative
*
* self: movd @self, r0 # pc relative displacement
* movd foo, r0 # non pc relative displacement
*
* self: movd self, r0 # pc relative immediate
* movd foo, r0 # non pc relative immediate
*
* In addition, for historical reasons the encoding of the relocation types
* in the a.out format relocation entries is such that even the relocation
* methods which are standard are not encoded the standard way.
*
*/
reloc_howto_type MY(howto_table)[] =
{
/* ns32k immediate operands */
HOWTO(BFD_RELOC_NS32K_IMM_8, 0, 0, 8, false, 0, true,
ns32k_reloc_imm, "NS32K_IMM_8",
true, 0x000000ff,0x000000ff, false),
HOWTO(BFD_RELOC_NS32K_IMM_16, 0, 1, 16, false, 0, true,
ns32k_reloc_imm, "NS32K_IMM_16",
true, 0x0000ffff,0x0000ffff, false),
HOWTO(BFD_RELOC_NS32K_IMM_32, 0, 2, 32, false, 0, true,
ns32k_reloc_imm, "NS32K_IMM_32",
true, 0xffffffff,0xffffffff, false),
HOWTO(BFD_RELOC_NS32K_IMM_8_PCREL, 0, 0, 8, true, 0, false,
ns32k_reloc_imm, "PCREL_NS32K_IMM_8",
true, 0x000000ff, 0x000000ff, false),
HOWTO(BFD_RELOC_NS32K_IMM_16_PCREL, 0, 1, 16, true, 0, false,
ns32k_reloc_imm, "PCREL_NS32K_IMM_16",
true, 0x0000ffff,0x0000ffff, false),
HOWTO(BFD_RELOC_NS32K_IMM_32_PCREL, 0, 2, 32, true, 0, false,
ns32k_reloc_imm, "PCREL_NS32K_IMM_32",
true, 0xffffffff,0xffffffff, false),
/* ns32k displacements */
HOWTO(BFD_RELOC_NS32K_DISP_8, 0, 0, 8, false, 0, true,
ns32k_reloc_disp, "NS32K_DISP_8",
true, 0x000000ff,0x000000ff, false),
HOWTO(BFD_RELOC_NS32K_DISP_16, 0, 1, 16, false, 0, true,
ns32k_reloc_disp, "NS32K_DISP_16",
true, 0x0000ffff, 0x0000ffff, false),
HOWTO(BFD_RELOC_NS32K_DISP_32, 0, 2, 32, false, 0, true,
ns32k_reloc_disp, "NS32K_DISP_32",
true, 0xffffffff, 0xffffffff, false),
HOWTO(BFD_RELOC_NS32K_DISP_8_PCREL, 0, 0, 8, true, 0, false,
ns32k_reloc_disp, "PCREL_NS32K_DISP_8",
true, 0x000000ff,0x000000ff, false),
HOWTO(BFD_RELOC_NS32K_DISP_16_PCREL, 0, 1, 16, true, 0, false,
ns32k_reloc_disp, "PCREL_NS32K_DISP_16",
true, 0x0000ffff,0x0000ffff, false),
HOWTO(BFD_RELOC_NS32K_DISP_32_PCREL, 0, 2, 32, true, 0, false,
ns32k_reloc_disp, "PCREL_NS32K_DISP_32",
true, 0xffffffff,0xffffffff, false),
/* Normal 2's complement */
HOWTO(BFD_RELOC_8, 0, 0, 8, false, 0, complain_overflow_bitfield,0,
"8", true, 0x000000ff,0x000000ff, false),
HOWTO(BFD_RELOC_16, 0, 1, 16, false, 0, complain_overflow_bitfield,0,
"16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(BFD_RELOC_32, 0, 2, 32, false, 0, complain_overflow_bitfield,0,
"32", true, 0xffffffff,0xffffffff, false),
HOWTO(BFD_RELOC_8_PCREL, 0, 0, 8, true, 0, complain_overflow_signed, 0,
"PCREL_8", true, 0x000000ff,0x000000ff, false),
HOWTO(BFD_RELOC_16_PCREL, 0, 1, 16, true, 0, complain_overflow_signed, 0,
"PCREL_16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(BFD_RELOC_32_PCREL, 0, 2, 32, true, 0, complain_overflow_signed, 0,
"PCREL_32", true, 0xffffffff,0xffffffff, false),
};
#define CTOR_TABLE_RELOC_HOWTO(BFD) (MY(howto_table) + 14)
#define RELOC_STD_BITS_NS32K_TYPE_BIG 0x06
#define RELOC_STD_BITS_NS32K_TYPE_LITTLE 0x60
#define RELOC_STD_BITS_NS32K_TYPE_SH_BIG 1
#define RELOC_STD_BITS_NS32K_TYPE_SH_LITTLE 5
reloc_howto_type *
MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
bfd *abfd;
struct reloc_std_external *rel;
int *r_index;
int *r_extern;
int *r_pcrel;
{
unsigned int r_length;
int r_ns32k_type;
/* BFD_ASSERT(bfd_header_little_endian (abfd)); */
*r_index = ((rel->r_index[2] << 16)
| (rel->r_index[1] << 8)
| rel->r_index[0] );
*r_extern = (0 != (rel->r_type[0] & RELOC_STD_BITS_EXTERN_LITTLE));
*r_pcrel = (0 != (rel->r_type[0] & RELOC_STD_BITS_PCREL_LITTLE));
r_length = ((rel->r_type[0] & RELOC_STD_BITS_LENGTH_LITTLE)
>> RELOC_STD_BITS_LENGTH_SH_LITTLE);
r_ns32k_type = ((rel->r_type[0] & RELOC_STD_BITS_NS32K_TYPE_LITTLE)
>> RELOC_STD_BITS_NS32K_TYPE_SH_LITTLE);
return (MY(howto_table) + r_length + 3 * (*r_pcrel) + 6 * r_ns32k_type);
}
#define MY_reloc_howto(BFD,REL,IN,EX,PC) MY(reloc_howto)(BFD, REL, &IN, &EX, &PC)
void
MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
bfd *abfd;
int r_extern;
int r_index;
long value;
reloc_howto_type *howto;
struct reloc_std_external *reloc;
{
unsigned int r_length;
int r_pcrel;
int r_ns32k_type;
PUT_WORD (abfd, value, reloc->r_address);
r_length = howto->size ; /* Size as a power of two */
r_pcrel = (int) howto->pc_relative; /* Relative to PC? */
r_ns32k_type = (howto - MY(howto_table) )/6;
/* BFD_ASSERT (bfd_header_little_endian (abfd)); */
reloc->r_index[2] = r_index >> 16;
reloc->r_index[1] = r_index >> 8;
reloc->r_index[0] = r_index;
reloc->r_type[0] =
(r_extern? RELOC_STD_BITS_EXTERN_LITTLE: 0)
| (r_pcrel? RELOC_STD_BITS_PCREL_LITTLE: 0)
| (r_length << RELOC_STD_BITS_LENGTH_SH_LITTLE)
| (r_ns32k_type << RELOC_STD_BITS_NS32K_TYPE_SH_LITTLE);
}
#define MY_put_reloc(BFD, EXT, IDX, VAL, HOWTO, RELOC) \
MY(put_reloc)(BFD, EXT, IDX, VAL, HOWTO, RELOC)
#define STAT_FOR_EXEC
#define MY_final_link_relocate ns32k_final_link_relocate
#define MY_relocate_contents ns32k_relocate_contents
#include <aoutx.h>
reloc_howto_type *
MY(bfd_reloc_type_lookup)(abfd,code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
#define ENTRY(i,j) case i: return &MY(howto_table)[j]
int ext = obj_reloc_entry_size (abfd) == RELOC_EXT_SIZE;
BFD_ASSERT(ext == 0);
if (code == BFD_RELOC_CTOR)
switch (bfd_get_arch_info (abfd)->bits_per_address)
{
case 32:
code = BFD_RELOC_32;
break;
}
switch (code)
{
ENTRY(BFD_RELOC_NS32K_IMM_8, 0);
ENTRY(BFD_RELOC_NS32K_IMM_16, 1);
ENTRY(BFD_RELOC_NS32K_IMM_32, 2);
ENTRY(BFD_RELOC_NS32K_IMM_8_PCREL, 3);
ENTRY(BFD_RELOC_NS32K_IMM_16_PCREL, 4);
ENTRY(BFD_RELOC_NS32K_IMM_32_PCREL, 5);
ENTRY(BFD_RELOC_NS32K_DISP_8, 6);
ENTRY(BFD_RELOC_NS32K_DISP_16, 7);
ENTRY(BFD_RELOC_NS32K_DISP_32, 8);
ENTRY(BFD_RELOC_NS32K_DISP_8_PCREL, 9);
ENTRY(BFD_RELOC_NS32K_DISP_16_PCREL, 10);
ENTRY(BFD_RELOC_NS32K_DISP_32_PCREL, 11);
ENTRY(BFD_RELOC_8, 12);
ENTRY(BFD_RELOC_16, 13);
ENTRY(BFD_RELOC_32, 14);
ENTRY(BFD_RELOC_8_PCREL, 15);
ENTRY(BFD_RELOC_16_PCREL, 16);
ENTRY(BFD_RELOC_32_PCREL, 17);
default: return (reloc_howto_type *) NULL;
}
#undef ENTRY
}
static void
MY_swap_std_reloc_in (abfd, bytes, cache_ptr, symbols, symcount)
bfd *abfd;
struct reloc_std_external *bytes;
arelent *cache_ptr;
asymbol **symbols;
bfd_size_type symcount;
{
int r_index;
int r_extern;
int r_pcrel;
struct aoutdata *su = &(abfd->tdata.aout_data->a);
cache_ptr->address = bfd_h_get_32 (abfd, bytes->r_address);
/* now the fun stuff */
cache_ptr->howto = MY_reloc_howto(abfd, bytes, r_index, r_extern, r_pcrel);
MOVE_ADDRESS(0);
}
static void
MY_swap_std_reloc_out (abfd, g, natptr)
bfd *abfd;
arelent *g;
struct reloc_std_external *natptr;
{
int r_index;
asymbol *sym = *(g->sym_ptr_ptr);
int r_extern;
unsigned int r_addend;
asection *output_section = sym->section->output_section;
r_addend = g->addend + (*(g->sym_ptr_ptr))->section->output_section->vma;
/* name was clobbered by aout_write_syms to be symbol index */
/* If this relocation is relative to a symbol then set the
r_index to the symbols index, and the r_extern bit.
Absolute symbols can come in in two ways, either as an offset
from the abs section, or as a symbol which has an abs value.
Check for that here. */
if (bfd_is_com_section (output_section)
|| output_section == &bfd_abs_section
|| output_section == &bfd_und_section)
{
if (bfd_abs_section.symbol == sym)
{
/* Whoops, looked like an abs symbol, but is really an offset
from the abs section */
r_index = 0;
r_extern = 0;
}
else
{
/* Fill in symbol */
r_extern = 1;
#undef KEEPIT
#define KEEPIT udata.i
r_index = (*(g->sym_ptr_ptr))->KEEPIT;
#undef KEEPIT
}
}
else
{
/* Just an ordinary section */
r_extern = 0;
r_index = output_section->target_index;
}
MY_put_reloc (abfd, r_extern, r_index, g->address, g->howto, natptr);
}
bfd_reloc_status_type
ns32k_relocate_contents (howto, input_bfd, relocation, location)
reloc_howto_type *howto;
bfd *input_bfd;
bfd_vma relocation;
bfd_byte *location;
{
int r_ns32k_type = (howto - MY(howto_table)) / 6;
long (*get_data)();
int (*put_data)();
switch (r_ns32k_type)
{
case 0:
get_data = ns32k_get_immediate;
put_data = ns32k_put_immediate;
break;
case 1:
get_data = ns32k_get_displacement;
put_data = ns32k_put_displacement;
break;
case 2:
return _bfd_relocate_contents (howto, input_bfd, relocation,
location);
/* NOT REACHED */
break;
}
return do_ns32k_reloc_contents (howto, input_bfd, relocation,
location, get_data, put_data);
}
@@ -1,5 +1,5 @@
/* Define a target vector and some small routines for a variant of a.out.
Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -15,14 +15,14 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "aout/aout64.h"
#include "aout/stab_gnu.h"
#include "aout/ar.h"
/*#include "libaout.h"*/
extern CONST struct reloc_howto_struct * NAME(aout,reloc_type_lookup) ();
extern reloc_howto_type * NAME(aout,reloc_type_lookup) ();
/* Set parameters about this a.out file that are machine-dependent.
This routine is called from some_aout_object_p just before it returns. */
@@ -43,6 +43,10 @@ MY(callback) (abfd)
obj_datasec (abfd)->vma = N_DATADDR(*execp);
obj_bsssec (abfd)->vma = N_BSSADDR(*execp);
obj_textsec (abfd)->lma = obj_textsec (abfd)->vma;
obj_datasec (abfd)->lma = obj_datasec (abfd)->vma;
obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma;
/* The file offsets of the sections */
obj_textsec (abfd)->filepos = N_TXTOFF (*execp);
obj_datasec (abfd)->filepos = N_DATOFF (*execp);
@@ -54,7 +58,7 @@ MY(callback) (abfd)
/* The file offsets of the string table and symbol table. */
obj_sym_filepos (abfd) = N_SYMOFF (*execp);
obj_str_filepos (abfd) = N_STROFF (*execp);
/* Determine the architecture and machine type of the object file. */
#ifdef SET_ARCH_MACH
SET_ARCH_MACH(abfd, *execp);
@@ -85,11 +89,11 @@ MY(callback) (abfd)
/* Don't set sizes now -- can't be sure until we know arch & mach.
Sizes get set in set_sizes callback, later. */
#if 0
adata(abfd).page_size = PAGE_SIZE;
adata(abfd).page_size = TARGET_PAGE_SIZE;
#ifdef SEGMENT_SIZE
adata(abfd).segment_size = SEGMENT_SIZE;
#else
adata(abfd).segment_size = PAGE_SIZE;
adata(abfd).segment_size = TARGET_PAGE_SIZE;
#endif
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
#endif
@@ -170,11 +174,11 @@ MY(mkobject) (abfd)
return false;
#if 0 /* Sizes get set in set_sizes callback, later, after we know
the architecture and machine. */
adata(abfd).page_size = PAGE_SIZE;
adata(abfd).page_size = TARGET_PAGE_SIZE;
#ifdef SEGMENT_SIZE
adata(abfd).segment_size = SEGMENT_SIZE;
#else
adata(abfd).segment_size = PAGE_SIZE;
adata(abfd).segment_size = TARGET_PAGE_SIZE;
#endif
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
#endif
@@ -199,7 +203,8 @@ MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
bfd *obfd;
asection *osec;
{
obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
if (bfd_get_flavour (obfd) == bfd_target_aout_flavour)
obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
return true;
}
@@ -235,18 +240,18 @@ static boolean
MY(set_sizes) (abfd)
bfd *abfd;
{
adata(abfd).page_size = PAGE_SIZE;
adata(abfd).page_size = TARGET_PAGE_SIZE;
#ifdef SEGMENT_SIZE
adata(abfd).segment_size = SEGMENT_SIZE;
#else
adata(abfd).segment_size = PAGE_SIZE;
adata(abfd).segment_size = TARGET_PAGE_SIZE;
#endif
#ifdef ZMAGIC_DISK_BLOCK_SIZE
adata(abfd).zmagic_disk_block_size = ZMAGIC_DISK_BLOCK_SIZE;
#else
adata(abfd).zmagic_disk_block_size = PAGE_SIZE;
adata(abfd).zmagic_disk_block_size = TARGET_PAGE_SIZE;
#endif
adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
@@ -261,9 +266,15 @@ MY(set_sizes) (abfd)
#ifndef MY_backend_data
#ifndef MY_zmagic_contiguous
#define MY_zmagic_contiguous 0
#endif
#ifndef MY_text_includes_header
#define MY_text_includes_header 0
#endif
#ifndef MY_exec_header_not_counted
#define MY_exec_header_not_counted 0
#endif
#ifndef MY_add_dynamic_symbols
#define MY_add_dynamic_symbols 0
#endif
@@ -284,12 +295,12 @@ MY(set_sizes) (abfd)
#endif
static CONST struct aout_backend_data MY(backend_data) = {
0, /* zmagic contiguous */
MY_zmagic_contiguous,
MY_text_includes_header,
MY_exec_hdr_flags,
0, /* text vma? */
MY_set_sizes,
0, /* exec header is counted */
MY_exec_header_not_counted,
MY_add_dynamic_symbols,
MY_add_one_symbol,
MY_link_dynamic_object,
@@ -342,6 +353,9 @@ MY_bfd_final_link (abfd, info)
#ifndef MY_openr_next_archived_file
#define MY_openr_next_archived_file bfd_generic_openr_next_archived_file
#endif
#ifndef MY_get_elt_at_index
#define MY_get_elt_at_index _bfd_generic_get_elt_at_index
#endif
#ifndef MY_generic_stat_arch_elt
#define MY_generic_stat_arch_elt bfd_generic_stat_arch_elt
#endif
@@ -351,12 +365,22 @@ MY_bfd_final_link (abfd, info)
#ifndef MY_slurp_extended_name_table
#define MY_slurp_extended_name_table _bfd_slurp_extended_name_table
#endif
#ifndef MY_construct_extended_name_table
#define MY_construct_extended_name_table \
_bfd_archive_bsd_construct_extended_name_table
#endif
#ifndef MY_write_armap
#define MY_write_armap bsd_write_armap
#endif
#ifndef MY_read_ar_hdr
#define MY_read_ar_hdr _bfd_generic_read_ar_hdr
#endif
#ifndef MY_truncate_arname
#define MY_truncate_arname bfd_bsd_truncate_arname
#endif
#ifndef MY_update_armap_timestamp
#define MY_update_armap_timestamp _bfd_archive_bsd_update_armap_timestamp
#endif
/* No core file defined here -- configure in trad-core.c separately. */
#ifndef MY_core_file_failing_command
@@ -399,6 +423,9 @@ MY_bfd_final_link (abfd, info)
#ifndef MY_get_section_contents
#define MY_get_section_contents NAME(aout,get_section_contents)
#endif
#ifndef MY_get_section_contents_in_window
#define MY_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
#endif
#ifndef MY_new_section_hook
#define MY_new_section_hook NAME(aout,new_section_hook)
#endif
@@ -448,17 +475,43 @@ MY_bfd_final_link (abfd, info)
#ifndef MY_bfd_make_debug_symbol
#define MY_bfd_make_debug_symbol 0
#endif
#ifndef MY_read_minisymbols
#define MY_read_minisymbols NAME(aout,read_minisymbols)
#endif
#ifndef MY_minisymbol_to_symbol
#define MY_minisymbol_to_symbol NAME(aout,minisymbol_to_symbol)
#endif
#ifndef MY_bfd_link_hash_table_create
#define MY_bfd_link_hash_table_create NAME(aout,link_hash_table_create)
#endif
#ifndef MY_bfd_link_add_symbols
#define MY_bfd_link_add_symbols NAME(aout,link_add_symbols)
#endif
#ifndef MY_bfd_link_split_section
#define MY_bfd_link_split_section _bfd_generic_link_split_section
#endif
#ifndef MY_bfd_copy_private_bfd_data
#define MY_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
#endif
#ifndef MY_bfd_merge_private_bfd_data
#define MY_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
#endif
#ifndef MY_bfd_copy_private_symbol_data
#define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data
#endif
#ifndef MY_bfd_print_private_bfd_data
#define MY_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data
#endif
#ifndef MY_bfd_set_private_flags
#define MY_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
#endif
#ifndef MY_bfd_is_local_label
#define MY_bfd_is_local_label bfd_generic_is_local_label
#endif
@@ -489,7 +542,7 @@ MY_bfd_final_link (abfd, info)
#endif
/* Aout symbols normally have leading underscores */
#ifndef MY_symbol_leading_char
#ifndef MY_symbol_leading_char
#define MY_symbol_leading_char '_'
#endif
@@ -504,11 +557,11 @@ const bfd_target MY(vec) =
TARGETNAME, /* name */
bfd_target_aout_flavour,
#ifdef TARGET_IS_BIG_ENDIAN_P
true, /* target byte order (big) */
true, /* target headers byte order (big) */
BFD_ENDIAN_BIG, /* target byte order (big) */
BFD_ENDIAN_BIG, /* target headers byte order (big) */
#else
false, /* target byte order (little) */
false, /* target headers byte order (little) */
BFD_ENDIAN_LITTLE, /* target byte order (little) */
BFD_ENDIAN_LITTLE, /* target headers byte order (little) */
#endif
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
@@ -517,7 +570,6 @@ const bfd_target MY(vec) =
MY_symbol_leading_char,
AR_PAD_CHAR, /* ar_pad_char */
15, /* ar_max_namelen */
3, /* minimum alignment */
#ifdef TARGET_IS_BIG_ENDIAN_P
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
+32
View File
@@ -0,0 +1,32 @@
/* BFD backend for SunOS style a.out with flags set to 0
Copyright (C) 1990, 91, 92, 93, 1994 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGETNAME "a.out-zero-big"
#define MY(OP) CAT(aout0_big_,OP)
#include "bfd.h"
#define MY_exec_hdr_flags 0
#define MACHTYPE_OK(mtype) \
((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020)
/* Include the usual a.out support. */
#include "aoutf1.h"
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_SIZE 32
+31
View File
@@ -0,0 +1,31 @@
/* BFD back-end for 64-bit a.out files.
Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_SIZE 64
/* aoutx.h requires definitions for BMAGIC and QMAGIC. */
#ifndef BMAGIC
#define BMAGIC 0
#endif
#ifndef QMAGIC
#define QMAGIC 0
#endif
#include "aoutx.h"
+788
View File
@@ -0,0 +1,788 @@
/* A.out "format 1" file handling code for BFD.
Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "aout/sun4.h"
#include "libaout.h" /* BFD a.out internal data structures */
#include "aout/aout64.h"
#include "aout/stab_gnu.h"
#include "aout/ar.h"
/* This is needed to reject a NewsOS file, e.g. in
gdb/testsuite/gdb.t10/crossload.exp. <kingdon@cygnus.com>
I needed to add M_UNKNOWN to recognize a 68000 object, so this will
probably no longer reject a NewsOS object. <ian@cygnus.com>. */
#ifndef MACHTYPE_OK
#define MACHTYPE_OK(mtype) \
(((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL) \
|| (((mtype) == M_UNKNOWN || (mtype) == M_68010 || (mtype) == M_68020) \
&& bfd_lookup_arch (bfd_arch_m68k, 0) != NULL))
#endif
/*
The file @code{aoutf1.h} contains the code for BFD's
a.out back end. Control over the generated back end is given by these
two preprocessor names:
@table @code
@item ARCH_SIZE
This value should be either 32 or 64, depending upon the size of an
int in the target format. It changes the sizes of the structs which
perform the memory/disk mapping of structures.
The 64 bit backend may only be used if the host compiler supports 64
ints (eg long long with gcc), by defining the name @code{BFD_HOST_64_BIT} in @code{bfd.h}.
With this name defined, @emph{all} bfd operations are performed with 64bit
arithmetic, not just those to a 64bit target.
@item TARGETNAME
The name put into the target vector.
@item
@end table
*/
/*SUPPRESS558*/
/*SUPPRESS529*/
static void
#if ARCH_SIZE == 64
sunos_64_set_arch_mach
#else
sunos_32_set_arch_mach
#endif
(abfd, machtype)
bfd *abfd;
int machtype;
{
/* Determine the architecture and machine type of the object file. */
enum bfd_architecture arch;
long machine;
switch (machtype)
{
case M_UNKNOWN:
/* Some Sun3s make magic numbers without cpu types in them, so
we'll default to the 68000. */
arch = bfd_arch_m68k;
machine = 68000;
break;
case M_68010:
case M_HP200:
arch = bfd_arch_m68k;
machine = 68010;
break;
case M_68020:
case M_HP300:
arch = bfd_arch_m68k;
machine = 68020;
break;
case M_SPARC:
arch = bfd_arch_sparc;
machine = 0;
break;
case M_386:
case M_386_DYNIX:
arch = bfd_arch_i386;
machine = 0;
break;
case M_29K:
arch = bfd_arch_a29k;
machine = 0;
break;
case M_HPUX:
arch = bfd_arch_m68k;
machine = 0;
break;
default:
arch = bfd_arch_obscure;
machine = 0;
break;
}
bfd_set_arch_mach (abfd, arch, machine);
}
#define SET_ARCH_MACH(ABFD, EXEC) \
NAME(sunos,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
choose_reloc_size(ABFD);
/* Determine the size of a relocation entry, based on the architecture */
static void
choose_reloc_size (abfd)
bfd *abfd;
{
switch (bfd_get_arch (abfd))
{
case bfd_arch_sparc:
case bfd_arch_a29k:
obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
break;
default:
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
break;
}
}
/* Write an object file in SunOS format.
Section contents have already been written. We write the
file header, symbols, and relocation. */
static boolean
#if ARCH_SIZE == 64
aout_64_sunos4_write_object_contents
#else
aout_32_sunos4_write_object_contents
#endif
(abfd)
bfd *abfd;
{
struct external_exec exec_bytes;
struct internal_exec *execp = exec_hdr (abfd);
/* Magic number, maestro, please! */
switch (bfd_get_arch (abfd))
{
case bfd_arch_m68k:
switch (bfd_get_mach (abfd))
{
case 68000:
N_SET_MACHTYPE (*execp, M_UNKNOWN);
break;
case 68010:
N_SET_MACHTYPE (*execp, M_68010);
break;
default:
case 68020:
N_SET_MACHTYPE (*execp, M_68020);
break;
}
break;
case bfd_arch_sparc:
N_SET_MACHTYPE (*execp, M_SPARC);
break;
case bfd_arch_i386:
N_SET_MACHTYPE (*execp, M_386);
break;
case bfd_arch_a29k:
N_SET_MACHTYPE (*execp, M_29K);
break;
default:
N_SET_MACHTYPE (*execp, M_UNKNOWN);
}
choose_reloc_size (abfd);
N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
N_SET_DYNAMIC (*execp, bfd_get_file_flags (abfd) & DYNAMIC);
WRITE_HEADERS (abfd, execp);
return true;
}
/* core files */
#define CORE_MAGIC 0x080456
#define CORE_NAMELEN 16
/* The core structure is taken from the Sun documentation.
Unfortunately, they don't document the FPA structure, or at least I
can't find it easily. Fortunately the core header contains its own
length. So this shouldn't cause problems, except for c_ucode, which
so far we don't use but is easy to find with a little arithmetic. */
/* But the reg structure can be gotten from the SPARC processor handbook.
This really should be in a GNU include file though so that gdb can use
the same info. */
struct regs
{
int r_psr;
int r_pc;
int r_npc;
int r_y;
int r_g1;
int r_g2;
int r_g3;
int r_g4;
int r_g5;
int r_g6;
int r_g7;
int r_o0;
int r_o1;
int r_o2;
int r_o3;
int r_o4;
int r_o5;
int r_o6;
int r_o7;
};
/* Taken from Sun documentation: */
/* FIXME: It's worse than we expect. This struct contains TWO substructs
neither of whose size we know, WITH STUFF IN BETWEEN THEM! We can't
even portably access the stuff in between! */
struct external_sparc_core
{
int c_magic; /* Corefile magic number */
int c_len; /* Sizeof (struct core) */
#define SPARC_CORE_LEN 432
int c_regs[19]; /* General purpose registers -- MACHDEP SIZE */
struct external_exec c_aouthdr; /* A.out header */
int c_signo; /* Killing signal, if any */
int c_tsize; /* Text size (bytes) */
int c_dsize; /* Data size (bytes) */
int c_ssize; /* Stack size (bytes) */
char c_cmdname[CORE_NAMELEN + 1]; /* Command name */
double fp_stuff[1]; /* external FPU state (size unknown by us) */
/* The type "double" is critical here, for alignment.
SunOS declares a struct here, but the struct's alignment
is double since it contains doubles. */
int c_ucode; /* Exception no. from u_code */
/* (this member is not accessible by name since we don't
portably know the size of fp_stuff.) */
};
/* Core files generated by the BCP (the part of Solaris which allows
it to run SunOS4 a.out files). */
struct external_solaris_bcp_core
{
int c_magic; /* Corefile magic number */
int c_len; /* Sizeof (struct core) */
#define SOLARIS_BCP_CORE_LEN 456
int c_regs[19]; /* General purpose registers -- MACHDEP SIZE */
int c_exdata_vp; /* exdata structure */
int c_exdata_tsize;
int c_exdata_dsize;
int c_exdata_bsize;
int c_exdata_lsize;
int c_exdata_nshlibs;
short c_exdata_mach;
short c_exdata_mag;
int c_exdata_toffset;
int c_exdata_doffset;
int c_exdata_loffset;
int c_exdata_txtorg;
int c_exdata_datorg;
int c_exdata_entloc;
int c_signo; /* Killing signal, if any */
int c_tsize; /* Text size (bytes) */
int c_dsize; /* Data size (bytes) */
int c_ssize; /* Stack size (bytes) */
char c_cmdname[CORE_NAMELEN + 1]; /* Command name */
double fp_stuff[1]; /* external FPU state (size unknown by us) */
/* The type "double" is critical here, for alignment.
SunOS declares a struct here, but the struct's alignment
is double since it contains doubles. */
int c_ucode; /* Exception no. from u_code */
/* (this member is not accessible by name since we don't
portably know the size of fp_stuff.) */
};
struct external_sun3_core
{
int c_magic; /* Corefile magic number */
int c_len; /* Sizeof (struct core) */
#define SUN3_CORE_LEN 826 /* As of SunOS 4.1.1 */
int c_regs[18]; /* General purpose registers -- MACHDEP SIZE */
struct external_exec c_aouthdr; /* A.out header */
int c_signo; /* Killing signal, if any */
int c_tsize; /* Text size (bytes) */
int c_dsize; /* Data size (bytes) */
int c_ssize; /* Stack size (bytes) */
char c_cmdname[CORE_NAMELEN + 1]; /* Command name */
double fp_stuff[1]; /* external FPU state (size unknown by us) */
/* The type "double" is critical here, for alignment.
SunOS declares a struct here, but the struct's alignment
is double since it contains doubles. */
int c_ucode; /* Exception no. from u_code */
/* (this member is not accessible by name since we don't
portably know the size of fp_stuff.) */
};
struct internal_sunos_core
{
int c_magic; /* Corefile magic number */
int c_len; /* Sizeof (struct core) */
long c_regs_pos; /* file offset of General purpose registers */
int c_regs_size; /* size of General purpose registers */
struct internal_exec c_aouthdr; /* A.out header */
int c_signo; /* Killing signal, if any */
int c_tsize; /* Text size (bytes) */
int c_dsize; /* Data size (bytes) */
bfd_vma c_data_addr; /* Data start (address) */
int c_ssize; /* Stack size (bytes) */
bfd_vma c_stacktop; /* Stack top (address) */
char c_cmdname[CORE_NAMELEN + 1]; /* Command name */
long fp_stuff_pos; /* file offset of external FPU state (regs) */
int fp_stuff_size; /* Size of it */
int c_ucode; /* Exception no. from u_code */
};
/* byte-swap in the Sun-3 core structure */
static void
swapcore_sun3 (abfd, ext, intcore)
bfd *abfd;
char *ext;
struct internal_sunos_core *intcore;
{
struct external_sun3_core *extcore = (struct external_sun3_core *) ext;
intcore->c_magic = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_magic);
intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_len);
intcore->c_regs_pos = (long) (((struct external_sun3_core *) 0)->c_regs);
intcore->c_regs_size = sizeof (extcore->c_regs);
#if ARCH_SIZE == 64
aout_64_swap_exec_header_in
#else
aout_32_swap_exec_header_in
#endif
(abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_signo);
intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_tsize);
intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_dsize);
intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_ssize);
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos = (long) (((struct external_sun3_core *) 0)->fp_stuff);
/* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_sun3_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
intcore->c_ucode =
bfd_h_get_32 (abfd,
intcore->c_len - sizeof (extcore->c_ucode) + (unsigned char *) extcore);
intcore->c_stacktop = 0x0E000000; /* By experimentation */
}
/* byte-swap in the Sparc core structure */
static void
swapcore_sparc (abfd, ext, intcore)
bfd *abfd;
char *ext;
struct internal_sunos_core *intcore;
{
struct external_sparc_core *extcore = (struct external_sparc_core *) ext;
intcore->c_magic = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_magic);
intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_len);
intcore->c_regs_pos = (long) (((struct external_sparc_core *) 0)->c_regs);
intcore->c_regs_size = sizeof (extcore->c_regs);
#if ARCH_SIZE == 64
aout_64_swap_exec_header_in
#else
aout_32_swap_exec_header_in
#endif
(abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_signo);
intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_tsize);
intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_dsize);
intcore->c_data_addr = N_DATADDR (intcore->c_aouthdr);
intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_ssize);
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos = (long) (((struct external_sparc_core *) 0)->fp_stuff);
/* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_sparc_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
intcore->c_ucode =
bfd_h_get_32 (abfd,
intcore->c_len - sizeof (extcore->c_ucode) + (unsigned char *) extcore);
/* Supposedly the user stack grows downward from the bottom of kernel memory.
Presuming that this remains true, this definition will work. */
/* Now sun has provided us with another challenge. The value is different
for sparc2 and sparc10 (both running SunOS 4.1.3). We pick one or
the other based on the current value of the stack pointer. This
loses (a) if the stack pointer has been clobbered, or (b) if the stack
is larger than 128 megabytes.
It's times like these you're glad they're switching to ELF.
Note that using include files or nlist on /vmunix would be wrong,
because we want the value for this core file, no matter what kind of
machine we were compiled on or are running on. */
#define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
#define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
{
bfd_vma sp = bfd_h_get_32
(abfd, (unsigned char *) &((struct regs *) &extcore->c_regs[0])->r_o6);
if (sp < SPARC_USRSTACK_SPARC10)
intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
else
intcore->c_stacktop = SPARC_USRSTACK_SPARC2;
}
}
/* byte-swap in the Solaris BCP core structure */
static void
swapcore_solaris_bcp (abfd, ext, intcore)
bfd *abfd;
char *ext;
struct internal_sunos_core *intcore;
{
struct external_solaris_bcp_core *extcore =
(struct external_solaris_bcp_core *) ext;
intcore->c_magic = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_magic);
intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_len);
intcore->c_regs_pos = (long) (((struct external_solaris_bcp_core *) 0)->c_regs);
intcore->c_regs_size = sizeof (extcore->c_regs);
/* The Solaris BCP exdata structure does not contain an a_syms field,
so we are unable to synthesize an internal exec header.
Luckily we are able to figure out the start address of the data section,
which is the only thing needed from the internal exec header,
from the exdata structure.
As of Solaris 2.3, BCP core files for statically linked executables
are buggy. The exdata structure is not properly filled in, and
the data section is written from address zero instead of the data
start address. */
memset ((PTR) &intcore->c_aouthdr, 0, sizeof (struct internal_exec));
intcore->c_data_addr =
bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_exdata_datorg);
intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_signo);
intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_tsize);
intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_dsize);
intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_ssize);
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos =
(long) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
/* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
intcore->c_ucode =
bfd_h_get_32 (abfd,
intcore->c_len - sizeof (extcore->c_ucode) + (unsigned char *) extcore);
/* Supposedly the user stack grows downward from the bottom of kernel memory.
Presuming that this remains true, this definition will work. */
/* Now sun has provided us with another challenge. The value is different
for sparc2 and sparc10 (both running SunOS 4.1.3). We pick one or
the other based on the current value of the stack pointer. This
loses (a) if the stack pointer has been clobbered, or (b) if the stack
is larger than 128 megabytes.
It's times like these you're glad they're switching to ELF.
Note that using include files or nlist on /vmunix would be wrong,
because we want the value for this core file, no matter what kind of
machine we were compiled on or are running on. */
#define SPARC_USRSTACK_SPARC2 ((bfd_vma)0xf8000000)
#define SPARC_USRSTACK_SPARC10 ((bfd_vma)0xf0000000)
{
bfd_vma sp = bfd_h_get_32
(abfd, (unsigned char *) &((struct regs *) &extcore->c_regs[0])->r_o6);
if (sp < SPARC_USRSTACK_SPARC10)
intcore->c_stacktop = SPARC_USRSTACK_SPARC10;
else
intcore->c_stacktop = SPARC_USRSTACK_SPARC2;
}
}
/* need this cast because ptr is really void * */
#define core_hdr(bfd) ((bfd)->tdata.sun_core_data)
#define core_datasec(bfd) (core_hdr(bfd)->data_section)
#define core_stacksec(bfd) (core_hdr(bfd)->stack_section)
#define core_regsec(bfd) (core_hdr(bfd)->reg_section)
#define core_reg2sec(bfd) (core_hdr(bfd)->reg2_section)
/* These are stored in the bfd's tdata */
struct sun_core_struct
{
struct internal_sunos_core *hdr; /* core file header */
asection *data_section;
asection *stack_section;
asection *reg_section;
asection *reg2_section;
};
static const bfd_target *
sunos4_core_file_p (abfd)
bfd *abfd;
{
unsigned char longbuf[4]; /* Raw bytes of various header fields */
bfd_size_type core_size;
unsigned long core_mag;
struct internal_sunos_core *core;
char *extcore;
struct mergem
{
struct sun_core_struct suncoredata;
struct internal_sunos_core internal_sunos_core;
char external_core[1];
}
*mergem;
if (bfd_read ((PTR) longbuf, 1, sizeof (longbuf), abfd) !=
sizeof (longbuf))
return 0;
core_mag = bfd_h_get_32 (abfd, longbuf);
if (core_mag != CORE_MAGIC)
return 0;
/* SunOS core headers can vary in length; second word is size; */
if (bfd_read ((PTR) longbuf, 1, sizeof (longbuf), abfd) !=
sizeof (longbuf))
return 0;
core_size = bfd_h_get_32 (abfd, longbuf);
/* Sanity check */
if (core_size > 20000)
return 0;
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) < 0)
return 0;
mergem = (struct mergem *) bfd_zalloc (abfd, core_size + sizeof (struct mergem));
if (mergem == NULL)
return 0;
extcore = mergem->external_core;
if ((bfd_read ((PTR) extcore, 1, core_size, abfd)) != core_size)
{
bfd_release (abfd, (char *) mergem);
return 0;
}
/* Validate that it's a core file we know how to handle, due to sun
botching the positioning of registers and other fields in a machine
dependent way. */
core = &mergem->internal_sunos_core;
switch (core_size)
{
case SPARC_CORE_LEN:
swapcore_sparc (abfd, extcore, core);
break;
case SUN3_CORE_LEN:
swapcore_sun3 (abfd, extcore, core);
break;
case SOLARIS_BCP_CORE_LEN:
swapcore_solaris_bcp (abfd, extcore, core);
break;
default:
bfd_set_error (bfd_error_system_call); /* FIXME */
bfd_release (abfd, (char *) mergem);
return 0;
}
abfd->tdata.sun_core_data = &mergem->suncoredata;
abfd->tdata.sun_core_data->hdr = core;
/* create the sections. This is raunchy, but bfd_close wants to reclaim
them */
core_stacksec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_stacksec (abfd) == NULL)
{
loser:
bfd_release (abfd, (char *) mergem);
return 0;
}
core_datasec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_datasec (abfd) == NULL)
{
loser1:
bfd_release (abfd, core_stacksec (abfd));
goto loser;
}
core_regsec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_regsec (abfd) == NULL)
{
loser2:
bfd_release (abfd, core_datasec (abfd));
goto loser1;
}
core_reg2sec (abfd) = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (core_reg2sec (abfd) == NULL)
{
bfd_release (abfd, core_regsec (abfd));
goto loser2;
}
core_stacksec (abfd)->name = ".stack";
core_datasec (abfd)->name = ".data";
core_regsec (abfd)->name = ".reg";
core_reg2sec (abfd)->name = ".reg2";
core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_regsec (abfd)->flags = SEC_HAS_CONTENTS;
core_reg2sec (abfd)->flags = SEC_HAS_CONTENTS;
core_stacksec (abfd)->_raw_size = core->c_ssize;
core_datasec (abfd)->_raw_size = core->c_dsize;
core_regsec (abfd)->_raw_size = core->c_regs_size;
core_reg2sec (abfd)->_raw_size = core->fp_stuff_size;
core_stacksec (abfd)->vma = (core->c_stacktop - core->c_ssize);
core_datasec (abfd)->vma = core->c_data_addr;
core_regsec (abfd)->vma = 0;
core_reg2sec (abfd)->vma = 0;
core_stacksec (abfd)->filepos = core->c_len + core->c_dsize;
core_datasec (abfd)->filepos = core->c_len;
/* We'll access the regs afresh in the core file, like any section: */
core_regsec (abfd)->filepos = (file_ptr) core->c_regs_pos;
core_reg2sec (abfd)->filepos = (file_ptr) core->fp_stuff_pos;
/* Align to word at least */
core_stacksec (abfd)->alignment_power = 2;
core_datasec (abfd)->alignment_power = 2;
core_regsec (abfd)->alignment_power = 2;
core_reg2sec (abfd)->alignment_power = 2;
abfd->sections = core_stacksec (abfd);
core_stacksec (abfd)->next = core_datasec (abfd);
core_datasec (abfd)->next = core_regsec (abfd);
core_regsec (abfd)->next = core_reg2sec (abfd);
abfd->section_count = 4;
return abfd->xvec;
}
static char *
sunos4_core_file_failing_command (abfd)
bfd *abfd;
{
return core_hdr (abfd)->hdr->c_cmdname;
}
static int
sunos4_core_file_failing_signal (abfd)
bfd *abfd;
{
return core_hdr (abfd)->hdr->c_signo;
}
static boolean
sunos4_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd;
bfd *exec_bfd;
{
if (core_bfd->xvec != exec_bfd->xvec)
{
bfd_set_error (bfd_error_system_call);
return false;
}
/* Solaris core files do not include an aouthdr. */
if ((core_hdr (core_bfd)->hdr)->c_len == SOLARIS_BCP_CORE_LEN)
return true;
return (memcmp ((char *) &((core_hdr (core_bfd)->hdr)->c_aouthdr),
(char *) exec_hdr (exec_bfd),
sizeof (struct internal_exec)) == 0) ? true : false;
}
#define MY_set_sizes sunos4_set_sizes
static boolean
sunos4_set_sizes (abfd)
bfd *abfd;
{
switch (bfd_get_arch (abfd))
{
default:
return false;
case bfd_arch_sparc:
adata (abfd).page_size = 0x2000;
adata (abfd).segment_size = 0x2000;
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
return true;
case bfd_arch_m68k:
adata (abfd).page_size = 0x2000;
adata (abfd).segment_size = 0x20000;
adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
return true;
}
}
/* We default to setting the toolversion field to 1, as is required by
SunOS. */
#ifndef MY_exec_hdr_flags
#define MY_exec_hdr_flags 1
#endif
#ifndef MY_add_dynamic_symbols
#define MY_add_dynamic_symbols 0
#endif
#ifndef MY_add_one_symbol
#define MY_add_one_symbol 0
#endif
#ifndef MY_link_dynamic_object
#define MY_link_dynamic_object 0
#endif
#ifndef MY_write_dynamic_symbol
#define MY_write_dynamic_symbol 0
#endif
#ifndef MY_check_dynamic_reloc
#define MY_check_dynamic_reloc 0
#endif
#ifndef MY_finish_dynamic_link
#define MY_finish_dynamic_link 0
#endif
static CONST struct aout_backend_data sunos4_aout_backend =
{
0, /* zmagic files are not contiguous */
1, /* text includes header */
MY_exec_hdr_flags,
0, /* default text vma */
sunos4_set_sizes,
0, /* header is counted in zmagic text */
MY_add_dynamic_symbols,
MY_add_one_symbol,
MY_link_dynamic_object,
MY_write_dynamic_symbol,
MY_check_dynamic_reloc,
MY_finish_dynamic_link
};
#define MY_core_file_failing_command sunos4_core_file_failing_command
#define MY_core_file_failing_signal sunos4_core_file_failing_signal
#define MY_core_file_matches_executable_p sunos4_core_file_matches_executable_p
#define MY_bfd_debug_info_start bfd_void
#define MY_bfd_debug_info_end bfd_void
#define MY_bfd_debug_info_accumulate \
(void (*) PARAMS ((bfd *, struct sec *))) bfd_void
#define MY_core_file_p sunos4_core_file_p
#define MY_write_object_contents NAME(aout,sunos4_write_object_contents)
#define MY_backend_data &sunos4_aout_backend
#define TARGET_IS_BIG_ENDIAN_P
#include "aout-target.h"
File diff suppressed because it is too large. Load diff
@@ -1,5 +1,5 @@
/* BFD back-end for archive files (libraries).
Copyright 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Written by Cygnus Support. Mostly Gumby Henkel-Wallace's fault.
This file is part of BFD, the Binary File Descriptor library.
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
@setfilename archive-info
@@ -175,15 +175,9 @@ static char *get_extended_arelt_filename PARAMS ((bfd *arch,
const char *name));
static boolean do_slurp_bsd_armap PARAMS ((bfd *abfd));
static boolean do_slurp_coff_armap PARAMS ((bfd *abfd));
static const char *normalize PARAMS ((const char *file));
static boolean bfd_construct_extended_name_table PARAMS ((bfd *abfd,
char **tabloc,
unsigned int *));
static const char *normalize PARAMS ((bfd *, const char *file));
static struct areltdata *bfd_ar_hdr_from_filesystem PARAMS ((bfd *abfd,
const char *));
static boolean compute_and_write_armap PARAMS ((bfd *arch,
unsigned int elength));
static boolean bsd_update_armap_timestamp PARAMS ((bfd *arch));
boolean
_bfd_generic_mkarchive (abfd)
@@ -193,10 +187,7 @@ _bfd_generic_mkarchive (abfd)
bfd_zalloc (abfd, sizeof (struct artdata)));
if (bfd_ardata (abfd) == NULL)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
bfd_ardata (abfd)->cache = NULL;
bfd_ardata (abfd)->archive_head = NULL;
@@ -242,7 +233,9 @@ bfd_get_next_mapent (abfd, prev, entry)
if (prev == BFD_NO_MORE_SYMBOLS)
prev = 0;
else if (++prev >= bfd_ardata (abfd)->symdef_count)
else
++prev;
if (prev >= bfd_ardata (abfd)->symdef_count)
return BFD_NO_MORE_SYMBOLS;
*entry = (bfd_ardata (abfd)->symdefs + prev);
@@ -255,15 +248,7 @@ bfd *
_bfd_create_empty_archive_element_shell (obfd)
bfd *obfd;
{
bfd *nbfd;
nbfd = _bfd_new_bfd_contained_in (obfd);
if (nbfd == NULL)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
}
return nbfd;
return _bfd_new_bfd_contained_in (obfd);
}
/*
@@ -314,10 +299,7 @@ _bfd_add_bfd_to_archive_cache (arch_bfd, filepos, new_elt)
sizeof (struct ar_cache)));
if (new_cache == NULL)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
new_cache->ptr = filepos;
new_cache->arelt = new_elt;
@@ -369,14 +351,21 @@ get_extended_arelt_filename (arch, name)
could have been moved arbitrarily.
*/
struct areltdata *
_bfd_snarf_ar_hdr (abfd)
PTR
_bfd_generic_read_ar_hdr (abfd)
bfd *abfd;
{
#ifndef errno
extern int errno;
#endif
return _bfd_generic_read_ar_hdr_mag (abfd, (const char *) NULL);
}
/* Alpha ECOFF uses an optional different ARFMAG value, so we have a
variant of _bfd_generic_read_ar_hdr which accepts a magic string. */
PTR
_bfd_generic_read_ar_hdr_mag (abfd, mag)
bfd *abfd;
const char *mag;
{
struct ar_hdr hdr;
char *hdrp = (char *) &hdr;
unsigned int parsed_size;
@@ -393,7 +382,9 @@ _bfd_snarf_ar_hdr (abfd)
bfd_set_error (bfd_error_no_more_archived_files);
return NULL;
}
if (strncmp (hdr.ar_fmag, ARFMAG, 2))
if (strncmp (hdr.ar_fmag, ARFMAG, 2) != 0
&& (mag == NULL
|| strncmp (hdr.ar_fmag, mag, 2) != 0))
{
bfd_set_error (bfd_error_malformed_archive);
return NULL;
@@ -434,10 +425,7 @@ _bfd_snarf_ar_hdr (abfd)
allocptr = bfd_zalloc (abfd, allocsize);
if (allocptr == NULL)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
}
return NULL;
filename = (allocptr
+ sizeof (struct areltdata)
+ sizeof (struct ar_hdr));
@@ -477,10 +465,7 @@ _bfd_snarf_ar_hdr (abfd)
{
allocptr = bfd_zalloc (abfd, allocsize);
if (allocptr == NULL)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
}
return NULL;
}
ared = (struct areltdata *) allocptr;
@@ -500,7 +485,7 @@ _bfd_snarf_ar_hdr (abfd)
ared->filename[namelen] = '\0';
}
return ared;
return (PTR) ared;
}
/* This is an internal function; it's mainly used when indexing
@@ -522,7 +507,7 @@ _bfd_get_elt_at_filepos (archive, filepos)
if (0 > bfd_seek (archive, filepos, SEEK_SET))
return NULL;
if ((new_areldata = _bfd_snarf_ar_hdr (archive)) == NULL)
if ((new_areldata = (struct areltdata *) _bfd_read_ar_hdr (archive)) == NULL)
return NULL;
n_nfd = _bfd_create_empty_archive_element_shell (archive);
@@ -545,23 +530,13 @@ _bfd_get_elt_at_filepos (archive, filepos)
return NULL;
}
/*
FUNCTION
bfd_get_elt_at_index
/* Return the BFD which is referenced by the symbol in ABFD indexed by
INDEX. INDEX should have been returned by bfd_get_next_mapent. */
SYNOPSIS
bfd *bfd_get_elt_at_index(bfd *archive, int index);
DESCRIPTION
Return the BFD which is referenced by the symbol in @var{archive}
indexed by @var{index}. @var{index} should have been returned by
<<bfd_get_next_mapent>> (q.v.).
*/
bfd *
bfd_get_elt_at_index (abfd, index)
_bfd_generic_get_elt_at_index (abfd, index)
bfd *abfd;
int index;
symindex index;
{
carsym *entry;
@@ -631,8 +606,11 @@ const bfd_target *
bfd_generic_archive_p (abfd)
bfd *abfd;
{
struct artdata *tdata_hold;
char armag[SARMAG + 1];
tdata_hold = abfd->tdata.aout_ar_data;
if (bfd_read ((PTR) armag, 1, SARMAG, abfd) != SARMAG)
{
if (bfd_get_error () != bfd_error_system_call)
@@ -655,10 +633,7 @@ bfd_generic_archive_p (abfd)
bfd_zalloc (abfd, sizeof (struct artdata)));
if (bfd_ardata (abfd) == NULL)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
}
return NULL;
bfd_ardata (abfd)->first_file_filepos = SARMAG;
bfd_ardata (abfd)->cache = NULL;
@@ -670,17 +645,54 @@ bfd_generic_archive_p (abfd)
if (!BFD_SEND (abfd, _bfd_slurp_armap, (abfd)))
{
bfd_release (abfd, bfd_ardata (abfd));
abfd->tdata.aout_ar_data = NULL;
abfd->tdata.aout_ar_data = tdata_hold;
return NULL;
}
if (!BFD_SEND (abfd, _bfd_slurp_extended_name_table, (abfd)))
{
bfd_release (abfd, bfd_ardata (abfd));
abfd->tdata.aout_ar_data = NULL;
abfd->tdata.aout_ar_data = tdata_hold;
return NULL;
}
if (bfd_has_map (abfd))
{
bfd *first;
/* This archive has a map, so we may presume that the contents
are object files. Make sure that if the first file in the
archive can be recognized as an object file, it is for this
target. If not, assume that this is the wrong format. If
the first file is not an object file, somebody is doing
something weird, and we permit it so that ar -t will work.
This is done because any normal format will recognize any
normal archive, regardless of the format of the object files.
We do accept an empty archive. */
first = bfd_openr_next_archived_file (abfd, (bfd *) NULL);
if (first != NULL)
{
boolean fail;
first->target_defaulted = false;
fail = false;
if (bfd_check_format (first, bfd_object)
&& first->xvec != abfd->xvec)
{
(void) bfd_close (first);
bfd_release (abfd, bfd_ardata (abfd));
abfd->tdata.aout_ar_data = tdata_hold;
bfd_set_error (bfd_error_wrong_format);
return NULL;
}
/* We ought to close first here, but we can't, because we
have no way to remove it from the archive cache. FIXME. */
}
}
return abfd->xvec;
}
@@ -715,7 +727,7 @@ do_slurp_bsd_armap (abfd)
unsigned int parsed_size;
carsym *set;
mapdata = _bfd_snarf_ar_hdr (abfd);
mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
if (mapdata == NULL)
return false;
parsed_size = mapdata->parsed_size;
@@ -723,10 +735,7 @@ do_slurp_bsd_armap (abfd)
raw_armap = (bfd_byte *) bfd_zalloc (abfd, parsed_size);
if (raw_armap == (bfd_byte *) NULL)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
if (bfd_read ((PTR) raw_armap, 1, parsed_size, abfd) != parsed_size)
{
@@ -756,10 +765,7 @@ do_slurp_bsd_armap (abfd)
(ardata->symdef_count
* sizeof (carsym)));
if (!ardata->symdefs)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
for (counter = 0, set = ardata->symdefs;
counter < ardata->symdef_count;
@@ -796,7 +802,7 @@ do_slurp_coff_armap (abfd)
char int_buf[sizeof (long)];
unsigned int carsym_size, ptrsize, i;
mapdata = _bfd_snarf_ar_hdr (abfd);
mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
if (mapdata == NULL)
return false;
parsed_size = mapdata->parsed_size;
@@ -837,20 +843,14 @@ do_slurp_coff_armap (abfd)
ardata->symdefs = (carsym *) bfd_zalloc (abfd, carsym_size + stringsize + 1);
if (ardata->symdefs == NULL)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
carsyms = ardata->symdefs;
stringbase = ((char *) ardata->symdefs) + carsym_size;
/* Allocate and read in the raw offsets. */
raw_armap = (int *) bfd_alloc (abfd, ptrsize);
if (raw_armap == NULL)
{
bfd_set_error (bfd_error_no_memory);
goto release_symdefs;
}
goto release_symdefs;
if (bfd_read ((PTR) raw_armap, 1, ptrsize, abfd) != ptrsize
|| bfd_read ((PTR) stringbase, 1, stringsize, abfd) != stringsize)
{
@@ -875,8 +875,29 @@ do_slurp_coff_armap (abfd)
/* Pad to an even boundary if you have to */
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
bfd_has_map (abfd) = true;
bfd_release (abfd, (PTR) raw_armap);
/* Check for a second archive header (as used by PE) */
{
struct areltdata *tmp;
bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET);
tmp = (struct areltdata *) _bfd_read_ar_hdr (abfd);
if (tmp != NULL)
{
if (tmp->arch_header[0] == '/'
&& tmp->arch_header[1] == ' ')
{
ardata->first_file_filepos +=
(tmp->parsed_size + sizeof(struct ar_hdr) + 1) & ~1;
}
bfd_release (abfd, tmp);
}
}
return true;
release_raw_armap:
@@ -954,14 +975,13 @@ bfd_slurp_bsd_armap_f2 (abfd)
return true;
}
mapdata = _bfd_snarf_ar_hdr (abfd);
mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
if (mapdata == NULL)
return false;
raw_armap = (bfd_byte *) bfd_zalloc (abfd, mapdata->parsed_size);
if (raw_armap == NULL)
{
bfd_set_error (bfd_error_no_memory);
byebye:
bfd_release (abfd, (PTR) mapdata);
return false;
@@ -999,10 +1019,7 @@ bfd_slurp_bsd_armap_f2 (abfd)
(ardata->symdef_count
* BSD_SYMDEF_SIZE));
if (!ardata->symdefs)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
for (counter = 0, set = ardata->symdefs;
counter < ardata->symdef_count;
@@ -1042,9 +1059,9 @@ _bfd_slurp_extended_name_table (abfd)
/* FIXME: Formatting sucks here, and in case of failure of BFD_READ,
we probably don't want to return true. */
bfd_seek (abfd, bfd_ardata (abfd)->first_file_filepos, SEEK_SET);
if (bfd_read ((PTR) nextname, 1, 16, abfd) == 16)
{
if (bfd_seek (abfd, (file_ptr) - 16, SEEK_CUR) != 0)
return false;
@@ -1055,7 +1072,7 @@ _bfd_slurp_extended_name_table (abfd)
return true;
}
namedata = _bfd_snarf_ar_hdr (abfd);
namedata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
if (namedata == NULL)
return false;
@@ -1063,7 +1080,6 @@ _bfd_slurp_extended_name_table (abfd)
bfd_zalloc (abfd, namedata->parsed_size);
if (bfd_ardata (abfd)->extended_names == NULL)
{
bfd_set_error (bfd_error_no_memory);
byebye:
bfd_release (abfd, (PTR) namedata);
return false;
@@ -1082,13 +1098,17 @@ _bfd_slurp_extended_name_table (abfd)
/* Since the archive is supposed to be printable if it contains
text, the entries in the list are newline-padded, not null
padded. In SVR4-style archives, the names also have a
trailing '/'. We'll fix both problems here.. */
trailing '/'. DOS/NT created archive often have \ in them
We'll fix all problems here.. */
{
char *temp = bfd_ardata (abfd)->extended_names;
char *limit = temp + namedata->parsed_size;
for (; temp < limit; ++temp)
for (; temp < limit; ++temp) {
if (*temp == '\012')
temp[temp[-1] == '/' ? -1 : 0] = '\0';
if (*temp == '\\')
*temp = '/';
}
}
/* Pad to an even boundary if you have to */
@@ -1108,7 +1128,8 @@ _bfd_slurp_extended_name_table (abfd)
/* Return a copy of the stuff in the filename between any :]> and a
semicolon */
static const char *
normalize (file)
normalize (abfd, file)
bfd *abfd;
const char *file;
{
CONST char *first;
@@ -1130,10 +1151,9 @@ normalize (file)
first--;
}
copy = malloc (last - first + 1);
if (!copy)
return copy;
copy = (char *) bfd_alloc (abfd, last - first + 1);
if (copy == NULL)
return NULL;
memcpy (copy, first, last - first);
copy[last - first] = 0;
@@ -1143,10 +1163,11 @@ normalize (file)
#else
static const char *
normalize (file)
normalize (abfd, file)
bfd *abfd;
const char *file;
{
CONST char *filename = strrchr (file, '/');
const char *filename = strrchr (file, '/');
if (filename != (char *) NULL)
filename++;
@@ -1156,6 +1177,32 @@ normalize (file)
}
#endif
/* Build a BFD style extended name table. */
boolean
_bfd_archive_bsd_construct_extended_name_table (abfd, tabloc, tablen, name)
bfd *abfd;
char **tabloc;
bfd_size_type *tablen;
const char **name;
{
*name = "ARFILENAMES/";
return _bfd_construct_extended_name_table (abfd, false, tabloc, tablen);
}
/* Build an SVR4 style extended name table. */
boolean
_bfd_archive_coff_construct_extended_name_table (abfd, tabloc, tablen, name)
bfd *abfd;
char **tabloc;
bfd_size_type *tablen;
const char **name;
{
*name = "//";
return _bfd_construct_extended_name_table (abfd, true, tabloc, tablen);
}
/* Follows archive_head and produces an extended name table if
necessary. Returns (in tabloc) a pointer to an extended name
table, and in tablen the length of the table. If it makes an entry
@@ -1164,11 +1211,12 @@ normalize (file)
something went wrong. A successful return may still involve a
zero-length tablen! */
static boolean
bfd_construct_extended_name_table (abfd, tabloc, tablen)
boolean
_bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
bfd *abfd;
boolean trailing_slash;
char **tabloc;
unsigned int *tablen;
bfd_size_type *tablen;
{
unsigned int maxname = abfd->xvec->ar_max_namelen;
unsigned int total_namelen = 0;
@@ -1180,17 +1228,44 @@ bfd_construct_extended_name_table (abfd, tabloc, tablen)
/* Figure out how long the table should be */
for (current = abfd->archive_head; current != NULL; current = current->next)
{
CONST char *normal = normalize (current->filename);
const char *normal;
unsigned int thislen;
if (!normal)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
normal = normalize (current, current->filename);
if (normal == NULL)
return false;
thislen = strlen (normal);
if (thislen > maxname
&& (bfd_get_file_flags (abfd) & BFD_TRADITIONAL_FORMAT) != 0)
thislen = maxname;
if (thislen > maxname)
total_namelen += thislen + 1; /* leave room for \n */
{
/* Add one to leave room for \n. */
total_namelen += thislen + 1;
if (trailing_slash)
{
/* Leave room for trailing slash. */
++total_namelen;
}
}
else
{
struct ar_hdr *hdr = arch_hdr (current);
if (strncmp (normal, hdr->ar_name, thislen) != 0
|| (thislen < sizeof hdr->ar_name
&& hdr->ar_name[thislen] != ar_padchar (current)))
{
/* Must have been using extended format even though it
didn't need to. Fix it to use normal format. */
memcpy (hdr->ar_name, normal, thislen);
if (thislen < maxname
|| (thislen == maxname && thislen < sizeof hdr->ar_name))
hdr->ar_name[thislen] = ar_padchar (current);
}
}
}
if (total_namelen == 0)
@@ -1198,10 +1273,7 @@ bfd_construct_extended_name_table (abfd, tabloc, tablen)
*tabloc = bfd_zalloc (abfd, total_namelen);
if (*tabloc == NULL)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
return false;
*tablen = total_namelen;
strptr = *tabloc;
@@ -1209,14 +1281,13 @@ bfd_construct_extended_name_table (abfd, tabloc, tablen)
for (current = abfd->archive_head; current != NULL; current =
current->next)
{
CONST char *normal = normalize (current->filename);
const char *normal;
unsigned int thislen;
if (!normal)
{
bfd_set_error (bfd_error_no_memory);
return false;
}
normal = normalize (current, current->filename);
if (normal == NULL)
return false;
thislen = strlen (normal);
if (thislen > maxname)
{
@@ -1225,7 +1296,13 @@ bfd_construct_extended_name_table (abfd, tabloc, tablen)
generalise this hack. */
struct ar_hdr *hdr = arch_hdr (current);
strcpy (strptr, normal);
strptr[thislen] = '\012';
if (! trailing_slash)
strptr[thislen] = '\012';
else
{
strptr[thislen] = '/';
strptr[thislen + 1] = '\012';
}
hdr->ar_name[0] = ar_padchar (current);
/* We know there will always be enough room (one of the few
cases where you may safely use sprintf). */
@@ -1239,6 +1316,8 @@ bfd_construct_extended_name_table (abfd, tabloc, tablen)
*temp = ' ';
}
strptr += thislen + 1;
if (trailing_slash)
++strptr;
}
}
@@ -1270,10 +1349,7 @@ bfd_ar_hdr_from_filesystem (abfd, filename)
ared = (struct areltdata *) bfd_zalloc (abfd, sizeof (struct ar_hdr) +
sizeof (struct areltdata));
if (ared == NULL)
{
bfd_set_error (bfd_error_no_memory);
return NULL;
}
return NULL;
hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata));
/* ar headers are space padded, not null padded! */
@@ -1364,16 +1440,31 @@ bfd_dont_truncate_arname (abfd, pathname, arhdr)
intel's release is out the door. */
struct ar_hdr *hdr = (struct ar_hdr *) arhdr;
int length;
CONST char *filename = normalize (pathname);
int maxlen = ar_maxnamelen (abfd);
size_t length;
const char *filename;
size_t maxlen = ar_maxnamelen (abfd);
if ((bfd_get_file_flags (abfd) & BFD_TRADITIONAL_FORMAT) != 0)
{
bfd_bsd_truncate_arname (abfd, pathname, arhdr);
return;
}
filename = normalize (abfd, pathname);
if (filename == NULL)
{
/* FIXME */
abort ();
}
length = strlen (filename);
if (length <= maxlen)
memcpy (hdr->ar_name, filename, length);
if (length < maxlen)
/* Add the padding character if there is room for it. */
if (length < maxlen
|| (length == maxlen && length < sizeof hdr->ar_name))
(hdr->ar_name)[length] = ar_padchar (abfd);
}
@@ -1460,7 +1551,8 @@ _bfd_write_archive_contents (arch)
{
bfd *current;
char *etable = NULL;
unsigned int elength = 0;
bfd_size_type elength = 0;
const char *ename = NULL;
boolean makemap = bfd_has_map (arch);
boolean hasobjects = false; /* if no .o's, don't bother to make a map */
bfd_size_type wrote;
@@ -1501,7 +1593,8 @@ _bfd_write_archive_contents (arch)
}
}
if (!bfd_construct_extended_name_table (arch, &etable, &elength))
if (!BFD_SEND (arch, _bfd_construct_extended_name_table,
(arch, &etable, &elength, &ename)))
return false;
if (bfd_seek (arch, (file_ptr) 0, SEEK_SET) != 0)
@@ -1516,7 +1609,7 @@ _bfd_write_archive_contents (arch)
if (makemap && hasobjects)
{
if (compute_and_write_armap (arch, elength) != true)
if (_bfd_compute_and_write_armap (arch, elength) != true)
return false;
}
@@ -1525,11 +1618,10 @@ _bfd_write_archive_contents (arch)
struct ar_hdr hdr;
memset ((char *) (&hdr), 0, sizeof (struct ar_hdr));
if (ar_padchar (arch) == '/')
sprintf (&(hdr.ar_name[0]), "//");
else
sprintf (&(hdr.ar_name[0]), "ARFILENAMES/");
sprintf (&(hdr.ar_size[0]), "%-10d", (int) elength);
strcpy (hdr.ar_name, ename);
/* Round size up to even number in archive header. */
sprintf (&(hdr.ar_size[0]), "%-10d",
(int) ((elength + 1) & ~1));
strncpy (hdr.ar_fmag, ARFMAG, 2);
for (i = 0; i < sizeof (struct ar_hdr); i++)
if (((char *) (&hdr))[i] == '\0')
@@ -1579,44 +1671,32 @@ _bfd_write_archive_contents (arch)
}
}
/* Verify the timestamp in the archive file. If it would not be
accepted by the linker, rewrite it until it would be. If
anything odd happens, break out and just return. (The Berkeley
linker checks the timestamp and refuses to read the
table-of-contents if it is >60 seconds less than the file's
modified-time. That painful hack requires this painful hack. */
tries = 1;
do
if (makemap && hasobjects)
{
/* FIXME! This kludge is to avoid adding a member to the xvec,
while generating a small patch for Adobe. FIXME! The
update_armap_timestamp function call should be in the xvec,
thus:
if (bfd_update_armap_timestamp (arch) == true) break;
^
Instead, we check whether in a BSD archive, and call
directly. */
if (arch->xvec->write_armap != bsd_write_armap)
break;
if (bsd_update_armap_timestamp (arch) == true) /* FIXME!!! Vector it */
break;
if (tries > 0)
fprintf (stderr,
"Warning: writing archive was slow: rewriting timestamp\n");
/* Verify the timestamp in the archive file. If it would not be
accepted by the linker, rewrite it until it would be. If
anything odd happens, break out and just return. (The
Berkeley linker checks the timestamp and refuses to read the
table-of-contents if it is >60 seconds less than the file's
modified-time. That painful hack requires this painful hack. */
tries = 1;
do
{
if (bfd_update_armap_timestamp (arch))
break;
(*_bfd_error_handler)
("Warning: writing archive was slow: rewriting timestamp\n");
}
while (++tries < 6);
}
while (++tries < 6);
return true;
}
/* Note that the namidx for the first symbol is 0 */
static boolean
compute_and_write_armap (arch, elength)
boolean
_bfd_compute_and_write_armap (arch, elength)
bfd *arch;
unsigned int elength;
{
@@ -1636,15 +1716,15 @@ compute_and_write_armap (arch, elength)
elength += sizeof (struct ar_hdr);
elength += elength % 2;
map = (struct orl *) malloc (orl_max * sizeof (struct orl));
map = (struct orl *) bfd_malloc (orl_max * sizeof (struct orl));
if (map == NULL)
goto no_memory_return;
goto error_return;
/* We put the symbol names on the arch obstack, and then discard
them when done. */
first_name = bfd_alloc (arch, 1);
if (first_name == NULL)
goto no_memory_return;
goto error_return;
/* Drop all the files called __.SYMDEF, we're going to make our
own */
@@ -1675,9 +1755,9 @@ compute_and_write_armap (arch, elength)
if (syms_max > 0)
free (syms);
syms_max = storage;
syms = (asymbol **) malloc ((size_t) syms_max);
syms = (asymbol **) bfd_malloc ((size_t) syms_max);
if (syms == NULL)
goto no_memory_return;
goto error_return;
}
symcount = bfd_canonicalize_symtab (current, syms);
if (symcount < 0)
@@ -1702,11 +1782,11 @@ compute_and_write_armap (arch, elength)
if (orl_count == orl_max)
{
orl_max *= 2;
new_map = ((struct orl *)
realloc ((PTR) map,
orl_max * sizeof (struct orl)));
new_map =
((struct orl *)
bfd_realloc (map, orl_max * sizeof (struct orl)));
if (new_map == (struct orl *) NULL)
goto no_memory_return;
goto error_return;
map = new_map;
}
@@ -1716,10 +1796,10 @@ compute_and_write_armap (arch, elength)
bfd_alloc (arch,
sizeof (char *)));
if (map[orl_count].name == NULL)
goto no_memory_return;
goto error_return;
*(map[orl_count].name) = bfd_alloc (arch, namelen + 1);
if (*(map[orl_count].name) == NULL)
goto no_memory_return;
goto error_return;
strcpy (*(map[orl_count].name), syms[src_count]->name);
(map[orl_count]).pos = (file_ptr) current;
(map[orl_count]).namidx = stridx;
@@ -1750,9 +1830,6 @@ compute_and_write_armap (arch, elength)
return ret;
no_memory_return:
bfd_set_error (bfd_error_no_memory);
error_return:
if (syms_max > 0)
free (syms);
@@ -1773,15 +1850,15 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
int stridx;
{
int padit = stridx & 1;
unsigned int ranlibsize = orl_count * sizeof (struct ranlib);
unsigned int ranlibsize = orl_count * BSD_SYMDEF_SIZE;
unsigned int stringsize = stridx + padit;
/* Include 8 bytes to store ranlibsize and stringsize in output. */
unsigned int mapsize = ranlibsize + stringsize + 8;
file_ptr firstreal;
bfd *current = arch->archive_head;
bfd *last_elt = current; /* last element arch seen */
int temp;
int count;
bfd_byte temp[4];
unsigned int count;
struct ar_hdr hdr;
struct stat statbuf;
unsigned int i;
@@ -1796,8 +1873,8 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
bfd_ardata (arch)->armap_datepos = (SARMAG
+ offsetof (struct ar_hdr, ar_date[0]));
sprintf (hdr.ar_date, "%ld", bfd_ardata (arch)->armap_timestamp);
sprintf (hdr.ar_uid, "%d", getuid ());
sprintf (hdr.ar_gid, "%d", getgid ());
sprintf (hdr.ar_uid, "%ld", (long) getuid ());
sprintf (hdr.ar_gid, "%ld", (long) getgid ());
sprintf (hdr.ar_size, "%-10d", (int) mapsize);
strncpy (hdr.ar_fmag, ARFMAG, 2);
for (i = 0; i < sizeof (struct ar_hdr); i++)
@@ -1806,14 +1883,13 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
if (bfd_write ((char *) &hdr, 1, sizeof (struct ar_hdr), arch)
!= sizeof (struct ar_hdr))
return false;
bfd_h_put_32 (arch, (bfd_vma) ranlibsize, (PTR) &temp);
if (bfd_write (&temp, 1, sizeof (temp), arch) != sizeof (temp))
bfd_h_put_32 (arch, (bfd_vma) ranlibsize, temp);
if (bfd_write (temp, 1, sizeof (temp), arch) != sizeof (temp))
return false;
for (count = 0; count < orl_count; count++)
{
struct symdef outs;
struct symdef *outp = &outs;
bfd_byte buf[BSD_SYMDEF_SIZE];
if (((bfd *) (map[count]).pos) != last_elt)
{
@@ -1827,15 +1903,15 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
} /* if new archive element */
last_elt = current;
bfd_h_put_32 (arch, ((map[count]).namidx), (PTR) &outs.s.string_offset);
bfd_h_put_32 (arch, firstreal, (PTR) &outs.file_offset);
if (bfd_write ((char *) outp, 1, sizeof (outs), arch) != sizeof (outs))
bfd_h_put_32 (arch, map[count].namidx, buf);
bfd_h_put_32 (arch, firstreal, buf + BSD_SYMDEF_OFFSET_SIZE);
if (bfd_write (buf, BSD_SYMDEF_SIZE, 1, arch) != BSD_SYMDEF_SIZE)
return false;
}
/* now write the strings themselves */
bfd_h_put_32 (arch, stringsize, (PTR) &temp);
if (bfd_write ((PTR) &temp, 1, sizeof (temp), arch) != sizeof (temp))
bfd_h_put_32 (arch, stringsize, temp);
if (bfd_write (temp, 1, sizeof (temp), arch) != sizeof (temp))
return false;
for (count = 0; count < orl_count; count++)
{
@@ -1862,13 +1938,13 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
Return true if the timestamp was OK, or an unusual problem happened.
Return false if we updated the timestamp. */
static boolean
bsd_update_armap_timestamp (arch)
boolean
_bfd_archive_bsd_update_armap_timestamp (arch)
bfd *arch;
{
struct stat archstat;
struct ar_hdr hdr;
int i;
unsigned int i;
/* Flush writes, get last-write timestamp from file, and compare it
to the timestamp IN the file. */
@@ -1892,6 +1968,8 @@ bsd_update_armap_timestamp (arch)
(hdr.ar_date)[i] = ' ';
/* Write it into the file. */
bfd_ardata (arch)->armap_datepos = (SARMAG
+ offsetof (struct ar_hdr, ar_date[0]));
if (bfd_seek (arch, bfd_ardata (arch)->armap_datepos, SEEK_SET) != 0
|| (bfd_write (hdr.ar_date, sizeof (hdr.ar_date), 1, arch)
!= sizeof (hdr.ar_date)))
@@ -1933,7 +2011,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
unsigned int mapsize = stringsize + ranlibsize;
file_ptr archive_member_file_ptr;
bfd *current = arch->archive_head;
int count;
unsigned int count;
struct ar_hdr hdr;
unsigned int i;
int padit = mapsize & 1;
+720
View File
@@ -0,0 +1,720 @@
/* BFD library support routines for architectures.
Copyright (C) 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Hacked by John Gilmore and Steve Chamberlain of Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include <ctype.h>
/*
SECTION
Architectures
BFD keeps one atom in a BFD describing the
architecture of the data attached to the BFD: a pointer to a
<<bfd_arch_info_type>>.
Pointers to structures can be requested independently of a BFD
so that an architecture's information can be interrogated
without access to an open BFD.
The architecture information is provided by each architecture package.
The set of default architectures is selected by the macro
<<SELECT_ARCHITECTURES>>. This is normally set up in the
@file{config/@var{target}.mt} file of your choice. If the name is not
defined, then all the architectures supported are included.
When BFD starts up, all the architectures are called with an
initialize method. It is up to the architecture back end to
insert as many items into the list of architectures as it wants to;
generally this would be one for each machine and one for the
default case (an item with a machine field of 0).
BFD's idea of an architecture is implemented in @file{archures.c}.
*/
/*
SUBSECTION
bfd_architecture
DESCRIPTION
This enum gives the object file's CPU architecture, in a
global sense---i.e., what processor family does it belong to?
Another field indicates which processor within
the family is in use. The machine gives a number which
distinguishes different versions of the architecture,
containing, for example, 2 and 3 for Intel i960 KA and i960 KB,
and 68020 and 68030 for Motorola 68020 and 68030.
.enum bfd_architecture
.{
. bfd_arch_unknown, {* File arch not known *}
. bfd_arch_obscure, {* Arch known, not one of these *}
. bfd_arch_m68k, {* Motorola 68xxx *}
. bfd_arch_vax, {* DEC Vax *}
. bfd_arch_i960, {* Intel 960 *}
. {* The order of the following is important.
. lower number indicates a machine type that
. only accepts a subset of the instructions
. available to machines with higher numbers.
. The exception is the "ca", which is
. incompatible with all other machines except
. "core". *}
.
.#define bfd_mach_i960_core 1
.#define bfd_mach_i960_ka_sa 2
.#define bfd_mach_i960_kb_sb 3
.#define bfd_mach_i960_mc 4
.#define bfd_mach_i960_xa 5
.#define bfd_mach_i960_ca 6
.#define bfd_mach_i960_jx 7
.#define bfd_mach_i960_hx 8
.
. bfd_arch_a29k, {* AMD 29000 *}
. bfd_arch_sparc, {* SPARC *}
.#define bfd_mach_sparc 1
.{* The difference between v8plus and v9 is that v9 is a true 64 bit env. *}
.#define bfd_mach_sparc_v8plus 2
.#define bfd_mach_sparc_v8plusa 3 {* with ultrasparc add'ns *}
.#define bfd_mach_sparc_v9 4
.#define bfd_mach_sparc_v9a 5 {* with ultrasparc add'ns *}
.{* Nonzero if MACH has the v9 instruction set. *}
.#define bfd_mach_sparc_v9_p(mach) ((mach) != bfd_mach_sparc)
. bfd_arch_mips, {* MIPS Rxxxx *}
. bfd_arch_i386, {* Intel 386 *}
. bfd_arch_we32k, {* AT&T WE32xxx *}
. bfd_arch_tahoe, {* CCI/Harris Tahoe *}
. bfd_arch_i860, {* Intel 860 *}
. bfd_arch_romp, {* IBM ROMP PC/RT *}
. bfd_arch_alliant, {* Alliant *}
. bfd_arch_convex, {* Convex *}
. bfd_arch_m88k, {* Motorola 88xxx *}
. bfd_arch_pyramid, {* Pyramid Technology *}
. bfd_arch_h8300, {* Hitachi H8/300 *}
.#define bfd_mach_h8300 1
.#define bfd_mach_h8300h 2
. bfd_arch_powerpc, {* PowerPC *}
. bfd_arch_rs6000, {* IBM RS/6000 *}
. bfd_arch_hppa, {* HP PA RISC *}
. bfd_arch_z8k, {* Zilog Z8000 *}
.#define bfd_mach_z8001 1
.#define bfd_mach_z8002 2
. bfd_arch_h8500, {* Hitachi H8/500 *}
. bfd_arch_sh, {* Hitachi SH *}
. bfd_arch_alpha, {* Dec Alpha *}
. bfd_arch_arm, {* Advanced Risc Machines ARM *}
. bfd_arch_ns32k, {* National Semiconductors ns32000 *}
. bfd_arch_w65, {* WDC 65816 *}
. bfd_arch_last
. };
*/
/*
SUBSECTION
bfd_arch_info
DESCRIPTION
This structure contains information on architectures for use
within BFD.
.
.typedef struct bfd_arch_info
.{
. int bits_per_word;
. int bits_per_address;
. int bits_per_byte;
. enum bfd_architecture arch;
. unsigned long mach;
. const char *arch_name;
. const char *printable_name;
. unsigned int section_align_power;
. {* true if this is the default machine for the architecture *}
. boolean the_default;
. const struct bfd_arch_info * (*compatible)
. PARAMS ((const struct bfd_arch_info *a,
. const struct bfd_arch_info *b));
.
. boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *));
.
. const struct bfd_arch_info *next;
.} bfd_arch_info_type;
*/
extern const bfd_arch_info_type bfd_a29k_arch;
extern const bfd_arch_info_type bfd_alpha_arch;
extern const bfd_arch_info_type bfd_arm_arch;
extern const bfd_arch_info_type bfd_h8300_arch;
extern const bfd_arch_info_type bfd_h8500_arch;
extern const bfd_arch_info_type bfd_hppa_arch;
extern const bfd_arch_info_type bfd_i386_arch;
extern const bfd_arch_info_type bfd_i860_arch;
extern const bfd_arch_info_type bfd_i960_arch;
extern const bfd_arch_info_type bfd_m68k_arch;
extern const bfd_arch_info_type bfd_m88k_arch;
extern const bfd_arch_info_type bfd_mips_arch;
extern const bfd_arch_info_type bfd_powerpc_arch;
extern const bfd_arch_info_type bfd_rs6000_arch;
extern const bfd_arch_info_type bfd_sh_arch;
extern const bfd_arch_info_type bfd_sparc_arch;
extern const bfd_arch_info_type bfd_vax_arch;
extern const bfd_arch_info_type bfd_we32k_arch;
extern const bfd_arch_info_type bfd_z8k_arch;
extern const bfd_arch_info_type bfd_ns32k_arch;
extern const bfd_arch_info_type bfd_w65_arch;
static const bfd_arch_info_type * const bfd_archures_list[] =
{
#ifdef SELECT_ARCHITECTURES
SELECT_ARCHITECTURES,
#else
&bfd_a29k_arch,
&bfd_alpha_arch,
&bfd_arm_arch,
&bfd_h8300_arch,
&bfd_h8500_arch,
&bfd_hppa_arch,
&bfd_i386_arch,
&bfd_i860_arch,
&bfd_i960_arch,
&bfd_m68k_arch,
&bfd_m88k_arch,
&bfd_mips_arch,
&bfd_powerpc_arch,
&bfd_rs6000_arch,
&bfd_sh_arch,
&bfd_sparc_arch,
&bfd_vax_arch,
&bfd_we32k_arch,
&bfd_z8k_arch,
&bfd_ns32k_arch,
&bfd_w65_arch,
#endif
0
};
/*
FUNCTION
bfd_printable_name
SYNOPSIS
const char *bfd_printable_name(bfd *abfd);
DESCRIPTION
Return a printable string representing the architecture and machine
from the pointer to the architecture info structure.
*/
const char *
bfd_printable_name (abfd)
bfd *abfd;
{
return abfd->arch_info->printable_name;
}
/*
FUNCTION
bfd_scan_arch
SYNOPSIS
const bfd_arch_info_type *bfd_scan_arch(const char *string);
DESCRIPTION
Figure out if BFD supports any cpu which could be described with
the name @var{string}. Return a pointer to an <<arch_info>>
structure if a machine is found, otherwise NULL.
*/
const bfd_arch_info_type *
bfd_scan_arch (string)
const char *string;
{
const bfd_arch_info_type * const *app, *ap;
/* Look through all the installed architectures */
for (app = bfd_archures_list; *app != NULL; app++)
{
for (ap = *app; ap != NULL; ap = ap->next)
{
if (ap->scan (ap, string))
return ap;
}
}
return NULL;
}
/*
FUNCTION
bfd_arch_get_compatible
SYNOPSIS
const bfd_arch_info_type *bfd_arch_get_compatible(
const bfd *abfd,
const bfd *bbfd);
DESCRIPTION
Determine whether two BFDs'
architectures and machine types are compatible. Calculates
the lowest common denominator between the two architectures
and machine types implied by the BFDs and returns a pointer to
an <<arch_info>> structure describing the compatible machine.
*/
const bfd_arch_info_type *
bfd_arch_get_compatible (abfd, bbfd)
const bfd *abfd;
const bfd *bbfd;
{
/* If either architecture is unknown, then all we can do is assume
the user knows what he's doing. */
if (abfd->arch_info->arch == bfd_arch_unknown)
return bbfd->arch_info;
if (bbfd->arch_info->arch == bfd_arch_unknown)
return abfd->arch_info;
/* Otherwise architecture-specific code has to decide. */
return abfd->arch_info->compatible (abfd->arch_info, bbfd->arch_info);
}
/*
INTERNAL_DEFINITION
bfd_default_arch_struct
DESCRIPTION
The <<bfd_default_arch_struct>> is an item of
<<bfd_arch_info_type>> which has been initialized to a fairly
generic state. A BFD starts life by pointing to this
structure, until the correct back end has determined the real
architecture of the file.
.extern const bfd_arch_info_type bfd_default_arch_struct;
*/
const bfd_arch_info_type bfd_default_arch_struct =
{
32,32,8,bfd_arch_unknown,0,"unknown","unknown",2,true,
bfd_default_compatible,
bfd_default_scan,
0,
};
/*
FUNCTION
bfd_set_arch_info
SYNOPSIS
void bfd_set_arch_info(bfd *abfd, const bfd_arch_info_type *arg);
DESCRIPTION
Set the architecture info of @var{abfd} to @var{arg}.
*/
void
bfd_set_arch_info (abfd, arg)
bfd *abfd;
const bfd_arch_info_type *arg;
{
abfd->arch_info = arg;
}
/*
INTERNAL_FUNCTION
bfd_default_set_arch_mach
SYNOPSIS
boolean bfd_default_set_arch_mach(bfd *abfd,
enum bfd_architecture arch,
unsigned long mach);
DESCRIPTION
Set the architecture and machine type in BFD @var{abfd}
to @var{arch} and @var{mach}. Find the correct
pointer to a structure and insert it into the <<arch_info>>
pointer.
*/
boolean
bfd_default_set_arch_mach (abfd, arch, mach)
bfd *abfd;
enum bfd_architecture arch;
unsigned long mach;
{
const bfd_arch_info_type * const *app, *ap;
for (app = bfd_archures_list; *app != NULL; app++)
{
for (ap = *app; ap != NULL; ap = ap->next)
{
if (ap->arch == arch
&& (ap->mach == mach
|| (mach == 0 && ap->the_default)))
{
abfd->arch_info = ap;
return true;
}
}
}
abfd->arch_info = &bfd_default_arch_struct;
bfd_set_error (bfd_error_bad_value);
return false;
}
/*
FUNCTION
bfd_get_arch
SYNOPSIS
enum bfd_architecture bfd_get_arch(bfd *abfd);
DESCRIPTION
Return the enumerated type which describes the BFD @var{abfd}'s
architecture.
*/
enum bfd_architecture
bfd_get_arch (abfd)
bfd *abfd;
{
return abfd->arch_info->arch;
}
/*
FUNCTION
bfd_get_mach
SYNOPSIS
unsigned long bfd_get_mach(bfd *abfd);
DESCRIPTION
Return the long type which describes the BFD @var{abfd}'s
machine.
*/
unsigned long
bfd_get_mach (abfd)
bfd *abfd;
{
return abfd->arch_info->mach;
}
/*
FUNCTION
bfd_arch_bits_per_byte
SYNOPSIS
unsigned int bfd_arch_bits_per_byte(bfd *abfd);
DESCRIPTION
Return the number of bits in one of the BFD @var{abfd}'s
architecture's bytes.
*/
unsigned int
bfd_arch_bits_per_byte (abfd)
bfd *abfd;
{
return abfd->arch_info->bits_per_byte;
}
/*
FUNCTION
bfd_arch_bits_per_address
SYNOPSIS
unsigned int bfd_arch_bits_per_address(bfd *abfd);
DESCRIPTION
Return the number of bits in one of the BFD @var{abfd}'s
architecture's addresses.
*/
unsigned int
bfd_arch_bits_per_address (abfd)
bfd *abfd;
{
return abfd->arch_info->bits_per_address;
}
/*
INTERNAL_FUNCTION
bfd_default_compatible
SYNOPSIS
const bfd_arch_info_type *bfd_default_compatible
(const bfd_arch_info_type *a,
const bfd_arch_info_type *b);
DESCRIPTION
The default function for testing for compatibility.
*/
const bfd_arch_info_type *
bfd_default_compatible (a,b)
const bfd_arch_info_type *a;
const bfd_arch_info_type *b;
{
if (a->arch != b->arch)
return NULL;
if (a->mach > b->mach)
return a;
if (b->mach > a->mach)
return b;
return a;
}
/*
INTERNAL_FUNCTION
bfd_default_scan
SYNOPSIS
boolean bfd_default_scan(const struct bfd_arch_info *info, const char *string);
DESCRIPTION
The default function for working out whether this is an
architecture hit and a machine hit.
*/
boolean
bfd_default_scan (info, string)
const struct bfd_arch_info *info;
const char *string;
{
const char *ptr_src;
const char *ptr_tst;
unsigned long number;
enum bfd_architecture arch;
/* First test for an exact match */
if (strcmp (string, info->printable_name) == 0)
return true;
/* See how much of the supplied string matches with the
architecture, eg the string m68k:68020 would match the 68k entry
up to the :, then we get left with the machine number */
for (ptr_src = string, ptr_tst = info->arch_name;
*ptr_src && *ptr_tst;
ptr_src++, ptr_tst++)
{
if (*ptr_src != *ptr_tst) break;
}
/* Chewed up as much of the architecture as will match, skip any
colons */
if (*ptr_src == ':')
ptr_src++;
if (*ptr_src == 0)
{
/* nothing more, then only keep this one if it is the default
machine for this architecture */
return info->the_default;
}
number = 0;
while (isdigit(*ptr_src))
{
number = number * 10 + *ptr_src - '0';
ptr_src++;
}
switch (number)
{
case 65:
arch = bfd_arch_w65;
break;
case 300:
arch = bfd_arch_h8300;
break;
case 500:
arch = bfd_arch_h8500;
break;
case 68010:
case 68020:
case 68030:
case 68040:
case 68332:
case 68050:
case 68000:
arch = bfd_arch_m68k;
break;
case 386:
case 80386:
case 486:
case 80486:
arch = bfd_arch_i386;
break;
case 29000:
arch = bfd_arch_a29k;
break;
case 8000:
arch = bfd_arch_z8k;
break;
case 32000:
arch = bfd_arch_we32k;
break;
case 860:
case 80860:
arch = bfd_arch_i860;
break;
case 960:
case 80960:
arch = bfd_arch_i960;
break;
case 2000:
case 3000:
case 4000:
case 4400:
arch = bfd_arch_mips;
break;
case 6000:
arch = bfd_arch_rs6000;
break;
default:
return false;
}
if (arch != info->arch)
return false;
if (number != info->mach)
return false;
return true;
}
/*
FUNCTION
bfd_get_arch_info
SYNOPSIS
const bfd_arch_info_type * bfd_get_arch_info(bfd *abfd);
DESCRIPTION
Return the architecture info struct in @var{abfd}.
*/
const bfd_arch_info_type *
bfd_get_arch_info (abfd)
bfd *abfd;
{
return abfd->arch_info;
}
/*
FUNCTION
bfd_lookup_arch
SYNOPSIS
const bfd_arch_info_type *bfd_lookup_arch
(enum bfd_architecture
arch,
unsigned long machine);
DESCRIPTION
Look for the architecure info structure which matches the
arguments @var{arch} and @var{machine}. A machine of 0 matches the
machine/architecture structure which marks itself as the
default.
*/
const bfd_arch_info_type *
bfd_lookup_arch (arch, machine)
enum bfd_architecture arch;
unsigned long machine;
{
const bfd_arch_info_type * const *app, *ap;
for (app = bfd_archures_list; *app != NULL; app++)
{
for (ap = *app; ap != NULL; ap = ap->next)
{
if (ap->arch == arch
&& (ap->mach == machine
|| (machine == 0 && ap->the_default)))
return ap;
}
}
return NULL;
}
/*
FUNCTION
bfd_printable_arch_mach
SYNOPSIS
const char *bfd_printable_arch_mach
(enum bfd_architecture arch, unsigned long machine);
DESCRIPTION
Return a printable string representing the architecture and
machine type.
This routine is depreciated.
*/
const char *
bfd_printable_arch_mach (arch, machine)
enum bfd_architecture arch;
unsigned long machine;
{
const bfd_arch_info_type *ap = bfd_lookup_arch (arch, machine);
if (ap)
return ap->printable_name;
return "UNKNOWN!";
}
+668
View File
@@ -0,0 +1,668 @@
/* Main header file for the bfd library -- portable access to object files.
Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Contributed by Cygnus Support.
** NOTE: bfd.h and bfd-in2.h are GENERATED files. Don't change them;
** instead, change bfd-in.h or the other BFD source files processed to
** generate these files.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* bfd.h -- The only header file required by users of the bfd library
The bfd.h file is generated from bfd-in.h and various .c files; if you
change it, your changes will probably be lost.
All the prototypes and definitions following the comment "THE FOLLOWING
IS EXTRACTED FROM THE SOURCE" are extracted from the source files for
BFD. If you change it, someone oneday will extract it from the source
again, and your changes will be lost. To save yourself from this bind,
change the definitions in the source in the bfd directory. Type "make
docs" and then "make headers" in that directory, and magically this file
will change to reflect your changes.
If you don't have the tools to perform the extraction, then you are
safe from someone on your system trampling over your header files.
You should still maintain the equivalence between the source and this
file though; every change you make to the .c file should be reflected
here. */
#ifndef __BFD_H_SEEN__
#define __BFD_H_SEEN__
#ifdef __cplusplus
extern "C" {
#endif
#include "ansidecl.h"
#include "obstack.h"
/* These two lines get substitutions done by commands in Makefile.in. */
#define BFD_VERSION "@VERSION@"
#define BFD_ARCH_SIZE @WORDSIZE@
#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
#if BFD_ARCH_SIZE >= 64
#define BFD64
#endif
#ifndef INLINE
#if __GNUC__ >= 2
#define INLINE __inline__
#else
#define INLINE
#endif
#endif
/* forward declaration */
typedef struct _bfd bfd;
/* To squelch erroneous compiler warnings ("illegal pointer
combination") from the SVR3 compiler, we would like to typedef
boolean to int (it doesn't like functions which return boolean.
Making sure they are never implicitly declared to return int
doesn't seem to help). But this file is not configured based on
the host. */
/* General rules: functions which are boolean return true on success
and false on failure (unless they're a predicate). -- bfd.doc */
/* I'm sure this is going to break something and someone is going to
force me to change it. */
/* typedef enum boolean {false, true} boolean; */
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
/* It gets worse if the host also defines a true/false enum... -sts */
/* And even worse if your compiler has built-in boolean types... -law */
#if defined (__GNUG__) && (__GNUC_MINOR__ > 5)
#define TRUE_FALSE_ALREADY_DEFINED
#endif
#ifdef MPW
/* Pre-emptive strike - get the file with the enum. */
#include <Types.h>
#define TRUE_FALSE_ALREADY_DEFINED
#endif /* MPW */
#ifndef TRUE_FALSE_ALREADY_DEFINED
typedef enum bfd_boolean {false, true} boolean;
#define BFD_TRUE_FALSE
#else
/* Use enum names that will appear nowhere else. */
typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
#endif
/* A pointer to a position in a file. */
/* FIXME: This should be using off_t from <sys/types.h>.
For now, try to avoid breaking stuff by not including <sys/types.h> here.
This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
Probably the best long-term answer is to avoid using file_ptr AND off_t
in this header file, and to handle this in the BFD implementation
rather than in its interface. */
/* typedef off_t file_ptr; */
typedef long int file_ptr;
/* Support for different sizes of target format ints and addresses.
If the type `long' is at least 64 bits, BFD_HOST_64BIT_LONG will be
set to 1 above. Otherwise, if gcc is being used, this code will
use gcc's "long long" type. Otherwise, the compilation will fail
if 64-bit targets are requested. */
#ifdef BFD64
#ifndef BFD_HOST_64_BIT
#if BFD_HOST_64BIT_LONG
#define BFD_HOST_64_BIT long
#else
#ifdef __GNUC__
#define BFD_HOST_64_BIT long long
#endif /* defined (__GNUC__) */
#endif /* ! BFD_HOST_64BIT_LONG */
#endif /* ! defined (BFD_HOST_64_BIT) */
typedef unsigned BFD_HOST_64_BIT bfd_vma;
typedef BFD_HOST_64_BIT bfd_signed_vma;
typedef unsigned BFD_HOST_64_BIT bfd_size_type;
typedef unsigned BFD_HOST_64_BIT symvalue;
#ifndef fprintf_vma
#if BFD_HOST_64BIT_LONG
#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
#else
#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
#define fprintf_vma(s,x) \
fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
#define sprintf_vma(s,x) \
sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
#endif
#endif
#else /* not BFD64 */
/* Represent a target address. Also used as a generic unsigned type
which is guaranteed to be big enough to hold any arithmetic types
we need to deal with. */
typedef unsigned long bfd_vma;
/* A generic signed type which is guaranteed to be big enough to hold any
arithmetic types we need to deal with. Can be assumed to be compatible
with bfd_vma in the same way that signed and unsigned ints are compatible
(as parameters, in assignment, etc). */
typedef long bfd_signed_vma;
typedef unsigned long symvalue;
typedef unsigned long bfd_size_type;
/* Print a bfd_vma x on stream s. */
#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
#endif /* not BFD64 */
#define printf_vma(x) fprintf_vma(stdout,x)
typedef unsigned int flagword; /* 32 bits of flags */
typedef unsigned char bfd_byte;
/** File formats */
typedef enum bfd_format {
bfd_unknown = 0, /* file format is unknown */
bfd_object, /* linker/assember/compiler output */
bfd_archive, /* object archive file */
bfd_core, /* core dump */
bfd_type_end} /* marks the end; don't use it! */
bfd_format;
/* Values that may appear in the flags field of a BFD. These also
appear in the object_flags field of the bfd_target structure, where
they indicate the set of flags used by that backend (not all flags
are meaningful for all object file formats) (FIXME: at the moment,
the object_flags values have mostly just been copied from backend
to another, and are not necessarily correct). */
/* No flags. */
#define NO_FLAGS 0x00
/* BFD contains relocation entries. */
#define HAS_RELOC 0x01
/* BFD is directly executable. */
#define EXEC_P 0x02
/* BFD has line number information (basically used for F_LNNO in a
COFF header). */
#define HAS_LINENO 0x04
/* BFD has debugging information. */
#define HAS_DEBUG 0x08
/* BFD has symbols. */
#define HAS_SYMS 0x10
/* BFD has local symbols (basically used for F_LSYMS in a COFF
header). */
#define HAS_LOCALS 0x20
/* BFD is a dynamic object. */
#define DYNAMIC 0x40
/* Text section is write protected (if D_PAGED is not set, this is
like an a.out NMAGIC file) (the linker sets this by default, but
clears it for -r or -N). */
#define WP_TEXT 0x80
/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
linker sets this by default, but clears it for -r or -n or -N). */
#define D_PAGED 0x100
/* BFD is relaxable (this means that bfd_relax_section may be able to
do something) (sometimes bfd_relax_section can do something even if
this is not set). */
#define BFD_IS_RELAXABLE 0x200
/* This may be set before writing out a BFD to request using a
traditional format. For example, this is used to request that when
writing out an a.out object the symbols not be hashed to eliminate
duplicates. */
#define BFD_TRADITIONAL_FORMAT 0x400
/* This flag indicates that the BFD contents are actually cached in
memory. If this is set, iostream points to a bfd_in_memory struct. */
#define BFD_IN_MEMORY 0x800
/* symbols and relocation */
/* A count of carsyms (canonical archive symbols). */
typedef unsigned long symindex;
/* How to perform a relocation. */
typedef const struct reloc_howto_struct reloc_howto_type;
#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
/* General purpose part of a symbol X;
target specific parts are in libcoff.h, libaout.h, etc. */
#define bfd_get_section(x) ((x)->section)
#define bfd_get_output_section(x) ((x)->section->output_section)
#define bfd_set_section(x,y) ((x)->section) = (y)
#define bfd_asymbol_base(x) ((x)->section->vma)
#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
#define bfd_asymbol_name(x) ((x)->name)
/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
#define bfd_asymbol_bfd(x) ((x)->the_bfd)
#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
/* A canonical archive symbol. */
/* This is a type pun with struct ranlib on purpose! */
typedef struct carsym {
char *name;
file_ptr file_offset; /* look here to find the file */
} carsym; /* to make these you call a carsymogen */
/* Used in generating armaps (archive tables of contents).
Perhaps just a forward definition would do? */
struct orl { /* output ranlib */
char **name; /* symbol name */
file_ptr pos; /* bfd* or file position */
int namidx; /* index into string table */
};
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
union {
struct symbol_cache_entry *sym; /* Function name */
unsigned long offset; /* Offset into section */
} u;
} alent;
/* object and core file sections */
#define align_power(addr, align) \
( ((addr) + ((1<<(align))-1)) & (-1 << (align)))
typedef struct sec *sec_ptr;
#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
#define bfd_section_name(bfd, ptr) ((ptr)->name)
#define bfd_section_size(bfd, ptr) (bfd_get_section_size_before_reloc(ptr))
#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = (boolean)true), true)
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
typedef struct stat stat_type;
typedef enum bfd_print_symbol
{
bfd_print_symbol_name,
bfd_print_symbol_more,
bfd_print_symbol_all
} bfd_print_symbol_type;
/* Information about a symbol that nm needs. */
typedef struct _symbol_info
{
symvalue value;
char type;
CONST char *name; /* Symbol name. */
unsigned char stab_type; /* Stab type. */
char stab_other; /* Stab other. */
short stab_desc; /* Stab desc. */
CONST char *stab_name; /* String for stab type. */
} symbol_info;
/* Get the name of a stabs type code. */
extern const char *bfd_get_stab_name PARAMS ((int));
/* Hash table routines. There is no way to free up a hash table. */
/* An element in the hash table. Most uses will actually use a larger
structure, and an instance of this will be the first field. */
struct bfd_hash_entry
{
/* Next entry for this hash code. */
struct bfd_hash_entry *next;
/* String being hashed. */
const char *string;
/* Hash code. This is the full hash code, not the index into the
table. */
unsigned long hash;
};
/* A hash table. */
struct bfd_hash_table
{
/* The hash array. */
struct bfd_hash_entry **table;
/* The number of slots in the hash table. */
unsigned int size;
/* A function used to create new elements in the hash table. The
first entry is itself a pointer to an element. When this
function is first invoked, this pointer will be NULL. However,
having the pointer permits a hierarchy of method functions to be
built each of which calls the function in the superclass. Thus
each function should be written to allocate a new block of memory
only if the argument is NULL. */
struct bfd_hash_entry *(*newfunc) PARAMS ((struct bfd_hash_entry *,
struct bfd_hash_table *,
const char *));
/* An obstack for this hash table. */
struct obstack memory;
};
/* Initialize a hash table. */
extern boolean bfd_hash_table_init
PARAMS ((struct bfd_hash_table *,
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
struct bfd_hash_table *,
const char *)));
/* Initialize a hash table specifying a size. */
extern boolean bfd_hash_table_init_n
PARAMS ((struct bfd_hash_table *,
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
struct bfd_hash_table *,
const char *),
unsigned int size));
/* Free up a hash table. */
extern void bfd_hash_table_free PARAMS ((struct bfd_hash_table *));
/* Look up a string in a hash table. If CREATE is true, a new entry
will be created for this string if one does not already exist. The
COPY argument must be true if this routine should copy the string
into newly allocated memory when adding an entry. */
extern struct bfd_hash_entry *bfd_hash_lookup
PARAMS ((struct bfd_hash_table *, const char *, boolean create,
boolean copy));
/* Replace an entry in a hash table. */
extern void bfd_hash_replace
PARAMS ((struct bfd_hash_table *, struct bfd_hash_entry *old,
struct bfd_hash_entry *nw));
/* Base method for creating a hash table entry. */
extern struct bfd_hash_entry *bfd_hash_newfunc
PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
const char *));
/* Grab some space for a hash table entry. */
extern PTR bfd_hash_allocate PARAMS ((struct bfd_hash_table *,
unsigned int));
/* Traverse a hash table in a random order, calling a function on each
element. If the function returns false, the traversal stops. The
INFO argument is passed to the function. */
extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *,
boolean (*) (struct bfd_hash_entry *,
PTR),
PTR info));
/* Semi-portable string concatenation in cpp.
The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors.
The problem is, "32_" is not a valid preprocessing token, and we don't
want extra underscores (e.g., "nlm_32_"). The XCAT2 macro will cause the
inner CAT macros to be evaluated first, producing still-valid pp-tokens.
Then the final concatenation can be done. (Sigh.) */
#ifndef CAT
#ifdef SABER
#define CAT(a,b) a##b
#define CAT3(a,b,c) a##b##c
#define CAT4(a,b,c,d) a##b##c##d
#else
#if defined(__STDC__) || defined(ALMOST_STDC)
#define CAT(a,b) a##b
#define CAT3(a,b,c) a##b##c
#define XCAT2(a,b) CAT(a,b)
#define CAT4(a,b,c,d) XCAT2(CAT(a,b),CAT(c,d))
#else
#define CAT(a,b) a/**/b
#define CAT3(a,b,c) a/**/b/**/c
#define CAT4(a,b,c,d) a/**/b/**/c/**/d
#endif
#endif
#endif
#define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table
/* User program access to BFD facilities */
/* Direct I/O routines, for programs which know more about the object
file than BFD does. Use higher level routines if possible. */
extern bfd_size_type bfd_read
PARAMS ((PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
extern bfd_size_type bfd_write
PARAMS ((const PTR, bfd_size_type size, bfd_size_type nitems, bfd *abfd));
extern int bfd_seek PARAMS ((bfd *abfd, file_ptr fp, int direction));
extern long bfd_tell PARAMS ((bfd *abfd));
extern int bfd_flush PARAMS ((bfd *abfd));
extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
/* Cast from const char * to char * so that caller can assign to
a char * without a warning. */
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
#define bfd_get_format(abfd) ((abfd)->format)
#define bfd_get_target(abfd) ((abfd)->xvec->name)
#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
#define bfd_header_big_endian(abfd) \
((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
#define bfd_header_little_endian(abfd) \
((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
#define bfd_get_file_flags(abfd) ((abfd)->flags)
#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
#define bfd_my_archive(abfd) ((abfd)->my_archive)
#define bfd_has_map(abfd) ((abfd)->has_armap)
#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
#define bfd_usrdata(abfd) ((abfd)->usrdata)
#define bfd_get_start_address(abfd) ((abfd)->start_address)
#define bfd_get_symcount(abfd) ((abfd)->symcount)
#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
#define bfd_count_sections(abfd) ((abfd)->section_count)
#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean)(bool)), true)
extern boolean bfd_record_phdr
PARAMS ((bfd *, unsigned long, boolean, flagword, boolean, bfd_vma,
boolean, boolean, unsigned int, struct sec **));
/* Byte swapping routines. */
bfd_vma bfd_getb64 PARAMS ((const unsigned char *));
bfd_vma bfd_getl64 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getb_signed_64 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getl_signed_64 PARAMS ((const unsigned char *));
bfd_vma bfd_getb32 PARAMS ((const unsigned char *));
bfd_vma bfd_getl32 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getb_signed_32 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getl_signed_32 PARAMS ((const unsigned char *));
bfd_vma bfd_getb16 PARAMS ((const unsigned char *));
bfd_vma bfd_getl16 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getb_signed_16 PARAMS ((const unsigned char *));
bfd_signed_vma bfd_getl_signed_16 PARAMS ((const unsigned char *));
void bfd_putb64 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl64 PARAMS ((bfd_vma, unsigned char *));
void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putb16 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl16 PARAMS ((bfd_vma, unsigned char *));
/* Externally visible ECOFF routines. */
#if defined(__STDC__) || defined(ALMOST_STDC)
struct ecoff_debug_info;
struct ecoff_debug_swap;
struct ecoff_extr;
struct symbol_cache_entry;
struct bfd_link_info;
struct bfd_link_hash_entry;
#endif
extern bfd_vma bfd_ecoff_get_gp_value PARAMS ((bfd * abfd));
extern boolean bfd_ecoff_set_gp_value PARAMS ((bfd *abfd, bfd_vma gp_value));
extern boolean bfd_ecoff_set_regmasks
PARAMS ((bfd *abfd, unsigned long gprmask, unsigned long fprmask,
unsigned long *cprmask));
extern PTR bfd_ecoff_debug_init
PARAMS ((bfd *output_bfd, struct ecoff_debug_info *output_debug,
const struct ecoff_debug_swap *output_swap,
struct bfd_link_info *));
extern void bfd_ecoff_debug_free
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
const struct ecoff_debug_swap *output_swap,
struct bfd_link_info *));
extern boolean bfd_ecoff_debug_accumulate
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
const struct ecoff_debug_swap *output_swap,
bfd *input_bfd, struct ecoff_debug_info *input_debug,
const struct ecoff_debug_swap *input_swap,
struct bfd_link_info *));
extern boolean bfd_ecoff_debug_accumulate_other
PARAMS ((PTR handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
struct bfd_link_info *));
extern boolean bfd_ecoff_debug_externals
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
const struct ecoff_debug_swap *swap,
boolean relocateable,
boolean (*get_extr) (struct symbol_cache_entry *,
struct ecoff_extr *),
void (*set_index) (struct symbol_cache_entry *,
bfd_size_type)));
extern boolean bfd_ecoff_debug_one_external
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
const struct ecoff_debug_swap *swap,
const char *name, struct ecoff_extr *esym));
extern bfd_size_type bfd_ecoff_debug_size
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
const struct ecoff_debug_swap *swap));
extern boolean bfd_ecoff_write_debug
PARAMS ((bfd *abfd, struct ecoff_debug_info *debug,
const struct ecoff_debug_swap *swap, file_ptr where));
extern boolean bfd_ecoff_write_accumulated_debug
PARAMS ((PTR handle, bfd *abfd, struct ecoff_debug_info *debug,
const struct ecoff_debug_swap *swap,
struct bfd_link_info *info, file_ptr where));
extern boolean bfd_mips_ecoff_create_embedded_relocs
PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
char **));
/* Externally visible ELF routines. */
struct bfd_link_needed_list
{
struct bfd_link_needed_list *next;
bfd *by;
const char *name;
};
extern boolean bfd_elf32_record_link_assignment
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
extern boolean bfd_elf64_record_link_assignment
PARAMS ((bfd *, struct bfd_link_info *, const char *, boolean));
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
PARAMS ((bfd *, struct bfd_link_info *));
extern boolean bfd_elf32_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
extern boolean bfd_elf64_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));
/* SunOS shared library support routines for the linker. */
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
PARAMS ((bfd *, struct bfd_link_info *));
extern boolean bfd_sunos_record_link_assignment
PARAMS ((bfd *, struct bfd_link_info *, const char *));
extern boolean bfd_sunos_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *, struct sec **, struct sec **,
struct sec **));
/* Linux shared library support routines for the linker. */
extern boolean bfd_i386linux_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
extern boolean bfd_m68klinux_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
/* mmap hacks */
struct _bfd_window_internal;
typedef struct _bfd_window_internal bfd_window_internal;
typedef struct _bfd_window {
/* What the user asked for. */
PTR data;
bfd_size_type size;
/* The actual window used by BFD. Small user-requested read-only
regions sharing a page may share a single window into the object
file. Read-write versions shouldn't until I've fixed things to
keep track of which portions have been claimed by the
application; don't want to give the same region back when the
application wants two writable copies! */
struct _bfd_window_internal *i;
} bfd_window;
extern void bfd_init_window PARAMS ((bfd_window *));
extern void bfd_free_window PARAMS ((bfd_window *));
extern boolean bfd_get_file_window
PARAMS ((bfd *, file_ptr, bfd_size_type, bfd_window *, boolean));
/* XCOFF support routines for the linker. */
extern boolean bfd_xcoff_link_record_set
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
bfd_size_type));
extern boolean bfd_xcoff_import_symbol
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
bfd_vma, const char *, const char *, const char *));
extern boolean bfd_xcoff_export_symbol
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *,
boolean));
extern boolean bfd_xcoff_link_count_reloc
PARAMS ((bfd *, struct bfd_link_info *, const char *));
extern boolean bfd_xcoff_record_link_assignment
PARAMS ((bfd *, struct bfd_link_info *, const char *));
extern boolean bfd_xcoff_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *,
unsigned long, unsigned long, unsigned long, boolean,
int, boolean, boolean, struct sec **));
/* And more from the source. */
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+348
View File
@@ -0,0 +1,348 @@
/* BFD back-end for binary objects.
Copyright 1994 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This is a BFD backend which may be used to write binary objects.
It may only be used for output, not input. The intention is that
this may be used as an output format for objcopy in order to
generate raw binary data.
This is very simple. The only complication is that the real data
will start at some address X, and in some cases we will not want to
include X zeroes just to get to that point. Since the start
address is not meaningful for this object file format, we use it
instead to indicate the number of zeroes to skip at the start of
the file. objcopy cooperates by specially setting the start
address to zero by default. */
#include <ctype.h>
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
/* Any bfd we create by reading a binary file has three symbols:
a start symbol, an end symbol, and an absolute length symbol. */
#define BIN_SYMS 3
static boolean binary_mkobject PARAMS ((bfd *));
static const bfd_target *binary_object_p PARAMS ((bfd *));
static boolean binary_get_section_contents
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
static long binary_get_symtab_upper_bound PARAMS ((bfd *));
static char *mangle_name PARAMS ((bfd *, char *));
static long binary_get_symtab PARAMS ((bfd *, asymbol **));
static asymbol *binary_make_empty_symbol PARAMS ((bfd *));
static void binary_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *));
static boolean binary_set_section_contents
PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
static int binary_sizeof_headers PARAMS ((bfd *, boolean));
/* Create a binary object. Invoked via bfd_set_format. */
static boolean
binary_mkobject (abfd)
bfd *abfd;
{
return true;
}
/* Any file may be considered to be a binary file, provided the target
was not defaulted. That is, it must be explicitly specified as
being binary. */
static const bfd_target *
binary_object_p (abfd)
bfd *abfd;
{
struct stat statbuf;
asection *sec;
if (abfd->target_defaulted)
{
bfd_set_error (bfd_error_wrong_format);
return NULL;
}
abfd->symcount = BIN_SYMS;
/* Find the file size. */
if (bfd_stat (abfd, &statbuf) < 0)
{
bfd_set_error (bfd_error_system_call);
return NULL;
}
/* One data section. */
sec = bfd_make_section (abfd, ".data");
if (sec == NULL)
return NULL;
sec->flags = SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS;
sec->vma = 0;
sec->_raw_size = statbuf.st_size;
sec->filepos = 0;
abfd->tdata.any = (PTR) sec;
return abfd->xvec;
}
#define binary_close_and_cleanup _bfd_generic_close_and_cleanup
#define binary_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
#define binary_new_section_hook _bfd_generic_new_section_hook
/* Get contents of the only section. */
static boolean
binary_get_section_contents (abfd, section, location, offset, count)
bfd *abfd;
asection *section;
PTR location;
file_ptr offset;
bfd_size_type count;
{
if (bfd_seek (abfd, offset, SEEK_SET) != 0
|| bfd_read (location, 1, count, abfd) != count)
return false;
return true;
}
/* Return the amount of memory needed to read the symbol table. */
static long
binary_get_symtab_upper_bound (abfd)
bfd *abfd;
{
return (BIN_SYMS + 1) * sizeof (asymbol *);
}
/* Create a symbol name based on the bfd's filename. */
static char *
mangle_name (abfd, suffix)
bfd *abfd;
char *suffix;
{
int size;
char *buf;
char *p;
size = (strlen (bfd_get_filename (abfd))
+ strlen (suffix)
+ sizeof "_binary__");
buf = (char *) bfd_alloc (abfd, size);
if (buf == NULL)
return "";
sprintf (buf, "_binary_%s_%s", bfd_get_filename (abfd), suffix);
/* Change any non-alphanumeric characters to underscores. */
for (p = buf; *p; p++)
if (! isalnum (*p))
*p = '_';
return buf;
}
/* Return the symbol table. */
static long
binary_get_symtab (abfd, alocation)
bfd *abfd;
asymbol **alocation;
{
asection *sec = (asection *) abfd->tdata.any;
asymbol *syms;
unsigned int i;
syms = (asymbol *) bfd_alloc (abfd, BIN_SYMS * sizeof (asymbol));
if (syms == NULL)
return false;
/* Start symbol. */
syms[0].the_bfd = abfd;
syms[0].name = mangle_name (abfd, "start");
syms[0].value = 0;
syms[0].flags = BSF_GLOBAL;
syms[0].section = sec;
syms[0].udata.p = NULL;
/* End symbol. */
syms[1].the_bfd = abfd;
syms[1].name = mangle_name (abfd, "end");
syms[1].value = sec->_raw_size;
syms[1].flags = BSF_GLOBAL;
syms[1].section = sec;
syms[1].udata.p = NULL;
/* Size symbol. */
syms[2].the_bfd = abfd;
syms[2].name = mangle_name (abfd, "size");
syms[2].value = sec->_raw_size;
syms[2].flags = BSF_GLOBAL;
syms[2].section = bfd_abs_section_ptr;
syms[2].udata.p = NULL;
for (i = 0; i < BIN_SYMS; i++)
*alocation++ = syms++;
*alocation = NULL;
return BIN_SYMS;
}
/* Make an empty symbol. */
static asymbol *
binary_make_empty_symbol (abfd)
bfd *abfd;
{
return (asymbol *) bfd_alloc (abfd, sizeof (asymbol));
}
#define binary_print_symbol _bfd_nosymbols_print_symbol
/* Get information about a symbol. */
static void
binary_get_symbol_info (ignore_abfd, symbol, ret)
bfd *ignore_abfd;
asymbol *symbol;
symbol_info *ret;
{
bfd_symbol_info (symbol, ret);
}
#define binary_bfd_is_local_label bfd_generic_is_local_label
#define binary_get_lineno _bfd_nosymbols_get_lineno
#define binary_find_nearest_line _bfd_nosymbols_find_nearest_line
#define binary_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
#define binary_read_minisymbols _bfd_generic_read_minisymbols
#define binary_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
#define binary_get_reloc_upper_bound \
((long (*) PARAMS ((bfd *, asection *))) bfd_0l)
#define binary_canonicalize_reloc \
((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) bfd_0l)
#define binary_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
/* Set the architecture of a binary file. */
#define binary_set_arch_mach _bfd_generic_set_arch_mach
/* Write section contents of a binary file. */
static boolean
binary_set_section_contents (abfd, sec, data, offset, size)
bfd *abfd;
asection *sec;
PTR data;
file_ptr offset;
bfd_size_type size;
{
if (! abfd->output_has_begun)
{
bfd_vma low;
asection *s;
/* The lowest section VMA sets the virtual address of the start
of the file. We use the set the file position of all the
sections. */
low = abfd->sections->vma;
for (s = abfd->sections->next; s != NULL; s = s->next)
if (s->vma < low)
low = s->vma;
for (s = abfd->sections; s != NULL; s = s->next)
s->filepos = s->vma - low;
abfd->output_has_begun = true;
}
return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
}
/* No space is required for header information. */
static int
binary_sizeof_headers (abfd, exec)
bfd *abfd;
boolean exec;
{
return 0;
}
#define binary_bfd_get_relocated_section_contents \
bfd_generic_get_relocated_section_contents
#define binary_bfd_relax_section bfd_generic_relax_section
#define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
#define binary_bfd_link_add_symbols _bfd_generic_link_add_symbols
#define binary_bfd_final_link _bfd_generic_final_link
#define binary_bfd_link_split_section _bfd_generic_link_split_section
#define binary_get_section_contents_in_window \
_bfd_generic_get_section_contents_in_window
const bfd_target binary_vec =
{
"binary", /* name */
bfd_target_unknown_flavour, /* flavour */
BFD_ENDIAN_UNKNOWN, /* byteorder */
BFD_ENDIAN_UNKNOWN, /* header_byteorder */
EXEC_P, /* object_flags */
(SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE | SEC_DATA
| SEC_ROM | SEC_HAS_CONTENTS), /* section_flags */
0, /* symbol_leading_char */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{ /* bfd_check_format */
_bfd_dummy_target,
binary_object_p, /* bfd_check_format */
_bfd_dummy_target,
_bfd_dummy_target,
},
{ /* bfd_set_format */
bfd_false,
binary_mkobject,
bfd_false,
bfd_false,
},
{ /* bfd_write_contents */
bfd_false,
bfd_true,
bfd_false,
bfd_false,
},
BFD_JUMP_TABLE_GENERIC (binary),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
BFD_JUMP_TABLE_SYMBOLS (binary),
BFD_JUMP_TABLE_RELOCS (binary),
BFD_JUMP_TABLE_WRITE (binary),
BFD_JUMP_TABLE_LINK (binary),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL
};
File diff suppressed because it is too large. Load diff
@@ -1,5 +1,5 @@
/* BFD library -- caching of file descriptors.
Copyright 1990, 1991, 1992, 1994 Free Software Foundation, Inc.
Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
This file is part of BFD, the Binary File Descriptor library.
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
SECTION
@@ -31,7 +31,7 @@ SECTION
<<bfd_cache_lookup>>, which runs around and makes sure that
the required BFD is open. If not, then it chooses a file to
close, closes it and opens the one wanted, returning its file
handle.
handle.
*/
@@ -78,19 +78,19 @@ bfd *bfd_last_cache;
/*
INTERNAL_FUNCTION
bfd_cache_lookup
DESCRIPTION
Check to see if the required BFD is the same as the last one
looked up. If so, then it can use the stream in the BFD with
impunity, since it can't have changed since the last lookup;
otherwise, it has to perform the complicated lookup function.
.#define bfd_cache_lookup(x) \
. ((x)==bfd_last_cache? \
. (FILE*)(bfd_last_cache->iostream): \
. bfd_cache_lookup_worker(x))
*/
/* Insert a BFD into the cache. */
@@ -235,7 +235,8 @@ boolean
bfd_cache_close (abfd)
bfd *abfd;
{
if (abfd->iostream == NULL)
if (abfd->iostream == NULL
|| (abfd->flags & BFD_IN_MEMORY) != 0)
return true;
return bfd_cache_delete (abfd);
@@ -272,20 +273,20 @@ bfd_open_file (abfd)
{
case read_direction:
case no_direction:
abfd->iostream = (char *) fopen (abfd->filename, FOPEN_RB);
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_RB);
break;
case both_direction:
case write_direction:
if (abfd->opened_once == true)
{
abfd->iostream = (char *) fopen (abfd->filename, FOPEN_RUB);
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_RUB);
if (abfd->iostream == NULL)
abfd->iostream = (char *) fopen (abfd->filename, FOPEN_WUB);
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WUB);
}
else
{
/*open for creat */
abfd->iostream = (char *) fopen (abfd->filename, FOPEN_WB);
abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WB);
abfd->opened_once = true;
}
break;
@@ -312,14 +313,17 @@ DESCRIPTION
quick answer. Find a file descriptor for @var{abfd}. If
necessary, it open it. If there are already more than
<<BFD_CACHE_MAX_OPEN>> files open, it tries to close one first, to
avoid running out of file descriptors.
avoid running out of file descriptors.
*/
FILE *
bfd_cache_lookup_worker (abfd)
bfd *abfd;
{
if (abfd->my_archive)
if ((abfd->flags & BFD_IN_MEMORY) != 0)
abort ();
if (abfd->my_archive)
abfd = abfd->my_archive;
if (abfd->iostream != NULL)
+31
View File
@@ -0,0 +1,31 @@
/* BFD back-end for Intel 386 COFF LynxOS files.
Copyright 1993, 1994 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#define TARGET_SYM i386lynx_coff_vec
#define TARGET_NAME "coff-i386-lynx"
#define LYNXOS
#define COFF_LONG_FILENAMES
#include "coff-i386.c"
+223
View File
@@ -0,0 +1,223 @@
/* BFD back-end for Motorola M68K COFF LynxOS files.
Copyright 1993, 1994, 1995 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_SYM m68klynx_coff_vec
#define TARGET_NAME "coff-m68k-lynx"
#define LYNXOS
#define COFF_LONG_FILENAMES
#define _bfd_m68kcoff_howto_table _bfd_m68klynx_howto_table
#define _bfd_m68kcoff_rtype2howto _bfd_m68klynx_rtype2howto
#define _bfd_m68kcoff_howto2rtype _bfd_m68klynx_howto2rtype
#define _bfd_m68kcoff_reloc_type_lookup _bfd_m68klynx_reloc_type_lookup
#define LYNX_SPECIAL_FN _bfd_m68klynx_special_fn
#include "bfd.h"
#include "sysdep.h"
#ifdef ANSI_PROTOTYPES
struct internal_reloc;
struct coff_link_hash_entry;
struct internal_syment;
#endif
static bfd_reloc_status_type _bfd_m68klynx_special_fn
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static reloc_howto_type *coff_m68k_lynx_rtype_to_howto
PARAMS ((bfd *, asection *, struct internal_reloc *,
struct coff_link_hash_entry *, struct internal_syment *,
bfd_vma *));
/* For some reason when using m68k COFF the value stored in the .text
section for a reference to a common symbol is the value itself plus
any desired offset. (taken from work done by Ian Taylor, Cygnus Support,
for I386 COFF). */
/* If we are producing relocateable output, we need to do some
adjustments to the object file that are not done by the
bfd_perform_relocation function. This function is called by every
reloc type to make any required adjustments. */
static bfd_reloc_status_type
_bfd_m68klynx_special_fn (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
symvalue diff;
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
if (bfd_is_com_section (symbol->section))
{
/* We are relocating a common symbol. The current value in the
object file is ORIG + OFFSET, where ORIG is the value of the
common symbol as seen by the object file when it was compiled
(this may be zero if the symbol was undefined) and OFFSET is
the offset into the common symbol (normally zero, but may be
non-zero when referring to a field in a common structure).
ORIG is the negative of reloc_entry->addend, which is set by
the CALC_ADDEND macro below. We want to replace the value in
the object file with NEW + OFFSET, where NEW is the value of
the common symbol which we are going to put in the final
object file. NEW is symbol->value. */
diff = symbol->value + reloc_entry->addend;
}
else
{
/* For some reason bfd_perform_relocation always effectively
ignores the addend for a COFF target when producing
relocateable output. This seems to be always wrong for 386
COFF, so we handle the addend here instead. */
diff = reloc_entry->addend;
}
#define DOIT(x) \
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
switch (howto->size)
{
case 0:
{
char x = bfd_get_8 (abfd, addr);
DOIT (x);
bfd_put_8 (abfd, x, addr);
}
break;
case 1:
{
short x = bfd_get_16 (abfd, addr);
DOIT (x);
bfd_put_16 (abfd, x, addr);
}
break;
case 2:
{
long x = bfd_get_32 (abfd, addr);
DOIT (x);
bfd_put_32 (abfd, x, addr);
}
break;
default:
abort ();
}
}
/* Now let bfd_perform_relocation finish everything up. */
return bfd_reloc_continue;
}
/* Compute the addend of a reloc. If the reloc is to a common symbol,
the object file contains the value of the common symbol. By the
time this is called, the linker may be using a different symbol
from a different object file with a different value. Therefore, we
hack wildly to locate the original symbol from this file so that we
can make the correct adjustment. This macro sets coffsym to the
symbol from the original file, and uses it to set the addend value
correctly. If this is not a common symbol, the usual addend
calculation is done, except that an additional tweak is needed for
PC relative relocs.
FIXME: This macro refers to symbols and asect; these are from the
calling function, not the macro arguments. */
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
{ \
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
coffsym = (obj_symbols (abfd) \
+ (cache_ptr->sym_ptr_ptr - symbols)); \
else if (ptr) \
coffsym = coff_symbol_from (abfd, ptr); \
if (coffsym != (coff_symbol_type *) NULL \
&& coffsym->native->u.syment.n_scnum == 0) \
cache_ptr->addend = - coffsym->native->u.syment.n_value; \
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
&& ptr->section != (asection *) NULL) \
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
else \
cache_ptr->addend = 0; \
if (ptr && (reloc.r_type == R_PCRBYTE \
|| reloc.r_type == R_PCRWORD \
|| reloc.r_type == R_PCRLONG)) \
cache_ptr->addend += asect->vma; \
}
#define coff_rtype_to_howto coff_m68k_lynx_rtype_to_howto
#include "coff-m68k.c"
/* coff-m68k.c uses the special COFF backend linker. We need to
adjust common symbols.
We can't define this function until after we have included
coff-m68k.c, because it uses RTYPE2HOWTO. */
/*ARGSUSED*/
static reloc_howto_type *
coff_m68k_lynx_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
bfd *abfd;
asection *sec;
struct internal_reloc *rel;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma *addendp;
{
arelent relent;
reloc_howto_type *howto;
RTYPE2HOWTO (&relent, rel);
howto = relent.howto;
if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
{
/* This is a common symbol. The section contents include the
size (sym->n_value) as an addend. The relocate_section
function will be adding in the final value of the symbol. We
need to subtract out the current size in order to get the
correct result. */
BFD_ASSERT (h != NULL);
*addendp -= sym->n_value;
}
/* If the output symbol is common (in which case this must be a
relocateable link), we need to add in the final size of the
common symbol. */
if (h != NULL && h->root.type == bfd_link_hash_common)
*addendp += h->root.u.c.size;
return howto;
}
+28
View File
@@ -0,0 +1,28 @@
/* BFD back-end for Sparc COFF LynxOS files.
Copyright 1993 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_SYM sparclynx_coff_vec
#define TARGET_NAME "coff-sparc-lynx"
#define LYNXOS
#define COFF_LONG_FILENAMES
#include "coff-sparc.c"
+313
View File
@@ -0,0 +1,313 @@
/* BFD back-end for CISCO crash dumps.
Copyright 1994 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
/* core_file_failing_signal returns a host signal (this probably should
be fixed). */
#include <signal.h>
#define CRASH_INFO (0xffc)
#define CRASH_MAGIC 0xdead1234
typedef enum {
CRASH_REASON_NOTCRASHED = 0,
CRASH_REASON_EXCEPTION = 1,
CRASH_REASON_CORRUPT = 2,
} crashreason;
struct crashinfo_external
{
char magic[4]; /* Magic number */
char version[4]; /* Version number */
char reason[4]; /* Crash reason */
char cpu_vector[4]; /* CPU vector for exceptions */
char registers[4]; /* Pointer to saved registers */
char rambase[4]; /* Base of RAM (not in V1 crash info) */
};
struct cisco_core_struct
{
int sig;
};
static const bfd_target *
cisco_core_file_p (abfd)
bfd *abfd;
{
char buf[4];
unsigned int crashinfo_offset;
struct crashinfo_external crashinfo;
int nread;
unsigned int rambase;
sec_ptr asect;
struct stat statbuf;
if (bfd_seek (abfd, CRASH_INFO, SEEK_SET) != 0)
return NULL;
nread = bfd_read (buf, 1, 4, abfd);
if (nread != 4)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return NULL;
}
crashinfo_offset = bfd_get_32 (abfd, buf);
if (bfd_seek (abfd, crashinfo_offset, SEEK_SET) != 0)
return NULL;
nread = bfd_read (&crashinfo, 1, sizeof (crashinfo), abfd);
if (nread != sizeof (crashinfo))
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return NULL;
}
if (bfd_stat (abfd, &statbuf) < 0)
{
bfd_set_error (bfd_error_system_call);
return NULL;
}
if (bfd_get_32 (abfd, crashinfo.magic) != CRASH_MAGIC)
{
bfd_set_error (bfd_error_wrong_format);
return NULL;
}
switch (bfd_get_32 (abfd, crashinfo.version))
{
case 0:
bfd_set_error (bfd_error_wrong_format);
return NULL;
case 1:
rambase = 0;
break;
default:
case 2:
rambase = bfd_get_32 (abfd, crashinfo.rambase);
break;
}
/* OK, we believe you. You're a core file. */
abfd->tdata.cisco_core_data =
((struct cisco_core_struct *)
bfd_zmalloc (sizeof (struct cisco_core_struct)));
if (abfd->tdata.cisco_core_data == NULL)
return NULL;
switch ((crashreason) bfd_get_32 (abfd, crashinfo.reason))
{
case CRASH_REASON_NOTCRASHED:
/* Crash file probably came from write core. */
abfd->tdata.cisco_core_data->sig = 0;
break;
case CRASH_REASON_CORRUPT:
/* The crash context area was corrupt -- proceed with caution.
We have no way of passing this information back to the caller. */
abfd->tdata.cisco_core_data->sig = 0;
break;
case CRASH_REASON_EXCEPTION:
/* Crash occured due to CPU exception. */
/* This is 68k-specific; for MIPS we'll need to interpret
cpu_vector differently based on the target configuration
(since CISCO core files don't seem to have the processor
encoded in them). */
switch (bfd_get_32 (abfd, crashinfo.cpu_vector))
{
/* bus error */
case 2 : abfd->tdata.cisco_core_data->sig = SIGBUS; break;
/* address error */
case 3 : abfd->tdata.cisco_core_data->sig = SIGBUS; break;
/* illegal instruction */
case 4 : abfd->tdata.cisco_core_data->sig = SIGILL; break;
/* zero divide */
case 5 : abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* chk instruction */
case 6 : abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* trapv instruction */
case 7 : abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* privilege violation */
case 8 : abfd->tdata.cisco_core_data->sig = SIGSEGV; break;
/* trace trap */
case 9 : abfd->tdata.cisco_core_data->sig = SIGTRAP; break;
/* line 1010 emulator */
case 10: abfd->tdata.cisco_core_data->sig = SIGILL; break;
/* line 1111 emulator */
case 11: abfd->tdata.cisco_core_data->sig = SIGILL; break;
/* Coprocessor protocol violation. Using a standard MMU or FPU
this cannot be triggered by software. Call it a SIGBUS. */
case 13: abfd->tdata.cisco_core_data->sig = SIGBUS; break;
/* interrupt */
case 31: abfd->tdata.cisco_core_data->sig = SIGINT; break;
/* breakpoint */
case 33: abfd->tdata.cisco_core_data->sig = SIGTRAP; break;
/* floating point err */
case 48: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* floating point err */
case 49: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* zero divide */
case 50: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* underflow */
case 51: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* operand error */
case 52: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* overflow */
case 53: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
/* NAN */
case 54: abfd->tdata.cisco_core_data->sig = SIGFPE; break;
default:
/* "software generated"*/
abfd->tdata.cisco_core_data->sig = SIGEMT;
}
break;
default:
/* Unknown crash reason. */
abfd->tdata.cisco_core_data->sig = 0;
break;
}
abfd->sections = NULL;
abfd->section_count = 0;
asect = (asection *) bfd_zmalloc (sizeof (asection));
if (asect == NULL)
goto error_return;
asect->name = ".reg";
asect->flags = SEC_HAS_CONTENTS;
/* This can be bigger than the real size. Set it to the size of the whole
core file. */
asect->_raw_size = statbuf.st_size;
asect->vma = 0;
asect->filepos = bfd_get_32 (abfd, crashinfo.registers) - rambase;
asect->next = abfd->sections;
abfd->sections = asect;
++abfd->section_count;
/* There is only one section containing data from the target system's RAM.
We call it .data. */
asect = (asection *) bfd_zmalloc (sizeof (asection));
if (asect == NULL)
goto error_return;
asect->name = ".data";
asect->flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
/* The size of memory is the size of the core file itself. */
asect->_raw_size = statbuf.st_size;
asect->vma = rambase;
asect->filepos = 0;
asect->next = abfd->sections;
abfd->sections = asect;
++abfd->section_count;
return abfd->xvec;
error_return:
{
sec_ptr nextsect;
for (asect = abfd->sections; asect != NULL;)
{
nextsect = asect->next;
free (asect);
asect = nextsect;
}
free (abfd->tdata.cisco_core_data);
return NULL;
}
}
char *
cisco_core_file_failing_command (abfd)
bfd *abfd;
{
return NULL;
}
int
cisco_core_file_failing_signal (abfd)
bfd *abfd;
{
return abfd->tdata.cisco_core_data->sig;
}
boolean
cisco_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd;
bfd *exec_bfd;
{
return true;
}
const bfd_target cisco_core_vec =
{
"trad-core",
bfd_target_unknown_flavour,
BFD_ENDIAN_BIG, /* target byte order */
BFD_ENDIAN_BIG, /* target headers byte order */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
0, /* symbol prefix */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{ /* bfd_check_format */
_bfd_dummy_target, /* unknown format */
_bfd_dummy_target, /* object file */
_bfd_dummy_target, /* archive */
cisco_core_file_p /* a core file */
},
{ /* bfd_set_format */
bfd_false, bfd_false,
bfd_false, bfd_false
},
{ /* bfd_write_contents */
bfd_false, bfd_false,
bfd_false, bfd_false
},
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (cisco),
BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
BFD_JUMP_TABLE_WRITE (_bfd_generic),
BFD_JUMP_TABLE_LINK (_bfd_nolink),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
(PTR) 0 /* backend_data */
};
+641
View File
@@ -0,0 +1,641 @@
/* BFD back-end for AMD 29000 COFF binaries.
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Contributed by David Wood at New York University 7/8/91.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define A29K 1
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/a29k.h"
#include "coff/internal.h"
#include "libcoff.h"
static long get_symbol_value PARAMS ((asymbol *));
static bfd_reloc_status_type a29k_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static boolean coff_a29k_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
struct internal_reloc *, struct internal_syment *, asection **));
static boolean coff_a29k_adjust_symndx
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
struct internal_reloc *, boolean *));
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
#define INSERT_HWORD(WORD,HWORD) \
(((WORD) & 0xff00ff00) | (((HWORD) & 0xff00) << 8) | ((HWORD)& 0xff))
#define EXTRACT_HWORD(WORD) \
((((WORD) & 0x00ff0000) >> 8) | ((WORD)& 0xff))
#define SIGN_EXTEND_HWORD(HWORD) \
((HWORD) & 0x8000 ? (HWORD)|(~0xffffL) : (HWORD))
/* Provided the symbol, returns the value reffed */
static long
get_symbol_value (symbol)
asymbol *symbol;
{
long relocation = 0;
if (bfd_is_com_section (symbol->section))
{
relocation = 0;
}
else
{
relocation = symbol->value +
symbol->section->output_section->vma +
symbol->section->output_offset;
}
return(relocation);
}
/* this function is in charge of performing all the 29k relocations */
static bfd_reloc_status_type
a29k_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd,
error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol_in;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
/* the consth relocation comes in two parts, we have to remember
the state between calls, in these variables */
static boolean part1_consth_active = false;
static unsigned long part1_consth_value;
unsigned long insn;
unsigned long sym_value;
unsigned long unsigned_value;
unsigned short r_type;
long signed_value;
unsigned long addr = reloc_entry->address ; /*+ input_section->vma*/
bfd_byte *hit_data =addr + (bfd_byte *)(data);
r_type = reloc_entry->howto->type;
if (output_bfd) {
/* Partial linking - do nothing */
reloc_entry->address += input_section->output_offset;
return bfd_reloc_ok;
}
if (symbol_in != NULL
&& bfd_is_und_section (symbol_in->section))
{
/* Keep the state machine happy in case we're called again */
if (r_type == R_IHIHALF)
{
part1_consth_active = true;
part1_consth_value = 0;
}
return(bfd_reloc_undefined);
}
if ((part1_consth_active) && (r_type != R_IHCONST))
{
part1_consth_active = false;
*error_message = (char *) "Missing IHCONST";
return(bfd_reloc_dangerous);
}
sym_value = get_symbol_value(symbol_in);
switch (r_type)
{
case R_IREL:
insn = bfd_get_32(abfd, hit_data);
/* Take the value in the field and sign extend it */
signed_value = EXTRACT_HWORD(insn);
signed_value = SIGN_EXTEND_HWORD(signed_value);
signed_value <<= 2;
/* See the note on the R_IREL reloc in coff_a29k_relocate_section. */
if (signed_value == - (long) reloc_entry->address)
signed_value = 0;
signed_value += sym_value + reloc_entry->addend;
if ((signed_value & ~0x3ffff) == 0)
{ /* Absolute jmp/call */
insn |= (1<<24); /* Make it absolute */
/* FIXME: Should we change r_type to R_IABS */
}
else
{
/* Relative jmp/call, so subtract from the value the
address of the place we're coming from */
signed_value -= (reloc_entry->address
+ input_section->output_section->vma
+ input_section->output_offset);
if (signed_value>0x1ffff || signed_value<-0x20000)
return(bfd_reloc_overflow);
}
signed_value >>= 2;
insn = INSERT_HWORD(insn, signed_value);
bfd_put_32(abfd, insn ,hit_data);
break;
case R_ILOHALF:
insn = bfd_get_32(abfd, hit_data);
unsigned_value = EXTRACT_HWORD(insn);
unsigned_value += sym_value + reloc_entry->addend;
insn = INSERT_HWORD(insn, unsigned_value);
bfd_put_32(abfd, insn, hit_data);
break;
case R_IHIHALF:
insn = bfd_get_32(abfd, hit_data);
/* consth, part 1
Just get the symbol value that is referenced */
part1_consth_active = true;
part1_consth_value = sym_value + reloc_entry->addend;
/* Don't modify insn until R_IHCONST */
break;
case R_IHCONST:
insn = bfd_get_32(abfd, hit_data);
/* consth, part 2
Now relocate the reference */
if (part1_consth_active == false) {
*error_message = (char *) "Missing IHIHALF";
return(bfd_reloc_dangerous);
}
/* sym_ptr_ptr = r_symndx, in coff_slurp_reloc_table() */
unsigned_value = 0; /*EXTRACT_HWORD(insn) << 16;*/
unsigned_value += reloc_entry->addend; /* r_symndx */
unsigned_value += part1_consth_value;
unsigned_value = unsigned_value >> 16;
insn = INSERT_HWORD(insn, unsigned_value);
part1_consth_active = false;
bfd_put_32(abfd, insn, hit_data);
break;
case R_BYTE:
insn = bfd_get_8(abfd, hit_data);
unsigned_value = insn + sym_value + reloc_entry->addend;
if (unsigned_value & 0xffffff00)
return(bfd_reloc_overflow);
bfd_put_8(abfd, unsigned_value, hit_data);
break;
case R_HWORD:
insn = bfd_get_16(abfd, hit_data);
unsigned_value = insn + sym_value + reloc_entry->addend;
if (unsigned_value & 0xffff0000)
return(bfd_reloc_overflow);
bfd_put_16(abfd, insn, hit_data);
break;
case R_WORD:
insn = bfd_get_32(abfd, hit_data);
insn += sym_value + reloc_entry->addend;
bfd_put_32(abfd, insn, hit_data);
break;
default:
*error_message = "Unrecognized reloc";
return (bfd_reloc_dangerous);
}
return(bfd_reloc_ok);
}
/* type rightshift
size
bitsize
pc-relative
bitpos
absolute
complain_on_overflow
special_function
relocation name
partial_inplace
src_mask
*/
/*FIXME: I'm not real sure about this table */
static reloc_howto_type howto_table[] =
{
{R_ABS, 0, 3, 32, false, 0, complain_overflow_bitfield,a29k_reloc,"ABS", true, 0xffffffff,0xffffffff, false},
{1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10},
{11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20},
{21}, {22}, {23},
{R_IREL, 0, 3, 32, true, 0, complain_overflow_signed,a29k_reloc,"IREL", true, 0xffffffff,0xffffffff, false},
{R_IABS, 0, 3, 32, false, 0, complain_overflow_bitfield, a29k_reloc,"IABS", true, 0xffffffff,0xffffffff, false},
{R_ILOHALF, 0, 3, 16, true, 0, complain_overflow_signed, a29k_reloc,"ILOHALF", true, 0x0000ffff,0x0000ffff, false},
{R_IHIHALF, 0, 3, 16, true, 16, complain_overflow_signed, a29k_reloc,"IHIHALF", true, 0xffff0000,0xffff0000, false},
{R_IHCONST, 0, 3, 16, true, 0, complain_overflow_signed, a29k_reloc,"IHCONST", true, 0xffff0000,0xffff0000, false},
{R_BYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, a29k_reloc,"BYTE", true, 0x000000ff,0x000000ff, false},
{R_HWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, a29k_reloc,"HWORD", true, 0x0000ffff,0x0000ffff, false},
{R_WORD, 0, 2, 32, false, 0, complain_overflow_bitfield, a29k_reloc,"WORD", true, 0xffffffff,0xffffffff, false},
};
#define BADMAG(x) A29KBADMAG(x)
#define RELOC_PROCESSING(relent, reloc, symbols, abfd, section) \
reloc_processing(relent, reloc, symbols, abfd, section)
static void
reloc_processing (relent,reloc, symbols, abfd, section)
arelent *relent;
struct internal_reloc *reloc;
asymbol **symbols;
bfd *abfd;
asection *section;
{
static bfd_vma ihihalf_vaddr = (bfd_vma) -1;
relent->address = reloc->r_vaddr;
relent->howto = howto_table + reloc->r_type;
if (reloc->r_type == R_IHCONST)
{
/* The address of an R_IHCONST should always be the address of
the immediately preceding R_IHIHALF. relocs generated by gas
are correct, but relocs generated by High C are different (I
can't figure out what the address means for High C). We can
handle both gas and High C by ignoring the address here, and
simply reusing the address saved for R_IHIHALF. */
if (ihihalf_vaddr == (bfd_vma) -1)
abort ();
relent->address = ihihalf_vaddr;
ihihalf_vaddr = (bfd_vma) -1;
relent->addend = reloc->r_symndx;
relent->sym_ptr_ptr= bfd_abs_section_ptr->symbol_ptr_ptr;
}
else
{
asymbol *ptr;
relent->sym_ptr_ptr = symbols + obj_convert(abfd)[reloc->r_symndx];
ptr = *(relent->sym_ptr_ptr);
if (ptr
&& bfd_asymbol_bfd(ptr) == abfd
&& ((ptr->flags & BSF_OLD_COMMON)== 0))
{
relent->addend = 0;
}
else
{
relent->addend = 0;
}
relent->address-= section->vma;
if (reloc->r_type == R_IHIHALF)
ihihalf_vaddr = relent->address;
else if (ihihalf_vaddr != (bfd_vma) -1)
abort ();
}
}
/* The reloc processing routine for the optimized COFF linker. */
static boolean
coff_a29k_relocate_section (output_bfd, info, input_bfd, input_section,
contents, relocs, syms, sections)
bfd *output_bfd;
struct bfd_link_info *info;
bfd *input_bfd;
asection *input_section;
bfd_byte *contents;
struct internal_reloc *relocs;
struct internal_syment *syms;
asection **sections;
{
struct internal_reloc *rel;
struct internal_reloc *relend;
boolean hihalf;
bfd_vma hihalf_val;
/* If we are performing a relocateable link, we don't need to do a
thing. The caller will take care of adjusting the reloc
addresses and symbol indices. */
if (info->relocateable)
return true;
hihalf = false;
hihalf_val = 0;
rel = relocs;
relend = rel + input_section->reloc_count;
for (; rel < relend; rel++)
{
long symndx;
bfd_byte *loc;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
asection *sec;
bfd_vma val;
boolean overflow;
unsigned long insn;
long signed_value;
unsigned long unsigned_value;
bfd_reloc_status_type rstat;
symndx = rel->r_symndx;
loc = contents + rel->r_vaddr - input_section->vma;
if (symndx == -1)
h = NULL;
else
h = obj_coff_sym_hashes (input_bfd)[symndx];
sym = NULL;
sec = NULL;
val = 0;
/* An R_IHCONST reloc does not have a symbol. Instead, the
symbol index is an addend. R_IHCONST is always used in
conjunction with R_IHHALF. */
if (rel->r_type != R_IHCONST)
{
if (h == NULL)
{
if (symndx == -1)
sec = bfd_abs_section_ptr;
else
{
sym = syms + symndx;
sec = sections[symndx];
val = (sec->output_section->vma
+ sec->output_offset
+ sym->n_value
- sec->vma);
}
}
else
{
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
sec = h->root.u.def.section;
val = (h->root.u.def.value
+ sec->output_section->vma
+ sec->output_offset);
}
else
{
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.string, input_bfd, input_section,
rel->r_vaddr - input_section->vma)))
return false;
}
}
if (hihalf)
{
if (! ((*info->callbacks->reloc_dangerous)
(info, "missing IHCONST reloc", input_bfd,
input_section, rel->r_vaddr - input_section->vma)))
return false;
hihalf = false;
}
}
overflow = false;
switch (rel->r_type)
{
default:
bfd_set_error (bfd_error_bad_value);
return false;
case R_IREL:
insn = bfd_get_32 (input_bfd, loc);
/* Extract the addend. */
signed_value = EXTRACT_HWORD (insn);
signed_value = SIGN_EXTEND_HWORD (signed_value);
signed_value <<= 2;
/* Unfortunately, there are two different versions of COFF
a29k. In the original AMD version, the value stored in
the field for the R_IREL reloc is a simple addend. In
the GNU version, the value is the negative of the address
of the reloc within section. We try to cope here by
assuming the AMD version, unless the addend is exactly
the negative of the address; in the latter case we assume
the GNU version. This means that something like
.text
nop
jmp i-4
will fail, because the addend of -4 will happen to equal
the negative of the address within the section. The
compiler will never generate code like this.
At some point in the future we may want to take out this
check. */
if (signed_value == - (long) (rel->r_vaddr - input_section->vma))
signed_value = 0;
/* Determine the destination of the jump. */
signed_value += val;
if ((signed_value & ~0x3ffff) == 0)
{
/* We can use an absolute jump. */
insn |= (1 << 24);
}
else
{
/* Make the destination PC relative. */
signed_value -= (input_section->output_section->vma
+ input_section->output_offset
+ (rel->r_vaddr - input_section->vma));
if (signed_value > 0x1ffff || signed_value < - 0x20000)
{
overflow = true;
signed_value = 0;
}
}
/* Put the adjusted value back into the instruction. */
signed_value >>= 2;
insn = INSERT_HWORD (insn, signed_value);
bfd_put_32 (input_bfd, (bfd_vma) insn, loc);
break;
case R_ILOHALF:
insn = bfd_get_32 (input_bfd, loc);
unsigned_value = EXTRACT_HWORD (insn);
unsigned_value += val;
insn = INSERT_HWORD (insn, unsigned_value);
bfd_put_32 (input_bfd, insn, loc);
break;
case R_IHIHALF:
/* Save the value for the R_IHCONST reloc. */
hihalf = true;
hihalf_val = val;
break;
case R_IHCONST:
if (! hihalf)
{
if (! ((*info->callbacks->reloc_dangerous)
(info, "missing IHIHALF reloc", input_bfd,
input_section, rel->r_vaddr - input_section->vma)))
return false;
hihalf_val = 0;
}
insn = bfd_get_32 (input_bfd, loc);
unsigned_value = rel->r_symndx + hihalf_val;
unsigned_value >>= 16;
insn = INSERT_HWORD (insn, unsigned_value);
bfd_put_32 (input_bfd, (bfd_vma) insn, loc);
hihalf = false;
break;
case R_BYTE:
case R_HWORD:
case R_WORD:
rstat = _bfd_relocate_contents (howto_table + rel->r_type,
input_bfd, val, loc);
if (rstat == bfd_reloc_overflow)
overflow = true;
else if (rstat != bfd_reloc_ok)
abort ();
break;
}
if (overflow)
{
const char *name;
char buf[SYMNMLEN + 1];
if (symndx == -1)
name = "*ABS*";
else if (h != NULL)
name = h->root.root.string;
else if (sym == NULL)
name = "*unknown*";
else if (sym->_n._n_n._n_zeroes == 0
&& sym->_n._n_n._n_offset != 0)
name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
else
{
strncpy (buf, sym->_n._n_name, SYMNMLEN);
buf[SYMNMLEN] = '\0';
name = buf;
}
if (! ((*info->callbacks->reloc_overflow)
(info, name, howto_table[rel->r_type].name, (bfd_vma) 0,
input_bfd, input_section,
rel->r_vaddr - input_section->vma)))
return false;
}
}
return true;
}
#define coff_relocate_section coff_a29k_relocate_section
/* We don't want to change the symndx of a R_IHCONST reloc, since it
is actually an addend, not a symbol index at all. */
/*ARGSUSED*/
static boolean
coff_a29k_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp)
bfd *obfd;
struct bfd_link_info *info;
bfd *ibfd;
asection *sec;
struct internal_reloc *irel;
boolean *adjustedp;
{
if (irel->r_type == R_IHCONST)
*adjustedp = true;
else
*adjustedp = false;
return true;
}
#define coff_adjust_symndx coff_a29k_adjust_symndx
#include "coffcode.h"
const bfd_target a29kcoff_big_vec =
{
"coff-a29k-big", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC /* section flags */
| SEC_LOAD | SEC_RELOC
| SEC_READONLY ),
'_', /* leading underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
/* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16,
/* hdrs */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16,
{
_bfd_dummy_target,
coff_object_p,
bfd_generic_archive_p,
_bfd_dummy_target
},
{
bfd_false,
coff_mkobject,
_bfd_generic_mkarchive,
bfd_false
},
{
bfd_false,
coff_write_object_contents,
_bfd_write_archive_contents,
bfd_false
},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE
};
File diff suppressed because it is too large. Load diff
+162
View File
@@ -0,0 +1,162 @@
/* BFD back-end for Apollo 68000 COFF binaries.
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
By Troy Rollo (troy@cbme.unsw.edu.au)
Based on m68k standard COFF version Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/apollo.h"
#include "coff/internal.h"
#include "libcoff.h"
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
#ifdef ONLY_DECLARE_RELOCS
extern reloc_howto_type apollocoff_howto_table[];
#else
reloc_howto_type apollocoff_howto_table[] =
{
HOWTO(R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, 0, "8", true, 0x000000ff,0x000000ff, false),
HOWTO(R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, 0, "16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, 0, "32", true, 0xffffffff,0xffffffff, false),
HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, 0, "DISP8", true, 0x000000ff,0x000000ff, false),
HOWTO(R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, 0, "DISP16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, 0, "DISP32", true, 0xffffffff,0xffffffff, false),
HOWTO(R_RELLONG_NEG, 0, -2, 32, false, 0, complain_overflow_bitfield, 0, "-32", true, 0xffffffff,0xffffffff, false),
};
#endif /* not ONLY_DECLARE_RELOCS */
#ifndef BADMAG
#define BADMAG(x) M68KBADMAG(x)
#endif
#define APOLLO_M68 1 /* Customize coffcode.h */
/* Turn a howto into a reloc number */
#ifdef ONLY_DECLARE_RELOCS
extern void apollo_rtype2howto PARAMS ((arelent *internal, int relocentry));
extern int apollo_howto2rtype PARAMS ((reloc_howto_type *));
#else
void
apollo_rtype2howto(internal, relocentry)
arelent *internal;
int relocentry;
{
switch (relocentry)
{
case R_RELBYTE: internal->howto = apollocoff_howto_table + 0; break;
case R_RELWORD: internal->howto = apollocoff_howto_table + 1; break;
case R_RELLONG: internal->howto = apollocoff_howto_table + 2; break;
case R_PCRBYTE: internal->howto = apollocoff_howto_table + 3; break;
case R_PCRWORD: internal->howto = apollocoff_howto_table + 4; break;
case R_PCRLONG: internal->howto = apollocoff_howto_table + 5; break;
case R_RELLONG_NEG: internal->howto = apollocoff_howto_table + 6; break;
}
}
int
apollo_howto2rtype (internal)
reloc_howto_type *internal;
{
if (internal->pc_relative)
{
switch (internal->bitsize)
{
case 32: return R_PCRLONG;
case 16: return R_PCRWORD;
case 8: return R_PCRBYTE;
}
}
else
{
switch (internal->bitsize)
{
case 32: return R_RELLONG;
case 16: return R_RELWORD;
case 8: return R_RELBYTE;
}
}
return R_RELLONG;
}
#endif /* not ONLY_DECLARE_RELOCS */
#define RTYPE2HOWTO(internal, relocentry) \
apollo_rtype2howto(internal, (relocentry)->r_type)
#define SELECT_RELOC(external, internal) \
external.r_type = apollo_howto2rtype(internal);
#include "coffcode.h"
const bfd_target
#ifdef TARGET_SYM
TARGET_SYM =
#else
apollocoff_vec =
#endif
{
#ifdef TARGET_NAME
TARGET_NAME,
#else
"apollo-m68k", /* name */
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef NAMES_HAVE_UNDERSCORE
'_',
#else
0, /* leading underscore */
#endif
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE
};
+537
View File
@@ -0,0 +1,537 @@
/* BFD back-end for ARM COFF files.
Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/arm.h"
#include "coff/internal.h"
#ifdef COFF_WITH_PE
#include "coff/pe.h"
#endif
#include "libcoff.h"
static bfd_reloc_status_type
aoutarm_fix_pcrel_26_done PARAMS ((bfd *, arelent *, asymbol *, PTR,
asection *, bfd *, char **));
static bfd_reloc_status_type
aoutarm_fix_pcrel_26 PARAMS ((bfd *, arelent *, asymbol *, PTR,
asection *, bfd *, char **));
static bfd_reloc_status_type coff_arm_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
/* Used by the assembler. */
static bfd_reloc_status_type
coff_arm_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
symvalue diff;
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
diff = reloc_entry->addend;
#define DOIT(x) \
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
switch (howto->size)
{
case 0:
{
char x = bfd_get_8 (abfd, addr);
DOIT (x);
bfd_put_8 (abfd, x, addr);
}
break;
case 1:
{
short x = bfd_get_16 (abfd, addr);
DOIT (x);
bfd_put_16 (abfd, x, addr);
}
break;
case 2:
{
long x = bfd_get_32 (abfd, addr);
DOIT (x);
bfd_put_32 (abfd, x, addr);
}
break;
default:
abort ();
}
}
/* Now let bfd_perform_relocation finish everything up. */
return bfd_reloc_continue;
}
#ifndef PCRELOFFSET
#define PCRELOFFSET true
#endif
static reloc_howto_type aoutarm_std_reloc_howto[] =
{
/* type rs size bsz pcrel bitpos ovrf sf name part_inpl readmask setmask pcdone */
HOWTO(0, /* type */
0, /* rs */
0, /* size */
8, /* bsz */
false, /* pcrel */
0, /* bitpos */
complain_overflow_bitfield, /* ovf */
coff_arm_reloc, /* sf */
"8", /*name */
true, /* partial */
0x000000ff, /*read mask */
0x000000ff, /* setmask */
PCRELOFFSET /* pcdone */),
HOWTO(1,
0,
1,
16,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
"16",
true,
0x0000ffff,
0x0000ffff,
PCRELOFFSET),
HOWTO( 2,
0,
2,
32,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
"32",
true,
0xffffffff,
0xffffffff,
PCRELOFFSET),
HOWTO( 3,
2,
2,
26,
true,
0,
complain_overflow_signed,
aoutarm_fix_pcrel_26 ,
"ARM26",
false,
0x00ffffff,
0x00ffffff,
PCRELOFFSET),
HOWTO( 4,
0,
0,
8,
true,
0,
complain_overflow_signed,
coff_arm_reloc,
"DISP8",
true,
0x000000ff,
0x000000ff,
true),
HOWTO( 5,
0,
1,
16,
true,
0,
complain_overflow_signed,
coff_arm_reloc,
"DISP16",
true,
0x0000ffff,
0x0000ffff,
true),
HOWTO( 6,
0,
2,
32,
true,
0,
complain_overflow_signed,
coff_arm_reloc,
"DISP32",
true,
0xffffffff,
0xffffffff,
true),
HOWTO( 7,
2,
2,
26,
false,
0,
complain_overflow_signed,
aoutarm_fix_pcrel_26_done,
"ARM26D",
true,
0x00ffffff,
0x00ffffff,
false),
{-1},
HOWTO( 9,
0,
-1,
16,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
"NEG16",
true,
0x0000ffff,
0x0000ffff,
false),
HOWTO( 10,
0,
-2,
32,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
"NEG32",
true,
0xffffffff,
0xffffffff,
false),
HOWTO( 11,
0,
2,
32,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
"rva32",
true,
0xffffffff,
0xffffffff,
PCRELOFFSET),
};
#ifdef COFF_WITH_PE
/* Return true if this relocation should
appear in the output .reloc section. */
static boolean in_reloc_p (abfd, howto)
bfd * abfd;
reloc_howto_type *howto;
{
return !howto->pc_relative && howto->type != 11;
}
#endif
#define RTYPE2HOWTO(cache_ptr, dst) \
(cache_ptr)->howto = aoutarm_std_reloc_howto + (dst)->r_type;
#define coff_rtype_to_howto coff_arm_rtype_to_howto
static reloc_howto_type *
coff_arm_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
bfd *abfd;
asection *sec;
struct internal_reloc *rel;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma *addendp;
{
reloc_howto_type *howto;
howto = aoutarm_std_reloc_howto + rel->r_type;
if (rel->r_type == 11)
{
*addendp -= pe_data(sec->output_section->owner)->pe_opthdr.ImageBase;
}
return howto;
}
/* Used by the assembler. */
static bfd_reloc_status_type
aoutarm_fix_pcrel_26_done (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
/* This is dead simple at present. */
return bfd_reloc_ok;
}
/* Used by the assembler. */
static bfd_reloc_status_type
aoutarm_fix_pcrel_26 (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
bfd_vma relocation;
bfd_size_type addr = reloc_entry->address;
long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
bfd_reloc_status_type flag = bfd_reloc_ok;
/* If this is an undefined symbol, return error */
if (symbol->section == &bfd_und_section
&& (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined;
/* If the sections are different, and we are doing a partial relocation,
just ignore it for now. */
if (symbol->section->name != input_section->name
&& output_bfd != (bfd *)NULL)
return bfd_reloc_continue;
relocation = (target & 0x00ffffff) << 2;
relocation = (relocation ^ 0x02000000) - 0x02000000; /* Sign extend */
relocation += symbol->value;
relocation += symbol->section->output_section->vma;
relocation += symbol->section->output_offset;
relocation += reloc_entry->addend;
relocation -= input_section->output_section->vma;
relocation -= input_section->output_offset;
relocation -= addr;
if (relocation & 3)
return bfd_reloc_overflow;
/* Check for overflow */
if (relocation & 0x02000000)
{
if ((relocation & ~0x03ffffff) != ~0x03ffffff)
flag = bfd_reloc_overflow;
}
else if (relocation & ~0x03ffffff)
flag = bfd_reloc_overflow;
target &= ~0x00ffffff;
target |= (relocation >> 2) & 0x00ffffff;
bfd_put_32 (abfd, target, (bfd_byte *) data + addr);
/* Now the ARM magic... Change the reloc type so that it is marked as done.
Strictly this is only necessary if we are doing a partial relocation. */
reloc_entry->howto = &aoutarm_std_reloc_howto[7];
return flag;
}
static CONST struct reloc_howto_struct *
arm_reloc_type_lookup(abfd,code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
#define ASTD(i,j) case i: return &aoutarm_std_reloc_howto[j]
if (code == BFD_RELOC_CTOR)
switch (bfd_get_arch_info (abfd)->bits_per_address)
{
case 32:
code = BFD_RELOC_32;
break;
default: return (CONST struct reloc_howto_struct *) 0;
}
switch (code)
{
ASTD (BFD_RELOC_16, 1);
ASTD (BFD_RELOC_32, 2);
ASTD (BFD_RELOC_ARM_PCREL_BRANCH, 3);
ASTD (BFD_RELOC_8_PCREL, 4);
ASTD (BFD_RELOC_16_PCREL, 5);
ASTD (BFD_RELOC_32_PCREL, 6);
ASTD (BFD_RELOC_RVA, 11);
default: return (CONST struct reloc_howto_struct *) 0;
}
}
#define coff_bfd_reloc_type_lookup arm_reloc_type_lookup
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
#define COFF_PAGE_SIZE 0x1000
/* Turn a howto into a reloc nunmber */
#define SELECT_RELOC(x,howto) { x.r_type = howto->type; }
#define BADMAG(x) ARMBADMAG(x)
#define ARM 1 /* Customize coffcode.h */
/* We use the special COFF backend linker. */
#define coff_relocate_section _bfd_coff_generic_relocate_section
#include "coffcode.h"
const bfd_target
#ifdef TARGET_LITTLE_SYM
TARGET_LITTLE_SYM =
#else
armcoff_little_vec =
#endif
{
#ifdef TARGET_LITTLE_NAME
TARGET_LITTLE_NAME,
#else
"coff-arm-little",
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* header byte order is little */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef TARGET_UNDERSCORE
TARGET_UNDERSCORE, /* leading underscore */
#else
0, /* leading underscore */
#endif
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
/* Note that we allow an object file to be treated as a core file as well. */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, coff_object_p},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
const bfd_target
#ifdef TARGET_BIG_SYM
TARGET_BIG_SYM =
#else
armcoff_big_vec =
#endif
{
#ifdef TARGET_BIG_NAME
TARGET_BIG_NAME,
#else
"coff-arm-big",
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef TARGET_UNDERSCORE
TARGET_UNDERSCORE, /* leading underscore */
#else
0, /* leading underscore */
#endif
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
/* Note that we allow an object file to be treated as a core file as well. */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, coff_object_p},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+332
View File
@@ -0,0 +1,332 @@
/* BFD back-end for Apple M68K COFF A/UX 3.x files.
Copyright 1996 Free Software Foundation, Inc.
Portions written by Richard Henderson <rth@tamu.edu>,
COMMON symbol munging cribbed from cf-m68klynx.c which was
written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_SYM m68kaux_coff_vec
#define TARGET_NAME "coff-m68k-aux"
#ifndef TARG_AUX
#define TARG_AUX
#endif
#define COFF_LONG_FILENAMES
/* 4k pages */
#define COFF_PAGE_SIZE 0x1000
/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
#define BSS_NOLOAD_IS_SHARED_LIBRARY
#define _bfd_m68kcoff_howto_table _bfd_m68kaux_howto_table
#define _bfd_m68kcoff_rtype2howto _bfd_m68kaux_rtype2howto
#define _bfd_m68kcoff_howto2rtype _bfd_m68kaux_howto2rtype
#define _bfd_m68kcoff_reloc_type_lookup _bfd_m68kaux_reloc_type_lookup
/* Rather than change names lots of places, reuse the same hack */
#define LYNX_SPECIAL_FN _bfd_m68kaux_special_fn
#include "bfd.h"
#include "sysdep.h"
#ifdef ANSI_PROTOTYPES
struct internal_reloc;
struct coff_link_hash_entry;
struct internal_syment;
#endif
static bfd_reloc_status_type _bfd_m68kaux_special_fn
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static reloc_howto_type *coff_m68k_aux_rtype_to_howto
PARAMS ((bfd *, asection *, struct internal_reloc *,
struct coff_link_hash_entry *, struct internal_syment *,
bfd_vma *));
static boolean coff_m68k_aux_link_add_one_symbol
PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
asection *, bfd_vma, const char *, boolean, boolean,
struct bfd_link_hash_entry **));
#define coff_rtype_to_howto coff_m68k_aux_rtype_to_howto
#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
/* Compute the addend of a reloc. If the reloc is to a common symbol,
the object file contains the value of the common symbol. By the
time this is called, the linker may be using a different symbol
from a different object file with a different value. Therefore, we
hack wildly to locate the original symbol from this file so that we
can make the correct adjustment. This macro sets coffsym to the
symbol from the original file, and uses it to set the addend value
correctly. If this is not a common symbol, the usual addend
calculation is done, except that an additional tweak is needed for
PC relative relocs.
FIXME: This macro refers to symbols and asect; these are from the
calling function, not the macro arguments. */
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
{ \
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
coffsym = (obj_symbols (abfd) \
+ (cache_ptr->sym_ptr_ptr - symbols)); \
else if (ptr) \
coffsym = coff_symbol_from (abfd, ptr); \
if (coffsym != (coff_symbol_type *) NULL \
&& coffsym->native->u.syment.n_scnum == 0) \
cache_ptr->addend = - coffsym->native->u.syment.n_value; \
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
&& ptr->section != (asection *) NULL) \
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
else \
cache_ptr->addend = 0; \
if (ptr && (reloc.r_type == R_PCRBYTE \
|| reloc.r_type == R_PCRWORD \
|| reloc.r_type == R_PCRLONG)) \
cache_ptr->addend += asect->vma; \
}
#include "coff/aux-coff.h" /* override coff/internal.h and coff/m68k.h */
#include "coff-m68k.c"
/* For some reason when using m68k COFF the value stored in the .text
section for a reference to a common symbol is the value itself plus
any desired offset. (taken from work done by Ian Taylor, Cygnus Support,
for I386 COFF). */
/* If we are producing relocateable output, we need to do some
adjustments to the object file that are not done by the
bfd_perform_relocation function. This function is called by every
reloc type to make any required adjustments. */
static bfd_reloc_status_type
_bfd_m68kaux_special_fn (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
symvalue diff;
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
if (bfd_is_com_section (symbol->section))
{
/* We are relocating a common symbol. The current value in the
object file is ORIG + OFFSET, where ORIG is the value of the
common symbol as seen by the object file when it was compiled
(this may be zero if the symbol was undefined) and OFFSET is
the offset into the common symbol (normally zero, but may be
non-zero when referring to a field in a common structure).
ORIG is the negative of reloc_entry->addend, which is set by
the CALC_ADDEND macro below. We want to replace the value in
the object file with NEW + OFFSET, where NEW is the value of
the common symbol which we are going to put in the final
object file. NEW is symbol->value. */
diff = symbol->value + reloc_entry->addend;
}
else
{
/* For some reason bfd_perform_relocation always effectively
ignores the addend for a COFF target when producing
relocateable output. This seems to be always wrong for 386
COFF, so we handle the addend here instead. */
diff = reloc_entry->addend;
}
#define DOIT(x) \
x = ((x & ~howto->dst_mask) | \
(((x & howto->src_mask) + diff) & howto->dst_mask))
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
switch (howto->size)
{
case 0:
{
char x = bfd_get_8 (abfd, addr);
DOIT (x);
bfd_put_8 (abfd, x, addr);
}
break;
case 1:
{
short x = bfd_get_16 (abfd, addr);
DOIT (x);
bfd_put_16 (abfd, x, addr);
}
break;
case 2:
{
long x = bfd_get_32 (abfd, addr);
DOIT (x);
bfd_put_32 (abfd, x, addr);
}
break;
default:
abort ();
}
}
/* Now let bfd_perform_relocation finish everything up. */
return bfd_reloc_continue;
}
/* coff-m68k.c uses the special COFF backend linker. We need to
adjust common symbols. */
/*ARGSUSED*/
static reloc_howto_type *
coff_m68k_aux_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
bfd *abfd;
asection *sec;
struct internal_reloc *rel;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma *addendp;
{
arelent relent;
reloc_howto_type *howto;
RTYPE2HOWTO (&relent, rel);
howto = relent.howto;
if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
{
/* This is a common symbol. The section contents include the
size (sym->n_value) as an addend. The relocate_section
function will be adding in the final value of the symbol. We
need to subtract out the current size in order to get the
correct result. */
BFD_ASSERT (h != NULL);
*addendp -= sym->n_value;
}
/* If the output symbol is common (in which case this must be a
relocateable link), we need to add in the final size of the
common symbol. */
if (h != NULL && h->root.type == bfd_link_hash_common)
*addendp += h->root.u.c.size;
return howto;
}
/* We need non-absolute symbols to override absolute symbols. This
mirrors Apple's "solution" to let a static library symbol override
a shared library symbol. On the whole not a good thing, given how
shared libraries work here, but can work if you are careful with
what you include in the shared object. */
boolean
coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
string, copy, collect, hashp)
struct bfd_link_info *info;
bfd *abfd;
const char *name;
flagword flags;
asection *section;
bfd_vma value;
const char *string;
boolean copy;
boolean collect;
struct bfd_link_hash_entry **hashp;
{
struct bfd_link_hash_entry *h;
if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0 &&
!bfd_is_und_section (section) &&
!bfd_is_com_section (section))
{
/* The new symbol is a definition or an indirect definition */
/* This bit copied from linker.c */
if (hashp != NULL && *hashp != NULL)
{
h = *hashp;
BFD_ASSERT (strcmp (h->root.string, name) == 0);
}
else
{
h = bfd_link_hash_lookup (info->hash, name, true, copy, false);
if (h == NULL)
{
if (hashp != NULL)
*hashp = NULL;
return false;
}
}
if (info->notice_hash != (struct bfd_hash_table *) NULL
&& (bfd_hash_lookup (info->notice_hash, name, false, false)
!= (struct bfd_hash_entry *) NULL))
{
if (! (*info->callbacks->notice) (info, name, abfd, section, value))
return false;
}
if (hashp != (struct bfd_link_hash_entry **) NULL)
*hashp = h;
/* end duplication from linker.c */
if (h->type == bfd_link_hash_defined
|| h->type == bfd_link_hash_indirect)
{
asection *msec;
if (h->type == bfd_link_hash_defined)
msec = h->u.def.section;
else
msec = bfd_ind_section_ptr;
if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
{
h->u.def.section = section;
h->u.def.value = value;
return true;
}
else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
return true;
}
}
/* If we didn't exit early, finish processing in the generic routine */
return _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section,
value, string, copy, collect,
hashp);
}
+25
View File
@@ -0,0 +1,25 @@
/* BFD back-end for Intel 386 COFF files (go32 variant).
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Written by DJ Delorie.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_SYM go32coff_vec
#define TARGET_NAME "coff-go32"
#define TARGET_UNDERSCORE '_'
#include "coff-i386.c"
+650
View File
@@ -0,0 +1,650 @@
/* BFD back-end for Hitachi H8/300 COFF binaries.
Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Written by Steve Chamberlain, <sac@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "obstack.h"
#include "libbfd.h"
#include "bfdlink.h"
#include "genlink.h"
#include "coff/h8300.h"
#include "coff/internal.h"
#include "libcoff.h"
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (1)
/* special handling for H8/300 relocs.
We only come here for pcrel stuff and return normally if not an -r link.
When doing -r, we can't do any arithmetic for the pcrel stuff, because
the code in reloc.c assumes that we can manipulate the targets of
the pcrel branches. This isn't so, since the H8/300 can do relaxing,
which means that the gap after the instruction may not be enough to
contain the offset required for the branch, so we have to use the only
the addend until the final link */
static bfd_reloc_status_type
special (abfd, reloc_entry, symbol, data, input_section, output_bfd,
error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
return bfd_reloc_ok;
}
static reloc_howto_type howto_table[] =
{
HOWTO (R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, special, "8", false, 0x000000ff, 0x000000ff, false),
HOWTO (R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "16", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, special, "32", false, 0xffffffff, 0xffffffff, false),
HOWTO (R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, special, "DISP8", false, 0x000000ff, 0x000000ff, true),
HOWTO (R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, special, "DISP16", false, 0x0000ffff, 0x0000ffff, true),
HOWTO (R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, special, "DISP32", false, 0xffffffff, 0xffffffff, true),
HOWTO (R_MOVB1, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "16/8", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_MOVB2, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "8/16", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_JMP1, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "16/pcrel", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_JMP2, 0, 0, 8, false, 0, complain_overflow_bitfield, special, "pcrecl/16", false, 0x000000ff, 0x000000ff, false),
HOWTO (R_JMPL1, 0, 2, 32, false, 0, complain_overflow_bitfield, special, "24/pcrell", false, 0x00ffffff, 0x00ffffff, false),
HOWTO (R_JMPL_B8, 0, 0, 8, false, 0, complain_overflow_bitfield, special, "pc8/24", false, 0x000000ff, 0x000000ff, false),
HOWTO (R_MOVLB1, 0, 1, 16, false, 0, complain_overflow_bitfield,special, "24/8", false, 0x0000ffff, 0x0000ffff, false),
HOWTO (R_MOVLB2, 0, 1, 16, false, 0, complain_overflow_bitfield, special, "8/24", false, 0x0000ffff, 0x0000ffff, false),
/* An indirect reference to a function. This causes the function's address
to be added to the function vector in lo-mem and puts the address of
the function vector's entry in the jsr instruction. */
HOWTO (R_MEM_INDIRECT, 0, 0, 8, false, 0, complain_overflow_bitfield, special, "8/indirect", false, 0x000000ff, 0x000000ff, false),
};
/* Turn a howto into a reloc number */
#define SELECT_RELOC(x,howto) \
{ x.r_type = select_reloc(howto); }
#define BADMAG(x) (H8300BADMAG(x)&& H8300HBADMAG(x))
#define H8300 1 /* Customize coffcode.h */
#define __A_MAGIC_SET__
/* Code to swap in the reloc */
#define SWAP_IN_RELOC_OFFSET bfd_h_get_32
#define SWAP_OUT_RELOC_OFFSET bfd_h_put_32
#define SWAP_OUT_RELOC_EXTRA(abfd, src, dst) \
dst->r_stuff[0] = 'S'; \
dst->r_stuff[1] = 'C';
static int
select_reloc (howto)
reloc_howto_type *howto;
{
return howto->type;
}
/* Code to turn a r_type into a howto ptr, uses the above howto table
*/
static void
rtype2howto (internal, dst)
arelent *internal;
struct internal_reloc *dst;
{
switch (dst->r_type)
{
case R_RELBYTE:
internal->howto = howto_table + 0;
break;
case R_RELWORD:
internal->howto = howto_table + 1;
break;
case R_RELLONG:
internal->howto = howto_table + 2;
break;
case R_PCRBYTE:
internal->howto = howto_table + 3;
break;
case R_PCRWORD:
internal->howto = howto_table + 4;
break;
case R_PCRLONG:
internal->howto = howto_table + 5;
break;
case R_MOVB1:
internal->howto = howto_table + 6;
break;
case R_MOVB2:
internal->howto = howto_table + 7;
break;
case R_JMP1:
internal->howto = howto_table + 8;
break;
case R_JMP2:
internal->howto = howto_table + 9;
break;
case R_JMPL1:
internal->howto = howto_table + 10;
break;
case R_JMPL_B8:
internal->howto = howto_table + 11;
break;
case R_MOVLB1:
internal->howto = howto_table + 12;
break;
case R_MOVLB2:
internal->howto = howto_table + 13;
break;
case R_MEM_INDIRECT:
internal->howto = howto_table + 14;
break;
default:
abort ();
break;
}
}
#define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry)
/* Perform any necessaru magic to the addend in a reloc entry */
#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \
cache_ptr->addend = ext_reloc.r_offset;
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
static void
reloc_processing (relent, reloc, symbols, abfd, section)
arelent * relent;
struct internal_reloc *reloc;
asymbol ** symbols;
bfd * abfd;
asection * section;
{
relent->address = reloc->r_vaddr;
rtype2howto (relent, reloc);
if (((int) reloc->r_symndx) > 0)
{
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
}
else
{
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
/* relent->section = 0;*/
}
static int
h8300_reloc16_estimate(abfd, input_section, reloc, shrink, link_info)
bfd *abfd;
asection *input_section;
arelent *reloc;
unsigned int shrink;
struct bfd_link_info *link_info;
{
bfd_vma value;
bfd_vma dot;
bfd_vma gap;
/* The address of the thing to be relocated will have moved back by
the size of the shrink - but we don't change reloc->address here,
since we need it to know where the relocation lives in the source
uncooked section */
/* reloc->address -= shrink; conceptual */
bfd_vma address = reloc->address - shrink;
switch (reloc->howto->type)
{
case R_MOVB2:
case R_JMP2:
shrink+=2;
break;
/* Thing is a move one byte */
case R_MOVB1:
value = bfd_coff_reloc16_get_value(reloc, link_info, input_section);
if (value >= 0xff00)
{
/* Change the reloc type from 16bit, possible 8 to 8bit
possible 16 */
reloc->howto = reloc->howto + 1;
/* The place to relc moves back by one */
/* This will be two bytes smaller in the long run */
shrink +=2 ;
bfd_perform_slip(abfd, 2, input_section, address);
}
break;
/* This is the 24 bit branch which could become an 8 bitter,
the relocation points to the first byte of the insn, not the
actual data */
case R_JMPL1:
value = bfd_coff_reloc16_get_value(reloc, link_info, input_section);
dot = input_section->output_section->vma +
input_section->output_offset + address;
/* See if the address we're looking at within 127 bytes of where
we are, if so then we can use a small branch rather than the
jump we were going to */
gap = value - dot ;
if (-120 < (long)gap && (long)gap < 120 )
{
/* Change the reloc type from 24bit, possible 8 to 8bit
possible 32 */
reloc->howto = reloc->howto + 1;
/* This will be two bytes smaller in the long run */
shrink +=2 ;
bfd_perform_slip(abfd, 2, input_section, address);
}
break;
case R_JMP1:
value = bfd_coff_reloc16_get_value(reloc, link_info, input_section);
dot = input_section->output_section->vma +
input_section->output_offset + address;
/* See if the address we're looking at within 127 bytes of where
we are, if so then we can use a small branch rather than the
jump we were going to */
gap = value - (dot - shrink);
if (-120 < (long)gap && (long)gap < 120 )
{
/* Change the reloc type from 16bit, possible 8 to 8bit
possible 16 */
reloc->howto = reloc->howto + 1;
/* The place to relc moves back by one */
/* This will be two bytes smaller in the long run */
shrink +=2 ;
bfd_perform_slip(abfd, 2, input_section, address);
}
break;
}
return shrink;
}
/* First phase of a relaxing link */
/* Reloc types
large small
R_MOVB1 R_MOVB2 mov.b with 16bit or 8 bit address
R_JMP1 R_JMP2 jmp or pcrel branch
R_JMPL1 R_JMPL_B8 24jmp or pcrel branch
R_MOVLB1 R_MOVLB2 24 or 8 bit reloc for mov.b
*/
static void
h8300_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
dst_ptr)
bfd *abfd;
struct bfd_link_info *link_info;
struct bfd_link_order *link_order;
arelent *reloc;
bfd_byte *data;
unsigned int *src_ptr;
unsigned int *dst_ptr;
{
unsigned int src_address = *src_ptr;
unsigned int dst_address = *dst_ptr;
asection *input_section = link_order->u.indirect.section;
switch (reloc->howto->type)
{
/* A 24 bit branch which could be a 8 bit pcrel, really pointing to
the byte before the 24bit hole, so we can treat it as a 32bit pointer */
case R_PCRBYTE:
{
bfd_vma dot = link_order->offset
+ dst_address
+ link_order->u.indirect.section->output_section->vma;
int gap = (bfd_coff_reloc16_get_value (reloc, link_info, input_section)
- dot);
if (gap > 127 || gap < -128)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
gap &= ~1;
bfd_put_8 (abfd, gap, data + dst_address);
dst_address++;
src_address++;
break;
}
case R_PCRWORD:
{
bfd_vma dot = link_order->offset
+ dst_address
+ link_order->u.indirect.section->output_section->vma;
int gap = (bfd_coff_reloc16_get_value (reloc, link_info, input_section)
- dot) - 1;
if (gap > 32767 || gap < -32768)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_16 (abfd, gap, data + dst_address);
dst_address+=2;
src_address+=2;
break;
}
case R_MEM_INDIRECT: /* Temporary */
case R_RELBYTE:
{
unsigned int gap = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
if (gap < 0xff
|| (gap >= 0x0000ff00
&& gap <= 0x0000ffff)
|| ( gap >= 0x00ffff00
&& gap <= 0x00ffffff)
|| ( gap >= 0xffffff00
&& gap <= 0xffffffff))
{
bfd_put_8 (abfd, gap, data + dst_address);
dst_address += 1;
src_address += 1;
}
else
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
}
break;
case R_JMP1:
/* A relword which would have like to have been a pcrel */
case R_MOVB1:
/* A relword which would like to have been modified but
didn't make it */
case R_RELWORD:
bfd_put_16 (abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
data + dst_address);
dst_address += 2;
src_address += 2;
break;
case R_RELLONG:
bfd_put_32 (abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
data + dst_address);
dst_address += 4;
src_address += 4;
break;
case R_MOVB2:
/* Special relaxed type, there will be a gap between where we
get stuff from and where we put stuff to now
for a mov.b @aa:16 -> mov.b @aa:8
opcode 0x6a 0x0y offset
-> 0x2y off
*/
if (data[dst_address - 1] != 0x6a)
abort ();
switch (data[src_address] & 0xf0)
{
case 0x00:
/* Src is memory */
data[dst_address - 1] = (data[src_address] & 0xf) | 0x20;
break;
case 0x80:
/* Src is reg */
data[dst_address - 1] = (data[src_address] & 0xf) | 0x30;
break;
default:
abort ();
}
/* the offset must fit ! after all, what was all the relaxing
about ? */
bfd_put_8 (abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
data + dst_address);
/* Note the magic - src goes up by two bytes, but dst by only
one */
dst_address += 1;
src_address += 3;
break;
case R_JMP2:
/* Speciial relaxed type */
{
bfd_vma dot = link_order->offset
+ dst_address
+ link_order->u.indirect.section->output_section->vma;
int gap = (bfd_coff_reloc16_get_value (reloc, link_info, input_section)
- dot - 1);
if ((gap & ~0xff) != 0 && ((gap & 0xff00) != 0xff00))
abort ();
bfd_put_8 (abfd, gap, data + dst_address);
switch (data[dst_address - 1])
{
case 0x5e:
/* jsr -> bsr */
bfd_put_8 (abfd, 0x55, data + dst_address - 1);
break;
case 0x5a:
/* jmp ->bra */
bfd_put_8 (abfd, 0x40, data + dst_address - 1);
break;
default:
abort ();
}
dst_address++;
src_address += 3;
break;
}
break;
case R_JMPL_B8: /* 24 bit branch which is now 8 bits */
/* Speciial relaxed type */
{
bfd_vma dot = link_order->offset
+ dst_address
+ link_order->u.indirect.section->output_section->vma;
int gap = (bfd_coff_reloc16_get_value (reloc, link_info, input_section)
- dot - 2);
if ((gap & ~0xff) != 0 && ((gap & 0xff00) != 0xff00))
abort ();
switch (data[src_address])
{
case 0x5e:
/* jsr -> bsr */
bfd_put_8 (abfd, 0x55, data + dst_address);
break;
case 0x5a:
/* jmp ->bra */
bfd_put_8 (abfd, 0x40, data + dst_address);
break;
default:
bfd_put_8 (abfd, 0xde, data + dst_address);
break;
}
bfd_put_8 (abfd, gap, data + dst_address + 1);
dst_address += 2;
src_address += 4;
break;
}
case R_JMPL1:
{
int v = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
int o = bfd_get_32 (abfd, data + src_address);
v = (v & 0x00ffffff) | (o & 0xff000000);
bfd_put_32 (abfd, v, data + dst_address);
dst_address += 4;
src_address += 4;
}
break;
/* A 24 bit mov which could be an 8 bit move, really pointing to
the byte before the 24bit hole, so we can treat it as a 32bit pointer */
case R_MOVLB1:
{
int v = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
int o = bfd_get_32 (abfd, data + dst_address);
v = (v & 0x00ffffff) | (o & 0xff000000);
bfd_put_32 (abfd, v, data + dst_address);
dst_address += 4;
src_address += 4;
}
break;
default:
abort ();
break;
}
*src_ptr = src_address;
*dst_ptr = dst_address;
}
#define coff_reloc16_extra_cases h8300_reloc16_extra_cases
#define coff_reloc16_estimate h8300_reloc16_estimate
#define COFF_LONG_FILENAMES
#include "coffcode.h"
#undef coff_bfd_get_relocated_section_contents
#undef coff_bfd_relax_section
#define coff_bfd_get_relocated_section_contents \
bfd_coff_reloc16_get_relocated_section_contents
#define coff_bfd_relax_section bfd_coff_reloc16_relax_section
const bfd_target h8300coff_vec =
{
"coff-h8300", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | BFD_IS_RELAXABLE ),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading char */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+355
View File
@@ -0,0 +1,355 @@
/* BFD back-end for Hitachi H8/500 COFF binaries.
Copyright 1993, 1994 Free Software Foundation, Inc.
Contributed by Cygnus Support.
Written by Steve Chamberlain, <sac@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "obstack.h"
#include "libbfd.h"
#include "bfdlink.h"
#include "coff/h8500.h"
#include "coff/internal.h"
#include "libcoff.h"
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (1)
static reloc_howto_type r_imm8 =
HOWTO (R_H8500_IMM8, 0, 1, 8, false, 0,
complain_overflow_bitfield, 0, "r_imm8", true, 0x000000ff, 0x000000ff, false);
static reloc_howto_type r_imm16 =
HOWTO (R_H8500_IMM16, 0, 1, 16, false, 0,
complain_overflow_bitfield, 0, "r_imm16", true, 0x0000ffff, 0x0000ffff, false);
static reloc_howto_type r_imm24 =
HOWTO (R_H8500_IMM24, 0, 1, 24, false, 0,
complain_overflow_bitfield, 0, "r_imm24", true, 0x00ffffff, 0x00ffffff, false);
static reloc_howto_type r_imm32 =
HOWTO (R_H8500_IMM32, 0, 1, 32, false, 0,
complain_overflow_bitfield, 0, "r_imm32", true, 0xffffffff, 0xffffffff, false);
static reloc_howto_type r_high8 =
HOWTO (R_H8500_HIGH8, 0, 1, 8, false, 0,
complain_overflow_dont, 0, "r_high8", true, 0x000000ff, 0x000000ff, false);
static reloc_howto_type r_low16 =
HOWTO (R_H8500_LOW16, 0, 1, 16, false, 0,
complain_overflow_dont, 0, "r_low16", true, 0x0000ffff, 0x0000ffff, false);
static reloc_howto_type r_pcrel8 =
HOWTO (R_H8500_PCREL8, 0, 1, 8, true, 0, complain_overflow_signed, 0, "r_pcrel8", true, 0, 0, true);
static reloc_howto_type r_pcrel16 =
HOWTO (R_H8500_PCREL16, 0, 1, 16, true, 0, complain_overflow_signed, 0, "r_pcrel16", true, 0, 0, true);
static reloc_howto_type r_high16 =
HOWTO (R_H8500_HIGH16, 0, 1, 8, false, 0,
complain_overflow_dont, 0, "r_high16", true, 0x000ffff, 0x0000ffff, false);
/* Turn a howto into a reloc number */
static int
coff_h8500_select_reloc (howto)
reloc_howto_type *howto;
{
return howto->type;
}
#define SELECT_RELOC(x,howto) x.r_type = coff_h8500_select_reloc(howto)
#define BADMAG(x) H8500BADMAG(x)
#define H8500 1 /* Customize coffcode.h */
#define __A_MAGIC_SET__
/* Code to swap in the reloc */
#define SWAP_IN_RELOC_OFFSET bfd_h_get_32
#define SWAP_OUT_RELOC_OFFSET bfd_h_put_32
#define SWAP_OUT_RELOC_EXTRA(abfd, src, dst) \
dst->r_stuff[0] = 'S'; \
dst->r_stuff[1] = 'C';
/* Code to turn a r_type into a howto ptr, uses the above howto table
*/
static void
rtype2howto(internal, dst)
arelent * internal;
struct internal_reloc *dst;
{
switch (dst->r_type)
{
default:
abort ();
break;
case R_H8500_IMM8:
internal->howto = &r_imm8;
break;
case R_H8500_IMM16:
internal->howto = &r_imm16;
break;
case R_H8500_IMM24:
internal->howto = &r_imm24;
break;
case R_H8500_IMM32:
internal->howto = &r_imm32;
break;
case R_H8500_PCREL8:
internal->howto = &r_pcrel8;
break;
case R_H8500_PCREL16:
internal->howto = &r_pcrel16;
break;
case R_H8500_HIGH8:
internal->howto = &r_high8;
break;
case R_H8500_HIGH16:
internal->howto = &r_high16;
break;
case R_H8500_LOW16:
internal->howto = &r_low16;
break;
}
}
#define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry)
/* Perform any necessaru magic to the addend in a reloc entry */
#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \
cache_ptr->addend = ext_reloc.r_offset;
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
static void reloc_processing (relent, reloc, symbols, abfd, section)
arelent * relent;
struct internal_reloc *reloc;
asymbol ** symbols;
bfd * abfd;
asection * section;
{
relent->address = reloc->r_vaddr;
rtype2howto (relent, reloc);
if (reloc->r_symndx > 0)
{
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
}
else
{
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
}
static void
extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
bfd *in_abfd;
struct bfd_link_info *link_info;
struct bfd_link_order *link_order;
arelent *reloc;
bfd_byte *data;
unsigned int *src_ptr;
unsigned int *dst_ptr;
{
bfd_byte *d = data+*dst_ptr;
asection *input_section = link_order->u.indirect.section;
switch (reloc->howto->type)
{
case R_H8500_IMM8:
bfd_put_8 (in_abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
d);
(*dst_ptr) += 1;
(*src_ptr) += 1;
break;
case R_H8500_HIGH8:
bfd_put_8 (in_abfd,
(bfd_coff_reloc16_get_value (reloc, link_info, input_section)
>> 16),
d );
(*dst_ptr) += 1;
(*src_ptr) += 1;
break;
case R_H8500_IMM16:
bfd_put_16 (in_abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
d );
(*dst_ptr) += 2;
(*src_ptr) += 2;
break;
case R_H8500_LOW16:
bfd_put_16 (in_abfd,
bfd_coff_reloc16_get_value (reloc, link_info, input_section),
d);
(*dst_ptr) += 2;
(*src_ptr) += 2;
break;
case R_H8500_HIGH16:
bfd_put_16 (in_abfd,
(bfd_coff_reloc16_get_value (reloc, link_info, input_section)
>>16),
d);
(*dst_ptr) += 2;
(*src_ptr) += 2;
break;
case R_H8500_IMM24:
{
int v = bfd_coff_reloc16_get_value(reloc, link_info, input_section);
int o = bfd_get_32(in_abfd, data+ *dst_ptr -1);
v = (v & 0x00ffffff) | (o & 0xff00000);
bfd_put_32 (in_abfd, v, data + *dst_ptr -1);
(*dst_ptr) +=3;
(*src_ptr)+=3;;
}
break;
case R_H8500_IMM32:
{
int v = bfd_coff_reloc16_get_value(reloc, link_info, input_section);
bfd_put_32 (in_abfd, v, data + *dst_ptr);
(*dst_ptr) +=4;
(*src_ptr)+=4;;
}
break;
case R_H8500_PCREL8:
{
bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
bfd_vma dot = link_order->offset
+ *dst_ptr
+ link_order->u.indirect.section->output_section->vma;
int gap = dst - dot - 1; /* -1 since were in the odd byte of the
word and the pc's been incremented */
if (gap > 128 || gap < -128)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_8 (in_abfd, gap, data + *dst_ptr);
(*dst_ptr)++;
(*src_ptr)++;
break;
}
case R_H8500_PCREL16:
{
bfd_vma dst = bfd_coff_reloc16_get_value (reloc, link_info,
input_section);
bfd_vma dot = link_order->offset
+ *dst_ptr
+ link_order->u.indirect.section->output_section->vma;
int gap = dst - dot - 1; /* -1 since were in the odd byte of the
word and the pc's been incremented */
if (gap > 32767 || gap < -32768)
{
if (! ((*link_info->callbacks->reloc_overflow)
(link_info, bfd_asymbol_name (*reloc->sym_ptr_ptr),
reloc->howto->name, reloc->addend, input_section->owner,
input_section, reloc->address)))
abort ();
}
bfd_put_16 (in_abfd, gap, data + *dst_ptr);
(*dst_ptr)+=2;
(*src_ptr)+=2;
break;
}
default:
abort ();
}
}
#define coff_reloc16_extra_cases extra_case
#include "coffcode.h"
#undef coff_bfd_get_relocated_section_contents
#undef coff_bfd_relax_section
#define coff_bfd_get_relocated_section_contents \
bfd_coff_reloc16_get_relocated_section_contents
#define coff_bfd_relax_section bfd_coff_reloc16_relax_section
const bfd_target h8500coff_vec =
{
"coff-h8500", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading symbol underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+493
View File
@@ -0,0 +1,493 @@
/* BFD back-end for Intel 386 COFF files.
Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/i386.h"
#include "coff/internal.h"
#ifdef COFF_WITH_PE
#include "coff/pe.h"
#endif
#include "libcoff.h"
static bfd_reloc_status_type coff_i386_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static reloc_howto_type *coff_i386_rtype_to_howto
PARAMS ((bfd *, asection *, struct internal_reloc *,
struct coff_link_hash_entry *, struct internal_syment *,
bfd_vma *));
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
/* The page size is a guess based on ELF. */
#define COFF_PAGE_SIZE 0x1000
/* For some reason when using i386 COFF the value stored in the .text
section for a reference to a common symbol is the value itself plus
any desired offset. Ian Taylor, Cygnus Support. */
/* If we are producing relocateable output, we need to do some
adjustments to the object file that are not done by the
bfd_perform_relocation function. This function is called by every
reloc type to make any required adjustments. */
static bfd_reloc_status_type
coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
symvalue diff;
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
if (bfd_is_com_section (symbol->section))
{
/* We are relocating a common symbol. The current value in the
object file is ORIG + OFFSET, where ORIG is the value of the
common symbol as seen by the object file when it was compiled
(this may be zero if the symbol was undefined) and OFFSET is
the offset into the common symbol (normally zero, but may be
non-zero when referring to a field in a common structure).
ORIG is the negative of reloc_entry->addend, which is set by
the CALC_ADDEND macro below. We want to replace the value in
the object file with NEW + OFFSET, where NEW is the value of
the common symbol which we are going to put in the final
object file. NEW is symbol->value. */
diff = symbol->value + reloc_entry->addend;
}
else
{
/* For some reason bfd_perform_relocation always effectively
ignores the addend for a COFF target when producing
relocateable output. This seems to be always wrong for 386
COFF, so we handle the addend here instead. */
diff = reloc_entry->addend;
}
#ifdef COFF_WITH_PE
if (reloc_entry->howto->type == 7)
{
/* diff -= coff_data(output_bfd)->link_info->pe_info.image_base.value;*/
exit(1);
}
#endif
#define DOIT(x) \
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
switch (howto->size)
{
case 0:
{
char x = bfd_get_8 (abfd, addr);
DOIT (x);
bfd_put_8 (abfd, x, addr);
}
break;
case 1:
{
short x = bfd_get_16 (abfd, addr);
DOIT (x);
bfd_put_16 (abfd, x, addr);
}
break;
case 2:
{
long x = bfd_get_32 (abfd, addr);
DOIT (x);
bfd_put_32 (abfd, x, addr);
}
break;
default:
abort ();
}
}
/* Now let bfd_perform_relocation finish everything up. */
return bfd_reloc_continue;
}
#ifdef COFF_WITH_PE
/* Return true if this relocation should
appear in the output .reloc section. */
static boolean in_reloc_p(abfd, howto)
bfd * abfd;
reloc_howto_type *howto;
{
return ! howto->pc_relative && howto->type != R_IMAGEBASE;
}
#endif
#ifndef PCRELOFFSET
#define PCRELOFFSET false
#endif
static reloc_howto_type howto_table[] =
{
{0},
{1},
{2},
{3},
{4},
{5},
HOWTO (R_DIR32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"dir32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
true), /* pcrel_offset */
/* {7}, */
HOWTO (R_IMAGEBASE, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"rva32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
{010},
{011},
{012},
{013},
{014},
{015},
{016},
HOWTO (R_RELBYTE, /* type */
0, /* rightshift */
0, /* size (0 = byte, 1 = short, 2 = long) */
8, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"8", /* name */
true, /* partial_inplace */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_RELWORD, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"16", /* name */
true, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_RELLONG, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRBYTE, /* type */
0, /* rightshift */
0, /* size (0 = byte, 1 = short, 2 = long) */
8, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"DISP8", /* name */
true, /* partial_inplace */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRWORD, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"DISP16", /* name */
true, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRLONG, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i386_reloc, /* special_function */
"DISP32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
PCRELOFFSET) /* pcrel_offset */
};
/* Turn a howto into a reloc nunmber */
#define SELECT_RELOC(x,howto) { x.r_type = howto->type; }
#define BADMAG(x) I386BADMAG(x)
#define I386 1 /* Customize coffcode.h */
#define RTYPE2HOWTO(cache_ptr, dst) \
(cache_ptr)->howto = howto_table + (dst)->r_type;
/* For 386 COFF a STYP_NOLOAD | STYP_BSS section is part of a shared
library. On some other COFF targets STYP_BSS is normally
STYP_NOLOAD. */
#define BSS_NOLOAD_IS_SHARED_LIBRARY
/* Compute the addend of a reloc. If the reloc is to a common symbol,
the object file contains the value of the common symbol. By the
time this is called, the linker may be using a different symbol
from a different object file with a different value. Therefore, we
hack wildly to locate the original symbol from this file so that we
can make the correct adjustment. This macro sets coffsym to the
symbol from the original file, and uses it to set the addend value
correctly. If this is not a common symbol, the usual addend
calculation is done, except that an additional tweak is needed for
PC relative relocs.
FIXME: This macro refers to symbols and asect; these are from the
calling function, not the macro arguments. */
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
{ \
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
coffsym = (obj_symbols (abfd) \
+ (cache_ptr->sym_ptr_ptr - symbols)); \
else if (ptr) \
coffsym = coff_symbol_from (abfd, ptr); \
if (coffsym != (coff_symbol_type *) NULL \
&& coffsym->native->u.syment.n_scnum == 0) \
cache_ptr->addend = - coffsym->native->u.syment.n_value; \
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
&& ptr->section != (asection *) NULL) \
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
else \
cache_ptr->addend = 0; \
if (ptr && howto_table[reloc.r_type].pc_relative) \
cache_ptr->addend += asect->vma; \
}
/* We use the special COFF backend linker. */
#define coff_relocate_section _bfd_coff_generic_relocate_section
static reloc_howto_type *
coff_i386_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
bfd *abfd;
asection *sec;
struct internal_reloc *rel;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma *addendp;
{
reloc_howto_type *howto;
howto = howto_table + rel->r_type;
#ifdef COFF_WITH_PE
*addendp = 0;
#endif
if (howto->pc_relative)
*addendp += sec->vma;
if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
{
/* This is a common symbol. The section contents include the
size (sym->n_value) as an addend. The relocate_section
function will be adding in the final value of the symbol. We
need to subtract out the current size in order to get the
correct result. */
BFD_ASSERT (h != NULL);
#ifndef COFF_WITH_PE
/* I think we *do* want to bypass this. If we don't, I have seen some data
parameters get the wrong relcation address. If I link two versions
with and without this section bypassed and then do a binary comparison,
the addresses which are different can be looked up in the map. The
case in which this section has been bypassed has addresses which correspond
to values I can find in the map */
*addendp -= sym->n_value;
#endif
}
/* If the output symbol is common (in which case this must be a
relocateable link), we need to add in the final size of the
common symbol. */
if (h != NULL && h->root.type == bfd_link_hash_common)
*addendp += h->root.u.c.size;
#ifdef COFF_WITH_PE
if (howto->pc_relative)
*addendp -= 4;
if (rel->r_type == R_IMAGEBASE)
{
*addendp -= pe_data(sec->output_section->owner)->pe_opthdr.ImageBase;
}
#endif
return howto;
}
#define coff_bfd_reloc_type_lookup coff_i386_reloc_type_lookup
static reloc_howto_type *
coff_i386_reloc_type_lookup (abfd, code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
switch (code)
{
case BFD_RELOC_RVA:
return howto_table +R_IMAGEBASE;
case BFD_RELOC_32:
return howto_table + R_DIR32;
case BFD_RELOC_32_PCREL:
return howto_table + R_PCRLONG;
default:
BFD_FAIL ();
return 0;
}
}
#define coff_rtype_to_howto coff_i386_rtype_to_howto
#include "coffcode.h"
static const bfd_target *
i3coff_object_p(a)
bfd *a;
{
return coff_object_p(a);
}
const bfd_target
#ifdef TARGET_SYM
TARGET_SYM =
#else
i386coff_vec =
#endif
{
#ifdef TARGET_NAME
TARGET_NAME,
#else
"coff-i386", /* name */
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* header byte order is little */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef TARGET_UNDERSCORE
TARGET_UNDERSCORE, /* leading underscore */
#else
0, /* leading underscore */
#endif
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
/* Note that we allow an object file to be treated as a core file as well. */
{_bfd_dummy_target, i3coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, i3coff_object_p},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+423
View File
@@ -0,0 +1,423 @@
/* BFD back-end for Intel 860 COFF files.
Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
Created mostly by substituting "860" for "386" in coff-i386.c
Harry Dolan <dolan@ssd.intel.com>, October 1995
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/i860.h"
#include "coff/internal.h"
#include "libcoff.h"
static bfd_reloc_status_type coff_i860_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static reloc_howto_type *coff_i860_rtype_to_howto
PARAMS ((bfd *, asection *, struct internal_reloc *,
struct coff_link_hash_entry *, struct internal_syment *,
bfd_vma *));
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
/* The page size is a guess based on ELF. */
#define COFF_PAGE_SIZE 0x1000
/* For some reason when using i860 COFF the value stored in the .text
section for a reference to a common symbol is the value itself plus
any desired offset. Ian Taylor, Cygnus Support. */
/* If we are producing relocateable output, we need to do some
adjustments to the object file that are not done by the
bfd_perform_relocation function. This function is called by every
reloc type to make any required adjustments. */
static bfd_reloc_status_type
coff_i860_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
symvalue diff;
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
if (bfd_is_com_section (symbol->section))
{
/* We are relocating a common symbol. The current value in the
object file is ORIG + OFFSET, where ORIG is the value of the
common symbol as seen by the object file when it was compiled
(this may be zero if the symbol was undefined) and OFFSET is
the offset into the common symbol (normally zero, but may be
non-zero when referring to a field in a common structure).
ORIG is the negative of reloc_entry->addend, which is set by
the CALC_ADDEND macro below. We want to replace the value in
the object file with NEW + OFFSET, where NEW is the value of
the common symbol which we are going to put in the final
object file. NEW is symbol->value. */
diff = symbol->value + reloc_entry->addend;
}
else
{
/* For some reason bfd_perform_relocation always effectively
ignores the addend for a COFF target when producing
relocateable output. This seems to be always wrong for 860
COFF, so we handle the addend here instead. */
diff = reloc_entry->addend;
}
#define DOIT(x) \
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
if (diff != 0)
{
reloc_howto_type *howto = reloc_entry->howto;
unsigned char *addr = (unsigned char *) data + reloc_entry->address;
switch (howto->size)
{
case 0:
{
char x = bfd_get_8 (abfd, addr);
DOIT (x);
bfd_put_8 (abfd, x, addr);
}
break;
case 1:
{
short x = bfd_get_16 (abfd, addr);
DOIT (x);
bfd_put_16 (abfd, x, addr);
}
break;
case 2:
{
long x = bfd_get_32 (abfd, addr);
DOIT (x);
bfd_put_32 (abfd, x, addr);
}
break;
default:
abort ();
}
}
/* Now let bfd_perform_relocation finish everything up. */
return bfd_reloc_continue;
}
#ifndef PCRELOFFSET
#define PCRELOFFSET false
#endif
static reloc_howto_type howto_table[] =
{
{0},
{1},
{2},
{3},
{4},
{5},
HOWTO (R_DIR32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"dir32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
true), /* pcrel_offset */
/* {7}, */
HOWTO (R_IMAGEBASE, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"rva32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
{010},
{011},
{012},
{013},
{014},
{015},
{016},
HOWTO (R_RELBYTE, /* type */
0, /* rightshift */
0, /* size (0 = byte, 1 = short, 2 = long) */
8, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"8", /* name */
true, /* partial_inplace */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_RELWORD, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"16", /* name */
true, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_RELLONG, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRBYTE, /* type */
0, /* rightshift */
0, /* size (0 = byte, 1 = short, 2 = long) */
8, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"DISP8", /* name */
true, /* partial_inplace */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRWORD, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"DISP16", /* name */
true, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
PCRELOFFSET), /* pcrel_offset */
HOWTO (R_PCRLONG, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
coff_i860_reloc, /* special_function */
"DISP32", /* name */
true, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
PCRELOFFSET) /* pcrel_offset */
};
/* Turn a howto into a reloc nunmber */
#define SELECT_RELOC(x,howto) { x.r_type = howto->type; }
#define BADMAG(x) I860BADMAG(x)
#define I860 1 /* Customize coffcode.h */
#define RTYPE2HOWTO(cache_ptr, dst) \
(cache_ptr)->howto = howto_table + (dst)->r_type;
/* For 860 COFF a STYP_NOLOAD | STYP_BSS section is part of a shared
library. On some other COFF targets STYP_BSS is normally
STYP_NOLOAD. */
#define BSS_NOLOAD_IS_SHARED_LIBRARY
/* Compute the addend of a reloc. If the reloc is to a common symbol,
the object file contains the value of the common symbol. By the
time this is called, the linker may be using a different symbol
from a different object file with a different value. Therefore, we
hack wildly to locate the original symbol from this file so that we
can make the correct adjustment. This macro sets coffsym to the
symbol from the original file, and uses it to set the addend value
correctly. If this is not a common symbol, the usual addend
calculation is done, except that an additional tweak is needed for
PC relative relocs.
FIXME: This macro refers to symbols and asect; these are from the
calling function, not the macro arguments. */
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
{ \
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
coffsym = (obj_symbols (abfd) \
+ (cache_ptr->sym_ptr_ptr - symbols)); \
else if (ptr) \
coffsym = coff_symbol_from (abfd, ptr); \
if (coffsym != (coff_symbol_type *) NULL \
&& coffsym->native->u.syment.n_scnum == 0) \
cache_ptr->addend = - coffsym->native->u.syment.n_value; \
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
&& ptr->section != (asection *) NULL) \
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
else \
cache_ptr->addend = 0; \
if (ptr && howto_table[reloc.r_type].pc_relative) \
cache_ptr->addend += asect->vma; \
}
/* We use the special COFF backend linker. */
#define coff_relocate_section _bfd_coff_generic_relocate_section
static reloc_howto_type *
coff_i860_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
bfd *abfd;
asection *sec;
struct internal_reloc *rel;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma *addendp;
{
reloc_howto_type *howto;
howto = howto_table + rel->r_type;
if (howto->pc_relative)
*addendp += sec->vma;
if (sym != NULL && sym->n_scnum == 0 && sym->n_value != 0)
{
/* This is a common symbol. The section contents include the
size (sym->n_value) as an addend. The relocate_section
function will be adding in the final value of the symbol. We
need to subtract out the current size in order to get the
correct result. */
BFD_ASSERT (h != NULL);
/* I think we *do* want to bypass this. If we don't, I have seen some data
parameters get the wrong relcation address. If I link two versions
with and without this section bypassed and then do a binary comparison,
the addresses which are different can be looked up in the map. The
case in which this section has been bypassed has addresses which correspond
to values I can find in the map */
*addendp -= sym->n_value;
}
/* If the output symbol is common (in which case this must be a
relocateable link), we need to add in the final size of the
common symbol. */
if (h != NULL && h->root.type == bfd_link_hash_common)
*addendp += h->root.u.c.size;
return howto;
}
#define coff_rtype_to_howto coff_i860_rtype_to_howto
#include "coffcode.h"
static const bfd_target *
i3coff_object_p(a)
bfd *a;
{
return coff_object_p(a);
}
const bfd_target
#ifdef TARGET_SYM
TARGET_SYM =
#else
i860coff_vec =
#endif
{
#ifdef TARGET_NAME
TARGET_NAME,
#else
"coff-i860", /* name */
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* header byte order is little */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
/* Note that we allow an object file to be treated as a core file as well. */
{_bfd_dummy_target, i3coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, i3coff_object_p},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+683
View File
@@ -0,0 +1,683 @@
/* BFD back-end for Intel 960 COFF files.
Copyright (C) 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define I960 1
#define BADMAG(x) I960BADMAG(x)
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/i960.h"
#include "coff/internal.h"
#include "libcoff.h" /* to allow easier abstraction-breaking */
static bfd_reloc_status_type optcall_callback
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static bfd_reloc_status_type coff_i960_relocate
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static reloc_howto_type *coff_i960_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
static boolean coff_i960_start_final_link
PARAMS ((bfd *, struct bfd_link_info *));
static boolean coff_i960_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
struct internal_reloc *, struct internal_syment *, asection **));
static boolean coff_i960_adjust_symndx
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
struct internal_reloc *, boolean *));
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
/* The i960 does not support an MMU, so COFF_PAGE_SIZE can be
arbitrarily small. */
#define COFF_PAGE_SIZE 1
#define COFF_LONG_FILENAMES
/* This is just like the usual CALC_ADDEND, but it includes the
section VMA for PC relative relocs. */
#ifndef CALC_ADDEND
#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr) \
{ \
coff_symbol_type *coffsym = (coff_symbol_type *) NULL; \
if (ptr && bfd_asymbol_bfd (ptr) != abfd) \
coffsym = (obj_symbols (abfd) \
+ (cache_ptr->sym_ptr_ptr - symbols)); \
else if (ptr) \
coffsym = coff_symbol_from (abfd, ptr); \
if (coffsym != (coff_symbol_type *) NULL \
&& coffsym->native->u.syment.n_scnum == 0) \
cache_ptr->addend = 0; \
else if (ptr && bfd_asymbol_bfd (ptr) == abfd \
&& ptr->section != (asection *) NULL) \
cache_ptr->addend = - (ptr->section->vma + ptr->value); \
else \
cache_ptr->addend = 0; \
if (ptr && (reloc.r_type == 25 || reloc.r_type == 27)) \
cache_ptr->addend += asect->vma; \
}
#endif
#define CALLS 0x66003800 /* Template for 'calls' instruction */
#define BAL 0x0b000000 /* Template for 'bal' instruction */
#define BAL_MASK 0x00ffffff
static bfd_reloc_status_type
optcall_callback (abfd, reloc_entry, symbol_in, data,
input_section, ignore_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol_in;
PTR data;
asection *input_section;
bfd *ignore_bfd;
char **error_message;
{
/* This item has already been relocated correctly, but we may be
* able to patch in yet better code - done by digging out the
* correct info on this symbol */
bfd_reloc_status_type result;
coff_symbol_type *cs = coffsymbol(symbol_in);
/* Don't do anything with symbols which aren't tied up yet,
except move the reloc. */
if (bfd_is_und_section (cs->symbol.section)) {
reloc_entry->address += input_section->output_offset;
return bfd_reloc_ok;
}
/* So the target symbol has to be of coff type, and the symbol
has to have the correct native information within it */
if ((bfd_asymbol_flavour(&cs->symbol) != bfd_target_coff_flavour)
|| (cs->native == (combined_entry_type *)NULL))
{
/* This is interesting, consider the case where we're outputting coff
from a mix n match input, linking from coff to a symbol defined in a
bout file will cause this match to be true. Should I complain? This
will only work if the bout symbol is non leaf. */
*error_message =
(char *) "uncertain calling convention for non-COFF symbol";
result = bfd_reloc_dangerous;
}
else
{
switch (cs->native->u.syment.n_sclass)
{
case C_LEAFSTAT:
case C_LEAFEXT:
/* This is a call to a leaf procedure, replace instruction with a bal
to the correct location. */
{
union internal_auxent *aux = &((cs->native+2)->u.auxent);
int word = bfd_get_32(abfd, (bfd_byte *)data + reloc_entry->address);
int olf = (aux->x_bal.x_balntry - cs->native->u.syment.n_value);
BFD_ASSERT(cs->native->u.syment.n_numaux==2);
/* We replace the original call instruction with a bal to
the bal entry point - the offset of which is described in
the 2nd auxent of the original symbol. We keep the native
sym and auxents untouched, so the delta between the two
is the offset of the bal entry point. */
word = ((word + olf) & BAL_MASK) | BAL;
bfd_put_32(abfd, word, (bfd_byte *) data + reloc_entry->address);
}
result = bfd_reloc_ok;
break;
case C_SCALL:
/* This is a call to a system call, replace with a calls to # */
BFD_ASSERT(0);
result = bfd_reloc_ok;
break;
default:
result = bfd_reloc_ok;
break;
}
}
return result;
}
/* i960 COFF is used by VxWorks 5.1. However, VxWorks 5.1 does not
appear to correctly handle a reloc against a symbol defined in the
same object file. It appears to simply discard such relocs, rather
than adding their values into the object file. We handle this here
by converting all relocs against defined symbols into relocs
against the section symbol, when generating a relocateable output
file.
Note that this function is only called if we are not using the COFF
specific backend linker. It only does something when doing a
relocateable link, which will almost certainly fail when not
generating COFF i960 output, so this function is actually no longer
useful. It was used before this target was converted to use the
COFF specific backend linker. */
static bfd_reloc_status_type
coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section,
output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
asection *osec;
if (output_bfd == NULL)
{
/* Not generating relocateable output file. */
return bfd_reloc_continue;
}
if (bfd_is_und_section (bfd_get_section (symbol)))
{
/* Symbol is not defined, so no need to worry about it. */
return bfd_reloc_continue;
}
if (bfd_is_com_section (bfd_get_section (symbol)))
{
/* I don't really know what the right action is for a common
symbol. */
return bfd_reloc_continue;
}
/* Convert the reloc to use the section symbol. FIXME: This method
is ridiculous. */
osec = bfd_get_section (symbol)->output_section;
if (coff_section_data (output_bfd, osec) != NULL
&& coff_section_data (output_bfd, osec)->tdata != NULL)
reloc_entry->sym_ptr_ptr =
(asymbol **) coff_section_data (output_bfd, osec)->tdata;
else
{
const char *sec_name;
asymbol **syms, **sym_end;
sec_name = bfd_get_section_name (output_bfd, osec);
syms = bfd_get_outsymbols (output_bfd);
sym_end = syms + bfd_get_symcount (output_bfd);
for (; syms < sym_end; syms++)
{
if (bfd_asymbol_name (*syms) != NULL
&& (*syms)->value == 0
&& strcmp ((*syms)->section->output_section->name,
sec_name) == 0)
break;
}
if (syms >= sym_end)
abort ();
reloc_entry->sym_ptr_ptr = syms;
if (coff_section_data (output_bfd, osec) == NULL)
{
osec->used_by_bfd =
((PTR) bfd_zalloc (abfd,
sizeof (struct coff_section_tdata)));
if (osec->used_by_bfd == NULL)
return bfd_reloc_overflow;
}
coff_section_data (output_bfd, osec)->tdata = (PTR) syms;
}
/* Let bfd_perform_relocation do its thing, which will include
stuffing the symbol addend into the object file. */
return bfd_reloc_continue;
}
static reloc_howto_type howto_rellong =
HOWTO ((unsigned int) R_RELLONG, 0, 2, 32,false, 0,
complain_overflow_bitfield, coff_i960_relocate,"rellong", true,
0xffffffff, 0xffffffff, 0);
static reloc_howto_type howto_iprmed =
HOWTO (R_IPRMED, 0, 2, 24,true,0, complain_overflow_signed,
coff_i960_relocate, "iprmed ", true, 0x00ffffff, 0x00ffffff, 0);
static reloc_howto_type howto_optcall =
HOWTO (R_OPTCALL, 0,2,24,true,0, complain_overflow_signed,
optcall_callback, "optcall", true, 0x00ffffff, 0x00ffffff, 0);
static reloc_howto_type *
coff_i960_reloc_type_lookup (abfd, code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
switch (code)
{
default:
return 0;
case BFD_RELOC_I960_CALLJ:
return &howto_optcall;
case BFD_RELOC_32:
case BFD_RELOC_CTOR:
return &howto_rellong;
case BFD_RELOC_24_PCREL:
return &howto_iprmed;
}
}
/* The real code is in coffcode.h */
#define RTYPE2HOWTO(cache_ptr, dst) \
{ \
reloc_howto_type *howto_ptr; \
switch ((dst)->r_type) { \
case 17: howto_ptr = &howto_rellong; break; \
case 25: howto_ptr = &howto_iprmed; break; \
case 27: howto_ptr = &howto_optcall; break; \
default: howto_ptr = 0; break; \
} \
(cache_ptr)->howto = howto_ptr; \
}
/* i960 COFF is used by VxWorks 5.1. However, VxWorks 5.1 does not
appear to correctly handle a reloc against a symbol defined in the
same object file. It appears to simply discard such relocs, rather
than adding their values into the object file. We handle this by
converting all relocs against global symbols into relocs against
internal symbols at the start of the section. This routine is
called at the start of the linking process, and it creates the
necessary symbols. */
static boolean
coff_i960_start_final_link (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
{
bfd_size_type symesz = bfd_coff_symesz (abfd);
asection *o;
bfd_byte *esym;
if (! info->relocateable)
return true;
esym = (bfd_byte *) bfd_malloc (symesz);
if (esym == NULL)
return false;
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
return false;
for (o = abfd->sections; o != NULL; o = o->next)
{
struct internal_syment isym;
strncpy (isym._n._n_name, o->name, SYMNMLEN);
isym.n_value = 0;
isym.n_scnum = o->target_index;
isym.n_type = T_NULL;
isym.n_sclass = C_STAT;
isym.n_numaux = 0;
bfd_coff_swap_sym_out (abfd, (PTR) &isym, (PTR) esym);
if (bfd_write (esym, symesz, 1, abfd) != symesz)
{
free (esym);
return false;
}
obj_raw_syment_count (abfd) += 1;
}
free (esym);
return true;
}
/* The reloc processing routine for the optimized COFF linker. */
static boolean
coff_i960_relocate_section (output_bfd, info, input_bfd, input_section,
contents, relocs, syms, sections)
bfd *output_bfd;
struct bfd_link_info *info;
bfd *input_bfd;
asection *input_section;
bfd_byte *contents;
struct internal_reloc *relocs;
struct internal_syment *syms;
asection **sections;
{
struct internal_reloc *rel;
struct internal_reloc *relend;
rel = relocs;
relend = rel + input_section->reloc_count;
for (; rel < relend; rel++)
{
long symndx;
struct coff_link_hash_entry *h;
struct internal_syment *sym;
bfd_vma addend;
bfd_vma val;
reloc_howto_type *howto;
bfd_reloc_status_type rstat = bfd_reloc_ok;
boolean done;
symndx = rel->r_symndx;
if (symndx == -1)
{
h = NULL;
sym = NULL;
}
else
{
h = obj_coff_sym_hashes (input_bfd)[symndx];
sym = syms + symndx;
}
if (sym != NULL && sym->n_scnum != 0)
addend = - sym->n_value;
else
addend = 0;
switch (rel->r_type)
{
case 17: howto = &howto_rellong; break;
case 25: howto = &howto_iprmed; break;
case 27: howto = &howto_optcall; break;
default:
bfd_set_error (bfd_error_bad_value);
return false;
}
val = 0;
if (h == NULL)
{
asection *sec;
if (symndx == -1)
{
sec = bfd_abs_section_ptr;
val = 0;
}
else
{
sec = sections[symndx];
val = (sec->output_section->vma
+ sec->output_offset
+ sym->n_value
- sec->vma);
}
}
else
{
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
asection *sec;
sec = h->root.u.def.section;
val = (h->root.u.def.value
+ sec->output_section->vma
+ sec->output_offset);
}
else if (! info->relocateable)
{
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.string, input_bfd, input_section,
rel->r_vaddr - input_section->vma)))
return false;
}
}
done = false;
if (howto->type == R_OPTCALL && ! info->relocateable && symndx != -1)
{
int class;
if (h != NULL)
class = h->class;
else
class = sym->n_sclass;
switch (class)
{
case C_NULL:
/* This symbol is apparently not from a COFF input file.
We warn, and then assume that it is not a leaf
function. */
if (! ((*info->callbacks->reloc_dangerous)
(info,
"uncertain calling convention for non-COFF symbol",
input_bfd, input_section,
rel->r_vaddr - input_section->vma)))
return false;
break;
case C_LEAFSTAT:
case C_LEAFEXT:
/* This is a call to a leaf procedure; use the bal
instruction. */
{
long olf;
unsigned long word;
if (h != NULL)
{
BFD_ASSERT (h->numaux == 2);
olf = h->aux[1].x_bal.x_balntry;
}
else
{
bfd_byte *esyms;
union internal_auxent aux;
BFD_ASSERT (sym->n_numaux == 2);
esyms = (bfd_byte *) obj_coff_external_syms (input_bfd);
esyms += (symndx + 2) * bfd_coff_symesz (input_bfd);
bfd_coff_swap_aux_in (input_bfd, (PTR) esyms, sym->n_type,
sym->n_sclass, 1, sym->n_numaux,
(PTR) &aux);
olf = aux.x_bal.x_balntry;
}
word = bfd_get_32 (input_bfd,
(contents
+ (rel->r_vaddr - input_section->vma)));
word = ((word + olf - val) & BAL_MASK) | BAL;
bfd_put_32 (input_bfd,
word,
(contents
+ (rel->r_vaddr - input_section->vma)));
done = true;
}
break;
case C_SCALL:
BFD_ASSERT (0);
break;
}
}
if (! done)
{
if (howto->pc_relative)
addend += input_section->vma;
rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
contents,
rel->r_vaddr - input_section->vma,
val, addend);
}
switch (rstat)
{
default:
abort ();
case bfd_reloc_ok:
break;
case bfd_reloc_overflow:
{
const char *name;
char buf[SYMNMLEN + 1];
if (symndx == -1)
name = "*ABS*";
else if (h != NULL)
name = h->root.root.string;
else
{
name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
if (name == NULL)
return false;
}
if (! ((*info->callbacks->reloc_overflow)
(info, name, howto->name, (bfd_vma) 0, input_bfd,
input_section, rel->r_vaddr - input_section->vma)))
return false;
}
}
}
return true;
}
/* Adjust the symbol index of any reloc against a global symbol to
instead be a reloc against the internal symbol we created specially
for the section. */
/*ARGSUSED*/
static boolean
coff_i960_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp)
bfd *obfd;
struct bfd_link_info *info;
bfd *ibfd;
asection *sec;
struct internal_reloc *irel;
boolean *adjustedp;
{
struct coff_link_hash_entry *h;
*adjustedp = false;
h = obj_coff_sym_hashes (ibfd)[irel->r_symndx];
if (h == NULL
|| (h->root.type != bfd_link_hash_defined
&& h->root.type != bfd_link_hash_defweak))
return true;
irel->r_symndx = h->root.u.def.section->output_section->target_index - 1;
*adjustedp = true;
return true;
}
#define coff_start_final_link coff_i960_start_final_link
#define coff_relocate_section coff_i960_relocate_section
#define coff_adjust_symndx coff_i960_adjust_symndx
#define coff_bfd_reloc_type_lookup coff_i960_reloc_type_lookup
#include "coffcode.h"
const bfd_target icoff_little_vec =
{
"coff-Intel-little", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_LITTLE, /* header byte order is little */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
const bfd_target icoff_big_vec =
{
"coff-Intel-big", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_LITTLE, /* data byte order is little */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, /* bfd_set_format */
_bfd_generic_mkarchive, bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
+203
View File
@@ -0,0 +1,203 @@
/* BFD back-end for Motorola 68000 COFF binaries.
Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/m68k.h"
#include "coff/internal.h"
#include "libcoff.h"
#ifndef LYNX_SPECIAL_FN
#define LYNX_SPECIAL_FN 0
#endif
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
#ifndef COFF_PAGE_SIZE
/* The page size is a guess based on ELF. */
#define COFF_PAGE_SIZE 0x2000
#endif
/* Clean up namespace. */
#define m68kcoff_howto_table _bfd_m68kcoff_howto_table
#define m68k_rtype2howto _bfd_m68kcoff_rtype2howto
#define m68k_howto2rtype _bfd_m68kcoff_howto2rtype
#define m68k_reloc_type_lookup _bfd_m68kcoff_reloc_type_lookup
#ifdef ONLY_DECLARE_RELOCS
extern reloc_howto_type m68kcoff_howto_table[];
#else
reloc_howto_type m68kcoff_howto_table[] =
{
HOWTO(R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "8", true, 0x000000ff,0x000000ff, false),
HOWTO(R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "32", true, 0xffffffff,0xffffffff, false),
HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP8", true, 0x000000ff,0x000000ff, false),
HOWTO(R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP16", true, 0x0000ffff,0x0000ffff, false),
HOWTO(R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP32", true, 0xffffffff,0xffffffff, false),
HOWTO(R_RELLONG_NEG, 0, -2, 32, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "-32", true, 0xffffffff,0xffffffff, false),
};
#endif /* not ONLY_DECLARE_RELOCS */
#ifndef BADMAG
#define BADMAG(x) M68KBADMAG(x)
#endif
#define M68 1 /* Customize coffcode.h */
/* Turn a howto into a reloc number */
#ifdef ONLY_DECLARE_RELOCS
extern void m68k_rtype2howto PARAMS ((arelent *internal, int relocentry));
extern int m68k_howto2rtype PARAMS ((reloc_howto_type *));
extern reloc_howto_type *m68k_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
#else
void
m68k_rtype2howto(internal, relocentry)
arelent *internal;
int relocentry;
{
switch (relocentry)
{
case R_RELBYTE: internal->howto = m68kcoff_howto_table + 0; break;
case R_RELWORD: internal->howto = m68kcoff_howto_table + 1; break;
case R_RELLONG: internal->howto = m68kcoff_howto_table + 2; break;
case R_PCRBYTE: internal->howto = m68kcoff_howto_table + 3; break;
case R_PCRWORD: internal->howto = m68kcoff_howto_table + 4; break;
case R_PCRLONG: internal->howto = m68kcoff_howto_table + 5; break;
case R_RELLONG_NEG: internal->howto = m68kcoff_howto_table + 6; break;
}
}
int
m68k_howto2rtype (internal)
reloc_howto_type *internal;
{
if (internal->pc_relative)
{
switch (internal->bitsize)
{
case 32: return R_PCRLONG;
case 16: return R_PCRWORD;
case 8: return R_PCRBYTE;
}
}
else
{
switch (internal->bitsize)
{
case 32: return R_RELLONG;
case 16: return R_RELWORD;
case 8: return R_RELBYTE;
}
}
return R_RELLONG;
}
reloc_howto_type *
m68k_reloc_type_lookup (abfd, code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
switch (code)
{
default: return NULL;
case BFD_RELOC_8: return m68kcoff_howto_table + 0;
case BFD_RELOC_16: return m68kcoff_howto_table + 1;
case BFD_RELOC_CTOR:
case BFD_RELOC_32: return m68kcoff_howto_table + 2;
case BFD_RELOC_8_PCREL: return m68kcoff_howto_table + 3;
case BFD_RELOC_16_PCREL: return m68kcoff_howto_table + 4;
case BFD_RELOC_32_PCREL: return m68kcoff_howto_table + 5;
/* FIXME: There doesn't seem to be a code for R_RELLONG_NEG. */
}
/*NOTREACHED*/
}
#endif /* not ONLY_DECLARE_RELOCS */
#define RTYPE2HOWTO(internal, relocentry) \
m68k_rtype2howto(internal, (relocentry)->r_type)
#define SELECT_RELOC(external, internal) \
external.r_type = m68k_howto2rtype(internal);
#define coff_bfd_reloc_type_lookup m68k_reloc_type_lookup
#define coff_relocate_section _bfd_coff_generic_relocate_section
#include "coffcode.h"
const bfd_target
#ifdef TARGET_SYM
TARGET_SYM =
#else
m68kcoff_vec =
#endif
{
#ifdef TARGET_NAME
TARGET_NAME,
#else
"coff-m68k", /* name */
#endif
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#ifdef NAMES_HAVE_UNDERSCORE
'_',
#else
0, /* leading underscore */
#endif
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE
};
+311
View File
@@ -0,0 +1,311 @@
/* BFD back-end for Motorola 88000 COFF "Binary Compatability Standard" files.
Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define M88 1 /* Customize various include files */
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
#include "obstack.h"
#include "coff/m88k.h"
#include "coff/internal.h"
#include "libcoff.h"
static bfd_reloc_status_type m88k_special_reloc
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
static void rtype2howto PARAMS ((arelent *, struct internal_reloc *));
static void reloc_processing
PARAMS ((arelent *, struct internal_reloc *, asymbol **, bfd *, asection *));
#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
static bfd_reloc_status_type
m88k_special_reloc (abfd, reloc_entry, symbol, data,
input_section, output_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol;
PTR data;
asection *input_section;
bfd *output_bfd;
char **error_message;
{
reloc_howto_type *howto = reloc_entry->howto;
switch (howto->type)
{
case R_HVRT16:
case R_LVRT16:
if (output_bfd != (bfd *) NULL)
{
/* This is a partial relocation, and we want to apply the
relocation to the reloc entry rather than the raw data.
Modify the reloc inplace to reflect what we now know. */
reloc_entry->address += input_section->output_offset;
}
else
{
bfd_vma output_base = 0;
bfd_vma addr = reloc_entry->address;
bfd_vma x = bfd_get_16 (abfd, (bfd_byte *) data + addr);
asection *reloc_target_output_section;
long relocation = 0;
/* Work out which section the relocation is targetted at and the
initial relocation command value. */
/* Get symbol value. (Common symbols are special.) */
if (bfd_is_com_section (symbol->section))
relocation = 0;
else
relocation = symbol->value;
reloc_target_output_section = symbol->section->output_section;
/* Convert input-section-relative symbol value to absolute. */
if (output_bfd)
output_base = 0;
else
output_base = reloc_target_output_section->vma;
relocation += output_base + symbol->section->output_offset;
/* Add in supplied addend. */
relocation += ((reloc_entry->addend << howto->bitsize) + x);
reloc_entry->addend = 0;
relocation >>= (bfd_vma) howto->rightshift;
/* Shift everything up to where it's going to be used */
relocation <<= (bfd_vma) howto->bitpos;
if (relocation)
bfd_put_16 (abfd, relocation, (unsigned char *) data + addr);
}
return bfd_reloc_ok;
break;
default:
if (output_bfd != (bfd *) NULL)
{
/* This is a partial relocation, and we want to apply the
relocation to the reloc entry rather than the raw data.
Modify the reloc inplace to reflect what we now know. */
reloc_entry->address += input_section->output_offset;
return bfd_reloc_ok;
}
break;
}
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
return bfd_reloc_ok;
}
static reloc_howto_type howto_table[] =
{
HOWTO (R_PCR16L, /* type */
02, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"PCR16L", /* name */
false, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
true), /* pcrel_offset */
HOWTO (R_PCR26L, /* type */
02, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
26, /* bitsize */
true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"PCR26L", /* name */
false, /* partial_inplace */
0x03ffffff, /* src_mask */
0x03ffffff, /* dst_mask */
true), /* pcrel_offset */
HOWTO (R_VRT16, /* type */
00, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"VRT16", /* name */
false, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
true), /* pcrel_offset */
HOWTO (R_HVRT16, /* type */
16, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"HVRT16", /* name */
false, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
true), /* pcrel_offset */
HOWTO (R_LVRT16, /* type */
00, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"LVRT16", /* name */
false, /* partial_inplace */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
true), /* pcrel_offset */
HOWTO (R_VRT32, /* type */
00, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
m88k_special_reloc, /* special_function */
"VRT32", /* name */
false, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
true), /* pcrel_offset */
};
/* Code to turn an external r_type into a pointer to an entry in the
above howto table. */
static void
rtype2howto (cache_ptr, dst)
arelent *cache_ptr;
struct internal_reloc *dst;
{
if (dst->r_type >= R_PCR16L && dst->r_type <= R_VRT32)
{
cache_ptr->howto = howto_table + dst->r_type - R_PCR16L;
}
else
{
BFD_ASSERT (0);
}
}
#define RTYPE2HOWTO(cache_ptr, dst) rtype2howto (cache_ptr, dst)
/* Code to swap in the reloc offset */
#define SWAP_IN_RELOC_OFFSET bfd_h_get_16
#define SWAP_OUT_RELOC_OFFSET bfd_h_put_16
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
static void
reloc_processing (relent, reloc, symbols, abfd, section)
arelent *relent;
struct internal_reloc *reloc;
asymbol **symbols;
bfd *abfd;
asection *section;
{
relent->address = reloc->r_vaddr;
rtype2howto (relent, reloc);
if (((int) reloc->r_symndx) > 0)
{
relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
}
else
{
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
}
relent->addend = reloc->r_offset;
relent->address -= section->vma;
}
#define BADMAG(x) MC88BADMAG(x)
#include "coffcode.h"
#undef coff_write_armap
const bfd_target m88kbcs_vec =
{
"coff-m88kbcs", /* name */
bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
(HAS_RELOC | EXEC_P | /* object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
'_', /* leading underscore */
'/', /* ar_pad_char */
15, /* ar_max_namelen */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */
bfd_getb64, bfd_getb_signed_64, bfd_putb64,
bfd_getb32, bfd_getb_signed_32, bfd_putb32,
bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, _bfd_dummy_target},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
BFD_JUMP_TABLE_SYMBOLS (coff),
BFD_JUMP_TABLE_RELOCS (coff),
BFD_JUMP_TABLE_WRITE (coff),
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
COFF_SWAP_TABLE,
};
Loaded 100 of 4900 files, more files were not shown because too many files have changed in this diff. Show more