/* DLX support for BFD.
   Copyright (C) 2002-2021 Free Software Foundation, Inc.

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software Foundation,
   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */

#ifndef _ELF_DLX_H
#define _ELF_DLX_H

#include "elf/reloc-macros.h"

#ifdef __cplusplus
extern "C" {
#endif

#if 0
START_RELOC_NUMBERS (elf_dlx_reloc_type)
     RELOC_NUMBER (R_DLX_NONE,            0)
     RELOC_NUMBER (R_DLX_RELOC_16,        1)
     RELOC_NUMBER (R_DLX_RELOC_26,        2)
     RELOC_NUMBER (R_DLX_RELOC_32,        3)
     RELOC_NUMBER (R_DLX_GNU_VTINHERIT,   4)
     RELOC_NUMBER (R_DLX_GNU_VTENTRY,     5)
     RELOC_NUMBER (R_DLX_RELOC_16_HI,     6)
     RELOC_NUMBER (R_DLX_RELOC_16_LO,     7)
     RELOC_NUMBER (R_DLX_RELOC_16_PCREL,  8)
     RELOC_NUMBER (R_DLX_RELOC_26_PCREL,  9)
END_RELOC_NUMBERS (R_DLX_max)
#else
START_RELOC_NUMBERS (elf_dlx_reloc_type)
     RELOC_NUMBER (R_DLX_NONE,            0)
     RELOC_NUMBER (R_DLX_RELOC_8,         1)
     RELOC_NUMBER (R_DLX_RELOC_16,        2)
     RELOC_NUMBER (R_DLX_RELOC_32,        3)
     RELOC_NUMBER (R_DLX_GNU_VTINHERIT,   4)
     RELOC_NUMBER (R_DLX_GNU_VTENTRY,     5)
     RELOC_NUMBER (R_DLX_RELOC_16_HI,     6)
     RELOC_NUMBER (R_DLX_RELOC_16_LO,     7)
     RELOC_NUMBER (R_DLX_RELOC_16_PCREL,  8)
     RELOC_NUMBER (R_DLX_RELOC_26_PCREL,  9)
END_RELOC_NUMBERS (R_DLX_max)
#endif /* 0 */

#ifdef __cplusplus
     }
#endif

#endif /* _ELF_DLX_H */
