msg_tst.c revision 361df7da6dfecd817b27e62b91752ac316d7cdd4
141de488a0ad6679e816dbab960351e5f62ab8eadUlrich Drepper/* Copyright (C) 2002, 2005 Red Hat, Inc. 2361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper This file is part of Red Hat elfutils. 3b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper Written by Ulrich Drepper <drepper@redhat.com>, 2002. 4b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 5361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Red Hat elfutils is free software; you can redistribute it and/or modify 6361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper it under the terms of the GNU General Public License as published by the 7361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Free Software Foundation; version 2 of the License. 8b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 9361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Red Hat elfutils is distributed in the hope that it will be useful, but 10361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper WITHOUT ANY WARRANTY; without even the implied warranty of 11361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper General Public License for more details. 13361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper 14361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper You should have received a copy of the GNU General Public License along 15361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper with Red Hat elfutils; if not, write to the Free Software Foundation, 16361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 17361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper 18361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Red Hat elfutils is an included package of the Open Invention Network. 19361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper An included package of the Open Invention Network is a package for which 20361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Open Invention Network licensees cross-license their patents. No patent 21361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper license is granted, either expressly or impliedly, by designation as an 22361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper included package. Should you wish to participate in the Open Invention 23361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper Network licensing program, please visit www.openinventionnetwork.com 24361df7da6dfecd817b27e62b91752ac316d7cdd4Ulrich Drepper <http://www.openinventionnetwork.com>. */ 25b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 26b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <config.h> 27b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 28b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <stdio.h> 29b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <stdlib.h> 30b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <string.h> 31b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 32b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper#include <libelfP.h> 33b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 34b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperstatic struct 35b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{ 36b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper int id; 37b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper const char *expected; 38b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper} libelf_msgs[ELF_E_NUM] = 39b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { 40b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NOERROR, "no error" }, 41b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_UNKNOWN_ERROR, "unknown error" }, 42b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_UNKNOWN_VERSION, "unknown version" }, 43b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_UNKNOWN_TYPE, "unknown type" }, 44b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_HANDLE, "invalid `Elf' handle" }, 45b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_SOURCE_SIZE, "invalid size of source operand" }, 46b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_DEST_SIZE, "invalid size of destination operand" }, 47b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_ENCODING, "invalid encoding" }, 48b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NOMEM, "out of memory" }, 49b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_FILE, "invalid file descriptor" }, 50b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_OP, "invalid operation" }, 51b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NO_VERSION, "ELF version not set" }, 52b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_CMD, "invalid command" }, 53b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_RANGE, "offset out of range" }, 54b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_ARCHIVE_FMAG, "invalid fmag field in archive header" }, 55b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_ARCHIVE, "invalid archive file" }, 56b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NO_ARCHIVE, "descriptor is not for an archive" }, 57b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NO_INDEX, "no index available" }, 58b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_READ_ERROR, "cannot read data from file" }, 59b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_WRITE_ERROR, "cannot write data to file" }, 60b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_CLASS, "invalid binary class" }, 61b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_INDEX, "invalid section index" }, 62b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_OPERAND, "invalid operand" }, 63b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_SECTION, "invalid section" }, 64b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_COMMAND, "invalid command" }, 65b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_WRONG_ORDER_EHDR, "executable header not created first" }, 66b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_FD_DISABLED, "file descriptor disabled" }, 67b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_FD_MISMATCH, "archive/member fildes mismatch" }, 68b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_OFFSET_RANGE, "offset out of range" }, 69b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NOT_NUL_SECTION, "cannot manipulate null section" }, 70b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_DATA_MISMATCH, "data/scn mismatch" }, 71b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_SECTION_HEADER, "invalid section header" }, 72b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_DATA, "invalid data" }, 73b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_DATA_ENCODING, "unknown data encoding" }, 74b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_SECTION_TOO_SMALL, "section `sh_size' too small for data" }, 75b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_ALIGN, "invalid section alignment" }, 76b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_SHENTSIZE, "invalid section entry size" }, 77b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_UPDATE_RO, "update() for write on read-only file" }, 78b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_NOFILE, "no such file" }, 79b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_GROUP_NOT_REL, 80b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper "only relocatable files can contain section groups" }, 81b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { ELF_E_INVALID_PHDR, 82b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper "program header only allowed in executables and shared objects" }, 8341de488a0ad6679e816dbab960351e5f62ab8eadUlrich Drepper { ELF_E_NO_PHDR, "file has no program header" }, 8441de488a0ad6679e816dbab960351e5f62ab8eadUlrich Drepper { ELF_E_INVALID_OFFSET, "invalid offset" } 85b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper }; 86b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 87b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 88b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepperint 89b08d5a8fb42f4586d756068065186b5af7e48daUlrich Dreppermain (void) 90b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper{ 91b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper size_t cnt; 92b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper int result = EXIT_SUCCESS; 93b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 94b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper /* Clear the error state. */ 95b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper (void) elf_errno (); 96b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 97b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper /* Check all the messages of libelf. */ 98b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper for (cnt = 1; cnt < ELF_E_NUM; ++cnt) 99b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { 100b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper const char *str = elf_errmsg (libelf_msgs[cnt].id); 101b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 102b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper if (strcmp (str, libelf_msgs[cnt].expected) != 0) 103b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper { 104b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper printf ("libelf msg %zu: expected \"%s\", got \"%s\"\n", 105b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper cnt, libelf_msgs[cnt].expected, str); 106b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper result = EXIT_FAILURE; 107b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper } 108b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper } 109b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper 110b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper return result; 111b08d5a8fb42f4586d756068065186b5af7e48daUlrich Drepper} 112