diff options
Diffstat (limited to 'tools/mtd-utils/patches/120-cygwin_fixes.patch')
-rw-r--r-- | tools/mtd-utils/patches/120-cygwin_fixes.patch | 457 |
1 files changed, 0 insertions, 457 deletions
diff --git a/tools/mtd-utils/patches/120-cygwin_fixes.patch b/tools/mtd-utils/patches/120-cygwin_fixes.patch deleted file mode 100644 index 3dc2161..0000000 --- a/tools/mtd-utils/patches/120-cygwin_fixes.patch +++ /dev/null @@ -1,457 +0,0 @@ ---- a/Makefile -+++ b/Makefile -@@ -12,6 +12,11 @@ else - LZOLDLIBS = -llzo2 - endif - -+ifeq ($(shell uname -o),Cygwin) -+CPPFLAGS += -I./include/cygwin -+endif -+ -+ifneq ($(shell uname -o),Cygwin) - SUBDIRS = lib ubi-utils mkfs.ubifs - TESTS = tests - -@@ -23,6 +28,10 @@ TARGETS = ftl_format flash_erase nanddum - rfddump rfdformat \ - serve_image recv_image \ - sumtool #jffs2reader -+else -+SUBDIRS = -+TARGETS = mkfs.jffs2 -+endif - SCRIPTS = flash_eraseall - - SYMLINKS = ---- /dev/null -+++ b/include/cygwin/bits-byteswap.h -@@ -0,0 +1,132 @@ -+/* Macros to swap the order of bytes in integer values. -+ Copyright (C) 1997, 1998, 2000, 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H -+# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." -+#endif -+ -+#ifndef _BITS_BYTESWAP_H -+#define _BITS_BYTESWAP_H 1 -+ -+/* Swap bytes in 16 bit value. */ -+#define __bswap_constant_16(x) \ -+ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) -+ -+#ifdef __GNUC__ -+# if __GNUC__ >= 2 -+# define __bswap_16(x) \ -+ (__extension__ \ -+ ({ register unsigned short int __v, __x = (x); \ -+ if (__builtin_constant_p (__x)) \ -+ __v = __bswap_constant_16 (__x); \ -+ else \ -+ __asm__ ("rorw $8, %w0" \ -+ : "=r" (__v) \ -+ : "0" (__x) \ -+ : "cc"); \ -+ __v; })) -+# else -+/* This is better than nothing. */ -+# define __bswap_16(x) \ -+ (__extension__ \ -+ ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) -+# endif -+#else -+static __inline unsigned short int -+__bswap_16 (unsigned short int __bsx) -+{ -+ return __bswap_constant_16 (__bsx); -+} -+#endif -+ -+/* Swap bytes in 32 bit value. */ -+#define __bswap_constant_32(x) \ -+ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ -+ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) -+ -+#ifdef __GNUC__ -+# if __GNUC__ >= 2 -+/* To swap the bytes in a word the i486 processors and up provide the -+ `bswap' opcode. On i386 we have to use three instructions. */ -+# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ -+# define __bswap_32(x) \ -+ (__extension__ \ -+ ({ register unsigned int __v, __x = (x); \ -+ if (__builtin_constant_p (__x)) \ -+ __v = __bswap_constant_32 (__x); \ -+ else \ -+ __asm__ ("rorw $8, %w0;" \ -+ "rorl $16, %0;" \ -+ "rorw $8, %w0" \ -+ : "=r" (__v) \ -+ : "0" (__x) \ -+ : "cc"); \ -+ __v; })) -+# else -+# define __bswap_32(x) \ -+ (__extension__ \ -+ ({ register unsigned int __v, __x = (x); \ -+ if (__builtin_constant_p (__x)) \ -+ __v = __bswap_constant_32 (__x); \ -+ else \ -+ __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ -+ __v; })) -+# endif -+# else -+# define __bswap_32(x) \ -+ (__extension__ \ -+ ({ register unsigned int __x = (x); __bswap_constant_32 (__x); })) -+# endif -+#else -+static __inline unsigned int -+__bswap_32 (unsigned int __bsx) -+{ -+ return __bswap_constant_32 (__bsx); -+} -+#endif -+ -+ -+#if defined __GNUC__ && __GNUC__ >= 2 -+/* Swap bytes in 64 bit value. */ -+#define __bswap_constant_64(x) \ -+ ((((x) & 0xff00000000000000ull) >> 56) \ -+ | (((x) & 0x00ff000000000000ull) >> 40) \ -+ | (((x) & 0x0000ff0000000000ull) >> 24) \ -+ | (((x) & 0x000000ff00000000ull) >> 8) \ -+ | (((x) & 0x00000000ff000000ull) << 8) \ -+ | (((x) & 0x0000000000ff0000ull) << 24) \ -+ | (((x) & 0x000000000000ff00ull) << 40) \ -+ | (((x) & 0x00000000000000ffull) << 56)) -+ -+# define __bswap_64(x) \ -+ (__extension__ \ -+ ({ union { __extension__ unsigned long long int __ll; \ -+ unsigned long int __l[2]; } __w, __r; \ -+ if (__builtin_constant_p (x)) \ -+ __r.__ll = __bswap_constant_64 (x); \ -+ else \ -+ { \ -+ __w.__ll = (x); \ -+ __r.__l[0] = __bswap_32 (__w.__l[1]); \ -+ __r.__l[1] = __bswap_32 (__w.__l[0]); \ -+ } \ -+ __r.__ll; })) -+#endif -+ -+#endif /* _BITS_BYTESWAP_H */ ---- /dev/null -+++ b/include/cygwin/byteswap.h -@@ -0,0 +1,40 @@ -+/* Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _BYTESWAP_H -+#define _BYTESWAP_H 1 -+ -+/* Get the machine specific, optimized definitions. */ -+#include "bits-byteswap.h" -+ -+ -+/* The following definitions must all be macros since otherwise some -+ of the possible optimizations are not possible. */ -+ -+/* Return a value with all bytes in the 16 bit argument swapped. */ -+#define bswap_16(x) __bswap_16 (x) -+ -+/* Return a value with all bytes in the 32 bit argument swapped. */ -+#define bswap_32(x) __bswap_32 (x) -+ -+#if defined __GNUC__ && __GNUC__ >= 2 -+/* Return a value with all bytes in the 64 bit argument swapped. */ -+# define bswap_64(x) __bswap_64 (x) -+#endif -+ -+#endif /* byteswap.h */ ---- /dev/null -+++ b/include/cygwin/endian.h -@@ -0,0 +1,26 @@ -+#ifndef _CYGENDIAN_H_ -+#define _CYGENDIAN_H_ -+ -+#ifdef __CYGWIN__ -+ -+#include <sys/param.h> -+ -+#ifndef __BIG_ENDIAN -+#define __BIG_ENDIAN 4321 -+#endif -+ -+#ifndef __LITTLE_ENDIAN -+#define __LITTLE_ENDIAN 1234 -+#endif -+ -+#ifndef __BYTE_ORDER -+#define __BYTE_ORDER __LITTLE_ENDIAN -+#endif -+ -+#ifndef BYTE_ORDER -+#define BYTE_ORDER __LITTLE_ENDIAN -+#endif -+ -+#endif /* __CYGWIN__ */ -+ -+#endif /* _CYGENDIAN_H_ */ ---- /dev/null -+++ b/include/cygwin/ioctl.h -@@ -0,0 +1,38 @@ -+#ifndef _CYGIOCTL_H_ -+#define _CYGIOCTL_H_ -+ -+#ifdef __CYGWIN__ -+ -+#define _IOC_NRBITS 8 -+#define _IOC_TYPEBITS 8 -+#define _IOC_SIZEBITS 14 -+#define _IOC_DIRBITS 2 -+ -+#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) -+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) -+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) -+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) -+ -+#define _IOC_NRSHIFT 0 -+#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) -+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) -+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) -+ -+#define _IOC_NONE 0U -+#define _IOC_WRITE 1U -+#define _IOC_READ 2U -+ -+#define _IOC(dir,type,nr,size) \ -+ (((dir) << _IOC_DIRSHIFT) | \ -+ ((type) << _IOC_TYPESHIFT) | \ -+ ((nr) << _IOC_NRSHIFT) | \ -+ ((size) << _IOC_SIZESHIFT)) -+ -+#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) -+#define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) -+#define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) -+#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) -+ -+#endif /* __CYGWIN__ */ -+ -+#endif /* _CYGIOCTL_H_ */ ---- /dev/null -+++ b/include/cygwin/pread.c -@@ -0,0 +1,41 @@ -+#ifdef __CYGWIN__ -+ -+#include <errno.h> -+ -+ssize_t -+pread(int fd, void *p, size_t n, off_t off) -+{ -+ off_t ooff; -+ int oerrno; -+ -+ if ((ooff = lseek(fd, off, SEEK_SET)) == -1) -+ return -1; -+ -+ n = read(fd, p, n); -+ -+ oerrno = errno; -+ lseek(fd, ooff, SEEK_SET); -+ errno = oerrno; -+ -+ return n; -+} -+ -+ssize_t -+pwrite(int fd, const void *p, size_t n, off_t off) -+{ -+ off_t ooff; -+ int oerrno; -+ -+ if ((ooff = lseek(fd, off, SEEK_SET)) == -1) -+ return -1; -+ -+ n = write(fd, p, n); -+ -+ oerrno = errno; -+ lseek(fd, ooff, SEEK_SET); -+ errno = oerrno; -+ -+ return n; -+} -+ -+#endif /* __CYGWIN__ */ ---- /dev/null -+++ b/lnconf.sh -@@ -0,0 +1,53 @@ -+#!/bin/sh -+# -+# Generic configure replacement. -+# -+# $Id: lnconf.sh,v 1.1 2004/04/05 21:55:59 igor Exp $ -+# -+# Copies all files from the script directory to the current one. -+# Intended to replace 'configure' for packages that don't have one, to -+# allow building outside of the source tree. -+# -+# Note: this does not do any fancy things with detecting shells and -+# supporting other platforms. But it should work on Cygwin. -+ -+# find out where the script is located -+tdir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'` -+test "x$tdir" = "x$0" && tdir=. -+ -+a_srcdir=`cd $tdir; pwd` -+a_destdir=`pwd` -+ -+# sanity checks: -+# are we in the script directory? -+test "x$a_srcdir" = "x$a_destdir" && exit 0 -+# is there any chance that this is the script directory? -+test "x`cd "$a_srcdir" && /bin/ls -id`" = "x`/bin/ls -id`" && exit 0 -+ -+# try to find lndir and use it if it's available -+LNDIR="`which lndir 2>/dev/null`" -+if [ "x$LNDIR" = "x" ]; then -+ lndir() { -+ test "x$1" = "x" && return 1 -+ # be careful of the current directory -+ DINODE=`find . -maxdepth 0 -ls | sed 's/ .*$//'` -+ case "`pwd`" in -+ "`cd "$1" && pwd`"/*) CUR="-type d -inum $DINODE -prune -o";; -+ esac -+ # duplicate the directory structure -+ (cd "$1" && find . $CUR -type d -mindepth 1 -print) | xargs -tr mkdir -p -+ # copy all symbolic links -+ (cd "$1" && find . $CUR -type l -mindepth 1 -print) | xargs -ri sh -c "ln -s \"\`readlink "$1/{}"\`\" \"{}\"" -+ # or simply -+ #(cd "$1" && find . $CUR -type l -mindepth 1 -print) | xargs -ri ln -s "$1"/{} {} -+ # link all files -+ (cd "$1" && find . $CUR -type f -mindepth 1 -print) | xargs -ri ln -s "$1"/{} {} -+ } -+else -+ lndir() { -+ "$LNDIR" "$@" -+ } -+fi -+ -+lndir "$tdir" -+ ---- a/mkfs.jffs2.c -+++ b/mkfs.jffs2.c -@@ -77,6 +77,14 @@ - #include "rbtree.h" - #include "common.h" - -+#ifdef __CYGWIN__ -+#include <cygwin/ioctl.h> -+#include <cygwin/endian.h> -+#include <cygwin/pread.c> -+# define IFTODT(mode) (((mode) & 0170000) >> 12) -+# define DTTOIF(dirtype) ((dirtype) << 12) -+#endif /* __CYGWIN__ */ -+ - /* Do not use the weird XPG version of basename */ - #undef basename - -@@ -376,7 +384,7 @@ static struct filesystem_entry *recursiv - the following macros use it if available or use a hacky workaround... - */ - --#ifdef __GNUC__ -+#if defined __GNUC__ && !defined __CYGWIN__ - #define SCANF_PREFIX "a" - #define SCANF_STRING(s) (&s) - #define GETCWD_SIZE 0 -@@ -459,6 +467,14 @@ static int interpret_table_entry(struct - } - entry = find_filesystem_entry(root, name, mode); - if (entry && !(count > 0 && (type == 'c' || type == 'b'))) { -+ /* Check the type */ -+ if ((mode & S_IFMT) != (entry->sb.st_mode & S_IFMT)) { -+ error_msg ("skipping device_table entry '%s': type mismatch!", name); -+ free(name); -+ free(hostpath); -+ return 1; -+ } -+ - /* Ok, we just need to fixup the existing entry - * and we will be all done... */ - entry->sb.st_uid = uid; -@@ -468,11 +484,21 @@ static int interpret_table_entry(struct - entry->sb.st_rdev = makedev(major, minor); - } - } else { -+ if (type == 'f' || type == 'l') { -+ error_msg ("skipping device_table entry '%s': file does not exist!", name); -+ free(name); -+ free(hostpath); -+ return 1; -+ } - /* If parent is NULL (happens with device table entries), - * try and find our parent now) */ - tmp = strdup(name); - dir = dirname(tmp); -- parent = find_filesystem_entry(root, dir, S_IFDIR); -+ if (!strcmp(dir, "/")) { -+ parent = root; -+ } else { -+ parent = find_filesystem_entry(root, dir, S_IFDIR); -+ } - free(tmp); - if (parent == NULL) { - errmsg ("skipping device_table entry '%s': no parent directory!", name); -@@ -486,6 +512,7 @@ static int interpret_table_entry(struct - add_host_filesystem_entry(name, hostpath, uid, gid, mode, 0, parent); - break; - case 'f': -+ case 'l': - add_host_filesystem_entry(name, hostpath, uid, gid, mode, 0, parent); - break; - case 'p': ---- a/ubi-utils/src/libubi.c -+++ b/ubi-utils/src/libubi.c -@@ -32,6 +32,9 @@ - #include <sys/ioctl.h> - #include <sys/stat.h> - #include <sys/types.h> -+#ifdef __CYGWIN__ -+#include <cygwin/ioctl.h> -+#endif - #include <libubi.h> - #include "libubi_int.h" - #include "common.h" |