---
name: "elf_rawfile"
section: "3"
platform: "linux"
package: "libelf"
version: "0.197-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/elf_rawfile"
---

# elf\_rawfile(3)

Retrieve a pointer to the entire raw ELF file image

## NAME

elf\_rawfile - Retrieve a pointer to the entire raw ELF file image

## SYNOPSIS

```
#include <libelf.h>
char *elf_rawfile(Elf *elf, size_t *ptr);
```

## DESCRIPTION

The **elf\_rawfile**() function returns a pointer to the entire contents of the ELF file represented by *elf*. This data is unprocessed and includes everything from the ELF header to the final byte.

If the ELF descriptor was opened from memory or the file has already been memory-mapped or fully read, this function returns a pointer to the internal buffer.

If the ELF data has not yet been read or mapped, it is loaded on demand.

If *ptr* is non-NULL, the total size in bytes of the raw file is stored in *\*ptr*.

The returned buffer is read-only and managed internally by libelf. The application must not modify or free it.

## PARAMETERS

- *elf*

  A handle previously returned by [**elf\_begin**(3)](/elf_begin/3.md)**.**

- *ptr*

  If not **NULL**, receives the size in bytes of the ELF file.

## RETURN VALUE

Returns a pointer to the start of the ELF file data. On failure, **NULL** is returned and *\*ptr* (if non-NULL) is set to 0.

## SEE ALSO

[**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **elf\_rawfile**() | Thread safety | MT-Safe |

## REPORTING BUGS

Report bugs to \<elfutils-devel@sourceware.org\> or https://sourceware.org/bugzilla/.
