diff options
author | Andreas Schwab <schwab@redhat.com> | 2009-07-20 11:02:11 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2009-07-20 11:02:11 +0200 |
commit | 53924a77a2b827e7f9af6424a6a30224d09692d1 (patch) | |
tree | ba5d034a512524339fcfed113518eb83201fdc23 /sysdeps/generic | |
parent | 8ecde8e8c2a8e77804f954afffd9efe0ab951e52 (diff) | |
parent | 42e69bcf1137fccfd7a95645a9d316c6490b9ff9 (diff) | |
download | glibc-53924a77a2b827e7f9af6424a6a30224d09692d1.tar.gz glibc-53924a77a2b827e7f9af6424a6a30224d09692d1.tar.xz glibc-53924a77a2b827e7f9af6424a6a30224d09692d1.zip |
Merge commit 'origin/master' into fedora/master
Diffstat (limited to 'sysdeps/generic')
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 19 | ||||
-rw-r--r-- | sysdeps/generic/sysdep.h | 43 |
2 files changed, 55 insertions, 7 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index b1af7fde0a..30f9d23091 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -335,6 +335,10 @@ struct audit_ifaces extern int _dl_name_match_p (const char *__name, const struct link_map *__map) internal_function; +/* Compute next higher prime number. */ +extern unsigned long int _dl_higher_prime_number (unsigned long int n) + internal_function; + /* Function used as argument for `_dl_receive_error' function. The arguments are the error code, error string, and the objname the error occurred in. */ @@ -383,6 +387,21 @@ struct rtld_global allocated by rtld. Later it keeps the size of the map. It might be reset if in _dl_close if the last global object is removed. */ size_t _ns_global_scope_alloc; + /* Search table for unique objects. */ + struct unique_sym_table + { + __rtld_lock_recursive_t lock; + struct unique_sym + { + uint32_t hashval; + const char *name; + const ElfW(Sym) *sym; + const struct link_map *map; + } *entries; + size_t size; + size_t n_elements; + void (*free) (void *); + } _ns_unique_sym_table; /* Keep track of changes to each namespace' list. */ struct r_debug _ns_debug; } _dl_ns[DL_NNS]; diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h index 15d951c777..54884d9afe 100644 --- a/sysdeps/generic/sysdep.h +++ b/sysdeps/generic/sysdep.h @@ -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 |