From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/7562 Path: news.gmane.org!not-for-mail From: Szabolcs Nagy Newsgroups: gmane.linux.lib.musl.general Subject: Re: building musl libc.so with gcc -flto Date: Fri, 1 May 2015 12:10:16 +0200 Message-ID: <20150501101016.GE863@port70.net> References: <20150423022309.GH6817@brightrain.aerifal.cx> <20150423094520.GA17573@brightrain.aerifal.cx> <20150428002402.GJ17573@brightrain.aerifal.cx> <20150428134453.GM17573@brightrain.aerifal.cx> <20150429032725.GT17573@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1430475045 19724 80.91.229.3 (1 May 2015 10:10:45 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 1 May 2015 10:10:45 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-7575-gllmg-musl=m.gmane.org@lists.openwall.com Fri May 01 12:10:32 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Yo7tv-0004wD-Vw for gllmg-musl@m.gmane.org; Fri, 01 May 2015 12:10:32 +0200 Original-Received: (qmail 24220 invoked by uid 550); 1 May 2015 10:10:29 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 24197 invoked from network); 1 May 2015 10:10:28 -0000 Mail-Followup-To: musl@lists.openwall.com Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Xref: news.gmane.org gmane.linux.lib.musl.general:7562 Archived-At: * Andre McCurdy [2015-04-30 22:48:09 -0700]: > I'm able to reproduce the problem I saw previously with the latest > musl git version. Behaviour is that some binaries dynamically linked > with gold (notably busybox) seem to run well but most binaries > segfault at startup. > > I'm using gcc 4.9.2 and binutils 2.25, but I should also mention that > I'm using OpenEmbedded to build the toolchain and musl support in OE > is still quite experimental... > > Below is a link to a base64 encoded tar file containing two > dynamically linked "hello world" x86 binaries. Both were created using > the same OE toolchain (the only difference was the -fuse-ld=XXX option > used). "hello.bfd" runs well, "hello.gold" segfaults. Hopefully they > can give some clues about what's happening. > > http://pastebin.com/raw.php?i=RKJBqAg1 $ nm -D hello.gold w _ITM_deregisterTMCloneTable w _ITM_registerTMCloneTable w _Jv_RegisterClasses 08049670 A __bss_start w __deregister_frame_info U __libc_start_main w __register_frame_info 08049670 A _edata 08049690 A _end U printf $ nm -D hello.bfd 08049564 B __bss_start U __libc_start_main 08049564 D _edata 08049584 B _end U printf i'm not sure where gold expects __register_frame_info to be defined.. the call chain is __dls3 -> do_init_fini -> _init -> frame_dummy -> __register_frame_info@plt -> 0 objdump: 0804846e : 804846e: 55 push %ebp 804846f: b8 70 83 04 08 mov $0x8048370,%eax 8048474: 89 e5 mov %esp,%ebp 8048476: 83 ec 08 sub $0x8,%esp 8048479: 85 c0 test %eax,%eax 804847b: 74 14 je 8048491 804847d: 50 push %eax 804847e: 50 push %eax 804847f: 68 78 96 04 08 push $0x8049678 8048484: 68 18 85 04 08 push $0x8048518 8048489: e8 e2 fe ff ff call 8048370 <__register_frame_info@plt> ... 08048370 <__register_frame_info@plt>: 8048370: ff 25 50 96 04 08 jmp *0x8049650 ... GOT at this point: 0x08049648: 0xf7f92263 (__libc_start_main) 0x0804964c: 0x00000000 (should be __deregister_frame_info?) 0x08049650: 0x00000000 (should be __register_frame_info?) 0x08049654: 0xf7fbedeb (printf) readelf says: Relocation section '.rel.plt' at offset 0x308 contains 4 entries: Offset Info Type Sym.Value Sym. Name 08049648 00000107 R_386_JUMP_SLOT 00000000 __libc_start_main 0804964c 00000907 R_386_JUMP_SLOT 08048360 __deregister_frame_inf 08049650 00000607 R_386_JUMP_SLOT 08048370 __register_frame_info 08049654 00000507 R_386_JUMP_SLOT 00000000 printf Symbol table '.dynsym' contains 11 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main 2: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab 3: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 4: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 5: 00000000 0 FUNC GLOBAL DEFAULT UND printf 6: 08048370 0 FUNC WEAK DEFAULT UND __register_frame_info 7: 08049690 0 NOTYPE GLOBAL DEFAULT ABS _end 8: 08049670 0 NOTYPE GLOBAL DEFAULT ABS _edata 9: 08048360 0 FUNC WEAK DEFAULT UND __deregister_frame_info 10: 08049670 0 NOTYPE GLOBAL DEFAULT ABS __bss_start Symbol table '.symtab' contains 39 entries: Num: Value Size Type Bind Vis Ndx Name ... 32: 00000000 0 FUNC WEAK DEFAULT UND __deregister_frame_info 33: 00000000 0 FUNC WEAK DEFAULT UND __register_frame_info