Age | Commit message (Collapse) | Author |
|
Mips did not honour the LD_BIND_NOW env. variable or the DT_BIND_NOW flag
in the dynamic section.
|
|
Andrew de Quincey, who has been most helpful getting this sorted
out, thanks. Thanks also to Peter Mazinger who did alot of testing.
Removed all traces of dl_parse_copy_information() since it is no longer used.
|
|
- Replace all open coded dynamic handling with a function. Reduces size.
- Fold special MIPS dynamic code into the dynamic_info item.
- Add RELRO support.
- Support linking with "-z now".
- prepare for DT_RELACOUNT/DT_RELCOUNT optimization.
- Add -z now to ld.so linking, this is what ld.so does anyway so
let the linker know that.
|
|
up a bit. Native and remote debugging of shared libs and threaded apps now
works on mips.
|
|
Remove definition of _dl_parse_copy_information() for powerpc.
Remaining archs can do the same.
Make debugging output of "relocation processing: xxx" a bit more sane.
|
|
Hello!
Here is the modified unsecvars patch that applies to cvs.
|
|
From Peter Mazinger.
|
|
After the addition of a configuration option for
enabling the support of /etc/ld.so.cache, I thought
it might be a good idea to add one for the support
of the /etc/ld.so.preload file too. So here it is.
While doing this, I also noticed that the dynamic
linker would hang indefinitely if either LD_PRELOAD
or /etc/ld.so.preload contained a library which was
already loaded, so I made a patch for that too.
And of course, I could not resist from doing a little
clean up of comments and indentation, so here is a
patch for that too.
|
|
This needs testing with apps that have complex dependencies.
|
|
|
|
|
|
Now all functions and vaiables can be made static to reduce relocs.
Basicly, all variables should be merged into one struct variable
and then export that struct. Exported functions should be exported
as functions pointers in the above struct. This will reduce the
number of relocs inside ldso to a handful.
Add -Bsymbolic to linker for ldso. This will resolve all functions
(all JMP_SLOT goes away) and the remaining relocs are transformed into
RELATIVE relocs.
|
|
misread this code and removed it, sorry.
I printed the values of _dl_brkp and _dl_envp in ldso and
got this when executing:
ls:
__curbrk: 0x300c16e0
__environ: 0x1008372c
ldd:
__curbrk: 0x300776e0
__environ: 0x3007759c
why is__environ in the app when executing ls but not ldd?
|
|
|
|
the whole lot in a single pass.
-Erik
|
|
This removes some crap in libdl.c(and future libs which needs
to access ldso functions).
What do you think?
|
|
only the global GOT entry relocations for the loaded shared libs were being
handled. This made applications segfault when using un-fixedup symbols. After
many hours debugging to track down the problem, this patch makes the mips port
happy again.
-Erik
|
|
Remove unused function parameter in ldso.
Remove echo option '-e' since it is not supported on Solaris.
|
|
|
|
to use '_dl_pagesize'
-Erik
|
|
|
|
|
|
|
|
is needed if ldso should use libcs malloc whenever possible.
Fix RTLD_LAZY propagation to RTLD_NOW relocation when requested by
libdl.
|
|
Don't' use atexit in libdl.
Make destrutor in libdl actually run and to dlclose all
dlopened libs.
Remove dlclosed libs from the _dl_symbol_tables list.
|
|
|
|
However RTLD_LOCAL still doesn't work. Everything is RTLD_GLOBAL.
|
|
Some utilities, such as valgrind, have a legitimate reason to know the address
of the current brk. Since we know such utils will peek under our skirt, we
might as well give them what they expect and not use a gratuitously different
symbol name.
-Erik
|
|
rather than _dl_malloc, fprintf rather than _dl_printf, etc.
-Erik
|
|
tree. Bad boy, No doughnut.
-Erik
|
|
aligned pointer that may be aligned up to page_size. Also add _dl_free,
|
|
useful syscall failure diagnostics.
|
|
hard coded 4096 instead of PAGE_SIZE. Because I'm an idiot.
|
|
by extracting the value from the ELF header.
|
|
lookup on 'atexit' got me excited and I started fixing the same
problem elsewhere. Except these were correct as-was, and were
not a problem....
|
|
|
|
Hi it is me again.
This is the latest ldso patch. the NEW weak symbol handling works now
with a little special handling in _dl_find_hash(). You get to chose
if you want the new or old handling :)
There was 2 missing _dl_check_if_named_library_is_loaded() calls in _dlopen().
I then disabled the _dl_check_if_named_library_is_loaded() in dl-elf.c since
it is rendundant.
Question, why does some _dl_linux_resolver(), like i386, have 2 calls
to _dl_find_hash()? I think that is wrong, isn't it?
I really hope you can check this out soon ...
|
|
|
|
|
|
till I properly finish the next step in my evil plan.
|
|
location for this stuff
|
|
|
|
|
|
|
|
to make it easier to treat it specially while not bothering the
rest of the code with the same constraints.
|
|
|
|
|
|
|
|
Hello,
the attached patch fixes ldso compilation on sparc-linux (at least with
sparc32 userland). It was made against uClibc 0.9.21, but it's still OK
with 0.9.26.
There were three problems:
- missing __NR_getpid definition
- conflicting prototypes in elfinterp.c
- syntax error (missing semicolon) in ldso.c
With this patch shared libraries and ldso can be built on sparc.
It contains also ldso.c syntax fix for m68k - there was the same
mistake two lines earlier; but I didn't test build on m68k.
|
|
|