diff options
author | Ken Raeburn <raeburn@cygnus> | 1994-05-27 16:58:05 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@cygnus> | 1994-05-27 16:58:05 +0000 |
commit | c06e55d99ac38bd32492481f46b69ec62ee1e433 (patch) | |
tree | 7567d7ea926780a1d5242d47399b3a267283bb3a /gas | |
parent | 60e8a534070c8dc181b2fb4971b8199597a168f1 (diff) | |
download | gdb-c06e55d99ac38bd32492481f46b69ec62ee1e433.zip gdb-c06e55d99ac38bd32492481f46b69ec62ee1e433.tar.gz gdb-c06e55d99ac38bd32492481f46b69ec62ee1e433.tar.bz2 |
changes from gas-2.3/binutils-2.4 dist (details in branch log msgs, changelogs)
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 64 | ||||
-rw-r--r-- | gas/Makefile.in | 2 | ||||
-rw-r--r-- | gas/config/ho-vax.h | 1 | ||||
-rw-r--r-- | gas/config/ho-vms.h | 7 | ||||
-rw-r--r-- | gas/config/obj-vms.c | 238 | ||||
-rw-r--r-- | gas/config/obj-vms.h | 4 | ||||
-rw-r--r-- | gas/config/tc-sparc.c | 5 | ||||
-rw-r--r-- | gas/configure.bat | 93 | ||||
-rw-r--r-- | gas/make-gas.com | 2 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/vmsconf.sh | 2 |
11 files changed, 276 insertions, 148 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 3e26788..ec3abcf 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,67 @@ +Thu May 19 13:45:59 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + Merged in changes from gas-2.3 net release: + + * Makefile.in (VERSION): Updated to cygnus-2.3.1. + + * config/obj-vms.c: Replaced unchecked uses of malloc with + xmalloc. + + * listing.c (list_symbol_table): Only test BFD64, not + BFD_ASSEMBLER too. + + * config/obj-coff.c (fixup_segment) [DIFF_EXPR_OK]: Don't check + pcrel, just convert it. + + * config/obj-vms.c: Removed lots of extra semicolons after + compound statements. + (strchr): Don't declare here. + + * config/ho-vax.h (realloc): Declare. + + * config/ho-vms.h (strchr, strdup): Declare. + + * config/tc-sparc.c (md_parse_option) [OBJ_ELF]: Accept and ignore + option `-q'. + + Wed May 18 20:50:35 1994 Pat Rankin (rankin@eql.caltech.edu) + + * config/obj-vms.h (DBG_S_C_SQUAD, DBG_S_C_UQUAD): define these + new VMS symbol-type macros; signed and unsigned quadword integers, + for `long long' support. Their values come from the existing + DSC$K_DTYPE_QU and DSC$K_DTYPE_Q macros in <descrip.h>. The + VMS debugger now recognizes `long long' variables correctly. + config/obj-vms.c (VMS_typedef_parse) [case 'r']: add entries + for gcc2's predefined types "long double" (same as double, as + per gcc's current state), "long long int", "long long unsigned + int", and final `otherwise' case (to avoid uninitialized type + and size fields). [caveat: predefined types "complex int", + "complex float", "complex double", and "complex long double" are + still missing.] + + * config/ho-vms.h (EXIT_FAILURE): define as 0x10000002 instead + of 0, because the latter indicates success rather than failure + when passed to `exit' or return from `main' compiled by gcc2. + + * config/obj-vms.c (array_suffix, generate_suffix): replace two + hardcoded `0xa3's with macro DBG_S_C_ADVANCED_TYPE from obj-vms.h. + (VMS_typedef_parse): eliminate redundant if-then-else when + allocating new symbol entry and linking it to VMS_Symbol_type_list. + + Tue May 17 20:47:31 1994 Pat Rankin (rankin@eql.caltech.edu) + + * config/obj-vms.c (Write_VMS_MHD_Records): don't try to interpret + the contents of the GAS_VERSION string when falling back to it for + language processor identification. + + * make-gas.com, vmsconf.sh (ENVIRON): fix misspelling of + `psect_attr' in linker options. + + Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com) + + * configure.bat: update to latest makefile.in + * config/te-go32.h: [new] go32's environment + Fri May 20 17:59:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * as.h: Don't declare parameters for strstr. diff --git a/gas/Makefile.in b/gas/Makefile.in index ae98eb5..84b0c0b 100644 --- a/gas/Makefile.in +++ b/gas/Makefile.in @@ -50,7 +50,7 @@ infodir = $(prefix)/info includedir = $(prefix)/include docdir = $(datadir)/doc -VERSION=cygnus-2.2.90 +VERSION=cygnus-2.3.1 SHELL = /bin/sh diff --git a/gas/config/ho-vax.h b/gas/config/ho-vax.h index 6da6691..ed8ccc7 100644 --- a/gas/config/ho-vax.h +++ b/gas/config/ho-vax.h @@ -22,6 +22,7 @@ #endif /* not ansi */ extern char *malloc (); +extern char *realloc (); extern int free (); /* end of ho-vax.h */ diff --git a/gas/config/ho-vms.h b/gas/config/ho-vms.h index a546019..04a71dd 100644 --- a/gas/config/ho-vms.h +++ b/gas/config/ho-vms.h @@ -28,10 +28,13 @@ #include <perror.h> #ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 1 -#define EXIT_FAILURE 0 +#define EXIT_SUCCESS 1 /* SS$_NORMAL, STS$K_SUCCESS */ +#define EXIT_FAILURE 0x10000002 /* (STS$K_ERROR | STS$M_INHIB_MSG) */ #endif #define unlink delete +extern char *strchr (); +extern char *strdup (); + /* end of ho-vms.h */ diff --git a/gas/config/obj-vms.c b/gas/config/obj-vms.c index 10b7fd2..2216ac0 100644 --- a/gas/config/obj-vms.c +++ b/gas/config/obj-vms.c @@ -53,8 +53,6 @@ char *compiler_version_string; char vms_name_mapping = 0; - -extern char *strchr (); extern char *myname; static symbolS *Entry_Point_Symbol = 0; /* Pointer to "_main" */ @@ -661,8 +659,8 @@ VMS_Set_Data (Psect_Index, Offset, Record_Type, Force) PUT_CHAR (TIR_S_C_STA_WPB); PUT_SHORT (Psect_Index); PUT_CHAR (Offset); - }; - }; + } + } /* * Set relocation base */ @@ -947,8 +945,8 @@ VMS_TBT_Routine_End (Max_Size, sp) !strcmp (S_GET_NAME (sp), "gcc2_compiled."))) Size = S_GET_VALUE (symbolP); - }; - }; + } + } if (Size == 0x7fffffff) Size = Max_Size; Size -= S_GET_VALUE (sp); /* and get the size of the routine */ @@ -1417,7 +1415,7 @@ find_file (sp) break; if (fpnt->spnt == sp) return fpnt; - }; + } for (fpnt = file_root; fpnt; fpnt = fpnt->next) { if (fpnt == (struct input_file *) NULL) @@ -1428,9 +1426,9 @@ find_file (sp) return fpnt; same_file = fpnt; break; - }; - }; - fpnt = (struct input_file *) malloc (sizeof (struct input_file)); + } + } + fpnt = (struct input_file *) xmalloc (sizeof (struct input_file)); if (file_root == (struct input_file *) NULL) file_root = fpnt; else @@ -1438,7 +1436,7 @@ find_file (sp) struct input_file *fpnt1; for (fpnt1 = file_root; fpnt1->next; fpnt1 = fpnt1->next) ; fpnt1->next = fpnt; - }; + } fpnt->next = (struct input_file *) NULL; fpnt->name = S_GET_NAME (sp); fpnt->min_line = 0x7fffffff; @@ -1522,7 +1520,7 @@ fix_name (pnt) { if (*pnt1 == '.') *pnt1 = '$'; - }; + } return pnt; } @@ -1566,7 +1564,7 @@ find_symbol (dbx_type) if (spnt->dbx_type == dbx_type) break; spnt = spnt->next; - }; + } if (spnt == (struct VMS_DBG_Symbol *) NULL) return 0; /*Dunno what this is*/ if(spnt->advanced == ALIAS) @@ -1595,7 +1593,7 @@ push (value, size) overflow = 1; Lpnt = 1; return; - }; + } Lpnt -= size1; md_number_to_chars (&Local[Lpnt + 1], value, size1); } @@ -1606,10 +1604,10 @@ push (value, size) overflow = 1; Apoint = MAX_DEBUG_RECORD - 1; return; - }; + } md_number_to_chars (&Asuffix[Apoint], value, size1); Apoint += size1; - }; + } } /* this routine generates the array descriptor for a given array */ @@ -1629,7 +1627,7 @@ array_suffix (spnt2) spnt = find_symbol (spnt->type2); if (spnt == (struct VMS_DBG_Symbol *) NULL) return; - }; + } spnt1 = spnt; spnt1 = spnt; total_size = 1; @@ -1638,10 +1636,10 @@ array_suffix (spnt2) rank++; total_size *= (spnt1->index_max - spnt1->index_min + 1); spnt1 = find_symbol (spnt1->type2); - }; + } total_size = total_size * spnt1->data_size; push (spnt1->data_size, 2); - if (spnt1->VMS_type == 0xa3) + if (spnt1->VMS_type == DBG_S_C_ADVANCED_TYPE) push (0, 1); else push (spnt1->VMS_type, 1); @@ -1657,14 +1655,14 @@ array_suffix (spnt2) { push (spnt1->index_max - spnt1->index_min + 1, 4); spnt1 = find_symbol (spnt1->type2); - }; + } spnt1 = spnt; while (spnt1->advanced == ARRAY) { push (spnt1->index_min, 4); push (spnt1->index_max, 4); spnt1 = find_symbol (spnt1->type2); - }; + } } /* this routine generates the start of a variable descriptor based upon @@ -1677,7 +1675,7 @@ new_forward_ref (dbx_type) int dbx_type; { struct forward_ref *fpnt; - fpnt = (struct forward_ref *) malloc (sizeof (struct forward_ref)); + fpnt = (struct forward_ref *) xmalloc (sizeof (struct forward_ref)); fpnt->next = f_ref_root; f_ref_root = fpnt; fpnt->dbx_type = dbx_type; @@ -1718,7 +1716,7 @@ gen1 (spnt, array_suffix_len) total_len = 2; push (total_len, -2); return 1; - }; + } push (0, -4); push (0xfa02, -2); total_len = -2; @@ -1748,7 +1746,7 @@ gen1 (spnt, array_suffix_len) push (DBG_S_C_POINTER, -1); total_len += 3; push (total_len, -2); - }; + } return 1; case ARRAY: spnt1 = spnt; @@ -1762,7 +1760,7 @@ gen1 (spnt, array_suffix_len) spnt->type2); return; } - }; + } /* It is too late to generate forward references, so the user gets a message. * This should only happen on a compiler error */ i = gen1 (spnt1, 1); @@ -1781,10 +1779,10 @@ gen1 (spnt, array_suffix_len) push (0xfa, -1); push (0x0101, -2); push (DBG_S_C_COMPLEX_ARRAY, -1); - }; + } total_len += array_suffix_len + 8; push (total_len, -2); - }; + } } /* This generates a suffix for a variable. If it is not a defined type yet, @@ -1811,10 +1809,10 @@ generate_suffix (spnt, dbx_type) new_forward_ref (dbx_type); else { - if (spnt->VMS_type != 0xa3) + if (spnt->VMS_type != DBG_S_C_ADVANCED_TYPE) return 0; /* no suffix needed */ gen1 (spnt, 0); - }; + } push (0x00af, -2); total_len += 4; push (total_len, -1); @@ -1826,7 +1824,7 @@ generate_suffix (spnt, dbx_type) printf (" Variable descriptor %d too complicated. Defined as *void ", spnt->dbx_type); VMS_Store_Immediate_Data (pvoid, 6, OBJ_S_C_DBG); return; - }; + } i = 0; while (Lpnt < MAX_DEBUG_RECORD - 1) Local[i++] = Local[++Lpnt]; @@ -1837,7 +1835,7 @@ generate_suffix (spnt, dbx_type) VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); Lpnt = 0; VMS_Store_Struct (struct_number); - }; + } /* we use this for a forward reference to a structure that has yet to be *defined. We store four bytes of zero to make room for the actual address once * it is known @@ -1852,7 +1850,7 @@ generate_suffix (spnt, dbx_type) Local[Lpnt++] = 0; VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); Lpnt = 0; - }; + } i = 0; while (i < Apoint) Local[Lpnt++] = Asuffix[i++]; @@ -1952,7 +1950,7 @@ VMS_local_stab_Parse (sp) { char * pnt3=(char*) strchr (S_GET_NAME (sp1), ':') + 1; if (*pnt3 == 'F' || *pnt3 == 'f') break; - }; + } if (S_GET_RAW_TYPE (sp1) != N_RSYM) continue; str1 = S_GET_NAME (sp1); /* and get the name */ @@ -1963,15 +1961,15 @@ VMS_local_stab_Parse (sp) break; pnt2++; str1++; - }; + } if ((*str1 != ':') || (*pnt2 != ':')) continue; return; /* they are the same! lets skip this one */ - }; /* for */ + } /* for */ /* first find the dbx symbol type from list, and then find VMS type */ pnt++; /* skip p in case no register */ - }; /* if */ - }; /* p block */ + } /* if */ + } /* p block */ pnt = cvt_integer (pnt, &dbx_type); spnt = find_symbol (dbx_type); if (spnt == (struct VMS_DBG_Symbol *) NULL) @@ -2037,13 +2035,13 @@ VMS_stab_parse (sp, expected_type, type1, type2, Text_Psect) (S_GET_RAW_TYPE (vsp->Symbol) == type2))) break; vsp = vsp->Next; - }; + } if (vsp != (struct VMS_Symbol *) NULL) { VMS_DBG_record (spnt, vsp->Psect_Index, vsp->Psect_Offset, str); *pnt1 = ':'; /* and restore the string */ return 1; - }; + } /* the symbol was not in the symbol list, but it may be an "entry point" if it was a constant */ for (sp1 = symbol_rootP; sp1; sp1 = symbol_next (sp1)) @@ -2068,7 +2066,7 @@ VMS_stab_parse (sp, expected_type, type1, type2, Text_Psect) printf ("definitions of global variables in your source module(s). Don't say\n"); printf ("I didn't warn you!"); gave_compiler_message = 1; - }; + } VMS_DBG_record (spnt, Text_Psect, S_GET_VALUE (sp1), @@ -2078,9 +2076,9 @@ VMS_stab_parse (sp, expected_type, type1, type2, Text_Psect) /* fool assembler to not output this * as a routine in the TBT */ return 1; - }; - }; - }; + } + } + } *pnt1 = ':'; /* and restore the string */ return 0; } @@ -2158,7 +2156,7 @@ VMS_RSYM_Parse (sp, Current_Routine, Text_Psect) { pnt=(char*) strchr (S_GET_NAME (symbolP), ':') + 1; if (*pnt == 'F' || *pnt == 'f') break; - }; + } } /* check to see that the addresses were defined. If not, then there were no * brackets in the function, and we must try to search for the next function @@ -2190,7 +2188,7 @@ VMS_RSYM_Parse (sp, Current_Routine, Text_Psect) * as a marker of the max PC for which this reg is valid */ if (Max_Offset == 0x7fffffff) Max_Offset = Max_Source_Offset; - }; + } dbx_type = 0; str = S_GET_NAME (sp); pnt = (char *) strchr (str, ':'); @@ -2268,8 +2266,8 @@ forward_reference (pnt) if (spnt1 == (struct VMS_DBG_Symbol *) NULL) break; spnt = spnt1; - }; - }; + } + } pnt = cvt_integer (pnt + 1, &i); pnt = cvt_integer (pnt + 1, &i); } while (*++pnt != ';'); @@ -2290,8 +2288,8 @@ final_forward_reference (spnt) (spnt1 == (struct VMS_DBG_Symbol*) NULL))return 1; if(spnt1 == (struct VMS_DBG_Symbol*) NULL) break; spnt=spnt1; - }; - }; + } + } return 0; /* no forward refences found */ } @@ -2337,7 +2335,7 @@ VMS_typedef_parse (str) { /* check for static constants */ *str = '\0'; /* for now we ignore them */ return 0; - }; + } while ((*pnt <= '9') && (*pnt >= '0')) pnt--; pnt++; /* and get back to the number */ @@ -2346,20 +2344,11 @@ VMS_typedef_parse (str) /* first we see if this has been defined already, due to a forward reference*/ if (spnt == (struct VMS_DBG_Symbol *) NULL) { - if (VMS_Symbol_type_list == (struct VMS_DBG_Symbol *) NULL) - { - spnt = (struct VMS_DBG_Symbol *) malloc (sizeof (struct VMS_DBG_Symbol)); - spnt->next = (struct VMS_DBG_Symbol *) NULL; - VMS_Symbol_type_list = spnt; - } - else - { - spnt = (struct VMS_DBG_Symbol *) malloc (sizeof (struct VMS_DBG_Symbol)); - spnt->next = VMS_Symbol_type_list; - VMS_Symbol_type_list = spnt; - }; + spnt = (struct VMS_DBG_Symbol *) xmalloc (sizeof (struct VMS_DBG_Symbol)); + spnt->next = VMS_Symbol_type_list; + VMS_Symbol_type_list = spnt; spnt->dbx_type = i1; /* and save the type */ - }; + } /* for structs and unions, do a partial parse, otherwise we sometimes get * circular definitions that are impossible to resolve. We read enough info * so that any reference to this type has enough info to be resolved @@ -2367,7 +2356,7 @@ VMS_typedef_parse (str) pnt = str + 1; /* point to character past equal sign */ if ((*pnt == 'u') || (*pnt == 's')) { - }; + } if ((*pnt <= '9') && (*pnt >= '0')) { if (type_check ("void")) @@ -2375,13 +2364,13 @@ VMS_typedef_parse (str) *str = '\0'; spnt->advanced = VOID; return 0; - }; + } if (type_check ("unknown type")) { /* this is the void symbol */ *str = '\0'; spnt->advanced = UNKNOWN; return 0; - }; + } pnt1 = cvt_integer(pnt,&i1); if(i1 != spnt->dbx_type) { @@ -2393,7 +2382,7 @@ VMS_typedef_parse (str) printf ("gcc-as warning(debugger output):"); printf (" %d is an unknown untyped variable.\n", spnt->dbx_type); return 1; /* do not know what this is */ - }; + } /* now define this module*/ pnt = str + 1; /* point to character past equal sign */ switch (*pnt) @@ -2452,9 +2441,32 @@ VMS_typedef_parse (str) } else if (type_check ("double")) { + /* caveat: this assumes D_float, and is not correct for G_float */ spnt->VMS_type = DBG_S_C_REAL8; spnt->data_size = 8; } + else if (type_check ("long double")) + { + /* same as double, at least for now */ + spnt->VMS_type = DBG_S_C_REAL8; + spnt->data_size = 8; + } + else if (type_check ("long long int")) + { + spnt->VMS_type = DBG_S_C_SQUAD; /* signed quadword */ + spnt->data_size = 8; + } + else if (type_check ("long long unsigned int")) + { + spnt->VMS_type = DBG_S_C_UQUAD; /* unsigned quadword */ + spnt->data_size = 8; + } + else + { + /* something more substantial ought to be done here */ + spnt->VMS_type = 0; + spnt->data_size = 0; + } pnt1 = (char *) strchr (str, ';') + 1; break; case 's': @@ -2482,9 +2494,9 @@ VMS_typedef_parse (str) fpnt->resolved = 'Y'; VMS_Set_Struct (fpnt->struc_numb); VMS_Store_Struct (spnt->struc_numb); - }; + } fpnt = fpnt->next; - }; + } VMS_Set_Struct (spnt->struc_numb); i = 0; Local[i++] = 11 + strlen (pnt); @@ -2505,7 +2517,7 @@ VMS_typedef_parse (str) { pnt += strlen (pnt); *pnt = ':'; - }; /* replace colon for later */ + } /* replace colon for later */ while (*++pnt1 != ';') { pnt = (char *) strchr (pnt1, ':'); @@ -2558,8 +2570,8 @@ VMS_typedef_parse (str) generate_suffix (spnt1, dtype); else if (spnt1->VMS_type == DBG_S_C_ADVANCED_TYPE) generate_suffix (spnt1, 0); - }; - }; + } + } pnt1++; Local[i++] = 0x01; /* length byte */ Local[i++] = DBG_S_C_STRUCT_END; @@ -2580,9 +2592,9 @@ VMS_typedef_parse (str) fpnt->resolved = 'Y'; VMS_Set_Struct (fpnt->struc_numb); VMS_Store_Struct (spnt->struc_numb); - }; + } fpnt = fpnt->next; - }; + } VMS_Set_Struct (spnt->struc_numb); i = 0; Local[i++] = 3 + strlen (symbol_name); @@ -2611,7 +2623,7 @@ VMS_typedef_parse (str) VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); i = 0; pnt = pnt1; /* Skip final semicolon */ - }; + } Local[i++] = 0x01; /* len byte */ Local[i++] = DBG_S_C_ENUM_END; VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); @@ -2654,7 +2666,7 @@ VMS_typedef_parse (str) printf ("gcc-as warning(debugger output):"); printf (" %d is an unknown type of variable.\n", spnt->dbx_type); return 1; /* unable to decipher */ - }; + } /* this removes the evidence of the definition so that the outer levels of parsing do not have to worry about it */ pnt = str; @@ -2731,7 +2743,7 @@ VMS_LSYM_Parse () pnt = str + strlen(str) - 1; } while (*pnt == '?'); tlen += strlen(str); - parse_buffer = (char *) malloc (tlen + 1); + parse_buffer = (char *) xmalloc (tlen + 1); strcpy(parse_buffer, S_GET_NAME (sp)); pnt2 = parse_buffer + strlen(S_GET_NAME (sp)) - 1; *pnt2 = '\0'; @@ -2747,7 +2759,7 @@ VMS_LSYM_Parse () } while (1 == 1); str = parse_buffer; symbol_name = str; - }; + } pnt = (char *) strchr (str, ':'); if (pnt != (char *) NULL) { @@ -2763,9 +2775,9 @@ VMS_LSYM_Parse () strcpy(S_GET_NAME (sp), parse_buffer); free (parse_buffer); parse_buffer = 0; - }; + } *pnt = ':'; /* put back colon so variable def code finds dbx_type*/ - }; + } break; } /*switch*/ } /* if */ @@ -2776,7 +2788,7 @@ VMS_LSYM_Parse () { final_pass = 1; incom1 ++; /* Force one last pass through */ - }; + } } while ((incomplete != 0) && (incomplete != incom1)); /* repeat until all refs resolved if possible */ /* if (pass > 1) printf(" Required %d passes\n",pass);*/ @@ -2784,7 +2796,7 @@ VMS_LSYM_Parse () { printf ("gcc-as warning(debugger output):"); printf ("Unable to resolve %d circular references.\n", incomplete); - }; + } fpnt = f_ref_root; symbol_name = "\0"; while (fpnt != (struct forward_ref *) NULL) @@ -2798,14 +2810,14 @@ VMS_LSYM_Parse () printf ("Forward reference error, dbx type %d\n", fpnt->dbx_type); break; - }; + } fixit[0] = 0; sprintf (&fixit[1], "%d=s4;", fpnt->dbx_type); pnt2 = (char *) strchr (&fixit[1], '='); VMS_typedef_parse (pnt2); - }; + } fpnt = fpnt->next; - }; + } } static @@ -2821,7 +2833,7 @@ Define_Local_Symbols (s1, s2) { char * pnt=(char*) strchr (S_GET_NAME (symbolP1), ':') + 1; if (*pnt == 'F' || *pnt == 'f') break; - }; + } /* * Deal with STAB symbols */ @@ -2868,7 +2880,7 @@ Define_Routine (symbolP, Level) { char * pnt=(char*) strchr (S_GET_NAME (symbolP1), ':') + 1; if (*pnt == 'F' || *pnt == 'f') break; - }; + } /* * Deal with STAB symbols */ @@ -2884,7 +2896,7 @@ Define_Routine (symbolP, Level) { sprintf (str, "$%d", rcount++); VMS_TBT_Block_Begin (symbolP1, Text_Psect, str); - }; + } Offset = S_GET_VALUE (symbolP1); Define_Local_Symbols (sstart, symbolP1); symbolP1 = @@ -3045,6 +3057,9 @@ Write_VMS_MHD_Records () /* * Store language processor name and version * (not a counted string!) + * + * This is normally supplied by the gcc driver for the command line + * which invokes gas. If absent, we fall back to gas's version. */ cp = compiler_version_string; if (cp == 0) @@ -3052,12 +3067,9 @@ Write_VMS_MHD_Records () cp = "GNU AS V"; while (*cp) PUT_CHAR (*cp++); - cp = strchr (GAS_VERSION, '.'); - while (*cp != ' ') - cp--; - cp++; - }; - while (*cp >= 32) + cp = GAS_VERSION; + } + while (*cp >= ' ') PUT_CHAR (*cp++); /* * Flush the record @@ -3216,7 +3228,7 @@ VMS_Case_Hack_Symbol (In, Out) *Out++ = isupper(*In) ? tolower(*In++) : *In++; } break; - }; + } } /* * If we saw a dollar sign, we don't do case hacking @@ -3269,7 +3281,7 @@ VMS_Case_Hack_Symbol (In, Out) tolower(*In++) : *In++; break; - }; + } } } } @@ -3480,7 +3492,7 @@ VMS_Global_Symbol_Spec (Name, Psect_Number, Psect_Offset, Defined) else { PUT_SHORT (GSY_S_M_DEF); - }; + } /* * Psect Number */ @@ -3511,7 +3523,7 @@ VMS_Global_Symbol_Spec (Name, Psect_Number, Psect_Offset, Defined) else { PUT_SHORT (0); - }; + } } /* * Finally, the global symbol name @@ -3601,7 +3613,7 @@ VMS_Psect_Spec (Name, Size, Type, vsp) vsp->Psect_Index = -1; /* to catch errors */ S_GET_RAW_TYPE (vsp->Symbol) = N_UNDF; /* make refs work */ return 1; /* decrement psect counter */ - }; + } if ((Psect_Attributes & GLOBALSYMBOL_BIT) != 0) { @@ -3626,9 +3638,9 @@ VMS_Psect_Spec (Name, Size, Type, vsp) Name); error (Error_Line); break; - }; - }; /* switch */ - }; + } + } /* switch */ + } Psect_Attributes &= 0xffff; /* clear out the globalref/def stuff */ /* @@ -3772,7 +3784,7 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment) if (!HAS_PSECT_ATTRIBUTES (Name)) continue; - stripped_name = (char *) malloc (strlen (Name) + 1); + stripped_name = (char *) xmalloc (strlen (Name) + 1); strcpy (stripped_name, Name); Psect_Attributes = 0; VMS_Modify_Psect_Attributes (stripped_name, &Psect_Attributes); @@ -3799,10 +3811,10 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment) default: printf (" Invalid globalvalue of %s\n", stripped_name); break; - }; /* switch */ - }; /* if */ + } /* switch */ + } /* if */ free (stripped_name); /* clean up */ - }; /* for */ + } /* for */ } @@ -4546,7 +4558,7 @@ VMS_write_object_file (text_siz, data_siz, bss_siz, text_frag_root, as_warn("g++ wrote an extern reference to %s as a routine.", S_GET_NAME (sp)); as_warn("I will fix it, but I hope that it was not really a routine"); - }; + } break; default: break; @@ -5233,13 +5245,13 @@ VMS_write_object_file (text_siz, data_siz, bss_siz, text_frag_root, Current_File->file_number = 0; File_Number--; continue; - }; - }; + } + } VMS_TBT_Source_Lines (Current_File->file_number, Current_File->min_line, Current_File->max_line - Current_File->min_line + 1); - }; /* for */ - }; /* scope */ + } /* for */ + } /* scope */ Current_File = (struct input_file *) NULL; for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP)) @@ -5294,11 +5306,11 @@ VMS_write_object_file (text_siz, data_siz, bss_siz, text_frag_root, continue; while (*pnt++ == *pnt1++) { - }; + } if (*pnt1 != 'F' && *pnt1 != 'f') continue; if ((*(--pnt) == '\0') && (*(--pnt1) == ':')) break; - }; + } if (symbolP1 != (symbolS *) NULL) VMS_DBG_Define_Routine (symbolP1, Current_Routine, Text_Psect); } /* local symbol block */ diff --git a/gas/config/obj-vms.h b/gas/config/obj-vms.h index 6cad61f..c645059 100644 --- a/gas/config/obj-vms.h +++ b/gas/config/obj-vms.h @@ -421,11 +421,13 @@ extern int vms_resolve_symbol_redef (); #define DBG_S_C_UCHAR 0x02 #define DBG_S_C_USINT 0x03 #define DBG_S_C_ULINT 0x04 +#define DBG_S_C_UQUAD 0x05 #define DBG_S_C_SCHAR 0x06 #define DBG_S_C_SSINT 0x07 #define DBG_S_C_SLINT 0x08 +#define DBG_S_C_SQUAD 0x09 #define DBG_S_C_REAL4 0x0a -#define DBG_S_C_REAL8 0x0b +#define DBG_S_C_REAL8 0x0b /* D_float (G_float is 0x1b) */ #define DBG_S_C_FUNCTION_ADDR 0x17 #define DBG_S_C_ADVANCED_TYPE 0xa3 /* These are the codes that are used to generate the definitions of struct diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index 26e6643..733e3d2 100644 --- a/gas/config/tc-sparc.c +++ b/gas/config/tc-sparc.c @@ -2240,7 +2240,6 @@ md_parse_option (argP, cntP, vecP) if (!strcmp (*argP, "bump")) { warn_on_bump = 1; - } else if (**argP == 'A') { @@ -2278,6 +2277,10 @@ md_parse_option (argP, cntP, vecP) { /* use .stab instead of .stab.excl */ } + else if (**argP == 'q') + { + /* quick -- native assembler does fewer checks */ + } #endif else if (strcmp (*argP, "sparc") == 0) { diff --git a/gas/configure.bat b/gas/configure.bat index 5bccdba..784bae7 100644 --- a/gas/configure.bat +++ b/gas/configure.bat @@ -1,28 +1,65 @@ -@echo off -if "%1" == "go32" goto h8300 -if "%1" == "h8/300" goto h8300 -echo Specify one of [ go32 h8/300 ] on command line -goto exit - -:go32 -echo Configuring gas for go32 -copy config\i386.md md -copy config\out-i386.c aux-output.c -copy config\tm-i386gas.h tm.h -copy config\float.h-ieee float.h -copy config\xm-i386.h config.h -copy Makefile.dos Makefile -goto exit - -:h8300 -echo Configuring gas for H8/300 -copy config\ho-go32.h host.h -copy config\tc-h8300.c targ-cpu.c -copy config\tc-h8300.h targ-cpu.h -copy config\te-generic.h targ-env.h -copy config\objcoffbfd.h obj-format.h -copy config\objcoffbfd.c obj-format.c -copy config\atof-ieee.c atof-targ.c -copy Makefile.dos Makefile - -:exit +@echo off
+if "%1" == "h8/300" goto h8300
+
+echo Configuring gas for go32
+update config/ho-go32.h host.h
+update config/tc-i386.c targ-cpu.c
+update config/tc-i386.h targ-cpu.h
+update config/te-go32.h targ-env.h
+update config/obj-coff.h obj-format.h
+update config/obj-coff.c obj-format.c
+update config/atof-ieee.c atof-targ.c
+goto common
+
+:h8300
+echo Configuring gas for H8/300
+copy config\ho-go32.h host.h
+copy config\tc-h8300.c targ-cpu.c
+copy config\tc-h8300.h targ-cpu.h
+copy config\te-generic.h targ-env.h
+copy config\objcoffbfd.h obj-format.h
+copy config\objcoffbfd.c obj-format.c
+copy config\atof-ieee.c atof-targ.c
+
+:common
+
+echo # Makefile generated by "configure.bat"> Makefile
+echo all.dos : as.new>>Makefile
+
+if exist config.sed del config.sed
+
+echo "s/^ \$(srcdir)\/move-if-change/ update/ ">> config.sed
+echo "/\.o[ ]*:/ s/config.status// ">> config.sed
+echo "/^target=/ c\ ">> config.sed
+echo "target=go32 ">> config.sed
+echo "s/CC = cc/CC = gcc/ ">> config.sed
+echo "s/:\$/: \$/g ">> config.sed
+echo "s/^ \ *\.\// go32 / ">> config.sed
+echo "s/`echo \$(srcdir)\///g ">> config.sed
+echo "s/ | sed 's,\^\\\.\/,,'`//g ">> config.sed
+echo "s/^ cd \$(srcdir)[ ]*;// ">> config.sed
+
+echo "/^####/ i\ ">> config.sed
+echo "TDEFINES=-DMANY_SEGMENTS -DI386COFF \ ">> config.sed
+echo "LOCAL_LOADLIBES=../bfd/libbfd.a ">> config.sed
+
+echo "/^all[ ]*:/ a\ ">> config.sed
+echo "dummy: ">> config.sed
+
+echo "s/\/usr[^ ]*errno.h//g ">> config.sed
+
+echo "/^config.h[ ]*:/ d ">> config.sed
+
+sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
+sed -f config2.sed Makefile.in >> Makefile.2
+update Makefile.2 Makefile
+del Makefile.2
+del config.sed
+del config2.sed
+
+echo > config-stamp
+echo #define TARGET_CPU "i386">config.h1
+echo #define TARGET_ALIAS "i386">>config.h1
+echo #define TARGET_CANONICAL "i386">>config.h1
+sed -n "/^VERSION=/p" Makefile.in | sed -e "s/VERSION=/#define GAS_VERSION \"/" -e "s/$/\"/">> config.h1
+update config.h1 config.h
diff --git a/gas/make-gas.com b/gas/make-gas.com index 95b573e..221e479 100644 --- a/gas/make-gas.com +++ b/gas/make-gas.com @@ -116,4 +116,4 @@ strncasecmp.obj,- getruntime.obj,- gnu_cc:[000000]gcclib/lib,sys$share:vaxcrtl/lib ! Tell linker exactly what psect attributes we want -- match VAXCRTL. -psect_addr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt +psect_attr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 3eb2d43..a70113d 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +Fri May 27 12:24:18 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + * gas/m68k/disperr.s: Use % for registers. + + * gas/m68k-coff/gas.exp: Expect failure for p2389a.s. + Tue May 17 14:53:08 1994 Bill Cox (bill@rtl.cygnus.com) * lib/gas-defs.exp: Replace error proc calls with perror calls. diff --git a/gas/vmsconf.sh b/gas/vmsconf.sh index e1111eb..eac8d84 100644 --- a/gas/vmsconf.sh +++ b/gas/vmsconf.sh @@ -80,5 +80,5 @@ done cat << 'EOF' gnu_cc:[000000]gcclib/lib,sys$share:vaxcrtl/lib ! Tell linker exactly what psect attributes we want -- match VAXCRTL. -psect_addr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt +psect_attr=ENVIRON,long,pic,ovr,rel,gbl,noshr,noexe,rd,wrt EOF |