[U-Boot] [PATCH v2 04/47] elf: Add a few definitions for 64-bit relocation

Bin Meng bmeng.cn at gmail.com
Sun Aug 2 15:00:16 CEST 2015


On Fri, Jul 31, 2015 at 11:31 PM, Simon Glass <sjg at chromium.org> wrote:
> Provide the types necessary to relocate 64-bit images.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
>
> ---
>
> Changes in v2:
> - Follow existing file conventions for type definitions
>
>  include/elf.h | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/include/elf.h b/include/elf.h
> index 63d9341..a35e085 100644
> --- a/include/elf.h
> +++ b/include/elf.h
> @@ -28,6 +28,16 @@ typedef int32_t              Elf32_Sword;    /* Signed large integer */
>  typedef uint32_t       Elf32_Word;     /* Unsigned large integer */
>  typedef uint16_t       Elf32_Half;     /* Unsigned medium integer */
>
> +/* 64-bit ELF base types. */
> +typedef uint64_t       Elf64_Addr;
> +typedef uint16_t       Elf64_Half;
> +typedef int16_t                Elf64_SHalf;
> +typedef uint64_t       Elf64_Off;
> +typedef int32_t                Elf64_Sword;
> +typedef uint32_t       Elf64_Word;
> +typedef uint64_t       Elf64_Xword;
> +typedef int64_t                Elf64_Sxword;
> +
>  /* e_ident[] identification indexes */
>  #define EI_MAG0                0               /* file ID */
>  #define EI_MAG1                1               /* file ID */
> @@ -379,6 +389,11 @@ typedef struct
>         Elf32_Sword     r_addend;
>  } Elf32_Rela;
>
> +typedef struct {
> +       Elf64_Addr r_offset;    /* Location at which to apply the action */
> +       Elf64_Xword r_info;     /* index and type of relocation */
> +} Elf64_Rel;
> +
>  /* Extract relocation info - r_info */
>  #define ELF32_R_SYM(i)         ((i) >> 8)
>  #define ELF32_R_TYPE(i)                ((unsigned char) (i))
> @@ -431,6 +446,17 @@ typedef struct
>
>  extern Elf32_Dyn       _DYNAMIC[];
>
> +typedef struct {
> +       Elf64_Sxword d_tag;             /* entry tag value */
> +       union {
> +               Elf64_Xword d_val;
> +               Elf64_Addr d_ptr;
> +       } d_un;
> +} Elf64_Dyn;
> +
> +#define ELF64_R_SYM(i)                 ((i) >> 32)
> +#define ELF64_R_TYPE(i)                        ((i) & 0xffffffff)
> +
>  /* Dynamic Array Tags - d_tag */
>  #define DT_NULL                0               /* marks end of _DYNAMIC array */
>  #define DT_NEEDED      1               /* string table offset of needed lib */
> --

Reviewed-by: Bin Meng <bmeng.cn at gmail.com>


More information about the U-Boot mailing list