diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-09-18 09:10:43 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-09-18 09:10:43 +0000 |
commit | 872ea8540250d6b61e9a23d6f1209901d0ced875 (patch) | |
tree | ed77c6ddae287965cb3e1a0e4afae76baec8b490 /sysdeps/arm | |
parent | 9b3c7c3c713d7018c79f0b0ca0b34d386e8a25dd (diff) | |
download | glibc-872ea8540250d6b61e9a23d6f1209901d0ced875.zip glibc-872ea8540250d6b61e9a23d6f1209901d0ced875.tar.gz glibc-872ea8540250d6b61e9a23d6f1209901d0ced875.tar.bz2 |
Update.
1998-09-09 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/dl-machine.h (elf_machine_lazy_rel): Optimise a bit.
1998-09-07 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/dl-machine.h (RTLD_START): Keep in step with
recent ld.so changes.
(elf_machine_runtime_setup): Correct behaviour when profiling.
Diffstat (limited to 'sysdeps/arm')
-rw-r--r-- | sysdeps/arm/dl-machine.h | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index 49e9d08..b0f364f 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -99,8 +99,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) end in this function. */ if (profile) { - //got[2] = (Elf32_Addr) &_dl_runtime_profile; - got[2] = (Elf32_Addr) &_dl_runtime_resolve; + got[2] = (Elf32_Addr) &_dl_runtime_profile; /* Say that we really want profiling and the timers are started. */ _dl_profile_map = l; } @@ -283,9 +282,8 @@ _dl_start_user: str r0, [sp] @ now we enter a _dl_init_next loop - ldr r2, .L_DEF_SCOPE - ldr r2, [sl, r2] - ldr r4, [r2, #8] + ldr r4, .L_MAIN_SEARCHLIST + ldr r4, [sl, r4] @ call _dl_init_next to get the address of an initalizer 0: mov r0, r4 bl _dl_init_next(PLT) @@ -311,14 +309,14 @@ _dl_start_user: .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4 \n\ .L_SKIP_ARGS: \n\ .word _dl_skip_args(GOTOFF) \n\ -.L_DEF_SCOPE: \n\ - .word _dl_default_scope(GOT) \n\ .L_STARTUP_FLAG: .word _dl_starting_up(GOT) .L_FINI_PROC: .word _dl_fini(GOT) .L_STACK_END: .word __libc_stack_end(GOT) +.L_MAIN_SEARCHLIST + .word _dl_main_searchlist(GOT) .previous\n\ "); @@ -452,15 +450,9 @@ static inline void elf_machine_lazy_rel (Elf32_Addr l_addr, const Elf32_Rel *reloc) { Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset); - switch (ELF32_R_TYPE (reloc->r_info)) - { - case R_ARM_JUMP_SLOT: - *reloc_addr += l_addr; - break; - default: - assert (! "unexpected PLT reloc type"); - break; - } + /* Check for unexpected PLT reloc type. */ + assert (ELF32_R_TYPE (reloc->r_info) == R_ARM_JUMP_SLOT); + *reloc_addr += l_addr; } #endif /* RESOLVE */ |