Module Name: src
Committed By: hannken
Date: Wed Mar 30 08:26:45 UTC 2022
Modified Files:
src/libexec/ld.elf_so: map_object.c
Log Message:
_rtld_map_object(): no need to mmap an empty bss segment.
To generate a diff of this commit:
cvs rdiff -u -r1.61 -r1.62 src/libexec/ld.elf_so/map_object.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/libexec/ld.elf_so/map_object.c
diff -u src/libexec/ld.elf_so/map_object.c:1.61 src/libexec/ld.elf_so/map_object.c:1.62
--- src/libexec/ld.elf_so/map_object.c:1.61 Wed Mar 4 01:21:17 2020
+++ src/libexec/ld.elf_so/map_object.c Wed Mar 30 08:26:45 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: map_object.c,v 1.61 2020/03/04 01:21:17 thorpej Exp $ */
+/* $NetBSD: map_object.c,v 1.62 2022/03/30 08:26:45 hannken Exp $ */
/*
* Copyright 1996 John D. Polstra.
@@ -34,7 +34,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: map_object.c,v 1.61 2020/03/04 01:21:17 thorpej Exp $");
+__RCSID("$NetBSD: map_object.c,v 1.62 2022/03/30 08:26:45 hannken Exp $");
#endif /* not lint */
#include <errno.h>
@@ -371,11 +371,13 @@ _rtld_map_object(const char *path, int f
}
/* Overlay the bss segment onto the proper region. */
- if (mmap(mapbase + data_vlimit - base_vaddr, base_vlimit - data_vlimit,
- data_flags, MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0) ==
- MAP_FAILED) {
- _rtld_error("mmap of bss failed: %s", xstrerror(errno));
- goto bad;
+ if (base_vlimit > data_vlimit) {
+ if (mmap(mapbase + data_vlimit - base_vaddr,
+ base_vlimit - data_vlimit, data_flags,
+ MAP_ANON | MAP_PRIVATE | MAP_FIXED, -1, 0) == MAP_FAILED) {
+ _rtld_error("mmap of bss failed: %s", xstrerror(errno));
+ goto bad;
+ }
}
/* Unmap the gap between the text and data. */