From d5ff667894e1677f227d917cacf4b9ccc5f35b16 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Wed, 1 Apr 2009 18:28:41 -0700 Subject: [PATCH] Update elf.h and some tables; fill in sparc backend reloc table. --- backends/ChangeLog | 5 ++ backends/sparc_reloc.def | 164 ++++++++++++++++++++----------------- libebl/ChangeLog | 6 ++ libebl/eblauxvinfo.c | 6 +- libebl/eblsymboltypename.c | 4 +- libelf/ChangeLog | 4 + libelf/elf.h | 21 ++++- 7 files changed, 129 insertions(+), 81 deletions(-) diff --git a/backends/ChangeLog b/backends/ChangeLog index 0dbb3eb67..4b48a8fa4 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,8 @@ +2009-04-01 Roland McGrath + + * sparc_reloc.def: Update table. + Data from Dave Miller . + 2009-02-15 Roland McGrath * ppc_attrs.c (ppc_check_object_attribute): Handle tag diff --git a/backends/sparc_reloc.def b/backends/sparc_reloc.def index de6509747..a7ea52a32 100644 --- a/backends/sparc_reloc.def +++ b/backends/sparc_reloc.def @@ -1,5 +1,5 @@ /* List the relocation types for sparc. -*- C -*- - Copyright (C) 2005 Red Hat, Inc. + Copyright (C) 2009 Red Hat, Inc. This file is part of Red Hat elfutils. Red Hat elfutils is free software; you can redistribute it and/or modify @@ -25,82 +25,94 @@ /* NAME, REL|EXEC|DYN */ -RELOC_TYPE (NONE, 0) -RELOC_TYPE (8, 0) -RELOC_TYPE (16, 0) -RELOC_TYPE (32, 0) -RELOC_TYPE (DISP8, 0) -RELOC_TYPE (DISP16, 0) -RELOC_TYPE (DISP32, 0) -RELOC_TYPE (WDISP30, 0) -RELOC_TYPE (WDISP22, 0) -RELOC_TYPE (HI22, 0) -RELOC_TYPE (22, 0) -RELOC_TYPE (13, 0) -RELOC_TYPE (LO10, 0) -RELOC_TYPE (GOT10, 0) -RELOC_TYPE (GOT13, 0) -RELOC_TYPE (GOT22, 0) -RELOC_TYPE (PC10, 0) -RELOC_TYPE (PC22, 0) -RELOC_TYPE (WPLT30, 0) +RELOC_TYPE (NONE, REL) +RELOC_TYPE (8, REL) +RELOC_TYPE (16, REL) +RELOC_TYPE (32, REL|DYN) +RELOC_TYPE (DISP8, REL) +RELOC_TYPE (DISP16, REL) +RELOC_TYPE (DISP32, REL) +RELOC_TYPE (WDISP30, REL) +RELOC_TYPE (WDISP22, REL) +RELOC_TYPE (HI22, REL) +RELOC_TYPE (22, REL) +RELOC_TYPE (13, REL) +RELOC_TYPE (LO10, REL) +RELOC_TYPE (GOT10, REL) +RELOC_TYPE (GOT13, REL) +RELOC_TYPE (GOT22, REL) +RELOC_TYPE (PC10, REL) +RELOC_TYPE (PC22, REL) +RELOC_TYPE (WPLT30, REL) RELOC_TYPE (COPY, EXEC) RELOC_TYPE (GLOB_DAT, EXEC|DYN) RELOC_TYPE (JMP_SLOT, EXEC|DYN) RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (UA32, 0) -RELOC_TYPE (PLT32, 0) -RELOC_TYPE (HIPLT22, 0) -RELOC_TYPE (LOPLT10, 0) -RELOC_TYPE (PCPLT32, 0) -RELOC_TYPE (PCPLT22, 0) -RELOC_TYPE (PCPLT10, 0) -RELOC_TYPE (10, 0) -RELOC_TYPE (11, 0) -RELOC_TYPE (64, 0) -RELOC_TYPE (OLO10, 0) -RELOC_TYPE (HH22, 0) -RELOC_TYPE (HM10, 0) -RELOC_TYPE (LM22, 0) -RELOC_TYPE (PC_HH22, 0) -RELOC_TYPE (PC_HM10, 0) -RELOC_TYPE (PC_LM22, 0) -RELOC_TYPE (WDISP16, 0) -RELOC_TYPE (WDISP19, 0) -RELOC_TYPE (7, 0) -RELOC_TYPE (5, 0) -RELOC_TYPE (6, 0) -RELOC_TYPE (DISP64, 0) -RELOC_TYPE (PLT64, 0) -RELOC_TYPE (HIX22, 0) -RELOC_TYPE (LOX10, 0) -RELOC_TYPE (H44, 0) -RELOC_TYPE (M44, 0) -RELOC_TYPE (L44, 0) -RELOC_TYPE (REGISTER, 0) -RELOC_TYPE (UA64, 0) -RELOC_TYPE (UA16, 0) -RELOC_TYPE (TLS_GD_HI22, 0) -RELOC_TYPE (TLS_GD_LO10, 0) -RELOC_TYPE (TLS_GD_ADD, 0) -RELOC_TYPE (TLS_GD_CALL, 0) -RELOC_TYPE (TLS_LDM_HI22, 0) -RELOC_TYPE (TLS_LDM_LO10, 0) -RELOC_TYPE (TLS_LDM_ADD, 0) -RELOC_TYPE (TLS_LDM_CALL, 0) -RELOC_TYPE (TLS_LDO_HIX22, 0) -RELOC_TYPE (TLS_LDO_LOX10, 0) -RELOC_TYPE (TLS_LDO_ADD, 0) -RELOC_TYPE (TLS_IE_HI22, 0) -RELOC_TYPE (TLS_IE_LO10, 0) -RELOC_TYPE (TLS_IE_LD, 0) -RELOC_TYPE (TLS_IE_LDX, 0) -RELOC_TYPE (TLS_IE_ADD, 0) -RELOC_TYPE (TLS_LE_HIX22, 0) -RELOC_TYPE (TLS_LE_LOX10, 0) -RELOC_TYPE (TLS_DTPMOD32, 0) -RELOC_TYPE (TLS_DTPMOD64, 0) -RELOC_TYPE (TLS_DTPOFF32, 0) -RELOC_TYPE (TLS_DTPOFF64, 0) -RELOC_TYPE (TLS_TPOFF32, 0) -RELOC_TYPE (TLS_TPOFF64, 0) +RELOC_TYPE (UA32, REL) +RELOC_TYPE (PLT32, REL) +RELOC_TYPE (HIPLT22, REL) +RELOC_TYPE (LOPLT10, REL) +RELOC_TYPE (PCPLT32, REL) +RELOC_TYPE (PCPLT22, REL) +RELOC_TYPE (PCPLT10, REL) +RELOC_TYPE (10, REL) +RELOC_TYPE (11, REL) +RELOC_TYPE (64, REL|DYN) +RELOC_TYPE (OLO10, REL) +RELOC_TYPE (HH22, REL) +RELOC_TYPE (HM10, REL) +RELOC_TYPE (LM22, REL) +RELOC_TYPE (PC_HH22, REL) +RELOC_TYPE (PC_HM10, REL) +RELOC_TYPE (PC_LM22, REL) +RELOC_TYPE (WDISP16, REL) +RELOC_TYPE (WDISP19, REL) +RELOC_TYPE (GLOB_JMP, EXEC|DYN) +RELOC_TYPE (7, REL) +RELOC_TYPE (5, REL) +RELOC_TYPE (6, REL) +RELOC_TYPE (DISP64, REL) +RELOC_TYPE (PLT64, REL) +RELOC_TYPE (HIX22, REL) +RELOC_TYPE (LOX10, REL) +RELOC_TYPE (H44, REL) +RELOC_TYPE (M44, REL) +RELOC_TYPE (L44, REL) +RELOC_TYPE (REGISTER, REL) +RELOC_TYPE (UA64, REL) +RELOC_TYPE (UA16, REL) +RELOC_TYPE (TLS_GD_HI22, REL) +RELOC_TYPE (TLS_GD_LO10, REL) +RELOC_TYPE (TLS_GD_ADD, REL) +RELOC_TYPE (TLS_GD_CALL, REL) +RELOC_TYPE (TLS_LDM_HI22, REL) +RELOC_TYPE (TLS_LDM_LO10, REL) +RELOC_TYPE (TLS_LDM_ADD, REL) +RELOC_TYPE (TLS_LDM_CALL, REL) +RELOC_TYPE (TLS_LDO_HIX22, REL) +RELOC_TYPE (TLS_LDO_LOX10, REL) +RELOC_TYPE (TLS_LDO_ADD, REL) +RELOC_TYPE (TLS_IE_HI22, REL) +RELOC_TYPE (TLS_IE_LO10, REL) +RELOC_TYPE (TLS_IE_LD, REL) +RELOC_TYPE (TLS_IE_LDX, REL) +RELOC_TYPE (TLS_IE_ADD, REL) +RELOC_TYPE (TLS_LE_HIX22, REL) +RELOC_TYPE (TLS_LE_LOX10, REL) +RELOC_TYPE (TLS_DTPMOD32, DYN) +RELOC_TYPE (TLS_DTPMOD64, DYN) +RELOC_TYPE (TLS_DTPOFF32, DYN) +RELOC_TYPE (TLS_DTPOFF64, DYN) +RELOC_TYPE (TLS_TPOFF32, DYN) +RELOC_TYPE (TLS_TPOFF64, DYN) +RELOC_TYPE (GOTDATA_HIX22, REL) +RELOC_TYPE (GOTDATA_LOX10, REL) +RELOC_TYPE (GOTDATA_OP_HIX22, DYN) +RELOC_TYPE (GOTDATA_OP_LOX10, DYN) +RELOC_TYPE (GOTDATA_OP, DYN) +RELOC_TYPE (H34, REL) +RELOC_TYPE (SIZE32, REL) +RELOC_TYPE (SIZE64, REL) +RELOC_TYPE (GNU_VTINHERIT, REL) +RELOC_TYPE (GNU_VTENTRY, REL) +RELOC_TYPE (REV32, REL) diff --git a/libebl/ChangeLog b/libebl/ChangeLog index f1ba346a7..83319c702 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,9 @@ +2009-04-01 Roland McGrath + + * eblsymboltypename.c (ebl_symbol_type_name): Add STT_GNU_IFUNC. + + * eblauxvinfo.c (AUXV_TYPES): Add RANDOM and BASE_PLATFORM. + 2009-02-01 Ulrich Drepper * eblreloctypename.c (ebl_reloc_type_name): Return "" diff --git a/libebl/eblauxvinfo.c b/libebl/eblauxvinfo.c index af65c47b9..6e02403f9 100644 --- a/libebl/eblauxvinfo.c +++ b/libebl/eblauxvinfo.c @@ -1,5 +1,5 @@ /* Describe known auxv types. - Copyright (C) 2007, 2008 Red Hat, Inc. + Copyright (C) 2007, 2008, 2009 Red Hat, Inc. This file is part of Red Hat elfutils. Red Hat elfutils is free software; you can redistribute it and/or modify @@ -78,6 +78,7 @@ TYPE (EGID, "u") \ TYPE (CLKTCK, "u") \ TYPE (PLATFORM, "s") \ + TYPE (BASE_PLATFORM, "s") \ TYPE (HWCAP, "x") \ TYPE (FPUCW, "x") \ TYPE (DCACHEBSIZE, "d") \ @@ -90,7 +91,8 @@ TYPE (L1I_CACHESHAPE, "d") \ TYPE (L1D_CACHESHAPE, "d") \ TYPE (L2_CACHESHAPE, "d") \ - TYPE (L3_CACHESHAPE, "d") + TYPE (L3_CACHESHAPE, "d") \ + TYPE (RANDOM, "p") static const struct { diff --git a/libebl/eblsymboltypename.c b/libebl/eblsymboltypename.c index c7cb2cba8..6aae13ee4 100644 --- a/libebl/eblsymboltypename.c +++ b/libebl/eblsymboltypename.c @@ -1,5 +1,5 @@ /* Return symbol type name. - Copyright (C) 2001, 2002 Red Hat, Inc. + Copyright (C) 2001, 2002, 2009 Red Hat, Inc. This file is part of Red Hat elfutils. Written by Ulrich Drepper , 2001. @@ -86,6 +86,8 @@ ebl_symbol_type_name (ebl, symbol, buf, len) { if (symbol >= STT_LOPROC && symbol <= STT_HIPROC) snprintf (buf, len, "LOPROC+%d", symbol - STT_LOPROC); + else if (symbol == STT_GNU_IFUNC) + return "GNU_IFUNC"; else if (symbol >= STT_LOOS && symbol <= STT_HIOS) snprintf (buf, len, "LOOS+%d", symbol - STT_LOOS); else diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 9b2a912f6..d3b2b1e83 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,7 @@ +2009-04-01 Roland McGrath + + * elf.h: Update from glibc. + 2009-02-10 Ulrich Drepper * elf32_updatefile.c (updatefile): For the zeroth section we still diff --git a/libelf/elf.h b/libelf/elf.h index b4d34754a..625935026 100644 --- a/libelf/elf.h +++ b/libelf/elf.h @@ -1,5 +1,5 @@ /* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2003,2004,2005,2006,2007,2008 + Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -459,6 +459,7 @@ typedef struct #define STT_TLS 6 /* Symbol is thread-local data object*/ #define STT_NUM 7 /* Number of defined types. */ #define STT_LOOS 10 /* Start of OS-specific */ +#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */ #define STT_HIOS 12 /* End of OS-specific */ #define STT_LOPROC 13 /* Start of processor-specific */ #define STT_HIPROC 15 /* End of processor-specific */ @@ -972,6 +973,10 @@ typedef struct #define AT_SECURE 23 /* Boolean, was exec setuid-like? */ +#define AT_BASE_PLATFORM 24 /* String identifying real platforms.*/ + +#define AT_RANDOM 25 /* Address of 16 random bytes. */ + #define AT_EXECFN 31 /* Filename of executable. */ /* Pointer to the global system page used for system calls and other @@ -1241,6 +1246,7 @@ typedef struct #define R_SPARC_PC_LM22 39 /* Low miggle 22 bits of ... */ #define R_SPARC_WDISP16 40 /* PC relative 16 bit shifted */ #define R_SPARC_WDISP19 41 /* PC relative 19 bit shifted */ +#define R_SPARC_GLOB_JMP 42 /* was part of v9 ABI but was removed */ #define R_SPARC_7 43 /* Direct 7 bit */ #define R_SPARC_5 44 /* Direct 5 bit */ #define R_SPARC_6 45 /* Direct 6 bit */ @@ -1278,8 +1284,19 @@ typedef struct #define R_SPARC_TLS_DTPOFF64 77 #define R_SPARC_TLS_TPOFF32 78 #define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 /* Keep this the last entry. */ -#define R_SPARC_NUM 80 +#define R_SPARC_NUM 253 /* For Sparc64, legal values for d_tag of Elf64_Dyn. */ -- 2.47.2