#ifndef _RELOC_DEFS_DOT_H
#define _RELOC_DEFS_DOT_H
#include <sys/machelf.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
Xword re_mask;
Word re_flags;
uchar_t re_fsize;
uchar_t re_bshift;
uchar_t re_sigbits;
} Rel_entry;
#define FLG_RE_NOTREL 0x00000000
#define FLG_RE_GOTADD 0x00000001
#define FLG_RE_GOTREL 0x00000002
#define FLG_RE_GOTPC 0x00000004
#define FLG_RE_GOTOPINS 0x00000008
#define FLG_RE_PCREL 0x00000010
#define FLG_RE_PLTREL 0x00000020
#define FLG_RE_VERIFY 0x00000040
#define FLG_RE_UNALIGN 0x00000080
#define FLG_RE_WDISP16 0x00000100
#define FLG_RE_SIGN 0x00000200
#define FLG_RE_ADDRELATIVE 0x00000400
#define FLG_RE_EXTOFFSET 0x00000800
#define FLG_RE_REGISTER 0x00001000
#define FLG_RE_SIZE 0x00002000
#define FLG_RE_NOTSUP 0x00010000
#define FLG_RE_SEGREL 0x00040000
#define FLG_RE_SECREL 0x00080000
#define FLG_RE_TLSGD 0x00200000
#define FLG_RE_TLSLD 0x00400000
#define FLG_RE_TLSIE 0x00800000
#define FLG_RE_TLSLE 0x01000000
#define FLG_RE_LOCLBND 0x02000000
#define RELTAB_IS_PLT(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_PLTREL) != 0)
#define RELTAB_IS_GOT_RELATIVE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_GOTADD) != 0)
#define RELTAB_IS_GOT_PC(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_GOTPC) != 0)
#define RELTAB_IS_GOTPCREL(X, _reltab) \
((_reltab[(X)].re_flags & (FLG_RE_GOTPC | FLG_RE_GOTADD)) == \
(FLG_RE_GOTPC | FLG_RE_GOTADD))
#define RELTAB_IS_GOT_BASED(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_GOTREL) != 0)
#define RELTAB_IS_GOT_OPINS(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_GOTOPINS) != 0)
#define RELTAB_IS_GOT_REQUIRED(X, _reltab) \
((_reltab[(X)].re_flags & (FLG_RE_GOTADD | FLG_RE_GOTREL | \
FLG_RE_GOTPC | FLG_RE_GOTOPINS)) != 0)
#define RELTAB_IS_PC_RELATIVE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_PCREL) != 0)
#define RELTAB_IS_ADD_RELATIVE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_ADDRELATIVE) != 0)
#define RELTAB_IS_REGISTER(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_REGISTER) != 0)
#define RELTAB_IS_NOTSUP(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_NOTSUP) != 0)
#define RELTAB_IS_SEG_RELATIVE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_SEGREL) != 0)
#define RELTAB_IS_EXTOFFSET(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_EXTOFFSET) != 0)
#define RELTAB_IS_SEC_RELATIVE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_SECREL) != 0)
#define RELTAB_IS_TLS_INS(X, _reltab) \
((_reltab[(X)].re_flags & \
(FLG_RE_TLSGD | FLG_RE_TLSLD | FLG_RE_TLSIE | FLG_RE_TLSLE)) != 0)
#define RELTAB_IS_TLS_GD(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_TLSGD) != 0)
#define RELTAB_IS_TLS_LD(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_TLSLD) != 0)
#define RELTAB_IS_TLS_IE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_TLSIE) != 0)
#define RELTAB_IS_TLS_LE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_TLSLE) != 0)
#define RELTAB_IS_LOCALBND(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_LOCLBND) != 0)
#define RELTAB_IS_SIZE(X, _reltab) \
((_reltab[(X)].re_flags & FLG_RE_SIZE) != 0)
#ifdef __cplusplus
}
#endif
#endif