Age | Commit message (Collapse) | Author |
|
To actually use it, one must define _DL_DO_FINI_IN_LIBC globally.
That will also break ABI for apps linked with previous version of crtX.S.
They must be relinked with this version to work again.
|
|
size and performance penalty to profiling applications this way, as well as
Heisenberg effects, where the act of measuring changes what is measured.
There are better tools for doing profiling, such as OProfile, that do not
require gcc to instrument the application code.
-Erik
|
|
have it. It is used by the boehm gc, amoung other things.
|
|
|
|
Hello Erik!
I have made some cosmetical changes to the files, removed the added
SCRT=-fPIC option from building the crt0.S file (but it is a requirement
to build them with -fPIC), and changed some comments. I have left the
ldso.c patch with PIE_SUPPORT ifdefs, but consider applying it w/o them
(see some earlier comment from PaX Team on this issue, as it is considered
a bug). To have it work correctly, you'll also need removing
COMPLETELY_PIC.
One thing is missing: PIE_SUPPORT should be usable only for i386 (for
now).
Also added the support for propolice protection (that works for me and
catches memcpy/strcpy attacks (but needs a special gcc version).
Thanks, Peter
|
|
|
|
|
|
generate a crt0 and crt1 file. Most arches still need
to be updated to call __uClibc_start_main() rather than
__uClibc_main().
|
|
be weak so people won't need to fix their compilers
|
|
build a crt0.o and a crt1.o. crt1.o will support ctors and dtors if
such support is enabled. One more gratuitous toolchain support issue
is thereby removed...
-Erik
|
|
|
|
configurable, so people who do not need or want ctor/dtor support
can disable it and make their binaries a little bit smaller.
-Erik
|
|
how uClibc handles _init and _fini, allowing shared lib constructors and
destructors to initialize things in the correct sequence. Stefan ported the SH
architecture. I then ported x86, arm, and mips. x86 and arm are working fine,
but I don't think I quite got things correct for mips.
|
|
-Erik
|
|
(undefined reference to `main') when the .o file containing main was contained
in an static library(a '.a' ar archive). It turns out that due to its single
pass nature, GNU ld was failing to pull it into the build. This sticks a dummy
reference to main() into crt0.o, so that when an application is linked with the
main() function in a static library, we can be sure that main() actually gets
linked in.
-Erik
|
|
these stubs were preventing the real stuff from working properly.
-Erik
|
|
|
|
|
|
|
|
respective crt0.S. crt0.S should now only be responsible for setting things
up to call __uClibc_main(argc, argv, envp), which will do any other necessary
setup (setting global __environ, stdio init, etc), call main, and exit. This
should ease both maintainance and porting.
|
|
we don't blow up by using too much stack space, and simplifies the job of
supporting new architectures, since they don't have to mess with calling foo
init functions in crt0 and cleaning up the resulting damage.
-Erik
|
|
"I will always compile before I commit."
"I will always compile before I commit."
-Erik
|
|
|
|
|
|
|