(ELF_MACHINE_RUNTIME_TRAMPOLINE): Add CFI directives.
authoraj <aj>
Sun, 15 Jun 2003 19:40:19 +0000 (19:40 +0000)
committeraj <aj>
Sun, 15 Jun 2003 19:40:19 +0000 (19:40 +0000)
sysdeps/x86_64/dl-machine.h

index 964a4b4..8017c51 100644 (file)
@@ -217,13 +217,15 @@ _dl_runtime_profile:\n\
        " CFI_STARTPROC "\n\
 _dl_runtime_resolve:\n\
 _dl_runtime_profile:\n\
-       pushq %rax              # Preserve registers otherwise clobbered.\n\
-       pushq %rcx\n\
-       pushq %rdx\n\
-       pushq %rsi\n\
-       pushq %rdi\n\
-       pushq %r8\n\
-       pushq %r9\n\
+       subq $56,%rsp\n\
+       " CFI_ADJUST_CFA_OFFSET(72)" # Incorporate PLT\n\
+       movq %rax,(%rsp)        # Preserve registers otherwise clobbered.\n\
+       movq %rcx,8(%rsp)\n\
+       movq %rdx,16(%rsp)\n\
+       movq %rsi,24(%rsp)\n\
+       movq %rdi,32(%rsp)\n\
+       movq %r8,40(%rsp)\n\
+       movq %r9,48(%rsp)\n\
        movq 64(%rsp), %rsi     # Copy args pushed by PLT in register.\n\
        movq %rsi,%r11          # Multiply by 24\n\
        addq %r11,%rsi\n\
@@ -232,14 +234,15 @@ _dl_runtime_profile:\n\
        movq 56(%rsp), %rdi     # %rdi: link_map, %rsi: reloc_offset\n\
        call fixup              # Call resolver.\n\
        movq %rax, %r11         # Save return value\n\
-       popq %r9                # Get register content back.\n\
-       popq %r8\n\
-       popq %rdi\n\
-       popq %rsi\n\
-       popq %rdx\n\
-       popq %rcx\n\
-       popq %rax\n\
-       addq $16,%rsp           # Adjust stack\n\
+       movq 48(%rsp),%r9       # Get register content back.\n\
+       movq 40(%rsp),%r8\n\
+       movq 32(%rsp),%rdi\n\
+       movq 24(%rsp),%rsi\n\
+       movq 16(%rsp),%rdx\n\
+       movq 8(%rsp),%rcx\n\
+       movq (%rsp),%rax\n\
+       addq $72,%rsp           # Adjust stack\n\
+       " CFI_ADJUST_CFA_OFFSET(-72)"\n\
        jmp *%r11               # Jump to function address.\n\
        " CFI_ENDPROC "\n\
        .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\