X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-s390.h;h=d9bc231a84817cf02758e77af1ae84de0b8f9b7f;hb=1c912705af057b0d30ea51af46d8a00014a84034;hp=d3796d93cbaf7e7b85f8f7ae2d08ab7eb86e1bb7;hpb=f7e42eb4af140e0068476b586464eaed5569548d;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-s390.h b/gas/config/tc-s390.h index d3796d93cb..d9bc231a84 100644 --- a/gas/config/tc-s390.h +++ b/gas/config/tc-s390.h @@ -1,12 +1,12 @@ /* tc-s390.h -- Header file for tc-s390.c. - Copyright 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000-2020 Free Software Foundation, Inc. Written by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) + the Free Software Foundation; either version 3, or (at your option) any later version. GAS is distributed in the hope that it will be useful, @@ -16,44 +16,36 @@ You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free - Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ #define TC_S390 -#ifdef ANSI_PROTOTYPES struct fix; -#endif - -#ifndef BFD_ASSEMBLER - #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_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(FIX) tc_s390_force_relocation(FIX) +extern int tc_s390_force_relocation (struct fix *); + +/* Don't resolve foo@PLT-bar to offset@PLT. */ +#define TC_FORCE_RELOCATION_SUB_SAME(FIX, SEG) \ + (GENERIC_FORCE_RELOCATION_SUB_SAME (FIX, SEG) \ + || TC_FORCE_RELOCATION (FIX)) #define tc_fix_adjustable(X) tc_s390_fix_adjustable(X) -extern int tc_s390_fix_adjustable PARAMS ((struct fix *)); +extern int tc_s390_fix_adjustable (struct fix *); + +/* Values passed to md_apply_fix don't include symbol values. */ +#define MD_APPLY_SYM_VALUE(FIX) 0 /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_s390 -extern enum bfd_architecture s390_arch PARAMS ((void)); +extern enum bfd_architecture s390_arch (void); /* The target BFD format. */ #define TARGET_FORMAT s390_target_format() +extern const char *s390_target_format (void); -/* Set the endianness we are using. */ +/* Set the endianness we are using. */ #define TARGET_BYTES_BIG_ENDIAN 1 /* Whether or not the target is big endian */ @@ -67,7 +59,7 @@ extern int target_big_endian; /* We need to be able to make relocations involving the difference of two symbols. This includes the difference of two symbols when - one of them is undefined (this comes up in PIC code generation). + one of them is undefined (this comes up in PIC code generation). */ #define UNDEFINED_DIFFERENCE_OK @@ -77,37 +69,32 @@ extern int target_big_endian; /* We don't need to handle .word strangely. */ #define WORKING_DOT_WORD -/* We set the fx_done field appropriately in md_apply_fix. */ -#define TC_HANDLES_FX_DONE - #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)); - -/* call md_apply_fix3 with segment instead of md_apply_fix */ -#define MD_APPLY_FIX3 +#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) -extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC) #define md_operand(x) -extern void s390_md_end PARAMS ((void)); +extern void s390_md_end (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 (void); + +#define tc_regname_to_dw2regnum tc_s390_regname_to_dw2regnum +extern int tc_s390_regname_to_dw2regnum (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 + +extern void s390_elf_final_processing (void); + +#define elf_tc_final_processing s390_elf_final_processing