From 39a46c42f5d31566573fceb6691a547c3b3b1e74 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 14 Apr 2003 07:03:40 +0000 Subject: Update. 2003-04-14 Ulrich Drepper * string/strxfrm.c (STRXFRM): Terminate rulearr at correct position. Reported by jreiser@BitWagon.com. --- nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h | 44 +++++++++++++++++------ 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h') diff --git a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h index 2f80654b5b..22fdc9421b 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h +++ b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h @@ -59,19 +59,16 @@ .long 0; \ /* Version number. */ \ .byte 1; \ - /* NUL-terminated augmentation string. Note "z" means there is an \ - augmentation value later on. */ \ - .string "zR"; \ + /* NUL-terminated augmentation string. */ \ + AUGMENTATION_STRING; \ /* Code alignment factor. */ \ .uleb128 1; \ /* Data alignment factor. */ \ .sleb128 -4; \ /* Return address register column. */ \ .byte 8; \ - /* Augmentation value length. */ \ - .uleb128 1; \ - /* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4. */ \ - .byte 0x1b; \ + /* Optional augmentation parameter. */ \ + AUGMENTATION_PARAM \ /* Start of the table initialization. */ \ .byte 0xc; /* DW_CFA_def_cfa */ \ .uleb128 4; \ @@ -85,12 +82,12 @@ L(STARTFDE): \ /* CIE pointer. */ \ .long L(STARTFDE)-L(STARTFRAME); \ - /* PC-relative start address of the code. */ \ - .long L(name##START)-.; \ + /* Start address of the code. */ \ + START_SYMBOL_REF (name); \ /* Length of the code. */ \ .long L(name##END)-L(name##START); \ - /* No augmentation data. */ \ - .uleb128 0; \ + /* Augmentation data. */ \ + AUGMENTATION_PARAM_FDE \ /* The rest of the code depends on the number of parameters the syscall \ takes. */ \ EH_FRAME_##args(name); \ @@ -98,6 +95,31 @@ L(ENDFDE): \ .previous +#ifdef SHARED +/* NUL-terminated augmentation string. Note "z" means there is an + augmentation value later on. */ +# define AUGMENTATION_STRING .string "zR" +# define AUGMENTATION_PARAM \ + /* Augmentation value length. */ \ + .uleb128 1; \ + /* Encoding: DW_EH_PE_pcrel + DW_EH_PE_sdata4. */ \ + .byte 0x1b; +# define AUGMENTATION_PARAM_FDE \ + /* No augmentation data. */ \ + .uleb128 0; +# define START_SYMBOL_REF(name) \ + /* PC-relative start address of the code. */ \ + .long L(name##START)-. +#else +/* No augmentation. */ +# define AUGMENTATION_STRING .ascii "\0" +# define AUGMENTATION_PARAM /* nothing */ +# define AUGMENTATION_PARAM_FDE /* nothing */ +# define START_SYMBOL_REF(name) \ + /* Absolute start address of the code. */ \ + .long L(name##START) +#endif + /* Callframe description for syscalls without parameters. This is very simple. The only place the stack pointer is changed is when the old cancellation state value is saved. */ -- cgit 1.4.1