summaryrefslogtreecommitdiffstats
path: root/linker
Commit message (Collapse)AuthorAgeFilesLines
* Added support for LD_PRELOADMatt Fischer2010-05-101-0/+65
| | | | | | | | The LD_PRELOAD environment variable allows the user to specify a list of libraries which should be unconditionally loaded before any others. This makes possible some useful tricks, such as library interposers. Change-Id: I433d775ab08ef63a5fbe7b21f87a5642954fc32f
* Fixed support for RTLD_NEXT in dlsym()Matt Fischer2010-04-083-5/+15
| | | | | | | | | The previous implementation of this flag was broken--it behaved identically to RTLD_DEFAULT. This adds a proper implementation, which examines the address of the calling function, and uses it to determine which library to use to begin the symbol search process. Change-Id: I2ad2b46363f68932af63a3828a22f9c7987eea67
* linker: fix the undefined weak symbols issueMin-su, Kim2010-03-291-1/+1
|
* Added support for dladdr()Matt Fischer2010-03-173-14/+86
| | | | | | | | dladdr() is a GNU extension function, which allows the caller to retrieve symbol information for a specified memory address. It is useful for things like generating backtrace information at runtime. Change-Id: I3a1def1a6c9c666d93e1e97b7d260dfa5b9b79a9
* am fe62de1a: Add support for R_ARM_REL32 to the dynamic linker.David 'Digit' Turner2009-12-022-6/+14
|\ | | | | | | | | | | | | Merge commit 'fe62de1ad036a1417df44b7b1a7c65cc79dc7091' into eclair-plus-aosp * commit 'fe62de1ad036a1417df44b7b1a7c65cc79dc7091': Add support for R_ARM_REL32 to the dynamic linker.
| * Add support for R_ARM_REL32 to the dynamic linker.David 'Digit' Turner2009-12-022-6/+14
| | | | | | | | Merged from eclair-mr2
* | merge from open-source masterJean-Baptiste Queru2009-11-085-4/+224
|\ \
| * | added and modified linker to support SuperH architectureShin-ichiro KAWASAKI2009-11-065-4/+224
| | |
* | | am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclairIliyan Malchev2009-10-233-61/+70
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | Merge commit '763ac28357f604e0e4196e0a7ad5b0f5cdcf274a' into eclair-plus-aosp * commit '763ac28357f604e0e4196e0a7ad5b0f5cdcf274a': bionic/linker: make the buddy allocator compute max_order on its own bionic/linker: change the buddy allocator to take a handle to the managed area
| * | bionic/linker: make the buddy allocator compute max_order on its ownIliyan Malchev2009-10-192-1/+8
| | | | | | | | | | | | Signed-off-by: Iliyan Malchev <malchev@google.com>
| * | bionic/linker: change the buddy allocator to take a handle to the managed areaIliyan Malchev2009-10-193-62/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | -- rename struct ba_info to struct ba -- move the static ba descriptor from ba.c to linker.c and rename it ba_prelink -- ba_init, ba_allocate, ba_free, ba_start_addr, and ba_len all take a pointer to struct ba Signed-off-by: Iliyan Malchev <malchev@google.com>
* | | am ff7b46b8: Merge change I3c998761 into eclairDavid 'Digit' Turner2009-10-161-3/+7
|\ \ \ | |/ / | | | | | | | | | | | | | | | Merge commit 'ff7b46b87c4d85881d88c2105a94be6c6accb628' into eclair-plus-aosp * commit 'ff7b46b87c4d85881d88c2105a94be6c6accb628': Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.
| * | Allow the dynamic linker to relocate references to thumb symbols in NDK ↵David 'Digit' Turner2009-10-131-3/+7
| | | | | | | | | | | | | | | | | | | | | libraries. The lowest bit of the symbol's value should be ignored when looking at UNDEF symbols for correctness. It is used as an ARM/Thumb flag by the linker.
* | | merge from open-source masterJean-Baptiste Queru2009-10-141-0/+1
|\ \ \ | |/ / |/| / | |/
| * Fill l_ld of linkmaps with value from soinfo::dynamic.Thinker K.F Li2009-09-151-0/+1
| | | | | | | | | | | | | | GDB will try to read l_ld of linkmaps and compare the value to vma of .dynamic sections from shared objects. Since linker does not assign l_ld, GDB will complain about and re-compute l_addr from l_ld. And, GDB will get a wrong value.
* | bionic/linker: allow resolving of symbols from library back to executableIliyan Malchev2009-09-291-0/+25
| | | | | | | | Signed-off-by: Iliyan Malchev <malchev@google.com>
* | bionic/linker: change lookup() to return soinfo, not baseIliyan Malchev2009-09-293-9/+9
| |
* | Revert "Revert "bionic/linker: fix symbol lookup during relocations""Iliyan Malchev2009-09-291-26/+74
| | | | | | | | This reverts commit 33acbf0719c4f3db059bc9e1f52cf554a5d0295f.
* | Revert "bionic/linker: fix symbol lookup during relocations"Mathias Agopian2009-09-271-74/+26
| | | | | | | | This reverts commit 8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850.
* | bionic/linker: fix symbol lookup during relocationsIliyan Malchev2009-09-271-26/+74
| | | | | | | | | | | | | | | | | | When resolving relocations while loading a library, the linker used to find symbols by looking them up in the list of all linked libraries for the current process, as opposed to following just the library's DT_NEEDED entries. This can cause a problem where the symbol is picked up from the wrong library. Signed-off-by: Iliyan Malchev <malchev@google.com>
* | bionic: linker: add error message if link failed due to previous errorErik Gilling2009-08-131-1/+4
|/ | | | Signed-off-by: Erik Gilling <konkers@android.com>
* bionic/linker: keep track of opened libraries by basenameandroid-sdk-tools_r2android-sdk-1.6_r2android-sdk-1.6_r1android-sdk-1.6-docs_r1android-1.6_r2android-1.6_r1.5android-1.6_r1.4android-1.6_r1.3android-1.6_r1.2android-1.6_r1.1android-1.6_r1Erik Gilling2009-07-281-2/+6
| | | | | | | | | | | | | | | | | | | | | | | Prior to this change, the dynamic loader kept track of opened libraries either by their base name (i.e., libfoo.so instead of /system/lib/libfoo.so) when the shared library was loaded through the DT_NEEDED tag in an ELF header, or by whatever name was passed to dlopen(). This created a number of problems, among which: 1. dlopen("libfoo.so") and dlopen("/path/to/libfoo.so") would open the same library twice; 2. dlopen("/path/to/libfoo.so") and then dlopen("libbar.so"), where libbar.so depends on libfoo.so, would open libfoo.so twice. This patch makes the dynamic loader keep track of each loaded library by basename, which resolves the above ambiguity. The patch also enforces library lookup by base name, which means that it will refuse to load another library that has the same name. Thanks for the inspiration Iliyan. Signed-off-by: Erik Gilling <konkers@android.com> Cc: Iliyan Malchev <malchev@google.com>
* linker: remove newlines from DL_ERR so that dlerror works correctlyErik Gilling2009-07-221-34/+34
| | | | Signed-off-by: Erik Gilling <konkers@android.com>
* Pass the elfdata pointer in a slot of the temporary TLS area.David 'Digit' Turner2009-07-171-7/+14
| | | | | | | | | | | | | | | | This is needed to properly initialize the C runtime when libc.so is loaded by the dynamic linker. Move the temporary TLS setup before the first system call, just in case something really horrible happens, we won't crash when trying to write an error code in 'errno' Remove the broken TLS_SLOT_THREAD_ID setup. First, this slot should normally receive the address of a pthread_internal_t, not a kernel thread identifier. Second, it is never used by the linker anyway. Also remove an obsolete comment.
* Add LD_LIBRARY_PATH support to bionic's linkerDavid Bartley2009-06-151-4/+52
|
* linker: Give more context for failures during library dependency resolution.Dima Zavin2009-06-011-1/+4
| | | | Signed-off-by: Dima Zavin <dima@android.com>
* linker: Make the errors reported by dlopen/dlsym be more useful.Dima Zavin2009-05-275-67/+106
| | | | | | | | | | | | | Changed it so that when the linker generates error messages, they are scribbled away into a buffer that dlfcn and friends can read from. Since the error messages are generetad with snprintf, and snprintf MAY call malloc during some code paths, we now link against a version of libc that does not contain malloc/free/realloc/calloc. We then define malloc and friends in the dynamic loader, and make them abort() if they are ever called. Signed-off-by: Dima Zavin <dima@android.com>
* Fix the parsing of the .fini_array in the dynamic linker (it should happen ↵David 'Digit' Turner2009-05-262-24/+148
| | | | | | | in reverse order). Also add a small design overview document for the linker. The latter contains details on how the initialization/finalization is supposed to work.
* linker: Compute symbol name before lookup so we can also use it for error msgDima Zavin2009-05-121-2/+2
| | | | Signed-off-by: Dima Zavin <dima@android.com>
* Increase the limit of loaded shared libraries from 64 to 96 This change is ↵James Dong2009-04-301-1/+1
| | | | | | required for OpenCORE 2.0 This is the same as Change 71 in master branch.
* Automated import from //branches/donutburger/...@140950,140950Iliyan Malchev2009-03-241-15/+38
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-0313-0/+3026
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-0311-2802/+0
|
* auto import from //depot/cupcake/@132589The Android Open Source Project2009-03-036-306/+82
|
* auto import from //depot/cupcake/@137055The Android Open Source Project2009-03-026-82/+306
|
* auto import from //branches/cupcake/...@132276The Android Open Source Project2009-02-191-3/+15
|
* auto import from //branches/cupcake/...@130745The Android Open Source Project2009-02-107-1/+199
|
* auto import from //branches/cupcake/...@126645The Android Open Source Project2009-01-152-1/+7
|
* Code drop from //branches/cupcake/...@124589The Android Open Source Project2008-12-173-22/+40
|
* Initial Contributionandroid-1.0The Android Open Source Project2008-10-2111-0/+2568