summaryrefslogtreecommitdiff
path: root/sysdeps/ia64/dl-machine.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-01-23 05:13:53 +0000
committerUlrich Drepper <drepper@redhat.com>2005-01-23 05:13:53 +0000
commit4bf1073d85f285002d802d184985757b8c4a5192 (patch)
treea94e35bbf19291b274ae41b4a0f96cd558e90807 /sysdeps/ia64/dl-machine.h
parent9c9628d9b411ffc68b11468affc7867d10f0d651 (diff)
Update.
* sysdeps/ia64/dl-machine.h: Remove PLT trampolines here. * sysdeps/ia64/dl-trampoline.S: New file.
Diffstat (limited to 'sysdeps/ia64/dl-machine.h')
-rw-r--r--sysdeps/ia64/dl-machine.h129
1 files changed, 1 insertions, 128 deletions
diff --git a/sysdeps/ia64/dl-machine.h b/sysdeps/ia64/dl-machine.h
index 3108047869..1a00d18a38 100644
--- a/sysdeps/ia64/dl-machine.h
+++ b/sysdeps/ia64/dl-machine.h
@@ -1,5 +1,5 @@
/* Machine-dependent ELF dynamic relocation inline functions. IA-64 version.
- Copyright (C) 1995-1997, 2000-2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997, 2000-2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -140,133 +140,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
}
-/*
- This code is used in dl-runtime.c to call the `fixup' function
- and then redirect to the address it returns. `fixup()' takes two
- arguments, however profile_fixup() takes three.
-
- The ABI specifies that we will never see more than 8 input
- registers to a function call, thus it is safe to simply allocate
- those, and simpler than playing stack games.
- - 12/09/99 Jes
- */
-#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
- extern void tramp_name (void); \
- asm ( \
-" .global " #tramp_name "#\n" \
-" .proc " #tramp_name "#\n" \
-#tramp_name ":\n" \
-" { .mmi\n" \
-" .prologue\n" \
-" .save ar.pfs, r40\n" \
-" alloc loc0 = ar.pfs, 8, 6, 3, 0\n" \
-" adds r2 = -144, r12\n" \
-" adds r3 = -128, r12\n" \
-" }\n" \
-" { .mii\n" \
-" .fframe 160\n" \
-" adds r12 = -160, r12\n" \
-" .save rp, r41\n" \
-" mov loc1 = b0\n" \
-" .body\n" \
-" mov out2 = b0 /* needed by fixup_profile */\n" \
-" ;;\n" \
-" }\n" \
-" { .mfb\n" \
-" mov loc2 = r8 /* preserve struct value register */\n" \
-" nop.f 0\n" \
-" nop.b 0\n" \
-" }\n" \
-" { .mii\n" \
-" mov loc3 = r9 /* preserve language specific register */\n" \
-" mov loc4 = r10 /* preserve language specific register */\n" \
-" mov loc5 = r11 /* preserve language specific register */\n" \
-" }\n" \
-" { .mmi\n" \
-" stf.spill [r2] = f8, 32\n" \
-" stf.spill [r3] = f9, 32\n" \
-" mov out0 = r16\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" stf.spill [r2] = f10, 32\n" \
-" stf.spill [r3] = f11, 32\n" \
-" shl out1 = r15, 4\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" stf.spill [r2] = f12, 32\n" \
-" stf.spill [r3] = f13, 32\n" \
-" shladd out1 = r15, 3, out1\n" \
-" ;;\n" \
-" }\n" \
-" { .mmb\n" \
-" stf.spill [r2] = f14\n" \
-" stf.spill [r3] = f15\n" \
-" br.call.sptk.many b0 = " #fixup_name "#\n" \
-" }\n" \
-" { .mii\n" \
-" ld8 r9 = [ret0], 8\n" \
-" adds r2 = 16, r12\n" \
-" adds r3 = 32, r12\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" ldf.fill f8 = [r2], 32\n" \
-" ldf.fill f9 = [r3], 32\n" \
-" mov b0 = loc1\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" ldf.fill f10 = [r2], 32\n" \
-" ldf.fill f11 = [r3], 32\n" \
-" mov b6 = r9\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" ldf.fill f12 = [r2], 32\n" \
-" ldf.fill f13 = [r3], 32\n" \
-" mov ar.pfs = loc0\n" \
-" ;;\n" \
-" }\n" \
-" { .mmi\n" \
-" ldf.fill f14 = [r2], 32\n" \
-" ldf.fill f15 = [r3], 32\n" \
-" .restore sp /* pop the unwind frame state */\n" \
-" adds r12 = 160, r12\n" \
-" ;;\n" \
-" }\n" \
-" { .mii\n" \
-" mov r9 = loc3 /* restore language specific register */\n" \
-" mov r10 = loc4 /* restore language specific register */\n" \
-" mov r11 = loc5 /* restore language specific register */\n" \
-" }\n" \
-" { .mii\n" \
-" ld8 gp = [ret0]\n" \
-" mov r8 = loc2 /* restore struct value register */\n" \
-" ;;\n" \
-" }\n" \
-" /* An alloc is needed for the break system call to work.\n" \
-" We don't care about the old value of the pfs register. */\n" \
-" { .mmb\n" \
-" .prologue\n" \
-" .body\n" \
-" alloc r2 = ar.pfs, 0, 0, 8, 0\n" \
-" br.sptk.many b6\n" \
-" ;;\n" \
-" }\n" \
-" .endp " #tramp_name "#\n");
-
-#ifndef PROF
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
- TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \
- TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup);
-#else
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
- TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup); \
- strong_alias (_dl_runtime_resolve, _dl_runtime_profile);
-#endif
-
/* Undo the adds out0 = 16, sp below to get at the value we want in
__libc_stack_end. */
#define DL_STACK_END(cookie) \