| .\" Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. |
| .\" Written by Marcela Maslanova <mmaslano@redhat.com> |
| .\" and Copyright 2013, Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH GETUNWIND 2 2017-09-15 Linux "Linux Programmer's Manual" |
| .SH NAME |
| getunwind \- copy the unwind data to caller's buffer |
| .SH SYNOPSIS |
| .nf |
| .B #include <syscall.h> |
| .B #include <linux/unwind.h> |
| .PP |
| .BI "long getunwind(void " *buf ", size_t " buf_size ); |
| .fi |
| .PP |
| .IR Note : |
| There is no glibc wrapper for this system call; see NOTES. |
| .SH DESCRIPTION |
| .I Note: this function is obsolete. |
| .PP |
| The |
| IA-64-specific |
| .BR getunwind () |
| system call copies the kernel's call frame |
| unwind data into the buffer pointed to by |
| .I buf |
| and returns the size of the unwind data; |
| this data describes the gate page (kernel code that |
| is mapped into user space). |
| .PP |
| The size of the buffer |
| .I buf |
| is specified in |
| .IR buf_size . |
| The data is copied only if |
| .I buf_size |
| is greater than or equal to the size of the unwind data and |
| .I buf |
| is not NULL; |
| otherwise, no data is copied, and the call succeeds, |
| returning the size that would be needed to store the unwind data. |
| .PP |
| The first part of the unwind data contains an unwind table. |
| The rest contains the associated unwind information, in no particular order. |
| The unwind table contains entries of the following form: |
| .PP |
| .in +4n |
| .EX |
| u64 start; (64-bit address of start of function) |
| u64 end; (64-bit address of end of function) |
| u64 info; (BUF-relative offset to unwind info) |
| .EE |
| .in |
| .PP |
| An entry whose |
| .I start |
| value is zero indicates the end of the table. |
| For more information about the format, see the |
| .I IA-64 Software Conventions and Runtime Architecture |
| manual. |
| .SH RETURN VALUE |
| On success, |
| .BR getunwind () |
| returns the size of the unwind data. |
| On error, \-1 is returned and |
| .I errno |
| is set to indicate the error. |
| .SH ERRORS |
| .BR getunwind () |
| fails with the error |
| .B EFAULT |
| if the unwind info can't be stored in the space specified by |
| .IR buf . |
| .SH VERSIONS |
| This system call is available since Linux 2.4. |
| .SH CONFORMING TO |
| This system call is Linux-specific, |
| and is available only on the IA-64 architecture. |
| .SH NOTES |
| This system call has been deprecated. |
| The modern way to obtain the kernel's unwind data is via the |
| .BR vdso (7). |
| .PP |
| Glibc does not provide a wrapper for this system call; |
| in the unlikely event that you want to call it, use |
| .BR syscall (2). |
| .SH SEE ALSO |
| .BR getauxval (3) |