here mostly mirror the changes made in
boot/efi/libefi/arch/ia64/start.S rev 1.5
Significant difference: We don't handle the IPLT relocation here.
For barebones KLD support, we make the fptr_storage global.
o We don't expect the PLT relocations to follow the .rela section
anymore. We still assume that PLT relocations are long formed,
o Document register usage,
o Improve ILP,
o Fix the FPTR relocation by creating unique OPDs per function.
Comparing functions is valid now,
o The IPLT relocation naturally handles the addend. Deal with it.
We ignore the addend for FPTR relocations for now. It's not at
all clear what it means anyway.
Fix ABI misinterpretation:
o For Elf_Rela relocations, the addend is explicit and should not
be loaded from the memory address we're relocating. Only do that
for Elf_Rel relocations (ie the short form).
o DIR64LSB is not the same as REL64LSB. DIR64LSB applies to a
symbol (S+A), whereas REL64LSB applies to the base address (BD+A),
user stack in response to a failed window fill, allowing the process to be
killed if its wrong. This caused user programs which misalign their stack
pointer to get stuck in an infinite loop at the kernel-userland boundary,
which is mostly harmless.
The same thing causes a fatal RED state exception on OpenBSD and probably
NetBSD.
Inspired by: art@openbsd.org
VOP_OPEN() and doing lots of manual checking. This would further
centralize use of the name functions, and once the MAC code is integrated,
meaning few extraneous MAC checks scattered all over the place. I don't
have time to fix this now, but want to make sure it doesn't get
forgotten. Anyone interested in fixing this should feel free.
Obtained from: TrustedBSD Project
Sponsored by: DARPA, NAI Labs
in various extattr_*() calls to match the rest of the file. Originally,
these bits at the end looked more like style(9). This patch was submitted
by green by way of the TrustedBSD MAC tree, and I fixed a few problems
with it on the way through. Someone with more time on their hands should
convert the entire file to style(9); this commit is for diff reduction
purposes.
Submitted by: green
Obtained from: TrustedBSD Project
Sponsored by: DARPA, NAI Labs
-stable machine via the old-school methods):
Use __FreeBSD_version in preference to __FreeBSD__ >= N where possible.
Define a single variable mythread which is set to curproc or curthread
depending on the OS version (with a comment saying it is a white lie on
4.x since it really is a proc).
NB: __FreeBSD__ is the OS level of the host machine, not the target,
and should never be used, if possible, as __FreeBSD__ >= N.
constructing a struct aio and invoking VOP_READ() directly. This cleans
up the code a little, but also has the advantage of making sure almost
all vnode read/write access in the kernel goes through the helper
function, meaning that instrumentation of that helper function can impact
almost all relevant read/write operations. In this case, it permits us
to put MAC hooks into vn_rdwr() and not modify uipc_syscalls.c (yet).
In general, if helper vn_*() functions exist, they should be used in
preference to direct VOP's in system call service code.
Submitted by: green
Obtained from: TrustedBSD Project
Sponsored by: DARPA, NAI Labs
needed in the current code, in the MAC tree, create_init() relies on the
ability to modify the credentials present for initproc, and should not
perform that modification on a shared credential. Pro-active diff
reduction against MAC changes that are in the queue; also facilitates
other work, including the capabilities implementation.
Submitted by: green
Obtained from: TrustedBSD Project
Sponsored by: DARPA, NAI Labs
o Make the cam, cd9660 lomac and sound modules i386 and alpha
specific due to link problems (@gprel relocation when @ltoff
is required). Once resolved, these can be moved back to the
generic list.
o Build linprocfs only on those architectures that have the
linux module.
o Make the sppp module i386 and alpha specific due to compile
problems (pointers as switch cases). Once resolved, this can
be moved back to the generic list.
o Build all i386 specific modules, with the exception of those
mentioned above as being moved from the generic list to the
i386 list and those with dependencies on the linux module (aac)
or i386 dependent (ar, apm, atspeaker, fpu, gnufpu, ibcs2,
linux, ncv, nsp, netgraph, oltr, pecoff, s3, sbni, stg and
vesa).
o Don't build acpi as a module yet. It most be ported first.
Once ported, it can be added to the ia64 list.
o Don't build ipfilter yet due to compile errors (osreldate.h
not found).