18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci#include <stdio.h>
38c2ecf20Sopenharmony_ci#include <string.h>
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#define VDSO__MAP_NAME "[vdso]"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci/*
88c2ecf20Sopenharmony_ci * Include definition of find_map() also used in util/vdso.c for
98c2ecf20Sopenharmony_ci * building perf.
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci#include "util/find-map.c"
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ciint main(void)
148c2ecf20Sopenharmony_ci{
158c2ecf20Sopenharmony_ci	void *start, *end;
168c2ecf20Sopenharmony_ci	size_t size, written;
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci	if (find_map(&start, &end, VDSO__MAP_NAME))
198c2ecf20Sopenharmony_ci		return 1;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	size = end - start;
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci	while (size) {
248c2ecf20Sopenharmony_ci		written = fwrite(start, 1, size, stdout);
258c2ecf20Sopenharmony_ci		if (!written)
268c2ecf20Sopenharmony_ci			return 1;
278c2ecf20Sopenharmony_ci		start += written;
288c2ecf20Sopenharmony_ci		size -= written;
298c2ecf20Sopenharmony_ci	}
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci	if (fflush(stdout))
328c2ecf20Sopenharmony_ci		return 1;
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	return 0;
358c2ecf20Sopenharmony_ci}
36