On Mon, 2019-06-03 at 16:16 +0800, Mao Han wrote:
> diff --git a/backends/csky_reloc.def b/backends/csky_reloc.def
> new file mode 100644
> index 0000000..1108f0c
> --- /dev/null
> +++ b/backends/csky_reloc.def
> @@ -0,0 +1,86 @@
> +/* List the relocation types for csky.  -*- C -*-
> +   Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd.
> +   This file is part of elfutils.
> +
> +   This file is free software; you can redistribute it and/or modify
> +   it under the terms of either
> +
> +     * the GNU Lesser General Public License as published by the Free
> +       Software Foundation; either version 3 of the License, or (at
> +       your option) any later version
> +
> +   or
> +
> +     * the GNU General Public License as published by the Free
> +       Software Foundation; either version 2 of the License, or (at
> +       your option) any later version
> +
> +   or both in parallel, as here.
> +
> +   elfutils 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 copies of the GNU General Public License and
> +   the GNU Lesser General Public License along with this program.  If
> +   not, see <http://www.gnu.org/licenses/>.  */
> +
> +/*         NAME,               REL|EXEC|DYN    */
> +
> +
> +RELOC_TYPE (NONE,              REL|EXEC|DYN)
> +RELOC_TYPE (ADDR32,            REL|EXEC|DYN)

OK.

> +RELOC_TYPE (PCRELIMM8BY4,      REL)
> +RELOC_TYPE (PCRELIMM11BY2,     REL)

Do we want these two? They seem to be v1 only.

> +RELOC_TYPE (PCREL32,           REL|DYN)

This is probably wanted, but the CPU ABI document has it listed as ??.

> +RELOC_TYPE (PCRELJSR_IMM11BY2, REL)

Also v1 only?

> +RELOC_TYPE (RELATIVE,          EXEC|DYN)
> +RELOC_TYPE (COPY,              EXEC|DYN)
> +RELOC_TYPE (GLOB_DAT,          EXEC|DYN)
> +RELOC_TYPE (JUMP_SLOT,         EXEC|DYN)

OK.

> +RELOC_TYPE (GOTOFF,            REL)
> +RELOC_TYPE (GOTPC,             REL)
> +RELOC_TYPE (GOT32,             REL)
> +RELOC_TYPE (PLT32,             REL)
> +RELOC_TYPE (ADDRGOT,           REL)
> +RELOC_TYPE (ADDRPLT,           REL)

v1 only?

> +RELOC_TYPE (PCREL_IMM26BY2,    REL)
> +RELOC_TYPE (PCREL_IMM16BY2,    REL)
> +RELOC_TYPE (PCREL_IMM16BY4,    REL)
> +RELOC_TYPE (PCREL_IMM10BY2,    REL)
> +RELOC_TYPE (PCREL_IMM10BY4,    REL)
> +RELOC_TYPE (ADDR_HI16,         REL|DYN)
> +RELOC_TYPE (ADDR_LO16,         REL|DYN)
> +RELOC_TYPE (GOTPC_HI16,                REL)
> +RELOC_TYPE (GOTPC_LO16,                REL)
> +RELOC_TYPE (GOTOFF_HI16,       REL)
> +RELOC_TYPE (GOTOFF_LO16,       REL)
> +RELOC_TYPE (GOT12,             REL)
> +RELOC_TYPE (GOT_HI16,          REL)
> +RELOC_TYPE (GOT_LO16,          REL)
> +RELOC_TYPE (PLT12,             REL)
> +RELOC_TYPE (PLT_HI16,          REL)
> +RELOC_TYPE (PLT_LO16,          REL)
> +RELOC_TYPE (ADDRGOT_HI16,      REL)
> +RELOC_TYPE (ADDRGOT_LO16,      REL)
> +RELOC_TYPE (ADDRPLT_HI16,      REL)
> +RELOC_TYPE (ADDRPLT_LO16,      REL)
> +RELOC_TYPE (PCREL_JSR_IMM26BY2,        REL|DYN)
> +RELOC_TYPE (TOFFSET_LO16,      REL)
> +RELOC_TYPE (DOFFSET_LO16,      REL)
> +RELOC_TYPE (PCREL_IMM18BY2,    REL)
> +RELOC_TYPE (DOFFSET_IMM18,     REL)
> +RELOC_TYPE (DOFFSET_IMM18BY2,  REL)
> +RELOC_TYPE (DOFFSET_IMM18BY4,  REL)

R_CKCORE_GOTOFF_IMM18 is missing, but it is also missing in elf.h.

> +RELOC_TYPE (GOT_IMM18BY4,      REL)
> +RELOC_TYPE (PLT_IMM18BY4,      REL)

R_CKCORE_PCREL_IMM7BY4 missing?

> +RELOC_TYPE (PCREL_IMM7BY4,     REL)
> +RELOC_TYPE (TLS_LE32,          REL)
> +RELOC_TYPE (TLS_IE32,          REL)
> +RELOC_TYPE (TLS_GD32,          REL)
> +RELOC_TYPE (TLS_LDM32,         REL)
> +RELOC_TYPE (TLS_LDO32,         REL)
> +RELOC_TYPE (TLS_DTPMOD32,      EXEC|DYN)
> +RELOC_TYPE (TLS_DTPOFF32,      EXEC|DYN)
> +RELOC_TYPE (TLS_TPOFF32,       EXEC|DYN)

The TLS variants aren't yet listed in the CPU ABI doc, but are in
elf.h, so I assume they are OK.

We can list the v1 variants also, their numbers don't overlap.
Just checking it is done deliberately. If they can never occur in v2
ELF binaries I would leave them out.

Cheers,

Mark

Reply via email to