|
From: <sv...@va...> - 2015-12-14 20:14:53
|
Author: iraisr
Date: Mon Dec 14 20:14:44 2015
New Revision: 15749
Log:
Fix expected output of massif/tests/mmapunmap on Solaris.
On Solaris and Linux, mmap() is an optimized function without
prologue and epilogue. However, Solaris libc does not currently
bear any DWARF CFI. Therefore stack chain unwinder grabs only
two entries: IP inside mmap() and return address from the previous
frame which points inside _start(), right after where main()
is invoked. By introducing an intermediate function f(), main()
is now visible in the stack trace even on Solaris.
n-i-bz
Modified:
trunk/massif/tests/mmapunmap.c
trunk/massif/tests/mmapunmap.post.exp
trunk/massif/tests/mmapunmap.vgtest
Modified: trunk/massif/tests/mmapunmap.c
==============================================================================
--- trunk/massif/tests/mmapunmap.c (original)
+++ trunk/massif/tests/mmapunmap.c Mon Dec 14 20:14:44 2015
@@ -4,13 +4,16 @@
#include <unistd.h>
#include "tests/sys_mman.h"
-int main()
+static void *f(void)
{
- void *m;
+ return mmap(NULL, 80 * 1000 * 1024,
+ PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
+ -1, 0);
+}
- m = mmap(NULL, 80 * 1000 * 1024,
- PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
- -1, 0);
+int main()
+{
+ void *m = f();
munmap(m, 80 * 1000 * 1024);
return 0;
}
Modified: trunk/massif/tests/mmapunmap.post.exp
==============================================================================
--- trunk/massif/tests/mmapunmap.post.exp (original)
+++ trunk/massif/tests/mmapunmap.post.exp Mon Dec 14 20:14:44 2015
@@ -1 +1 @@
- n0: 81920000 0x........: main (mmapunmap.c:11)
+ n0: 81920000 0x........: main (mmapunmap.c:16)
Modified: trunk/massif/tests/mmapunmap.vgtest
==============================================================================
--- trunk/massif/tests/mmapunmap.vgtest (original)
+++ trunk/massif/tests/mmapunmap.vgtest Mon Dec 14 20:14:44 2015
@@ -2,5 +2,5 @@
vgopts: --pages-as-heap=yes --threshold=30.0 -q
vgopts: --stacks=no --time-unit=B --depth=8 --massif-out-file=massif.out
vgopts: --ignore-fn=__part_load_locale --ignore-fn=__time_load_locale --ignore-fn=dwarf2_unwind_dyld_add_image_hook --ignore-fn=get_or_create_key_element
-post: grep -A3 -e =peak massif.out | grep -e 'main (mmapunmap.c:11)' | ../../tests/filter_addresses
+post: grep -A4 -e =peak massif.out | grep -e 'main (mmapunmap.c:16)' | tr -s ' ' | ../../tests/filter_addresses
cleanup: rm massif.out
|