Commit Graph

464 Commits

Author SHA1 Message Date
Nick Kralevich
031517ff74 am 8ad9909a: am d11ca4e8: Merge "Revert "Reenable support for non-PIE executables""
* commit '8ad9909a70c4925a1da15ce150835e436f54d8c1':
  Revert "Reenable support for non-PIE executables"
2014-07-03 19:59:41 +00:00
Dmitriy Ivanov
fba3354e81 am 176f13a7: am afd37c42: Merge "Build fix"
* commit '176f13a70845555d6b5776ddacdae8771dccb13f':
  Build fix
2014-07-02 23:19:28 +00:00
Dmitriy Ivanov
e9fa0de5b0 am 8551bfb0: am 950a435f: Merge "Load library using file handle."
* commit '8551bfb04385781c3b8c68afaf9c055c22a4e985':
  Load library using file handle.
2014-07-02 23:13:56 +00:00
Dmitriy Ivanov
d383066941 Build fix
Change-Id: Ib43e0f055e3c5f07b50393bfcab9738454835ac3
2014-07-02 16:06:50 -07:00
Nick Kralevich
76e289c026 Revert "Reenable support for non-PIE executables"
/system/bin/tf_daemon on Nakasi has been updated so it's
a PIE executable. We can now drop non-PIE support.

This reverts commit d81b3b275d.

Bug: 15086752
Bug: 15732002
Bug: 14566672
Change-Id: I832c4de01a8fa050754ea64da317d1639990265e
2014-07-03 12:08:34 -07:00
Dmitriy Ivanov
04dc91ae76 Load library using file handle.
* This patch enables dlopen by file descriptor
   instead of path/name.

Bug: 15984217
Change-Id: Ib39051e00567fb97070bf96d8ce63993877c0a01
2014-07-02 13:20:47 -07:00
Dmitriy Ivanov
053f4c9cb2 am 711b5584: am 105ef36c: Merge "Native tests are now multilib=both by default"
* commit '711b5584db13b6a2aca555e577c3d7cfb04946ab':
  Native tests are now multilib=both by default
2014-07-01 23:12:34 +00:00
Dmitriy Ivanov
4d8f3c4d99 am 51c812cd: am 442d41fc: Merge "Write message to stderr on __libc_fatal()"
* commit '51c812cd220cd9f493d61df98ca77dd0b5f000da':
  Write message to stderr on __libc_fatal()
2014-07-01 22:10:25 +00:00
Dmitriy Ivanov
eff2f8bc2c am aa355352: am 176ccd49: Merge "Add support for protected local symbol lookup."
* commit 'aa3553521b82e7fbec242cdc5280d1aa626a47e6':
  Add support for protected local symbol lookup.
2014-07-01 21:36:00 +00:00
Dmitriy Ivanov
12bf3bcdee Write message to stderr on __libc_fatal()
Change-Id: Ia8d6e256768fa51786d0139d3f3b6e9e4bebe027
2014-07-01 14:46:03 -07:00
Dmitriy Ivanov
fcac81ef04 Native tests are now multilib=both by default
Change-Id: I788ac0b871703c137727a65e017c4466127c0190
2014-07-01 15:38:22 -07:00
Dmitriy Ivanov
d97e9f546e Add support for protected local symbol lookup.
Bug: http://code.google.com/p/android/issues/detail?id=66048
Change-Id: Ib334223df27adad9477fb241ab099c5e26df4a7d
2014-07-01 10:25:54 -07:00
Elliott Hughes
27cc284e02 am 0bdbc499: am 260846f3: Merge "Reinstate the x86 dynamic linker warning for text relocations."
* commit '0bdbc499baf361e1b04ba97baf60e0ccdbddeb04':
  Reinstate the x86 dynamic linker warning for text relocations.
2014-06-30 22:08:04 +00:00
Dmitriy Ivanov
59d4f55ab5 am 33c1af30: am e5c759ff: Merge "Disallow dlopen("egl/blah.so") on LP64"
* commit '33c1af30706ed0869b3997f2ee0f087e55b56676':
  Disallow dlopen("egl/blah.so") on LP64
2014-06-30 18:07:02 +00:00
Colin Cross
4720dc7372 am 26dde2d2: am ddc44974: Merge "Revert "HACK: linker: check for handle==0xffffffff on LP64""
* commit '26dde2d2e407b45ebeeacd9784823ff1c8f78f64':
  Revert "HACK: linker: check for handle==0xffffffff on LP64"
2014-06-29 03:24:21 +00:00
Colin Cross
ddc449748b Merge "Revert "HACK: linker: check for handle==0xffffffff on LP64"" 2014-06-26 23:45:01 +00:00
Dmitriy Ivanov
e43c4a7a66 Disallow dlopen("egl/blah.so") on LP64
Bug: 7465467
Change-Id: Ibd3a4f1a6095f4397bde4f656e3c11b67f7edd47
2014-06-29 13:02:06 -07:00
Elliott Hughes
aa836f7310 Reinstate the x86 dynamic linker warning for text relocations.
Bug: 11358761
Change-Id: I4fc56ce7d76c9703a307ddd4d371d5e98bc6f51d
2014-06-30 14:46:53 -07:00
Nick Kralevich
881e426524 am deca2451: am 8a7cffc8: Merge "Reenable support for non-PIE executables"
* commit 'deca2451e0bdcc98777f06bfbe8f9e10fc529778':
  Reenable support for non-PIE executables
2014-06-19 17:15:02 +00:00
Dmitriy Ivanov
8c79f5f895 am 6b8b3dd2: am 64dfbd24: Merge "Fix weak function lookups"
* commit '6b8b3dd28a145021281f69b485763748f29b7b03':
  Fix weak function lookups
2014-06-18 16:00:39 +00:00
Nick Kralevich
d81b3b275d Reenable support for non-PIE executables
On Nakasi builds, /system/bin/tf_daemon is a pre-compiled
vendor supplied binary. When support for non-PIE executables
was removed, that daemon failed to start, which induced
a number of bugs.

  * keystore is broken
  * CTS runs will hang after a certain period of time

Temporarily reenable non-PIE support for 32-bit platforms
until Nakasi is fixed.

This rolls back the following commits:

  Cleanup: updated comments
  * 6275f20834
  Cleanup: remove AARCH/ARM_COPY relocation support
  * b906e13c55

And restricts the following patch to 64 bit only:

  Remove support for non-PIE executables
  * 2aebf5429b

Bug: 14566672
Bug: 15086752
Bug: 15732002
Change-Id: Ia2501aa14bd30feb4a6ce66bdb7c9f066dba0b5f
2014-06-19 09:09:54 -07:00
Dmitriy Ivanov
ce44166c73 Fix weak function lookups
* Linker now correctly resolves function defined
   with __attribute__((weak)).

Bug: https://code.google.com/p/android/issues/detail?id=70206
Change-Id: I82efb905676c25fefb1b11a13f5fecb0f1384657
2014-06-17 16:18:18 -07:00
Colin Cross
acfc63760e Revert "HACK: linker: check for handle==0xffffffff on LP64"
This reverts commit 346fea0805.

Change-Id: Id3fd79451e4218e68e39ce22f21408cbf93255ee
2014-06-16 15:44:20 -07:00
Elliott Hughes
b618aa818d am fe6e646c: Update NOTICE files.
* commit 'fe6e646cb79fe15d7815fdb9c92cc66be56ab1d4':
  Update NOTICE files.
2014-06-16 20:05:43 +00:00
Elliott Hughes
fe6e646cb7 Update NOTICE files.
Change-Id: I459caf48ba861372a4d0bc75f98a9cb4acc20fd5
2014-06-16 10:24:37 -07:00
Chris Dearman
9d98ee17fe [MIPS64] linker64 requires startup code
Change-Id: Iff2cd7d4dc40a67978bd9fc585b86e5a87afdbdd
2014-06-12 19:18:12 -07:00
Elliott Hughes
1a58629340 Remove an unused parameter from the dlopen implementation.
Change-Id: I9297913a743bb570b48ebbe594ff711a481e89e0
2014-06-03 16:23:08 -07:00
Elliott Hughes
d286796fce Turn on -Wunused and fix the mistakes it uncovers.
Change-Id: I023d2d8b547fbc21d4124bb7510d42b06a0dc501
2014-06-03 15:22:34 -07:00
Dmitriy Ivanov
ce00354fec Merge "Do not add arcs to the soinfo graph on dlopen" 2014-05-23 02:19:10 +00:00
Bjorn Andersson
3c005d6019 Do not add arcs to the soinfo graph on dlopen
While introducing RTLD_NOLOAD in b648a8a5 a change in how soinfo structs are
connected was also introduced. When calling dlopen the library that is loaded
is added as a child to the soinfo from which the caller comes - i.e. building a
dependency graph.

Unfortunately this shows issues upon unloading, such as blowing the stack if
there are loops in the graph.

This change reverts that part of b648a8a5, keeping everything as a child of the
root soinfo.

Change-Id: I604ee9210613b19f693a568158e69707620a95db
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
2014-05-22 19:08:14 -07:00
Elliott Hughes
2ea60ff0b4 Remove unnecessary #includes of <sys/atomics.h>.
Bug: 14903517
Change-Id: I7b5bcebe58774a441da986cc02376dd88e00ea0e
2014-05-22 11:00:21 -07:00
Dmitriy Ivanov
ca1c80220e Removed dlsym handle != NULL check for lp64
* Removed unnecessary NULL check in dlsym
 * Fixed dlsym_failure test to account for
   correct RTLD_DEFAULT value
 * Added temporary check for legacy RTLD_DEFAULT
   value for non-yet-recompiled binaries

Bug: 15146875
Change-Id: I089fa673762629f5724b6e4fbca019d9cfc39905
2014-05-21 22:42:24 -07:00
Colin Cross
346fea0805 HACK: linker: check for handle==0xffffffff on LP64
bionic RTLD_NEXT was changed from 0xffffffff to -1L, which breaks
existing binaries compiled.  Temporarily look either until we can
get recompiled binaries.

Bug: 15113039
Change-Id: I1568fa0e4a832c5e6df21da74a33b22bde7f16f6
2014-05-20 15:19:02 -07:00
Dmitriy Ivanov
f092feb81b Merge "Add R_X86_64_64 to the list of possible weak relocs" 2014-05-20 19:11:25 +00:00
Dmitriy Ivanov
b648a8a57e Add RTLD_NOLOAD support and some related changes.
* Aligned RTLD_ values with glibc for lp64
 * dlopen supports RTLD_NOLOAD flag
 * soinfo_unload calls find_library(.., RTLD_NOLOAD)
   instead of naive find_loaded_library_by_name()
 * dlopen changed to add child to caller soinfo instead
   of somain.

Bug: https://code.google.com/p/android/issues/detail?id=64069
Change-Id: I1a65f2c34f3e0edc6d2c41a2e408b58195feb640
2014-05-20 12:02:24 -07:00
Pavel Chupin
bb5bb2046f Add R_X86_64_64 to the list of possible weak relocs
Change-Id: I768a5948d89701a1719734954a3524d3c7187e6a
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
2014-05-20 16:53:33 +04:00
Dmitriy Ivanov
489e498434 Fix lookup-by-base-name for lp64
Bug:https://code.google.com/p/android/issues/detail?id=6670
Change-Id: I5b70e7cde7f40799148aca0a91fb2bb08e0f2b54
2014-05-19 19:15:06 -07:00
Elliott Hughes
00c855eb3d Rethrow SIGTRAP too.
Bug: 15024256
Change-Id: I0347da9698a6ccd317ce6e6f7916d710d66e0f8a
2014-05-16 17:34:13 -07:00
Elliott Hughes
62e35755eb debugger.cpp should know the names of the signals it catches.
Change-Id: I37908b07739ad465652f143848c52bc1ef19e421
2014-05-16 16:59:54 -07:00
Dmitriy Ivanov
d59e50063a Improve detection of already loaded libraries
Linker is now able to resolve symlinked libraries correctly.

soinfo is extended to save the graph of dependencies during
load/unload. Dependencies are used only in CallConstructor.

Bug: 9741592
Change-Id: Id9c48a74c46aa89bcdf3d54ec2f8ba3d398130b1
2014-05-14 15:16:35 -07:00
Dmitriy Ivanov
6897b7b8b9 Merge "Fix for linker allocator" 2014-05-14 21:02:18 +00:00
Dmitriy Ivanov
1079406cab Fix for linker allocator
Change-Id: I18a3f1a8515657f0deb69266184fb516a27f90e8
2014-05-14 12:52:57 -07:00
Elliott Hughes
1728b23965 Switch to g_ for globals.
That's what the Google style guide recommends, and we're starting
to get a mix.

Change-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc
2014-05-14 10:02:03 -07:00
Dmitriy Ivanov
c6b5834ceb Merge "Remove page level mprotects" 2014-05-14 01:45:50 +00:00
Dmitriy Ivanov
bc23e530c4 Remove page level mprotects
Freeing block mprotects on the page which it turn
may lead to application crash if linker subsequently
tries to modify another block on the page.

Bug: 14895266
Change-Id: I8ff7f5df467d7be184242de652032b3c84e24b76
2014-05-13 18:34:48 -07:00
Dmitriy Ivanov
d44927b8e9 Merge "Refactor linker allocator" 2014-05-13 15:49:18 +00:00
Dmitriy Ivanov
d597d263bc Refactor linker allocator
Makes it reusable for different fixed sized and not very
big structures (<PAGE_SIZE).

Change-Id: Id5ec13fc6541b1935ef7fe3671c22b98685abbae
2014-05-12 21:40:09 -07:00
Dmitriy Ivanov
6275f20834 Cleanup: updated comments
Bug: 14566672
Change-Id: I49ad28e3914b7d559db1e98542fee919db768f49
2014-05-12 11:47:10 -07:00
Dmitriy Ivanov
b906e13c55 Cleanup: remove AARCH/ARM_COPY relocation support
They are only legal for ET_EXEC binaries and these are no
longer supported.

Bug: 14566672
Change-Id: I99e0ff47e8c572db474bc5e52df870a72269abb3
2014-05-12 09:06:14 -07:00
Nick Kralevich
2aebf5429b Remove support for non-PIE executables
Don't support the dynamic linker loading ET_EXEC executables. Only
support ET_DYN executables.

Bug: 14566672
Change-Id: Ia1f2bfffe7ea867c1cd62e67d7fd637c60c0728d
2014-05-08 13:17:17 -07:00