mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
Add TLS support for hppa-linux
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
/* tc-hppa.h -- Header file for the PA
|
||||
Copyright 1989, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
|
||||
@ -90,15 +90,14 @@
|
||||
#define ASEC_NULL (asection *)0
|
||||
|
||||
/* pa_define_label gets used outside of tc-hppa.c via tc_frob_label. */
|
||||
extern void pa_define_label PARAMS ((symbolS *));
|
||||
|
||||
extern void parse_cons_expression_hppa PARAMS ((expressionS *));
|
||||
extern void cons_fix_new_hppa PARAMS ((fragS *, int, int, expressionS *));
|
||||
extern int hppa_force_relocation PARAMS ((struct fix *));
|
||||
extern void pa_define_label (symbolS *);
|
||||
extern void parse_cons_expression_hppa (expressionS *);
|
||||
extern void cons_fix_new_hppa (fragS *, int, int, expressionS *);
|
||||
extern int hppa_force_relocation (struct fix *);
|
||||
|
||||
/* This gets called before writing the object file to make sure
|
||||
things like entry/exit and proc/procend pairs match. */
|
||||
extern void pa_check_eof PARAMS ((void));
|
||||
extern void pa_check_eof (void);
|
||||
#define tc_frob_file pa_check_eof
|
||||
|
||||
#define tc_frob_label(sym) pa_define_label (sym)
|
||||
@ -120,7 +119,7 @@ extern const char hppa_symbol_chars[];
|
||||
When used in an instruction it will always follow a comma. */
|
||||
#define TC_EOL_IN_INSN(PTR) (*(PTR) == '!' && (PTR)[-1] == ',')
|
||||
|
||||
int hppa_fix_adjustable PARAMS((struct fix *));
|
||||
int hppa_fix_adjustable (struct fix *);
|
||||
#define tc_fix_adjustable hppa_fix_adjustable
|
||||
|
||||
#define EXTERN_FORCE_RELOC 1
|
||||
@ -170,17 +169,23 @@ int hppa_fix_adjustable PARAMS((struct fix *));
|
||||
|
||||
#define tc_frob_symbol(sym,punt) \
|
||||
{ \
|
||||
if ((S_GET_SEGMENT (sym) == &bfd_und_section && ! symbol_used_p (sym) && \
|
||||
ELF_ST_VISIBILITY (S_GET_OTHER (sym)) == STV_DEFAULT) \
|
||||
if ((S_GET_SEGMENT (sym) == &bfd_und_section \
|
||||
&& ! symbol_used_p (sym) \
|
||||
&& ELF_ST_VISIBILITY (S_GET_OTHER (sym)) == STV_DEFAULT) \
|
||||
|| (S_GET_SEGMENT (sym) == &bfd_abs_section \
|
||||
&& ! S_IS_EXTERNAL (sym)) \
|
||||
|| strcmp (S_GET_NAME (sym), "$global$") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$PIC_pcrel$0") == 0) \
|
||||
|| strcmp (S_GET_NAME (sym), "$PIC_pcrel$0") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$tls_gdidx$") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$tls_ldidx$") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$tls_dtpoff$") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$tls_ieoff$") == 0 \
|
||||
|| strcmp (S_GET_NAME (sym), "$tls_leoff$") == 0) \
|
||||
punt = 1; \
|
||||
}
|
||||
|
||||
#define elf_tc_final_processing elf_hppa_final_processing
|
||||
void elf_hppa_final_processing PARAMS ((void));
|
||||
void elf_hppa_final_processing (void);
|
||||
|
||||
#define DWARF2_LINE_MIN_INSN_LENGTH 4
|
||||
#endif /* OBJ_ELF */
|
||||
@ -191,8 +196,7 @@ void elf_hppa_final_processing PARAMS ((void));
|
||||
A silly fudge required for backwards compatibility. */
|
||||
#define md_optimize_expr hppa_force_reg_syms_absolute
|
||||
|
||||
int hppa_force_reg_syms_absolute
|
||||
PARAMS ((expressionS *, operatorT, expressionS *));
|
||||
int hppa_force_reg_syms_absolute (expressionS *, operatorT, expressionS *);
|
||||
|
||||
#define TC_FIX_TYPE PTR
|
||||
#define TC_INIT_FIX_DATA(FIX) ((FIX)->tc_fix_data = NULL)
|
||||
|
Reference in New Issue
Block a user