diff options
-rw-r--r-- | nptl/ChangeLog | 6 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h | 109 |
2 files changed, 14 insertions, 101 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index aa18be29a2..9161f586b6 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,9 @@ +2003-06-08 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove + hand-written CFI generation code. Since ENTRY/END also initiated + CFI frames this caused two CFI sets to be generated. + 2003-06-07 Ulrich Drepper <drepper@redhat.com> * cleanup_routine.c: New file. diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h index 7e7bc49073..8173b39581 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h @@ -29,7 +29,6 @@ # define PSEUDO(name, syscall_name, args) \ .text; \ ENTRY (name) \ - L(name##START): \ SINGLE_THREAD_P; \ jne L(pseudo_cancel); \ DO_CALL (syscall_name, args); \ @@ -55,100 +54,8 @@ RESTSTK_##args \ cmpq $-4095, %rax; \ jae SYSCALL_ERROR_LABEL; \ - L(pseudo_end): \ - \ - /* Create unwinding information for the syscall wrapper. */ \ - .section .eh_frame,"a",@progbits; \ - L(STARTFRAME): \ - /* Length of the CIE. */ \ - .long L(ENDCIE)-L(STARTCIE); \ - L(STARTCIE): \ - /* CIE ID. */ \ - .long 0; \ - /* Version number. */ \ - .byte 1; \ - /* NUL-terminated augmentation string. Note "z" means there is an \ - augmentation value later on. */ \ - .string "zR"; \ - /* Code alignment factor. */ \ - .uleb128 1; \ - /* Data alignment factor. */ \ - .sleb128 -8; \ - /* Return address register column. */ \ - .byte 16; \ - /* Augmentation value length. */ \ - .uleb128 1; \ - /* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4. */ \ - .byte 0x1b; \ - /* Start of the table initialization. */ \ - .byte 0xc; \ - .uleb128 7; \ - .uleb128 8; \ - .byte 0x90; \ - .uleb128 1; \ - .align 8; \ - L(ENDCIE): \ - /* Length of the FDE. */ \ - .long L(ENDFDE)-L(STARTFDE); \ - L(STARTFDE): \ - /* CIE pointer. */ \ - .long L(STARTFDE)-L(STARTFRAME); \ - /* PC-relative start address of the code. */ \ - .long L(name##START)-.; \ - /* Length of the code. */ \ - .long L(name##END)-L(name##START); \ - /* No augmentation data. */ \ - .uleb128 0; \ - /* The rest of the code depends on the number of parameters the syscall \ - takes. */ \ - EH_FRAME_##args(name); \ - .align 4; \ - L(ENDFDE): \ - .previous - -# define EH_FRAME_0(name) \ - .byte 4; \ - .long L(SAVESTK)-L(name##START); \ - .byte 14; \ - .uleb128 32; \ - .byte 4; \ - .long L(RESTSTK)-L(SAVESTK); \ - .byte 14; \ - .uleb128 8; \ - .align 8 - -# define EH_FRAME_1(name) EH_FRAME_0 (name) -# define EH_FRAME_2(name) EH_FRAME_1 (name) - -# define EH_FRAME_3(name) \ - .byte 4; \ - .long L(SAVESTK)-L(name##START); \ - .byte 14; \ - .uleb128 48; \ - .byte 4; \ - .long L(RESTSTK)-L(SAVESTK); \ - .byte 14; \ - .uleb128 8; \ - .align 8 - -# define EH_FRAME_4(name) EH_FRAME_3 (name) - -# define EH_FRAME_5(name) \ - .byte 4; \ - .long L(SAVESTK)-L(name##START); \ - .byte 14; \ - .uleb128 64; \ - .byte 4; \ - .long L(RESTSTK)-L(SAVESTK); \ - .byte 14; \ - .uleb128 8; \ - .align 8 - -# define EH_FRAME_6(name) EH_FRAME_5 (name) - - -# undef ASM_SIZE_DIRECTIVE -# define ASM_SIZE_DIRECTIVE(name) L(name##END): .size name,.-name; + L(pseudo_end): + # define PUSHARGS_0 /* Nothing. */ # define PUSHARGS_1 PUSHARGS_0 movq %rdi, 8(%rsp); @@ -167,20 +74,20 @@ # define POPARGS_6 POPARGS_5 movq 48(%rsp), %r9; /* We always have to align the stack before calling a function. */ -# define SAVESTK_0 subq $24, %rsp; L(SAVESTK): +# define SAVESTK_0 subq $24, %rsp; cfi_adjust_cfa_offset (24); # define SAVESTK_1 SAVESTK_0 # define SAVESTK_2 SAVESTK_1 -# define SAVESTK_3 subq $40, %rsp; L(SAVESTK): +# define SAVESTK_3 subq $40, %rsp; cfi_adjust_cfa_offset (40); # define SAVESTK_4 SAVESTK_3 -# define SAVESTK_5 subq $56, %rsp; L(SAVESTK): +# define SAVESTK_5 subq $56, %rsp; cfi_adjust_cfa_offset (56); # define SAVESTK_6 SAVESTK_5 -# define RESTSTK_0 addq $24,%rsp; L(RESTSTK): +# define RESTSTK_0 addq $24,%rsp; cfi_adjust_cfa_offset (-24); # define RESTSTK_1 RESTSTK_0 # define RESTSTK_2 RESTSTK_1 -# define RESTSTK_3 addq $40, %rsp; L(RESTSTK): +# define RESTSTK_3 addq $40, %rsp; cfi_adjust_cfa_offset (-40); # define RESTSTK_4 RESTSTK_3 -# define RESTSTK_5 addq $56, %rsp; L(RESTSTK): +# define RESTSTK_5 addq $56, %rsp; cfi_adjust_cfa_offset (-56); # define RESTSTK_6 RESTSTK_5 # ifdef IS_IN_libpthread |