1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Replace hand-coded unwind tables from x86-64 pthread_once.

This commit is contained in:
Ulrich Drepper
2009-07-17 14:45:08 -07:00
parent d52c96e73a
commit 63601ccd16
4 changed files with 65 additions and 113 deletions

View File

@ -1,5 +1,5 @@
/* Generic asm macros used on many machines.
Copyright (C) 1991,92,93,96,98,2002,2003 Free Software Foundation, Inc.
Copyright (C) 1991,92,93,96,98,2002,2003,2009 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
@ -39,13 +39,13 @@
#ifdef __ASSEMBLER__
/* Mark the end of function named SYM. This is used on some platforms
to generate correct debugging information. */
#ifndef END
#define END(sym)
#endif
# ifndef END
# define END(sym)
# endif
#ifndef JUMPTARGET
#define JUMPTARGET(sym) sym
#endif
# ifndef JUMPTARGET
# define JUMPTARGET(sym) sym
# endif
/* Makros to generate eh_frame unwind information. */
# ifdef HAVE_ASM_CFI_DIRECTIVES
@ -65,6 +65,8 @@
# define cfi_remember_state .cfi_remember_state
# define cfi_restore_state .cfi_restore_state
# define cfi_window_save .cfi_window_save
# define cfi_personality(enc, exp) .cfi_personality enc, exp
# define cfi_lsda(enc, exp) .cfi_lsda enc, exp
# else
# define cfi_startproc
# define cfi_endproc
@ -82,6 +84,8 @@
# define cfi_remember_state
# define cfi_restore_state
# define cfi_window_save
# define cfi_personality(enc, exp)
# define cfi_lsda(enc, exp)
# endif
#else /* ! ASSEMBLER */
@ -116,6 +120,10 @@
".cfi_restore_state"
# define CFI_WINDOW_SAVE \
".cfi_window_save"
# define CFI_PERSONALITY(enc, exp) \
".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
# define CFI_LSDA(enc, exp) \
".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
# else
# define CFI_STARTPROC
# define CFI_ENDPROC
@ -132,6 +140,27 @@
# define CFI_REMEMBER_STATE
# define CFI_RESTORE_STATE
# define CFI_WINDOW_SAVE
# define CFI_PERSONALITY(enc, exp)
# define CFI_LSDA(enc, exp)
# endif
#endif /* __ASSEMBLER__ */
/* Values used for encoding parameter of cfi_personality and cfi_lsda. */
#define DW_EH_PE_absptr 0x00
#define DW_EH_PE_omit 0xff
#define DW_EH_PE_uleb128 0x01
#define DW_EH_PE_udata2 0x02
#define DW_EH_PE_udata4 0x03
#define DW_EH_PE_udata8 0x04
#define DW_EH_PE_sleb128 0x09
#define DW_EH_PE_sdata2 0x0a
#define DW_EH_PE_sdata4 0x0b
#define DW_EH_PE_sdata8 0x0c
#define DW_EH_PE_signed 0x08
#define DW_EH_PE_pcrel 0x10
#define DW_EH_PE_textrel 0x20
#define DW_EH_PE_datarel 0x30
#define DW_EH_PE_funcrel 0x40
#define DW_EH_PE_aligned 0x50
#define DW_EH_PE_indirect 0x80