diff options
Diffstat (limited to 'gas/config/tc-sparc.h')
-rw-r--r-- | gas/config/tc-sparc.h | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/gas/config/tc-sparc.h b/gas/config/tc-sparc.h index f43f1f2..4b13ff9 100644 --- a/gas/config/tc-sparc.h +++ b/gas/config/tc-sparc.h @@ -15,16 +15,20 @@ 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, 675 Mass Ave, Cambridge, MA 02139, USA. */ + to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define TC_SPARC 1 -#define LOCAL_LABELS_FB +#define LOCAL_LABELS_FB 1 #define TARGET_ARCH bfd_arch_sparc #ifdef OBJ_AOUT +#ifdef TE_NetBSD +#define TARGET_FORMAT "a.out-sparc-netbsd" +#else #define TARGET_FORMAT "a.out-sunos-big" #endif +#endif #ifdef OBJ_BOUT #define TARGET_FORMAT "b.out.big" #endif @@ -35,7 +39,7 @@ #define TARGET_FORMAT "elf64-sparc" /* v9 */ #define ENV64 /* v9 */ #endif /* sparcv9 */ -#define LOCAL_LABEL(name) ((name)[0] == '.' || !strncmp ((name), "_.L_", 4)) +#define LOCAL_LABEL(name) (((name)[0] == '.' && (name)[1] == 'L') || !strncmp ((name), "_.L_", 4)) #endif #define WORKING_DOT_WORD @@ -48,4 +52,25 @@ void tc_aout_pre_write_hook (); #define LISTING_HEADER "SPARC GAS " +/* I know that "call 0" fails in sparc-coff if this doesn't return 1. I + don't know about other relocation types, or other formats, yet. */ +#ifdef OBJ_COFF +#define TC_FORCE_RELOCATION(FIXP) \ + ((FIXP)->fx_r_type == BFD_RELOC_32_PCREL_S2 \ + && ((FIXP)->fx_addsy == 0 \ + || S_GET_SEGMENT ((FIXP)->fx_addsy) == absolute_section)) +#define RELOC_REQUIRES_SYMBOL +#endif + +#define TC_HANDLES_FX_DONE + +#ifdef OBJ_ELF +/* Keep relocations against global symbols. Don't turn them into + relocations against sections. This is required for the dynamic + linker to operate properly. */ +#define tc_fix_adjustable(FIX) (! S_IS_EXTERN ((FIX)->fx_addsy)) +#endif + +#define md_operand(x) + /* end of tc-sparc.h */ |