From cfdfd5ea3ce14c6abf7fb22a531f3d99518b5a1b Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 5 Mar 2021 11:09:32 -0500 Subject: don't fail to map library/executable with zero-length segment maps reportedly the GNU linker can emit such segments, causing spurious failure to load due to mmap with a length of zero producing EINVAL. no action is required for such a load map (it's effectively a nop in the program headers table) so just treat it as always successful. --- ldso/dynlink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 6b868c84..aaadcce0 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -579,6 +579,7 @@ static void *mmap_fixed(void *p, size_t n, int prot, int flags, int fd, off_t of { static int no_map_fixed; char *q; + if (!n) return p; if (!no_map_fixed) { q = mmap(p, n, prot, flags|MAP_FIXED, fd, off); if (!DL_NOMMU_SUPPORT || q != MAP_FAILED || errno != EINVAL) -- cgit v1.2.1