/* MMIX support for BFD.
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
#include "elf/reloc-macros.h"
-/* Relocations. */
+/* Relocations. See the reloc table in bfd/elf64-mmix.c for details. */
START_RELOC_NUMBERS (elf_mmix_reloc_type)
RELOC_NUMBER (R_MMIX_NONE, 0)
/* A general register. */
RELOC_NUMBER (R_MMIX_REG, 33)
- /* A global register and an offset, equivalent of the expression. */
+ /* A global register and an offset, the global register (allocated at
+ link time) contents plus the offset made equivalent to the relocation
+ expression at link time. The relocation must point at the Y field of
+ an instruction. */
RELOC_NUMBER (R_MMIX_BASE_PLUS_OFFSET, 34)
/* A LOCAL assertion. */
RELOC_NUMBER (R_MMIX_LOCAL, 35)
+
+ /* A PUSHJ instruction, generating a stub if it does not reach. */
+ RELOC_NUMBER (R_MMIX_PUSHJ_STUBBABLE, 36)
END_RELOC_NUMBERS (R_MMIX_max)
unspecified) ABI. */
#define MMIX_REG_CONTENTS_SECTION_NAME ".MMIX.reg_contents"
+/* At link time, a section by this name is created, expected to be
+ included in MMIX_REG_CONTENTS_SECTION_NAME in the output. */
+#define MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME \
+ ".MMIX.reg_contents.linker_allocated"
+
/* This is a faked section holding symbols with SHN_REGISTER. Don't
confuse it with MMIX_REG_CONTENTS_SECTION_NAME; this one has no
contents, just values. It is an error for a value in this section to
#define MMO_SEC_IS_COMMON 0x8000
#define MMO_SEC_DEBUGGING 0x10000
+#ifdef BFD_ARCH_SIZE
+extern bfd_boolean _bfd_mmix_before_linker_allocation
+ (bfd *, struct bfd_link_info *);
+extern bfd_boolean _bfd_mmix_after_linker_allocation
+ (bfd *, struct bfd_link_info *);
+extern bfd_boolean _bfd_mmix_check_all_relocs
+ (bfd *, struct bfd_link_info *);
+#endif
+
#endif /* ELF_MMIX_H */