Date: Mon, 21 Aug 2006 22:34:31 GMT From: Oleksandr Tymoshenko <gonzo@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 104738 for review Message-ID: <200608212234.k7LMYVP4056929@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=104738 Change 104738 by gonzo@gonzo_hideout on 2006/08/21 22:33:43 o Get rid of x86_64 bits. o Fixed Elf32_Auxinfo struct: a_un should contain a_ptr and a_fcn fields. o Added MIPS-specific relocations from NetBSD tree. o ELF_TARGET_DATA considers target endianess. Affected files ... .. //depot/projects/mips2/src/sys/mips/include/elf.h#3 edit Differences ... ==== //depot/projects/mips2/src/sys/mips/include/elf.h#3 (text+ko) ==== @@ -1,3 +1,5 @@ +/* $NetBSD: elf_machdep.h,v 1.10 2005/12/11 12:18:09 christos Exp $ */ + /*- * Copyright (c) 1996-1997 John D. Polstra. * All rights reserved. @@ -40,9 +42,9 @@ #include <sys/elf64.h> /* Definitions common to all 64 bit architectures. */ #include <sys/elf_generic.h> -#define ELF_ARCH EM_X86_64 +#define ELF_ARCH EM_MIPS -#define ELF_MACHINE_OK(x) ((x) == EM_X86_64) +#define ELF_MACHINE_OK(x) ((x) == EM_MIPS) /* * Auxiliary vector entries for passing information to the interpreter. @@ -54,6 +56,8 @@ int a_type; /* Entry type. */ union { int a_val; /* Integer value. */ + void *a_ptr; /* Address. */ + void (*a_fcn)(void); /* Function pointer (not used). */ } a_un; } Elf32_Auxinfo; @@ -103,36 +107,55 @@ #define AT_COUNT 15 /* Count of defined aux entry types. */ +/* mips relocs. */ + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_REL R_MIPS_REL32 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 /* high 16 bits of symbol value */ +#define R_MIPS_LO16 6 /* low 16 bits of symbol value */ +#define R_MIPS_GPREL16 7 /* GP-relative reference */ +#define R_MIPS_LITERAL 8 /* Reference to literal section */ +#define R_MIPS_GOT16 9 /* Reference to global offset table */ +#define R_MIPS_GOT R_MIPS_GOT16 +#define R_MIPS_PC16 10 /* 16 bit PC relative reference */ +#define R_MIPS_CALL16 11 /* 16 bit call thru glbl offset tbl */ +#define R_MIPS_CALL R_MIPS_CALL16 +#define R_MIPS_GPREL32 12 + +/* 13, 14, 15 are not defined at this point. */ +#define R_MIPS_UNUSED1 13 +#define R_MIPS_UNUSED2 14 +#define R_MIPS_UNUSED3 15 + /* - * Relocation types. + * The remaining relocs are apparently part of the 64-bit Irix ELF ABI. */ +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 -#define R_X86_64_NONE 0 /* No relocation. */ -#define R_X86_64_64 1 /* Add 64 bit symbol value. */ -#define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ -#define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ -#define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ -#define R_X86_64_COPY 5 /* Copy data from shared object. */ -#define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ -#define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ -#define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ -#define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ -#define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ -#define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ -#define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ -#define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ -#define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ -#define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ -#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ -#define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ -#define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ -#define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ -#define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ -#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ -#define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ -#define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ - -#define R_X86_64_COUNT 24 /* Count of defined relocation types. */ +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 /* Define "machine" characteristics */ #if __ELF_WORD_SIZE == 32 @@ -140,8 +163,14 @@ #else #define ELF_TARG_CLASS ELFCLASS64 #endif + +#ifdef __MIPSEB__ +#define ELF_TARG_DATA ELFDATA2MSB +#else #define ELF_TARG_DATA ELFDATA2LSB -#define ELF_TARG_MACH EM_X86_64 +#endif + +#define ELF_TARG_MACH EM_MIPS #define ELF_TARG_VER 1 #endif /* !_MACHINE_ELF_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608212234.k7LMYVP4056929>