Blame tests/msg_tst.c

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