diff options
-rw-r--r-- | gas/config/.Sanitize | 1 | ||||
-rw-r--r-- | gas/config/tc-m88k.c | 18 | ||||
-rw-r--r-- | gas/config/tc-m88k.h | 11 | ||||
-rw-r--r-- | gas/config/te-delta.h | 11 | ||||
-rw-r--r-- | gas/config/te-delta88.h | 13 | ||||
-rwxr-xr-x | gas/configure | 33 | ||||
-rw-r--r-- | gas/configure.in | 1 |
7 files changed, 69 insertions, 19 deletions
diff --git a/gas/config/.Sanitize b/gas/config/.Sanitize index b65c063..39ad355 100644 --- a/gas/config/.Sanitize +++ b/gas/config/.Sanitize @@ -126,6 +126,7 @@ tc-z8k.c tc-z8k.h te-386bsd.h te-delta.h +te-delta88.h te-dpx2.h te-generic.h te-go32.h diff --git a/gas/config/tc-m88k.c b/gas/config/tc-m88k.c index 586e274..e9b2273 100644 --- a/gas/config/tc-m88k.c +++ b/gas/config/tc-m88k.c @@ -21,6 +21,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307 #include <ctype.h> #include "as.h" +#include "subsegs.h" #include "m88k-opcode.h" struct field_val_assoc @@ -1428,4 +1429,21 @@ md_pcrel_from (fixp) /*NOTREACHED*/ } +/* When we align the .init section, insert the correct NOP pattern. */ + +int +m88k_do_align (n, fill) + int n; + const char *fill; +{ + if (!fill + && strcmp (obj_segment_name (now_seg), ".init") == 0) + { + static const unsigned char nop_pattern[] = { 0xf4, 0x00, 0x58, 0x00 }; + frag_align_pattern (n, nop_pattern, sizeof (nop_pattern)); + return 1; + } + return 0; +} + #endif /* M88KCOFF */ diff --git a/gas/config/tc-m88k.h b/gas/config/tc-m88k.h index ac8289e..f938ee4 100644 --- a/gas/config/tc-m88k.h +++ b/gas/config/tc-m88k.h @@ -90,4 +90,15 @@ struct reloc_info_m88k /* No special hook needed for symbols. */ #define tc_coff_symbol_emit_hook(s) +/* Align sections to a four byte boundary. */ +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#define SUB_SEGMENT_ALIGN(SEG) max (section_alignment[(int) (SEG)], 4) + +/* We use a special alignment function to insert the correct nop + pattern in .init. */ +extern int m88k_do_align PARAMS ((int, const char *)); +#define md_do_align(n,fill,l) if (m88k_do_align(n,fill)) goto l + #endif /* M88KCOFF */ diff --git a/gas/config/te-delta.h b/gas/config/te-delta.h index 4debb28..363a004 100644 --- a/gas/config/te-delta.h +++ b/gas/config/te-delta.h @@ -1,8 +1,13 @@ -/* Remove leading underscore from the gcc generated symbol names */ -#define STRIP_UNDERSCORE - #define TE_DELTA #include "obj-format.h" +#define COFF_NOLOAD_PROBLEM 1 + +/* Added these, because if we don't know what we're targetting we may + need an assembler version of libgcc, and that will use local + labels. */ +#define LOCAL_LABELS_DOLLAR 1 +#define LOCAL_LABELS_FB 1 + /* end of te-delta.h */ diff --git a/gas/config/te-delta88.h b/gas/config/te-delta88.h new file mode 100644 index 0000000..adcd6b7 --- /dev/null +++ b/gas/config/te-delta88.h @@ -0,0 +1,13 @@ +/* This file is te-delta88.h. */ + +#define TE_DELTA88 1 + +#define COFF_NOLOAD_PROBLEM 1 + +/* Added these, because if we don't know what we're targetting we may + need an assembler version of libgcc, and that will use local + labels. */ +#define LOCAL_LABELS_DOLLAR 1 +#define LOCAL_LABELS_FB 1 + +#include "obj-format.h" diff --git a/gas/configure b/gas/configure index bd80549..5929ea2 100755 --- a/gas/configure +++ b/gas/configure @@ -731,6 +731,7 @@ for this_target in $target $canon_targets ; do em=lynx ;; m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delta88 ;; m88k-*-coff*) fmt=coff targ=m88kcoff ;; # don't change em like *-*-bsd does @@ -1245,7 +1246,7 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1249 "configure" +#line 1250 "configure" #include "confdefs.h" #include <assert.h> Syntax Error @@ -1259,7 +1260,7 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1263 "configure" +#line 1264 "configure" #include "confdefs.h" #include <assert.h> Syntax Error @@ -1292,7 +1293,7 @@ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1296 "configure" +#line 1297 "configure" #include "confdefs.h" #include <$ac_hdr> EOF @@ -1344,7 +1345,7 @@ else ac_cv_c_cross=yes else cat > conftest.$ac_ext <<EOF -#line 1348 "configure" +#line 1349 "configure" #include "confdefs.h" main(){return(0);} EOF @@ -1367,7 +1368,7 @@ if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1371 "configure" +#line 1372 "configure" #include "confdefs.h" #include <alloca.h> int main() { return 0; } @@ -1398,7 +1399,7 @@ if eval "test \"`echo '$''{'ac_cv_func_alloca'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1402 "configure" +#line 1403 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -1456,7 +1457,7 @@ if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1460 "configure" +#line 1461 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -1484,7 +1485,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1488 "configure" +#line 1489 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1538,7 +1539,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 1542 "configure" +#line 1543 "configure" #include "confdefs.h" find_stack_direction () { @@ -1580,7 +1581,7 @@ else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -#line 1584 "configure" +#line 1585 "configure" #include "confdefs.h" int main() { return 0; } @@ -1619,7 +1620,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1623 "configure" +#line 1624 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1672,7 +1673,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1676 "configure" +#line 1677 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1725,7 +1726,7 @@ if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1729 "configure" +#line 1730 "configure" #include "confdefs.h" #include <assert.h> #include <stdio.h> @@ -1782,7 +1783,7 @@ if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1786 "configure" +#line 1787 "configure" #include "confdefs.h" $gas_test_headers int main() { return 0; } @@ -1818,7 +1819,7 @@ if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1822 "configure" +#line 1823 "configure" #include "confdefs.h" $gas_test_headers int main() { return 0; } @@ -1857,7 +1858,7 @@ if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1861 "configure" +#line 1862 "configure" #include "confdefs.h" #ifdef HAVE_ERRNO_H diff --git a/gas/configure.in b/gas/configure.in index a67bf6d..35bbfd0 100644 --- a/gas/configure.in +++ b/gas/configure.in @@ -204,6 +204,7 @@ changequote([,])dnl em=lynx ;; m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delta88 ;; m88k-*-coff*) fmt=coff targ=m88kcoff ;; # don't change em like *-*-bsd does |