diff options
Diffstat (limited to 'contrib/binutils/gas/config/tc-s390.h')
-rw-r--r-- | contrib/binutils/gas/config/tc-s390.h | 61 |
1 files changed, 24 insertions, 37 deletions
diff --git a/contrib/binutils/gas/config/tc-s390.h b/contrib/binutils/gas/config/tc-s390.h index 48dbeda..fe55e15 100644 --- a/contrib/binutils/gas/config/tc-s390.h +++ b/contrib/binutils/gas/config/tc-s390.h @@ -1,5 +1,5 @@ /* tc-s390.h -- Header file for tc-s390.c. - Copyright 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002, 2004 Free Software Foundation, Inc. Written by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of GAS, the GNU Assembler. @@ -29,29 +29,18 @@ struct fix; #error S390 support requires BFD_ASSEMBLER #endif -/* This expression evaluates to false if the relocation is for a local object - for which we still want to do the relocation at runtime. True if we - are willing to perform this relocation while building the .o file. - This is only used for pcrel relocations, so GOTOFF does not need to be - checked here. I am not sure if some of the others are ever used with - pcrel, but it is easier to be safe than sorry. */ - -#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ - ((FIX)->fx_r_type != BFD_RELOC_390_GOTENT \ - && ((FIX)->fx_addsy == NULL \ - || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \ - && ! S_IS_WEAK ((FIX)->fx_addsy) \ - && S_IS_DEFINED ((FIX)->fx_addsy) \ - && ! S_IS_COMMON ((FIX)->fx_addsy)))) - -#define TC_FORCE_RELOCATION(FIXP) tc_s390_force_relocation(FIXP) +#define TC_FORCE_RELOCATION(FIX) tc_s390_force_relocation(FIX) extern int tc_s390_force_relocation PARAMS ((struct fix *)); +/* Don't resolve foo@PLT-bar to offset@PLT. */ +#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEG) \ + (! SEG_NORMAL (SEG) || TC_FORCE_RELOCATION (FIX)) + #define tc_fix_adjustable(X) tc_s390_fix_adjustable(X) extern int tc_s390_fix_adjustable PARAMS ((struct fix *)); -#define TC_FIX_ADJUSTABLE(fixP) \ - (! symbol_used_in_reloc_p ((fixP)->fx_addsy) && tc_fix_adjustable (fixP)) +/* Values passed to md_apply_fix3 don't include symbol values. */ +#define MD_APPLY_SYM_VALUE(FIX) 0 /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_s390 @@ -87,29 +76,27 @@ extern int target_big_endian; #define md_number_to_chars number_to_chars_bigendian -#define md_do_align(n, fill, len, max, around) \ -if ((n) && !need_pass_2 && (fill == 0) && \ - (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) { \ - char *p; \ - p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \ - (symbolS *) 0, (offsetT) (n), (char *) 0); \ - *p = 0x07; \ - goto around; \ -} - -extern void s390_align_code PARAMS ((fragS *, int)); - -#define HANDLE_ALIGN(fragP) \ -if (fragP->fr_type == rs_align_code) \ - s390_align_code (fragP, (fragP->fr_next->fr_address \ - - fragP->fr_address \ - - fragP->fr_fix)); +#define NOP_OPCODE 0x07 /* call md_pcrel_from_section, not md_pcrel_from */ -#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC) +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC) extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); #define md_operand(x) extern void s390_md_end PARAMS ((void)); #define md_end() s390_md_end () + +#define TARGET_USE_CFIPOP 1 + +#define tc_cfi_frame_initial_instructions s390_cfi_frame_initial_instructions +extern void s390_cfi_frame_initial_instructions PARAMS ((void)); + +#define tc_regname_to_dw2regnum tc_s390_regname_to_dw2regnum +extern int tc_s390_regname_to_dw2regnum PARAMS ((const char *regname)); + +extern int s390_cie_data_alignment; + +#define DWARF2_LINE_MIN_INSN_LENGTH 1 +#define DWARF2_DEFAULT_RETURN_COLUMN 14 +#define DWARF2_CIE_DATA_ALIGNMENT s390_cie_data_alignment |