X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=BduK5u/xsEKi1RkenvEthxh7xx4j/hF+kgEKXXXzwVg=; b=EyeSVVy1sBwfPqf4KrwqJ94urbs7C93QvOPPENowppcLEvY2/9B1XAP1KTRpA3EIr7 UQTY+m3qSCIjltTOlxhBheMUwZg5/fyeL58w0vxreRHs7o86SwHSeqXAf5jVrxFBF0wT oqMa5VzOOYQ4sv36ZyepjUwMpvmZU5qKcvz/qpZo5Tqau5z/sUAcwnzaQ9FMKbzPlo+b 6bCbm4tQ8KKZRlQacW83JBqFdsPIftR9n5Nv9C7WusP74wmYRtxDB4xJrz9TcwmBQmz4 BkV4315pQL4g/OFriWDY7yOxozklcht1RU27KXPckhGTDzKAEY9OSAvGY34NKwvn9+Ds YElQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=BduK5u/xsEKi1RkenvEthxh7xx4j/hF+kgEKXXXzwVg=; b=iJ6V5JCWgZg+7A4cpZCRATPmx3Zmrw6VcZyglObzHi+HSLx26VUOSKE9CRvhy2cmXm aVPQkpPQtnpyTxy1TpPtSuieILfy3EoDh9W88iEOInaFFr6oZqPteZ27ORnuqQHHtkdo lk895l3lgTzcB909VQ0hB9xUNP2ZGcfnfJLuvOvMzIS0qi3hTN/R/2rxDjQ5LHEsien/ zr/xt6HqpeMs+re5atEzfsAWQ4Cf9xVVtkSOCoLz7lgZ4WT/RYRV/7iit3IxbKaP5L3C rfYPQQojN/sPfllpzEl4jJKzIMR1WS/ke6vgJaqd7po58CQgvdmEiCfcdmhiNaKSbwXG 4Glw== X-Gm-Message-State: AEkooutEr1JC1v+lIV2VY18qSj9kCD/xvPU10jA8C3WByHnVibhaw+PCI342WyPbhl/QJO0z4vdPeivFBVA0dQ== X-Received: by 10.107.14.74 with SMTP id 71mr4147060ioo.93.1469188841818; Fri, 22 Jul 2016 05:00:41 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: "Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com]" Date: Fri, 22 Jul 2016 15:00:41 +0300 Message-ID: Subject: Re: LD from binutils 2.26 crashes when -ffunction-sections + -Wl,--gc-sections is used but only under DOS To: djgpp AT delorie DOT com Content-Type: text/plain; charset=UTF-8 Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On 7/22/16, RayeR (glaux AT centrum DOT cz) [via djgpp AT delorie DOT com] wrote: >> And if crash it should be consistent and crash under Windows too. > > OK, maybe the bug is happening under Windows too but their memory management > of NTVDM is more benevolent to memory protection and doesn't trigger fault > in some cases. Even if so the produced binary seems to be OK (and smaller). > It segs in fini_reloc_cookie_rels() because (sec)->used_by_bfd is NULL Program received signal SIGSEGV, Segmentation fault. 0x08088dbd in _bfd_coff_gc_mark (info=0x80f3b80, sec=0x906b248, gc_mark_hook=0x80859b0 <_bfd_coff_gc_mark_hook>) at ../../binutils-2.26/bfd/coffgen.c:2691 2691 if (cookie->rels && coff_section_data (NULL, sec)->relocs != cookie->rels) (gdb) bt #0 0x08088dbd in _bfd_coff_gc_mark (info=0x80f3b80, sec=0x906b248, gc_mark_hook=0x80859b0 <_bfd_coff_gc_mark_hook>) at ../../binutils-2.26/bfd/coffgen.c:2691 #1 0x08088e22 in _bfd_coff_gc_mark (info=0x80f3b80, sec=0x906b89c, gc_mark_hook=0x80859b0 <_bfd_coff_gc_mark_hook>) at ../../binutils-2.26/bfd/coffgen.c:2799 #2 0x08088e22 in _bfd_coff_gc_mark (info=0x80f3b80, sec=0x905ac84, gc_mark_hook=0x80859b0 <_bfd_coff_gc_mark_hook>) at ../../binutils-2.26/bfd/coffgen.c:2799 #3 0x08088e22 in _bfd_coff_gc_mark (info=0x80f3b80, sec=0x905abd0, gc_mark_hook=0x80859b0 <_bfd_coff_gc_mark_hook>) at ../../binutils-2.26/bfd/coffgen.c:2799 #4 0x08088f31 in bfd_coff_gc_sections (abfd=0x9051918, info=0x80f3b80) at ../../binutils-2.26/bfd/coffgen.c:3045 #5 0x0805af43 in lang_process () at ../../binutils-2.26/ld/ldlang.c:6502 #6 0x0805e952 in main (argc=15, argv=0xbfb8e504) at ../../binutils-2.26/ld/ldmain.c:414 Doing the following makes the program to run without crashing: --- binutils-2.26/bfd/coffgen.c.orig +++ binutils-2.26/bfd/coffgen.c @@ -2688,8 +2688,11 @@ fini_reloc_cookie_rels (struct coff_reloc_cookie *cookie, asection *sec) { - if (cookie->rels && coff_section_data (NULL, sec)->relocs != cookie->rels) + if (cookie->rels) { + if (!coff_section_data(NULL, sec)) return; + if (coff_section_data (NULL, sec)->relocs != cookie->rels) free (cookie->rels); + } } /* Initialize the whole of COOKIE for input section SEC. */ It is very possible that this isn't a proper fix though. -- O.S.