From 030d839f9a8a17e690ff9065c3c01533fc341f0e Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 26 Feb 2014 10:31:10 +0100 Subject: update minimum kernel --- toolchain/eglibc/Makefile.inc | 2 +- toolchain/glibc/Makefile.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'toolchain') diff --git a/toolchain/eglibc/Makefile.inc b/toolchain/eglibc/Makefile.inc index abb6879c3..1ac72ef54 100644 --- a/toolchain/eglibc/Makefile.inc +++ b/toolchain/eglibc/Makefile.inc @@ -10,7 +10,7 @@ EGLIBC_CONFOPTS:= --build=$(GNU_HOST_NAME) \ --without-cvs \ --disable-profile \ --disable-debug \ - --enable-kernel=2.6.0 \ + --enable-kernel=2.6.32 \ --without-gd \ --disable-nscd \ --with-__thread \ diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc index 4a34c9d18..e28405643 100644 --- a/toolchain/glibc/Makefile.inc +++ b/toolchain/glibc/Makefile.inc @@ -18,7 +18,7 @@ GLIBC_CONFOPTS:= --build=$(GNU_HOST_NAME) \ --disable-nscd \ --with-__thread \ --with-tls \ - --enable-kernel="2.6.0" \ + --enable-kernel="2.6.32" \ --enable-add-ons GLIBC_ENV:= PATH='${TARGET_PATH}' \ BUILD_CC=${CC_FOR_BUILD} \ -- cgit v1.2.3 From b921ce431d9cea2420fb3a14080e1ca386387dff Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 26 Feb 2014 17:42:46 +0100 Subject: update kernel 3.4.x, fixes for lemote yeelong users --- toolchain/gcc/Makefile | 6 +- .../kernel-headers/patches/3.4.71/aufs2.patch | 238 -- .../patches/3.4.71/linux-gcc-check.patch | 18 - .../kernel-headers/patches/3.4.71/microperl.patch | 24 - .../kernel-headers/patches/3.4.71/mkpiggy.patch | 28 - .../kernel-headers/patches/3.4.71/relocs.patch | 3131 -------------------- .../kernel-headers/patches/3.4.82/aufs2.patch | 238 ++ .../patches/3.4.82/linux-gcc-check.patch | 18 + .../kernel-headers/patches/3.4.82/microperl.patch | 24 + .../kernel-headers/patches/3.4.82/mkpiggy.patch | 28 + .../kernel-headers/patches/3.4.82/relocs.patch | 3131 ++++++++++++++++++++ 11 files changed, 3443 insertions(+), 3441 deletions(-) delete mode 100644 toolchain/kernel-headers/patches/3.4.71/aufs2.patch delete mode 100644 toolchain/kernel-headers/patches/3.4.71/linux-gcc-check.patch delete mode 100644 toolchain/kernel-headers/patches/3.4.71/microperl.patch delete mode 100644 toolchain/kernel-headers/patches/3.4.71/mkpiggy.patch delete mode 100644 toolchain/kernel-headers/patches/3.4.71/relocs.patch create mode 100644 toolchain/kernel-headers/patches/3.4.82/aufs2.patch create mode 100644 toolchain/kernel-headers/patches/3.4.82/linux-gcc-check.patch create mode 100644 toolchain/kernel-headers/patches/3.4.82/microperl.patch create mode 100644 toolchain/kernel-headers/patches/3.4.82/mkpiggy.patch create mode 100644 toolchain/kernel-headers/patches/3.4.82/relocs.patch (limited to 'toolchain') diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 32710c9bd..3d408c17c 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -209,10 +209,12 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled # fix linking g++ apps with libtool @-test -d $(STAGING_TARGET_DIR)/lib32 && \ cd $(STAGING_TARGET_DIR)/lib32 && \ - ln -sf libstdc++.so.6.0.17 libstdc++.so + ln -sf libstdc++.so.6.0.17 libstdc++.so && \ + ln -sf libstdc++.so.6.0.17 libstdc++.so.6 @-test -d $(STAGING_TARGET_DIR)/lib64 && \ cd $(STAGING_TARGET_DIR)/lib64 && \ - ln -sf libstdc++.so.6.0.17 libstdc++.so + ln -sf libstdc++.so.6.0.17 libstdc++.so && \ + ln -sf libstdc++.so.6.0.17 libstdc++.so.6 # cleanup unneeded docs rm -rf $(STAGING_HOST_DIR)/share touch $@ diff --git a/toolchain/kernel-headers/patches/3.4.71/aufs2.patch b/toolchain/kernel-headers/patches/3.4.71/aufs2.patch deleted file mode 100644 index d40c9a3fe..000000000 --- a/toolchain/kernel-headers/patches/3.4.71/aufs2.patch +++ /dev/null @@ -1,238 +0,0 @@ -diff -Nur linux-3.1.4.orig/include/linux/Kbuild linux-3.1.4/include/linux/Kbuild ---- linux-3.1.4.orig/include/linux/Kbuild 2011-11-28 23:48:14.000000000 +0100 -+++ linux-3.1.4/include/linux/Kbuild 2011-12-01 12:44:17.000000000 +0100 -@@ -65,6 +65,7 @@ - header-y += atmsap.h - header-y += atmsvc.h - header-y += audit.h -+header-y += aufs_type.h - header-y += auto_fs.h - header-y += auto_fs4.h - header-y += auxvec.h -diff -Nur linux-3.1.4.orig/include/linux/aufs_type.h linux-3.1.4/include/linux/aufs_type.h ---- linux-3.1.4.orig/include/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-3.1.4/include/linux/aufs_type.h 2011-12-01 12:44:17.000000000 +0100 -@@ -0,0 +1,197 @@ -+/* -+ * Copyright (C) 2005-2011 Junjiro R. Okajima -+ * -+ * This program, aufs is free software; you can redistribute it and/or modify -+ * it under the terms of 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. -+ * -+ * This program 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 a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef __AUFS_TYPE_H__ -+#define __AUFS_TYPE_H__ -+ -+#include -+#include -+#include -+#include -+ -+#define AUFS_VERSION "2.1-standalone.tree-36-20110110" -+ -+/* todo? move this to linux-2.6.19/include/magic.h */ -+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') -+ -+/* ---------------------------------------------------------------------- */ -+ -+#ifdef CONFIG_AUFS_BRANCH_MAX_127 -+typedef __s8 aufs_bindex_t; -+#define AUFS_BRANCH_MAX 127 -+#else -+typedef __s16 aufs_bindex_t; -+#ifdef CONFIG_AUFS_BRANCH_MAX_511 -+#define AUFS_BRANCH_MAX 511 -+#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) -+#define AUFS_BRANCH_MAX 1023 -+#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) -+#define AUFS_BRANCH_MAX 32767 -+#endif -+#endif -+ -+#ifdef __KERNEL__ -+#ifndef AUFS_BRANCH_MAX -+#error unknown CONFIG_AUFS_BRANCH_MAX value -+#endif -+#endif /* __KERNEL__ */ -+ -+/* ---------------------------------------------------------------------- */ -+ -+#define AUFS_NAME "aufs" -+#define AUFS_FSTYPE AUFS_NAME -+ -+#define AUFS_ROOT_INO 2 -+#define AUFS_FIRST_INO 11 -+ -+#define AUFS_WH_PFX ".wh." -+#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) -+#define AUFS_WH_TMP_LEN 4 -+/* a limit for rmdir/rename a dir */ -+#define AUFS_MAX_NAMELEN (NAME_MAX \ -+ - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ -+ - 1 /* dot */\ -+ - AUFS_WH_TMP_LEN) /* hex */ -+#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" -+#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME -+#define AUFS_XINO_TRUNC_INIT 64 /* blocks */ -+#define AUFS_XINO_TRUNC_STEP 4 /* blocks */ -+#define AUFS_DIRWH_DEF 3 -+#define AUFS_RDCACHE_DEF 10 /* seconds */ -+#define AUFS_RDCACHE_MAX 3600 /* seconds */ -+#define AUFS_RDBLK_DEF 512 /* bytes */ -+#define AUFS_RDHASH_DEF 32 -+#define AUFS_WKQ_NAME AUFS_NAME "d" -+#define AUFS_WKQ_PRE_NAME AUFS_WKQ_NAME "_pre" -+#define AUFS_MFS_DEF_SEC 30 /* seconds */ -+#define AUFS_MFS_MAX_SEC 3600 /* seconds */ -+#define AUFS_PLINK_WARN 100 /* number of plinks */ -+ -+/* pseudo-link maintenace under /proc */ -+#define AUFS_PLINK_MAINT_NAME "plink_maint" -+#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME -+#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME -+ -+#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ -+#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME -+ -+#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME -+#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" -+#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" -+ -+/* doubly whiteouted */ -+#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME -+#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME -+#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME -+ -+/* branch permission */ -+#define AUFS_BRPERM_RW "rw" -+#define AUFS_BRPERM_RO "ro" -+#define AUFS_BRPERM_RR "rr" -+#define AUFS_BRPERM_WH "wh" -+#define AUFS_BRPERM_NLWH "nolwh" -+#define AUFS_BRPERM_ROWH AUFS_BRPERM_RO "+" AUFS_BRPERM_WH -+#define AUFS_BRPERM_RRWH AUFS_BRPERM_RR "+" AUFS_BRPERM_WH -+#define AUFS_BRPERM_RWNLWH AUFS_BRPERM_RW "+" AUFS_BRPERM_NLWH -+ -+/* ---------------------------------------------------------------------- */ -+ -+/* ioctl */ -+enum { -+ /* readdir in userspace */ -+ AuCtl_RDU, -+ AuCtl_RDU_INO, -+ -+ /* pathconf wrapper */ -+ AuCtl_WBR_FD -+}; -+ -+/* borrowed from linux/include/linux/kernel.h */ -+#ifndef ALIGN -+#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) -+#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) -+#endif -+ -+/* borrowed from linux/include/linux/compiler-gcc3.h */ -+#ifndef __aligned -+#define __aligned(x) __attribute__((aligned(x))) -+#define __packed __attribute__((packed)) -+#endif -+ -+struct au_rdu_cookie { -+ __u64 h_pos; -+ __s16 bindex; -+ __u8 flags; -+ __u8 pad; -+ __u32 generation; -+} __aligned(8); -+ -+struct au_rdu_ent { -+ __u64 ino; -+ __s16 bindex; -+ __u8 type; -+ __u8 nlen; -+ __u8 wh; -+ char name[0]; -+} __aligned(8); -+ -+static inline int au_rdu_len(int nlen) -+{ -+ /* include the terminating NULL */ -+ return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, -+ sizeof(__u64)); -+} -+ -+union au_rdu_ent_ul { -+ struct au_rdu_ent __user *e; -+ __u64 ul; -+}; -+ -+enum { -+ AufsCtlRduV_SZ, -+ AufsCtlRduV_End -+}; -+ -+struct aufs_rdu { -+ /* input */ -+ union { -+ __u64 sz; /* AuCtl_RDU */ -+ __u64 nent; /* AuCtl_RDU_INO */ -+ }; -+ union au_rdu_ent_ul ent; -+ __u16 verify[AufsCtlRduV_End]; -+ -+ /* input/output */ -+ __u32 blk; -+ -+ /* output */ -+ union au_rdu_ent_ul tail; -+ /* number of entries which were added in a single call */ -+ __u64 rent; -+ __u8 full; -+ __u8 shwh; -+ -+ struct au_rdu_cookie cookie; -+} __aligned(8); -+ -+#define AuCtlType 'A' -+#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) -+#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) -+#define AUFS_CTL_WBR_FD _IO(AuCtlType, AuCtl_WBR_FD) -+ -+#endif /* __AUFS_TYPE_H__ */ -diff -Nur linux-3.1.4.orig/include/linux/namei.h linux-3.1.4/include/linux/namei.h ---- linux-3.1.4.orig/include/linux/namei.h 2011-11-28 23:48:14.000000000 +0100 -+++ linux-3.1.4/include/linux/namei.h 2011-12-01 12:44:17.000000000 +0100 -@@ -85,6 +85,9 @@ - extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, - int (*open)(struct inode *, struct file *)); - -+extern struct dentry *lookup_hash(struct nameidata *nd); -+extern int __lookup_one_len(const char *name, struct qstr *this, -+ struct dentry *base, int len); - extern struct dentry *lookup_one_len(const char *, struct dentry *, int); - - extern int follow_down_one(struct path *); -diff -Nur linux-3.1.4.orig/include/linux/splice.h linux-3.1.4/include/linux/splice.h ---- linux-3.1.4.orig/include/linux/splice.h 2011-11-28 23:48:14.000000000 +0100 -+++ linux-3.1.4/include/linux/splice.h 2011-12-01 12:45:51.000000000 +0100 -@@ -91,4 +91,9 @@ - extern void spd_release_page(struct splice_pipe_desc *, unsigned int); - - extern const struct pipe_buf_operations page_cache_pipe_buf_ops; -+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, -+ loff_t *ppos, size_t len, unsigned int flags); -+extern long do_splice_to(struct file *in, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, -+ unsigned int flags); - #endif diff --git a/toolchain/kernel-headers/patches/3.4.71/linux-gcc-check.patch b/toolchain/kernel-headers/patches/3.4.71/linux-gcc-check.patch deleted file mode 100644 index 7cc381845..000000000 --- a/toolchain/kernel-headers/patches/3.4.71/linux-gcc-check.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -Nur linux-2.6.32.orig/arch/mips/include/asm/sgidefs.h linux-2.6.32/arch/mips/include/asm/sgidefs.h ---- linux-2.6.32.orig/arch/mips/include/asm/sgidefs.h 2009-12-03 04:51:21.000000000 +0100 -+++ linux-2.6.32/arch/mips/include/asm/sgidefs.h 2010-02-14 11:49:21.000000000 +0100 -@@ -11,14 +11,6 @@ - #define __ASM_SGIDEFS_H - - /* -- * Using a Linux compiler for building Linux seems logic but not to -- * everybody. -- */ --#ifndef __linux__ --#error Use a Linux compiler or give up. --#endif -- --/* - * Definitions for the ISA levels - * - * With the introduction of MIPS32 / MIPS64 instruction sets definitions diff --git a/toolchain/kernel-headers/patches/3.4.71/microperl.patch b/toolchain/kernel-headers/patches/3.4.71/microperl.patch deleted file mode 100644 index 44c39f6e8..000000000 --- a/toolchain/kernel-headers/patches/3.4.71/microperl.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -Nur linux-3.4.2.orig/scripts/headers_check.pl linux-3.4.2/scripts/headers_check.pl ---- linux-3.4.2.orig/scripts/headers_check.pl 2012-06-09 17:36:33.000000000 +0200 -+++ linux-3.4.2/scripts/headers_check.pl 2012-06-15 12:45:43.000000000 +0200 -@@ -18,7 +18,7 @@ - # - # 3) Check for leaked CONFIG_ symbols - --use strict; -+#use strict; - use File::Basename; - - my ($dir, $arch, @files) = @ARGV; -diff -Nur linux-3.4.2.orig/scripts/headers_install.pl linux-3.4.2/scripts/headers_install.pl ---- linux-3.4.2.orig/scripts/headers_install.pl 2012-06-09 17:36:33.000000000 +0200 -+++ linux-3.4.2/scripts/headers_install.pl 2012-06-15 12:45:11.000000000 +0200 -@@ -16,7 +16,7 @@ - # 2) Drop include of compiler.h - # 3) Drop all sections defined out by __KERNEL__ (using unifdef) - --use strict; -+#use strict; - - my ($readdir, $installdir, $arch, @files) = @ARGV; - diff --git a/toolchain/kernel-headers/patches/3.4.71/mkpiggy.patch b/toolchain/kernel-headers/patches/3.4.71/mkpiggy.patch deleted file mode 100644 index d4e815cd2..000000000 --- a/toolchain/kernel-headers/patches/3.4.71/mkpiggy.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -Nur linux-3.4.4.orig/arch/x86/boot/compressed/mkpiggy.c linux-3.4.4/arch/x86/boot/compressed/mkpiggy.c ---- linux-3.4.4.orig/arch/x86/boot/compressed/mkpiggy.c 2012-06-22 20:37:50.000000000 +0200 -+++ linux-3.4.4/arch/x86/boot/compressed/mkpiggy.c 2012-07-03 09:48:02.000000000 +0200 -@@ -29,7 +29,14 @@ - #include - #include - #include --#include -+ -+static uint32_t getle32(const void *p) -+{ -+ const uint8_t *cp = p; -+ -+ return (uint32_t)cp[0] + ((uint32_t)cp[1] << 8) + -+ ((uint32_t)cp[2] << 16) + ((uint32_t)cp[3] << 24); -+} - - int main(int argc, char *argv[]) - { -@@ -62,7 +69,7 @@ - } - - ilen = ftell(f); -- olen = get_unaligned_le32(&olen); -+ olen = getle32(&olen); - fclose(f); - - /* diff --git a/toolchain/kernel-headers/patches/3.4.71/relocs.patch b/toolchain/kernel-headers/patches/3.4.71/relocs.patch deleted file mode 100644 index 43c5bb580..000000000 --- a/toolchain/kernel-headers/patches/3.4.71/relocs.patch +++ /dev/null @@ -1,3131 +0,0 @@ -diff -Nur linux-3.4.4.orig/arch/x86/tools/relocs.c linux-3.4.4/arch/x86/tools/relocs.c ---- linux-3.4.4.orig/arch/x86/tools/relocs.c 2012-06-22 20:37:50.000000000 +0200 -+++ linux-3.4.4/arch/x86/tools/relocs.c 2012-07-03 09:19:18.000000000 +0200 -@@ -5,12 +5,3123 @@ - #include - #include - #include --#include --#include -+//#include -+//#include - #define USE_BSD --#include -+//#include - #include --#include -+//#include -+ -+static inline void __put_unaligned_le16(int val, int *p) -+{ -+ *p++ = val; -+ *p++ = val >> 8; -+} -+ -+static inline void __put_unaligned_le32(int val, int *p) -+{ -+ __put_unaligned_le16(val >> 16, p + 2); -+ __put_unaligned_le16(val, p); -+} -+ -+static inline void __put_unaligned_le64(int val, int *p) -+{ -+ __put_unaligned_le32(val >> 32, p + 4); -+ __put_unaligned_le32(val, p); -+} -+ -+static inline void put_unaligned_le16(int val, void *p) -+{ -+ __put_unaligned_le16(val, p); -+} -+ -+static inline void put_unaligned_le32(int val, void *p) -+{ -+ __put_unaligned_le32(val, p); -+} -+ -+static inline void put_unaligned_le64(int val, void *p) -+{ -+ __put_unaligned_le64(val, p); -+} -+ -+/* Type for a 16-bit quantity. */ -+typedef uint16_t Elf32_Half; -+typedef uint16_t Elf64_Half; -+ -+/* Types for signed and unsigned 32-bit quantities. */ -+typedef uint32_t Elf32_Word; -+typedef int32_t Elf32_Sword; -+typedef uint32_t Elf64_Word; -+typedef int32_t Elf64_Sword; -+ -+/* Types for signed and unsigned 64-bit quantities. */ -+typedef uint64_t Elf32_Xword; -+typedef int64_t Elf32_Sxword; -+typedef uint64_t Elf64_Xword; -+typedef int64_t Elf64_Sxword; -+ -+/* Type of addresses. */ -+typedef uint32_t Elf32_Addr; -+typedef uint64_t Elf64_Addr; -+ -+/* Type of file offsets. */ -+typedef uint32_t Elf32_Off; -+typedef uint64_t Elf64_Off; -+ -+/* Type for section indices, which are 16-bit quantities. */ -+typedef uint16_t Elf32_Section; -+typedef uint16_t Elf64_Section; -+ -+/* Type for version symbol information. */ -+typedef Elf32_Half Elf32_Versym; -+typedef Elf64_Half Elf64_Versym; -+ -+ -+/* The ELF file header. This appears at the start of every ELF file. */ -+ -+#define EI_NIDENT (16) -+ -+typedef struct -+{ -+ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ -+ Elf32_Half e_type; /* Object file type */ -+ Elf32_Half e_machine; /* Architecture */ -+ Elf32_Word e_version; /* Object file version */ -+ Elf32_Addr e_entry; /* Entry point virtual address */ -+ Elf32_Off e_phoff; /* Program header table file offset */ -+ Elf32_Off e_shoff; /* Section header table file offset */ -+ Elf32_Word e_flags; /* Processor-specific flags */ -+ Elf32_Half e_ehsize; /* ELF header size in bytes */ -+ Elf32_Half e_phentsize; /* Program header table entry size */ -+ Elf32_Half e_phnum; /* Program header table entry count */ -+ Elf32_Half e_shentsize; /* Section header table entry size */ -+ Elf32_Half e_shnum; /* Section header table entry count */ -+ Elf32_Half e_shstrndx; /* Section header string table index */ -+} Elf32_Ehdr; -+ -+typedef struct -+{ -+ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ -+ Elf64_Half e_type; /* Object file type */ -+ Elf64_Half e_machine; /* Architecture */ -+ Elf64_Word e_version; /* Object file version */ -+ Elf64_Addr e_entry; /* Entry point virtual address */ -+ Elf64_Off e_phoff; /* Program header table file offset */ -+ Elf64_Off e_shoff; /* Section header table file offset */ -+ Elf64_Word e_flags; /* Processor-specific flags */ -+ Elf64_Half e_ehsize; /* ELF header size in bytes */ -+ Elf64_Half e_phentsize; /* Program header table entry size */ -+ Elf64_Half e_phnum; /* Program header table entry count */ -+ Elf64_Half e_shentsize; /* Section header table entry size */ -+ Elf64_Half e_shnum; /* Section header table entry count */ -+ Elf64_Half e_shstrndx; /* Section header string table index */ -+} Elf64_Ehdr; -+ -+/* Fields in the e_ident array. The EI_* macros are indices into the -+ array. The macros under each EI_* macro are the values the byte -+ may have. */ -+ -+#define EI_MAG0 0 /* File identification byte 0 index */ -+#define ELFMAG0 0x7f /* Magic number byte 0 */ -+ -+#define EI_MAG1 1 /* File identification byte 1 index */ -+#define ELFMAG1 'E' /* Magic number byte 1 */ -+ -+#define EI_MAG2 2 /* File identification byte 2 index */ -+#define ELFMAG2 'L' /* Magic number byte 2 */ -+ -+#define EI_MAG3 3 /* File identification byte 3 index */ -+#define ELFMAG3 'F' /* Magic number byte 3 */ -+ -+/* Conglomeration of the identification bytes, for easy testing as a word. */ -+#define ELFMAG "\177ELF" -+#define SELFMAG 4 -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+# define ELFMAG_U32 ((uint32_t)(ELFMAG0 + 0x100 * (ELFMAG1 + (0x100 * (ELFMAG2 + 0x100 * ELFMAG3))))) -+#elif __BYTE_ORDER == __BIG_ENDIAN -+# define ELFMAG_U32 ((uint32_t)((((ELFMAG0 * 0x100) + ELFMAG1) * 0x100 + ELFMAG2) * 0x100 + ELFMAG3)) -+#endif -+ -+#define EI_CLASS 4 /* File class byte index */ -+#define ELFCLASSNONE 0 /* Invalid class */ -+#define ELFCLASS32 1 /* 32-bit objects */ -+#define ELFCLASS64 2 /* 64-bit objects */ -+#define ELFCLASSNUM 3 -+ -+#define EI_DATA 5 /* Data encoding byte index */ -+#define ELFDATANONE 0 /* Invalid data encoding */ -+#define ELFDATA2LSB 1 /* 2's complement, little endian */ -+#define ELFDATA2MSB 2 /* 2's complement, big endian */ -+#define ELFDATANUM 3 -+ -+#define EI_VERSION 6 /* File version byte index */ -+ /* Value must be EV_CURRENT */ -+ -+#define EI_OSABI 7 /* OS ABI identification */ -+#define ELFOSABI_NONE 0 /* UNIX System V ABI */ -+#define ELFOSABI_SYSV 0 /* Alias. */ -+#define ELFOSABI_HPUX 1 /* HP-UX */ -+#define ELFOSABI_NETBSD 2 /* NetBSD. */ -+#define ELFOSABI_LINUX 3 /* Linux. */ -+#define ELFOSABI_HURD 4 /* GNU/Hurd */ -+#define ELFOSABI_SOLARIS 6 /* Sun Solaris. */ -+#define ELFOSABI_AIX 7 /* IBM AIX. */ -+#define ELFOSABI_IRIX 8 /* SGI Irix. */ -+#define ELFOSABI_FREEBSD 9 /* FreeBSD. */ -+#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX. */ -+#define ELFOSABI_MODESTO 11 /* Novell Modesto. */ -+#define ELFOSABI_OPENBSD 12 /* OpenBSD. */ -+#define ELFOSABI_OPENVMS 13 /* OpenVMS */ -+#define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ -+#define ELFOSABI_AROS 15 /* Amiga Research OS */ -+#define ELFOSABI_ARM 97 /* ARM */ -+#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ -+ -+#define EI_ABIVERSION 8 /* ABI version */ -+ -+#define EI_PAD 9 /* Byte index of padding bytes */ -+ -+/* Legal values for e_type (object file type). */ -+ -+#define ET_NONE 0 /* No file type */ -+#define ET_REL 1 /* Relocatable file */ -+#define ET_EXEC 2 /* Executable file */ -+#define ET_DYN 3 /* Shared object file */ -+#define ET_CORE 4 /* Core file */ -+#define ET_NUM 5 /* Number of defined types */ -+#define ET_LOOS 0xfe00 /* OS-specific range start */ -+#define ET_HIOS 0xfeff /* OS-specific range end */ -+#define ET_LOPROC 0xff00 /* Processor-specific range start */ -+#define ET_HIPROC 0xffff /* Processor-specific range end */ -+ -+/* Legal values for e_machine (architecture). */ -+ -+#define EM_NONE 0 /* No machine */ -+#define EM_M32 1 /* AT&T WE 32100 */ -+#define EM_SPARC 2 /* SUN SPARC */ -+#define EM_386 3 /* Intel 80386 */ -+#define EM_68K 4 /* Motorola m68k family */ -+#define EM_88K 5 /* Motorola m88k family */ -+#define EM_486 6 /* Intel 80486 *//* Reserved for future use */ -+#define EM_860 7 /* Intel 80860 */ -+#define EM_MIPS 8 /* MIPS R3000 big-endian */ -+#define EM_S370 9 /* IBM System/370 */ -+#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */ -+ -+#define EM_PARISC 15 /* HPPA */ -+#define EM_VPP500 17 /* Fujitsu VPP500 */ -+#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ -+#define EM_960 19 /* Intel 80960 */ -+#define EM_PPC 20 /* PowerPC */ -+#define EM_PPC64 21 /* PowerPC 64-bit */ -+#define EM_S390 22 /* IBM S390 */ -+ -+#define EM_V800 36 /* NEC V800 series */ -+#define EM_FR20 37 /* Fujitsu FR20 */ -+#define EM_RH32 38 /* TRW RH-32 */ -+#define EM_MCORE 39 /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */ -+#define EM_RCE 39 /* Old name for MCore */ -+#define EM_ARM 40 /* ARM */ -+#define EM_FAKE_ALPHA 41 /* Digital Alpha */ -+#define EM_SH 42 /* Renesas SH */ -+#define EM_SPARCV9 43 /* SPARC v9 64-bit */ -+#define EM_TRICORE 44 /* Siemens Tricore */ -+#define EM_ARC 45 /* Argonaut RISC Core */ -+#define EM_H8_300 46 /* Renesas H8/300 */ -+#define EM_H8_300H 47 /* Renesas H8/300H */ -+#define EM_H8S 48 /* Renesas H8S */ -+#define EM_H8_500 49 /* Renesas H8/500 */ -+#define EM_IA_64 50 /* Intel Merced */ -+#define EM_MIPS_X 51 /* Stanford MIPS-X */ -+#define EM_COLDFIRE 52 /* Motorola Coldfire */ -+#define EM_68HC12 53 /* Motorola M68HC12 */ -+#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/ -+#define EM_PCP 55 /* Siemens PCP */ -+#define EM_NCPU 56 /* Sony nCPU embeeded RISC */ -+#define EM_NDR1 57 /* Denso NDR1 microprocessor */ -+#define EM_STARCORE 58 /* Motorola Start*Core processor */ -+#define EM_ME16 59 /* Toyota ME16 processor */ -+#define EM_ST100 60 /* STMicroelectronic ST100 processor */ -+#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/ -+#define EM_X86_64 62 /* AMD x86-64 architecture */ -+#define EM_PDSP 63 /* Sony DSP Processor */ -+ -+#define EM_FX66 66 /* Siemens FX66 microcontroller */ -+#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */ -+#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */ -+#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */ -+#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */ -+#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */ -+#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */ -+#define EM_SVX 73 /* Silicon Graphics SVx */ -+#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */ -+#define EM_VAX 75 /* Digital VAX */ -+#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */ -+#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded processor */ -+#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */ -+#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */ -+#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */ -+#define EM_HUANY 81 /* Harvard University machine-independent object files */ -+#define EM_PRISM 82 /* SiTera Prism */ -+#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ -+#define EM_FR30 84 /* Fujitsu FR30 */ -+#define EM_D10V 85 /* Mitsubishi D10V */ -+#define EM_D30V 86 /* Mitsubishi D30V */ -+#define EM_V850 87 /* NEC v850 */ -+#define EM_M32R 88 /* Renesas M32R */ -+#define EM_MN10300 89 /* Matsushita MN10300 */ -+#define EM_MN10200 90 /* Matsushita MN10200 */ -+#define EM_PJ 91 /* picoJava */ -+#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ -+#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ -+#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ -+#define EM_IP2K 101 /* Ubicom IP2022 micro controller */ -+#define EM_CR 103 /* National Semiconductor CompactRISC */ -+#define EM_MSP430 105 /* TI msp430 micro controller */ -+#define EM_BLACKFIN 106 /* Analog Devices Blackfin */ -+#define EM_ALTERA_NIOS2 113 /* Altera Nios II soft-core processor */ -+#define EM_CRX 114 /* National Semiconductor CRX */ -+#define EM_NUM 95 -+#define EM_TI_C6000 140 -+ -+/* If it is necessary to assign new unofficial EM_* values, please pick large -+ random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision -+ with official or non-GNU unofficial values. -+ -+ NOTE: Do not just increment the most recent number by one. -+ Somebody else somewhere will do exactly the same thing, and you -+ will have a collision. Instead, pick a random number. -+ -+ Normally, each entity or maintainer responsible for a machine with an -+ unofficial e_machine number should eventually ask registry@caldera.com for -+ an officially blessed number to be added to the list above. */ -+ -+/* picoJava */ -+#define EM_PJ_OLD 99 -+ -+/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */ -+#define EM_CYGNUS_POWERPC 0x9025 -+ -+/* Old version of Sparc v9, from before the ABI; this should be -+ removed shortly. */ -+#define EM_OLD_SPARCV9 11 -+ -+/* Old version of PowerPC, this should be removed shortly. */ -+#define EM_PPC_OLD 17 -+ -+/* (Deprecated) Temporary number for the OpenRISC processor. */ -+#define EM_OR32 0x8472 -+ -+/* Renesas M32C and M16C. */ -+#define EM_M32C 0xFEB0 -+ -+/* Cygnus M32R ELF backend. Written in the absence of an ABI. */ -+#define EM_CYGNUS_M32R 0x9041 -+ -+/* old S/390 backend magic number. Written in the absence of an ABI. */ -+#define EM_S390_OLD 0xa390 -+ -+/* D10V backend magic number. Written in the absence of an ABI. */ -+#define EM_CYGNUS_D10V 0x7650 -+ -+/* D30V backend magic number. Written in the absence of an ABI. */ -+#define EM_CYGNUS_D30V 0x7676 -+ -+/* V850 backend magic number. Written in the absense of an ABI. */ -+#define EM_CYGNUS_V850 0x9080 -+ -+/* mn10200 and mn10300 backend magic numbers. -+ Written in the absense of an ABI. */ -+#define EM_CYGNUS_MN10200 0xdead -+#define EM_CYGNUS_MN10300 0xbeef -+ -+/* FR30 magic number - no EABI available. */ -+#define EM_CYGNUS_FR30 0x3330 -+ -+/* AVR magic number -+ Written in the absense of an ABI. */ -+#define EM_AVR_OLD 0x1057 -+ -+/* OpenRISC magic number -+ Written in the absense of an ABI. */ -+#define EM_OPENRISC_OLD 0x3426 -+ -+/* DLX magic number -+ Written in the absense of an ABI. */ -+#define EM_DLX 0x5aa5 -+ -+#define EM_XSTORMY16 0xad45 -+ -+/* FRV magic number - no EABI available??. */ -+#define EM_CYGNUS_FRV 0x5441 -+ -+/* Ubicom IP2xxx; no ABI */ -+#define EM_IP2K_OLD 0x8217 -+ -+#define EM_MT 0x2530 /* Morpho MT; no ABI */ -+ -+/* MSP430 magic number -+ Written in the absense everything. */ -+#define EM_MSP430_OLD 0x1059 -+ -+/* Vitesse IQ2000. */ -+#define EM_IQ2000 0xFEBA -+ -+/* Old, unofficial value for Xtensa. */ -+#define EM_XTENSA_OLD 0xabc7 -+ -+/* Alpha backend magic number. Written in the absence of an ABI. */ -+#define EM_ALPHA 0x9026 -+ -+/* NIOS magic number - no EABI available. */ -+#define EM_NIOS32 0xFEBB -+ -+/* AVR32 magic number from ATMEL */ -+#define EM_AVR32 0x18ad -+ -+/* V850 backend magic number. Written in the absense of an ABI. */ -+#define EM_CYGNUS_V850 0x9080 -+ -+/* Legal values for e_version (version). */ -+ -+#define EV_NONE 0 /* Invalid ELF version */ -+#define EV_CURRENT 1 /* Current version */ -+#define EV_NUM 2 -+ -+/* Section header. */ -+ -+typedef struct -+{ -+ Elf32_Word sh_name; /* Section name (string tbl index) */ -+ Elf32_Word sh_type; /* Section type */ -+ Elf32_Word sh_flags; /* Section flags */ -+ Elf32_Addr sh_addr; /* Section virtual addr at execution */ -+ Elf32_Off sh_offset; /* Section file offset */ -+ Elf32_Word sh_size; /* Section size in bytes */ -+ Elf32_Word sh_link; /* Link to another section */ -+ Elf32_Word sh_info; /* Additional section information */ -+ Elf32_Word sh_addralign; /* Section alignment */ -+ Elf32_Word sh_entsize; /* Entry size if section holds table */ -+} Elf32_Shdr; -+ -+typedef struct -+{ -+ Elf64_Word sh_name; /* Section name (string tbl index) */ -+ Elf64_Word sh_type; /* Section type */ -+ Elf64_Xword sh_flags; /* Section flags */ -+ Elf64_Addr sh_addr; /* Section virtual addr at execution */ -+ Elf64_Off sh_offset; /* Section file offset */ -+ Elf64_Xword sh_size; /* Section size in bytes */ -+ Elf64_Word sh_link; /* Link to another section */ -+ Elf64_Word sh_info; /* Additional section information */ -+ Elf64_Xword sh_addralign; /* Section alignment */ -+ Elf64_Xword sh_entsize; /* Entry size if section holds table */ -+} Elf64_Shdr; -+ -+/* Special section indices. */ -+ -+#define SHN_UNDEF 0 /* Undefined section */ -+#define SHN_LORESERVE 0xff00 /* Start of reserved indices */ -+#define SHN_LOPROC 0xff00 /* Start of processor-specific */ -+#define SHN_BEFORE 0xff00 /* Order section before all others -+ (Solaris). */ -+#define SHN_AFTER 0xff01 /* Order section after all others -+ (Solaris). */ -+#define SHN_HIPROC 0xff1f /* End of processor-specific */ -+#define SHN_LOOS 0xff20 /* Start of OS-specific */ -+#define SHN_HIOS 0xff3f /* End of OS-specific */ -+#define SHN_ABS 0xfff1 /* Associated symbol is absolute */ -+#define SHN_COMMON 0xfff2 /* Associated symbol is common */ -+#define SHN_XINDEX 0xffff /* Index is in extra table. */ -+#define SHN_HIRESERVE 0xffff /* End of reserved indices */ -+ -+/* Legal values for sh_type (section type). */ -+ -+#define SHT_NULL 0 /* Section header table entry unused */ -+#define SHT_PROGBITS 1 /* Program data */ -+#define SHT_SYMTAB 2 /* Symbol table */ -+#define SHT_STRTAB 3 /* String table */ -+#define SHT_RELA 4 /* Relocation entries with addends */ -+#define SHT_HASH 5 /* Symbol hash table */ -+#define SHT_DYNAMIC 6 /* Dynamic linking information */ -+#define SHT_NOTE 7 /* Notes */ -+#define SHT_NOBITS 8 /* Program space with no data (bss) */ -+#define SHT_REL 9 /* Relocation entries, no addends */ -+#define SHT_SHLIB 10 /* Reserved */ -+#define SHT_DYNSYM 11 /* Dynamic linker symbol table */ -+#define SHT_INIT_ARRAY 14 /* Array of constructors */ -+#define SHT_FINI_ARRAY 15 /* Array of destructors */ -+#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ -+#define SHT_GROUP 17 /* Section group */ -+#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ -+#define SHT_NUM 19 /* Number of defined types. */ -+#define SHT_LOOS 0x60000000 /* Start OS-specific */ -+#define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table. */ -+#define SHT_GNU_LIBLIST 0x6ffffff7 /* Prelink library list */ -+#define SHT_CHECKSUM 0x6ffffff8 /* Checksum for DSO content. */ -+#define SHT_LOSUNW 0x6ffffffa /* Sun-specific low bound. */ -+#define SHT_SUNW_move 0x6ffffffa -+#define SHT_SUNW_COMDAT 0x6ffffffb -+#define SHT_SUNW_syminfo 0x6ffffffc -+#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */ -+#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */ -+#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */ -+#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */ -+#define SHT_HIOS 0x6fffffff /* End OS-specific type */ -+#define SHT_LOPROC 0x70000000 /* Start of processor-specific */ -+#define SHT_HIPROC 0x7fffffff /* End of processor-specific */ -+#define SHT_LOUSER 0x80000000 /* Start of application-specific */ -+#define SHT_HIUSER 0x8fffffff /* End of application-specific */ -+ -+/* Legal values for sh_flags (section flags). */ -+ -+#define SHF_WRITE (1 << 0) /* Writable */ -+#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */ -+#define SHF_EXECINSTR (1 << 2) /* Executable */ -+#define SHF_MERGE (1 << 4) /* Might be merged */ -+#define SHF_STRINGS (1 << 5) /* Contains nul-terminated strings */ -+#define SHF_INFO_LINK (1 << 6) /* `sh_info' contains SHT index */ -+#define SHF_LINK_ORDER (1 << 7) /* Preserve order after combining */ -+#define SHF_OS_NONCONFORMING (1 << 8) /* Non-standard OS specific handling -+ required */ -+#define SHF_GROUP (1 << 9) /* Section is member of a group. */ -+#define SHF_TLS (1 << 10) /* Section hold thread-local data. */ -+#define SHF_MASKOS 0x0ff00000 /* OS-specific. */ -+#define SHF_MASKPROC 0xf0000000 /* Processor-specific */ -+#define SHF_ORDERED (1 << 30) /* Special ordering requirement -+ (Solaris). */ -+#define SHF_EXCLUDE (1 << 31) /* Section is excluded unless -+ referenced or allocated (Solaris).*/ -+ -+/* Section group handling. */ -+#define GRP_COMDAT 0x1 /* Mark group as COMDAT. */ -+ -+/* Symbol table entry. */ -+ -+typedef struct -+{ -+ Elf32_Word st_name; /* Symbol name (string tbl index) */ -+ Elf32_Addr st_value; /* Symbol value */ -+ Elf32_Word st_size; /* Symbol size */ -+ unsigned char st_info; /* Symbol type and binding */ -+ unsigned char st_other; /* Symbol visibility */ -+ Elf32_Section st_shndx; /* Section index */ -+} Elf32_Sym; -+ -+typedef struct -+{ -+ Elf64_Word st_name; /* Symbol name (string tbl index) */ -+ unsigned char st_info; /* Symbol type and binding */ -+ unsigned char st_other; /* Symbol visibility */ -+ Elf64_Section st_shndx; /* Section index */ -+ Elf64_Addr st_value; /* Symbol value */ -+ Elf64_Xword st_size; /* Symbol size */ -+} Elf64_Sym; -+ -+/* The syminfo section if available contains additional information about -+ every dynamic symbol. */ -+ -+typedef struct -+{ -+ Elf32_Half si_boundto; /* Direct bindings, symbol bound to */ -+ Elf32_Half si_flags; /* Per symbol flags */ -+} Elf32_Syminfo; -+ -+typedef struct -+{ -+ Elf64_Half si_boundto; /* Direct bindings, symbol bound to */ -+ Elf64_Half si_flags; /* Per symbol flags */ -+} Elf64_Syminfo; -+ -+/* Possible values for si_boundto. */ -+#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */ -+#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */ -+#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */ -+ -+/* Possible bitmasks for si_flags. */ -+#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */ -+#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */ -+#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */ -+#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy -+ loaded */ -+/* Syminfo version values. */ -+#define SYMINFO_NONE 0 -+#define SYMINFO_CURRENT 1 -+#define SYMINFO_NUM 2 -+ -+ -+/* How to extract and insert information held in the st_info field. */ -+ -+#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) -+#define ELF32_ST_TYPE(val) ((val) & 0xf) -+#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) -+ -+/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field. */ -+#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) -+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) -+#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) -+ -+/* Legal values for ST_BIND subfield of st_info (symbol binding). */ -+ -+#define STB_LOCAL 0 /* Local symbol */ -+#define STB_GLOBAL 1 /* Global symbol */ -+#define STB_WEAK 2 /* Weak symbol */ -+#define STB_NUM 3 /* Number of defined types. */ -+#define STB_LOOS 10 /* Start of OS-specific */ -+#define STB_HIOS 12 /* End of OS-specific */ -+#define STB_LOPROC 13 /* Start of processor-specific */ -+#define STB_HIPROC 15 /* End of processor-specific */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type). */ -+ -+#define STT_NOTYPE 0 /* Symbol type is unspecified */ -+#define STT_OBJECT 1 /* Symbol is a data object */ -+#define STT_FUNC 2 /* Symbol is a code object */ -+#define STT_SECTION 3 /* Symbol associated with a section */ -+#define STT_FILE 4 /* Symbol's name is file name */ -+#define STT_COMMON 5 /* Symbol is a common data object */ -+#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_HIOS 12 /* End of OS-specific */ -+#define STT_LOPROC 13 /* Start of processor-specific */ -+#define STT_HIPROC 15 /* End of processor-specific */ -+ -+ -+/* Symbol table indices are found in the hash buckets and chain table -+ of a symbol hash table section. This special index value indicates -+ the end of a chain, meaning no further symbols are found in that bucket. */ -+ -+#define STN_UNDEF 0 /* End of a chain. */ -+ -+ -+/* How to extract and insert information held in the st_other field. */ -+ -+#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) -+ -+/* For ELF64 the definitions are the same. */ -+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) -+ -+/* Symbol visibility specification encoded in the st_other field. */ -+#define STV_DEFAULT 0 /* Default symbol visibility rules */ -+#define STV_INTERNAL 1 /* Processor specific hidden class */ -+#define STV_HIDDEN 2 /* Sym unavailable in other modules */ -+#define STV_PROTECTED 3 /* Not preemptible, not exported */ -+ -+ -+/* Relocation table entry without addend (in section of type SHT_REL). */ -+ -+typedef struct -+{ -+ Elf32_Addr r_offset; /* Address */ -+ Elf32_Word r_info; /* Relocation type and symbol index */ -+} Elf32_Rel; -+ -+/* I have seen two different definitions of the Elf64_Rel and -+ Elf64_Rela structures, so we'll leave them out until Novell (or -+ whoever) gets their act together. */ -+/* The following, at least, is used on Sparc v9, MIPS, and Alpha. */ -+ -+typedef struct -+{ -+ Elf64_Addr r_offset; /* Address */ -+ Elf64_Xword r_info; /* Relocation type and symbol index */ -+} Elf64_Rel; -+ -+/* Relocation table entry with addend (in section of type SHT_RELA). */ -+ -+typedef struct -+{ -+ Elf32_Addr r_offset; /* Address */ -+ Elf32_Word r_info; /* Relocation type and symbol index */ -+ Elf32_Sword r_addend; /* Addend */ -+} Elf32_Rela; -+ -+typedef struct -+{ -+ Elf64_Addr r_offset; /* Address */ -+ Elf64_Xword r_info; /* Relocation type and symbol index */ -+ Elf64_Sxword r_addend; /* Addend */ -+} Elf64_Rela; -+ -+/* How to extract and insert information held in the r_info field. */ -+ -+#define ELF32_R_SYM(val) ((val) >> 8) -+#define ELF32_R_TYPE(val) ((val) & 0xff) -+#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) -+ -+#define ELF64_R_SYM(i) ((i) >> 32) -+#define ELF64_R_TYPE(i) ((i) & 0xffffffff) -+#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) -+ -+/* Program segment header. */ -+ -+typedef struct -+{ -+ Elf32_Word p_type; /* Segment type */ -+ Elf32_Off p_offset; /* Segment file offset */ -+ Elf32_Addr p_vaddr; /* Segment virtual address */ -+ Elf32_Addr p_paddr; /* Segment physical address */ -+ Elf32_Word p_filesz; /* Segment size in file */ -+ Elf32_Word p_memsz; /* Segment size in memory */ -+ Elf32_Word p_flags; /* Segment flags */ -+ Elf32_Word p_align; /* Segment alignment */ -+} Elf32_Phdr; -+ -+typedef struct -+{ -+ Elf64_Word p_type; /* Segment type */ -+ Elf64_Word p_flags; /* Segment flags */ -+ Elf64_Off p_offset; /* Segment file offset */ -+ Elf64_Addr p_vaddr; /* Segment virtual address */ -+ Elf64_Addr p_paddr; /* Segment physical address */ -+ Elf64_Xword p_filesz; /* Segment size in file */ -+ Elf64_Xword p_memsz; /* Segment size in memory */ -+ Elf64_Xword p_align; /* Segment alignment */ -+} Elf64_Phdr; -+ -+/* Legal values for p_type (segment type). */ -+ -+#define PT_NULL 0 /* Program header table entry unused */ -+#define PT_LOAD 1 /* Loadable program segment */ -+#define PT_DYNAMIC 2 /* Dynamic linking information */ -+#define PT_INTERP 3 /* Program interpreter */ -+#define PT_NOTE 4 /* Auxiliary information */ -+#define PT_SHLIB 5 /* Reserved */ -+#define PT_PHDR 6 /* Entry for header table itself */ -+#define PT_TLS 7 /* Thread-local storage segment */ -+#define PT_NUM 8 /* Number of defined types */ -+#define PT_LOOS 0x60000000 /* Start of OS-specific */ -+#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ -+#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ -+#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ -+#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */ -+#define PT_LOSUNW 0x6ffffffa -+#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ -+#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ -+#define PT_HISUNW 0x6fffffff -+#define PT_HIOS 0x6fffffff /* End of OS-specific */ -+#define PT_LOPROC 0x70000000 /* Start of processor-specific */ -+#define PT_HIPROC 0x7fffffff /* End of processor-specific */ -+ -+/* Legal values for p_flags (segment flags). */ -+ -+#define PF_X (1 << 0) /* Segment is executable */ -+#define PF_W (1 << 1) /* Segment is writable */ -+#define PF_R (1 << 2) /* Segment is readable */ -+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */ -+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */ -+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */ -+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */ -+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */ -+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */ -+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */ -+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */ -+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */ -+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */ -+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */ -+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */ -+#define PF_MASKOS 0x0ff00000 /* OS-specific */ -+#define PF_MASKPROC 0xf0000000 /* Processor-specific */ -+ -+/* Legal values for note segment descriptor types for core files. */ -+ -+#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */ -+#define NT_FPREGSET 2 /* Contains copy of fpregset struct */ -+#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ -+#define NT_PRXREG 4 /* Contains copy of prxregset struct */ -+#define NT_TASKSTRUCT 4 /* Contains copy of task structure */ -+#define NT_PLATFORM 5 /* String from sysinfo(SI_PLATFORM) */ -+#define NT_AUXV 6 /* Contains copy of auxv array */ -+#define NT_GWINDOWS 7 /* Contains copy of gwindows struct */ -+#define NT_ASRS 8 /* Contains copy of asrset struct */ -+#define NT_PSTATUS 10 /* Contains copy of pstatus struct */ -+#define NT_PSINFO 13 /* Contains copy of psinfo struct */ -+#define NT_PRCRED 14 /* Contains copy of prcred struct */ -+#define NT_UTSNAME 15 /* Contains copy of utsname struct */ -+#define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */ -+#define NT_LWPSINFO 17 /* Contains copy of lwpinfo struct */ -+#define NT_PRFPXREG 20 /* Contains copy of fprxregset struct*/ -+ -+/* Legal values for the note segment descriptor types for object files. */ -+ -+#define NT_VERSION 1 /* Contains a version string. */ -+ -+ -+/* Dynamic section entry. */ -+ -+typedef struct -+{ -+ Elf32_Sword d_tag; /* Dynamic entry type */ -+ union -+ { -+ Elf32_Word d_val; /* Integer value */ -+ Elf32_Addr d_ptr; /* Address value */ -+ } d_un; -+} Elf32_Dyn; -+ -+typedef struct -+{ -+ Elf64_Sxword d_tag; /* Dynamic entry type */ -+ union -+ { -+ Elf64_Xword d_val; /* Integer value */ -+ Elf64_Addr d_ptr; /* Address value */ -+ } d_un; -+} Elf64_Dyn; -+ -+/* Legal values for d_tag (dynamic entry type). */ -+ -+#define DT_NULL 0 /* Marks end of dynamic section */ -+#define DT_NEEDED 1 /* Name of needed library */ -+#define DT_PLTRELSZ 2 /* Size in bytes of PLT relocs */ -+#define DT_PLTGOT 3 /* Processor defined value */ -+#define DT_HASH 4 /* Address of symbol hash table */ -+#define DT_STRTAB 5 /* Address of string table */ -+#define DT_SYMTAB 6 /* Address of symbol table */ -+#define DT_RELA 7 /* Address of Rela relocs */ -+#define DT_RELASZ 8 /* Total size of Rela relocs */ -+#define DT_RELAENT 9 /* Size of one Rela reloc */ -+#define DT_STRSZ 10 /* Size of string table */ -+#define DT_SYMENT 11 /* Size of one symbol table entry */ -+#define DT_INIT 12 /* Address of init function */ -+#define DT_FINI 13 /* Address of termination function */ -+#define DT_SONAME 14 /* Name of shared object */ -+#define DT_RPATH 15 /* Library search path (deprecated) */ -+#define DT_SYMBOLIC 16 /* Start symbol search here */ -+#define DT_REL 17 /* Address of Rel relocs */ -+#define DT_RELSZ 18 /* Total size of Rel relocs */ -+#define DT_RELENT 19 /* Size of one Rel reloc */ -+#define DT_PLTREL 20 /* Type of reloc in PLT */ -+#define DT_DEBUG 21 /* For debugging; unspecified */ -+#define DT_TEXTREL 22 /* Reloc might modify .text */ -+#define DT_JMPREL 23 /* Address of PLT relocs */ -+#define DT_BIND_NOW 24 /* Process relocations of object */ -+#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */ -+#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */ -+#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */ -+#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */ -+#define DT_RUNPATH 29 /* Library search path */ -+#define DT_FLAGS 30 /* Flags for the object being loaded */ -+#define DT_ENCODING 32 /* Start of encoded range */ -+#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/ -+#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */ -+#define DT_NUM 34 /* Number used */ -+#define DT_LOOS 0x6000000d /* Start of OS-specific */ -+#define DT_HIOS 0x6ffff000 /* End of OS-specific */ -+#define DT_LOPROC 0x70000000 /* Start of processor-specific */ -+#define DT_HIPROC 0x7fffffff /* End of processor-specific */ -+#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */ -+ -+/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the -+ Dyn.d_un.d_val field of the Elf*_Dyn structure. This follows Sun's -+ approach. */ -+#define DT_VALRNGLO 0x6ffffd00 -+#define DT_GNU_PRELINKED 0x6ffffdf5 /* Prelinking timestamp */ -+#define DT_GNU_CONFLICTSZ 0x6ffffdf6 /* Size of conflict section */ -+#define DT_GNU_LIBLISTSZ 0x6ffffdf7 /* Size of library list */ -+#define DT_CHECKSUM 0x6ffffdf8 -+#define DT_PLTPADSZ 0x6ffffdf9 -+#define DT_MOVEENT 0x6ffffdfa -+#define DT_MOVESZ 0x6ffffdfb -+#define DT_FEATURE_1 0x6ffffdfc /* Feature selection (DTF_*). */ -+#define DT_POSFLAG_1 0x6ffffdfd /* Flags for DT_* entries, effecting -+ the following DT_* entry. */ -+#define DT_SYMINSZ 0x6ffffdfe /* Size of syminfo table (in bytes) */ -+#define DT_SYMINENT 0x6ffffdff /* Entry size of syminfo */ -+#define DT_VALRNGHI 0x6ffffdff -+#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) /* Reverse order! */ -+#define DT_VALNUM 12 -+ -+/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the -+ Dyn.d_un.d_ptr field of the Elf*_Dyn structure. -+ -+ If any adjustment is made to the ELF object after it has been -+ built these entries will need to be adjusted. */ -+#define DT_ADDRRNGLO 0x6ffffe00 -+#define DT_GNU_HASH 0x6ffffef5 /* GNU-style hash table. */ -+#define DT_GNU_CONFLICT 0x6ffffef8 /* Start of conflict section */ -+#define DT_GNU_LIBLIST 0x6ffffef9 /* Library list */ -+#define DT_CONFIG 0x6ffffefa /* Configuration information. */ -+#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */ -+#define DT_AUDIT 0x6ffffefc /* Object auditing. */ -+#define DT_PLTPAD 0x6ffffefd /* PLT padding. */ -+#define DT_MOVETAB 0x6ffffefe /* Move table. */ -+#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */ -+#define DT_ADDRRNGHI 0x6ffffeff -+#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) /* Reverse order! */ -+#define DT_ADDRNUM 10 -+ -+/* The versioning entry types. The next are defined as part of the -+ GNU extension. */ -+#define DT_VERSYM 0x6ffffff0 -+ -+#define DT_RELACOUNT 0x6ffffff9 -+#define DT_RELCOUNT 0x6ffffffa -+ -+/* These were chosen by Sun. */ -+#define DT_FLAGS_1 0x6ffffffb /* State flags, see DF_1_* below. */ -+#define DT_VERDEF 0x6ffffffc /* Address of version definition -+ table */ -+#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */ -+#define DT_VERNEED 0x6ffffffe /* Address of table with needed -+ versions */ -+#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */ -+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */ -+#define DT_VERSIONTAGNUM 16 -+ -+/* Sun added these machine-independent extensions in the "processor-specific" -+ range. Be compatible. */ -+#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ -+#define DT_FILTER 0x7fffffff /* Shared object to get values from */ -+#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -+#define DT_EXTRANUM 3 -+ -+/* Values of `d_un.d_val' in the DT_FLAGS entry. */ -+#define DF_ORIGIN 0x00000001 /* Object may use DF_ORIGIN */ -+#define DF_SYMBOLIC 0x00000002 /* Symbol resolutions starts here */ -+#define DF_TEXTREL 0x00000004 /* Object contains text relocations */ -+#define DF_BIND_NOW 0x00000008 /* No lazy binding for this object */ -+#define DF_STATIC_TLS 0x00000010 /* Module uses the static TLS model */ -+ -+/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 -+ entry in the dynamic section. */ -+#define DF_1_NOW 0x00000001 /* Set RTLD_NOW for this object. */ -+#define DF_1_GLOBAL 0x00000002 /* Set RTLD_GLOBAL for this object. */ -+#define DF_1_GROUP 0x00000004 /* Set RTLD_GROUP for this object. */ -+#define DF_1_NODELETE 0x00000008 /* Set RTLD_NODELETE for this object.*/ -+#define DF_1_LOADFLTR 0x00000010 /* Trigger filtee loading at runtime.*/ -+#define DF_1_INITFIRST 0x00000020 /* Set RTLD_INITFIRST for this object*/ -+#define DF_1_NOOPEN 0x00000040 /* Set RTLD_NOOPEN for this object. */ -+#define DF_1_ORIGIN 0x00000080 /* $ORIGIN must be handled. */ -+#define DF_1_DIRECT 0x00000100 /* Direct binding enabled. */ -+#define DF_1_TRANS 0x00000200 -+#define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */ -+#define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */ -+#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */ -+#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/ -+#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */ -+#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */ -+#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */ -+ -+/* Flags for the feature selection in DT_FEATURE_1. */ -+#define DTF_1_PARINIT 0x00000001 -+#define DTF_1_CONFEXP 0x00000002 -+ -+/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry. */ -+#define DF_P1_LAZYLOAD 0x00000001 /* Lazyload following object. */ -+#define DF_P1_GROUPPERM 0x00000002 /* Symbols from next object are not -+ generally available. */ -+ -+/* Version definition sections. */ -+ -+typedef struct -+{ -+ Elf32_Half vd_version; /* Version revision */ -+ Elf32_Half vd_flags; /* Version information */ -+ Elf32_Half vd_ndx; /* Version Index */ -+ Elf32_Half vd_cnt; /* Number of associated aux entries */ -+ Elf32_Word vd_hash; /* Version name hash value */ -+ Elf32_Word vd_aux; /* Offset in bytes to verdaux array */ -+ Elf32_Word vd_next; /* Offset in bytes to next verdef -+ entry */ -+} Elf32_Verdef; -+ -+typedef struct -+{ -+ Elf64_Half vd_version; /* Version revision */ -+ Elf64_Half vd_flags; /* Version information */ -+ Elf64_Half vd_ndx; /* Version Index */ -+ Elf64_Half vd_cnt; /* Number of associated aux entries */ -+ Elf64_Word vd_hash; /* Version name hash value */ -+ Elf64_Word vd_aux; /* Offset in bytes to verdaux array */ -+ Elf64_Word vd_next; /* Offset in bytes to next verdef -+ entry */ -+} Elf64_Verdef; -+ -+ -+/* Legal values for vd_version (version revision). */ -+#define VER_DEF_NONE 0 /* No version */ -+#define VER_DEF_CURRENT 1 /* Current version */ -+#define VER_DEF_NUM 2 /* Given version number */ -+ -+/* Legal values for vd_flags (version information flags). */ -+#define VER_FLG_BASE 0x1 /* Version definition of file itself */ -+#define VER_FLG_WEAK 0x2 /* Weak version identifier */ -+ -+/* Versym symbol index values. */ -+#define VER_NDX_LOCAL 0 /* Symbol is local. */ -+#define VER_NDX_GLOBAL 1 /* Symbol is global. */ -+#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ -+#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ -+ -+/* Auxialiary version information. */ -+ -+typedef struct -+{ -+ Elf32_Word vda_name; /* Version or dependency names */ -+ Elf32_Word vda_next; /* Offset in bytes to next verdaux -+ entry */ -+} Elf32_Verdaux; -+ -+typedef struct -+{ -+ Elf64_Word vda_name; /* Version or dependency names */ -+ Elf64_Word vda_next; /* Offset in bytes to next verdaux -+ entry */ -+} Elf64_Verdaux; -+ -+ -+/* Version dependency section. */ -+ -+typedef struct -+{ -+ Elf32_Half vn_version; /* Version of structure */ -+ Elf32_Half vn_cnt; /* Number of associated aux entries */ -+ Elf32_Word vn_file; /* Offset of filename for this -+ dependency */ -+ Elf32_Word vn_aux; /* Offset in bytes to vernaux array */ -+ Elf32_Word vn_next; /* Offset in bytes to next verneed -+ entry */ -+} Elf32_Verneed; -+ -+typedef struct -+{ -+ Elf64_Half vn_version; /* Version of structure */ -+ Elf64_Half vn_cnt; /* Number of associated aux entries */ -+ Elf64_Word vn_file; /* Offset of filename for this -+ dependency */ -+ Elf64_Word vn_aux; /* Offset in bytes to vernaux array */ -+ Elf64_Word vn_next; /* Offset in bytes to next verneed -+ entry */ -+} Elf64_Verneed; -+ -+ -+/* Legal values for vn_version (version revision). */ -+#define VER_NEED_NONE 0 /* No version */ -+#define VER_NEED_CURRENT 1 /* Current version */ -+#define VER_NEED_NUM 2 /* Given version number */ -+ -+/* Auxiliary needed version information. */ -+ -+typedef struct -+{ -+ Elf32_Word vna_hash; /* Hash value of dependency name */ -+ Elf32_Half vna_flags; /* Dependency specific information */ -+ Elf32_Half vna_other; /* Unused */ -+ Elf32_Word vna_name; /* Dependency name string offset */ -+ Elf32_Word vna_next; /* Offset in bytes to next vernaux -+ entry */ -+} Elf32_Vernaux; -+ -+typedef struct -+{ -+ Elf64_Word vna_hash; /* Hash value of dependency name */ -+ Elf64_Half vna_flags; /* Dependency specific information */ -+ Elf64_Half vna_other; /* Unused */ -+ Elf64_Word vna_name; /* Dependency name string offset */ -+ Elf64_Word vna_next; /* Offset in bytes to next vernaux -+ entry */ -+} Elf64_Vernaux; -+ -+ -+/* Legal values for vna_flags. */ -+#define VER_FLG_WEAK 0x2 /* Weak version identifier */ -+ -+ -+/* Auxiliary vector. */ -+ -+/* This vector is normally only used by the program interpreter. The -+ usual definition in an ABI supplement uses the name auxv_t. The -+ vector is not usually defined in a standard file, but it -+ can't hurt. We rename it to avoid conflicts. The sizes of these -+ types are an arrangement between the exec server and the program -+ interpreter, so we don't fully specify them here. */ -+ -+typedef struct -+{ -+ uint32_t a_type; /* Entry type */ -+ union -+ { -+ uint32_t a_val; /* Integer value */ -+ /* We use to have pointer elements added here. We cannot do that, -+ though, since it does not work when using 32-bit definitions -+ on 64-bit platforms and vice versa. */ -+ } a_un; -+} Elf32_auxv_t; -+ -+typedef struct -+{ -+ uint64_t a_type; /* Entry type */ -+ union -+ { -+ uint64_t a_val; /* Integer value */ -+ /* We use to have pointer elements added here. We cannot do that, -+ though, since it does not work when using 32-bit definitions -+ on 64-bit platforms and vice versa. */ -+ } a_un; -+} Elf64_auxv_t; -+ -+/* Legal values for a_type (entry type). */ -+ -+#define AT_NULL 0 /* End of vector */ -+#define AT_IGNORE 1 /* Entry should be ignored */ -+#define AT_EXECFD 2 /* File descriptor of program */ -+#define AT_PHDR 3 /* Program headers for program */ -+#define AT_PHENT 4 /* Size of program header entry */ -+#define AT_PHNUM 5 /* Number of program headers */ -+#define AT_PAGESZ 6 /* System page size */ -+#define AT_BASE 7 /* Base address of interpreter */ -+#define AT_FLAGS 8 /* Flags */ -+#define AT_ENTRY 9 /* Entry point of program */ -+#define AT_NOTELF 10 /* Program is not ELF */ -+#define AT_UID 11 /* Real uid */ -+#define AT_EUID 12 /* Effective uid */ -+#define AT_GID 13 /* Real gid */ -+#define AT_EGID 14 /* Effective gid */ -+#define AT_CLKTCK 17 /* Frequency of times() */ -+ -+/* Some more special a_type values describing the hardware. */ -+#define AT_PLATFORM 15 /* String identifying platform. */ -+#define AT_HWCAP 16 /* Machine dependent hints about -+ processor capabilities. */ -+ -+/* This entry gives some information about the FPU initialization -+ performed by the kernel. */ -+#define AT_FPUCW 18 /* Used FPU control word. */ -+ -+/* Cache block sizes. */ -+#define AT_DCACHEBSIZE 19 /* Data cache block size. */ -+#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */ -+#define AT_UCACHEBSIZE 21 /* Unified cache block size. */ -+ -+/* A special ignored value for PPC, used by the kernel to control the -+ interpretation of the AUXV. Must be > 16. */ -+#define AT_IGNOREPPC 22 /* Entry should be ignored. */ -+ -+#define AT_SECURE 23 /* Boolean, was exec setuid-like? */ -+ -+/* Pointer to the global system page used for system calls and other -+ nice things. */ -+#define AT_SYSINFO 32 -+#define AT_SYSINFO_EHDR 33 -+ -+/* Shapes of the caches. Bits 0-3 contains associativity; bits 4-7 contains -+ log2 of line size; mask those to get cache size. */ -+#define AT_L1I_CACHESHAPE 34 -+#define AT_L1D_CACHESHAPE 35 -+#define AT_L2_CACHESHAPE 36 -+#define AT_L3_CACHESHAPE 37 -+ -+/* Note section contents. Each entry in the note section begins with -+ a header of a fixed form. */ -+ -+typedef struct -+{ -+ Elf32_Word n_namesz; /* Length of the note's name. */ -+ Elf32_Word n_descsz; /* Length of the note's descriptor. */ -+ Elf32_Word n_type; /* Type of the note. */ -+} Elf32_Nhdr; -+ -+typedef struct -+{ -+ Elf64_Word n_namesz; /* Length of the note's name. */ -+ Elf64_Word n_descsz; /* Length of the note's descriptor. */ -+ Elf64_Word n_type; /* Type of the note. */ -+} Elf64_Nhdr; -+ -+/* Known names of notes. */ -+ -+/* Solaris entries in the note section have this name. */ -+#define ELF_NOTE_SOLARIS "SUNW Solaris" -+ -+/* Note entries for GNU systems have this name. */ -+#define ELF_NOTE_GNU "GNU" -+ -+ -+/* Defined types of notes for Solaris. */ -+ -+/* Value of descriptor (one word) is desired pagesize for the binary. */ -+#define ELF_NOTE_PAGESIZE_HINT 1 -+ -+ -+/* Defined note types for GNU systems. */ -+ -+/* ABI information. The descriptor consists of words: -+ word 0: OS descriptor -+ word 1: major version of the ABI -+ word 2: minor version of the ABI -+ word 3: subminor version of the ABI -+*/ -+#define ELF_NOTE_ABI 1 -+ -+/* Known OSes. These value can appear in word 0 of an ELF_NOTE_ABI -+ note section entry. */ -+#define ELF_NOTE_OS_LINUX 0 -+#define ELF_NOTE_OS_GNU 1 -+#define ELF_NOTE_OS_SOLARIS2 2 -+#define ELF_NOTE_OS_FREEBSD 3 -+ -+ -+/* Move records. */ -+typedef struct -+{ -+ Elf32_Xword m_value; /* Symbol value. */ -+ Elf32_Word m_info; /* Size and index. */ -+ Elf32_Word m_poffset; /* Symbol offset. */ -+ Elf32_Half m_repeat; /* Repeat count. */ -+ Elf32_Half m_stride; /* Stride info. */ -+} Elf32_Move; -+ -+typedef struct -+{ -+ Elf64_Xword m_value; /* Symbol value. */ -+ Elf64_Xword m_info; /* Size and index. */ -+ Elf64_Xword m_poffset; /* Symbol offset. */ -+ Elf64_Half m_repeat; /* Repeat count. */ -+ Elf64_Half m_stride; /* Stride info. */ -+} Elf64_Move; -+ -+/* Macro to construct move records. */ -+#define ELF32_M_SYM(info) ((info) >> 8) -+#define ELF32_M_SIZE(info) ((unsigned char) (info)) -+#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) -+ -+#define ELF64_M_SYM(info) ELF32_M_SYM (info) -+#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) -+#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) -+ -+ -+/* Motorola 68k specific definitions. */ -+ -+/* Values for Elf32_Ehdr.e_flags. */ -+#define EF_CPU32 0x00810000 -+ -+/* m68k relocs. */ -+ -+#define R_68K_NONE 0 /* No reloc */ -+#define R_68K_32 1 /* Direct 32 bit */ -+#define R_68K_16 2 /* Direct 16 bit */ -+#define R_68K_8 3 /* Direct 8 bit */ -+#define R_68K_PC32 4 /* PC relative 32 bit */ -+#define R_68K_PC16 5 /* PC relative 16 bit */ -+#define R_68K_PC8 6 /* PC relative 8 bit */ -+#define R_68K_GOT32 7 /* 32 bit PC relative GOT entry */ -+#define R_68K_GOT16 8 /* 16 bit PC relative GOT entry */ -+#define R_68K_GOT8 9 /* 8 bit PC relative GOT entry */ -+#define R_68K_GOT32O 10 /* 32 bit GOT offset */ -+#define R_68K_GOT16O 11 /* 16 bit GOT offset */ -+#define R_68K_GOT8O 12 /* 8 bit GOT offset */ -+#define R_68K_PLT32 13 /* 32 bit PC relative PLT address */ -+#define R_68K_PLT16 14 /* 16 bit PC relative PLT address */ -+#define R_68K_PLT8 15 /* 8 bit PC relative PLT address */ -+#define R_68K_PLT32O 16 /* 32 bit PLT offset */ -+#define R_68K_PLT16O 17 /* 16 bit PLT offset */ -+#define R_68K_PLT8O 18 /* 8 bit PLT offset */ -+#define R_68K_COPY 19 /* Copy symbol at runtime */ -+#define R_68K_GLOB_DAT 20 /* Create GOT entry */ -+#define R_68K_JMP_SLOT 21 /* Create PLT entry */ -+#define R_68K_RELATIVE 22 /* Adjust by program base */ -+/* Keep this the last entry. */ -+#define R_68K_NUM 23 -+ -+/* Intel 80386 specific definitions. */ -+ -+/* i386 relocs. */ -+ -+#define R_386_NONE 0 /* No reloc */ -+#define R_386_32 1 /* Direct 32 bit */ -+#define R_386_PC32 2 /* PC relative 32 bit */ -+#define R_386_GOT32 3 /* 32 bit GOT entry */ -+#define R_386_PLT32 4 /* 32 bit PLT address */ -+#define R_386_COPY 5 /* Copy symbol at runtime */ -+#define R_386_GLOB_DAT 6 /* Create GOT entry */ -+#define R_386_JMP_SLOT 7 /* Create PLT entry */ -+#define R_386_RELATIVE 8 /* Adjust by program base */ -+#define R_386_GOTOFF 9 /* 32 bit offset to GOT */ -+#define R_386_GOTPC 10 /* 32 bit PC relative offset to GOT */ -+#define R_386_32PLT 11 -+#define R_386_TLS_TPOFF 14 /* Offset in static TLS block */ -+#define R_386_TLS_IE 15 /* Address of GOT entry for static TLS -+ block offset */ -+#define R_386_TLS_GOTIE 16 /* GOT entry for static TLS block -+ offset */ -+#define R_386_TLS_LE 17 /* Offset relative to static TLS -+ block */ -+#define R_386_TLS_GD 18 /* Direct 32 bit for GNU version of -+ general dynamic thread local data */ -+#define R_386_TLS_LDM 19 /* Direct 32 bit for GNU version of -+ local dynamic thread local data -+ in LE code */ -+#define R_386_16 20 -+#define R_386_PC16 21 -+#define R_386_8 22 -+#define R_386_PC8 23 -+#define R_386_TLS_GD_32 24 /* Direct 32 bit for general dynamic -+ thread local data */ -+#define R_386_TLS_GD_PUSH 25 /* Tag for pushl in GD TLS code */ -+#define R_386_TLS_GD_CALL 26 /* Relocation for call to -+ __tls_get_addr() */ -+#define R_386_TLS_GD_POP 27 /* Tag for popl in GD TLS code */ -+#define R_386_TLS_LDM_32 28 /* Direct 32 bit for local dynamic -+ thread local data in LE code */ -+#define R_386_TLS_LDM_PUSH 29 /* Tag for pushl in LDM TLS code */ -+#define R_386_TLS_LDM_CALL 30 /* Relocation for call to -+ __tls_get_addr() in LDM code */ -+#define R_386_TLS_LDM_POP 31 /* Tag for popl in LDM TLS code */ -+#define R_386_TLS_LDO_32 32 /* Offset relative to TLS block */ -+#define R_386_TLS_IE_32 33 /* GOT entry for negated static TLS -+ block offset */ -+#define R_386_TLS_LE_32 34 /* Negated offset relative to static -+ TLS block */ -+#define R_386_TLS_DTPMOD32 35 /* ID of module containing symbol */ -+#define R_386_TLS_DTPOFF32 36 /* Offset in TLS block */ -+#define R_386_TLS_TPOFF32 37 /* Negated offset in static TLS block */ -+/* Keep this the last entry. */ -+#define R_386_NUM 38 -+ -+/* Blackfin specific definitions. */ -+#define R_BFIN_UNUSED0 0x00 -+#define R_BFIN_PCREL5M2 0x01 -+#define R_BFIN_UNUSED1 0x02 -+#define R_BFIN_PCREL10 0x03 -+#define R_BFIN_PCREL12_JUMP 0x04 -+#define R_BFIN_RIMM16 0x05 -+#define R_BFIN_LUIMM16 0x06 -+#define R_BFIN_HUIMM16 0x07 -+#define R_BFIN_PCREL12_JUMP_S 0x08 -+#define R_BFIN_PCREL24_JUMP_X 0x09 -+#define R_BFIN_PCREL24 0x0a -+#define R_BFIN_UNUSEDB 0x0b -+#define R_BFIN_UNUSEDC 0x0c -+#define R_BFIN_PCREL24_JUMP_L 0x0d -+#define R_BFIN_PCREL24_CALL_X 0x0e -+#define R_BFIN_var_eq_symb 0x0f -+#define R_BFIN_BYTE_DATA 0x10 -+#define R_BFIN_BYTE2_DATA 0x11 -+#define R_BFIN_BYTE4_DATA 0x12 -+#define R_BFIN_PCREL11 0x13 -+ -+#define R_BFIN_GOT17M4 0x14 -+#define R_BFIN_GOTHI 0x15 -+#define R_BFIN_GOTLO 0x16 -+#define R_BFIN_FUNCDESC 0x17 -+#define R_BFIN_FUNCDESC_GOT17M4 0x18 -+#define R_BFIN_FUNCDESC_GOTHI 0x19 -+#define R_BFIN_FUNCDESC_GOTLO 0x1a -+#define R_BFIN_FUNCDESC_VALUE 0x1b -+#define R_BFIN_FUNCDESC_GOTOFF17M4 0x1c -+#define R_BFIN_FUNCDESC_GOTOFFHI 0x1d -+#define R_BFIN_FUNCDESC_GOTOFFLO 0x1e -+#define R_BFIN_GOTOFF17M4 0x1f -+#define R_BFIN_GOTOFFHI 0x20 -+#define R_BFIN_GOTOFFLO 0x21 -+ -+#define EF_BFIN_PIC 0x00000001 /* -fpic */ -+#define EF_BFIN_FDPIC 0x00000002 /* -mfdpic */ -+#define EF_BFIN_CODE_IN_L1 0x00000010 /* --code-in-l1 */ -+#define EF_BFIN_DATA_IN_L1 0x00000020 /* --data-in-l1 */ -+ -+/* FR-V specific definitions. */ -+#define R_FRV_NONE 0 /* No reloc. */ -+#define R_FRV_32 1 /* Direct 32 bit. */ -+/* Canonical function descriptor address. */ -+#define R_FRV_FUNCDESC 14 -+/* Private function descriptor initialization. */ -+#define R_FRV_FUNCDESC_VALUE 18 -+ -+ /* gpr support */ -+#define EF_FRV_GPR_MASK 0x00000003 /* mask for # of gprs */ -+#define EF_FRV_GPR_32 0x00000001 /* -mgpr-32 */ -+#define EF_FRV_GPR_64 0x00000002 /* -mgpr-64 */ -+ -+ /* fpr support */ -+#define EF_FRV_FPR_MASK 0x0000000c /* mask for # of fprs */ -+#define EF_FRV_FPR_32 0x00000004 /* -mfpr-32 */ -+#define EF_FRV_FPR_64 0x00000008 /* -mfpr-64 */ -+#define EF_FRV_FPR_NONE 0x0000000c /* -msoft-float */ -+ -+#define EF_FRV_PIC 0x00000100 -+#define EF_FRV_FDPIC 0x00008000 -+ -+/* SUN SPARC specific definitions. */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type). */ -+ -+#define STT_SPARC_REGISTER 13 /* Global register reserved to app. */ -+ -+/* Values for Elf64_Ehdr.e_flags. */ -+ -+#define EF_SPARCV9_MM 3 -+#define EF_SPARCV9_TSO 0 -+#define EF_SPARCV9_PSO 1 -+#define EF_SPARCV9_RMO 2 -+#define EF_SPARC_LEDATA 0x800000 /* little endian data */ -+#define EF_SPARC_EXT_MASK 0xFFFF00 -+#define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ -+#define EF_SPARC_SUN_US1 0x000200 /* Sun UltraSPARC1 extensions */ -+#define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */ -+#define EF_SPARC_SUN_US3 0x000800 /* Sun UltraSPARCIII extensions */ -+ -+/* SPARC relocs. */ -+ -+#define R_SPARC_NONE 0 /* No reloc */ -+#define R_SPARC_8 1 /* Direct 8 bit */ -+#define R_SPARC_16 2 /* Direct 16 bit */ -+#define R_SPARC_32 3 /* Direct 32 bit */ -+#define R_SPARC_DISP8 4 /* PC relative 8 bit */ -+#define R_SPARC_DISP16 5 /* PC relative 16 bit */ -+#define R_SPARC_DISP32 6 /* PC relative 32 bit */ -+#define R_SPARC_WDISP30 7 /* PC relative 30 bit shifted */ -+#define R_SPARC_WDISP22 8 /* PC relative 22 bit shifted */ -+#define R_SPARC_HI22 9 /* High 22 bit */ -+#define R_SPARC_22 10 /* Direct 22 bit */ -+#define R_SPARC_13 11 /* Direct 13 bit */ -+#define R_SPARC_LO10 12 /* Truncated 10 bit */ -+#define R_SPARC_GOT10 13 /* Truncated 10 bit GOT entry */ -+#define R_SPARC_GOT13 14 /* 13 bit GOT entry */ -+#define R_SPARC_GOT22 15 /* 22 bit GOT entry shifted */ -+#define R_SPARC_PC10 16 /* PC relative 10 bit truncated */ -+#define R_SPARC_PC22 17 /* PC relative 22 bit shifted */ -+#define R_SPARC_WPLT30 18 /* 30 bit PC relative PLT address */ -+#define R_SPARC_COPY 19 /* Copy symbol at runtime */ -+#define R_SPARC_GLOB_DAT 20 /* Create GOT entry */ -+#define R_SPARC_JMP_SLOT 21 /* Create PLT entry */ -+#define R_SPARC_RELATIVE 22 /* Adjust by program base */ -+#define R_SPARC_UA32 23 /* Direct 32 bit unaligned */ -+ -+/* Additional Sparc64 relocs. */ -+ -+#define R_SPARC_PLT32 24 /* Direct 32 bit ref to PLT entry */ -+#define R_SPARC_HIPLT22 25 /* High 22 bit PLT entry */ -+#define R_SPARC_LOPLT10 26 /* Truncated 10 bit PLT entry */ -+#define R_SPARC_PCPLT32 27 /* PC rel 32 bit ref to PLT entry */ -+#define R_SPARC_PCPLT22 28 /* PC rel high 22 bit PLT entry */ -+#define R_SPARC_PCPLT10 29 /* PC rel trunc 10 bit PLT entry */ -+#define R_SPARC_10 30 /* Direct 10 bit */ -+#define R_SPARC_11 31 /* Direct 11 bit */ -+#define R_SPARC_64 32 /* Direct 64 bit */ -+#define R_SPARC_OLO10 33 /* 10bit with secondary 13bit addend */ -+#define R_SPARC_HH22 34 /* Top 22 bits of direct 64 bit */ -+#define R_SPARC_HM10 35 /* High middle 10 bits of ... */ -+#define R_SPARC_LM22 36 /* Low middle 22 bits of ... */ -+#define R_SPARC_PC_HH22 37 /* Top 22 bits of pc rel 64 bit */ -+#define R_SPARC_PC_HM10 38 /* High middle 10 bit of ... */ -+#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_7 43 /* Direct 7 bit */ -+#define R_SPARC_5 44 /* Direct 5 bit */ -+#define R_SPARC_6 45 /* Direct 6 bit */ -+#define R_SPARC_DISP64 46 /* PC relative 64 bit */ -+#define R_SPARC_PLT64 47 /* Direct 64 bit ref to PLT entry */ -+#define R_SPARC_HIX22 48 /* High 22 bit complemented */ -+#define R_SPARC_LOX10 49 /* Truncated 11 bit complemented */ -+#define R_SPARC_H44 50 /* Direct high 12 of 44 bit */ -+#define R_SPARC_M44 51 /* Direct mid 22 of 44 bit */ -+#define R_SPARC_L44 52 /* Direct low 10 of 44 bit */ -+#define R_SPARC_REGISTER 53 /* Global register usage */ -+#define R_SPARC_UA64 54 /* Direct 64 bit unaligned */ -+#define R_SPARC_UA16 55 /* Direct 16 bit unaligned */ -+#define R_SPARC_TLS_GD_HI22 56 -+#define R_SPARC_TLS_GD_LO10 57 -+#define R_SPARC_TLS_GD_ADD 58 -+#define R_SPARC_TLS_GD_CALL 59 -+#define R_SPARC_TLS_LDM_HI22 60 -+#define R_SPARC_TLS_LDM_LO10 61 -+#define R_SPARC_TLS_LDM_ADD 62 -+#define R_SPARC_TLS_LDM_CALL 63 -+#define R_SPARC_TLS_LDO_HIX22 64 -+#define R_SPARC_TLS_LDO_LOX10 65 -+#define R_SPARC_TLS_LDO_ADD 66 -+#define R_SPARC_TLS_IE_HI22 67 -+#define R_SPARC_TLS_IE_LO10 68 -+#define R_SPARC_TLS_IE_LD 69 -+#define R_SPARC_TLS_IE_LDX 70 -+#define R_SPARC_TLS_IE_ADD 71 -+#define R_SPARC_TLS_LE_HIX22 72 -+#define R_SPARC_TLS_LE_LOX10 73 -+#define R_SPARC_TLS_DTPMOD32 74 -+#define R_SPARC_TLS_DTPMOD64 75 -+#define R_SPARC_TLS_DTPOFF32 76 -+#define R_SPARC_TLS_DTPOFF64 77 -+#define R_SPARC_TLS_TPOFF32 78 -+#define R_SPARC_TLS_TPOFF64 79 -+/* Keep this the last entry. */ -+#define R_SPARC_NUM 80 -+ -+/* For Sparc64, legal values for d_tag of Elf64_Dyn. */ -+ -+#define DT_SPARC_REGISTER 0x70000001 -+#define DT_SPARC_NUM 2 -+ -+/* Bits present in AT_HWCAP, primarily for Sparc32. */ -+ -+#define HWCAP_SPARC_FLUSH 1 /* The cpu supports flush insn. */ -+#define HWCAP_SPARC_STBAR 2 -+#define HWCAP_SPARC_SWAP 4 -+#define HWCAP_SPARC_MULDIV 8 -+#define HWCAP_SPARC_V9 16 /* The cpu is v9, so v8plus is ok. */ -+#define HWCAP_SPARC_ULTRA3 32 -+ -+/* MIPS R3000 specific definitions. */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr. */ -+ -+#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used */ -+#define EF_MIPS_PIC 2 /* Contains PIC code */ -+#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence */ -+#define EF_MIPS_XGOT 8 -+#define EF_MIPS_64BIT_WHIRL 16 -+#define EF_MIPS_ABI2 32 -+#define EF_MIPS_ABI_ON32 64 -+#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level */ -+ -+/* Legal values for MIPS architecture level. */ -+ -+#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ -+#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ -+#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ -+#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ -+#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ -+#define EF_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ -+#define EF_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ -+ -+/* The following are non-official names and should not be used. */ -+ -+#define E_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ -+#define E_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ -+#define E_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ -+#define E_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ -+#define E_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ -+#define E_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ -+#define E_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ -+ -+/* Special section indices. */ -+ -+#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols */ -+#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */ -+#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */ -+#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols */ -+#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols */ -+ -+/* Legal values for sh_type field of Elf32_Shdr. */ -+ -+#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link */ -+#define SHT_MIPS_MSYM 0x70000001 -+#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols */ -+#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes */ -+#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */ -+#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging information*/ -+#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information */ -+#define SHT_MIPS_PACKAGE 0x70000007 -+#define SHT_MIPS_PACKSYM 0x70000008 -+#define SHT_MIPS_RELD 0x70000009 -+#define SHT_MIPS_IFACE 0x7000000b -+#define SHT_MIPS_CONTENT 0x7000000c -+#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */ -+#define SHT_MIPS_SHDR 0x70000010 -+#define SHT_MIPS_FDESC 0x70000011 -+#define SHT_MIPS_EXTSYM 0x70000012 -+#define SHT_MIPS_DENSE 0x70000013 -+#define SHT_MIPS_PDESC 0x70000014 -+#define SHT_MIPS_LOCSYM 0x70000015 -+#define SHT_MIPS_AUXSYM 0x70000016 -+#define SHT_MIPS_OPTSYM 0x70000017 -+#define SHT_MIPS_LOCSTR 0x70000018 -+#define SHT_MIPS_LINE 0x70000019 -+#define SHT_MIPS_RFDESC 0x7000001a -+#define SHT_MIPS_DELTASYM 0x7000001b -+#define SHT_MIPS_DELTAINST 0x7000001c -+#define SHT_MIPS_DELTACLASS 0x7000001d -+#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */ -+#define SHT_MIPS_DELTADECL 0x7000001f -+#define SHT_MIPS_SYMBOL_LIB 0x70000020 -+#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */ -+#define SHT_MIPS_TRANSLATE 0x70000022 -+#define SHT_MIPS_PIXIE 0x70000023 -+#define SHT_MIPS_XLATE 0x70000024 -+#define SHT_MIPS_XLATE_DEBUG 0x70000025 -+#define SHT_MIPS_WHIRL 0x70000026 -+#define SHT_MIPS_EH_REGION 0x70000027 -+#define SHT_MIPS_XLATE_OLD 0x70000028 -+#define SHT_MIPS_PDR_EXCEPTION 0x70000029 -+ -+/* Legal values for sh_flags field of Elf32_Shdr. */ -+ -+#define SHF_MIPS_GPREL 0x10000000 /* Must be part of global data area */ -+#define SHF_MIPS_MERGE 0x20000000 -+#define SHF_MIPS_ADDR 0x40000000 -+#define SHF_MIPS_STRINGS 0x80000000 -+#define SHF_MIPS_NOSTRIP 0x08000000 -+#define SHF_MIPS_LOCAL 0x04000000 -+#define SHF_MIPS_NAMES 0x02000000 -+#define SHF_MIPS_NODUPE 0x01000000 -+ -+ -+/* Symbol tables. */ -+ -+/* MIPS specific values for `st_other'. */ -+#define STO_MIPS_DEFAULT 0x0 -+#define STO_MIPS_INTERNAL 0x1 -+#define STO_MIPS_HIDDEN 0x2 -+#define STO_MIPS_PROTECTED 0x3 -+#define STO_MIPS_PLT 0x8 -+#define STO_MIPS_SC_ALIGN_UNUSED 0xff -+ -+/* MIPS specific values for `st_info'. */ -+#define STB_MIPS_SPLIT_COMMON 13 -+ -+/* Entries found in sections of type SHT_MIPS_GPTAB. */ -+ -+typedef union -+{ -+ struct -+ { -+ Elf32_Word gt_current_g_value; /* -G value used for compilation */ -+ Elf32_Word gt_unused; /* Not used */ -+ } gt_header; /* First entry in section */ -+ struct -+ { -+ Elf32_Word gt_g_value; /* If this value were used for -G */ -+ Elf32_Word gt_bytes; /* This many bytes would be used */ -+ } gt_entry; /* Subsequent entries in section */ -+} Elf32_gptab; -+ -+/* Entry found in sections of type SHT_MIPS_REGINFO. */ -+ -+typedef struct -+{ -+ Elf32_Word ri_gprmask; /* General registers used */ -+ Elf32_Word ri_cprmask[4]; /* Coprocessor registers used */ -+ Elf32_Sword ri_gp_value; /* $gp register value */ -+} Elf32_RegInfo; -+ -+/* Entries found in sections of type SHT_MIPS_OPTIONS. */ -+ -+typedef struct -+{ -+ unsigned char kind; /* Determines interpretation of the -+ variable part of descriptor. */ -+ unsigned char size; /* Size of descriptor, including header. */ -+ Elf32_Section section; /* Section header index of section affected, -+ 0 for global options. */ -+ Elf32_Word info; /* Kind-specific information. */ -+} Elf_Options; -+ -+/* Values for `kind' field in Elf_Options. */ -+ -+#define ODK_NULL 0 /* Undefined. */ -+#define ODK_REGINFO 1 /* Register usage information. */ -+#define ODK_EXCEPTIONS 2 /* Exception processing options. */ -+#define ODK_PAD 3 /* Section padding options. */ -+#define ODK_HWPATCH 4 /* Hardware workarounds performed */ -+#define ODK_FILL 5 /* record the fill value used by the linker. */ -+#define ODK_TAGS 6 /* reserve space for desktop tools to write. */ -+#define ODK_HWAND 7 /* HW workarounds. 'AND' bits when merging. */ -+#define ODK_HWOR 8 /* HW workarounds. 'OR' bits when merging. */ -+ -+/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */ -+ -+#define OEX_FPU_MIN 0x1f /* FPE's which MUST be enabled. */ -+#define OEX_FPU_MAX 0x1f00 /* FPE's which MAY be enabled. */ -+#define OEX_PAGE0 0x10000 /* page zero must be mapped. */ -+#define OEX_SMM 0x20000 /* Force sequential memory mode? */ -+#define OEX_FPDBUG 0x40000 /* Force floating point debug mode? */ -+#define OEX_PRECISEFP OEX_FPDBUG -+#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults? */ -+ -+#define OEX_FPU_INVAL 0x10 -+#define OEX_FPU_DIV0 0x08 -+#define OEX_FPU_OFLO 0x04 -+#define OEX_FPU_UFLO 0x02 -+#define OEX_FPU_INEX 0x01 -+ -+/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */ -+ -+#define OHW_R4KEOP 0x1 /* R4000 end-of-page patch. */ -+#define OHW_R8KPFETCH 0x2 /* may need R8000 prefetch patch. */ -+#define OHW_R5KEOP 0x4 /* R5000 end-of-page patch. */ -+#define OHW_R5KCVTL 0x8 /* R5000 cvt.[ds].l bug. clean=1. */ -+ -+#define OPAD_PREFIX 0x1 -+#define OPAD_POSTFIX 0x2 -+#define OPAD_SYMBOL 0x4 -+ -+/* Entry found in `.options' section. */ -+ -+typedef struct -+{ -+ Elf32_Word hwp_flags1; /* Extra flags. */ -+ Elf32_Word hwp_flags2; /* Extra flags. */ -+} Elf_Options_Hw; -+ -+/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */ -+ -+#define OHWA0_R4KEOP_CHECKED 0x00000001 -+#define OHWA1_R4KEOP_CLEAN 0x00000002 -+ -+/* MIPS relocs. */ -+ -+#define R_MIPS_NONE 0 /* No reloc */ -+#define R_MIPS_16 1 /* Direct 16 bit */ -+#define R_MIPS_32 2 /* Direct 32 bit */ -+#define R_MIPS_REL32 3 /* PC relative 32 bit */ -+#define R_MIPS_26 4 /* Direct 26 bit shifted */ -+#define R_MIPS_HI16 5 /* High 16 bit */ -+#define R_MIPS_LO16 6 /* Low 16 bit */ -+#define R_MIPS_GPREL16 7 /* GP relative 16 bit */ -+#define R_MIPS_LITERAL 8 /* 16 bit literal entry */ -+#define R_MIPS_GOT16 9 /* 16 bit GOT entry */ -+#define R_MIPS_PC16 10 /* PC relative 16 bit */ -+#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */ -+#define R_MIPS_GPREL32 12 /* GP relative 32 bit */ -+ -+#define R_MIPS_SHIFT5 16 -+#define R_MIPS_SHIFT6 17 -+#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 R_MIPS_JALR 37 -+#define R_MIPS_TLS_DTPMOD32 38 /* Module number 32 bit */ -+#define R_MIPS_TLS_DTPREL32 39 /* Module-relative offset 32 bit */ -+#define R_MIPS_TLS_DTPMOD64 40 /* Module number 64 bit */ -+#define R_MIPS_TLS_DTPREL64 41 /* Module-relative offset 64 bit */ -+#define R_MIPS_TLS_GD 42 /* 16 bit GOT offset for GD */ -+#define R_MIPS_TLS_LDM 43 /* 16 bit GOT offset for LDM */ -+#define R_MIPS_TLS_DTPREL_HI16 44 /* Module-relative offset, high 16 bits */ -+#define R_MIPS_TLS_DTPREL_LO16 45 /* Module-relative offset, low 16 bits */ -+#define R_MIPS_TLS_GOTTPREL 46 /* 16 bit GOT offset for IE */ -+#define R_MIPS_TLS_TPREL32 47 /* TP-relative offset, 32 bit */ -+#define R_MIPS_TLS_TPREL64 48 /* TP-relative offset, 64 bit */ -+#define R_MIPS_TLS_TPREL_HI16 49 /* TP-relative offset, high 16 bits */ -+#define R_MIPS_TLS_TPREL_LO16 50 /* TP-relative offset, low 16 bits */ -+#define R_MIPS_GLOB_DAT 51 -+#define R_MIPS_COPY 126 -+#define R_MIPS_JUMP_SLOT 127 -+/* Keep this the last entry. */ -+#define R_MIPS_NUM 128 -+ -+/* Legal values for p_type field of Elf32_Phdr. */ -+ -+#define PT_MIPS_REGINFO 0x70000000 /* Register usage information */ -+#define PT_MIPS_RTPROC 0x70000001 /* Runtime procedure table. */ -+#define PT_MIPS_OPTIONS 0x70000002 -+ -+/* Special program header types. */ -+ -+#define PF_MIPS_LOCAL 0x10000000 -+ -+/* Legal values for d_tag field of Elf32_Dyn. */ -+ -+#define DT_MIPS_RLD_VERSION 0x70000001 /* Runtime linker interface version */ -+#define DT_MIPS_TIME_STAMP 0x70000002 /* Timestamp */ -+#define DT_MIPS_ICHECKSUM 0x70000003 /* Checksum */ -+#define DT_MIPS_IVERSION 0x70000004 /* Version string (string tbl index) */ -+#define DT_MIPS_FLAGS 0x70000005 /* Flags */ -+#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Base address */ -+#define DT_MIPS_MSYM 0x70000007 -+#define DT_MIPS_CONFLICT 0x70000008 /* Address of CONFLICT section */ -+#define DT_MIPS_LIBLIST 0x70000009 /* Address of LIBLIST section */ -+#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* Number of local GOT entries */ -+#define DT_MIPS_CONFLICTNO 0x7000000b /* Number of CONFLICT entries */ -+#define DT_MIPS_LIBLISTNO 0x70000010 /* Number of LIBLIST entries */ -+#define DT_MIPS_SYMTABNO 0x70000011 /* Number of DYNSYM entries */ -+#define DT_MIPS_UNREFEXTNO 0x70000012 /* First external DYNSYM */ -+#define DT_MIPS_GOTSYM 0x70000013 /* First GOT entry in DYNSYM */ -+#define DT_MIPS_HIPAGENO 0x70000014 /* Number of GOT page table entries */ -+#define DT_MIPS_RLD_MAP 0x70000016 /* Address of run time loader map. */ -+#define DT_MIPS_DELTA_CLASS 0x70000017 /* Delta C++ class definition. */ -+#define DT_MIPS_DELTA_CLASS_NO 0x70000018 /* Number of entries in -+ DT_MIPS_DELTA_CLASS. */ -+#define DT_MIPS_DELTA_INSTANCE 0x70000019 /* Delta C++ class instances. */ -+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in -+ DT_MIPS_DELTA_INSTANCE. */ -+#define DT_MIPS_DELTA_RELOC 0x7000001b /* Delta relocations. */ -+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in -+ DT_MIPS_DELTA_RELOC. */ -+#define DT_MIPS_DELTA_SYM 0x7000001d /* Delta symbols that Delta -+ relocations refer to. */ -+#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in -+ DT_MIPS_DELTA_SYM. */ -+#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the -+ class declaration. */ -+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in -+ DT_MIPS_DELTA_CLASSSYM. */ -+#define DT_MIPS_CXX_FLAGS 0x70000022 /* Flags indicating for C++ flavor. */ -+#define DT_MIPS_PIXIE_INIT 0x70000023 -+#define DT_MIPS_SYMBOL_LIB 0x70000024 -+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -+#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -+#define DT_MIPS_OPTIONS 0x70000029 /* Address of .options. */ -+#define DT_MIPS_INTERFACE 0x7000002a /* Address of .interface. */ -+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -+#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve -+ function stored in GOT. */ -+#define DT_MIPS_PERF_SUFFIX 0x7000002e /* Default suffix of dso to be added -+ by rld on dlopen() calls. */ -+#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -+#define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */ -+#define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */ -+/* The address of .got.plt in an executable using the new non-PIC ABI. */ -+#define DT_MIPS_PLTGOT 0x70000032 -+/* The base of the PLT in an executable using the new non-PIC ABI if that -+ PLT is writable. For a non-writable PLT, this is omitted or has a zero -+ value. */ -+#define DT_MIPS_RWPLT 0x70000034 -+#define DT_MIPS_NUM 0x35 -+ -+/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ -+ -+#define RHF_NONE 0 /* No flags */ -+#define RHF_QUICKSTART (1 << 0) /* Use quickstart */ -+#define RHF_NOTPOT (1 << 1) /* Hash size not power of 2 */ -+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) /* Ignore LD_LIBRARY_PATH */ -+#define RHF_NO_MOVE (1 << 3) -+#define RHF_SGI_ONLY (1 << 4) -+#define RHF_GUARANTEE_INIT (1 << 5) -+#define RHF_DELTA_C_PLUS_PLUS (1 << 6) -+#define RHF_GUARANTEE_START_INIT (1 << 7) -+#define RHF_PIXIE (1 << 8) -+#define RHF_DEFAULT_DELAY_LOAD (1 << 9) -+#define RHF_REQUICKSTART (1 << 10) -+#define RHF_REQUICKSTARTED (1 << 11) -+#define RHF_CORD (1 << 12) -+#define RHF_NO_UNRES_UNDEF (1 << 13) -+#define RHF_RLD_ORDER_SAFE (1 << 14) -+ -+/* Entries found in sections of type SHT_MIPS_LIBLIST. */ -+ -+typedef struct -+{ -+ Elf32_Word l_name; /* Name (string table index) */ -+ Elf32_Word l_time_stamp; /* Timestamp */ -+ Elf32_Word l_checksum; /* Checksum */ -+ Elf32_Word l_version; /* Interface version */ -+ Elf32_Word l_flags; /* Flags */ -+} Elf32_Lib; -+ -+typedef struct -+{ -+ Elf64_Word l_name; /* Name (string table index) */ -+ Elf64_Word l_time_stamp; /* Timestamp */ -+ Elf64_Word l_checksum; /* Checksum */ -+ Elf64_Word l_version; /* Interface version */ -+ Elf64_Word l_flags; /* Flags */ -+} Elf64_Lib; -+ -+ -+/* Legal values for l_flags. */ -+ -+#define LL_NONE 0 -+#define LL_EXACT_MATCH (1 << 0) /* Require exact match */ -+#define LL_IGNORE_INT_VER (1 << 1) /* Ignore interface version */ -+#define LL_REQUIRE_MINOR (1 << 2) -+#define LL_EXPORTS (1 << 3) -+#define LL_DELAY_LOAD (1 << 4) -+#define LL_DELTA (1 << 5) -+ -+/* Entries found in sections of type SHT_MIPS_CONFLICT. */ -+ -+typedef Elf32_Addr Elf32_Conflict; -+ -+ -+/* HPPA specific definitions. */ -+ -+/* Legal values for e_flags field of Elf32_Ehdr. */ -+ -+#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */ -+#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */ -+#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */ -+#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */ -+#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch -+ prediction. */ -+#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */ -+#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. */ -+ -+/* Defined values for `e_flags & EF_PARISC_ARCH' are: */ -+ -+#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */ -+#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */ -+#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */ -+ -+/* Additional section indeces. */ -+ -+#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared -+ symbols in ANSI C. */ -+#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */ -+ -+/* Legal values for sh_type field of Elf32_Shdr. */ -+ -+#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */ -+#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */ -+#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. */ -+ -+/* Legal values for sh_flags field of Elf32_Shdr. */ -+ -+#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */ -+#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */ -+#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. */ -+ -+/* Legal values for ST_TYPE subfield of st_info (symbol type). */ -+ -+#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */ -+ -+#define STT_HP_OPAQUE (STT_LOOS + 0x1) -+#define STT_HP_STUB (STT_LOOS + 0x2) -+ -+/* HPPA relocs. */ -+ -+#define R_PARISC_NONE 0 /* No reloc. */ -+#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */ -+#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */ -+#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */ -+#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */ -+#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */ -+#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */ -+#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */ -+#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */ -+#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */ -+#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */ -+#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */ -+#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */ -+#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */ -+#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */ -+#define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */ -+#define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */ -+#define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */ -+#define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */ -+#define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */ -+#define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */ -+#define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */ -+#define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */ -+#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ -+#define R_PARISC_FPTR64 64 /* 64 bits function address. */ -+#define R_PARISC_PLABEL32 65 /* 32 bits function address. */ -+#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ -+#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ -+#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ -+#define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */ -+#define R_PARISC_PCREL16F 77 /* 16 bits PC-rel. address. */ -+#define R_PARISC_PCREL16WF 78 /* 16 bits PC-rel. address. */ -+#define R_PARISC_PCREL16DF 79 /* 16 bits PC-rel. address. */ -+#define R_PARISC_DIR64 80 /* 64 bits of eff. address. */ -+#define R_PARISC_DIR14WR 83 /* 14 bits of eff. address. */ -+#define R_PARISC_DIR14DR 84 /* 14 bits of eff. address. */ -+#define R_PARISC_DIR16F 85 /* 16 bits of eff. address. */ -+#define R_PARISC_DIR16WF 86 /* 16 bits of eff. address. */ -+#define R_PARISC_DIR16DF 87 /* 16 bits of eff. address. */ -+#define R_PARISC_GPREL64 88 /* 64 bits of GP-rel. address. */ -+#define R_PARISC_GPREL14WR 91 /* GP-rel. address, right 14 bits. */ -+#define R_PARISC_GPREL14DR 92 /* GP-rel. address, right 14 bits. */ -+#define R_PARISC_GPREL16F 93 /* 16 bits GP-rel. address. */ -+#define R_PARISC_GPREL16WF 94 /* 16 bits GP-rel. address. */ -+#define R_PARISC_GPREL16DF 95 /* 16 bits GP-rel. address. */ -+#define R_PARISC_LTOFF64 96 /* 64 bits LT-rel. address. */ -+#define R_PARISC_LTOFF14WR 99 /* LT-rel. address, right 14 bits. */ -+#define R_PARISC_LTOFF14DR 100 /* LT-rel. address, right 14 bits. */ -+#define R_PARISC_LTOFF16F 101 /* 16 bits LT-rel. address. */ -+#define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */ -+#define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */ -+#define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */ -+#define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */ -+#define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */ -+#define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */ -+#define R_PARISC_PLTOFF16F 117 /* 16 bits LT-rel. address. */ -+#define R_PARISC_PLTOFF16WF 118 /* 16 bits PLT-rel. address. */ -+#define R_PARISC_PLTOFF16DF 119 /* 16 bits PLT-rel. address. */ -+#define R_PARISC_LTOFF_FPTR64 120 /* 64 bits LT-rel. function ptr. */ -+#define R_PARISC_LTOFF_FPTR14WR 123 /* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR14DR 124 /* LT-rel. fct. ptr., right 14 bits. */ -+#define R_PARISC_LTOFF_FPTR16F 125 /* 16 bits LT-rel. function ptr. */ -+#define R_PARISC_LTOFF_FPTR16WF 126 /* 16 bits LT-rel. function ptr. */ -+#define R_PARISC_LTOFF_FPTR16DF 127 /* 16 bits LT-rel. function ptr. */ -+#define R_PARISC_LORESERVE 128 -+#define R_PARISC_COPY 128 /* Copy relocation. */ -+#define R_PARISC_IPLT 129 /* Dynamic reloc, imported PLT */ -+#define R_PARISC_EPLT 130 /* Dynamic reloc, exported PLT */ -+#define R_PARISC_TPREL32 153 /* 32 bits TP-rel. address. */ -+#define R_PARISC_TPREL21L 154 /* TP-rel. address, left 21 bits. */ -+#define R_PARISC_TPREL14R 158 /* TP-rel. address, right 14 bits. */ -+#define R_PARISC_LTOFF_TP21L 162 /* LT-TP-rel. address, left 21 bits. */ -+#define R_PARISC_LTOFF_TP14R 166 /* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14F 167 /* 14 bits LT-TP-rel. address. */ -+#define R_PARISC_TPREL64 216 /* 64 bits TP-rel. address. */ -+#define R_PARISC_TPREL14WR 219 /* TP-rel. address, right 14 bits. */ -+#define R_PARISC_TPREL14DR 220 /* TP-rel. address, right 14 bits. */ -+#define R_PARISC_TPREL16F 221 /* 16 bits TP-rel. address. */ -+#define R_PARISC_TPREL16WF 222 /* 16 bits TP-rel. address. */ -+#define R_PARISC_TPREL16DF 223 /* 16 bits TP-rel. address. */ -+#define R_PARISC_LTOFF_TP64 224 /* 64 bits LT-TP-rel. address. */ -+#define R_PARISC_LTOFF_TP14WR 227 /* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP14DR 228 /* LT-TP-rel. address, right 14 bits.*/ -+#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ -+#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ -+#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ -+#define R_PARISC_HIRESERVE 255 -+ -+/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ -+ -+#define PT_HP_TLS (PT_LOOS + 0x0) -+#define PT_HP_CORE_NONE (PT_LOOS + 0x1) -+#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) -+#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) -+#define PT_HP_CORE_COMM (PT_LOOS + 0x4) -+#define PT_HP_CORE_PROC (PT_LOOS + 0x5) -+#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) -+#define PT_HP_CORE_STACK (PT_LOOS + 0x7) -+#define PT_HP_CORE_SHM (PT_LOOS + 0x8) -+#define PT_HP_CORE_MMF (PT_LOOS + 0x9) -+#define PT_HP_PARALLEL (PT_LOOS + 0x10) -+#define PT_HP_FASTBIND (PT_LOOS + 0x11) -+#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) -+#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) -+#define PT_HP_STACK (PT_LOOS + 0x14) -+ -+#define PT_PARISC_ARCHEXT 0x70000000 -+#define PT_PARISC_UNWIND 0x70000001 -+ -+/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */ -+ -+#define PF_PARISC_SBP 0x08000000 -+ -+#define PF_HP_PAGE_SIZE 0x00100000 -+#define PF_HP_FAR_SHARED 0x00200000 -+#define PF_HP_NEAR_SHARED 0x00400000 -+#define PF_HP_CODE 0x01000000 -+#define PF_HP_MODIFY 0x02000000 -+#define PF_HP_LAZYSWAP 0x04000000 -+#define PF_HP_SBP 0x08000000 -+ -+ -+/* Alpha specific definitions. */ -+ -+/* Legal values for e_flags field of Elf64_Ehdr. */ -+ -+#define EF_ALPHA_32BIT 1 /* All addresses must be < 2GB. */ -+#define EF_ALPHA_CANRELAX 2 /* Relocations for relaxing exist. */ -+ -+/* Legal values for sh_type field of Elf64_Shdr. */ -+ -+/* These two are primerily concerned with ECOFF debugging info. */ -+#define SHT_ALPHA_DEBUG 0x70000001 -+#define SHT_ALPHA_REGINFO 0x70000002 -+ -+/* Legal values for sh_flags field of Elf64_Shdr. */ -+ -+#define SHF_ALPHA_GPREL 0x10000000 -+ -+/* Legal values for st_other field of Elf64_Sym. */ -+#define STO_ALPHA_NOPV 0x80 /* No PV required. */ -+#define STO_ALPHA_STD_GPLOAD 0x88 /* PV only used for initial ldgp. */ -+ -+/* Alpha relocs. */ -+ -+#define R_ALPHA_NONE 0 /* No reloc */ -+#define R_ALPHA_REFLONG 1 /* Direct 32 bit */ -+#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ -+#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ -+#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ -+#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ -+#define R_ALPHA_GPDISP 6 /* Add displacement to GP */ -+#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ -+#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ -+#define R_ALPHA_SREL16 9 /* PC relative 16 bit */ -+#define R_ALPHA_SREL32 10 /* PC relative 32 bit */ -+#define R_ALPHA_SREL64 11 /* PC relative 64 bit */ -+#define R_ALPHA_GPRELHIGH 17 /* GP relative 32 bit, high 16 bits */ -+#define R_ALPHA_GPRELLOW 18 /* GP relative 32 bit, low 16 bits */ -+#define R_ALPHA_GPREL16 19 /* GP relative 16 bit */ -+#define R_ALPHA_COPY 24 /* Copy symbol at runtime */ -+#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ -+#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ -+#define R_ALPHA_RELATIVE 27 /* Adjust by program base */ -+#define R_ALPHA_TLS_GD_HI 28 -+#define R_ALPHA_TLSGD 29 -+#define R_ALPHA_TLS_LDM 30 -+#define R_ALPHA_DTPMOD64 31 -+#define R_ALPHA_GOTDTPREL 32 -+#define R_ALPHA_DTPREL64 33 -+#define R_ALPHA_DTPRELHI 34 -+#define R_ALPHA_DTPRELLO 35 -+#define R_ALPHA_DTPREL16 36 -+#define R_ALPHA_GOTTPREL 37 -+#define R_ALPHA_TPREL64 38 -+#define R_ALPHA_TPRELHI 39 -+#define R_ALPHA_TPRELLO 40 -+#define R_ALPHA_TPREL16 41 -+/* Keep this the last entry. */ -+#define R_ALPHA_NUM 46 -+ -+/* Magic values of the LITUSE relocation addend. */ -+#define LITUSE_ALPHA_ADDR 0 -+#define LITUSE_ALPHA_BASE 1 -+#define LITUSE_ALPHA_BYTOFF 2 -+#define LITUSE_ALPHA_JSR 3 -+#define LITUSE_ALPHA_TLS_GD 4 -+#define LITUSE_ALPHA_TLS_LDM 5 -+ -+/* Legal values for d_tag of Elf64_Dyn. */ -+#define DT_ALPHA_PLTRO (DT_LOPROC + 0) -+#define DT_ALPHA_NUM 1 -+ -+/* PowerPC specific declarations */ -+ -+/* Values for Elf32/64_Ehdr.e_flags. */ -+#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */ -+ -+/* Cygnus local bits below */ -+#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/ -+#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib -+ flag */ -+ -+/* PowerPC relocations defined by the ABIs */ -+#define R_PPC_NONE 0 -+#define R_PPC_ADDR32 1 /* 32bit absolute address */ -+#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */ -+#define R_PPC_ADDR16 3 /* 16bit absolute address */ -+#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */ -+#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */ -+#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */ -+#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */ -+#define R_PPC_ADDR14_BRTAKEN 8 -+#define R_PPC_ADDR14_BRNTAKEN 9 -+#define R_PPC_REL24 10 /* PC relative 26 bit */ -+#define R_PPC_REL14 11 /* PC relative 16 bit */ -+#define R_PPC_REL14_BRTAKEN 12 -+#define R_PPC_REL14_BRNTAKEN 13 -+#define R_PPC_GOT16 14 -+#define R_PPC_GOT16_LO 15 -+#define R_PPC_GOT16_HI 16 -+#define R_PPC_GOT16_HA 17 -+#define R_PPC_PLTREL24 18 -+#define R_PPC_COPY 19 -+#define R_PPC_GLOB_DAT 20 -+#define R_PPC_JMP_SLOT 21 -+#define R_PPC_RELATIVE 22 -+#define R_PPC_LOCAL24PC 23 -+#define R_PPC_UADDR32 24 -+#define R_PPC_UADDR16 25 -+#define R_PPC_REL32 26 -+#define R_PPC_PLT32 27 -+#define R_PPC_PLTREL32 28 -+#define R_PPC_PLT16_LO 29 -+#define R_PPC_PLT16_HI 30 -+#define R_PPC_PLT16_HA 31 -+#define R_PPC_SDAREL16 32 -+#define R_PPC_SECTOFF 33 -+#define R_PPC_SECTOFF_LO 34 -+#define R_PPC_SECTOFF_HI 35 -+#define R_PPC_SECTOFF_HA 36 -+ -+/* PowerPC relocations defined for the TLS access ABI. */ -+#define R_PPC_TLS 67 /* none (sym+add)@tls */ -+#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */ -+#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */ -+#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ -+#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ -+#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ -+#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */ -+#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */ -+#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ -+#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ -+#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ -+#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */ -+#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ -+#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ -+#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ -+#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ -+#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ -+#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ -+#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ -+#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ -+#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */ -+#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */ -+#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ -+#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ -+#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */ -+#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */ -+#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */ -+#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */ -+ -+/* Keep this the last entry. */ -+#define R_PPC_NUM 95 -+ -+/* The remaining relocs are from the Embedded ELF ABI, and are not -+ in the SVR4 ELF ABI. */ -+#define R_PPC_EMB_NADDR32 101 -+#define R_PPC_EMB_NADDR16 102 -+#define R_PPC_EMB_NADDR16_LO 103 -+#define R_PPC_EMB_NADDR16_HI 104 -+#define R_PPC_EMB_NADDR16_HA 105 -+#define R_PPC_EMB_SDAI16 106 -+#define R_PPC_EMB_SDA2I16 107 -+#define R_PPC_EMB_SDA2REL 108 -+#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */ -+#define R_PPC_EMB_MRKREF 110 -+#define R_PPC_EMB_RELSEC16 111 -+#define R_PPC_EMB_RELST_LO 112 -+#define R_PPC_EMB_RELST_HI 113 -+#define R_PPC_EMB_RELST_HA 114 -+#define R_PPC_EMB_BIT_FLD 115 -+#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */ -+ -+/* Diab tool relocations. */ -+#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */ -+#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */ -+#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */ -+#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */ -+#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */ -+#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */ -+ -+/* GNU relocs used in PIC code sequences. */ -+#define R_PPC_REL16 249 /* word32 (sym+add-.) */ -+#define R_PPC_REL16_LO 250 /* half16 (sym+add-.)@l */ -+#define R_PPC_REL16_HI 251 /* half16 (sym+add-.)@h */ -+#define R_PPC_REL16_HA 252 /* half16 (sym+add-.)@ha */ -+ -+/* This is a phony reloc to handle any old fashioned TOC16 references -+ that may still be in object files. */ -+#define R_PPC_TOC16 255 -+ -+/* PowerPC specific values for the Dyn d_tag field. */ -+#define DT_PPC_GOT (DT_LOPROC + 0) -+#define DT_PPC_NUM 1 -+ -+/* PowerPC64 relocations defined by the ABIs */ -+#define R_PPC64_NONE R_PPC_NONE -+#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */ -+#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */ -+#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */ -+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */ -+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */ -+#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */ -+#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */ -+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN -+#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN -+#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -+#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */ -+#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN -+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN -+#define R_PPC64_GOT16 R_PPC_GOT16 -+#define R_PPC64_GOT16_LO R_PPC_GOT16_LO -+#define R_PPC64_GOT16_HI R_PPC_GOT16_HI -+#define R_PPC64_GOT16_HA R_PPC_GOT16_HA -+ -+#define R_PPC64_COPY R_PPC_COPY -+#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT -+#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT -+#define R_PPC64_RELATIVE R_PPC_RELATIVE -+ -+#define R_PPC64_UADDR32 R_PPC_UADDR32 -+#define R_PPC64_UADDR16 R_PPC_UADDR16 -+#define R_PPC64_REL32 R_PPC_REL32 -+#define R_PPC64_PLT32 R_PPC_PLT32 -+#define R_PPC64_PLTREL32 R_PPC_PLTREL32 -+#define R_PPC64_PLT16_LO R_PPC_PLT16_LO -+#define R_PPC64_PLT16_HI R_PPC_PLT16_HI -+#define R_PPC64_PLT16_HA R_PPC_PLT16_HA -+ -+#define R_PPC64_SECTOFF R_PPC_SECTOFF -+#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO -+#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI -+#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA -+#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */ -+#define R_PPC64_ADDR64 38 /* doubleword64 S + A */ -+#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */ -+#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ -+#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ -+#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */ -+#define R_PPC64_UADDR64 43 /* doubleword64 S + A */ -+#define R_PPC64_REL64 44 /* doubleword64 S + A - P */ -+#define R_PPC64_PLT64 45 /* doubleword64 L + A */ -+#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */ -+#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */ -+#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */ -+#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */ -+#define R_PPC64_TOC 51 /* doubleword64 .TOC */ -+#define R_PPC64_PLTGOT16 52 /* half16* M + A */ -+#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */ -+#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */ -+#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */ -+ -+#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */ -+#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */ -+#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */ -+#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */ -+#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */ -+#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */ -+#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */ -+#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */ -+#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */ -+#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */ -+#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */ -+ -+/* PowerPC64 relocations defined for the TLS access ABI. */ -+#define R_PPC64_TLS 67 /* none (sym+add)@tls */ -+#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */ -+#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ -+#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ -+#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */ -+#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ -+#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ -+#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */ -+#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ -+#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ -+#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ -+#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ -+#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ -+#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ -+#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ -+#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ -+#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ -+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -+#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ -+#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ -+#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */ -+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -+#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */ -+#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */ -+#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */ -+#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */ -+#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */ -+#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */ -+#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */ -+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ -+#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */ -+#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ -+#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */ -+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ -+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ -+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ -+ -+/* Keep this the last entry. */ -+#define R_PPC64_NUM 107 -+ -+/* PowerPC64 specific values for the Dyn d_tag field. */ -+#define DT_PPC64_GLINK (DT_LOPROC + 0) -+#define DT_PPC64_OPD (DT_LOPROC + 1) -+#define DT_PPC64_OPDSZ (DT_LOPROC + 2) -+#define DT_PPC64_NUM 3 -+ -+ -+/* ARM specific declarations */ -+ -+/* Processor specific flags for the ELF header e_flags field. */ -+#define EF_ARM_RELEXEC 0x01 -+#define EF_ARM_HASENTRY 0x02 -+#define EF_ARM_INTERWORK 0x04 -+#define EF_ARM_APCS_26 0x08 -+#define EF_ARM_APCS_FLOAT 0x10 -+#define EF_ARM_PIC 0x20 -+#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */ -+#define EF_ARM_NEW_ABI 0x80 -+#define EF_ARM_OLD_ABI 0x100 -+ -+/* Other constants defined in the ARM ELF spec. version B-01. */ -+/* NB. These conflict with values defined above. */ -+#define EF_ARM_SYMSARESORTED 0x04 -+#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -+#define EF_ARM_MAPSYMSFIRST 0x10 -+#define EF_ARM_EABIMASK 0XFF000000 -+ -+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -+#define EF_ARM_EABI_UNKNOWN 0x00000000 -+#define EF_ARM_EABI_VER1 0x01000000 -+#define EF_ARM_EABI_VER2 0x02000000 -+ -+/* Additional symbol types for Thumb */ -+#define STT_ARM_TFUNC 0xd -+ -+/* ARM-specific values for sh_flags */ -+#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */ -+#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined -+ in the input to a link step */ -+ -+/* ARM-specific program header flags */ -+#define PF_ARM_SB 0x10000000 /* Segment contains the location -+ addressed by the static base */ -+ -+/* Processor specific values for the Phdr p_type field. */ -+#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */ -+ -+/* ARM relocs. */ -+ -+#define R_ARM_NONE 0 /* No reloc */ -+#define R_ARM_PC24 1 /* PC relative 26 bit branch */ -+#define R_ARM_ABS32 2 /* Direct 32 bit */ -+#define R_ARM_REL32 3 /* PC relative 32 bit */ -+#define R_ARM_PC13 4 -+#define R_ARM_ABS16 5 /* Direct 16 bit */ -+#define R_ARM_ABS12 6 /* Direct 12 bit */ -+#define R_ARM_THM_ABS5 7 -+#define R_ARM_ABS8 8 /* Direct 8 bit */ -+#define R_ARM_SBREL32 9 -+#define R_ARM_THM_PC22 10 -+#define R_ARM_THM_PC8 11 -+#define R_ARM_AMP_VCALL9 12 -+#define R_ARM_SWI24 13 -+#define R_ARM_THM_SWI8 14 -+#define R_ARM_XPC25 15 -+#define R_ARM_THM_XPC22 16 -+#define R_ARM_TLS_DTPMOD32 17 -+#define R_ARM_TLS_DTPOFF32 18 -+#define R_ARM_TLS_TPOFF32 19 -+#define R_ARM_COPY 20 /* Copy symbol at runtime */ -+#define R_ARM_GLOB_DAT 21 /* Create GOT entry */ -+#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */ -+#define R_ARM_RELATIVE 23 /* Adjust by program base */ -+#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */ -+#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */ -+#define R_ARM_GOT32 26 /* 32 bit GOT entry */ -+#define R_ARM_PLT32 27 /* 32 bit PLT address */ -+#define R_ARM_ALU_PCREL_7_0 32 -+#define R_ARM_ALU_PCREL_15_8 33 -+#define R_ARM_ALU_PCREL_23_15 34 -+#define R_ARM_LDR_SBREL_11_0 35 -+#define R_ARM_ALU_SBREL_19_12 36 -+#define R_ARM_ALU_SBREL_27_20 37 -+#define R_ARM_GNU_VTENTRY 100 -+#define R_ARM_GNU_VTINHERIT 101 -+#define R_ARM_THM_PC11 102 /* thumb unconditional branch */ -+#define R_ARM_THM_PC9 103 /* thumb conditional branch */ -+#define R_ARM_TLS_GD32 104 -+#define R_ARM_TLS_LDM32 105 -+#define R_ARM_TLS_LDO32 106 -+#define R_ARM_TLS_IE32 107 -+#define R_ARM_TLS_LE32 108 -+#define R_ARM_TLS_LDO12 109 -+#define R_ARM_TLS_LE12 110 -+#define R_ARM_TLS_IE12GP 111 -+#define R_ARM_RXPC25 249 -+#define R_ARM_RSBREL32 250 -+#define R_ARM_THM_RPC22 251 -+#define R_ARM_RREL32 252 -+#define R_ARM_RABS22 253 -+#define R_ARM_RPC24 254 -+#define R_ARM_RBASE 255 -+/* Keep this the last entry. */ -+#define R_ARM_NUM 256 -+ -+/* IA-64 specific declarations. */ -+ -+/* Processor specific flags for the Ehdr e_flags field. */ -+#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */ -+#define EF_IA_64_ABI64 0x00000010 /* 64-bit ABI */ -+#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */ -+ -+/* Processor specific values for the Phdr p_type field. */ -+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */ -+#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */ -+#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) -+#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) -+#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) -+ -+/* Processor specific flags for the Phdr p_flags field. */ -+#define PF_IA_64_NORECOV 0x80000000 /* spec insns w/o recovery */ -+ -+/* Processor specific values for the Shdr sh_type field. */ -+#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */ -+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */ -+ -+/* Processor specific flags for the Shdr sh_flags field. */ -+#define SHF_IA_64_SHORT 0x10000000 /* section near gp */ -+#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */ -+ -+/* Processor specific values for the Dyn d_tag field. */ -+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) -+#define DT_IA_64_NUM 1 -+ -+/* IA-64 relocations. */ -+#define R_IA64_NONE 0x00 /* none */ -+#define R_IA64_IMM14 0x21 /* symbol + addend, add imm14 */ -+#define R_IA64_IMM22 0x22 /* symbol + addend, add imm22 */ -+#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */ -+#define R_IA64_DIR32MSB 0x24 /* symbol + addend, data4 MSB */ -+#define R_IA64_DIR32LSB 0x25 /* symbol + addend, data4 LSB */ -+#define R_IA64_DIR64MSB 0x26 /* symbol + addend, data8 MSB */ -+#define R_IA64_DIR64LSB 0x27 /* symbol + addend, data8 LSB */ -+#define R_IA64_GPREL22 0x2a /* @gprel(sym + add), add imm22 */ -+#define R_IA64_GPREL64I 0x2b /* @gprel(sym + add), mov imm64 */ -+#define R_IA64_GPREL32MSB 0x2c /* @gprel(sym + add), data4 MSB */ -+#define R_IA64_GPREL32LSB 0x2d /* @gprel(sym + add), data4 LSB */ -+#define R_IA64_GPREL64MSB 0x2e /* @gprel(sym + add), data8 MSB */ -+#define R_IA64_GPREL64LSB 0x2f /* @gprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF22 0x32 /* @ltoff(sym + add), add imm22 */ -+#define R_IA64_LTOFF64I 0x33 /* @ltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF22 0x3a /* @pltoff(sym + add), add imm22 */ -+#define R_IA64_PLTOFF64I 0x3b /* @pltoff(sym + add), mov imm64 */ -+#define R_IA64_PLTOFF64MSB 0x3e /* @pltoff(sym + add), data8 MSB */ -+#define R_IA64_PLTOFF64LSB 0x3f /* @pltoff(sym + add), data8 LSB */ -+#define R_IA64_FPTR64I 0x43 /* @fptr(sym + add), mov imm64 */ -+#define R_IA64_FPTR32MSB 0x44 /* @fptr(sym + add), data4 MSB */ -+#define R_IA64_FPTR32LSB 0x45 /* @fptr(sym + add), data4 LSB */ -+#define R_IA64_FPTR64MSB 0x46 /* @fptr(sym + add), data8 MSB */ -+#define R_IA64_FPTR64LSB 0x47 /* @fptr(sym + add), data8 LSB */ -+#define R_IA64_PCREL60B 0x48 /* @pcrel(sym + add), brl */ -+#define R_IA64_PCREL21B 0x49 /* @pcrel(sym + add), ptb, call */ -+#define R_IA64_PCREL21M 0x4a /* @pcrel(sym + add), chk.s */ -+#define R_IA64_PCREL21F 0x4b /* @pcrel(sym + add), fchkf */ -+#define R_IA64_PCREL32MSB 0x4c /* @pcrel(sym + add), data4 MSB */ -+#define R_IA64_PCREL32LSB 0x4d /* @pcrel(sym + add), data4 LSB */ -+#define R_IA64_PCREL64MSB 0x4e /* @pcrel(sym + add), data8 MSB */ -+#define R_IA64_PCREL64LSB 0x4f /* @pcrel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_FPTR22 0x52 /* @ltoff(@fptr(s+a)), imm22 */ -+#define R_IA64_LTOFF_FPTR64I 0x53 /* @ltoff(@fptr(s+a)), imm64 */ -+#define R_IA64_LTOFF_FPTR32MSB 0x54 /* @ltoff(@fptr(s+a)), data4 MSB */ -+#define R_IA64_LTOFF_FPTR32LSB 0x55 /* @ltoff(@fptr(s+a)), data4 LSB */ -+#define R_IA64_LTOFF_FPTR64MSB 0x56 /* @ltoff(@fptr(s+a)), data8 MSB */ -+#define R_IA64_LTOFF_FPTR64LSB 0x57 /* @ltoff(@fptr(s+a)), data8 LSB */ -+#define R_IA64_SEGREL32MSB 0x5c /* @segrel(sym + add), data4 MSB */ -+#define R_IA64_SEGREL32LSB 0x5d /* @segrel(sym + add), data4 LSB */ -+#define R_IA64_SEGREL64MSB 0x5e /* @segrel(sym + add), data8 MSB */ -+#define R_IA64_SEGREL64LSB 0x5f /* @segrel(sym + add), data8 LSB */ -+#define R_IA64_SECREL32MSB 0x64 /* @secrel(sym + add), data4 MSB */ -+#define R_IA64_SECREL32LSB 0x65 /* @secrel(sym + add), data4 LSB */ -+#define R_IA64_SECREL64MSB 0x66 /* @secrel(sym + add), data8 MSB */ -+#define R_IA64_SECREL64LSB 0x67 /* @secrel(sym + add), data8 LSB */ -+#define R_IA64_REL32MSB 0x6c /* data 4 + REL */ -+#define R_IA64_REL32LSB 0x6d /* data 4 + REL */ -+#define R_IA64_REL64MSB 0x6e /* data 8 + REL */ -+#define R_IA64_REL64LSB 0x6f /* data 8 + REL */ -+#define R_IA64_LTV32MSB 0x74 /* symbol + addend, data4 MSB */ -+#define R_IA64_LTV32LSB 0x75 /* symbol + addend, data4 LSB */ -+#define R_IA64_LTV64MSB 0x76 /* symbol + addend, data8 MSB */ -+#define R_IA64_LTV64LSB 0x77 /* symbol + addend, data8 LSB */ -+#define R_IA64_PCREL21BI 0x79 /* @pcrel(sym + add), 21bit inst */ -+#define R_IA64_PCREL22 0x7a /* @pcrel(sym + add), 22bit inst */ -+#define R_IA64_PCREL64I 0x7b /* @pcrel(sym + add), 64bit inst */ -+#define R_IA64_IPLTMSB 0x80 /* dynamic reloc, imported PLT, MSB */ -+#define R_IA64_IPLTLSB 0x81 /* dynamic reloc, imported PLT, LSB */ -+#define R_IA64_COPY 0x84 /* copy relocation */ -+#define R_IA64_SUB 0x85 /* Addend and symbol difference */ -+#define R_IA64_LTOFF22X 0x86 /* LTOFF22, relaxable. */ -+#define R_IA64_LDXMOV 0x87 /* Use of LTOFF22X. */ -+#define R_IA64_TPREL14 0x91 /* @tprel(sym + add), imm14 */ -+#define R_IA64_TPREL22 0x92 /* @tprel(sym + add), imm22 */ -+#define R_IA64_TPREL64I 0x93 /* @tprel(sym + add), imm64 */ -+#define R_IA64_TPREL64MSB 0x96 /* @tprel(sym + add), data8 MSB */ -+#define R_IA64_TPREL64LSB 0x97 /* @tprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_TPREL22 0x9a /* @ltoff(@tprel(s+a)), imm2 */ -+#define R_IA64_DTPMOD64MSB 0xa6 /* @dtpmod(sym + add), data8 MSB */ -+#define R_IA64_DTPMOD64LSB 0xa7 /* @dtpmod(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPMOD22 0xaa /* @ltoff(@dtpmod(sym + add)), imm22 */ -+#define R_IA64_DTPREL14 0xb1 /* @dtprel(sym + add), imm14 */ -+#define R_IA64_DTPREL22 0xb2 /* @dtprel(sym + add), imm22 */ -+#define R_IA64_DTPREL64I 0xb3 /* @dtprel(sym + add), imm64 */ -+#define R_IA64_DTPREL32MSB 0xb4 /* @dtprel(sym + add), data4 MSB */ -+#define R_IA64_DTPREL32LSB 0xb5 /* @dtprel(sym + add), data4 LSB */ -+#define R_IA64_DTPREL64MSB 0xb6 /* @dtprel(sym + add), data8 MSB */ -+#define R_IA64_DTPREL64LSB 0xb7 /* @dtprel(sym + add), data8 LSB */ -+#define R_IA64_LTOFF_DTPREL22 0xba /* @ltoff(@dtprel(s+a)), imm22 */ -+ -+/* SH specific declarations */ -+ -+/* SH specific values for `st_other'. */ -+ -+/* If set, this is a symbol pointing to SHmedia code, which will be branched -+ to, so need to add 1 to the symbol value. */ -+#define STO_SH5_ISA32 (1 << 2) -+ -+/* SH relocs. */ -+#define R_SH_NONE 0 -+#define R_SH_DIR32 1 -+#define R_SH_REL32 2 -+#define R_SH_DIR8WPN 3 -+#define R_SH_IND12W 4 -+#define R_SH_DIR8WPL 5 -+#define R_SH_DIR8WPZ 6 -+#define R_SH_DIR8BP 7 -+#define R_SH_DIR8W 8 -+#define R_SH_DIR8L 9 -+#define R_SH_SWITCH16 25 -+#define R_SH_SWITCH32 26 -+#define R_SH_USES 27 -+#define R_SH_COUNT 28 -+#define R_SH_ALIGN 29 -+#define R_SH_CODE 30 -+#define R_SH_DATA 31 -+#define R_SH_LABEL 32 -+#define R_SH_SWITCH8 33 -+#define R_SH_GNU_VTINHERIT 34 -+#define R_SH_GNU_VTENTRY 35 -+#define R_SH_TLS_GD_32 144 -+#define R_SH_TLS_LD_32 145 -+#define R_SH_TLS_LDO_32 146 -+#define R_SH_TLS_IE_32 147 -+#define R_SH_TLS_LE_32 148 -+#define R_SH_TLS_DTPMOD32 149 -+#define R_SH_TLS_DTPOFF32 150 -+#define R_SH_TLS_TPOFF32 151 -+#define R_SH_GOT32 160 -+#define R_SH_PLT32 161 -+#define R_SH_COPY 162 -+#define R_SH_GLOB_DAT 163 -+#define R_SH_JMP_SLOT 164 -+#define R_SH_RELATIVE 165 -+#define R_SH_GOTOFF 166 -+#define R_SH_GOTPC 167 -+#define R_SH_RELATIVE_LOW16 197 -+#define R_SH_RELATIVE_MEDLOW16 198 -+#define R_SH_IMM_LOW16 246 -+#define R_SH_IMM_LOW16_PCREL 247 -+#define R_SH_IMM_MEDLOW16 248 -+#define R_SH_IMM_MEDLOW16_PCREL 249 -+ -+/* Keep this the last entry. */ -+#define R_SH_NUM 256 -+ -+/* Additional s390 relocs */ -+ -+#define R_390_NONE 0 /* No reloc. */ -+#define R_390_8 1 /* Direct 8 bit. */ -+#define R_390_12 2 /* Direct 12 bit. */ -+#define R_390_16 3 /* Direct 16 bit. */ -+#define R_390_32 4 /* Direct 32 bit. */ -+#define R_390_PC32 5 /* PC relative 32 bit. */ -+#define R_390_GOT12 6 /* 12 bit GOT offset. */ -+#define R_390_GOT32 7 /* 32 bit GOT offset. */ -+#define R_390_PLT32 8 /* 32 bit PC relative PLT address. */ -+#define R_390_COPY 9 /* Copy symbol at runtime. */ -+#define R_390_GLOB_DAT 10 /* Create GOT entry. */ -+#define R_390_JMP_SLOT 11 /* Create PLT entry. */ -+#define R_390_RELATIVE 12 /* Adjust by program base. */ -+#define R_390_GOTOFF32 13 /* 32 bit offset to GOT. */ -+#define R_390_GOTPC 14 /* 32 bit PC relative offset to GOT. */ -+#define R_390_GOT16 15 /* 16 bit GOT offset. */ -+#define R_390_PC16 16 /* PC relative 16 bit. */ -+#define R_390_PC16DBL 17 /* PC relative 16 bit shifted by 1. */ -+#define R_390_PLT16DBL 18 /* 16 bit PC rel. PLT shifted by 1. */ -+#define R_390_PC32DBL 19 /* PC relative 32 bit shifted by 1. */ -+#define R_390_PLT32DBL 20 /* 32 bit PC rel. PLT shifted by 1. */ -+#define R_390_GOTPCDBL 21 /* 32 bit PC rel. GOT shifted by 1. */ -+#define R_390_64 22 /* Direct 64 bit. */ -+#define R_390_PC64 23 /* PC relative 64 bit. */ -+#define R_390_GOT64 24 /* 64 bit GOT offset. */ -+#define R_390_PLT64 25 /* 64 bit PC relative PLT address. */ -+#define R_390_GOTENT 26 /* 32 bit PC rel. to GOT entry >> 1. */ -+#define R_390_GOTOFF16 27 /* 16 bit offset to GOT. */ -+#define R_390_GOTOFF64 28 /* 64 bit offset to GOT. */ -+#define R_390_GOTPLT12 29 /* 12 bit offset to jump slot. */ -+#define R_390_GOTPLT16 30 /* 16 bit offset to jump slot. */ -+#define R_390_GOTPLT32 31 /* 32 bit offset to jump slot. */ -+#define R_390_GOTPLT64 32 /* 64 bit offset to jump slot. */ -+#define R_390_GOTPLTENT 33 /* 32 bit rel. offset to jump slot. */ -+#define R_390_PLTOFF16 34 /* 16 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF32 35 /* 32 bit offset from GOT to PLT. */ -+#define R_390_PLTOFF64 36 /* 16 bit offset from GOT to PLT. */ -+#define R_390_TLS_LOAD 37 /* Tag for load insn in TLS code. */ -+#define R_390_TLS_GDCALL 38 /* Tag for function call in general -+ dynamic TLS code. */ -+#define R_390_TLS_LDCALL 39 /* Tag for function call in local -+ dynamic TLS code. */ -+#define R_390_TLS_GD32 40 /* Direct 32 bit for general dynamic -+ thread local data. */ -+#define R_390_TLS_GD64 41 /* Direct 64 bit for general dynamic -+ thread local data. */ -+#define R_390_TLS_GOTIE12 42 /* 12 bit GOT offset for static TLS -+ block offset. */ -+#define R_390_TLS_GOTIE32 43 /* 32 bit GOT offset for static TLS -+ block offset. */ -+#define R_390_TLS_GOTIE64 44 /* 64 bit GOT offset for static TLS -+ block offset. */ -+#define R_390_TLS_LDM32 45 /* Direct 32 bit for local dynamic -+ thread local data in LE code. */ -+#define R_390_TLS_LDM64 46 /* Direct 64 bit for local dynamic -+ thread local data in LE code. */ -+#define R_390_TLS_IE32 47 /* 32 bit address of GOT entry for -+ negated static TLS block offset. */ -+#define R_390_TLS_IE64 48 /* 64 bit address of GOT entry for -+ negated static TLS block offset. */ -+#define R_390_TLS_IEENT 49 /* 32 bit rel. offset to GOT entry for -+ negated static TLS block offset. */ -+#define R_390_TLS_LE32 50 /* 32 bit negated offset relative to -+ static TLS block. */ -+#define R_390_TLS_LE64 51 /* 64 bit negated offset relative to -+ static TLS block. */ -+#define R_390_TLS_LDO32 52 /* 32 bit offset relative to TLS -+ block. */ -+#define R_390_TLS_LDO64 53 /* 64 bit offset relative to TLS -+ block. */ -+#define R_390_TLS_DTPMOD 54 /* ID of module containing symbol. */ -+#define R_390_TLS_DTPOFF 55 /* Offset in TLS block. */ -+#define R_390_TLS_TPOFF 56 /* Negated offset in static TLS -+ block. */ -+#define R_390_20 57 /* Direct 20 bit. */ -+#define R_390_GOT20 58 /* 20 bit GOT offset. */ -+#define R_390_GOTPLT20 59 /* 20 bit offset to jump slot. */ -+#define R_390_TLS_GOTIE20 60 /* 20 bit GOT offset for static TLS -+ block offset. */ -+/* Keep this the last entry. */ -+#define R_390_NUM 61 -+ -+ -+/* CRIS flags. */ -+#define EF_CRIS_VARIANT_MASK 0x0000000e -+#define EF_CRIS_VARIANT_ANY_V0_V10 0x00000000 -+#define EF_CRIS_VARIANT_V32 0x00000002 -+#define EF_CRIS_VARIANT_COMMON_V10_V32 0x00000004 -+ -+/* CRIS relocations. */ -+#define R_CRIS_NONE 0 -+#define R_CRIS_8 1 -+#define R_CRIS_16 2 -+#define R_CRIS_32 3 -+#define R_CRIS_8_PCREL 4 -+#define R_CRIS_16_PCREL 5 -+#define R_CRIS_32_PCREL 6 -+#define R_CRIS_GNU_VTINHERIT 7 -+#define R_CRIS_GNU_VTENTRY 8 -+#define R_CRIS_COPY 9 -+#define R_CRIS_GLOB_DAT 10 -+#define R_CRIS_JUMP_SLOT 11 -+#define R_CRIS_RELATIVE 12 -+#define R_CRIS_16_GOT 13 -+#define R_CRIS_32_GOT 14 -+#define R_CRIS_16_GOTPLT 15 -+#define R_CRIS_32_GOTPLT 16 -+#define R_CRIS_32_GOTREL 17 -+#define R_CRIS_32_PLT_GOTREL 18 -+#define R_CRIS_32_PLT_PCREL 19 -+ -+/* Keep this the last entry. */ -+#define R_CRIS_NUM 20 -+ -+ -+/* AMD x86-64 relocations. */ -+#define R_X86_64_NONE 0 /* No reloc */ -+#define R_X86_64_64 1 /* Direct 64 bit */ -+#define R_X86_64_PC32 2 /* PC relative 32 bit signed */ -+#define R_X86_64_GOT32 3 /* 32 bit GOT entry */ -+#define R_X86_64_PLT32 4 /* 32 bit PLT address */ -+#define R_X86_64_COPY 5 /* Copy symbol at runtime */ -+#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */ -+#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */ -+#define R_X86_64_RELATIVE 8 /* Adjust by program base */ -+#define R_X86_64_GOTPCREL 9 /* 32 bit signed PC relative -+ offset to GOT */ -+#define R_X86_64_32 10 /* Direct 32 bit zero extended */ -+#define R_X86_64_32S 11 /* Direct 32 bit sign extended */ -+#define R_X86_64_16 12 /* Direct 16 bit zero extended */ -+#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */ -+#define R_X86_64_8 14 /* Direct 8 bit sign extended */ -+#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */ -+#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ -+#define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */ -+#define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */ -+#define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset -+ to two GOT entries for GD symbol */ -+#define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset -+ to two GOT entries for LD symbol */ -+#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ -+#define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset -+ to GOT entry for IE symbol */ -+#define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */ -+ -+#define R_X86_64_NUM 24 -+ -+ -+/* AM33 relocations. */ -+#define R_MN10300_NONE 0 /* No reloc. */ -+#define R_MN10300_32 1 /* Direct 32 bit. */ -+#define R_MN10300_16 2 /* Direct 16 bit. */ -+#define R_MN10300_8 3 /* Direct 8 bit. */ -+#define R_MN10300_PCREL32 4 /* PC-relative 32-bit. */ -+#define R_MN10300_PCREL16 5 /* PC-relative 16-bit signed. */ -+#define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */ -+#define R_MN10300_GNU_VTINHERIT 7 /* Ancient C++ vtable garbage... */ -+#define R_MN10300_GNU_VTENTRY 8 /* ... collection annotation. */ -+#define R_MN10300_24 9 /* Direct 24 bit. */ -+#define R_MN10300_GOTPC32 10 /* 32-bit PCrel offset to GOT. */ -+#define R_MN10300_GOTPC16 11 /* 16-bit PCrel offset to GOT. */ -+#define R_MN10300_GOTOFF32 12 /* 32-bit offset from GOT. */ -+#define R_MN10300_GOTOFF24 13 /* 24-bit offset from GOT. */ -+#define R_MN10300_GOTOFF16 14 /* 16-bit offset from GOT. */ -+#define R_MN10300_PLT32 15 /* 32-bit PCrel to PLT entry. */ -+#define R_MN10300_PLT16 16 /* 16-bit PCrel to PLT entry. */ -+#define R_MN10300_GOT32 17 /* 32-bit offset to GOT entry. */ -+#define R_MN10300_GOT24 18 /* 24-bit offset to GOT entry. */ -+#define R_MN10300_GOT16 19 /* 16-bit offset to GOT entry. */ -+#define R_MN10300_COPY 20 /* Copy symbol at runtime. */ -+#define R_MN10300_GLOB_DAT 21 /* Create GOT entry. */ -+#define R_MN10300_JMP_SLOT 22 /* Create PLT entry. */ -+#define R_MN10300_RELATIVE 23 /* Adjust by program base. */ -+ -+#define R_MN10300_NUM 24 -+ -+ -+/* M32R relocs. */ -+#define R_M32R_NONE 0 /* No reloc. */ -+#define R_M32R_16 1 /* Direct 16 bit. */ -+#define R_M32R_32 2 /* Direct 32 bit. */ -+#define R_M32R_24 3 /* Direct 24 bit. */ -+#define R_M32R_10_PCREL 4 /* PC relative 10 bit shifted. */ -+#define R_M32R_18_PCREL 5 /* PC relative 18 bit shifted. */ -+#define R_M32R_26_PCREL 6 /* PC relative 26 bit shifted. */ -+#define R_M32R_HI16_ULO 7 /* High 16 bit with unsigned low. */ -+#define R_M32R_HI16_SLO 8 /* High 16 bit with signed low. */ -+#define R_M32R_LO16 9 /* Low 16 bit. */ -+#define R_M32R_SDA16 10 /* 16 bit offset in SDA. */ -+#define R_M32R_GNU_VTINHERIT 11 -+#define R_M32R_GNU_VTENTRY 12 -+/* M32R relocs use SHT_RELA. */ -+#define R_M32R_16_RELA 33 /* Direct 16 bit. */ -+#define R_M32R_32_RELA 34 /* Direct 32 bit. */ -+#define R_M32R_24_RELA 35 /* Direct 24 bit. */ -+#define R_M32R_10_PCREL_RELA 36 /* PC relative 10 bit shifted. */ -+#define R_M32R_18_PCREL_RELA 37 /* PC relative 18 bit shifted. */ -+#define R_M32R_26_PCREL_RELA 38 /* PC relative 26 bit shifted. */ -+#define R_M32R_HI16_ULO_RELA 39 /* High 16 bit with unsigned low */ -+#define R_M32R_HI16_SLO_RELA 40 /* High 16 bit with signed low */ -+#define R_M32R_LO16_RELA 41 /* Low 16 bit */ -+#define R_M32R_SDA16_RELA 42 /* 16 bit offset in SDA */ -+#define R_M32R_RELA_GNU_VTINHERIT 43 -+#define R_M32R_RELA_GNU_VTENTRY 44 -+ -+#define R_M32R_GOT24 48 /* 24 bit GOT entry */ -+#define R_M32R_26_PLTREL 49 /* 26 bit PC relative to PLT shifted */ -+#define R_M32R_COPY 50 /* Copy symbol at runtime */ -+#define R_M32R_GLOB_DAT 51 /* Create GOT entry */ -+#define R_M32R_JMP_SLOT 52 /* Create PLT entry */ -+#define R_M32R_RELATIVE 53 /* Adjust by program base */ -+#define R_M32R_GOTOFF 54 /* 24 bit offset to GOT */ -+#define R_M32R_GOTPC24 55 /* 24 bit PC relative offset to GOT */ -+#define R_M32R_GOT16_HI_ULO 56 /* High 16 bit GOT entry with unsigned -+ low */ -+#define R_M32R_GOT16_HI_SLO 57 /* High 16 bit GOT entry with signed -+ low */ -+#define R_M32R_GOT16_LO 58 /* Low 16 bit GOT entry */ -+#define R_M32R_GOTPC_HI_ULO 59 /* High 16 bit PC relative offset to -+ GOT with unsigned low */ -+#define R_M32R_GOTPC_HI_SLO 60 /* High 16 bit PC relative offset to -+ GOT with signed low */ -+#define R_M32R_GOTPC_LO 61 /* Low 16 bit PC relative offset to -+ GOT */ -+#define R_M32R_GOTOFF_HI_ULO 62 /* High 16 bit offset to GOT -+ with unsigned low */ -+#define R_M32R_GOTOFF_HI_SLO 63 /* High 16 bit offset to GOT -+ with signed low */ -+#define R_M32R_GOTOFF_LO 64 /* Low 16 bit offset to GOT */ -+#define R_M32R_NUM 256 /* Keep this the last entry. */ -+ -+/* i960 Relocations */ -+#define R_960_NONE 0 -+#define R_960_12 1 -+#define R_960_32 2 -+#define R_960_IP24 3 -+#define R_960_SUB 4 -+#define R_960_OPTCALL 5 -+#define R_960_OPTCALLX 6 -+#define R_960_OPTCALLXA 7 -+/* Keep this the last entry. */ -+#define R_960_NUM 8 -+ -+ -+/* v850 relocations. */ -+#define R_V850_NONE 0 -+#define R_V850_9_PCREL 1 -+#define R_V850_22_PCREL 2 -+#define R_V850_HI16_S 3 -+#define R_V850_HI16 4 -+#define R_V850_LO16 5 -+#define R_V850_32 6 -+#define R_V850_16 7 -+#define R_V850_8 8 -+#define R_V850_SDA_16_16_OFFSET 9 /* For ld.b, st.b, set1, clr1, -+ not1, tst1, movea, movhi */ -+#define R_V850_SDA_15_16_OFFSET 10 /* For ld.w, ld.h, ld.hu, st.w, st.h */ -+#define R_V850_ZDA_16_16_OFFSET 11 /* For ld.b, st.b, set1, clr1, -+ not1, tst1, movea, movhi */ -+#define R_V850_ZDA_15_16_OFFSET 12 /* For ld.w, ld.h, ld.hu, st.w, st.h */ -+#define R_V850_TDA_6_8_OFFSET 13 /* For sst.w, sld.w */ -+#define R_V850_TDA_7_8_OFFSET 14 /* For sst.h, sld.h */ -+#define R_V850_TDA_7_7_OFFSET 15 /* For sst.b, sld.b */ -+#define R_V850_TDA_16_16_OFFSET 16 /* For set1, clr1, not1, tst1, -+ movea, movhi */ -+/* CYGNUS LOCAL v850e */ -+#define R_V850_TDA_4_5_OFFSET 17 /* For sld.hu */ -+#define R_V850_TDA_4_4_OFFSET 18 /* For sld.bu */ -+#define R_V850_SDA_16_16_SPLIT_OFFSET 19 /* For ld.bu */ -+#define R_V850_ZDA_16_16_SPLIT_OFFSET 20 /* For ld.bu */ -+#define R_V850_CALLT_6_7_OFFSET 21 /* For callt */ -+#define R_V850_CALLT_16_16_OFFSET 22 /* For callt */ -+/* END CYGNUS LOCAL */ -+#define R_V850_GNU_VTINHERIT 23 -+#define R_V850_GNU_VTENTRY 24 -+/* Keep this the last entry. */ -+#define R_V850_NUM 25 -+ -+/* Atmel AVR32 relocations. */ -+#define R_AVR32_NONE 0 -+#define R_AVR32_32 1 -+#define R_AVR32_16 2 -+#define R_AVR32_8 3 -+#define R_AVR32_32_PCREL 4 -+#define R_AVR32_16_PCREL 5 -+#define R_AVR32_8_PCREL 6 -+#define R_AVR32_DIFF32 7 -+#define R_AVR32_DIFF16 8 -+#define R_AVR32_DIFF8 9 -+#define R_AVR32_GOT32 10 -+#define R_AVR32_GOT16 11 -+#define R_AVR32_GOT8 12 -+#define R_AVR32_21S 13 -+#define R_AVR32_16U 14 -+#define R_AVR32_16S 15 -+#define R_AVR32_8S 16 -+#define R_AVR32_8S_EXT 17 -+#define R_AVR32_22H_PCREL 18 -+#define R_AVR32_18W_PCREL 19 -+#define R_AVR32_16B_PCREL 20 -+#define R_AVR32_16N_PCREL 21 -+#define R_AVR32_14UW_PCREL 22 -+#define R_AVR32_11H_PCREL 23 -+#define R_AVR32_10UW_PCREL 24 -+#define R_AVR32_9H_PCREL 25 -+#define R_AVR32_9UW_PCREL 26 -+#define R_AVR32_HI16 27 -+#define R_AVR32_LO16 28 -+#define R_AVR32_GOTPC 29 -+#define R_AVR32_GOTCALL 30 -+#define R_AVR32_LDA_GOT 31 -+#define R_AVR32_GOT21S 32 -+#define R_AVR32_GOT18SW 33 -+#define R_AVR32_GOT16S 34 -+#define R_AVR32_GOT7UW 35 -+#define R_AVR32_32_CPENT 36 -+#define R_AVR32_CPCALL 37 -+#define R_AVR32_16_CP 38 -+#define R_AVR32_9W_CP 39 -+#define R_AVR32_RELATIVE 40 -+#define R_AVR32_GLOB_DAT 41 -+#define R_AVR32_JMP_SLOT 42 -+#define R_AVR32_ALIGN 43 -+#define R_AVR32_NUM 44 -+ -+/* AVR32 dynamic tags */ -+#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */ -+ -+/* Renesas H8/300 Relocations */ -+#define R_H8_NONE 0 -+#define R_H8_DIR32 1 -+#define R_H8_DIR32_28 2 -+#define R_H8_DIR32_24 3 -+#define R_H8_DIR32_16 4 -+#define R_H8_DIR32U 6 -+#define R_H8_DIR32U_28 7 -+#define R_H8_DIR32U_24 8 -+#define R_H8_DIR32U_20 9 -+#define R_H8_DIR32U_16 10 -+#define R_H8_DIR24 11 -+#define R_H8_DIR24_20 12 -+#define R_H8_DIR24_16 13 -+#define R_H8_DIR24U 14 -+#define R_H8_DIR24U_20 15 -+#define R_H8_DIR24U_16 16 -+#define R_H8_DIR16 17 -+#define R_H8_DIR16U 18 -+#define R_H8_DIR16S_32 19 -+#define R_H8_DIR16S_28 20 -+#define R_H8_DIR16S_24 21 -+#define R_H8_DIR16S_20 22 -+#define R_H8_DIR16S 23 -+#define R_H8_DIR8 24 -+#define R_H8_DIR8U 25 -+#define R_H8_DIR8Z_32 26 -+#define R_H8_DIR8Z_28 27 -+#define R_H8_DIR8Z_24 28 -+#define R_H8_DIR8Z_20 29 -+#define R_H8_DIR8Z_16 30 -+#define R_H8_PCREL16 31 -+#define R_H8_PCREL8 32 -+#define R_H8_BPOS 33 -+#define R_H8_PCREL32 34 -+#define R_H8_GOT32O 35 -+#define R_H8_GOT16O 36 -+#define R_H8_DIR16A8 59 -+#define R_H8_DIR16R8 60 -+#define R_H8_DIR24A8 61 -+#define R_H8_DIR24R8 62 -+#define R_H8_DIR32A16 63 -+#define R_H8_ABS32 65 -+#define R_H8_ABS32A16 127 -+#define R_H8_NUM 128 -+ -+/* NIOS relocations. */ -+#define R_NIOS_NONE 0 -+#define R_NIOS_32 1 /* A 32 bit absolute relocation.*/ -+#define R_NIOS_LO16_LO5 2 /* A LO-16 5 bit absolute relocation. */ -+#define R_NIOS_LO16_HI11 3 /* A LO-16 top 11 bit absolute relocation. */ -+#define R_NIOS_HI16_LO5 4 /* A HI-16 5 bit absolute relocation. */ -+#define R_NIOS_HI16_HI11 5 /* A HI-16 top 11 bit absolute relocation. */ -+#define R_NIOS_PCREL6 6 /* A 6 bit relative relocation. */ -+#define R_NIOS_PCREL8 7 /* An 8 bit relative relocation. */ -+#define R_NIOS_PCREL11 8 /* An 11 bit relative relocation. */ -+#define R_NIOS_16 9 /* A 16 bit absolute relocation. */ -+#define R_NIOS_H_LO5 10 /* Low 5-bits of absolute relocation in halfwords. */ -+#define R_NIOS_H_HI11 11 /* Top 11 bits of 16-bit absolute relocation in halfwords. */ -+#define R_NIOS_H_XLO5 12 /* Low 5 bits of top 16-bits of 32-bit absolute relocation in halfwords. */ -+#define R_NIOS_H_XHI11 13 /* Top 11 bits of top 16-bits of 32-bit absolute relocation in halfwords. */ -+#define R_NIOS_H_16 14 /* Half-word @h value */ -+#define R_NIOS_H_32 15 /* Word @h value */ -+#define R_NIOS_GNU_VTINHERIT 200 /* GNU extension to record C++ vtable hierarchy */ -+#define R_NIOS_GNU_VTENTRY 201 /* GNU extension to record C++ vtable member usage */ -+/* Keep this the last entry. */ -+#define R_NIOS_NUM 202 -+ -+/* NIOS II relocations */ -+#define R_NIOS2_NONE 0 -+#define R_NIOS2_S16 1 -+#define R_NIOS2_U16 2 -+#define R_NIOS2_PCREL16 3 -+#define R_NIOS2_CALL26 4 -+#define R_NIOS2_IMM5 5 -+#define R_NIOS2_CACHE_OPX 6 -+#define R_NIOS2_IMM6 7 -+#define R_NIOS2_IMM8 8 -+#define R_NIOS2_HI16 9 -+#define R_NIOS2_LO16 10 -+#define R_NIOS2_HIADJ16 11 -+#define R_NIOS2_BFD_RELOC_32 12 -+#define R_NIOS2_BFD_RELOC_16 13 -+#define R_NIOS2_BFD_RELOC_8 14 -+#define R_NIOS2_GPREL 15 -+#define R_NIOS2_GNU_VTINHERIT 16 -+#define R_NIOS2_GNU_VTENTRY 17 -+#define R_NIOS2_UJMP 18 -+#define R_NIOS2_CJMP 19 -+#define R_NIOS2_CALLR 20 -+#define R_NIOS2_ALIGN 21 -+/* Keep this the last entry. */ -+#define R_NIOS2_NUM 22 -+ -+/* Xtensa-specific declarations */ -+ -+/* Xtensa values for the Dyn d_tag field. */ -+#define DT_XTENSA_GOT_LOC_OFF (DT_LOPROC + 0) -+#define DT_XTENSA_GOT_LOC_SZ (DT_LOPROC + 1) -+#define DT_XTENSA_NUM 2 -+ -+/* Xtensa relocations. */ -+#define R_XTENSA_NONE 0 -+#define R_XTENSA_32 1 -+#define R_XTENSA_RTLD 2 -+#define R_XTENSA_GLOB_DAT 3 -+#define R_XTENSA_JMP_SLOT 4 -+#define R_XTENSA_RELATIVE 5 -+#define R_XTENSA_PLT 6 -+#define R_XTENSA_OP0 8 -+#define R_XTENSA_OP1 9 -+#define R_XTENSA_OP2 10 -+#define R_XTENSA_ASM_EXPAND 11 -+#define R_XTENSA_ASM_SIMPLIFY 12 -+#define R_XTENSA_GNU_VTINHERIT 15 -+#define R_XTENSA_GNU_VTENTRY 16 -+#define R_XTENSA_DIFF8 17 -+#define R_XTENSA_DIFF16 18 -+#define R_XTENSA_DIFF32 19 -+#define R_XTENSA_SLOT0_OP 20 -+#define R_XTENSA_SLOT1_OP 21 -+#define R_XTENSA_SLOT2_OP 22 -+#define R_XTENSA_SLOT3_OP 23 -+#define R_XTENSA_SLOT4_OP 24 -+#define R_XTENSA_SLOT5_OP 25 -+#define R_XTENSA_SLOT6_OP 26 -+#define R_XTENSA_SLOT7_OP 27 -+#define R_XTENSA_SLOT8_OP 28 -+#define R_XTENSA_SLOT9_OP 29 -+#define R_XTENSA_SLOT10_OP 30 -+#define R_XTENSA_SLOT11_OP 31 -+#define R_XTENSA_SLOT12_OP 32 -+#define R_XTENSA_SLOT13_OP 33 -+#define R_XTENSA_SLOT14_OP 34 -+#define R_XTENSA_SLOT0_ALT 35 -+#define R_XTENSA_SLOT1_ALT 36 -+#define R_XTENSA_SLOT2_ALT 37 -+#define R_XTENSA_SLOT3_ALT 38 -+#define R_XTENSA_SLOT4_ALT 39 -+#define R_XTENSA_SLOT5_ALT 40 -+#define R_XTENSA_SLOT6_ALT 41 -+#define R_XTENSA_SLOT7_ALT 42 -+#define R_XTENSA_SLOT8_ALT 43 -+#define R_XTENSA_SLOT9_ALT 44 -+#define R_XTENSA_SLOT10_ALT 45 -+#define R_XTENSA_SLOT11_ALT 46 -+#define R_XTENSA_SLOT12_ALT 47 -+#define R_XTENSA_SLOT13_ALT 48 -+#define R_XTENSA_SLOT14_ALT 49 -+/* Keep this the last entry. */ -+#define R_XTENSA_NUM 50 -+ -+/* C6X specific relocs */ -+#define R_C6000_NONE 0 -+#define R_C6000_ABS32 1 -+#define R_C6000_ABS16 2 -+#define R_C6000_ABS8 3 -+#define R_C6000_PCR_S21 4 -+#define R_C6000_PCR_S12 5 -+#define R_C6000_PCR_S10 6 -+#define R_C6000_PCR_S7 7 -+#define R_C6000_ABS_S16 8 -+#define R_C6000_ABS_L16 9 -+#define R_C6000_ABS_H16 10 -+#define R_C6000_SBR_U15_B 11 -+#define R_C6000_SBR_U15_H 12 -+#define R_C6000_SBR_U15_W 13 -+#define R_C6000_SBR_S16 14 -+#define R_C6000_SBR_L16_B 15 -+#define R_C6000_SBR_L16_H 16 -+#define R_C6000_SBR_L16_W 17 -+#define R_C6000_SBR_H16_B 18 -+#define R_C6000_SBR_H16_H 19 -+#define R_C6000_SBR_H16_W 20 -+#define R_C6000_SBR_GOT_U15_W 21 -+#define R_C6000_SBR_GOT_L16_W 22 -+#define R_C6000_SBR_GOT_H16_W 23 -+#define R_C6000_DSBT_INDEX 24 -+#define R_C6000_PREL31 25 -+#define R_C6000_COPY 26 -+#define R_C6000_JUMP_SLOT 27 -+#define R_C6000_SBR_GOT32 28 -+#define R_C6000_PCR_H16 29 -+#define R_C6000_PCR_L16 30 -+#define R_C6000_ALIGN 253 -+#define R_C6000_FPHEAD 254 -+#define R_C6000_NOCMP 255 -+ -+/* C6x specific values for the Dyn d_tag field. */ -+#define DT_C6000_DSBT_BASE (DT_LOPROC + 0) -+#define DT_C6000_DSBT_SIZE (DT_LOPROC + 1) -+#define DT_C6000_PREEMPTMAP (DT_LOPROC + 2) -+#define DT_C6000_DSBT_INDEX (DT_LOPROC + 3) -+ -+#define DT_C6000_NUM 4 - - static void die(char *fmt, ...); - diff --git a/toolchain/kernel-headers/patches/3.4.82/aufs2.patch b/toolchain/kernel-headers/patches/3.4.82/aufs2.patch new file mode 100644 index 000000000..d40c9a3fe --- /dev/null +++ b/toolchain/kernel-headers/patches/3.4.82/aufs2.patch @@ -0,0 +1,238 @@ +diff -Nur linux-3.1.4.orig/include/linux/Kbuild linux-3.1.4/include/linux/Kbuild +--- linux-3.1.4.orig/include/linux/Kbuild 2011-11-28 23:48:14.000000000 +0100 ++++ linux-3.1.4/include/linux/Kbuild 2011-12-01 12:44:17.000000000 +0100 +@@ -65,6 +65,7 @@ + header-y += atmsap.h + header-y += atmsvc.h + header-y += audit.h ++header-y += aufs_type.h + header-y += auto_fs.h + header-y += auto_fs4.h + header-y += auxvec.h +diff -Nur linux-3.1.4.orig/include/linux/aufs_type.h linux-3.1.4/include/linux/aufs_type.h +--- linux-3.1.4.orig/include/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-3.1.4/include/linux/aufs_type.h 2011-12-01 12:44:17.000000000 +0100 +@@ -0,0 +1,197 @@ ++/* ++ * Copyright (C) 2005-2011 Junjiro R. Okajima ++ * ++ * This program, aufs is free software; you can redistribute it and/or modify ++ * it under the terms of 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. ++ * ++ * This program 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 a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#ifndef __AUFS_TYPE_H__ ++#define __AUFS_TYPE_H__ ++ ++#include ++#include ++#include ++#include ++ ++#define AUFS_VERSION "2.1-standalone.tree-36-20110110" ++ ++/* todo? move this to linux-2.6.19/include/magic.h */ ++#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') ++ ++/* ---------------------------------------------------------------------- */ ++ ++#ifdef CONFIG_AUFS_BRANCH_MAX_127 ++typedef __s8 aufs_bindex_t; ++#define AUFS_BRANCH_MAX 127 ++#else ++typedef __s16 aufs_bindex_t; ++#ifdef CONFIG_AUFS_BRANCH_MAX_511 ++#define AUFS_BRANCH_MAX 511 ++#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) ++#define AUFS_BRANCH_MAX 1023 ++#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) ++#define AUFS_BRANCH_MAX 32767 ++#endif ++#endif ++ ++#ifdef __KERNEL__ ++#ifndef AUFS_BRANCH_MAX ++#error unknown CONFIG_AUFS_BRANCH_MAX value ++#endif ++#endif /* __KERNEL__ */ ++ ++/* ---------------------------------------------------------------------- */ ++ ++#define AUFS_NAME "aufs" ++#define AUFS_FSTYPE AUFS_NAME ++ ++#define AUFS_ROOT_INO 2 ++#define AUFS_FIRST_INO 11 ++ ++#define AUFS_WH_PFX ".wh." ++#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) ++#define AUFS_WH_TMP_LEN 4 ++/* a limit for rmdir/rename a dir */ ++#define AUFS_MAX_NAMELEN (NAME_MAX \ ++ - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ ++ - 1 /* dot */\ ++ - AUFS_WH_TMP_LEN) /* hex */ ++#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" ++#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME ++#define AUFS_XINO_TRUNC_INIT 64 /* blocks */ ++#define AUFS_XINO_TRUNC_STEP 4 /* blocks */ ++#define AUFS_DIRWH_DEF 3 ++#define AUFS_RDCACHE_DEF 10 /* seconds */ ++#define AUFS_RDCACHE_MAX 3600 /* seconds */ ++#define AUFS_RDBLK_DEF 512 /* bytes */ ++#define AUFS_RDHASH_DEF 32 ++#define AUFS_WKQ_NAME AUFS_NAME "d" ++#define AUFS_WKQ_PRE_NAME AUFS_WKQ_NAME "_pre" ++#define AUFS_MFS_DEF_SEC 30 /* seconds */ ++#define AUFS_MFS_MAX_SEC 3600 /* seconds */ ++#define AUFS_PLINK_WARN 100 /* number of plinks */ ++ ++/* pseudo-link maintenace under /proc */ ++#define AUFS_PLINK_MAINT_NAME "plink_maint" ++#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME ++#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME ++ ++#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ ++#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME ++ ++#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME ++#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" ++#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" ++ ++/* doubly whiteouted */ ++#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME ++#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME ++#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME ++ ++/* branch permission */ ++#define AUFS_BRPERM_RW "rw" ++#define AUFS_BRPERM_RO "ro" ++#define AUFS_BRPERM_RR "rr" ++#define AUFS_BRPERM_WH "wh" ++#define AUFS_BRPERM_NLWH "nolwh" ++#define AUFS_BRPERM_ROWH AUFS_BRPERM_RO "+" AUFS_BRPERM_WH ++#define AUFS_BRPERM_RRWH AUFS_BRPERM_RR "+" AUFS_BRPERM_WH ++#define AUFS_BRPERM_RWNLWH AUFS_BRPERM_RW "+" AUFS_BRPERM_NLWH ++ ++/* ---------------------------------------------------------------------- */ ++ ++/* ioctl */ ++enum { ++ /* readdir in userspace */ ++ AuCtl_RDU, ++ AuCtl_RDU_INO, ++ ++ /* pathconf wrapper */ ++ AuCtl_WBR_FD ++}; ++ ++/* borrowed from linux/include/linux/kernel.h */ ++#ifndef ALIGN ++#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) ++#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) ++#endif ++ ++/* borrowed from linux/include/linux/compiler-gcc3.h */ ++#ifndef __aligned ++#define __aligned(x) __attribute__((aligned(x))) ++#define __packed __attribute__((packed)) ++#endif ++ ++struct au_rdu_cookie { ++ __u64 h_pos; ++ __s16 bindex; ++ __u8 flags; ++ __u8 pad; ++ __u32 generation; ++} __aligned(8); ++ ++struct au_rdu_ent { ++ __u64 ino; ++ __s16 bindex; ++ __u8 type; ++ __u8 nlen; ++ __u8 wh; ++ char name[0]; ++} __aligned(8); ++ ++static inline int au_rdu_len(int nlen) ++{ ++ /* include the terminating NULL */ ++ return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, ++ sizeof(__u64)); ++} ++ ++union au_rdu_ent_ul { ++ struct au_rdu_ent __user *e; ++ __u64 ul; ++}; ++ ++enum { ++ AufsCtlRduV_SZ, ++ AufsCtlRduV_End ++}; ++ ++struct aufs_rdu { ++ /* input */ ++ union { ++ __u64 sz; /* AuCtl_RDU */ ++ __u64 nent; /* AuCtl_RDU_INO */ ++ }; ++ union au_rdu_ent_ul ent; ++ __u16 verify[AufsCtlRduV_End]; ++ ++ /* input/output */ ++ __u32 blk; ++ ++ /* output */ ++ union au_rdu_ent_ul tail; ++ /* number of entries which were added in a single call */ ++ __u64 rent; ++ __u8 full; ++ __u8 shwh; ++ ++ struct au_rdu_cookie cookie; ++} __aligned(8); ++ ++#define AuCtlType 'A' ++#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) ++#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) ++#define AUFS_CTL_WBR_FD _IO(AuCtlType, AuCtl_WBR_FD) ++ ++#endif /* __AUFS_TYPE_H__ */ +diff -Nur linux-3.1.4.orig/include/linux/namei.h linux-3.1.4/include/linux/namei.h +--- linux-3.1.4.orig/include/linux/namei.h 2011-11-28 23:48:14.000000000 +0100 ++++ linux-3.1.4/include/linux/namei.h 2011-12-01 12:44:17.000000000 +0100 +@@ -85,6 +85,9 @@ + extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, + int (*open)(struct inode *, struct file *)); + ++extern struct dentry *lookup_hash(struct nameidata *nd); ++extern int __lookup_one_len(const char *name, struct qstr *this, ++ struct dentry *base, int len); + extern struct dentry *lookup_one_len(const char *, struct dentry *, int); + + extern int follow_down_one(struct path *); +diff -Nur linux-3.1.4.orig/include/linux/splice.h linux-3.1.4/include/linux/splice.h +--- linux-3.1.4.orig/include/linux/splice.h 2011-11-28 23:48:14.000000000 +0100 ++++ linux-3.1.4/include/linux/splice.h 2011-12-01 12:45:51.000000000 +0100 +@@ -91,4 +91,9 @@ + extern void spd_release_page(struct splice_pipe_desc *, unsigned int); + + extern const struct pipe_buf_operations page_cache_pipe_buf_ops; ++extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, ++ loff_t *ppos, size_t len, unsigned int flags); ++extern long do_splice_to(struct file *in, loff_t *ppos, ++ struct pipe_inode_info *pipe, size_t len, ++ unsigned int flags); + #endif diff --git a/toolchain/kernel-headers/patches/3.4.82/linux-gcc-check.patch b/toolchain/kernel-headers/patches/3.4.82/linux-gcc-check.patch new file mode 100644 index 000000000..7cc381845 --- /dev/null +++ b/toolchain/kernel-headers/patches/3.4.82/linux-gcc-check.patch @@ -0,0 +1,18 @@ +diff -Nur linux-2.6.32.orig/arch/mips/include/asm/sgidefs.h linux-2.6.32/arch/mips/include/asm/sgidefs.h +--- linux-2.6.32.orig/arch/mips/include/asm/sgidefs.h 2009-12-03 04:51:21.000000000 +0100 ++++ linux-2.6.32/arch/mips/include/asm/sgidefs.h 2010-02-14 11:49:21.000000000 +0100 +@@ -11,14 +11,6 @@ + #define __ASM_SGIDEFS_H + + /* +- * Using a Linux compiler for building Linux seems logic but not to +- * everybody. +- */ +-#ifndef __linux__ +-#error Use a Linux compiler or give up. +-#endif +- +-/* + * Definitions for the ISA levels + * + * With the introduction of MIPS32 / MIPS64 instruction sets definitions diff --git a/toolchain/kernel-headers/patches/3.4.82/microperl.patch b/toolchain/kernel-headers/patches/3.4.82/microperl.patch new file mode 100644 index 000000000..44c39f6e8 --- /dev/null +++ b/toolchain/kernel-headers/patches/3.4.82/microperl.patch @@ -0,0 +1,24 @@ +diff -Nur linux-3.4.2.orig/scripts/headers_check.pl linux-3.4.2/scripts/headers_check.pl +--- linux-3.4.2.orig/scripts/headers_check.pl 2012-06-09 17:36:33.000000000 +0200 ++++ linux-3.4.2/scripts/headers_check.pl 2012-06-15 12:45:43.000000000 +0200 +@@ -18,7 +18,7 @@ + # + # 3) Check for leaked CONFIG_ symbols + +-use strict; ++#use strict; + use File::Basename; + + my ($dir, $arch, @files) = @ARGV; +diff -Nur linux-3.4.2.orig/scripts/headers_install.pl linux-3.4.2/scripts/headers_install.pl +--- linux-3.4.2.orig/scripts/headers_install.pl 2012-06-09 17:36:33.000000000 +0200 ++++ linux-3.4.2/scripts/headers_install.pl 2012-06-15 12:45:11.000000000 +0200 +@@ -16,7 +16,7 @@ + # 2) Drop include of compiler.h + # 3) Drop all sections defined out by __KERNEL__ (using unifdef) + +-use strict; ++#use strict; + + my ($readdir, $installdir, $arch, @files) = @ARGV; + diff --git a/toolchain/kernel-headers/patches/3.4.82/mkpiggy.patch b/toolchain/kernel-headers/patches/3.4.82/mkpiggy.patch new file mode 100644 index 000000000..d4e815cd2 --- /dev/null +++ b/toolchain/kernel-headers/patches/3.4.82/mkpiggy.patch @@ -0,0 +1,28 @@ +diff -Nur linux-3.4.4.orig/arch/x86/boot/compressed/mkpiggy.c linux-3.4.4/arch/x86/boot/compressed/mkpiggy.c +--- linux-3.4.4.orig/arch/x86/boot/compressed/mkpiggy.c 2012-06-22 20:37:50.000000000 +0200 ++++ linux-3.4.4/arch/x86/boot/compressed/mkpiggy.c 2012-07-03 09:48:02.000000000 +0200 +@@ -29,7 +29,14 @@ + #include + #include + #include +-#include ++ ++static uint32_t getle32(const void *p) ++{ ++ const uint8_t *cp = p; ++ ++ return (uint32_t)cp[0] + ((uint32_t)cp[1] << 8) + ++ ((uint32_t)cp[2] << 16) + ((uint32_t)cp[3] << 24); ++} + + int main(int argc, char *argv[]) + { +@@ -62,7 +69,7 @@ + } + + ilen = ftell(f); +- olen = get_unaligned_le32(&olen); ++ olen = getle32(&olen); + fclose(f); + + /* diff --git a/toolchain/kernel-headers/patches/3.4.82/relocs.patch b/toolchain/kernel-headers/patches/3.4.82/relocs.patch new file mode 100644 index 000000000..43c5bb580 --- /dev/null +++ b/toolchain/kernel-headers/patches/3.4.82/relocs.patch @@ -0,0 +1,3131 @@ +diff -Nur linux-3.4.4.orig/arch/x86/tools/relocs.c linux-3.4.4/arch/x86/tools/relocs.c +--- linux-3.4.4.orig/arch/x86/tools/relocs.c 2012-06-22 20:37:50.000000000 +0200 ++++ linux-3.4.4/arch/x86/tools/relocs.c 2012-07-03 09:19:18.000000000 +0200 +@@ -5,12 +5,3123 @@ + #include + #include + #include +-#include +-#include ++//#include ++//#include + #define USE_BSD +-#include ++//#include + #include +-#include ++//#include ++ ++static inline void __put_unaligned_le16(int val, int *p) ++{ ++ *p++ = val; ++ *p++ = val >> 8; ++} ++ ++static inline void __put_unaligned_le32(int val, int *p) ++{ ++ __put_unaligned_le16(val >> 16, p + 2); ++ __put_unaligned_le16(val, p); ++} ++ ++static inline void __put_unaligned_le64(int val, int *p) ++{ ++ __put_unaligned_le32(val >> 32, p + 4); ++ __put_unaligned_le32(val, p); ++} ++ ++static inline void put_unaligned_le16(int val, void *p) ++{ ++ __put_unaligned_le16(val, p); ++} ++ ++static inline void put_unaligned_le32(int val, void *p) ++{ ++ __put_unaligned_le32(val, p); ++} ++ ++static inline void put_unaligned_le64(int val, void *p) ++{ ++ __put_unaligned_le64(val, p); ++} ++ ++/* Type for a 16-bit quantity. */ ++typedef uint16_t Elf32_Half; ++typedef uint16_t Elf64_Half; ++ ++/* Types for signed and unsigned 32-bit quantities. */ ++typedef uint32_t Elf32_Word; ++typedef int32_t Elf32_Sword; ++typedef uint32_t Elf64_Word; ++typedef int32_t Elf64_Sword; ++ ++/* Types for signed and unsigned 64-bit quantities. */ ++typedef uint64_t Elf32_Xword; ++typedef int64_t Elf32_Sxword; ++typedef uint64_t Elf64_Xword; ++typedef int64_t Elf64_Sxword; ++ ++/* Type of addresses. */ ++typedef uint32_t Elf32_Addr; ++typedef uint64_t Elf64_Addr; ++ ++/* Type of file offsets. */ ++typedef uint32_t Elf32_Off; ++typedef uint64_t Elf64_Off; ++ ++/* Type for section indices, which are 16-bit quantities. */ ++typedef uint16_t Elf32_Section; ++typedef uint16_t Elf64_Section; ++ ++/* Type for version symbol information. */ ++typedef Elf32_Half Elf32_Versym; ++typedef Elf64_Half Elf64_Versym; ++ ++ ++/* The ELF file header. This appears at the start of every ELF file. */ ++ ++#define EI_NIDENT (16) ++ ++typedef struct ++{ ++ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ ++ Elf32_Half e_type; /* Object file type */ ++ Elf32_Half e_machine; /* Architecture */ ++ Elf32_Word e_version; /* Object file version */ ++ Elf32_Addr e_entry; /* Entry point virtual address */ ++ Elf32_Off e_phoff; /* Program header table file offset */ ++ Elf32_Off e_shoff; /* Section header table file offset */ ++ Elf32_Word e_flags; /* Processor-specific flags */ ++ Elf32_Half e_ehsize; /* ELF header size in bytes */ ++ Elf32_Half e_phentsize; /* Program header table entry size */ ++ Elf32_Half e_phnum; /* Program header table entry count */ ++ Elf32_Half e_shentsize; /* Section header table entry size */ ++ Elf32_Half e_shnum; /* Section header table entry count */ ++ Elf32_Half e_shstrndx; /* Section header string table index */ ++} Elf32_Ehdr; ++ ++typedef struct ++{ ++ unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ ++ Elf64_Half e_type; /* Object file type */ ++ Elf64_Half e_machine; /* Architecture */ ++ Elf64_Word e_version; /* Object file version */ ++ Elf64_Addr e_entry; /* Entry point virtual address */ ++ Elf64_Off e_phoff; /* Program header table file offset */ ++ Elf64_Off e_shoff; /* Section header table file offset */ ++ Elf64_Word e_flags; /* Processor-specific flags */ ++ Elf64_Half e_ehsize; /* ELF header size in bytes */ ++ Elf64_Half e_phentsize; /* Program header table entry size */ ++ Elf64_Half e_phnum; /* Program header table entry count */ ++ Elf64_Half e_shentsize; /* Section header table entry size */ ++ Elf64_Half e_shnum; /* Section header table entry count */ ++ Elf64_Half e_shstrndx; /* Section header string table index */ ++} Elf64_Ehdr; ++ ++/* Fields in the e_ident array. The EI_* macros are indices into the ++ array. The macros under each EI_* macro are the values the byte ++ may have. */ ++ ++#define EI_MAG0 0 /* File identification byte 0 index */ ++#define ELFMAG0 0x7f /* Magic number byte 0 */ ++ ++#define EI_MAG1 1 /* File identification byte 1 index */ ++#define ELFMAG1 'E' /* Magic number byte 1 */ ++ ++#define EI_MAG2 2 /* File identification byte 2 index */ ++#define ELFMAG2 'L' /* Magic number byte 2 */ ++ ++#define EI_MAG3 3 /* File identification byte 3 index */ ++#define ELFMAG3 'F' /* Magic number byte 3 */ ++ ++/* Conglomeration of the identification bytes, for easy testing as a word. */ ++#define ELFMAG "\177ELF" ++#define SELFMAG 4 ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define ELFMAG_U32 ((uint32_t)(ELFMAG0 + 0x100 * (ELFMAG1 + (0x100 * (ELFMAG2 + 0x100 * ELFMAG3))))) ++#elif __BYTE_ORDER == __BIG_ENDIAN ++# define ELFMAG_U32 ((uint32_t)((((ELFMAG0 * 0x100) + ELFMAG1) * 0x100 + ELFMAG2) * 0x100 + ELFMAG3)) ++#endif ++ ++#define EI_CLASS 4 /* File class byte index */ ++#define ELFCLASSNONE 0 /* Invalid class */ ++#define ELFCLASS32 1 /* 32-bit objects */ ++#define ELFCLASS64 2 /* 64-bit objects */ ++#define ELFCLASSNUM 3 ++ ++#define EI_DATA 5 /* Data encoding byte index */ ++#define ELFDATANONE 0 /* Invalid data encoding */ ++#define ELFDATA2LSB 1 /* 2's complement, little endian */ ++#define ELFDATA2MSB 2 /* 2's complement, big endian */ ++#define ELFDATANUM 3 ++ ++#define EI_VERSION 6 /* File version byte index */ ++ /* Value must be EV_CURRENT */ ++ ++#define EI_OSABI 7 /* OS ABI identification */ ++#define ELFOSABI_NONE 0 /* UNIX System V ABI */ ++#define ELFOSABI_SYSV 0 /* Alias. */ ++#define ELFOSABI_HPUX 1 /* HP-UX */ ++#define ELFOSABI_NETBSD 2 /* NetBSD. */ ++#define ELFOSABI_LINUX 3 /* Linux. */ ++#define ELFOSABI_HURD 4 /* GNU/Hurd */ ++#define ELFOSABI_SOLARIS 6 /* Sun Solaris. */ ++#define ELFOSABI_AIX 7 /* IBM AIX. */ ++#define ELFOSABI_IRIX 8 /* SGI Irix. */ ++#define ELFOSABI_FREEBSD 9 /* FreeBSD. */ ++#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX. */ ++#define ELFOSABI_MODESTO 11 /* Novell Modesto. */ ++#define ELFOSABI_OPENBSD 12 /* OpenBSD. */ ++#define ELFOSABI_OPENVMS 13 /* OpenVMS */ ++#define ELFOSABI_NSK 14 /* Hewlett-Packard Non-Stop Kernel */ ++#define ELFOSABI_AROS 15 /* Amiga Research OS */ ++#define ELFOSABI_ARM 97 /* ARM */ ++#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ ++ ++#define EI_ABIVERSION 8 /* ABI version */ ++ ++#define EI_PAD 9 /* Byte index of padding bytes */ ++ ++/* Legal values for e_type (object file type). */ ++ ++#define ET_NONE 0 /* No file type */ ++#define ET_REL 1 /* Relocatable file */ ++#define ET_EXEC 2 /* Executable file */ ++#define ET_DYN 3 /* Shared object file */ ++#define ET_CORE 4 /* Core file */ ++#define ET_NUM 5 /* Number of defined types */ ++#define ET_LOOS 0xfe00 /* OS-specific range start */ ++#define ET_HIOS 0xfeff /* OS-specific range end */ ++#define ET_LOPROC 0xff00 /* Processor-specific range start */ ++#define ET_HIPROC 0xffff /* Processor-specific range end */ ++ ++/* Legal values for e_machine (architecture). */ ++ ++#define EM_NONE 0 /* No machine */ ++#define EM_M32 1 /* AT&T WE 32100 */ ++#define EM_SPARC 2 /* SUN SPARC */ ++#define EM_386 3 /* Intel 80386 */ ++#define EM_68K 4 /* Motorola m68k family */ ++#define EM_88K 5 /* Motorola m88k family */ ++#define EM_486 6 /* Intel 80486 *//* Reserved for future use */ ++#define EM_860 7 /* Intel 80860 */ ++#define EM_MIPS 8 /* MIPS R3000 big-endian */ ++#define EM_S370 9 /* IBM System/370 */ ++#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */ ++ ++#define EM_PARISC 15 /* HPPA */ ++#define EM_VPP500 17 /* Fujitsu VPP500 */ ++#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ ++#define EM_960 19 /* Intel 80960 */ ++#define EM_PPC 20 /* PowerPC */ ++#define EM_PPC64 21 /* PowerPC 64-bit */ ++#define EM_S390 22 /* IBM S390 */ ++ ++#define EM_V800 36 /* NEC V800 series */ ++#define EM_FR20 37 /* Fujitsu FR20 */ ++#define EM_RH32 38 /* TRW RH-32 */ ++#define EM_MCORE 39 /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */ ++#define EM_RCE 39 /* Old name for MCore */ ++#define EM_ARM 40 /* ARM */ ++#define EM_FAKE_ALPHA 41 /* Digital Alpha */ ++#define EM_SH 42 /* Renesas SH */ ++#define EM_SPARCV9 43 /* SPARC v9 64-bit */ ++#define EM_TRICORE 44 /* Siemens Tricore */ ++#define EM_ARC 45 /* Argonaut RISC Core */ ++#define EM_H8_300 46 /* Renesas H8/300 */ ++#define EM_H8_300H 47 /* Renesas H8/300H */ ++#define EM_H8S 48 /* Renesas H8S */ ++#define EM_H8_500 49 /* Renesas H8/500 */ ++#define EM_IA_64 50 /* Intel Merced */ ++#define EM_MIPS_X 51 /* Stanford MIPS-X */ ++#define EM_COLDFIRE 52 /* Motorola Coldfire */ ++#define EM_68HC12 53 /* Motorola M68HC12 */ ++#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/ ++#define EM_PCP 55 /* Siemens PCP */ ++#define EM_NCPU 56 /* Sony nCPU embeeded RISC */ ++#define EM_NDR1 57 /* Denso NDR1 microprocessor */ ++#define EM_STARCORE 58 /* Motorola Start*Core processor */ ++#define EM_ME16 59 /* Toyota ME16 processor */ ++#define EM_ST100 60 /* STMicroelectronic ST100 processor */ ++#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/ ++#define EM_X86_64 62 /* AMD x86-64 architecture */ ++#define EM_PDSP 63 /* Sony DSP Processor */ ++ ++#define EM_FX66 66 /* Siemens FX66 microcontroller */ ++#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */ ++#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */ ++#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */ ++#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */ ++#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */ ++#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */ ++#define EM_SVX 73 /* Silicon Graphics SVx */ ++#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */ ++#define EM_VAX 75 /* Digital VAX */ ++#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */ ++#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded processor */ ++#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */ ++#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */ ++#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */ ++#define EM_HUANY 81 /* Harvard University machine-independent object files */ ++#define EM_PRISM 82 /* SiTera Prism */ ++#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ ++#define EM_FR30 84 /* Fujitsu FR30 */ ++#define EM_D10V 85 /* Mitsubishi D10V */ ++#define EM_D30V 86 /* Mitsubishi D30V */ ++#define EM_V850 87 /* NEC v850 */ ++#define EM_M32R 88 /* Renesas M32R */ ++#define EM_MN10300 89 /* Matsushita MN10300 */ ++#define EM_MN10200 90 /* Matsushita MN10200 */ ++#define EM_PJ 91 /* picoJava */ ++#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ ++#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ ++#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ ++#define EM_IP2K 101 /* Ubicom IP2022 micro controller */ ++#define EM_CR 103 /* National Semiconductor CompactRISC */ ++#define EM_MSP430 105 /* TI msp430 micro controller */ ++#define EM_BLACKFIN 106 /* Analog Devices Blackfin */ ++#define EM_ALTERA_NIOS2 113 /* Altera Nios II soft-core processor */ ++#define EM_CRX 114 /* National Semiconductor CRX */ ++#define EM_NUM 95 ++#define EM_TI_C6000 140 ++ ++/* If it is necessary to assign new unofficial EM_* values, please pick large ++ random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision ++ with official or non-GNU unofficial values. ++ ++ NOTE: Do not just increment the most recent number by one. ++ Somebody else somewhere will do exactly the same thing, and you ++ will have a collision. Instead, pick a random number. ++ ++ Normally, each entity or maintainer responsible for a machine with an ++ unofficial e_machine number should eventually ask registry@caldera.com for ++ an officially blessed number to be added to the list above. */ ++ ++/* picoJava */ ++#define EM_PJ_OLD 99 ++ ++/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */ ++#define EM_CYGNUS_POWERPC 0x9025 ++ ++/* Old version of Sparc v9, from before the ABI; this should be ++ removed shortly. */ ++#define EM_OLD_SPARCV9 11 ++ ++/* Old version of PowerPC, this should be removed shortly. */ ++#define EM_PPC_OLD 17 ++ ++/* (Deprecated) Temporary number for the OpenRISC processor. */ ++#define EM_OR32 0x8472 ++ ++/* Renesas M32C and M16C. */ ++#define EM_M32C 0xFEB0 ++ ++/* Cygnus M32R ELF backend. Written in the absence of an ABI. */ ++#define EM_CYGNUS_M32R 0x9041 ++ ++/* old S/390 backend magic number. Written in the absence of an ABI. */ ++#define EM_S390_OLD 0xa390 ++ ++/* D10V backend magic number. Written in the absence of an ABI. */ ++#define EM_CYGNUS_D10V 0x7650 ++ ++/* D30V backend magic number. Written in the absence of an ABI. */ ++#define EM_CYGNUS_D30V 0x7676 ++ ++/* V850 backend magic number. Written in the absense of an ABI. */ ++#define EM_CYGNUS_V850 0x9080 ++ ++/* mn10200 and mn10300 backend magic numbers. ++ Written in the absense of an ABI. */ ++#define EM_CYGNUS_MN10200 0xdead ++#define EM_CYGNUS_MN10300 0xbeef ++ ++/* FR30 magic number - no EABI available. */ ++#define EM_CYGNUS_FR30 0x3330 ++ ++/* AVR magic number ++ Written in the absense of an ABI. */ ++#define EM_AVR_OLD 0x1057 ++ ++/* OpenRISC magic number ++ Written in the absense of an ABI. */ ++#define EM_OPENRISC_OLD 0x3426 ++ ++/* DLX magic number ++ Written in the absense of an ABI. */ ++#define EM_DLX 0x5aa5 ++ ++#define EM_XSTORMY16 0xad45 ++ ++/* FRV magic number - no EABI available??. */ ++#define EM_CYGNUS_FRV 0x5441 ++ ++/* Ubicom IP2xxx; no ABI */ ++#define EM_IP2K_OLD 0x8217 ++ ++#define EM_MT 0x2530 /* Morpho MT; no ABI */ ++ ++/* MSP430 magic number ++ Written in the absense everything. */ ++#define EM_MSP430_OLD 0x1059 ++ ++/* Vitesse IQ2000. */ ++#define EM_IQ2000 0xFEBA ++ ++/* Old, unofficial value for Xtensa. */ ++#define EM_XTENSA_OLD 0xabc7 ++ ++/* Alpha backend magic number. Written in the absence of an ABI. */ ++#define EM_ALPHA 0x9026 ++ ++/* NIOS magic number - no EABI available. */ ++#define EM_NIOS32 0xFEBB ++ ++/* AVR32 magic number from ATMEL */ ++#define EM_AVR32 0x18ad ++ ++/* V850 backend magic number. Written in the absense of an ABI. */ ++#define EM_CYGNUS_V850 0x9080 ++ ++/* Legal values for e_version (version). */ ++ ++#define EV_NONE 0 /* Invalid ELF version */ ++#define EV_CURRENT 1 /* Current version */ ++#define EV_NUM 2 ++ ++/* Section header. */ ++ ++typedef struct ++{ ++ Elf32_Word sh_name; /* Section name (string tbl index) */ ++ Elf32_Word sh_type; /* Section type */ ++ Elf32_Word sh_flags; /* Section flags */ ++ Elf32_Addr sh_addr; /* Section virtual addr at execution */ ++ Elf32_Off sh_offset; /* Section file offset */ ++ Elf32_Word sh_size; /* Section size in bytes */ ++ Elf32_Word sh_link; /* Link to another section */ ++ Elf32_Word sh_info; /* Additional section information */ ++ Elf32_Word sh_addralign; /* Section alignment */ ++ Elf32_Word sh_entsize; /* Entry size if section holds table */ ++} Elf32_Shdr; ++ ++typedef struct ++{ ++ Elf64_Word sh_name; /* Section name (string tbl index) */ ++ Elf64_Word sh_type; /* Section type */ ++ Elf64_Xword sh_flags; /* Section flags */ ++ Elf64_Addr sh_addr; /* Section virtual addr at execution */ ++ Elf64_Off sh_offset; /* Section file offset */ ++ Elf64_Xword sh_size; /* Section size in bytes */ ++ Elf64_Word sh_link; /* Link to another section */ ++ Elf64_Word sh_info; /* Additional section information */ ++ Elf64_Xword sh_addralign; /* Section alignment */ ++ Elf64_Xword sh_entsize; /* Entry size if section holds table */ ++} Elf64_Shdr; ++ ++/* Special section indices. */ ++ ++#define SHN_UNDEF 0 /* Undefined section */ ++#define SHN_LORESERVE 0xff00 /* Start of reserved indices */ ++#define SHN_LOPROC 0xff00 /* Start of processor-specific */ ++#define SHN_BEFORE 0xff00 /* Order section before all others ++ (Solaris). */ ++#define SHN_AFTER 0xff01 /* Order section after all others ++ (Solaris). */ ++#define SHN_HIPROC 0xff1f /* End of processor-specific */ ++#define SHN_LOOS 0xff20 /* Start of OS-specific */ ++#define SHN_HIOS 0xff3f /* End of OS-specific */ ++#define SHN_ABS 0xfff1 /* Associated symbol is absolute */ ++#define SHN_COMMON 0xfff2 /* Associated symbol is common */ ++#define SHN_XINDEX 0xffff /* Index is in extra table. */ ++#define SHN_HIRESERVE 0xffff /* End of reserved indices */ ++ ++/* Legal values for sh_type (section type). */ ++ ++#define SHT_NULL 0 /* Section header table entry unused */ ++#define SHT_PROGBITS 1 /* Program data */ ++#define SHT_SYMTAB 2 /* Symbol table */ ++#define SHT_STRTAB 3 /* String table */ ++#define SHT_RELA 4 /* Relocation entries with addends */ ++#define SHT_HASH 5 /* Symbol hash table */ ++#define SHT_DYNAMIC 6 /* Dynamic linking information */ ++#define SHT_NOTE 7 /* Notes */ ++#define SHT_NOBITS 8 /* Program space with no data (bss) */ ++#define SHT_REL 9 /* Relocation entries, no addends */ ++#define SHT_SHLIB 10 /* Reserved */ ++#define SHT_DYNSYM 11 /* Dynamic linker symbol table */ ++#define SHT_INIT_ARRAY 14 /* Array of constructors */ ++#define SHT_FINI_ARRAY 15 /* Array of destructors */ ++#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ ++#define SHT_GROUP 17 /* Section group */ ++#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ ++#define SHT_NUM 19 /* Number of defined types. */ ++#define SHT_LOOS 0x60000000 /* Start OS-specific */ ++#define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table. */ ++#define SHT_GNU_LIBLIST 0x6ffffff7 /* Prelink library list */ ++#define SHT_CHECKSUM 0x6ffffff8 /* Checksum for DSO content. */ ++#define SHT_LOSUNW 0x6ffffffa /* Sun-specific low bound. */ ++#define SHT_SUNW_move 0x6ffffffa ++#define SHT_SUNW_COMDAT 0x6ffffffb ++#define SHT_SUNW_syminfo 0x6ffffffc ++#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */ ++#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */ ++#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */ ++#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */ ++#define SHT_HIOS 0x6fffffff /* End OS-specific type */ ++#define SHT_LOPROC 0x70000000 /* Start of processor-specific */ ++#define SHT_HIPROC 0x7fffffff /* End of processor-specific */ ++#define SHT_LOUSER 0x80000000 /* Start of application-specific */ ++#define SHT_HIUSER 0x8fffffff /* End of application-specific */ ++ ++/* Legal values for sh_flags (section flags). */ ++ ++#define SHF_WRITE (1 << 0) /* Writable */ ++#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */ ++#define SHF_EXECINSTR (1 << 2) /* Executable */ ++#define SHF_MERGE (1 << 4) /* Might be merged */ ++#define SHF_STRINGS (1 << 5) /* Contains nul-terminated strings */ ++#define SHF_INFO_LINK (1 << 6) /* `sh_info' contains SHT index */ ++#define SHF_LINK_ORDER (1 << 7) /* Preserve order after combining */ ++#define SHF_OS_NONCONFORMING (1 << 8) /* Non-standard OS specific handling ++ required */ ++#define SHF_GROUP (1 << 9) /* Section is member of a group. */ ++#define SHF_TLS (1 << 10) /* Section hold thread-local data. */ ++#define SHF_MASKOS 0x0ff00000 /* OS-specific. */ ++#define SHF_MASKPROC 0xf0000000 /* Processor-specific */ ++#define SHF_ORDERED (1 << 30) /* Special ordering requirement ++ (Solaris). */ ++#define SHF_EXCLUDE (1 << 31) /* Section is excluded unless ++ referenced or allocated (Solaris).*/ ++ ++/* Section group handling. */ ++#define GRP_COMDAT 0x1 /* Mark group as COMDAT. */ ++ ++/* Symbol table entry. */ ++ ++typedef struct ++{ ++ Elf32_Word st_name; /* Symbol name (string tbl index) */ ++ Elf32_Addr st_value; /* Symbol value */ ++ Elf32_Word st_size; /* Symbol size */ ++ unsigned char st_info; /* Symbol type and binding */ ++ unsigned char st_other; /* Symbol visibility */ ++ Elf32_Section st_shndx; /* Section index */ ++} Elf32_Sym; ++ ++typedef struct ++{ ++ Elf64_Word st_name; /* Symbol name (string tbl index) */ ++ unsigned char st_info; /* Symbol type and binding */ ++ unsigned char st_other; /* Symbol visibility */ ++ Elf64_Section st_shndx; /* Section index */ ++ Elf64_Addr st_value; /* Symbol value */ ++ Elf64_Xword st_size; /* Symbol size */ ++} Elf64_Sym; ++ ++/* The syminfo section if available contains additional information about ++ every dynamic symbol. */ ++ ++typedef struct ++{ ++ Elf32_Half si_boundto; /* Direct bindings, symbol bound to */ ++ Elf32_Half si_flags; /* Per symbol flags */ ++} Elf32_Syminfo; ++ ++typedef struct ++{ ++ Elf64_Half si_boundto; /* Direct bindings, symbol bound to */ ++ Elf64_Half si_flags; /* Per symbol flags */ ++} Elf64_Syminfo; ++ ++/* Possible values for si_boundto. */ ++#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */ ++#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */ ++#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */ ++ ++/* Possible bitmasks for si_flags. */ ++#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */ ++#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */ ++#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */ ++#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy ++ loaded */ ++/* Syminfo version values. */ ++#define SYMINFO_NONE 0 ++#define SYMINFO_CURRENT 1 ++#define SYMINFO_NUM 2 ++ ++ ++/* How to extract and insert information held in the st_info field. */ ++ ++#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) ++#define ELF32_ST_TYPE(val) ((val) & 0xf) ++#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) ++ ++/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field. */ ++#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) ++#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) ++#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) ++ ++/* Legal values for ST_BIND subfield of st_info (symbol binding). */ ++ ++#define STB_LOCAL 0 /* Local symbol */ ++#define STB_GLOBAL 1 /* Global symbol */ ++#define STB_WEAK 2 /* Weak symbol */ ++#define STB_NUM 3 /* Number of defined types. */ ++#define STB_LOOS 10 /* Start of OS-specific */ ++#define STB_HIOS 12 /* End of OS-specific */ ++#define STB_LOPROC 13 /* Start of processor-specific */ ++#define STB_HIPROC 15 /* End of processor-specific */ ++ ++/* Legal values for ST_TYPE subfield of st_info (symbol type). */ ++ ++#define STT_NOTYPE 0 /* Symbol type is unspecified */ ++#define STT_OBJECT 1 /* Symbol is a data object */ ++#define STT_FUNC 2 /* Symbol is a code object */ ++#define STT_SECTION 3 /* Symbol associated with a section */ ++#define STT_FILE 4 /* Symbol's name is file name */ ++#define STT_COMMON 5 /* Symbol is a common data object */ ++#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_HIOS 12 /* End of OS-specific */ ++#define STT_LOPROC 13 /* Start of processor-specific */ ++#define STT_HIPROC 15 /* End of processor-specific */ ++ ++ ++/* Symbol table indices are found in the hash buckets and chain table ++ of a symbol hash table section. This special index value indicates ++ the end of a chain, meaning no further symbols are found in that bucket. */ ++ ++#define STN_UNDEF 0 /* End of a chain. */ ++ ++ ++/* How to extract and insert information held in the st_other field. */ ++ ++#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) ++ ++/* For ELF64 the definitions are the same. */ ++#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) ++ ++/* Symbol visibility specification encoded in the st_other field. */ ++#define STV_DEFAULT 0 /* Default symbol visibility rules */ ++#define STV_INTERNAL 1 /* Processor specific hidden class */ ++#define STV_HIDDEN 2 /* Sym unavailable in other modules */ ++#define STV_PROTECTED 3 /* Not preemptible, not exported */ ++ ++ ++/* Relocation table entry without addend (in section of type SHT_REL). */ ++ ++typedef struct ++{ ++ Elf32_Addr r_offset; /* Address */ ++ Elf32_Word r_info; /* Relocation type and symbol index */ ++} Elf32_Rel; ++ ++/* I have seen two different definitions of the Elf64_Rel and ++ Elf64_Rela structures, so we'll leave them out until Novell (or ++ whoever) gets their act together. */ ++/* The following, at least, is used on Sparc v9, MIPS, and Alpha. */ ++ ++typedef struct ++{ ++ Elf64_Addr r_offset; /* Address */ ++ Elf64_Xword r_info; /* Relocation type and symbol index */ ++} Elf64_Rel; ++ ++/* Relocation table entry with addend (in section of type SHT_RELA). */ ++ ++typedef struct ++{ ++ Elf32_Addr r_offset; /* Address */ ++ Elf32_Word r_info; /* Relocation type and symbol index */ ++ Elf32_Sword r_addend; /* Addend */ ++} Elf32_Rela; ++ ++typedef struct ++{ ++ Elf64_Addr r_offset; /* Address */ ++ Elf64_Xword r_info; /* Relocation type and symbol index */ ++ Elf64_Sxword r_addend; /* Addend */ ++} Elf64_Rela; ++ ++/* How to extract and insert information held in the r_info field. */ ++ ++#define ELF32_R_SYM(val) ((val) >> 8) ++#define ELF32_R_TYPE(val) ((val) & 0xff) ++#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) ++ ++#define ELF64_R_SYM(i) ((i) >> 32) ++#define ELF64_R_TYPE(i) ((i) & 0xffffffff) ++#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) ++ ++/* Program segment header. */ ++ ++typedef struct ++{ ++ Elf32_Word p_type; /* Segment type */ ++ Elf32_Off p_offset; /* Segment file offset */ ++ Elf32_Addr p_vaddr; /* Segment virtual address */ ++ Elf32_Addr p_paddr; /* Segment physical address */ ++ Elf32_Word p_filesz; /* Segment size in file */ ++ Elf32_Word p_memsz; /* Segment size in memory */ ++ Elf32_Word p_flags; /* Segment flags */ ++ Elf32_Word p_align; /* Segment alignment */ ++} Elf32_Phdr; ++ ++typedef struct ++{ ++ Elf64_Word p_type; /* Segment type */ ++ Elf64_Word p_flags; /* Segment flags */ ++ Elf64_Off p_offset; /* Segment file offset */ ++ Elf64_Addr p_vaddr; /* Segment virtual address */ ++ Elf64_Addr p_paddr; /* Segment physical address */ ++ Elf64_Xword p_filesz; /* Segment size in file */ ++ Elf64_Xword p_memsz; /* Segment size in memory */ ++ Elf64_Xword p_align; /* Segment alignment */ ++} Elf64_Phdr; ++ ++/* Legal values for p_type (segment type). */ ++ ++#define PT_NULL 0 /* Program header table entry unused */ ++#define PT_LOAD 1 /* Loadable program segment */ ++#define PT_DYNAMIC 2 /* Dynamic linking information */ ++#define PT_INTERP 3 /* Program interpreter */ ++#define PT_NOTE 4 /* Auxiliary information */ ++#define PT_SHLIB 5 /* Reserved */ ++#define PT_PHDR 6 /* Entry for header table itself */ ++#define PT_TLS 7 /* Thread-local storage segment */ ++#define PT_NUM 8 /* Number of defined types */ ++#define PT_LOOS 0x60000000 /* Start of OS-specific */ ++#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ ++#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ ++#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ ++#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */ ++#define PT_LOSUNW 0x6ffffffa ++#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ ++#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ ++#define PT_HISUNW 0x6fffffff ++#define PT_HIOS 0x6fffffff /* End of OS-specific */ ++#define PT_LOPROC 0x70000000 /* Start of processor-specific */ ++#define PT_HIPROC 0x7fffffff /* End of processor-specific */ ++ ++/* Legal values for p_flags (segment flags). */ ++ ++#define PF_X (1 << 0) /* Segment is executable */ ++#define PF_W (1 << 1) /* Segment is writable */ ++#define PF_R (1 << 2) /* Segment is readable */ ++#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */ ++#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */ ++#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */ ++#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */ ++#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */ ++#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */ ++#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */ ++#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */ ++#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */ ++#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */ ++#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */ ++#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */ ++#define PF_MASKOS 0x0ff00000 /* OS-specific */ ++#define PF_MASKPROC 0xf0000000 /* Processor-specific */ ++ ++/* Legal values for note segment descriptor types for core files. */ ++ ++#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */ ++#define NT_FPREGSET 2 /* Contains copy of fpregset struct */ ++#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ ++#define NT_PRXREG 4 /* Contains copy of prxregset struct */ ++#define NT_TASKSTRUCT 4 /* Contains copy of task structure */ ++#define NT_PLATFORM 5 /* String from sysinfo(SI_PLATFORM) */ ++#define NT_AUXV 6 /* Contains copy of auxv array */ ++#define NT_GWINDOWS 7 /* Contains copy of gwindows struct */ ++#define NT_ASRS 8 /* Contains copy of asrset struct */ ++#define NT_PSTATUS 10 /* Contains copy of pstatus struct */ ++#define NT_PSINFO 13 /* Contains copy of psinfo struct */ ++#define NT_PRCRED 14 /* Contains copy of prcred struct */ ++#define NT_UTSNAME 15 /* Contains copy of utsname struct */ ++#define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */ ++#define NT_LWPSINFO 17 /* Contains copy of lwpinfo struct */ ++#define NT_PRFPXREG 20 /* Contains copy of fprxregset struct*/ ++ ++/* Legal values for the note segment descriptor types for object files. */ ++ ++#define NT_VERSION 1 /* Contains a version string. */ ++ ++ ++/* Dynamic section entry. */ ++ ++typedef struct ++{ ++ Elf32_Sword d_tag; /* Dynamic entry type */ ++ union ++ { ++ Elf32_Word d_val; /* Integer value */ ++ Elf32_Addr d_ptr; /* Address value */ ++ } d_un; ++} Elf32_Dyn; ++ ++typedef struct ++{ ++ Elf64_Sxword d_tag; /* Dynamic entry type */ ++ union ++ { ++ Elf64_Xword d_val; /* Integer value */ ++ Elf64_Addr d_ptr; /* Address value */ ++ } d_un; ++} Elf64_Dyn; ++ ++/* Legal values for d_tag (dynamic entry type). */ ++ ++#define DT_NULL 0 /* Marks end of dynamic section */ ++#define DT_NEEDED 1 /* Name of needed library */ ++#define DT_PLTRELSZ 2 /* Size in bytes of PLT relocs */ ++#define DT_PLTGOT 3 /* Processor defined value */ ++#define DT_HASH 4 /* Address of symbol hash table */ ++#define DT_STRTAB 5 /* Address of string table */ ++#define DT_SYMTAB 6 /* Address of symbol table */ ++#define DT_RELA 7 /* Address of Rela relocs */ ++#define DT_RELASZ 8 /* Total size of Rela relocs */ ++#define DT_RELAENT 9 /* Size of one Rela reloc */ ++#define DT_STRSZ 10 /* Size of string table */ ++#define DT_SYMENT 11 /* Size of one symbol table entry */ ++#define DT_INIT 12 /* Address of init function */ ++#define DT_FINI 13 /* Address of termination function */ ++#define DT_SONAME 14 /* Name of shared object */ ++#define DT_RPATH 15 /* Library search path (deprecated) */ ++#define DT_SYMBOLIC 16 /* Start symbol search here */ ++#define DT_REL 17 /* Address of Rel relocs */ ++#define DT_RELSZ 18 /* Total size of Rel relocs */ ++#define DT_RELENT 19 /* Size of one Rel reloc */ ++#define DT_PLTREL 20 /* Type of reloc in PLT */ ++#define DT_DEBUG 21 /* For debugging; unspecified */ ++#define DT_TEXTREL 22 /* Reloc might modify .text */ ++#define DT_JMPREL 23 /* Address of PLT relocs */ ++#define DT_BIND_NOW 24 /* Process relocations of object */ ++#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */ ++#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */ ++#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */ ++#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */ ++#define DT_RUNPATH 29 /* Library search path */ ++#define DT_FLAGS 30 /* Flags for the object being loaded */ ++#define DT_ENCODING 32 /* Start of encoded range */ ++#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/ ++#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */ ++#define DT_NUM 34 /* Number used */ ++#define DT_LOOS 0x6000000d /* Start of OS-specific */ ++#define DT_HIOS 0x6ffff000 /* End of OS-specific */ ++#define DT_LOPROC 0x70000000 /* Start of processor-specific */ ++#define DT_HIPROC 0x7fffffff /* End of processor-specific */ ++#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */ ++ ++/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the ++ Dyn.d_un.d_val field of the Elf*_Dyn structure. This follows Sun's ++ approach. */ ++#define DT_VALRNGLO 0x6ffffd00 ++#define DT_GNU_PRELINKED 0x6ffffdf5 /* Prelinking timestamp */ ++#define DT_GNU_CONFLICTSZ 0x6ffffdf6 /* Size of conflict section */ ++#define DT_GNU_LIBLISTSZ 0x6ffffdf7 /* Size of library list */ ++#define DT_CHECKSUM 0x6ffffdf8 ++#define DT_PLTPADSZ 0x6ffffdf9 ++#define DT_MOVEENT 0x6ffffdfa ++#define DT_MOVESZ 0x6ffffdfb ++#define DT_FEATURE_1 0x6ffffdfc /* Feature selection (DTF_*). */ ++#define DT_POSFLAG_1 0x6ffffdfd /* Flags for DT_* entries, effecting ++ the following DT_* entry. */ ++#define DT_SYMINSZ 0x6ffffdfe /* Size of syminfo table (in bytes) */ ++#define DT_SYMINENT 0x6ffffdff /* Entry size of syminfo */ ++#define DT_VALRNGHI 0x6ffffdff ++#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) /* Reverse order! */ ++#define DT_VALNUM 12 ++ ++/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the ++ Dyn.d_un.d_ptr field of the Elf*_Dyn structure. ++ ++ If any adjustment is made to the ELF object after it has been ++ built these entries will need to be adjusted. */ ++#define DT_ADDRRNGLO 0x6ffffe00 ++#define DT_GNU_HASH 0x6ffffef5 /* GNU-style hash table. */ ++#define DT_GNU_CONFLICT 0x6ffffef8 /* Start of conflict section */ ++#define DT_GNU_LIBLIST 0x6ffffef9 /* Library list */ ++#define DT_CONFIG 0x6ffffefa /* Configuration information. */ ++#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */ ++#define DT_AUDIT 0x6ffffefc /* Object auditing. */ ++#define DT_PLTPAD 0x6ffffefd /* PLT padding. */ ++#define DT_MOVETAB 0x6ffffefe /* Move table. */ ++#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */ ++#define DT_ADDRRNGHI 0x6ffffeff ++#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) /* Reverse order! */ ++#define DT_ADDRNUM 10 ++ ++/* The versioning entry types. The next are defined as part of the ++ GNU extension. */ ++#define DT_VERSYM 0x6ffffff0 ++ ++#define DT_RELACOUNT 0x6ffffff9 ++#define DT_RELCOUNT 0x6ffffffa ++ ++/* These were chosen by Sun. */ ++#define DT_FLAGS_1 0x6ffffffb /* State flags, see DF_1_* below. */ ++#define DT_VERDEF 0x6ffffffc /* Address of version definition ++ table */ ++#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */ ++#define DT_VERNEED 0x6ffffffe /* Address of table with needed ++ versions */ ++#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */ ++#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */ ++#define DT_VERSIONTAGNUM 16 ++ ++/* Sun added these machine-independent extensions in the "processor-specific" ++ range. Be compatible. */ ++#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ ++#define DT_FILTER 0x7fffffff /* Shared object to get values from */ ++#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) ++#define DT_EXTRANUM 3 ++ ++/* Values of `d_un.d_val' in the DT_FLAGS entry. */ ++#define DF_ORIGIN 0x00000001 /* Object may use DF_ORIGIN */ ++#define DF_SYMBOLIC 0x00000002 /* Symbol resolutions starts here */ ++#define DF_TEXTREL 0x00000004 /* Object contains text relocations */ ++#define DF_BIND_NOW 0x00000008 /* No lazy binding for this object */ ++#define DF_STATIC_TLS 0x00000010 /* Module uses the static TLS model */ ++ ++/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 ++ entry in the dynamic section. */ ++#define DF_1_NOW 0x00000001 /* Set RTLD_NOW for this object. */ ++#define DF_1_GLOBAL 0x00000002 /* Set RTLD_GLOBAL for this object. */ ++#define DF_1_GROUP 0x00000004 /* Set RTLD_GROUP for this object. */ ++#define DF_1_NODELETE 0x00000008 /* Set RTLD_NODELETE for this object.*/ ++#define DF_1_LOADFLTR 0x00000010 /* Trigger filtee loading at runtime.*/ ++#define DF_1_INITFIRST 0x00000020 /* Set RTLD_INITFIRST for this object*/ ++#define DF_1_NOOPEN 0x00000040 /* Set RTLD_NOOPEN for this object. */ ++#define DF_1_ORIGIN 0x00000080 /* $ORIGIN must be handled. */ ++#define DF_1_DIRECT 0x00000100 /* Direct binding enabled. */ ++#define DF_1_TRANS 0x00000200 ++#define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */ ++#define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */ ++#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */ ++#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/ ++#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */ ++#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */ ++#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */ ++ ++/* Flags for the feature selection in DT_FEATURE_1. */ ++#define DTF_1_PARINIT 0x00000001 ++#define DTF_1_CONFEXP 0x00000002 ++ ++/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry. */ ++#define DF_P1_LAZYLOAD 0x00000001 /* Lazyload following object. */ ++#define DF_P1_GROUPPERM 0x00000002 /* Symbols from next object are not ++ generally available. */ ++ ++/* Version definition sections. */ ++ ++typedef struct ++{ ++ Elf32_Half vd_version; /* Version revision */ ++ Elf32_Half vd_flags; /* Version information */ ++ Elf32_Half vd_ndx; /* Version Index */ ++ Elf32_Half vd_cnt; /* Number of associated aux entries */ ++ Elf32_Word vd_hash; /* Version name hash value */ ++ Elf32_Word vd_aux; /* Offset in bytes to verdaux array */ ++ Elf32_Word vd_next; /* Offset in bytes to next verdef ++ entry */ ++} Elf32_Verdef; ++ ++typedef struct ++{ ++ Elf64_Half vd_version; /* Version revision */ ++ Elf64_Half vd_flags; /* Version information */ ++ Elf64_Half vd_ndx; /* Version Index */ ++ Elf64_Half vd_cnt; /* Number of associated aux entries */ ++ Elf64_Word vd_hash; /* Version name hash value */ ++ Elf64_Word vd_aux; /* Offset in bytes to verdaux array */ ++ Elf64_Word vd_next; /* Offset in bytes to next verdef ++ entry */ ++} Elf64_Verdef; ++ ++ ++/* Legal values for vd_version (version revision). */ ++#define VER_DEF_NONE 0 /* No version */ ++#define VER_DEF_CURRENT 1 /* Current version */ ++#define VER_DEF_NUM 2 /* Given version number */ ++ ++/* Legal values for vd_flags (version information flags). */ ++#define VER_FLG_BASE 0x1 /* Version definition of file itself */ ++#define VER_FLG_WEAK 0x2 /* Weak version identifier */ ++ ++/* Versym symbol index values. */ ++#define VER_NDX_LOCAL 0 /* Symbol is local. */ ++#define VER_NDX_GLOBAL 1 /* Symbol is global. */ ++#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ ++#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ ++ ++/* Auxialiary version information. */ ++ ++typedef struct ++{ ++ Elf32_Word vda_name; /* Version or dependency names */ ++ Elf32_Word vda_next; /* Offset in bytes to next verdaux ++ entry */ ++} Elf32_Verdaux; ++ ++typedef struct ++{ ++ Elf64_Word vda_name; /* Version or dependency names */ ++ Elf64_Word vda_next; /* Offset in bytes to next verdaux ++ entry */ ++} Elf64_Verdaux; ++ ++ ++/* Version dependency section. */ ++ ++typedef struct ++{ ++ Elf32_Half vn_version; /* Version of structure */ ++ Elf32_Half vn_cnt; /* Number of associated aux entries */ ++ Elf32_Word vn_file; /* Offset of filename for this ++ dependency */ ++ Elf32_Word vn_aux; /* Offset in bytes to vernaux array */ ++ Elf32_Word vn_next; /* Offset in bytes to next verneed ++ entry */ ++} Elf32_Verneed; ++ ++typedef struct ++{ ++ Elf64_Half vn_version; /* Version of structure */ ++ Elf64_Half vn_cnt; /* Number of associated aux entries */ ++ Elf64_Word vn_file; /* Offset of filename for this ++ dependency */ ++ Elf64_Word vn_aux; /* Offset in bytes to vernaux array */ ++ Elf64_Word vn_next; /* Offset in bytes to next verneed ++ entry */ ++} Elf64_Verneed; ++ ++ ++/* Legal values for vn_version (version revision). */ ++#define VER_NEED_NONE 0 /* No version */ ++#define VER_NEED_CURRENT 1 /* Current version */ ++#define VER_NEED_NUM 2 /* Given version number */ ++ ++/* Auxiliary needed version information. */ ++ ++typedef struct ++{ ++ Elf32_Word vna_hash; /* Hash value of dependency name */ ++ Elf32_Half vna_flags; /* Dependency specific information */ ++ Elf32_Half vna_other; /* Unused */ ++ Elf32_Word vna_name; /* Dependency name string offset */ ++ Elf32_Word vna_next; /* Offset in bytes to next vernaux ++ entry */ ++} Elf32_Vernaux; ++ ++typedef struct ++{ ++ Elf64_Word vna_hash; /* Hash value of dependency name */ ++ Elf64_Half vna_flags; /* Dependency specific information */ ++ Elf64_Half vna_other; /* Unused */ ++ Elf64_Word vna_name; /* Dependency name string offset */ ++ Elf64_Word vna_next; /* Offset in bytes to next vernaux ++ entry */ ++} Elf64_Vernaux; ++ ++ ++/* Legal values for vna_flags. */ ++#define VER_FLG_WEAK 0x2 /* Weak version identifier */ ++ ++ ++/* Auxiliary vector. */ ++ ++/* This vector is normally only used by the program interpreter. The ++ usual definition in an ABI supplement uses the name auxv_t. The ++ vector is not usually defined in a standard file, but it ++ can't hurt. We rename it to avoid conflicts. The sizes of these ++ types are an arrangement between the exec server and the program ++ interpreter, so we don't fully specify them here. */ ++ ++typedef struct ++{ ++ uint32_t a_type; /* Entry type */ ++ union ++ { ++ uint32_t a_val; /* Integer value */ ++ /* We use to have pointer elements added here. We cannot do that, ++ though, since it does not work when using 32-bit definitions ++ on 64-bit platforms and vice versa. */ ++ } a_un; ++} Elf32_auxv_t; ++ ++typedef struct ++{ ++ uint64_t a_type; /* Entry type */ ++ union ++ { ++ uint64_t a_val; /* Integer value */ ++ /* We use to have pointer elements added here. We cannot do that, ++ though, since it does not work when using 32-bit definitions ++ on 64-bit platforms and vice versa. */ ++ } a_un; ++} Elf64_auxv_t; ++ ++/* Legal values for a_type (entry type). */ ++ ++#define AT_NULL 0 /* End of vector */ ++#define AT_IGNORE 1 /* Entry should be ignored */ ++#define AT_EXECFD 2 /* File descriptor of program */ ++#define AT_PHDR 3 /* Program headers for program */ ++#define AT_PHENT 4 /* Size of program header entry */ ++#define AT_PHNUM 5 /* Number of program headers */ ++#define AT_PAGESZ 6 /* System page size */ ++#define AT_BASE 7 /* Base address of interpreter */ ++#define AT_FLAGS 8 /* Flags */ ++#define AT_ENTRY 9 /* Entry point of program */ ++#define AT_NOTELF 10 /* Program is not ELF */ ++#define AT_UID 11 /* Real uid */ ++#define AT_EUID 12 /* Effective uid */ ++#define AT_GID 13 /* Real gid */ ++#define AT_EGID 14 /* Effective gid */ ++#define AT_CLKTCK 17 /* Frequency of times() */ ++ ++/* Some more special a_type values describing the hardware. */ ++#define AT_PLATFORM 15 /* String identifying platform. */ ++#define AT_HWCAP 16 /* Machine dependent hints about ++ processor capabilities. */ ++ ++/* This entry gives some information about the FPU initialization ++ performed by the kernel. */ ++#define AT_FPUCW 18 /* Used FPU control word. */ ++ ++/* Cache block sizes. */ ++#define AT_DCACHEBSIZE 19 /* Data cache block size. */ ++#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */ ++#define AT_UCACHEBSIZE 21 /* Unified cache block size. */ ++ ++/* A special ignored value for PPC, used by the kernel to control the ++ interpretation of the AUXV. Must be > 16. */ ++#define AT_IGNOREPPC 22 /* Entry should be ignored. */ ++ ++#define AT_SECURE 23 /* Boolean, was exec setuid-like? */ ++ ++/* Pointer to the global system page used for system calls and other ++ nice things. */ ++#define AT_SYSINFO 32 ++#define AT_SYSINFO_EHDR 33 ++ ++/* Shapes of the caches. Bits 0-3 contains associativity; bits 4-7 contains ++ log2 of line size; mask those to get cache size. */ ++#define AT_L1I_CACHESHAPE 34 ++#define AT_L1D_CACHESHAPE 35 ++#define AT_L2_CACHESHAPE 36 ++#define AT_L3_CACHESHAPE 37 ++ ++/* Note section contents. Each entry in the note section begins with ++ a header of a fixed form. */ ++ ++typedef struct ++{ ++ Elf32_Word n_namesz; /* Length of the note's name. */ ++ Elf32_Word n_descsz; /* Length of the note's descriptor. */ ++ Elf32_Word n_type; /* Type of the note. */ ++} Elf32_Nhdr; ++ ++typedef struct ++{ ++ Elf64_Word n_namesz; /* Length of the note's name. */ ++ Elf64_Word n_descsz; /* Length of the note's descriptor. */ ++ Elf64_Word n_type; /* Type of the note. */ ++} Elf64_Nhdr; ++ ++/* Known names of notes. */ ++ ++/* Solaris entries in the note section have this name. */ ++#define ELF_NOTE_SOLARIS "SUNW Solaris" ++ ++/* Note entries for GNU systems have this name. */ ++#define ELF_NOTE_GNU "GNU" ++ ++ ++/* Defined types of notes for Solaris. */ ++ ++/* Value of descriptor (one word) is desired pagesize for the binary. */ ++#define ELF_NOTE_PAGESIZE_HINT 1 ++ ++ ++/* Defined note types for GNU systems. */ ++ ++/* ABI information. The descriptor consists of words: ++ word 0: OS descriptor ++ word 1: major version of the ABI ++ word 2: minor version of the ABI ++ word 3: subminor version of the ABI ++*/ ++#define ELF_NOTE_ABI 1 ++ ++/* Known OSes. These value can appear in word 0 of an ELF_NOTE_ABI ++ note section entry. */ ++#define ELF_NOTE_OS_LINUX 0 ++#define ELF_NOTE_OS_GNU 1 ++#define ELF_NOTE_OS_SOLARIS2 2 ++#define ELF_NOTE_OS_FREEBSD 3 ++ ++ ++/* Move records. */ ++typedef struct ++{ ++ Elf32_Xword m_value; /* Symbol value. */ ++ Elf32_Word m_info; /* Size and index. */ ++ Elf32_Word m_poffset; /* Symbol offset. */ ++ Elf32_Half m_repeat; /* Repeat count. */ ++ Elf32_Half m_stride; /* Stride info. */ ++} Elf32_Move; ++ ++typedef struct ++{ ++ Elf64_Xword m_value; /* Symbol value. */ ++ Elf64_Xword m_info; /* Size and index. */ ++ Elf64_Xword m_poffset; /* Symbol offset. */ ++ Elf64_Half m_repeat; /* Repeat count. */ ++ Elf64_Half m_stride; /* Stride info. */ ++} Elf64_Move; ++ ++/* Macro to construct move records. */ ++#define ELF32_M_SYM(info) ((info) >> 8) ++#define ELF32_M_SIZE(info) ((unsigned char) (info)) ++#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) ++ ++#define ELF64_M_SYM(info) ELF32_M_SYM (info) ++#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) ++#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) ++ ++ ++/* Motorola 68k specific definitions. */ ++ ++/* Values for Elf32_Ehdr.e_flags. */ ++#define EF_CPU32 0x00810000 ++ ++/* m68k relocs. */ ++ ++#define R_68K_NONE 0 /* No reloc */ ++#define R_68K_32 1 /* Direct 32 bit */ ++#define R_68K_16 2 /* Direct 16 bit */ ++#define R_68K_8 3 /* Direct 8 bit */ ++#define R_68K_PC32 4 /* PC relative 32 bit */ ++#define R_68K_PC16 5 /* PC relative 16 bit */ ++#define R_68K_PC8 6 /* PC relative 8 bit */ ++#define R_68K_GOT32 7 /* 32 bit PC relative GOT entry */ ++#define R_68K_GOT16 8 /* 16 bit PC relative GOT entry */ ++#define R_68K_GOT8 9 /* 8 bit PC relative GOT entry */ ++#define R_68K_GOT32O 10 /* 32 bit GOT offset */ ++#define R_68K_GOT16O 11 /* 16 bit GOT offset */ ++#define R_68K_GOT8O 12 /* 8 bit GOT offset */ ++#define R_68K_PLT32 13 /* 32 bit PC relative PLT address */ ++#define R_68K_PLT16 14 /* 16 bit PC relative PLT address */ ++#define R_68K_PLT8 15 /* 8 bit PC relative PLT address */ ++#define R_68K_PLT32O 16 /* 32 bit PLT offset */ ++#define R_68K_PLT16O 17 /* 16 bit PLT offset */ ++#define R_68K_PLT8O 18 /* 8 bit PLT offset */ ++#define R_68K_COPY 19 /* Copy symbol at runtime */ ++#define R_68K_GLOB_DAT 20 /* Create GOT entry */ ++#define R_68K_JMP_SLOT 21 /* Create PLT entry */ ++#define R_68K_RELATIVE 22 /* Adjust by program base */ ++/* Keep this the last entry. */ ++#define R_68K_NUM 23 ++ ++/* Intel 80386 specific definitions. */ ++ ++/* i386 relocs. */ ++ ++#define R_386_NONE 0 /* No reloc */ ++#define R_386_32 1 /* Direct 32 bit */ ++#define R_386_PC32 2 /* PC relative 32 bit */ ++#define R_386_GOT32 3 /* 32 bit GOT entry */ ++#define R_386_PLT32 4 /* 32 bit PLT address */ ++#define R_386_COPY 5 /* Copy symbol at runtime */ ++#define R_386_GLOB_DAT 6 /* Create GOT entry */ ++#define R_386_JMP_SLOT 7 /* Create PLT entry */ ++#define R_386_RELATIVE 8 /* Adjust by program base */ ++#define R_386_GOTOFF 9 /* 32 bit offset to GOT */ ++#define R_386_GOTPC 10 /* 32 bit PC relative offset to GOT */ ++#define R_386_32PLT 11 ++#define R_386_TLS_TPOFF 14 /* Offset in static TLS block */ ++#define R_386_TLS_IE 15 /* Address of GOT entry for static TLS ++ block offset */ ++#define R_386_TLS_GOTIE 16 /* GOT entry for static TLS block ++ offset */ ++#define R_386_TLS_LE 17 /* Offset relative to static TLS ++ block */ ++#define R_386_TLS_GD 18 /* Direct 32 bit for GNU version of ++ general dynamic thread local data */ ++#define R_386_TLS_LDM 19 /* Direct 32 bit for GNU version of ++ local dynamic thread local data ++ in LE code */ ++#define R_386_16 20 ++#define R_386_PC16 21 ++#define R_386_8 22 ++#define R_386_PC8 23 ++#define R_386_TLS_GD_32 24 /* Direct 32 bit for general dynamic ++ thread local data */ ++#define R_386_TLS_GD_PUSH 25 /* Tag for pushl in GD TLS code */ ++#define R_386_TLS_GD_CALL 26 /* Relocation for call to ++ __tls_get_addr() */ ++#define R_386_TLS_GD_POP 27 /* Tag for popl in GD TLS code */ ++#define R_386_TLS_LDM_32 28 /* Direct 32 bit for local dynamic ++ thread local data in LE code */ ++#define R_386_TLS_LDM_PUSH 29 /* Tag for pushl in LDM TLS code */ ++#define R_386_TLS_LDM_CALL 30 /* Relocation for call to ++ __tls_get_addr() in LDM code */ ++#define R_386_TLS_LDM_POP 31 /* Tag for popl in LDM TLS code */ ++#define R_386_TLS_LDO_32 32 /* Offset relative to TLS block */ ++#define R_386_TLS_IE_32 33 /* GOT entry for negated static TLS ++ block offset */ ++#define R_386_TLS_LE_32 34 /* Negated offset relative to static ++ TLS block */ ++#define R_386_TLS_DTPMOD32 35 /* ID of module containing symbol */ ++#define R_386_TLS_DTPOFF32 36 /* Offset in TLS block */ ++#define R_386_TLS_TPOFF32 37 /* Negated offset in static TLS block */ ++/* Keep this the last entry. */ ++#define R_386_NUM 38 ++ ++/* Blackfin specific definitions. */ ++#define R_BFIN_UNUSED0 0x00 ++#define R_BFIN_PCREL5M2 0x01 ++#define R_BFIN_UNUSED1 0x02 ++#define R_BFIN_PCREL10 0x03 ++#define R_BFIN_PCREL12_JUMP 0x04 ++#define R_BFIN_RIMM16 0x05 ++#define R_BFIN_LUIMM16 0x06 ++#define R_BFIN_HUIMM16 0x07 ++#define R_BFIN_PCREL12_JUMP_S 0x08 ++#define R_BFIN_PCREL24_JUMP_X 0x09 ++#define R_BFIN_PCREL24 0x0a ++#define R_BFIN_UNUSEDB 0x0b ++#define R_BFIN_UNUSEDC 0x0c ++#define R_BFIN_PCREL24_JUMP_L 0x0d ++#define R_BFIN_PCREL24_CALL_X 0x0e ++#define R_BFIN_var_eq_symb 0x0f ++#define R_BFIN_BYTE_DATA 0x10 ++#define R_BFIN_BYTE2_DATA 0x11 ++#define R_BFIN_BYTE4_DATA 0x12 ++#define R_BFIN_PCREL11 0x13 ++ ++#define R_BFIN_GOT17M4 0x14 ++#define R_BFIN_GOTHI 0x15 ++#define R_BFIN_GOTLO 0x16 ++#define R_BFIN_FUNCDESC 0x17 ++#define R_BFIN_FUNCDESC_GOT17M4 0x18 ++#define R_BFIN_FUNCDESC_GOTHI 0x19 ++#define R_BFIN_FUNCDESC_GOTLO 0x1a ++#define R_BFIN_FUNCDESC_VALUE 0x1b ++#define R_BFIN_FUNCDESC_GOTOFF17M4 0x1c ++#define R_BFIN_FUNCDESC_GOTOFFHI 0x1d ++#define R_BFIN_FUNCDESC_GOTOFFLO 0x1e ++#define R_BFIN_GOTOFF17M4 0x1f ++#define R_BFIN_GOTOFFHI 0x20 ++#define R_BFIN_GOTOFFLO 0x21 ++ ++#define EF_BFIN_PIC 0x00000001 /* -fpic */ ++#define EF_BFIN_FDPIC 0x00000002 /* -mfdpic */ ++#define EF_BFIN_CODE_IN_L1 0x00000010 /* --code-in-l1 */ ++#define EF_BFIN_DATA_IN_L1 0x00000020 /* --data-in-l1 */ ++ ++/* FR-V specific definitions. */ ++#define R_FRV_NONE 0 /* No reloc. */ ++#define R_FRV_32 1 /* Direct 32 bit. */ ++/* Canonical function descriptor address. */ ++#define R_FRV_FUNCDESC 14 ++/* Private function descriptor initialization. */ ++#define R_FRV_FUNCDESC_VALUE 18 ++ ++ /* gpr support */ ++#define EF_FRV_GPR_MASK 0x00000003 /* mask for # of gprs */ ++#define EF_FRV_GPR_32 0x00000001 /* -mgpr-32 */ ++#define EF_FRV_GPR_64 0x00000002 /* -mgpr-64 */ ++ ++ /* fpr support */ ++#define EF_FRV_FPR_MASK 0x0000000c /* mask for # of fprs */ ++#define EF_FRV_FPR_32 0x00000004 /* -mfpr-32 */ ++#define EF_FRV_FPR_64 0x00000008 /* -mfpr-64 */ ++#define EF_FRV_FPR_NONE 0x0000000c /* -msoft-float */ ++ ++#define EF_FRV_PIC 0x00000100 ++#define EF_FRV_FDPIC 0x00008000 ++ ++/* SUN SPARC specific definitions. */ ++ ++/* Legal values for ST_TYPE subfield of st_info (symbol type). */ ++ ++#define STT_SPARC_REGISTER 13 /* Global register reserved to app. */ ++ ++/* Values for Elf64_Ehdr.e_flags. */ ++ ++#define EF_SPARCV9_MM 3 ++#define EF_SPARCV9_TSO 0 ++#define EF_SPARCV9_PSO 1 ++#define EF_SPARCV9_RMO 2 ++#define EF_SPARC_LEDATA 0x800000 /* little endian data */ ++#define EF_SPARC_EXT_MASK 0xFFFF00 ++#define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ ++#define EF_SPARC_SUN_US1 0x000200 /* Sun UltraSPARC1 extensions */ ++#define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */ ++#define EF_SPARC_SUN_US3 0x000800 /* Sun UltraSPARCIII extensions */ ++ ++/* SPARC relocs. */ ++ ++#define R_SPARC_NONE 0 /* No reloc */ ++#define R_SPARC_8 1 /* Direct 8 bit */ ++#define R_SPARC_16 2 /* Direct 16 bit */ ++#define R_SPARC_32 3 /* Direct 32 bit */ ++#define R_SPARC_DISP8 4 /* PC relative 8 bit */ ++#define R_SPARC_DISP16 5 /* PC relative 16 bit */ ++#define R_SPARC_DISP32 6 /* PC relative 32 bit */ ++#define R_SPARC_WDISP30 7 /* PC relative 30 bit shifted */ ++#define R_SPARC_WDISP22 8 /* PC relative 22 bit shifted */ ++#define R_SPARC_HI22 9 /* High 22 bit */ ++#define R_SPARC_22 10 /* Direct 22 bit */ ++#define R_SPARC_13 11 /* Direct 13 bit */ ++#define R_SPARC_LO10 12 /* Truncated 10 bit */ ++#define R_SPARC_GOT10 13 /* Truncated 10 bit GOT entry */ ++#define R_SPARC_GOT13 14 /* 13 bit GOT entry */ ++#define R_SPARC_GOT22 15 /* 22 bit GOT entry shifted */ ++#define R_SPARC_PC10 16 /* PC relative 10 bit truncated */ ++#define R_SPARC_PC22 17 /* PC relative 22 bit shifted */ ++#define R_SPARC_WPLT30 18 /* 30 bit PC relative PLT address */ ++#define R_SPARC_COPY 19 /* Copy symbol at runtime */ ++#define R_SPARC_GLOB_DAT 20 /* Create GOT entry */ ++#define R_SPARC_JMP_SLOT 21 /* Create PLT entry */ ++#define R_SPARC_RELATIVE 22 /* Adjust by program base */ ++#define R_SPARC_UA32 23 /* Direct 32 bit unaligned */ ++ ++/* Additional Sparc64 relocs. */ ++ ++#define R_SPARC_PLT32 24 /* Direct 32 bit ref to PLT entry */ ++#define R_SPARC_HIPLT22 25 /* High 22 bit PLT entry */ ++#define R_SPARC_LOPLT10 26 /* Truncated 10 bit PLT entry */ ++#define R_SPARC_PCPLT32 27 /* PC rel 32 bit ref to PLT entry */ ++#define R_SPARC_PCPLT22 28 /* PC rel high 22 bit PLT entry */ ++#define R_SPARC_PCPLT10 29 /* PC rel trunc 10 bit PLT entry */ ++#define R_SPARC_10 30 /* Direct 10 bit */ ++#define R_SPARC_11 31 /* Direct 11 bit */ ++#define R_SPARC_64 32 /* Direct 64 bit */ ++#define R_SPARC_OLO10 33 /* 10bit with secondary 13bit addend */ ++#define R_SPARC_HH22 34 /* Top 22 bits of direct 64 bit */ ++#define R_SPARC_HM10 35 /* High middle 10 bits of ... */ ++#define R_SPARC_LM22 36 /* Low middle 22 bits of ... */ ++#define R_SPARC_PC_HH22 37 /* Top 22 bits of pc rel 64 bit */ ++#define R_SPARC_PC_HM10 38 /* High middle 10 bit of ... */ ++#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_7 43 /* Direct 7 bit */ ++#define R_SPARC_5 44 /* Direct 5 bit */ ++#define R_SPARC_6 45 /* Direct 6 bit */ ++#define R_SPARC_DISP64 46 /* PC relative 64 bit */ ++#define R_SPARC_PLT64 47 /* Direct 64 bit ref to PLT entry */ ++#define R_SPARC_HIX22 48 /* High 22 bit complemented */ ++#define R_SPARC_LOX10 49 /* Truncated 11 bit complemented */ ++#define R_SPARC_H44 50 /* Direct high 12 of 44 bit */ ++#define R_SPARC_M44 51 /* Direct mid 22 of 44 bit */ ++#define R_SPARC_L44 52 /* Direct low 10 of 44 bit */ ++#define R_SPARC_REGISTER 53 /* Global register usage */ ++#define R_SPARC_UA64 54 /* Direct 64 bit unaligned */ ++#define R_SPARC_UA16 55 /* Direct 16 bit unaligned */ ++#define R_SPARC_TLS_GD_HI22 56 ++#define R_SPARC_TLS_GD_LO10 57 ++#define R_SPARC_TLS_GD_ADD 58 ++#define R_SPARC_TLS_GD_CALL 59 ++#define R_SPARC_TLS_LDM_HI22 60 ++#define R_SPARC_TLS_LDM_LO10 61 ++#define R_SPARC_TLS_LDM_ADD 62 ++#define R_SPARC_TLS_LDM_CALL 63 ++#define R_SPARC_TLS_LDO_HIX22 64 ++#define R_SPARC_TLS_LDO_LOX10 65 ++#define R_SPARC_TLS_LDO_ADD 66 ++#define R_SPARC_TLS_IE_HI22 67 ++#define R_SPARC_TLS_IE_LO10 68 ++#define R_SPARC_TLS_IE_LD 69 ++#define R_SPARC_TLS_IE_LDX 70 ++#define R_SPARC_TLS_IE_ADD 71 ++#define R_SPARC_TLS_LE_HIX22 72 ++#define R_SPARC_TLS_LE_LOX10 73 ++#define R_SPARC_TLS_DTPMOD32 74 ++#define R_SPARC_TLS_DTPMOD64 75 ++#define R_SPARC_TLS_DTPOFF32 76 ++#define R_SPARC_TLS_DTPOFF64 77 ++#define R_SPARC_TLS_TPOFF32 78 ++#define R_SPARC_TLS_TPOFF64 79 ++/* Keep this the last entry. */ ++#define R_SPARC_NUM 80 ++ ++/* For Sparc64, legal values for d_tag of Elf64_Dyn. */ ++ ++#define DT_SPARC_REGISTER 0x70000001 ++#define DT_SPARC_NUM 2 ++ ++/* Bits present in AT_HWCAP, primarily for Sparc32. */ ++ ++#define HWCAP_SPARC_FLUSH 1 /* The cpu supports flush insn. */ ++#define HWCAP_SPARC_STBAR 2 ++#define HWCAP_SPARC_SWAP 4 ++#define HWCAP_SPARC_MULDIV 8 ++#define HWCAP_SPARC_V9 16 /* The cpu is v9, so v8plus is ok. */ ++#define HWCAP_SPARC_ULTRA3 32 ++ ++/* MIPS R3000 specific definitions. */ ++ ++/* Legal values for e_flags field of Elf32_Ehdr. */ ++ ++#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used */ ++#define EF_MIPS_PIC 2 /* Contains PIC code */ ++#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence */ ++#define EF_MIPS_XGOT 8 ++#define EF_MIPS_64BIT_WHIRL 16 ++#define EF_MIPS_ABI2 32 ++#define EF_MIPS_ABI_ON32 64 ++#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level */ ++ ++/* Legal values for MIPS architecture level. */ ++ ++#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ ++#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ ++#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ ++#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ ++#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ ++#define EF_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ ++#define EF_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ ++ ++/* The following are non-official names and should not be used. */ ++ ++#define E_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ ++#define E_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ ++#define E_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ ++#define E_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ ++#define E_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ ++#define E_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ ++#define E_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ ++ ++/* Special section indices. */ ++ ++#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols */ ++#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */ ++#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */ ++#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols */ ++#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols */ ++ ++/* Legal values for sh_type field of Elf32_Shdr. */ ++ ++#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link */ ++#define SHT_MIPS_MSYM 0x70000001 ++#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols */ ++#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes */ ++#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */ ++#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging information*/ ++#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information */ ++#define SHT_MIPS_PACKAGE 0x70000007 ++#define SHT_MIPS_PACKSYM 0x70000008 ++#define SHT_MIPS_RELD 0x70000009 ++#define SHT_MIPS_IFACE 0x7000000b ++#define SHT_MIPS_CONTENT 0x7000000c ++#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */ ++#define SHT_MIPS_SHDR 0x70000010 ++#define SHT_MIPS_FDESC 0x70000011 ++#define SHT_MIPS_EXTSYM 0x70000012 ++#define SHT_MIPS_DENSE 0x70000013 ++#define SHT_MIPS_PDESC 0x70000014 ++#define SHT_MIPS_LOCSYM 0x70000015 ++#define SHT_MIPS_AUXSYM 0x70000016 ++#define SHT_MIPS_OPTSYM 0x70000017 ++#define SHT_MIPS_LOCSTR 0x70000018 ++#define SHT_MIPS_LINE 0x70000019 ++#define SHT_MIPS_RFDESC 0x7000001a ++#define SHT_MIPS_DELTASYM 0x7000001b ++#define SHT_MIPS_DELTAINST 0x7000001c ++#define SHT_MIPS_DELTACLASS 0x7000001d ++#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */ ++#define SHT_MIPS_DELTADECL 0x7000001f ++#define SHT_MIPS_SYMBOL_LIB 0x70000020 ++#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */ ++#define SHT_MIPS_TRANSLATE 0x70000022 ++#define SHT_MIPS_PIXIE 0x70000023 ++#define SHT_MIPS_XLATE 0x70000024 ++#define SHT_MIPS_XLATE_DEBUG 0x70000025 ++#define SHT_MIPS_WHIRL 0x70000026 ++#define SHT_MIPS_EH_REGION 0x70000027 ++#define SHT_MIPS_XLATE_OLD 0x70000028 ++#define SHT_MIPS_PDR_EXCEPTION 0x70000029 ++ ++/* Legal values for sh_flags field of Elf32_Shdr. */ ++ ++#define SHF_MIPS_GPREL 0x10000000 /* Must be part of global data area */ ++#define SHF_MIPS_MERGE 0x20000000 ++#define SHF_MIPS_ADDR 0x40000000 ++#define SHF_MIPS_STRINGS 0x80000000 ++#define SHF_MIPS_NOSTRIP 0x08000000 ++#define SHF_MIPS_LOCAL 0x04000000 ++#define SHF_MIPS_NAMES 0x02000000 ++#define SHF_MIPS_NODUPE 0x01000000 ++ ++ ++/* Symbol tables. */ ++ ++/* MIPS specific values for `st_other'. */ ++#define STO_MIPS_DEFAULT 0x0 ++#define STO_MIPS_INTERNAL 0x1 ++#define STO_MIPS_HIDDEN 0x2 ++#define STO_MIPS_PROTECTED 0x3 ++#define STO_MIPS_PLT 0x8 ++#define STO_MIPS_SC_ALIGN_UNUSED 0xff ++ ++/* MIPS specific values for `st_info'. */ ++#define STB_MIPS_SPLIT_COMMON 13 ++ ++/* Entries found in sections of type SHT_MIPS_GPTAB. */ ++ ++typedef union ++{ ++ struct ++ { ++ Elf32_Word gt_current_g_value; /* -G value used for compilation */ ++ Elf32_Word gt_unused; /* Not used */ ++ } gt_header; /* First entry in section */ ++ struct ++ { ++ Elf32_Word gt_g_value; /* If this value were used for -G */ ++ Elf32_Word gt_bytes; /* This many bytes would be used */ ++ } gt_entry; /* Subsequent entries in section */ ++} Elf32_gptab; ++ ++/* Entry found in sections of type SHT_MIPS_REGINFO. */ ++ ++typedef struct ++{ ++ Elf32_Word ri_gprmask; /* General registers used */ ++ Elf32_Word ri_cprmask[4]; /* Coprocessor registers used */ ++ Elf32_Sword ri_gp_value; /* $gp register value */ ++} Elf32_RegInfo; ++ ++/* Entries found in sections of type SHT_MIPS_OPTIONS. */ ++ ++typedef struct ++{ ++ unsigned char kind; /* Determines interpretation of the ++ variable part of descriptor. */ ++ unsigned char size; /* Size of descriptor, including header. */ ++ Elf32_Section section; /* Section header index of section affected, ++ 0 for global options. */ ++ Elf32_Word info; /* Kind-specific information. */ ++} Elf_Options; ++ ++/* Values for `kind' field in Elf_Options. */ ++ ++#define ODK_NULL 0 /* Undefined. */ ++#define ODK_REGINFO 1 /* Register usage information. */ ++#define ODK_EXCEPTIONS 2 /* Exception processing options. */ ++#define ODK_PAD 3 /* Section padding options. */ ++#define ODK_HWPATCH 4 /* Hardware workarounds performed */ ++#define ODK_FILL 5 /* record the fill value used by the linker. */ ++#define ODK_TAGS 6 /* reserve space for desktop tools to write. */ ++#define ODK_HWAND 7 /* HW workarounds. 'AND' bits when merging. */ ++#define ODK_HWOR 8 /* HW workarounds. 'OR' bits when merging. */ ++ ++/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */ ++ ++#define OEX_FPU_MIN 0x1f /* FPE's which MUST be enabled. */ ++#define OEX_FPU_MAX 0x1f00 /* FPE's which MAY be enabled. */ ++#define OEX_PAGE0 0x10000 /* page zero must be mapped. */ ++#define OEX_SMM 0x20000 /* Force sequential memory mode? */ ++#define OEX_FPDBUG 0x40000 /* Force floating point debug mode? */ ++#define OEX_PRECISEFP OEX_FPDBUG ++#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults? */ ++ ++#define OEX_FPU_INVAL 0x10 ++#define OEX_FPU_DIV0 0x08 ++#define OEX_FPU_OFLO 0x04 ++#define OEX_FPU_UFLO 0x02 ++#define OEX_FPU_INEX 0x01 ++ ++/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */ ++ ++#define OHW_R4KEOP 0x1 /* R4000 end-of-page patch. */ ++#define OHW_R8KPFETCH 0x2 /* may need R8000 prefetch patch. */ ++#define OHW_R5KEOP 0x4 /* R5000 end-of-page patch. */ ++#define OHW_R5KCVTL 0x8 /* R5000 cvt.[ds].l bug. clean=1. */ ++ ++#define OPAD_PREFIX 0x1 ++#define OPAD_POSTFIX 0x2 ++#define OPAD_SYMBOL 0x4 ++ ++/* Entry found in `.options' section. */ ++ ++typedef struct ++{ ++ Elf32_Word hwp_flags1; /* Extra flags. */ ++ Elf32_Word hwp_flags2; /* Extra flags. */ ++} Elf_Options_Hw; ++ ++/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */ ++ ++#define OHWA0_R4KEOP_CHECKED 0x00000001 ++#define OHWA1_R4KEOP_CLEAN 0x00000002 ++ ++/* MIPS relocs. */ ++ ++#define R_MIPS_NONE 0 /* No reloc */ ++#define R_MIPS_16 1 /* Direct 16 bit */ ++#define R_MIPS_32 2 /* Direct 32 bit */ ++#define R_MIPS_REL32 3 /* PC relative 32 bit */ ++#define R_MIPS_26 4 /* Direct 26 bit shifted */ ++#define R_MIPS_HI16 5 /* High 16 bit */ ++#define R_MIPS_LO16 6 /* Low 16 bit */ ++#define R_MIPS_GPREL16 7 /* GP relative 16 bit */ ++#define R_MIPS_LITERAL 8 /* 16 bit literal entry */ ++#define R_MIPS_GOT16 9 /* 16 bit GOT entry */ ++#define R_MIPS_PC16 10 /* PC relative 16 bit */ ++#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */ ++#define R_MIPS_GPREL32 12 /* GP relative 32 bit */ ++ ++#define R_MIPS_SHIFT5 16 ++#define R_MIPS_SHIFT6 17 ++#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 R_MIPS_JALR 37 ++#define R_MIPS_TLS_DTPMOD32 38 /* Module number 32 bit */ ++#define R_MIPS_TLS_DTPREL32 39 /* Module-relative offset 32 bit */ ++#define R_MIPS_TLS_DTPMOD64 40 /* Module number 64 bit */ ++#define R_MIPS_TLS_DTPREL64 41 /* Module-relative offset 64 bit */ ++#define R_MIPS_TLS_GD 42 /* 16 bit GOT offset for GD */ ++#define R_MIPS_TLS_LDM 43 /* 16 bit GOT offset for LDM */ ++#define R_MIPS_TLS_DTPREL_HI16 44 /* Module-relative offset, high 16 bits */ ++#define R_MIPS_TLS_DTPREL_LO16 45 /* Module-relative offset, low 16 bits */ ++#define R_MIPS_TLS_GOTTPREL 46 /* 16 bit GOT offset for IE */ ++#define R_MIPS_TLS_TPREL32 47 /* TP-relative offset, 32 bit */ ++#define R_MIPS_TLS_TPREL64 48 /* TP-relative offset, 64 bit */ ++#define R_MIPS_TLS_TPREL_HI16 49 /* TP-relative offset, high 16 bits */ ++#define R_MIPS_TLS_TPREL_LO16 50 /* TP-relative offset, low 16 bits */ ++#define R_MIPS_GLOB_DAT 51 ++#define R_MIPS_COPY 126 ++#define R_MIPS_JUMP_SLOT 127 ++/* Keep this the last entry. */ ++#define R_MIPS_NUM 128 ++ ++/* Legal values for p_type field of Elf32_Phdr. */ ++ ++#define PT_MIPS_REGINFO 0x70000000 /* Register usage information */ ++#define PT_MIPS_RTPROC 0x70000001 /* Runtime procedure table. */ ++#define PT_MIPS_OPTIONS 0x70000002 ++ ++/* Special program header types. */ ++ ++#define PF_MIPS_LOCAL 0x10000000 ++ ++/* Legal values for d_tag field of Elf32_Dyn. */ ++ ++#define DT_MIPS_RLD_VERSION 0x70000001 /* Runtime linker interface version */ ++#define DT_MIPS_TIME_STAMP 0x70000002 /* Timestamp */ ++#define DT_MIPS_ICHECKSUM 0x70000003 /* Checksum */ ++#define DT_MIPS_IVERSION 0x70000004 /* Version string (string tbl index) */ ++#define DT_MIPS_FLAGS 0x70000005 /* Flags */ ++#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Base address */ ++#define DT_MIPS_MSYM 0x70000007 ++#define DT_MIPS_CONFLICT 0x70000008 /* Address of CONFLICT section */ ++#define DT_MIPS_LIBLIST 0x70000009 /* Address of LIBLIST section */ ++#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* Number of local GOT entries */ ++#define DT_MIPS_CONFLICTNO 0x7000000b /* Number of CONFLICT entries */ ++#define DT_MIPS_LIBLISTNO 0x70000010 /* Number of LIBLIST entries */ ++#define DT_MIPS_SYMTABNO 0x70000011 /* Number of DYNSYM entries */ ++#define DT_MIPS_UNREFEXTNO 0x70000012 /* First external DYNSYM */ ++#define DT_MIPS_GOTSYM 0x70000013 /* First GOT entry in DYNSYM */ ++#define DT_MIPS_HIPAGENO 0x70000014 /* Number of GOT page table entries */ ++#define DT_MIPS_RLD_MAP 0x70000016 /* Address of run time loader map. */ ++#define DT_MIPS_DELTA_CLASS 0x70000017 /* Delta C++ class definition. */ ++#define DT_MIPS_DELTA_CLASS_NO 0x70000018 /* Number of entries in ++ DT_MIPS_DELTA_CLASS. */ ++#define DT_MIPS_DELTA_INSTANCE 0x70000019 /* Delta C++ class instances. */ ++#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in ++ DT_MIPS_DELTA_INSTANCE. */ ++#define DT_MIPS_DELTA_RELOC 0x7000001b /* Delta relocations. */ ++#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in ++ DT_MIPS_DELTA_RELOC. */ ++#define DT_MIPS_DELTA_SYM 0x7000001d /* Delta symbols that Delta ++ relocations refer to. */ ++#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in ++ DT_MIPS_DELTA_SYM. */ ++#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the ++ class declaration. */ ++#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in ++ DT_MIPS_DELTA_CLASSSYM. */ ++#define DT_MIPS_CXX_FLAGS 0x70000022 /* Flags indicating for C++ flavor. */ ++#define DT_MIPS_PIXIE_INIT 0x70000023 ++#define DT_MIPS_SYMBOL_LIB 0x70000024 ++#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 ++#define DT_MIPS_LOCAL_GOTIDX 0x70000026 ++#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 ++#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 ++#define DT_MIPS_OPTIONS 0x70000029 /* Address of .options. */ ++#define DT_MIPS_INTERFACE 0x7000002a /* Address of .interface. */ ++#define DT_MIPS_DYNSTR_ALIGN 0x7000002b ++#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ ++#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve ++ function stored in GOT. */ ++#define DT_MIPS_PERF_SUFFIX 0x7000002e /* Default suffix of dso to be added ++ by rld on dlopen() calls. */ ++#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ ++#define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */ ++#define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */ ++/* The address of .got.plt in an executable using the new non-PIC ABI. */ ++#define DT_MIPS_PLTGOT 0x70000032 ++/* The base of the PLT in an executable using the new non-PIC ABI if that ++ PLT is writable. For a non-writable PLT, this is omitted or has a zero ++ value. */ ++#define DT_MIPS_RWPLT 0x70000034 ++#define DT_MIPS_NUM 0x35 ++ ++/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ ++ ++#define RHF_NONE 0 /* No flags */ ++#define RHF_QUICKSTART (1 << 0) /* Use quickstart */ ++#define RHF_NOTPOT (1 << 1) /* Hash size not power of 2 */ ++#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) /* Ignore LD_LIBRARY_PATH */ ++#define RHF_NO_MOVE (1 << 3) ++#define RHF_SGI_ONLY (1 << 4) ++#define RHF_GUARANTEE_INIT (1 << 5) ++#define RHF_DELTA_C_PLUS_PLUS (1 << 6) ++#define RHF_GUARANTEE_START_INIT (1 << 7) ++#define RHF_PIXIE (1 << 8) ++#define RHF_DEFAULT_DELAY_LOAD (1 << 9) ++#define RHF_REQUICKSTART (1 << 10) ++#define RHF_REQUICKSTARTED (1 << 11) ++#define RHF_CORD (1 << 12) ++#define RHF_NO_UNRES_UNDEF (1 << 13) ++#define RHF_RLD_ORDER_SAFE (1 << 14) ++ ++/* Entries found in sections of type SHT_MIPS_LIBLIST. */ ++ ++typedef struct ++{ ++ Elf32_Word l_name; /* Name (string table index) */ ++ Elf32_Word l_time_stamp; /* Timestamp */ ++ Elf32_Word l_checksum; /* Checksum */ ++ Elf32_Word l_version; /* Interface version */ ++ Elf32_Word l_flags; /* Flags */ ++} Elf32_Lib; ++ ++typedef struct ++{ ++ Elf64_Word l_name; /* Name (string table index) */ ++ Elf64_Word l_time_stamp; /* Timestamp */ ++ Elf64_Word l_checksum; /* Checksum */ ++ Elf64_Word l_version; /* Interface version */ ++ Elf64_Word l_flags; /* Flags */ ++} Elf64_Lib; ++ ++ ++/* Legal values for l_flags. */ ++ ++#define LL_NONE 0 ++#define LL_EXACT_MATCH (1 << 0) /* Require exact match */ ++#define LL_IGNORE_INT_VER (1 << 1) /* Ignore interface version */ ++#define LL_REQUIRE_MINOR (1 << 2) ++#define LL_EXPORTS (1 << 3) ++#define LL_DELAY_LOAD (1 << 4) ++#define LL_DELTA (1 << 5) ++ ++/* Entries found in sections of type SHT_MIPS_CONFLICT. */ ++ ++typedef Elf32_Addr Elf32_Conflict; ++ ++ ++/* HPPA specific definitions. */ ++ ++/* Legal values for e_flags field of Elf32_Ehdr. */ ++ ++#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */ ++#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */ ++#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */ ++#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */ ++#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch ++ prediction. */ ++#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */ ++#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. */ ++ ++/* Defined values for `e_flags & EF_PARISC_ARCH' are: */ ++ ++#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */ ++#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */ ++#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */ ++ ++/* Additional section indeces. */ ++ ++#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared ++ symbols in ANSI C. */ ++#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */ ++ ++/* Legal values for sh_type field of Elf32_Shdr. */ ++ ++#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */ ++#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */ ++#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. */ ++ ++/* Legal values for sh_flags field of Elf32_Shdr. */ ++ ++#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */ ++#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */ ++#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. */ ++ ++/* Legal values for ST_TYPE subfield of st_info (symbol type). */ ++ ++#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */ ++ ++#define STT_HP_OPAQUE (STT_LOOS + 0x1) ++#define STT_HP_STUB (STT_LOOS + 0x2) ++ ++/* HPPA relocs. */ ++ ++#define R_PARISC_NONE 0 /* No reloc. */ ++#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */ ++#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */ ++#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */ ++#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */ ++#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */ ++#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */ ++#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */ ++#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */ ++#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */ ++#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */ ++#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */ ++#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */ ++#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */ ++#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */ ++#define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */ ++#define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */ ++#define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */ ++#define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */ ++#define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */ ++#define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */ ++#define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */ ++#define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */ ++#define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */ ++#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ ++#define R_PARISC_FPTR64 64 /* 64 bits function address. */ ++#define R_PARISC_PLABEL32 65 /* 32 bits function address. */ ++#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ ++#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ ++#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ ++#define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */ ++#define R_PARISC_PCREL16F 77 /* 16 bits PC-rel. address. */ ++#define R_PARISC_PCREL16WF 78 /* 16 bits PC-rel. address. */ ++#define R_PARISC_PCREL16DF 79 /* 16 bits PC-rel. address. */ ++#define R_PARISC_DIR64 80 /* 64 bits of eff. address. */ ++#define R_PARISC_DIR14WR 83 /* 14 bits of eff. address. */ ++#define R_PARISC_DIR14DR 84 /* 14 bits of eff. address. */ ++#define R_PARISC_DIR16F 85 /* 16 bits of eff. address. */ ++#define R_PARISC_DIR16WF 86 /* 16 bits of eff. address. */ ++#define R_PARISC_DIR16DF 87 /* 16 bits of eff. address. */ ++#define R_PARISC_GPREL64 88 /* 64 bits of GP-rel. address. */ ++#define R_PARISC_GPREL14WR 91 /* GP-rel. address, right 14 bits. */ ++#define R_PARISC_GPREL14DR 92 /* GP-rel. address, right 14 bits. */ ++#define R_PARISC_GPREL16F 93 /* 16 bits GP-rel. address. */ ++#define R_PARISC_GPREL16WF 94 /* 16 bits GP-rel. address. */ ++#define R_PARISC_GPREL16DF 95 /* 16 bits GP-rel. address. */ ++#define R_PARISC_LTOFF64 96 /* 64 bits LT-rel. address. */ ++#define R_PARISC_LTOFF14WR 99 /* LT-rel. address, right 14 bits. */ ++#define R_PARISC_LTOFF14DR 100 /* LT-rel. address, right 14 bits. */ ++#define R_PARISC_LTOFF16F 101 /* 16 bits LT-rel. address. */ ++#define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */ ++#define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */ ++#define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */ ++#define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */ ++#define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */ ++#define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */ ++#define R_PARISC_PLTOFF16F 117 /* 16 bits LT-rel. address. */ ++#define R_PARISC_PLTOFF16WF 118 /* 16 bits PLT-rel. address. */ ++#define R_PARISC_PLTOFF16DF 119 /* 16 bits PLT-rel. address. */ ++#define R_PARISC_LTOFF_FPTR64 120 /* 64 bits LT-rel. function ptr. */ ++#define R_PARISC_LTOFF_FPTR14WR 123 /* LT-rel. fct. ptr., right 14 bits. */ ++#define R_PARISC_LTOFF_FPTR14DR 124 /* LT-rel. fct. ptr., right 14 bits. */ ++#define R_PARISC_LTOFF_FPTR16F 125 /* 16 bits LT-rel. function ptr. */ ++#define R_PARISC_LTOFF_FPTR16WF 126 /* 16 bits LT-rel. function ptr. */ ++#define R_PARISC_LTOFF_FPTR16DF 127 /* 16 bits LT-rel. function ptr. */ ++#define R_PARISC_LORESERVE 128 ++#define R_PARISC_COPY 128 /* Copy relocation. */ ++#define R_PARISC_IPLT 129 /* Dynamic reloc, imported PLT */ ++#define R_PARISC_EPLT 130 /* Dynamic reloc, exported PLT */ ++#define R_PARISC_TPREL32 153 /* 32 bits TP-rel. address. */ ++#define R_PARISC_TPREL21L 154 /* TP-rel. address, left 21 bits. */ ++#define R_PARISC_TPREL14R 158 /* TP-rel. address, right 14 bits. */ ++#define R_PARISC_LTOFF_TP21L 162 /* LT-TP-rel. address, left 21 bits. */ ++#define R_PARISC_LTOFF_TP14R 166 /* LT-TP-rel. address, right 14 bits.*/ ++#define R_PARISC_LTOFF_TP14F 167 /* 14 bits LT-TP-rel. address. */ ++#define R_PARISC_TPREL64 216 /* 64 bits TP-rel. address. */ ++#define R_PARISC_TPREL14WR 219 /* TP-rel. address, right 14 bits. */ ++#define R_PARISC_TPREL14DR 220 /* TP-rel. address, right 14 bits. */ ++#define R_PARISC_TPREL16F 221 /* 16 bits TP-rel. address. */ ++#define R_PARISC_TPREL16WF 222 /* 16 bits TP-rel. address. */ ++#define R_PARISC_TPREL16DF 223 /* 16 bits TP-rel. address. */ ++#define R_PARISC_LTOFF_TP64 224 /* 64 bits LT-TP-rel. address. */ ++#define R_PARISC_LTOFF_TP14WR 227 /* LT-TP-rel. address, right 14 bits.*/ ++#define R_PARISC_LTOFF_TP14DR 228 /* LT-TP-rel. address, right 14 bits.*/ ++#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ ++#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ ++#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ ++#define R_PARISC_HIRESERVE 255 ++ ++/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ ++ ++#define PT_HP_TLS (PT_LOOS + 0x0) ++#define PT_HP_CORE_NONE (PT_LOOS + 0x1) ++#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) ++#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) ++#define PT_HP_CORE_COMM (PT_LOOS + 0x4) ++#define PT_HP_CORE_PROC (PT_LOOS + 0x5) ++#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) ++#define PT_HP_CORE_STACK (PT_LOOS + 0x7) ++#define PT_HP_CORE_SHM (PT_LOOS + 0x8) ++#define PT_HP_CORE_MMF (PT_LOOS + 0x9) ++#define PT_HP_PARALLEL (PT_LOOS + 0x10) ++#define PT_HP_FASTBIND (PT_LOOS + 0x11) ++#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) ++#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) ++#define PT_HP_STACK (PT_LOOS + 0x14) ++ ++#define PT_PARISC_ARCHEXT 0x70000000 ++#define PT_PARISC_UNWIND 0x70000001 ++ ++/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */ ++ ++#define PF_PARISC_SBP 0x08000000 ++ ++#define PF_HP_PAGE_SIZE 0x00100000 ++#define PF_HP_FAR_SHARED 0x00200000 ++#define PF_HP_NEAR_SHARED 0x00400000 ++#define PF_HP_CODE 0x01000000 ++#define PF_HP_MODIFY 0x02000000 ++#define PF_HP_LAZYSWAP 0x04000000 ++#define PF_HP_SBP 0x08000000 ++ ++ ++/* Alpha specific definitions. */ ++ ++/* Legal values for e_flags field of Elf64_Ehdr. */ ++ ++#define EF_ALPHA_32BIT 1 /* All addresses must be < 2GB. */ ++#define EF_ALPHA_CANRELAX 2 /* Relocations for relaxing exist. */ ++ ++/* Legal values for sh_type field of Elf64_Shdr. */ ++ ++/* These two are primerily concerned with ECOFF debugging info. */ ++#define SHT_ALPHA_DEBUG 0x70000001 ++#define SHT_ALPHA_REGINFO 0x70000002 ++ ++/* Legal values for sh_flags field of Elf64_Shdr. */ ++ ++#define SHF_ALPHA_GPREL 0x10000000 ++ ++/* Legal values for st_other field of Elf64_Sym. */ ++#define STO_ALPHA_NOPV 0x80 /* No PV required. */ ++#define STO_ALPHA_STD_GPLOAD 0x88 /* PV only used for initial ldgp. */ ++ ++/* Alpha relocs. */ ++ ++#define R_ALPHA_NONE 0 /* No reloc */ ++#define R_ALPHA_REFLONG 1 /* Direct 32 bit */ ++#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ ++#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ ++#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ ++#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ ++#define R_ALPHA_GPDISP 6 /* Add displacement to GP */ ++#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ ++#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ ++#define R_ALPHA_SREL16 9 /* PC relative 16 bit */ ++#define R_ALPHA_SREL32 10 /* PC relative 32 bit */ ++#define R_ALPHA_SREL64 11 /* PC relative 64 bit */ ++#define R_ALPHA_GPRELHIGH 17 /* GP relative 32 bit, high 16 bits */ ++#define R_ALPHA_GPRELLOW 18 /* GP relative 32 bit, low 16 bits */ ++#define R_ALPHA_GPREL16 19 /* GP relative 16 bit */ ++#define R_ALPHA_COPY 24 /* Copy symbol at runtime */ ++#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ ++#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ ++#define R_ALPHA_RELATIVE 27 /* Adjust by program base */ ++#define R_ALPHA_TLS_GD_HI 28 ++#define R_ALPHA_TLSGD 29 ++#define R_ALPHA_TLS_LDM 30 ++#define R_ALPHA_DTPMOD64 31 ++#define R_ALPHA_GOTDTPREL 32 ++#define R_ALPHA_DTPREL64 33 ++#define R_ALPHA_DTPRELHI 34 ++#define R_ALPHA_DTPRELLO 35 ++#define R_ALPHA_DTPREL16 36 ++#define R_ALPHA_GOTTPREL 37 ++#define R_ALPHA_TPREL64 38 ++#define R_ALPHA_TPRELHI 39 ++#define R_ALPHA_TPRELLO 40 ++#define R_ALPHA_TPREL16 41 ++/* Keep this the last entry. */ ++#define R_ALPHA_NUM 46 ++ ++/* Magic values of the LITUSE relocation addend. */ ++#define LITUSE_ALPHA_ADDR 0 ++#define LITUSE_ALPHA_BASE 1 ++#define LITUSE_ALPHA_BYTOFF 2 ++#define LITUSE_ALPHA_JSR 3 ++#define LITUSE_ALPHA_TLS_GD 4 ++#define LITUSE_ALPHA_TLS_LDM 5 ++ ++/* Legal values for d_tag of Elf64_Dyn. */ ++#define DT_ALPHA_PLTRO (DT_LOPROC + 0) ++#define DT_ALPHA_NUM 1 ++ ++/* PowerPC specific declarations */ ++ ++/* Values for Elf32/64_Ehdr.e_flags. */ ++#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */ ++ ++/* Cygnus local bits below */ ++#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/ ++#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib ++ flag */ ++ ++/* PowerPC relocations defined by the ABIs */ ++#define R_PPC_NONE 0 ++#define R_PPC_ADDR32 1 /* 32bit absolute address */ ++#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */ ++#define R_PPC_ADDR16 3 /* 16bit absolute address */ ++#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */ ++#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */ ++#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */ ++#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */ ++#define R_PPC_ADDR14_BRTAKEN 8 ++#define R_PPC_ADDR14_BRNTAKEN 9 ++#define R_PPC_REL24 10 /* PC relative 26 bit */ ++#define R_PPC_REL14 11 /* PC relative 16 bit */ ++#define R_PPC_REL14_BRTAKEN 12 ++#define R_PPC_REL14_BRNTAKEN 13 ++#define R_PPC_GOT16 14 ++#define R_PPC_GOT16_LO 15 ++#define R_PPC_GOT16_HI 16 ++#define R_PPC_GOT16_HA 17 ++#define R_PPC_PLTREL24 18 ++#define R_PPC_COPY 19 ++#define R_PPC_GLOB_DAT 20 ++#define R_PPC_JMP_SLOT 21 ++#define R_PPC_RELATIVE 22 ++#define R_PPC_LOCAL24PC 23 ++#define R_PPC_UADDR32 24 ++#define R_PPC_UADDR16 25 ++#define R_PPC_REL32 26 ++#define R_PPC_PLT32 27 ++#define R_PPC_PLTREL32 28 ++#define R_PPC_PLT16_LO 29 ++#define R_PPC_PLT16_HI 30 ++#define R_PPC_PLT16_HA 31 ++#define R_PPC_SDAREL16 32 ++#define R_PPC_SECTOFF 33 ++#define R_PPC_SECTOFF_LO 34 ++#define R_PPC_SECTOFF_HI 35 ++#define R_PPC_SECTOFF_HA 36 ++ ++/* PowerPC relocations defined for the TLS access ABI. */ ++#define R_PPC_TLS 67 /* none (sym+add)@tls */ ++#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */ ++#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */ ++#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ ++#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ ++#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ ++#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */ ++#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */ ++#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ ++#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ ++#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ ++#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */ ++#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ ++#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ ++#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ ++#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ ++#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ ++#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ ++#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ ++#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ ++#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */ ++#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */ ++#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ ++#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ ++#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */ ++#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */ ++#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */ ++#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */ ++ ++/* Keep this the last entry. */ ++#define R_PPC_NUM 95 ++ ++/* The remaining relocs are from the Embedded ELF ABI, and are not ++ in the SVR4 ELF ABI. */ ++#define R_PPC_EMB_NADDR32 101 ++#define R_PPC_EMB_NADDR16 102 ++#define R_PPC_EMB_NADDR16_LO 103 ++#define R_PPC_EMB_NADDR16_HI 104 ++#define R_PPC_EMB_NADDR16_HA 105 ++#define R_PPC_EMB_SDAI16 106 ++#define R_PPC_EMB_SDA2I16 107 ++#define R_PPC_EMB_SDA2REL 108 ++#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */ ++#define R_PPC_EMB_MRKREF 110 ++#define R_PPC_EMB_RELSEC16 111 ++#define R_PPC_EMB_RELST_LO 112 ++#define R_PPC_EMB_RELST_HI 113 ++#define R_PPC_EMB_RELST_HA 114 ++#define R_PPC_EMB_BIT_FLD 115 ++#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */ ++ ++/* Diab tool relocations. */ ++#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */ ++#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */ ++#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */ ++#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */ ++#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */ ++#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */ ++ ++/* GNU relocs used in PIC code sequences. */ ++#define R_PPC_REL16 249 /* word32 (sym+add-.) */ ++#define R_PPC_REL16_LO 250 /* half16 (sym+add-.)@l */ ++#define R_PPC_REL16_HI 251 /* half16 (sym+add-.)@h */ ++#define R_PPC_REL16_HA 252 /* half16 (sym+add-.)@ha */ ++ ++/* This is a phony reloc to handle any old fashioned TOC16 references ++ that may still be in object files. */ ++#define R_PPC_TOC16 255 ++ ++/* PowerPC specific values for the Dyn d_tag field. */ ++#define DT_PPC_GOT (DT_LOPROC + 0) ++#define DT_PPC_NUM 1 ++ ++/* PowerPC64 relocations defined by the ABIs */ ++#define R_PPC64_NONE R_PPC_NONE ++#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */ ++#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */ ++#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */ ++#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */ ++#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */ ++#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */ ++#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */ ++#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN ++#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN ++#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ ++#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */ ++#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN ++#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN ++#define R_PPC64_GOT16 R_PPC_GOT16 ++#define R_PPC64_GOT16_LO R_PPC_GOT16_LO ++#define R_PPC64_GOT16_HI R_PPC_GOT16_HI ++#define R_PPC64_GOT16_HA R_PPC_GOT16_HA ++ ++#define R_PPC64_COPY R_PPC_COPY ++#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT ++#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT ++#define R_PPC64_RELATIVE R_PPC_RELATIVE ++ ++#define R_PPC64_UADDR32 R_PPC_UADDR32 ++#define R_PPC64_UADDR16 R_PPC_UADDR16 ++#define R_PPC64_REL32 R_PPC_REL32 ++#define R_PPC64_PLT32 R_PPC_PLT32 ++#define R_PPC64_PLTREL32 R_PPC_PLTREL32 ++#define R_PPC64_PLT16_LO R_PPC_PLT16_LO ++#define R_PPC64_PLT16_HI R_PPC_PLT16_HI ++#define R_PPC64_PLT16_HA R_PPC_PLT16_HA ++ ++#define R_PPC64_SECTOFF R_PPC_SECTOFF ++#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO ++#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI ++#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA ++#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */ ++#define R_PPC64_ADDR64 38 /* doubleword64 S + A */ ++#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */ ++#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ ++#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ ++#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */ ++#define R_PPC64_UADDR64 43 /* doubleword64 S + A */ ++#define R_PPC64_REL64 44 /* doubleword64 S + A - P */ ++#define R_PPC64_PLT64 45 /* doubleword64 L + A */ ++#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */ ++#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */ ++#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */ ++#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */ ++#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */ ++#define R_PPC64_TOC 51 /* doubleword64 .TOC */ ++#define R_PPC64_PLTGOT16 52 /* half16* M + A */ ++#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */ ++#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */ ++#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */ ++ ++#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */ ++#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */ ++#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */ ++#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */ ++#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */ ++#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */ ++#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */ ++#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */ ++#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */ ++#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */ ++#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */ ++ ++/* PowerPC64 relocations defined for the TLS access ABI. */ ++#define R_PPC64_TLS 67 /* none (sym+add)@tls */ ++#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */ ++#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */ ++#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ ++#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ ++#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ ++#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */ ++#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */ ++#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ ++#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ ++#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ ++#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */ ++#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ ++#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ ++#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ ++#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ ++#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ ++#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ ++#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ ++#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ ++#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ ++#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ ++#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ ++#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ ++#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */ ++#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ ++#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */ ++#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */ ++#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */ ++#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */ ++#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */ ++#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */ ++#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */ ++#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ ++#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */ ++#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ ++#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */ ++#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ ++#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ ++#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ ++ ++/* Keep this the last entry. */ ++#define R_PPC64_NUM 107 ++ ++/* PowerPC64 specific values for the Dyn d_tag field. */ ++#define DT_PPC64_GLINK (DT_LOPROC + 0) ++#define DT_PPC64_OPD (DT_LOPROC + 1) ++#define DT_PPC64_OPDSZ (DT_LOPROC + 2) ++#define DT_PPC64_NUM 3 ++ ++ ++/* ARM specific declarations */ ++ ++/* Processor specific flags for the ELF header e_flags field. */ ++#define EF_ARM_RELEXEC 0x01 ++#define EF_ARM_HASENTRY 0x02 ++#define EF_ARM_INTERWORK 0x04 ++#define EF_ARM_APCS_26 0x08 ++#define EF_ARM_APCS_FLOAT 0x10 ++#define EF_ARM_PIC 0x20 ++#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */ ++#define EF_ARM_NEW_ABI 0x80 ++#define EF_ARM_OLD_ABI 0x100 ++ ++/* Other constants defined in the ARM ELF spec. version B-01. */ ++/* NB. These conflict with values defined above. */ ++#define EF_ARM_SYMSARESORTED 0x04 ++#define EF_ARM_DYNSYMSUSESEGIDX 0x08 ++#define EF_ARM_MAPSYMSFIRST 0x10 ++#define EF_ARM_EABIMASK 0XFF000000 ++ ++#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) ++#define EF_ARM_EABI_UNKNOWN 0x00000000 ++#define EF_ARM_EABI_VER1 0x01000000 ++#define EF_ARM_EABI_VER2 0x02000000 ++ ++/* Additional symbol types for Thumb */ ++#define STT_ARM_TFUNC 0xd ++ ++/* ARM-specific values for sh_flags */ ++#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */ ++#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined ++ in the input to a link step */ ++ ++/* ARM-specific program header flags */ ++#define PF_ARM_SB 0x10000000 /* Segment contains the location ++ addressed by the static base */ ++ ++/* Processor specific values for the Phdr p_type field. */ ++#define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */ ++ ++/* ARM relocs. */ ++ ++#define R_ARM_NONE 0 /* No reloc */ ++#define R_ARM_PC24 1 /* PC relative 26 bit branch */ ++#define R_ARM_ABS32 2 /* Direct 32 bit */ ++#define R_ARM_REL32 3 /* PC relative 32 bit */ ++#define R_ARM_PC13 4 ++#define R_ARM_ABS16 5 /* Direct 16 bit */ ++#define R_ARM_ABS12 6 /* Direct 12 bit */ ++#define R_ARM_THM_ABS5 7 ++#define R_ARM_ABS8 8 /* Direct 8 bit */ ++#define R_ARM_SBREL32 9 ++#define R_ARM_THM_PC22 10 ++#define R_ARM_THM_PC8 11 ++#define R_ARM_AMP_VCALL9 12 ++#define R_ARM_SWI24 13 ++#define R_ARM_THM_SWI8 14 ++#define R_ARM_XPC25 15 ++#define R_ARM_THM_XPC22 16 ++#define R_ARM_TLS_DTPMOD32 17 ++#define R_ARM_TLS_DTPOFF32 18 ++#define R_ARM_TLS_TPOFF32 19 ++#define R_ARM_COPY 20 /* Copy symbol at runtime */ ++#define R_ARM_GLOB_DAT 21 /* Create GOT entry */ ++#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */ ++#define R_ARM_RELATIVE 23 /* Adjust by program base */ ++#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */ ++#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */ ++#define R_ARM_GOT32 26 /* 32 bit GOT entry */ ++#define R_ARM_PLT32 27 /* 32 bit PLT address */ ++#define R_ARM_ALU_PCREL_7_0 32 ++#define R_ARM_ALU_PCREL_15_8 33 ++#define R_ARM_ALU_PCREL_23_15 34 ++#define R_ARM_LDR_SBREL_11_0 35 ++#define R_ARM_ALU_SBREL_19_12 36 ++#define R_ARM_ALU_SBREL_27_20 37 ++#define R_ARM_GNU_VTENTRY 100 ++#define R_ARM_GNU_VTINHERIT 101 ++#define R_ARM_THM_PC11 102 /* thumb unconditional branch */ ++#define R_ARM_THM_PC9 103 /* thumb conditional branch */ ++#define R_ARM_TLS_GD32 104 ++#define R_ARM_TLS_LDM32 105 ++#define R_ARM_TLS_LDO32 106 ++#define R_ARM_TLS_IE32 107 ++#define R_ARM_TLS_LE32 108 ++#define R_ARM_TLS_LDO12 109 ++#define R_ARM_TLS_LE12 110 ++#define R_ARM_TLS_IE12GP 111 ++#define R_ARM_RXPC25 249 ++#define R_ARM_RSBREL32 250 ++#define R_ARM_THM_RPC22 251 ++#define R_ARM_RREL32 252 ++#define R_ARM_RABS22 253 ++#define R_ARM_RPC24 254 ++#define R_ARM_RBASE 255 ++/* Keep this the last entry. */ ++#define R_ARM_NUM 256 ++ ++/* IA-64 specific declarations. */ ++ ++/* Processor specific flags for the Ehdr e_flags field. */ ++#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */ ++#define EF_IA_64_ABI64 0x00000010 /* 64-bit ABI */ ++#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */ ++ ++/* Processor specific values for the Phdr p_type field. */ ++#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */ ++#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */ ++#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) ++#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) ++#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) ++ ++/* Processor specific flags for the Phdr p_flags field. */ ++#define PF_IA_64_NORECOV 0x80000000 /* spec insns w/o recovery */ ++ ++/* Processor specific values for the Shdr sh_type field. */ ++#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */ ++#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */ ++ ++/* Processor specific flags for the Shdr sh_flags field. */ ++#define SHF_IA_64_SHORT 0x10000000 /* section near gp */ ++#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */ ++ ++/* Processor specific values for the Dyn d_tag field. */ ++#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) ++#define DT_IA_64_NUM 1 ++ ++/* IA-64 relocations. */ ++#define R_IA64_NONE 0x00 /* none */ ++#define R_IA64_IMM14 0x21 /* symbol + addend, add imm14 */ ++#define R_IA64_IMM22 0x22 /* symbol + addend, add imm22 */ ++#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */ ++#define R_IA64_DIR32MSB 0x24 /* symbol + addend, data4 MSB */ ++#define R_IA64_DIR32LSB 0x25 /* symbol + addend, data4 LSB */ ++#define R_IA64_DIR64MSB 0x26 /* symbol + addend, data8 MSB */ ++#define R_IA64_DIR64LSB 0x27 /* symbol + addend, data8 LSB */ ++#define R_IA64_GPREL22 0x2a /* @gprel(sym + add), add imm22 */ ++#define R_IA64_GPREL64I 0x2b /* @gprel(sym + add), mov imm64 */ ++#define R_IA64_GPREL32MSB 0x2c /* @gprel(sym + add), data4 MSB */ ++#define R_IA64_GPREL32LSB 0x2d /* @gprel(sym + add), data4 LSB */ ++#define R_IA64_GPREL64MSB 0x2e /* @gprel(sym + add), data8 MSB */ ++#define R_IA64_GPREL64LSB 0x2f /* @gprel(sym + add), data8 LSB */ ++#define R_IA64_LTOFF22 0x32 /* @ltoff(sym + add), add imm22 */ ++#define R_IA64_LTOFF64I 0x33 /* @ltoff(sym + add), mov imm64 */ ++#define R_IA64_PLTOFF22 0x3a /* @pltoff(sym + add), add imm22 */ ++#define R_IA64_PLTOFF64I 0x3b /* @pltoff(sym + add), mov imm64 */ ++#define R_IA64_PLTOFF64MSB 0x3e /* @pltoff(sym + add), data8 MSB */ ++#define R_IA64_PLTOFF64LSB 0x3f /* @pltoff(sym + add), data8 LSB */ ++#define R_IA64_FPTR64I 0x43 /* @fptr(sym + add), mov imm64 */ ++#define R_IA64_FPTR32MSB 0x44 /* @fptr(sym + add), data4 MSB */ ++#define R_IA64_FPTR32LSB 0x45 /* @fptr(sym + add), data4 LSB */ ++#define R_IA64_FPTR64MSB 0x46 /* @fptr(sym + add), data8 MSB */ ++#define R_IA64_FPTR64LSB 0x47 /* @fptr(sym + add), data8 LSB */ ++#define R_IA64_PCREL60B 0x48 /* @pcrel(sym + add), brl */ ++#define R_IA64_PCREL21B 0x49 /* @pcrel(sym + add), ptb, call */ ++#define R_IA64_PCREL21M 0x4a /* @pcrel(sym + add), chk.s */ ++#define R_IA64_PCREL21F 0x4b /* @pcrel(sym + add), fchkf */ ++#define R_IA64_PCREL32MSB 0x4c /* @pcrel(sym + add), data4 MSB */ ++#define R_IA64_PCREL32LSB 0x4d /* @pcrel(sym + add), data4 LSB */ ++#define R_IA64_PCREL64MSB 0x4e /* @pcrel(sym + add), data8 MSB */ ++#define R_IA64_PCREL64LSB 0x4f /* @pcrel(sym + add), data8 LSB */ ++#define R_IA64_LTOFF_FPTR22 0x52 /* @ltoff(@fptr(s+a)), imm22 */ ++#define R_IA64_LTOFF_FPTR64I 0x53 /* @ltoff(@fptr(s+a)), imm64 */ ++#define R_IA64_LTOFF_FPTR32MSB 0x54 /* @ltoff(@fptr(s+a)), data4 MSB */ ++#define R_IA64_LTOFF_FPTR32LSB 0x55 /* @ltoff(@fptr(s+a)), data4 LSB */ ++#define R_IA64_LTOFF_FPTR64MSB 0x56 /* @ltoff(@fptr(s+a)), data8 MSB */ ++#define R_IA64_LTOFF_FPTR64LSB 0x57 /* @ltoff(@fptr(s+a)), data8 LSB */ ++#define R_IA64_SEGREL32MSB 0x5c /* @segrel(sym + add), data4 MSB */ ++#define R_IA64_SEGREL32LSB 0x5d /* @segrel(sym + add), data4 LSB */ ++#define R_IA64_SEGREL64MSB 0x5e /* @segrel(sym + add), data8 MSB */ ++#define R_IA64_SEGREL64LSB 0x5f /* @segrel(sym + add), data8 LSB */ ++#define R_IA64_SECREL32MSB 0x64 /* @secrel(sym + add), data4 MSB */ ++#define R_IA64_SECREL32LSB 0x65 /* @secrel(sym + add), data4 LSB */ ++#define R_IA64_SECREL64MSB 0x66 /* @secrel(sym + add), data8 MSB */ ++#define R_IA64_SECREL64LSB 0x67 /* @secrel(sym + add), data8 LSB */ ++#define R_IA64_REL32MSB 0x6c /* data 4 + REL */ ++#define R_IA64_REL32LSB 0x6d /* data 4 + REL */ ++#define R_IA64_REL64MSB 0x6e /* data 8 + REL */ ++#define R_IA64_REL64LSB 0x6f /* data 8 + REL */ ++#define R_IA64_LTV32MSB 0x74 /* symbol + addend, data4 MSB */ ++#define R_IA64_LTV32LSB 0x75 /* symbol + addend, data4 LSB */ ++#define R_IA64_LTV64MSB 0x76 /* symbol + addend, data8 MSB */ ++#define R_IA64_LTV64LSB 0x77 /* symbol + addend, data8 LSB */ ++#define R_IA64_PCREL21BI 0x79 /* @pcrel(sym + add), 21bit inst */ ++#define R_IA64_PCREL22 0x7a /* @pcrel(sym + add), 22bit inst */ ++#define R_IA64_PCREL64I 0x7b /* @pcrel(sym + add), 64bit inst */ ++#define R_IA64_IPLTMSB 0x80 /* dynamic reloc, imported PLT, MSB */ ++#define R_IA64_IPLTLSB 0x81 /* dynamic reloc, imported PLT, LSB */ ++#define R_IA64_COPY 0x84 /* copy relocation */ ++#define R_IA64_SUB 0x85 /* Addend and symbol difference */ ++#define R_IA64_LTOFF22X 0x86 /* LTOFF22, relaxable. */ ++#define R_IA64_LDXMOV 0x87 /* Use of LTOFF22X. */ ++#define R_IA64_TPREL14 0x91 /* @tprel(sym + add), imm14 */ ++#define R_IA64_TPREL22 0x92 /* @tprel(sym + add), imm22 */ ++#define R_IA64_TPREL64I 0x93 /* @tprel(sym + add), imm64 */ ++#define R_IA64_TPREL64MSB 0x96 /* @tprel(sym + add), data8 MSB */ ++#define R_IA64_TPREL64LSB 0x97 /* @tprel(sym + add), data8 LSB */ ++#define R_IA64_LTOFF_TPREL22 0x9a /* @ltoff(@tprel(s+a)), imm2 */ ++#define R_IA64_DTPMOD64MSB 0xa6 /* @dtpmod(sym + add), data8 MSB */ ++#define R_IA64_DTPMOD64LSB 0xa7 /* @dtpmod(sym + add), data8 LSB */ ++#define R_IA64_LTOFF_DTPMOD22 0xaa /* @ltoff(@dtpmod(sym + add)), imm22 */ ++#define R_IA64_DTPREL14 0xb1 /* @dtprel(sym + add), imm14 */ ++#define R_IA64_DTPREL22 0xb2 /* @dtprel(sym + add), imm22 */ ++#define R_IA64_DTPREL64I 0xb3 /* @dtprel(sym + add), imm64 */ ++#define R_IA64_DTPREL32MSB 0xb4 /* @dtprel(sym + add), data4 MSB */ ++#define R_IA64_DTPREL32LSB 0xb5 /* @dtprel(sym + add), data4 LSB */ ++#define R_IA64_DTPREL64MSB 0xb6 /* @dtprel(sym + add), data8 MSB */ ++#define R_IA64_DTPREL64LSB 0xb7 /* @dtprel(sym + add), data8 LSB */ ++#define R_IA64_LTOFF_DTPREL22 0xba /* @ltoff(@dtprel(s+a)), imm22 */ ++ ++/* SH specific declarations */ ++ ++/* SH specific values for `st_other'. */ ++ ++/* If set, this is a symbol pointing to SHmedia code, which will be branched ++ to, so need to add 1 to the symbol value. */ ++#define STO_SH5_ISA32 (1 << 2) ++ ++/* SH relocs. */ ++#define R_SH_NONE 0 ++#define R_SH_DIR32 1 ++#define R_SH_REL32 2 ++#define R_SH_DIR8WPN 3 ++#define R_SH_IND12W 4 ++#define R_SH_DIR8WPL 5 ++#define R_SH_DIR8WPZ 6 ++#define R_SH_DIR8BP 7 ++#define R_SH_DIR8W 8 ++#define R_SH_DIR8L 9 ++#define R_SH_SWITCH16 25 ++#define R_SH_SWITCH32 26 ++#define R_SH_USES 27 ++#define R_SH_COUNT 28 ++#define R_SH_ALIGN 29 ++#define R_SH_CODE 30 ++#define R_SH_DATA 31 ++#define R_SH_LABEL 32 ++#define R_SH_SWITCH8 33 ++#define R_SH_GNU_VTINHERIT 34 ++#define R_SH_GNU_VTENTRY 35 ++#define R_SH_TLS_GD_32 144 ++#define R_SH_TLS_LD_32 145 ++#define R_SH_TLS_LDO_32 146 ++#define R_SH_TLS_IE_32 147 ++#define R_SH_TLS_LE_32 148 ++#define R_SH_TLS_DTPMOD32 149 ++#define R_SH_TLS_DTPOFF32 150 ++#define R_SH_TLS_TPOFF32 151 ++#define R_SH_GOT32 160 ++#define R_SH_PLT32 161 ++#define R_SH_COPY 162 ++#define R_SH_GLOB_DAT 163 ++#define R_SH_JMP_SLOT 164 ++#define R_SH_RELATIVE 165 ++#define R_SH_GOTOFF 166 ++#define R_SH_GOTPC 167 ++#define R_SH_RELATIVE_LOW16 197 ++#define R_SH_RELATIVE_MEDLOW16 198 ++#define R_SH_IMM_LOW16 246 ++#define R_SH_IMM_LOW16_PCREL 247 ++#define R_SH_IMM_MEDLOW16 248 ++#define R_SH_IMM_MEDLOW16_PCREL 249 ++ ++/* Keep this the last entry. */ ++#define R_SH_NUM 256 ++ ++/* Additional s390 relocs */ ++ ++#define R_390_NONE 0 /* No reloc. */ ++#define R_390_8 1 /* Direct 8 bit. */ ++#define R_390_12 2 /* Direct 12 bit. */ ++#define R_390_16 3 /* Direct 16 bit. */ ++#define R_390_32 4 /* Direct 32 bit. */ ++#define R_390_PC32 5 /* PC relative 32 bit. */ ++#define R_390_GOT12 6 /* 12 bit GOT offset. */ ++#define R_390_GOT32 7 /* 32 bit GOT offset. */ ++#define R_390_PLT32 8 /* 32 bit PC relative PLT address. */ ++#define R_390_COPY 9 /* Copy symbol at runtime. */ ++#define R_390_GLOB_DAT 10 /* Create GOT entry. */ ++#define R_390_JMP_SLOT 11 /* Create PLT entry. */ ++#define R_390_RELATIVE 12 /* Adjust by program base. */ ++#define R_390_GOTOFF32 13 /* 32 bit offset to GOT. */ ++#define R_390_GOTPC 14 /* 32 bit PC relative offset to GOT. */ ++#define R_390_GOT16 15 /* 16 bit GOT offset. */ ++#define R_390_PC16 16 /* PC relative 16 bit. */ ++#define R_390_PC16DBL 17 /* PC relative 16 bit shifted by 1. */ ++#define R_390_PLT16DBL 18 /* 16 bit PC rel. PLT shifted by 1. */ ++#define R_390_PC32DBL 19 /* PC relative 32 bit shifted by 1. */ ++#define R_390_PLT32DBL 20 /* 32 bit PC rel. PLT shifted by 1. */ ++#define R_390_GOTPCDBL 21 /* 32 bit PC rel. GOT shifted by 1. */ ++#define R_390_64 22 /* Direct 64 bit. */ ++#define R_390_PC64 23 /* PC relative 64 bit. */ ++#define R_390_GOT64 24 /* 64 bit GOT offset. */ ++#define R_390_PLT64 25 /* 64 bit PC relative PLT address. */ ++#define R_390_GOTENT 26 /* 32 bit PC rel. to GOT entry >> 1. */ ++#define R_390_GOTOFF16 27 /* 16 bit offset to GOT. */ ++#define R_390_GOTOFF64 28 /* 64 bit offset to GOT. */ ++#define R_390_GOTPLT12 29 /* 12 bit offset to jump slot. */ ++#define R_390_GOTPLT16 30 /* 16 bit offset to jump slot. */ ++#define R_390_GOTPLT32 31 /* 32 bit offset to jump slot. */ ++#define R_390_GOTPLT64 32 /* 64 bit offset to jump slot. */ ++#define R_390_GOTPLTENT 33 /* 32 bit rel. offset to jump slot. */ ++#define R_390_PLTOFF16 34 /* 16 bit offset from GOT to PLT. */ ++#define R_390_PLTOFF32 35 /* 32 bit offset from GOT to PLT. */ ++#define R_390_PLTOFF64 36 /* 16 bit offset from GOT to PLT. */ ++#define R_390_TLS_LOAD 37 /* Tag for load insn in TLS code. */ ++#define R_390_TLS_GDCALL 38 /* Tag for function call in general ++ dynamic TLS code. */ ++#define R_390_TLS_LDCALL 39 /* Tag for function call in local ++ dynamic TLS code. */ ++#define R_390_TLS_GD32 40 /* Direct 32 bit for general dynamic ++ thread local data. */ ++#define R_390_TLS_GD64 41 /* Direct 64 bit for general dynamic ++ thread local data. */ ++#define R_390_TLS_GOTIE12 42 /* 12 bit GOT offset for static TLS ++ block offset. */ ++#define R_390_TLS_GOTIE32 43 /* 32 bit GOT offset for static TLS ++ block offset. */ ++#define R_390_TLS_GOTIE64 44 /* 64 bit GOT offset for static TLS ++ block offset. */ ++#define R_390_TLS_LDM32 45 /* Direct 32 bit for local dynamic ++ thread local data in LE code. */ ++#define R_390_TLS_LDM64 46 /* Direct 64 bit for local dynamic ++ thread local data in LE code. */ ++#define R_390_TLS_IE32 47 /* 32 bit address of GOT entry for ++ negated static TLS block offset. */ ++#define R_390_TLS_IE64 48 /* 64 bit address of GOT entry for ++ negated static TLS block offset. */ ++#define R_390_TLS_IEENT 49 /* 32 bit rel. offset to GOT entry for ++ negated static TLS block offset. */ ++#define R_390_TLS_LE32 50 /* 32 bit negated offset relative to ++ static TLS block. */ ++#define R_390_TLS_LE64 51 /* 64 bit negated offset relative to ++ static TLS block. */ ++#define R_390_TLS_LDO32 52 /* 32 bit offset relative to TLS ++ block. */ ++#define R_390_TLS_LDO64 53 /* 64 bit offset relative to TLS ++ block. */ ++#define R_390_TLS_DTPMOD 54 /* ID of module containing symbol. */ ++#define R_390_TLS_DTPOFF 55 /* Offset in TLS block. */ ++#define R_390_TLS_TPOFF 56 /* Negated offset in static TLS ++ block. */ ++#define R_390_20 57 /* Direct 20 bit. */ ++#define R_390_GOT20 58 /* 20 bit GOT offset. */ ++#define R_390_GOTPLT20 59 /* 20 bit offset to jump slot. */ ++#define R_390_TLS_GOTIE20 60 /* 20 bit GOT offset for static TLS ++ block offset. */ ++/* Keep this the last entry. */ ++#define R_390_NUM 61 ++ ++ ++/* CRIS flags. */ ++#define EF_CRIS_VARIANT_MASK 0x0000000e ++#define EF_CRIS_VARIANT_ANY_V0_V10 0x00000000 ++#define EF_CRIS_VARIANT_V32 0x00000002 ++#define EF_CRIS_VARIANT_COMMON_V10_V32 0x00000004 ++ ++/* CRIS relocations. */ ++#define R_CRIS_NONE 0 ++#define R_CRIS_8 1 ++#define R_CRIS_16 2 ++#define R_CRIS_32 3 ++#define R_CRIS_8_PCREL 4 ++#define R_CRIS_16_PCREL 5 ++#define R_CRIS_32_PCREL 6 ++#define R_CRIS_GNU_VTINHERIT 7 ++#define R_CRIS_GNU_VTENTRY 8 ++#define R_CRIS_COPY 9 ++#define R_CRIS_GLOB_DAT 10 ++#define R_CRIS_JUMP_SLOT 11 ++#define R_CRIS_RELATIVE 12 ++#define R_CRIS_16_GOT 13 ++#define R_CRIS_32_GOT 14 ++#define R_CRIS_16_GOTPLT 15 ++#define R_CRIS_32_GOTPLT 16 ++#define R_CRIS_32_GOTREL 17 ++#define R_CRIS_32_PLT_GOTREL 18 ++#define R_CRIS_32_PLT_PCREL 19 ++ ++/* Keep this the last entry. */ ++#define R_CRIS_NUM 20 ++ ++ ++/* AMD x86-64 relocations. */ ++#define R_X86_64_NONE 0 /* No reloc */ ++#define R_X86_64_64 1 /* Direct 64 bit */ ++#define R_X86_64_PC32 2 /* PC relative 32 bit signed */ ++#define R_X86_64_GOT32 3 /* 32 bit GOT entry */ ++#define R_X86_64_PLT32 4 /* 32 bit PLT address */ ++#define R_X86_64_COPY 5 /* Copy symbol at runtime */ ++#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */ ++#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */ ++#define R_X86_64_RELATIVE 8 /* Adjust by program base */ ++#define R_X86_64_GOTPCREL 9 /* 32 bit signed PC relative ++ offset to GOT */ ++#define R_X86_64_32 10 /* Direct 32 bit zero extended */ ++#define R_X86_64_32S 11 /* Direct 32 bit sign extended */ ++#define R_X86_64_16 12 /* Direct 16 bit zero extended */ ++#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */ ++#define R_X86_64_8 14 /* Direct 8 bit sign extended */ ++#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */ ++#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ ++#define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */ ++#define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */ ++#define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset ++ to two GOT entries for GD symbol */ ++#define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset ++ to two GOT entries for LD symbol */ ++#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ ++#define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset ++ to GOT entry for IE symbol */ ++#define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */ ++ ++#define R_X86_64_NUM 24 ++ ++ ++/* AM33 relocations. */ ++#define R_MN10300_NONE 0 /* No reloc. */ ++#define R_MN10300_32 1 /* Direct 32 bit. */ ++#define R_MN10300_16 2 /* Direct 16 bit. */ ++#define R_MN10300_8 3 /* Direct 8 bit. */ ++#define R_MN10300_PCREL32 4 /* PC-relative 32-bit. */ ++#define R_MN10300_PCREL16 5 /* PC-relative 16-bit signed. */ ++#define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */ ++#define R_MN10300_GNU_VTINHERIT 7 /* Ancient C++ vtable garbage... */ ++#define R_MN10300_GNU_VTENTRY 8 /* ... collection annotation. */ ++#define R_MN10300_24 9 /* Direct 24 bit. */ ++#define R_MN10300_GOTPC32 10 /* 32-bit PCrel offset to GOT. */ ++#define R_MN10300_GOTPC16 11 /* 16-bit PCrel offset to GOT. */ ++#define R_MN10300_GOTOFF32 12 /* 32-bit offset from GOT. */ ++#define R_MN10300_GOTOFF24 13 /* 24-bit offset from GOT. */ ++#define R_MN10300_GOTOFF16 14 /* 16-bit offset from GOT. */ ++#define R_MN10300_PLT32 15 /* 32-bit PCrel to PLT entry. */ ++#define R_MN10300_PLT16 16 /* 16-bit PCrel to PLT entry. */ ++#define R_MN10300_GOT32 17 /* 32-bit offset to GOT entry. */ ++#define R_MN10300_GOT24 18 /* 24-bit offset to GOT entry. */ ++#define R_MN10300_GOT16 19 /* 16-bit offset to GOT entry. */ ++#define R_MN10300_COPY 20 /* Copy symbol at runtime. */ ++#define R_MN10300_GLOB_DAT 21 /* Create GOT entry. */ ++#define R_MN10300_JMP_SLOT 22 /* Create PLT entry. */ ++#define R_MN10300_RELATIVE 23 /* Adjust by program base. */ ++ ++#define R_MN10300_NUM 24 ++ ++ ++/* M32R relocs. */ ++#define R_M32R_NONE 0 /* No reloc. */ ++#define R_M32R_16 1 /* Direct 16 bit. */ ++#define R_M32R_32 2 /* Direct 32 bit. */ ++#define R_M32R_24 3 /* Direct 24 bit. */ ++#define R_M32R_10_PCREL 4 /* PC relative 10 bit shifted. */ ++#define R_M32R_18_PCREL 5 /* PC relative 18 bit shifted. */ ++#define R_M32R_26_PCREL 6 /* PC relative 26 bit shifted. */ ++#define R_M32R_HI16_ULO 7 /* High 16 bit with unsigned low. */ ++#define R_M32R_HI16_SLO 8 /* High 16 bit with signed low. */ ++#define R_M32R_LO16 9 /* Low 16 bit. */ ++#define R_M32R_SDA16 10 /* 16 bit offset in SDA. */ ++#define R_M32R_GNU_VTINHERIT 11 ++#define R_M32R_GNU_VTENTRY 12 ++/* M32R relocs use SHT_RELA. */ ++#define R_M32R_16_RELA 33 /* Direct 16 bit. */ ++#define R_M32R_32_RELA 34 /* Direct 32 bit. */ ++#define R_M32R_24_RELA 35 /* Direct 24 bit. */ ++#define R_M32R_10_PCREL_RELA 36 /* PC relative 10 bit shifted. */ ++#define R_M32R_18_PCREL_RELA 37 /* PC relative 18 bit shifted. */ ++#define R_M32R_26_PCREL_RELA 38 /* PC relative 26 bit shifted. */ ++#define R_M32R_HI16_ULO_RELA 39 /* High 16 bit with unsigned low */ ++#define R_M32R_HI16_SLO_RELA 40 /* High 16 bit with signed low */ ++#define R_M32R_LO16_RELA 41 /* Low 16 bit */ ++#define R_M32R_SDA16_RELA 42 /* 16 bit offset in SDA */ ++#define R_M32R_RELA_GNU_VTINHERIT 43 ++#define R_M32R_RELA_GNU_VTENTRY 44 ++ ++#define R_M32R_GOT24 48 /* 24 bit GOT entry */ ++#define R_M32R_26_PLTREL 49 /* 26 bit PC relative to PLT shifted */ ++#define R_M32R_COPY 50 /* Copy symbol at runtime */ ++#define R_M32R_GLOB_DAT 51 /* Create GOT entry */ ++#define R_M32R_JMP_SLOT 52 /* Create PLT entry */ ++#define R_M32R_RELATIVE 53 /* Adjust by program base */ ++#define R_M32R_GOTOFF 54 /* 24 bit offset to GOT */ ++#define R_M32R_GOTPC24 55 /* 24 bit PC relative offset to GOT */ ++#define R_M32R_GOT16_HI_ULO 56 /* High 16 bit GOT entry with unsigned ++ low */ ++#define R_M32R_GOT16_HI_SLO 57 /* High 16 bit GOT entry with signed ++ low */ ++#define R_M32R_GOT16_LO 58 /* Low 16 bit GOT entry */ ++#define R_M32R_GOTPC_HI_ULO 59 /* High 16 bit PC relative offset to ++ GOT with unsigned low */ ++#define R_M32R_GOTPC_HI_SLO 60 /* High 16 bit PC relative offset to ++ GOT with signed low */ ++#define R_M32R_GOTPC_LO 61 /* Low 16 bit PC relative offset to ++ GOT */ ++#define R_M32R_GOTOFF_HI_ULO 62 /* High 16 bit offset to GOT ++ with unsigned low */ ++#define R_M32R_GOTOFF_HI_SLO 63 /* High 16 bit offset to GOT ++ with signed low */ ++#define R_M32R_GOTOFF_LO 64 /* Low 16 bit offset to GOT */ ++#define R_M32R_NUM 256 /* Keep this the last entry. */ ++ ++/* i960 Relocations */ ++#define R_960_NONE 0 ++#define R_960_12 1 ++#define R_960_32 2 ++#define R_960_IP24 3 ++#define R_960_SUB 4 ++#define R_960_OPTCALL 5 ++#define R_960_OPTCALLX 6 ++#define R_960_OPTCALLXA 7 ++/* Keep this the last entry. */ ++#define R_960_NUM 8 ++ ++ ++/* v850 relocations. */ ++#define R_V850_NONE 0 ++#define R_V850_9_PCREL 1 ++#define R_V850_22_PCREL 2 ++#define R_V850_HI16_S 3 ++#define R_V850_HI16 4 ++#define R_V850_LO16 5 ++#define R_V850_32 6 ++#define R_V850_16 7 ++#define R_V850_8 8 ++#define R_V850_SDA_16_16_OFFSET 9 /* For ld.b, st.b, set1, clr1, ++ not1, tst1, movea, movhi */ ++#define R_V850_SDA_15_16_OFFSET 10 /* For ld.w, ld.h, ld.hu, st.w, st.h */ ++#define R_V850_ZDA_16_16_OFFSET 11 /* For ld.b, st.b, set1, clr1, ++ not1, tst1, movea, movhi */ ++#define R_V850_ZDA_15_16_OFFSET 12 /* For ld.w, ld.h, ld.hu, st.w, st.h */ ++#define R_V850_TDA_6_8_OFFSET 13 /* For sst.w, sld.w */ ++#define R_V850_TDA_7_8_OFFSET 14 /* For sst.h, sld.h */ ++#define R_V850_TDA_7_7_OFFSET 15 /* For sst.b, sld.b */ ++#define R_V850_TDA_16_16_OFFSET 16 /* For set1, clr1, not1, tst1, ++ movea, movhi */ ++/* CYGNUS LOCAL v850e */ ++#define R_V850_TDA_4_5_OFFSET 17 /* For sld.hu */ ++#define R_V850_TDA_4_4_OFFSET 18 /* For sld.bu */ ++#define R_V850_SDA_16_16_SPLIT_OFFSET 19 /* For ld.bu */ ++#define R_V850_ZDA_16_16_SPLIT_OFFSET 20 /* For ld.bu */ ++#define R_V850_CALLT_6_7_OFFSET 21 /* For callt */ ++#define R_V850_CALLT_16_16_OFFSET 22 /* For callt */ ++/* END CYGNUS LOCAL */ ++#define R_V850_GNU_VTINHERIT 23 ++#define R_V850_GNU_VTENTRY 24 ++/* Keep this the last entry. */ ++#define R_V850_NUM 25 ++ ++/* Atmel AVR32 relocations. */ ++#define R_AVR32_NONE 0 ++#define R_AVR32_32 1 ++#define R_AVR32_16 2 ++#define R_AVR32_8 3 ++#define R_AVR32_32_PCREL 4 ++#define R_AVR32_16_PCREL 5 ++#define R_AVR32_8_PCREL 6 ++#define R_AVR32_DIFF32 7 ++#define R_AVR32_DIFF16 8 ++#define R_AVR32_DIFF8 9 ++#define R_AVR32_GOT32 10 ++#define R_AVR32_GOT16 11 ++#define R_AVR32_GOT8 12 ++#define R_AVR32_21S 13 ++#define R_AVR32_16U 14 ++#define R_AVR32_16S 15 ++#define R_AVR32_8S 16 ++#define R_AVR32_8S_EXT 17 ++#define R_AVR32_22H_PCREL 18 ++#define R_AVR32_18W_PCREL 19 ++#define R_AVR32_16B_PCREL 20 ++#define R_AVR32_16N_PCREL 21 ++#define R_AVR32_14UW_PCREL 22 ++#define R_AVR32_11H_PCREL 23 ++#define R_AVR32_10UW_PCREL 24 ++#define R_AVR32_9H_PCREL 25 ++#define R_AVR32_9UW_PCREL 26 ++#define R_AVR32_HI16 27 ++#define R_AVR32_LO16 28 ++#define R_AVR32_GOTPC 29 ++#define R_AVR32_GOTCALL 30 ++#define R_AVR32_LDA_GOT 31 ++#define R_AVR32_GOT21S 32 ++#define R_AVR32_GOT18SW 33 ++#define R_AVR32_GOT16S 34 ++#define R_AVR32_GOT7UW 35 ++#define R_AVR32_32_CPENT 36 ++#define R_AVR32_CPCALL 37 ++#define R_AVR32_16_CP 38 ++#define R_AVR32_9W_CP 39 ++#define R_AVR32_RELATIVE 40 ++#define R_AVR32_GLOB_DAT 41 ++#define R_AVR32_JMP_SLOT 42 ++#define R_AVR32_ALIGN 43 ++#define R_AVR32_NUM 44 ++ ++/* AVR32 dynamic tags */ ++#define DT_AVR32_GOTSZ 0x70000001 /* Total size of GOT in bytes */ ++ ++/* Renesas H8/300 Relocations */ ++#define R_H8_NONE 0 ++#define R_H8_DIR32 1 ++#define R_H8_DIR32_28 2 ++#define R_H8_DIR32_24 3 ++#define R_H8_DIR32_16 4 ++#define R_H8_DIR32U 6 ++#define R_H8_DIR32U_28 7 ++#define R_H8_DIR32U_24 8 ++#define R_H8_DIR32U_20 9 ++#define R_H8_DIR32U_16 10 ++#define R_H8_DIR24 11 ++#define R_H8_DIR24_20 12 ++#define R_H8_DIR24_16 13 ++#define R_H8_DIR24U 14 ++#define R_H8_DIR24U_20 15 ++#define R_H8_DIR24U_16 16 ++#define R_H8_DIR16 17 ++#define R_H8_DIR16U 18 ++#define R_H8_DIR16S_32 19 ++#define R_H8_DIR16S_28 20 ++#define R_H8_DIR16S_24 21 ++#define R_H8_DIR16S_20 22 ++#define R_H8_DIR16S 23 ++#define R_H8_DIR8 24 ++#define R_H8_DIR8U 25 ++#define R_H8_DIR8Z_32 26 ++#define R_H8_DIR8Z_28 27 ++#define R_H8_DIR8Z_24 28 ++#define R_H8_DIR8Z_20 29 ++#define R_H8_DIR8Z_16 30 ++#define R_H8_PCREL16 31 ++#define R_H8_PCREL8 32 ++#define R_H8_BPOS 33 ++#define R_H8_PCREL32 34 ++#define R_H8_GOT32O 35 ++#define R_H8_GOT16O 36 ++#define R_H8_DIR16A8 59 ++#define R_H8_DIR16R8 60 ++#define R_H8_DIR24A8 61 ++#define R_H8_DIR24R8 62 ++#define R_H8_DIR32A16 63 ++#define R_H8_ABS32 65 ++#define R_H8_ABS32A16 127 ++#define R_H8_NUM 128 ++ ++/* NIOS relocations. */ ++#define R_NIOS_NONE 0 ++#define R_NIOS_32 1 /* A 32 bit absolute relocation.*/ ++#define R_NIOS_LO16_LO5 2 /* A LO-16 5 bit absolute relocation. */ ++#define R_NIOS_LO16_HI11 3 /* A LO-16 top 11 bit absolute relocation. */ ++#define R_NIOS_HI16_LO5 4 /* A HI-16 5 bit absolute relocation. */ ++#define R_NIOS_HI16_HI11 5 /* A HI-16 top 11 bit absolute relocation. */ ++#define R_NIOS_PCREL6 6 /* A 6 bit relative relocation. */ ++#define R_NIOS_PCREL8 7 /* An 8 bit relative relocation. */ ++#define R_NIOS_PCREL11 8 /* An 11 bit relative relocation. */ ++#define R_NIOS_16 9 /* A 16 bit absolute relocation. */ ++#define R_NIOS_H_LO5 10 /* Low 5-bits of absolute relocation in halfwords. */ ++#define R_NIOS_H_HI11 11 /* Top 11 bits of 16-bit absolute relocation in halfwords. */ ++#define R_NIOS_H_XLO5 12 /* Low 5 bits of top 16-bits of 32-bit absolute relocation in halfwords. */ ++#define R_NIOS_H_XHI11 13 /* Top 11 bits of top 16-bits of 32-bit absolute relocation in halfwords. */ ++#define R_NIOS_H_16 14 /* Half-word @h value */ ++#define R_NIOS_H_32 15 /* Word @h value */ ++#define R_NIOS_GNU_VTINHERIT 200 /* GNU extension to record C++ vtable hierarchy */ ++#define R_NIOS_GNU_VTENTRY 201 /* GNU extension to record C++ vtable member usage */ ++/* Keep this the last entry. */ ++#define R_NIOS_NUM 202 ++ ++/* NIOS II relocations */ ++#define R_NIOS2_NONE 0 ++#define R_NIOS2_S16 1 ++#define R_NIOS2_U16 2 ++#define R_NIOS2_PCREL16 3 ++#define R_NIOS2_CALL26 4 ++#define R_NIOS2_IMM5 5 ++#define R_NIOS2_CACHE_OPX 6 ++#define R_NIOS2_IMM6 7 ++#define R_NIOS2_IMM8 8 ++#define R_NIOS2_HI16 9 ++#define R_NIOS2_LO16 10 ++#define R_NIOS2_HIADJ16 11 ++#define R_NIOS2_BFD_RELOC_32 12 ++#define R_NIOS2_BFD_RELOC_16 13 ++#define R_NIOS2_BFD_RELOC_8 14 ++#define R_NIOS2_GPREL 15 ++#define R_NIOS2_GNU_VTINHERIT 16 ++#define R_NIOS2_GNU_VTENTRY 17 ++#define R_NIOS2_UJMP 18 ++#define R_NIOS2_CJMP 19 ++#define R_NIOS2_CALLR 20 ++#define R_NIOS2_ALIGN 21 ++/* Keep this the last entry. */ ++#define R_NIOS2_NUM 22 ++ ++/* Xtensa-specific declarations */ ++ ++/* Xtensa values for the Dyn d_tag field. */ ++#define DT_XTENSA_GOT_LOC_OFF (DT_LOPROC + 0) ++#define DT_XTENSA_GOT_LOC_SZ (DT_LOPROC + 1) ++#define DT_XTENSA_NUM 2 ++ ++/* Xtensa relocations. */ ++#define R_XTENSA_NONE 0 ++#define R_XTENSA_32 1 ++#define R_XTENSA_RTLD 2 ++#define R_XTENSA_GLOB_DAT 3 ++#define R_XTENSA_JMP_SLOT 4 ++#define R_XTENSA_RELATIVE 5 ++#define R_XTENSA_PLT 6 ++#define R_XTENSA_OP0 8 ++#define R_XTENSA_OP1 9 ++#define R_XTENSA_OP2 10 ++#define R_XTENSA_ASM_EXPAND 11 ++#define R_XTENSA_ASM_SIMPLIFY 12 ++#define R_XTENSA_GNU_VTINHERIT 15 ++#define R_XTENSA_GNU_VTENTRY 16 ++#define R_XTENSA_DIFF8 17 ++#define R_XTENSA_DIFF16 18 ++#define R_XTENSA_DIFF32 19 ++#define R_XTENSA_SLOT0_OP 20 ++#define R_XTENSA_SLOT1_OP 21 ++#define R_XTENSA_SLOT2_OP 22 ++#define R_XTENSA_SLOT3_OP 23 ++#define R_XTENSA_SLOT4_OP 24 ++#define R_XTENSA_SLOT5_OP 25 ++#define R_XTENSA_SLOT6_OP 26 ++#define R_XTENSA_SLOT7_OP 27 ++#define R_XTENSA_SLOT8_OP 28 ++#define R_XTENSA_SLOT9_OP 29 ++#define R_XTENSA_SLOT10_OP 30 ++#define R_XTENSA_SLOT11_OP 31 ++#define R_XTENSA_SLOT12_OP 32 ++#define R_XTENSA_SLOT13_OP 33 ++#define R_XTENSA_SLOT14_OP 34 ++#define R_XTENSA_SLOT0_ALT 35 ++#define R_XTENSA_SLOT1_ALT 36 ++#define R_XTENSA_SLOT2_ALT 37 ++#define R_XTENSA_SLOT3_ALT 38 ++#define R_XTENSA_SLOT4_ALT 39 ++#define R_XTENSA_SLOT5_ALT 40 ++#define R_XTENSA_SLOT6_ALT 41 ++#define R_XTENSA_SLOT7_ALT 42 ++#define R_XTENSA_SLOT8_ALT 43 ++#define R_XTENSA_SLOT9_ALT 44 ++#define R_XTENSA_SLOT10_ALT 45 ++#define R_XTENSA_SLOT11_ALT 46 ++#define R_XTENSA_SLOT12_ALT 47 ++#define R_XTENSA_SLOT13_ALT 48 ++#define R_XTENSA_SLOT14_ALT 49 ++/* Keep this the last entry. */ ++#define R_XTENSA_NUM 50 ++ ++/* C6X specific relocs */ ++#define R_C6000_NONE 0 ++#define R_C6000_ABS32 1 ++#define R_C6000_ABS16 2 ++#define R_C6000_ABS8 3 ++#define R_C6000_PCR_S21 4 ++#define R_C6000_PCR_S12 5 ++#define R_C6000_PCR_S10 6 ++#define R_C6000_PCR_S7 7 ++#define R_C6000_ABS_S16 8 ++#define R_C6000_ABS_L16 9 ++#define R_C6000_ABS_H16 10 ++#define R_C6000_SBR_U15_B 11 ++#define R_C6000_SBR_U15_H 12 ++#define R_C6000_SBR_U15_W 13 ++#define R_C6000_SBR_S16 14 ++#define R_C6000_SBR_L16_B 15 ++#define R_C6000_SBR_L16_H 16 ++#define R_C6000_SBR_L16_W 17 ++#define R_C6000_SBR_H16_B 18 ++#define R_C6000_SBR_H16_H 19 ++#define R_C6000_SBR_H16_W 20 ++#define R_C6000_SBR_GOT_U15_W 21 ++#define R_C6000_SBR_GOT_L16_W 22 ++#define R_C6000_SBR_GOT_H16_W 23 ++#define R_C6000_DSBT_INDEX 24 ++#define R_C6000_PREL31 25 ++#define R_C6000_COPY 26 ++#define R_C6000_JUMP_SLOT 27 ++#define R_C6000_SBR_GOT32 28 ++#define R_C6000_PCR_H16 29 ++#define R_C6000_PCR_L16 30 ++#define R_C6000_ALIGN 253 ++#define R_C6000_FPHEAD 254 ++#define R_C6000_NOCMP 255 ++ ++/* C6x specific values for the Dyn d_tag field. */ ++#define DT_C6000_DSBT_BASE (DT_LOPROC + 0) ++#define DT_C6000_DSBT_SIZE (DT_LOPROC + 1) ++#define DT_C6000_PREEMPTMAP (DT_LOPROC + 2) ++#define DT_C6000_DSBT_INDEX (DT_LOPROC + 3) ++ ++#define DT_C6000_NUM 4 + + static void die(char *fmt, ...); + -- cgit v1.2.3 From 181e796c9beb08534f9e3f50c881bb8feaf78c5c Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 26 Feb 2014 18:34:51 +0100 Subject: rework arm support, add qemu arm model vexpress for cortex-a9 emulation (hard float) --- toolchain/eglibc/Makefile | 4 ---- toolchain/gcc/Makefile | 23 ++++++++++------------- toolchain/glibc/Makefile | 4 ---- toolchain/uClibc/Makefile | 3 +++ 4 files changed, 13 insertions(+), 21 deletions(-) (limited to 'toolchain') diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile index dbccb8866..5ac8e493d 100644 --- a/toolchain/eglibc/Makefile +++ b/toolchain/eglibc/Makefile @@ -21,10 +21,6 @@ TARGET_CFLAGS_LIBC:= $(filter-out -fstack-protector,$(TARGET_CFLAGS_LIBC)) include Makefile.inc include ${TOPDIR}/mk/buildhlp.mk -ifeq ($(ADK_TARGET_NO_FPU),y) -EGLIBC_CONFOPTS+= --without-fp -endif - EGLIBC_BUILD_DIR_INITIAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-headers EGLIBC_BUILD_DIR_FINAL:= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION)-final diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 32710c9bd..5c81f9fd2 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -81,24 +81,21 @@ else GCC_CONFOPTS+= --enable-target-optspace endif -ifeq ($(ARCH),mips) -ifeq ($(ADK_TARGET_NO_FPU),y) -GCC_CONFOPTS+= --with-float=soft -else -GCC_CONFOPTS+= --with-float=hard -endif +ifeq ($(ARCH),arm) +GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) +GCC_CONFOPTS+= --with-mode=$(ADK_TARGET_ARM_MODE) endif -ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y) -GCC_CONFOPTS+= --with-arch=armv6 --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard +ifeq ($(ADK_CPU_ARM926EJ_S),y) +GCC_CONFOPTS+= --with-arch=armv5te --with-tune=arm1176jzf-s endif -ifeq ($(ADK_TARGET_SYSTEM_CUBOX_I),y) -ifeq ($(ADK_LINUX_ARM_WITH_THUMB),y) -GCC_CONFOPTS+= --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=neon --with-float=hard --with-mode=thumb -else -GCC_CONFOPTS+= --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=neon --with-float=hard --with-mode=arm +ifeq ($(ADK_CPU_ARM1176JZF_S),y) +GCC_CONFOPTS+= --with-arch=armv6 --with-tune=arm1176jzf-s --with-fpu=vfp endif + +ifeq ($(ADK_CPU_CORTEX_A9),y) +GCC_CONFOPTS+= --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=neon endif ifneq ($(ADK_TARGET_ABI),) diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile index 0905f2f61..2fc0015d7 100644 --- a/toolchain/glibc/Makefile +++ b/toolchain/glibc/Makefile @@ -16,10 +16,6 @@ TARGET_CFLAGS_LIBC:= $(filter-out -fstack-protector,$(TARGET_CFLAGS_LIBC)) include Makefile.inc include ${TOPDIR}/mk/buildhlp.mk -ifeq ($(ADK_TARGET_NO_FPU),y) -GLIBC_CONFOPTS+= --without-fp -endif - GLIBC_MAKEOPTS+= cross-compiling=yes ifeq (${ADK_MAKE_PARALLEL},y) GLIBC_MAKEOPTS+= PARALLELMFLAGS="-j1" diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile index 2a263974f..47084994e 100644 --- a/toolchain/uClibc/Makefile +++ b/toolchain/uClibc/Makefile @@ -56,6 +56,9 @@ endif ifneq ($(ADK_PACKAGE_GDB),) $(SED) "s/.*\(PTHREADS_DEBUG_SUPPORT\).*/\1=y/" ${WRKBUILD}/.config endif +ifeq ($(ADK_LINUX_ARM_WITH_THUMB),y) + $(SED) 's/.*\(COMPILE_IN_THUMB_MODE\).*/\1=y/' ${WRKBUILD}/.config +endif ifeq ($(ADK_TOOLCHAIN_GCC_USE_SSP),y) $(SED) 's,.*UCLIBC_HAS_SSP,UCLIBC_HAS_SSP=y,' ${WRKBUILD}/.config echo "UCLIBC_HAS_SSP_COMPAT=n" >> ${WRKBUILD}/.config -- cgit v1.2.3 From 1e14d6284640f07c21d837091c7f87323209b317 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 26 Feb 2014 19:11:16 +0100 Subject: add update to musl git --- toolchain/musl/patches/mips64.patch | 12 - toolchain/musl/patches/musl-git-20140225.patch | 8039 ++++++++++++++++++++++++ 2 files changed, 8039 insertions(+), 12 deletions(-) delete mode 100644 toolchain/musl/patches/mips64.patch create mode 100644 toolchain/musl/patches/musl-git-20140225.patch (limited to 'toolchain') diff --git a/toolchain/musl/patches/mips64.patch b/toolchain/musl/patches/mips64.patch deleted file mode 100644 index fdeb5017b..000000000 --- a/toolchain/musl/patches/mips64.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nur musl-0.9.14.orig/configure musl-0.9.14/configure ---- musl-0.9.14.orig/configure 2013-09-23 23:01:11.000000000 +0200 -+++ musl-0.9.14/configure 2013-11-09 20:16:14.000000000 +0100 -@@ -225,7 +225,7 @@ - arm*) ARCH=arm ;; - i?86*) ARCH=i386 ;; - x86_64*) ARCH=x86_64 ;; --mips-*|mipsel-*) ARCH=mips ;; -+mips-*|mipsel-*|mips64-*|mips64el-*) ARCH=mips ;; - microblaze-*) ARCH=microblaze ;; - powerpc-*) ARCH=powerpc ;; - unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; diff --git a/toolchain/musl/patches/musl-git-20140225.patch b/toolchain/musl/patches/musl-git-20140225.patch new file mode 100644 index 000000000..8ee372c0a --- /dev/null +++ b/toolchain/musl/patches/musl-git-20140225.patch @@ -0,0 +1,8039 @@ +diff -Nur musl-0.9.15/arch/arm/bits/shm.h musl-git/arch/arm/bits/shm.h +--- musl-0.9.15/arch/arm/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/arm/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -16,3 +16,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/arm/bits/termios.h musl-git/arch/arm/bits/termios.h +--- musl-0.9.15/arch/arm/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/arm/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -42,6 +42,7 @@ + #define IXANY 0004000 + #define IXOFF 0010000 + #define IMAXBEL 0020000 ++#define IUTF8 0040000 + + #define OPOST 0000001 + #define OLCUC 0000002 +@@ -75,9 +76,6 @@ + #define VT0 0000000 + #define VT1 0040000 + +-/* ?? */ +-#define XTABS 0014000 +- + #define B0 0000000 + #define B50 0000001 + #define B75 0000002 +@@ -125,8 +123,6 @@ + #define HUPCL 0002000 + #define CLOCAL 0004000 + +-#define CRTSCTS 020000000000 +- + #define ISIG 0000001 + #define ICANON 0000002 + #define ECHO 0000010 +@@ -137,14 +133,11 @@ + #define TOSTOP 0000400 + #define IEXTEN 0100000 + +-/* Extensions? */ +-#define CBAUDEX 0010000 + #define ECHOCTL 0001000 + #define ECHOPRT 0002000 + #define ECHOKE 0004000 + #define FLUSHO 0010000 + #define PENDIN 0040000 +-#define EXTPROC 0200000 + + #define TCOOFF 0 + #define TCOON 1 +@@ -158,3 +151,10 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/arm/syscall_arch.h musl-git/arch/arm/syscall_arch.h +--- musl-0.9.15/arch/arm/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/arm/syscall_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -3,6 +3,8 @@ + ((union { long long ll; long l[2]; }){ .ll = x }).l[1] + #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + ++long (__syscall)(long, ...); ++ + #ifndef __clang__ + + #define __asm_syscall(...) do { \ +diff -Nur musl-0.9.15/arch/i386/bits/shm.h musl-git/arch/i386/bits/shm.h +--- musl-0.9.15/arch/i386/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/i386/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -16,3 +16,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/i386/bits/termios.h musl-git/arch/i386/bits/termios.h +--- musl-0.9.15/arch/i386/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/i386/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -42,6 +42,7 @@ + #define IXANY 0004000 + #define IXOFF 0010000 + #define IMAXBEL 0020000 ++#define IUTF8 0040000 + + #define OPOST 0000001 + #define OLCUC 0000002 +@@ -75,9 +76,6 @@ + #define VT0 0000000 + #define VT1 0040000 + +-/* ?? */ +-#define XTABS 0014000 +- + #define B0 0000000 + #define B50 0000001 + #define B75 0000002 +@@ -125,8 +123,6 @@ + #define HUPCL 0002000 + #define CLOCAL 0004000 + +-#define CRTSCTS 020000000000 +- + #define ISIG 0000001 + #define ICANON 0000002 + #define ECHO 0000010 +@@ -137,14 +133,11 @@ + #define TOSTOP 0000400 + #define IEXTEN 0100000 + +-/* Extensions? */ +-#define CBAUDEX 0010000 + #define ECHOCTL 0001000 + #define ECHOPRT 0002000 + #define ECHOKE 0004000 + #define FLUSHO 0010000 + #define PENDIN 0040000 +-#define EXTPROC 0200000 + + #define TCOOFF 0 + #define TCOON 1 +@@ -158,3 +151,10 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/microblaze/bits/shm.h musl-git/arch/microblaze/bits/shm.h +--- musl-0.9.15/arch/microblaze/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/microblaze/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -16,3 +16,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/microblaze/bits/termios.h musl-git/arch/microblaze/bits/termios.h +--- musl-0.9.15/arch/microblaze/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/microblaze/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -42,6 +42,7 @@ + #define IXANY 0004000 + #define IXOFF 0010000 + #define IMAXBEL 0020000 ++#define IUTF8 0040000 + + #define OPOST 0000001 + #define OLCUC 0000002 +@@ -75,9 +76,6 @@ + #define VT0 0000000 + #define VT1 0040000 + +-/* ?? */ +-#define XTABS 0014000 +- + #define B0 0000000 + #define B50 0000001 + #define B75 0000002 +@@ -125,8 +123,6 @@ + #define HUPCL 0002000 + #define CLOCAL 0004000 + +-#define CRTSCTS 020000000000 +- + #define ISIG 0000001 + #define ICANON 0000002 + #define ECHO 0000010 +@@ -137,14 +133,11 @@ + #define TOSTOP 0000400 + #define IEXTEN 0100000 + +-/* Extensions? */ +-#define CBAUDEX 0010000 + #define ECHOCTL 0001000 + #define ECHOPRT 0002000 + #define ECHOKE 0004000 + #define FLUSHO 0010000 + #define PENDIN 0040000 +-#define EXTPROC 0200000 + + #define TCOOFF 0 + #define TCOON 1 +@@ -158,3 +151,10 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/microblaze/syscall_arch.h musl-git/arch/microblaze/syscall_arch.h +--- musl-0.9.15/arch/microblaze/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/microblaze/syscall_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -3,6 +3,8 @@ + ((union { long long ll; long l[2]; }){ .ll = x }).l[1] + #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + ++long (__syscall)(long, ...); ++ + #ifndef __clang__ + + static __inline long __syscall0(long n) +diff -Nur musl-0.9.15/arch/mips/bits/fenv.h musl-git/arch/mips/bits/fenv.h +--- musl-0.9.15/arch/mips/bits/fenv.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/mips/bits/fenv.h 2014-02-25 15:24:14.000000000 +0100 +@@ -1,3 +1,7 @@ ++#ifdef __mips_soft_float ++#define FE_ALL_EXCEPT 0 ++#define FE_TONEAREST 0 ++#else + #define FE_INEXACT 4 + #define FE_UNDERFLOW 8 + #define FE_OVERFLOW 16 +@@ -10,6 +14,7 @@ + #define FE_TOWARDZERO 1 + #define FE_UPWARD 2 + #define FE_DOWNWARD 3 ++#endif + + typedef unsigned short fexcept_t; + +diff -Nur musl-0.9.15/arch/mips/bits/shm.h musl-git/arch/mips/bits/shm.h +--- musl-0.9.15/arch/mips/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/mips/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -13,3 +13,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/mips/bits/termios.h musl-git/arch/mips/bits/termios.h +--- musl-0.9.15/arch/mips/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/mips/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -77,9 +77,6 @@ + #define VT0 0000000 + #define VT1 0040000 + +-/* ?? */ +-#define XTABS 0014000 +- + #define B0 0000000 + #define B50 0000001 + #define B75 0000002 +@@ -129,12 +126,6 @@ + #define PARODD 0001000 + #define HUPCL 0002000 + #define CLOCAL 0004000 +-#define CBAUDEX 0010000 +- +-#define CIBAUD 002003600000 +-#define CMSPAR 010000000000 +-#define CRTSCTS 020000000000 +-#define IBSHIFT 16 + + #define ISIG 0000001 + #define ICANON 0000002 +@@ -152,9 +143,6 @@ + #define PENDIN 0040000 + #define TOSTOP 0100000 + #define ITOSTOP 0100000 +-#define EXTPROC 0200000 +- +-#define TIOCSER_TEMT 1 + + #define TCOOFF 0 + #define TCOON 1 +@@ -168,3 +156,14 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CIBAUD 002003600000 ++#define IBSHIFT 16 ++#define CMSPAR 010000000000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#define TIOCSER_TEMT 1 ++#endif +diff -Nur musl-0.9.15/arch/mips/reloc.h musl-git/arch/mips/reloc.h +--- musl-0.9.15/arch/mips/reloc.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/mips/reloc.h 2014-02-25 15:24:14.000000000 +0100 +@@ -8,7 +8,13 @@ + #define ENDIAN_SUFFIX "" + #endif + +-#define LDSO_ARCH "mips" ENDIAN_SUFFIX ++#ifdef __mips_soft_float ++#define FP_SUFFIX "-sf" ++#else ++#define FP_SUFFIX "" ++#endif ++ ++#define LDSO_ARCH "mips" ENDIAN_SUFFIX FP_SUFFIX + + #define IS_COPY(x) ((x)==R_MIPS_COPY) + #define IS_PLT(x) 1 +diff -Nur musl-0.9.15/arch/mips/syscall_arch.h musl-git/arch/mips/syscall_arch.h +--- musl-0.9.15/arch/mips/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/mips/syscall_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -3,6 +3,8 @@ + ((union { long long ll; long l[2]; }){ .ll = x }).l[1] + #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + ++long (__syscall)(long, ...); ++ + #ifndef __clang__ + + #define __asm_syscall(...) do { \ +diff -Nur musl-0.9.15/arch/powerpc/bits/shm.h musl-git/arch/powerpc/bits/shm.h +--- musl-0.9.15/arch/powerpc/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/powerpc/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -16,3 +16,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/powerpc/bits/termios.h musl-git/arch/powerpc/bits/termios.h +--- musl-0.9.15/arch/powerpc/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/powerpc/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -66,7 +66,6 @@ + #define TAB1 00002000 + #define TAB2 00004000 + #define TAB3 00006000 +-#define XTABS 00006000 + #define CRDLY 00030000 + #define CR0 00000000 + #define CR1 00010000 +@@ -101,7 +100,6 @@ + #define B38400 0000017 + #define EXTA B19200 + #define EXTB B38400 +-#define CBAUDEX 0000000 + #define B57600 00020 + #define B115200 00021 + #define B230400 00022 +@@ -120,9 +118,6 @@ + #define B4000000 00036 + #define BOTHER 00037 + +-#define CIBAUD 077600000 +-#define IBSHIFT 16 +- + #define CSIZE 00001400 + #define CS5 00000000 + #define CS6 00000400 +@@ -136,8 +131,6 @@ + #define HUPCL 00040000 + + #define CLOCAL 00100000 +-#define CMSPAR 010000000000 +-#define CRTSCTS 020000000000 + + #define ISIG 0x00000080 + #define ICANON 0x00000100 +@@ -154,7 +147,6 @@ + #define FLUSHO 0x00800000 + #define PENDIN 0x20000000 + #define IEXTEN 0x00000400 +-#define EXTPROC 0x10000000 + + #define TCOOFF 0 + #define TCOON 1 +@@ -168,3 +160,13 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0000000 ++#define CIBAUD 077600000 ++#define IBSHIFT 16 ++#define CMSPAR 010000000000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0x10000000 ++#define XTABS 00006000 ++#endif +diff -Nur musl-0.9.15/arch/superh/atomic.h musl-git/arch/superh/atomic.h +--- musl-0.9.15/arch/superh/atomic.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/atomic.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,87 @@ ++#ifndef _INTERNAL_ATOMIC_H ++#define _INTERNAL_ATOMIC_H ++ ++#include ++ ++static inline int a_ctz_l(unsigned long x) ++{ ++ static const char debruijn32[32] = { ++ 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, ++ 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 ++ }; ++ return debruijn32[(x&-x)*0x076be629 >> 27]; ++} ++ ++static inline int a_ctz_64(uint64_t x) ++{ ++ uint32_t y = x; ++ if (!y) { ++ y = x>>32; ++ return 32 + a_ctz_l(y); ++ } ++ return a_ctz_l(y); ++} ++ ++int __sh_cas(volatile int *, int, int); ++int __sh_swap(volatile int *, int); ++int __sh_fetch_add(volatile int *, int); ++void __sh_store(volatile int *, int); ++void __sh_and(volatile int *, int); ++void __sh_or(volatile int *, int); ++ ++#define a_cas(p,t,s) __sh_cas(p,t,s) ++#define a_swap(x,v) __sh_swap(x,v) ++#define a_fetch_add(x,v) __sh_fetch_add(x, v) ++#define a_store(x,v) __sh_store(x, v) ++#define a_and(x,v) __sh_and(x, v) ++#define a_or(x,v) __sh_or(x, v) ++ ++static inline void *a_cas_p(volatile void *p, void *t, void *s) ++{ ++ return (void *)a_cas(p, (int)t, (int)s); ++} ++ ++static inline long a_cas_l(volatile void *p, long t, long s) ++{ ++ return a_cas(p, t, s); ++} ++ ++static inline void a_inc(volatile int *x) ++{ ++ a_fetch_add(x, 1); ++} ++ ++static inline void a_dec(volatile int *x) ++{ ++ a_fetch_add(x, -1); ++} ++ ++static inline void a_spin() ++{ ++} ++ ++static inline void a_crash() ++{ ++ *(volatile char *)0=0; ++} ++ ++static inline void a_or_l(volatile void *p, long v) ++{ ++ a_or(p, v); ++} ++ ++static inline void a_and_64(volatile uint64_t *p, uint64_t v) ++{ ++ union { uint64_t v; uint32_t r[2]; } u = { v }; ++ a_and((int *)p, u.r[0]); ++ a_and((int *)p+1, u.r[1]); ++} ++ ++static inline void a_or_64(volatile uint64_t *p, uint64_t v) ++{ ++ union { uint64_t v; uint32_t r[2]; } u = { v }; ++ a_or((int *)p, u.r[0]); ++ a_or((int *)p+1, u.r[1]); ++} ++ ++#endif +diff -Nur musl-0.9.15/arch/superh/bits/alltypes.h.in musl-git/arch/superh/bits/alltypes.h.in +--- musl-0.9.15/arch/superh/bits/alltypes.h.in 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/alltypes.h.in 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,23 @@ ++#define _Addr int ++#define _Int64 long long ++#define _Reg int ++ ++TYPEDEF __builtin_va_list va_list; ++TYPEDEF __builtin_va_list __isoc_va_list; ++ ++#ifndef __cplusplus ++TYPEDEF long wchar_t; ++#endif ++TYPEDEF unsigned wint_t; ++ ++TYPEDEF float float_t; ++TYPEDEF double double_t; ++ ++TYPEDEF long time_t; ++TYPEDEF long suseconds_t; ++ ++TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_t; ++TYPEDEF struct { union { int __i[6]; void *__p[6]; } __u; } pthread_mutex_t; ++TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t; ++TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t; ++TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t; +diff -Nur musl-0.9.15/arch/superh/bits/endian.h musl-git/arch/superh/bits/endian.h +--- musl-0.9.15/arch/superh/bits/endian.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/endian.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++#if __LITTLE_ENDIAN__ ++#define __BYTE_ORDER __LITTLE_ENDIAN ++#else ++#define __BYTE_ORDER __BIG_ENDIAN ++#endif +diff -Nur musl-0.9.15/arch/superh/bits/errno.h musl-git/arch/superh/bits/errno.h +--- musl-0.9.15/arch/superh/bits/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/errno.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,134 @@ ++#define EPERM 1 ++#define ENOENT 2 ++#define ESRCH 3 ++#define EINTR 4 ++#define EIO 5 ++#define ENXIO 6 ++#define E2BIG 7 ++#define ENOEXEC 8 ++#define EBADF 9 ++#define ECHILD 10 ++#define EAGAIN 11 ++#define ENOMEM 12 ++#define EACCES 13 ++#define EFAULT 14 ++#define ENOTBLK 15 ++#define EBUSY 16 ++#define EEXIST 17 ++#define EXDEV 18 ++#define ENODEV 19 ++#define ENOTDIR 20 ++#define EISDIR 21 ++#define EINVAL 22 ++#define ENFILE 23 ++#define EMFILE 24 ++#define ENOTTY 25 ++#define ETXTBSY 26 ++#define EFBIG 27 ++#define ENOSPC 28 ++#define ESPIPE 29 ++#define EROFS 30 ++#define EMLINK 31 ++#define EPIPE 32 ++#define EDOM 33 ++#define ERANGE 34 ++#define EDEADLK 35 ++#define ENAMETOOLONG 36 ++#define ENOLCK 37 ++#define ENOSYS 38 ++#define ENOTEMPTY 39 ++#define ELOOP 40 ++#define EWOULDBLOCK EAGAIN ++#define ENOMSG 42 ++#define EIDRM 43 ++#define ECHRNG 44 ++#define EL2NSYNC 45 ++#define EL3HLT 46 ++#define EL3RST 47 ++#define ELNRNG 48 ++#define EUNATCH 49 ++#define ENOCSI 50 ++#define EL2HLT 51 ++#define EBADE 52 ++#define EBADR 53 ++#define EXFULL 54 ++#define ENOANO 55 ++#define EBADRQC 56 ++#define EBADSLT 57 ++#define EDEADLOCK EDEADLK ++#define EBFONT 59 ++#define ENOSTR 60 ++#define ENODATA 61 ++#define ETIME 62 ++#define ENOSR 63 ++#define ENONET 64 ++#define ENOPKG 65 ++#define EREMOTE 66 ++#define ENOLINK 67 ++#define EADV 68 ++#define ESRMNT 69 ++#define ECOMM 70 ++#define EPROTO 71 ++#define EMULTIHOP 72 ++#define EDOTDOT 73 ++#define EBADMSG 74 ++#define EOVERFLOW 75 ++#define ENOTUNIQ 76 ++#define EBADFD 77 ++#define EREMCHG 78 ++#define ELIBACC 79 ++#define ELIBBAD 80 ++#define ELIBSCN 81 ++#define ELIBMAX 82 ++#define ELIBEXEC 83 ++#define EILSEQ 84 ++#define ERESTART 85 ++#define ESTRPIPE 86 ++#define EUSERS 87 ++#define ENOTSOCK 88 ++#define EDESTADDRREQ 89 ++#define EMSGSIZE 90 ++#define EPROTOTYPE 91 ++#define ENOPROTOOPT 92 ++#define EPROTONOSUPPORT 93 ++#define ESOCKTNOSUPPORT 94 ++#define EOPNOTSUPP 95 ++#define ENOTSUP EOPNOTSUPP ++#define EPFNOSUPPORT 96 ++#define EAFNOSUPPORT 97 ++#define EADDRINUSE 98 ++#define EADDRNOTAVAIL 99 ++#define ENETDOWN 100 ++#define ENETUNREACH 101 ++#define ENETRESET 102 ++#define ECONNABORTED 103 ++#define ECONNRESET 104 ++#define ENOBUFS 105 ++#define EISCONN 106 ++#define ENOTCONN 107 ++#define ESHUTDOWN 108 ++#define ETOOMANYREFS 109 ++#define ETIMEDOUT 110 ++#define ECONNREFUSED 111 ++#define EHOSTDOWN 112 ++#define EHOSTUNREACH 113 ++#define EALREADY 114 ++#define EINPROGRESS 115 ++#define ESTALE 116 ++#define EUCLEAN 117 ++#define ENOTNAM 118 ++#define ENAVAIL 119 ++#define EISNAM 120 ++#define EREMOTEIO 121 ++#define EDQUOT 122 ++#define ENOMEDIUM 123 ++#define EMEDIUMTYPE 124 ++#define ECANCELED 125 ++#define ENOKEY 126 ++#define EKEYEXPIRED 127 ++#define EKEYREVOKED 128 ++#define EKEYREJECTED 129 ++#define EOWNERDEAD 130 ++#define ENOTRECOVERABLE 131 ++#define ERFKILL 132 ++#define EHWPOISON 133 +diff -Nur musl-0.9.15/arch/superh/bits/fcntl.h musl-git/arch/superh/bits/fcntl.h +--- musl-0.9.15/arch/superh/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/fcntl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,39 @@ ++#define O_CREAT 0100 ++#define O_EXCL 0200 ++#define O_NOCTTY 0400 ++#define O_TRUNC 01000 ++#define O_APPEND 02000 ++#define O_NONBLOCK 04000 ++#define O_DSYNC 010000 ++#define O_SYNC 04010000 ++#define O_RSYNC 04010000 ++#define O_DIRECTORY 0200000 ++#define O_NOFOLLOW 0400000 ++#define O_CLOEXEC 02000000 ++ ++#define O_ASYNC 020000 ++#define O_DIRECT 040000 ++#define O_LARGEFILE 0100000 ++#define O_NOATIME 01000000 ++#define O_TMPFILE 020200000 ++#define O_NDELAY O_NONBLOCK ++ ++#define F_DUPFD 0 ++#define F_GETFD 1 ++#define F_SETFD 2 ++#define F_GETFL 3 ++#define F_SETFL 4 ++ ++#define F_SETOWN 8 ++#define F_GETOWN 9 ++#define F_SETSIG 10 ++#define F_GETSIG 11 ++ ++#define F_GETLK 12 ++#define F_SETLK 13 ++#define F_SETLKW 14 ++ ++#define F_SETOWN_EX 15 ++#define F_GETOWN_EX 16 ++ ++#define F_GETOWNER_UIDS 17 +diff -Nur musl-0.9.15/arch/superh/bits/fenv.h musl-git/arch/superh/bits/fenv.h +--- musl-0.9.15/arch/superh/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/fenv.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,17 @@ ++#define FE_TONEAREST 0 ++#define FE_TOWARDZERO 1 ++ ++#define FE_INEXACT 0x04 ++#define FE_UNDERFLOW 0x08 ++#define FE_OVERFLOW 0x10 ++#define FE_DIVBYZERO 0x20 ++#define FE_INVALID 0x40 ++#define FE_ALL_EXCEPT 0x7c ++ ++typedef unsigned long fexcept_t; ++ ++typedef struct { ++ unsigned long __cw; ++} fenv_t; ++ ++#define FE_DFL_ENV ((const fenv_t *) -1) +diff -Nur musl-0.9.15/arch/superh/bits/float.h musl-git/arch/superh/bits/float.h +--- musl-0.9.15/arch/superh/bits/float.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/float.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,17 @@ ++#define FLT_ROUNDS 1 ++#define FLT_EVAL_METHOD 0 ++ ++#define LDBL_TRUE_MIN 4.94065645841246544177e-324L ++#define LDBL_MIN 2.22507385850720138309e-308L ++#define LDBL_MAX 1.79769313486231570815e+308L ++#define LDBL_EPSILON 2.22044604925031308085e-16L ++ ++#define LDBL_MANT_DIG 53 ++#define LDBL_MIN_EXP (-1021) ++#define LDBL_MAX_EXP 1024 ++ ++#define LDBL_DIG 15 ++#define LDBL_MIN_10_EXP (-307) ++#define LDBL_MAX_10_EXP 308 ++ ++#define DECIMAL_DIG 17 +diff -Nur musl-0.9.15/arch/superh/bits/ioctl.h musl-git/arch/superh/bits/ioctl.h +--- musl-0.9.15/arch/superh/bits/ioctl.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/ioctl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,205 @@ ++#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) ++#define _IOC_NONE 0U ++#define _IOC_WRITE 1U ++#define _IOC_READ 2U ++ ++#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) ++#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) ++#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) ++#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) ++ ++#define FIOCLEX _IO('f', 1) ++#define FIONCLEX _IO('f', 2) ++#define FIOASYNC _IOW('f', 125, int) ++#define FIONBIO _IOW('f', 126, int) ++#define FIONREAD _IOR('f', 127, int) ++#define TIOCINQ FIONREAD ++#define FIOQSIZE _IOR('f', 128, char[8]) ++ ++#define TCGETA _IOR('t', 23, char[18]) ++#define TCSETA _IOW('t', 24, char[18]) ++#define TCSETAW _IOW('t', 25, char[18]) ++#define TCSETAF _IOW('t', 28, char[18]) ++ ++#define TCSBRK _IO('t', 29) ++#define TCXONC _IO('t', 30) ++#define TCFLSH _IO('t', 31) ++ ++#define TIOCSWINSZ _IOW('t', 103, char[8]) ++#define TIOCGWINSZ _IOR('t', 104, char[8]) ++#define TIOCSTART _IO('t', 110) ++#define TIOCSTOP _IO('t', 111) ++#define TIOCOUTQ _IOR('t', 115, int) ++ ++#define TIOCSPGRP _IOW('t', 118, int) ++#define TIOCGPGRP _IOR('t', 119, int) ++ ++#define TIOCEXCL _IO('T', 12) ++#define TIOCNXCL _IO('T', 13) ++#define TIOCSCTTY _IO('T', 14) ++ ++#define TIOCSTI _IOW('T', 18, char) ++#define TIOCMGET _IOR('T', 21, unsigned int) ++#define TIOCMBIS _IOW('T', 22, unsigned int) ++#define TIOCMBIC _IOW('T', 23, unsigned int) ++#define TIOCMSET _IOW('T', 24, unsigned int) ++#define TIOCM_LE 0x001 ++#define TIOCM_DTR 0x002 ++#define TIOCM_RTS 0x004 ++#define TIOCM_ST 0x008 ++#define TIOCM_SR 0x010 ++#define TIOCM_CTS 0x020 ++#define TIOCM_CAR 0x040 ++#define TIOCM_RNG 0x080 ++#define TIOCM_DSR 0x100 ++#define TIOCM_CD TIOCM_CAR ++#define TIOCM_RI TIOCM_RNG ++#define TIOCM_OUT1 0x2000 ++#define TIOCM_OUT2 0x4000 ++#define TIOCM_LOOP 0x8000 ++ ++#define TIOCGSOFTCAR _IOR('T', 25, unsigned int) ++#define TIOCSSOFTCAR _IOW('T', 26, unsigned int) ++#define TIOCLINUX _IOW('T', 28, char) ++#define TIOCCONS _IO('T', 29) ++#define TIOCGSERIAL _IOR('T', 30, char[60]) ++#define TIOCSSERIAL _IOW('T', 31, char[60]) ++#define TIOCPKT _IOW('T', 32, int) ++#define TIOCPKT_DATA 0 ++#define TIOCPKT_FLUSHREAD 1 ++#define TIOCPKT_FLUSHWRITE 2 ++#define TIOCPKT_STOP 4 ++#define TIOCPKT_START 8 ++#define TIOCPKT_NOSTOP 16 ++#define TIOCPKT_DOSTOP 32 ++#define TIOCPKT_IOCTL 64 ++ ++#define TIOCNOTTY _IO('T', 34) ++#define TIOCSETD _IOW('T', 35, int) ++#define TIOCGETD _IOR('T', 36, int) ++#define TCSBRKP _IOW('T', 37, int) ++#define TIOCSBRK _IO('T', 39) ++#define TIOCCBRK _IO('T', 40) ++#define TIOCGSID _IOR('T', 41, int) ++#define TCGETS _IOR('T', 42, char[44]) ++#define TCSETS _IOW('T', 43, char[44]) ++#define TCSETSW _IOW('T', 44, char[44]) ++#define TCSETSF _IOW('T', 45, char[44]) ++#define TIOCGPTN _IOR('T', 48, unsigned int) ++#define TIOCSPTLCK _IOW('T', 49, int) ++#define TIOCGDEV _IOR('T', 50, unsigned int) ++#define TIOCSIG _IOW('T', 54, int) ++#define TIOCVHANGUP _IO('T', 55) ++#define TIOCGPKT _IOR('T', 56, int) ++#define TIOCGPTLCK _IOR('T', 57, int) ++#define TIOCGEXCL _IOR('T', 64, int) ++ ++#define TIOCSERCONFIG _IO('T', 83) ++#define TIOCSERGWILD _IOR('T', 84, int) ++#define TIOCSERSWILD _IOW('T', 85, int) ++#define TIOCGLCKTRMIOS _IO('T', 86) ++#define TIOCSLCKTRMIOS _IO('T', 87) ++#define TIOCSERGSTRUCT _IOR('T', 88, char[216]) ++#define TIOCSERGETLSR _IOR('T', 89, unsigned int) ++#define TIOCSER_TEMT 0x01 ++#define TIOCSERGETMULTI _IOR('T', 90, char[168]) ++#define TIOCSERSETMULTI _IOW('T', 91, char[168]) ++ ++#define TIOCMIWAIT _IO('T', 92) ++#define TIOCGICOUNT _IO('T', 93) ++ ++struct winsize { ++ unsigned short ws_row; ++ unsigned short ws_col; ++ unsigned short ws_xpixel; ++ unsigned short ws_ypixel; ++}; ++ ++#define TIOCM_MODEM_BITS TIOCM_OUT2 ++ ++#define N_TTY 0 ++#define N_SLIP 1 ++#define N_MOUSE 2 ++#define N_PPP 3 ++#define N_STRIP 4 ++#define N_AX25 5 ++#define N_X25 6 ++#define N_6PACK 7 ++#define N_MASC 8 ++#define N_R3964 9 ++#define N_PROFIBUS_FDL 10 ++#define N_IRDA 11 ++#define N_SMSBLOCK 12 ++#define N_HDLC 13 ++#define N_SYNC_PPP 14 ++#define N_HCI 15 ++ ++#define FIOGETOWN _IOR('f', 123, int) ++#define FIOSETOWN _IOW('f', 124, int) ++ ++#define SIOCATMARK _IOR('s', 7, int) ++#define SIOCSPGRP _IOW('s', 8, int) ++#define SIOCGPGRP _IOW('s', 9, int) ++#define SIOCGSTAMP _IOR('s', 100, char[8]) ++ ++#define SIOCADDRT 0x890B ++#define SIOCDELRT 0x890C ++#define SIOCRTMSG 0x890D ++ ++#define SIOCGIFNAME 0x8910 ++#define SIOCSIFLINK 0x8911 ++#define SIOCGIFCONF 0x8912 ++#define SIOCGIFFLAGS 0x8913 ++#define SIOCSIFFLAGS 0x8914 ++#define SIOCGIFADDR 0x8915 ++#define SIOCSIFADDR 0x8916 ++#define SIOCGIFDSTADDR 0x8917 ++#define SIOCSIFDSTADDR 0x8918 ++#define SIOCGIFBRDADDR 0x8919 ++#define SIOCSIFBRDADDR 0x891a ++#define SIOCGIFNETMASK 0x891b ++#define SIOCSIFNETMASK 0x891c ++#define SIOCGIFMETRIC 0x891d ++#define SIOCSIFMETRIC 0x891e ++#define SIOCGIFMEM 0x891f ++#define SIOCSIFMEM 0x8920 ++#define SIOCGIFMTU 0x8921 ++#define SIOCSIFMTU 0x8922 ++#define SIOCSIFHWADDR 0x8924 ++#define SIOCGIFENCAP 0x8925 ++#define SIOCSIFENCAP 0x8926 ++#define SIOCGIFHWADDR 0x8927 ++#define SIOCGIFSLAVE 0x8929 ++#define SIOCSIFSLAVE 0x8930 ++#define SIOCADDMULTI 0x8931 ++#define SIOCDELMULTI 0x8932 ++#define SIOCGIFINDEX 0x8933 ++#define SIOGIFINDEX SIOCGIFINDEX ++#define SIOCSIFPFLAGS 0x8934 ++#define SIOCGIFPFLAGS 0x8935 ++#define SIOCDIFADDR 0x8936 ++#define SIOCSIFHWBROADCAST 0x8937 ++#define SIOCGIFCOUNT 0x8938 ++ ++#define SIOCGIFBR 0x8940 ++#define SIOCSIFBR 0x8941 ++ ++#define SIOCGIFTXQLEN 0x8942 ++#define SIOCSIFTXQLEN 0x8943 ++ ++#define SIOCDARP 0x8953 ++#define SIOCGARP 0x8954 ++#define SIOCSARP 0x8955 ++ ++#define SIOCDRARP 0x8960 ++#define SIOCGRARP 0x8961 ++#define SIOCSRARP 0x8962 ++ ++#define SIOCGIFMAP 0x8970 ++#define SIOCSIFMAP 0x8971 ++ ++#define SIOCADDDLCI 0x8980 ++#define SIOCDELDLCI 0x8981 ++ ++#define SIOCDEVPRIVATE 0x89F0 ++#define SIOCPROTOPRIVATE 0x89E0 +diff -Nur musl-0.9.15/arch/superh/bits/ipc.h musl-git/arch/superh/bits/ipc.h +--- musl-0.9.15/arch/superh/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/ipc.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,14 @@ ++struct ipc_perm ++{ ++ key_t __ipc_perm_key; ++ uid_t uid; ++ gid_t gid; ++ uid_t cuid; ++ gid_t cgid; ++ mode_t mode; ++ int __ipc_perm_seq; ++ long __pad1; ++ long __pad2; ++}; ++ ++#define IPC_64 0x100 +diff -Nur musl-0.9.15/arch/superh/bits/limits.h musl-git/arch/superh/bits/limits.h +--- musl-0.9.15/arch/superh/bits/limits.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/limits.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,8 @@ ++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ ++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define PAGE_SIZE 4096 ++#define LONG_BIT 32 ++#endif ++ ++#define LONG_MAX 0x7fffffffL ++#define LLONG_MAX 0x7fffffffffffffffLL +diff -Nur musl-0.9.15/arch/superh/bits/mman.h musl-git/arch/superh/bits/mman.h +--- musl-0.9.15/arch/superh/bits/mman.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/mman.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,62 @@ ++#define MAP_FAILED ((void *) -1) ++ ++#define PROT_NONE 0 ++#define PROT_READ 1 ++#define PROT_WRITE 2 ++#define PROT_EXEC 4 ++#define PROT_GROWSDOWN 0x01000000 ++#define PROT_GROWSUP 0x02000000 ++ ++#define MAP_SHARED 0x01 ++#define MAP_PRIVATE 0x02 ++#define MAP_FIXED 0x10 ++ ++#define MAP_TYPE 0x0f ++#define MAP_FILE 0x00 ++#define MAP_ANON 0x20 ++#define MAP_ANONYMOUS MAP_ANON ++#define MAP_32BIT 0x40 ++#define MAP_NORESERVE 0x4000 ++#define MAP_GROWSDOWN 0x0100 ++#define MAP_DENYWRITE 0x0800 ++#define MAP_EXECUTABLE 0x1000 ++#define MAP_LOCKED 0x2000 ++#define MAP_POPULATE 0x8000 ++#define MAP_NONBLOCK 0x10000 ++#define MAP_STACK 0x20000 ++#define MAP_HUGETLB 0x40000 ++ ++#define POSIX_MADV_NORMAL 0 ++#define POSIX_MADV_RANDOM 1 ++#define POSIX_MADV_SEQUENTIAL 2 ++#define POSIX_MADV_WILLNEED 3 ++#define POSIX_MADV_DONTNEED 4 ++ ++#define MS_ASYNC 1 ++#define MS_INVALIDATE 2 ++#define MS_SYNC 4 ++ ++#define MCL_CURRENT 1 ++#define MCL_FUTURE 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define MADV_NORMAL 0 ++#define MADV_RANDOM 1 ++#define MADV_SEQUENTIAL 2 ++#define MADV_WILLNEED 3 ++#define MADV_DONTNEED 4 ++#define MADV_REMOVE 9 ++#define MADV_DONTFORK 10 ++#define MADV_DOFORK 11 ++#define MADV_MERGEABLE 12 ++#define MADV_UNMERGEABLE 13 ++#define MADV_HUGEPAGE 14 ++#define MADV_NOHUGEPAGE 15 ++#define MADV_DONTDUMP 16 ++#define MADV_DODUMP 17 ++#define MADV_HWPOISON 100 ++#define MADV_SOFT_OFFLINE 101 ++ ++#define MREMAP_MAYMOVE 1 ++#define MREMAP_FIXED 2 ++#endif +diff -Nur musl-0.9.15/arch/superh/bits/msg.h musl-git/arch/superh/bits/msg.h +--- musl-0.9.15/arch/superh/bits/msg.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/msg.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,16 @@ ++struct msqid_ds ++{ ++ struct ipc_perm msg_perm; ++ time_t msg_stime; ++ int __unused1; ++ time_t msg_rtime; ++ int __unused2; ++ time_t msg_ctime; ++ int __unused3; ++ unsigned long msg_cbytes; ++ msgqnum_t msg_qnum; ++ msglen_t msg_qbytes; ++ pid_t msg_lspid; ++ pid_t msg_lrpid; ++ unsigned long __unused[2]; ++}; +diff -Nur musl-0.9.15/arch/superh/bits/posix.h musl-git/arch/superh/bits/posix.h +--- musl-0.9.15/arch/superh/bits/posix.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/posix.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,2 @@ ++#define _POSIX_V6_ILP32_OFFBIG 1 ++#define _POSIX_V7_ILP32_OFFBIG 1 +diff -Nur musl-0.9.15/arch/superh/bits/setjmp.h musl-git/arch/superh/bits/setjmp.h +--- musl-0.9.15/arch/superh/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/setjmp.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++typedef unsigned long __jmp_buf[13]; +diff -Nur musl-0.9.15/arch/superh/bits/shm.h musl-git/arch/superh/bits/shm.h +--- musl-0.9.15/arch/superh/bits/shm.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,28 @@ ++#define SHMLBA 16384 ++ ++struct shmid_ds ++{ ++ struct ipc_perm shm_perm; ++ size_t shm_segsz; ++ time_t shm_atime; ++ int __unused1; ++ time_t shm_dtime; ++ int __unused2; ++ time_t shm_ctime; ++ int __unused3; ++ pid_t shm_cpid; ++ pid_t shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __pad1; ++ unsigned long __pad2; ++}; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; +diff -Nur musl-0.9.15/arch/superh/bits/signal.h musl-git/arch/superh/bits/signal.h +--- musl-0.9.15/arch/superh/bits/signal.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/signal.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,76 @@ ++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ ++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++typedef int greg_t, gregset_t[16]; ++typedef int freg_t, fpregset_t[16]; ++typedef struct sigcontext { ++ unsigned long oldmask; ++ unsigned long sc_regs[16]; ++ unsigned long sc_pc, sc_pr, sc_sr; ++ unsigned long sc_gbr, sc_mach, sc_macl; ++ unsigned long sc_fpregs[16]; ++ unsigned long sc_xfpregs[16]; ++ unsigned int sc_fpscr, sc_fpul, sc_ownedfp; ++} mcontext_t; ++#else ++typedef struct { ++ unsigned long __regs[58]; ++} mcontext_t; ++#endif ++ ++typedef struct __ucontext { ++ unsigned long uc_flags; ++ struct __ucontext *uc_link; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ sigset_t uc_sigmask; ++} ucontext_t; ++ ++#define SA_NOCLDSTOP 1 ++#define SA_NOCLDWAIT 2 ++#define SA_SIGINFO 4 ++#define SA_ONSTACK 0x08000000 ++#define SA_RESTART 0x10000000 ++#define SA_NODEFER 0x40000000 ++#define SA_RESETHAND 0x80000000 ++#define SA_RESTORER 0x04000000 ++ ++#endif ++ ++#define SIGHUP 1 ++#define SIGINT 2 ++#define SIGQUIT 3 ++#define SIGILL 4 ++#define SIGTRAP 5 ++#define SIGABRT 6 ++#define SIGIOT SIGABRT ++#define SIGBUS 7 ++#define SIGFPE 8 ++#define SIGKILL 9 ++#define SIGUSR1 10 ++#define SIGSEGV 11 ++#define SIGUSR2 12 ++#define SIGPIPE 13 ++#define SIGALRM 14 ++#define SIGTERM 15 ++#define SIGSTKFLT 16 ++#define SIGCHLD 17 ++#define SIGCONT 18 ++#define SIGSTOP 19 ++#define SIGTSTP 20 ++#define SIGTTIN 21 ++#define SIGTTOU 22 ++#define SIGURG 23 ++#define SIGXCPU 24 ++#define SIGXFSZ 25 ++#define SIGVTALRM 26 ++#define SIGPROF 27 ++#define SIGWINCH 28 ++#define SIGIO 29 ++#define SIGPOLL 29 ++#define SIGPWR 30 ++#define SIGSYS 31 ++#define SIGUNUSED SIGSYS ++ ++#define _NSIG 65 +diff -Nur musl-0.9.15/arch/superh/bits/socket.h musl-git/arch/superh/bits/socket.h +--- musl-0.9.15/arch/superh/bits/socket.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/socket.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,17 @@ ++struct msghdr ++{ ++ void *msg_name; ++ socklen_t msg_namelen; ++ struct iovec *msg_iov; ++ int msg_iovlen; ++ void *msg_control; ++ socklen_t msg_controllen; ++ int msg_flags; ++}; ++ ++struct cmsghdr ++{ ++ socklen_t cmsg_len; ++ int cmsg_level; ++ int cmsg_type; ++}; +diff -Nur musl-0.9.15/arch/superh/bits/statfs.h musl-git/arch/superh/bits/statfs.h +--- musl-0.9.15/arch/superh/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/statfs.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++struct statfs { ++ unsigned long f_type, f_bsize; ++ fsblkcnt_t f_blocks, f_bfree, f_bavail; ++ fsfilcnt_t f_files, f_ffree; ++ fsid_t f_fsid; ++ unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; ++}; +diff -Nur musl-0.9.15/arch/superh/bits/stat.h musl-git/arch/superh/bits/stat.h +--- musl-0.9.15/arch/superh/bits/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/stat.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++/* copied from kernel definition, but with padding replaced ++ * by the corresponding correctly-sized userspace types. */ ++ ++struct stat ++{ ++ dev_t st_dev; ++ int __st_dev_padding; ++ long __st_ino_truncated; ++ mode_t st_mode; ++ nlink_t st_nlink; ++ uid_t st_uid; ++ gid_t st_gid; ++ dev_t st_rdev; ++ int __st_rdev_padding; ++ off_t st_size; ++ blksize_t st_blksize; ++ blkcnt_t st_blocks; ++ struct timespec st_atim; ++ struct timespec st_mtim; ++ struct timespec st_ctim; ++ ino_t st_ino; ++}; +diff -Nur musl-0.9.15/arch/superh/bits/stdarg.h musl-git/arch/superh/bits/stdarg.h +--- musl-0.9.15/arch/superh/bits/stdarg.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/stdarg.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,4 @@ ++#define va_start(v,l) __builtin_va_start(v,l) ++#define va_end(v) __builtin_va_end(v) ++#define va_arg(v,l) __builtin_va_arg(v,l) ++#define va_copy(d,s) __builtin_va_copy(d,s) +diff -Nur musl-0.9.15/arch/superh/bits/stdint.h musl-git/arch/superh/bits/stdint.h +--- musl-0.9.15/arch/superh/bits/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/stdint.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,20 @@ ++typedef int32_t int_fast16_t; ++typedef int32_t int_fast32_t; ++typedef uint32_t uint_fast16_t; ++typedef uint32_t uint_fast32_t; ++ ++#define INT_FAST16_MIN INT32_MIN ++#define INT_FAST32_MIN INT32_MIN ++ ++#define INT_FAST16_MAX INT32_MAX ++#define INT_FAST32_MAX INT32_MAX ++ ++#define UINT_FAST16_MAX UINT32_MAX ++#define UINT_FAST32_MAX UINT32_MAX ++ ++#define INTPTR_MIN INT32_MIN ++#define INTPTR_MAX INT32_MAX ++#define UINTPTR_MAX UINT32_MAX ++#define PTRDIFF_MIN INT32_MIN ++#define PTRDIFF_MAX INT32_MAX ++#define SIZE_MAX UINT32_MAX +diff -Nur musl-0.9.15/arch/superh/bits/syscall.h musl-git/arch/superh/bits/syscall.h +--- musl-0.9.15/arch/superh/bits/syscall.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/syscall.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,684 @@ ++#define __NR_restart_syscall 0 ++#define __NR_exit 1 ++#define __NR_fork 2 ++#define __NR_read 3 ++#define __NR_write 4 ++#define __NR_open 5 ++#define __NR_close 6 ++#define __NR_waitpid 7 ++#define __NR_creat 8 ++#define __NR_link 9 ++#define __NR_unlink 10 ++#define __NR_execve 11 ++#define __NR_chdir 12 ++#define __NR_time 13 ++#define __NR_mknod 14 ++#define __NR_chmod 15 ++#define __NR_lchown 16 ++#define __NR_oldstat 18 ++#define __NR_lseek 19 ++#define __NR_getpid 20 ++#define __NR_mount 21 ++#define __NR_umount 22 ++#define __NR_setuid 23 ++#define __NR_getuid 24 ++#define __NR_stime 25 ++#define __NR_ptrace 26 ++#define __NR_alarm 27 ++#define __NR_oldfstat 28 ++#define __NR_pause 29 ++#define __NR_utime 30 ++#define __NR_access 33 ++#define __NR_nice 34 ++#define __NR_sync 36 ++#define __NR_kill 37 ++#define __NR_rename 38 ++#define __NR_mkdir 39 ++#define __NR_rmdir 40 ++#define __NR_dup 41 ++#define __NR_pipe 42 ++#define __NR_times 43 ++#define __NR_brk 45 ++#define __NR_setgid 46 ++#define __NR_getgid 47 ++#define __NR_signal 48 ++#define __NR_geteuid 49 ++#define __NR_getegid 50 ++#define __NR_acct 51 ++#define __NR_umount2 52 ++#define __NR_ioctl 54 ++#define __NR_fcntl 55 ++#define __NR_setpgid 57 ++#define __NR_umask 60 ++#define __NR_chroot 61 ++#define __NR_ustat 62 ++#define __NR_dup2 63 ++#define __NR_getppid 64 ++#define __NR_getpgrp 65 ++#define __NR_setsid 66 ++#define __NR_sigaction 67 ++#define __NR_sgetmask 68 ++#define __NR_ssetmask 69 ++#define __NR_setreuid 70 ++#define __NR_setregid 71 ++#define __NR_sigsuspend 72 ++#define __NR_sigpending 73 ++#define __NR_sethostname 74 ++#define __NR_setrlimit 75 ++#define __NR_getrlimit 76 ++#define __NR_getrusage 77 ++#define __NR_gettimeofday 78 ++#define __NR_settimeofday 79 ++#define __NR_getgroups 80 ++#define __NR_setgroups 81 ++#define __NR_symlink 83 ++#define __NR_oldlstat 84 ++#define __NR_readlink 85 ++#define __NR_uselib 86 ++#define __NR_swapon 87 ++#define __NR_reboot 88 ++#define __NR_readdir 89 ++#define __NR_mmap 90 ++#define __NR_munmap 91 ++#define __NR_truncate 92 ++#define __NR_ftruncate 93 ++#define __NR_fchmod 94 ++#define __NR_fchown 95 ++#define __NR_getpriority 96 ++#define __NR_setpriority 97 ++#define __NR_statfs 99 ++#define __NR_fstatfs 100 ++#define __NR_socketcall 102 ++#define __NR_syslog 103 ++#define __NR_setitimer 104 ++#define __NR_getitimer 105 ++#define __NR_stat 106 ++#define __NR_lstat 107 ++#define __NR_fstat 108 ++#define __NR_olduname 109 ++#define __NR_vhangup 111 ++#define __NR_wait4 114 ++#define __NR_swapoff 115 ++#define __NR_sysinfo 116 ++#define __NR_ipc 117 ++#define __NR_fsync 118 ++#define __NR_sigreturn 119 ++#define __NR_clone 120 ++#define __NR_setdomainname 121 ++#define __NR_uname 122 ++#define __NR_cacheflush 123 ++#define __NR_adjtimex 124 ++#define __NR_mprotect 125 ++#define __NR_sigprocmask 126 ++#define __NR_init_module 128 ++#define __NR_delete_module 129 ++#define __NR_quotactl 131 ++#define __NR_getpgid 132 ++#define __NR_fchdir 133 ++#define __NR_bdflush 134 ++#define __NR_sysfs 135 ++#define __NR_personality 136 ++#define __NR_setfsuid 138 ++#define __NR_setfsgid 139 ++#define __NR__llseek 140 ++#define __NR_getdents 141 ++#define __NR__newselect 142 ++#define __NR_flock 143 ++#define __NR_msync 144 ++#define __NR_readv 145 ++#define __NR_writev 146 ++#define __NR_getsid 147 ++#define __NR_fdatasync 148 ++#define __NR__sysctl 149 ++#define __NR_mlock 150 ++#define __NR_munlock 151 ++#define __NR_mlockall 152 ++#define __NR_munlockall 153 ++#define __NR_sched_setparam 154 ++#define __NR_sched_getparam 155 ++#define __NR_sched_setscheduler 156 ++#define __NR_sched_getscheduler 157 ++#define __NR_sched_yield 158 ++#define __NR_sched_get_priority_max 159 ++#define __NR_sched_get_priority_min 160 ++#define __NR_sched_rr_get_interval 161 ++#define __NR_nanosleep 162 ++#define __NR_mremap 163 ++#define __NR_setresuid 164 ++#define __NR_getresuid 165 ++#define __NR_poll 168 ++#define __NR_nfsservctl 169 ++#define __NR_setresgid 170 ++#define __NR_getresgid 171 ++#define __NR_prctl 172 ++#define __NR_rt_sigreturn 173 ++#define __NR_rt_sigaction 174 ++#define __NR_rt_sigprocmask 175 ++#define __NR_rt_sigpending 176 ++#define __NR_rt_sigtimedwait 177 ++#define __NR_rt_sigqueueinfo 178 ++#define __NR_rt_sigsuspend 179 ++#define __NR_pread64 180 ++#define __NR_pwrite64 181 ++#define __NR_chown 182 ++#define __NR_getcwd 183 ++#define __NR_capget 184 ++#define __NR_capset 185 ++#define __NR_sigaltstack 186 ++#define __NR_sendfile 187 ++#define __NR_vfork 190 ++#define __NR_ugetrlimit 191 ++#define __NR_mmap2 192 ++#define __NR_truncate64 193 ++#define __NR_ftruncate64 194 ++#define __NR_stat64 195 ++#define __NR_lstat64 196 ++#define __NR_fstat64 197 ++#define __NR_lchown32 198 ++#define __NR_getuid32 199 ++#define __NR_getgid32 200 ++#define __NR_geteuid32 201 ++#define __NR_getegid32 202 ++#define __NR_setreuid32 203 ++#define __NR_setregid32 204 ++#define __NR_getgroups32 205 ++#define __NR_setgroups32 206 ++#define __NR_fchown32 207 ++#define __NR_setresuid32 208 ++#define __NR_getresuid32 209 ++#define __NR_setresgid32 210 ++#define __NR_getresgid32 211 ++#define __NR_chown32 212 ++#define __NR_setuid32 213 ++#define __NR_setgid32 214 ++#define __NR_setfsuid32 215 ++#define __NR_setfsgid32 216 ++#define __NR_pivot_root 217 ++#define __NR_mincore 218 ++#define __NR_madvise 219 ++#define __NR_getdents64 220 ++#define __NR_fcntl64 221 ++#define __NR_gettid 224 ++#define __NR_readahead 225 ++#define __NR_setxattr 226 ++#define __NR_lsetxattr 227 ++#define __NR_fsetxattr 228 ++#define __NR_getxattr 229 ++#define __NR_lgetxattr 230 ++#define __NR_fgetxattr 231 ++#define __NR_listxattr 232 ++#define __NR_llistxattr 233 ++#define __NR_flistxattr 234 ++#define __NR_removexattr 235 ++#define __NR_lremovexattr 236 ++#define __NR_fremovexattr 237 ++#define __NR_tkill 238 ++#define __NR_sendfile64 239 ++#define __NR_futex 240 ++#define __NR_sched_setaffinity 241 ++#define __NR_sched_getaffinity 242 ++#define __NR_io_setup 245 ++#define __NR_io_destroy 246 ++#define __NR_io_getevents 247 ++#define __NR_io_submit 248 ++#define __NR_io_cancel 249 ++#define __NR_fadvise64 250 ++#define __NR_exit_group 252 ++#define __NR_lookup_dcookie 253 ++#define __NR_epoll_create 254 ++#define __NR_epoll_ctl 255 ++#define __NR_epoll_wait 256 ++#define __NR_remap_file_pages 257 ++#define __NR_set_tid_address 258 ++#define __NR_timer_create 259 ++#define __NR_timer_settime 260 ++#define __NR_timer_gettime 261 ++#define __NR_timer_getoverrun 262 ++#define __NR_timer_delete 263 ++#define __NR_clock_settime 264 ++#define __NR_clock_gettime 265 ++#define __NR_clock_getres 266 ++#define __NR_clock_nanosleep 267 ++#define __NR_statfs64 268 ++#define __NR_fstatfs64 269 ++#define __NR_tgkill 270 ++#define __NR_utimes 271 ++#define __NR_fadvise64_64 272 ++#define __NR_mbind 274 ++#define __NR_get_mempolicy 275 ++#define __NR_set_mempolicy 276 ++#define __NR_mq_open 277 ++#define __NR_mq_unlink 278 ++#define __NR_mq_timedsend 279 ++#define __NR_mq_timedreceive 280 ++#define __NR_mq_notify 281 ++#define __NR_mq_getsetattr 282 ++#define __NR_kexec_load 283 ++#define __NR_waitid 284 ++#define __NR_add_key 285 ++#define __NR_request_key 286 ++#define __NR_keyctl 287 ++#define __NR_ioprio_set 288 ++#define __NR_ioprio_get 289 ++#define __NR_inotify_init 290 ++#define __NR_inotify_add_watch 291 ++#define __NR_inotify_rm_watch 292 ++#define __NR_migrate_pages 294 ++#define __NR_openat 295 ++#define __NR_mkdirat 296 ++#define __NR_mknodat 297 ++#define __NR_fchownat 298 ++#define __NR_futimesat 299 ++#define __NR_fstatat64 300 ++#define __NR_unlinkat 301 ++#define __NR_renameat 302 ++#define __NR_linkat 303 ++#define __NR_symlinkat 304 ++#define __NR_readlinkat 305 ++#define __NR_fchmodat 306 ++#define __NR_faccessat 307 ++#define __NR_pselect6 308 ++#define __NR_ppoll 309 ++#define __NR_unshare 310 ++#define __NR_set_robust_list 311 ++#define __NR_get_robust_list 312 ++#define __NR_splice 313 ++#define __NR_sync_file_range 314 ++#define __NR_tee 315 ++#define __NR_vmsplice 316 ++#define __NR_move_pages 317 ++#define __NR_getcpu 318 ++#define __NR_epoll_pwait 319 ++#define __NR_utimensat 320 ++#define __NR_signalfd 321 ++#define __NR_timerfd_create 322 ++#define __NR_eventfd 323 ++#define __NR_fallocate 324 ++#define __NR_timerfd_settime 325 ++#define __NR_timerfd_gettime 326 ++#define __NR_signalfd4 327 ++#define __NR_eventfd2 328 ++#define __NR_epoll_create1 329 ++#define __NR_dup3 330 ++#define __NR_pipe2 331 ++#define __NR_inotify_init1 332 ++#define __NR_preadv 333 ++#define __NR_pwritev 334 ++#define __NR_rt_tgsigqueueinfo 335 ++#define __NR_perf_event_open 336 ++#define __NR_fanotify_init 337 ++#define __NR_fanotify_mark 338 ++#define __NR_prlimit64 339 ++#define __NR_socket 340 ++#define __NR_bind 341 ++#define __NR_connect 342 ++#define __NR_listen 343 ++#define __NR_accept 344 ++#define __NR_getsockname 345 ++#define __NR_getpeername 346 ++#define __NR_socketpair 347 ++#define __NR_send 348 ++#define __NR_sendto 349 ++#define __NR_recv 350 ++#define __NR_recvfrom 351 ++#define __NR_shutdown 352 ++#define __NR_setsockopt 353 ++#define __NR_getsockopt 354 ++#define __NR_sendmsg 355 ++#define __NR_recvmsg 356 ++#define __NR_recvmmsg 357 ++#define __NR_accept4 358 ++#define __NR_name_to_handle_at 359 ++#define __NR_open_by_handle_at 360 ++#define __NR_clock_adjtime 361 ++#define __NR_syncfs 362 ++#define __NR_sendmmsg 363 ++#define __NR_setns 364 ++#define __NR_process_vm_readv 365 ++#define __NR_process_vm_writev 366 ++#define __NR_kcmp 367 ++#define __NR_finit_module 368 ++ ++ ++/* Repeated with SYS_ prefix */ ++ ++#define SYS_restart_syscall 0 ++#define SYS_exit 1 ++#define SYS_fork 2 ++#define SYS_read 3 ++#define SYS_write 4 ++#define SYS_open 5 ++#define SYS_close 6 ++#define SYS_waitpid 7 ++#define SYS_creat 8 ++#define SYS_link 9 ++#define SYS_unlink 10 ++#define SYS_execve 11 ++#define SYS_chdir 12 ++#define SYS_time 13 ++#define SYS_mknod 14 ++#define SYS_chmod 15 ++#define SYS_lchown 16 ++#define SYS_oldstat 18 ++#define SYS_lseek 19 ++#define SYS_getpid 20 ++#define SYS_mount 21 ++#define SYS_umount 22 ++#define SYS_setuid 23 ++#define SYS_getuid 24 ++#define SYS_stime 25 ++#define SYS_ptrace 26 ++#define SYS_alarm 27 ++#define SYS_oldfstat 28 ++#define SYS_pause 29 ++#define SYS_utime 30 ++#define SYS_access 33 ++#define SYS_nice 34 ++#define SYS_sync 36 ++#define SYS_kill 37 ++#define SYS_rename 38 ++#define SYS_mkdir 39 ++#define SYS_rmdir 40 ++#define SYS_dup 41 ++#define SYS_pipe 42 ++#define SYS_times 43 ++#define SYS_brk 45 ++#define SYS_setgid 46 ++#define SYS_getgid 47 ++#define SYS_signal 48 ++#define SYS_geteuid 49 ++#define SYS_getegid 50 ++#define SYS_acct 51 ++#define SYS_umount2 52 ++#define SYS_ioctl 54 ++#define SYS_fcntl 55 ++#define SYS_setpgid 57 ++#define SYS_umask 60 ++#define SYS_chroot 61 ++#define SYS_ustat 62 ++#define SYS_dup2 63 ++#define SYS_getppid 64 ++#define SYS_getpgrp 65 ++#define SYS_setsid 66 ++#define SYS_sigaction 67 ++#define SYS_sgetmask 68 ++#define SYS_ssetmask 69 ++#define SYS_setreuid 70 ++#define SYS_setregid 71 ++#define SYS_sigsuspend 72 ++#define SYS_sigpending 73 ++#define SYS_sethostname 74 ++#define SYS_setrlimit 75 ++#define SYS_getrlimit 76 ++#define SYS_getrusage 77 ++#define SYS_gettimeofday 78 ++#define SYS_settimeofday 79 ++#define SYS_getgroups 80 ++#define SYS_setgroups 81 ++#define SYS_symlink 83 ++#define SYS_oldlstat 84 ++#define SYS_readlink 85 ++#define SYS_uselib 86 ++#define SYS_swapon 87 ++#define SYS_reboot 88 ++#define SYS_readdir 89 ++#define SYS_mmap 90 ++#define SYS_munmap 91 ++#define SYS_truncate 92 ++#define SYS_ftruncate 93 ++#define SYS_fchmod 94 ++#define SYS_fchown 95 ++#define SYS_getpriority 96 ++#define SYS_setpriority 97 ++#define SYS_statfs 99 ++#define SYS_fstatfs 100 ++#define SYS_socketcall 102 ++#define SYS_syslog 103 ++#define SYS_setitimer 104 ++#define SYS_getitimer 105 ++#define SYS_stat 106 ++#define SYS_lstat 107 ++#define SYS_fstat 108 ++#define SYS_olduname 109 ++#define SYS_vhangup 111 ++#define SYS_wait4 114 ++#define SYS_swapoff 115 ++#define SYS_sysinfo 116 ++#define SYS_ipc 117 ++#define SYS_fsync 118 ++#define SYS_sigreturn 119 ++#define SYS_clone 120 ++#define SYS_setdomainname 121 ++#define SYS_uname 122 ++#define SYS_cacheflush 123 ++#define SYS_adjtimex 124 ++#define SYS_mprotect 125 ++#define SYS_sigprocmask 126 ++#define SYS_init_module 128 ++#define SYS_delete_module 129 ++#define SYS_quotactl 131 ++#define SYS_getpgid 132 ++#define SYS_fchdir 133 ++#define SYS_bdflush 134 ++#define SYS_sysfs 135 ++#define SYS_personality 136 ++#define SYS_setfsuid 138 ++#define SYS_setfsgid 139 ++#define SYS__llseek 140 ++#define SYS_getdents 141 ++#define SYS__newselect 142 ++#define SYS_flock 143 ++#define SYS_msync 144 ++#define SYS_readv 145 ++#define SYS_writev 146 ++#define SYS_getsid 147 ++#define SYS_fdatasync 148 ++#define SYS__sysctl 149 ++#define SYS_mlock 150 ++#define SYS_munlock 151 ++#define SYS_mlockall 152 ++#define SYS_munlockall 153 ++#define SYS_sched_setparam 154 ++#define SYS_sched_getparam 155 ++#define SYS_sched_setscheduler 156 ++#define SYS_sched_getscheduler 157 ++#define SYS_sched_yield 158 ++#define SYS_sched_get_priority_max 159 ++#define SYS_sched_get_priority_min 160 ++#define SYS_sched_rr_get_interval 161 ++#define SYS_nanosleep 162 ++#define SYS_mremap 163 ++#define SYS_setresuid 164 ++#define SYS_getresuid 165 ++#define SYS_poll 168 ++#define SYS_nfsservctl 169 ++#define SYS_setresgid 170 ++#define SYS_getresgid 171 ++#define SYS_prctl 172 ++#define SYS_rt_sigreturn 173 ++#define SYS_rt_sigaction 174 ++#define SYS_rt_sigprocmask 175 ++#define SYS_rt_sigpending 176 ++#define SYS_rt_sigtimedwait 177 ++#define SYS_rt_sigqueueinfo 178 ++#define SYS_rt_sigsuspend 179 ++#define SYS_pread64 180 ++#define SYS_pwrite64 181 ++#define SYS_chown 182 ++#define SYS_getcwd 183 ++#define SYS_capget 184 ++#define SYS_capset 185 ++#define SYS_sigaltstack 186 ++#define SYS_sendfile 187 ++#define SYS_vfork 190 ++#define SYS_ugetrlimit 191 ++#define SYS_mmap2 192 ++#define SYS_truncate64 193 ++#define SYS_ftruncate64 194 ++#define SYS_stat64 195 ++#define SYS_lstat64 196 ++#define SYS_fstat64 197 ++#define SYS_lchown32 198 ++#define SYS_getuid32 199 ++#define SYS_getgid32 200 ++#define SYS_geteuid32 201 ++#define SYS_getegid32 202 ++#define SYS_setreuid32 203 ++#define SYS_setregid32 204 ++#define SYS_getgroups32 205 ++#define SYS_setgroups32 206 ++#define SYS_fchown32 207 ++#define SYS_setresuid32 208 ++#define SYS_getresuid32 209 ++#define SYS_setresgid32 210 ++#define SYS_getresgid32 211 ++#define SYS_chown32 212 ++#define SYS_setuid32 213 ++#define SYS_setgid32 214 ++#define SYS_setfsuid32 215 ++#define SYS_setfsgid32 216 ++#define SYS_pivot_root 217 ++#define SYS_mincore 218 ++#define SYS_madvise 219 ++#define SYS_getdents64 220 ++#define SYS_fcntl64 221 ++#define SYS_gettid 224 ++#define SYS_readahead 225 ++#define SYS_setxattr 226 ++#define SYS_lsetxattr 227 ++#define SYS_fsetxattr 228 ++#define SYS_getxattr 229 ++#define SYS_lgetxattr 230 ++#define SYS_fgetxattr 231 ++#define SYS_listxattr 232 ++#define SYS_llistxattr 233 ++#define SYS_flistxattr 234 ++#define SYS_removexattr 235 ++#define SYS_lremovexattr 236 ++#define SYS_fremovexattr 237 ++#define SYS_tkill 238 ++#define SYS_sendfile64 239 ++#define SYS_futex 240 ++#define SYS_sched_setaffinity 241 ++#define SYS_sched_getaffinity 242 ++#define SYS_io_setup 245 ++#define SYS_io_destroy 246 ++#define SYS_io_getevents 247 ++#define SYS_io_submit 248 ++#define SYS_io_cancel 249 ++#define SYS_fadvise64 250 ++#define SYS_exit_group 252 ++#define SYS_lookup_dcookie 253 ++#define SYS_epoll_create 254 ++#define SYS_epoll_ctl 255 ++#define SYS_epoll_wait 256 ++#define SYS_remap_file_pages 257 ++#define SYS_set_tid_address 258 ++#define SYS_timer_create 259 ++#define SYS_timer_settime 260 ++#define SYS_timer_gettime 261 ++#define SYS_timer_getoverrun 262 ++#define SYS_timer_delete 263 ++#define SYS_clock_settime 264 ++#define SYS_clock_gettime 265 ++#define SYS_clock_getres 266 ++#define SYS_clock_nanosleep 267 ++#define SYS_statfs64 268 ++#define SYS_fstatfs64 269 ++#define SYS_tgkill 270 ++#define SYS_utimes 271 ++#define SYS_fadvise64_64 272 ++#define SYS_mbind 274 ++#define SYS_get_mempolicy 275 ++#define SYS_set_mempolicy 276 ++#define SYS_mq_open 277 ++#define SYS_mq_unlink 278 ++#define SYS_mq_timedsend 279 ++#define SYS_mq_timedreceive 280 ++#define SYS_mq_notify 281 ++#define SYS_mq_getsetattr 282 ++#define SYS_kexec_load 283 ++#define SYS_waitid 284 ++#define SYS_add_key 285 ++#define SYS_request_key 286 ++#define SYS_keyctl 287 ++#define SYS_ioprio_set 288 ++#define SYS_ioprio_get 289 ++#define SYS_inotify_init 290 ++#define SYS_inotify_add_watch 291 ++#define SYS_inotify_rm_watch 292 ++#define SYS_migrate_pages 294 ++#define SYS_openat 295 ++#define SYS_mkdirat 296 ++#define SYS_mknodat 297 ++#define SYS_fchownat 298 ++#define SYS_futimesat 299 ++#define SYS_fstatat64 300 ++#define SYS_unlinkat 301 ++#define SYS_renameat 302 ++#define SYS_linkat 303 ++#define SYS_symlinkat 304 ++#define SYS_readlinkat 305 ++#define SYS_fchmodat 306 ++#define SYS_faccessat 307 ++#define SYS_pselect6 308 ++#define SYS_ppoll 309 ++#define SYS_unshare 310 ++#define SYS_set_robust_list 311 ++#define SYS_get_robust_list 312 ++#define SYS_splice 313 ++#define SYS_sync_file_range 314 ++#define SYS_tee 315 ++#define SYS_vmsplice 316 ++#define SYS_move_pages 317 ++#define SYS_getcpu 318 ++#define SYS_epoll_pwait 319 ++#define SYS_utimensat 320 ++#define SYS_signalfd 321 ++#define SYS_timerfd_create 322 ++#define SYS_eventfd 323 ++#define SYS_fallocate 324 ++#define SYS_timerfd_settime 325 ++#define SYS_timerfd_gettime 326 ++#define SYS_signalfd4 327 ++#define SYS_eventfd2 328 ++#define SYS_epoll_create1 329 ++#define SYS_dup3 330 ++#define SYS_pipe2 331 ++#define SYS_inotify_init1 332 ++#define SYS_preadv 333 ++#define SYS_pwritev 334 ++#define SYS_rt_tgsigqueueinfo 335 ++#define SYS_perf_event_open 336 ++#define SYS_fanotify_init 337 ++#define SYS_fanotify_mark 338 ++#define SYS_prlimit64 339 ++#define SYS_socket 340 ++#define SYS_bind 341 ++#define SYS_connect 342 ++#define SYS_listen 343 ++#define SYS_accept 344 ++#define SYS_getsockname 345 ++#define SYS_getpeername 346 ++#define SYS_socketpair 347 ++#define SYS_send 348 ++#define SYS_sendto 349 ++#define SYS_recv 350 ++#define SYS_recvfrom 351 ++#define SYS_shutdown 352 ++#define SYS_setsockopt 353 ++#define SYS_getsockopt 354 ++#define SYS_sendmsg 355 ++#define SYS_recvmsg 356 ++#define SYS_recvmmsg 357 ++#define SYS_accept4 358 ++#define SYS_name_to_handle_at 359 ++#define SYS_open_by_handle_at 360 ++#define SYS_clock_adjtime 361 ++#define SYS_syncfs 362 ++#define SYS_sendmmsg 363 ++#define SYS_setns 364 ++#define SYS_process_vm_readv 365 ++#define SYS_process_vm_writev 366 ++#define SYS_kcmp 367 ++#define SYS_finit_module 368 +diff -Nur musl-0.9.15/arch/superh/bits/termios.h musl-git/arch/superh/bits/termios.h +--- musl-0.9.15/arch/superh/bits/termios.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,160 @@ ++struct termios ++{ ++ tcflag_t c_iflag; ++ tcflag_t c_oflag; ++ tcflag_t c_cflag; ++ tcflag_t c_lflag; ++ cc_t c_line; ++ cc_t c_cc[NCCS]; ++ speed_t __c_ispeed; ++ speed_t __c_ospeed; ++}; ++ ++#define VINTR 0 ++#define VQUIT 1 ++#define VERASE 2 ++#define VKILL 3 ++#define VEOF 4 ++#define VTIME 5 ++#define VMIN 6 ++#define VSWTC 7 ++#define VSTART 8 ++#define VSTOP 9 ++#define VSUSP 10 ++#define VEOL 11 ++#define VREPRINT 12 ++#define VDISCARD 13 ++#define VWERASE 14 ++#define VLNEXT 15 ++#define VEOL2 16 ++ ++#define IGNBRK 0000001 ++#define BRKINT 0000002 ++#define IGNPAR 0000004 ++#define PARMRK 0000010 ++#define INPCK 0000020 ++#define ISTRIP 0000040 ++#define INLCR 0000100 ++#define IGNCR 0000200 ++#define ICRNL 0000400 ++#define IUCLC 0001000 ++#define IXON 0002000 ++#define IXANY 0004000 ++#define IXOFF 0010000 ++#define IMAXBEL 0020000 ++#define IUTF8 0040000 ++ ++#define OPOST 0000001 ++#define OLCUC 0000002 ++#define ONLCR 0000004 ++#define OCRNL 0000010 ++#define ONOCR 0000020 ++#define ONLRET 0000040 ++#define OFILL 0000100 ++#define OFDEL 0000200 ++#define NLDLY 0000400 ++#define NL0 0000000 ++#define NL1 0000400 ++#define CRDLY 0003000 ++#define CR0 0000000 ++#define CR1 0001000 ++#define CR2 0002000 ++#define CR3 0003000 ++#define TABDLY 0014000 ++#define TAB0 0000000 ++#define TAB1 0004000 ++#define TAB2 0010000 ++#define TAB3 0014000 ++#define BSDLY 0020000 ++#define BS0 0000000 ++#define BS1 0020000 ++#define FFDLY 0100000 ++#define FF0 0000000 ++#define FF1 0100000 ++ ++#define VTDLY 0040000 ++#define VT0 0000000 ++#define VT1 0040000 ++ ++#define B0 0000000 ++#define B50 0000001 ++#define B75 0000002 ++#define B110 0000003 ++#define B134 0000004 ++#define B150 0000005 ++#define B200 0000006 ++#define B300 0000007 ++#define B600 0000010 ++#define B1200 0000011 ++#define B1800 0000012 ++#define B2400 0000013 ++#define B4800 0000014 ++#define B9600 0000015 ++#define B19200 0000016 ++#define B38400 0000017 ++ ++#define B57600 0010001 ++#define B115200 0010002 ++#define B230400 0010003 ++#define B460800 0010004 ++#define B500000 0010005 ++#define B576000 0010006 ++#define B921600 0010007 ++#define B1000000 0010010 ++#define B1152000 0010011 ++#define B1500000 0010012 ++#define B2000000 0010013 ++#define B2500000 0010014 ++#define B3000000 0010015 ++#define B3500000 0010016 ++#define B4000000 0010017 ++ ++#define CBAUD 0010017 ++ ++#define CSIZE 0000060 ++#define CS5 0000000 ++#define CS6 0000020 ++#define CS7 0000040 ++#define CS8 0000060 ++#define CSTOPB 0000100 ++#define CREAD 0000200 ++#define PARENB 0000400 ++#define PARODD 0001000 ++#define HUPCL 0002000 ++#define CLOCAL 0004000 ++ ++#define ISIG 0000001 ++#define ICANON 0000002 ++#define ECHO 0000010 ++#define ECHOE 0000020 ++#define ECHOK 0000040 ++#define ECHONL 0000100 ++#define NOFLSH 0000200 ++#define TOSTOP 0000400 ++#define IEXTEN 0100000 ++ ++#define ECHOCTL 0001000 ++#define ECHOPRT 0002000 ++#define ECHOKE 0004000 ++#define FLUSHO 0010000 ++#define PENDIN 0040000 ++ ++#define TCOOFF 0 ++#define TCOON 1 ++#define TCIOFF 2 ++#define TCION 3 ++ ++#define TCIFLUSH 0 ++#define TCOFLUSH 1 ++#define TCIOFLUSH 2 ++ ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/superh/crt_arch.h musl-git/arch/superh/crt_arch.h +--- musl-0.9.15/arch/superh/crt_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/crt_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,9 @@ ++__asm__("\ ++.global _start \n\ ++_start: \n\ ++ mov r15, r4 \n\ ++ mov #-16, r0 \n\ ++ and r0, r15 \n\ ++ bsr __cstart \n\ ++ nop \n\ ++"); +diff -Nur musl-0.9.15/arch/superh/pthread_arch.h musl-git/arch/superh/pthread_arch.h +--- musl-0.9.15/arch/superh/pthread_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/pthread_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,11 @@ ++static inline struct pthread *__pthread_self() ++{ ++ char *self; ++ __asm__ __volatile__ ("stc gbr,%0" : "=r" (self) ); ++ return (struct pthread *) (self + 8 - sizeof(struct pthread)); ++} ++ ++#define TLS_ABOVE_TP ++#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8) ++ ++#define CANCEL_REG_IP 17 +diff -Nur musl-0.9.15/arch/superh/reloc.h musl-git/arch/superh/reloc.h +--- musl-0.9.15/arch/superh/reloc.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/reloc.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,47 @@ ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++#define ENDIAN_SUFFIX "l" ++#else ++#define ENDIAN_SUFFIX "" ++#endif ++ ++#define LDSO_ARCH "sh" ENDIAN_SUFFIX ++ ++#define IS_COPY(x) ((x) == R_SH_COPY) ++#define IS_PLT(x) ((x) == R_SH_JMP_SLOT) ++ ++static inline void do_single_reloc( ++ struct dso *self, unsigned char *base_addr, ++ size_t *reloc_addr, int type, size_t addend, ++ Sym *sym, size_t sym_size, ++ struct symdef def, size_t sym_val) ++{ ++ switch(type) { ++ case R_SH_GLOB_DAT: ++ case R_SH_JMP_SLOT: ++ *reloc_addr = sym_val; ++ break; ++ case R_SH_RELATIVE: ++ *reloc_addr = (size_t)base_addr + addend; ++ break; ++ case R_SH_DIR32: ++ *reloc_addr = sym_val + addend; ++ break; ++ case R_SH_REL32: ++ *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; ++ break; ++ case R_SH_COPY: ++ memcpy(reloc_addr, (void *)sym_val, sym_size); ++ break; ++ case R_SH_TLS_DTPMOD32: ++ *reloc_addr += def.dso ? def.dso->tls_id : self->tls_id; ++ break; ++ case R_SH_TLS_DTPOFF32: ++ *reloc_addr += def.sym->st_value; ++ break; ++ case R_SH_TLS_TPOFF32: ++ *reloc_addr += def.sym ++ ? def.sym->st_value + def.dso->tls_offset + 8 ++ : self->tls_offset + 8; ++ break; ++ } ++} +diff -Nur musl-0.9.15/arch/superh/src/atomic.c musl-git/arch/superh/src/atomic.c +--- musl-0.9.15/arch/superh/src/atomic.c 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/src/atomic.c 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,146 @@ ++#include "libc.h" ++ ++#define LLSC_CLOBBERS "r0", "t", "memory" ++#define LLSC_START(mem) \ ++ "0: movli.l @" mem ", r0\n" ++#define LLSC_END(mem) \ ++ "1: movco.l r0, @" mem "\n" \ ++ " bf 0b\n" \ ++ " synco\n" ++ ++/* gusa is a hack in the kernel which lets you create a sequence of instructions ++ * which will be restarted if the process is preempted in the middle of the ++ * sequence. It will do for implementing atomics on non-smp systems. ABI is: ++ * r0 = address of first instruction after the atomic sequence ++ * r1 = original stack pointer ++ * r15 = -1 * length of atomic sequence in bytes ++ */ ++#define GUSA_CLOBBERS "r0", "r1", "memory" ++#define GUSA_START(mem,old,nop) \ ++ " .align 2\n" \ ++ " mova 1f, r0\n" \ ++ nop \ ++ " mov r15, r1\n" \ ++ " mov #(0f-1f), r15\n" \ ++ "0: mov.l @" mem ", " old "\n" ++/* the target of mova must be 4 byte aligned, so we may need a nop */ ++#define GUSA_START_ODD(mem,old) GUSA_START(mem,old,"") ++#define GUSA_START_EVEN(mem,old) GUSA_START(mem,old,"\tnop\n") ++#define GUSA_END(mem,new) \ ++ " mov.l " new ", @" mem "\n" \ ++ "1: mov r1, r15\n" ++ ++#define CPU_HAS_LLSC 0x0040 ++ ++int __sh_cas(volatile int *p, int t, int s) ++{ ++ int old; ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ LLSC_START("%1") ++ " mov r0, %0\n" ++ " cmp/eq %0, %2\n" ++ " bf 1f\n" ++ " mov %3, r0\n" ++ LLSC_END("%1") ++ : "=&r"(old) : "r"(p), "r"(t), "r"(s) : LLSC_CLOBBERS); ++ } else { ++ __asm__ __volatile__( ++ GUSA_START_EVEN("%1", "%0") ++ " cmp/eq %0, %2\n" ++ " bf 1f\n" ++ GUSA_END("%1", "%3") ++ : "=&r"(old) : "r"(p), "r"(t), "r"(s) : GUSA_CLOBBERS, "t"); ++ } ++ return old; ++} ++ ++int __sh_swap(volatile int *x, int v) ++{ ++ int old; ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ LLSC_START("%1") ++ " mov r0, %0\n" ++ " mov %2, r0\n" ++ LLSC_END("%1") ++ : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); ++ } else { ++ __asm__ __volatile__( ++ GUSA_START_EVEN("%1", "%0") ++ GUSA_END("%1", "%2") ++ : "=&r"(old) : "r"(x), "r"(v) : GUSA_CLOBBERS); ++ } ++ return old; ++} ++ ++int __sh_fetch_add(volatile int *x, int v) ++{ ++ int old, dummy; ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ LLSC_START("%1") ++ " mov r0, %0\n" ++ " add %2, r0\n" ++ LLSC_END("%1") ++ : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); ++ } else { ++ __asm__ __volatile__( ++ GUSA_START_EVEN("%2", "%0") ++ " mov %0, %1\n" ++ " add %3, %1\n" ++ GUSA_END("%2", "%1") ++ : "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); ++ } ++ return old; ++} ++ ++void __sh_store(volatile int *p, int x) ++{ ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ " mov.l %1, @%0\n" ++ " synco\n" ++ : : "r"(p), "r"(x) : "memory"); ++ } else { ++ __asm__ __volatile__( ++ " mov.l %1, @%0\n" ++ : : "r"(p), "r"(x) : "memory"); ++ } ++} ++ ++void __sh_and(volatile int *x, int v) ++{ ++ int dummy; ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ LLSC_START("%0") ++ " and %1, r0\n" ++ LLSC_END("%0") ++ : : "r"(x), "r"(v) : LLSC_CLOBBERS); ++ } else { ++ __asm__ __volatile__( ++ GUSA_START_ODD("%1", "%0") ++ " and %2, %0\n" ++ GUSA_END("%1", "%0") ++ : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); ++ } ++} ++ ++void __sh_or(volatile int *x, int v) ++{ ++ int dummy; ++ if (__hwcap & CPU_HAS_LLSC) { ++ __asm__ __volatile__( ++ LLSC_START("%0") ++ " or %1, r0\n" ++ LLSC_END("%0") ++ : : "r"(x), "r"(v) : LLSC_CLOBBERS); ++ } else { ++ __asm__ __volatile__( ++ GUSA_START_ODD("%1", "%0") ++ " or %2, %0\n" ++ GUSA_END("%1", "%0") ++ : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); ++ } ++} +diff -Nur musl-0.9.15/arch/superh/src/__fpsrc_values.c musl-git/arch/superh/src/__fpsrc_values.c +--- musl-0.9.15/arch/superh/src/__fpsrc_values.c 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/src/__fpsrc_values.c 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,2 @@ ++/* used by gcc for switching the FPU between single and double precision */ ++const unsigned long __fpscr_values[2] = { 0, 0x80000 }; +diff -Nur musl-0.9.15/arch/superh/syscall_arch.h musl-git/arch/superh/syscall_arch.h +--- musl-0.9.15/arch/superh/syscall_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/superh/syscall_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,87 @@ ++#define __SYSCALL_LL_E(x) \ ++((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ ++((union { long long ll; long l[2]; }){ .ll = x }).l[1] ++#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) ++ ++/* The extra OR instructions are to work around a hardware bug: ++ * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf ++ */ ++#define __asm_syscall(trapno, ...) do { \ ++ __asm__ __volatile__ ( \ ++ "trapa #" #trapno "\n" \ ++ "or r0, r0\n" \ ++ "or r0, r0\n" \ ++ "or r0, r0\n" \ ++ "or r0, r0\n" \ ++ "or r0, r0\n" \ ++ : "=r"(r0) : __VA_ARGS__ : "memory"); \ ++ return r0; \ ++ } while (0) ++ ++static inline long __syscall0(long n) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r0 __asm__("r0"); ++ __asm_syscall(16, "r"(r3)); ++} ++ ++static inline long __syscall1(long n, long a) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r0 __asm__("r0"); ++ __asm_syscall(17, "r"(r3), "r"(r4)); ++} ++ ++static inline long __syscall2(long n, long a, long b) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r5 __asm__("r5") = b; ++ register long r0 __asm__("r0"); ++ __asm_syscall(18, "r"(r3), "r"(r4), "r"(r5)); ++} ++ ++static inline long __syscall3(long n, long a, long b, long c) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r5 __asm__("r5") = b; ++ register long r6 __asm__("r6") = c; ++ register long r0 __asm__("r0"); ++ __asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6)); ++} ++ ++static inline long __syscall4(long n, long a, long b, long c, long d) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r5 __asm__("r5") = b; ++ register long r6 __asm__("r6") = c; ++ register long r7 __asm__("r7") = d; ++ register long r0 __asm__("r0"); ++ __asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); ++} ++ ++static inline long __syscall5(long n, long a, long b, long c, long d, long e) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r5 __asm__("r5") = b; ++ register long r6 __asm__("r6") = c; ++ register long r7 __asm__("r7") = d; ++ register long r0 __asm__("r0") = e; ++ __asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0)); ++} ++ ++static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) ++{ ++ register long r3 __asm__("r3") = n; ++ register long r4 __asm__("r4") = a; ++ register long r5 __asm__("r5") = b; ++ register long r6 __asm__("r6") = c; ++ register long r7 __asm__("r7") = d; ++ register long r0 __asm__("r0") = e; ++ register long r1 __asm__("r1") = f; ++ __asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1)); ++} +diff -Nur musl-0.9.15/arch/x32/atomic.h musl-git/arch/x32/atomic.h +--- musl-0.9.15/arch/x32/atomic.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/atomic.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,125 @@ ++#ifndef _INTERNAL_ATOMIC_H ++#define _INTERNAL_ATOMIC_H ++ ++#include ++ ++static inline int a_ctz_64(uint64_t x) ++{ ++ __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); ++ return x; ++} ++ ++static inline int a_ctz_l(unsigned long x) ++{ ++ __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); ++ return x; ++} ++ ++static inline void a_and_64(volatile uint64_t *p, uint64_t v) ++{ ++ __asm__( "lock ; and %1, %0" ++ : "=m"(*p) : "r"(v) : "memory" ); ++} ++ ++static inline void a_or_64(volatile uint64_t *p, uint64_t v) ++{ ++ __asm__( "lock ; or %1, %0" ++ : "=m"(*p) : "r"(v) : "memory" ); ++} ++ ++static inline void a_store_l(volatile void *p, long x) ++{ ++ __asm__( "mov %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); ++} ++ ++static inline void a_or_l(volatile void *p, long v) ++{ ++ __asm__( "lock ; or %1, %0" ++ : "=m"(*(long *)p) : "r"(v) : "memory" ); ++} ++ ++static inline void *a_cas_p(volatile void *p, void *t, void *s) ++{ ++ __asm__( "lock ; cmpxchg %3, %1" ++ : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" ); ++ return t; ++} ++ ++static inline long a_cas_l(volatile void *p, long t, long s) ++{ ++ __asm__( "lock ; cmpxchg %3, %1" ++ : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" ); ++ return t; ++} ++ ++static inline int a_cas(volatile int *p, int t, int s) ++{ ++ __asm__( "lock ; cmpxchg %3, %1" ++ : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); ++ return t; ++} ++ ++static inline void *a_swap_p(void *volatile *x, void *v) ++{ ++ __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(void **)x) : "0"(v) : "memory" ); ++ return v; ++} ++static inline long a_swap_l(volatile void *x, long v) ++{ ++ __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(long *)x) : "0"(v) : "memory" ); ++ return v; ++} ++ ++static inline void a_or(volatile void *p, int v) ++{ ++ __asm__( "lock ; or %1, %0" ++ : "=m"(*(int *)p) : "r"(v) : "memory" ); ++} ++ ++static inline void a_and(volatile void *p, int v) ++{ ++ __asm__( "lock ; and %1, %0" ++ : "=m"(*(int *)p) : "r"(v) : "memory" ); ++} ++ ++static inline int a_swap(volatile int *x, int v) ++{ ++ __asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" ); ++ return v; ++} ++ ++#define a_xchg a_swap ++ ++static inline int a_fetch_add(volatile int *x, int v) ++{ ++ __asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" ); ++ return v; ++} ++ ++static inline void a_inc(volatile int *x) ++{ ++ __asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" ); ++} ++ ++static inline void a_dec(volatile int *x) ++{ ++ __asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" ); ++} ++ ++static inline void a_store(volatile int *p, int x) ++{ ++ __asm__( "mov %1, %0" : "=m"(*p) : "r"(x) : "memory" ); ++} ++ ++static inline void a_spin() ++{ ++ __asm__ __volatile__( "pause" : : : "memory" ); ++} ++ ++static inline void a_crash() ++{ ++ __asm__ __volatile__( "hlt" : : : "memory" ); ++} ++ ++ ++#endif +diff -Nur musl-0.9.15/arch/x32/bits/alltypes.h.in musl-git/arch/x32/bits/alltypes.h.in +--- musl-0.9.15/arch/x32/bits/alltypes.h.in 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/alltypes.h.in 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,28 @@ ++#define _Addr int ++#define _Int64 long long ++#define _Reg long long ++ ++TYPEDEF __builtin_va_list va_list; ++TYPEDEF __builtin_va_list __isoc_va_list; ++ ++#ifndef __cplusplus ++TYPEDEF long wchar_t; ++#endif ++TYPEDEF unsigned wint_t; ++ ++#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2 ++TYPEDEF long double float_t; ++TYPEDEF long double double_t; ++#else ++TYPEDEF float float_t; ++TYPEDEF double double_t; ++#endif ++ ++TYPEDEF long long time_t; ++TYPEDEF long long suseconds_t; ++ ++TYPEDEF struct { union { int __i[14]; unsigned long __s[7]; } __u; } pthread_attr_t; ++TYPEDEF struct { union { int __i[10]; void *__p[5]; } __u; } pthread_mutex_t; ++TYPEDEF struct { union { int __i[12]; void *__p[6]; } __u; } pthread_cond_t; ++TYPEDEF struct { union { int __i[14]; void *__p[7]; } __u; } pthread_rwlock_t; ++TYPEDEF struct { union { int __i[8]; void *__p[4]; } __u; } pthread_barrier_t; +diff -Nur musl-0.9.15/arch/x32/bits/endian.h musl-git/arch/x32/bits/endian.h +--- musl-0.9.15/arch/x32/bits/endian.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/endian.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++#define __BYTE_ORDER __LITTLE_ENDIAN +diff -Nur musl-0.9.15/arch/x32/bits/errno.h musl-git/arch/x32/bits/errno.h +--- musl-0.9.15/arch/x32/bits/errno.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/errno.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,134 @@ ++#define EPERM 1 ++#define ENOENT 2 ++#define ESRCH 3 ++#define EINTR 4 ++#define EIO 5 ++#define ENXIO 6 ++#define E2BIG 7 ++#define ENOEXEC 8 ++#define EBADF 9 ++#define ECHILD 10 ++#define EAGAIN 11 ++#define ENOMEM 12 ++#define EACCES 13 ++#define EFAULT 14 ++#define ENOTBLK 15 ++#define EBUSY 16 ++#define EEXIST 17 ++#define EXDEV 18 ++#define ENODEV 19 ++#define ENOTDIR 20 ++#define EISDIR 21 ++#define EINVAL 22 ++#define ENFILE 23 ++#define EMFILE 24 ++#define ENOTTY 25 ++#define ETXTBSY 26 ++#define EFBIG 27 ++#define ENOSPC 28 ++#define ESPIPE 29 ++#define EROFS 30 ++#define EMLINK 31 ++#define EPIPE 32 ++#define EDOM 33 ++#define ERANGE 34 ++#define EDEADLK 35 ++#define ENAMETOOLONG 36 ++#define ENOLCK 37 ++#define ENOSYS 38 ++#define ENOTEMPTY 39 ++#define ELOOP 40 ++#define EWOULDBLOCK EAGAIN ++#define ENOMSG 42 ++#define EIDRM 43 ++#define ECHRNG 44 ++#define EL2NSYNC 45 ++#define EL3HLT 46 ++#define EL3RST 47 ++#define ELNRNG 48 ++#define EUNATCH 49 ++#define ENOCSI 50 ++#define EL2HLT 51 ++#define EBADE 52 ++#define EBADR 53 ++#define EXFULL 54 ++#define ENOANO 55 ++#define EBADRQC 56 ++#define EBADSLT 57 ++#define EDEADLOCK EDEADLK ++#define EBFONT 59 ++#define ENOSTR 60 ++#define ENODATA 61 ++#define ETIME 62 ++#define ENOSR 63 ++#define ENONET 64 ++#define ENOPKG 65 ++#define EREMOTE 66 ++#define ENOLINK 67 ++#define EADV 68 ++#define ESRMNT 69 ++#define ECOMM 70 ++#define EPROTO 71 ++#define EMULTIHOP 72 ++#define EDOTDOT 73 ++#define EBADMSG 74 ++#define EOVERFLOW 75 ++#define ENOTUNIQ 76 ++#define EBADFD 77 ++#define EREMCHG 78 ++#define ELIBACC 79 ++#define ELIBBAD 80 ++#define ELIBSCN 81 ++#define ELIBMAX 82 ++#define ELIBEXEC 83 ++#define EILSEQ 84 ++#define ERESTART 85 ++#define ESTRPIPE 86 ++#define EUSERS 87 ++#define ENOTSOCK 88 ++#define EDESTADDRREQ 89 ++#define EMSGSIZE 90 ++#define EPROTOTYPE 91 ++#define ENOPROTOOPT 92 ++#define EPROTONOSUPPORT 93 ++#define ESOCKTNOSUPPORT 94 ++#define EOPNOTSUPP 95 ++#define ENOTSUP EOPNOTSUPP ++#define EPFNOSUPPORT 96 ++#define EAFNOSUPPORT 97 ++#define EADDRINUSE 98 ++#define EADDRNOTAVAIL 99 ++#define ENETDOWN 100 ++#define ENETUNREACH 101 ++#define ENETRESET 102 ++#define ECONNABORTED 103 ++#define ECONNRESET 104 ++#define ENOBUFS 105 ++#define EISCONN 106 ++#define ENOTCONN 107 ++#define ESHUTDOWN 108 ++#define ETOOMANYREFS 109 ++#define ETIMEDOUT 110 ++#define ECONNREFUSED 111 ++#define EHOSTDOWN 112 ++#define EHOSTUNREACH 113 ++#define EALREADY 114 ++#define EINPROGRESS 115 ++#define ESTALE 116 ++#define EUCLEAN 117 ++#define ENOTNAM 118 ++#define ENAVAIL 119 ++#define EISNAM 120 ++#define EREMOTEIO 121 ++#define EDQUOT 122 ++#define ENOMEDIUM 123 ++#define EMEDIUMTYPE 124 ++#define ECANCELED 125 ++#define ENOKEY 126 ++#define EKEYEXPIRED 127 ++#define EKEYREVOKED 128 ++#define EKEYREJECTED 129 ++#define EOWNERDEAD 130 ++#define ENOTRECOVERABLE 131 ++#define ERFKILL 132 ++#define EHWPOISON 133 +diff -Nur musl-0.9.15/arch/x32/bits/fcntl.h musl-git/arch/x32/bits/fcntl.h +--- musl-0.9.15/arch/x32/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/fcntl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,39 @@ ++#define O_CREAT 0100 ++#define O_EXCL 0200 ++#define O_NOCTTY 0400 ++#define O_TRUNC 01000 ++#define O_APPEND 02000 ++#define O_NONBLOCK 04000 ++#define O_DSYNC 010000 ++#define O_SYNC 04010000 ++#define O_RSYNC 04010000 ++#define O_DIRECTORY 0200000 ++#define O_NOFOLLOW 0400000 ++#define O_CLOEXEC 02000000 ++ ++#define O_ASYNC 020000 ++#define O_DIRECT 040000 ++#define O_LARGEFILE 0 ++#define O_NOATIME 01000000 ++#define O_TMPFILE 020200000 ++#define O_NDELAY O_NONBLOCK ++ ++#define F_DUPFD 0 ++#define F_GETFD 1 ++#define F_SETFD 2 ++#define F_GETFL 3 ++#define F_SETFL 4 ++ ++#define F_SETOWN 8 ++#define F_GETOWN 9 ++#define F_SETSIG 10 ++#define F_GETSIG 11 ++ ++#define F_GETLK 5 ++#define F_SETLK 6 ++#define F_SETLKW 7 ++ ++#define F_SETOWN_EX 15 ++#define F_GETOWN_EX 16 ++ ++#define F_GETOWNER_UIDS 17 +diff -Nur musl-0.9.15/arch/x32/bits/fenv.h musl-git/arch/x32/bits/fenv.h +--- musl-0.9.15/arch/x32/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/fenv.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,34 @@ ++#define FE_INVALID 1 ++#define __FE_DENORM 2 ++#define FE_DIVBYZERO 4 ++#define FE_OVERFLOW 8 ++#define FE_UNDERFLOW 16 ++#define FE_INEXACT 32 ++ ++#define FE_ALL_EXCEPT 63 ++ ++#define FE_TONEAREST 0 ++#define FE_DOWNWARD 0x400 ++#define FE_UPWARD 0x800 ++#define FE_TOWARDZERO 0xc00 ++ ++typedef unsigned short fexcept_t; ++ ++typedef struct { ++ unsigned short __control_word; ++ unsigned short __unused1; ++ unsigned short __status_word; ++ unsigned short __unused2; ++ unsigned short __tags; ++ unsigned short __unused3; ++ unsigned int __eip; ++ unsigned short __cs_selector; ++ unsigned int __opcode:11; ++ unsigned int __unused4:5; ++ unsigned int __data_offset; ++ unsigned short __data_selector; ++ unsigned short __unused5; ++ unsigned int __mxcsr; ++} fenv_t; ++ ++#define FE_DFL_ENV ((const fenv_t *) -1) +diff -Nur musl-0.9.15/arch/x32/bits/float.h musl-git/arch/x32/bits/float.h +--- musl-0.9.15/arch/x32/bits/float.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/float.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,21 @@ ++#define FLT_ROUNDS 1 ++#ifdef __FLT_EVAL_METHOD__ ++#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ ++#else ++#define FLT_EVAL_METHOD 0 ++#endif ++ ++#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L ++#define LDBL_MIN 3.3621031431120935063e-4932L ++#define LDBL_MAX 1.1897314953572317650e+4932L ++#define LDBL_EPSILON 1.0842021724855044340e-19L ++ ++#define LDBL_MANT_DIG 64 ++#define LDBL_MIN_EXP (-16381) ++#define LDBL_MAX_EXP 16384 ++ ++#define LDBL_DIG 18 ++#define LDBL_MIN_10_EXP (-4931) ++#define LDBL_MAX_10_EXP 4932 ++ ++#define DECIMAL_DIG 21 +diff -Nur musl-0.9.15/arch/x32/bits/ioctl.h musl-git/arch/x32/bits/ioctl.h +--- musl-0.9.15/arch/x32/bits/ioctl.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/ioctl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,197 @@ ++#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) ++#define _IOC_NONE 0U ++#define _IOC_WRITE 1U ++#define _IOC_READ 2U ++ ++#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) ++#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) ++#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) ++#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) ++ ++#define TCGETS 0x5401 ++#define TCSETS 0x5402 ++#define TCSETSW 0x5403 ++#define TCSETSF 0x5404 ++#define TCGETA 0x5405 ++#define TCSETA 0x5406 ++#define TCSETAW 0x5407 ++#define TCSETAF 0x5408 ++#define TCSBRK 0x5409 ++#define TCXONC 0x540A ++#define TCFLSH 0x540B ++#define TIOCEXCL 0x540C ++#define TIOCNXCL 0x540D ++#define TIOCSCTTY 0x540E ++#define TIOCGPGRP 0x540F ++#define TIOCSPGRP 0x5410 ++#define TIOCOUTQ 0x5411 ++#define TIOCSTI 0x5412 ++#define TIOCGWINSZ 0x5413 ++#define TIOCSWINSZ 0x5414 ++#define TIOCMGET 0x5415 ++#define TIOCMBIS 0x5416 ++#define TIOCMBIC 0x5417 ++#define TIOCMSET 0x5418 ++#define TIOCGSOFTCAR 0x5419 ++#define TIOCSSOFTCAR 0x541A ++#define FIONREAD 0x541B ++#define TIOCINQ FIONREAD ++#define TIOCLINUX 0x541C ++#define TIOCCONS 0x541D ++#define TIOCGSERIAL 0x541E ++#define TIOCSSERIAL 0x541F ++#define TIOCPKT 0x5420 ++#define FIONBIO 0x5421 ++#define TIOCNOTTY 0x5422 ++#define TIOCSETD 0x5423 ++#define TIOCGETD 0x5424 ++#define TCSBRKP 0x5425 ++#define TIOCTTYGSTRUCT 0x5426 ++#define TIOCSBRK 0x5427 ++#define TIOCCBRK 0x5428 ++#define TIOCGSID 0x5429 ++#define TIOCGPTN 0x80045430 ++#define TIOCSPTLCK 0x40045431 ++#define TCGETX 0x5432 ++#define TCSETX 0x5433 ++#define TCSETXF 0x5434 ++#define TCSETXW 0x5435 ++ ++#define FIONCLEX 0x5450 ++#define FIOCLEX 0x5451 ++#define FIOASYNC 0x5452 ++#define TIOCSERCONFIG 0x5453 ++#define TIOCSERGWILD 0x5454 ++#define TIOCSERSWILD 0x5455 ++#define TIOCGLCKTRMIOS 0x5456 ++#define TIOCSLCKTRMIOS 0x5457 ++#define TIOCSERGSTRUCT 0x5458 ++#define TIOCSERGETLSR 0x5459 ++#define TIOCSERGETMULTI 0x545A ++#define TIOCSERSETMULTI 0x545B ++ ++#define TIOCMIWAIT 0x545C ++#define TIOCGICOUNT 0x545D ++#define TIOCGHAYESESP 0x545E ++#define TIOCSHAYESESP 0x545F ++#define FIOQSIZE 0x5460 ++ ++#define TIOCPKT_DATA 0 ++#define TIOCPKT_FLUSHREAD 1 ++#define TIOCPKT_FLUSHWRITE 2 ++#define TIOCPKT_STOP 4 ++#define TIOCPKT_START 8 ++#define TIOCPKT_NOSTOP 16 ++#define TIOCPKT_DOSTOP 32 ++#define TIOCPKT_IOCTL 64 ++ ++#define TIOCSER_TEMT 0x01 ++ ++struct winsize { ++ unsigned short ws_row; ++ unsigned short ws_col; ++ unsigned short ws_xpixel; ++ unsigned short ws_ypixel; ++}; ++ ++#define TIOCM_LE 0x001 ++#define TIOCM_DTR 0x002 ++#define TIOCM_RTS 0x004 ++#define TIOCM_ST 0x008 ++#define TIOCM_SR 0x010 ++#define TIOCM_CTS 0x020 ++#define TIOCM_CAR 0x040 ++#define TIOCM_RNG 0x080 ++#define TIOCM_DSR 0x100 ++#define TIOCM_CD TIOCM_CAR ++#define TIOCM_RI TIOCM_RNG ++#define TIOCM_OUT1 0x2000 ++#define TIOCM_OUT2 0x4000 ++#define TIOCM_LOOP 0x8000 ++#define TIOCM_MODEM_BITS TIOCM_OUT2 ++ ++#define N_TTY 0 ++#define N_SLIP 1 ++#define N_MOUSE 2 ++#define N_PPP 3 ++#define N_STRIP 4 ++#define N_AX25 5 ++#define N_X25 6 ++#define N_6PACK 7 ++#define N_MASC 8 ++#define N_R3964 9 ++#define N_PROFIBUS_FDL 10 ++#define N_IRDA 11 ++#define N_SMSBLOCK 12 ++#define N_HDLC 13 ++#define N_SYNC_PPP 14 ++#define N_HCI 15 ++ ++#define FIOSETOWN 0x8901 ++#define SIOCSPGRP 0x8902 ++#define FIOGETOWN 0x8903 ++#define SIOCGPGRP 0x8904 ++#define SIOCATMARK 0x8905 ++#define SIOCGSTAMP 0x8906 ++ ++#define SIOCADDRT 0x890B ++#define SIOCDELRT 0x890C ++#define SIOCRTMSG 0x890D ++ ++#define SIOCGIFNAME 0x8910 ++#define SIOCSIFLINK 0x8911 ++#define SIOCGIFCONF 0x8912 ++#define SIOCGIFFLAGS 0x8913 ++#define SIOCSIFFLAGS 0x8914 ++#define SIOCGIFADDR 0x8915 ++#define SIOCSIFADDR 0x8916 ++#define SIOCGIFDSTADDR 0x8917 ++#define SIOCSIFDSTADDR 0x8918 ++#define SIOCGIFBRDADDR 0x8919 ++#define SIOCSIFBRDADDR 0x891a ++#define SIOCGIFNETMASK 0x891b ++#define SIOCSIFNETMASK 0x891c ++#define SIOCGIFMETRIC 0x891d ++#define SIOCSIFMETRIC 0x891e ++#define SIOCGIFMEM 0x891f ++#define SIOCSIFMEM 0x8920 ++#define SIOCGIFMTU 0x8921 ++#define SIOCSIFMTU 0x8922 ++#define SIOCSIFHWADDR 0x8924 ++#define SIOCGIFENCAP 0x8925 ++#define SIOCSIFENCAP 0x8926 ++#define SIOCGIFHWADDR 0x8927 ++#define SIOCGIFSLAVE 0x8929 ++#define SIOCSIFSLAVE 0x8930 ++#define SIOCADDMULTI 0x8931 ++#define SIOCDELMULTI 0x8932 ++#define SIOCGIFINDEX 0x8933 ++#define SIOGIFINDEX SIOCGIFINDEX ++#define SIOCSIFPFLAGS 0x8934 ++#define SIOCGIFPFLAGS 0x8935 ++#define SIOCDIFADDR 0x8936 ++#define SIOCSIFHWBROADCAST 0x8937 ++#define SIOCGIFCOUNT 0x8938 ++ ++#define SIOCGIFBR 0x8940 ++#define SIOCSIFBR 0x8941 ++ ++#define SIOCGIFTXQLEN 0x8942 ++#define SIOCSIFTXQLEN 0x8943 ++ ++#define SIOCDARP 0x8953 ++#define SIOCGARP 0x8954 ++#define SIOCSARP 0x8955 ++ ++#define SIOCDRARP 0x8960 ++#define SIOCGRARP 0x8961 ++#define SIOCSRARP 0x8962 ++ ++#define SIOCGIFMAP 0x8970 ++#define SIOCSIFMAP 0x8971 ++ ++#define SIOCADDDLCI 0x8980 ++#define SIOCDELDLCI 0x8981 ++ ++#define SIOCDEVPRIVATE 0x89F0 ++#define SIOCPROTOPRIVATE 0x89E0 +diff -Nur musl-0.9.15/arch/x32/bits/io.h musl-git/arch/x32/bits/io.h +--- musl-0.9.15/arch/x32/bits/io.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/io.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,77 @@ ++static __inline void outb(unsigned char __val, unsigned short __port) ++{ ++ __asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); ++} ++ ++static __inline void outw(unsigned short __val, unsigned short __port) ++{ ++ __asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); ++} ++ ++static __inline void outl(unsigned int __val, unsigned short __port) ++{ ++ __asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); ++} ++ ++static __inline unsigned char inb(unsigned short __port) ++{ ++ unsigned char __val; ++ __asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); ++ return __val; ++} ++ ++static __inline unsigned short inw(unsigned short __port) ++{ ++ unsigned short __val; ++ __asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); ++ return __val; ++} ++ ++static __inline unsigned int inl(unsigned short __port) ++{ ++ unsigned int __val; ++ __asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); ++ return __val; ++} ++ ++static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; outsb" ++ : "+S" (__buf), "+c" (__n) ++ : "d" (__port)); ++} ++ ++static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; outsw" ++ : "+S" (__buf), "+c" (__n) ++ : "d" (__port)); ++} ++ ++static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; outsl" ++ : "+S" (__buf), "+c"(__n) ++ : "d" (__port)); ++} ++ ++static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; insb" ++ : "+D" (__buf), "+c" (__n) ++ : "d" (__port)); ++} ++ ++static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; insw" ++ : "+D" (__buf), "+c" (__n) ++ : "d" (__port)); ++} ++ ++static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) ++{ ++ __asm__ volatile ("cld; rep; insl" ++ : "+D" (__buf), "+c" (__n) ++ : "d" (__port)); ++} +diff -Nur musl-0.9.15/arch/x32/bits/ipc.h musl-git/arch/x32/bits/ipc.h +--- musl-0.9.15/arch/x32/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/ipc.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,14 @@ ++struct ipc_perm ++{ ++ key_t __ipc_perm_key; ++ uid_t uid; ++ gid_t gid; ++ uid_t cuid; ++ gid_t cgid; ++ mode_t mode; ++ int __ipc_perm_seq; ++ long long __pad1; ++ long long __pad2; ++}; ++ ++#define IPC_64 0 +diff -Nur musl-0.9.15/arch/x32/bits/limits.h musl-git/arch/x32/bits/limits.h +--- musl-0.9.15/arch/x32/bits/limits.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/limits.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,8 @@ ++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ ++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define PAGE_SIZE 4096 ++#define LONG_BIT 32 ++#endif ++ ++#define LONG_MAX 0x7fffffffL ++#define LLONG_MAX 0x7fffffffffffffffLL +diff -Nur musl-0.9.15/arch/x32/bits/mman.h musl-git/arch/x32/bits/mman.h +--- musl-0.9.15/arch/x32/bits/mman.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/mman.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,62 @@ ++#define MAP_FAILED ((void *) -1) ++ ++#define PROT_NONE 0 ++#define PROT_READ 1 ++#define PROT_WRITE 2 ++#define PROT_EXEC 4 ++#define PROT_GROWSDOWN 0x01000000 ++#define PROT_GROWSUP 0x02000000 ++ ++#define MAP_SHARED 0x01 ++#define MAP_PRIVATE 0x02 ++#define MAP_FIXED 0x10 ++ ++#define MAP_TYPE 0x0f ++#define MAP_FILE 0x00 ++#define MAP_ANON 0x20 ++#define MAP_ANONYMOUS MAP_ANON ++#define MAP_32BIT 0x40 ++#define MAP_NORESERVE 0x4000 ++#define MAP_GROWSDOWN 0x0100 ++#define MAP_DENYWRITE 0x0800 ++#define MAP_EXECUTABLE 0x1000 ++#define MAP_LOCKED 0x2000 ++#define MAP_POPULATE 0x8000 ++#define MAP_NONBLOCK 0x10000 ++#define MAP_STACK 0x20000 ++#define MAP_HUGETLB 0x40000 ++ ++#define POSIX_MADV_NORMAL 0 ++#define POSIX_MADV_RANDOM 1 ++#define POSIX_MADV_SEQUENTIAL 2 ++#define POSIX_MADV_WILLNEED 3 ++#define POSIX_MADV_DONTNEED 0 ++ ++#define MS_ASYNC 1 ++#define MS_INVALIDATE 2 ++#define MS_SYNC 4 ++ ++#define MCL_CURRENT 1 ++#define MCL_FUTURE 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define MADV_NORMAL 0 ++#define MADV_RANDOM 1 ++#define MADV_SEQUENTIAL 2 ++#define MADV_WILLNEED 3 ++#define MADV_DONTNEED 4 ++#define MADV_REMOVE 9 ++#define MADV_DONTFORK 10 ++#define MADV_DOFORK 11 ++#define MADV_MERGEABLE 12 ++#define MADV_UNMERGEABLE 13 ++#define MADV_HUGEPAGE 14 ++#define MADV_NOHUGEPAGE 15 ++#define MADV_DONTDUMP 16 ++#define MADV_DODUMP 17 ++#define MADV_HWPOISON 100 ++#define MADV_SOFT_OFFLINE 101 ++ ++#define MREMAP_MAYMOVE 1 ++#define MREMAP_FIXED 2 ++#endif +diff -Nur musl-0.9.15/arch/x32/bits/msg.h musl-git/arch/x32/bits/msg.h +--- musl-0.9.15/arch/x32/bits/msg.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/msg.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,16 @@ ++struct msqid_ds ++{ ++ struct ipc_perm msg_perm; ++ time_t msg_stime; ++ time_t msg_rtime; ++ time_t msg_ctime; ++ unsigned long msg_cbytes; ++ long __unused1; ++ msgqnum_t msg_qnum; ++ long __unused2; ++ msglen_t msg_qbytes; ++ long __unused3; ++ pid_t msg_lspid; ++ pid_t msg_lrpid; ++ unsigned long long __unused[2]; ++}; +diff -Nur musl-0.9.15/arch/x32/bits/posix.h musl-git/arch/x32/bits/posix.h +--- musl-0.9.15/arch/x32/bits/posix.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/posix.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,2 @@ ++#define _POSIX_V6_LP64_OFF64 1 ++#define _POSIX_V7_LP64_OFF64 1 +diff -Nur musl-0.9.15/arch/x32/bits/reg.h musl-git/arch/x32/bits/reg.h +--- musl-0.9.15/arch/x32/bits/reg.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/reg.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,29 @@ ++#undef __WORDSIZE ++#define __WORDSIZE 32 ++#define R15 0 ++#define R14 1 ++#define R13 2 ++#define R12 3 ++#define RBP 4 ++#define RBX 5 ++#define R11 6 ++#define R10 7 ++#define R9 8 ++#define R8 9 ++#define RAX 10 ++#define RCX 11 ++#define RDX 12 ++#define RSI 13 ++#define RDI 14 ++#define ORIG_RAX 15 ++#define RIP 16 ++#define CS 17 ++#define EFLAGS 18 ++#define RSP 19 ++#define SS 20 ++#define FS_BASE 21 ++#define GS_BASE 22 ++#define DS 23 ++#define ES 24 ++#define FS 25 ++#define GS 26 +diff -Nur musl-0.9.15/arch/x32/bits/setjmp.h musl-git/arch/x32/bits/setjmp.h +--- musl-0.9.15/arch/x32/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/setjmp.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++typedef unsigned long long __jmp_buf[8]; +diff -Nur musl-0.9.15/arch/x32/bits/shm.h musl-git/arch/x32/bits/shm.h +--- musl-0.9.15/arch/x32/bits/shm.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,33 @@ ++#define SHMLBA 4096 ++ ++struct shmid_ds ++{ ++ struct ipc_perm shm_perm; ++ size_t shm_segsz; ++ time_t shm_atime; ++ time_t shm_dtime; ++ time_t shm_ctime; ++ pid_t shm_cpid; ++ pid_t shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __pad0; ++ unsigned long long __pad1; ++ unsigned long long __pad2; ++}; ++ ++struct shminfo { ++ unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2, ++ shmseg, __pad3, shmall, __pad4; ++ unsigned long long __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ int __pad_ids; ++ unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2; ++ unsigned long __swap_attempts, __pad3, __swap_successes, __pad4; ++} ++#ifdef __GNUC__ ++__attribute__((__aligned__(8))) ++#endif ++; +diff -Nur musl-0.9.15/arch/x32/bits/signal.h musl-git/arch/x32/bits/signal.h +--- musl-0.9.15/arch/x32/bits/signal.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/signal.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,119 @@ ++#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ ++ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++ ++#ifdef _GNU_SOURCE ++#define REG_R8 0 ++#define REG_R9 1 ++#define REG_R10 2 ++#define REG_R11 3 ++#define REG_R12 4 ++#define REG_R13 5 ++#define REG_R14 6 ++#define REG_R15 7 ++#define REG_RDI 8 ++#define REG_RSI 9 ++#define REG_RBP 10 ++#define REG_RBX 11 ++#define REG_RDX 12 ++#define REG_RAX 13 ++#define REG_RCX 14 ++#define REG_RSP 15 ++#define REG_RIP 16 ++#define REG_EFL 17 ++#define REG_CSGSFS 18 ++#define REG_ERR 19 ++#define REG_TRAPNO 20 ++#define REG_OLDMASK 21 ++#define REG_CR2 22 ++#endif ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++typedef long long greg_t, gregset_t[23]; ++typedef struct _fpstate { ++ unsigned short cwd, swd, ftw, fop; ++ unsigned long long rip, rdp; ++ unsigned mxcsr, mxcr_mask; ++ struct { ++ unsigned short significand[4], exponent, padding[3]; ++ } _st[8]; ++ struct { ++ unsigned element[4]; ++ } _xmm[16]; ++ unsigned padding[24]; ++} *fpregset_t; ++struct sigcontext { ++ unsigned long long r8, r9, r10, r11, r12, r13, r14, r15; ++ unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags; ++ unsigned short cs, gs, fs, __pad0; ++ unsigned long long err, trapno, oldmask, cr2; ++ struct _fpstate *fpstate; ++ unsigned long long __reserved1[8]; ++}; ++typedef struct { ++ gregset_t gregs; ++ fpregset_t fpregs; ++ unsigned long long __reserved1[8]; ++} mcontext_t; ++#else ++typedef struct { ++ unsigned long long __space[32]; ++} mcontext_t; ++#endif ++ ++typedef struct __ucontext { ++ unsigned long uc_flags; ++ struct __ucontext *uc_link; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ sigset_t uc_sigmask; ++ unsigned long long __fpregs_mem[64]; ++} ucontext_t; ++ ++#define SA_NOCLDSTOP 1 ++#define SA_NOCLDWAIT 2 ++#define SA_SIGINFO 4 ++#define SA_ONSTACK 0x08000000 ++#define SA_RESTART 0x10000000 ++#define SA_NODEFER 0x40000000 ++#define SA_RESETHAND 0x80000000 ++#define SA_RESTORER 0x04000000 ++ ++#endif ++ ++#define SIGHUP 1 ++#define SIGINT 2 ++#define SIGQUIT 3 ++#define SIGILL 4 ++#define SIGTRAP 5 ++#define SIGABRT 6 ++#define SIGIOT SIGABRT ++#define SIGBUS 7 ++#define SIGFPE 8 ++#define SIGKILL 9 ++#define SIGUSR1 10 ++#define SIGSEGV 11 ++#define SIGUSR2 12 ++#define SIGPIPE 13 ++#define SIGALRM 14 ++#define SIGTERM 15 ++#define SIGSTKFLT 16 ++#define SIGCHLD 17 ++#define SIGCONT 18 ++#define SIGSTOP 19 ++#define SIGTSTP 20 ++#define SIGTTIN 21 ++#define SIGTTOU 22 ++#define SIGURG 23 ++#define SIGXCPU 24 ++#define SIGXFSZ 25 ++#define SIGVTALRM 26 ++#define SIGPROF 27 ++#define SIGWINCH 28 ++#define SIGIO 29 ++#define SIGPOLL 29 ++#define SIGPWR 30 ++#define SIGSYS 31 ++#define SIGUNUSED SIGSYS ++ ++#define _NSIG 65 ++ +diff -Nur musl-0.9.15/arch/x32/bits/socket.h musl-git/arch/x32/bits/socket.h +--- musl-0.9.15/arch/x32/bits/socket.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/socket.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,18 @@ ++struct msghdr ++{ ++ void *msg_name; ++ socklen_t msg_namelen; ++ struct iovec *msg_iov; ++ int msg_iovlen, __pad1; ++ void *msg_control; ++ socklen_t msg_controllen, __pad2; ++ int msg_flags; ++}; ++ ++struct cmsghdr ++{ ++ socklen_t cmsg_len; ++ int __pad1; ++ int cmsg_level; ++ int cmsg_type; ++}; +diff -Nur musl-0.9.15/arch/x32/bits/statfs.h musl-git/arch/x32/bits/statfs.h +--- musl-0.9.15/arch/x32/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/statfs.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++struct statfs { ++ unsigned long f_type, f_bsize; ++ fsblkcnt_t f_blocks, f_bfree, f_bavail; ++ fsfilcnt_t f_files, f_ffree; ++ fsid_t f_fsid; ++ unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; ++}; +diff -Nur musl-0.9.15/arch/x32/bits/stat.h musl-git/arch/x32/bits/stat.h +--- musl-0.9.15/arch/x32/bits/stat.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/stat.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++/* copied from kernel definition, but with padding replaced ++ * by the corresponding correctly-sized userspace types. */ ++ ++struct stat { ++ dev_t st_dev; ++ ino_t st_ino; ++ nlink_t st_nlink; ++ ++ mode_t st_mode; ++ uid_t st_uid; ++ gid_t st_gid; ++ unsigned int __pad0; ++ dev_t st_rdev; ++ off_t st_size; ++ blksize_t st_blksize; ++ blkcnt_t st_blocks; ++ ++ struct timespec st_atim; ++ struct timespec st_mtim; ++ struct timespec st_ctim; ++ long long __unused[3]; ++}; +diff -Nur musl-0.9.15/arch/x32/bits/stdarg.h musl-git/arch/x32/bits/stdarg.h +--- musl-0.9.15/arch/x32/bits/stdarg.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/stdarg.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,4 @@ ++#define va_start(v,l) __builtin_va_start(v,l) ++#define va_end(v) __builtin_va_end(v) ++#define va_arg(v,l) __builtin_va_arg(v,l) ++#define va_copy(d,s) __builtin_va_copy(d,s) +diff -Nur musl-0.9.15/arch/x32/bits/stdint.h musl-git/arch/x32/bits/stdint.h +--- musl-0.9.15/arch/x32/bits/stdint.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/stdint.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,20 @@ ++typedef int32_t int_fast16_t; ++typedef int32_t int_fast32_t; ++typedef uint32_t uint_fast16_t; ++typedef uint32_t uint_fast32_t; ++ ++#define INT_FAST16_MIN INT32_MIN ++#define INT_FAST32_MIN INT32_MIN ++ ++#define INT_FAST16_MAX INT32_MAX ++#define INT_FAST32_MAX INT32_MAX ++ ++#define UINT_FAST16_MAX UINT32_MAX ++#define UINT_FAST32_MAX UINT32_MAX ++ ++#define INTPTR_MIN INT32_MIN ++#define INTPTR_MAX INT32_MAX ++#define UINTPTR_MAX UINT32_MAX ++#define PTRDIFF_MIN INT32_MIN ++#define PTRDIFF_MAX INT32_MAX ++#define SIZE_MAX UINT32_MAX +diff -Nur musl-0.9.15/arch/x32/bits/syscall.h musl-git/arch/x32/bits/syscall.h +--- musl-0.9.15/arch/x32/bits/syscall.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/syscall.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,634 @@ ++#define __X32_SYSCALL_BIT 0x40000000 ++#define __NR_read (__X32_SYSCALL_BIT + 0) ++#define __NR_write (__X32_SYSCALL_BIT + 1) ++#define __NR_open (__X32_SYSCALL_BIT + 2) ++#define __NR_close (__X32_SYSCALL_BIT + 3) ++#define __NR_stat (__X32_SYSCALL_BIT + 4) ++#define __NR_fstat (__X32_SYSCALL_BIT + 5) ++#define __NR_lstat (__X32_SYSCALL_BIT + 6) ++#define __NR_poll (__X32_SYSCALL_BIT + 7) ++#define __NR_lseek (__X32_SYSCALL_BIT + 8) ++#define __NR_mmap (__X32_SYSCALL_BIT + 9) ++#define __NR_mprotect (__X32_SYSCALL_BIT + 10) ++#define __NR_munmap (__X32_SYSCALL_BIT + 11) ++#define __NR_brk (__X32_SYSCALL_BIT + 12) ++#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14) ++#define __NR_pread64 (__X32_SYSCALL_BIT + 17) ++#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18) ++#define __NR_access (__X32_SYSCALL_BIT + 21) ++#define __NR_pipe (__X32_SYSCALL_BIT + 22) ++#define __NR_select (__X32_SYSCALL_BIT + 23) ++#define __NR_sched_yield (__X32_SYSCALL_BIT + 24) ++#define __NR_mremap (__X32_SYSCALL_BIT + 25) ++#define __NR_msync (__X32_SYSCALL_BIT + 26) ++#define __NR_mincore (__X32_SYSCALL_BIT + 27) ++#define __NR_madvise (__X32_SYSCALL_BIT + 28) ++#define __NR_shmget (__X32_SYSCALL_BIT + 29) ++#define __NR_shmat (__X32_SYSCALL_BIT + 30) ++#define __NR_shmctl (__X32_SYSCALL_BIT + 31) ++#define __NR_dup (__X32_SYSCALL_BIT + 32) ++#define __NR_dup2 (__X32_SYSCALL_BIT + 33) ++#define __NR_pause (__X32_SYSCALL_BIT + 34) ++#define __NR_nanosleep (__X32_SYSCALL_BIT + 35) ++#define __NR_getitimer (__X32_SYSCALL_BIT + 36) ++#define __NR_alarm (__X32_SYSCALL_BIT + 37) ++#define __NR_setitimer (__X32_SYSCALL_BIT + 38) ++#define __NR_getpid (__X32_SYSCALL_BIT + 39) ++#define __NR_sendfile (__X32_SYSCALL_BIT + 40) ++#define __NR_socket (__X32_SYSCALL_BIT + 41) ++#define __NR_connect (__X32_SYSCALL_BIT + 42) ++#define __NR_accept (__X32_SYSCALL_BIT + 43) ++#define __NR_sendto (__X32_SYSCALL_BIT + 44) ++#define __NR_shutdown (__X32_SYSCALL_BIT + 48) ++#define __NR_bind (__X32_SYSCALL_BIT + 49) ++#define __NR_listen (__X32_SYSCALL_BIT + 50) ++#define __NR_getsockname (__X32_SYSCALL_BIT + 51) ++#define __NR_getpeername (__X32_SYSCALL_BIT + 52) ++#define __NR_socketpair (__X32_SYSCALL_BIT + 53) ++#define __NR_clone (__X32_SYSCALL_BIT + 56) ++#define __NR_fork (__X32_SYSCALL_BIT + 57) ++#define __NR_vfork (__X32_SYSCALL_BIT + 58) ++#define __NR_exit (__X32_SYSCALL_BIT + 60) ++#define __NR_wait4 (__X32_SYSCALL_BIT + 61) ++#define __NR_kill (__X32_SYSCALL_BIT + 62) ++#define __NR_uname (__X32_SYSCALL_BIT + 63) ++#define __NR_semget (__X32_SYSCALL_BIT + 64) ++#define __NR_semop (__X32_SYSCALL_BIT + 65) ++#define __NR_semctl (__X32_SYSCALL_BIT + 66) ++#define __NR_shmdt (__X32_SYSCALL_BIT + 67) ++#define __NR_msgget (__X32_SYSCALL_BIT + 68) ++#define __NR_msgsnd (__X32_SYSCALL_BIT + 69) ++#define __NR_msgrcv (__X32_SYSCALL_BIT + 70) ++#define __NR_msgctl (__X32_SYSCALL_BIT + 71) ++#define __NR_fcntl (__X32_SYSCALL_BIT + 72) ++#define __NR_flock (__X32_SYSCALL_BIT + 73) ++#define __NR_fsync (__X32_SYSCALL_BIT + 74) ++#define __NR_fdatasync (__X32_SYSCALL_BIT + 75) ++#define __NR_truncate (__X32_SYSCALL_BIT + 76) ++#define __NR_ftruncate (__X32_SYSCALL_BIT + 77) ++#define __NR_getdents (__X32_SYSCALL_BIT + 78) ++#define __NR_getcwd (__X32_SYSCALL_BIT + 79) ++#define __NR_chdir (__X32_SYSCALL_BIT + 80) ++#define __NR_fchdir (__X32_SYSCALL_BIT + 81) ++#define __NR_rename (__X32_SYSCALL_BIT + 82) ++#define __NR_mkdir (__X32_SYSCALL_BIT + 83) ++#define __NR_rmdir (__X32_SYSCALL_BIT + 84) ++#define __NR_creat (__X32_SYSCALL_BIT + 85) ++#define __NR_link (__X32_SYSCALL_BIT + 86) ++#define __NR_unlink (__X32_SYSCALL_BIT + 87) ++#define __NR_symlink (__X32_SYSCALL_BIT + 88) ++#define __NR_readlink (__X32_SYSCALL_BIT + 89) ++#define __NR_chmod (__X32_SYSCALL_BIT + 90) ++#define __NR_fchmod (__X32_SYSCALL_BIT + 91) ++#define __NR_chown (__X32_SYSCALL_BIT + 92) ++#define __NR_fchown (__X32_SYSCALL_BIT + 93) ++#define __NR_lchown (__X32_SYSCALL_BIT + 94) ++#define __NR_umask (__X32_SYSCALL_BIT + 95) ++#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96) ++#define __NR_getrlimit (__X32_SYSCALL_BIT + 97) ++#define __NR_getrusage (__X32_SYSCALL_BIT + 98) ++#define __NR_sysinfo (__X32_SYSCALL_BIT + 99) ++#define __NR_times (__X32_SYSCALL_BIT + 100) ++#define __NR_getuid (__X32_SYSCALL_BIT + 102) ++#define __NR_syslog (__X32_SYSCALL_BIT + 103) ++#define __NR_getgid (__X32_SYSCALL_BIT + 104) ++#define __NR_setuid (__X32_SYSCALL_BIT + 105) ++#define __NR_setgid (__X32_SYSCALL_BIT + 106) ++#define __NR_geteuid (__X32_SYSCALL_BIT + 107) ++#define __NR_getegid (__X32_SYSCALL_BIT + 108) ++#define __NR_setpgid (__X32_SYSCALL_BIT + 109) ++#define __NR_getppid (__X32_SYSCALL_BIT + 110) ++#define __NR_getpgrp (__X32_SYSCALL_BIT + 111) ++#define __NR_setsid (__X32_SYSCALL_BIT + 112) ++#define __NR_setreuid (__X32_SYSCALL_BIT + 113) ++#define __NR_setregid (__X32_SYSCALL_BIT + 114) ++#define __NR_getgroups (__X32_SYSCALL_BIT + 115) ++#define __NR_setgroups (__X32_SYSCALL_BIT + 116) ++#define __NR_setresuid (__X32_SYSCALL_BIT + 117) ++#define __NR_getresuid (__X32_SYSCALL_BIT + 118) ++#define __NR_setresgid (__X32_SYSCALL_BIT + 119) ++#define __NR_getresgid (__X32_SYSCALL_BIT + 120) ++#define __NR_getpgid (__X32_SYSCALL_BIT + 121) ++#define __NR_setfsuid (__X32_SYSCALL_BIT + 122) ++#define __NR_setfsgid (__X32_SYSCALL_BIT + 123) ++#define __NR_getsid (__X32_SYSCALL_BIT + 124) ++#define __NR_capget (__X32_SYSCALL_BIT + 125) ++#define __NR_capset (__X32_SYSCALL_BIT + 126) ++#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130) ++#define __NR_utime (__X32_SYSCALL_BIT + 132) ++#define __NR_mknod (__X32_SYSCALL_BIT + 133) ++#define __NR_personality (__X32_SYSCALL_BIT + 135) ++#define __NR_ustat (__X32_SYSCALL_BIT + 136) ++#define __NR_statfs (__X32_SYSCALL_BIT + 137) ++#define __NR_fstatfs (__X32_SYSCALL_BIT + 138) ++#define __NR_sysfs (__X32_SYSCALL_BIT + 139) ++#define __NR_getpriority (__X32_SYSCALL_BIT + 140) ++#define __NR_setpriority (__X32_SYSCALL_BIT + 141) ++#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142) ++#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143) ++#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144) ++#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145) ++#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146) ++#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147) ++#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148) ++#define __NR_mlock (__X32_SYSCALL_BIT + 149) ++#define __NR_munlock (__X32_SYSCALL_BIT + 150) ++#define __NR_mlockall (__X32_SYSCALL_BIT + 151) ++#define __NR_munlockall (__X32_SYSCALL_BIT + 152) ++#define __NR_vhangup (__X32_SYSCALL_BIT + 153) ++#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154) ++#define __NR_pivot_root (__X32_SYSCALL_BIT + 155) ++#define __NR_prctl (__X32_SYSCALL_BIT + 157) ++#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158) ++#define __NR_adjtimex (__X32_SYSCALL_BIT + 159) ++#define __NR_setrlimit (__X32_SYSCALL_BIT + 160) ++#define __NR_chroot (__X32_SYSCALL_BIT + 161) ++#define __NR_sync (__X32_SYSCALL_BIT + 162) ++#define __NR_acct (__X32_SYSCALL_BIT + 163) ++#define __NR_settimeofday (__X32_SYSCALL_BIT + 164) ++#define __NR_mount (__X32_SYSCALL_BIT + 165) ++#define __NR_umount2 (__X32_SYSCALL_BIT + 166) ++#define __NR_swapon (__X32_SYSCALL_BIT + 167) ++#define __NR_swapoff (__X32_SYSCALL_BIT + 168) ++#define __NR_reboot (__X32_SYSCALL_BIT + 169) ++#define __NR_sethostname (__X32_SYSCALL_BIT + 170) ++#define __NR_setdomainname (__X32_SYSCALL_BIT + 171) ++#define __NR_iopl (__X32_SYSCALL_BIT + 172) ++#define __NR_ioperm (__X32_SYSCALL_BIT + 173) ++#define __NR_init_module (__X32_SYSCALL_BIT + 175) ++#define __NR_delete_module (__X32_SYSCALL_BIT + 176) ++#define __NR_quotactl (__X32_SYSCALL_BIT + 179) ++#define __NR_getpmsg (__X32_SYSCALL_BIT + 181) ++#define __NR_putpmsg (__X32_SYSCALL_BIT + 182) ++#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183) ++#define __NR_tuxcall (__X32_SYSCALL_BIT + 184) ++#define __NR_security (__X32_SYSCALL_BIT + 185) ++#define __NR_gettid (__X32_SYSCALL_BIT + 186) ++#define __NR_readahead (__X32_SYSCALL_BIT + 187) ++#define __NR_setxattr (__X32_SYSCALL_BIT + 188) ++#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189) ++#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190) ++#define __NR_getxattr (__X32_SYSCALL_BIT + 191) ++#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192) ++#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193) ++#define __NR_listxattr (__X32_SYSCALL_BIT + 194) ++#define __NR_llistxattr (__X32_SYSCALL_BIT + 195) ++#define __NR_flistxattr (__X32_SYSCALL_BIT + 196) ++#define __NR_removexattr (__X32_SYSCALL_BIT + 197) ++#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198) ++#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199) ++#define __NR_tkill (__X32_SYSCALL_BIT + 200) ++#define __NR_time (__X32_SYSCALL_BIT + 201) ++#define __NR_futex (__X32_SYSCALL_BIT + 202) ++#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203) ++#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204) ++#define __NR_io_setup (__X32_SYSCALL_BIT + 206) ++#define __NR_io_destroy (__X32_SYSCALL_BIT + 207) ++#define __NR_io_getevents (__X32_SYSCALL_BIT + 208) ++#define __NR_io_submit (__X32_SYSCALL_BIT + 209) ++#define __NR_io_cancel (__X32_SYSCALL_BIT + 210) ++#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212) ++#define __NR_epoll_create (__X32_SYSCALL_BIT + 213) ++#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216) ++#define __NR_getdents64 (__X32_SYSCALL_BIT + 217) ++#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218) ++#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219) ++#define __NR_semtimedop (__X32_SYSCALL_BIT + 220) ++#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221) ++#define __NR_timer_settime (__X32_SYSCALL_BIT + 223) ++#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224) ++#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225) ++#define __NR_timer_delete (__X32_SYSCALL_BIT + 226) ++#define __NR_clock_settime (__X32_SYSCALL_BIT + 227) ++#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228) ++#define __NR_clock_getres (__X32_SYSCALL_BIT + 229) ++#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230) ++#define __NR_exit_group (__X32_SYSCALL_BIT + 231) ++#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232) ++#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233) ++#define __NR_tgkill (__X32_SYSCALL_BIT + 234) ++#define __NR_utimes (__X32_SYSCALL_BIT + 235) ++#define __NR_mbind (__X32_SYSCALL_BIT + 237) ++#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238) ++#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239) ++#define __NR_mq_open (__X32_SYSCALL_BIT + 240) ++#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241) ++#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242) ++#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243) ++#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245) ++#define __NR_add_key (__X32_SYSCALL_BIT + 248) ++#define __NR_request_key (__X32_SYSCALL_BIT + 249) ++#define __NR_keyctl (__X32_SYSCALL_BIT + 250) ++#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251) ++#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252) ++#define __NR_inotify_init (__X32_SYSCALL_BIT + 253) ++#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254) ++#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255) ++#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256) ++#define __NR_openat (__X32_SYSCALL_BIT + 257) ++#define __NR_mkdirat (__X32_SYSCALL_BIT + 258) ++#define __NR_mknodat (__X32_SYSCALL_BIT + 259) ++#define __NR_fchownat (__X32_SYSCALL_BIT + 260) ++#define __NR_futimesat (__X32_SYSCALL_BIT + 261) ++#define __NR_newfstatat (__X32_SYSCALL_BIT + 262) ++#define __NR_unlinkat (__X32_SYSCALL_BIT + 263) ++#define __NR_renameat (__X32_SYSCALL_BIT + 264) ++#define __NR_linkat (__X32_SYSCALL_BIT + 265) ++#define __NR_symlinkat (__X32_SYSCALL_BIT + 266) ++#define __NR_readlinkat (__X32_SYSCALL_BIT + 267) ++#define __NR_fchmodat (__X32_SYSCALL_BIT + 268) ++#define __NR_faccessat (__X32_SYSCALL_BIT + 269) ++#define __NR_pselect6 (__X32_SYSCALL_BIT + 270) ++#define __NR_ppoll (__X32_SYSCALL_BIT + 271) ++#define __NR_unshare (__X32_SYSCALL_BIT + 272) ++#define __NR_splice (__X32_SYSCALL_BIT + 275) ++#define __NR_tee (__X32_SYSCALL_BIT + 276) ++#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277) ++#define __NR_utimensat (__X32_SYSCALL_BIT + 280) ++#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281) ++#define __NR_signalfd (__X32_SYSCALL_BIT + 282) ++#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283) ++#define __NR_eventfd (__X32_SYSCALL_BIT + 284) ++#define __NR_fallocate (__X32_SYSCALL_BIT + 285) ++#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286) ++#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287) ++#define __NR_accept4 (__X32_SYSCALL_BIT + 288) ++#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289) ++#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290) ++#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291) ++#define __NR_dup3 (__X32_SYSCALL_BIT + 292) ++#define __NR_pipe2 (__X32_SYSCALL_BIT + 293) ++#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294) ++#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298) ++#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300) ++#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301) ++#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302) ++#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303) ++#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304) ++#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305) ++#define __NR_syncfs (__X32_SYSCALL_BIT + 306) ++#define __NR_setns (__X32_SYSCALL_BIT + 308) ++#define __NR_getcpu (__X32_SYSCALL_BIT + 309) ++#define __NR_kcmp (__X32_SYSCALL_BIT + 312) ++#define __NR_finit_module (__X32_SYSCALL_BIT + 313) ++#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) ++#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) ++#define __NR_ioctl (__X32_SYSCALL_BIT + 514) ++#define __NR_readv (__X32_SYSCALL_BIT + 515) ++#define __NR_writev (__X32_SYSCALL_BIT + 516) ++#define __NR_recvfrom (__X32_SYSCALL_BIT + 517) ++#define __NR_sendmsg (__X32_SYSCALL_BIT + 518) ++#define __NR_recvmsg (__X32_SYSCALL_BIT + 519) ++#define __NR_execve (__X32_SYSCALL_BIT + 520) ++#define __NR_ptrace (__X32_SYSCALL_BIT + 521) ++#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522) ++#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523) ++#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524) ++#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525) ++#define __NR_timer_create (__X32_SYSCALL_BIT + 526) ++#define __NR_mq_notify (__X32_SYSCALL_BIT + 527) ++#define __NR_kexec_load (__X32_SYSCALL_BIT + 528) ++#define __NR_waitid (__X32_SYSCALL_BIT + 529) ++#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530) ++#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531) ++#define __NR_vmsplice (__X32_SYSCALL_BIT + 532) ++#define __NR_move_pages (__X32_SYSCALL_BIT + 533) ++#define __NR_preadv (__X32_SYSCALL_BIT + 534) ++#define __NR_pwritev (__X32_SYSCALL_BIT + 535) ++#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536) ++#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537) ++#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538) ++#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539) ++#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540) ++#define __NR_setsockopt (__X32_SYSCALL_BIT + 541) ++#define __NR_getsockopt (__X32_SYSCALL_BIT + 542) ++ ++#undef __NR_fstatat ++#undef __NR_pread ++#undef __NR_pwrite ++#undef __NR_getdents ++#define __NR_fstatat __NR_newfstatat ++#define __NR_pread __NR_pread64 ++#define __NR_pwrite __NR_pwrite64 ++#define __NR_getdents __NR_getdents64 ++#define __NR_fadvise __NR_fadvise64 ++ ++ ++ ++/* Repeat with SYS_ prefix */ ++ ++ ++ ++#define SYS_read __NR_read ++#define SYS_write __NR_write ++#define SYS_open __NR_open ++#define SYS_close __NR_close ++#define SYS_stat __NR_stat ++#define SYS_fstat __NR_fstat ++#define SYS_lstat __NR_lstat ++#define SYS_poll __NR_poll ++#define SYS_lseek __NR_lseek ++#define SYS_mmap __NR_mmap ++#define SYS_mprotect __NR_mprotect ++#define SYS_munmap __NR_munmap ++#define SYS_brk __NR_brk ++#define SYS_rt_sigprocmask __NR_rt_sigprocmask ++#define SYS_pread64 __NR_pread64 ++#define SYS_pwrite64 __NR_pwrite64 ++#define SYS_access __NR_access ++#define SYS_pipe __NR_pipe ++#define SYS_select __NR_select ++#define SYS_sched_yield __NR_sched_yield ++#define SYS_mremap __NR_mremap ++#define SYS_msync __NR_msync ++#define SYS_mincore __NR_mincore ++#define SYS_madvise __NR_madvise ++#define SYS_shmget __NR_shmget ++#define SYS_shmat __NR_shmat ++#define SYS_shmctl __NR_shmctl ++#define SYS_dup __NR_dup ++#define SYS_dup2 __NR_dup2 ++#define SYS_pause __NR_pause ++#define SYS_nanosleep __NR_nanosleep ++#define SYS_getitimer __NR_getitimer ++#define SYS_alarm __NR_alarm ++#define SYS_setitimer __NR_setitimer ++#define SYS_getpid __NR_getpid ++#define SYS_sendfile __NR_sendfile ++#define SYS_socket __NR_socket ++#define SYS_connect __NR_connect ++#define SYS_accept __NR_accept ++#define SYS_sendto __NR_sendto ++#define SYS_shutdown __NR_shutdown ++#define SYS_bind __NR_bind ++#define SYS_listen __NR_listen ++#define SYS_getsockname __NR_getsockname ++#define SYS_getpeername __NR_getpeername ++#define SYS_socketpair __NR_socketpair ++#define SYS_clone __NR_clone ++#define SYS_fork __NR_fork ++#define SYS_vfork __NR_vfork ++#define SYS_exit __NR_exit ++#define SYS_wait4 __NR_wait4 ++#define SYS_kill __NR_kill ++#define SYS_uname __NR_uname ++#define SYS_semget __NR_semget ++#define SYS_semop __NR_semop ++#define SYS_semctl __NR_semctl ++#define SYS_shmdt __NR_shmdt ++#define SYS_msgget __NR_msgget ++#define SYS_msgsnd __NR_msgsnd ++#define SYS_msgrcv __NR_msgrcv ++#define SYS_msgctl __NR_msgctl ++#define SYS_fcntl __NR_fcntl ++#define SYS_flock __NR_flock ++#define SYS_fsync __NR_fsync ++#define SYS_fdatasync __NR_fdatasync ++#define SYS_truncate __NR_truncate ++#define SYS_ftruncate __NR_ftruncate ++#define SYS_getdents __NR_getdents ++#define SYS_getcwd __NR_getcwd ++#define SYS_chdir __NR_chdir ++#define SYS_fchdir __NR_fchdir ++#define SYS_rename __NR_rename ++#define SYS_mkdir __NR_mkdir ++#define SYS_rmdir __NR_rmdir ++#define SYS_creat __NR_creat ++#define SYS_link __NR_link ++#define SYS_unlink __NR_unlink ++#define SYS_symlink __NR_symlink ++#define SYS_readlink __NR_readlink ++#define SYS_chmod __NR_chmod ++#define SYS_fchmod __NR_fchmod ++#define SYS_chown __NR_chown ++#define SYS_fchown __NR_fchown ++#define SYS_lchown __NR_lchown ++#define SYS_umask __NR_umask ++#define SYS_gettimeofday __NR_gettimeofday ++#define SYS_getrlimit __NR_getrlimit ++#define SYS_getrusage __NR_getrusage ++#define SYS_sysinfo __NR_sysinfo ++#define SYS_times __NR_times ++#define SYS_getuid __NR_getuid ++#define SYS_syslog __NR_syslog ++#define SYS_getgid __NR_getgid ++#define SYS_setuid __NR_setuid ++#define SYS_setgid __NR_setgid ++#define SYS_geteuid __NR_geteuid ++#define SYS_getegid __NR_getegid ++#define SYS_setpgid __NR_setpgid ++#define SYS_getppid __NR_getppid ++#define SYS_getpgrp __NR_getpgrp ++#define SYS_setsid __NR_setsid ++#define SYS_setreuid __NR_setreuid ++#define SYS_setregid __NR_setregid ++#define SYS_getgroups __NR_getgroups ++#define SYS_setgroups __NR_setgroups ++#define SYS_setresuid __NR_setresuid ++#define SYS_getresuid __NR_getresuid ++#define SYS_setresgid __NR_setresgid ++#define SYS_getresgid __NR_getresgid ++#define SYS_getpgid __NR_getpgid ++#define SYS_setfsuid __NR_setfsuid ++#define SYS_setfsgid __NR_setfsgid ++#define SYS_getsid __NR_getsid ++#define SYS_capget __NR_capget ++#define SYS_capset __NR_capset ++#define SYS_rt_sigsuspend __NR_rt_sigsuspend ++#define SYS_utime __NR_utime ++#define SYS_mknod __NR_mknod ++#define SYS_personality __NR_personality ++#define SYS_ustat __NR_ustat ++#define SYS_statfs __NR_statfs ++#define SYS_fstatfs __NR_fstatfs ++#define SYS_sysfs __NR_sysfs ++#define SYS_getpriority __NR_getpriority ++#define SYS_setpriority __NR_setpriority ++#define SYS_sched_setparam __NR_sched_setparam ++#define SYS_sched_getparam __NR_sched_getparam ++#define SYS_sched_setscheduler __NR_sched_setscheduler ++#define SYS_sched_getscheduler __NR_sched_getscheduler ++#define SYS_sched_get_priority_max __NR_sched_get_priority_max ++#define SYS_sched_get_priority_min __NR_sched_get_priority_min ++#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval ++#define SYS_mlock __NR_mlock ++#define SYS_munlock __NR_munlock ++#define SYS_mlockall __NR_mlockall ++#define SYS_munlockall __NR_munlockall ++#define SYS_vhangup __NR_vhangup ++#define SYS_modify_ldt __NR_modify_ldt ++#define SYS_pivot_root __NR_pivot_root ++#define SYS_prctl __NR_prctl ++#define SYS_arch_prctl __NR_arch_prctl ++#define SYS_adjtimex __NR_adjtimex ++#define SYS_setrlimit __NR_setrlimit ++#define SYS_chroot __NR_chroot ++#define SYS_sync __NR_sync ++#define SYS_acct __NR_acct ++#define SYS_settimeofday __NR_settimeofday ++#define SYS_mount __NR_mount ++#define SYS_umount2 __NR_umount2 ++#define SYS_swapon __NR_swapon ++#define SYS_swapoff __NR_swapoff ++#define SYS_reboot __NR_reboot ++#define SYS_sethostname __NR_sethostname ++#define SYS_setdomainname __NR_setdomainname ++#define SYS_iopl __NR_iopl ++#define SYS_ioperm __NR_ioperm ++#define SYS_init_module __NR_init_module ++#define SYS_delete_module __NR_delete_module ++#define SYS_quotactl __NR_quotactl ++#define SYS_getpmsg __NR_getpmsg ++#define SYS_putpmsg __NR_putpmsg ++#define SYS_afs_syscall __NR_afs_syscall ++#define SYS_tuxcall __NR_tuxcall ++#define SYS_security __NR_security ++#define SYS_gettid __NR_gettid ++#define SYS_readahead __NR_readahead ++#define SYS_setxattr __NR_setxattr ++#define SYS_lsetxattr __NR_lsetxattr ++#define SYS_fsetxattr __NR_fsetxattr ++#define SYS_getxattr __NR_getxattr ++#define SYS_lgetxattr __NR_lgetxattr ++#define SYS_fgetxattr __NR_fgetxattr ++#define SYS_listxattr __NR_listxattr ++#define SYS_llistxattr __NR_llistxattr ++#define SYS_flistxattr __NR_flistxattr ++#define SYS_removexattr __NR_removexattr ++#define SYS_lremovexattr __NR_lremovexattr ++#define SYS_fremovexattr __NR_fremovexattr ++#define SYS_tkill __NR_tkill ++#define SYS_time __NR_time ++#define SYS_futex __NR_futex ++#define SYS_sched_setaffinity __NR_sched_setaffinity ++#define SYS_sched_getaffinity __NR_sched_getaffinity ++#define SYS_io_setup __NR_io_setup ++#define SYS_io_destroy __NR_io_destroy ++#define SYS_io_getevents __NR_io_getevents ++#define SYS_io_submit __NR_io_submit ++#define SYS_io_cancel __NR_io_cancel ++#define SYS_lookup_dcookie __NR_lookup_dcookie ++#define SYS_epoll_create __NR_epoll_create ++#define SYS_remap_file_pages __NR_remap_file_pages ++#define SYS_getdents64 __NR_getdents64 ++#define SYS_set_tid_address __NR_set_tid_address ++#define SYS_restart_syscall __NR_restart_syscall ++#define SYS_semtimedop __NR_semtimedop ++#define SYS_fadvise64 __NR_fadvise64 ++#define SYS_timer_settime __NR_timer_settime ++#define SYS_timer_gettime __NR_timer_gettime ++#define SYS_timer_getoverrun __NR_timer_getoverrun ++#define SYS_timer_delete __NR_timer_delete ++#define SYS_clock_settime __NR_clock_settime ++#define SYS_clock_gettime __NR_clock_gettime ++#define SYS_clock_getres __NR_clock_getres ++#define SYS_clock_nanosleep __NR_clock_nanosleep ++#define SYS_exit_group __NR_exit_group ++#define SYS_epoll_wait __NR_epoll_wait ++#define SYS_epoll_ctl __NR_epoll_ctl ++#define SYS_tgkill __NR_tgkill ++#define SYS_utimes __NR_utimes ++#define SYS_mbind __NR_mbind ++#define SYS_set_mempolicy __NR_set_mempolicy ++#define SYS_get_mempolicy __NR_get_mempolicy ++#define SYS_mq_open __NR_mq_open ++#define SYS_mq_unlink __NR_mq_unlink ++#define SYS_mq_timedsend __NR_mq_timedsend ++#define SYS_mq_timedreceive __NR_mq_timedreceive ++#define SYS_mq_getsetattr __NR_mq_getsetattr ++#define SYS_add_key __NR_add_key ++#define SYS_request_key __NR_request_key ++#define SYS_keyctl __NR_keyctl ++#define SYS_ioprio_set __NR_ioprio_set ++#define SYS_ioprio_get __NR_ioprio_get ++#define SYS_inotify_init __NR_inotify_init ++#define SYS_inotify_add_watch __NR_inotify_add_watch ++#define SYS_inotify_rm_watch __NR_inotify_rm_watch ++#define SYS_migrate_pages __NR_migrate_pages ++#define SYS_openat __NR_openat ++#define SYS_mkdirat __NR_mkdirat ++#define SYS_mknodat __NR_mknodat ++#define SYS_fchownat __NR_fchownat ++#define SYS_futimesat __NR_futimesat ++#define SYS_newfstatat __NR_newfstatat ++#define SYS_unlinkat __NR_unlinkat ++#define SYS_renameat __NR_renameat ++#define SYS_linkat __NR_linkat ++#define SYS_symlinkat __NR_symlinkat ++#define SYS_readlinkat __NR_readlinkat ++#define SYS_fchmodat __NR_fchmodat ++#define SYS_faccessat __NR_faccessat ++#define SYS_pselect6 __NR_pselect6 ++#define SYS_ppoll __NR_ppoll ++#define SYS_unshare __NR_unshare ++#define SYS_splice __NR_splice ++#define SYS_tee __NR_tee ++#define SYS_sync_file_range __NR_sync_file_range ++#define SYS_utimensat __NR_utimensat ++#define SYS_epoll_pwait __NR_epoll_pwait ++#define SYS_signalfd __NR_signalfd ++#define SYS_timerfd_create __NR_timerfd_create ++#define SYS_eventfd __NR_eventfd ++#define SYS_fallocate __NR_fallocate ++#define SYS_timerfd_settime __NR_timerfd_settime ++#define SYS_timerfd_gettime __NR_timerfd_gettime ++#define SYS_accept4 __NR_accept4 ++#define SYS_signalfd4 __NR_signalfd4 ++#define SYS_eventfd2 __NR_eventfd2 ++#define SYS_epoll_create1 __NR_epoll_create1 ++#define SYS_dup3 __NR_dup3 ++#define SYS_pipe2 __NR_pipe2 ++#define SYS_inotify_init1 __NR_inotify_init1 ++#define SYS_perf_event_open __NR_perf_event_open ++#define SYS_fanotify_init __NR_fanotify_init ++#define SYS_fanotify_mark __NR_fanotify_mark ++#define SYS_prlimit64 __NR_prlimit64 ++#define SYS_name_to_handle_at __NR_name_to_handle_at ++#define SYS_open_by_handle_at __NR_open_by_handle_at ++#define SYS_clock_adjtime __NR_clock_adjtime ++#define SYS_syncfs __NR_syncfs ++#define SYS_setns __NR_setns ++#define SYS_getcpu __NR_getcpu ++#define SYS_kcmp __NR_kcmp ++#define SYS_finit_module __NR_finit_module ++#define SYS_rt_sigaction __NR_rt_sigaction ++#define SYS_rt_sigreturn __NR_rt_sigreturn ++#define SYS_ioctl __NR_ioctl ++#define SYS_readv __NR_readv ++#define SYS_writev __NR_writev ++#define SYS_recvfrom __NR_recvfrom ++#define SYS_sendmsg __NR_sendmsg ++#define SYS_recvmsg __NR_recvmsg ++#define SYS_execve __NR_execve ++#define SYS_ptrace __NR_ptrace ++#define SYS_rt_sigpending __NR_rt_sigpending ++#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait ++#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo ++#define SYS_sigaltstack __NR_sigaltstack ++#define SYS_timer_create __NR_timer_create ++#define SYS_mq_notify __NR_mq_notify ++#define SYS_kexec_load __NR_kexec_load ++#define SYS_waitid __NR_waitid ++#define SYS_set_robust_list __NR_set_robust_list ++#define SYS_get_robust_list __NR_get_robust_list ++#define SYS_vmsplice __NR_vmsplice ++#define SYS_move_pages __NR_move_pages ++#define SYS_preadv __NR_preadv ++#define SYS_pwritev __NR_pwritev ++#define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo ++#define SYS_recvmmsg __NR_recvmmsg ++#define SYS_sendmmsg __NR_sendmmsg ++#define SYS_process_vm_readv __NR_process_vm_readv ++#define SYS_process_vm_writev __NR_process_vm_writev ++#define SYS_setsockopt __NR_setsockopt ++#define SYS_getsockopt __NR_getsockopt ++ ++#undef SYS_fstatat ++#undef SYS_pread ++#undef SYS_pwrite ++#undef SYS_getdents ++#define SYS_fstatat SYS_newfstatat ++#define SYS_pread SYS_pread64 ++#define SYS_pwrite SYS_pwrite64 ++#define SYS_getdents SYS_getdents64 ++#define SYS_fadvise SYS_fadvise64 +diff -Nur musl-0.9.15/arch/x32/bits/termios.h musl-git/arch/x32/bits/termios.h +--- musl-0.9.15/arch/x32/bits/termios.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,160 @@ ++struct termios ++{ ++ tcflag_t c_iflag; ++ tcflag_t c_oflag; ++ tcflag_t c_cflag; ++ tcflag_t c_lflag; ++ cc_t c_line; ++ cc_t c_cc[NCCS]; ++ speed_t __c_ispeed; ++ speed_t __c_ospeed; ++}; ++ ++#define VINTR 0 ++#define VQUIT 1 ++#define VERASE 2 ++#define VKILL 3 ++#define VEOF 4 ++#define VTIME 5 ++#define VMIN 6 ++#define VSWTC 7 ++#define VSTART 8 ++#define VSTOP 9 ++#define VSUSP 10 ++#define VEOL 11 ++#define VREPRINT 12 ++#define VDISCARD 13 ++#define VWERASE 14 ++#define VLNEXT 15 ++#define VEOL2 16 ++ ++#define IGNBRK 0000001 ++#define BRKINT 0000002 ++#define IGNPAR 0000004 ++#define PARMRK 0000010 ++#define INPCK 0000020 ++#define ISTRIP 0000040 ++#define INLCR 0000100 ++#define IGNCR 0000200 ++#define ICRNL 0000400 ++#define IUCLC 0001000 ++#define IXON 0002000 ++#define IXANY 0004000 ++#define IXOFF 0010000 ++#define IMAXBEL 0020000 ++#define IUTF8 0040000 ++ ++#define OPOST 0000001 ++#define OLCUC 0000002 ++#define ONLCR 0000004 ++#define OCRNL 0000010 ++#define ONOCR 0000020 ++#define ONLRET 0000040 ++#define OFILL 0000100 ++#define OFDEL 0000200 ++#define NLDLY 0000400 ++#define NL0 0000000 ++#define NL1 0000400 ++#define CRDLY 0003000 ++#define CR0 0000000 ++#define CR1 0001000 ++#define CR2 0002000 ++#define CR3 0003000 ++#define TABDLY 0014000 ++#define TAB0 0000000 ++#define TAB1 0004000 ++#define TAB2 0010000 ++#define TAB3 0014000 ++#define BSDLY 0020000 ++#define BS0 0000000 ++#define BS1 0020000 ++#define FFDLY 0100000 ++#define FF0 0000000 ++#define FF1 0100000 ++ ++#define VTDLY 0040000 ++#define VT0 0000000 ++#define VT1 0040000 ++ ++#define B0 0000000 ++#define B50 0000001 ++#define B75 0000002 ++#define B110 0000003 ++#define B134 0000004 ++#define B150 0000005 ++#define B200 0000006 ++#define B300 0000007 ++#define B600 0000010 ++#define B1200 0000011 ++#define B1800 0000012 ++#define B2400 0000013 ++#define B4800 0000014 ++#define B9600 0000015 ++#define B19200 0000016 ++#define B38400 0000017 ++ ++#define B57600 0010001 ++#define B115200 0010002 ++#define B230400 0010003 ++#define B460800 0010004 ++#define B500000 0010005 ++#define B576000 0010006 ++#define B921600 0010007 ++#define B1000000 0010010 ++#define B1152000 0010011 ++#define B1500000 0010012 ++#define B2000000 0010013 ++#define B2500000 0010014 ++#define B3000000 0010015 ++#define B3500000 0010016 ++#define B4000000 0010017 ++ ++#define CBAUD 0010017 ++ ++#define CSIZE 0000060 ++#define CS5 0000000 ++#define CS6 0000020 ++#define CS7 0000040 ++#define CS8 0000060 ++#define CSTOPB 0000100 ++#define CREAD 0000200 ++#define PARENB 0000400 ++#define PARODD 0001000 ++#define HUPCL 0002000 ++#define CLOCAL 0004000 ++ ++#define ISIG 0000001 ++#define ICANON 0000002 ++#define ECHO 0000010 ++#define ECHOE 0000020 ++#define ECHOK 0000040 ++#define ECHONL 0000100 ++#define NOFLSH 0000200 ++#define TOSTOP 0000400 ++#define IEXTEN 0100000 ++ ++#define ECHOCTL 0001000 ++#define ECHOPRT 0002000 ++#define ECHOKE 0004000 ++#define FLUSHO 0010000 ++#define PENDIN 0040000 ++ ++#define TCOOFF 0 ++#define TCOON 1 ++#define TCIOFF 2 ++#define TCION 3 ++ ++#define TCIFLUSH 0 ++#define TCOFLUSH 1 ++#define TCIOFLUSH 2 ++ ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/x32/bits/user.h musl-git/arch/x32/bits/user.h +--- musl-0.9.15/arch/x32/bits/user.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/bits/user.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,44 @@ ++#undef __WORDSIZE ++#define __WORDSIZE 64 ++ ++typedef struct user_fpregs_struct ++{ ++ uint16_t cwd, swd, ftw, fop; ++ uint64_t rip, rdp; ++ uint32_t mxcsr, mxcs_mask; ++ uint32_t st_space[32], xmm_space[64], padding[24]; ++} elf_fpregset_t; ++ ++struct user_regs_struct ++{ ++ unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8; ++ unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip; ++ unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs; ++}; ++#define ELF_NGREG 27 ++typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG]; ++ ++struct user ++{ ++ struct user_regs_struct regs; ++ int u_fpvalid; ++ struct user_fpregs_struct i387; ++ unsigned long u_tsize; ++ unsigned long u_dsize; ++ unsigned long u_ssize; ++ unsigned long start_code; ++ unsigned long start_stack; ++ long signal; ++ int reserved; ++ struct user_regs_struct *u_ar0; ++ struct user_fpregs_struct *u_fpstate; ++ unsigned long magic; ++ char u_comm[32]; ++ unsigned long u_debugreg[8]; ++}; ++ ++#define PAGE_MASK (~(PAGE_SIZE-1)) ++#define NBPG PAGE_SIZE ++#define UPAGES 1 ++#define HOST_TEXT_START_ADDR (u.start_code) ++#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) +diff -Nur musl-0.9.15/arch/x32/crt_arch.h musl-git/arch/x32/crt_arch.h +--- musl-0.9.15/arch/x32/crt_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/crt_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,9 @@ ++__asm__("\ ++.text \n\ ++.global _start \n\ ++_start: \n\ ++ xor %rbp,%rbp \n\ ++ mov %rsp,%rdi \n\ ++ andq $-16,%rsp \n\ ++ call __cstart \n\ ++"); +diff -Nur musl-0.9.15/arch/x32/pthread_arch.h musl-git/arch/x32/pthread_arch.h +--- musl-0.9.15/arch/x32/pthread_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/pthread_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,10 @@ ++static inline struct pthread *__pthread_self() ++{ ++ struct pthread *self; ++ __asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) ); ++ return self; ++} ++ ++#define TP_ADJ(p) (p) ++ ++#define CANCEL_REG_IP 16 +diff -Nur musl-0.9.15/arch/x32/reloc.h musl-git/arch/x32/reloc.h +--- musl-0.9.15/arch/x32/reloc.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/reloc.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,46 @@ ++#include ++#include ++#include ++ ++#define LDSO_ARCH "x32" ++ ++#define IS_COPY(x) ((x)==R_X86_64_COPY) ++#define IS_PLT(x) ((x)==R_X86_64_JUMP_SLOT) ++ ++static inline void do_single_reloc( ++ struct dso *self, unsigned char *base_addr, ++ size_t *reloc_addr, int type, size_t addend, ++ Sym *sym, size_t sym_size, ++ struct symdef def, size_t sym_val) ++{ ++ switch(type) { ++ case R_X86_64_GLOB_DAT: ++ case R_X86_64_JUMP_SLOT: ++ case R_X86_64_64: ++ *reloc_addr = sym_val + addend; ++ break; ++ case R_X86_64_32: ++ *(uint32_t *)reloc_addr = sym_val + addend; ++ break; ++ case R_X86_64_PC32: ++ *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; ++ break; ++ case R_X86_64_RELATIVE: ++ *reloc_addr = (size_t)base_addr + addend; ++ break; ++ case R_X86_64_COPY: ++ memcpy(reloc_addr, (void *)sym_val, sym_size); ++ break; ++ case R_X86_64_DTPMOD64: ++ *reloc_addr = def.dso ? def.dso->tls_id : self->tls_id; ++ break; ++ case R_X86_64_DTPOFF64: ++ *reloc_addr = def.sym->st_value + addend; ++ break; ++ case R_X86_64_TPOFF64: ++ *reloc_addr = (def.sym ++ ? def.sym->st_value - def.dso->tls_offset ++ : 0 - self->tls_offset) + addend; ++ break; ++ } ++} +diff -Nur musl-0.9.15/arch/x32/src/syscall_cp_fixup.c musl-git/arch/x32/src/syscall_cp_fixup.c +--- musl-0.9.15/arch/x32/src/syscall_cp_fixup.c 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/src/syscall_cp_fixup.c 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,31 @@ ++#include ++long __syscall_cp_internal(volatile void*, long long, long long, long long, long long, ++ long long, long long, long long); ++ ++struct __timespec { long long tv_sec; long tv_nsec; }; ++struct __timespec_kernel { long long tv_sec; long long tv_nsec; }; ++#define __tsc(X) ((struct __timespec*)(unsigned long)(X)) ++#define __fixup(X) do { if(X) X = (unsigned long) (&(struct __timespec_kernel) \ ++ { .tv_sec = __tsc(X)->tv_sec, .tv_nsec = __tsc(X)->tv_nsec}); } while(0) ++ ++long __syscall_cp_asm (volatile void * foo, long long n, long long a1, long long a2, long long a3, ++ long long a4, long long a5, long long a6) { ++ switch (n) { ++ case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6: ++ __fixup(a5); ++ break; ++ case SYS_futex: ++ if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) ++ __fixup(a4); ++ break; ++ case SYS_clock_nanosleep: ++ case SYS_rt_sigtimedwait: case SYS_ppoll: ++ __fixup(a3); ++ break; ++ case SYS_nanosleep: ++ __fixup(a1); ++ break; ++ } ++ return __syscall_cp_internal(foo, n, a1, a2, a3, a4, a5, a6); ++} ++ +diff -Nur musl-0.9.15/arch/x32/syscall_arch.h musl-git/arch/x32/syscall_arch.h +--- musl-0.9.15/arch/x32/syscall_arch.h 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/arch/x32/syscall_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,117 @@ ++#define __SYSCALL_LL_E(x) (x) ++#define __SYSCALL_LL_O(x) (x) ++ ++#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X) ++typedef long long syscall_arg_t; ++struct __timespec { long long tv_sec; long tv_nsec; }; ++struct __timespec_kernel { long long tv_sec; long long tv_nsec; }; ++#define __tsc(X) ((struct __timespec*)(unsigned long)(X)) ++#define __fixup(X) do { if(X) X = (unsigned long) (&(struct __timespec_kernel) \ ++ { .tv_sec = __tsc(X)->tv_sec, .tv_nsec = __tsc(X)->tv_nsec}); } while(0) ++#define __fixup_case_2 \ ++ case SYS_nanosleep: \ ++ __fixup(a1); break; \ ++ case SYS_clock_settime: \ ++ __fixup(a2); break; ++#define __fixup_case_3 \ ++ case SYS_clock_nanosleep: case SYS_rt_sigtimedwait: case SYS_ppoll: \ ++ __fixup(a3); break; \ ++ case SYS_utimensat: \ ++ if(a3) a3 = (unsigned long) ((struct __timespec_kernel[2]) { \ ++ [0] = {.tv_sec = __tsc(a3)[0].tv_sec, .tv_nsec = __tsc(a3)[0].tv_nsec}, \ ++ [1] = {.tv_sec = __tsc(a3)[1].tv_sec, .tv_nsec = __tsc(a3)[1].tv_nsec}, \ ++ }); break; ++#define __fixup_case_4 \ ++ case SYS_futex: \ ++ if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) __fixup(a4); break; ++#define __fixup_case_5 \ ++ case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6: \ ++ __fixup(a5); break; ++ ++static __inline long __syscall0(long long n) ++{ ++ unsigned long ret; ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall1(long long n, long long a1) ++{ ++ unsigned long ret; ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall2(long long n, long long a1, long long a2) ++{ ++ unsigned long ret; ++ struct __timespec *ts2 = 0; ++ switch (n) { ++ __fixup_case_2; ++ } ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2) ++ : "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall3(long long n, long long a1, long long a2, long long a3) ++{ ++ unsigned long ret; ++ switch (n) { ++ __fixup_case_2; ++ __fixup_case_3; ++ } ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), ++ "d"(a3) : "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall4(long long n, long long a1, long long a2, long long a3, ++ long long a4_) ++{ ++ unsigned long ret; ++ register long long a4 __asm__("r10") = a4_; ++ switch (n) { ++ __fixup_case_2; ++ __fixup_case_3; ++ __fixup_case_4; ++ } ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), ++ "d"(a3), "r"(a4): "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall5(long long n, long long a1, long long a2, long long a3, ++ long long a4_, long long a5_) ++{ ++ unsigned long ret; ++ register long long a4 __asm__("r10") = a4_; ++ register long long a5 __asm__("r8") = a5_; ++ switch (n) { ++ __fixup_case_2; ++ __fixup_case_3; ++ __fixup_case_4; ++ __fixup_case_5; ++ } ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), ++ "d"(a3), "r"(a4), "r"(a5) : "rcx", "r11", "memory"); ++ return ret; ++} ++ ++static __inline long __syscall6(long long n, long long a1, long long a2, long long a3, ++ long long a4_, long long a5_, long long a6_) ++{ ++ unsigned long ret; ++ register long long a4 __asm__("r10") = a4_; ++ register long long a5 __asm__("r8") = a5_; ++ register long long a6 __asm__("r9") = a6_; ++ switch (n) { ++ __fixup_case_2; ++ __fixup_case_3; ++ __fixup_case_4; ++ __fixup_case_5; ++ } ++ __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), ++ "d"(a3), "r"(a4), "r"(a5), "r"(a6) : "rcx", "r11", "memory"); ++ return ret; ++} +diff -Nur musl-0.9.15/arch/x86_64/atomic.h musl-git/arch/x86_64/atomic.h +--- musl-0.9.15/arch/x86_64/atomic.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/x86_64/atomic.h 2014-02-25 15:24:14.000000000 +0100 +@@ -5,38 +5,36 @@ + + static inline int a_ctz_64(uint64_t x) + { +- long r; +- __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); +- return r; ++ __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); ++ return x; + } + + static inline int a_ctz_l(unsigned long x) + { +- long r; +- __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); +- return r; ++ __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); ++ return x; + } + + static inline void a_and_64(volatile uint64_t *p, uint64_t v) + { +- __asm__( "lock ; andq %1, %0" +- : "=m"(*(long *)p) : "r"(v) : "memory" ); ++ __asm__( "lock ; and %1, %0" ++ : "=m"(*p) : "r"(v) : "memory" ); + } + + static inline void a_or_64(volatile uint64_t *p, uint64_t v) + { +- __asm__( "lock ; orq %1, %0" +- : "=m"(*(long *)p) : "r"(v) : "memory" ); ++ __asm__( "lock ; or %1, %0" ++ : "=m"(*p) : "r"(v) : "memory" ); + } + + static inline void a_store_l(volatile void *p, long x) + { +- __asm__( "movq %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); ++ __asm__( "mov %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); + } + + static inline void a_or_l(volatile void *p, long v) + { +- __asm__( "lock ; orq %1, %0" ++ __asm__( "lock ; or %1, %0" + : "=m"(*(long *)p) : "r"(v) : "memory" ); + } + +@@ -56,7 +54,7 @@ + + static inline int a_cas(volatile int *p, int t, int s) + { +- __asm__( "lock ; cmpxchgl %3, %1" ++ __asm__( "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); + return t; + } +@@ -74,13 +72,13 @@ + + static inline void a_or(volatile void *p, int v) + { +- __asm__( "lock ; orl %1, %0" ++ __asm__( "lock ; or %1, %0" + : "=m"(*(int *)p) : "r"(v) : "memory" ); + } + + static inline void a_and(volatile void *p, int v) + { +- __asm__( "lock ; andl %1, %0" ++ __asm__( "lock ; and %1, %0" + : "=m"(*(int *)p) : "r"(v) : "memory" ); + } + +@@ -110,7 +108,7 @@ + + static inline void a_store(volatile int *p, int x) + { +- __asm__( "movl %1, %0" : "=m"(*p) : "r"(x) : "memory" ); ++ __asm__( "mov %1, %0" : "=m"(*p) : "r"(x) : "memory" ); + } + + static inline void a_spin() +diff -Nur musl-0.9.15/arch/x86_64/bits/shm.h musl-git/arch/x86_64/bits/shm.h +--- musl-0.9.15/arch/x86_64/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/x86_64/bits/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -13,3 +13,14 @@ + unsigned long __pad1; + unsigned long __pad2; + }; ++ ++struct shminfo { ++ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; ++}; ++ ++struct shm_info { ++ int __used_ids; ++ unsigned long shm_tot, shm_rss, shm_swp; ++ unsigned long __swap_attempts, __swap_successes; ++}; ++ +diff -Nur musl-0.9.15/arch/x86_64/bits/stat.h musl-git/arch/x86_64/bits/stat.h +--- musl-0.9.15/arch/x86_64/bits/stat.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/x86_64/bits/stat.h 2014-02-25 15:24:14.000000000 +0100 +@@ -2,7 +2,7 @@ + * by the corresponding correctly-sized userspace types. */ + + struct stat { +- unsigned long st_dev; ++ dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + +diff -Nur musl-0.9.15/arch/x86_64/bits/termios.h musl-git/arch/x86_64/bits/termios.h +--- musl-0.9.15/arch/x86_64/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/x86_64/bits/termios.h 2014-02-25 15:24:14.000000000 +0100 +@@ -42,6 +42,7 @@ + #define IXANY 0004000 + #define IXOFF 0010000 + #define IMAXBEL 0020000 ++#define IUTF8 0040000 + + #define OPOST 0000001 + #define OLCUC 0000002 +@@ -75,9 +76,6 @@ + #define VT0 0000000 + #define VT1 0040000 + +-/* ?? */ +-#define XTABS 0014000 +- + #define B0 0000000 + #define B50 0000001 + #define B75 0000002 +@@ -125,8 +123,6 @@ + #define HUPCL 0002000 + #define CLOCAL 0004000 + +-#define CRTSCTS 020000000000 +- + #define ISIG 0000001 + #define ICANON 0000002 + #define ECHO 0000010 +@@ -137,14 +133,11 @@ + #define TOSTOP 0000400 + #define IEXTEN 0100000 + +-/* Extensions? */ +-#define CBAUDEX 0010000 + #define ECHOCTL 0001000 + #define ECHOPRT 0002000 + #define ECHOKE 0004000 + #define FLUSHO 0010000 + #define PENDIN 0040000 +-#define EXTPROC 0200000 + + #define TCOOFF 0 + #define TCOON 1 +@@ -158,3 +151,10 @@ + #define TCSANOW 0 + #define TCSADRAIN 1 + #define TCSAFLUSH 2 ++ ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++#define CBAUDEX 0010000 ++#define CRTSCTS 020000000000 ++#define EXTPROC 0200000 ++#define XTABS 0014000 ++#endif +diff -Nur musl-0.9.15/arch/x86_64/pthread_arch.h musl-git/arch/x86_64/pthread_arch.h +--- musl-0.9.15/arch/x86_64/pthread_arch.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/arch/x86_64/pthread_arch.h 2014-02-25 15:24:14.000000000 +0100 +@@ -1,7 +1,7 @@ + static inline struct pthread *__pthread_self() + { + struct pthread *self; +- __asm__ __volatile__ ("movq %%fs:0,%0" : "=r" (self) ); ++ __asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) ); + return self; + } + +diff -Nur musl-0.9.15/configure musl-git/configure +--- musl-0.9.15/configure 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/configure 2014-02-25 15:24:14.000000000 +0100 +@@ -224,10 +224,12 @@ + case "$target" in + arm*) ARCH=arm ;; + i?86*) ARCH=i386 ;; ++x86_64-x32*|x32*) ARCH=x32 ;; + x86_64*) ARCH=x86_64 ;; + mips-*|mipsel-*) ARCH=mips ;; + microblaze-*) ARCH=microblaze ;; + powerpc-*) ARCH=powerpc ;; ++sh-*) ARCH=superh ;; + unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; + *) fail "$0: unknown or unsupported target \"$target\"" ;; + esac +@@ -381,6 +383,7 @@ + tryflag CFLAGS_AUTO -Wno-unused-value + tryflag CFLAGS_AUTO -Wno-unused-but-set-variable + tryflag CFLAGS_AUTO -Wno-unknown-pragmas ++tryflag CFLAGS_AUTO -Wno-pointer-to-int-cast + fi + + # Some patched GCC builds have these defaults messed up... +@@ -410,12 +413,17 @@ + trycppif __ARM_PCS_VFP "$t" && SUBARCH=${SUBARCH}hf + fi + +-test "$ARCH" = "mips" && trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" \ +-&& SUBARCH=${SUBARCH}el ++if test "$ARCH" = "mips" ; then ++trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" && SUBARCH=${SUBARCH}el ++trycppif __mips_soft_float "$t" && SUBARCH=${SUBARCH}-sf ++fi + + test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ + && SUBARCH=${SUBARCH}el + ++test "$ARCH" = "superh" && trycppif __LITTLE_ENDIAN__ "$t" \ ++&& SUBARCH=${SUBARCH}el ++ + test "$SUBARCH" \ + && printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH" + +diff -Nur musl-0.9.15/crt/superh/crti.s musl-git/crt/superh/crti.s +--- musl-0.9.15/crt/superh/crti.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/crt/superh/crti.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,13 @@ ++.section .init ++.global _init ++.type _init, @function ++_init: ++ sts.l pr, @-r15 ++ nop ++ ++.section .fini ++.global _fini ++.type _fini, @function ++_fini: ++ sts.l pr, @-r15 ++ nop +diff -Nur musl-0.9.15/crt/superh/crtn.s musl-git/crt/superh/crtn.s +--- musl-0.9.15/crt/superh/crtn.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/crt/superh/crtn.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,9 @@ ++.section .init ++ lds.l @r15+, pr ++ rts ++ nop ++ ++.section .fini ++ lds.l @r15+, pr ++ rts ++ nop +diff -Nur musl-0.9.15/crt/x32/crti.s musl-git/crt/x32/crti.s +--- musl-0.9.15/crt/x32/crti.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/crt/x32/crti.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,9 @@ ++.section .init ++.global _init ++_init: ++ push %rax ++ ++.section .fini ++.global _fini ++_fini: ++ push %rax +diff -Nur musl-0.9.15/crt/x32/crtn.s musl-git/crt/x32/crtn.s +--- musl-0.9.15/crt/x32/crtn.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/crt/x32/crtn.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.section .init ++ pop %rax ++ ret ++ ++.section .fini ++ pop %rax ++ ret +diff -Nur musl-0.9.15/.gitignore musl-git/.gitignore +--- musl-0.9.15/.gitignore 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/.gitignore 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,11 @@ ++*.o ++*.lo ++*.a ++*.so ++*.so.1 ++arch/*/bits/alltypes.h ++config.mak ++include/bits ++tools/musl-gcc ++lib/musl-gcc.specs ++src/internal/version.h +diff -Nur musl-0.9.15/include/arpa/inet.h musl-git/include/arpa/inet.h +--- musl-0.9.15/include/arpa/inet.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/arpa/inet.h 2014-02-25 15:24:14.000000000 +0100 +@@ -20,7 +20,7 @@ + const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t); + + int inet_aton (const char *, struct in_addr *); +-struct in_addr inet_makeaddr(int, int); ++struct in_addr inet_makeaddr(in_addr_t, in_addr_t); + in_addr_t inet_lnaof(struct in_addr); + in_addr_t inet_netof(struct in_addr); + +diff -Nur musl-0.9.15/include/dlfcn.h musl-git/include/dlfcn.h +--- musl-0.9.15/include/dlfcn.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/dlfcn.h 2014-02-25 15:24:14.000000000 +0100 +@@ -31,7 +31,7 @@ + const char *dli_sname; + void *dli_saddr; + } Dl_info; +-int dladdr(void *, Dl_info *); ++int dladdr(const void *, Dl_info *); + int dlinfo(void *, int, void *); + #endif + +diff -Nur musl-0.9.15/include/elf.h musl-git/include/elf.h +--- musl-0.9.15/include/elf.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/elf.h 2014-02-25 15:24:14.000000000 +0100 +@@ -1153,6 +1153,7 @@ + #define EF_MIPS_64BIT_WHIRL 16 + #define EF_MIPS_ABI2 32 + #define EF_MIPS_ABI_ON32 64 ++#define EF_MIPS_NAN2008 1024 + #define EF_MIPS_ARCH 0xf0000000 + + +@@ -2092,6 +2093,117 @@ + #define R_AARCH64_NONE 0 + #define R_AARCH64_ABS64 257 + #define R_AARCH64_ABS32 258 ++#define R_AARCH64_ABS16 259 ++#define R_AARCH64_PREL64 260 ++#define R_AARCH64_PREL32 261 ++#define R_AARCH64_PREL16 262 ++#define R_AARCH64_MOVW_UABS_G0 263 ++#define R_AARCH64_MOVW_UABS_G0_NC 264 ++#define R_AARCH64_MOVW_UABS_G1 265 ++#define R_AARCH64_MOVW_UABS_G1_NC 266 ++#define R_AARCH64_MOVW_UABS_G2 267 ++#define R_AARCH64_MOVW_UABS_G2_NC 268 ++#define R_AARCH64_MOVW_UABS_G3 269 ++#define R_AARCH64_MOVW_SABS_G0 270 ++#define R_AARCH64_MOVW_SABS_G1 271 ++#define R_AARCH64_MOVW_SABS_G2 272 ++#define R_AARCH64_LD_PREL_LO19 273 ++#define R_AARCH64_ADR_PREL_LO21 274 ++#define R_AARCH64_ADR_PREL_PG_HI21 275 ++#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 ++#define R_AARCH64_ADD_ABS_LO12_NC 277 ++#define R_AARCH64_LDST8_ABS_LO12_NC 278 ++#define R_AARCH64_TSTBR14 279 ++#define R_AARCH64_CONDBR19 280 ++#define R_AARCH64_JUMP26 282 ++#define R_AARCH64_CALL26 283 ++#define R_AARCH64_LDST16_ABS_LO12_NC 284 ++#define R_AARCH64_LDST32_ABS_LO12_NC 285 ++#define R_AARCH64_LDST64_ABS_LO12_NC 286 ++#define R_AARCH64_MOVW_PREL_G0 287 ++#define R_AARCH64_MOVW_PREL_G0_NC 288 ++#define R_AARCH64_MOVW_PREL_G1 289 ++#define R_AARCH64_MOVW_PREL_G1_NC 290 ++#define R_AARCH64_MOVW_PREL_G2 291 ++#define R_AARCH64_MOVW_PREL_G2_NC 292 ++#define R_AARCH64_MOVW_PREL_G3 293 ++#define R_AARCH64_LDST128_ABS_LO12_NC 299 ++#define R_AARCH64_MOVW_GOTOFF_G0 300 ++#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 ++#define R_AARCH64_MOVW_GOTOFF_G1 302 ++#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 ++#define R_AARCH64_MOVW_GOTOFF_G2 304 ++#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 ++#define R_AARCH64_MOVW_GOTOFF_G3 306 ++#define R_AARCH64_GOTREL64 307 ++#define R_AARCH64_GOTREL32 308 ++#define R_AARCH64_GOT_LD_PREL19 309 ++#define R_AARCH64_LD64_GOTOFF_LO15 310 ++#define R_AARCH64_ADR_GOT_PAGE 311 ++#define R_AARCH64_LD64_GOT_LO12_NC 312 ++#define R_AARCH64_LD64_GOTPAGE_LO15 313 ++#define R_AARCH64_TLSGD_ADR_PREL21 512 ++#define R_AARCH64_TLSGD_ADR_PAGE21 513 ++#define R_AARCH64_TLSGD_ADD_LO12_NC 514 ++#define R_AARCH64_TLSGD_MOVW_G1 515 ++#define R_AARCH64_TLSGD_MOVW_G0_NC 516 ++#define R_AARCH64_TLSLD_ADR_PREL21 517 ++#define R_AARCH64_TLSLD_ADR_PAGE21 518 ++#define R_AARCH64_TLSLD_ADD_LO12_NC 519 ++#define R_AARCH64_TLSLD_MOVW_G1 520 ++#define R_AARCH64_TLSLD_MOVW_G0_NC 521 ++#define R_AARCH64_TLSLD_LD_PREL19 522 ++#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 ++#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 ++#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 ++#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 ++#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 ++#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 ++#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 ++#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 ++#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 ++#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 ++#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 ++#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 ++#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 ++#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 ++#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 ++#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 ++#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 ++#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 ++#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 ++#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 ++#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 ++#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 ++#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 ++#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 ++#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 ++#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 ++#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 ++#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 ++#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 ++#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 ++#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 ++#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 ++#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 ++#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 ++#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 ++#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 ++#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 ++#define R_AARCH64_TLSDESC_LD_PREL19 560 ++#define R_AARCH64_TLSDESC_ADR_PREL21 561 ++#define R_AARCH64_TLSDESC_ADR_PAGE21 562 ++#define R_AARCH64_TLSDESC_LD64_LO12 563 ++#define R_AARCH64_TLSDESC_ADD_LO12 564 ++#define R_AARCH64_TLSDESC_OFF_G1 565 ++#define R_AARCH64_TLSDESC_OFF_G0_NC 566 ++#define R_AARCH64_TLSDESC_LDR 567 ++#define R_AARCH64_TLSDESC_ADD 568 ++#define R_AARCH64_TLSDESC_CALL 569 ++#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 ++#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 ++#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 ++#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 + #define R_AARCH64_COPY 1024 + #define R_AARCH64_GLOB_DAT 1025 + #define R_AARCH64_JUMP_SLOT 1026 +diff -Nur musl-0.9.15/include/fcntl.h musl-git/include/fcntl.h +--- musl-0.9.15/include/fcntl.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/fcntl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -148,6 +148,7 @@ + #define SPLICE_F_MORE 4 + #define SPLICE_F_GIFT 8 + int fallocate(int, int, off_t, off_t); ++#define fallocate64 fallocate + ssize_t readahead(int, off_t, size_t); + int sync_file_range(int, off_t, off_t, unsigned); + ssize_t vmsplice(int, const struct iovec *, size_t, unsigned); +@@ -160,6 +161,7 @@ + #define F_GETLK64 F_GETLK + #define F_SETLK64 F_SETLK + #define F_SETLKW64 F_SETLKW ++#define flock64 flock + #define open64 open + #define openat64 openat + #define creat64 creat +diff -Nur musl-0.9.15/include/netdb.h musl-git/include/netdb.h +--- musl-0.9.15/include/netdb.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/netdb.h 2014-02-25 15:24:14.000000000 +0100 +@@ -131,6 +131,7 @@ + #define TRY_AGAIN 2 + #define NO_RECOVERY 3 + #define NO_DATA 4 ++#define NO_ADDRESS NO_DATA + #endif + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +diff -Nur musl-0.9.15/include/netinet/if_ether.h musl-git/include/netinet/if_ether.h +--- musl-0.9.15/include/netinet/if_ether.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/netinet/if_ether.h 2014-02-25 15:24:14.000000000 +0100 +@@ -54,6 +54,7 @@ + #define ETH_P_8021AH 0x88E7 + #define ETH_P_MVRP 0x88F5 + #define ETH_P_1588 0x88F7 ++#define ETH_P_PRP 0x88FB + #define ETH_P_FCOE 0x8906 + #define ETH_P_TDLS 0x890D + #define ETH_P_FIP 0x8914 +diff -Nur musl-0.9.15/include/netinet/in.h musl-git/include/netinet/in.h +--- musl-0.9.15/include/netinet/in.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/netinet/in.h 2014-02-25 15:24:14.000000000 +0100 +@@ -149,7 +149,7 @@ + (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) + + #define __ARE_4_EQUAL(a,b) \ +- (!( 0[a]-0[b] | 1[a]-1[b] | 2[a]-2[b] | 3[a]-3[b] )) ++ (!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) )) + #define IN6_ARE_ADDR_EQUAL(a,b) \ + __ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b)) + +@@ -211,27 +211,13 @@ + #define IP_MULTICAST_ALL 49 + #define IP_UNICAST_IF 50 + +-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +-#define MCAST_JOIN_GROUP 42 +-#define MCAST_BLOCK_SOURCE 43 +-#define MCAST_UNBLOCK_SOURCE 44 +-#define MCAST_LEAVE_GROUP 45 +-#define MCAST_JOIN_SOURCE_GROUP 46 +-#define MCAST_LEAVE_SOURCE_GROUP 47 +-#define MCAST_MSFILTER 48 +- +-#define MCAST_EXCLUDE 0 +-#define MCAST_INCLUDE 1 +-#endif +- + #define IP_RECVRETOPTS IP_RETOPTS + + #define IP_PMTUDISC_DONT 0 + #define IP_PMTUDISC_WANT 1 + #define IP_PMTUDISC_DO 2 + #define IP_PMTUDISC_PROBE 3 +- +-#define SOL_IP 0 ++#define IP_PMTUDISC_INTERFACE 4 + + #define IP_DEFAULT_MULTICAST_TTL 1 + #define IP_DEFAULT_MULTICAST_LOOP 1 +@@ -243,6 +229,19 @@ + char ip_opts[40]; + }; + ++#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) ++ ++#define MCAST_JOIN_GROUP 42 ++#define MCAST_BLOCK_SOURCE 43 ++#define MCAST_UNBLOCK_SOURCE 44 ++#define MCAST_LEAVE_GROUP 45 ++#define MCAST_JOIN_SOURCE_GROUP 46 ++#define MCAST_LEAVE_SOURCE_GROUP 47 ++#define MCAST_MSFILTER 48 ++ ++#define MCAST_EXCLUDE 0 ++#define MCAST_INCLUDE 1 ++ + struct ip_mreq + { + struct in_addr imr_multiaddr; +@@ -273,7 +272,6 @@ + (sizeof(struct ip_msfilter) - sizeof(struct in_addr) \ + + (numsrc) * sizeof(struct in_addr)) + +-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + struct group_req { + uint32_t gr_interface; + struct sockaddr_storage gr_group; +@@ -295,7 +293,6 @@ + #define GROUP_FILTER_SIZE(numsrc) \ + (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \ + + (numsrc) * sizeof(struct sockaddr_storage)) +-#endif + + struct in_pktinfo + { +@@ -315,6 +312,7 @@ + struct sockaddr_in6 ip6m_addr; + uint32_t ip6m_mtu; + }; ++#endif + + #define IPV6_ADDRFORM 1 + #define IPV6_2292PKTINFO 2 +@@ -324,7 +322,6 @@ + #define IPV6_2292PKTOPTIONS 6 + #define IPV6_CHECKSUM 7 + #define IPV6_2292HOPLIMIT 8 +-#define SCM_SRCRT IPV6_RXSRCRT + #define IPV6_NEXTHOP 9 + #define IPV6_AUTHHDR 10 + #define IPV6_UNICAST_HOPS 16 +@@ -363,15 +360,11 @@ + #define IPV6_RXHOPOPTS IPV6_HOPOPTS + #define IPV6_RXDSTOPTS IPV6_DSTOPTS + +- + #define IPV6_PMTUDISC_DONT 0 + #define IPV6_PMTUDISC_WANT 1 + #define IPV6_PMTUDISC_DO 2 + #define IPV6_PMTUDISC_PROBE 3 + +-#define SOL_IPV6 41 +-#define SOL_ICMPV6 58 +- + #define IPV6_RTHDR_LOOSE 0 + #define IPV6_RTHDR_STRICT 1 + +diff -Nur musl-0.9.15/include/netinet/tcp.h musl-git/include/netinet/tcp.h +--- musl-0.9.15/include/netinet/tcp.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/netinet/tcp.h 2014-02-25 15:24:14.000000000 +0100 +@@ -44,42 +44,80 @@ + #define SOL_TCP 6 + #include + #include +-#endif ++#include ++#include ++ ++typedef uint32_t tcp_seq; + ++#define TH_FIN 0x01 ++#define TH_SYN 0x02 ++#define TH_RST 0x04 ++#define TH_PUSH 0x08 ++#define TH_ACK 0x10 ++#define TH_URG 0x20 ++ ++struct tcphdr { + #ifdef _GNU_SOURCE +-#include +-struct tcphdr +-{ +- u_int16_t source; +- u_int16_t dest; +- u_int32_t seq; +- u_int32_t ack_seq; ++#ifdef __GNUC__ ++ __extension__ ++#endif ++ union { struct { ++ ++ uint16_t source; ++ uint16_t dest; ++ uint32_t seq; ++ uint32_t ack_seq; ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ uint16_t res1:4; ++ uint16_t doff:4; ++ uint16_t fin:1; ++ uint16_t syn:1; ++ uint16_t rst:1; ++ uint16_t psh:1; ++ uint16_t ack:1; ++ uint16_t urg:1; ++ uint16_t res2:2; ++#else ++ uint16_t doff:4; ++ uint16_t res1:4; ++ uint16_t res2:2; ++ uint16_t urg:1; ++ uint16_t ack:1; ++ uint16_t psh:1; ++ uint16_t rst:1; ++ uint16_t syn:1; ++ uint16_t fin:1; ++#endif ++ uint16_t window; ++ uint16_t check; ++ uint16_t urg_ptr; ++ ++ }; struct { ++#endif ++ ++ uint16_t th_sport; ++ uint16_t th_dport; ++ uint32_t th_seq; ++ uint32_t th_ack; + #if __BYTE_ORDER == __LITTLE_ENDIAN +- u_int16_t res1:4; +- u_int16_t doff:4; +- u_int16_t fin:1; +- u_int16_t syn:1; +- u_int16_t rst:1; +- u_int16_t psh:1; +- u_int16_t ack:1; +- u_int16_t urg:1; +- u_int16_t res2:2; ++ uint8_t th_x2:4; ++ uint8_t th_off:4; + #else +- u_int16_t doff:4; +- u_int16_t res1:4; +- u_int16_t res2:2; +- u_int16_t urg:1; +- u_int16_t ack:1; +- u_int16_t psh:1; +- u_int16_t rst:1; +- u_int16_t syn:1; +- u_int16_t fin:1; +-#endif +- u_int16_t window; +- u_int16_t check; +- u_int16_t urg_ptr; ++ uint8_t th_off:4; ++ uint8_t th_x2:4; ++#endif ++ uint8_t th_flags; ++ uint16_t th_win; ++ uint16_t th_sum; ++ uint16_t th_urp; ++ ++#ifdef _GNU_SOURCE ++ }; }; ++#endif + }; ++#endif + ++#ifdef _GNU_SOURCE + #define TCPI_OPT_TIMESTAMPS 1 + #define TCPI_OPT_SACK 2 + #define TCPI_OPT_WSCALE 4 +@@ -93,37 +131,37 @@ + + struct tcp_info + { +- u_int8_t tcpi_state; +- u_int8_t tcpi_ca_state; +- u_int8_t tcpi_retransmits; +- u_int8_t tcpi_probes; +- u_int8_t tcpi_backoff; +- u_int8_t tcpi_options; +- u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; +- u_int32_t tcpi_rto; +- u_int32_t tcpi_ato; +- u_int32_t tcpi_snd_mss; +- u_int32_t tcpi_rcv_mss; +- u_int32_t tcpi_unacked; +- u_int32_t tcpi_sacked; +- u_int32_t tcpi_lost; +- u_int32_t tcpi_retrans; +- u_int32_t tcpi_fackets; +- u_int32_t tcpi_last_data_sent; +- u_int32_t tcpi_last_ack_sent; +- u_int32_t tcpi_last_data_recv; +- u_int32_t tcpi_last_ack_recv; +- u_int32_t tcpi_pmtu; +- u_int32_t tcpi_rcv_ssthresh; +- u_int32_t tcpi_rtt; +- u_int32_t tcpi_rttvar; +- u_int32_t tcpi_snd_ssthresh; +- u_int32_t tcpi_snd_cwnd; +- u_int32_t tcpi_advmss; +- u_int32_t tcpi_reordering; +- u_int32_t tcpi_rcv_rtt; +- u_int32_t tcpi_rcv_space; +- u_int32_t tcpi_total_retrans; ++ uint8_t tcpi_state; ++ uint8_t tcpi_ca_state; ++ uint8_t tcpi_retransmits; ++ uint8_t tcpi_probes; ++ uint8_t tcpi_backoff; ++ uint8_t tcpi_options; ++ uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; ++ uint32_t tcpi_rto; ++ uint32_t tcpi_ato; ++ uint32_t tcpi_snd_mss; ++ uint32_t tcpi_rcv_mss; ++ uint32_t tcpi_unacked; ++ uint32_t tcpi_sacked; ++ uint32_t tcpi_lost; ++ uint32_t tcpi_retrans; ++ uint32_t tcpi_fackets; ++ uint32_t tcpi_last_data_sent; ++ uint32_t tcpi_last_ack_sent; ++ uint32_t tcpi_last_data_recv; ++ uint32_t tcpi_last_ack_recv; ++ uint32_t tcpi_pmtu; ++ uint32_t tcpi_rcv_ssthresh; ++ uint32_t tcpi_rtt; ++ uint32_t tcpi_rttvar; ++ uint32_t tcpi_snd_ssthresh; ++ uint32_t tcpi_snd_cwnd; ++ uint32_t tcpi_advmss; ++ uint32_t tcpi_reordering; ++ uint32_t tcpi_rcv_rtt; ++ uint32_t tcpi_rcv_space; ++ uint32_t tcpi_total_retrans; + }; + + #define TCP_MD5SIG_MAXKEYLEN 80 +@@ -131,10 +169,10 @@ + struct tcp_md5sig + { + struct sockaddr_storage tcpm_addr; +- u_int16_t __tcpm_pad1; +- u_int16_t tcpm_keylen; +- u_int32_t __tcpm_pad2; +- u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; ++ uint16_t __tcpm_pad1; ++ uint16_t tcpm_keylen; ++ uint32_t __tcpm_pad2; ++ uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; + }; + + #endif +diff -Nur musl-0.9.15/include/netinet/udp.h musl-git/include/netinet/udp.h +--- musl-0.9.15/include/netinet/udp.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/netinet/udp.h 2014-02-25 15:24:14.000000000 +0100 +@@ -5,19 +5,22 @@ + extern "C" { + #endif + ++#include + #include + +-struct udphdr { +- uint16_t source; +- uint16_t dest; +- uint16_t len; +- uint16_t check; +-}; +- ++#ifdef _GNU_SOURCE + #define uh_sport source + #define uh_dport dest + #define uh_ulen len + #define uh_sum check ++#endif ++ ++struct udphdr { ++ uint16_t uh_sport; ++ uint16_t uh_dport; ++ uint16_t uh_ulen; ++ uint16_t uh_sum; ++}; + + #define UDP_CORK 1 + #define UDP_ENCAP 100 +diff -Nur musl-0.9.15/include/sched.h musl-git/include/sched.h +--- musl-0.9.15/include/sched.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sched.h 2014-02-25 15:24:14.000000000 +0100 +@@ -78,7 +78,7 @@ + int sched_getaffinity(pid_t, size_t, cpu_set_t *); + int sched_setaffinity(pid_t, size_t, const cpu_set_t *); + +-#define __CPU_op_S(i, size, set, op) ( (i)/8 >= (size) ? 0 : \ ++#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \ + ((set)->__bits[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) ) + + #define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=) +diff -Nur musl-0.9.15/include/signal.h musl-git/include/signal.h +--- musl-0.9.15/include/signal.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/signal.h 2014-02-25 15:24:14.000000000 +0100 +@@ -227,8 +227,8 @@ + typedef void (*sighandler_t)(int); + void (*bsd_signal(int, void (*)(int)))(int); + int sigisemptyset(const sigset_t *); +-int sigorset (sigset_t *, sigset_t *, sigset_t *); +-int sigandset(sigset_t *, sigset_t *, sigset_t *); ++int sigorset (sigset_t *, const sigset_t *, const sigset_t *); ++int sigandset(sigset_t *, const sigset_t *, const sigset_t *); + + #define SA_NOMASK SA_NODEFER + #define SA_ONESHOT SA_RESETHAND +diff -Nur musl-0.9.15/include/stdlib.h musl-git/include/stdlib.h +--- musl-0.9.15/include/stdlib.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/stdlib.h 2014-02-25 15:24:14.000000000 +0100 +@@ -93,7 +93,7 @@ + #define WSTOPSIG(s) WEXITSTATUS(s) + #define WIFEXITED(s) (!WTERMSIG(s)) + #define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +-#define WIFSIGNALED(s) (((s)&0xffff)-1 < 0xffu) ++#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) + + int posix_memalign (void **, size_t, size_t); + int setenv (const char *, const char *, int); +diff -Nur musl-0.9.15/include/sys/inotify.h musl-git/include/sys/inotify.h +--- musl-0.9.15/include/sys/inotify.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/inotify.h 2014-02-25 15:24:14.000000000 +0100 +@@ -48,7 +48,7 @@ + int inotify_init(void); + int inotify_init1(int); + int inotify_add_watch(int, const char *, uint32_t); +-int inotify_rm_watch(int, uint32_t); ++int inotify_rm_watch(int, int); + + #ifdef __cplusplus + } +diff -Nur musl-0.9.15/include/sys/mman.h musl-git/include/sys/mman.h +--- musl-0.9.15/include/sys/mman.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/mman.h 2014-02-25 15:24:14.000000000 +0100 +@@ -33,7 +33,7 @@ + + #ifdef _GNU_SOURCE + void *mremap (void *, size_t, size_t, int, ...); +-int remap_file_pages (void *, size_t, int, ssize_t, int); ++int remap_file_pages (void *, size_t, int, size_t, int); + #endif + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +diff -Nur musl-0.9.15/include/sys/sem.h musl-git/include/sys/sem.h +--- musl-0.9.15/include/sys/sem.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/sem.h 2014-02-25 15:24:14.000000000 +0100 +@@ -29,19 +29,19 @@ + + struct semid_ds { + struct ipc_perm sem_perm; +- long sem_otime; +- unsigned long __unused1; +- long sem_ctime; +- unsigned long __unused2; ++ time_t sem_otime; ++ time_t __unused1; ++ time_t sem_ctime; ++ time_t __unused2; + #if __BYTE_ORDER == __LITTLE_ENDIAN + unsigned short sem_nsems; +- char __sem_nsems_pad[sizeof(long)-sizeof(short)]; ++ char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + #else +- char __sem_nsems_pad[sizeof(long)-sizeof(short)]; ++ char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; + unsigned short sem_nsems; + #endif +- unsigned long __unused3; +- unsigned long __unused4; ++ time_t __unused3; ++ time_t __unused4; + }; + + #define _SEM_SEMUN_UNDEFINED 1 +diff -Nur musl-0.9.15/include/sys/shm.h musl-git/include/sys/shm.h +--- musl-0.9.15/include/sys/shm.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/shm.h 2014-02-25 15:24:14.000000000 +0100 +@@ -14,6 +14,13 @@ + #include + + #include ++ ++#ifdef _GNU_SOURCE ++#define __used_ids used_ids ++#define __swap_attempts swap_attempts ++#define __swap_successes swap_successes ++#endif ++ + #include + + #define SHM_R 0400 +@@ -33,20 +40,6 @@ + #define SHM_HUGETLB 04000 + #define SHM_NORESERVE 010000 + +-struct shminfo { +- unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; +-}; +- +-struct shm_info { +- int used_ids; +- unsigned long shm_tot, shm_rss, shm_swp; +-#ifdef _GNU_SOURCE +- unsigned long swap_attempts, swap_successes; +-#else +- unsigned long __reserved[2]; +-#endif +-}; +- + typedef unsigned long shmatt_t; + + void *shmat(int, const void *, int); +diff -Nur musl-0.9.15/include/sys/socket.h musl-git/include/sys/socket.h +--- musl-0.9.15/include/sys/socket.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/socket.h 2014-02-25 15:24:14.000000000 +0100 +@@ -202,11 +202,16 @@ + #define SO_LOCK_FILTER 44 + #define SO_SELECT_ERR_QUEUE 45 + #define SO_BUSY_POLL 46 ++#define SO_MAX_PACING_RATE 47 + + #ifndef SOL_SOCKET + #define SOL_SOCKET 1 + #endif + ++#define SOL_IP 0 ++#define SOL_IPV6 41 ++#define SOL_ICMPV6 58 ++ + #define SOL_RAW 255 + #define SOL_DECNET 261 + #define SOL_X25 262 +diff -Nur musl-0.9.15/include/sys/sysctl.h musl-git/include/sys/sysctl.h +--- musl-0.9.15/include/sys/sysctl.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/sysctl.h 1970-01-01 01:00:00.000000000 +0100 +@@ -1,17 +0,0 @@ +-#ifndef _SYS_SYSCTL_H +-#define _SYS_SYSCTL_H +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-#define __NEED_size_t +-#include +- +-int sysctl (int *, int, void *, size_t *, void *, size_t); +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif +diff -Nur musl-0.9.15/include/sys/time.h musl-git/include/sys/time.h +--- musl-0.9.15/include/sys/time.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/time.h 2014-02-25 15:24:14.000000000 +0100 +@@ -51,6 +51,17 @@ + ((a)->tv_usec += 1000000, (a)->tv_sec--) ) + #endif + ++#if defined(_GNU_SOURCE) ++#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \ ++ (ts)->tv_sec = (tv)->tv_sec, \ ++ (ts)->tv_nsec = (tv)->tv_usec * 1000, \ ++ (void)0 ) ++#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \ ++ (tv)->tv_sec = (ts)->tv_sec, \ ++ (tv)->tv_usec = (ts)->tv_nsec / 1000, \ ++ (void)0 ) ++#endif ++ + #ifdef __cplusplus + } + #endif +diff -Nur musl-0.9.15/include/sys/wait.h musl-git/include/sys/wait.h +--- musl-0.9.15/include/sys/wait.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/sys/wait.h 2014-02-25 15:24:14.000000000 +0100 +@@ -50,7 +50,7 @@ + #define WCOREDUMP(s) ((s) & 0x80) + #define WIFEXITED(s) (!WTERMSIG(s)) + #define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) +-#define WIFSIGNALED(s) (((s)&0xffff)-1 < 0xffu) ++#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) + #define WIFCONTINUED(s) ((s) == 0xffff) + + #ifdef __cplusplus +diff -Nur musl-0.9.15/include/syslog.h musl-git/include/syslog.h +--- musl-0.9.15/include/syslog.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/syslog.h 2014-02-25 15:24:14.000000000 +0100 +@@ -21,7 +21,7 @@ + #define LOG_MAKEPRI(f, p) (((f)<<3)|(p)) + + #define LOG_MASK(p) (1<<(p)) +-#define LOG_UPTO(p) ((1<<(p)+1)-1) ++#define LOG_UPTO(p) ((1<<((p)+1))-1) + + #define LOG_KERN (0<<3) + #define LOG_USER (1<<3) +diff -Nur musl-0.9.15/include/time.h musl-git/include/time.h +--- musl-0.9.15/include/time.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/time.h 2014-02-25 15:24:14.000000000 +0100 +@@ -125,7 +125,7 @@ + + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +-int stime(time_t *); ++int stime(const time_t *); + time_t timegm(struct tm *); + #endif + +diff -Nur musl-0.9.15/include/utmp.h musl-git/include/utmp.h +--- musl-0.9.15/include/utmp.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/utmp.h 2014-02-25 15:24:14.000000000 +0100 +@@ -10,6 +10,7 @@ + #define ACCOUNTING 9 + #define UT_NAMESIZE 32 + #define UT_HOSTSIZE 256 ++#define UT_LINESIZE 32 + + struct lastlog { + time_t ll_time; +@@ -22,6 +23,8 @@ + #define ut_addr ut_addr_v6[0] + #define utmp utmpx + #define utmpname(x) (-1) ++#define e_exit __e_exit ++#define e_termination __e_termination + + void endutent(void); + struct utmp *getutent(void); +diff -Nur musl-0.9.15/include/utmpx.h musl-git/include/utmpx.h +--- musl-0.9.15/include/utmpx.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/include/utmpx.h 2014-02-25 15:24:14.000000000 +0100 +@@ -5,6 +5,8 @@ + extern "C" { + #endif + ++#include ++ + #define __NEED_pid_t + #define __NEED_time_t + #define __NEED_suseconds_t +@@ -12,19 +14,17 @@ + + #include + +-#define UT_LINESIZE 32 +- + struct utmpx + { + short ut_type; + pid_t ut_pid; +- char ut_line[UT_LINESIZE]; ++ char ut_line[32]; + char ut_id[4]; + char ut_user[32]; + char ut_host[256]; + struct { +- short e_termination; +- short e_exit; ++ short __e_termination; ++ short __e_exit; + } ut_exit; + long ut_session; + struct timeval ut_tv; +@@ -39,7 +39,11 @@ + struct utmpx *pututxline(const struct utmpx *); + void setutxent(void); + ++#if defined(_BSD_SOURCE) | defined(_GNU_SOURCE) ++#define e_exit __e_exit ++#define e_termination __e_termination + void updwtmpx(const char *, const struct utmpx *); ++#endif + + #define EMPTY 0 + #define RUN_LVL 1 +diff -Nur musl-0.9.15/src/crypt/crypt_des.c musl-git/src/crypt/crypt_des.c +--- musl-0.9.15/src/crypt/crypt_des.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/crypt/crypt_des.c 2014-02-25 15:24:14.000000000 +0100 +@@ -692,7 +692,7 @@ + return saltbits; + } + +-static void des_setkey(const unsigned char *key, struct expanded_key *ekey) ++void __des_setkey(const unsigned char *key, struct expanded_key *ekey) + { + uint32_t k0, k1, rawkey0, rawkey1; + unsigned int shifts, round, i, ibit; +@@ -753,7 +753,7 @@ + /* + * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. + */ +-static void do_des(uint32_t l_in, uint32_t r_in, ++void __do_des(uint32_t l_in, uint32_t r_in, + uint32_t *l_out, uint32_t *r_out, + uint32_t count, uint32_t saltbits, const struct expanded_key *ekey) + { +@@ -862,7 +862,7 @@ + ((uint32_t)in[5] << 16) | + ((uint32_t)in[4] << 24); + +- do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey); ++ __do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey); + + out[0] = l_out >> 24; + out[1] = l_out >> 16; +@@ -894,7 +894,7 @@ + if (*key) + key++; + } +- des_setkey(keybuf, &ekey); ++ __des_setkey(keybuf, &ekey); + + if (*setting == _PASSWORD_EFMT1) { + /* +@@ -929,7 +929,7 @@ + q = keybuf; + while (q <= &keybuf[sizeof(keybuf) - 1] && *key) + *q++ ^= *key++ << 1; +- des_setkey(keybuf, &ekey); ++ __des_setkey(keybuf, &ekey); + } + + memcpy(output, setting, 9); +@@ -957,7 +957,7 @@ + /* + * Do it. + */ +- do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey); ++ __do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey); + + /* + * Now encode the result... +diff -Nur musl-0.9.15/src/crypt/encrypt.c musl-git/src/crypt/encrypt.c +--- musl-0.9.15/src/crypt/encrypt.c 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/crypt/encrypt.c 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,60 @@ ++#include ++#include ++#include ++ ++struct expanded_key { ++ uint32_t l[16], r[16]; ++}; ++ ++void __des_setkey(const unsigned char *key, struct expanded_key *ekey); ++void __do_des(uint32_t l_in, uint32_t r_in, ++ uint32_t *l_out, uint32_t *r_out, ++ uint32_t count, uint32_t saltbits, const struct expanded_key *ekey); ++ ++ ++static struct expanded_key __encrypt_key; ++ ++void setkey(const char *key) ++{ ++ unsigned char bkey[8]; ++ int i, j; ++ ++ for (i = 0; i < 8; i++) { ++ bkey[i] = 0; ++ for (j = 7; j >= 0; j--, key++) ++ bkey[i] |= (uint32_t)(*key & 1) << j; ++ } ++ ++ __des_setkey(bkey, &__encrypt_key); ++} ++ ++void encrypt(char *block, int edflag) ++{ ++ struct expanded_key decrypt_key, *key; ++ uint32_t b[2]; ++ int i, j; ++ char *p; ++ ++ p = block; ++ for (i = 0; i < 2; i++) { ++ b[i] = 0; ++ for (j = 31; j >= 0; j--, p++) ++ b[i] |= (uint32_t)(*p & 1) << j; ++ } ++ ++ key = &__encrypt_key; ++ if (edflag) { ++ key = &decrypt_key; ++ for (i = 0; i < 16; i++) { ++ decrypt_key.l[i] = __encrypt_key.l[15-i]; ++ decrypt_key.r[i] = __encrypt_key.r[15-i]; ++ } ++ } ++ ++ __do_des(b[0], b[1], b, b + 1, 1, 0, key); ++ ++ p = block; ++ for (i = 0; i < 2; i++) ++ for (j = 31; j >= 0; j--) ++ *p++ = b[i]>>j & 1; ++} +diff -Nur musl-0.9.15/src/fcntl/fcntl.c musl-git/src/fcntl/fcntl.c +--- musl-0.9.15/src/fcntl/fcntl.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/fcntl/fcntl.c 2014-02-25 15:24:14.000000000 +0100 +@@ -13,11 +13,11 @@ + arg = va_arg(ap, long); + va_end(ap); + if (cmd == F_SETFL) arg |= O_LARGEFILE; +- if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, arg); ++ if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, (void *)arg); + if (cmd == F_GETOWN) { + struct f_owner_ex ex; + int ret = __syscall(SYS_fcntl, fd, F_GETOWN_EX, &ex); +- if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, arg); ++ if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, (void *)arg); + if (ret) return __syscall_ret(ret); + return ex.type == F_OWNER_PGRP ? -ex.pid : ex.pid; + } +@@ -37,5 +37,14 @@ + if (ret >= 0) __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + return __syscall_ret(ret); + } +- return syscall(SYS_fcntl, fd, cmd, arg); ++ switch (cmd) { ++ case F_SETLK: ++ case F_SETLKW: ++ case F_GETLK: ++ case F_GETOWN_EX: ++ case F_SETOWN_EX: ++ return syscall(SYS_fcntl, fd, cmd, (void *)arg); ++ default: ++ return syscall(SYS_fcntl, fd, cmd, arg); ++ } + } +diff -Nur musl-0.9.15/src/fcntl/posix_fadvise.c musl-git/src/fcntl/posix_fadvise.c +--- musl-0.9.15/src/fcntl/posix_fadvise.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/fcntl/posix_fadvise.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,8 +1,11 @@ + #include + #include "syscall.h" ++#include "libc.h" + + int posix_fadvise(int fd, off_t base, off_t len, int advice) + { + return -(__syscall)(SYS_fadvise, fd, __SYSCALL_LL_O(base), + __SYSCALL_LL_E(len), advice); + } ++ ++LFS64(posix_fadvise); +diff -Nur musl-0.9.15/src/fcntl/posix_fallocate.c musl-git/src/fcntl/posix_fallocate.c +--- musl-0.9.15/src/fcntl/posix_fallocate.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/fcntl/posix_fallocate.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,8 +1,11 @@ + #include + #include "syscall.h" ++#include "libc.h" + + int posix_fallocate(int fd, off_t base, off_t len) + { + return -__syscall(SYS_fallocate, fd, 0, __SYSCALL_LL_E(base), + __SYSCALL_LL_E(len)); + } ++ ++LFS64(posix_fallocate); +diff -Nur musl-0.9.15/src/fenv/i386/fenv.s musl-git/src/fenv/i386/fenv.s +--- musl-0.9.15/src/fenv/i386/fenv.s 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/fenv/i386/fenv.s 2014-02-25 15:24:14.000000000 +0100 +@@ -126,7 +126,7 @@ + push %eax + push %eax + push %eax +- push %eax ++ pushl $0xffff + push %eax + pushl $0x37f + fldenv (%esp) +diff -Nur musl-0.9.15/src/fenv/mipsel-sf/fenv.sub musl-git/src/fenv/mipsel-sf/fenv.sub +--- musl-0.9.15/src/fenv/mipsel-sf/fenv.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/fenv/mipsel-sf/fenv.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++../fenv.c +diff -Nur musl-0.9.15/src/fenv/mips-sf/fenv.sub musl-git/src/fenv/mips-sf/fenv.sub +--- musl-0.9.15/src/fenv/mips-sf/fenv.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/fenv/mips-sf/fenv.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++../fenv.c +diff -Nur musl-0.9.15/src/fenv/superh/fenv.s musl-git/src/fenv/superh/fenv.s +--- musl-0.9.15/src/fenv/superh/fenv.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/fenv/superh/fenv.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,74 @@ ++.global fegetround ++.type fegetround, @function ++fegetround: ++ sts fpscr, r0 ++ rts ++ and #3, r0 ++ ++.global __fesetround ++.type __fesetround, @function ++__fesetround: ++ sts fpscr, r0 ++ or r4, r0 ++ lds r0, fpscr ++ rts ++ mov #0, r0 ++ ++.global fetestexcept ++.type fetestexcept, @function ++fetestexcept: ++ sts fpscr, r0 ++ and r4, r0 ++ rts ++ and #0x7c, r0 ++ ++.global feclearexcept ++.type feclearexcept, @function ++feclearexcept: ++ mov r4, r0 ++ and #0x7c, r0 ++ not r0, r4 ++ sts fpscr, r0 ++ and r4, r0 ++ lds r0, fpscr ++ rts ++ mov #0, r0 ++ ++.global feraiseexcept ++.type feraiseexcept, @function ++feraiseexcept: ++ mov r4, r0 ++ and #0x7c, r0 ++ sts fpscr, r4 ++ or r4, r0 ++ lds r0, fpscr ++ rts ++ mov #0, r0 ++ ++.global fegetenv ++.type fegetenv, @function ++fegetenv: ++ sts fpscr, r0 ++ mov.l r0, @r4 ++ rts ++ mov #0, r0 ++ ++.global fesetenv ++.type fesetenv, @function ++fesetenv: ++ mov r4, r0 ++ cmp/eq #-1, r0 ++ bf 1f ++ ++ ! the default environment is complicated by the fact that we need to ++ ! preserve the current precision bit, which we do not know a priori ++ sts fpscr, r0 ++ mov #8, r1 ++ swap.w r1, r1 ++ bra 2f ++ and r1, r0 ++ ++1: mov.l @r4, r0 ! non-default environment ++2: lds r0, fpscr ++ rts ++ mov #0, r0 +diff -Nur musl-0.9.15/src/fenv/x32/fenv.s musl-git/src/fenv/x32/fenv.s +--- musl-0.9.15/src/fenv/x32/fenv.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/fenv/x32/fenv.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,97 @@ ++.global feclearexcept ++.type feclearexcept,@function ++feclearexcept: ++ # maintain exceptions in the sse mxcsr, clear x87 exceptions ++ mov %edi,%ecx ++ and $0x3f,%ecx ++ fnstsw %ax ++ test %eax,%ecx ++ jz 1f ++ fnclex ++1: stmxcsr -8(%esp) ++ and $0x3f,%eax ++ or %eax,-8(%esp) ++ test %ecx,-8(%esp) ++ jz 1f ++ not %ecx ++ and %ecx,-8(%esp) ++ ldmxcsr -8(%esp) ++1: xor %eax,%eax ++ ret ++ ++.global feraiseexcept ++.type feraiseexcept,@function ++feraiseexcept: ++ and $0x3f,%edi ++ stmxcsr -8(%esp) ++ or %edi,-8(%esp) ++ ldmxcsr -8(%esp) ++ xor %eax,%eax ++ ret ++ ++.global __fesetround ++.type __fesetround,@function ++__fesetround: ++ push %rax ++ xor %eax,%eax ++ mov %edi,%ecx ++ fnstcw (%esp) ++ andb $0xf3,1(%esp) ++ or %ch,1(%esp) ++ fldcw (%esp) ++ stmxcsr (%esp) ++ shl $3,%ch ++ andb $0x9f,1(%esp) ++ or %ch,1(%esp) ++ ldmxcsr (%esp) ++ pop %rcx ++ ret ++ ++.global fegetround ++.type fegetround,@function ++fegetround: ++ push %rax ++ stmxcsr (%esp) ++ pop %rax ++ shr $3,%eax ++ and $0xc00,%eax ++ ret ++ ++.global fegetenv ++.type fegetenv,@function ++fegetenv: ++ xor %eax,%eax ++ fnstenv (%edi) ++ stmxcsr 28(%edi) ++ ret ++ ++.global fesetenv ++.type fesetenv,@function ++fesetenv: ++ xor %eax,%eax ++ inc %edi ++ jz 1f ++ fldenv -1(%edi) ++ ldmxcsr 27(%edi) ++ ret ++1: push %rax ++ push %rax ++ pushq $0xffff ++ pushq $0x37f ++ fldenv (%esp) ++ pushq $0x1f80 ++ ldmxcsr (%esp) ++ add $40,%esp ++ ret ++ ++.global fetestexcept ++.type fetestexcept,@function ++fetestexcept: ++ and $0x3f,%edi ++ push %rax ++ stmxcsr (%esp) ++ pop %rsi ++ fnstsw %ax ++ or %esi,%eax ++ and %edi,%eax ++ ret +diff -Nur musl-0.9.15/src/fenv/x86_64/fenv.s musl-git/src/fenv/x86_64/fenv.s +--- musl-0.9.15/src/fenv/x86_64/fenv.s 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/fenv/x86_64/fenv.s 2014-02-25 15:24:14.000000000 +0100 +@@ -76,7 +76,7 @@ + ret + 1: push %rax + push %rax +- push %rax ++ pushq $0xffff + pushq $0x37f + fldenv (%rsp) + pushq $0x1f80 +diff -Nur musl-0.9.15/src/internal/stdio_impl.h musl-git/src/internal/stdio_impl.h +--- musl-0.9.15/src/internal/stdio_impl.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/internal/stdio_impl.h 2014-02-25 15:24:14.000000000 +0100 +@@ -17,6 +17,7 @@ + #define F_EOF 16 + #define F_ERR 32 + #define F_SVB 64 ++#define F_APP 128 + + struct _IO_FILE { + unsigned flags; +diff -Nur musl-0.9.15/src/internal/superh/syscall.s musl-git/src/internal/superh/syscall.s +--- musl-0.9.15/src/internal/superh/syscall.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/internal/superh/syscall.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++.global __syscall ++.type __syscall, @function ++__syscall: ++ ! The kernel syscall entry point documents that the trap number indicates ++ ! the number of arguments being passed, but it then ignores that information. ++ ! Since we do not actually know how many arguments are being passed, we will ++ ! say there are six, since that is the maximum we support here. ++ mov r4, r3 ++ mov r5, r4 ++ mov r6, r5 ++ mov r7, r6 ++ mov.l @r15, r7 ++ mov.l @(4,r15), r0 ++ mov.l @(8,r15), r1 ++ trapa #22 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ rts ++ nop +diff -Nur musl-0.9.15/src/internal/syscall.h musl-git/src/internal/syscall.h +--- musl-0.9.15/src/internal/syscall.h 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/internal/syscall.h 2014-02-25 15:24:14.000000000 +0100 +@@ -1,22 +1,28 @@ + #ifndef _INTERNAL_SYSCALL_H + #define _INTERNAL_SYSCALL_H + +-#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303) +-__attribute__((visibility("protected"))) +-#endif +-long __syscall_ret(unsigned long), __syscall(long, ...), +- __syscall_cp(long, long, long, long, long, long, long); +- + #include + #include "syscall_arch.h" + +-#define __syscall1(n,a) __syscall1(n,(long)(a)) +-#define __syscall2(n,a,b) __syscall2(n,(long)(a),(long)(b)) +-#define __syscall3(n,a,b,c) __syscall3(n,(long)(a),(long)(b),(long)(c)) +-#define __syscall4(n,a,b,c,d) __syscall4(n,(long)(a),(long)(b),(long)(c),(long)(d)) +-#define __syscall5(n,a,b,c,d,e) __syscall5(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e)) +-#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f)) +-#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f),(long)g) ++#ifndef __scc ++#define __scc(X) ((long) (X)) ++typedef long syscall_arg_t; ++#endif ++ ++#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303) ++__attribute__((visibility("protected"))) ++#endif ++long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...), ++ __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, ++ syscall_arg_t, syscall_arg_t, syscall_arg_t); ++ ++#define __syscall1(n,a) __syscall1(n,__scc(a)) ++#define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b)) ++#define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c)) ++#define __syscall4(n,a,b,c,d) __syscall4(n,__scc(a),__scc(b),__scc(c),__scc(d)) ++#define __syscall5(n,a,b,c,d,e) __syscall5(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) ++#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) ++#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) + + #define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n + #define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) +@@ -31,12 +37,12 @@ + #define socketcall_cp __socketcall_cp + + #define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0) +-#define __syscall_cp1(n,a) (__syscall_cp)(n,(long)(a),0,0,0,0,0) +-#define __syscall_cp2(n,a,b) (__syscall_cp)(n,(long)(a),(long)(b),0,0,0,0) +-#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),0,0,0) +-#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),0,0) +-#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),0) +-#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f)) ++#define __syscall_cp1(n,a) (__syscall_cp)(n,__scc(a),0,0,0,0,0) ++#define __syscall_cp2(n,a,b) (__syscall_cp)(n,__scc(a),__scc(b),0,0,0,0) ++#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),0,0,0) ++#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),0,0) ++#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0) ++#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) + + #define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) + #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) +diff -Nur musl-0.9.15/src/internal/x32/syscall.s musl-git/src/internal/x32/syscall.s +--- musl-0.9.15/src/internal/x32/syscall.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/internal/x32/syscall.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,12 @@ ++.global __syscall ++.type __syscall,@function ++__syscall: ++ movq %rdi,%rax ++ movq %rsi,%rdi ++ movq %rdx,%rsi ++ movq %rcx,%rdx ++ movq %r8,%r10 ++ movq %r9,%r8 ++ movq 8(%rsp),%r9 ++ syscall ++ ret +diff -Nur musl-0.9.15/src/ipc/semctl.c musl-git/src/ipc/semctl.c +--- musl-0.9.15/src/ipc/semctl.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/ipc/semctl.c 2014-02-25 15:24:14.000000000 +0100 +@@ -3,16 +3,22 @@ + #include "syscall.h" + #include "ipc.h" + ++union semun { ++ int val; ++ struct semid_ds *buf; ++ unsigned short *array; ++}; ++ + int semctl(int id, int num, int cmd, ...) + { +- long arg; ++ union semun arg; + va_list ap; + va_start(ap, cmd); +- arg = va_arg(ap, long); ++ arg = va_arg(ap, union semun); + va_end(ap); + #ifdef SYS_semctl +- return syscall(SYS_semctl, id, num, cmd | IPC_64, arg); ++ return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf); + #else +- return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg); ++ return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf); + #endif + } +diff -Nur musl-0.9.15/src/ldso/dladdr.c musl-git/src/ldso/dladdr.c +--- musl-0.9.15/src/ldso/dladdr.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/ldso/dladdr.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,9 +1,9 @@ + #define _GNU_SOURCE + #include + +-int __dladdr(void *, Dl_info *); ++int __dladdr(const void *, Dl_info *); + +-int dladdr(void *addr, Dl_info *info) ++int dladdr(const void *addr, Dl_info *info) + { + return __dladdr(addr, info); + } +diff -Nur musl-0.9.15/src/ldso/dynlink.c musl-git/src/ldso/dynlink.c +--- musl-0.9.15/src/ldso/dynlink.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/ldso/dynlink.c 2014-02-25 15:24:14.000000000 +0100 +@@ -253,7 +253,8 @@ + name = strings + sym->st_name; + ctx = IS_COPY(type) ? head->next : head; + def = find_sym(ctx, name, IS_PLT(type)); +- if (!def.sym && sym->st_info>>4 != STB_WEAK) { ++ if (!def.sym && (sym->st_shndx != SHN_UNDEF ++ || sym->st_info>>4 != STB_WEAK)) { + snprintf(errbuf, sizeof errbuf, + "Error relocating %s: %s: symbol not found", + dso->name, name); +@@ -1331,7 +1332,7 @@ + return 0; + } + +-int __dladdr(void *addr, Dl_info *info) ++int __dladdr(const void *addr, Dl_info *info) + { + struct dso *p; + Sym *sym; +@@ -1441,7 +1442,7 @@ + { + return 0; + } +-int __dladdr (void *addr, Dl_info *info) ++int __dladdr (const void *addr, Dl_info *info) + { + return 0; + } +diff -Nur musl-0.9.15/src/ldso/superh/dlsym.s musl-git/src/ldso/superh/dlsym.s +--- musl-0.9.15/src/ldso/superh/dlsym.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/ldso/superh/dlsym.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,10 @@ ++.text ++.global dlsym ++.type dlsym, @function ++dlsym: ++ mov.l L1, r0 ++ braf r0 ++1: mov.l @r15, r6 ++ ++.align 2 ++L1: .long __dlsym@PLT-(1b-.) +diff -Nur musl-0.9.15/src/ldso/superh/start.s musl-git/src/ldso/superh/start.s +--- musl-0.9.15/src/ldso/superh/start.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/ldso/superh/start.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,26 @@ ++.text ++.global _start ++.type _start, @function ++_start: ++ mov.l @r15, r4 ++ mov r15, r5 ++ mov.l L1, r0 ++ bsrf r0 ++ add #4, r5 ++ ++2: mov r0, r2 ++ mov.l @r15+, r1 ++1: mov.l @r15+, r0 ++ cmp/eq #-1, r0 ++ bt/s 1b ++ add #-1, r1 ++ ++ add #1, r1 ++ mov.l r0, @-r15 ++ mov.l r1, @-r15 ++ mov #0, r4 ++ jmp @r2 ++ nop ++ ++.align 2 ++L1: .long __dynlink@PLT-(2b-.) +diff -Nur musl-0.9.15/src/ldso/x32/dlsym.s musl-git/src/ldso/x32/dlsym.s +--- musl-0.9.15/src/ldso/x32/dlsym.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/ldso/x32/dlsym.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,6 @@ ++.text ++.global dlsym ++.type dlsym,@function ++dlsym: ++ mov (%rsp),%rdx ++ jmp __dlsym +diff -Nur musl-0.9.15/src/ldso/x32/start.s musl-git/src/ldso/x32/start.s +--- musl-0.9.15/src/ldso/x32/start.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/ldso/x32/start.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,24 @@ ++.text ++.global _start ++_start: ++ mov (%rsp),%rdi /* move argc into 1st argument slot */ ++ lea 4(%rsp),%rsi /* move argv into 2nd argument slot */ ++ call __dynlink ++ /* in case the dynlinker was called directly, it sets the "consumed" ++ argv values to -1. so we must loop over the array as long as -1 ++ is in the top argv slot, decrement argc, and then set the stackpointer ++ to the new argc as well as argc's new value. ++ as the x32 abi has longs in the argv array, we cannot use push/pop.*/ ++ movl (%rsp),%edi /* copy argc into edi */ ++ xor %rdx,%rdx /* we use rdx as an offset to the current argv member */ ++1: dec %edi ++ addl $4, %edx ++ movl (%rsp, %rdx), %esi ++ cmp $-1,%esi ++ jz 1b ++ inc %edi ++ subl $4, %edx ++ lea (%rsp, %rdx), %rsp /* set rsp to new argv[-1] */ ++ movl %edi, (%rsp) /* write new argc there */ ++ xor %edx,%edx ++ jmp *%rax +diff -Nur musl-0.9.15/src/linux/clone.c musl-git/src/linux/clone.c +--- musl-0.9.15/src/linux/clone.c 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/linux/clone.c 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,19 @@ ++#include ++#include ++#include "pthread_impl.h" ++#include "syscall.h" ++ ++int clone(int (*func)(void *), void *stack, int flags, void *arg, ...) ++{ ++ va_list ap; ++ pid_t *ptid, *ctid; ++ void *tls; ++ ++ va_start(ap, arg); ++ ptid = va_arg(ap, pid_t *); ++ tls = va_arg(ap, void *); ++ ctid = va_arg(ap, pid_t *); ++ va_end(ap); ++ ++ return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid)); ++} +diff -Nur musl-0.9.15/src/linux/fallocate.c musl-git/src/linux/fallocate.c +--- musl-0.9.15/src/linux/fallocate.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/linux/fallocate.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,9 +1,13 @@ + #define _GNU_SOURCE + #include + #include "syscall.h" ++#include "libc.h" + + int fallocate(int fd, int mode, off_t base, off_t len) + { + return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base), + __SYSCALL_LL_E(len)); + } ++ ++#undef fallocate64 ++LFS64(fallocate); +diff -Nur musl-0.9.15/src/linux/inotify.c musl-git/src/linux/inotify.c +--- musl-0.9.15/src/linux/inotify.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/linux/inotify.c 2014-02-25 15:24:14.000000000 +0100 +@@ -15,7 +15,7 @@ + return syscall(SYS_inotify_add_watch, fd, pathname, mask); + } + +-int inotify_rm_watch(int fd, uint32_t wd) ++int inotify_rm_watch(int fd, int wd) + { + return syscall(SYS_inotify_rm_watch, fd, wd); + } +diff -Nur musl-0.9.15/src/linux/remap_file_pages.c musl-git/src/linux/remap_file_pages.c +--- musl-0.9.15/src/linux/remap_file_pages.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/linux/remap_file_pages.c 2014-02-25 15:24:14.000000000 +0100 +@@ -2,7 +2,7 @@ + #include + #include "syscall.h" + +-int remap_file_pages(void *addr, size_t size, int prot, ssize_t pgoff, int flags) ++int remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags) + { + return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags); + } +diff -Nur musl-0.9.15/src/linux/stime.c musl-git/src/linux/stime.c +--- musl-0.9.15/src/linux/stime.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/linux/stime.c 2014-02-25 15:24:14.000000000 +0100 +@@ -2,7 +2,7 @@ + #include + #include + +-int stime(time_t *t) ++int stime(const time_t *t) + { + struct timeval tv = { .tv_sec = *t, .tv_usec = 0 }; + return settimeofday(&tv, (void *)0); +diff -Nur musl-0.9.15/src/locale/wcsxfrm.c musl-git/src/locale/wcsxfrm.c +--- musl-0.9.15/src/locale/wcsxfrm.c 2014-01-03 21:12:17.000000000 +0100 ++++ musl-git/src/locale/wcsxfrm.c 2014-02-25 15:24:14.000000000 +0100 +@@ -6,10 +6,12 @@ + size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc) + { + size_t l = wcslen(src); +- if (l >= n) { ++ if (l < n) { ++ wmemcpy(dest, src, l+1); ++ } else if (n) { + wmemcpy(dest, src, n-1); + dest[n-1] = 0; +- } else wcscpy(dest, src); ++ } + return l; + } + +diff -Nur musl-0.9.15/src/math/i386/remainderf.s musl-git/src/math/i386/remainderf.s +--- musl-0.9.15/src/math/i386/remainderf.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/math/i386/remainderf.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,6 +1,9 @@ + .global remainderf + .type remainderf,@function + remainderf: ++.weak dremf ++.type dremf,@function ++dremf: + flds 8(%esp) + flds 4(%esp) + 1: fprem1 +diff -Nur musl-0.9.15/src/math/i386/remainder.s musl-git/src/math/i386/remainder.s +--- musl-0.9.15/src/math/i386/remainder.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/math/i386/remainder.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,6 +1,9 @@ + .global remainder + .type remainder,@function + remainder: ++.weak drem ++.type drem,@function ++drem: + fldl 12(%esp) + fldl 4(%esp) + 1: fprem1 +diff -Nur musl-0.9.15/src/math/x32/acosl.s musl-git/src/math/x32/acosl.s +--- musl-0.9.15/src/math/x32/acosl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/acosl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,16 @@ ++# see ../i386/acos.s ++ ++.global acosl ++.type acosl,@function ++acosl: ++ fldt 8(%esp) ++1: fld %st(0) ++ fld1 ++ fsub %st(0),%st(1) ++ fadd %st(2) ++ fmulp ++ fsqrt ++ fabs ++ fxch %st(1) ++ fpatan ++ ret +diff -Nur musl-0.9.15/src/math/x32/asinl.s musl-git/src/math/x32/asinl.s +--- musl-0.9.15/src/math/x32/asinl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/asinl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,12 @@ ++.global asinl ++.type asinl,@function ++asinl: ++ fldt 8(%esp) ++1: fld %st(0) ++ fld1 ++ fsub %st(0),%st(1) ++ fadd %st(2) ++ fmulp ++ fsqrt ++ fpatan ++ ret +diff -Nur musl-0.9.15/src/math/x32/atan2l.s musl-git/src/math/x32/atan2l.s +--- musl-0.9.15/src/math/x32/atan2l.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/atan2l.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global atan2l ++.type atan2l,@function ++atan2l: ++ fldt 8(%esp) ++ fldt 24(%esp) ++ fpatan ++ ret +diff -Nur musl-0.9.15/src/math/x32/atanl.s musl-git/src/math/x32/atanl.s +--- musl-0.9.15/src/math/x32/atanl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/atanl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global atanl ++.type atanl,@function ++atanl: ++ fldt 8(%esp) ++ fld1 ++ fpatan ++ ret +diff -Nur musl-0.9.15/src/math/x32/ceill.s musl-git/src/math/x32/ceill.s +--- musl-0.9.15/src/math/x32/ceill.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/ceill.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++# see floorl.s +diff -Nur musl-0.9.15/src/math/x32/exp2l.s musl-git/src/math/x32/exp2l.s +--- musl-0.9.15/src/math/x32/exp2l.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/exp2l.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,90 @@ ++.global expm1l ++.type expm1l,@function ++expm1l: ++ fldt 8(%esp) ++ fldl2e ++ fmulp ++ movl $0xc2820000,-4(%esp) ++ flds -4(%esp) ++ fucomp %st(1) ++ fnstsw %ax ++ sahf ++ fld1 ++ jb 1f ++ # x*log2e <= -65, return -1 without underflow ++ fstp %st(1) ++ fchs ++ ret ++1: fld %st(1) ++ fabs ++ fucom %st(1) ++ fnstsw %ax ++ fstp %st(0) ++ fstp %st(0) ++ sahf ++ ja 1f ++ f2xm1 ++ ret ++1: push %rax ++ call 1f ++ pop %rax ++ fld1 ++ fsubrp ++ ret ++ ++.global exp2l ++.type exp2l,@function ++exp2l: ++ fldt 8(%esp) ++1: fld %st(0) ++ sub $16,%esp ++ fstpt (%esp) ++ mov 8(%esp),%ax ++ and $0x7fff,%ax ++ cmp $0x3fff+13,%ax ++ jb 4f # |x| < 8192 ++ cmp $0x3fff+15,%ax ++ jae 3f # |x| >= 32768 ++ fsts (%esp) ++ cmpl $0xc67ff800,(%esp) ++ jb 2f # x > -16382 ++ movl $0x5f000000,(%esp) ++ flds (%esp) # 0x1p63 ++ fld %st(1) ++ fsub %st(1) ++ faddp ++ fucomp %st(1) ++ fnstsw ++ sahf ++ je 2f # x - 0x1p63 + 0x1p63 == x ++ movl $1,(%esp) ++ flds (%esp) # 0x1p-149 ++ fdiv %st(1) ++ fstps (%esp) # raise underflow ++2: fld1 ++ fld %st(1) ++ frndint ++ fxch %st(2) ++ fsub %st(2) # st(0)=x-rint(x), st(1)=1, st(2)=rint(x) ++ f2xm1 ++ faddp # 2^(x-rint(x)) ++1: fscale ++ fstp %st(1) ++ add $16,%esp ++ ret ++3: xor %eax,%eax ++4: cmp $0x3fff-64,%ax ++ fld1 ++ jb 1b # |x| < 0x1p-64 ++ fstpt (%esp) ++ fistl 8(%esp) ++ fildl 8(%esp) ++ fsubrp %st(1) ++ addl $0x3fff,8(%esp) ++ f2xm1 ++ fld1 ++ faddp # 2^(x-rint(x)) ++ fldt (%esp) # 2^rint(x) ++ fmulp ++ add $16,%esp ++ ret +diff -Nur musl-0.9.15/src/math/x32/expl.s musl-git/src/math/x32/expl.s +--- musl-0.9.15/src/math/x32/expl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/expl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,101 @@ ++# exp(x) = 2^hi + 2^hi (2^lo - 1) ++# where hi+lo = log2e*x with 128bit precision ++# exact log2e*x calculation depends on nearest rounding mode ++# using the exact multiplication method of Dekker and Veltkamp ++ ++.global expl ++.type expl,@function ++expl: ++ fldt 8(%esp) ++ ++ # interesting case: 0x1p-32 <= |x| < 16384 ++ # check if (exponent|0x8000) is in [0xbfff-32, 0xbfff+13] ++ mov 16(%esp), %ax ++ or $0x8000, %ax ++ sub $0xbfdf, %ax ++ cmp $45, %ax ++ jbe 2f ++ test %ax, %ax ++ fld1 ++ js 1f ++ # if |x|>=0x1p14 or nan return 2^trunc(x) ++ fscale ++ fstp %st(1) ++ ret ++ # if |x|<0x1p-32 return 1+x ++1: faddp ++ ret ++ ++ # should be 0x1.71547652b82fe178p0L == 0x3fff b8aa3b29 5c17f0bc ++ # it will be wrong on non-nearest rounding mode ++2: fldl2e ++ sub $48, %esp ++ # hi = log2e_hi*x ++ # 2^hi = exp2l(hi) ++ fmul %st(1),%st ++ fld %st(0) ++ fstpt (%esp) ++ fstpt 16(%esp) ++ fstpt 32(%esp) ++ call exp2l ++ # if 2^hi == inf return 2^hi ++ fld %st(0) ++ fstpt (%esp) ++ cmpw $0x7fff, 8(%esp) ++ je 1f ++ fldt 32(%esp) ++ fldt 16(%esp) ++ # fpu stack: 2^hi x hi ++ # exact mult: x*log2e ++ fld %st(1) ++ # c = 0x1p32+1 ++ movq $0x41f0000000100000,%rax ++ pushq %rax ++ fldl (%esp) ++ # xh = x - c*x + c*x ++ # xl = x - xh ++ fmulp ++ fld %st(2) ++ fsub %st(1), %st ++ faddp ++ fld %st(2) ++ fsub %st(1), %st ++ # yh = log2e_hi - c*log2e_hi + c*log2e_hi ++ movq $0x3ff7154765200000,%rax ++ pushq %rax ++ fldl (%esp) ++ # fpu stack: 2^hi x hi xh xl yh ++ # lo = hi - xh*yh + xl*yh ++ fld %st(2) ++ fmul %st(1), %st ++ fsubp %st, %st(4) ++ fmul %st(1), %st ++ faddp %st, %st(3) ++ # yl = log2e_hi - yh ++ movq $0x3de705fc2f000000,%rax ++ pushq %rax ++ fldl (%esp) ++ # fpu stack: 2^hi x lo xh xl yl ++ # lo += xh*yl + xl*yl ++ fmul %st, %st(2) ++ fmulp %st, %st(1) ++ fxch %st(2) ++ faddp ++ faddp ++ # log2e_lo ++ movq $0xbfbe,%rax ++ pushq %rax ++ movq $0x82f0025f2dc582ee,%rax ++ pushq %rax ++ fldt (%esp) ++ add $40,%esp ++ # fpu stack: 2^hi x lo log2e_lo ++ # lo += log2e_lo*x ++ # return 2^hi + 2^hi (2^lo - 1) ++ fmulp %st, %st(2) ++ faddp ++ f2xm1 ++ fmul %st(1), %st ++ faddp ++1: add $48, %esp ++ ret +diff -Nur musl-0.9.15/src/math/x32/expm1l.s musl-git/src/math/x32/expm1l.s +--- musl-0.9.15/src/math/x32/expm1l.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/expm1l.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++# see exp2l.s +diff -Nur musl-0.9.15/src/math/x32/fabsf.s musl-git/src/math/x32/fabsf.s +--- musl-0.9.15/src/math/x32/fabsf.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/fabsf.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global fabsf ++.type fabsf,@function ++fabsf: ++ mov $0x7fffffff,%eax ++ movq %rax,%xmm1 ++ andps %xmm1,%xmm0 ++ ret +diff -Nur musl-0.9.15/src/math/x32/fabsl.s musl-git/src/math/x32/fabsl.s +--- musl-0.9.15/src/math/x32/fabsl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/fabsl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,6 @@ ++.global fabsl ++.type fabsl,@function ++fabsl: ++ fldt 8(%esp) ++ fabs ++ ret +diff -Nur musl-0.9.15/src/math/x32/fabs.s musl-git/src/math/x32/fabs.s +--- musl-0.9.15/src/math/x32/fabs.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/fabs.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,9 @@ ++.global fabs ++.type fabs,@function ++fabs: ++ xor %eax,%eax ++ dec %rax ++ shr %rax ++ movq %rax,%xmm1 ++ andpd %xmm1,%xmm0 ++ ret +diff -Nur musl-0.9.15/src/math/x32/floorl.s musl-git/src/math/x32/floorl.s +--- musl-0.9.15/src/math/x32/floorl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/floorl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,27 @@ ++.global floorl ++.type floorl,@function ++floorl: ++ fldt 8(%esp) ++1: mov $0x7,%al ++1: fstcw 8(%esp) ++ mov 9(%esp),%ah ++ mov %al,9(%esp) ++ fldcw 8(%esp) ++ frndint ++ mov %ah,9(%esp) ++ fldcw 8(%esp) ++ ret ++ ++.global ceill ++.type ceill,@function ++ceill: ++ fldt 8(%esp) ++ mov $0xb,%al ++ jmp 1b ++ ++.global truncl ++.type truncl,@function ++truncl: ++ fldt 8(%esp) ++ mov $0xf,%al ++ jmp 1b +diff -Nur musl-0.9.15/src/math/x32/fmodl.s musl-git/src/math/x32/fmodl.s +--- musl-0.9.15/src/math/x32/fmodl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/fmodl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,11 @@ ++.global fmodl ++.type fmodl,@function ++fmodl: ++ fldt 24(%esp) ++ fldt 8(%esp) ++1: fprem ++ fstsw %ax ++ sahf ++ jp 1b ++ fstp %st(1) ++ ret +diff -Nur musl-0.9.15/src/math/x32/llrintf.s musl-git/src/math/x32/llrintf.s +--- musl-0.9.15/src/math/x32/llrintf.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/llrintf.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global llrintf ++.type llrintf,@function ++llrintf: ++ cvtss2si %xmm0,%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/llrintl.s musl-git/src/math/x32/llrintl.s +--- musl-0.9.15/src/math/x32/llrintl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/llrintl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global llrintl ++.type llrintl,@function ++llrintl: ++ fldt 8(%esp) ++ fistpll 8(%esp) ++ mov 8(%esp),%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/llrint.s musl-git/src/math/x32/llrint.s +--- musl-0.9.15/src/math/x32/llrint.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/llrint.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global llrint ++.type llrint,@function ++llrint: ++ cvtsd2si %xmm0,%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/log10l.s musl-git/src/math/x32/log10l.s +--- musl-0.9.15/src/math/x32/log10l.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/log10l.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global log10l ++.type log10l,@function ++log10l: ++ fldlg2 ++ fldt 8(%esp) ++ fyl2x ++ ret +diff -Nur musl-0.9.15/src/math/x32/log1pl.s musl-git/src/math/x32/log1pl.s +--- musl-0.9.15/src/math/x32/log1pl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/log1pl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,15 @@ ++.global log1pl ++.type log1pl,@function ++log1pl: ++ mov 14(%esp),%eax ++ fldln2 ++ and $0x7fffffff,%eax ++ fldt 8(%esp) ++ cmp $0x3ffd9400,%eax ++ ja 1f ++ fyl2xp1 ++ ret ++1: fld1 ++ faddp ++ fyl2x ++ ret +diff -Nur musl-0.9.15/src/math/x32/log2l.s musl-git/src/math/x32/log2l.s +--- musl-0.9.15/src/math/x32/log2l.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/log2l.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global log2l ++.type log2l,@function ++log2l: ++ fld1 ++ fldt 8(%esp) ++ fyl2x ++ ret +diff -Nur musl-0.9.15/src/math/x32/logl.s musl-git/src/math/x32/logl.s +--- musl-0.9.15/src/math/x32/logl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/logl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global logl ++.type logl,@function ++logl: ++ fldln2 ++ fldt 8(%esp) ++ fyl2x ++ ret +diff -Nur musl-0.9.15/src/math/x32/lrintf.s musl-git/src/math/x32/lrintf.s +--- musl-0.9.15/src/math/x32/lrintf.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/lrintf.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global lrintf ++.type lrintf,@function ++lrintf: ++ cvtss2si %xmm0,%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/lrintl.s musl-git/src/math/x32/lrintl.s +--- musl-0.9.15/src/math/x32/lrintl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/lrintl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,7 @@ ++.global lrintl ++.type lrintl,@function ++lrintl: ++ fldt 8(%esp) ++ fistpll 8(%esp) ++ mov 8(%esp),%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/lrint.s musl-git/src/math/x32/lrint.s +--- musl-0.9.15/src/math/x32/lrint.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/lrint.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global lrint ++.type lrint,@function ++lrint: ++ cvtsd2si %xmm0,%rax ++ ret +diff -Nur musl-0.9.15/src/math/x32/remainderl.s musl-git/src/math/x32/remainderl.s +--- musl-0.9.15/src/math/x32/remainderl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/remainderl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,11 @@ ++.global remainderl ++.type remainderl,@function ++remainderl: ++ fldt 24(%esp) ++ fldt 8(%esp) ++1: fprem1 ++ fstsw %ax ++ sahf ++ jp 1b ++ fstp %st(1) ++ ret +diff -Nur musl-0.9.15/src/math/x32/rintl.s musl-git/src/math/x32/rintl.s +--- musl-0.9.15/src/math/x32/rintl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/rintl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,6 @@ ++.global rintl ++.type rintl,@function ++rintl: ++ fldt 8(%esp) ++ frndint ++ ret +diff -Nur musl-0.9.15/src/math/x32/sqrtf.s musl-git/src/math/x32/sqrtf.s +--- musl-0.9.15/src/math/x32/sqrtf.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/sqrtf.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,4 @@ ++.global sqrtf ++.type sqrtf,@function ++sqrtf: sqrtss %xmm0, %xmm0 ++ ret +diff -Nur musl-0.9.15/src/math/x32/sqrtl.s musl-git/src/math/x32/sqrtl.s +--- musl-0.9.15/src/math/x32/sqrtl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/sqrtl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global sqrtl ++.type sqrtl,@function ++sqrtl: fldt 8(%esp) ++ fsqrt ++ ret +diff -Nur musl-0.9.15/src/math/x32/sqrt.s musl-git/src/math/x32/sqrt.s +--- musl-0.9.15/src/math/x32/sqrt.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/sqrt.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,4 @@ ++.global sqrt ++.type sqrt,@function ++sqrt: sqrtsd %xmm0, %xmm0 ++ ret +diff -Nur musl-0.9.15/src/math/x32/truncl.s musl-git/src/math/x32/truncl.s +--- musl-0.9.15/src/math/x32/truncl.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/math/x32/truncl.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++# see floorl.s +diff -Nur musl-0.9.15/src/misc/nftw.c musl-git/src/misc/nftw.c +--- musl-0.9.15/src/misc/nftw.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/misc/nftw.c 2014-02-25 15:24:14.000000000 +0100 +@@ -46,8 +46,7 @@ + type = FTW_F; + } + +- if ((flags & FTW_MOUNT) && h +- && (st.st_dev != h->dev || st.st_ino != h->ino)) ++ if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev) + return 0; + + new.chain = h; +diff -Nur musl-0.9.15/src/network/accept4.c musl-git/src/network/accept4.c +--- musl-0.9.15/src/network/accept4.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/network/accept4.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,9 +1,20 @@ + #define _GNU_SOURCE + #include ++#include ++#include + #include "syscall.h" + #include "libc.h" + + int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int flg) + { +- return socketcall_cp(accept4, fd, addr, len, flg, 0, 0); ++ if (!flg) return accept(fd, addr, len); ++ int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0); ++ if (ret>=0 || (errno != ENOSYS && errno != EINVAL)) return ret; ++ ret = accept(fd, addr, len); ++ if (ret<0) return ret; ++ if (flg & SOCK_CLOEXEC) ++ __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); ++ if (flg & SOCK_NONBLOCK) ++ __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); ++ return ret; + } +diff -Nur musl-0.9.15/src/network/inet_legacy.c musl-git/src/network/inet_legacy.c +--- musl-0.9.15/src/network/inet_legacy.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/network/inet_legacy.c 2014-02-25 15:24:14.000000000 +0100 +@@ -16,9 +16,8 @@ + return 1; + } + +-struct in_addr inet_makeaddr(int net, int host) ++struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) + { +- uint32_t n = net, h = host; + if (n < 256) h |= n<<24; + else if (n < 65536) h |= n<<16; + else h |= n<<8; +diff -Nur musl-0.9.15/src/network/proto.c musl-git/src/network/proto.c +--- musl-0.9.15/src/network/proto.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/network/proto.c 2014-02-25 15:24:14.000000000 +0100 +@@ -4,7 +4,7 @@ + /* do we really need all these?? */ + + static int idx; +-static const unsigned char protos[][6] = { ++static const unsigned char protos[][8] = { + "\000ip", + "\001icmp", + "\002igmp", +@@ -13,7 +13,9 @@ + "\014pup", + "\021udp", + "\026idp", +- "\377raw" ++ "\051ipv6", ++ "\072icmpv6", ++ "\377raw", + "\0\0" + }; + +diff -Nur musl-0.9.15/src/prng/random.c musl-git/src/prng/random.c +--- musl-0.9.15/src/prng/random.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/prng/random.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,10 +1,3 @@ +-/* +- * random.c - Copyright © 2011 Szabolcs Nagy +- * Permission to use, copy, modify, and/or distribute this code +- * for any purpose with or without fee is hereby granted. +- * There is no warranty. +-*/ +- + #include + #include + #include "libc.h" +@@ -12,11 +5,7 @@ + /* + this code uses the same lagged fibonacci generator as the + original bsd random implementation except for the seeding +- +-different seeds produce different sequences with long period +-(other libcs seed the state with a park-miller generator +-when seed=0 some fail to produce good random sequence +-others produce the same sequence as another seed) ++which was broken in the original + */ + + static uint32_t init[] = { +@@ -98,6 +87,7 @@ + n = 63; + x = (uint32_t*)state + 1; + __srandom(seed); ++ savestate(); + UNLOCK(lock); + return old; + } +diff -Nur musl-0.9.15/src/process/posix_spawn.c musl-git/src/process/posix_spawn.c +--- musl-0.9.15/src/process/posix_spawn.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/process/posix_spawn.c 2014-02-25 15:24:14.000000000 +0100 +@@ -166,7 +166,7 @@ + + close(args.p[0]); + +- if (!ec) *res = pid; ++ if (!ec && res) *res = pid; + + pthread_sigmask(SIG_SETMASK, &args.oldmask, 0); + pthread_setcancelstate(cs, 0); +diff -Nur musl-0.9.15/src/process/x32/vfork.s musl-git/src/process/x32/vfork.s +--- musl-0.9.15/src/process/x32/vfork.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/process/x32/vfork.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,12 @@ ++.global __vfork ++.weak vfork ++.type __vfork,@function ++.type vfork,@function ++__vfork: ++vfork: ++ pop %rdx ++ mov $0x4000003a,%eax /* SYS_vfork */ ++ syscall ++ push %rdx ++ mov %rax,%rdi ++ jmp __syscall_ret +diff -Nur musl-0.9.15/src/setjmp/mipsel-sf/longjmp.sub musl-git/src/setjmp/mipsel-sf/longjmp.sub +--- musl-0.9.15/src/setjmp/mipsel-sf/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mipsel-sf/longjmp.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++../mips-sf/longjmp.s +diff -Nur musl-0.9.15/src/setjmp/mipsel-sf/setjmp.sub musl-git/src/setjmp/mipsel-sf/setjmp.sub +--- musl-0.9.15/src/setjmp/mipsel-sf/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mipsel-sf/setjmp.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++../mips-sf/setjmp.s +diff -Nur musl-0.9.15/src/setjmp/mips-sf/longjmp.s musl-git/src/setjmp/mips-sf/longjmp.s +--- musl-0.9.15/src/setjmp/mips-sf/longjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mips-sf/longjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,25 @@ ++.set noreorder ++ ++.global _longjmp ++.global longjmp ++.type _longjmp,@function ++.type longjmp,@function ++_longjmp: ++longjmp: ++ move $2, $5 ++ bne $2, $0, 1f ++ nop ++ addu $2, $2, 1 ++1: lw $ra, 0($4) ++ lw $sp, 4($4) ++ lw $16, 8($4) ++ lw $17, 12($4) ++ lw $18, 16($4) ++ lw $19, 20($4) ++ lw $20, 24($4) ++ lw $21, 28($4) ++ lw $22, 32($4) ++ lw $23, 36($4) ++ lw $30, 40($4) ++ jr $ra ++ lw $28, 44($4) +diff -Nur musl-0.9.15/src/setjmp/mips-sf/longjmp.sub musl-git/src/setjmp/mips-sf/longjmp.sub +--- musl-0.9.15/src/setjmp/mips-sf/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mips-sf/longjmp.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++longjmp.s +diff -Nur musl-0.9.15/src/setjmp/mips-sf/setjmp.s musl-git/src/setjmp/mips-sf/setjmp.s +--- musl-0.9.15/src/setjmp/mips-sf/setjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mips-sf/setjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,25 @@ ++.set noreorder ++ ++.global __setjmp ++.global _setjmp ++.global setjmp ++.type __setjmp,@function ++.type _setjmp,@function ++.type setjmp,@function ++__setjmp: ++_setjmp: ++setjmp: ++ sw $ra, 0($4) ++ sw $sp, 4($4) ++ sw $16, 8($4) ++ sw $17, 12($4) ++ sw $18, 16($4) ++ sw $19, 20($4) ++ sw $20, 24($4) ++ sw $21, 28($4) ++ sw $22, 32($4) ++ sw $23, 36($4) ++ sw $30, 40($4) ++ sw $28, 44($4) ++ jr $ra ++ li $2, 0 +diff -Nur musl-0.9.15/src/setjmp/mips-sf/setjmp.sub musl-git/src/setjmp/mips-sf/setjmp.sub +--- musl-0.9.15/src/setjmp/mips-sf/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/mips-sf/setjmp.sub 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1 @@ ++setjmp.s +diff -Nur musl-0.9.15/src/setjmp/superh/longjmp.s musl-git/src/setjmp/superh/longjmp.s +--- musl-0.9.15/src/setjmp/superh/longjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/superh/longjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,26 @@ ++.global _longjmp ++.global longjmp ++.type _longjmp, @function ++.type longjmp, @function ++_longjmp: ++longjmp: ++ mov.l @r4+, r8 ++ mov.l @r4+, r9 ++ mov.l @r4+, r10 ++ mov.l @r4+, r11 ++ mov.l @r4+, r12 ++ mov.l @r4+, r13 ++ mov.l @r4+, r14 ++ mov.l @r4+, r15 ++ lds.l @r4+, pr ++ fmov.s @r4+, fr12 ++ fmov.s @r4+, fr13 ++ fmov.s @r4+, fr14 ++ fmov.s @r4+, fr15 ++ ++ tst r5, r5 ++ movt r0 ++ add r5, r0 ++ ++ rts ++ nop +diff -Nur musl-0.9.15/src/setjmp/superh/setjmp.s musl-git/src/setjmp/superh/setjmp.s +--- musl-0.9.15/src/setjmp/superh/setjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/superh/setjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,25 @@ ++.global __setjmp ++.global _setjmp ++.global setjmp ++.type __setjmp, @function ++.type _setjmp, @function ++.type setjmp, @function ++__setjmp: ++_setjmp: ++setjmp: ++ add #52, r4 ++ fmov.s fr15, @-r4 ++ fmov.s fr14, @-r4 ++ fmov.s fr13, @-r4 ++ fmov.s fr12, @-r4 ++ sts.l pr, @-r4 ++ mov.l r15 @-r4 ++ mov.l r14, @-r4 ++ mov.l r13, @-r4 ++ mov.l r12, @-r4 ++ mov.l r11, @-r4 ++ mov.l r10, @-r4 ++ mov.l r9, @-r4 ++ mov.l r8, @-r4 ++ rts ++ mov #0, r0 +diff -Nur musl-0.9.15/src/setjmp/x32/longjmp.s musl-git/src/setjmp/x32/longjmp.s +--- musl-0.9.15/src/setjmp/x32/longjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/x32/longjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ ++.global _longjmp ++.global longjmp ++.type _longjmp,@function ++.type longjmp,@function ++_longjmp: ++longjmp: ++ mov %rsi,%rax /* val will be longjmp return */ ++ test %rax,%rax ++ jnz 1f ++ inc %rax /* if val==0, val=1 per longjmp semantics */ ++1: ++ mov (%rdi),%rbx /* rdi is the jmp_buf, restore regs from it */ ++ mov 8(%rdi),%rbp ++ mov 16(%rdi),%r12 ++ mov 24(%rdi),%r13 ++ mov 32(%rdi),%r14 ++ mov 40(%rdi),%r15 ++ mov 48(%rdi),%rdx /* this ends up being the stack pointer */ ++ mov %rdx,%rsp ++ mov 56(%rdi),%rdx /* this is the instruction pointer */ ++ jmp *%rdx /* goto saved address without altering rsp */ +diff -Nur musl-0.9.15/src/setjmp/x32/setjmp.s musl-git/src/setjmp/x32/setjmp.s +--- musl-0.9.15/src/setjmp/x32/setjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/setjmp/x32/setjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ ++.global __setjmp ++.global _setjmp ++.global setjmp ++.type __setjmp,@function ++.type _setjmp,@function ++.type setjmp,@function ++__setjmp: ++_setjmp: ++setjmp: ++ mov %rbx,(%rdi) /* rdi is jmp_buf, move registers onto it */ ++ mov %rbp,8(%rdi) ++ mov %r12,16(%rdi) ++ mov %r13,24(%rdi) ++ mov %r14,32(%rdi) ++ mov %r15,40(%rdi) ++ lea 8(%rsp),%rdx /* this is our rsp WITHOUT current ret addr */ ++ mov %rdx,48(%rdi) ++ mov (%rsp),%rdx /* save return addr ptr for new rip */ ++ mov %rdx,56(%rdi) ++ xor %rax,%rax /* always return 0 */ ++ ret +diff -Nur musl-0.9.15/src/signal/sigandset.c musl-git/src/signal/sigandset.c +--- musl-0.9.15/src/signal/sigandset.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/signal/sigandset.c 2014-02-25 15:24:14.000000000 +0100 +@@ -3,7 +3,7 @@ + + #define SST_SIZE (_NSIG/8/sizeof(long)) + +-int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right) ++int sigandset(sigset_t *dest, const sigset_t *left, const sigset_t *right) + { + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] & r[i]; +diff -Nur musl-0.9.15/src/signal/sigorset.c musl-git/src/signal/sigorset.c +--- musl-0.9.15/src/signal/sigorset.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/signal/sigorset.c 2014-02-25 15:24:14.000000000 +0100 +@@ -3,7 +3,7 @@ + + #define SST_SIZE (_NSIG/8/sizeof(long)) + +-int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right) ++int sigorset(sigset_t *dest, const sigset_t *left, const sigset_t *right) + { + unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; + for(; i < SST_SIZE; i++) d[i] = l[i] | r[i]; +diff -Nur musl-0.9.15/src/signal/superh/restore.s musl-git/src/signal/superh/restore.s +--- musl-0.9.15/src/signal/superh/restore.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/signal/superh/restore.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,24 @@ ++.global __restore ++.type __restore, @function ++__restore: ++ mov #119, r3 !__NR_sigreturn ++ trapa #16 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ ++.global __restore_rt ++.type __restore_rt, @function ++__restore_rt: ++ mov #100, r3 !__NR_rt_sigreturn ++ add #73, r3 ++ trapa #16 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 +diff -Nur musl-0.9.15/src/signal/superh/sigsetjmp.s musl-git/src/signal/superh/sigsetjmp.s +--- musl-0.9.15/src/signal/superh/sigsetjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/signal/superh/sigsetjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,27 @@ ++.global sigsetjmp ++.type sigsetjmp, @function ++sigsetjmp: ++ mov.l r5, @(36,r4) ++ tst r5, r5 ++ bf 2f ++ ++ sts.l pr, @-r15 ++ mov.l r4, @-r15 ++ mov r4, r6 ++ add #40, r6 ++ mov #0, r5 ++ mov #2, r4 ++ mov.l L1, r0 ++ bsrf r0 ++ nop ++1: mov.l @r15+, r4 ++ lds.l @r15+, pr ++ ++2: mov.l L2, r0 ++ braf r0 ++ nop ++3: ++ ++.align 2 ++L1: .long pthread_sigmask@PLT-(1b-.) ++L2: .long setjmp@PLT-(3b-.) +diff -Nur musl-0.9.15/src/signal/x32/restore.s musl-git/src/signal/x32/restore.s +--- musl-0.9.15/src/signal/x32/restore.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/signal/x32/restore.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,8 @@ ++.global __restore_rt ++.global __restore ++.type __restore_rt,@function ++.type __restore,@function ++__restore_rt: ++__restore: ++ movl $0x40000201, %eax /* SYS_rt_sigreturn */ ++ syscall +diff -Nur musl-0.9.15/src/signal/x32/sigsetjmp.s musl-git/src/signal/x32/sigsetjmp.s +--- musl-0.9.15/src/signal/x32/sigsetjmp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/signal/x32/sigsetjmp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,14 @@ ++/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ ++.global sigsetjmp ++.type sigsetjmp,@function ++sigsetjmp: ++ andl %esi,%esi ++ movq %rsi,64(%rdi) ++ jz 1f ++ pushq %rdi ++ leaq 72(%rdi),%rdx ++ xorl %esi,%esi ++ movl $2,%edi ++ call sigprocmask ++ popq %rdi ++1: jmp setjmp +diff -Nur musl-0.9.15/src/stdio/__fdopen.c musl-git/src/stdio/__fdopen.c +--- musl-0.9.15/src/stdio/__fdopen.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/stdio/__fdopen.c 2014-02-25 15:24:14.000000000 +0100 +@@ -32,7 +32,9 @@ + /* Set append mode on fd if opened for append */ + if (*mode == 'a') { + int flags = __syscall(SYS_fcntl, fd, F_GETFL); +- __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND); ++ if (!(flags & O_APPEND)) ++ __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND); ++ f->flags |= F_APP; + } + + f->fd = fd; +diff -Nur musl-0.9.15/src/stdio/ftell.c musl-git/src/stdio/ftell.c +--- musl-0.9.15/src/stdio/ftell.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/stdio/ftell.c 2014-02-25 15:24:14.000000000 +0100 +@@ -4,7 +4,9 @@ + + off_t __ftello_unlocked(FILE *f) + { +- off_t pos = f->seek(f, 0, SEEK_CUR); ++ off_t pos = f->seek(f, 0, ++ (f->flags & F_APP) && f->wpos > f->wbase ++ ? SEEK_END : SEEK_CUR); + if (pos < 0) return pos; + + /* Adjust for data in buffer. */ +diff -Nur musl-0.9.15/src/stdio/vfscanf.c musl-git/src/stdio/vfscanf.c +--- musl-0.9.15/src/stdio/vfscanf.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/stdio/vfscanf.c 2014-02-25 15:24:14.000000000 +0100 +@@ -328,3 +328,5 @@ + FUNLOCK(f); + return matches; + } ++ ++weak_alias(vfscanf,__isoc99_vfscanf); +diff -Nur musl-0.9.15/src/thread/arm/clone.s musl-git/src/thread/arm/clone.s +--- musl-0.9.15/src/thread/arm/clone.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/arm/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,10 +1,7 @@ + .text + .global __clone +-.weak clone + .type __clone,%function +-.type clone,%function + __clone: +-clone: + stmfd sp!,{r4,r5,r6,r7} + mov r7,#120 + mov r6,r3 +diff -Nur musl-0.9.15/src/thread/cancel_dummy.c musl-git/src/thread/cancel_dummy.c +--- musl-0.9.15/src/thread/cancel_dummy.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/cancel_dummy.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,6 +1,9 @@ + #include "pthread_impl.h" ++#include "syscall.h" + +-static long sccp(long nr, long u, long v, long w, long x, long y, long z) ++static long sccp(syscall_arg_t nr, ++ syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, ++ syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) + { + return (__syscall)(nr, u, v, w, x, y, z); + } +diff -Nur musl-0.9.15/src/thread/cancel_impl.c musl-git/src/thread/cancel_impl.c +--- musl-0.9.15/src/thread/cancel_impl.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/cancel_impl.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,4 +1,5 @@ + #include "pthread_impl.h" ++#include "syscall.h" + + void __cancel() + { +@@ -8,9 +9,13 @@ + pthread_exit(PTHREAD_CANCELED); + } + +-long __syscall_cp_asm(volatile void *, long, long, long, long, long, long, long); ++long __syscall_cp_asm(volatile void *, syscall_arg_t, ++ syscall_arg_t, syscall_arg_t, syscall_arg_t, ++ syscall_arg_t, syscall_arg_t, syscall_arg_t); + +-long (__syscall_cp)(long nr, long u, long v, long w, long x, long y, long z) ++long (__syscall_cp)(syscall_arg_t nr, ++ syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, ++ syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) + { + pthread_t self; + long r; +diff -Nur musl-0.9.15/src/thread/clone.c musl-git/src/thread/clone.c +--- musl-0.9.15/src/thread/clone.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/clone.c 2014-02-25 15:24:14.000000000 +0100 +@@ -1,10 +1,7 @@ + #include +-#include "libc.h" ++#include "pthread_impl.h" + + int __clone(int (*func)(void *), void *stack, int flags, void *arg, ...) + { +- errno = ENOSYS; +- return -1; ++ return -ENOSYS; + } +- +-weak_alias(__clone, clone); +diff -Nur musl-0.9.15/src/thread/i386/clone.s musl-git/src/thread/i386/clone.s +--- musl-0.9.15/src/thread/i386/clone.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/i386/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,10 +1,7 @@ + .text + .global __clone +-.weak clone + .type __clone,@function +-.type clone,@function + __clone: +-clone: + push %ebp + mov %esp,%ebp + push %ebx +diff -Nur musl-0.9.15/src/thread/microblaze/clone.s musl-git/src/thread/microblaze/clone.s +--- musl-0.9.15/src/thread/microblaze/clone.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/microblaze/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,14 +1,11 @@ + .global __clone +-.weak clone + .type __clone,@function +-.type clone,@function + + # r5, r6, r7, r8, r9, r10, stack + # fn, st, fl, ar, pt, tl, ct + # fl, st, __, pt, ct, tl + + __clone: +-clone: + andi r6, r6, -16 + addi r6, r6, -16 + swi r5, r6, 0 +@@ -23,7 +20,7 @@ + beqi r3, 1f + rtsd r15, 8 + nop +- ++ + 1: lwi r3, r1, 0 + lwi r5, r1, 4 + brald r15, r3 +diff -Nur musl-0.9.15/src/thread/superh/clone.s musl-git/src/thread/superh/clone.s +--- musl-0.9.15/src/thread/superh/clone.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/superh/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,47 @@ ++.text ++.global __clone ++.type __clone, @function ++__clone: ++! incoming: fn stack flags arg ptid tls ctid ++! r4 r5 r6 r7 @r15 @(4,r15) @(8,r15) ++ ++ mov #-16, r0 ++ and r0, r5 ++ ++ mov r4, r1 ! r1 = fn ++ mov r7, r2 ! r2 = arg ++ ++ mov #120, r3 ! r3 = __NR_clone ++ mov r6, r4 ! r4 = flags ++ !mov r5, r5 ! r5 = stack ++ mov.l @r15, r6 ! r6 = ptid ++ mov.l @(8,r15), r7 ! r7 = ctid ++ mov.l @(4,r15), r0 ! r0 = tls ++ trapa #21 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ ++ cmp/eq #0, r0 ++ bt 1f ++ ++ ! we are the parent, return ++ rts ++ nop ++ ++1: ! we are the child, call fn(arg) ++ jsr @r1 ++ mov r2, r4 ++ ++ mov #1, r3 ! __NR_exit ++ mov r0, r4 ++ trapa #17 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 +diff -Nur musl-0.9.15/src/thread/superh/__set_thread_area.s musl-git/src/thread/superh/__set_thread_area.s +--- musl-0.9.15/src/thread/superh/__set_thread_area.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/superh/__set_thread_area.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,5 @@ ++.global __set_thread_area ++.type __set_thread_area, @function ++__set_thread_area: ++ rts ++ ldc r4, gbr +diff -Nur musl-0.9.15/src/thread/superh/syscall_cp.s musl-git/src/thread/superh/syscall_cp.s +--- musl-0.9.15/src/thread/superh/syscall_cp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/superh/syscall_cp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,39 @@ ++.text ++.global __syscall_cp_asm ++.type __syscall_cp_asm, @function ++__syscall_cp_asm: ++ ++.global __cp_begin ++__cp_begin: ++ mov.l @r4, r4 ++ tst r4, r4 ++ bt 2f ++ ++ mov.l L1, r0 ++ braf r0 ++ nop ++1: ++ ++.align 2 ++L1: .long __cancel@PLT-(1b-.) ++ ++2: mov r5, r3 ++ mov r6, r4 ++ mov r7, r5 ++ mov.l @r15, r6 ++ mov.l @(4,r15), r7 ++ mov.l @(8,r15), r0 ++ mov.l @(12,r15), r1 ++ trapa #22 ++ ++.global __cp_end ++__cp_end: ++ ! work around hardware bug ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ ++ rts ++ nop +diff -Nur musl-0.9.15/src/thread/superh/__unmapself.s musl-git/src/thread/superh/__unmapself.s +--- musl-0.9.15/src/thread/superh/__unmapself.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/superh/__unmapself.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,22 @@ ++.text ++.global __unmapself ++.type __unmapself, @function ++__unmapself: ++ mov #91, r3 ! SYS_munmap ++ trapa #18 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ ++ mov #1, r3 ! SYS_exit ++ mov #0, r4 ++ trapa #17 ++ ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 +diff -Nur musl-0.9.15/src/thread/__wait.c musl-git/src/thread/__wait.c +--- musl-0.9.15/src/thread/__wait.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/__wait.c 2014-02-25 15:24:14.000000000 +0100 +@@ -10,6 +10,6 @@ + } + if (waiters) a_inc(waiters); + while (*addr==val) +- __syscall(SYS_futex, (long)addr, FUTEX_WAIT|priv, val, 0); ++ __syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0); + if (waiters) a_dec(waiters); + } +diff -Nur musl-0.9.15/src/thread/x32/clone.s musl-git/src/thread/x32/clone.s +--- musl-0.9.15/src/thread/x32/clone.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/x32/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,25 @@ ++.text ++.global __clone ++.type __clone,@function ++__clone: ++ movl $0x40000038,%eax /* SYS_clone */ ++ mov %rdi,%r11 ++ mov %rdx,%rdi ++ mov %r8,%rdx ++ mov %r9,%r8 ++ mov 8(%rsp),%r10 ++ mov %r11,%r9 ++ and $-16,%rsi ++ sub $8,%rsi ++ mov %rcx,(%rsi) ++ syscall ++ test %eax,%eax ++ jnz 1f ++ xor %ebp,%ebp ++ pop %rdi ++ call *%r9 ++ mov %eax,%edi ++ movl $0x4000003c,%eax /* SYS_exit */ ++ syscall ++ hlt ++1: ret +diff -Nur musl-0.9.15/src/thread/x32/__set_thread_area.s musl-git/src/thread/x32/__set_thread_area.s +--- musl-0.9.15/src/thread/x32/__set_thread_area.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/x32/__set_thread_area.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,10 @@ ++/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ ++.text ++.global __set_thread_area ++.type __set_thread_area,@function ++__set_thread_area: ++ mov %rdi,%rsi /* shift for syscall */ ++ movl $0x1002,%edi /* SET_FS register */ ++ movl $0x4000009e,%eax /* set fs segment to */ ++ syscall /* arch_prctl(SET_FS, arg)*/ ++ ret +diff -Nur musl-0.9.15/src/thread/x32/syscall_cp.s musl-git/src/thread/x32/syscall_cp.s +--- musl-0.9.15/src/thread/x32/syscall_cp.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/x32/syscall_cp.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,23 @@ ++.text ++.global __syscall_cp_internal ++.type __syscall_cp_internal,@function ++__syscall_cp_internal: ++ ++.global __cp_begin ++__cp_begin: ++ mov (%rdi),%eax ++ test %eax,%eax ++ jnz __cancel ++ mov %rdi,%r11 ++ mov %rsi,%rax ++ mov %rdx,%rdi ++ mov %rcx,%rsi ++ mov %r8,%rdx ++ mov %r9,%r10 ++ mov 8(%rsp),%r8 ++ mov 16(%rsp),%r9 ++ mov %r11,8(%rsp) ++ syscall ++.global __cp_end ++__cp_end: ++ ret +diff -Nur musl-0.9.15/src/thread/x32/__unmapself.s musl-git/src/thread/x32/__unmapself.s +--- musl-0.9.15/src/thread/x32/__unmapself.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/thread/x32/__unmapself.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,10 @@ ++/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ ++.text ++.global __unmapself ++.type __unmapself,@function ++__unmapself: ++ movl $0x4000000b,%eax /* SYS_munmap */ ++ syscall /* munmap(arg2,arg3) */ ++ xor %rdi,%rdi /* exit() args: always return success */ ++ movl $0x4000003c,%eax /* SYS_exit */ ++ syscall /* exit(0) */ +diff -Nur musl-0.9.15/src/thread/x86_64/clone.s musl-git/src/thread/x86_64/clone.s +--- musl-0.9.15/src/thread/x86_64/clone.s 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/thread/x86_64/clone.s 2014-02-25 15:24:14.000000000 +0100 +@@ -1,10 +1,7 @@ + .text + .global __clone +-.weak clone + .type __clone,@function +-.type clone,@function + __clone: +-clone: + xor %eax,%eax + mov $56,%al + mov %rdi,%r11 +diff -Nur musl-0.9.15/src/time/timer_delete.c musl-git/src/time/timer_delete.c +--- musl-0.9.15/src/time/timer_delete.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/time/timer_delete.c 2014-02-25 15:24:14.000000000 +0100 +@@ -10,5 +10,5 @@ + __wake(&td->timer_id, 1, 1); + return 0; + } +- return __syscall(SYS_timer_delete, (long)t); ++ return __syscall(SYS_timer_delete, t); + } +diff -Nur musl-0.9.15/src/time/timer_getoverrun.c musl-git/src/time/timer_getoverrun.c +--- musl-0.9.15/src/time/timer_getoverrun.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/time/timer_getoverrun.c 2014-02-25 15:24:14.000000000 +0100 +@@ -8,5 +8,5 @@ + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } +- return syscall(SYS_timer_getoverrun, (long)t); ++ return syscall(SYS_timer_getoverrun, t); + } +diff -Nur musl-0.9.15/src/time/timer_gettime.c musl-git/src/time/timer_gettime.c +--- musl-0.9.15/src/time/timer_gettime.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/time/timer_gettime.c 2014-02-25 15:24:14.000000000 +0100 +@@ -8,5 +8,5 @@ + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } +- return syscall(SYS_timer_gettime, (long)t, val); ++ return syscall(SYS_timer_gettime, t, val); + } +diff -Nur musl-0.9.15/src/time/timer_settime.c musl-git/src/time/timer_settime.c +--- musl-0.9.15/src/time/timer_settime.c 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/src/time/timer_settime.c 2014-02-25 15:24:14.000000000 +0100 +@@ -8,5 +8,5 @@ + pthread_t td = (void *)((uintptr_t)t << 1); + t = (void *)(uintptr_t)(td->timer_id & INT_MAX); + } +- return syscall(SYS_timer_settime, (long)t, flags, val, old); ++ return syscall(SYS_timer_settime, t, flags, val, old); + } +diff -Nur musl-0.9.15/src/unistd/superh/pipe.s musl-git/src/unistd/superh/pipe.s +--- musl-0.9.15/src/unistd/superh/pipe.s 1970-01-01 01:00:00.000000000 +0100 ++++ musl-git/src/unistd/superh/pipe.s 2014-02-25 15:24:14.000000000 +0100 +@@ -0,0 +1,27 @@ ++.global pipe ++.type pipe, @function ++pipe: ++ mov #42, r3 ++ trapa #17 ++ ++ ! work around hardware bug ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ or r0, r0 ++ ++ cmp/pz r0 ++ bt 1f ++ ++ mov.l L1, r1 ++ braf r1 ++ mov r0, r4 ++ ++1: mov.l r0, @(0,r4) ++ mov.l r1, @(4,r4) ++ rts ++ mov #0, r0 ++ ++.align 2 ++L1: .long __syscall_ret@PLT-(1b-.) +diff -Nur musl-0.9.15/tools/install.sh musl-git/tools/install.sh +--- musl-0.9.15/tools/install.sh 2014-01-03 21:12:18.000000000 +0100 ++++ musl-git/tools/install.sh 2014-02-25 15:24:14.000000000 +0100 +@@ -51,6 +51,7 @@ + ln -s "$1" "$tmp" + else + cat < "$1" > "$tmp" ++chmod "$mode" "$tmp" + fi + + mv -f "$tmp" "$2" +@@ -60,6 +61,4 @@ + exit 1 + } + +-test "$symlink" || chmod "$mode" "$2" +- + exit 0 -- cgit v1.2.3