Commit Graph

901 Commits

Author SHA1 Message Date
martin
2782e828f4 Avoid use after free, reported by the coverity scanner. 2014-10-30 07:53:41 +00:00
matt
463829e46a RISC-V support. 2014-09-19 17:43:33 +00:00
matt
6cf6fe02a9 New files for Userland support of UCB RISC-V (both 32-bit and 64-bit) 2014-09-19 17:36:24 +00:00
matt
27620987b8 New files for OR1K support 2014-09-03 19:34:25 +00:00
matt
00cc626e2f OR1K support 2014-09-03 19:31:32 +00:00
joerg
e4cd9bc4a2 Remove (now duplicated) target computation. 2014-08-31 20:06:22 +00:00
christos
94e1a89978 remove unused define 2014-08-27 04:07:04 +00:00
joerg
c1a71e8076 Restore parenthesis to cast in the right order. 2014-08-26 21:20:05 +00:00
joerg
b88be9f652 Replace casts in the inline version of _rtld_call_function_void of
_rtld_call_function_addr with ifdef on RTLD_LOADER.
2014-08-26 19:49:33 +00:00
christos
db25848c17 fix set but not used. 2014-08-26 15:06:50 +00:00
joerg
5d06599748 Go back to skipping init/fini handling for ldd, makes problems for 32bit
compat on LP64.
2014-08-26 12:14:14 +00:00
christos
d9972a4666 Introduce a cast to fix the build for Elf32 on _LP64. 2014-08-26 07:54:27 +00:00
joerg
7a1a6f1cf3 Add basic support for indirect functions. It allows providing a public
function symbol with an implementation choosen at run time.
Refactor calls to functions by address in ld.elf_so to create temporary
function descriptors on the stack, if the address is not leaked outside.

Limitations:
- no support for initialising static storage with function pointers
- no support for unnamed resolver functions

Inspired by FreeBSD's r228435 by kib@freebsd.org.
2014-08-25 20:40:52 +00:00
joerg
f5cd842d49 Outdated, kill. 2014-08-23 19:18:41 +00:00
joerg
6a83645936 Typo. 2014-08-23 18:05:33 +00:00
matt
5b3354816c Add proper registers for register counts. 2014-08-17 16:57:37 +00:00
matt
d32bdc3217 add a missing register prefix. 2014-08-17 16:14:19 +00:00
matt
30993f706c Use -fPIC since powerpc64 is always compiled as -fPIC and -fpic would cause
__PIC__ to change.
2014-08-15 09:40:07 +00:00
joerg
8a961968a8 Build position independent on PPC64, too. 2014-08-13 15:56:52 +00:00
matt
243b0ccea7 Don't provide __gnu_Unwind_Find_exidx if __ARM_DWARF_EH__ is defined 2014-08-10 23:35:26 +00:00
matt
547b3a3b01 Changes to existing files to enable building AARCH64 userland.
evbarm64-el
This is clang only.  While gcc4.8 supports aarch64, no netbsd support has
been written for aarch64 with gcc4.8.
2014-08-10 05:56:36 +00:00
matt
beb9c6d1b5 Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
2014-08-10 05:47:35 +00:00
matt
154c7bc749 Fix parenthesis on __ha macro 2014-07-28 17:28:13 +00:00
martin
b87a9303be The table of masks applied for each relocation type was wrong for some
relocs with 64bit targets, like GLOB_DAT.
Change some instruction patterns used for PLT slots, so -current
objdump -d shows what the comment says.
Fix encoding of %lox() in PLT slots "close" to -1.
Enhance debug output slightly.
2014-04-02 14:11:25 +00:00
matt
a1f21652d9 Make sure r1 is preserved _rtld_bind_start. 2014-03-22 15:13:10 +00:00
matt
e26b436cdb Simplify. If we got called via a calls $n, *pcrel32, instead of constructing
a new stack frame, back up the PC by 7 and return back to the calls so it
will be reinvoked.  (This is by far the most common way it gets invoked).
Otherwise rebuild a new callframe and jump to the routine.
2014-03-21 14:03:30 +00:00
matt
bc069d405c Improve some of the rdbg messages to print the address of the pltgot slot
being modified.
2014-03-21 01:43:33 +00:00
matt
22fbc67ed0 Don't resolve symbols to PLT entries on the VAX. It just causes a lot of
overhead.
2014-03-21 01:40:41 +00:00
joerg
f8bf5bbce0 Save actual start of function, not address of entry mask on the stack. 2014-03-19 21:52:00 +00:00
matt
f71aaf7afb Fix two bugs. (jump past entry mask, fix insv) 2014-03-19 15:34:30 +00:00
matt
db747c73e4 Once we know the bound routine, rebuilt a new callframe that can be unwound
properly.
2014-03-19 02:39:22 +00:00
matt
bf06b1032e Add .cfi ops so that one can unwind through this. 2014-03-18 23:43:38 +00:00
riastradh
6cb10275d0 Merge riastradh-drm2 to HEAD. 2014-03-18 18:20:35 +00:00
joerg
47875e291b Ignore LD_BIND_NOW for setuid binaries, but keep it in the environment
otherwise.
2014-03-18 16:05:34 +00:00
matt
cdbe3bab4f Change OUTPUT to powerpc:common to make powerpc64 ld happy 2014-03-07 05:57:46 +00:00
matt
9b490ebf92 Make ldd happy 2014-03-07 01:27:14 +00:00
matt
1200e7d3fe More PPC64 changes.
Nothing to do for lazy bindings.
Record DT_PPC64_GLINK and make _rtld_bind return it.
When resolving a JMP_SLOT, copy the source function descriptor into the PLTGOT
2014-03-06 19:19:40 +00:00
matt
15089cc505 Enable building ld.elf_so for powerpc
Produce a link map for ld.elf_so
2014-03-06 09:34:56 +00:00
matt
565a18129d Make ELF64 aware. 2014-03-06 09:34:07 +00:00
matt
fab57a4af5 powerpc64 changes 2014-03-06 07:47:39 +00:00
matt
746070937f Startup file for powerpc64. (too many difference with ppc32 to do
#ifdef dance)
2014-03-06 07:47:19 +00:00
joerg
15f3733bef Catch up with _lwp_park change. 2014-01-31 22:46:40 +00:00
joerg
cb2eb1a336 Don't align random sections. Simplify by using .pushsection/.popsection. 2014-01-12 19:36:08 +00:00
matt
467f6149c3 Don't use GOT relocations. Use PC relative for the GOT and GOTOFF for
_DYNAMIC.  Make thumb friendly.
2013-12-03 00:19:56 +00:00
christos
5fbbc292aa CID 1132773: Fix file descriptor leak 2013-11-27 18:01:33 +00:00
skrll
03ee7fc3bc If dlopen of the dynamic linker is requested, e.g. by rump in
rumpuser_dl_bootstrap, then return &_rtld_objself as the handle and do
not create a duplicate mapping.

The handle is mostly useless as _rtld_objself doesn't appear on
_rtld_objlist.

This fixes a problem on earm platforms where ld.elf_so (currently) has
an init_array section.  Calling this caused binaries to segv.
2013-11-20 07:18:23 +00:00
skrll
90c0a95fec Remove hack now it's fixed in 4.8.2 2013-11-16 17:14:06 +00:00
skrll
283152d4ee Apply hack for gcc 4.8 bug on rtld.c. 2013-11-13 11:06:53 +00:00
joerg
5e2fc1bbd3 Only initialise TLS space from the PT_TLS segment, if the size is
positive and the offset has been computed. Fixes PR lib/48324.
2013-10-21 19:14:15 +00:00
christos
193b880fad fix unused variable warnings 2013-10-19 17:19:30 +00:00