Relocate symbol against DF_1_GLOBAL shared libraries
loaded before this shared library. This includes
main executable, ld_preloads and other libraries
that have DF_1_GLOBAL flag set.
Bug: 2643900
Bug: 15432753
Bug: 18186310
(cherry picked from commit d225a5e652)
Change-Id: I4e889cdf2dfbf8230b0790053d311ee6b0d0ee2d
local_group includes this library and its dependencies.
Bug: 18186310
(cherry picked from commit e47b3f8456)
Change-Id: I93c2d873e924df7319569307444bf603d7d27bf0
The local group is a sequence of libraries in default (breadth-first)
order. It allows RTLD_LOCALLY loaded library to correctly relocate
symbols within its group (see test-cases).
Local group lookup is performed after main executable and ld_preloads.
Bug: 2643900
Bug: 15432753
Bug: 18186310
(cherry picked from commit cfa97f172d)
Change-Id: I5fa8c673f929e4652c738912c7ae078d7ec286d2
Previous one was not covering all the targets
Bug: 17548097
Bug: 18186310
(cherry picked from commit 4a9e1937c5)
Change-Id: I2cd9e58893555d16cbfe291b2d1279621489d5ad
DT_STRSZ Implement strtab boundary checks
DT_FLAGS_1 Warn if flags other than DF_1_NOW|DF_1_GLOBAL are set
Bug: 17552334
Bug: 18186310
(cherry picked from commit 6cdeb5234d)
Change-Id: I7ffc7bc600798308a77ad949a644949b64250ae2
This reverts commit 8f61d99183
Despite the fact that static linker does all the work while linking
-Bsymbolic executables, according to the SCO doc following DT_SYMBOLIC
and DF_SYMBOLIC flags is still a requirement for the dynamic linker
as well.
(see http://www.sco.com/developers/gabi/2012-12-31/ch5.dynamic.html)
Bug: 18186310
(cherry picked from commit 96bc37f2e1)
Change-Id: Ie217be4f3305d877066e4cfe91975ae1c7768330
The debuggerd case can probably never happen, because you're crashing at this
point anyway. The system property one seems possible though.
Bug: 18186310
(cherry picked from commit 0dc39f9952)
Change-Id: I3e84488fc246f6c28cbd82e96d0cd4343a12c28a
From the elf-spec: "Symbolically bound shared objects are
identified by the .dynamic entry DT_SYMBOLIC. This tag is
informational only; the runtime linker processes symbol
lookups from these objects in the same manner as any
other object."
Bug: 18186310
(cherry picked from commit 8f61d99183)
Change-Id: I37024799ac8d1837993c8ae78780a448bedd6539
Symbols from libraries opened with RTLD_LOCAL (default)
should not be visible via dlsym(RLTD_DEFAULT/RTLD_NEXT, .)
Bug: 17512583
Bug: 18186310
(cherry picked from commit e8ba50fe0d)
Change-Id: Idf6bbe2233fb2bfc0c88677e7d1fc518fb3f7a8b
Any pre-C++11 clients of stdatomic.h that use libc++ are being forced
over to <atomic>, which they don't have the language support to use.
Bug:17736764
Change-Id: I62445c1f2541410a1569498c09433c7196635537
(cherry picked from commit 3ce0769aa5)
* changes:
Fix the type of u_ar0 in <sys/user.h>.
Add greg_t for arm64.
POSIX says <signal.h> gets you ucontext_t.
Add in_port_t and move it and in_addr_t to the correct header file.
This was already present for the other architectures. I think we skipped
this because glibc seems to have an incorrect definition (int rather than
long), but the kernel has the sane definition (just not in a uapi header).
(cherry picked from commit 8e4d371091)
Bug: 18172268
Change-Id: I22d13fdeb6431ea122dd028a229782dcaf2286b2
POSIX also says that ucontext_t's uc_sigmask has type sigset_t.
MIPS64 strace needs this.
The #define is to keep chromium off our lawn; otherwise it tries to redefine
all this stuff itself. We should probably clean that up and remove the #define.
(cherry picked from commit 26a8eb50a8)
Bug: 18172268
Change-Id: I49d7d09dabfc6c6926a8e1f4b235d041e2f2fc4d
No one's reported this, but I saw it in an Android port of fuser(1).
We still have lots of problems in our network headers because we
get most of the structs direct from the kernel, and it doesn't use
types like this (which is why we've got away without this one for
so long). One day we should probably look at cleaning that up, but
doing so can wait.
(cherry picked from commit 35d226e05d)
Bug: 18172268
Change-Id: Ice490bfe84afb04722d738128053d4c533b8a664
For generic, continue to use the C version of the code.
Bug: 13746695
(cherry picked from commit 7d849ac378)
Change-Id: Iae44785f37f9bb59103ab78fb9f74c92f8a95c7f
Remove the old arm directives.
Change the non-local labels to .L labels.
Add cfi directives to strcpy.S.
Bug: 18157900
(cherry picked from commit c8bd2abab2)
Change-Id: Ifa1c3d16553d142eaa0d744af040f0352538106c
Group things appropriately and name each group.
Bug: 18160821
(cherry picked from commit 7c02d9428c)
Change-Id: I863242515af44058154d03e2d8c34678e682d66a
glibc doesn't do this, and we probably shouldn't either.
Bug: 16703540
Bug: 17436734
(cherry picked from commit afe58ad989)
Change-Id: Iada5d0ae814f438cb276f056b2b5e3675f0e3666
This change provides __restore/__restore_rt on x86 and __restore_rt on
x86_64 with unwinding information to be able to unwind through signal
frame via libgcc provided unwinding interface. See comments inlined for
more details.
Also remove the test that had a dependency on
__attribute__((cleanup(foo_cleanup))). It doesn't provide us with any
better test coverage than we have from the newer tests, and it doesn't
work well across a variety architectures (presumably because no one uses
this attribute in the real world).
Tested this on host via bionic-unit-tests-run-on-host on both x86 and
x86-64.
Bug: 17436734
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
(cherry picked from commit 50321e2e66)
Change-Id: Iba90e36958b00c7cc7db5eeebf888dc89ce4d619
gdb was happy with what we had, but libgcc and libunwind weren't.
libgcc is happy with the kernel's restorer (because of the extra nop),
though libunwind looks like it's going to need code changes regardless.
We could make our restorer more like the kernel's one, but why bother
when we can just let the kernel supply the canonical one?
Bug: 17436734
(cherry picked from commit 1cff9a8964)
Change-Id: Ie13d73fd97395e1979a67c2294e036a97c50000d
gdb was already okay; libgcc and libunwind need a little extra help.
Bug: 17436734
(cherry picked from commit 148dff3ec6)
Change-Id: I2cc997017acc57c930284af5264f353656b98c7b
* LP32 should use sa_restorer too. gdb expects this, and future (>= 3.15) x86
kernels will apparently stop supporting the case where SA_RESTORER isn't
set.
* gdb and libunwind care about the exact instruction sequences, so we need to
modify the code slightly in a few cases to match what they're looking for.
* gdb also cares about the exact function names (for some architectures),
so we need to use __restore and __restore_rt rather than __sigreturn and
__rt_sigreturn.
* It's possible that we don't have a VDSO; dl_iterate_phdr shouldn't assume
that getauxval(AT_SYSINFO_EHDR) will return a non-null pointer.
This fixes unwinding through a signal handler in gdb for all architectures.
It doesn't fix libunwind for arm and arm64. I'll keep investigating that...
(cherry picked from commit 36f451a6d9)
Bug: 17436734
Change-Id: Ic1ea1184db6655c5d96180dc07bcc09628e647cb
From the release notes:
Changes affecting future time stamps
Pacific/Fiji will observe DST from 2014-11-02 02:00 to
2015-01-18 03:00. (Thanks to Ken Rylander for the heads-up.)
Guess that future years will use a similar pattern.
A new Zone Pacific/Bougainville, for the part of Papua New
Guinea that plans to switch from UTC+10 to UTC+11 on
2014-12-28 at 02:00. (Thanks to Kiley Walbom for the
heads-up.)
Changes affecting time zone abbreviations
Since Belarus is not changing its clocks even though Moscow
is, the time zone abbreviation in Europe/Minsk is changing
from FET to its more-traditional value MSK on 2014-10-26 at
01:00. (Thanks to Alexander Bokovoy for the heads-up about
Belarus.)
The new abbreviation IDT stands for the pre-1976 use of UT+8
in Indochina, to distinguish it better from ICT (UT+7).
Changes affecting past time stamps
Many time stamps have been corrected for Asia/Ho_Chi_Minh
before 1976 (thanks to Trần Ngọc Quân for an indirect pointer
to Trần Tiến Bình's authoritative book). Asia/Ho_Chi_Minh has
been added to zone1970.tab, to give tzselect users in Vietnam
two choices, since north and south Vietnam disagreed after our
1970 cutoff.
Asia/Phnom_Penh and Asia/Vientiane have been turned into
links, as they differed from existing zones only for older
time stamps. As usual, these changes affect pre-1970 time
stamps only. Their old contents have been moved to the
'backzone' file.
Bug: 18085936
(cherry picked from commit a05c2a2a70)
Change-Id: If0253cc1515e1bc98e99c6e24eec797836ca7c27
- Clean up the labels (add .L to make them local).
- Change to using cfi directives.
- Fix unwinding of the __memcpy_chk fail path.
Bug: 18033671
(cherry pick from commit 7123d4371a)
Change-Id: Ife93bcbfc1949ef29fc8e2dc515b7120632b82b1