1de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard/* Copyright (C) 2006 Red Hat, Inc.
2de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   This file is part of elfutils.
3de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
4de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   This file is free software; you can redistribute it and/or modify
5de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   it under the terms of the GNU General Public License as published by
6de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   the Free Software Foundation; either version 3 of the License, or
7de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   (at your option) any later version.
8de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
9de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   elfutils is distributed in the hope that it will be useful, but
10de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   WITHOUT ANY WARRANTY; without even the implied warranty of
11de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   GNU General Public License for more details.
13de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
14de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   You should have received a copy of the GNU General Public License
15de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
16de2ed97f33139af5c7a0811e4ec66fc896a13cf2Mark Wielaard
173425454a10d307fae891fb667cf7969e945cde79Josh Stone#ifdef HAVE_CONFIG_H
183425454a10d307fae891fb667cf7969e945cde79Josh Stone# include <config.h>
193425454a10d307fae891fb667cf7969e945cde79Josh Stone#endif
203425454a10d307fae891fb667cf7969e945cde79Josh Stone
21ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <errno.h>
22ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <error.h>
23ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <stdio.h>
24ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <fcntl.h>
25ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <unistd.h>
26ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper#include <libelf.h>
27ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
28ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepperint
29ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Dreppermain (int argc __attribute__ ((unused)), char *argv[])
30ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper{
31ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  int fd = open (argv[1], O_RDWR);
32ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  if (fd < 0)
33ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper    error (2, errno, "open: %s", argv[1]);
34ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
35ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  if (elf_version (EV_CURRENT) == EV_NONE)
36ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper    error (1, 0, "libelf version mismatch");
37ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
38ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  Elf *elf = elf_begin (fd, ELF_C_RDWR_MMAP, NULL);
39ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  if (elf == NULL)
40ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper    error (1, 0, "elf_begin: %s", elf_errmsg (-1));
41ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
42ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  if (elf_update (elf, ELF_C_WRITE) < 0)
43ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper    error (1, 0, "elf_update: %s", elf_errmsg (-1));
44ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
45ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  elf_end (elf);
46ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  close (fd);
47ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper
48ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper  return 0;
49ba718b11356bdb0caea95a49a06ddb61a843cd3eUlrich Drepper}
50