diff options
| author | Matthias Hentges <oe@hentges.net> | 2007-12-27 21:37:31 +0000 |
|---|---|---|
| committer | Matthias Hentges <oe@hentges.net> | 2007-12-27 21:37:31 +0000 |
| commit | 807d2d6d72975b2de4bc47940004f792b39b7c94 (patch) | |
| tree | 4e42476229a92c9e18a846d806dce14a57a1bcac | |
| parent | c8ba91fe350a5b56d46baef35470bdbbaa5edaef (diff) | |
| parent | 2118494c862cc7442fda5249394b924575a6f7ca (diff) | |
merge of '65fefd8b14862b0291239d37729964b98069c038'
and 'fbb56d5a76093891efdc7abc682059fd0436d4be'
46 files changed, 771 insertions, 175 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index dc59ea204c..23ddce0fde 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -74,7 +74,7 @@ Person: Holger Hans Peter Freyther Mail: zecke@selfish.org Website: http://www.openembedded.org/~zecke Interests: icecream, insanity, QA -Recipes: qtopia*, sqlite3, xine +Recipes: qtopia*, qt*, qmake*, sqlite3, xine Person: Jamie Lenehan Mail: lenehan@twibble.org diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index 8e4fba9400..991e472b14 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -174,6 +174,8 @@ autotools_stage_all() { fi if [ -d ${STAGE_TEMP}/${libdir} ] then + find ${STAGE_TEMP}/${libdir} -name '*.la' -exec sed -i s,installed=yes,installed=no, {} \; + for i in ${STAGE_TEMP}/${libdir}/*.la do if [ ! -f "$i" ]; then diff --git a/classes/binconfig.bbclass b/classes/binconfig.bbclass index 4e425a76d6..5ce9ff6f0d 100644 --- a/classes/binconfig.bbclass +++ b/classes/binconfig.bbclass @@ -20,6 +20,8 @@ def get_binconfig_mangle(d): s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${layout_exec_prefix}:'" s += " -e 's:-I${WORKDIR}:-I${STAGING_INCDIR}:'" s += " -e 's:-L${WORKDIR}:-L${STAGING_LIBDIR}:'" + if bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d): + s += bb.data.getVar("OE_BINCONFIG_EXTRA_MANGLE", d) return s BINCONFIG_GLOB ?= "*-config" diff --git a/classes/insane.bbclass b/classes/insane.bbclass index 473fe6ebbf..14acdb73fb 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -8,28 +8,25 @@ # -Check the RUNTIME path for the $TMPDIR # -Check if .la files wrongly point to workdir # -Check if .pc files wrongly point to workdir -# -Check if packages contains .debug directories or .so files where they should be in -dev or -dbg +# -Check if packages contains .debug directories or .so files +# where they should be in -dev or -dbg # -Check if config.log contains traces to broken autoconf tests -# # # We need to have the scanelf utility as soon as -# possible and this is contained within the pax-utils-native +# possible and this is contained within the pax-utils-native. +# The package.bbclass can help us here. # - - -# We play a special package function inherit package PACKAGE_DEPENDS += "pax-utils-native desktop-file-utils-native" -#PACKAGE_DEPENDS += chrpath-native" PACKAGEFUNCS += " do_package_qa " # # dictionary for elf headers # -# feel free to add and correct. +# feel free to add and correct. # # TARGET_OS TARGET_ARCH MACHINE, OSABI, ABIVERSION, Little Endian, 32bit? def package_qa_get_machine_dict(): @@ -75,7 +72,7 @@ def package_qa_get_machine_dict(): "arm" : (40, 0, 0, True, True), "armeb" : (40, 0, 0, False, True), }, - + } # factory for a class, embedded in a method @@ -102,11 +99,10 @@ def package_qa_get_elf(path, bits32): ELFDATA2LSB = 1 ELFDATA2MSB = 2 - def my_assert(expectation, result): + def my_assert(self, expectation, result): if not expectation == result: - #print "'%x','%x'" % (ord(expectation), ord(result)) + #print "'%x','%x' %s" % (ord(expectation), ord(result), self.name) raise Exception("This does not work as expected") - my_assert = staticmethod(my_assert) def __init__(self, name): self.name = name @@ -115,16 +111,16 @@ def package_qa_get_elf(path, bits32): self.file = file(self.name, "r") self.data = self.file.read(ELFFile.EI_NIDENT+4) - ELFFile.my_assert(len(self.data), ELFFile.EI_NIDENT+4) - ELFFile.my_assert(self.data[0], chr(0x7f) ) - ELFFile.my_assert(self.data[1], 'E') - ELFFile.my_assert(self.data[2], 'L') - ELFFile.my_assert(self.data[3], 'F') + self.my_assert(len(self.data), ELFFile.EI_NIDENT+4) + self.my_assert(self.data[0], chr(0x7f) ) + self.my_assert(self.data[1], 'E') + self.my_assert(self.data[2], 'L') + self.my_assert(self.data[3], 'F') if bits32 : - ELFFile.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) # only 32 bits + self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS32)) else: - ELFFile.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64)) # only 64 bits - ELFFile.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) ) + self.my_assert(self.data[ELFFile.EI_CLASS], chr(ELFFile.ELFCLASS64)) + self.my_assert(self.data[ELFFile.EI_VERSION], chr(ELFFile.EV_CURRENT) ) self.sex = self.data[ELFFile.EI_DATA] if self.sex == chr(ELFFile.ELFDATANONE): @@ -160,20 +156,19 @@ def package_qa_get_elf(path, bits32): return ELFFile(path) -# -# # Known Error classes # 0 - non dev contains .so # 1 - package contains a dangerous RPATH # 2 - package depends on debug package # 3 - non dbg contains .so # 4 - wrong architecture -# 5 - .la contains installed=yes or reference to the workdir +# 5 - .la contains installed=yes # 6 - .pc contains reference to /usr/include or workdir -# -# +# 7 - the desktop file is not valid +# 8 - .la contains reference to the workdir def package_qa_clean_path(path,d): + """ Remove the common prefix from the path. In this case it is the TMPDIR""" import bb return path.replace(bb.data.getVar('TMPDIR',d,True),"") @@ -183,7 +178,7 @@ def package_qa_make_fatal_error(error_class, name, path,d): TODO: Load a whitelist of known errors """ - if error_class == 0: + if error_class in [0, 5, 8]: return False else: return True @@ -206,7 +201,8 @@ def package_qa_write_error(error_class, name, path, d): log_path = os.path.join( bb.data.getVar('T', d, True), "log.qa_package" ) f = file( log_path, "a+") - print >> f, "%s, %s, %s" % (ERROR_NAMES[error_class], name, package_qa_clean_path(path,d)) + print >> f, "%s, %s, %s" % \ + (ERROR_NAMES[error_class], name, package_qa_clean_path(path,d)) f.close() @@ -216,28 +212,21 @@ def package_qa_check_rpath(file,name,d): """ import bb, os scanelf = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True),'scanelf') - #chrpath = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True),'chrpath') bad_dir = bb.data.getVar('TMPDIR', d, True) + "/work" bad_dir_test = bb.data.getVar('TMPDIR', d, True) if not os.path.exists(scanelf): bb.fatal("Can not check RPATH, scanelf (part of pax-utils-native) not found") - #if not os.path.exists(chrpath): - # bb.fatal("Can not fix RPATH, chrpath (part of chrpath-native) not found") + if not bad_dir in bb.data.getVar('WORKDIR', d, True): bb.fatal("This class assumed that WORKDIR is ${TMPDIR}/work... Not doing any check") - #bb.note("%s -B -F%%r#F %s" % (scanelf,file)) output = os.popen("%s -B -F%%r#F '%s'" % (scanelf,file)) txt = output.readline().split() - #bb.note("???%s???" % bad_dir_test) for line in txt: - #bb.note("===%s===" % line) if bad_dir in line: package_qa_write_error( 1, name, file, d) - bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, line, file)) - #bb.note("Fixing RPATH for you in %s" % file) - #os.popen("%s -r /lib %s" % (chrpath,file)) - #return False + bb.error("QA Issue package %s contains bad RPATH %s in file %s" % \ + (name, line, file)) return True def package_qa_check_devdbg(path, name,d): @@ -252,14 +241,16 @@ def package_qa_check_devdbg(path, name,d): if not "-dev" in name: if path[-3:] == ".so" and os.path.islink(path): package_qa_write_error( 0, name, path, d ) - bb.error("QA Issue: non -dev package contains symlink .so: %s path '%s'" % (name, package_qa_clean_path(path,d))) + bb.error("QA Issue: non -dev package contains symlink .so: %s path '%s'" % \ + (name, package_qa_clean_path(path,d))) if package_qa_make_fatal_error( 0, name, path, d ): sane = False if not "-dbg" in name: if '.debug' in path: package_qa_write_error( 3, name, path, d ) - bb.error("QA Issue: non debug package contains .debug directory: %s path %s" % (name, package_qa_clean_path(path,d))) + bb.error("QA Issue: non debug package contains .debug directory: %s path %s" % \ + (name, package_qa_clean_path(path,d))) if package_qa_make_fatal_error( 3, name, path, d ): sane = False @@ -279,7 +270,7 @@ def package_qa_check_arch(path,name,d): import bb, os target_os = bb.data.getVar('TARGET_OS', d, True) target_arch = bb.data.getVar('TARGET_ARCH', d, True) - + # FIXME: Cross package confuse this check, so just skip them if bb.data.inherits_class('cross', d) or bb.data.inherits_class('sdk', d): return True @@ -290,42 +281,38 @@ def package_qa_check_arch(path,name,d): return True #if this will throw an exception, then fix the dict above - (machine, osabi, abiversion, littleendian, bits32) = package_qa_get_machine_dict()[target_os][target_arch] + (machine, osabi, abiversion, littleendian, bits32) \ + = package_qa_get_machine_dict()[target_os][target_arch] elf = package_qa_get_elf(path, bits32) try: elf.open() except: - # just for debbugging to check the parser, remove once convinced... return True + # Check the architecture and endiannes of the binary if not machine == elf.machine(): - bb.error("Architecture did not match (%d to %d) on %s" %(machine, elf.machine(), package_qa_clean_path(path,d))) + bb.error("Architecture did not match (%d to %d) on %s" % \ + (machine, elf.machine(), package_qa_clean_path(path,d))) return not package_qa_make_fatal_error( 4, name, path, d ) elif not littleendian == elf.isLittleEndian(): - bb.error("Endiannes did not match (%d to %d) on %s" % (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d))) + bb.error("Endiannes did not match (%d to %d) on %s" % \ + (littleendian, elf.isLittleEndian(), package_qa_clean_path(path,d))) return not package_qa_make_fatal_error( 4, name, path, d ) return True -def package_qa_check_pcla(path,name,d): - """ - .pc and .la files should not point to the WORKDIR - """ - sane = True - # TODO - return sane - def package_qa_check_desktop(path, name, d): """ Run all desktop files through desktop-file-validate. """ import bb, os if path.endswith(".desktop"): - validate = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True), 'desktop-file-validate') + validate = os.path.join(bb.data.getVar('STAGING_BINDIR_NATIVE',d,True), \ + 'desktop-file-validate') output = os.popen("%s %s" % (validate, path)) - # This only produces output on errors for l in output: bb.error(l.strip()) + return not package_qa_make_fatal_error(7, name, path, d) return True def package_qa_check_staged(path,d): @@ -355,14 +342,21 @@ def package_qa_check_staged(path,d): path = os.path.join(root,file) if file[-2:] == "la": file_content = open(path).read() - if installed in file_content or workdir in file_content: - bb.error("QA issue: %s failed sanity test (reference to workdir or installed)" % file ) + if installed in file_content: + bb.error("QA issue: %s failed sanity test (installed) in path %s" % \ + (file,root)) if package_qa_make_fatal_error( 5, "staging", path, d): - sane = True + sane = False + if workdir in file_content: + bb.error("QA issue: %s failed sanity test (workdir) in path %s" % \ + (file,root)) + if package_qa_make_fatal_error(8, "staging", path, d): + sane = False elif file[-2:] == "pc": file_content = open(path).read() if workdir in file_content: - bb.error("QA issue: %s failed sanity test (reference to workdir)" % file ) + bb.error("QA issue: %s failed sanity test (workdir) in path %s" % \ + (file,root)) if package_qa_make_fatal_error( 6, "staging", path, d): sane = False @@ -431,6 +425,9 @@ python do_package_qa () { if not packages: return + checks = [package_qa_check_rpath, package_qa_check_devdbg, + package_qa_check_perm, package_qa_check_arch, + package_qa_check_desktop] walk_sane = True rdepends_sane = True for package in packages.split(): @@ -440,7 +437,7 @@ python do_package_qa () { bb.note("Checking Package: %s" % package) path = "%s/install/%s" % (workdir, package) - if not package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch, package_qa_check_desktop], package, d): + if not package_qa_walk(path, checks, package, d): walk_sane = False if not package_qa_check_rdepends(package, workdir, d): rdepends_sane = False @@ -466,7 +463,11 @@ python do_qa_configure() { bb.note("Checking sanity of the config.log file") import os for root, dirs, files in os.walk(bb.data.getVar('WORKDIR', d, True)): + statement = "grep 'CROSS COMPILE Badness:' %s > /dev/null" % \ + os.path.join(root,"config.log") if "config.log" in files: - if os.system("grep 'CROSS COMPILE Badness:' %s > /dev/null" % (os.path.join(root,"config.log"))) == 0: - bb.fatal("This autoconf log indicates errors, it looked at host includes. Rerun configure task after fixing this. Path was '%s'" % root) + if os.system(statement) == 0: + bb.fatal("This autoconf log indicates errors, it looked at \ + host includes. Rerun configure task after fixing this. \ + Path was '%s'" % root) } diff --git a/classes/qtopia4core.bbclass b/classes/qtopia4core.bbclass index 181973d72d..fd8939a23f 100644 --- a/classes/qtopia4core.bbclass +++ b/classes/qtopia4core.bbclass @@ -4,8 +4,9 @@ inherit qmake2 # # override variables set by qmake-base to compile QtopiaCore apps # -export OE_QMAKE_INCDIR_QT = "${STAGING_INCDIR}/qtopiacore" -export OE_QMAKE_LIBDIR_QT = "${STAGING_LIBDIR}/qtopiacore" +export OE_QMAKE_INCDIR_QT = "${STAGING_INCDIR}/qtopia" +export OE_QMAKE_LIBDIR_QT = "${STAGING_LIBDIR}/qtopia" export OE_QMAKE_LIBS_QT = "qt" export OE_QMAKE_LIBS_X11 = "" export OE_QMAKE_EXTRA_MODULES = "network" +EXTRA_QMAKEVARS_PRE += " QT_LIBINFIX=E " diff --git a/conf/checksums.ini b/conf/checksums.ini index eadb6a09a9..5c6109ba17 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -9446,7 +9446,7 @@ sha256=c163e72cb002435d1d261a47acdcb23e59c10e4263f983a5f2c2d2ca40ede75b md5=8012acea71b35c18247bd92c4721589d sha256=abc37774d327a9b1d1d35e223f014c7e92168cd6c7baf66156badca68f8f1440 -[ftp://ftp.trolltech.com/pub/qt/source/qt-x11-opensource-src-4.3.3.tar.gz] +[ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.3.3.tar.gz] md5=19678fe35170559cd6a6fa531c57799c sha256=89934bacc5cee5cb35a231275b0f9948f29483faf9082bed0e7255ce41751570 diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index 44a7791ea2..ff7636e686 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -53,7 +53,7 @@ MACHINE_KERNEL_VERSION = "2.6" PCMCIA_MANAGER = "pcmciautils" #Preferred version for the kernel on various machines -PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh19" +PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh20" #This is unrelated to the kernel version, but userspace apps (e.g. HAL) require a recent version to build against PREFERRED_VERSION_linux-libc-headers = "2.6.23" diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index c7e70fa169..a0a21ed202 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -32,7 +32,7 @@ do_report_success() { echo "$(date -u +%s) $target $BUILD_MODE $machine" >> autobuilder-feed.log } -for machine in ep93xx gumstix-connex gumstix-verdex efika omap5912osk ixp4xxle ixp4xxbe c7x0 poodle tosa akita spitz collie simpad fic-gta01 a780 at91sam9263ek qemuarm h2200 h3900 h4000 hx4700 +for machine in ep93xx gumstix-connex gumstix-verdex efika dht-walnut omap5912osk ixp4xxle ixp4xxbe c7x0 poodle tosa akita spitz collie simpad fic-gta01 a780 at91sam9263ek qemuarm h2200 h3900 h4000 hx4700 do BUILD_MACHINE=$machine BUILD_CLEAN="libtool-cross qmake-native qmake2-native" @@ -41,17 +41,19 @@ do mono perl python ruby \ gtk+ qt-x11-free qt4-x11-free \ gpe-mini-browser midori minimo openmoko-browser2 webkit-gtklauncher \ - samba \ + samba meta-nas-server \ apache2 boa cherokee lighttpd thttpd \ gpe-gallery gpe-scap notecase \ pidgin irssi \ roadmap-gtk2 gpsdrive navit \ xmms mplayer quasar \ wpa-gui wifi-radar kismet aircrack-ng dsniff \ + iptables iperf \ gpe-bluetooth bluez-gnome python-pybluez \ abiword gnumeric evince epdfview gimp \ flite \ ctorrent \ + asterisk \ gnuplot mpfr gmp fftw fftwf fftwl \ gphoto2 gqview imagemagick ufraw \ tzdata \ diff --git a/packages/apr/apr-util_1.2.7.bb b/packages/apr/apr-util_1.2.7.bb index ea81607953..904e41f8a3 100644 --- a/packages/apr/apr-util_1.2.7.bb +++ b/packages/apr/apr-util_1.2.7.bb @@ -14,12 +14,19 @@ EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS} --with-dbm=gdbm \ --without-sqlite3 \ --with-expat=${STAGING_DIR_HOST}${layout_prefix}" + inherit autotools lib_package binconfig +OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'" + do_configure() { + cp ${STAGING_DATADIR}/apr_rules.mk ${S}/build/rules.mk oe_runconf } do_stage() { - autotools_stage_all + autotools_stage_all + sed -i s,/usr/lib/libgdbm.la,-lgdbm,g ${STAGING_LIBDIR}/libaprutil-1.la + sed -i s,/usr/lib/libexpat.la,-lexpat,g ${STAGING_LIBDIR}/libaprutil-1.la + sed -i s,/usr/lib/libapr-1.la,-lapr-1,g ${STAGING_LIBDIR}/libaprutil-1.la } diff --git a/packages/apr/apr_1.2.7.bb b/packages/apr/apr_1.2.7.bb index 2016ca0126..d0f2916bfa 100644 --- a/packages/apr/apr_1.2.7.bb +++ b/packages/apr/apr_1.2.7.bb @@ -9,10 +9,13 @@ SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.bz2" inherit autotools lib_package binconfig +OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'" + do_configure() { oe_runconf } do_stage() { autotools_stage_all + cp ${S}/build/apr_rules.mk ${STAGING_DATADIR} } diff --git a/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch b/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch new file mode 100644 index 0000000000..bf6f640035 --- /dev/null +++ b/packages/kexec/kexec-tools-1.101/kexec-arm-atags.patch @@ -0,0 +1,294 @@ +--- + kexec/arch/arm/kexec-zImage-arm.c | 259 ++++++++++++++++++++++++++++++++++++-- + 1 file changed, 252 insertions(+), 7 deletions(-) + +Index: kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c +=================================================================== +--- kexec-tools-1.101.orig/kexec/arch/arm/kexec-zImage-arm.c 2007-12-26 21:17:07.000000000 +0000 ++++ kexec-tools-1.101/kexec/arch/arm/kexec-zImage-arm.c 2007-12-27 01:24:25.000000000 +0000 +@@ -1,11 +1,83 @@ ++/* ++ * - 08/21/2007 ATAG support added by Uli Luckas <u.luckas@road.de> ++ * ++ */ + #define _GNU_SOURCE + #include <stdio.h> + #include <string.h> + #include <stdlib.h> + #include <errno.h> + #include <limits.h> ++#include <stdint.h> ++#include <getopt.h> ++#include <arch/options.h> ++#include <asm/page.h> + #include "../../kexec.h" + ++#define COMMAND_LINE_SIZE 1024 ++#define BOOT_PARAMS_SIZE 1536 ++ ++struct tag_header { ++ uint32_t size; ++ uint32_t tag; ++}; ++ ++/* The list must start with an ATAG_CORE node */ ++#define ATAG_CORE 0x54410001 ++ ++struct tag_core { ++ uint32_t flags; /* bit 0 = read-only */ ++ uint32_t pagesize; ++ uint32_t rootdev; ++}; ++ ++/* it is allowed to have multiple ATAG_MEM nodes */ ++#define ATAG_MEM 0x54410002 ++ ++struct tag_mem32 { ++ uint32_t size; ++ uint32_t start; /* physical start address */ ++}; ++ ++/* describes where the compressed ramdisk image lives (virtual address) */ ++/* ++ * this one accidentally used virtual addresses - as such, ++ * it's deprecated. ++ */ ++#define ATAG_INITRD 0x54410005 ++ ++/* describes where the compressed ramdisk image lives (physical address) */ ++#define ATAG_INITRD2 0x54420005 ++ ++struct tag_initrd { ++ uint32_t start; /* physical start address */ ++ uint32_t size; /* size of compressed ramdisk image in bytes */ ++}; ++ ++/* command line: \0 terminated string */ ++#define ATAG_CMDLINE 0x54410009 ++ ++struct tag_cmdline { ++ char cmdline[1]; /* this is the minimum size */ ++}; ++ ++/* The list ends with an ATAG_NONE node. */ ++#define ATAG_NONE 0x00000000 ++ ++struct tag { ++ struct tag_header hdr; ++ union { ++ struct tag_core core; ++ struct tag_mem32 mem; ++ struct tag_initrd initrd; ++ struct tag_cmdline cmdline; ++ } u; ++}; ++ ++#define tag_next(t) ((struct tag *)((uint32_t *)(t) + (t)->hdr.size)) ++#define byte_size(t) ((t)->hdr.size << 2) ++#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type) + 3) >> 2) ++ + int zImage_arm_probe(const char *buf, off_t len) + { + /* +@@ -14,21 +86,194 @@ int zImage_arm_probe(const char *buf, of + */ + return 0; + } ++ + void zImage_arm_usage(void) + { ++ printf( " --command-line=STRING Set the kernel command line to STRING.\n" ++ " --append=STRING Set the kernel command line to STRING.\n" ++ " --initrd=FILE Use FILE as the kernel's initial ramdisk.\n" ++ " --ramdisk=FILE Use FILE as the kernel's initial ramdisk.\n" ++ ); + } +-int zImage_arm_load(int argc, char **argv, const char *buf, off_t len, ++ ++static ++struct tag * atag_read_tags(void) ++{ ++ static unsigned long buf[BOOT_PARAMS_SIZE]; ++ const char fn[]= "/proc/atags"; ++ FILE *fp; ++ fp = fopen(fn, "r"); ++ if (!fp) { ++ fprintf(stderr, "Cannot open %s: %s\n", ++ fn, strerror(errno)); ++ return NULL; ++ } ++ ++ fread(buf, sizeof(buf[1]), BOOT_PARAMS_SIZE, fp); ++ if (ferror(fp)) { ++ fprintf(stderr, "Cannot read %s: %s\n", ++ fn, strerror(errno)); ++ fclose(fp); ++ return NULL; ++ } ++ ++ fclose(fp); ++ return (struct tag *) buf; ++} ++ ++ ++static ++int atag_arm_load(struct kexec_info *info, unsigned long base, ++ const char *command_line, off_t command_line_len, ++ const char *initrd, off_t initrd_len) ++{ ++ struct tag *saved_tags = atag_read_tags(); ++ char *buf; |
