| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is unsafe to detect and use NEON or VFP instructions at
runtime in a binary built using default compiler options.
This is because the UnixLib runtime will only create and manage
floating point contexts if -mfloat-abi is set to "softfp" at
build time (which may occur automagically based on other
compiler switches such as -mfpu). This is further complicated
by the need to build a VFP-capable binary or else UnixLib will
enable its FPA support code instead.
Neither is desirable as FPA emulation will just be slower than
soft float and VFP will restrict the binary to ARMv6 or later
(and, even then, only certain CPUs) which would disappoint
all the users still running RiscPCs, A9Homes, or Iyonixes.
So disable this feature detection, until we can make
UnixLib enable support code based on runtime, rather than
(or, in addition to) compile-time, tests.
|
|
|
|
|
|
|
| |
I'd misread the code before and missed that some register aliases
map to the same register. Upshot being, we were trampling over all
kinds of things -- it's surprising that the worst outcome was a
TLS handshake failure, and not violent crashes.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile:
Update to reflect upstream tree structure
* recipes/patches/gcc4/binutils-plugins.p,
recipes/patches/gcc4/gmp-force-build.p:
Refresh context
* recipes/patches/gcc4/python2.5.p:
Drop: Python 2.5 is ancient
* recipes/patches/gcc4/riscos.md.p:
Drop: merged upstream
|
| |
|
| |
|
|
|
|
|
| |
This is required to address an issue with poll returning bad fd errors
which cause netsurf fetches to fail.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Given a function such as this:
void foo(void)
{
register unsigned int sp __asm__("sp");
_exit(sp);
}
GCCSDK 4.7.4 release 1 will generate the following output
when the optimiser is enabled (it doesn't matter which
optimisation level is chosen, so long as it's >0):
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
cmp sp, sl
bllt __rt_stkovf_split_small
mov r0, sp
bl _exit
If this function is called from a parent that has caused the
current stack chunk to be fully utilised (i.e. SP on entry
to foo is less than SL), then the stack chunk extender will
be called.
__rt_stkovf_split_small will replace the return address of the
current stack frame with the address of the stack chunk cleanup
function (that foo is effectively noreturn doesn't matter here).
The real return address is squirreled away in a field at the base
of the new stack chunk, and will be retrieved by the cleanup code.
In the function prologue emitted above, however, the frame pointer
is not updated before the stack check is performed. The result is
that the *parent* function's stack frame will be modified instead.
This causes much badness as the parent function is using a
completely different stack chunk and so, when it returns to its
parent, we will very likely branch through zero (if the parent's
stack chunk is the initial chunk) or return to some unexpected
place further up the call stack, most likely with the wrong
result values (if the parent's stack chunk is not the initial
chunk)
To fix this, we mark rt_stkovf_v5_clobbered as using r11 (fp),
in much the same way as rt_stkovf already does. This prevents
the peephole optimiser optimising out the frame pointer update.
This results in this much more sensible output:
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
cmp sp, sl
bllt __rt_stkovf_split_small
mov r0, sp
bl _exit
This ensures that the correct stack frame is modified by
__rt_stkovf_split_small.
Note that, in this particular case, foo does not return, so
the stack chunk cleaning won't happen. This isn't really a
problem, as the only real ways out of functions which do not
return are process exit, or longjmp which, in the UnixLib
implementation, explicitly cleans up stack chunks before returning
control to the location specified in the jmp_buf.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This uses the Fedora mingw-libgnurx package approach to make the
autofoo in the gnurx library less broken allowing teh generation of
static libraries.
|
|
|
|
| |
Fixes several security issues and render problems with some font file types.
|
|
|
|
| |
This edition of libcurl fixes several CVE so our toolchains should use it.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
download URL
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Versions of libpng from 1.6.9 through to 1.6.15 have an integer-overflow
vulnerability in png_combine_row() when decoding very wide interlaced
images, which can allow an attacker to overwrite an arbitrary amount of
memory with attacker-controlled data.
This bug is fixed in version 1.6.16.
|
|
|
|
| |
Curl binary still doesn't work, but everything else seems OK.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes to using the 3.4 series gcc with patches from
github:cahirwpz/m68k-amigaos-toolchain and some other modifications to
make it compile.
clib2 is currently failing to build with this compiler with the
following errors:
Compiling unistd_getopt.c [large_data_020:c]
/tmp/ccrQcqYy.s: Assembler messages:
/tmp/ccrQcqYy.s:36: Error: parse error -- statement `cmpl (sp.0),d0' ignored
/tmp/ccrQcqYy.s:58: Error: parse error -- statement `movel (sp.0),a0' ignored
/tmp/ccrQcqYy.s:86: Error: parse error -- statement `addql #1,(sp.0)' ignored
/tmp/ccrQcqYy.s:89: Error: parse error -- statement `movel (sp.0),a0' ignored
/tmp/ccrQcqYy.s:94: Error: parse error -- statement `movel d0,(sp.0)' ignored
/tmp/ccrQcqYy.s:104: Error: parse error -- statement `addl (sp.0),a0' ignored
/tmp/ccrQcqYy.s:129: Error: parse error -- statement `movel d0,(sp.0)' ignored
/tmp/ccrQcqYy.s:139: Error: parse error -- statement `movel d0,(sp.0)' ignored
/tmp/ccrQcqYy.s:143: Error: parse error -- statement `addql #1,(sp.0)' ignored
/tmp/ccrQcqYy.s:146: Error: parse error -- statement `movel (sp.0),a0' ignored
/tmp/ccrQcqYy.s:150: Error: parse error -- statement `movel d0,(sp.0)' ignored
make[2]: *** [large_data_020/libc_objs/unistd_getopt.o] Error 1
|
|
|
|
| |
patcher complaining.
|
|
|
|
| |
NB: this does not result in a working curl binary, so libcurl probably doesn't work either.
|
| |
|
| |
|
| |
|
|
|
|
| |
either.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Virtually all libpng versions up to and including 1.6.14, have an
out-of-bounds memory access in png_user_version_check().
It is unclear whether this could lead to an actual exploit.
The bug is fixed in version 1.6.15.
|