Blame tests/msg_tst.c

Packit 032894
/* Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
Packit 032894
   This file is part of elfutils.
Packit 032894
   Written by Ulrich Drepper <drepper@redhat.com>, 2002.
Packit 032894
Packit 032894
   This file is free software; you can redistribute it and/or modify
Packit 032894
   it under the terms of the GNU General Public License as published by
Packit 032894
   the Free Software Foundation; either version 3 of the License, or
Packit 032894
   (at your option) any later version.
Packit 032894
Packit 032894
   elfutils is distributed in the hope that it will be useful, but
Packit 032894
   WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 032894
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 032894
   GNU General Public License for more details.
Packit 032894
Packit 032894
   You should have received a copy of the GNU General Public License
Packit 032894
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit 032894
Packit 032894
#include <config.h>
Packit 032894
Packit 032894
#include <stdio.h>
Packit 032894
#include <stdlib.h>
Packit 032894
#include <string.h>
Packit 032894
Packit 032894
#include <libelfP.h>
Packit 032894
Packit 032894
static struct
Packit 032894
{
Packit 032894
  int id;
Packit 032894
  const char *expected;
Packit 032894
} libelf_msgs[ELF_E_NUM] =
Packit 032894
  {
Packit 032894
    { ELF_E_NOERROR, "no error" },
Packit 032894
    { ELF_E_UNKNOWN_ERROR, "unknown error" },
Packit 032894
    { ELF_E_UNKNOWN_VERSION, "unknown version" },
Packit 032894
    { ELF_E_UNKNOWN_TYPE, "unknown type" },
Packit 032894
    { ELF_E_INVALID_HANDLE, "invalid `Elf' handle" },
Packit 032894
    { ELF_E_SOURCE_SIZE, "invalid size of source operand" },
Packit 032894
    { ELF_E_DEST_SIZE, "invalid size of destination operand" },
Packit 032894
    { ELF_E_INVALID_ENCODING, "invalid encoding" },
Packit 032894
    { ELF_E_NOMEM, "out of memory" },
Packit 032894
    { ELF_E_INVALID_FILE, "invalid file descriptor" },
Packit 032894
    { ELF_E_INVALID_ELF, "invalid ELF file data" },
Packit 032894
    { ELF_E_INVALID_OP, "invalid operation" },
Packit 032894
    { ELF_E_NO_VERSION, "ELF version not set" },
Packit 032894
    { ELF_E_INVALID_CMD, "invalid command" },
Packit 032894
    { ELF_E_RANGE, "offset out of range" },
Packit 032894
    { ELF_E_ARCHIVE_FMAG, "invalid fmag field in archive header" },
Packit 032894
    { ELF_E_INVALID_ARCHIVE, "invalid archive file" },
Packit 032894
    { ELF_E_NO_ARCHIVE, "descriptor is not for an archive" },
Packit 032894
    { ELF_E_NO_INDEX, "no index available" },
Packit 032894
    { ELF_E_READ_ERROR, "cannot read data from file" },
Packit 032894
    { ELF_E_WRITE_ERROR, "cannot write data to file" },
Packit 032894
    { ELF_E_INVALID_CLASS, "invalid binary class" },
Packit 032894
    { ELF_E_INVALID_INDEX, "invalid section index" },
Packit 032894
    { ELF_E_INVALID_OPERAND, "invalid operand" },
Packit 032894
    { ELF_E_INVALID_SECTION, "invalid section" },
Packit 032894
    { ELF_E_INVALID_COMMAND, "invalid command" },
Packit 032894
    { ELF_E_WRONG_ORDER_EHDR, "executable header not created first" },
Packit 032894
    { ELF_E_FD_DISABLED, "file descriptor disabled" },
Packit 032894
    { ELF_E_FD_MISMATCH, "archive/member file descriptor mismatch" },
Packit 032894
    { ELF_E_OFFSET_RANGE, "offset out of range" },
Packit 032894
    { ELF_E_NOT_NUL_SECTION, "cannot manipulate null section" },
Packit 032894
    { ELF_E_DATA_MISMATCH, "data/scn mismatch" },
Packit 032894
    { ELF_E_INVALID_SECTION_HEADER, "invalid section header" },
Packit 032894
    { ELF_E_INVALID_DATA, "invalid data" },
Packit 032894
    { ELF_E_DATA_ENCODING, "unknown data encoding" },
Packit 032894
    { ELF_E_SECTION_TOO_SMALL, "section `sh_size' too small for data" },
Packit 032894
    { ELF_E_INVALID_ALIGN, "invalid section alignment" },
Packit 032894
    { ELF_E_INVALID_SHENTSIZE, "invalid section entry size" },
Packit 032894
    { ELF_E_UPDATE_RO, "update() for write on read-only file" },
Packit 032894
    { ELF_E_NOFILE, "no such file" },
Packit 032894
    { ELF_E_GROUP_NOT_REL,
Packit 032894
      "only relocatable files can contain section groups" },
Packit 032894
    { ELF_E_INVALID_PHDR,
Packit 032894
      "program header only allowed in executables, shared objects, \
Packit 032894
and core files" },
Packit 032894
    { ELF_E_NO_PHDR, "file has no program header" },
Packit 032894
    { ELF_E_INVALID_OFFSET, "invalid offset" },
Packit 032894
    { ELF_E_INVALID_SECTION_TYPE , "invalid section type" },
Packit 032894
    { ELF_E_INVALID_SECTION_FLAGS , "invalid section flags" },
Packit 032894
    { ELF_E_NOT_COMPRESSED, "section does not contain compressed data" },
Packit 032894
    { ELF_E_ALREADY_COMPRESSED, "section contains compressed data" },
Packit 032894
    { ELF_E_UNKNOWN_COMPRESSION_TYPE, "unknown compression type" },
Packit 032894
    { ELF_E_COMPRESS_ERROR, "cannot compress data" },
Packit 032894
    { ELF_E_DECOMPRESS_ERROR, "cannot decompress data" }
Packit 032894
  };
Packit 032894
Packit 032894
Packit 032894
int
Packit 032894
main (void)
Packit 032894
{
Packit 032894
  size_t cnt;
Packit 032894
  int result = EXIT_SUCCESS;
Packit 032894
Packit 032894
  /* Clear the error state.  */
Packit 032894
  (void) elf_errno ();
Packit 032894
Packit 032894
  /* Check all the messages of libelf.  */
Packit 032894
  for (cnt = 1; cnt < ELF_E_NUM; ++cnt)
Packit 032894
    {
Packit 032894
      const char *str = elf_errmsg (libelf_msgs[cnt].id);
Packit 032894
Packit 032894
      if (strcmp (str, libelf_msgs[cnt].expected) != 0)
Packit 032894
	{
Packit 032894
	  printf ("libelf msg %zu: expected \"%s\", got \"%s\"\n",
Packit 032894
		  cnt, libelf_msgs[cnt].expected, str);
Packit 032894
	  result = EXIT_FAILURE;
Packit 032894
	}
Packit 032894
    }
Packit 032894
Packit 032894
  return result;
Packit 032894
}