This is the mail archive of the gas2@sourceware.cygnus.com mailing list for the gas2 project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
These changes (relative to last night's snapshot on ftp.cygnus.com in /private/jelly) will affect: - top-level make (nuked INSTALL_LAST stuff) - bfd.h generation (avoiding a bug in bsd4.4 make, hopefully not hitting any others) - vms hosted or targeted execution and debugging - hpux 8 native-cc builds - mips bsd (4.4) linking - hppa linking Please test them and let me know how they work for you, today if possible. (If you sent them to me, please make sure I got them right. If you didn't send me the patches, but use one of the configurations above, please confirm that it works.) If I get some positive feedback today, I'll go ahead with the release tonight. Otherwise, I'll push it off a bit longer. Index: Makefile.in =================================================================== RCS file: /rel/cvsfiles/devo/Makefile.in,v retrieving revision 1.341.2.1 diff -c -r1.341.2.1 Makefile.in *** Makefile.in 1994/05/11 06:04:57 1.341.2.1 --- Makefile.in 1994/05/19 06:26:40 *************** *** 117,124 **** $(INSTALL_MODULES) \ $(INSTALL_TARGET_MODULES) \ $(INSTALL_X11_MODULES) \ ! install-gcc \ ! $(INSTALL_LAST) CC_FOR_TARGET = ` \ --- 117,123 ---- $(INSTALL_MODULES) \ $(INSTALL_TARGET_MODULES) \ $(INSTALL_X11_MODULES) \ ! install-gcc CC_FOR_TARGET = ` \ *************** *** 793,813 **** srcroot=`cd $(srcdir); pwd`; export srcroot; \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ else \ - true; \ - fi - - - # EXPERIMENTAL STUFF - # This rule is used to install the modules which use FLAGS_TO_PASS. - # To build a target install-X means to cd to X and make install. - .PHONY: $(INSTALL_LAST) - $(INSTALL_LAST): install-dirs - @dir=`echo $@ | sed -e 's/install-//'`; \ - if [ -f ./$${dir}/Makefile ] ; then \ - r=`pwd`; export r; \ - srcroot=`cd $(srcdir); pwd`; export srcroot; \ - (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ - else \ true; \ fi --- 792,797 ---- Index: bfd/ChangeLog =================================================================== RCS file: /rel/cvsfiles/devo/bfd/ChangeLog,v retrieving revision 1.1155.2.5 diff -c -r1.1155.2.5 ChangeLog *** ChangeLog 1994/05/17 18:23:39 1.1155.2.5 --- ChangeLog 1994/05/19 19:40:50 *************** *** 1,3 **** --- 1,17 ---- + Thu May 19 13:56:47 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + From Ralph Campbell: + * mipsbsd.c (mips_fix_jmp_addr): If symbol is undefined, return an + error. + (mips_fix_hi16_s): Ditto. + + * Makefile.in (stmp-bfd.h): Wrap `if' block around grep + invocation, to avoid a bug in BSD 4.4 make. + + From Jeff Law: + * libhppa.h (hppa_field_adjust): Avoid adding constant_value into + the final value twice for LR and RR field selectors. + Mon May 16 12:02:07 1994 Ken Raeburn (raeburn@cujo.cygnus.com) * configure.bat: Do use CR-LF for line termination. Index: bfd/Makefile.in =================================================================== RCS file: /rel/cvsfiles/devo/bfd/Makefile.in,v retrieving revision 1.211.2.4 diff -c -r1.211.2.4 Makefile.in *** Makefile.in 1994/05/13 19:56:37 1.211.2.4 --- Makefile.in 1994/05/19 18:00:34 *************** *** 474,482 **** # The file ../include/bfd.h is from earlier attempts to get this right. # If the file is still there, kill it. stmp-bfd.h : $(srcdir)/bfd-in2.h Makefile rm -f bfd.h-new 64 ../include/bfd.h ! grep BFD_HOST_64_BIT sysdep.h > 64 2>/dev/null || exit 0 sed -e 's/@WORDSIZE@/$(WORDSIZE)/' \ -e "s/@VERSION@/`cat $(srcdir)/VERSION`/" \ -e '/64-bit.*sysdep.h/ r 64' \ --- 474,486 ---- # The file ../include/bfd.h is from earlier attempts to get this right. # If the file is still there, kill it. + # The weird sh*t with grep is to avoid printing "exit 1 (ignored)" type + # messages from make, and avoid various ways in which different versions + # of make will screw up exit status checks. stmp-bfd.h : $(srcdir)/bfd-in2.h Makefile rm -f bfd.h-new 64 ../include/bfd.h ! if grep BFD_HOST_64_BIT sysdep.h > 64 2>/dev/null ; then true; \ ! else true; fi sed -e 's/@WORDSIZE@/$(WORDSIZE)/' \ -e "s/@VERSION@/`cat $(srcdir)/VERSION`/" \ -e '/64-bit.*sysdep.h/ r 64' \ Index: bfd/libhppa.h =================================================================== RCS file: /rel/cvsfiles/devo/bfd/libhppa.h,v retrieving revision 1.19 diff -c -r1.19 libhppa.h *** libhppa.h 1994/03/19 03:54:42 1.19 --- libhppa.h 1994/05/19 17:56:05 *************** *** 308,327 **** unsigned long constant_value; unsigned short r_field; { - value += constant_value; switch (r_field) { case e_fsel: /* F : no change */ break; case e_lssel: /* LS : if (bit 21) then add 0x800 arithmetic shift right 11 bits */ if (value & 0x00000400) value += 0x800; value = (value & 0xfffff800) >> 11; break; case e_rssel: /* RS : Sign extend from bit 21 */ if (value & 0x00000400) value |= 0xfffff800; else --- 308,329 ---- unsigned long constant_value; unsigned short r_field; { switch (r_field) { case e_fsel: /* F : no change */ + value += constant_value; break; case e_lssel: /* LS : if (bit 21) then add 0x800 arithmetic shift right 11 bits */ + value += constant_value; if (value & 0x00000400) value += 0x800; value = (value & 0xfffff800) >> 11; break; case e_rssel: /* RS : Sign extend from bit 21 */ + value += constant_value; if (value & 0x00000400) value |= 0xfffff800; else *************** *** 329,348 **** --- 331,354 ---- break; case e_lsel: /* L : Arithmetic shift right 11 bits */ + value += constant_value; value = (value & 0xfffff800) >> 11; break; case e_rsel: /* R : Set bits 0-20 to zero */ + value += constant_value; value = value & 0x7ff; break; case e_ldsel: /* LD : Add 0x800, arithmetic shift right 11 bits */ + value += constant_value; value += 0x800; value = (value & 0xfffff800) >> 11; break; case e_rdsel: /* RD : Set bits 0-20 to one */ + value += constant_value; value |= 0xfffff800; break; Index: bfd/mipsbsd.c =================================================================== RCS file: /rel/cvsfiles/devo/bfd/mipsbsd.c,v retrieving revision 1.20 diff -c -r1.20 mipsbsd.c *** mipsbsd.c 1994/05/05 19:50:26 1.20 --- mipsbsd.c 1994/05/19 19:40:38 *************** *** 200,205 **** --- 200,210 ---- if (output_bfd != (bfd *)NULL) return bfd_reloc_continue; + /* If this is an undefined symbol, return error */ + if (symbol->section == &bfd_und_section + && (symbol->flags & BSF_WEAK) == 0) + return bfd_reloc_undefined; + /* * Work out which section the relocation is targetted at and the * initial relocation command value. *************** *** 249,254 **** --- 254,264 ---- if (output_bfd != (bfd *)NULL) return bfd_reloc_continue; + /* If this is an undefined symbol, return error */ + if (symbol->section == &bfd_und_section + && (symbol->flags & BSF_WEAK) == 0) + return bfd_reloc_undefined; + /* * Work out which section the relocation is targetted at and the * initial relocation command value. Index: config/mh-hpux =================================================================== RCS file: /rel/cvsfiles/devo/config/mh-hpux,v retrieving revision 1.3 diff -c -r1.3 mh-hpux *** mh-hpux 1993/06/16 00:08:20 1.3 --- mh-hpux 1994/05/19 17:49:18 *************** *** 1,4 **** --- 1,5 ---- # Define SYSV as -DSYSV if you are using a System V operating system. + CC = cc -Wp,-H256000 SYSV = -DSYSV RANLIB = true Index: gas/ChangeLog =================================================================== RCS file: /rel/cvsfiles/devo/gas/ChangeLog,v retrieving revision 1.660.2.6 diff -c -r1.660.2.6 ChangeLog *** ChangeLog 1994/05/18 23:47:10 1.660.2.6 --- ChangeLog 1994/05/19 19:52:54 *************** *** 1,3 **** --- 1,40 ---- + Thu May 19 13:45:59 1994 Ken Raeburn (raeburn@cujo.cygnus.com) + + From Ian Taylor: + * config/tc-sparc.c (md_section_align): Don't change the size if + OBJ_ELF. + + * config/obj-vms.c: Replaced unchecked uses of malloc with + xmalloc. + + From Jeff Law: + * config/tc-hppa.c (pa_parse_fp_cmp_cond): Report an error + on a partial completer match. + + 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. + Wed May 18 15:32:35 1994 Ken Raeburn (raeburn@cujo.cygnus.com) * listing.c (list_symbol_table): Only test BFD64, not Index: gas/NEWS =================================================================== RCS file: /rel/cvsfiles/devo/gas/NEWS,v retrieving revision 1.12 diff -c -r1.12 NEWS *** NEWS 1994/03/15 02:56:20 1.12 --- NEWS 1994/05/19 17:33:08 *************** *** 10,16 **** based on mail received from various people. The `-h#' option should work again too. ! HP-PA work, by Jeff Law. Vax support in gas fixed for BSD, so it builds and seems to run a couple simple tests okay. I haven't put it through extensive testing. (GNU make is --- 10,20 ---- based on mail received from various people. The `-h#' option should work again too. ! HP-PA work, by Jeff Law. Note, for the PA, gas-2.3 has been designed to work ! with gdb-4.12 and gcc-2.6. As gcc-2.6 has not been released yet, a special ! version of gcc-2.5.8 has been patched to work with gas-2.3. You can retrieve ! this special version of gcc-2.5.8 via anonymous ftp from jaguar.cs.utah.edu ! in the "dist" directory. Vax support in gas fixed for BSD, so it builds and seems to run a couple simple tests okay. I haven't put it through extensive testing. (GNU make is Index: gas/config/ho-vms.h =================================================================== RCS file: /rel/cvsfiles/devo/gas/config/ho-vms.h,v retrieving revision 1.4.2.1 diff -c -r1.4.2.1 ho-vms.h *** ho-vms.h 1994/05/18 19:58:54 1.4.2.1 --- ho-vms.h 1994/05/19 17:41:54 *************** *** 28,35 **** #include <perror.h> #ifndef EXIT_SUCCESS ! #define EXIT_SUCCESS 1 ! #define EXIT_FAILURE 0 #endif #define unlink delete --- 28,35 ---- #include <perror.h> #ifndef EXIT_SUCCESS ! #define EXIT_SUCCESS 1 /* SS$_NORMAL, STS$K_SUCCESS */ ! #define EXIT_FAILURE 0x10000002 /* (STS$K_ERROR | STS$M_INHIB_MSG) */ #endif #define unlink delete Index: gas/config/obj-vms.c =================================================================== RCS file: /rel/cvsfiles/devo/gas/config/obj-vms.c,v retrieving revision 1.15.2.2 diff -c -r1.15.2.2 obj-vms.c *** obj-vms.c 1994/05/18 23:50:29 1.15.2.2 --- obj-vms.c 1994/05/19 17:50:39 *************** *** 1428,1434 **** break; } } ! fpnt = (struct input_file *) malloc (sizeof (struct input_file)); if (file_root == (struct input_file *) NULL) file_root = fpnt; else --- 1428,1434 ---- break; } } ! fpnt = (struct input_file *) xmalloc (sizeof (struct input_file)); if (file_root == (struct input_file *) NULL) file_root = fpnt; else *************** *** 1639,1645 **** } total_size = total_size * spnt1->data_size; push (spnt1->data_size, 2); ! if (spnt1->VMS_type == 0xa3) push (0, 1); else push (spnt1->VMS_type, 1); --- 1639,1645 ---- } total_size = total_size * spnt1->data_size; push (spnt1->data_size, 2); ! if (spnt1->VMS_type == DBG_S_C_ADVANCED_TYPE) push (0, 1); else push (spnt1->VMS_type, 1); *************** *** 1675,1681 **** int dbx_type; { struct forward_ref *fpnt; ! fpnt = (struct forward_ref *) malloc (sizeof (struct forward_ref)); fpnt->next = f_ref_root; f_ref_root = fpnt; fpnt->dbx_type = dbx_type; --- 1675,1681 ---- int dbx_type; { struct forward_ref *fpnt; ! fpnt = (struct forward_ref *) xmalloc (sizeof (struct forward_ref)); fpnt->next = f_ref_root; f_ref_root = fpnt; fpnt->dbx_type = dbx_type; *************** *** 1809,1815 **** new_forward_ref (dbx_type); else { ! if (spnt->VMS_type != 0xa3) return 0; /* no suffix needed */ gen1 (spnt, 0); } --- 1809,1815 ---- new_forward_ref (dbx_type); else { ! if (spnt->VMS_type != DBG_S_C_ADVANCED_TYPE) return 0; /* no suffix needed */ gen1 (spnt, 0); } *************** *** 2344,2361 **** /* 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->dbx_type = i1; /* and save the type */ } /* for structs and unions, do a partial parse, otherwise we sometimes get --- 2344,2352 ---- /* first we see if this has been defined already, due to a forward reference*/ if (spnt == (struct VMS_DBG_Symbol *) NULL) { ! 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 *************** *** 2450,2458 **** --- 2441,2472 ---- } 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': *************** *** 2729,2735 **** pnt = str + strlen(str) - 1; } while (*pnt == '?'); tlen += strlen(str); ! parse_buffer = (char *) malloc (tlen + 1); strcpy(parse_buffer, S_GET_NAME (sp)); pnt2 = parse_buffer + strlen(S_GET_NAME (sp)) - 1; *pnt2 = '\0'; --- 2743,2749 ---- pnt = str + strlen(str) - 1; } while (*pnt == '?'); tlen += strlen(str); ! parse_buffer = (char *) xmalloc (tlen + 1); strcpy(parse_buffer, S_GET_NAME (sp)); pnt2 = parse_buffer + strlen(S_GET_NAME (sp)) - 1; *pnt2 = '\0'; *************** *** 3770,3776 **** if (!HAS_PSECT_ATTRIBUTES (Name)) continue; ! stripped_name = (char *) malloc (strlen (Name) + 1); strcpy (stripped_name, Name); Psect_Attributes = 0; VMS_Modify_Psect_Attributes (stripped_name, &Psect_Attributes); --- 3784,3790 ---- if (!HAS_PSECT_ATTRIBUTES (Name)) continue; ! stripped_name = (char *) xmalloc (strlen (Name) + 1); strcpy (stripped_name, Name); Psect_Attributes = 0; VMS_Modify_Psect_Attributes (stripped_name, &Psect_Attributes); Index: gas/config/obj-vms.h =================================================================== RCS file: /rel/cvsfiles/devo/gas/config/obj-vms.h,v retrieving revision 1.8 diff -c -r1.8 obj-vms.h *** obj-vms.h 1994/03/11 23:07:26 1.8 --- obj-vms.h 1994/05/19 17:46:55 *************** *** 421,431 **** #define DBG_S_C_UCHAR 0x02 #define DBG_S_C_USINT 0x03 #define DBG_S_C_ULINT 0x04 #define DBG_S_C_SCHAR 0x06 #define DBG_S_C_SSINT 0x07 #define DBG_S_C_SLINT 0x08 #define DBG_S_C_REAL4 0x0a ! #define DBG_S_C_REAL8 0x0b #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 --- 421,433 ---- #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 /* 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 Index: gas/config/tc-hppa.c =================================================================== RCS file: /rel/cvsfiles/devo/gas/config/tc-hppa.c,v retrieving revision 1.85 diff -c -r1.85 tc-hppa.c *** tc-hppa.c 1994/04/24 07:14:02 1.85 --- tc-hppa.c 1994/05/19 17:56:12 *************** *** 3435,3447 **** { cond = fp_cond_map[i].cond; *s += strlen (fp_cond_map[i].string); while (**s == ' ' || **s == '\t') *s = *s + 1; return cond; } } ! as_bad ("Invalid FP Compare Condition: %c", **s); return 0; } --- 3435,3459 ---- { cond = fp_cond_map[i].cond; *s += strlen (fp_cond_map[i].string); + /* If not a complete match, back up the input string and + report an error. */ + if (**s != ' ' && **s != '\t') + { + *s -= strlen (fp_cond_map[i].string); + break; + } while (**s == ' ' || **s == '\t') *s = *s + 1; return cond; } } ! as_bad ("Invalid FP Compare Condition: %s", *s); ! ! /* Advance over the bogus completer. */ ! while (**s != ',' && **s != ' ' && **s != '\t') ! *s += 1; ! return 0; } Index: gas/config/tc-sparc.c =================================================================== RCS file: /rel/cvsfiles/devo/gas/config/tc-sparc.c,v retrieving revision 1.86.2.2 diff -c -r1.86.2.2 tc-sparc.c *** tc-sparc.c 1994/05/17 18:37:46 1.86.2.2 --- tc-sparc.c 1994/05/19 19:52:32 *************** *** 1737,1750 **** segT segment; valueT size; { ! /* This may or may not be right for ELF; a.out wants it, and COFF ! will force the alignment anyways. */ valueT align = (valueT) 1 << (valueT) (stdoutput->xvec->align_power_min); valueT newsize; /* turn alignment value into a mask */ align--; newsize = (size + align) & ~align; return newsize; } /* Exactly what point is a PC-relative offset relative TO? --- 1737,1754 ---- segT segment; valueT size; { ! #ifndef OBJ_ELF ! /* This is not right for ELF; a.out wants it, and COFF will force ! the alignment anyways. */ valueT align = (valueT) 1 << (valueT) (stdoutput->xvec->align_power_min); valueT newsize; /* turn alignment value into a mask */ align--; newsize = (size + align) & ~align; return newsize; + #else + return size; + #endif } /* Exactly what point is a PC-relative offset relative TO?