From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26247 invoked from network); 11 Jan 2021 18:14:01 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 11 Jan 2021 18:14:01 -0000 Received: (qmail 29712 invoked by uid 550); 11 Jan 2021 18:13:57 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 28670 invoked from network); 11 Jan 2021 18:13:57 -0000 Date: Mon, 11 Jan 2021 13:13:44 -0500 From: Rich Felker To: Sagar Tiwari Cc: musl@lists.openwall.com Message-ID: <20210111181344.GB23432@brightrain.aerifal.cx> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] printf segfaults on recent musl versions On Mon, Jan 11, 2021 at 10:31:21PM +0530, Sagar Tiwari wrote: > Hi, > > Apologies if this isn't a support forum for musl. I couldn't find any > such portal online. > > I'm trying to compile a program with musl libc. Dynamically linked > version of this program works fine, but the statically linked version > segfaults whenever `printf` is invoked. This is how a debugging > session looks like: > >
> $ gdb out/sm
> GNU gdb (GDB) 9.2
> Copyright (C) 2020 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later 
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> Type "show copying" and "show warranty" for details.
> This GDB was configured as "x86_64-unknown-linux-gnu".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> .
> Find the GDB manual and other documentation resources online at:
>     .
> 
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from out/sm...
> (gdb) b printf
> Breakpoint 1 at 0x100ac: file src/stdio/printf.c, line 5.
> (gdb) r
> Starting program: /home/fctorial/src/pgs/c/out/sm
> 
> Breakpoint 1, printf (fmt=0x1004f  "hello world from printf\n")
> at src/stdio/printf.c:5
> 5       {
> (gdb) n
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x000000000001010a in printf (fmt=0x1004f  "hello world from
> printf\n") at src/stdio/printf.c:5
> 5       {
> (gdb) quit
> A debugging session is active.
> 
>         Inferior 1 [process 25984] will be killed.
> 
> Quit anyway? (y or n) EOF [assumed Y]
> 
> 
> > This issue appears when linking with recent musl versions (within an > year). 1.0.0 doesn't have this issue. I can call other functions like > 'rand', 'strlen' without any issue. `printf` and `puts` are > segfaulting. Can you elaborate on how you compiled/linked (using musl-gcc wrapper? mcm-built or distro-provided toolchain or one you built yourself? etc.) Judging from the very low address in gdb output, my guess is that you have a broken toolchain that's trying to link static pie without using the right link options or start files. Rich