Message-Id: <200009181903.PAA22034@delorie.com> From: "Mark E." To: djgpp-announce AT delorie DOT com Date: Sat, 16 Sep 2000 13:16:10 -0400 Content-type: text/plain; charset=US-ASCII Subject: ANNOUNCE: Binutils 2.10 update #2 Reply-To: djgpp AT delorie DOT com An updated DJGPP port of Binutils 2.10 is now available from SimTel mirrors: Binaries and Documentation (info and man formats): ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bnu210b.zip Source: ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bnu210s.zip BFD library: ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bnu210a.zip The update addresses the following problems fixed since the previous update: * Fixed bogus warnings 'symbol has no section' and 'symbol type changed from x to y'. You can update your sources from the previous update with this patch: *** obj-coff.c.r1 Wed Aug 30 09:24:06 2000 --- obj-coff.c Sat Aug 26 12:57:26 2000 *************** *** 30,35 **** --- 30,42 ---- #define KEEP_RELOC_INFO #endif + /* The BFD_ASSEMBLER version of obj_coff_section will use this macro to set + a new section's attributes when a directive has no valid flags or the + "w" flag is used. This default should be appropriate for most. */ + #ifndef TC_COFF_SECTION_DEFAULT_ATTRIBUTES + #define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_LOAD | SEC_DATA) + #endif + static void obj_coff_bss PARAMS ((int)); const char *s_get_name PARAMS ((symbolS * s)); static void obj_coff_ln PARAMS ((int)); *************** obj_coff_endef (ignore) *** 725,740 **** --- 732,755 ---- case C_ARG: case C_REGPARM: case C_FIELD: + #ifdef TE_GO32 + case C_MOS: + case C_MOE: + case C_MOU: + case C_EOS: + #endif SF_SET_DEBUG (def_symbol_in_progress); S_SET_SEGMENT (def_symbol_in_progress, absolute_section); break; + #ifndef TE_GO32 case C_MOS: case C_MOE: case C_MOU: case C_EOS: S_SET_SEGMENT (def_symbol_in_progress, absolute_section); break; + #endif case C_EXT: case C_WEAKEXT: *************** coff_frob_symbol (symp, punt) *** 1132,1142 **** --- 1147,1160 ---- symbolS *real; if (!SF_GET_LOCAL (symp) && !SF_GET_STATICS (symp) + && S_GET_STORAGE_CLASS (symp) != C_LABEL + && symbol_constant_p(symp) && (real = symbol_find_base (S_GET_NAME (symp), DO_NOT_STRIP)) && real != symp) { c_symbol_merge (symp, real); *punt = 1; + return; } if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp)) { *************** obj_coff_section (ignore) *** 1430,1436 **** /* Set section flags for a new section just created by subseg_new. Provide a default if no flags were parsed. */ if (flags == SEC_NO_FLAGS) ! flags = TC_COFF_SECTION_DEFAULT_ATTRIBUTES; #ifdef COFF_LONG_SECTION_NAMES /* Add SEC_LINK_ONCE and SEC_LINK_DUPLICATES_DISCARD to .gnu.linkonce --- 1448,1454 ---- /* Set section flags for a new section just created by subseg_new. Provide a default if no flags were parsed. */ if (flags == SEC_NO_FLAGS) ! flags = TC_COFF_SECTION_DEFAULT_ATTRIBUTES; #ifdef COFF_LONG_SECTION_NAMES /* Add SEC_LINK_ONCE and SEC_LINK_DUPLICATES_DISCARD to .gnu.linkonce *************** coff_frob_section (sec) *** 1486,1493 **** #if !defined(TICOFF) if (size & mask) { ! size = (size + mask) & ~mask; ! bfd_set_section_size (stdoutput, sec, size); } #endif --- 1504,1523 ---- #if !defined(TICOFF) if (size & mask) { ! bfd_vma new_size; ! fragS *last; ! ! new_size = (size + mask) & ~mask; ! bfd_set_section_size (stdoutput, sec, new_size); ! ! /* If the size had to be rounded up, add some padding in ! the last non-empty frag. */ ! fragp = seg_info (sec)->frchainP->frch_root; ! last = seg_info (sec)->frchainP->frch_last; ! while (fragp->fr_next != last) ! fragp = fragp->fr_next; ! last->fr_address = size; ! fragp->fr_offset += new_size - size; } #endif