From owner-svn-src-all@freebsd.org Fri May 20 17:24:37 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5B22B43E90; Fri, 20 May 2016 17:24:37 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3962A1D3E; Fri, 20 May 2016 17:24:37 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4KHOaO1083396; Fri, 20 May 2016 17:24:36 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4KHOZ7x083379; Fri, 20 May 2016 17:24:35 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201605201724.u4KHOZ7x083379@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 20 May 2016 17:24:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r300311 - in head: contrib/elftoolchain/addr2line contrib/elftoolchain/brandelf contrib/elftoolchain/common contrib/elftoolchain/cxxfilt contrib/elftoolchain/elfcopy contrib/elftoolchai... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 May 2016 17:24:37 -0000 Author: emaste Date: Fri May 20 17:24:34 2016 New Revision: 300311 URL: https://svnweb.freebsd.org/changeset/base/300311 Log: Update to ELF Tool Chain r3475 Improvements include: * Add support for reporting and handling a number of new constants in various tools, including: * CloudABI OSABI * DT_TLSDESC_* * i386, MIPS, SPARC and amd64 relocations * C++ demangler bug fixes * Man page updates * Improved input validation in several tools This update also reduces diffs against upstream as a number of fixes included in upstream were previously cherry-picked into FreeBSD. Sponsored by: The FreeBSD Foundation Added: head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.3 - copied unchanged from r300228, vendor/elftoolchain/dist/libelftc/elftc_reloc_type_str.3 head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c - copied unchanged from r300228, vendor/elftoolchain/dist/libelftc/elftc_reloc_type_str.c Modified: head/contrib/elftoolchain/addr2line/addr2line.c head/contrib/elftoolchain/brandelf/brandelf.c head/contrib/elftoolchain/common/_elftc.h head/contrib/elftoolchain/common/elfdefinitions.h head/contrib/elftoolchain/cxxfilt/cxxfilt.c head/contrib/elftoolchain/elfcopy/ascii.c head/contrib/elftoolchain/elfcopy/binary.c head/contrib/elftoolchain/elfcopy/elfcopy.1 head/contrib/elftoolchain/elfcopy/elfcopy.h head/contrib/elftoolchain/elfcopy/main.c head/contrib/elftoolchain/elfcopy/sections.c head/contrib/elftoolchain/elfcopy/segments.c head/contrib/elftoolchain/elfcopy/symbols.c head/contrib/elftoolchain/elfdump/elfdump.c head/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c head/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c head/contrib/elftoolchain/libelf/_libelf_config.h head/contrib/elftoolchain/libelf/elf_data.c head/contrib/elftoolchain/libelf/libelf_ar.c head/contrib/elftoolchain/libelf/libelf_convert.m4 head/contrib/elftoolchain/libelftc/Makefile head/contrib/elftoolchain/libelftc/libelftc.h head/contrib/elftoolchain/libelftc/libelftc_dem_arm.c head/contrib/elftoolchain/libelftc/libelftc_dem_gnu2.c head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c head/contrib/elftoolchain/libelftc/make-toolchain-version head/contrib/elftoolchain/libpe/libpe_section.c head/contrib/elftoolchain/libpe/pe.h head/contrib/elftoolchain/nm/nm.c head/contrib/elftoolchain/readelf/readelf.c head/contrib/elftoolchain/size/size.c head/contrib/elftoolchain/strings/strings.c head/lib/libelftc/Makefile head/lib/libelftc/elftc_version.c Directory Properties: head/contrib/elftoolchain/ (props changed) head/contrib/elftoolchain/brandelf/ (props changed) head/contrib/elftoolchain/elfdump/ (props changed) Modified: head/contrib/elftoolchain/addr2line/addr2line.c ============================================================================== --- head/contrib/elftoolchain/addr2line/addr2line.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/addr2line/addr2line.c Fri May 20 17:24:34 2016 (r300311) @@ -40,7 +40,7 @@ #include "uthash.h" #include "_elftc.h" -ELFTC_VCSID("$Id: addr2line.c 3273 2015-12-11 21:38:57Z kaiwang27 $"); +ELFTC_VCSID("$Id: addr2line.c 3446 2016-05-03 01:31:17Z emaste $"); struct Func { char *name; @@ -284,7 +284,7 @@ collect_func(Dwarf_Debug dbg, Dwarf_Die &de) == DW_DLV_OK) goto add_func; - /* Skip if no name assoicated with this DIE. */ + /* Skip if no name associated with this DIE. */ goto cont_search; add_func: Modified: head/contrib/elftoolchain/brandelf/brandelf.c ============================================================================== --- head/contrib/elftoolchain/brandelf/brandelf.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/brandelf/brandelf.c Fri May 20 17:24:34 2016 (r300311) @@ -44,7 +44,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: brandelf.c 3354 2016-01-18 21:50:15Z jkoshy $"); +ELFTC_VCSID("$Id: brandelf.c 3440 2016-04-07 14:51:47Z emaste $"); static int elftype(const char *); static const char *iselftype(int); @@ -62,6 +62,7 @@ static struct ELFtypes elftypes[] = { { "AIX", ELFOSABI_AIX }, { "ARM", ELFOSABI_ARM }, { "AROS", ELFOSABI_AROS }, + { "CloudABI", ELFOSABI_CLOUDABI }, { "FreeBSD", ELFOSABI_FREEBSD }, { "GNU", ELFOSABI_GNU }, { "HP/UX", ELFOSABI_HPUX}, Modified: head/contrib/elftoolchain/common/_elftc.h ============================================================================== --- head/contrib/elftoolchain/common/_elftc.h Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/common/_elftc.h Fri May 20 17:24:34 2016 (r300311) @@ -23,11 +23,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _elftc.h 3244 2015-08-31 19:53:08Z emaste $ + * $Id: _elftc.h 3446 2016-05-03 01:31:17Z emaste $ */ /** - ** Miscellanous definitions needed by multiple components. + ** Miscellaneous definitions needed by multiple components. **/ #ifndef _ELFTC_H Modified: head/contrib/elftoolchain/common/elfdefinitions.h ============================================================================== --- head/contrib/elftoolchain/common/elfdefinitions.h Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/common/elfdefinitions.h Fri May 20 17:24:34 2016 (r300311) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 3392 2016-02-05 19:51:22Z emaste $ + * $Id: elfdefinitions.h 3455 2016-05-09 13:47:29Z emaste $ */ /* @@ -184,6 +184,10 @@ _ELF_DEFINE_DT(DT_ADDRRNGLO, 0x6F "start of range using the d_ptr field") \ _ELF_DEFINE_DT(DT_GNU_HASH, 0x6FFFFEF5UL, \ "GNU style hash tables") \ +_ELF_DEFINE_DT(DT_TLSDESC_PLT, 0x6FFFFEF6UL, \ + "location of PLT entry for TLS descriptor resolver calls") \ +_ELF_DEFINE_DT(DT_TLSDESC_GOT, 0x6FFFFEF7UL, \ + "location of GOT entry used by TLS descriptor resolver PLT entry") \ _ELF_DEFINE_DT(DT_GNU_CONFLICT, 0x6FFFFEF8UL, \ "address of conflict section") \ _ELF_DEFINE_DT(DT_GNU_LIBLIST, 0x6FFFFEF9UL, \ @@ -269,7 +273,7 @@ _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC, 0x70 _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC_NO, 0x7000001CUL, \ "number of entries in DT_MIPS_DELTA_RELOC") \ _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM, 0x7000001DUL, \ - "Delta symbols refered by Delta relocations") \ + "Delta symbols referred by Delta relocations") \ _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM_NO, 0x7000001EUL, \ "number of entries in DT_MIPS_DELTA_SYM") \ _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASSSYM, 0x70000020UL, \ @@ -540,6 +544,7 @@ _ELF_DEFINE_EABI(ELFOSABI_NSK, 14 _ELF_DEFINE_EABI(ELFOSABI_AROS, 15, "Amiga Research OS") \ _ELF_DEFINE_EABI(ELFOSABI_FENIXOS, 16, \ "The FenixOS highly scalable multi-core OS") \ +_ELF_DEFINE_EABI(ELFOSABI_CLOUDABI, 17, "Nuxi CloudABI") \ _ELF_DEFINE_EABI(ELFOSABI_ARM_AEABI, 64, \ "ARM specific symbol versioning extensions") \ _ELF_DEFINE_EABI(ELFOSABI_ARM, 97, "ARM ABI") \ @@ -1193,7 +1198,7 @@ _ELF_DEFINE_SHT(SHT_MIPS_ABIFLAGS, 0x7 "ABI flags") \ _ELF_DEFINE_SHT(SHT_SPARC_GOTDATA, 0x70000000UL, \ "SPARC-specific data") \ -_ELF_DEFINE_SHT(SHT_AMD64_UNWIND, 0x70000001UL, \ +_ELF_DEFINE_SHT(SHT_X86_64_UNWIND, 0x70000001UL, \ "unwind tables for the AMD64") \ _ELF_DEFINE_SHT(SHT_ORDERED, 0x7FFFFFFFUL, \ "sort entries in the section") \ @@ -1212,6 +1217,7 @@ enum { }; /* Aliases for section types. */ +#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND #define SHT_GNU_verdef SHT_SUNW_verdef #define SHT_GNU_verneed SHT_SUNW_verneed #define SHT_GNU_versym SHT_SUNW_versym @@ -1255,6 +1261,7 @@ _ELF_DEFINE_STT(STT_FILE, 4, _ELF_DEFINE_STT(STT_COMMON, 5, "uninitialized common block") \ _ELF_DEFINE_STT(STT_TLS, 6, "thread local storage") \ _ELF_DEFINE_STT(STT_LOOS, 10, "start of OS-specific types") \ +_ELF_DEFINE_STT(STT_GNU_IFUNC, 10, "indirect function") \ _ELF_DEFINE_STT(STT_HIOS, 12, "end of OS-specific types") \ _ELF_DEFINE_STT(STT_LOPROC, 13, \ "start of processor-specific types") \ @@ -1402,10 +1409,37 @@ _ELF_DEFINE_RELOC(R_386_RELATIVE, 8) \ _ELF_DEFINE_RELOC(R_386_GOTOFF, 9) \ _ELF_DEFINE_RELOC(R_386_GOTPC, 10) \ _ELF_DEFINE_RELOC(R_386_32PLT, 11) \ +_ELF_DEFINE_RELOC(R_386_TLS_TPOFF, 14) \ +_ELF_DEFINE_RELOC(R_386_TLS_IE, 15) \ +_ELF_DEFINE_RELOC(R_386_TLS_GOTIE, 16) \ +_ELF_DEFINE_RELOC(R_386_TLS_LE, 17) \ +_ELF_DEFINE_RELOC(R_386_TLS_GD, 18) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDM, 19) \ _ELF_DEFINE_RELOC(R_386_16, 20) \ _ELF_DEFINE_RELOC(R_386_PC16, 21) \ _ELF_DEFINE_RELOC(R_386_8, 22) \ -_ELF_DEFINE_RELOC(R_386_PC8, 23) +_ELF_DEFINE_RELOC(R_386_PC8, 23) \ +_ELF_DEFINE_RELOC(R_386_TLS_GD_32, 24) \ +_ELF_DEFINE_RELOC(R_386_TLS_GD_PUSH, 25) \ +_ELF_DEFINE_RELOC(R_386_TLS_GD_CALL, 26) \ +_ELF_DEFINE_RELOC(R_386_TLS_GD_POP, 27) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDM_32, 28) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDM_PUSH, 29) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDM_CALL, 30) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDM_POP, 31) \ +_ELF_DEFINE_RELOC(R_386_TLS_LDO_32, 32) \ +_ELF_DEFINE_RELOC(R_386_TLS_IE_32, 33) \ +_ELF_DEFINE_RELOC(R_386_TLS_LE_32, 34) \ +_ELF_DEFINE_RELOC(R_386_TLS_DTPMOD32, 35) \ +_ELF_DEFINE_RELOC(R_386_TLS_DTPOFF32, 36) \ +_ELF_DEFINE_RELOC(R_386_TLS_TPOFF32, 37) \ +_ELF_DEFINE_RELOC(R_386_SIZE32, 38) \ +_ELF_DEFINE_RELOC(R_386_TLS_GOTDESC, 39) \ +_ELF_DEFINE_RELOC(R_386_TLS_DESC_CALL, 40) \ +_ELF_DEFINE_RELOC(R_386_TLS_DESC, 41) \ +_ELF_DEFINE_RELOC(R_386_IRELATIVE, 42) \ +_ELF_DEFINE_RELOC(R_386_GOT32X, 43) + /* */ @@ -1795,11 +1829,18 @@ _ELF_DEFINE_RELOC(R_MIPS_GOT16, 9) \ _ELF_DEFINE_RELOC(R_MIPS_PC16, 10) \ _ELF_DEFINE_RELOC(R_MIPS_CALL16, 11) \ _ELF_DEFINE_RELOC(R_MIPS_GPREL32, 12) \ +_ELF_DEFINE_RELOC(R_MIPS_SHIFT5, 16) \ +_ELF_DEFINE_RELOC(R_MIPS_SHIFT6, 17) \ _ELF_DEFINE_RELOC(R_MIPS_64, 18) \ -_ELF_DEFINE_RELOC(R_MIPS_GOTHI16, 21) \ -_ELF_DEFINE_RELOC(R_MIPS_GOTLO16, 22) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT_DISP, 19) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT_PAGE, 20) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT_OFST, 21) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT_HI16, 22) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT_LO16, 23) \ +_ELF_DEFINE_RELOC(R_MIPS_SUB, 24) \ _ELF_DEFINE_RELOC(R_MIPS_CALLHI16, 30) \ _ELF_DEFINE_RELOC(R_MIPS_CALLLO16, 31) \ +_ELF_DEFINE_RELOC(R_MIPS_JALR, 37) \ _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD32, 38) \ _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL32, 39) \ _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD64, 40) \ @@ -2095,6 +2136,7 @@ _ELF_DEFINE_RELOC(R_SPARC_PC_HM10, 38) \ _ELF_DEFINE_RELOC(R_SPARC_PC_LM22, 39) \ _ELF_DEFINE_RELOC(R_SPARC_WDISP16, 40) \ _ELF_DEFINE_RELOC(R_SPARC_WDISP19, 41) \ +_ELF_DEFINE_RELOC(R_SPARC_GLOB_JMP, 42) \ _ELF_DEFINE_RELOC(R_SPARC_7, 43) \ _ELF_DEFINE_RELOC(R_SPARC_5, 44) \ _ELF_DEFINE_RELOC(R_SPARC_6, 45) \ @@ -2108,6 +2150,30 @@ _ELF_DEFINE_RELOC(R_SPARC_L44, 52) \ _ELF_DEFINE_RELOC(R_SPARC_REGISTER, 53) \ _ELF_DEFINE_RELOC(R_SPARC_UA64, 54) \ _ELF_DEFINE_RELOC(R_SPARC_UA16, 55) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_HI22, 56) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_LO10, 57) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_ADD, 58) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_CALL, 59) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_HI22, 60) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_LO10, 61) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_ADD, 62) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_CALL, 63) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_HIX22, 64) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_LOX10, 65) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_ADD, 66) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_HI22, 67) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LO10, 68) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LD, 69) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LDX, 70) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_ADD, 71) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LE_HIX22, 72) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_LE_LOX10, 73) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPMOD32, 74) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPMOD64, 75) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPOFF32, 76) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPOFF64, 77) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_TPOFF32, 78) \ +_ELF_DEFINE_RELOC(R_SPARC_TLS_TPOFF64, 79) \ _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_HIX22, 80) \ _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_LOX10, 81) \ _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_OP_HIX22, 82) \ @@ -2153,7 +2219,10 @@ _ELF_DEFINE_RELOC(R_X86_64_SIZE64, 33) \ _ELF_DEFINE_RELOC(R_X86_64_GOTPC32_TLSDESC, 34) \ _ELF_DEFINE_RELOC(R_X86_64_TLSDESC_CALL, 35) \ _ELF_DEFINE_RELOC(R_X86_64_TLSDESC, 36) \ -_ELF_DEFINE_RELOC(R_X86_64_IRELATIVE, 37) +_ELF_DEFINE_RELOC(R_X86_64_IRELATIVE, 37) \ +_ELF_DEFINE_RELOC(R_X86_64_RELATIVE64, 38) \ +_ELF_DEFINE_RELOC(R_X86_64_GOTPCRELX, 41) \ +_ELF_DEFINE_RELOC(R_X86_64_REX_GOTPCRELX, 42) #define _ELF_DEFINE_RELOCATIONS() \ _ELF_DEFINE_386_RELOCATIONS() \ @@ -2424,7 +2493,7 @@ _ELF_DEFINE_ODK(ODK_HWOR, 8, _ELF_DEFINE_ODK(ODK_GP_GROUP, 9, \ "GP group to use for text/data sections") \ _ELF_DEFINE_ODK(ODK_IDENT, 10, "ID information") \ -_ELF_DEFINE_ODK(ODK_PAGESIZE, 11, "page size infomation") +_ELF_DEFINE_ODK(ODK_PAGESIZE, 11, "page size information") #undef _ELF_DEFINE_ODK #define _ELF_DEFINE_ODK(N, V, DESCR) N = V , Modified: head/contrib/elftoolchain/cxxfilt/cxxfilt.c ============================================================================== --- head/contrib/elftoolchain/cxxfilt/cxxfilt.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/cxxfilt/cxxfilt.c Fri May 20 17:24:34 2016 (r300311) @@ -35,7 +35,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: cxxfilt.c 3356 2016-01-22 22:31:38Z jkoshy $"); +ELFTC_VCSID("$Id: cxxfilt.c 3454 2016-05-07 17:11:05Z kaiwang27 $"); #define STRBUFSZ 8192 @@ -112,35 +112,18 @@ find_format(const char *fstr) } static char * -demangle(char *name, int strict, size_t *pos) +demangle(char *name) { static char dem[STRBUFSZ]; - char nb[STRBUFSZ]; - size_t p, t; - if (stripus && *name == '_') { - strncpy(nb, name + 1, sizeof(nb) - 1); - t = 1; - } else { - strncpy(nb, name, sizeof(nb) - 1); - t = 0; - } - nb[sizeof(nb) - 1] = '\0'; + if (stripus && *name == '_') + name++; - p = strlen(nb); - if (p == 0) - return NULL; - - while (elftc_demangle(nb, dem, sizeof(dem), (unsigned) format) < 0) { - if (!strict && p > 1) { - nb[--p] = '\0'; - continue; - } else - return (NULL); - } + if (strlen(name) == 0) + return (NULL); - if (pos != NULL) - *pos = t ? p + 1 : p; + if (elftc_demangle(name, dem, sizeof(dem), (unsigned) format) < 0) + return (NULL); return (dem); } @@ -149,7 +132,7 @@ int main(int argc, char **argv) { char *dem, buf[STRBUFSZ]; - size_t i, p, s; + size_t p; int c, n, opt; while ((opt = getopt_long(argc, argv, "_nps:V", longopts, NULL)) != @@ -184,8 +167,8 @@ main(int argc, char **argv) if (*argv != NULL) { for (n = 0; n < argc; n++) { - if ((dem = demangle(argv[n], 1, NULL)) == NULL) - fprintf(stderr, "Failed: %s\n", argv[n]); + if ((dem = demangle(argv[n])) == NULL) + printf("%s\n", argv[n]); else printf("%s\n", dem); } @@ -193,23 +176,18 @@ main(int argc, char **argv) p = 0; for (;;) { c = fgetc(stdin); - if (c == EOF || !isprint(c) || strchr(" \t\n", c)) { + if (c == EOF || !(isalnum(c) || strchr(".$_", c))) { if (p > 0) { buf[p] = '\0'; - if ((dem = demangle(buf, 0, &s)) == - NULL) + if ((dem = demangle(buf)) == NULL) printf("%s", buf); - else { + else printf("%s", dem); - for (i = s; i < p; i++) - putchar(buf[i]); - } p = 0; } if (c == EOF) break; - if (isprint(c) || strchr(" \t\n", c)) - putchar(c); + putchar(c); } else { if ((size_t) p >= sizeof(buf) - 1) warnx("buffer overflowed"); Modified: head/contrib/elftoolchain/elfcopy/ascii.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/ascii.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/ascii.c Fri May 20 17:24:34 2016 (r300311) @@ -36,7 +36,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: ascii.c 3177 2015-03-30 18:19:41Z emaste $"); +ELFTC_VCSID("$Id: ascii.c 3446 2016-05-03 01:31:17Z emaste $"); static void append_data(struct section *s, const void *buf, size_t sz); static char hex_digit(uint8_t n); @@ -187,7 +187,7 @@ create_srec(struct elfcopy *ecp, int ifd if (elferr != 0) warnx("elf_nextscn failed: %s", elf_errmsg(elferr)); - /* Generate S{7,8,9} end of block recrod. */ + /* Generate S{7,8,9} end of block record. */ if (gelf_getehdr(e, &eh) == NULL) errx(EXIT_FAILURE, "gelf_getehdr() failed: %s", elf_errmsg(-1)); Modified: head/contrib/elftoolchain/elfcopy/binary.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/binary.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/binary.c Fri May 20 17:24:34 2016 (r300311) @@ -36,7 +36,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: binary.c 3270 2015-12-11 18:48:56Z emaste $"); +ELFTC_VCSID("$Id: binary.c 3445 2016-04-20 19:08:30Z emaste $"); /* * Convert ELF object to `binary'. Sections with SHF_ALLOC flag set Modified: head/contrib/elftoolchain/elfcopy/elfcopy.1 ============================================================================== --- head/contrib/elftoolchain/elfcopy/elfcopy.1 Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/elfcopy.1 Fri May 20 17:24:34 2016 (r300311) @@ -21,9 +21,9 @@ .\" out of the use of this software, even if advised of the possibility of .\" such damage. .\" -.\" $Id: elfcopy.1 3381 2016-01-30 19:39:47Z jkoshy $ +.\" $Id: elfcopy.1 3426 2016-03-05 13:32:28Z emaste $ .\" -.Dd January 29, 2016 +.Dd March 5, 2016 .Os .Dt ELFCOPY 1 .Sh NAME @@ -67,7 +67,10 @@ .Op Fl -change-section-vma Ar section Ns {+|-|=} Ns Ar val .Op Fl -extract-dwo .Op Fl -gap-fill Ns = Ns Ar val +.Op Fl -globalize-symbol Ns = Ns ar symbolname +.Op Fl -globalize-symbols Ns = Ns Ar filename .Op Fl -localize-hidden +.Op Fl -localize-symbols Ns = Ns Ar filename .Op Fl -no-adjust-warnings | Fl -no-change-warnings .Op Fl -only-keep-debug .Op Fl -pad-to Ns = Ns Ar address @@ -239,9 +242,21 @@ Copy only .dwo debug sections to the out Fill the gaps between sections with the byte value specified by the argument .Ar val . +.It Fl -globalize-symbol Ns = Ns Ar symbolname +Make the symbol named by argument +.Ar symbolname +global, so that it is visible outside of the file in which it is defined. +.It Fl -globalize-symbols Ns = Ns Ar filename +Make each symbol listed in the file specified by +.Ar filename +global. .It Fl -localize-hidden Make all hidden symbols local to the output file. This includes symbols with internal visiblity. +.It Fl -localize-symbols Ns = Ns Ar filename +Make each symbol listed in the file specified by +.Ar filename +local to the output file. .It Fl -no-adjust-warnings | Fl -no-change-warnings Do not issue a warning if the section specified by the options .Fl -change-section-address , Modified: head/contrib/elftoolchain/elfcopy/elfcopy.h ============================================================================== --- head/contrib/elftoolchain/elfcopy/elfcopy.h Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/elfcopy.h Fri May 20 17:24:34 2016 (r300311) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfcopy.h 3310 2016-01-10 09:10:54Z kaiwang27 $ + * $Id: elfcopy.h 3446 2016-05-03 01:31:17Z emaste $ */ #include @@ -178,7 +178,7 @@ struct elfcopy { Elftc_Bfd_Target_Flavor otf; /* flavour of output object */ const char *otgt; /* output target name */ int oec; /* elfclass of output object */ - unsigned char oed; /* endianess of output object */ + unsigned char oed; /* endianness of output object */ int oem; /* EM_XXX of output object */ int abi; /* OSABI of output object */ Elf *ein; /* ELF descriptor of input object */ @@ -238,7 +238,7 @@ struct elfcopy { uint64_t *secndx; /* section index map. */ uint64_t *symndx; /* symbol index map. */ unsigned char *v_rel; /* symbols needed by relocation. */ - unsigned char *v_grp; /* symbols refered by section group. */ + unsigned char *v_grp; /* symbols referred by section group. */ unsigned char *v_secsym; /* sections with section symbol. */ STAILQ_HEAD(, segment) v_seg; /* list of segments. */ STAILQ_HEAD(, sec_action) v_sac;/* list of section operations. */ Modified: head/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/main.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/main.c Fri May 20 17:24:34 2016 (r300311) @@ -39,7 +39,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: main.c 3399 2016-02-12 18:07:56Z emaste $"); +ELFTC_VCSID("$Id: main.c 3446 2016-05-03 01:31:17Z emaste $"); enum options { @@ -209,6 +209,7 @@ static struct { {"openbsd", ELFOSABI_OPENBSD}, {"openvms", ELFOSABI_OPENVMS}, {"nsk", ELFOSABI_NSK}, + {"cloudabi", ELFOSABI_CLOUDABI}, {"arm", ELFOSABI_ARM}, {"standalone", ELFOSABI_STANDALONE}, {NULL, 0} @@ -235,7 +236,7 @@ static void strip_main(struct elfcopy *e static void strip_usage(void); /* - * An ELF object usually has a sturcture described by the + * An ELF object usually has a structure described by the * diagram below. * _____________ * | | @@ -1446,7 +1447,7 @@ Usage: %s [options] infile [outfile]\n\ sections.\n\ --only-keep-debug Copy only debugging information.\n\ --output-target=FORMAT Use the specified format for the output.\n\ - --pad-to=ADDRESS Pad the output object upto the given address.\n\ + --pad-to=ADDRESS Pad the output object up to the given address.\n\ --prefix-alloc-sections=STRING\n\ Prefix the section names of all the allocated\n\ sections with STRING.\n\ Modified: head/contrib/elftoolchain/elfcopy/sections.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/sections.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/sections.c Fri May 20 17:24:34 2016 (r300311) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 3346 2016-01-17 20:09:15Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3443 2016-04-15 18:57:54Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); Modified: head/contrib/elftoolchain/elfcopy/segments.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/segments.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/segments.c Fri May 20 17:24:34 2016 (r300311) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: segments.c 3397 2016-02-12 14:35:19Z emaste $"); +ELFTC_VCSID("$Id: segments.c 3449 2016-05-03 13:59:29Z emaste $"); static void insert_to_inseg_list(struct segment *seg, struct section *sec); @@ -468,8 +468,7 @@ setup_phdr(struct elfcopy *ecp) { struct segment *seg; GElf_Phdr iphdr; - size_t iphnum; - int i; + size_t iphnum, i; if (elf_getphnum(ecp->ein, &iphnum) == 0) errx(EXIT_FAILURE, "elf_getphnum failed: %s", @@ -485,7 +484,7 @@ setup_phdr(struct elfcopy *ecp) return; } - for (i = 0; (size_t)i < iphnum; i++) { + for (i = 0; i < iphnum; i++) { if (gelf_getphdr(ecp->ein, i, &iphdr) != &iphdr) errx(EXIT_FAILURE, "gelf_getphdr failed: %s", elf_errmsg(-1)); Modified: head/contrib/elftoolchain/elfcopy/symbols.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/symbols.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfcopy/symbols.c Fri May 20 17:24:34 2016 (r300311) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: symbols.c 3376 2016-01-26 18:41:39Z emaste $"); +ELFTC_VCSID("$Id: symbols.c 3446 2016-05-03 01:31:17Z emaste $"); /* Backwards compatibility for systems with older ELF definitions. */ #ifndef STB_GNU_UNIQUE @@ -168,7 +168,7 @@ is_needed_symbol(struct elfcopy *ecp, in if (BIT_ISSET(ecp->v_rel, i)) return (1); - /* Symbols refered by COMDAT sections are needed. */ + /* Symbols referred by COMDAT sections are needed. */ if (BIT_ISSET(ecp->v_grp, i)) return (1); @@ -258,7 +258,7 @@ is_remove_symbol(struct elfcopy *ecp, si } /* - * Mark symbols refered by relocation entries. + * Mark symbols referred by relocation entries. */ static void mark_reloc_symbols(struct elfcopy *ecp, size_t sc) @@ -1165,7 +1165,7 @@ lookup_symop_list(struct elfcopy *ecp, c if ((s->op & op) == 0) continue; if (name == NULL || !strcmp(name, s->name)) - return (s); + return (s); if ((ecp->flags & WILDCARD) == 0) continue; Modified: head/contrib/elftoolchain/elfdump/elfdump.c ============================================================================== --- head/contrib/elftoolchain/elfdump/elfdump.c Fri May 20 16:20:08 2016 (r300310) +++ head/contrib/elftoolchain/elfdump/elfdump.c Fri May 20 17:24:34 2016 (r300311) @@ -50,7 +50,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: elfdump.c 3391 2016-02-05 19:43:01Z emaste $"); +ELFTC_VCSID("$Id: elfdump.c 3474 2016-05-17 20:44:53Z emaste $"); #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION) #include "native-elf-format.h" @@ -263,34 +263,99 @@ e_machines(unsigned int mach) return (machdesc); } -static const char *e_types[] = { - "ET_NONE", "ET_REL", "ET_EXEC", "ET_DYN", "ET_CORE" -}; +static const char * +elf_type_str(unsigned int type) +{ + static char s_type[32]; -static const char *ei_versions[] = { - "EV_NONE", "EV_CURRENT" -}; + switch (type) + { + case ET_NONE: return "ET_NONE"; + case ET_REL: return "ET_REL"; + case ET_EXEC: return "ET_EXEC"; + case ET_DYN: return "ET_DYN"; + case ET_CORE: return "ET_CORE"; + } + if (type >= ET_LOPROC) + snprintf(s_type, sizeof(s_type), "", type); + else if (type >= ET_LOOS && type <= ET_HIOS) + snprintf(s_type, sizeof(s_type), "", type); + else + snprintf(s_type, sizeof(s_type), "", ver); + return (s_ver); +} + +static const char * +elf_class_str(unsigned int class) +{ + static char s_class[32]; + + switch (class) { + case ELFCLASSNONE: return "ELFCLASSNONE"; + case ELFCLASS32: return "ELFCLASS32"; + case ELFCLASS64: return "ELFCLASS64"; + } + snprintf(s_class, sizeof(s_class), "", class); + return (s_class); +} + +static const char * +elf_data_str(unsigned int data) +{ + static char s_data[32]; + + switch (data) { + case ELFDATANONE: return "ELFDATANONE"; + case ELFDATA2LSB: return "ELFDATA2LSB"; + case ELFDATA2MSB: return "ELFDATA2MSB"; + } + snprintf(s_data, sizeof(s_data), "", data); + return (s_data); +} static const char *ei_abis[256] = { "ELFOSABI_NONE", "ELFOSABI_HPUX", "ELFOSABI_NETBSD", "ELFOSABI_LINUX", "ELFOSABI_HURD", "ELFOSABI_86OPEN", "ELFOSABI_SOLARIS", "ELFOSABI_AIX", "ELFOSABI_IRIX", "ELFOSABI_FREEBSD", "ELFOSABI_TRU64", "ELFOSABI_MODESTO", "ELFOSABI_OPENBSD", + [17] = "ELFOSABI_CLOUDABI", [255] = "ELFOSABI_STANDALONE" }; -static const char *p_types[] = { - "PT_NULL", "PT_LOAD", "PT_DYNAMIC", "PT_INTERP", "PT_NOTE", - "PT_SHLIB", "PT_PHDR", "PT_TLS" -}; +static const char * +elf_phdr_type_str(unsigned int type) +{ + static char s_type[32]; + + switch (type) { + case PT_NULL: return "PT_NULL"; + case PT_LOAD: return "PT_LOAD"; + case PT_DYNAMIC: return "PT_DYNAMIC"; + case PT_INTERP: return "PT_INTERP"; + case PT_NOTE: return "PT_NOTE"; + case PT_SHLIB: return "PT_SHLIB"; + case PT_PHDR: return "PT_PHDR"; + case PT_TLS: return "PT_TLS"; + case PT_GNU_EH_FRAME: return "PT_GNU_EH_FRAME"; + case PT_GNU_STACK: return "PT_GNU_STACK"; + case PT_GNU_RELRO: return "PT_GNU_RELRO"; + } + snprintf(s_type, sizeof(s_type), "", type); + return (s_type); +} static const char *p_flags[] = { "", "PF_X", "PF_W", "PF_X|PF_W", "PF_R", "PF_X|PF_R", "PF_W|PF_R", @@ -407,7 +472,8 @@ sh_types(uint64_t mach, uint64_t sht) { DEFINE_SHF(LINK_ORDER) \ DEFINE_SHF(OS_NONCONFORMING) \ DEFINE_SHF(GROUP) \ - DEFINE_SHF(TLS) + DEFINE_SHF(TLS) \ + DEFINE_SHF(COMPRESSED) #undef DEFINE_SHF #define DEFINE_SHF(F) "SHF_" #F "|" @@ -518,387 +584,6 @@ static unsigned char st_others[] = { 'D', 'I', 'H', 'P' }; -static const char * -r_type(unsigned int mach, unsigned int type) -{ - switch(mach) { - case EM_NONE: return ""; - case EM_386: - case EM_IAMCU: - switch(type) { - case 0: return "R_386_NONE"; - case 1: return "R_386_32"; - case 2: return "R_386_PC32"; - case 3: return "R_386_GOT32"; - case 4: return "R_386_PLT32"; - case 5: return "R_386_COPY"; - case 6: return "R_386_GLOB_DAT"; - case 7: return "R_386_JUMP_SLOT"; - case 8: return "R_386_RELATIVE"; - case 9: return "R_386_GOTOFF"; - case 10: return "R_386_GOTPC"; - case 14: return "R_386_TLS_TPOFF"; - case 15: return "R_386_TLS_IE"; - case 16: return "R_386_TLS_GOTIE"; - case 17: return "R_386_TLS_LE"; - case 18: return "R_386_TLS_GD"; - case 19: return "R_386_TLS_LDM"; - case 24: return "R_386_TLS_GD_32"; - case 25: return "R_386_TLS_GD_PUSH"; - case 26: return "R_386_TLS_GD_CALL"; - case 27: return "R_386_TLS_GD_POP"; - case 28: return "R_386_TLS_LDM_32"; - case 29: return "R_386_TLS_LDM_PUSH"; - case 30: return "R_386_TLS_LDM_CALL"; - case 31: return "R_386_TLS_LDM_POP"; - case 32: return "R_386_TLS_LDO_32"; - case 33: return "R_386_TLS_IE_32"; - case 34: return "R_386_TLS_LE_32"; - case 35: return "R_386_TLS_DTPMOD32"; - case 36: return "R_386_TLS_DTPOFF32"; - case 37: return "R_386_TLS_TPOFF32"; - default: return ""; - } - case EM_ARM: - switch(type) { - case 0: return "R_ARM_NONE"; - case 1: return "R_ARM_PC24"; - case 2: return "R_ARM_ABS32"; - case 3: return "R_ARM_REL32"; - case 4: return "R_ARM_PC13"; - case 5: return "R_ARM_ABS16"; - case 6: return "R_ARM_ABS12"; - case 7: return "R_ARM_THM_ABS5"; - case 8: return "R_ARM_ABS8"; - case 9: return "R_ARM_SBREL32"; - case 10: return "R_ARM_THM_PC22"; - case 11: return "R_ARM_THM_PC8"; - case 12: return "R_ARM_AMP_VCALL9"; - case 13: return "R_ARM_SWI24"; - case 14: return "R_ARM_THM_SWI8"; - case 15: return "R_ARM_XPC25"; - case 16: return "R_ARM_THM_XPC22"; - case 20: return "R_ARM_COPY"; - case 21: return "R_ARM_GLOB_DAT"; - case 22: return "R_ARM_JUMP_SLOT"; - case 23: return "R_ARM_RELATIVE"; - case 24: return "R_ARM_GOTOFF"; - case 25: return "R_ARM_GOTPC"; - case 26: return "R_ARM_GOT32"; - case 27: return "R_ARM_PLT32"; - case 100: return "R_ARM_GNU_VTENTRY"; - case 101: return "R_ARM_GNU_VTINHERIT"; - case 250: return "R_ARM_RSBREL32"; - case 251: return "R_ARM_THM_RPC22"; - case 252: return "R_ARM_RREL32"; - case 253: return "R_ARM_RABS32"; - case 254: return "R_ARM_RPC24"; - case 255: return "R_ARM_RBASE"; - default: return ""; - } - case EM_IA_64: - switch(type) { - case 0: return "R_IA_64_NONE"; - case 33: return "R_IA_64_IMM14"; - case 34: return "R_IA_64_IMM22"; - case 35: return "R_IA_64_IMM64"; - case 36: return "R_IA_64_DIR32MSB"; - case 37: return "R_IA_64_DIR32LSB"; - case 38: return "R_IA_64_DIR64MSB"; - case 39: return "R_IA_64_DIR64LSB"; - case 42: return "R_IA_64_GPREL22"; - case 43: return "R_IA_64_GPREL64I"; - case 44: return "R_IA_64_GPREL32MSB"; - case 45: return "R_IA_64_GPREL32LSB"; - case 46: return "R_IA_64_GPREL64MSB"; - case 47: return "R_IA_64_GPREL64LSB"; - case 50: return "R_IA_64_LTOFF22"; - case 51: return "R_IA_64_LTOFF64I"; - case 58: return "R_IA_64_PLTOFF22"; - case 59: return "R_IA_64_PLTOFF64I"; - case 62: return "R_IA_64_PLTOFF64MSB"; - case 63: return "R_IA_64_PLTOFF64LSB"; - case 67: return "R_IA_64_FPTR64I"; - case 68: return "R_IA_64_FPTR32MSB"; - case 69: return "R_IA_64_FPTR32LSB"; - case 70: return "R_IA_64_FPTR64MSB"; - case 71: return "R_IA_64_FPTR64LSB"; - case 72: return "R_IA_64_PCREL60B"; - case 73: return "R_IA_64_PCREL21B"; - case 74: return "R_IA_64_PCREL21M"; - case 75: return "R_IA_64_PCREL21F"; - case 76: return "R_IA_64_PCREL32MSB"; - case 77: return "R_IA_64_PCREL32LSB"; - case 78: return "R_IA_64_PCREL64MSB"; - case 79: return "R_IA_64_PCREL64LSB"; - case 82: return "R_IA_64_LTOFF_FPTR22"; - case 83: return "R_IA_64_LTOFF_FPTR64I"; - case 84: return "R_IA_64_LTOFF_FPTR32MSB"; - case 85: return "R_IA_64_LTOFF_FPTR32LSB"; - case 86: return "R_IA_64_LTOFF_FPTR64MSB"; - case 87: return "R_IA_64_LTOFF_FPTR64LSB"; - case 92: return "R_IA_64_SEGREL32MSB"; - case 93: return "R_IA_64_SEGREL32LSB"; - case 94: return "R_IA_64_SEGREL64MSB"; - case 95: return "R_IA_64_SEGREL64LSB"; - case 100: return "R_IA_64_SECREL32MSB"; - case 101: return "R_IA_64_SECREL32LSB"; - case 102: return "R_IA_64_SECREL64MSB"; - case 103: return "R_IA_64_SECREL64LSB"; - case 108: return "R_IA_64_REL32MSB"; - case 109: return "R_IA_64_REL32LSB"; - case 110: return "R_IA_64_REL64MSB"; - case 111: return "R_IA_64_REL64LSB"; - case 116: return "R_IA_64_LTV32MSB"; - case 117: return "R_IA_64_LTV32LSB"; - case 118: return "R_IA_64_LTV64MSB"; - case 119: return "R_IA_64_LTV64LSB"; - case 121: return "R_IA_64_PCREL21BI"; - case 122: return "R_IA_64_PCREL22"; - case 123: return "R_IA_64_PCREL64I"; - case 128: return "R_IA_64_IPLTMSB"; - case 129: return "R_IA_64_IPLTLSB"; - case 133: return "R_IA_64_SUB"; - case 134: return "R_IA_64_LTOFF22X"; - case 135: return "R_IA_64_LDXMOV"; - case 145: return "R_IA_64_TPREL14"; - case 146: return "R_IA_64_TPREL22"; - case 147: return "R_IA_64_TPREL64I"; - case 150: return "R_IA_64_TPREL64MSB"; - case 151: return "R_IA_64_TPREL64LSB"; - case 154: return "R_IA_64_LTOFF_TPREL22"; - case 166: return "R_IA_64_DTPMOD64MSB"; - case 167: return "R_IA_64_DTPMOD64LSB"; - case 170: return "R_IA_64_LTOFF_DTPMOD22"; - case 177: return "R_IA_64_DTPREL14"; - case 178: return "R_IA_64_DTPREL22"; - case 179: return "R_IA_64_DTPREL64I"; - case 180: return "R_IA_64_DTPREL32MSB"; - case 181: return "R_IA_64_DTPREL32LSB"; - case 182: return "R_IA_64_DTPREL64MSB"; - case 183: return "R_IA_64_DTPREL64LSB"; - case 186: return "R_IA_64_LTOFF_DTPREL22"; - default: return ""; - } - case EM_MIPS: - switch(type) { - case 0: return "R_MIPS_NONE"; - case 1: return "R_MIPS_16"; - case 2: return "R_MIPS_32"; - case 3: return "R_MIPS_REL32"; - case 4: return "R_MIPS_26"; - case 5: return "R_MIPS_HI16"; - case 6: return "R_MIPS_LO16"; - case 7: return "R_MIPS_GPREL16"; - case 8: return "R_MIPS_LITERAL"; - case 9: return "R_MIPS_GOT16"; - case 10: return "R_MIPS_PC16"; - case 11: return "R_MIPS_CALL16"; - case 12: return "R_MIPS_GPREL32"; - case 21: return "R_MIPS_GOTHI16"; - case 22: return "R_MIPS_GOTLO16"; - case 30: return "R_MIPS_CALLHI16"; - case 31: return "R_MIPS_CALLLO16"; - default: return ""; - } - case EM_PPC: - switch(type) { - case 0: return "R_PPC_NONE"; - case 1: return "R_PPC_ADDR32"; - case 2: return "R_PPC_ADDR24"; - case 3: return "R_PPC_ADDR16"; - case 4: return "R_PPC_ADDR16_LO"; - case 5: return "R_PPC_ADDR16_HI"; - case 6: return "R_PPC_ADDR16_HA"; - case 7: return "R_PPC_ADDR14"; - case 8: return "R_PPC_ADDR14_BRTAKEN"; - case 9: return "R_PPC_ADDR14_BRNTAKEN"; - case 10: return "R_PPC_REL24"; - case 11: return "R_PPC_REL14"; - case 12: return "R_PPC_REL14_BRTAKEN"; - case 13: return "R_PPC_REL14_BRNTAKEN"; - case 14: return "R_PPC_GOT16"; - case 15: return "R_PPC_GOT16_LO"; - case 16: return "R_PPC_GOT16_HI"; - case 17: return "R_PPC_GOT16_HA"; - case 18: return "R_PPC_PLTREL24"; - case 19: return "R_PPC_COPY"; - case 20: return "R_PPC_GLOB_DAT"; - case 21: return "R_PPC_JMP_SLOT"; - case 22: return "R_PPC_RELATIVE"; - case 23: return "R_PPC_LOCAL24PC"; - case 24: return "R_PPC_UADDR32"; - case 25: return "R_PPC_UADDR16"; - case 26: return "R_PPC_REL32"; - case 27: return "R_PPC_PLT32"; - case 28: return "R_PPC_PLTREL32"; - case 29: return "R_PPC_PLT16_LO"; - case 30: return "R_PPC_PLT16_HI"; - case 31: return "R_PPC_PLT16_HA"; - case 32: return "R_PPC_SDAREL16"; - case 33: return "R_PPC_SECTOFF"; - case 34: return "R_PPC_SECTOFF_LO"; - case 35: return "R_PPC_SECTOFF_HI"; - case 36: return "R_PPC_SECTOFF_HA"; - case 67: return "R_PPC_TLS"; - case 68: return "R_PPC_DTPMOD32"; - case 69: return "R_PPC_TPREL16"; - case 70: return "R_PPC_TPREL16_LO"; - case 71: return "R_PPC_TPREL16_HI"; - case 72: return "R_PPC_TPREL16_HA"; - case 73: return "R_PPC_TPREL32"; - case 74: return "R_PPC_DTPREL16"; - case 75: return "R_PPC_DTPREL16_LO"; - case 76: return "R_PPC_DTPREL16_HI"; - case 77: return "R_PPC_DTPREL16_HA"; - case 78: return "R_PPC_DTPREL32"; - case 79: return "R_PPC_GOT_TLSGD16"; - case 80: return "R_PPC_GOT_TLSGD16_LO"; - case 81: return "R_PPC_GOT_TLSGD16_HI"; - case 82: return "R_PPC_GOT_TLSGD16_HA"; - case 83: return "R_PPC_GOT_TLSLD16"; - case 84: return "R_PPC_GOT_TLSLD16_LO"; - case 85: return "R_PPC_GOT_TLSLD16_HI"; - case 86: return "R_PPC_GOT_TLSLD16_HA"; - case 87: return "R_PPC_GOT_TPREL16"; - case 88: return "R_PPC_GOT_TPREL16_LO"; - case 89: return "R_PPC_GOT_TPREL16_HI"; - case 90: return "R_PPC_GOT_TPREL16_HA"; - case 101: return "R_PPC_EMB_NADDR32"; - case 102: return "R_PPC_EMB_NADDR16"; - case 103: return "R_PPC_EMB_NADDR16_LO"; - case 104: return "R_PPC_EMB_NADDR16_HI"; - case 105: return "R_PPC_EMB_NADDR16_HA"; - case 106: return "R_PPC_EMB_SDAI16"; - case 107: return "R_PPC_EMB_SDA2I16"; - case 108: return "R_PPC_EMB_SDA2REL"; - case 109: return "R_PPC_EMB_SDA21"; - case 110: return "R_PPC_EMB_MRKREF"; - case 111: return "R_PPC_EMB_RELSEC16"; - case 112: return "R_PPC_EMB_RELST_LO"; - case 113: return "R_PPC_EMB_RELST_HI"; - case 114: return "R_PPC_EMB_RELST_HA"; - case 115: return "R_PPC_EMB_BIT_FLD"; - case 116: return "R_PPC_EMB_RELSDA"; - default: return ""; - } - case EM_SPARC: - case EM_SPARCV9: - switch(type) { - case 0: return "R_SPARC_NONE"; - case 1: return "R_SPARC_8"; - case 2: return "R_SPARC_16"; - case 3: return "R_SPARC_32"; - case 4: return "R_SPARC_DISP8"; - case 5: return "R_SPARC_DISP16"; - case 6: return "R_SPARC_DISP32"; - case 7: return "R_SPARC_WDISP30"; - case 8: return "R_SPARC_WDISP22"; - case 9: return "R_SPARC_HI22"; - case 10: return "R_SPARC_22"; - case 11: return "R_SPARC_13"; - case 12: return "R_SPARC_LO10"; - case 13: return "R_SPARC_GOT10"; - case 14: return "R_SPARC_GOT13"; - case 15: return "R_SPARC_GOT22"; - case 16: return "R_SPARC_PC10"; - case 17: return "R_SPARC_PC22"; - case 18: return "R_SPARC_WPLT30"; - case 19: return "R_SPARC_COPY"; - case 20: return "R_SPARC_GLOB_DAT"; - case 21: return "R_SPARC_JMP_SLOT"; - case 22: return "R_SPARC_RELATIVE"; - case 23: return "R_SPARC_UA32"; - case 24: return "R_SPARC_PLT32"; - case 25: return "R_SPARC_HIPLT22"; - case 26: return "R_SPARC_LOPLT10"; - case 27: return "R_SPARC_PCPLT32"; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***