From: Szabolcs Nagy <nsz@port70.net>
To: Rich Felker <dalias@libc.org>
Cc: Cody Wetzel <codyawetzel@gmail.com>,
Natanael Copa <ncopa@alpinelinux.org>,
musl@lists.openwall.com, Markus Wichmann <nullplan@gmx.net>
Subject: Re: [musl] Segmentation fault musl 1.2.4
Date: Tue, 30 Jan 2024 11:43:38 +0100 [thread overview]
Message-ID: <20240130104338.GD1254592@port70.net> (raw)
In-Reply-To: <20240116204552.GV4163@brightrain.aerifal.cx>
* Rich Felker <dalias@libc.org> [2024-01-16 15:45:52 -0500]:
> On Tue, Jan 16, 2024 at 07:29:18PM +0100, Szabolcs Nagy wrote:
> > * Cody Wetzel <codyawetzel@gmail.com> [2024-01-16 09:21:05 -0600]:
> > > Here is the output for the old
> > > ....
> > > >
> > > > / # /tmp/ld-musl-armhf.so.1 /usr/bin/readelf -lW /tmp/ld-musl-armhf.so.1
> > > >
> > > > Elf file type is DYN (Shared object file)
> > > > Entry point 0x359cd
> > > > There are 6 program headers, starting at offset 52
> > > >
> > > > Program Headers:
> > > > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
> > > > EXIDX 0x07acec 0x0007acec 0x0007acec 0x00008 0x00008 R 0x4
> > > > LOAD 0x000000 0x00000000 0x00000000 0x7acf4 0x7acf4 R E 0x10000
> > > > LOAD 0x07fd6c 0x0008fd6c 0x0008fd6c 0x0054a 0x02258 RW 0x10000
> >
> > this load segment is 64k aligned.
> >
> > > > DYNAMIC 0x07febc 0x0008febc 0x0008febc 0x000c0 0x000c0 RW 0x4
> > > > GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10
> > > > GNU_RELRO 0x07fd6c 0x0008fd6c 0x0008fd6c 0x00294 0x00294 R 0x1
> > > >
> > > > Section to Segment mapping:
> > > > Segment Sections...
> > > > 00 .ARM.exidx
> > > > 01 .hash .gnu.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text
> > > > .rodata .ARM.exidx
> > > > 02 .data.rel.ro .dynamic .got .data .bss
> > > > 03 .dynamic
> > > > 04
> > > > 05 .data.rel.ro .dynamic .got
> > > >
> > >
> > > And the new...
> > >
> > > / # /tmp/ld-musl-armhf.so.1 /usr/bin/readelf -lW /lib/ld-musl-armhf.so.1
> > > >
> > > > Elf file type is DYN (Shared object file)
> > > > Entry point 0x362f1
> > > > There are 6 program headers, starting at offset 52
> > > >
> > > > Program Headers:
> > > > Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
> > > > EXIDX 0x07b81c 0x0007b81c 0x0007b81c 0x00008 0x00008 R 0x4
> > > > LOAD 0x000000 0x00000000 0x00000000 0x7b824 0x7b824 R E 0x1000
> > > > LOAD 0x07bd74 0x0007cd74 0x0007cd74 0x0054a 0x0225c RW 0x1000
> >
> > this load segment is 4k aligned and offset vs addr is not congruent
> > modulo 64k, or 32k, so won't work on systems with such page size.
> >
> > > > DYNAMIC 0x07bebc 0x0007cebc 0x0007cebc 0x000c0 0x000c0 RW 0x4
> > > > GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10
> > > > GNU_RELRO 0x07bd74 0x0007cd74 0x0007cd74 0x0028c 0x0028c R 0x1
> > > >
> > > > Section to Segment mapping:
> > > > Segment Sections...
> > > > 00 .ARM.exidx
> > > > 01 .hash .gnu.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text
> > > > .rodata .ARM.exidx
> > > > 02 .data.rel.ro .dynamic .got .data .bss
> > > > 03 .dynamic
> > > > 04
> > > > 05 .data.rel.ro .dynamic .got
> > >
> > >
> > > I hope that helps.
> >
> > yes, this is a linking issue, not musl libc.
> >
> > alpine linux links binaries for 4k pagesize only.
> >
> > arm linkers were updated at some point to create binaries supporting
> > up to 64k pagesize. i suspect some ppl ran into issues in practice
> > and decided the larger binaries are not worth it, if they dont work
> > reliably and forced 4k page size at link time.
> >
> > you have to raise an issue with alpine linux, if you think 32k
> > oage size is useful and reliably supportable.
>
> Are they using -Wl,-z,separate-code? That incurs a large
> binary-size-on-disk penalty when supporting oversized pages, and IIRC
> something was done to make the linker default to not supporting
> oversized pages when that's used. It might be the reason, if arm
> linking is normally expected to use a larger max pagesize.
i looked at this now, turns out they just changed the
pagesize back to 4k (i missed this change):
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1a26a53a0dee39106ba58fcb15496c5f13074652
next prev parent reply other threads:[~2024-01-30 10:43 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-20 21:53 Cody Wetzel
2023-12-21 3:38 ` Rich Felker
2023-12-21 4:15 ` Rich Felker
2023-12-21 7:57 ` Markus Wichmann
2023-12-21 18:39 ` Cody Wetzel
2023-12-21 21:25 ` Natanael Copa
2023-12-21 21:57 ` Cody Wetzel
2024-01-03 17:20 ` Cody Wetzel
2024-01-03 17:26 ` Leah Neukirchen
2024-01-03 18:00 ` Cody Wetzel
2024-01-04 14:48 ` Szabolcs Nagy
2024-01-10 15:59 ` Cody Wetzel
2024-01-11 17:03 ` Szabolcs Nagy
2024-01-11 18:19 ` Cody Wetzel
2024-01-12 18:57 ` Szabolcs Nagy
2024-01-12 23:10 ` Cody Wetzel
2024-01-15 22:30 ` Szabolcs Nagy
2024-01-16 15:21 ` Cody Wetzel
2024-01-16 18:29 ` Szabolcs Nagy
2024-01-16 18:53 ` Cody Wetzel
2024-01-16 20:45 ` Rich Felker
2024-01-30 10:43 ` Szabolcs Nagy [this message]
2024-01-30 15:37 ` Rich Felker
2024-01-30 20:17 ` [musl] Fixing ELF loader for systems with oversized pages [was: Re: [musl] Segmentation fault musl 1.2.4] Rich Felker
2023-12-22 2:20 ` [musl] Segmentation fault musl 1.2.4 Jeffrey Walton
2023-12-22 2:22 ` Jeffrey Walton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240130104338.GD1254592@port70.net \
--to=nsz@port70.net \
--cc=codyawetzel@gmail.com \
--cc=dalias@libc.org \
--cc=musl@lists.openwall.com \
--cc=ncopa@alpinelinux.org \
--cc=nullplan@gmx.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).