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.
|
|
|
|
|
|
Mazinger implements the changes suggested by me on the uclibc list.
On Tuesday 28 September 2004 02:24 pm, Erik Andersen wrote:
> What I think should be done is
>
> *) Someone that cares about USE_CACHE should fix that option
> up to be sure it works, and give it a proper config entry
> in extra/Configs/Config.in, and rename it to something
> more appropriate such as LDSO_CACHE_SUPPORT.
>
> *) When LDSO_CACHE_SUPPORT=n, UCLIBC_RUNTIME_PREFIX /usr/X11R6/lib
> should be included in the default library search path in
> dl-elf.c, ldd, and ldconfig.
>
> *) When LDSO_CACHE_SUPPORT=y, UCLIBC_RUNTIME_PREFIX /usr/X11R6/lib
> should be excluded from the default library search path in
> dl-elf.c, ldd, and ldconfig, and those wishing to include
> X11 stuff should add that into /etc/ld.so.conf and re-run
> ldconfig.
>
> *) At present, LDSO_CONF and LDSO_CACHE use the same names
> and same structure as glibc. This precludes
> LDSO_CACHE_SUPPORT being uses in any sane fashion on a
> dial glibc and uClibc system. Just as it was necessary
> for use to use a different name for 'libuClibc' rather
> than 'libc', and 'ld-uClibc.so.0' rather than
> 'ld-linux.so.2' it seems that these configuration files
> really ought to be given different names.
>
|
|
This needs testing with apps that have complex dependencies.
|
|
|
|
|
|
|
|
This removes some crap in libdl.c(and future libs which needs
to access ldso functions).
What do you think?
|
|
Fixed a bug in libdl.c where the RTLD_GLOBAL was assigned
wronly.
|
|
|
|
|
|
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.
|
|
in libdl, the XXFLAGS is set incorrectly if DODEBUG=y ... it has 'I.' added to
it instead of '-I.' ... this of course pisses of gcc :)
find attached a patch that cleans up the XXFLAGS setting so as to minimize
this kind of thing ... when asked, mjn3 said it was a kosher idea ;)
and later writes:
hmm it seems ldso also utilizes USE_CACHE in the code (but LIBRARY_CACHE never
propogates down to the Makefiles)
so the fix is to add $(LIBRARY_CACHE) while setting $(XXFLAGS)
Applied with minor fixes and also fixed up ldso/Makefile to match
libdl/Makefile.
|
|
However RTLD_LOCAL still doesn't work. Everything is RTLD_GLOBAL.
|
|
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,
|
|
|
|
in libdl pointing to the local 'foobar' function is garbage. This cleans all
that up and makes the code much less horrible. Now it is only really really
ugly (which is a marked improvement),
|
|
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 ...
|
|
problem with mips -- contrary to my expectation gcc on mips _always_ defines
__PIC__ which breaks the assumption inherent in my code. This should fix
things up.
|
|
|
|
|
|
|
|
do both operations in a single pass.
|
|
_dl_debug_addr prior to checking if it was NULL.
|
|
avoid problems 'hidden symbol' problems. Also handle -lfloat for the
soft-float arm case.
|
|
which should simplify enabling arbitrary architectures.
-Erik
|
|
ln.patch:
* Define $(LN) as ln in Rules.mak.
* Change all occurrences of ln into $(LN).
* Change all constructs like (cd path && ln -sf foo/file file)
into $(LN) -sf foo/file path/file. The latter construct is
already used in a number of places so it should not be
an additional compatibility problem.
|
|
rm.patch:
* Define $(RM) as rm -f in Rules.mak and test/Rules.mak
(this is the same definition as gmake uses by default).
* Change all occurrences of rm and rm -f into $(RM).
|
|
install.patch:
* Define $(INSTALL) as install in Rules.mak.
* Change all occurrences of install into $(INSTALL).
* Change all occurrences of mkdir -p into $(INSTALL) -d.
install -d is already used in a number of places so
this should not be an additional compatibility problem.
|
|
already loaded libs, which unsurprisingly would cause dlsym() to
not work at all...
-Erik
|
|
|
|
we would try to re-fixup the lib's relocations with rather
horrible results. So fix that by checking the the dlopened lib
has already had its init functions called, which will never be
the case for newly loaded libs, and skip the rest in that case.
also apply a few minor fixups
|
|
|
|
a chain of dependent libraries or libraries that depend on other
shared libraries will not work!
So with a well placed
dyn_chain->flags |= RTLD_GLOBAL;
everything is now working perfectly!!! Sweet!!!!
This patch also removes some leftover junk from my previous efforts.
|
|
libraries multiple times, wasting memory and causing different libraries to use
different symbol sets, some of which were not properly resolved.
Continue scrubbing ld.so and converting it to use proper types.
|
|
|
|
|
|
process. Fix that up too.
-Erik
|
|
|
|
|
|
or RTLD_NOW then we need to error out.
|
|
dlopen and have it be successful. This required moving some
things out of ldso.c into readelflib1.c, and directly including
hash.c and readelflib1.c into dlib.c when building the static
version of the library.
-Erik
|