Age | Commit message (Collapse) | Author |
|
Fixes the following compilation warning for 64-bit arch with TLS support:
CC ldso/libdl/libdl.oS
ldso/libdl/libdl.c: In function 'do_dlsym':
ldso/libdl/libdl.c:739:59: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
ret = _dl_tls_symaddr ((struct link_map *)sym_ref.tpnt, (Elf32_Addr)ret);
^
|
|
|
|
Before this commit tst-tls-at-ctor test would segfault.
After it passes.
testsuite run before: https://pastebin.com/504JgQXa
testsuite run after: https://pastebin.com/d2aNciVt
Stafford Horne already fixed it in glibc:
* https://github.com/openrisc/or1k-glibc/blob/bcd87396ebe78228645c0731b06c934dfd88855a/sysdeps/or1k/dl-machine.h#L298
* https://github.com/openrisc/or1k-glibc/blob/bcd87396ebe78228645c0731b06c934dfd88855a/sysdeps/or1k/dl-machine.h#L99
|
|
Similar to glibc commit
https://sourceware.org/git/?p=glibc.git;a=commit;h=6bbfc5c09fc5b5e3d4a0cddbbd4e2e457767dae7
we need to handle Linux kernel change, which removed stat64 family from default syscall set.
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Waldemar Brodkorb <wbrodkorb@conet.de>
|
|
basically from or1k port of uClibc-ng, with fixes for structures in
pthreadtypes.h from 64 bit architectures.
18 testsuite failures counted.
|
|
|
|
|
|
|
|
Support EM_CSKY 252 elf format.
Changelog:
Increase EM_NUM to 253
Signed-off-by: Guo Ren <ren_guo@c-sky.com>
Signed-off-by: Mao Han <han_mao@c-sky.com>
|
|
* ldso/ldso/arm/aeabi_read_tp.S: Add Thumb version.
* ldso/ldso/arm/dl-startup.h: Do not force ARM encoding, adjust
for Thumb.
* ldso/ldso/arm/resolve.S: Force Thumb encoding on Thumb-only
processors.
* libc/sysdeps/linux/arm/crt1.S: Do not force ARM encoding, adjust
for Thumb.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
[1] fixes clash of TLS variables on ARC and since LD now calculates relocations
a bit different now we need to update dynamic loader as well otherwise relocs
will be calculated improperly.
Note this is an ABI change and should go in-line with corresponding ARC tools.
That said either arc-2018.09 (to be released in few weeks) or the next version of upstream
Binutils (2.32) are required for normal TLS work on ARC.
Testcase:
----------------------------------8<-------------------------------
#include <stdio.h>
int foo3(void);
int foo1(void);
#ifdef _SHARED
int foo1(){
static __thread int val3=1;
val3 += 2;
return val3;
}
#elif _SHARED2
int foo3(){
static __thread int val2=0;
val2 += 2;
return val2;
}
#else
int main(){
printf("foo1 = %d \n", foo1());
printf("foo3 = %d \n", foo3());
return 0;
}
#endif
--------------------------------->8---------------------------------------
The result shoud be:
----8<----
foo1 = 3
foo3 = 2
---->8----
Commands to build artefacts:
----------------------------------------8<-------------------------------
arc-linux-gcc -fPIE -ffunction-sections -fdata-sections -pthread -Os \
-fPIC -o testtls.o -D_SHARED -c tst.c
arc-linux-gcc -fPIE -ffunction-sections -fdata-sections -pthread -Os \
-fPIC -o testtls2.o -D_SHARED2 -c tst.c
arc-linux-gcc -shared -o libtesttls.so testtls.o testtls2.o -lm -Os
arc-linux-gcc tst.c -o tst.out -L./ -ltesttls -Os -fPIE
--------------------------------->8---------------------------------------
Add path to libtesttls.so file to LD_LIBRARY_PATH before runnig
tst.out application.
[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=714e9a954a2e4123dcb26bb8da850e1344de4f5f
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Evgeniy Didin <didin@synopsys.com>
CC: Cupertino Miranda <cmiranda@synopsys.com>
CC: Vineet Gupta <vgupta@synopsys.com>
CC: Waldemar Brodkorb <wbx@uclibc-ng.org>
|
|
R_ARM_NONE contains no data, so avoid dereferencing it.
* ldso/ldso/arm/elfinterp.c (_dl_do_reloc): Handle R_ARM_NONE
relocation
(_dl_do_reloc_lazy): Likewise.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
dlclose can crash or stuck the system:
When calling dlclose() then system can crash or freeze, because
htab_delete() in ldso/ldso/fdpic/dl-inlines.h uses size_t for i which
is a typedef to unsigned int. We exit the loop on negative value of i
which can never occur since i is an unsigned int. This leads to random
free of various pointers that kill the system.
* ldso/include/inline-hashtab.h (htab_delete): Change type of 'i' to int.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Make _dl_initial_error_catch_tsd hidden, such that we do not need a
FUNCDESC relocation when initializing _dl_error_catch_tsd.
* ldso/ldso/dl-tls.c (_dl_initial_error_catch_tsd): Declare hidden.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
rtld must call _dl_find_hash() with ELF_RTYPE_CLASS_DLSYM since we
want a function descriptor.
* ldso/ldso/ldso.c (_dl_get_ready_to_run): Support __FDPIC__.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Otherwise we have link errors because of unresolved refs in libgcc.a:
ld: /lib/gcc/arm-none-uclinuxfdpiceabi/9.0.0/libgcc.a(pr-support.o): in function `_Unwind_GetDataRelBase':
/libgcc/config/arm/pr-support.c:378: undefined reference to `abort'
ld: /lib/gcc/arm-none-uclinuxfdpiceabi/9.0.0/libgcc.a(unwind-arm.o): in function `unwind_phase2_forced':
/libgcc/unwind-arm-common.inc:511: undefined reference to `memcpy'
* ldso/ldso/Makefile.in (CFLAGS-rtld): Always use
-fno-unwind-tables -fno-asynchronous-unwind-tables on arm
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Add support for R_ARM_FUNCDESC_VALUE and implement _dl_linux_resolver
for FDPIC on ARM.
* ldso/ldso/arm/elfinterp.c (_dl_linux_resolver): Support __FDPIC__.
(_dl_do_lazy_reloc): Likewise.
* ldso/ldso/arm/resolve.S (_dl_linux_resolve): Likewise.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
* ldso/ldso/dl-elf.c (_dl_load_elf_shared_library): Fix
l_tls_initimage computation.
* ldso/ldso/ldso.c (_dl_get_ready_to_run): Likewise.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
In ARM_EABI mode, the pread64 syscall parameters are aligned on
64-bits. This syscall is used in rtld when processing FDPIC
relocations.
* ldso/include/dl-syscall.h (__syscall_pread): Fix definition.
(__dl_pread): Fix syscall invocation.
* ldso/ldso/fdpic/dl-sysdep.h (__DL_PREAD): Handle __NR_pread64.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Implement _start: compute parameters for __self_reloc, and give
control to the user program.
* ldso/ldso/arm/dl-startup.h: Implement _start for __FDPIC__.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
* ldso/ldso/ldso.c (_start): Fix definition for __FDPIC__.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Add FDPIC dynamic relocations support, similar to what other FDPIC
targets do.
Lazy binding is implemented in a folllow-up patch.
Disable the SEND* macros because they involve relocations to
access constant strings that are unsupported by the existing
arm version.
Define DL_START, START, ARCH_NEEDS_BOOTSTRAP_RELOCS,
DL_CHECK_LIB_TYPE similarly to what other FDPIC targets do.
Define raise() because _dl_find_hash references __aeabi_uidivmod,
which uses __aeabi_idiv0 which in turn references raise.
* include/elf.h (R_ARM_FUNCDESC): Define.
(R_ARM_FUNCDESC_VALUE): Define.
* ldso/include/dl-string.h (SEND_STDERR, SEND_ADDRESS_STDERR)
(SEND_NUMBER_STDERR): Define empty for __FDPIC__.
* ldso/ldso/arm/dl-inlines.h: New file.
* ldso/ldso/arm/dl-startup.h (PERFORM_BOOTSTRAP_RELOC): Fix type
of load_addr. Fix handling of R_ARM_RELATIVE, add support for
R_ARM_FUNCDESC_VALUE.
(DL_START, START): Define for __FDPIC__.
(raise): Define.
* ldso/ldso/arm/dl-sysdep.h (ARCH_NEEDS_BOOTSTRAP_RELOCS): Define.
(DL_CHECK_LIB_TYPE): Define.
(elf_machine_type_class): Take into account FDPIC related
relocations.
(elf_machine_load_address): Support __FDPIC__.
(elf_machine_relative): Likewise.
* ldso/ldso/arm/elfinterp.c (_dl_linux_resolver): Dummy support
for __FDPIC__, implemented in a later patch.
(_dl_do_reloc): Fix reloc_adr computation for __FDPIC__, fix
handling of local symbols. Fix handling of R_ARM_RELATIVE, add
support for R_ARM_FUNCDESC_VALUE, R_ARM_FUNCDESC.
* ldso/ldso/arm/resolve.S: Make _dl_linux_resolve hidden.
* ldso/ldso/fdpic/dl-inlines.h (htab_delete): Declare.
* libc/sysdeps/linux/arm/bits/elf-fdpic.h: New file, similar to bfin's.
* libc/sysdeps/linux/arm/crtreloc.c: Likewise.
* libc/sysdeps/linux/arm/find_exidx.c (__dl_addr_in_loadaddr) Define.
(find_exidx_callback): Support __FDPIC__.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Like for other FDPIC targets, add defined(__FDPIC__) where needed.
* include/link.h: Include bits/elf-fdpic.h if __FDPIC__ is defined.
(link_map): Use elf32_fdpic_loadaddr if __FDPIC__ is defined.
(dl_phdr_info): Likewise.
* ldso/include/dl-elf.h (__dl_parse_dynamic_info): Support
__FDPIC__.
* ldso/include/dl-hash.h (elf_resolve): Add funcdesc_ht field if
__FDPIC__ is defined.
* ldso/ldso/dl-hash.c (_dl_find_hash): Support __FDPIC__.
* libc/misc/elf/dl-iterate-phdr.c (dl_iterate_phdr): Support __FDPIC__.
Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Without MMU, we cannot mark memory regions as read-only.
* ldso/ldso/dl-elf.c (_dl_protect_relro): Do nothing if
__ARCH_USE_MMU__ is defined.
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
|
|
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
|
|
These assembler functions seem to be unused/referenced, so we can remove
them completely.
Signed-off-by: Florian La Roche <Florian.LaRoche@googlemail.com>
|
|
Fix problem which might exist since 2011. We need to execute
the destructors for all dependant libraries, before munmap the
shared libraries, otherwise running destructor of a dependent library
might cause a segfault, trying to access an already unmapped memory.
This fixes for example segfaults while running php -m with ldap
module.
Reported-By: Dave Flogeras <dflogeras2@gmail.com>
Tested-By: Dave Flogeras <dflogeras2@gmail.com>
|
|
Revert 35105679b9a900d58dadd0852e679c235f8176ba and add some debug
code.
|
|
|
|
|
|
The munmap was still called with broken length, as sometimes
start was empty. This finally solves segfaults when running
php -m with ldap module activated.
|
|
|
|
|
|
|
|
This reverts commit bf4c2d242f587700e3eb2ffd5721ddaf3cdbc7e5.
|
|
There is a patch included in https://bugs.busybox.net/show_bug.cgi?id=6158
from 2013, which was never applied.
This really fixes the php -m segfaults.
|
|
This reverts commit 952bb00f0b2eb576b0bf48c4f87018429a42e28d.
And adds this fix for 64 Bit systems.
http://lists.busybox.net/pipermail/uclibc/2014-December/048737.html
|
|
Sync with GNU C library and consolidate duplicate non
architecture specific defines.
MAP_UNINITIALIZED is only defined to 0x4000000 and used by
the Linux kernel when CONFIG_MMAP_ALLOW_UNINITIALIZED is enabled.
CONFIG_MMAP_ALLOW_UNINITIALIZED is only available for nommu.
See Documentation/nommu-mmap.txt.
|
|
R_XTENSA_TLSDESC_ARG is a true RELA relocation, the addend is in the
relocation record itself, not in place.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
|
There are multiple errors in _dl_tlsdesc_dynamic:
- the reference C implementation should return pointer to the
thread-local variable, not offset from the thread pointer, because the
xtensa ABI expects TLSDESC_FN to return pointer to the TLS variable;
- addx8 used for indexing into dtv has its second and third registers in
wrong order, the index must be multiplied by 8, not the base;
- the same addx8 uses wrong base: instead of dtv it adds the offset to
the threadptr;
- the return value in the fast path is calculated as
td->tlsinfo.ti_offset - __builtin_thread_pointer, not what was
intended;
- both fast and slow paths should not subtract __builtin_thread_pointer
from the result.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
|
Sync with GNU C library commit:
commit a68ba2f3cd3cbe32c1f31e13c20ed13487727b32
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Wed Oct 18 17:26:23 2017 +0100
Fixes issues with binutils version > 2.29.1.
|
|
Port over NPTL/TLS support from GNU C Library.
In the first step only the slower syscall is used for TLS
access. The uClibc-ng testsuite shows 79 errors, so their
is room for bugfixes and improvements.
|
|
Signed-off-by: Guo Ren <ren_guo@c-sky.com>
|
|
Follow the steps to build c-sky uclibc linux system:
1. git clone https://github.com/c-sky/buildroot.git
2. cd buildroot
3. make qemu_csky_ck810_uclibc_defconfig
4. make
Follow the buildroot/board/qemu/csky/readme.txt to run.
This buildroot toolchain is pre-build, But you can rebuild
the c-sky uclibc-ng alone and install it to the buildroot
sysroot manually.
We'll try our best to improve the uclibc-ng continuously.
Signed-off-by: Guo Ren <ren_guo@c-sky.com>
|
|
Signed-off-by: Alex Potapenko <opotapenko@gmail.com>
Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
|
|
Latest binutils 2.29 release emits a R_MICROBLAZE_NONE
relocation, which breaks shared library loader bootstrap
relocation.
|
|
|
|
This reverts commit 9b42da7d0558884e2a3cc9a8674ccfc752369610.
This fixes a long standing bug in dlclose().
Can be seen with apache and mod_php or just by executing
php -m to list all modules.
Reported-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
|
|
|