summaryrefslogtreecommitdiff
path: root/ldso/ldso/dl-startup.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds_cb1@t-online.de>2007-12-03 23:10:14 +0000
committerBernd Schmidt <bernds_cb1@t-online.de>2007-12-03 23:10:14 +0000
commitc0008412eb2f37042adc360577fe8f234b3c095f (patch)
tree4bb735febbd5f00d97ba1eff78aa9c067093afc8 /ldso/ldso/dl-startup.c
parenta53ad698a17a33b9983a381aa64a335ca296b71a (diff)
Blackfin FD-PIC patches 5/6.
A couple more target macros for ld.so to deal with FD-PIC support. We need special code to compute the initial got and dpnt, and we need to pass extra arguments to _dl_get_ready_to_run.
Diffstat (limited to 'ldso/ldso/dl-startup.c')
-rw-r--r--ldso/ldso/dl-startup.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c
index d4294ec3a..bdb170ed8 100644
--- a/ldso/ldso/dl-startup.c
+++ b/ldso/ldso/dl-startup.c
@@ -192,8 +192,11 @@ DL_START(unsigned long args)
* we can take advantage of the magic offset register, if we
* happen to know what that is for this architecture. If not,
* we can always read stuff out of the ELF file to find it... */
- got = elf_machine_dynamic();
- dpnt = (ElfW(Dyn) *) DL_RELOC_ADDR(load_addr, got);
+ DL_BOOT_COMPUTE_GOT(got);
+
+ /* Now, finally, fix up the location of the dynamic stuff */
+ DL_BOOT_COMPUTE_DYN (dpnt, got, load_addr);
+
SEND_EARLY_STDERR_DEBUG("First Dynamic section entry=");
SEND_ADDRESS_STDERR_DEBUG(dpnt, 1);
_dl_memset(tpnt, 0, sizeof(struct elf_resolve));
@@ -304,7 +307,8 @@ DL_START(unsigned long args)
__rtld_stack_end = (void *)(argv - 1);
- _dl_get_ready_to_run(tpnt, load_addr, auxvt, envp, argv);
+ _dl_get_ready_to_run(tpnt, load_addr, auxvt, envp, argv
+ DL_GET_READY_TO_RUN_EXTRA_ARGS);
/* Transfer control to the application. */