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