Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
ok miod@ and espie@
|
|
Change configuration to mips64 with default ABI = N64 (enhanced 64 bit ABI)
we also support the older O32 and N32 abi for building boot stuff.
|
|
inter-library function calls where the callee would change the GOT register
but not restore it when returning to its caller.
Helps immensely libpthread, as well as dynamically-linked X11 clients.
Fromm gcc 3; tested by matthieu@, nick@ and todd@; ok deraadt@
|
|
noticed by marco@
okay millert@
|
|
|
|
|
|
ok mickey@
|
|
|
|
found thx to mmap malloc.
okay millert@ deraadt@
|
|
message from gcc at Configure time confuses some people...
|
|
ok tedu@
|
|
|
|
instead of assuming the region after the first mmap is available. Same
change was made to ELF ld.so previously. ok deraadt miod pvalchev
|
|
-fno-strict-aliasing. Avoid the need for compiling some bits
with -O1 on arm (and others). Problem debugged and OK miod@
|
|
|
|
|
|
malloc and reproducible via guard pages. OK deraadt@ miod@ tdeval@
|
|
on amd64 and was working on sparc64 by sheer luck (because we are not Solaris).
|
|
ok deraadt@
|
|
|
|
|
|
|
|
remove now-unused files
crank libperl shared library major number
update Makefile.bsd-wrapper
tweak openbsd hints file for arm and m68k
|
|
|
|
OK from kettenis@, deraadt@
|
|
|
|
Fix stepping over functions on vax.
ok tdeval@
|
|
when doing bounds checking (bug revealed by mmap malloc).
Noticed by krause@, tested otto@
|
|
fixes SIGV on m68k.
ok tdeval@ millert@
|
|
|
|
ok mickey@
|
|
changes address incorrect stack usage, when optimization needs more
nameless temporary values than available registers, and has to save them
on stack.
In some (rare) circumstances, it will compute a stack address _outside_
the current function local storage space, overwriting the caller's stack.
Most of the time, this only affects the "outgoing argument area", which is
harmless if it has not been populated; this explains why it has not been
noticed earlier.
Since I see no easy way to fix this, I decided to go the simpler way of
removing this ougoing argument area. This not only reduces stack usage,
but also makes varargs/stdarg code smaller and faster; also functions which
get their first few arguments in registers, then some on the stack, then
some in registers again, will not allocate stack space for the second
set of arguments passed through registers.
This is an ABI change, we are no longer 88Open compliant (have we ever
been?).
|
|
from Jonathan Gray (PR #3870);
ok millert@
|
|
again; stabs doesn't work for 64-bit code.
ok miod@, espie@
|
|
work for code compiled at -O0...
|
|
ok miod@, wow deraadt@
|
|
knowing that the area we are using is correctly aligned.
Produces smaller and faster code (about 0.8% time decrease in a complete
build, which amounts to roughly 15 minutes).
|
|
the sole purpose of making these easier to spot and exterminate.
tested by various people on amd64 and I on arm&sparc64, ok deraadt@
|
|
for registers if at least one nameless argument is passed through registers;
instead, only allocate as many bytes as necessary.
Slightly reduces stack usage; no ABI change.
|
|
current_function_{stdarg,varargs} instead of homegrown implementation, etc.
No functional change.
|
|
fixes C++ exceptions.
this relies on an earlier libstdc++ bump
|
|
and they have different major numbers to prevent collision.
|
|
To build you must:
cd /usr/src && make obj && make includes
cd lib/libc && make depend && make && NOMAN=1 sudo make install
cd /usr/src && make build
|
|
The problem really only arises when optimize_reg_copy_3() attempts to
merge a load which fits in a register and a load which does not fit - in
the m68k case, merging an int32_t foo and (int64_t)foo two lines later.
In this case, and only if the backend provides its own expansion of the
extendsidi2 insn (usually for performance and code size reasons) as
embedded assembly statements but not rtl operations, then gcc at this
point will ``fail to realize'' that when sign-extending (or
zero-extending) the value of rN into rN and r(N+1), the value of rN is
not preserved on big-endian architectures, and the optimization will
produce bad code.
Of all the OpenBSD-supported platforms, arm and m68k are the only
affected; but further optimizations in gcc3 (on arm) apparently neuter
this bug, which I have been unable to reproduce in an arm build with
gcc3.
This commit works around the problem by preventing expansions larger
than the width of a general register, on m68k only. Other platforms are
not affected.
|
|
suggested by Alexey E. Suslikov;
ok millert@
|
|
|
|
forgot to commit this with the .mk changes, sparc was broken for a while
|