From db6f9ba936fc76e83d9f32a73ea76b17a1f797c5 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 10:35:38 -0700 Subject: gnome-power-manager: fix broken build - don't build man --- recipes/gnome/gnome-power-manager_2.24.2.bb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/gnome/gnome-power-manager_2.24.2.bb b/recipes/gnome/gnome-power-manager_2.24.2.bb index 59e1f6f484..6a06eff0b7 100644 --- a/recipes/gnome/gnome-power-manager_2.24.2.bb +++ b/recipes/gnome/gnome-power-manager_2.24.2.bb @@ -12,6 +12,10 @@ EXTRA_OECONF = " --disable-scrollkeeper \ ac_cv_header_X11_extensions_dpms_h=yes \ " +do_configure_prepend() { + sed -i -e 's: man ::g' ${S}/Makefile.am +} + do_configure_append() { rm config.log # Sigh... --enable-compile-warnings=no doesn't actually turn off -Werror -- cgit v1.2.3 From 8e40f0f867f6c00bccb225df67598e992086eb0b Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 11:08:53 -0700 Subject: alsa-plugins: add 1.0.20 --- conf/checksums.ini | 4 ++++ recipes/alsa/alsa-plugins_1.0.20.bb | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 recipes/alsa/alsa-plugins_1.0.20.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 26edb2eb4b..0ddfe28dd4 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1486,6 +1486,10 @@ sha256=deb7652a3c1360febbbffb5d0150e5ad8547063d37969ad24d13359f75a424ba md5=29ae9cac05423cf6a49f66eeb1a79eb6 sha256=67be087c24af9d2a380b29d6e90b7187b337a0c484c31438a0d38ff429c71100 +[ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-1.0.20.tar.bz2] +md5=819c4f21e3e913eacefd32993a8fbed7 +sha256=210ceedcb84bf3030e9f362d55b734312632ce72e348bd758536ec62a37aac97 + [ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.11.tar.bz2] md5=ba9b8010120701d0f6daf061d392cfa2 sha256=4b33229437ddab4196b8fd0bdfaf074314185a5afd3e24bbe28025022b42d01b diff --git a/recipes/alsa/alsa-plugins_1.0.20.bb b/recipes/alsa/alsa-plugins_1.0.20.bb new file mode 100644 index 0000000000..cc48e3c50b --- /dev/null +++ b/recipes/alsa/alsa-plugins_1.0.20.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "ALSA Plugins" +HOMEPAGE = "http://www.alsa-project.org" +SECTION = "multimedia/alsa/plugins" +LICENSE = "GPL" +DEPENDS = "alsa-lib pulseaudio ffmpeg" +PR = "r1" + +SRC_URI = "ftp://ftp.alsa-project.org/pub/plugins/alsa-plugins-${PV}.tar.bz2" + +inherit autotools + +CFLAGS += "-lavutil" + +PACKAGES_DYNAMIC = "libasound-module*" + +python populate_packages_prepend() { + plugindir = bb.data.expand('${libdir}/alsa-lib/', d) + do_split_packages(d, plugindir, '^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends='' ) +} + +FILES_${PN}-dev += "${libdir}/alsa-lib/libasound*.a ${libdir}/alsa-lib/libasound*.la" +FILES_${PN}-dbg += "${libdir}/alsa-lib/.debug" -- cgit v1.2.3 From a40dd855b64a67c8a357d9859cfe80c2cef780a5 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 11:39:44 -0700 Subject: desktop-file-utils: add 0.15 md5/sha256 already in checksums.ini --- recipes/desktop-file-utils/desktop-file-utils_0.15.bb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 recipes/desktop-file-utils/desktop-file-utils_0.15.bb diff --git a/recipes/desktop-file-utils/desktop-file-utils_0.15.bb b/recipes/desktop-file-utils/desktop-file-utils_0.15.bb new file mode 100644 index 0000000000..08c4ca9054 --- /dev/null +++ b/recipes/desktop-file-utils/desktop-file-utils_0.15.bb @@ -0,0 +1,11 @@ +SECTION = "console/utils" +HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils" +DESCRIPTION = "command line utilities to work with *.desktop files" +LICENSE = "GPL" + +DEPENDS = "glib-2.0" + +SRC_URI = "http://freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-${PV}.tar.gz" + +inherit autotools + -- cgit v1.2.3 From 1ebbc0245e2df1a17a3cddd28d105bd4a78cd266 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 12:17:36 -0700 Subject: devicekit-power: add recipe for devicekit-power version 009 --- conf/checksums.ini | 4 ++++ recipes/devicekit/devicekit-power_009.bb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 recipes/devicekit/devicekit-power_009.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 0ddfe28dd4..7c24ad7b61 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -198,6 +198,10 @@ sha256=d2d21f995d1a152ca2d8beea6d37f31e48cca034b82ceb7322f39422e849e9cf md5=1ed8e1931f56ad3fc53ba485391434b5 sha256=e9cc2ed4db0f48a9fdb353f6774df585ac1bc3a0f7c77fcede1c1c27497882bd +[http://hal.freedesktop.org/releases/DeviceKit-power-009.tar.gz] +md5=535703fa7b9c323d6388b5aff28cfeeb +sha256=438ac7f22533e04f5b44e0cf23d8b51a5cb69906ea2bbdef0581dc3c7cf19e55 + [http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-2.11.tar.gz] md5=2449bfe21d6589c96eebf94dae24df6b sha256=3cebe0a6894daee3bfa5d9619fc90e7619cb6a77ac1b04d027341cd6033ae989 diff --git a/recipes/devicekit/devicekit-power_009.bb b/recipes/devicekit/devicekit-power_009.bb new file mode 100644 index 0000000000..58f638cbf2 --- /dev/null +++ b/recipes/devicekit/devicekit-power_009.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "Devicekit power" +LICENSE = "GPLv2" +DEPENDS = "devicekit glib-2.0 dbus-glib policykit" + +SRC_URI = "http://hal.freedesktop.org/releases/DeviceKit-power-${PV}.tar.gz" +S = "${WORKDIR}/DeviceKit-power-${PV}" + +inherit autotools pkgconfig + +do_stage() { + autotools_stage_all +} + +FILES_${PN} += "${datadir}/dbus-1/ \ + ${datadir}/PolicyKit \ + ${base_libdir}/udev/* \ + " + +FILES_${PN}-dbg += "${base_libdir}/udev/.debug" + + -- cgit v1.2.3 From cfa8d5252e7c308d6de0edf5e9f024b4e86eaea7 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 13:50:03 -0700 Subject: eel: add 2.26.0 --- conf/checksums.ini | 4 ++++ recipes/eel/eel_2.26.0.bb | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 recipes/eel/eel_2.26.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 7c24ad7b61..aa8ffb46a3 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -5422,6 +5422,10 @@ sha256=e91e576ed22e5ba9a930d4292e3dbec4fe4ec7276029d82188cc91db117e21d4 md5=b591df36af8f1b23dd175be33b5de073 sha256=32cde7b589b49f439d82f76b6456983d36de7d20688f7c6ac2fdae4ce354e629 +[http://ftp.gnome.org/pub/GNOME/sources/eel/2.26/eel-2.26.0.tar.bz2] +md5=dfa105ccabd53efe4166dcfac75e2393 +sha256=11ad07d8d371f9165fab6cc5462f59cd253f9cc835d77a54330fecafe9c0a555 + [http://ftp.gnome.org/pub/GNOME/sources/eel/2.6/eel-2.6.1.tar.bz2] md5=6dd46ef1905271cd1171a0bdddabee22 sha256=889c8cff395bc488a6ccfb3fc22fd241a12c33f114bb7d7ec4138d5999da9c5d diff --git a/recipes/eel/eel_2.26.0.bb b/recipes/eel/eel_2.26.0.bb new file mode 100644 index 0000000000..c437a93a49 --- /dev/null +++ b/recipes/eel/eel_2.26.0.bb @@ -0,0 +1,17 @@ +# eel OE build file +# Copyright (C) 2005, Advanced Micro Devices, Inc. All Rights Reserved +# Released under the MIT license (see packages/COPYING) + +inherit gnome +PR = "r0" + +LICENSE="GPL" + +SRC_URI += "file://eel-no-strftime.patch;patch=1" + +DEPENDS = "gnome-vfs gnome-desktop gnome-menus libgnomeui virtual/gail" +EXTRA_OECONF = "--disable-gtk-doc" + +do_stage() { + autotools_stage_all +} -- cgit v1.2.3 From b47a02e9eed076bb4f6164d3b5f91ce368261a64 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 14:11:56 -0700 Subject: gcalctool: add 5.27.5 --- conf/checksums.ini | 4 ++++ recipes/gcalctool/gcalctool_5.27.5.bb | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 recipes/gcalctool/gcalctool_5.27.5.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index aa8ffb46a3..1c0f68191b 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -7254,6 +7254,10 @@ sha256=b678dd4354e0305fc57fef9aa4fd1f316e8a5de33e5048e712fbc32d42ecea7c md5=c4e5d90974591ffadb4c934b490146fc sha256=c0c315c4190ce1f4ac977cb1e425a11879d5e7d78067207257387299f4d111ed +[http://ftp.gnome.org/pub/GNOME/sources/gcalctool/5.27/gcalctool-5.27.5.tar.bz2] +md5=abaaedfdba2f5905d9c57ae73105b84f +sha256=f117903e3753920d16ca2e9f7185a02b3925fe94958a4c65efc2663cf61ca4de + [http://ftp.gnome.org/pub/GNOME/sources/gcalctool/5.5/gcalctool-5.5.21.tar.bz2] md5=130baf0910aec9c0c5afad8007da90de sha256=e5a0f289969d070f4f10f25fb77efdf693805177b07d4eb2dbfe9fe91c2fdab0 diff --git a/recipes/gcalctool/gcalctool_5.27.5.bb b/recipes/gcalctool/gcalctool_5.27.5.bb new file mode 100644 index 0000000000..e0b3d72f4a --- /dev/null +++ b/recipes/gcalctool/gcalctool_5.27.5.bb @@ -0,0 +1,14 @@ +LICENSE = "GPL" +SECTION = "x11" +DEPENDS = "gtk+" +DESCRIPTION = "gcalctool is a powerful calculator" +PR = "r0" + +SRC_URI = "file://makefile-fix.diff;patch=1" + +inherit gnome + +do_configure_prepend() { + sed -i 's:-I$(includedir)::g' src/Makefile.am +} + -- cgit v1.2.3 From 7ffde32d350986651bff820f6a16a8bf459e12c9 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Tue, 4 Aug 2009 14:25:16 -0700 Subject: glibmm: add 2.21.2 --- conf/checksums.ini | 4 ++++ recipes/glibmm/glibmm_2.21.2.bb | 1 + 2 files changed, 5 insertions(+) create mode 100644 recipes/glibmm/glibmm_2.21.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 1c0f68191b..33c5b9a4cb 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8126,6 +8126,10 @@ sha256=f033f6f39c32fc17ecce63087e41408671a3a43d698c83de2528af3fc7276d28 md5=1a0df362e15e7f850b8361b5102f1f16 sha256=ca6c46b87748cabd61e7d5ef892f09f433eaea324e63637f7de1f0217465cd31 +[ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.21/glibmm-2.21.2.tar.bz2] +md5=3d0f763e408a71700090fff4d3dd110c +sha256=5fb1f4f68625811a70fb580b945c2f93925569591af5444eb074aed6956366ca + [ftp://ftp.gnome.org/pub/GNOME/sources/glibmm/2.8/glibmm-2.8.4.tar.bz2] md5=952cdde2d6aef201c528d431036d71e1 sha256=7ff592b6687caefa367b33d8cb8f66f3c0273fa86d4b688c0758d0d9fee7a2cb diff --git a/recipes/glibmm/glibmm_2.21.2.bb b/recipes/glibmm/glibmm_2.21.2.bb new file mode 100644 index 0000000000..90a053fb36 --- /dev/null +++ b/recipes/glibmm/glibmm_2.21.2.bb @@ -0,0 +1 @@ +require glibmm.inc -- cgit v1.2.3 From ab91c4b0b539a288c6b2b3029a230806721a0af6 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Wed, 5 Aug 2009 13:07:32 -0700 Subject: at-spi: add 1.26.0 --- conf/checksums.ini | 4 ++++ recipes/gnome/at-spi_1.26.0.bb | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 recipes/gnome/at-spi_1.26.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 33c5b9a4cb..f074d3727b 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -1946,6 +1946,10 @@ sha256=bfa7def7d0f1190a111bde232920d2b3481d3932e2d1056573b3a9c4801c602a md5=160c648e29637f2ed6301f4dfdecce21 sha256=3ec786e6df9e1a935aff4848b6989cad8f87c1fa8813dc033b338e18b17138d8 +[http://ftp.gnome.org/pub/GNOME/sources/at-spi/1.26/at-spi-1.26.0.tar.bz2] +md5=3f2f7d29b45eff08adf56af0d31d3984 +sha256=bb8c9473a277fa75f172fa16fb6ada85f4a919219818fd9c792f1a137bb2644d + [http://download.berlios.de/at76c503a/at76_usb-0.17.tar.gz] md5=b47d4fa958aaf83916b6a917626102cd sha256=9d1fff10d391cb64890bb8e0050d3f023520a8dd5aee43c4d3f9c6f8611da668 diff --git a/recipes/gnome/at-spi_1.26.0.bb b/recipes/gnome/at-spi_1.26.0.bb new file mode 100644 index 0000000000..c2e8744b3c --- /dev/null +++ b/recipes/gnome/at-spi_1.26.0.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "Assistive Technology Service Provider Interface for GNOME." +SECTION = "x11/libs" +PRIORITY = "optional" +LICENSE = "LGPL" + +DEPENDS = "gtk+ atk libbonobo orbit2" +RDEPENDS_${PN} = "libgail-gnome gtk-module-gail" + +inherit gnome + +do_stage () { + autotools_stage_all +} + +FILES_${PN} += " \ + ${libdir}/bonobo \ + ${libdir}/gtk-2.0 \ + ${libdir}/orbit-2.0 \ + ${datadir}/idl \ + " + +FILES_${PN}-dbg += " \ + ${libdir}/gtk-2.0/modules/.debug \ + ${libdir}/orbit-2.0/.debug \ + " + + -- cgit v1.2.3 From 2bc6b78b36737e10a856a28eee216b8d73e60bf9 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Wed, 5 Aug 2009 13:21:57 -0700 Subject: libgail-gnome: add 1.20.1 --- conf/checksums.ini | 4 ++++ recipes/gnome/libgail-gnome_1.20.1.bb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/gnome/libgail-gnome_1.20.1.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index f074d3727b..2c8f96bb5a 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -13410,6 +13410,10 @@ sha256=d22335af6a17ec44799da82671778d2072499b26c5773ab913d9ba20d159d20f md5=a5a2a833d098926c3d289aeae452cc53 sha256=d22335af6a17ec44799da82671778d2072499b26c5773ab913d9ba20d159d20f +[http://ftp.gnome.org/pub/GNOME/sources/libgail-gnome/1.20/libgail-gnome-1.20.1.tar.bz2] +md5=5c5b71af5a8ab2a9403bdae52b20e46c +sha256=848485971628ff9be294e2b3ad5410b184e4bf99c1112a767f7ac78bdc0b5d5d + [http://www.galago-project.org/files/releases/source/libgalago/libgalago-0.3.3.tar.gz] md5=94d5223445deb1ed95973424d4958386 sha256=148bc83e4ab6e87a6f26b60efdffc1258752a42079783e6f2b080f287e8b15fc diff --git a/recipes/gnome/libgail-gnome_1.20.1.bb b/recipes/gnome/libgail-gnome_1.20.1.bb new file mode 100644 index 0000000000..a7527cacef --- /dev/null +++ b/recipes/gnome/libgail-gnome_1.20.1.bb @@ -0,0 +1,16 @@ +DESCRIPTION="Gnome Accessibility library" +LICENSE="GPLv2" + +PR ="r0" + +DEPENDS="atk gtk+ libbonobo libbonoboui gnome-panel at-spi" + +inherit gnome + +do_stage() { + autotools_stage_all +} + +FILES_${PN} += "${libdir}/gtk-2.0/modules/*.so" +FILES_${PN}-dbg += "${libdir}/gtk-2.0/modules/.debug" + -- cgit v1.2.3 From 30f651216518cbc89ab64b38eaddb1d4417c0ef7 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Wed, 5 Aug 2009 13:30:39 -0700 Subject: atk: add 1.26.0 --- conf/checksums.ini | 4 ++++ recipes/atk/atk_1.26.0.bb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 recipes/atk/atk_1.26.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 2c8f96bb5a..a8278c1b24 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -2034,6 +2034,10 @@ sha256=feb2639dd385a828ec75c6af12ac44a44aced40fb7a24cb63252f0d056f993b7 md5=b1a9e28d9f54ea306bd85a4c84b25fb8 sha256=1f3b2f2cbb5b0d8da0924970c66c3ecbfe13c4e4360b0af1db7545401a3747c9 +[http://ftp.gnome.org/pub/GNOME/sources/atk/1.26/atk-1.26.0.tar.bz2] +md5=719229408019c548855673840679f156 +sha256=f7993d26c3606a9b0e32d1eebe716f2294ac37fac014c47744e986fc0ff5e6d1 + [ftp://ftp.gtk.org/pub/gtk/v2.4/atk-1.6.0.tar.bz2] md5=5e699af22a934ea3c1c1ed3742da0500 sha256=a838937ee54c9e794df3b0995935c1e35cad4a360c83922380f9429195ea7059 diff --git a/recipes/atk/atk_1.26.0.bb b/recipes/atk/atk_1.26.0.bb new file mode 100644 index 0000000000..cbeebe4c6b --- /dev/null +++ b/recipes/atk/atk_1.26.0.bb @@ -0,0 +1,16 @@ +DESCRIPTION = "An accessibility toolkit for GNOME." +SECTION = "x11/libs" +PRIORITY = "optional" +LICENSE = "LGPL" + +DEPENDS = "glib-2.0 gtk-doc-native" + +inherit gnome + +EXTRA_OECONF = "--disable-glibtest" + +do_stage () { + autotools_stage_all +} + + -- cgit v1.2.3 From 6e4f48a748a6c6ed73e68db307eaca5cec7ebc7c Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Wed, 5 Aug 2009 15:23:05 -0700 Subject: gconf.bbclass: adjust the ordering of things so that a package pkg_postinst_append is executed after the class postinst. This is important since recipes like gpanel need to to execute gconftool-2 --load after the gconf class code has processed the schema info --- classes/gconf.bbclass | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/classes/gconf.bbclass b/classes/gconf.bbclass index 99f33e433a..47df06329b 100644 --- a/classes/gconf.bbclass +++ b/classes/gconf.bbclass @@ -45,9 +45,10 @@ python populate_packages_append () { if schemas != []: bb.note("adding gconf postinst and prerm scripts to %s" % pkg) bb.data.setVar('SCHEMA_FILES', " ".join(schemas), d) - postinst = bb.data.getVar('pkg_postinst_%s' % pkg, d, 1) or bb.data.getVar('pkg_postinst', d, 1) - if not postinst: - postinst = '#!/bin/sh\n' + postinst = '#!/bin/sh\n' + pkgpostinst = bb.data.getVar('pkg_postinst_%s' % pkg, d, 1) or bb.data.getVar('pkg_postinst', d, 1) + if pkgpostinst: + postinst += pkgpostinst postinst += bb.data.getVar('gconf_postinst', d, 1) bb.data.setVar('pkg_postinst_%s' % pkg, postinst, d) prerm = bb.data.getVar('pkg_prerm_%s' % pkg, d, 1) or bb.data.getVar('pkg_prerm', d, 1) -- cgit v1.2.3 From 853caf13db02d98a9d19f016b2f105bb96d3954b Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Wed, 5 Aug 2009 15:34:38 -0700 Subject: gtksourceview: add 2.7.3 --- conf/checksums.ini | 4 ++++ recipes/gtksourceview/gtksourceview2_2.7.3.bb | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 recipes/gtksourceview/gtksourceview2_2.7.3.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index a8278c1b24..c1e247e3aa 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10354,6 +10354,10 @@ sha256=38c238ec57bf22023bbc50f70ecbaee8c06b817b9e11f1a3a0ae7faf95cc1f26 md5=dd065ab2e96e51aade949249c5556439 sha256=92ddd976721e26377eaa59fea07707a0caa85eb874500868c1e6fdd9a21fe0dd +[http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/2.7/gtksourceview-2.7.3.tar.bz2] +md5=ea30aecfbd55ebf40c6cf5a0f254f9ba +sha256=bf4c6285683a70addedd3ae6b9d4b450d928be497834272c4cd705471333f1ec + [http://downloads.sourceforge.net/gtkterm/gtkterm2-0.2.3.tar.gz] md5=a49f93d15909dbd2e7011428ae01f0f0 sha256=fb68b18d752ae2379f144186b94743be991af1a42c88bc1e6f0685e45cb1d573 diff --git a/recipes/gtksourceview/gtksourceview2_2.7.3.bb b/recipes/gtksourceview/gtksourceview2_2.7.3.bb new file mode 100644 index 0000000000..474b317678 --- /dev/null +++ b/recipes/gtksourceview/gtksourceview2_2.7.3.bb @@ -0,0 +1,24 @@ +DESCRIPTION = "Portable C library for multiline text editing" +HOMEPAGE = "http://projects.gnome.org/gtksourceview/" +LICENSE = "LGPL" +DEPENDS = "gtk+ libgnomeprint" +PR = "r0" +PNAME = "gtksourceview" + +S = "${WORKDIR}/${PNAME}-${PV}" + +inherit gnome pkgconfig + +# overrule SRC_URI from gnome.conf +SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2" + +do_configure_prepend() { + sed -i -e s:docs::g ${S}/Makefile.am +} + +do_stage() { + autotools_stage_all +} + +FILES_${PN} += " ${datadir}/gtksourceview-2.0" + -- cgit v1.2.3 From aa5fa3a8bd5044e132284910e4cf864702b0c01f Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 6 Aug 2009 09:42:03 -0700 Subject: gedit: add 2.6.22 --- conf/checksums.ini | 4 ++++ recipes/gnome/gedit_2.26.2.bb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 recipes/gnome/gedit_2.26.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index c1e247e3aa..71a97565a9 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -7630,6 +7630,10 @@ sha256=8140ff430e89c8564efabbc24da0d9b2858d5ac5e982dab9923eaf3b46a8aacb md5=bcae4dc646440ba8129854621f56acc6 sha256=5af6001401a6bc04c075474be5d8aeb2bdb2ca3e509022c2fc55ca7c7f310256 +[http://ftp.gnome.org/pub/GNOME/sources/gedit/2.26/gedit-2.26.2.tar.bz2] +md5=ef8c98051c03d0caf0c75456e48c25b0 +sha256=7ce4919b4742ad6aad9dbfb2b962434d70dbcf9c63bb513870f3276deb28bee0 + [ftp://ftp.billsgames.com/unix/x/gemdropx/src/gemdropx-0.9.tar.gz] md5=fd0337e89778e2dba74461c555ea8e42 sha256=e50495d292a1d456c28044efbf07c16d8865f8d95e1caba86f4c5b2e3fb1d28f diff --git a/recipes/gnome/gedit_2.26.2.bb b/recipes/gnome/gedit_2.26.2.bb new file mode 100644 index 0000000000..a0585f10e6 --- /dev/null +++ b/recipes/gnome/gedit_2.26.2.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "GNOME editor" +SECTION = "x11/gnome" +LICENSE = "GPL" + +DEPENDS = "gnome-common glib-2.0 gtk+ gconf gtksourceview2" +RDEPENDS += " gtksourceview2" + +inherit gnome pkgconfig + +EXTRA_OECONF = "--disable-scrollkeeper" + +do_configure_prepend () { + cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S} +} + +do_stage () { + autotools_stage_all +} + +FILES_${PN} += "${libdir} ${datadir}/gedit-2" +FILES_${PN}-dbg += "${libdir}/gedit-2/plugin-loaders/.debug ${libdir}/gedit-2/plugins/.debug" -- cgit v1.2.3 From 7eed60cd78cef71b6ada4d1c64ad71d4d4bdec95 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 6 Aug 2009 10:42:17 -0700 Subject: gnome-python-extras: add 2.25.3 --- conf/checksums.ini | 4 ++++ recipes/gnome/gnome-python-extras_2.25.3.bb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 recipes/gnome/gnome-python-extras_2.25.3.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 71a97565a9..4c397735d8 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8574,6 +8574,10 @@ sha256=400a5401a591e271c3357d0a8cb05a7927b4c218130497d06f75df9763d4efd8 md5=08896c63d71ce44d20fafbaf9c0edc78 sha256=c5f74f4c46dbb379d119d6f74ca4a47653af251bea176dc7a0ecacccb88339f0 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-python-extras/2.25/gnome-python-extras-2.25.3.tar.bz2] +md5=9f3b7ec5c57130b96061cb486b79c076 +sha256=ca346264e00e193f0866cabd8801d3b7ce70dae7b8b296e41e5b3a45c9b0275c + [http://ftp.gnome.org/pub/GNOME/sources/gnome-session/2.24/gnome-session-2.24.1.tar.bz2] md5=5bf6f5753eab034638aee80d993801d2 sha256=9fc3f6d0dc7e664ff2b1507369183e5d0f1b17fc9f6643bf5e6a3ff8b6e7c211 diff --git a/recipes/gnome/gnome-python-extras_2.25.3.bb b/recipes/gnome/gnome-python-extras_2.25.3.bb new file mode 100644 index 0000000000..9d8e786241 --- /dev/null +++ b/recipes/gnome/gnome-python-extras_2.25.3.bb @@ -0,0 +1,21 @@ +LICENSE = "GPL/LGPL" +DEPENDS = "python-pygtk libwnck" + +inherit gnome distutils-base + +SRC_URI += "file://acinclude.m4" + +do_configure_prepend() { + install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/ +} + +do_configure_prepend() { + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac +} + +AUTOTOOLS_STAGE_PKGCONFIG = "1" +do_stage() { + autotools_stage_all +} + +FILES_${PN}-dev += "${datadir}/pygtk" -- cgit v1.2.3 From 795240d1c169ac50c036458b6c89b7f4d2c5945e Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 6 Aug 2009 11:32:59 -0700 Subject: gnome-terminal: add 2.26.2 --- conf/checksums.ini | 4 ++++ recipes/gnome/gnome-terminal_2.26.2.bb | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 recipes/gnome/gnome-terminal_2.26.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 4c397735d8..c6909169ba 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8594,6 +8594,10 @@ sha256=4fbd2eccb335fa92487b3307bd83c4f468342f1787856377abbb6ad862271451 md5=edd7f02e30683054b94a89aa62c74d1e sha256=cf2f96f3c91749fdcec39d3eb89273f6d3a47cc7bc0c5faa0915808409c9d563 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-terminal/2.26/gnome-terminal-2.26.2.tar.bz2] +md5=f4f64b9b67c7a3147799ee10f7cf00e1 +sha256=f937939eca0082dc7f3f9ddab72d612433ad948aac7e158ed75f5d7053e8d0e0 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-themes/2.22/gnome-themes-2.22.2.tar.bz2] md5=1989167d700e835fe57993c6be90434c sha256=b6047835d6fae7269825028c4f7da2c1ff380c023fbd58ac69fdea8a707bac77 diff --git a/recipes/gnome/gnome-terminal_2.26.2.bb b/recipes/gnome/gnome-terminal_2.26.2.bb new file mode 100644 index 0000000000..3a31bf3fbe --- /dev/null +++ b/recipes/gnome/gnome-terminal_2.26.2.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "GNOME terminal" +SECTION = "x11/gnome" +LICENSE = "GPL" +DEPENDS = "gnome-common glib-2.0 gtk+ gconf vte" +inherit gnome pkgconfig + +EXTRA_OECONF = "--disable-scrollkeeper" + +do_configure_prepend () { + cp ${STAGING_DATADIR}/gnome-common/data/omf.make ${S} +} + +do_stage () { + autotools_stage_all +} + + -- cgit v1.2.3 From b41a97d3bb86cb744b4a8434568b2262e6c34154 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 6 Aug 2009 12:42:50 -0700 Subject: vte: add 0.20.0 --- conf/checksums.ini | 4 ++++ recipes/vte/vte_0.20.0.bb | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 recipes/vte/vte_0.20.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index c6909169ba..0616722bfb 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -24798,6 +24798,10 @@ sha256=1dc06ad4224c18061b000de0435b81b7c249215da4163edecb62a8d46090098f md5=a42c893a01e3d9818789be373e529422 sha256=0e61bbccbc6689d8d9ea4842795498d3ff85079b870eda899cbbd7beb80866ec +[http://ftp.gnome.org/pub/GNOME/sources/vte/0.20/vte-0.20.0.tar.bz2] +md5=12dde859bc98e039336baff6e9e6b15b +sha256=6612c72fe73279a23e296a70e19b3f5dd270c6d16cf0cc6a191475c1a16846f7 + [http://downloads.sourceforge.net/vtun/vtun-2.6.tar.gz] md5=309534fd03c5d13a19c43916f61f4bbf sha256=fc80dac6d622fdb2db16d772edc6ff7d0023ee6eb5f2acb79d894ee30197c2e5 diff --git a/recipes/vte/vte_0.20.0.bb b/recipes/vte/vte_0.20.0.bb new file mode 100644 index 0000000000..c080310864 --- /dev/null +++ b/recipes/vte/vte_0.20.0.bb @@ -0,0 +1,33 @@ +DESCRIPTION = "vte is a virtual terminal emulator" +LICENSE = "LGPL" +DEPENDS += "glib-2.0 gtk+ intltool-native ncurses" + +inherit gnome + +SRC_URI += " \ + file://vte.desktop.in \ + " + +EXTRA_OECONF = "--disable-gtk-doc --disable-python" + +# Upstream does not provide desktop file for vte considering it only as +# a testing utility. +do_install_append() { + mkdir -p ${D}${datadir}/applications + sed s/@VERSION@/${PV}/ <${WORKDIR}/vte.desktop.in >${D}${datadir}/applications/vte.desktop +} + +do_configure_prepend() { + sed -i -e s:docs::g ${S}/Makefile.am + echo "EXTRA_DIST = version.xml" > gtk-doc.make +} + +do_stage() { + autotools_stage_all +} + +PACKAGES =+ "libvte vte-termcap gnome-pty-helper" +FILES_libvte = "${libdir}/*.so.*" +FILES_gnome-pty-helper = "${libexecdir}/gnome-pty-helper" +RDEPENDS_libvte = "vte-termcap gnome-pty-helper" +FILES_vte-termcap = "${datadir}/vte/termcap" -- cgit v1.2.3 From 6c47435bdb4abb5e5c4831ff774fe2c604d3aadf Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Thu, 6 Aug 2009 12:49:09 -0700 Subject: image.bbclass: fix bug in lingua code (code wasn't spitting entries like fr-fr and thus locale-fr packages were bing omitted) --- classes/image.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/image.bbclass b/classes/image.bbclass index 385043bfc7..f7afbab81e 100644 --- a/classes/image.bbclass +++ b/classes/image.bbclass @@ -243,8 +243,10 @@ if [ -e ${IMAGE_ROOTFS}/usr/bin/opkg-cl ] ; then ${OPKG} list_installed | awk '{print $1}' |sort | uniq > /tmp/installed-packages for i in $(cat /tmp/installed-packages | grep -v locale) ; do - for translation in ${IMAGE_LINGUAS} $(echo ${IMAGE_LINGUAS} | awk -F_ '{print $1}'); do + for translation in ${IMAGE_LINGUAS}; do + translation_split=$(echo ${translation} | awk -F '-' '{print $1}') echo ${i}-locale-${translation} + echo ${i}-locale-${translation_split} done done | sort | uniq > /tmp/wanted-locale-packages -- cgit v1.2.3 From 691e173d1979387337e4973db8213ab22f64ba69 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Fri, 7 Aug 2009 13:40:50 -0700 Subject: gconf: add 2.26.2 --- conf/checksums.ini | 4 ++ .../gconf-2.26.2/org.gnome.GConf.Defaults.service | 4 ++ recipes/gnome/gconf-2.26.2/org.gnome.GConf.service | 3 ++ recipes/gnome/gconf_2.26.2.bb | 51 ++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 recipes/gnome/gconf-2.26.2/org.gnome.GConf.Defaults.service create mode 100644 recipes/gnome/gconf-2.26.2/org.gnome.GConf.service create mode 100644 recipes/gnome/gconf_2.26.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 0616722bfb..dbfe5195a1 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -342,6 +342,10 @@ sha256=ffae146dc20458698acf5ccc384dc32317cea1df0c95b44b5d47cca8b26bc986 md5=83b738d805e17c226f43bbac453a0631 sha256=14b0fb8ce8a97a0bf7d8f5be57f6bb67dc9e5273f1f465f3babe994c44db3d87 +[http://ftp.gnome.org/pub/GNOME/sources/GConf/2.26/GConf-2.26.2.tar.bz2] +md5=8b55d58dab13e821e048627aa4f92b8b +sha256=717af270db891088394d154e3e22acc01af382306624c83679a4f8d6ba8467ed + [http://ftp.gnome.org/pub/GNOME/sources/GConf/2.6/GConf-2.6.1.tar.bz2] md5=194fab4e2e87c7ae3c7fea926fd281bc sha256=31d894960e0d2eba8fa2746e4fde31983a1e49dc856a880adb59d5f251a690cf diff --git a/recipes/gnome/gconf-2.26.2/org.gnome.GConf.Defaults.service b/recipes/gnome/gconf-2.26.2/org.gnome.GConf.Defaults.service new file mode 100644 index 0000000000..d6e4e072b2 --- /dev/null +++ b/recipes/gnome/gconf-2.26.2/org.gnome.GConf.Defaults.service @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.gnome.GConf.Defaults +Exec=/usr/libexec/gconf-defaults-mechanism +User=root diff --git a/recipes/gnome/gconf-2.26.2/org.gnome.GConf.service b/recipes/gnome/gconf-2.26.2/org.gnome.GConf.service new file mode 100644 index 0000000000..6939fd028b --- /dev/null +++ b/recipes/gnome/gconf-2.26.2/org.gnome.GConf.service @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.gnome.GConf +Exec=/usr/libexec/gconfd-2 diff --git a/recipes/gnome/gconf_2.26.2.bb b/recipes/gnome/gconf_2.26.2.bb new file mode 100644 index 0000000000..005ab47cfc --- /dev/null +++ b/recipes/gnome/gconf_2.26.2.bb @@ -0,0 +1,51 @@ +DESCRIPTION = "GNOME configuration database system" +SECTION = "x11/gnome" +LICENSE = "LGPL" +DEPENDS = "orbit2 glib-2.0 libxml2 policykit" +ORBIT_IDL_SRC = "${STAGING_BINDIR_NATIVE}/orbit-idl-2" +PR = "r1" + +S = "${WORKDIR}/GConf-${PV}" + +SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/GConf/2.26/GConf-${PV}.tar.bz2 \ + file://org.gnome.GConf.service \ + file://org.gnome.GConf.Defaults.service \ + " + +EXTRA_OECONF = "--disable-gtk-doc" +HEADERS = "gconf.h gconf-changeset.h gconf-listeners.h gconf-schema.h gconf-value.h gconf-error.h gconf-engine.h gconf-client.h gconf-enum-types.h" + +inherit autotools pkgconfig gettext + +do_compile() { + oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" +} + +do_stage() { + oe_libinstall -so -C gconf libgconf-2 ${STAGING_LIBDIR} + install -d ${STAGING_INCDIR}/gconf/2/gconf/ + ( cd gconf; for i in ${HEADERS}; do install -m 0644 $i ${STAGING_INCDIR}/gconf/2/gconf/$i; done ) + install -m 0644 gconf-2.m4 ${STAGING_DATADIR}/aclocal/gconf-2.m4 +} + +do_install() { + oe_runmake ORBIT_IDL="${ORBIT_IDL_SRC}" DESTDIR="${D}" install + + install -d ${D}/${datadir}/dbus-1/services/ + install -m 0644 ${WORKDIR}/org.gnome.GConf.service ${D}/${datadir}/dbus-1/services/ + + install -d ${D}/${datadir}/dbus-1/system-services/ + install -m 0644 ${WORKDIR}/org.gnome.GConf.Defaults.service ${D}/${datadir}/dbus-1/system-services/ + + # this directory need to be created to avoid an Error 256 at gdm launch + install -d ${D}/${sysconfdir}/gconf/gconf.xml.system +} + +FILES_${PN} += "${libdir}/GConf/* \ + ${datadir}/dbus-1/services \ + ${datadir}/dbus-1/system-services \ + " + +FILES_${PN}-dbg += "${libdir}/*/*/.debug" +FILES_${PN}-dev += "${libdir}/GConf/2/*.la ${datadir}/sgml/gconf/gconf-1.0.dtd" + -- cgit v1.2.3 From 87ae19b3f6ceec04775f9d32b818e012702f594e Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 8 Aug 2009 11:52:53 +0200 Subject: gedit: depend on iso-codes --- recipes/gnome/gedit_2.26.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gnome/gedit_2.26.2.bb b/recipes/gnome/gedit_2.26.2.bb index a0585f10e6..10e5b54f97 100644 --- a/recipes/gnome/gedit_2.26.2.bb +++ b/recipes/gnome/gedit_2.26.2.bb @@ -2,7 +2,7 @@ DESCRIPTION = "GNOME editor" SECTION = "x11/gnome" LICENSE = "GPL" -DEPENDS = "gnome-common glib-2.0 gtk+ gconf gtksourceview2" +DEPENDS = "iso-codes gnome-common glib-2.0 gtk+ gconf gtksourceview2" RDEPENDS += " gtksourceview2" inherit gnome pkgconfig -- cgit v1.2.3 From f957642ad260490c51966b67670345bb4380d7bf Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 8 Aug 2009 12:11:26 +0200 Subject: fribidi: add 0.19.2 --- conf/checksums.ini | 4 ++++ recipes/libfribidi/fribidi_0.19.2.bb | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 recipes/libfribidi/fribidi_0.19.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index dbfe5195a1..f6cbe6e1b7 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -6998,6 +6998,10 @@ sha256=f3ecdb9d108bd61ec9394df75f5fd68ba886a8da0863ba6258338893aec6c04f md5=0f6e7ecca08e6e108dc06337f5b5cabf sha256=f3ecdb9d108bd61ec9394df75f5fd68ba886a8da0863ba6258338893aec6c04f +[http://fribidi.org/download/fribidi-0.19.2.tar.gz] +md5=626db17d2d99b43615ad9d12500f568a +sha256=49cf91586e48b52fe25872ff66c1da0dff0daac2593f9f300e2af12f44f64177 + [http://www.tads.org/frobtads/frobtads-0.8.tar.gz] md5=c31b44a7bea51f04958358e575bde731 sha256=1aa4fe2f4a8d79f7f4542d96f0b179886c04cbdfd6a972a19ab80437e6150549 diff --git a/recipes/libfribidi/fribidi_0.19.2.bb b/recipes/libfribidi/fribidi_0.19.2.bb new file mode 100644 index 0000000000..1e12c98545 --- /dev/null +++ b/recipes/libfribidi/fribidi_0.19.2.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "Fribidi library for bidirectional text" +SECTION = "libs" +PRIORITY = "optional" + +PROVIDES = "libfribidi" + +# Slightly incompatible with 0.10.x, so: +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_angstrom = "1" + +inherit autotools_stage lib_package pkgconfig + +CFLAGS_append = " -DPAGE_SIZE=4096 " + +SRC_URI = "http://fribidi.org/download/fribidi-${PV}.tar.gz" -- cgit v1.2.3 From e96d3bd8b26687de6720f18d89d0f0bd48149d23 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sat, 8 Aug 2009 12:11:41 +0200 Subject: angstrom: prefer fribidi 0.19.x over libfribidi 0.10.x --- conf/distro/angstrom-2008.1.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf index d5e09af068..8ae78b7148 100644 --- a/conf/distro/angstrom-2008.1.conf +++ b/conf/distro/angstrom-2008.1.conf @@ -91,6 +91,8 @@ PREFERRED_PROVIDER_avahi = "avahi" PREFERRED_PROVIDER_virtual/libusb0 ?= "libusb-compat" PREFERRED_PROVIDER_virtual/gail ?= "gtk+" +PREFERRED_PROVIDER_libfribidi = "fribidi" + #powerpc needs additional patches to gcc ANGSTROM_GCC_VERSION_ppc405 ?= "4.1.1" ANGSTROM_GCC_VERSION_xilinx-ml403 ?= "4.1.1" -- cgit v1.2.3 From 168db7958534e9f1714a71981c338ceeeb55bdaf Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 8 Aug 2009 12:46:00 +0000 Subject: pkgconfig: Bump PR to keep incremental versioning. --- recipes/pkgconfig/pkgconfig_0.23.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pkgconfig/pkgconfig_0.23.bb b/recipes/pkgconfig/pkgconfig_0.23.bb index 8e75adc6cf..fb2b9659fc 100644 --- a/recipes/pkgconfig/pkgconfig_0.23.bb +++ b/recipes/pkgconfig/pkgconfig_0.23.bb @@ -1,6 +1,6 @@ require pkgconfig.inc -PR = "${INC_PR}.1" +PR = "${INC_PR}.3" DEPENDS += "glib-2.0" EXTRA_OECONF = "--with-installed-glib" -- cgit v1.2.3 From 55e26ebf17c48416e508db768f04123c13614150 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 8 Aug 2009 12:46:57 +0000 Subject: gmp: Bump PR to keep incremental versioning. --- recipes/gmp/gmp_4.2.4.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/gmp/gmp_4.2.4.bb b/recipes/gmp/gmp_4.2.4.bb index a9c14e6a3f..9aa5bf8edc 100644 --- a/recipes/gmp/gmp_4.2.4.bb +++ b/recipes/gmp/gmp_4.2.4.bb @@ -1,5 +1,5 @@ INC_PR = "r0" -PR = "${INC_PR}.1" +PR = "${INC_PR}.4" SRC_URI_append += "file://sh4-asmfix.patch;patch=1 \ file://use-includedir.patch;patch=1 \ -- cgit v1.2.3 From 08df94776ac5c549d64fdd3142d031ed3d1ec367 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sat, 8 Aug 2009 12:47:20 +0000 Subject: xserver-kdrive-1300: Bump PR to keep incremental versioning. --- recipes/xorg-xserver/xserver-kdrive-1300_1.3.0.0.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/xorg-xserver/xserver-kdrive-1300_1.3.0.0.bb b/recipes/xorg-xserver/xserver-kdrive-1300_1.3.0.0.bb index 73aba4c0fc..0e1fe18eb9 100644 --- a/recipes/xorg-xserver/xserver-kdrive-1300_1.3.0.0.bb +++ b/recipes/xorg-xserver/xserver-kdrive-1300_1.3.0.0.bb @@ -5,7 +5,7 @@ FILESPATH = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/xserver-kdrive-1.3. PKGN = xserver-kdrive-1300 require xserver-kdrive_1.3.0.0.bb -PR_append = ".1" +PR_append = ".3" RPROVIDES_${PKGN}-fbdev_angstrom += "xserver-kdrive-fbdev" RREPLACES_${PKGN}-fbdev_angstrom += "xserver-kdrive-fbdev" -- cgit v1.2.3 From f2ee6f993790daa0765f89712c14b9e49b686ab8 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 8 Aug 2009 11:54:55 -0700 Subject: gcc-4.4.1.inc: Make cross compile for SH architecture. checksums.ini: Add checksum for lilo. Signed-off-by: Khem Raj --- conf/checksums.ini | 8 +++++ recipes/gcc/gcc-4.4.1.inc | 4 ++- ...cc-disable-linux-unwind-with-libc-inhibit.patch | 35 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 recipes/gcc/gcc-4.4.1/gcc-disable-linux-unwind-with-libc-inhibit.patch diff --git a/conf/checksums.ini b/conf/checksums.ini index f6cbe6e1b7..9c62151f8e 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -15430,6 +15430,10 @@ sha256=97d0ac5957745eeaf311ec38ebbbf3b30a5316b01c320a759af47129c994c20c md5=949c33a81e83f7718a47280bef21b90c sha256=197bd2b57c5e2b9bfc30bb565a4c44fbea82daa20a31fa8ba490dd61dad69f2a +[http://twibble.org/dist/sh4/src/lilosh/lilo-21.tar.gz] +md5=1e975d827ad96e1942df73f63512178e +sha256=da2340aca2eaf451243d2e4c2bf66aa4b80cc0abaef96860da8daf5db1cae12f + [http://www-users.cs.york.ac.uk/~aw/pylinda/dist/linda-0.6.tar.gz] md5=c3e1b6c428218968e2963182c1df1fdc sha256=cba8ac22d77bbf8f6ed4a98933242b89ee2426cbc216f54415eafcac1274547a @@ -28438,6 +28442,10 @@ sha256=0937b15ca5dcd6f49adff04096610cee1f70197e17d461aefa98ed52e5ea0b72 md5=48958b1a3fc86261a26eea40a4f7d4af sha256=f539e6db53233fa75d5fa389b4807d54add312fc96de71b5eb7cf4f071719027 +[http://www.zsh.org/pub/zsh-4.3.10.tar.bz2] +md5=74c5b275544400082a1cde806c98682a +sha256=63fdc0273eadbb42d164f38b0b79922c0b3df0e97084e746a318276d935a4f7c + [http://www.lachner-net.de/Frames/Software/zshopi_0.2.tar.bz2] md5=1343c4de6d586a1b4ed2b5c97d53e717 sha256=6a136cbc7fdb38c73fe5862f21913e8fe63864063bba833c149c1098d758a12f diff --git a/recipes/gcc/gcc-4.4.1.inc b/recipes/gcc/gcc-4.4.1.inc index e05da2b5a0..a5b9d918e4 100644 --- a/recipes/gcc/gcc-4.4.1.inc +++ b/recipes/gcc/gcc-4.4.1.inc @@ -14,7 +14,9 @@ FILESPATHPKG .= ":gcc-$PV" SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \ file://100-uclibc-conf.patch;patch=1 \ - " + file://gcc-uclibc-locale-ctype_touplow_t.patch;patch=1 \ + file://gcc-disable-linux-unwind-with-libc-inhibit.patch;patch=1 \ + " # Language Overrides FORTRAN = "" JAVA = "" diff --git a/recipes/gcc/gcc-4.4.1/gcc-disable-linux-unwind-with-libc-inhibit.patch b/recipes/gcc/gcc-4.4.1/gcc-disable-linux-unwind-with-libc-inhibit.patch new file mode 100644 index 0000000000..a6ba7a70ab --- /dev/null +++ b/recipes/gcc/gcc-4.4.1/gcc-disable-linux-unwind-with-libc-inhibit.patch @@ -0,0 +1,35 @@ +Backport this patch + +2009-04-02 Andrew Stubbs + + * config/sh/linux-unwind.h: Disable when inhibit_libc is defined. + + +http://gcc.gnu.org/viewcvs?view=rev&revision=145442 + +To get gcc compiled for SH + +-Khem +Index: gcc-4.4.1/gcc/config/sh/linux-unwind.h +=================================================================== +--- gcc-4.4.1.orig/gcc/config/sh/linux-unwind.h 2009-08-08 10:21:35.943210469 -0700 ++++ gcc-4.4.1/gcc/config/sh/linux-unwind.h 2009-08-08 10:22:18.643210817 -0700 +@@ -24,7 +24,11 @@ + + + /* Do code reading to identify a signal frame, and set the frame +- state data appropriately. See unwind-dw2.c for the structs. */ ++ state data appropriately. See unwind-dw2.c for the structs. ++ Don't use this at all if inhibit_libc is used. */ ++ ++#ifndef inhibit_libc ++ + + #include + #include +@@ -248,3 +252,5 @@ + return _URC_NO_REASON; + } + #endif /* defined (__SH5__) */ ++ ++#endif /* inhibit_libc */ -- cgit v1.2.3 From 8ccfc13fefa2d748b038d8ee8ba2cba3265f77a4 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 8 Aug 2009 12:38:43 -0700 Subject: linux-titan-sh4_2.6.21.bb: Include limits.h in sumversion.c Signed-off-by: Khem Raj --- recipes/linux/linux-titan-sh4_2.6.21.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/linux/linux-titan-sh4_2.6.21.bb b/recipes/linux/linux-titan-sh4_2.6.21.bb index c760669bde..e40a79b4c8 100644 --- a/recipes/linux/linux-titan-sh4_2.6.21.bb +++ b/recipes/linux/linux-titan-sh4_2.6.21.bb @@ -1,12 +1,13 @@ SECTION = "kernel" DESCRIPTION = "Linux kernel for SH4 based TITAN (NP51R/LinkGear Series 100) router appliance" LICENSE = "GPL" -PR = "r0" +PR = "r1" SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ file://titan-flash.patch;patch=1 \ file://titan-pcibios-scan-update.patch;patch=1 \ file://no-mm-mutex.patch;patch=1 \ + file://linux-2.6-limits.patch;patch=1 \ file://titan-config" S = "${WORKDIR}/linux-${PV}" -- cgit v1.2.3 From 5a728f256a542d0105a17778e428c704b6bddb54 Mon Sep 17 00:00:00 2001 From: Phil Blundell Date: Sat, 8 Aug 2009 12:57:56 -0700 Subject: eglibc-package.bbclass: Replace hardcoded /lib references It turns out that eglibc contains a bunch of hard-coded references to /lib. This patch replaces them with the appropriate ${base_libdir}. Also, the globs in ${libc_baselibs} were a bit too permissive and would accept, for example, "libc.a" which isn't something that we want in the main library package. - Phil Signed-off-by: Khem Raj Acked-By: Michael Smith --- recipes/eglibc/eglibc-package.bbclass | 13 ++++++------- recipes/eglibc/eglibc.inc | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/recipes/eglibc/eglibc-package.bbclass b/recipes/eglibc/eglibc-package.bbclass index d8ac4f4e86..5a4a656e38 100644 --- a/recipes/eglibc/eglibc-package.bbclass +++ b/recipes/eglibc/eglibc-package.bbclass @@ -38,13 +38,12 @@ RPROVIDES_eglibc-extra-nss = "glibc-extra-nss" RPROVIDES_eglibc-thread-db = "glibc-thread-db" RPROVIDES_eglibc-pcprofile = "glibc-pcprofile" RPROVIDES_eglibc-dbg = "glibc-dbg" - -libc_baselibs = "/lib/libc* /lib/libm* /lib/ld* /lib/libpthread* /lib/libresolv* /lib/librt* /lib/libutil* /lib/libnsl* /lib/libnss_files* /lib/libnss_compat* /lib/libnss_dns* /lib/libdl* /lib/libanl* /lib/libBrokenLocale*" +libc_baselibs = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so ${base_libdir}/libc*.so.* ${base_libdir}/libc-*.so ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so ${base_libdir}/libnss_files*.so.* ${base_libdir}/libnss_files-*.so ${base_libdir}/libnss_compat*.so.* ${base_libdir}/libnss_compat-*.so ${base_libdir}/libnss_dns*.so.* ${base_libdir}/libnss_dns-*.so ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so ${base_libdir}/libanl*.so.* ${base_libdir}/libanl-*.so ${base_libdir}/libBrokenLocale*.so.* ${base_libdir}/libBrokenLocale-*.so" FILES_${PN} = "${sysconfdir} ${libc_baselibs} /sbin/ldconfig ${libexecdir}/* ${datadir}/zoneinfo" FILES_ldd = "${bindir}/ldd" -FILES_libsegfault = "/lib/libSegFault*" -FILES_eglibc-extra-nss = "/lib/libnss*" +FILES_libsegfault = "${base_libdir}/libSegFault*" +FILES_eglibc-extra-nss = "${base_libdir}/libnss*" FILES_sln = "/sbin/sln" FILES_eglibc-dev_append = " ${libdir}/*.o ${bindir}/rpcgen" FILES_nscd = "${sbindir}/nscd*" @@ -53,8 +52,8 @@ FILES_eglibc-gconv = "${libdir}/gconv/*" FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/gconv/.debug" FILES_catchsegv = "${bindir}/catchsegv" RDEPENDS_catchsegv = "libsegfault" -FILES_eglibc-pcprofile = "/lib/libpcprofile.so" -FILES_eglibc-thread-db = "/lib/libthread_db*" +FILES_eglibc-pcprofile = "${base_libdir}/libpcprofile.so" +FILES_eglibc-thread-db = "${base_libdir}/libthread_db*" FILES_localedef = "${bindir}/localedef" RPROVIDES_eglibc-dev += "libc-dev" @@ -153,7 +152,7 @@ do_prep_locale_tree() { for i in $treedir/${datadir}/i18n/charmaps/*gz; do gunzip $i done - ls ${D}/lib/* | xargs -iBLAH cp -pPR BLAH $treedir/lib + ls ${D}${base_libdir}/* | xargs -iBLAH cp -pPR BLAH $treedir/lib if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* ]; then cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* $treedir/lib fi diff --git a/recipes/eglibc/eglibc.inc b/recipes/eglibc/eglibc.inc index 7863aacc89..1ca0c6264f 100644 --- a/recipes/eglibc/eglibc.inc +++ b/recipes/eglibc/eglibc.inc @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.eglibc.org/home" SECTION = "libs" PRIORITY = "required" LICENSE = "LGPL" -INC_PR = "r4" +INC_PR = "r5" # nptl needs unwind support in gcc, which can't be built without glibc. DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" #this leads to circular deps, so lets not add it yet -- cgit v1.2.3 From 272c915e842baa46354c699816b33fd4a9c8f687 Mon Sep 17 00:00:00 2001 From: Elena Grandi Date: Thu, 14 May 2009 07:14:55 +0000 Subject: gtksourceview: renamed the 1.x tree to gtksourceview1 GtkSourceView 1.x is an older stable version that is still required by some packages and is currently used in 2 recipes. Signed-off-by: Elena Grandi Signed-off-by: Khem Raj --- conf/distro/include/preferred-om-2008-versions.inc | 2 +- recipes/gobby/gobby_0.4.1.bb | 3 ++- recipes/gobby/gtksourceview_1.7.2.bb | 9 --------- recipes/gtksourceview/gtksourceview1_1.7.2.bb | 16 ++++++++++++++++ recipes/tea/tea_17.3.5.bb | 4 ++-- 5 files changed, 21 insertions(+), 13 deletions(-) delete mode 100644 recipes/gobby/gtksourceview_1.7.2.bb create mode 100644 recipes/gtksourceview/gtksourceview1_1.7.2.bb diff --git a/conf/distro/include/preferred-om-2008-versions.inc b/conf/distro/include/preferred-om-2008-versions.inc index b81f0b17e1..7cc923cc60 100644 --- a/conf/distro/include/preferred-om-2008-versions.inc +++ b/conf/distro/include/preferred-om-2008-versions.inc @@ -635,7 +635,7 @@ PREFERRED_VERSION_gtkmm ?= "2.10.10" PREFERRED_VERSION_gtk-sato-engine ?= "0.1" PREFERRED_VERSION_gtk-sharp ?= "2.10.2" PREFERRED_VERSION_gtk-smooth-engine ?= "0.5.8" -PREFERRED_VERSION_gtksourceview ?= "1.7.2" +PREFERRED_VERSION_gtksourceview1 ?= "1.7.2" PREFERRED_VERSION_gtkterm2 ?= "0.2.3" PREFERRED_VERSION_gtk-xfce-engine ?= "2.4.1" PREFERRED_VERSION_gtracer ?= "0.0.10" diff --git a/recipes/gobby/gobby_0.4.1.bb b/recipes/gobby/gobby_0.4.1.bb index f9474c8fe3..87f0fb9c5e 100644 --- a/recipes/gobby/gobby_0.4.1.bb +++ b/recipes/gobby/gobby_0.4.1.bb @@ -1,7 +1,8 @@ LICENSE = "LGPL" HOMEPAGE = "http://darcs.0x539.de/trac/obby/cgi-bin/trac.cgi/wiki/" +PR = "r1" -DEPENDS = "net6 gtkmm obby gtksourceview libxml++" +DEPENDS = "net6 gtkmm obby gtksourceview1 libxml++" inherit autotools pkgconfig SRC_URI = "http://releases.0x539.de/gobby/gobby-${PV}.tar.gz" diff --git a/recipes/gobby/gtksourceview_1.7.2.bb b/recipes/gobby/gtksourceview_1.7.2.bb deleted file mode 100644 index 6b4c8e686c..0000000000 --- a/recipes/gobby/gtksourceview_1.7.2.bb +++ /dev/null @@ -1,9 +0,0 @@ -LICENSE = "GPL" - -DEPENDS = "gtk+ libgnomeprint" - -inherit gnome pkgconfig - -do_stage() { -autotools_stage_all -} diff --git a/recipes/gtksourceview/gtksourceview1_1.7.2.bb b/recipes/gtksourceview/gtksourceview1_1.7.2.bb new file mode 100644 index 0000000000..44d88fb80d --- /dev/null +++ b/recipes/gtksourceview/gtksourceview1_1.7.2.bb @@ -0,0 +1,16 @@ +LICENSE = "GPL" + +PNAME = "gtksourceview" + +DEPENDS = "gtk+ libgnomeprint" + +S = "${WORKDIR}/${PNAME}-${PV}" + +inherit gnome pkgconfig + +# overrule SRC_URI from gnome.conf +SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2" + +do_stage() { +autotools_stage_all +} diff --git a/recipes/tea/tea_17.3.5.bb b/recipes/tea/tea_17.3.5.bb index c8dac8c94f..6412db0466 100644 --- a/recipes/tea/tea_17.3.5.bb +++ b/recipes/tea/tea_17.3.5.bb @@ -1,8 +1,8 @@ DESCRIPTION = "Tea - a GTK based text editor with highlighting and a lot of processing features" SECTION = "gpe" LICENSE = "GPL" -DEPENDS = "gtk+ gtksourceview" -PR = "r1" +DEPENDS = "gtk+ gtksourceview1" +PR = "r2" inherit autotools -- cgit v1.2.3 From 6e0c17c14182c0e17834de7cd44afbaa41824144 Mon Sep 17 00:00:00 2001 From: Michal Hrusecky Date: Fri, 29 May 2009 13:43:10 +0000 Subject: justreader: fixed build Adding missing include file so package can be built again. Signed-off-by: Michal Hrusecky Signed-off-by: Khem Raj --- recipes/justreader/files/missing-include.patch | 10 ++++++++++ recipes/justreader/justreader_2.0k.bb | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 recipes/justreader/files/missing-include.patch diff --git a/recipes/justreader/files/missing-include.patch b/recipes/justreader/files/missing-include.patch new file mode 100644 index 0000000000..4831f3847b --- /dev/null +++ b/recipes/justreader/files/missing-include.patch @@ -0,0 +1,10 @@ +--- a/shcm.cpp 2009-05-25 09:07:19.928704817 +0200 ++++ b/shcm.cpp 2009-05-25 09:07:38.225747505 +0200 +@@ -19,6 +19,7 @@ + ****************************************************************************/ + + #include ++#include + #include + + #include "shcm.h" diff --git a/recipes/justreader/justreader_2.0k.bb b/recipes/justreader/justreader_2.0k.bb index f3f71493fc..e05baf710f 100644 --- a/recipes/justreader/justreader_2.0k.bb +++ b/recipes/justreader/justreader_2.0k.bb @@ -6,7 +6,8 @@ HOMEPAGE = "http://justreader.sourceforge.net/" PR = "r3" SRC_URI = "${SOURCEFORGE_MIRROR}/justreader/justreader_${PV}.tgz \ -file://correct-settings-path.patch;patch=1" +file://correct-settings-path.patch;patch=1 \ +file://missing-include.patch;patch=1" S = "${WORKDIR}/TextReader2" -- cgit v1.2.3 From b1497a8e1d4cc19fb3589e8dbaf78dfe9ee3f567 Mon Sep 17 00:00:00 2001 From: Ramax Lo Date: Sun, 7 Jun 2009 19:03:17 +0000 Subject: u-boot-mkimage-openmoko: Fix SRC_URI Signed-off-by: Khem Raj --- recipes/u-boot/u-boot-mkimage-openmoko-native_oe.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/u-boot/u-boot-mkimage-openmoko-native_oe.bb b/recipes/u-boot/u-boot-mkimage-openmoko-native_oe.bb index 8b5564c14c..4005c376d8 100644 --- a/recipes/u-boot/u-boot-mkimage-openmoko-native_oe.bb +++ b/recipes/u-boot/u-boot-mkimage-openmoko-native_oe.bb @@ -5,7 +5,7 @@ inherit native PV = "1.2.0+git9912121f7ed804ea58fd62f3f230b5dcfc357d88svn2238" PR = "r1" -SRC_URI = "git://www.denx.de/git/u-boot.git/;protocol=git;tag=9912121f7ed804ea58fd62f3f230b5dcfc357d88 \ +SRC_URI = "git://git.denx.de/u-boot.git;protocol=git;tag=9912121f7ed804ea58fd62f3f230b5dcfc357d88 \ file://uboot-machtypes.patch;patch=1 \ file://ext2load_hex.patch;patch=1 \ file://uboot-s3c2410-warnings-fix.patch;patch=1 \ -- cgit v1.2.3 From 14d7697f931ae22daa2209d392d13e42b4d0c734 Mon Sep 17 00:00:00 2001 From: Florian Boor Date: Thu, 23 Jul 2009 00:23:01 +0000 Subject: RFC: eglibc libc6 and tzdata Hi, the eglibc libc6 package provides tzdata. The applied patch add this knowledge to the eglibc-package class. Greetings Florian >From 30d75e2580414498c86c6c1e023d35631019c370 Mon Sep 17 00:00:00 2001 From: Florian Boor Date: Thu, 23 Jul 2009 12:17:33 +0200 Subject: [PATCH] eglibc: libc6 package provides tzdata Avoids conflict with tzdata package. Signed-off-by: Khem Raj --- recipes/eglibc/eglibc-package.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/eglibc/eglibc-package.bbclass b/recipes/eglibc/eglibc-package.bbclass index 5a4a656e38..7843d9f668 100644 --- a/recipes/eglibc/eglibc-package.bbclass +++ b/recipes/eglibc/eglibc-package.bbclass @@ -29,7 +29,7 @@ BINARY_LOCALE_ARCHES ?= "arm.* i[3-6]86 x86_64 powerpc" PACKAGES = "eglibc-dbg eglibc catchsegv sln nscd ldd localedef eglibc-utils eglibc-dev eglibc-doc eglibc-locale libsegfault eglibc-extra-nss eglibc-thread-db eglibc-pcprofile" PACKAGES_DYNAMIC = "glibc-gconv-* glibc-charmap-* glibc-localedata-* glibc-binary-localedata-* eglibc-gconv-* eglibc-charmap-* eglibc-localedata-* eglibc-binary-localedata-* locale-base-*" -RPROVIDES_eglibc = "glibc" +RPROVIDES_eglibc = "glibc tzdata" RPROVIDES_eglibc-utils = "glibc-utils" RPROVIDES_eglibc-dev = "glibc-dev" RPROVIDES_eglibc-doc = "glibc-doc" -- cgit v1.2.3 From 9f6ae8707682ecb1afd1cad1370204f74742aa31 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 8 Aug 2009 20:16:28 -0700 Subject: lilo-sh_21.bb: Replace PAGE_SIZE PAGE_SIZE is not available to usersplace anymore struct partion in linux/genhd.h is defined conditional if CONFIG_BLOCK is defined. Signed-off-by: Khem Raj --- recipes/lilo-sh/files/lilo-replace-PAGE_SIZE.patch | 58 ++++++++++++++++++++++ recipes/lilo-sh/lilo-sh_21.bb | 6 ++- 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 recipes/lilo-sh/files/lilo-replace-PAGE_SIZE.patch diff --git a/recipes/lilo-sh/files/lilo-replace-PAGE_SIZE.patch b/recipes/lilo-sh/files/lilo-replace-PAGE_SIZE.patch new file mode 100644 index 0000000000..8d80040e08 --- /dev/null +++ b/recipes/lilo-sh/files/lilo-replace-PAGE_SIZE.patch @@ -0,0 +1,58 @@ +Index: lilo/boot.c +=================================================================== +--- lilo.orig/boot.c 2009-08-08 19:09:05.779211145 -0700 ++++ lilo/boot.c 2009-08-08 19:15:45.111207238 -0700 +@@ -21,6 +21,7 @@ + #include "map.h" + #include "partition.h" + #include "boot.h" ++#include + + + static GEOMETRY geo; +@@ -64,9 +65,9 @@ + if (!modern_kernel || !(hdr.flags & LFLAG_HIGH)) + check_size(spec,setup,sectors); + else { +- if (hdr.start % PAGE_SIZE) ++ if (hdr.start % getpagesize()) + die("Can't load kernel at mis-aligned address 0x%08lx\n",hdr.start); +- descr->start_page = hdr.start/PAGE_SIZE; /* load kernel high */ ++ descr->start_page = hdr.start/getpagesize(); /* load kernel high */ + } + geo_close(&geo); + if (verbose > 1) +@@ -161,7 +162,6 @@ + cfg_unset(cf_other,"map-drive"); + } + +- + #define PART(s,n) (((struct partition *) (s)[0].par_c.ptable)[(n)]) + + +Index: lilo/lilo.c +=================================================================== +--- lilo.orig/lilo.c 2009-08-08 19:09:05.779211145 -0700 ++++ lilo/lilo.c 2009-08-08 19:09:06.135205054 -0700 +@@ -154,7 +154,7 @@ + printf(" Kernel is loaded \"low\"\n"); + else printf(" Kernel is loaded \"high\", at 0x%08lx\n", + (unsigned long) descrs.d.descr[image].start_page* +- PAGE_SIZE); ++ getpagesize()); + if (!*(unsigned long *) descrs.d.descr[image].rd_size) + printf(" No initial RAM disk\n"); + else printf(" Initial RAM disk is %ld bytes\n", +Index: lilo/Makefile +=================================================================== +--- lilo.orig/Makefile 2009-08-08 19:45:05.247206997 -0700 ++++ lilo/Makefile 2009-08-08 19:45:18.759234365 -0700 +@@ -24,7 +24,7 @@ + # VARSETUP Enables use of variable-size setup segments. + # XL_SECS=n Support for extra large (non-standard) floppies. + +-CONFIG=-DIGNORECASE -DVARSETUP -DREWRITE_TABLE -DLARGE_EBDA -DONE_SHOT ++CONFIG=-DIGNORECASE -DVARSETUP -DREWRITE_TABLE -DLARGE_EBDA -DONE_SHOT -DCONFIG_BLOCK + + # End of configuration variables + diff --git a/recipes/lilo-sh/lilo-sh_21.bb b/recipes/lilo-sh/lilo-sh_21.bb index cc4fbac8a7..038573209a 100644 --- a/recipes/lilo-sh/lilo-sh_21.bb +++ b/recipes/lilo-sh/lilo-sh_21.bb @@ -12,7 +12,7 @@ the kernel. LILO can also boot other operating systems. LILO-sh is a \ port of LILO to the SH processor." SECTION = "bootloaders" LICENSE = "MIT" -PR = "r0" +PR = "r1" SRC_URI = "http://twibble.org/dist/sh4/src/lilosh/lilo-21.tar.gz \ file://lilo-0.21-include.patch;patch=1 \ @@ -23,7 +23,9 @@ SRC_URI = "http://twibble.org/dist/sh4/src/lilosh/lilo-21.tar.gz \ file://lilo-0.21-second.patch;patch=1;pnum=0 \ file://lilo-sh-linux.patch;patch=1 \ file://lilo-linkgear.patch;patch=1 \ - file://lilo-noconfig-h.patch;patch=1" + file://lilo-noconfig-h.patch;patch=1 \ + file://lilo-replace-PAGE_SIZE.patch;patch=1 \ + " S = "${WORKDIR}/lilo" -- cgit v1.2.3 From cf58571e78182f7cc07c9619ca4ae0dc2e6b5153 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 8 Aug 2009 20:18:38 -0700 Subject: linux-titan-sh4-2.6.21: Provide sidivsi3_i4i and udivsi3_i4i Signed-off-by: Khem Raj --- .../linux-sh-__sdivsi3_i4i.patch | 684 +++++++++++++++++++++ recipes/linux/linux-titan-sh4_2.6.21.bb | 3 +- 2 files changed, 686 insertions(+), 1 deletion(-) create mode 100644 recipes/linux/linux-titan-sh4-2.6.21/linux-sh-__sdivsi3_i4i.patch diff --git a/recipes/linux/linux-titan-sh4-2.6.21/linux-sh-__sdivsi3_i4i.patch b/recipes/linux/linux-titan-sh4-2.6.21/linux-sh-__sdivsi3_i4i.patch new file mode 100644 index 0000000000..057bfc196d --- /dev/null +++ b/recipes/linux/linux-titan-sh4-2.6.21/linux-sh-__sdivsi3_i4i.patch @@ -0,0 +1,684 @@ +Index: linux-2.6.21/arch/sh/kernel/sh_ksyms.c +=================================================================== +--- linux-2.6.21.orig/arch/sh/kernel/sh_ksyms.c 2009-08-08 16:52:36.627208225 -0700 ++++ linux-2.6.21/arch/sh/kernel/sh_ksyms.c 2009-08-08 16:55:12.488253830 -0700 +@@ -82,6 +82,8 @@ + DECLARE_EXPORT(__movmem_i4_even); + DECLARE_EXPORT(__movmem_i4_odd); + DECLARE_EXPORT(__movmemSI12_i4); ++DECLARE_EXPORT(__sdivsi3_i4i); ++DECLARE_EXPORT(__udivsi3_i4i); + #else /* GCC 3.x */ + DECLARE_EXPORT(__movstr_i4_even); + DECLARE_EXPORT(__movstr_i4_odd); +Index: linux-2.6.21/arch/sh/lib/udivsi3_i4i.S +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.21/arch/sh/lib/udivsi3_i4i.S 2009-08-08 16:56:38.980208882 -0700 +@@ -0,0 +1,666 @@ ++/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, ++ 2004, 2005, 2006 ++ Free Software Foundation, Inc. ++ ++This file 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, or (at your option) any ++later version. ++ ++In addition to the permissions in the GNU General Public License, the ++Free Software Foundation gives you unlimited permission to link the ++compiled version of this file into combinations with other programs, ++and to distribute those combinations without any restriction coming ++from the use of this file. (The General Public License restrictions ++do apply in other respects; for example, they cover modification of ++the file, and distribution when not linked into a combine ++executable.) ++ ++This file 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; see the file COPYING. If not, write to ++the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++Boston, MA 02110-1301, USA. */ ++ ++!! libgcc routines for the Renesas / SuperH SH CPUs. ++!! Contributed by Steve Chamberlain. ++!! sac@cygnus.com ++ ++!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines ++!! recoded in assembly by Toshiyasu Morita ++!! tm@netcom.com ++ ++/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and ++ ELF local label prefixes by J"orn Rennecke ++ amylaar@cygnus.com */ ++ ++/* This code used shld, thus is not suitable for SH1 / SH2. */ ++ ++/* Signed / unsigned division without use of FPU, optimized for SH4. ++ Uses a lookup table for divisors in the range -128 .. +128, and ++ div1 with case distinction for larger divisors in three more ranges. ++ The code is lumped together with the table to allow the use of mova. */ ++#ifdef CONFIG_CPU_LITTLE_ENDIAN ++#define L_LSB 0 ++#define L_LSWMSB 1 ++#define L_MSWLSB 2 ++#else ++#define L_LSB 3 ++#define L_LSWMSB 2 ++#define L_MSWLSB 1 ++#endif ++ ++ .balign 4 ++ .global __udivsi3_i4i ++ .global __udivsi3_i4 ++ .set __udivsi3_i4, __udivsi3_i4i ++ .type __udivsi3_i4i, @function ++__udivsi3_i4i: ++ mov.w c128_w, r1 ++ div0u ++ mov r4,r0 ++ shlr8 r0 ++ cmp/hi r1,r5 ++ extu.w r5,r1 ++ bf udiv_le128 ++ cmp/eq r5,r1 ++ bf udiv_ge64k ++ shlr r0 ++ mov r5,r1 ++ shll16 r5 ++ mov.l r4,@-r15 ++ div1 r5,r0 ++ mov.l r1,@-r15 ++ div1 r5,r0 ++ div1 r5,r0 ++ bra udiv_25 ++ div1 r5,r0 ++ ++div_le128: ++ mova div_table_ix,r0 ++ bra div_le128_2 ++ mov.b @(r0,r5),r1 ++udiv_le128: ++ mov.l r4,@-r15 ++ mova div_table_ix,r0 ++ mov.b @(r0,r5),r1 ++ mov.l r5,@-r15 ++div_le128_2: ++ mova div_table_inv,r0 ++ mov.l @(r0,r1),r1 ++ mov r5,r0 ++ tst #0xfe,r0 ++ mova div_table_clz,r0 ++ dmulu.l r1,r4 ++ mov.b @(r0,r5),r1 ++ bt/s div_by_1 ++ mov r4,r0 ++ mov.l @r15+,r5 ++ sts mach,r0 ++ /* clrt */ ++ addc r4,r0 ++ mov.l @r15+,r4 ++ rotcr r0 ++ rts ++ shld r1,r0 ++ ++div_by_1_neg: ++ neg r4,r0 ++div_by_1: ++ mov.l @r15+,r5 ++ rts ++ mov.l @r15+,r4 ++ ++div_ge64k: ++ bt/s div_r8 ++ div0u ++ shll8 r5 ++ bra div_ge64k_2 ++ div1 r5,r0 ++udiv_ge64k: ++ cmp/hi r0,r5 ++ mov r5,r1 ++ bt udiv_r8 ++ shll8 r5 ++ mov.l r4,@-r15 ++ div1 r5,r0 ++ mov.l r1,@-r15 ++div_ge64k_2: ++ div1 r5,r0 ++ mov.l zero_l,r1 ++ .rept 4 ++ div1 r5,r0 ++ .endr ++ mov.l r1,@-r15 ++ div1 r5,r0 ++ mov.w m256_w,r1 ++ div1 r5,r0 ++ mov.b r0,@(L_LSWMSB,r15) ++ xor r4,r0 ++ and r1,r0 ++ bra div_ge64k_end ++ xor r4,r0 ++ ++div_r8: ++ shll16 r4 ++ bra div_r8_2 ++ shll8 r4 ++udiv_r8: ++ mov.l r4,@-r15 ++ shll16 r4 ++ clrt ++ shll8 r4 ++ mov.l r5,@-r15 ++div_r8_2: ++ rotcl r4 ++ mov r0,r1 ++ div1 r5,r1 ++ mov r4,r0 ++ rotcl r0 ++ mov r5,r4 ++ div1 r5,r1 ++ .rept 5 ++ rotcl r0; div1 r5,r1 ++ .endr ++ rotcl r0 ++ mov.l @r15+,r5 ++ div1 r4,r1 ++ mov.l @r15+,r4 ++ rts ++ rotcl r0 ++ ++ .global __sdivsi3_i4i ++ .global __sdivsi3_i4 ++ .global __sdivsi3 ++ .set __sdivsi3_i4, __sdivsi3_i4i ++ .set __sdivsi3, __sdivsi3_i4i ++ .type __sdivsi3_i4i, @function ++ /* This is link-compatible with a __sdivsi3 call, ++ but we effectively clobber only r1. */ ++__sdivsi3_i4i: ++ mov.l r4,@-r15 ++ cmp/pz r5 ++ mov.w c128_w, r1 ++ bt/s pos_divisor ++ cmp/pz r4 ++ mov.l r5,@-r15 ++ neg r5,r5 ++ bt/s neg_result ++ cmp/hi r1,r5 ++ neg r4,r4 ++pos_result: ++ extu.w r5,r0 ++ bf div_le128 ++ cmp/eq r5,r0 ++ mov r4,r0 ++ shlr8 r0 ++ bf/s div_ge64k ++ cmp/hi r0,r5 ++ div0u ++ shll16 r5 ++ div1 r5,r0 ++ div1 r5,r0 ++ div1 r5,r0 ++udiv_25: ++ mov.l zero_l,r1 ++ div1 r5,r0 ++ div1 r5,r0 ++ mov.l r1,@-r15 ++ .rept 3 ++ div1 r5,r0 ++ .endr ++ mov.b r0,@(L_MSWLSB,r15) ++ xtrct r4,r0 ++ swap.w r0,r0 ++ .rept 8 ++ div1 r5,r0 ++ .endr ++ mov.b r0,@(L_LSWMSB,r15) ++div_ge64k_end: ++ .rept 8 ++ div1 r5,r0 ++ .endr ++ mov.l @r15+,r4 ! zero-extension and swap using LS unit. ++ extu.b r0,r0 ++ mov.l @r15+,r5 ++ or r4,r0 ++ mov.l @r15+,r4 ++ rts ++ rotcl r0 ++ ++div_le128_neg: ++ tst #0xfe,r0 ++ mova div_table_ix,r0 ++ mov.b @(r0,r5),r1 ++ mova div_table_inv,r0 ++ bt/s div_by_1_neg ++ mov.l @(r0,r1),r1 ++ mova div_table_clz,r0 ++ dmulu.l r1,r4 ++ mov.b @(r0,r5),r1 ++ mov.l @r15+,r5 ++ sts mach,r0 ++ /* clrt */ ++ addc r4,r0 ++ mov.l @r15+,r4 ++ rotcr r0 ++ shld r1,r0 ++ rts ++ neg r0,r0 ++ ++pos_divisor: ++ mov.l r5,@-r15 ++ bt/s pos_result ++ cmp/hi r1,r5 ++ neg r4,r4 ++neg_result: ++ extu.w r5,r0 ++ bf div_le128_neg ++ cmp/eq r5,r0 ++ mov r4,r0 ++ shlr8 r0 ++ bf/s div_ge64k_neg ++ cmp/hi r0,r5 ++ div0u ++ mov.l zero_l,r1 ++ shll16 r5 ++ div1 r5,r0 ++ mov.l r1,@-r15 ++ .rept 7 ++ div1 r5,r0 ++ .endr ++ mov.b r0,@(L_MSWLSB,r15) ++ xtrct r4,r0 ++ swap.w r0,r0 ++ .rept 8 ++ div1 r5,r0 ++ .endr ++ mov.b r0,@(L_LSWMSB,r15) ++div_ge64k_neg_end: ++ .rept 8 ++ div1 r5,r0 ++ .endr ++ mov.l @r15+,r4 ! zero-extension and swap using LS unit. ++ extu.b r0,r1 ++ mov.l @r15+,r5 ++ or r4,r1 ++div_r8_neg_end: ++ mov.l @r15+,r4 ++ rotcl r1 ++ rts ++ neg r1,r0 ++ ++div_ge64k_neg: ++ bt/s div_r8_neg ++ div0u ++ shll8 r5 ++ mov.l zero_l,r1 ++ .rept 6 ++ div1 r5,r0 ++ .endr ++ mov.l r1,@-r15 ++ div1 r5,r0 ++ mov.w m256_w,r1 ++ div1 r5,r0 ++ mov.b r0,@(L_LSWMSB,r15) ++ xor r4,r0 ++ and r1,r0 ++ bra div_ge64k_neg_end ++ xor r4,r0 ++ ++c128_w: ++ .word 128 ++ ++div_r8_neg: ++ clrt ++ shll16 r4 ++ mov r4,r1 ++ shll8 r1 ++ mov r5,r4 ++ .rept 7 ++ rotcl r1; div1 r5,r0 ++ .endr ++ mov.l @r15+,r5 ++ rotcl r1 ++ bra div_r8_neg_end ++ div1 r4,r0 ++ ++m256_w: ++ .word 0xff00 ++/* This table has been generated by divtab-sh4.c. */ ++ .balign 4 ++div_table_clz: ++ .byte 0 ++ .byte 1 ++ .byte 0 ++ .byte -1 ++ .byte -1 ++ .byte -2 ++ .byte -2 ++ .byte -2 ++ .byte -2 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -3 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -4 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -5 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++ .byte -6 ++/* Lookup table translating positive divisor to index into table of ++ normalized inverse. N.B. the '0' entry is also the last entry of the ++ previous table, and causes an unaligned access for division by zero. */ ++div_table_ix: ++ .byte -6 ++ .byte -128 ++ .byte -128 ++ .byte 0 ++ .byte -128 ++ .byte -64 ++ .byte 0 ++ .byte 64 ++ .byte -128 ++ .byte -96 ++ .byte -64 ++ .byte -32 ++ .byte 0 ++ .byte 32 ++ .byte 64 ++ .byte 96 ++ .byte -128 ++ .byte -112 ++ .byte -96 ++ .byte -80 ++ .byte -64 ++ .byte -48 ++ .byte -32 ++ .byte -16 ++ .byte 0 ++ .byte 16 ++ .byte 32 ++ .byte 48 ++ .byte 64 ++ .byte 80 ++ .byte 96 ++ .byte 112 ++ .byte -128 ++ .byte -120 ++ .byte -112 ++ .byte -104 ++ .byte -96 ++ .byte -88 ++ .byte -80 ++ .byte -72 ++ .byte -64 ++ .byte -56 ++ .byte -48 ++ .byte -40 ++ .byte -32 ++ .byte -24 ++ .byte -16 ++ .byte -8 ++ .byte 0 ++ .byte 8 ++ .byte 16 ++ .byte 24 ++ .byte 32 ++ .byte 40 ++ .byte 48 ++ .byte 56 ++ .byte 64 ++ .byte 72 ++ .byte 80 ++ .byte 88 ++ .byte 96 ++ .byte 104 ++ .byte 112 ++ .byte 120 ++ .byte -128 ++ .byte -124 ++ .byte -120 ++ .byte -116 ++ .byte -112 ++ .byte -108 ++ .byte -104 ++ .byte -100 ++ .byte -96 ++ .byte -92 ++ .byte -88 ++ .byte -84 ++ .byte -80 ++ .byte -76 ++ .byte -72 ++ .byte -68 ++ .byte -64 ++ .byte -60 ++ .byte -56 ++ .byte -52 ++ .byte -48 ++ .byte -44 ++ .byte -40 ++ .byte -36 ++ .byte -32 ++ .byte -28 ++ .byte -24 ++ .byte -20 ++ .byte -16 ++ .byte -12 ++ .byte -8 ++ .byte -4 ++ .byte 0 ++ .byte 4 ++ .byte 8 ++ .byte 12 ++ .byte 16 ++ .byte 20 ++ .byte 24 ++ .byte 28 ++ .byte 32 ++ .byte 36 ++ .byte 40 ++ .byte 44 ++ .byte 48 ++ .byte 52 ++ .byte 56 ++ .byte 60 ++ .byte 64 ++ .byte 68 ++ .byte 72 ++ .byte 76 ++ .byte 80 ++ .byte 84 ++ .byte 88 ++ .byte 92 ++ .byte 96 ++ .byte 100 ++ .byte 104 ++ .byte 108 ++ .byte 112 ++ .byte 116 ++ .byte 120 ++ .byte 124 ++ .byte -128 ++/* 1/64 .. 1/127, normalized. There is an implicit leading 1 in bit 32. */ ++ .balign 4 ++zero_l: ++ .long 0x0 ++ .long 0xF81F81F9 ++ .long 0xF07C1F08 ++ .long 0xE9131AC0 ++ .long 0xE1E1E1E2 ++ .long 0xDAE6076C ++ .long 0xD41D41D5 ++ .long 0xCD856891 ++ .long 0xC71C71C8 ++ .long 0xC0E07039 ++ .long 0xBACF914D ++ .long 0xB4E81B4F ++ .long 0xAF286BCB ++ .long 0xA98EF607 ++ .long 0xA41A41A5 ++ .long 0x9EC8E952 ++ .long 0x9999999A ++ .long 0x948B0FCE ++ .long 0x8F9C18FA ++ .long 0x8ACB90F7 ++ .long 0x86186187 ++ .long 0x81818182 ++ .long 0x7D05F418 ++ .long 0x78A4C818 ++ .long 0x745D1746 ++ .long 0x702E05C1 ++ .long 0x6C16C16D ++ .long 0x68168169 ++ .long 0x642C8591 ++ .long 0x60581606 ++ .long 0x5C9882BA ++ .long 0x58ED2309 ++div_table_inv: ++ .long 0x55555556 ++ .long 0x51D07EAF ++ .long 0x4E5E0A73 ++ .long 0x4AFD6A06 ++ .long 0x47AE147B ++ .long 0x446F8657 ++ .long 0x41414142 ++ .long 0x3E22CBCF ++ .long 0x3B13B13C ++ .long 0x38138139 ++ .long 0x3521CFB3 ++ .long 0x323E34A3 ++ .long 0x2F684BDB ++ .long 0x2C9FB4D9 ++ .long 0x29E4129F ++ .long 0x27350B89 ++ .long 0x24924925 ++ .long 0x21FB7813 ++ .long 0x1F7047DD ++ .long 0x1CF06ADB ++ .long 0x1A7B9612 ++ .long 0x18118119 ++ .long 0x15B1E5F8 ++ .long 0x135C8114 ++ .long 0x11111112 ++ .long 0xECF56BF ++ .long 0xC9714FC ++ .long 0xA6810A7 ++ .long 0x8421085 ++ .long 0x624DD30 ++ .long 0x4104105 ++ .long 0x2040811 ++ /* maximum error: 0.987342 scaled: 0.921875*/ diff --git a/recipes/linux/linux-titan-sh4_2.6.21.bb b/recipes/linux/linux-titan-sh4_2.6.21.bb index e40a79b4c8..ef5ffad0db 100644 --- a/recipes/linux/linux-titan-sh4_2.6.21.bb +++ b/recipes/linux/linux-titan-sh4_2.6.21.bb @@ -1,13 +1,14 @@ SECTION = "kernel" DESCRIPTION = "Linux kernel for SH4 based TITAN (NP51R/LinkGear Series 100) router appliance" LICENSE = "GPL" -PR = "r1" +PR = "r2" SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ file://titan-flash.patch;patch=1 \ file://titan-pcibios-scan-update.patch;patch=1 \ file://no-mm-mutex.patch;patch=1 \ file://linux-2.6-limits.patch;patch=1 \ + file://linux-sh-__sdivsi3_i4i.patch;patch=1 \ file://titan-config" S = "${WORKDIR}/linux-${PV}" -- cgit v1.2.3 From ebacd72f73b9b3c8d91c6c0988d6c7fe7ed1bca4 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 06:20:34 +0200 Subject: qt4-tools-sdk: Use an install target to install the qt4 utilities --- recipes/qt4/qt4-tools-sdk_4.5.2.bb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/recipes/qt4/qt4-tools-sdk_4.5.2.bb b/recipes/qt4/qt4-tools-sdk_4.5.2.bb index fafb7710c9..c0f2f7aad4 100644 --- a/recipes/qt4/qt4-tools-sdk_4.5.2.bb +++ b/recipes/qt4/qt4-tools-sdk_4.5.2.bb @@ -61,12 +61,11 @@ do_compile() { done } -do_stage() { - install -d ${STAGING_BINDIR_NATIVE}/ - install -m 0755 bin/qmake ${STAGING_BINDIR_NATIVE}/qmake2 +do_install() { + install -d ${D}${bindir} + install -m 0755 bin/qmake ${D}${bindir}/qmake2 for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do - install -m 0755 bin/${i} ${STAGING_BINDIR_NATIVE}/${i}4 + install -m 0755 bin/${i} ${D}${bindir}/${i}4 done } - -- cgit v1.2.3 From e513208d784ab2df564c9b99031523599aa528c7 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 06:28:15 +0200 Subject: meta-toolchain-qte: Export some more paths Export RCC, UIC3, DBUSXML2CPP, DBUSCPP2XML environment variables. This is based on a patch from Ihar Hrachyshka. Signed-off-by: Ihar Hrachyshka --- recipes/meta/meta-toolchain-qte.bb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/meta/meta-toolchain-qte.bb b/recipes/meta/meta-toolchain-qte.bb index 70c4087211..b654935431 100644 --- a/recipes/meta/meta-toolchain-qte.bb +++ b/recipes/meta/meta-toolchain-qte.bb @@ -1,5 +1,5 @@ # Qt Embedded toolchain -PR = "r1" +PR = "r2" TOOLCHAIN_HOST_TASK = "task-qte-toolchain-host" TOOLCHAIN_TARGET_TASK = "task-qte-toolchain-target" @@ -19,6 +19,10 @@ do_populate_sdk_append() { echo 'export OE_QMAKE_INCDIR_QT=${prefix}/${TARGET_SYS}/${layout_includedir}/${QT_DIR_NAME}' >> $script echo 'export OE_QMAKE_MOC=${prefix}/${layout_bindir}/moc4' >> $script echo 'export OE_QMAKE_UIC=${prefix}/${layout_bindir}/uic4' >> $script + echo 'export OE_QMAKE_UIC3=${prefix}/${layout_bindir}/uic34' >> $script + echo 'export OE_QMAKE_RCC=${prefix}/${layout_bindir}/rcc4' >> $script + echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/${layout_bindir}/qdbuscpp2xml4' >> $script + echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/${layout_bindir}/qdbusxml2cpp4' >> $script # Repack SDK with new environment-setup cd ${SDK_OUTPUT} -- cgit v1.2.3 From 8e50ddc4839d4537425132599cb60ba0d5b546cd Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 08:24:10 +0200 Subject: qt4-x11-free.inc: Do not override the var set by qt4-x11-free-gles Another attempt to fix the dependencies of qt4-x11-free-gles. Do not make libqt4-FOO-dev depend on qt4-x11-free-gles which will drag in more dependencies. A better fix would be to build the OpenVG graphicsengine unconditionally and build the screendriver out of this tree and install it as a plugin. Do the same change to qt4-embedded.inc. --- recipes/qt4/qt4-embedded.inc | 4 ++-- recipes/qt4/qt4-x11-free.inc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/qt4/qt4-embedded.inc b/recipes/qt4/qt4-embedded.inc index 962233efb1..95b770a5a4 100644 --- a/recipes/qt4/qt4-embedded.inc +++ b/recipes/qt4/qt4-embedded.inc @@ -6,8 +6,8 @@ HOMEPAGE = "http://www.trolltech.com" DEPENDS += "directfb tslib" INC_PR = "r14" -QT_BASE_NAME = "qt4-embedded" -QT_BASE_LIB = "libqt-embedded" +QT_BASE_NAME ?= "qt4-embedded" +QT_BASE_LIB ?= "libqt-embedded" QT_DIR_NAME = "qtopia" QT_LIBINFIX = "E" diff --git a/recipes/qt4/qt4-x11-free.inc b/recipes/qt4/qt4-x11-free.inc index 6ca20561cd..59c973f208 100644 --- a/recipes/qt4/qt4-x11-free.inc +++ b/recipes/qt4/qt4-x11-free.inc @@ -24,8 +24,8 @@ S = "${WORKDIR}/qt-x11-opensource-src-${PV}" QT_GLFLAGS ?= "-no-opengl" QT_CONFIG_FLAGS += "-no-xinerama -no-xkb ${QT_GLFLAGS}" -QT_BASE_NAME = "qt4" -QT_BASE_LIB = "libqt" +QT_BASE_NAME ?= "qt4" +QT_BASE_LIB ?= "libqt" QT_DIR_NAME = "qt4" QT_LIBINFIX = "" -- cgit v1.2.3 From a394010d4405423dd117e67e872513caafc1d0b7 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 9 Aug 2009 01:55:39 -0700 Subject: sanity.bbclass: Correct typo to refer to PACKAGE_EXTRA_ARCHS We were using EXTRA_PACKAGE_ARCHS which was sort of misleading if you started to search for this variable. It was a typo hence fixed as obvious. Signed-off-by: Khem Raj --- classes/sanity.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass index 29624c3f78..83c03299bf 100644 --- a/classes/sanity.bbclass +++ b/classes/sanity.bbclass @@ -185,7 +185,7 @@ def check_sanity(e): archs = data.getVar('PACKAGE_ARCHS', e.data, True).split() for arch in archs: if archs.count(arch) != 1: - messages = messages + "Error, Your PACKAGE_ARCHS field contains duplicates. Perhaps you set EXTRA_PACKAGE_ARCHS twice accidently through some tune file?\n" + messages = messages + "Error, Your PACKAGE_ARCHS field contains duplicates. Perhaps you set PACKAGE_EXTRA_ARCHS twice accidently through some tune file?\n" break if messages != "": -- cgit v1.2.3 From 257821eeea20420af8369a3db6fb398926fdfe84 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 9 Aug 2009 01:58:23 -0700 Subject: pciutils_3.1.2.bb: Dont install gzipped versio of pci.ids its not there. Signed-off-by: Khem Raj --- recipes/pciutils/pciutils_3.1.2.bb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/pciutils/pciutils_3.1.2.bb b/recipes/pciutils/pciutils_3.1.2.bb index ae7317ebbf..f23e6dde3d 100644 --- a/recipes/pciutils/pciutils_3.1.2.bb +++ b/recipes/pciutils/pciutils_3.1.2.bb @@ -12,7 +12,7 @@ SRC_URI_append_nylon = "file://gcc-3-compatibility.patch;patch=1 " PARALLEL_MAKE = "" -PR ="r3" +PR ="r4" EXTRA_OEMAKE += "'STRIP = '" export SHARED=yes @@ -34,7 +34,7 @@ do_install () { do_install_append () { install -d ${D}/${datadir} - install -m 6440 ${WORKDIR}/${PN}-${PV}/pci.ids.gz ${D}/${datadir} + install -m 6440 ${WORKDIR}/${PN}-${PV}/pci.ids ${D}/${datadir} # The makefile does not install the development files: # libpci.so pci.h header.h config.h types.h @@ -59,4 +59,4 @@ do_stage () { PACKAGES =+ "pciutils-ids" -FILES_pciutils-ids="${datadir}/pci.ids.gz" +FILES_pciutils-ids="${datadir}/pci.ids" -- cgit v1.2.3 From dc2cbe1749c5268eb38f5b73e888d5bbf90055ac Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 9 Aug 2009 02:07:20 -0700 Subject: tune-sh3.inc tune-sh4.inc: Define BASE_PACKAGE_ARCH Signed-off-by: Khem Raj --- conf/machine/include/tune-sh3.inc | 1 + conf/machine/include/tune-sh4.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/conf/machine/include/tune-sh3.inc b/conf/machine/include/tune-sh3.inc index 65bfacf174..32801a61c3 100644 --- a/conf/machine/include/tune-sh3.inc +++ b/conf/machine/include/tune-sh3.inc @@ -1,2 +1,3 @@ TARGET_CC_ARCH = "-ml -m3" FEED_ARCH = "sh3" +BASE_PACKAGE_ARCH = "sh3" diff --git a/conf/machine/include/tune-sh4.inc b/conf/machine/include/tune-sh4.inc index c20b8cf5a0..5d43e4195e 100644 --- a/conf/machine/include/tune-sh4.inc +++ b/conf/machine/include/tune-sh4.inc @@ -1,2 +1,3 @@ TARGET_CC_ARCH = "-ml -m4" FEED_ARCH = "sh4" +BASE_PACKAGE_ARCH = "sh4" -- cgit v1.2.3 From b9d8c34bc09feb72fd4578a0c6afe9bec5adf704 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 12:05:39 +0200 Subject: uclibc-initial_0.9.30.1.bb: Fix do_stage for ubuntu karmic gcc4.4 and glibc 2.10 complain that getline already has a different signature. Rename the version in the unidef.c. --- .../uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch | 31 ++++++++++++++++++++++ recipes/uclibc/uclibc_0.9.30.1.bb | 1 + 2 files changed, 32 insertions(+) create mode 100644 recipes/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch diff --git a/recipes/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch b/recipes/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch new file mode 100644 index 0000000000..b9ff6710bc --- /dev/null +++ b/recipes/uclibc/uclibc-0.9.30.1/gcc-4.4-fixlet.patch @@ -0,0 +1,31 @@ +Index: uClibc-0.9.30.1/extra/scripts/unifdef.c +=================================================================== +--- uClibc-0.9.30.1.orig/extra/scripts/unifdef.c 2009-08-09 11:55:23.000000000 +0200 ++++ uClibc-0.9.30.1/extra/scripts/unifdef.c 2009-08-09 11:55:46.000000000 +0200 +@@ -206,7 +206,7 @@ + static void error(const char *); + static int findsym(const char *); + static void flushline(bool); +-static Linetype getline(void); ++static Linetype _getline(void); + static Linetype ifeval(const char **); + static void ignoreoff(void); + static void ignoreon(void); +@@ -512,7 +512,7 @@ + + for (;;) { + linenum++; +- lineval = getline(); ++ lineval = _getline(); + trans_table[ifstate[depth]][lineval](); + debug("process %s -> %s depth %d", + linetype_name[lineval], +@@ -526,7 +526,7 @@ + * help from skipcomment(). + */ + static Linetype +-getline(void) ++_getline(void) + { + const char *cp; + int cursym; diff --git a/recipes/uclibc/uclibc_0.9.30.1.bb b/recipes/uclibc/uclibc_0.9.30.1.bb index 39d7f52504..5fdf829b60 100644 --- a/recipes/uclibc/uclibc_0.9.30.1.bb +++ b/recipes/uclibc/uclibc_0.9.30.1.bb @@ -19,6 +19,7 @@ SRC_URI += "file://uClibc.machine file://uClibc.distro \ file://pthread_atfork.patch;patch=1 \ file://uclibc_ldso_use_O0.patch;patch=1 \ file://ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch;patch=1 \ + file://gcc-4.4-fixlet.patch;patch=1 \ " #recent versions uclibc require real kernel headers PACKAGE_ARCH = "${MACHINE_ARCH}" -- cgit v1.2.3 From 39f8b8ac1d580d798af29f94d39f497e18c318ed Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 12:39:01 +0200 Subject: usermanual: Grammar fix. --- docs/usermanual/chapters/common_use_cases.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 143cbe0fe7..8000f5f1d3 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -196,7 +196,7 @@ arm-linux-objdump The prebuilt libraries We need the header files and the libraries itself. The following - directory layout is assume. PRE_BUILT has two + directory layout is assumed. PRE_BUILT has two subdirectories one is called include and holds the header files and the other directory is called lib and holds the shared and static libraries. Additionally a Qt2 directory -- cgit v1.2.3 From eef4af6584b6c8897625ca30d5ff6d5a420b5cf0 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Sun, 9 Aug 2009 13:04:01 +0000 Subject: xcalibrate: Use increment-able PV format as other git version recipes do. --- recipes/xcalibrate/xcalibrate_git.bb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recipes/xcalibrate/xcalibrate_git.bb b/recipes/xcalibrate/xcalibrate_git.bb index aba693ad6c..344a20a2a9 100644 --- a/recipes/xcalibrate/xcalibrate_git.bb +++ b/recipes/xcalibrate/xcalibrate_git.bb @@ -3,8 +3,9 @@ SECTION = "x11/libs" PRIORITY = "optional" DEPENDS = "virtual/libx11 xcalibrateext libxext" DESCRIPTION = "XCalibrate client-side library" +PR = "r0" -PV = "0.0+git4be232e30cd33a44a1ce6d3ec429ee6101540c62" +PV = "0.0+${PR}+gitr4be232e30cd33a44a1ce6d3ec429ee6101540c62" SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libXCalibrate;protocol=git;tag=4be232e30cd33a44a1ce6d3ec429ee6101540c62" S = "${WORKDIR}/git" -- cgit v1.2.3 From 7e5dace40c5966a27c62e7b893bf29aded35e3c1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 9 Aug 2009 15:13:02 +0200 Subject: task-qte-toolchain-target: Do not install the full qt4-embedded Do not install debug packages and examples making the SDK a bit smaller. --- recipes/tasks/task-qte-toolchain-target.bb | 33 +++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/recipes/tasks/task-qte-toolchain-target.bb b/recipes/tasks/task-qte-toolchain-target.bb index 82fa5d81d5..f72c7887cf 100644 --- a/recipes/tasks/task-qte-toolchain-target.bb +++ b/recipes/tasks/task-qte-toolchain-target.bb @@ -2,7 +2,34 @@ DESCRIPTION = "Target packages for Qt Embedded SDK" LICENSE = "MIT" ALLOW_EMPTY = "1" +PR = "r2" + RDEPENDS_${PN} += " \ - task-sdk-bare \ - qt4-embedded \ - qt4-embedded-dev" + task-sdk-bare \ + qt4-embedded-mkspecs \ + libqt-embeddedphonon4-dev \ + libqt-embedded3support4-dev \ + libqt-embeddedassistantclient4-dev \ + libqt-embeddedclucene4-dev \ + libqt-embeddedcore4-dev \ + libqt-embeddeddbus4-dev \ + libqt-embeddeddesignercomponents4-dev \ + libqt-embeddeddesigner4-dev \ + libqt-embeddeduitools4-dev \ + libqt-embeddedgui4-dev \ + libqt-embeddedhelp4-dev \ + libqt-embeddednetwork4-dev \ + libqt-embeddedscript4-dev \ + libqt-embeddedscripttools4-dev \ + libqt-embeddedsql4-dev \ + libqt-embeddedsvg4-dev \ + libqt-embeddedtest4-dev \ + libqt-embeddedwebkit4-dev \ + libqt-embeddedxml4-dev \ + libmysqlclient-dev \ + sqlite-dev \ + libsqlite-dev \ + libts-dev \ + expat-dev \ + " + -- cgit v1.2.3 From 70924feaeca6e418bdbe80ae53ca99f755e20a99 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sat, 8 Aug 2009 14:39:14 -0700 Subject: gnome-common: restructure recipes to use gnome-common.inc, add 2.26.0 --- conf/checksums.ini | 4 ++++ recipes/gnome/gnome-common-2.20.0/omf.patch | 13 ------------- recipes/gnome/gnome-common.inc | 28 ++++++++++++++++++++++++++++ recipes/gnome/gnome-common/omf.patch | 13 +++++++++++++ recipes/gnome/gnome-common_2.18.0.bb | 29 +---------------------------- recipes/gnome/gnome-common_2.20.0.bb | 29 +---------------------------- recipes/gnome/gnome-common_2.26.0.bb | 1 + 7 files changed, 48 insertions(+), 69 deletions(-) delete mode 100644 recipes/gnome/gnome-common-2.20.0/omf.patch create mode 100644 recipes/gnome/gnome-common.inc create mode 100644 recipes/gnome/gnome-common/omf.patch create mode 100644 recipes/gnome/gnome-common_2.26.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index dbfe5195a1..f5f07ffccb 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8338,6 +8338,10 @@ sha256=ba28c1017e7e4212db16ada3f44cb446b6637c9c4fe16c0e2c2a51c94c46bc5b md5=89e47677fb72695c75d2cefac84ff9f1 sha256=0e807cfe74a684c494a0949b7f96d231660f323253a89053e3ec32c4f518c8d9 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-common/2.26/gnome-common-2.26.0.tar.bz2] +md5=196daa38cb21d91da1d6ec085f1e158b +sha256=f6233ee73886c5ac31890c1a9b9f216e5f14558467dea7b0a61ef3c4cf51d84d + [http://ftp.gnome.org/pub/GNOME/sources/gnome-common/2.4/gnome-common-2.4.0.tar.bz2] md5=9f5163e616b2a02af633de9c82557fa0 sha256=9509137496606b101c6f570579b9d10ae11f531a8f8d9bfc5d113534b62376d7 diff --git a/recipes/gnome/gnome-common-2.20.0/omf.patch b/recipes/gnome/gnome-common-2.20.0/omf.patch deleted file mode 100644 index 0d85b001e0..0000000000 --- a/recipes/gnome/gnome-common-2.20.0/omf.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- gnome-common-2.4.0/doc-build/omf.make 2003-05-24 08:16:25.000000000 -0700 -+++ gnome-common-2.4.0.new/doc-build/omf.make 2004-11-15 14:01:12.185155192 -0700 -@@ -43,7 +43,9 @@ - install-data-hook-omf: - $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir) - for file in $(omffile); do \ -- $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ if [ -f $$file.out ]; then \ -+ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ fi; \ - done - -scrollkeeper-update -p $(DESTDIR)$(scrollkeeper_localstate_dir) -o $(DESTDIR)$(omf_dest_dir) - diff --git a/recipes/gnome/gnome-common.inc b/recipes/gnome/gnome-common.inc new file mode 100644 index 0000000000..9d1cdb00bf --- /dev/null +++ b/recipes/gnome/gnome-common.inc @@ -0,0 +1,28 @@ +LICENSE = "GPL" +SECTION = "x11/gnome" +DESCRIPTION = "Common macros for building GNOME applications" + +inherit gnome + +# The omf.make file failed if scrollkeeper doesn't happen to be +# installed + +SRC_URI += "file://omf.patch;patch=1" + +EXTRA_AUTORECONF = "" +DEPENDS = "" + +FILES_${PN} += "${datadir}/aclocal" +FILES_${PN}-dev = "" + +do_stage () { + rm -rf ${STAGE_TEMP} + mkdir -p ${STAGE_TEMP} + make DESTDIR="${STAGE_TEMP}" install + cp -pPR ${STAGE_TEMP}${bindir}/* ${STAGING_BINDIR_NATIVE} + install -d ${STAGING_DATADIR}/gnome-common + install -d ${STAGING_DATADIR}/aclocal + cp -pPR ${STAGE_TEMP}${datadir}/gnome-common/* ${STAGING_DATADIR}/gnome-common + cp -pPR ${STAGE_TEMP}${datadir}/aclocal/* ${STAGING_DATADIR}/aclocal + rm -rf ${STAGE_TEMP} +} diff --git a/recipes/gnome/gnome-common/omf.patch b/recipes/gnome/gnome-common/omf.patch new file mode 100644 index 0000000000..0d85b001e0 --- /dev/null +++ b/recipes/gnome/gnome-common/omf.patch @@ -0,0 +1,13 @@ +--- gnome-common-2.4.0/doc-build/omf.make 2003-05-24 08:16:25.000000000 -0700 ++++ gnome-common-2.4.0.new/doc-build/omf.make 2004-11-15 14:01:12.185155192 -0700 +@@ -43,7 +43,9 @@ + install-data-hook-omf: + $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir) + for file in $(omffile); do \ +- $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ ++ if [ -f $$file.out ]; then \ ++ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ ++ fi; \ + done + -scrollkeeper-update -p $(DESTDIR)$(scrollkeeper_localstate_dir) -o $(DESTDIR)$(omf_dest_dir) + diff --git a/recipes/gnome/gnome-common_2.18.0.bb b/recipes/gnome/gnome-common_2.18.0.bb index 41c25b69c2..252b1c25a9 100644 --- a/recipes/gnome/gnome-common_2.18.0.bb +++ b/recipes/gnome/gnome-common_2.18.0.bb @@ -1,28 +1 @@ -LICENSE = "GPL" -SECTION = "x11/gnome" -PR = "r0" -DESCRIPTION = "Common macros for building GNOME applications" -inherit gnome - -# The omf.make file failed if scrollkeeper doesn't happen to be -# installed - -SRC_URI += "file://omf.patch;patch=1" - -EXTRA_AUTORECONF = "" -DEPENDS = "" - -FILES_${PN} += "${datadir}/aclocal" -FILES_${PN}-dev = "" - -do_stage () { - rm -rf ${STAGE_TEMP} - mkdir -p ${STAGE_TEMP} - make DESTDIR="${STAGE_TEMP}" install - cp -pPR ${STAGE_TEMP}${bindir}/* ${STAGING_BINDIR_NATIVE} - install -d ${STAGING_DATADIR}/gnome-common - install -d ${STAGING_DATADIR}/aclocal - cp -pPR ${STAGE_TEMP}${datadir}/gnome-common/* ${STAGING_DATADIR}/gnome-common - cp -pPR ${STAGE_TEMP}${datadir}/aclocal/* ${STAGING_DATADIR}/aclocal - rm -rf ${STAGE_TEMP} -} +require gnome-common.inc diff --git a/recipes/gnome/gnome-common_2.20.0.bb b/recipes/gnome/gnome-common_2.20.0.bb index 41c25b69c2..252b1c25a9 100644 --- a/recipes/gnome/gnome-common_2.20.0.bb +++ b/recipes/gnome/gnome-common_2.20.0.bb @@ -1,28 +1 @@ -LICENSE = "GPL" -SECTION = "x11/gnome" -PR = "r0" -DESCRIPTION = "Common macros for building GNOME applications" -inherit gnome - -# The omf.make file failed if scrollkeeper doesn't happen to be -# installed - -SRC_URI += "file://omf.patch;patch=1" - -EXTRA_AUTORECONF = "" -DEPENDS = "" - -FILES_${PN} += "${datadir}/aclocal" -FILES_${PN}-dev = "" - -do_stage () { - rm -rf ${STAGE_TEMP} - mkdir -p ${STAGE_TEMP} - make DESTDIR="${STAGE_TEMP}" install - cp -pPR ${STAGE_TEMP}${bindir}/* ${STAGING_BINDIR_NATIVE} - install -d ${STAGING_DATADIR}/gnome-common - install -d ${STAGING_DATADIR}/aclocal - cp -pPR ${STAGE_TEMP}${datadir}/gnome-common/* ${STAGING_DATADIR}/gnome-common - cp -pPR ${STAGE_TEMP}${datadir}/aclocal/* ${STAGING_DATADIR}/aclocal - rm -rf ${STAGE_TEMP} -} +require gnome-common.inc diff --git a/recipes/gnome/gnome-common_2.26.0.bb b/recipes/gnome/gnome-common_2.26.0.bb new file mode 100644 index 0000000000..252b1c25a9 --- /dev/null +++ b/recipes/gnome/gnome-common_2.26.0.bb @@ -0,0 +1 @@ +require gnome-common.inc -- cgit v1.2.3 From 4a402ce8144f97994a6c51d16536f3620f0a6343 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sat, 8 Aug 2009 14:50:05 -0700 Subject: gnome-common: one more bit of cleanup --- recipes/gnome/gnome-common-2.18.0/omf.patch | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 recipes/gnome/gnome-common-2.18.0/omf.patch diff --git a/recipes/gnome/gnome-common-2.18.0/omf.patch b/recipes/gnome/gnome-common-2.18.0/omf.patch deleted file mode 100644 index 0d85b001e0..0000000000 --- a/recipes/gnome/gnome-common-2.18.0/omf.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- gnome-common-2.4.0/doc-build/omf.make 2003-05-24 08:16:25.000000000 -0700 -+++ gnome-common-2.4.0.new/doc-build/omf.make 2004-11-15 14:01:12.185155192 -0700 -@@ -43,7 +43,9 @@ - install-data-hook-omf: - $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir) - for file in $(omffile); do \ -- $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ if [ -f $$file.out ]; then \ -+ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ fi; \ - done - -scrollkeeper-update -p $(DESTDIR)$(scrollkeeper_localstate_dir) -o $(DESTDIR)$(omf_dest_dir) - -- cgit v1.2.3 From 48d4343132b55bb3ae2bd06e602660fc0f584b2f Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sat, 8 Aug 2009 14:54:28 -0700 Subject: gconf-editor: add 2.26.0 --- conf/checksums.ini | 4 ++++ recipes/gnome/gconf-editor_2.26.0.bb | 11 +++++++++++ 2 files changed, 15 insertions(+) create mode 100644 recipes/gnome/gconf-editor_2.26.0.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index f5f07ffccb..9e549ae362 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -7458,6 +7458,10 @@ sha256=e701134a1f5293070ca7d8d6311468f61e3a9765ebc520fcca6a0a38b214b7dc md5=845321d47b34f6ae19ac7e930c454e3d sha256=666ba1186b2697c3a99ee943775fbc7a7aa18f3c8cc3d335a2581dea62f812bf +[http://ftp.gnome.org/pub/GNOME/sources/gconf-editor/2.26/gconf-editor-2.26.0.tar.bz2] +md5=2dc76415b22d805cfacfcd5fb98f185c +sha256=2801ff7d595039292850d4f7d87b3f7c950e92dbcb39facfe62c6fb184640e1f + [http://www.boutell.com/gd/http/gd-2.0.21.tar.gz] md5=3134158635f5048dba99281c6b712a54 sha256=c3b8b7b57019927dad40870c379eecfa6389443f7e2096aa0157a0224d400da1 diff --git a/recipes/gnome/gconf-editor_2.26.0.bb b/recipes/gnome/gconf-editor_2.26.0.bb new file mode 100644 index 0000000000..d373b1022a --- /dev/null +++ b/recipes/gnome/gconf-editor_2.26.0.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Editor for the gnome registry" +LICENSE = "GPLv2" +DEPENDS = "gnome-doc-utils gconf" + +inherit gnome gconf + +do_configure_prepend() { + sed -i -e s:docs::g ${S}/Makefile.am +} + +FILES_${PN} += "${datadir}/icons" -- cgit v1.2.3 From 2215a06d3408f57cf4edd5a072132333111c3830 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sat, 8 Aug 2009 15:12:29 -0700 Subject: gnome-python: add 2.26.1 --- conf/checksums.ini | 4 ++++ recipes/gnome/gnome-python_2.26.1.bb | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 recipes/gnome/gnome-python_2.26.1.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 9e549ae362..a962f796de 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8574,6 +8574,10 @@ sha256=ebf81236c9405ba47e7a21767c2372f2c3abb44cc671bac8662d2aeb3e746dbc md5=02054115dc86617da2a80eb87a1f988b sha256=559b5d857b4fbc31418bc677f3391182ba1c357cabb8dfee04a1e709a7a63d01 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-python/2.26/gnome-python-2.26.1.tar.bz2] +md5=e5dcae40b2c291126843680dbed924a8 +sha256=ede0203f1eec22b3ed4a91c7b769e437859e5bc4b89a8f8e80b3f7ca62317098 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-python-desktop/2.23/gnome-python-desktop-2.23.0.tar.bz2] md5=d8f8e61d99402e8b0a82d3c8d6e873be sha256=7ad66f99a1bad1ae0bbb02bd7a7cf8ed17fdc3fd104fa5c68e04961459ad5c50 diff --git a/recipes/gnome/gnome-python_2.26.1.bb b/recipes/gnome/gnome-python_2.26.1.bb new file mode 100644 index 0000000000..1027437b7a --- /dev/null +++ b/recipes/gnome/gnome-python_2.26.1.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "GNOME Python miscellaneous bindings" +LICENSE = "LGPL" +DEPENDS = "libgnomeui pyorbit python-pygtk" +RDEPENDS = "pyorbit" + +inherit gnome distutils-base pkgconfig + +do_configure() { + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac + export HOST_SYS=${HOST_SYS} + export BUILD_SYS=${BUILD_SYS} + autotools_do_configure +} + +do_stage() { + autotools_stage_all +} + +FILES_${PN} += "${datadir}" +FILES_${PN}-dbg += "${libdir}/gnome-vfs-2.0/modules/.debug" + + -- cgit v1.2.3 From f20d7d2a7e87b6c9fa8f368cce8813188c80f00c Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 10 Aug 2009 06:33:31 +0200 Subject: qt4: Hack out the pg_config invocation on configure Currently the configure script of Qt is invoking pg_config which is a native application and not staged. Even though we pass the directory with the header files we will fail the postgres test as pg_config from the host will tell us something about /usr/include. There is no need for us to check pg_config, hack it out. --- recipes/qt4/files/hack-out-pg_config.patch | 30 ++++++++++++++++++++++++++++++ recipes/qt4/qt4-embedded_4.5.2.bb | 3 ++- recipes/qt4/qt4-x11-free-gles_4.5.2.bb | 1 + recipes/qt4/qt4-x11-free_4.5.2.bb | 1 + 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 recipes/qt4/files/hack-out-pg_config.patch diff --git a/recipes/qt4/files/hack-out-pg_config.patch b/recipes/qt4/files/hack-out-pg_config.patch new file mode 100644 index 0000000000..2231adf0c7 --- /dev/null +++ b/recipes/qt4/files/hack-out-pg_config.patch @@ -0,0 +1,30 @@ +Hack to not use the pg_config of the host system which will add /usr/include + +pg_config is a native binary so using that when cross compiling +will always fail. The commented out fix would do, but for OE +our -platform and -xplatform is the same so we are actually not +really cross compiling. Just comment out the test, we are passing +the location to the postgres headers and if they are okay we +will padd. + + + +Index: qt-embedded-linux-opensource-src-4.5.2/configure +=================================================================== +--- qt-embedded-linux-opensource-src-4.5.2.orig/configure 2009-08-10 03:03:04.000000000 +0200 ++++ qt-embedded-linux-opensource-src-4.5.2/configure 2009-08-10 03:58:11.000000000 +0200 +@@ -4401,10 +4402,10 @@ + ;; + psql) + if [ "$CFG_SQL_psql" != "no" ]; then +- if "$WHICH" pg_config >/dev/null 2>&1; then +- QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null` +- QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null` +- fi ++# if [ "$QT_CROSS_COMPILE" = "no" ] && "$WHICH" pg_config >/dev/null 2>&1; then ++# QT_CFLAGS_PSQL=`pg_config --includedir 2>/dev/null` ++# QT_LFLAGS_PSQL=`pg_config --libdir 2>/dev/null` ++# fi + [ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL" + [ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL" + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/psql "PostgreSQL" $QT_LFLAGS_PSQL $L_FLAGS $QT_CFLAGS_PSQL $I_FLAGS $l_FLAGS $MAC_ARCHS_COMMANDLINE; then diff --git a/recipes/qt4/qt4-embedded_4.5.2.bb b/recipes/qt4/qt4-embedded_4.5.2.bb index d94bc4862d..c941b25dd4 100644 --- a/recipes/qt4/qt4-embedded_4.5.2.bb +++ b/recipes/qt4/qt4-embedded_4.5.2.bb @@ -3,4 +3,5 @@ require qt4-embedded.inc PR = "${INC_PR}.1" LICENSE = "LGPLv2.1 GPLv3" -SRC_URI += "file://0010-no-simpledecoration-example.patch;patch=1" +SRC_URI += "file://0010-no-simpledecoration-example.patch;patch=1 \ + file://hack-out-pg_config.patch;patch=1" diff --git a/recipes/qt4/qt4-x11-free-gles_4.5.2.bb b/recipes/qt4/qt4-x11-free-gles_4.5.2.bb index 944378d0dd..cd81841269 100644 --- a/recipes/qt4/qt4-x11-free-gles_4.5.2.bb +++ b/recipes/qt4/qt4-x11-free-gles_4.5.2.bb @@ -12,6 +12,7 @@ PR = "${INC_PR}.3" DEPENDS += "virtual/egl" #SRC_URI += "file://sgx-hack.patch;patch=1" +SRC_URI += "file://hack-out-pg_config.patch;patch=1" export EXTRA_QMAKE_MUNGE = " glmunge " diff --git a/recipes/qt4/qt4-x11-free_4.5.2.bb b/recipes/qt4/qt4-x11-free_4.5.2.bb index 0289f211b4..09f63363f0 100644 --- a/recipes/qt4/qt4-x11-free_4.5.2.bb +++ b/recipes/qt4/qt4-x11-free_4.5.2.bb @@ -2,3 +2,4 @@ require qt4-x11-free.inc LICENSE = "LGPLv2.1 GPLv3" PR = "${INC_PR}.2" +SRC_URI += "file://hack-out-pg_config.patch;patch=1" -- cgit v1.2.3 From 4fe22eed50ce7c45da30b0efc6106b90281ff5f5 Mon Sep 17 00:00:00 2001 From: Graham Gower Date: Mon, 10 Aug 2009 04:49:55 +0200 Subject: portmap_6.0: Fix building on mipsel with gcc4.3 with gcc-4.4 and provides the following: | tmp/cross/mipsel/lib/gcc/mipsel-angstrom-linux/4.4.1/../../../../mipsel-angstrom-linux/bin/ld: portmap.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC The CFLAGS in portmap's Makefile contains -fpie, but is ignored. The CFLAGS I've added below are constructed from portmap's Makefile. When built with gcc-4.3.3 the resultant binary no longer segfaults. Signed-Off-By: Holger Hans Peter Freyther --- recipes/portmap/portmap-6.0/no-pie.patch | 14 -------------- recipes/portmap/portmap_6.0.bb | 6 ++---- 2 files changed, 2 insertions(+), 18 deletions(-) delete mode 100644 recipes/portmap/portmap-6.0/no-pie.patch diff --git a/recipes/portmap/portmap-6.0/no-pie.patch b/recipes/portmap/portmap-6.0/no-pie.patch deleted file mode 100644 index 4d7e2daae4..0000000000 --- a/recipes/portmap/portmap-6.0/no-pie.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- portmap_6.0/Makefile.orig 2007-11-21 00:35:52.000000000 -0600 -+++ portmap_6.0/Makefile 2007-11-21 00:37:23.000000000 -0600 -@@ -125,9 +125,9 @@ - all: portmap pmap_dump pmap_set portmap.man - - CPPFLAGS += $(HOSTS_ACCESS) --portmap: CFLAGS += -fpie -+#portmap: CFLAGS += -fpie - portmap: LDLIBS += $(WRAP_LIB) --portmap: LDFLAGS += -pie -+#portmap: LDFLAGS += -pie - portmap: portmap.o pmap_check.o from_local.o - - from_local: CPPFLAGS += -DTEST diff --git a/recipes/portmap/portmap_6.0.bb b/recipes/portmap/portmap_6.0.bb index cb94a48fb7..501aa5d848 100644 --- a/recipes/portmap/portmap_6.0.bb +++ b/recipes/portmap/portmap_6.0.bb @@ -1,6 +1,6 @@ require portmap.inc -PR = "r3" +PR = "r4" SRC_URI = "http://www.sourcefiles.org/Networking/Tools/Miscellanenous/portmap-6.0.tgz \ file://destdir-no-strip.patch;patch=1 \ @@ -8,12 +8,10 @@ SRC_URI = "http://www.sourcefiles.org/Networking/Tools/Miscellanenous/portmap-6. file://no-libwrap.patch;patch=1;pnum=0 \ file://portmap.init " -# Remove this patch when SlugOS upgrades to binutils 1.18 -SRC_URI_append_slugos = " file://no-pie.patch;patch=1 " - S = "${WORKDIR}/${PN}_${PV}/" CPPFLAGS += "-DFACILITY=LOG_DAEMON -DENABLE_DNS" +CFLAGS += "-O2 -Wall -Wstrict-prototypes -fpie" fakeroot do_install() { install -d ${D}${mandir}/man8/ ${D}${base_sbindir} ${D}${sysconfdir}/init.d -- cgit v1.2.3 From da247ac529ceaf0d3d4ee6252022231701656c0c Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 10 Aug 2009 04:55:00 +0200 Subject: portmap-unslung: Drop the recipe as it is obsolete According to Mike Westerhof it is obsolete and can be removed: http://patchwork.openembedded.org/patch/922/ --- recipes/portmap/portmap-unslung_5-9.bb | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 recipes/portmap/portmap-unslung_5-9.bb diff --git a/recipes/portmap/portmap-unslung_5-9.bb b/recipes/portmap/portmap-unslung_5-9.bb deleted file mode 100644 index c86ae1e892..0000000000 --- a/recipes/portmap/portmap-unslung_5-9.bb +++ /dev/null @@ -1,22 +0,0 @@ -DESCRIPTION = "RPC program number mapper." -SECTION = "console/network" -LICENSE = "GPL" -PR = "r2" -COMPATIBLE_MACHINE = "nslu2" - -SRC_URI = "${DEBIAN_MIRROR}/main/p/portmap/portmap_5.orig.tar.gz \ - ${DEBIAN_MIRROR}/main/p/portmap/portmap_${PV}.diff.gz;patch=1 \ - file://no-libwrap.patch;patch=1;pnum=0 \ - file://portmap.init \ - file://make.patch;patch=1" -S = "${WORKDIR}/portmap_5beta" - -sbindir = "/sbin" - -do_compile() { - oe_runmake -} - -do_install() { - oe_runmake 'docdir=${datadir}/doc/portmap' 'DESTDIR=${D}' install -} -- cgit v1.2.3 From 2c748884ee77eb4544e585bdc8bb3aac80626a52 Mon Sep 17 00:00:00 2001 From: Graham Gower Date: Mon, 10 Aug 2009 06:28:49 +0200 Subject: icu: Fix compilation for mips using -fPIC on the rematch.o /home/grg/oe/tmp/cross/mipsel/lib/gcc/mipsel-angstrom-linux/4.4.1/../../../../mipsel-angstrom-linux/bin/ld: rematch.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC http://patchwork.openembedded.org/patch/920/ Signed-Off-By: Holger Hans Peter Freyther --- recipes/icu/files/rematch-gcc-bug.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/icu/files/rematch-gcc-bug.patch b/recipes/icu/files/rematch-gcc-bug.patch index 4d47056ac5..5f516e396f 100644 --- a/recipes/icu/files/rematch-gcc-bug.patch +++ b/recipes/icu/files/rematch-gcc-bug.patch @@ -5,7 +5,7 @@ all-local: $(ALL_TARGETS) +rematch.o: $(srcdir)/rematch.cpp -+ $(CXX) $(CPPFLAGS) $(DEFS) -c -o $@ $< ++ $(CXX) -fPIC $(CPPFLAGS) $(DEFS) -c -o $@ $< + install-local: install-headers install-library -- cgit v1.2.3 From b218872e36923ee18d00e17e9f2879349f2dae8d Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 11:12:50 +0200 Subject: linux-davinci: update git recipe --- recipes/linux/linux-davinci_git.bb | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/recipes/linux/linux-davinci_git.bb b/recipes/linux/linux-davinci_git.bb index a39ba10d7a..8740dba7ea 100644 --- a/recipes/linux/linux-davinci_git.bb +++ b/recipes/linux/linux-davinci_git.bb @@ -3,32 +3,16 @@ require linux.inc DESCRIPTION = "Linux kernel for Davinci processors" KERNEL_IMAGETYPE = "uImage" -COMPATIBLE_MACHINE = "(dm6446-evm|dm6467-evm|dm355-evm|davinci-sffsdr|dm355-leopard)" +COMPATIBLE_MACHINE = "(dm6446-evm|dm6467-evm|dm355-evm|dm365-evm|davinci-sffsdr|dm355-leopard)" DEFAULT_PREFERENCE = "1" -SRCREV = "5bbb6571043c7e3a1d73b874334037a64d10612f" +SRCREV = "98d4d89866a3fa7375e697ab8434b331ca6a6705" # The main PR is now using MACHINE_KERNEL_PR, for davinci see conf/machine/include/davinci.inc -PV = "2.6.30-${PR}+gitr${SRCREV}" +PV = "2.6.30+2.6.31-rc2-${PR}+gitr${SRCREV}" -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-davinci.git;protocol=git;branch=staging/vpfe \ +SRC_URI = "git://arago-project.org/git/people/sneha/linux-davinci-staging.git;protocol=git\ file://defconfig" -# Need checking -SRC_URI_append_davinci-sffsdr = " \ - file://0001-USB-musb-cppi-bugfixes.patch;patch=1 \ - file://0002-ARM-Mark-unsupported-syscalls-as-IGNORE.patch;patch=1 \ - file://0003-Add-macros-for-enabling-a-UART.patch;patch=1 \ - file://0004-Davinci-Enable-MAC-address-to-be-specified-on-kerne.patch;patch=1 \ - file://0005-Add-DAS-Mini-DAS-and-AFE-USB-machine-types.patch;patch=1 \ - file://0006-ALSA-ASoC-DaVinci-Fix-SFFSDR-compilation-error.patch;patch=1 \ - file://0007-ALSA-ASoC-Davinci-Fix-SFFSDR-FPGA-module-codec-FS.patch;patch=1 \ - file://0008-ALSA-ASoC-Davinci-Fix-incorrect-machine-type-for.patch;patch=1 \ - file://0009-sound-ASoC-Fix-DaVinci-module-unload-error.patch;patch=1 \ - file://0010-Add-generic-FPGA-bitstream-loader-driver.patch;patch=1 \ - file://0011-Add-lyrvpss-example-driver-for-the-SFFSDR-board.patch;patch=1 \ - file://0012-Update-SFFSDR-to-support-FPGA-and-lyrvpss-drivers.patch;patch=1 \ - " - S = "${WORKDIR}/git" -- cgit v1.2.3 From 3ceaf72bda30a27cebe355bcf58b43ed090ba7a2 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 11:13:29 +0200 Subject: Angstrom source mirror: don't mirror avis Angstrom feed builder: build more stuff --- contrib/angstrom/build-feeds.sh | 5 +++++ contrib/angstrom/source-mirror.txt | 1 + 2 files changed, 6 insertions(+) diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh index 29b154c1b8..1a3b27978b 100755 --- a/contrib/angstrom/build-feeds.sh +++ b/contrib/angstrom/build-feeds.sh @@ -101,6 +101,7 @@ do cwiid \ dates \ devicekit-disks \ + devmem2 \ dialog \ distcc \ dsniff \ @@ -202,6 +203,7 @@ do labyrinth \ lcd4linux \ leafpad \ + libv4l \ lighttpd \ links-x11 \ lirc \ @@ -238,6 +240,7 @@ do nmap \ nmm \ notecase \ + ntfs-3g \ numptyphysics \ octave \ opencv \ @@ -270,6 +273,7 @@ do python \ python-pybluez \ python-coherence \ + python-pygame \ qfish2 \ qmatrix \ qpe-nmap \ @@ -363,6 +367,7 @@ do xfwm4 \ xfwm4-themes \ xmms \ + xrefresh \ xserver-kdrive \ xserver-xorg \ zauralign \ diff --git a/contrib/angstrom/source-mirror.txt b/contrib/angstrom/source-mirror.txt index 7d068f5fea..b1c4bac747 100644 --- a/contrib/angstrom/source-mirror.txt +++ b/contrib/angstrom/source-mirror.txt @@ -15,4 +15,5 @@ rsync ~/OE/downloads/ angstrom@linuxtogo.org:~/website/unstable/sources/ -aPvz \ --exclude "dsplink*" \ --exclude "*GFX*" \ --exclude "TI-*" \ + --exclude "*.avi" \ --exclude "*.bin" -- cgit v1.2.3 From 133a5c83d360c893483a227bfba03fe019c0eb1a Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 11:18:07 +0200 Subject: task-beagleboard-demo: make gnash armv7a specific since it's using boost atomic ops which are missing for pre-v7 arms --- recipes/tasks/task-beagleboard-demo.bb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/recipes/tasks/task-beagleboard-demo.bb b/recipes/tasks/task-beagleboard-demo.bb index 95b42ae34b..b952d38888 100644 --- a/recipes/tasks/task-beagleboard-demo.bb +++ b/recipes/tasks/task-beagleboard-demo.bb @@ -1,6 +1,6 @@ DESCRIPTION = "Task for Beagleboard-demo-image" -PR = "r12" +PR = "r13" inherit task @@ -18,7 +18,6 @@ RDEPENDS_${PN} = "\ mime-support e-wm ${ECONFIG} \ xterm xmms \ firefox midori \ - gnash gnash-browser-plugin \ hicolor-icon-theme gnome-icon-theme \ jaaa nmap iperf gnuplot \ abiword \ @@ -47,5 +46,7 @@ RRECOMMENDS_${PN} += " \ " PACKAGE_ARCH = "${MACHINE_ARCH}" -RRECOMMENDS_${PN}_append_armv7a = " omapfbplay" +RRECOMMENDS_${PN}_append_armv7a = " \ + gnash gnash-browser-plugin \ + omapfbplay" -- cgit v1.2.3 From 60f1515945cb56843e8c0f110310aaa2e735f40f Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sun, 9 Aug 2009 20:52:22 -0700 Subject: opencv: Bump SRCREV, explicitly build with ffmpeg --- recipes/opencv/opencv-samples_svn.bb | 4 ++-- recipes/opencv/opencv_svn.bb | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recipes/opencv/opencv-samples_svn.bb b/recipes/opencv/opencv-samples_svn.bb index 4eeb39486f..429510c086 100644 --- a/recipes/opencv/opencv-samples_svn.bb +++ b/recipes/opencv/opencv-samples_svn.bb @@ -9,8 +9,8 @@ DEPENDS = "opencv" SRC_URI = "svn://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk;module=opencv;proto=https \ " -SRCREV = "1820" -PV = "1.0.0+svnr${SRCREV}" +SRCREV = "2027" +PV = "1.0.0+1.1pre1+svnr${SRCREV}" S = "${WORKDIR}/opencv" diff --git a/recipes/opencv/opencv_svn.bb b/recipes/opencv/opencv_svn.bb index 3bfa33cd9d..ce54d8c773 100644 --- a/recipes/opencv/opencv_svn.bb +++ b/recipes/opencv/opencv_svn.bb @@ -6,15 +6,13 @@ LICENSE = "GPLv2" ARM_INSTRUCTION_SET = "arm" -PR = "r1" - DEPENDS = "ffmpeg gtk+ libtool swig swig-native python jpeg zlib libpng tiff glib-2.0" SRC_URI = "svn://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/trunk;module=opencv;proto=https \ file://acinclude.m4" -SRCREV = "1820" -PV = "1.0.0+svnr${SRCREV}" +SRCREV = "2027" +PV = "1.0.0+1.1pre1+svnr${SRCREV}" S = "${WORKDIR}/opencv" @@ -24,6 +22,7 @@ EXTRA_OECONF = " \ --disable-debug \ --with-gtk \ --without-quicktime \ + --with-ffmpeg \ --with-gthread \ --without-gstreamer \ --with-v4l \ -- cgit v1.2.3 From 76069e339ea0eec6794893e146d1361632214fe5 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sun, 9 Aug 2009 21:46:59 -0700 Subject: gnome-vfs: add 2.24.1, share patches with 2.22.0 --- conf/checksums.ini | 4 ++ .../gnome/gnome-vfs-2.22.0/gconftool-lossage.patch | 11 ----- .../gnome-vfs-2.22.0/gnome-vfs-no-kerberos.patch | 51 ---------------------- recipes/gnome/gnome-vfs/gconftool-lossage.patch | 11 +++++ .../gnome/gnome-vfs/gnome-vfs-no-kerberos.patch | 51 ++++++++++++++++++++++ recipes/gnome/gnome-vfs_2.24.1.bb | 49 +++++++++++++++++++++ 6 files changed, 115 insertions(+), 62 deletions(-) delete mode 100644 recipes/gnome/gnome-vfs-2.22.0/gconftool-lossage.patch delete mode 100644 recipes/gnome/gnome-vfs-2.22.0/gnome-vfs-no-kerberos.patch create mode 100644 recipes/gnome/gnome-vfs/gconftool-lossage.patch create mode 100644 recipes/gnome/gnome-vfs/gnome-vfs-no-kerberos.patch create mode 100644 recipes/gnome/gnome-vfs_2.24.1.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index dd18af3b0b..e9c361d60a 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -8650,6 +8650,10 @@ sha256=cd95ec5a4808799f033dcb9daf37ed38436c594d4014e5804967fa9e5893e91f md5=369105fd82cb99e69e63acab8f3b89b7 sha256=622cf50cefa2c4187e0a23f29d665f010f7a0815864fc35a61caefd5a7d4ebb1 +[http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.24/gnome-vfs-2.24.1.tar.bz2] +md5=100f9af16dc659e375ee8da45175a28d +sha256=bc59144e303b152b84b86f209347a3e87a91d5ed7172d8503ee19c232dcabeb6 + [http://ftp.gnome.org/pub/GNOME/sources/gnome-vfs/2.6/gnome-vfs-2.6.0.tar.bz2] md5=4d0323cf015dd006210fcacd4bfe7420 sha256=e2094c83a810319674e9c5ea24ac1325e8ea31e3df2e2efd41c70a07742caa6d diff --git a/recipes/gnome/gnome-vfs-2.22.0/gconftool-lossage.patch b/recipes/gnome/gnome-vfs-2.22.0/gconftool-lossage.patch deleted file mode 100644 index 3dbc130ddc..0000000000 --- a/recipes/gnome/gnome-vfs-2.22.0/gconftool-lossage.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gnome-vfs-2.6.0/configure.in~ 2004-03-22 12:36:23.000000000 +0000 -+++ gnome-vfs-2.6.0/configure.in 2004-06-07 16:04:34.000000000 +0100 -@@ -154,7 +154,7 @@ - AC_PATH_PROG(GCONFTOOL, gconftool-2, no) - - if test x"$GCONFTOOL" = xno; then -- AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) -+ AC_MSG_WARN([gconftool-2 executable not found in your path - should be installed with GConf]) - fi - - AM_GCONF_SOURCE_2 diff --git a/recipes/gnome/gnome-vfs-2.22.0/gnome-vfs-no-kerberos.patch b/recipes/gnome/gnome-vfs-2.22.0/gnome-vfs-no-kerberos.patch deleted file mode 100644 index e25ecdd66f..0000000000 --- a/recipes/gnome/gnome-vfs-2.22.0/gnome-vfs-no-kerberos.patch +++ /dev/null @@ -1,51 +0,0 @@ -removes kerberos completely to avoid conflicts with installed kerberos ---- configure.in.orig 2007-01-05 19:42:26.418541610 +0200 -+++ configure.in 2007-01-05 19:42:56.604261797 +0200 -@@ -436,47 +436,6 @@ - ]) - AM_CONDITIONAL(HAVE_CDDA, test $have_cdda = yes) - AC_SUBST(CDDA_LIBS) -- --dnl GSSAPI --dnl Check for Kerberos installation --have_gssapi=no --AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin) -- --if test "x$KRB5_CONFIG" != "xnone"; then -- GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`" -- GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`" -- -- saved_CPPFLAGS="$CPPFLAGS" -- saved_LIBS="$LIBS" -- LIBS="$LIBS $GSSAPI_LIBS" -- CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS" -- # MIT and Heimdal put gssapi.h in different places -- AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [ -- AC_CHECK_FUNCS(gss_init_sec_context, [ -- AC_MSG_NOTICE([GSSAPI authentication support enabled]) -- AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled]) -- AC_CHECK_HEADERS(gssapi/gssapi_generic.h) -- have_gssapi=yes -- -- # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE -- AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],, -- [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name, -- [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise]) -- ], [ -- #ifdef HAVE_GSSAPI_GSSAPI_H -- #include -- #else -- #include -- #endif -- ]) -- ]) -- break -- ]) -- LIBS="$saved_LIBS" -- CPPFLAGS="$saved_CPPFLAGS" --fi --AC_SUBST(GSSAPI_LIBS) --AC_SUBST(GSSAPI_CFLAGS) - - dnl ****************************** - dnl http-method (neon checks) diff --git a/recipes/gnome/gnome-vfs/gconftool-lossage.patch b/recipes/gnome/gnome-vfs/gconftool-lossage.patch new file mode 100644 index 0000000000..3dbc130ddc --- /dev/null +++ b/recipes/gnome/gnome-vfs/gconftool-lossage.patch @@ -0,0 +1,11 @@ +--- gnome-vfs-2.6.0/configure.in~ 2004-03-22 12:36:23.000000000 +0000 ++++ gnome-vfs-2.6.0/configure.in 2004-06-07 16:04:34.000000000 +0100 +@@ -154,7 +154,7 @@ + AC_PATH_PROG(GCONFTOOL, gconftool-2, no) + + if test x"$GCONFTOOL" = xno; then +- AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf]) ++ AC_MSG_WARN([gconftool-2 executable not found in your path - should be installed with GConf]) + fi + + AM_GCONF_SOURCE_2 diff --git a/recipes/gnome/gnome-vfs/gnome-vfs-no-kerberos.patch b/recipes/gnome/gnome-vfs/gnome-vfs-no-kerberos.patch new file mode 100644 index 0000000000..e25ecdd66f --- /dev/null +++ b/recipes/gnome/gnome-vfs/gnome-vfs-no-kerberos.patch @@ -0,0 +1,51 @@ +removes kerberos completely to avoid conflicts with installed kerberos +--- configure.in.orig 2007-01-05 19:42:26.418541610 +0200 ++++ configure.in 2007-01-05 19:42:56.604261797 +0200 +@@ -436,47 +436,6 @@ + ]) + AM_CONDITIONAL(HAVE_CDDA, test $have_cdda = yes) + AC_SUBST(CDDA_LIBS) +- +-dnl GSSAPI +-dnl Check for Kerberos installation +-have_gssapi=no +-AC_PATH_PROG([KRB5_CONFIG], krb5-config, none, $PATH:/usr/kerberos/bin) +- +-if test "x$KRB5_CONFIG" != "xnone"; then +- GSSAPI_LIBS="`${KRB5_CONFIG} --libs gssapi`" +- GSSAPI_CFLAGS="`${KRB5_CONFIG} --cflags gssapi`" +- +- saved_CPPFLAGS="$CPPFLAGS" +- saved_LIBS="$LIBS" +- LIBS="$LIBS $GSSAPI_LIBS" +- CPPFLAGS="$CPPFLAGS $GSSAPI_CFLAGS" +- # MIT and Heimdal put gssapi.h in different places +- AC_CHECK_HEADERS(gssapi/gssapi.h gssapi.h, [ +- AC_CHECK_FUNCS(gss_init_sec_context, [ +- AC_MSG_NOTICE([GSSAPI authentication support enabled]) +- AC_DEFINE(HAVE_GSSAPI, 1, [Define if GSSAPI support is enabled]) +- AC_CHECK_HEADERS(gssapi/gssapi_generic.h) +- have_gssapi=yes +- +- # MIT Kerberos lacks GSS_C_NT_HOSTBASED_SERVICE +- AC_CHECK_DECL([GSS_C_NT_HOSTBASED_SERVICE],, +- [AC_DEFINE([GSS_C_NT_HOSTBASED_SERVICE], gss_nt_service_name, +- [Define if GSS_C_NT_HOSTBASED_SERVICE is not defined otherwise]) +- ], [ +- #ifdef HAVE_GSSAPI_GSSAPI_H +- #include +- #else +- #include +- #endif +- ]) +- ]) +- break +- ]) +- LIBS="$saved_LIBS" +- CPPFLAGS="$saved_CPPFLAGS" +-fi +-AC_SUBST(GSSAPI_LIBS) +-AC_SUBST(GSSAPI_CFLAGS) + + dnl ****************************** + dnl http-method (neon checks) diff --git a/recipes/gnome/gnome-vfs_2.24.1.bb b/recipes/gnome/gnome-vfs_2.24.1.bb new file mode 100644 index 0000000000..511aabe5a7 --- /dev/null +++ b/recipes/gnome/gnome-vfs_2.24.1.bb @@ -0,0 +1,49 @@ +LICENSE = "GPL" +DEPENDS = "libxml2 gconf gnutls avahi dbus dbus-glib bzip2 gnome-mime-data zlib gtk-doc-native" +RRECOMMENDS = "gnome-vfs-plugin-file shared-mime-info" +# Some legacy packages will require gnome-mime-data to be installed, but use of +# it is deprecated. +PR = "r1" + +inherit gnome + +SRC_URI += "file://gconftool-lossage.patch;patch=1;pnum=1 \ + file://gnome-vfs-no-kerberos.patch;patch=1;pnum=0" + +# This is to provide compatibility with the gnome-vfs DBus fork +PROVIDES = "gnome-vfs-plugin-dbus" +RREPLACES = "gnome-vfs-dbus" + +EXTRA_OECONF = " \ + --disable-openssl \ + --enable-gnutls \ + --enable-avahi \ + --with-samba-includes=${STAGING_INCDIR} \ + " + +do_configure_prepend() { + sed -i -e 's: doc ::g' Makefile.am +} + +do_stage () { + autotools_stage_all +} + +PACKAGES_DYNAMIC = "gnome-vfs-plugin-*" + +python populate_packages_prepend () { + print bb.data.getVar('FILES_gnome-vfs', d, 1) + + plugindir = bb.data.expand('${libdir}/gnome-vfs-2.0/modules/', d) + do_split_packages(d, plugindir, '^lib(.*)\.so$', 'gnome-vfs-plugin-%s', 'GNOME VFS plugin for %s') +} + +FILES_${PN} += "${libdir}/vfs ${datadir}/dbus-1/services" +FILES_${PN}-dbg += "${libdir}/gnome-vfs-2.0/modules/.debug" +FILES_${PN}-dev += "${libdir}/gnome-vfs-2.0/include \ + ${libdir}/gnome-vfs-2.0/modules/*.a \ + ${libdir}/gnome-vfs-2.0/modules/*.la \ + " +FILES_${PN}-doc += "${datadir}/gtk-doc" + + -- cgit v1.2.3 From b4fa8a2dee626bf25d6f6f5a608613a446747bb5 Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Sun, 9 Aug 2009 21:54:18 -0700 Subject: gvfs: add 1.3.3 --- conf/checksums.ini | 4 ++++ recipes/gnome/gvfs_1.3.3.bb | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 recipes/gnome/gvfs_1.3.3.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index e9c361d60a..fde08bb890 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10490,6 +10490,10 @@ sha256=17eccded6e096208181e2c7625802526112af23f5b2c7b2a672ab9ccff3a55fd md5=df8f624587adfabe7009838ce6d8d5fd sha256=0e3c3469721ff1d4296bf4af7e1f131201d2dc6a36c772d99e1630f8cce31da2 +[http://ftp.gnome.org/pub/GNOME/sources/gvfs/1.3/gvfs-1.3.2.tar.bz2] +md5=73a7aecfba767f80146cbd5d37598e8b +sha256=f4bddab378a3a197418e5e2229e7ff967c03adf049e33c5516745db35538b6de + [http://sebdelestaing.free.fr/gweled/Release/gweled-0.5.tar.gz] md5=238f5ef66317bb24c3d4018a7d1e9ec3 sha256=d5baec578b22407e3fc78cc47393942f9704f1ab7b8d1c012577037d3421f90e diff --git a/recipes/gnome/gvfs_1.3.3.bb b/recipes/gnome/gvfs_1.3.3.bb new file mode 100644 index 0000000000..9137168eee --- /dev/null +++ b/recipes/gnome/gvfs_1.3.3.bb @@ -0,0 +1,21 @@ +DESCRIPTION = "gvfs is a userspace virtual filesystem" +LICENSE = "LGPL" +DEPENDS = "gawk-native gnome-keyring glib-2.0 obexftp fuse avahi fuse hal gconf samba gphoto2" + +inherit gnome + +EXTRA_OECONF = "--enable-samba --with-archive-includes=${STAGING_INCDIR} --with-samba-includes=${STAGING_INCDIR}" + +PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash" + +FILES_${PN} += "${datadir}/dbus-1/services/* ${libdir}/gio/modules/*.so" +FILES_${PN}-dbg += "${libdir}/gio/modules/.debug/*" +FILES_${PN}-dev += "${libdir}/gio/modules/*.la" + +FILES_gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${sysconfdir}/gvfs/mounts/ftp.mount" +FILES_gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${sysconfdir}/gvfs/mounts/sftp.mount" +FILES_gvfsd-trash = "${libexecdir}/gvfsd-trash ${sysconfdir}/gvfs/mounts/trash.mount" + +do_stage() { + autotools_stage_all +} -- cgit v1.2.3 From a834b1cdfcebf4c0edafc2d9ffaecd5cd70385fe Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 13:02:28 +0200 Subject: linux-davinci: add defconfig for dm365-evm --- recipes/linux/linux-davinci/dm365-evm/defconfig | 1831 +++++++++++++++++++++++ 1 file changed, 1831 insertions(+) create mode 100644 recipes/linux/linux-davinci/dm365-evm/defconfig diff --git a/recipes/linux/linux-davinci/dm365-evm/defconfig b/recipes/linux/linux-davinci/dm365-evm/defconfig new file mode 100644 index 0000000000..b0c4e82e48 --- /dev/null +++ b/recipes/linux/linux-davinci/dm365-evm/defconfig @@ -0,0 +1,1831 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.31-rc2-davinci1 +# Wed Aug 5 17:08:29 2009 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_MMU=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set + +# +# RCU Subsystem +# +CONFIG_CLASSIC_RCU=y +# CONFIG_TREE_RCU is not set +# CONFIG_PREEMPT_RCU is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_PREEMPT_RCU_TRACE is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +# CONFIG_CGROUPS is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_EMBEDDED=y +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y + +# +# Performance Counters +# +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +# CONFIG_MARKERS is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +# CONFIG_SLOW_WORK is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +# CONFIG_FREEZER is not set + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_STMP3XXX is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_U300 is not set +CONFIG_ARCH_DAVINCI=y +# CONFIG_ARCH_OMAP is not set +CONFIG_AINTC=y +CONFIG_ARCH_DAVINCI_DMx=y + +# +# TI DaVinci Implementations +# + +# +# DaVinci Core Type +# +CONFIG_ARCH_DAVINCI_DM644x=y +CONFIG_ARCH_DAVINCI_DM355=y +CONFIG_ARCH_DAVINCI_DM646x=y +# CONFIG_ARCH_DAVINCI_DA830 is not set +CONFIG_ARCH_DAVINCI_DM365=y + +# +# DaVinci Board Type +# +CONFIG_MACH_DAVINCI_EVM=y +# CONFIG_MACH_SFFSDR is not set +CONFIG_MACH_DAVINCI_DM355_EVM=y +# CONFIG_MACH_DM355_LEOPARD is not set +CONFIG_MACH_DAVINCI_DM6467_EVM=y +CONFIG_MACH_DAVINCI_DM365_EVM=y +CONFIG_DAVINCI_MUX=y +# CONFIG_DAVINCI_MUX_DEBUG is not set +# CONFIG_DAVINCI_MUX_WARNINGS is not set +CONFIG_DAVINCI_RESET_CLOCKS=y + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_ARM926T=y +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5TJ=y +CONFIG_CPU_PABRT_NOIFAR=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_COPY_V4WB=y +CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_WRITETHROUGH is not set +# CONFIG_CPU_CACHE_ROUND_ROBIN is not set +CONFIG_COMMON_CLKDEV=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT=y +CONFIG_HZ=100 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_HIGHMEM is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_LEDS=y +# CONFIG_LEDS_CPU is not set +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="" +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Power Management +# +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +# CONFIG_VFP is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options +# +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_SUSPEND is not set +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_IP_PNP_BOOTP is not set +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NETFILTER_XTABLES is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_NF_DEFRAG_IPV4 is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set + +# +# IPv6: Netfilter Configuration +# +# CONFIG_IP6_NF_QUEUE is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_WIRELESS is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_TESTS=m +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ALAUDA is not set +CONFIG_MTD_NAND_DAVINCI=y +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=32768 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_MG_DISK is not set +CONFIG_MISC_DEVICES=y +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_ISL29003 is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +CONFIG_EEPROM_AT25=y +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m +# CONFIG_VETH is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_LXT_PHY=y +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +CONFIG_LSI_ET1011C_PHY=y +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_AX88796 is not set +# CONFIG_SMC91X is not set +# CONFIG_TI_DAVINCI_EMAC is not set +CONFIG_DM9000=y +CONFIG_DM9000_DEBUGLEVEL=4 +# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set +# CONFIG_ENC28J60 is not set +# CONFIG_ETHOC is not set +CONFIG_SMC911X=y +CONFIG_SMSC911X=y +# CONFIG_DNET is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_B44 is not set +CONFIG_KS8842=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPPOE is not set +# CONFIG_PPPOL2TP is not set +# CONFIG_SLIP is not set +CONFIG_SLHC=m +CONFIG_NETCONSOLE=y +# CONFIG_NETCONSOLE_DYNAMIC is not set +CONFIG_NETPOLL=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=m +CONFIG_INPUT_EVBUG=m + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +# CONFIG_VT_CONSOLE is not set +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=3 +CONFIG_SERIAL_8250_RUNTIME_UARTS=3 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_DAVINCI=y +# CONFIG_I2C_DESIGNWARE is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_DAVINCI=y +CONFIG_SPI_BITBANG=y +# CONFIG_SPI_GPIO is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +CONFIG_GPIO_PCF857X=y + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_DAVINCI_WATCHDOG=y + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set +CONFIG_MFD_DM355EVM_MSP=y +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_TPS65010 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_AB3100_CORE is not set +# CONFIG_EZX_PCAP is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_V4L2_COMMON=y +# CONFIG_VIDEO_ALLOW_V4L1 is not set +# CONFIG_VIDEO_V4L1_COMPAT is not set +# CONFIG_DVB_CORE is not set +CONFIG_VIDEO_MEDIA=y + +# +# Multimedia drivers +# +# CONFIG_MEDIA_ATTACH is not set +CONFIG_MEDIA_TUNER=y +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_SIMPLE=y +CONFIG_MEDIA_TUNER_TDA8290=y +CONFIG_MEDIA_TUNER_TDA9887=y +CONFIG_MEDIA_TUNER_TEA5761=y +CONFIG_MEDIA_TUNER_TEA5767=y +CONFIG_MEDIA_TUNER_MT20XX=y +CONFIG_MEDIA_TUNER_XC2028=y +CONFIG_MEDIA_TUNER_XC5000=y +CONFIG_MEDIA_TUNER_MC44S803=y +CONFIG_VIDEO_V4L2=y +CONFIG_VIDEOBUF_GEN=y +CONFIG_VIDEOBUF_DMA_CONTIG=y +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set + +# +# Encoders/decoders and other helper chips +# + +# +# Audio decoders +# +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TDA9875 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set + +# +# Video decoders +# +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_SAA717X is not set +CONFIG_VIDEO_TVP514X=y +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_CX25840 is not set + +# +# MPEG video encoders +# +# CONFIG_VIDEO_CX2341X is not set + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_ADV7343 is not set + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# CONFIG_VIDEO_VIVI is not set +CONFIG_VIDEO_VPSS_SYSTEM=y +CONFIG_VIDEO_VPFE_CAPTURE=y +CONFIG_VIDEO_DM6446_CCDC=y +CONFIG_VIDEO_DM355_CCDC=y +CONFIG_VIDEO_DM355_AF=y +CONFIG_VIDEO_DM355_AEW=y +CONFIG_VIDEO_DM355_IPIPE=y +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_SOC_CAMERA_MT9T031=y +# CONFIG_V4L_USB_DRIVERS is not set +# CONFIG_RADIO_ADAPTERS is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_DAVINCI=y +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_JACK=y +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_HRTIMER=m +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_RAWMIDI_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_ARM=y +CONFIG_SND_SPI=y +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=y +CONFIG_SND_DAVINCI_SOC=y +CONFIG_SND_DAVINCI_SOC_I2S=y +CONFIG_SND_DAVINCI_SOC_MCASP=y +CONFIG_SND_DAVINCI_SOC_EVM=y +CONFIG_SND_DM6467_SOC_EVM=y +CONFIG_SND_SOC_I2C_AND_SPI=y +# CONFIG_SND_SOC_ALL_CODECS is not set +CONFIG_SND_SOC_SPDIF=y +CONFIG_SND_SOC_TLV320AIC3X=y +# CONFIG_SOUND_PRIME is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +# CONFIG_HID_DEBUG is not set +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=m +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_APPLE=m +CONFIG_HID_BELKIN=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CYPRESS=m +# CONFIG_HID_DRAGONRISE is not set +CONFIG_HID_EZKEY=m +# CONFIG_HID_KYE is not set +CONFIG_HID_GYRATION=m +# CONFIG_HID_KENSINGTON is not set +CONFIG_HID_LOGITECH=m +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +# CONFIG_HID_NTRIG is not set +CONFIG_HID_PANTHERLORD=m +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SONY=m +CONFIG_HID_SUNPLUS=m +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_ZEROPLUS is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +# CONFIG_USB_ARCH_HAS_OHCI is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=m +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HWA_HCD is not set +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_SOC=y + +# +# DaVinci 35x and 644x USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +# CONFIG_USB_INVENTRA_DMA is not set +CONFIG_USB_TI_CPPI_DMA=y +CONFIG_USB_MUSB_DEBUG=y + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +CONFIG_USB_TEST=m +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=m +# CONFIG_USB_GADGET_DEBUG is not set +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +# CONFIG_USB_GADGET_AT91 is not set +# CONFIG_USB_GADGET_ATMEL_USBA is not set +# CONFIG_USB_GADGET_FSL_USB2 is not set +# CONFIG_USB_GADGET_LH7A40X is not set +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA25X is not set +# CONFIG_USB_GADGET_PXA27X is not set +# CONFIG_USB_GADGET_S3C_HSOTG is not set +# CONFIG_USB_GADGET_S3C2410 is not set +# CONFIG_USB_GADGET_IMX is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_FSL_QE is not set +# CONFIG_USB_GADGET_CI13XXX is not set +# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_LANGWELL is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +CONFIG_USB_GADGET_DUALSPEED=y +CONFIG_USB_ZERO=m +# CONFIG_USB_ZERO_HNPTEST is not set +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_GADGETFS=m +CONFIG_USB_FILE_STORAGE=m +# CONFIG_USB_FILE_STORAGE_TEST is not set +CONFIG_USB_G_SERIAL=m +# CONFIG_USB_MIDI_GADGET is not set +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_GPIO_VBUS is not set +CONFIG_NOP_USB_XCEIV=m +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +# CONFIG_MMC_BLOCK_BOUNCE is not set +CONFIG_SDIO_UART=y +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_DAVINCI=y +# CONFIG_MMC_SPI is not set +# CONFIG_MEMSTICK is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +# CONFIG_LEDS_PCA9532 is not set +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_RTC_LIB=y +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_REGULATOR is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +# CONFIG_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_XFS_FS=m +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_CRAMFS=y +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +CONFIG_MINIX_FS=m +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +CONFIG_ROOT_NFS=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m +# CONFIG_DLM is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_DETECT_HUNG_TASK=y +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_PREEMPT=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_PI_LIST=y +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +# CONFIG_PAGE_POISONING is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_TRACING_SUPPORT=y +CONFIG_FTRACE=y +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_ENABLE_DEFAULT_TRACERS is not set +# CONFIG_BOOT_TRACER is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_KMEMTRACE is not set +# CONFIG_WORKQUEUE_TRACER is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_ARM_UNWIND is not set +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_LL is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_MANAGER2 is not set +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set +CONFIG_CRC_T10DIF=m +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_NLATTR=y -- cgit v1.2.3 From 28ca6b31e0e177889fefba9805b1c41eb3638fca Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 14:11:23 +0200 Subject: checksums: add gvfs checksum --- conf/checksums.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/checksums.ini b/conf/checksums.ini index fde08bb890..bfd418d861 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -10494,6 +10494,10 @@ sha256=0e3c3469721ff1d4296bf4af7e1f131201d2dc6a36c772d99e1630f8cce31da2 md5=73a7aecfba767f80146cbd5d37598e8b sha256=f4bddab378a3a197418e5e2229e7ff967c03adf049e33c5516745db35538b6de +[http://ftp.gnome.org/pub/GNOME/sources/gvfs/1.3/gvfs-1.3.3.tar.bz2] +md5=2f1c65dcde8fc4d0603e11a8ec3fc178 +sha256=453476904745e355a69987bcd20c5db1bc9a1757022f8dd8c0f3b7142f3a00fd + [http://sebdelestaing.free.fr/gweled/Release/gweled-0.5.tar.gz] md5=238f5ef66317bb24c3d4018a7d1e9ec3 sha256=d5baec578b22407e3fc78cc47393942f9704f1ab7b8d1c012577037d3421f90e -- cgit v1.2.3 From e5389c3af53fb01928fee26a273911dbf8b784a0 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Mon, 10 Aug 2009 14:23:07 +0200 Subject: angstrom: move to glib 2.21.4 --- conf/distro/include/angstrom-2008-preferred-versions.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index 69cf032a4b..90221984c9 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -6,7 +6,7 @@ PREFERRED_VERSION_cairo = "1.8.0" PREFERRED_VERSION_dbus = "1.2.1" PREFERRED_VERSION_dropbear = "0.51" PREFERRED_VERSION_fontconfig = "2.6.0" -PREFERRED_VERSION_glib-2.0 = "2.20.4" +PREFERRED_VERSION_glib-2.0 = "2.21.4" PREFERRED_VERSION_glib-2.0-native = "2.18.0" PREFERRED_VERSION_glibmm = "2.18.0" PREFERRED_VERSION_glproto = "1.4.9" -- cgit v1.2.3 From b4a6504890b98d415948dfd2e13dd37c5c600dca Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 10 Aug 2009 12:42:18 -0700 Subject: bitbake.conf: Initialize empty PACKAGE_EXTRA_ARCHS conditionally. Signed-off-by: Khem Raj Acked-by: Marcin Juszkiewicz --- conf/bitbake.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/bitbake.conf b/conf/bitbake.conf index 8b6956453b..37b17d6ccf 100644 --- a/conf/bitbake.conf +++ b/conf/bitbake.conf @@ -107,6 +107,7 @@ EXEEXT = "${HOST_EXEEXT}" BASE_PACKAGE_ARCH = "${HOST_ARCH}" PACKAGE_ARCH = "${BASE_PACKAGE_ARCH}" +PACKAGE_EXTRA_ARCHS ?= "" MACHINE_ARCH = "${@[bb.data.getVar('HOST_ARCH', d, 1), bb.data.getVar('MACHINE', d, 1)][bool(bb.data.getVar('MACHINE', d, 1))]}" PACKAGE_ARCHS = "all any noarch ${TARGET_ARCH} ${PACKAGE_EXTRA_ARCHS} ${MACHINE}" @@ -120,7 +121,7 @@ BASEPKG_TARGET_SYS = "${BASE_PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}" QEMU_OPTIONS = "" QEMU_OPTIONS_iwmmxt = "-cpu pxa270-c5" QEMU_OPTIONS_armv6 = "-cpu arm1136" -QEMU_OPTIONS_armv6-novfp = ""-cpu arm1136" +QEMU_OPTIONS_armv6-novfp = "-cpu arm1136" QEMU_OPTIONS_armv7a = "-cpu cortex-a8" ################################################################## -- cgit v1.2.3 From 68233bb284d82040087b7d265ad3ad93c0cab475 Mon Sep 17 00:00:00 2001 From: Manuel Pietschmann Date: Mon, 10 Aug 2009 13:06:26 -0700 Subject: python-sip_4.8.2.bb: Add new recipe for python-sip Signed-off-by: Khem Raj --- conf/checksums.ini | 4 ++++ recipes/python/python-sip_4.8.2.bb | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 recipes/python/python-sip_4.8.2.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index bfd418d861..394ad6fb5b 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -22366,6 +22366,10 @@ sha256=7faaccb6f17296399051bd076a7f41e0f6d95a28eda3e30468f1bd7cf45898e1 md5=597d7ff7edb42a18421c806ffd18a136 sha256=7faaccb6f17296399051bd076a7f41e0f6d95a28eda3e30468f1bd7cf45898e1 +[http://www.riverbankcomputing.com/static/Downloads/sip4/sip-4.8.2.tar.gz] +md5=7ae60712aa6b4095a8cdab11b437f8f0 +sha256=2ebb29deb2bbcdb99f47866e59deea7c6d98be0c835547b043eefd151516d9a9 + [http://downloads.sourceforge.net/siproxd/siproxd-0.7.1.tar.gz] md5=45e5a44803181e2bf3361d562060c904 sha256=5eef70f4e0a8f0f4628550807da3036f8b3086864bf4bcf5ab6d22ac3a6efd81 diff --git a/recipes/python/python-sip_4.8.2.bb b/recipes/python/python-sip_4.8.2.bb new file mode 100644 index 0000000000..db88ba974b --- /dev/null +++ b/recipes/python/python-sip_4.8.2.bb @@ -0,0 +1,2 @@ +require python-sip.inc +PR = "ml0" -- cgit v1.2.3 From 19a190ca2bedf9a8d017f3c5fb163d51d0b3a828 Mon Sep 17 00:00:00 2001 From: Marc Olzheim Date: Mon, 10 Aug 2009 13:53:39 -0700 Subject: eglibc-package.bbclass glibc-package.bbclass: Use ls -d in do_prep_locale_tree ls -d will list directories as plain files and then cp -R will copy the contents over. Signed-off-by: Khem Raj --- recipes/eglibc/eglibc-package.bbclass | 2 +- recipes/eglibc/eglibc.inc | 2 +- recipes/glibc/glibc-package.bbclass | 2 +- recipes/glibc/glibc.inc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recipes/eglibc/eglibc-package.bbclass b/recipes/eglibc/eglibc-package.bbclass index 7843d9f668..ac8a7fe000 100644 --- a/recipes/eglibc/eglibc-package.bbclass +++ b/recipes/eglibc/eglibc-package.bbclass @@ -152,7 +152,7 @@ do_prep_locale_tree() { for i in $treedir/${datadir}/i18n/charmaps/*gz; do gunzip $i done - ls ${D}${base_libdir}/* | xargs -iBLAH cp -pPR BLAH $treedir/lib + ls -d ${D}${base_libdir}/* | xargs -iBLAH cp -pPR BLAH $treedir/lib if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* ]; then cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.* $treedir/lib fi diff --git a/recipes/eglibc/eglibc.inc b/recipes/eglibc/eglibc.inc index 1ca0c6264f..f81523e5aa 100644 --- a/recipes/eglibc/eglibc.inc +++ b/recipes/eglibc/eglibc.inc @@ -3,7 +3,7 @@ HOMEPAGE = "http://www.eglibc.org/home" SECTION = "libs" PRIORITY = "required" LICENSE = "LGPL" -INC_PR = "r5" +INC_PR = "r6" # nptl needs unwind support in gcc, which can't be built without glibc. DEPENDS = "virtual/${TARGET_PREFIX}gcc-intermediate linux-libc-headers" #this leads to circular deps, so lets not add it yet diff --git a/recipes/glibc/glibc-package.bbclass b/recipes/glibc/glibc-package.bbclass index 2bf08cec75..2da68185c5 100644 --- a/recipes/glibc/glibc-package.bbclass +++ b/recipes/glibc/glibc-package.bbclass @@ -147,7 +147,7 @@ do_prep_locale_tree() { for i in $treedir/${datadir}/i18n/charmaps/*gz; do gunzip $i done - ls ${D}${base_libdir}/* | xargs -iBLAH cp -pPR BLAH $treedir/lib + ls -d ${D}${base_libdir}/* | xargs -iBLAH cp -pPR BLAH $treedir/lib if [ -f ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so ]; then cp -pPR ${CROSS_DIR}/${TARGET_SYS}/lib/libgcc_s.so $treedir/lib fi diff --git a/recipes/glibc/glibc.inc b/recipes/glibc/glibc.inc index 9a3942169a..4efff7842e 100644 --- a/recipes/glibc/glibc.inc +++ b/recipes/glibc/glibc.inc @@ -11,7 +11,7 @@ PROVIDES = "virtual/libc virtual/${TARGET_PREFIX}libc-for-gcc" PROVIDES += "virtual/libintl virtual/libiconv" # INC_PR for glibc.inc, glibc-initial.inc and glibc-stage.inc -INC_PR = "r32" +INC_PR = "r33" inherit autotools -- cgit v1.2.3 From d89b57a97535a8a8d7078754aa404a2d6b7fab05 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 10 Aug 2009 13:03:13 +0200 Subject: meta-toolchain-qte: Fix the paths to the helper utilities They are directly copied into bin/ and not usr/bin. Change the script to point to the correct location. --- recipes/meta/meta-toolchain-qte.bb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/recipes/meta/meta-toolchain-qte.bb b/recipes/meta/meta-toolchain-qte.bb index b654935431..463b855ba6 100644 --- a/recipes/meta/meta-toolchain-qte.bb +++ b/recipes/meta/meta-toolchain-qte.bb @@ -17,12 +17,12 @@ do_populate_sdk_append() { echo 'export OE_QMAKE_LINK=${TARGET_SYS}-g++' >> $script echo 'export OE_QMAKE_LIBDIR_QT=${prefix}/${TARGET_SYS}/${layout_libdir}' >> $script echo 'export OE_QMAKE_INCDIR_QT=${prefix}/${TARGET_SYS}/${layout_includedir}/${QT_DIR_NAME}' >> $script - echo 'export OE_QMAKE_MOC=${prefix}/${layout_bindir}/moc4' >> $script - echo 'export OE_QMAKE_UIC=${prefix}/${layout_bindir}/uic4' >> $script - echo 'export OE_QMAKE_UIC3=${prefix}/${layout_bindir}/uic34' >> $script - echo 'export OE_QMAKE_RCC=${prefix}/${layout_bindir}/rcc4' >> $script - echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/${layout_bindir}/qdbuscpp2xml4' >> $script - echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/${layout_bindir}/qdbusxml2cpp4' >> $script + echo 'export OE_QMAKE_MOC=${prefix}/bin/moc4' >> $script + echo 'export OE_QMAKE_UIC=${prefix}/bin/uic4' >> $script + echo 'export OE_QMAKE_UIC3=${prefix}/bin/uic34' >> $script + echo 'export OE_QMAKE_RCC=${prefix}/bin/rcc4' >> $script + echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/bin/qdbuscpp2xml4' >> $script + echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/bin/qdbusxml2cpp4' >> $script # Repack SDK with new environment-setup cd ${SDK_OUTPUT} -- cgit v1.2.3 From 16e1b32d6991d551c5f86c588669de4521dad4b9 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 10 Aug 2009 13:09:16 +0200 Subject: qt4: Make it possible to set the QMAKE_QT_CONFIG variable this way we will find the qconfig.pri and all library names will be set correctly. This means that the SDK is usable to compile Qt applications out of the box. --- recipes/meta/meta-toolchain-qte.bb | 1 + recipes/qt4/files/g++.conf | 3 +++ 2 files changed, 4 insertions(+) diff --git a/recipes/meta/meta-toolchain-qte.bb b/recipes/meta/meta-toolchain-qte.bb index 463b855ba6..52fd2795e2 100644 --- a/recipes/meta/meta-toolchain-qte.bb +++ b/recipes/meta/meta-toolchain-qte.bb @@ -23,6 +23,7 @@ do_populate_sdk_append() { echo 'export OE_QMAKE_RCC=${prefix}/bin/rcc4' >> $script echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/bin/qdbuscpp2xml4' >> $script echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/bin/qdbusxml2cpp4' >> $script + echo 'export OE_QMAKE_QT_CONFIG=${prefix}/${TARGET_SYS}/${layout_datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script # Repack SDK with new environment-setup cd ${SDK_OUTPUT} diff --git a/recipes/qt4/files/g++.conf b/recipes/qt4/files/g++.conf index f1be0adc75..4cd76e62ea 100644 --- a/recipes/qt4/files/g++.conf +++ b/recipes/qt4/files/g++.conf @@ -48,3 +48,6 @@ QMAKE_PCH_OUTPUT_EXT = .gch # -Bsymbolic-functions (ld) support QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, + +# for the SDK +isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG) -- cgit v1.2.3 From 51221fe1ad416904f7db22f4cc80b712757e3681 Mon Sep 17 00:00:00 2001 From: Marc Olzheim Date: Mon, 10 Aug 2009 11:14:06 +0200 Subject: curl-7.19.5: Fix for curl artifact 2825989 Add curl-add_all_algorithms.patch to 7.19.5 recipe. Fixes curl artifact id 2825989 https://sourceforge.net/tracker/index.php?func=detail&aid=2825989&group_id=976&atid=100976 http://cool.haxx.se/cvs.cgi/curl/lib/ssluse.c#rev1.229 http://patchwork.openembedded.org/patch/928/ Signed-Off-By: Holger Hans Peter Freyther --- recipes/curl/curl_7.19.5.bb | 5 +++-- recipes/curl/files/curl-add_all_algorithms.patch | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 recipes/curl/files/curl-add_all_algorithms.patch diff --git a/recipes/curl/curl_7.19.5.bb b/recipes/curl/curl_7.19.5.bb index df83fe8c0a..b5b6182e8d 100644 --- a/recipes/curl/curl_7.19.5.bb +++ b/recipes/curl/curl_7.19.5.bb @@ -1,5 +1,6 @@ require curl-common.inc require curl-target.inc -SRC_URI += "file://off_t_abi_fix.patch;patch=1;pnum=0" -PR = "r0" +SRC_URI += "file://off_t_abi_fix.patch;patch=1;pnum=0 \ + file://curl-add_all_algorithms.patch;patch=1" +PR = "r1" diff --git a/recipes/curl/files/curl-add_all_algorithms.patch b/recipes/curl/files/curl-add_all_algorithms.patch new file mode 100644 index 0000000000..a55af12575 --- /dev/null +++ b/recipes/curl/files/curl-add_all_algorithms.patch @@ -0,0 +1,22 @@ +--- curl-7.19.5/lib/ssluse.c 2009-01-26 15:36:22.000000000 +0100 ++++ curl-7.19.5/lib/ssluse.c 2009-07-23 15:44:12.000000000 +0200 +@@ -58,6 +58,7 @@ + #ifdef USE_SSLEAY + + #ifdef USE_OPENSSL ++#include + #include + #include + #else +@@ -627,6 +628,11 @@ + /* Lets get nice error messages */ + SSL_load_error_strings(); + ++#ifdef USE_OPENSSL ++ /* Load all algorithms (including SHA2) */ ++ OpenSSL_add_all_algorithms(); ++#endif /* USE_OPENSSL */ ++ + /* Setup all the global SSL stuff */ + if(!SSLeay_add_ssl_algorithms()) + return 0; -- cgit v1.2.3 From 7a1bea0c401749e0bfb8d387df04cab2f11ae155 Mon Sep 17 00:00:00 2001 From: Rafael Campos Las Heras Date: Mon, 10 Aug 2009 13:07:01 +0000 Subject: Update the em-x270 machine to work with linux_2.6.23. * Use of generic linux_2.6.23 recipe * remove em-x270_2.6.23 recipe (ugly). * Add a patch that allows to compile with gcc 4.1 compiler. Signed-off-by: Rafael Campos Las Heras Signed-off-By: Holger Hans Peter Freyther --- conf/machine/em-x270.conf | 4 +- recipes/linux/em-x270-2.6.23/defconfig | 1354 --- recipes/linux/em-x270-2.6.23/em-x270.patch | 12063 ------------------- recipes/linux/em-x270_2.6.23.bb | 29 - .../em-x270/01-prevent_loop_timespec_add_ns.patch | 19 + recipes/linux/linux-2.6.23/em-x270/defconfig | 1354 +++ recipes/linux/linux-2.6.23/em-x270/em-x270.patch | 12063 +++++++++++++++++++ recipes/linux/linux_2.6.23.bb | 3 + 8 files changed, 13441 insertions(+), 13448 deletions(-) delete mode 100644 recipes/linux/em-x270-2.6.23/defconfig delete mode 100644 recipes/linux/em-x270-2.6.23/em-x270.patch delete mode 100644 recipes/linux/em-x270_2.6.23.bb create mode 100644 recipes/linux/linux-2.6.23/em-x270/01-prevent_loop_timespec_add_ns.patch create mode 100644 recipes/linux/linux-2.6.23/em-x270/defconfig create mode 100644 recipes/linux/linux-2.6.23/em-x270/em-x270.patch diff --git a/conf/machine/em-x270.conf b/conf/machine/em-x270.conf index f8a5c951b7..efcf10484a 100644 --- a/conf/machine/em-x270.conf +++ b/conf/machine/em-x270.conf @@ -9,7 +9,7 @@ TARGET_ARCH = "arm" GUI_MACHINE_CLASS ?= "bigscreen" PACKAGE_EXTRA_ARCHS = "iwmmxt " -PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}" +PREFERRED_PROVIDER_virtual/kernel = "linux" # Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm. #require conf/machine/include/tune-xscale.inc @@ -43,7 +43,7 @@ MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth wifi usbhost usbgadg # #PCMCIA_MANAGER = "pcmciautils" -PREFERRED_VERSION_em-x270 = "2.6.23" +PREFERRED_VERSION_linux = "2.6.23" MODUTILS = "26" PREFERRED_PROVIDER_xserver = "xserver-kdrive" diff --git a/recipes/linux/em-x270-2.6.23/defconfig b/recipes/linux/em-x270-2.6.23/defconfig deleted file mode 100644 index 3246136571..0000000000 --- a/recipes/linux/em-x270-2.6.23/defconfig +++ /dev/null @@ -1,1354 +0,0 @@ -# -# Automatically generated make config: don't edit -# Linux kernel version: 2.6.23-rc9 -# Tue Oct 9 11:19:21 2007 -# -CONFIG_ARM=y -CONFIG_SYS_SUPPORTS_APM_EMULATION=y -CONFIG_GENERIC_GPIO=y -CONFIG_GENERIC_TIME=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_MMU=y -# CONFIG_NO_IOPORT is not set -CONFIG_GENERIC_HARDIRQS=y -CONFIG_STACKTRACE_SUPPORT=y -CONFIG_LOCKDEP_SUPPORT=y -CONFIG_TRACE_IRQFLAGS_SUPPORT=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_GENERIC_IRQ_PROBE=y -CONFIG_RWSEM_GENERIC_SPINLOCK=y -# CONFIG_ARCH_HAS_ILOG2_U32 is not set -# CONFIG_ARCH_HAS_ILOG2_U64 is not set -CONFIG_GENERIC_HWEIGHT=y -CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_ZONE_DMA=y -CONFIG_ARCH_MTD_XIP=y -CONFIG_VECTORS_BASE=0xffff0000 -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" - -# -# General setup -# -CONFIG_EXPERIMENTAL=y -CONFIG_BROKEN_ON_SMP=y -CONFIG_INIT_ENV_ARG_LIMIT=32 -CONFIG_LOCALVERSION="-em-x270" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SWAP=y -CONFIG_SYSVIPC=y -CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set -# CONFIG_BSD_PROCESS_ACCT is not set -# CONFIG_TASKSTATS is not set -# CONFIG_USER_NS is not set -# CONFIG_AUDIT is not set -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=17 -CONFIG_SYSFS_DEPRECATED=y -# CONFIG_RELAY is not set -CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_SYSCTL=y -CONFIG_EMBEDDED=y -CONFIG_UID16=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_KALLSYMS=y -# CONFIG_KALLSYMS_ALL is not set -# CONFIG_KALLSYMS_EXTRA_PASS is not set -CONFIG_HOTPLUG=y -CONFIG_PRINTK=y -CONFIG_BUG=y -CONFIG_ELF_CORE=y -CONFIG_BASE_FULL=y -CONFIG_FUTEX=y -CONFIG_ANON_INODES=y -CONFIG_EPOLL=y -CONFIG_SIGNALFD=y -CONFIG_EVENTFD=y -CONFIG_SHMEM=y -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_SLUB_DEBUG=y -# CONFIG_SLAB is not set -CONFIG_SLUB=y -# CONFIG_SLOB is not set -CONFIG_RT_MUTEXES=y -# CONFIG_TINY_SHMEM is not set -CONFIG_BASE_SMALL=0 -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_MODVERSIONS is not set -# CONFIG_MODULE_SRCVERSION_ALL is not set -CONFIG_KMOD=y -CONFIG_BLOCK=y -# CONFIG_LBD is not set -# CONFIG_BLK_DEV_IO_TRACE is not set -# CONFIG_LSF is not set -# CONFIG_BLK_DEV_BSG is not set - -# -# IO Schedulers -# -CONFIG_IOSCHED_NOOP=y -CONFIG_IOSCHED_AS=y -CONFIG_IOSCHED_DEADLINE=y -CONFIG_IOSCHED_CFQ=y -CONFIG_DEFAULT_AS=y -# CONFIG_DEFAULT_DEADLINE is not set -# CONFIG_DEFAULT_CFQ is not set -# CONFIG_DEFAULT_NOOP is not set -CONFIG_DEFAULT_IOSCHED="anticipatory" - -# -# System Type -# -# CONFIG_ARCH_AAEC2000 is not set -# CONFIG_ARCH_INTEGRATOR is not set -# CONFIG_ARCH_REALVIEW is not set -# CONFIG_ARCH_VERSATILE is not set -# CONFIG_ARCH_AT91 is not set -# CONFIG_ARCH_CLPS7500 is not set -# CONFIG_ARCH_CLPS711X is not set -# CONFIG_ARCH_CO285 is not set -# CONFIG_ARCH_EBSA110 is not set -# CONFIG_ARCH_EP93XX is not set -# CONFIG_ARCH_FOOTBRIDGE is not set -# CONFIG_ARCH_NETX is not set -# CONFIG_ARCH_H720X is not set -# CONFIG_ARCH_IMX is not set -# CONFIG_ARCH_IOP13XX is not set -# CONFIG_ARCH_IOP32X is not set -# CONFIG_ARCH_IOP33X is not set -# CONFIG_ARCH_IXP23XX is not set -# CONFIG_ARCH_IXP2000 is not set -# CONFIG_ARCH_IXP4XX is not set -# CONFIG_ARCH_L7200 is not set -# CONFIG_ARCH_KS8695 is not set -# CONFIG_ARCH_NS9XXX is not set -# CONFIG_ARCH_MXC is not set -# CONFIG_ARCH_PNX4008 is not set -CONFIG_ARCH_PXA=y -# CONFIG_ARCH_RPC is not set -# CONFIG_ARCH_SA1100 is not set -# CONFIG_ARCH_S3C2410 is not set -# CONFIG_ARCH_SHARK is not set -# CONFIG_ARCH_LH7A40X is not set -# CONFIG_ARCH_DAVINCI is not set -# CONFIG_ARCH_OMAP is not set - -# -# Intel PXA2xx Implementations -# -# CONFIG_ARCH_LUBBOCK is not set -# CONFIG_MACH_LOGICPD_PXA270 is not set -# CONFIG_MACH_MAINSTONE is not set -# CONFIG_ARCH_PXA_IDP is not set -# CONFIG_PXA_SHARPSL is not set -# CONFIG_MACH_TRIZEPS4 is not set -CONFIG_MACH_EM_X270=y -CONFIG_PXA27x=y -CONFIG_PXA_PWR_I2C=y - -# -# Boot options -# - -# -# Power management -# - -# -# Processor Type -# -CONFIG_CPU_32=y -CONFIG_CPU_XSCALE=y -CONFIG_CPU_32v5=y -CONFIG_CPU_ABRT_EV5T=y -CONFIG_CPU_CACHE_VIVT=y -CONFIG_CPU_TLB_V4WBI=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y - -# -# Processor Features -# -CONFIG_ARM_THUMB=y -# CONFIG_CPU_DCACHE_DISABLE is not set -# CONFIG_OUTER_CACHE is not set -CONFIG_IWMMXT=y -CONFIG_XSCALE_PMU=y - -# -# Bus support -# -# CONFIG_PCI_SYSCALL is not set -# CONFIG_ARCH_SUPPORTS_MSI is not set - -# -# PCCARD (PCMCIA/CardBus) support -# -# CONFIG_PCCARD is not set - -# -# Kernel Features -# -# CONFIG_TICK_ONESHOT is not set -# CONFIG_NO_HZ is not set -# CONFIG_HIGH_RES_TIMERS is not set -# CONFIG_PREEMPT is not set -CONFIG_HZ=100 -CONFIG_AEABI=y -CONFIG_OABI_COMPAT=y -# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_FLATMEM_MANUAL=y -# CONFIG_DISCONTIGMEM_MANUAL is not set -# CONFIG_SPARSEMEM_MANUAL is not set -CONFIG_FLATMEM=y -CONFIG_FLAT_NODE_MEM_MAP=y -# CONFIG_SPARSEMEM_STATIC is not set -CONFIG_SPLIT_PTLOCK_CPUS=4096 -# CONFIG_RESOURCES_64BIT is not set -CONFIG_ZONE_DMA_FLAG=1 -CONFIG_BOUNCE=y -CONFIG_VIRT_TO_BUS=y -CONFIG_ALIGNMENT_TRAP=y - -# -# Boot options -# -CONFIG_ZBOOT_ROM_TEXT=0x0 -CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200" -# CONFIG_XIP_KERNEL is not set -# CONFIG_KEXEC is not set - -# -# CPU Frequency scaling -# -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_TABLE=y -# CONFIG_CPU_FREQ_DEBUG is not set -CONFIG_CPU_FREQ_STAT=y -# CONFIG_CPU_FREQ_STAT_DETAILS is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=m -CONFIG_CPU_FREQ_GOV_USERSPACE=m -CONFIG_CPU_FREQ_GOV_ONDEMAND=m -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -CONFIG_CPU_FREQ_PXA=y - -# -# Floating point emulation -# - -# -# At least one emulation must be selected -# -CONFIG_FPE_NWFPE=y -# CONFIG_FPE_NWFPE_XP is not set -# CONFIG_FPE_FASTFPE is not set - -# -# Userspace binary formats -# -CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_AOUT=m -CONFIG_BINFMT_MISC=m - -# -# Power management options -# -CONFIG_PM=y -CONFIG_PM_LEGACY=y -# CONFIG_PM_DEBUG is not set -CONFIG_PM_SLEEP=y -CONFIG_SUSPEND_UP_POSSIBLE=y -CONFIG_SUSPEND=y -CONFIG_APM_EMULATION=y - -# -# Networking -# -CONFIG_NET=y - -# -# Networking options -# -CONFIG_PACKET=y -# CONFIG_PACKET_MMAP is not set -CONFIG_UNIX=y -CONFIG_XFRM=y -# CONFIG_XFRM_USER is not set -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_NET_KEY is not set -CONFIG_INET=y -# CONFIG_IP_MULTICAST is not set -# CONFIG_IP_ADVANCED_ROUTER is not set -CONFIG_IP_FIB_HASH=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -# CONFIG_IP_PNP_RARP is not set -# CONFIG_NET_IPIP is not set -# CONFIG_NET_IPGRE is not set -# CONFIG_ARPD is not set -# CONFIG_SYN_COOKIES is not set -# CONFIG_INET_AH is not set -# CONFIG_INET_ESP is not set -# CONFIG_INET_IPCOMP is not set -# CONFIG_INET_XFRM_TUNNEL is not set -# CONFIG_INET_TUNNEL is not set -CONFIG_INET_XFRM_MODE_TRANSPORT=y -CONFIG_INET_XFRM_MODE_TUNNEL=y -CONFIG_INET_XFRM_MODE_BEET=y -CONFIG_INET_DIAG=y -CONFIG_INET_TCP_DIAG=y -# CONFIG_TCP_CONG_ADVANCED is not set -CONFIG_TCP_CONG_CUBIC=y -CONFIG_DEFAULT_TCP_CONG="cubic" -# CONFIG_TCP_MD5SIG is not set -# CONFIG_IPV6 is not set -# CONFIG_INET6_XFRM_TUNNEL is not set -# CONFIG_INET6_TUNNEL is not set -# CONFIG_NETWORK_SECMARK is not set -# CONFIG_NETFILTER is not set -# CONFIG_IP_DCCP is not set -# CONFIG_IP_SCTP is not set -# CONFIG_TIPC is not set -# CONFIG_ATM is not set -# CONFIG_BRIDGE is not set -# CONFIG_VLAN_8021Q is not set -# CONFIG_DECNET is not set -# CONFIG_LLC2 is not set -# CONFIG_IPX is not set -# CONFIG_ATALK is not set -# CONFIG_X25 is not set -# CONFIG_LAPB is not set -# CONFIG_ECONET is not set -# CONFIG_WAN_ROUTER is not set - -# -# QoS and/or fair queueing -# -# CONFIG_NET_SCHED is not set -CONFIG_NET_SCH_FIFO=y - -# -# Network testing -# -# CONFIG_NET_PKTGEN is not set -# CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -CONFIG_BT=m -CONFIG_BT_L2CAP=m -CONFIG_BT_SCO=m -CONFIG_BT_RFCOMM=m -# CONFIG_BT_RFCOMM_TTY is not set -CONFIG_BT_BNEP=m -# CONFIG_BT_BNEP_MC_FILTER is not set -# CONFIG_BT_BNEP_PROTO_FILTER is not set -CONFIG_BT_HIDP=m - -# -# Bluetooth device drivers -# -CONFIG_BT_HCIUSB=m -# CONFIG_BT_HCIUSB_SCO is not set -CONFIG_BT_HCIUART=m -# CONFIG_BT_HCIUART_H4 is not set -# CONFIG_BT_HCIUART_BCSP is not set -CONFIG_BT_HCIBCM203X=m -CONFIG_BT_HCIBPA10X=m -CONFIG_BT_HCIBFUSB=m -# CONFIG_BT_HCIVHCI is not set -# CONFIG_AF_RXRPC is not set - -# -# Wireless -# -CONFIG_CFG80211=m -CONFIG_WIRELESS_EXT=y -CONFIG_MAC80211=m -# CONFIG_MAC80211_LEDS is not set -CONFIG_MAC80211_DEBUGFS=y -# CONFIG_MAC80211_DEBUG is not set -CONFIG_IEEE80211=m -# CONFIG_IEEE80211_DEBUG is not set -CONFIG_IEEE80211_CRYPT_WEP=m -CONFIG_IEEE80211_CRYPT_CCMP=m -# CONFIG_IEEE80211_CRYPT_TKIP is not set -# CONFIG_IEEE80211_SOFTMAC is not set -# CONFIG_RFKILL is not set -# CONFIG_NET_9P is not set - -# -# Device Drivers -# - -# -# Generic Driver Options -# -CONFIG_STANDALONE=y -CONFIG_PREVENT_FIRMWARE_BUILD=y -CONFIG_FW_LOADER=y -# CONFIG_DEBUG_DRIVER is not set -# CONFIG_DEBUG_DEVRES is not set -# CONFIG_SYS_HYPERVISOR is not set -# CONFIG_CONNECTOR is not set -CONFIG_MTD=y -# CONFIG_MTD_DEBUG is not set -CONFIG_MTD_CONCAT=y -CONFIG_MTD_PARTITIONS=y -# CONFIG_MTD_REDBOOT_PARTS is not set -# CONFIG_MTD_CMDLINE_PARTS is not set -# CONFIG_MTD_AFS_PARTS is not set - -# -# User Modules And Translation Layers -# -CONFIG_MTD_CHAR=y -CONFIG_MTD_BLKDEVS=y -CONFIG_MTD_BLOCK=y -# CONFIG_FTL is not set -# CONFIG_NFTL is not set -# CONFIG_INFTL is not set -# CONFIG_RFD_FTL is not set -# CONFIG_SSFDC is not set - -# -# RAM/ROM/Flash chip drivers -# -CONFIG_MTD_CFI=y -CONFIG_MTD_JEDECPROBE=y -CONFIG_MTD_GEN_PROBE=y -# CONFIG_MTD_CFI_ADV_OPTIONS is not set -CONFIG_MTD_MAP_BANK_WIDTH_1=y -CONFIG_MTD_MAP_BANK_WIDTH_2=y -CONFIG_MTD_MAP_BANK_WIDTH_4=y -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set -CONFIG_MTD_CFI_I1=y -CONFIG_MTD_CFI_I2=y -# CONFIG_MTD_CFI_I4 is not set -# CONFIG_MTD_CFI_I8 is not set -CONFIG_MTD_CFI_INTELEXT=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_CFI_STAA=y -CONFIG_MTD_CFI_UTIL=y -# CONFIG_MTD_RAM is not set -# CONFIG_MTD_ROM is not set -# CONFIG_MTD_ABSENT is not set -# CONFIG_MTD_XIP is not set - -# -# Mapping drivers for chip access -# -# CONFIG_MTD_COMPLEX_MAPPINGS is not set -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_PHYSMAP_START=0x0 -CONFIG_MTD_PHYSMAP_LEN=0x100000 -CONFIG_MTD_PHYSMAP_BANKWIDTH=2 -# CONFIG_MTD_ARM_INTEGRATOR is not set -# CONFIG_MTD_IMPA7 is not set -# CONFIG_MTD_SHARP_SL is not set -# CONFIG_MTD_PLATRAM is not set - -# -# Self-contained MTD device drivers -# -# CONFIG_MTD_SLRAM is not set -# CONFIG_MTD_PHRAM is not set -# CONFIG_MTD_MTDRAM is not set -# CONFIG_MTD_BLOCK2MTD is not set - -# -# Disk-On-Chip Device Drivers -# -# CONFIG_MTD_DOC2000 is not set -# CONFIG_MTD_DOC2001 is not set -# CONFIG_MTD_DOC2001PLUS is not set -CONFIG_MTD_NAND=y -# CONFIG_MTD_NAND_VERIFY_WRITE is not set -# CONFIG_MTD_NAND_ECC_SMC is not set -# CONFIG_MTD_NAND_MUSEUM_IDS is not set -# CONFIG_MTD_NAND_H1900 is not set -CONFIG_MTD_NAND_IDS=y -# CONFIG_MTD_NAND_DISKONCHIP is not set -# CONFIG_MTD_NAND_SHARPSL is not set -# CONFIG_MTD_NAND_NANDSIM is not set -CONFIG_MTD_NAND_PLATFORM=y -# CONFIG_MTD_ONENAND is not set - -# -# UBI - Unsorted block images -# -CONFIG_MTD_UBI=m -CONFIG_MTD_UBI_WL_THRESHOLD=4096 -CONFIG_MTD_UBI_BEB_RESERVE=1 -CONFIG_MTD_UBI_GLUEBI=y - -# -# UBI debugging options -# -# CONFIG_MTD_UBI_DEBUG is not set -# CONFIG_PARPORT is not set -CONFIG_BLK_DEV=y -# CONFIG_BLK_DEV_COW_COMMON is not set -CONFIG_BLK_DEV_LOOP=y -# CONFIG_BLK_DEV_CRYPTOLOOP is not set -# CONFIG_BLK_DEV_NBD is not set -# CONFIG_BLK_DEV_UB is not set -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=12000 -CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 -# CONFIG_CDROM_PKTCDVD is not set -# CONFIG_ATA_OVER_ETH is not set -# CONFIG_IDE is not set - -# -# SCSI device support -# -# CONFIG_RAID_ATTRS is not set -CONFIG_SCSI=y -CONFIG_SCSI_DMA=y -# CONFIG_SCSI_TGT is not set -# CONFIG_SCSI_NETLINK is not set -# CONFIG_SCSI_PROC_FS is not set - -# -# SCSI support type (disk, tape, CD-ROM) -# -CONFIG_BLK_DEV_SD=y -# CONFIG_CHR_DEV_ST is not set -# CONFIG_CHR_DEV_OSST is not set -# CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set -# CONFIG_CHR_DEV_SCH is not set - -# -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs -# -# CONFIG_SCSI_MULTI_LUN is not set -# CONFIG_SCSI_CONSTANTS is not set -# CONFIG_SCSI_LOGGING is not set -# CONFIG_SCSI_SCAN_ASYNC is not set -CONFIG_SCSI_WAIT_SCAN=m - -# -# SCSI Transports -# -# CONFIG_SCSI_SPI_ATTRS is not set -# CONFIG_SCSI_FC_ATTRS is not set -# CONFIG_SCSI_ISCSI_ATTRS is not set -# CONFIG_SCSI_SAS_LIBSAS is not set -CONFIG_SCSI_LOWLEVEL=y -# CONFIG_ISCSI_TCP is not set -# CONFIG_SCSI_DEBUG is not set -# CONFIG_ATA is not set -# CONFIG_MD is not set -CONFIG_NETDEVICES=y -# CONFIG_NETDEVICES_MULTIQUEUE is not set -# CONFIG_DUMMY is not set -# CONFIG_BONDING is not set -# CONFIG_MACVLAN is not set -# CONFIG_EQUALIZER is not set -# CONFIG_TUN is not set -# CONFIG_PHYLIB is not set -CONFIG_NET_ETHERNET=y -CONFIG_MII=y -# CONFIG_AX88796 is not set -# CONFIG_SMC91X is not set -CONFIG_DM9000=y -# CONFIG_SMC911X is not set -# CONFIG_NETDEV_1000 is not set -# CONFIG_NETDEV_10000 is not set - -# -# Wireless LAN -# -# CONFIG_WLAN_PRE80211 is not set -# CONFIG_WLAN_80211 is not set - -# -# USB Network Adapters -# -# CONFIG_USB_CATC is not set -# CONFIG_USB_KAWETH is not set -# CONFIG_USB_PEGASUS is not set -# CONFIG_USB_RTL8150 is not set -# CONFIG_USB_USBNET_MII is not set -# CONFIG_USB_USBNET is not set -# CONFIG_WAN is not set -CONFIG_PPP=m -# CONFIG_PPP_MULTILINK is not set -# CONFIG_PPP_FILTER is not set -CONFIG_PPP_ASYNC=m -CONFIG_PPP_SYNC_TTY=m -CONFIG_PPP_DEFLATE=m -CONFIG_PPP_BSDCOMP=m -CONFIG_PPP_MPPE=m -# CONFIG_PPPOE is not set -CONFIG_PPPOL2TP=m -# CONFIG_SLIP is not set -CONFIG_SLHC=m -# CONFIG_SHAPER is not set -# CONFIG_NETCONSOLE is not set -# CONFIG_NETPOLL is not set -# CONFIG_NET_POLL_CONTROLLER is not set -# CONFIG_ISDN is not set - -# -# Input device support -# -CONFIG_INPUT=y -# CONFIG_INPUT_FF_MEMLESS is not set -# CONFIG_INPUT_POLLDEV is not set - -# -# Userland interfaces -# -CONFIG_INPUT_MOUSEDEV=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -# CONFIG_INPUT_JOYDEV is not set -# CONFIG_INPUT_TSDEV is not set -CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_EVBUG is not set - -# -# Input Device Drivers -# -CONFIG_INPUT_KEYBOARD=y -# CONFIG_KEYBOARD_ATKBD is not set -# CONFIG_KEYBOARD_SUNKBD is not set -# CONFIG_KEYBOARD_LKKBD is not set -# CONFIG_KEYBOARD_XTKBD is not set -# CONFIG_KEYBOARD_NEWTON is not set -# CONFIG_KEYBOARD_STOWAWAY is not set -CONFIG_KEYBOARD_PXA27x=y -# CONFIG_KEYBOARD_GPIO is not set -# CONFIG_INPUT_MOUSE is not set -# CONFIG_INPUT_JOYSTICK is not set -# CONFIG_INPUT_TABLET is not set -CONFIG_INPUT_TOUCHSCREEN=y -# CONFIG_TOUCHSCREEN_FUJITSU is not set -# CONFIG_TOUCHSCREEN_GUNZE is not set -# CONFIG_TOUCHSCREEN_ELO is not set -# CONFIG_TOUCHSCREEN_MTOUCH is not set -# CONFIG_TOUCHSCREEN_MK712 is not set -CONFIG_TOUCHSCREEN_WM97XX=y -# CONFIG_TOUCHSCREEN_WM9705 is not set -CONFIG_TOUCHSCREEN_WM9712=y -# CONFIG_TOUCHSCREEN_WM9713 is not set -# CONFIG_TOUCHSCREEN_PENMOUNT is not set -# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set -# CONFIG_TOUCHSCREEN_TOUCHWIN is not set -# CONFIG_TOUCHSCREEN_UCB1400 is not set -# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set -# CONFIG_INPUT_MISC is not set - -# -# Hardware I/O ports -# -CONFIG_SERIO=y -# CONFIG_SERIO_SERPORT is not set -CONFIG_SERIO_LIBPS2=y -# CONFIG_SERIO_RAW is not set -# CONFIG_GAMEPORT is not set - -# -# Character devices -# -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_HW_CONSOLE=y -# CONFIG_VT_HW_CONSOLE_BINDING is not set -# CONFIG_SERIAL_NONSTANDARD is not set - -# -# Serial drivers -# -# CONFIG_SERIAL_8250 is not set - -# -# Non-8250 serial port support -# -CONFIG_SERIAL_PXA=y -CONFIG_SERIAL_PXA_CONSOLE=y -CONFIG_SERIAL_CORE=y -CONFIG_SERIAL_CORE_CONSOLE=y -CONFIG_UNIX98_PTYS=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_IPMI_HANDLER is not set -# CONFIG_WATCHDOG is not set -CONFIG_HW_RANDOM=m -# CONFIG_NVRAM is not set -# CONFIG_R3964 is not set -# CONFIG_RAW_DRIVER is not set -# CONFIG_TCG_TPM is not set -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -# CONFIG_I2C_CHARDEV is not set - -# -# I2C Algorithms -# -# CONFIG_I2C_ALGOBIT is not set -# CONFIG_I2C_ALGOPCF is not set -# CONFIG_I2C_ALGOPCA is not set - -# -# I2C Hardware Bus support -# -# CONFIG_I2C_GPIO is not set -CONFIG_I2C_PXA=y -# CONFIG_I2C_PXA_SLAVE is not set -# CONFIG_I2C_OCORES is not set -# CONFIG_I2C_PARPORT_LIGHT is not set -# CONFIG_I2C_SIMTEC is not set -# CONFIG_I2C_TAOS_EVM is not set -# CONFIG_I2C_STUB is not set -# CONFIG_I2C_TINY_USB is not set - -# -# Miscellaneous I2C Chip support -# -# CONFIG_SENSORS_DS1337 is not set -# CONFIG_SENSORS_DS1374 is not set -# CONFIG_DS1682 is not set -# CONFIG_SENSORS_EEPROM is not set -# CONFIG_SENSORS_PCF8574 is not set -# CONFIG_SENSORS_PCA9539 is not set -# CONFIG_SENSORS_PCF8591 is not set -# CONFIG_SENSORS_MAX6875 is not set -# CONFIG_SENSORS_TSL2550 is not set -CONFIG_DA9030=y -# CONFIG_I2C_DEBUG_CORE is not set -# CONFIG_I2C_DEBUG_ALGO is not set -# CONFIG_I2C_DEBUG_BUS is not set -# CONFIG_I2C_DEBUG_CHIP is not set - -# -# SPI support -# -# CONFIG_SPI is not set -# CONFIG_SPI_MASTER is not set -# CONFIG_W1 is not set -CONFIG_POWER_SUPPLY=y -# CONFIG_POWER_SUPPLY_DEBUG is not set -# CONFIG_PDA_POWER is not set -CONFIG_APM_POWER=y -# CONFIG_BATTERY_DS2760 is not set -# CONFIG_BATTERY_EM_X270 is not set -# CONFIG_HWMON is not set -CONFIG_MISC_DEVICES=y -# CONFIG_EEPROM_93CX6 is not set - -# -# Multifunction device drivers -# -# CONFIG_MFD_SM501 is not set -CONFIG_NEW_LEDS=y -CONFIG_LEDS_CLASS=m - -# -# LED drivers -# -CONFIG_LEDS_GPIO=m -CONFIG_LEDS_EM_X270=m - -# -# LED Triggers -# -CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=m -CONFIG_LEDS_TRIGGER_HEARTBEAT=m - -# -# Multimedia devices -# -# CONFIG_VIDEO_DEV is not set -# CONFIG_DVB_CORE is not set -# CONFIG_DAB is not set - -# -# Graphics support -# -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CORGI=y - -# -# Display device support -# -# CONFIG_DISPLAY_SUPPORT is not set -# CONFIG_VGASTATE is not set -CONFIG_VIDEO_OUTPUT_CONTROL=m -CONFIG_FB=y -# CONFIG_FIRMWARE_EDID is not set -# CONFIG_FB_DDC is not set -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_IMAGEBLIT=y -# CONFIG_FB_SYS_FILLRECT is not set -# CONFIG_FB_SYS_COPYAREA is not set -# CONFIG_FB_SYS_IMAGEBLIT is not set -# CONFIG_FB_SYS_FOPS is not set -CONFIG_FB_DEFERRED_IO=y -# CONFIG_FB_SVGALIB is not set -# CONFIG_FB_MACMODES is not set -# CONFIG_FB_BACKLIGHT is not set -# CONFIG_FB_MODE_HELPERS is not set -# CONFIG_FB_TILEBLITTING is not set - -# -# Frame buffer hardware drivers -# -# CONFIG_FB_S1D13XXX is not set -CONFIG_FB_PXA=y -CONFIG_FB_PXA_PARAMETERS=y -# CONFIG_FB_MBX is not set -# CONFIG_FB_VIRTUAL is not set - -# -# Console display driver support -# -# CONFIG_VGA_CONSOLE is not set -CONFIG_DUMMY_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y -CONFIG_FONT_8x16=y -CONFIG_LOGO=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_LOGO_LINUX_CLUT224=y - -# -# Sound -# -CONFIG_SOUND=y - -# -# Advanced Linux Sound Architecture -# -CONFIG_SND=y -CONFIG_SND_TIMER=y -CONFIG_SND_PCM=y -# CONFIG_SND_SEQUENCER is not set -CONFIG_SND_OSSEMUL=y -CONFIG_SND_MIXER_OSS=y -CONFIG_SND_PCM_OSS=y -CONFIG_SND_PCM_OSS_PLUGINS=y -# CONFIG_SND_DYNAMIC_MINORS is not set -CONFIG_SND_SUPPORT_OLD_API=y -CONFIG_SND_VERBOSE_PROCFS=y -# CONFIG_SND_VERBOSE_PRINTK is not set -# CONFIG_SND_DEBUG is not set - -# -# Generic devices -# -CONFIG_SND_AC97_CODEC=m -# CONFIG_SND_DUMMY is not set -# CONFIG_SND_MTPAV is not set -# CONFIG_SND_SERIAL_U16550 is not set -# CONFIG_SND_MPU401 is not set - -# -# ALSA ARM devices -# -CONFIG_SND_PXA2XX_PCM=m -CONFIG_SND_PXA2XX_AC97=m - -# -# USB devices -# -# CONFIG_SND_USB_AUDIO is not set -# CONFIG_SND_USB_CAIAQ is not set - -# -# System on Chip audio support -# -CONFIG_SND_SOC_AC97_BUS=y -CONFIG_SND_SOC=y -CONFIG_SND_PXA2XX_SOC=y -CONFIG_SND_PXA2XX_SOC_AC97=y -CONFIG_SND_PXA2XX_SOC_EM_X270=y - -# -# SoC Audio support for SuperH -# -CONFIG_SND_SOC_WM9712=y - -# -# Open Sound System -# -# CONFIG_SOUND_PRIME is not set -CONFIG_AC97_BUS=y -CONFIG_HID_SUPPORT=y -CONFIG_HID=y -# CONFIG_HID_DEBUG is not set - -# -# USB Input Devices -# -CONFIG_USB_HID=y -# CONFIG_USB_HIDINPUT_POWERBOOK is not set -# CONFIG_HID_FF is not set -# CONFIG_USB_HIDDEV is not set -CONFIG_USB_SUPPORT=y -CONFIG_USB_ARCH_HAS_HCD=y -CONFIG_USB_ARCH_HAS_OHCI=y -# CONFIG_USB_ARCH_HAS_EHCI is not set -CONFIG_USB=y -# CONFIG_USB_DEBUG is not set - -# -# Miscellaneous USB options -# -CONFIG_USB_DEVICEFS=y -# CONFIG_USB_DEVICE_CLASS is not set -# CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_SUSPEND is not set -# CONFIG_USB_PERSIST is not set -# CONFIG_USB_OTG is not set - -# -# USB Host Controller Drivers -# -# CONFIG_USB_ISP116X_HCD is not set -CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set -# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set -CONFIG_USB_OHCI_LITTLE_ENDIAN=y -# CONFIG_USB_SL811_HCD is not set -# CONFIG_USB_R8A66597_HCD is not set - -# -# USB Device Class drivers -# -CONFIG_USB_ACM=m -CONFIG_USB_PRINTER=m - -# -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -# - -# -# may also be needed; see USB_STORAGE Help for more information -# -CONFIG_USB_STORAGE=y -# CONFIG_USB_STORAGE_DEBUG is not set -# CONFIG_USB_STORAGE_DATAFAB is not set -# CONFIG_USB_STORAGE_FREECOM is not set -# CONFIG_USB_STORAGE_DPCM is not set -# CONFIG_USB_STORAGE_USBAT is not set -# CONFIG_USB_STORAGE_SDDR09 is not set -# CONFIG_USB_STORAGE_SDDR55 is not set -# CONFIG_USB_STORAGE_JUMPSHOT is not set -# CONFIG_USB_STORAGE_ALAUDA is not set -# CONFIG_USB_STORAGE_KARMA is not set -# CONFIG_USB_LIBUSUAL is not set - -# -# USB Imaging devices -# -CONFIG_USB_MDC800=m -CONFIG_USB_MICROTEK=m -# CONFIG_USB_MON is not set - -# -# USB port drivers -# - -# -# USB Serial Converter support -# -# CONFIG_USB_SERIAL is not set - -# -# USB Miscellaneous drivers -# -# CONFIG_USB_EMI62 is not set -# CONFIG_USB_EMI26 is not set -# CONFIG_USB_ADUTUX is not set -# CONFIG_USB_AUERSWALD is not set -# CONFIG_USB_RIO500 is not set -# CONFIG_USB_LEGOTOWER is not set -# CONFIG_USB_LCD is not set -# CONFIG_USB_BERRY_CHARGE is not set -# CONFIG_USB_LED is not set -# CONFIG_USB_CYPRESS_CY7C63 is not set -# CONFIG_USB_CYTHERM is not set -# CONFIG_USB_PHIDGET is not set -# CONFIG_USB_IDMOUSE is not set -# CONFIG_USB_FTDI_ELAN is not set -# CONFIG_USB_APPLEDISPLAY is not set -# CONFIG_USB_LD is not set -# CONFIG_USB_TRANCEVIBRATOR is not set -# CONFIG_USB_IOWARRIOR is not set -# CONFIG_USB_TEST is not set - -# -# USB DSL modem support -# - -# -# USB Gadget Support -# -# CONFIG_USB_GADGET is not set -CONFIG_MMC=y -# CONFIG_MMC_DEBUG is not set -CONFIG_MMC_UNSAFE_RESUME=y - -# -# MMC/SD Card Drivers -# -CONFIG_MMC_BLOCK=y -CONFIG_MMC_BLOCK_BOUNCE=y - -# -# MMC/SD Host Controller Drivers -# -CONFIG_MMC_PXA=y -CONFIG_RTC_LIB=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc1" -# CONFIG_RTC_DEBUG is not set - -# -# RTC interfaces -# -CONFIG_RTC_INTF_SYSFS=y -CONFIG_RTC_INTF_PROC=y -CONFIG_RTC_INTF_DEV=y -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set -# CONFIG_RTC_DRV_TEST is not set - -# -# I2C RTC drivers -# -# CONFIG_RTC_DRV_DS1307 is not set -# CONFIG_RTC_DRV_DS1672 is not set -# CONFIG_RTC_DRV_MAX6900 is not set -# CONFIG_RTC_DRV_RS5C372 is not set -# CONFIG_RTC_DRV_ISL1208 is not set -# CONFIG_RTC_DRV_X1205 is not set -# CONFIG_RTC_DRV_PCF8563 is not set -# CONFIG_RTC_DRV_PCF8583 is not set -# CONFIG_RTC_DRV_M41T80 is not set - -# -# SPI RTC drivers -# - -# -# Platform RTC drivers -# -# CONFIG_RTC_DRV_CMOS is not set -# CONFIG_RTC_DRV_DS1553 is not set -# CONFIG_RTC_DRV_STK17TA8 is not set -# CONFIG_RTC_DRV_DS1742 is not set -# CONFIG_RTC_DRV_M48T86 is not set -# CONFIG_RTC_DRV_M48T59 is not set -CONFIG_RTC_DRV_V3020=y - -# -# on-CPU RTC drivers -# -CONFIG_RTC_DRV_SA1100=y - -# -# DMA Engine support -# -# CONFIG_DMA_ENGINE is not set - -# -# DMA Clients -# - -# -# DMA Devices -# - -# -# File systems -# -CONFIG_EXT2_FS=y -# CONFIG_EXT2_FS_XATTR is not set -# CONFIG_EXT2_FS_XIP is not set -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_XATTR=y -# CONFIG_EXT3_FS_POSIX_ACL is not set -# CONFIG_EXT3_FS_SECURITY is not set -# CONFIG_EXT4DEV_FS is not set -CONFIG_JBD=y -# CONFIG_JBD_DEBUG is not set -CONFIG_FS_MBCACHE=y -# CONFIG_REISERFS_FS is not set -# CONFIG_JFS_FS is not set -# CONFIG_FS_POSIX_ACL is not set -# CONFIG_XFS_FS is not set -# CONFIG_GFS2_FS is not set -# CONFIG_OCFS2_FS is not set -# CONFIG_MINIX_FS is not set -# CONFIG_ROMFS_FS is not set -CONFIG_INOTIFY=y -CONFIG_INOTIFY_USER=y -# CONFIG_QUOTA is not set -CONFIG_DNOTIFY=y -# CONFIG_AUTOFS_FS is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_FUSE_FS is not set - -# -# CD-ROM/DVD Filesystems -# -# CONFIG_ISO9660_FS is not set -# CONFIG_UDF_FS is not set - -# -# DOS/FAT/NT Filesystems -# -CONFIG_FAT_FS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_FAT_DEFAULT_CODEPAGE=437 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" -# CONFIG_NTFS_FS is not set - -# -# Pseudo filesystems -# -CONFIG_PROC_FS=y -CONFIG_PROC_SYSCTL=y -CONFIG_SYSFS=y -CONFIG_TMPFS=y -# CONFIG_TMPFS_POSIX_ACL is not set -# CONFIG_HUGETLB_PAGE is not set -CONFIG_RAMFS=y -# CONFIG_CONFIGFS_FS is not set - -# -# Miscellaneous filesystems -# -# CONFIG_ADFS_FS is not set -# CONFIG_AFFS_FS is not set -# CONFIG_HFS_FS is not set -# CONFIG_HFSPLUS_FS is not set -# CONFIG_BEFS_FS is not set -# CONFIG_BFS_FS is not set -# CONFIG_EFS_FS is not set -CONFIG_JFFS2_FS=y -CONFIG_JFFS2_FS_DEBUG=0 -CONFIG_JFFS2_FS_WRITEBUFFER=y -CONFIG_JFFS2_SUMMARY=y -# CONFIG_JFFS2_FS_XATTR is not set -# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set -CONFIG_JFFS2_ZLIB=y -CONFIG_JFFS2_RTIME=y -# CONFIG_JFFS2_RUBIN is not set -# CONFIG_CRAMFS is not set -# CONFIG_VXFS_FS is not set -# CONFIG_HPFS_FS is not set -# CONFIG_QNX4FS_FS is not set -# CONFIG_SYSV_FS is not set -# CONFIG_UFS_FS is not set - -# -# Network File Systems -# -CONFIG_NFS_FS=y -CONFIG_NFS_V3=y -# CONFIG_NFS_V3_ACL is not set -# CONFIG_NFS_V4 is not set -# CONFIG_NFS_DIRECTIO is not set -# CONFIG_NFSD is not set -CONFIG_ROOT_NFS=y -CONFIG_LOCKD=y -CONFIG_LOCKD_V4=y -CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=y -# CONFIG_SUNRPC_BIND34 is not set -# CONFIG_RPCSEC_GSS_KRB5 is not set -# CONFIG_RPCSEC_GSS_SPKM3 is not set -CONFIG_SMB_FS=y -# CONFIG_SMB_NLS_DEFAULT is not set -# CONFIG_CIFS is not set -# CONFIG_NCP_FS is not set -# CONFIG_CODA_FS is not set -# CONFIG_AFS_FS is not set - -# -# Partition Types -# -# CONFIG_PARTITION_ADVANCED is not set -CONFIG_MSDOS_PARTITION=y - -# -# Native Language Support -# -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="iso8859-1" -CONFIG_NLS_CODEPAGE_437=y -# CONFIG_NLS_CODEPAGE_737 is not set -# CONFIG_NLS_CODEPAGE_775 is not set -# CONFIG_NLS_CODEPAGE_850 is not set -# CONFIG_NLS_CODEPAGE_852 is not set -# CONFIG_NLS_CODEPAGE_855 is not set -# CONFIG_NLS_CODEPAGE_857 is not set -# CONFIG_NLS_CODEPAGE_860 is not set -# CONFIG_NLS_CODEPAGE_861 is not set -# CONFIG_NLS_CODEPAGE_862 is not set -# CONFIG_NLS_CODEPAGE_863 is not set -# CONFIG_NLS_CODEPAGE_864 is not set -# CONFIG_NLS_CODEPAGE_865 is not set -# CONFIG_NLS_CODEPAGE_866 is not set -# CONFIG_NLS_CODEPAGE_869 is not set -# CONFIG_NLS_CODEPAGE_936 is not set -# CONFIG_NLS_CODEPAGE_950 is not set -# CONFIG_NLS_CODEPAGE_932 is not set -# CONFIG_NLS_CODEPAGE_949 is not set -# CONFIG_NLS_CODEPAGE_874 is not set -# CONFIG_NLS_ISO8859_8 is not set -# CONFIG_NLS_CODEPAGE_1250 is not set -# CONFIG_NLS_CODEPAGE_1251 is not set -# CONFIG_NLS_ASCII is not set -CONFIG_NLS_ISO8859_1=y -# CONFIG_NLS_ISO8859_2 is not set -# CONFIG_NLS_ISO8859_3 is not set -# CONFIG_NLS_ISO8859_4 is not set -# CONFIG_NLS_ISO8859_5 is not set -# CONFIG_NLS_ISO8859_6 is not set -# CONFIG_NLS_ISO8859_7 is not set -# CONFIG_NLS_ISO8859_9 is not set -# CONFIG_NLS_ISO8859_13 is not set -# CONFIG_NLS_ISO8859_14 is not set -# CONFIG_NLS_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R is not set -# CONFIG_NLS_KOI8_U is not set -CONFIG_NLS_UTF8=y - -# -# Distributed Lock Manager -# -# CONFIG_DLM is not set - -# -# Profiling support -# -# CONFIG_PROFILING is not set - -# -# Kernel hacking -# -# CONFIG_PRINTK_TIME is not set -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_MAGIC_SYSRQ=y -# CONFIG_UNUSED_SYMBOLS is not set -CONFIG_DEBUG_FS=y -# CONFIG_HEADERS_CHECK is not set -CONFIG_DEBUG_KERNEL=y -# CONFIG_DEBUG_SHIRQ is not set -# CONFIG_DETECT_SOFTLOCKUP is not set -CONFIG_SCHED_DEBUG=y -# CONFIG_SCHEDSTATS is not set -# CONFIG_TIMER_STATS is not set -# CONFIG_SLUB_DEBUG_ON is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_RT_MUTEX_TESTER is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set -# CONFIG_DEBUG_KOBJECT is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -CONFIG_DEBUG_INFO=y -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_LIST is not set -CONFIG_FRAME_POINTER=y -CONFIG_FORCED_INLINING=y -# CONFIG_RCU_TORTURE_TEST is not set -# CONFIG_FAULT_INJECTION is not set -CONFIG_DEBUG_USER=y -CONFIG_DEBUG_ERRORS=y -CONFIG_DEBUG_LL=y -# CONFIG_DEBUG_ICEDCC is not set - -# -# Security options -# -# CONFIG_KEYS is not set -# CONFIG_SECURITY is not set -CONFIG_CRYPTO=y -CONFIG_CRYPTO_ALGAPI=m -CONFIG_CRYPTO_BLKCIPHER=m -CONFIG_CRYPTO_MANAGER=m -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_XCBC is not set -# CONFIG_CRYPTO_NULL is not set -# CONFIG_CRYPTO_MD4 is not set -# CONFIG_CRYPTO_MD5 is not set -CONFIG_CRYPTO_SHA1=m -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_GF128MUL is not set -CONFIG_CRYPTO_ECB=m -CONFIG_CRYPTO_CBC=m -CONFIG_CRYPTO_PCBC=m -# CONFIG_CRYPTO_LRW is not set -# CONFIG_CRYPTO_CRYPTD is not set -# CONFIG_CRYPTO_DES is not set -# CONFIG_CRYPTO_FCRYPT is not set -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_TWOFISH is not set -# CONFIG_CRYPTO_SERPENT is not set -CONFIG_CRYPTO_AES=m -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_TEA is not set -CONFIG_CRYPTO_ARC4=m -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_DEFLATE is not set -# CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_CRC32C is not set -# CONFIG_CRYPTO_CAMELLIA is not set -# CONFIG_CRYPTO_TEST is not set -CONFIG_CRYPTO_HW=y - -# -# Library routines -# -CONFIG_BITREVERSE=y -CONFIG_CRC_CCITT=m -# CONFIG_CRC16 is not set -# CONFIG_CRC_ITU_T is not set -CONFIG_CRC32=y -# CONFIG_CRC7 is not set -# CONFIG_LIBCRC32C is not set -CONFIG_ZLIB_INFLATE=y -CONFIG_ZLIB_DEFLATE=y -CONFIG_PLIST=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -CONFIG_HAS_DMA=y diff --git a/recipes/linux/em-x270-2.6.23/em-x270.patch b/recipes/linux/em-x270-2.6.23/em-x270.patch deleted file mode 100644 index 3c28be83c7..0000000000 --- a/recipes/linux/em-x270-2.6.23/em-x270.patch +++ /dev/null @@ -1,12063 +0,0 @@ - arch/arm/Kconfig | 13 +- - arch/arm/configs/em_x270_defconfig | 367 +++-- - arch/arm/mach-pxa/Kconfig | 8 + - arch/arm/mach-pxa/Makefile | 9 +- - arch/arm/mach-pxa/cpu-pxa.c | 442 ++++++ - arch/arm/mach-pxa/em-x270-devices.c | 331 +++++ - arch/arm/mach-pxa/em-x270-lcd.c | 223 +++ - arch/arm/mach-pxa/em-x270-pm.c | 892 ++++++++++++ - arch/arm/mach-pxa/em-x270.c | 127 ++- - arch/arm/mach-pxa/pwr-i2c.c | 539 +++++++ - arch/arm/mach-pxa/pxa27x.c | 6 +- - arch/arm/mach-pxa/spitz.c | 27 + - drivers/i2c/chips/Kconfig | 13 + - drivers/i2c/chips/Makefile | 1 + - drivers/i2c/chips/da9030.c | 1213 ++++++++++++++++ - drivers/i2c/chips/da9030.h | 282 ++++ - drivers/input/touchscreen/Kconfig | 43 + - drivers/input/touchscreen/Makefile | 14 + - drivers/input/touchscreen/wm9705.c | 360 +++++ - drivers/input/touchscreen/wm9712.c | 464 ++++++ - drivers/input/touchscreen/wm9713.c | 461 ++++++ - drivers/input/touchscreen/wm97xx-core.c | 859 +++++++++++ - drivers/leds/Kconfig | 6 + - drivers/leds/Makefile | 1 + - drivers/leds/leds-em-x270.c | 99 ++ - drivers/mtd/chips/jedec_probe.c | 58 +- - drivers/net/dm9000.c | 1 + - drivers/power/Kconfig | 6 + - drivers/power/Makefile | 1 + - drivers/power/em_x270_battery.c | 579 ++++++++ - drivers/usb/gadget/Kconfig | 20 + - drivers/usb/gadget/Makefile | 1 + - drivers/usb/gadget/epautoconf.c | 9 +- - drivers/usb/gadget/ether.c | 63 +- - drivers/usb/gadget/file_storage.c | 11 +- - drivers/usb/gadget/pxa27x_udc.c | 2387 +++++++++++++++++++++++++++++++ - drivers/usb/gadget/pxa27x_udc.h | 298 ++++ - drivers/usb/gadget/pxa2xx_udc.h | 7 +- - drivers/usb/gadget/serial.c | 18 +- - drivers/usb/gadget/zero.c | 13 +- - drivers/video/backlight/Kconfig | 2 +- - include/asm-arm/arch-pxa/pwr-i2c.h | 61 + - include/linux/da9030.h | 118 ++ - include/linux/usb_gadget.h | 23 +- - include/linux/wm97xx.h | 291 ++++ - sound/soc/pxa/Kconfig | 9 + - sound/soc/pxa/Makefile | 2 + - sound/soc/pxa/em-x270.c | 137 ++ - 48 files changed, 10742 insertions(+), 173 deletions(-) - -diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 691aae3..cf1dbc2 100644 ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -858,7 +858,7 @@ config KEXEC - - endmenu - --if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX ) -+if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA) - - menu "CPU Frequency scaling" - -@@ -894,6 +894,15 @@ config CPU_FREQ_IMX - - If in doubt, say N. - -+config CPU_FREQ_PXA -+ tristate "CPUfreq driver for PXA2xx CPUs" -+ depends on CPU_FREQ && ARCH_PXA -+ default y -+ help -+ Thes enables the CPUfreq driver for PXA2xx CPUs. -+ -+ If in doubt, say Y. -+ - endmenu - - endif -@@ -1029,6 +1038,8 @@ source "drivers/spi/Kconfig" - - source "drivers/w1/Kconfig" - -+source "drivers/power/Kconfig" -+ - source "drivers/hwmon/Kconfig" - - #source "drivers/l3/Kconfig" -diff --git a/arch/arm/configs/em_x270_defconfig b/arch/arm/configs/em_x270_defconfig -index 6bea090..3246136 100644 ---- a/arch/arm/configs/em_x270_defconfig -+++ b/arch/arm/configs/em_x270_defconfig -@@ -1,13 +1,13 @@ - # - # Automatically generated make config: don't edit --# Linux kernel version: 2.6.22 --# Mon Jul 9 15:18:20 2007 -+# Linux kernel version: 2.6.23-rc9 -+# Tue Oct 9 11:19:21 2007 - # - CONFIG_ARM=y - CONFIG_SYS_SUPPORTS_APM_EMULATION=y - CONFIG_GENERIC_GPIO=y - CONFIG_GENERIC_TIME=y --# CONFIG_GENERIC_CLOCKEVENTS is not set -+CONFIG_GENERIC_CLOCKEVENTS=y - CONFIG_MMU=y - # CONFIG_NO_IOPORT is not set - CONFIG_GENERIC_HARDIRQS=y -@@ -27,25 +27,20 @@ CONFIG_VECTORS_BASE=0xffff0000 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" - - # --# Code maturity level options -+# General setup - # - CONFIG_EXPERIMENTAL=y - CONFIG_BROKEN_ON_SMP=y - CONFIG_INIT_ENV_ARG_LIMIT=32 -- --# --# General setup --# - CONFIG_LOCALVERSION="-em-x270" - # CONFIG_LOCALVERSION_AUTO is not set - CONFIG_SWAP=y - CONFIG_SYSVIPC=y --# CONFIG_IPC_NS is not set - CONFIG_SYSVIPC_SYSCTL=y - # CONFIG_POSIX_MQUEUE is not set - # CONFIG_BSD_PROCESS_ACCT is not set - # CONFIG_TASKSTATS is not set --# CONFIG_UTS_NS is not set -+# CONFIG_USER_NS is not set - # CONFIG_AUDIT is not set - CONFIG_IKCONFIG=y - CONFIG_IKCONFIG_PROC=y -@@ -71,34 +66,27 @@ CONFIG_FUTEX=y - CONFIG_ANON_INODES=y - CONFIG_EPOLL=y - CONFIG_SIGNALFD=y --CONFIG_TIMERFD=y - CONFIG_EVENTFD=y - CONFIG_SHMEM=y - CONFIG_VM_EVENT_COUNTERS=y --CONFIG_SLAB=y --# CONFIG_SLUB is not set -+CONFIG_SLUB_DEBUG=y -+# CONFIG_SLAB is not set -+CONFIG_SLUB=y - # CONFIG_SLOB is not set - CONFIG_RT_MUTEXES=y - # CONFIG_TINY_SHMEM is not set - CONFIG_BASE_SMALL=0 -- --# --# Loadable module support --# - CONFIG_MODULES=y - CONFIG_MODULE_UNLOAD=y - CONFIG_MODULE_FORCE_UNLOAD=y - # CONFIG_MODVERSIONS is not set - # CONFIG_MODULE_SRCVERSION_ALL is not set - CONFIG_KMOD=y -- --# --# Block layer --# - CONFIG_BLOCK=y - # CONFIG_LBD is not set - # CONFIG_BLK_DEV_IO_TRACE is not set - # CONFIG_LSF is not set -+# CONFIG_BLK_DEV_BSG is not set - - # - # IO Schedulers -@@ -139,6 +127,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" - # CONFIG_ARCH_L7200 is not set - # CONFIG_ARCH_KS8695 is not set - # CONFIG_ARCH_NS9XXX is not set -+# CONFIG_ARCH_MXC is not set - # CONFIG_ARCH_PNX4008 is not set - CONFIG_ARCH_PXA=y - # CONFIG_ARCH_RPC is not set -@@ -160,6 +149,15 @@ CONFIG_ARCH_PXA=y - # CONFIG_MACH_TRIZEPS4 is not set - CONFIG_MACH_EM_X270=y - CONFIG_PXA27x=y -+CONFIG_PXA_PWR_I2C=y -+ -+# -+# Boot options -+# -+ -+# -+# Power management -+# - - # - # Processor Type -@@ -185,6 +183,7 @@ CONFIG_XSCALE_PMU=y - # - # Bus support - # -+# CONFIG_PCI_SYSCALL is not set - # CONFIG_ARCH_SUPPORTS_MSI is not set - - # -@@ -196,8 +195,9 @@ CONFIG_XSCALE_PMU=y - # Kernel Features - # - # CONFIG_TICK_ONESHOT is not set -+# CONFIG_NO_HZ is not set -+# CONFIG_HIGH_RES_TIMERS is not set - # CONFIG_PREEMPT is not set --# CONFIG_NO_IDLE_HZ is not set - CONFIG_HZ=100 - CONFIG_AEABI=y - CONFIG_OABI_COMPAT=y -@@ -212,6 +212,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y - CONFIG_SPLIT_PTLOCK_CPUS=4096 - # CONFIG_RESOURCES_64BIT is not set - CONFIG_ZONE_DMA_FLAG=1 -+CONFIG_BOUNCE=y -+CONFIG_VIRT_TO_BUS=y - CONFIG_ALIGNMENT_TRAP=y - - # -@@ -219,11 +221,28 @@ CONFIG_ALIGNMENT_TRAP=y - # - CONFIG_ZBOOT_ROM_TEXT=0x0 - CONFIG_ZBOOT_ROM_BSS=0x0 --CONFIG_CMDLINE="" -+CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200" - # CONFIG_XIP_KERNEL is not set - # CONFIG_KEXEC is not set - - # -+# CPU Frequency scaling -+# -+CONFIG_CPU_FREQ=y -+CONFIG_CPU_FREQ_TABLE=y -+# CONFIG_CPU_FREQ_DEBUG is not set -+CONFIG_CPU_FREQ_STAT=y -+# CONFIG_CPU_FREQ_STAT_DETAILS is not set -+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set -+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -+CONFIG_CPU_FREQ_GOV_POWERSAVE=m -+CONFIG_CPU_FREQ_GOV_USERSPACE=m -+CONFIG_CPU_FREQ_GOV_ONDEMAND=m -+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m -+CONFIG_CPU_FREQ_PXA=y -+ -+# - # Floating point emulation - # - -@@ -238,8 +257,8 @@ CONFIG_FPE_NWFPE=y - # Userspace binary formats - # - CONFIG_BINFMT_ELF=y --# CONFIG_BINFMT_AOUT is not set --# CONFIG_BINFMT_MISC is not set -+CONFIG_BINFMT_AOUT=m -+CONFIG_BINFMT_MISC=m - - # - # Power management options -@@ -247,8 +266,10 @@ CONFIG_BINFMT_ELF=y - CONFIG_PM=y - CONFIG_PM_LEGACY=y - # CONFIG_PM_DEBUG is not set --# CONFIG_PM_SYSFS_DEPRECATED is not set --CONFIG_APM_EMULATION=m -+CONFIG_PM_SLEEP=y -+CONFIG_SUSPEND_UP_POSSIBLE=y -+CONFIG_SUSPEND=y -+CONFIG_APM_EMULATION=y - - # - # Networking -@@ -316,6 +337,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" - # QoS and/or fair queueing - # - # CONFIG_NET_SCHED is not set -+CONFIG_NET_SCH_FIFO=y - - # - # Network testing -@@ -350,9 +372,12 @@ CONFIG_BT_HCIBFUSB=m - # - # Wireless - # --# CONFIG_CFG80211 is not set --# CONFIG_WIRELESS_EXT is not set --# CONFIG_MAC80211 is not set -+CONFIG_CFG80211=m -+CONFIG_WIRELESS_EXT=y -+CONFIG_MAC80211=m -+# CONFIG_MAC80211_LEDS is not set -+CONFIG_MAC80211_DEBUGFS=y -+# CONFIG_MAC80211_DEBUG is not set - CONFIG_IEEE80211=m - # CONFIG_IEEE80211_DEBUG is not set - CONFIG_IEEE80211_CRYPT_WEP=m -@@ -360,6 +385,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=m - # CONFIG_IEEE80211_CRYPT_TKIP is not set - # CONFIG_IEEE80211_SOFTMAC is not set - # CONFIG_RFKILL is not set -+# CONFIG_NET_9P is not set - - # - # Device Drivers -@@ -374,10 +400,6 @@ CONFIG_FW_LOADER=y - # CONFIG_DEBUG_DRIVER is not set - # CONFIG_DEBUG_DEVRES is not set - # CONFIG_SYS_HYPERVISOR is not set -- --# --# Connector - unified userspace <-> kernelspace linker --# - # CONFIG_CONNECTOR is not set - CONFIG_MTD=y - # CONFIG_MTD_DEBUG is not set -@@ -402,11 +424,10 @@ CONFIG_MTD_BLOCK=y - # - # RAM/ROM/Flash chip drivers - # --# CONFIG_MTD_CFI is not set --# CONFIG_MTD_JEDECPROBE is not set --# CONFIG_MTD_CFI_NOSWAP is not set --# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set --# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set -+CONFIG_MTD_CFI=y -+CONFIG_MTD_JEDECPROBE=y -+CONFIG_MTD_GEN_PROBE=y -+# CONFIG_MTD_CFI_ADV_OPTIONS is not set - CONFIG_MTD_MAP_BANK_WIDTH_1=y - CONFIG_MTD_MAP_BANK_WIDTH_2=y - CONFIG_MTD_MAP_BANK_WIDTH_4=y -@@ -417,14 +438,25 @@ CONFIG_MTD_CFI_I1=y - CONFIG_MTD_CFI_I2=y - # CONFIG_MTD_CFI_I4 is not set - # CONFIG_MTD_CFI_I8 is not set -+CONFIG_MTD_CFI_INTELEXT=y -+CONFIG_MTD_CFI_AMDSTD=y -+CONFIG_MTD_CFI_STAA=y -+CONFIG_MTD_CFI_UTIL=y - # CONFIG_MTD_RAM is not set - # CONFIG_MTD_ROM is not set - # CONFIG_MTD_ABSENT is not set -+# CONFIG_MTD_XIP is not set - - # - # Mapping drivers for chip access - # - # CONFIG_MTD_COMPLEX_MAPPINGS is not set -+CONFIG_MTD_PHYSMAP=y -+CONFIG_MTD_PHYSMAP_START=0x0 -+CONFIG_MTD_PHYSMAP_LEN=0x100000 -+CONFIG_MTD_PHYSMAP_BANKWIDTH=2 -+# CONFIG_MTD_ARM_INTEGRATOR is not set -+# CONFIG_MTD_IMPA7 is not set - # CONFIG_MTD_SHARP_SL is not set - # CONFIG_MTD_PLATRAM is not set - -@@ -457,21 +489,17 @@ CONFIG_MTD_NAND_PLATFORM=y - # - # UBI - Unsorted block images - # --# CONFIG_MTD_UBI is not set -+CONFIG_MTD_UBI=m -+CONFIG_MTD_UBI_WL_THRESHOLD=4096 -+CONFIG_MTD_UBI_BEB_RESERVE=1 -+CONFIG_MTD_UBI_GLUEBI=y - - # --# Parallel port support -+# UBI debugging options - # -+# CONFIG_MTD_UBI_DEBUG is not set - # CONFIG_PARPORT is not set -- --# --# Plug and Play support --# --# CONFIG_PNPACPI is not set -- --# --# Block devices --# -+CONFIG_BLK_DEV=y - # CONFIG_BLK_DEV_COW_COMMON is not set - CONFIG_BLK_DEV_LOOP=y - # CONFIG_BLK_DEV_CRYPTOLOOP is not set -@@ -490,6 +518,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 - # - # CONFIG_RAID_ATTRS is not set - CONFIG_SCSI=y -+CONFIG_SCSI_DMA=y - # CONFIG_SCSI_TGT is not set - # CONFIG_SCSI_NETLINK is not set - # CONFIG_SCSI_PROC_FS is not set -@@ -519,36 +548,23 @@ CONFIG_SCSI_WAIT_SCAN=m - # CONFIG_SCSI_SPI_ATTRS is not set - # CONFIG_SCSI_FC_ATTRS is not set - # CONFIG_SCSI_ISCSI_ATTRS is not set --# CONFIG_SCSI_SAS_ATTRS is not set - # CONFIG_SCSI_SAS_LIBSAS is not set -- --# --# SCSI low-level drivers --# -+CONFIG_SCSI_LOWLEVEL=y - # CONFIG_ISCSI_TCP is not set - # CONFIG_SCSI_DEBUG is not set - # CONFIG_ATA is not set -- --# --# Multi-device support (RAID and LVM) --# - # CONFIG_MD is not set -- --# --# Network device support --# - CONFIG_NETDEVICES=y -+# CONFIG_NETDEVICES_MULTIQUEUE is not set - # CONFIG_DUMMY is not set - # CONFIG_BONDING is not set -+# CONFIG_MACVLAN is not set - # CONFIG_EQUALIZER is not set - # CONFIG_TUN is not set - # CONFIG_PHYLIB is not set -- --# --# Ethernet (10 or 100Mbit) --# - CONFIG_NET_ETHERNET=y - CONFIG_MII=y -+# CONFIG_AX88796 is not set - # CONFIG_SMC91X is not set - CONFIG_DM9000=y - # CONFIG_SMC911X is not set -@@ -571,16 +587,22 @@ CONFIG_DM9000=y - # CONFIG_USB_USBNET_MII is not set - # CONFIG_USB_USBNET is not set - # CONFIG_WAN is not set --# CONFIG_PPP is not set -+CONFIG_PPP=m -+# CONFIG_PPP_MULTILINK is not set -+# CONFIG_PPP_FILTER is not set -+CONFIG_PPP_ASYNC=m -+CONFIG_PPP_SYNC_TTY=m -+CONFIG_PPP_DEFLATE=m -+CONFIG_PPP_BSDCOMP=m -+CONFIG_PPP_MPPE=m -+# CONFIG_PPPOE is not set -+CONFIG_PPPOL2TP=m - # CONFIG_SLIP is not set -+CONFIG_SLHC=m - # CONFIG_SHAPER is not set - # CONFIG_NETCONSOLE is not set - # CONFIG_NETPOLL is not set - # CONFIG_NET_POLL_CONTROLLER is not set -- --# --# ISDN subsystem --# - # CONFIG_ISDN is not set - - # -@@ -612,16 +634,21 @@ CONFIG_INPUT_KEYBOARD=y - # CONFIG_KEYBOARD_XTKBD is not set - # CONFIG_KEYBOARD_NEWTON is not set - # CONFIG_KEYBOARD_STOWAWAY is not set --CONFIG_KEYBOARD_PXA27x=m -+CONFIG_KEYBOARD_PXA27x=y - # CONFIG_KEYBOARD_GPIO is not set - # CONFIG_INPUT_MOUSE is not set - # CONFIG_INPUT_JOYSTICK is not set - # CONFIG_INPUT_TABLET is not set - CONFIG_INPUT_TOUCHSCREEN=y -+# CONFIG_TOUCHSCREEN_FUJITSU is not set - # CONFIG_TOUCHSCREEN_GUNZE is not set - # CONFIG_TOUCHSCREEN_ELO is not set - # CONFIG_TOUCHSCREEN_MTOUCH is not set - # CONFIG_TOUCHSCREEN_MK712 is not set -+CONFIG_TOUCHSCREEN_WM97XX=y -+# CONFIG_TOUCHSCREEN_WM9705 is not set -+CONFIG_TOUCHSCREEN_WM9712=y -+# CONFIG_TOUCHSCREEN_WM9713 is not set - # CONFIG_TOUCHSCREEN_PENMOUNT is not set - # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set - # CONFIG_TOUCHSCREEN_TOUCHWIN is not set -@@ -660,58 +687,91 @@ CONFIG_SERIAL_PXA_CONSOLE=y - CONFIG_SERIAL_CORE=y - CONFIG_SERIAL_CORE_CONSOLE=y - CONFIG_UNIX98_PTYS=y --CONFIG_LEGACY_PTYS=y --CONFIG_LEGACY_PTY_COUNT=256 -- --# --# IPMI --# -+# CONFIG_LEGACY_PTYS is not set - # CONFIG_IPMI_HANDLER is not set - # CONFIG_WATCHDOG is not set - CONFIG_HW_RANDOM=m - # CONFIG_NVRAM is not set - # CONFIG_R3964 is not set - # CONFIG_RAW_DRIVER is not set -+# CONFIG_TCG_TPM is not set -+CONFIG_I2C=y -+CONFIG_I2C_BOARDINFO=y -+# CONFIG_I2C_CHARDEV is not set - - # --# TPM devices -+# I2C Algorithms - # --# CONFIG_TCG_TPM is not set --# CONFIG_I2C is not set -+# CONFIG_I2C_ALGOBIT is not set -+# CONFIG_I2C_ALGOPCF is not set -+# CONFIG_I2C_ALGOPCA is not set - - # --# SPI support -+# I2C Hardware Bus support - # --# CONFIG_SPI is not set --# CONFIG_SPI_MASTER is not set -+# CONFIG_I2C_GPIO is not set -+CONFIG_I2C_PXA=y -+# CONFIG_I2C_PXA_SLAVE is not set -+# CONFIG_I2C_OCORES is not set -+# CONFIG_I2C_PARPORT_LIGHT is not set -+# CONFIG_I2C_SIMTEC is not set -+# CONFIG_I2C_TAOS_EVM is not set -+# CONFIG_I2C_STUB is not set -+# CONFIG_I2C_TINY_USB is not set - - # --# Dallas's 1-wire bus -+# Miscellaneous I2C Chip support - # --# CONFIG_W1 is not set --# CONFIG_HWMON is not set -+# CONFIG_SENSORS_DS1337 is not set -+# CONFIG_SENSORS_DS1374 is not set -+# CONFIG_DS1682 is not set -+# CONFIG_SENSORS_EEPROM is not set -+# CONFIG_SENSORS_PCF8574 is not set -+# CONFIG_SENSORS_PCA9539 is not set -+# CONFIG_SENSORS_PCF8591 is not set -+# CONFIG_SENSORS_MAX6875 is not set -+# CONFIG_SENSORS_TSL2550 is not set -+CONFIG_DA9030=y -+# CONFIG_I2C_DEBUG_CORE is not set -+# CONFIG_I2C_DEBUG_ALGO is not set -+# CONFIG_I2C_DEBUG_BUS is not set -+# CONFIG_I2C_DEBUG_CHIP is not set - - # --# Misc devices -+# SPI support - # -+# CONFIG_SPI is not set -+# CONFIG_SPI_MASTER is not set -+# CONFIG_W1 is not set -+CONFIG_POWER_SUPPLY=y -+# CONFIG_POWER_SUPPLY_DEBUG is not set -+# CONFIG_PDA_POWER is not set -+CONFIG_APM_POWER=y -+# CONFIG_BATTERY_DS2760 is not set -+# CONFIG_BATTERY_EM_X270 is not set -+# CONFIG_HWMON is not set -+CONFIG_MISC_DEVICES=y -+# CONFIG_EEPROM_93CX6 is not set - - # - # Multifunction device drivers - # - # CONFIG_MFD_SM501 is not set -- --# --# LED devices --# --# CONFIG_NEW_LEDS is not set -+CONFIG_NEW_LEDS=y -+CONFIG_LEDS_CLASS=m - - # - # LED drivers - # -+CONFIG_LEDS_GPIO=m -+CONFIG_LEDS_EM_X270=m - - # - # LED Triggers - # -+CONFIG_LEDS_TRIGGERS=y -+CONFIG_LEDS_TRIGGER_TIMER=m -+CONFIG_LEDS_TRIGGER_HEARTBEAT=m - - # - # Multimedia devices -@@ -723,13 +783,17 @@ CONFIG_HW_RANDOM=m - # - # Graphics support - # --# CONFIG_BACKLIGHT_LCD_SUPPORT is not set -+CONFIG_BACKLIGHT_LCD_SUPPORT=y -+CONFIG_LCD_CLASS_DEVICE=y -+CONFIG_BACKLIGHT_CLASS_DEVICE=y -+CONFIG_BACKLIGHT_CORGI=y - - # - # Display device support - # - # CONFIG_DISPLAY_SUPPORT is not set - # CONFIG_VGASTATE is not set -+CONFIG_VIDEO_OUTPUT_CONTROL=m - CONFIG_FB=y - # CONFIG_FIRMWARE_EDID is not set - # CONFIG_FB_DDC is not set -@@ -752,7 +816,7 @@ CONFIG_FB_DEFERRED_IO=y - # - # CONFIG_FB_S1D13XXX is not set - CONFIG_FB_PXA=y --# CONFIG_FB_PXA_PARAMETERS is not set -+CONFIG_FB_PXA_PARAMETERS=y - # CONFIG_FB_MBX is not set - # CONFIG_FB_VIRTUAL is not set - -@@ -762,6 +826,7 @@ CONFIG_FB_PXA=y - # CONFIG_VGA_CONSOLE is not set - CONFIG_DUMMY_CONSOLE=y - CONFIG_FRAMEBUFFER_CONSOLE=y -+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set - # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set - # CONFIG_FONTS is not set - CONFIG_FONT_8x8=y -@@ -774,18 +839,18 @@ CONFIG_LOGO_LINUX_CLUT224=y - # - # Sound - # --CONFIG_SOUND=m -+CONFIG_SOUND=y - - # - # Advanced Linux Sound Architecture - # --CONFIG_SND=m --CONFIG_SND_TIMER=m --CONFIG_SND_PCM=m -+CONFIG_SND=y -+CONFIG_SND_TIMER=y -+CONFIG_SND_PCM=y - # CONFIG_SND_SEQUENCER is not set - CONFIG_SND_OSSEMUL=y --CONFIG_SND_MIXER_OSS=m --CONFIG_SND_PCM_OSS=m -+CONFIG_SND_MIXER_OSS=y -+CONFIG_SND_PCM_OSS=y - CONFIG_SND_PCM_OSS_PLUGINS=y - # CONFIG_SND_DYNAMIC_MINORS is not set - CONFIG_SND_SUPPORT_OLD_API=y -@@ -817,17 +882,23 @@ CONFIG_SND_PXA2XX_AC97=m - # - # System on Chip audio support - # --# CONFIG_SND_SOC is not set -+CONFIG_SND_SOC_AC97_BUS=y -+CONFIG_SND_SOC=y -+CONFIG_SND_PXA2XX_SOC=y -+CONFIG_SND_PXA2XX_SOC_AC97=y -+CONFIG_SND_PXA2XX_SOC_EM_X270=y - - # --# Open Sound System -+# SoC Audio support for SuperH - # --# CONFIG_SOUND_PRIME is not set --CONFIG_AC97_BUS=m -+CONFIG_SND_SOC_WM9712=y - - # --# HID Devices -+# Open Sound System - # -+# CONFIG_SOUND_PRIME is not set -+CONFIG_AC97_BUS=y -+CONFIG_HID_SUPPORT=y - CONFIG_HID=y - # CONFIG_HID_DEBUG is not set - -@@ -838,10 +909,7 @@ CONFIG_USB_HID=y - # CONFIG_USB_HIDINPUT_POWERBOOK is not set - # CONFIG_HID_FF is not set - # CONFIG_USB_HIDDEV is not set -- --# --# USB support --# -+CONFIG_USB_SUPPORT=y - CONFIG_USB_ARCH_HAS_HCD=y - CONFIG_USB_ARCH_HAS_OHCI=y - # CONFIG_USB_ARCH_HAS_EHCI is not set -@@ -855,6 +923,7 @@ CONFIG_USB_DEVICEFS=y - # CONFIG_USB_DEVICE_CLASS is not set - # CONFIG_USB_DYNAMIC_MINORS is not set - # CONFIG_USB_SUSPEND is not set -+# CONFIG_USB_PERSIST is not set - # CONFIG_USB_OTG is not set - - # -@@ -866,12 +935,13 @@ CONFIG_USB_OHCI_HCD=y - # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set - CONFIG_USB_OHCI_LITTLE_ENDIAN=y - # CONFIG_USB_SL811_HCD is not set -+# CONFIG_USB_R8A66597_HCD is not set - - # - # USB Device Class drivers - # --# CONFIG_USB_ACM is not set --# CONFIG_USB_PRINTER is not set -+CONFIG_USB_ACM=m -+CONFIG_USB_PRINTER=m - - # - # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' -@@ -896,8 +966,8 @@ CONFIG_USB_STORAGE=y - # - # USB Imaging devices - # --# CONFIG_USB_MDC800 is not set --# CONFIG_USB_MICROTEK is not set -+CONFIG_USB_MDC800=m -+CONFIG_USB_MICROTEK=m - # CONFIG_USB_MON is not set - - # -@@ -940,25 +1010,25 @@ CONFIG_USB_STORAGE=y - # USB Gadget Support - # - # CONFIG_USB_GADGET is not set --CONFIG_MMC=m -+CONFIG_MMC=y - # CONFIG_MMC_DEBUG is not set --# CONFIG_MMC_UNSAFE_RESUME is not set -+CONFIG_MMC_UNSAFE_RESUME=y - - # - # MMC/SD Card Drivers - # --CONFIG_MMC_BLOCK=m -+CONFIG_MMC_BLOCK=y -+CONFIG_MMC_BLOCK_BOUNCE=y - - # - # MMC/SD Host Controller Drivers - # --CONFIG_MMC_PXA=m -- --# --# Real Time Clock --# -+CONFIG_MMC_PXA=y - CONFIG_RTC_LIB=y --CONFIG_RTC_CLASS=m -+CONFIG_RTC_CLASS=y -+CONFIG_RTC_HCTOSYS=y -+CONFIG_RTC_HCTOSYS_DEVICE="rtc1" -+# CONFIG_RTC_DEBUG is not set - - # - # RTC interfaces -@@ -972,6 +1042,15 @@ CONFIG_RTC_INTF_DEV=y - # - # I2C RTC drivers - # -+# CONFIG_RTC_DRV_DS1307 is not set -+# CONFIG_RTC_DRV_DS1672 is not set -+# CONFIG_RTC_DRV_MAX6900 is not set -+# CONFIG_RTC_DRV_RS5C372 is not set -+# CONFIG_RTC_DRV_ISL1208 is not set -+# CONFIG_RTC_DRV_X1205 is not set -+# CONFIG_RTC_DRV_PCF8563 is not set -+# CONFIG_RTC_DRV_PCF8583 is not set -+# CONFIG_RTC_DRV_M41T80 is not set - - # - # SPI RTC drivers -@@ -982,14 +1061,29 @@ CONFIG_RTC_INTF_DEV=y - # - # CONFIG_RTC_DRV_CMOS is not set - # CONFIG_RTC_DRV_DS1553 is not set -+# CONFIG_RTC_DRV_STK17TA8 is not set - # CONFIG_RTC_DRV_DS1742 is not set - # CONFIG_RTC_DRV_M48T86 is not set --CONFIG_RTC_DRV_V3020=m -+# CONFIG_RTC_DRV_M48T59 is not set -+CONFIG_RTC_DRV_V3020=y - - # - # on-CPU RTC drivers - # --CONFIG_RTC_DRV_SA1100=m -+CONFIG_RTC_DRV_SA1100=y -+ -+# -+# DMA Engine support -+# -+# CONFIG_DMA_ENGINE is not set -+ -+# -+# DMA Clients -+# -+ -+# -+# DMA Devices -+# - - # - # File systems -@@ -1098,7 +1192,6 @@ CONFIG_SMB_FS=y - # CONFIG_NCP_FS is not set - # CONFIG_CODA_FS is not set - # CONFIG_AFS_FS is not set --# CONFIG_9P_FS is not set - - # - # Partition Types -@@ -1167,20 +1260,22 @@ CONFIG_NLS_UTF8=y - CONFIG_ENABLE_MUST_CHECK=y - CONFIG_MAGIC_SYSRQ=y - # CONFIG_UNUSED_SYMBOLS is not set --# CONFIG_DEBUG_FS is not set -+CONFIG_DEBUG_FS=y - # CONFIG_HEADERS_CHECK is not set - CONFIG_DEBUG_KERNEL=y - # CONFIG_DEBUG_SHIRQ is not set - # CONFIG_DETECT_SOFTLOCKUP is not set -+CONFIG_SCHED_DEBUG=y - # CONFIG_SCHEDSTATS is not set - # CONFIG_TIMER_STATS is not set --# CONFIG_DEBUG_SLAB is not set -+# CONFIG_SLUB_DEBUG_ON is not set - # CONFIG_DEBUG_RT_MUTEXES is not set - # CONFIG_RT_MUTEX_TESTER is not set - # CONFIG_DEBUG_SPINLOCK is not set - # CONFIG_DEBUG_MUTEXES is not set - # CONFIG_DEBUG_LOCK_ALLOC is not set - # CONFIG_PROVE_LOCKING is not set -+# CONFIG_LOCK_STAT is not set - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set - # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set - # CONFIG_DEBUG_KOBJECT is not set -@@ -1202,10 +1297,6 @@ CONFIG_DEBUG_LL=y - # - # CONFIG_KEYS is not set - # CONFIG_SECURITY is not set -- --# --# Cryptographic options --# - CONFIG_CRYPTO=y - CONFIG_CRYPTO_ALGAPI=m - CONFIG_CRYPTO_BLKCIPHER=m -@@ -1215,7 +1306,7 @@ CONFIG_CRYPTO_MANAGER=m - # CONFIG_CRYPTO_NULL is not set - # CONFIG_CRYPTO_MD4 is not set - # CONFIG_CRYPTO_MD5 is not set --# CONFIG_CRYPTO_SHA1 is not set -+CONFIG_CRYPTO_SHA1=m - # CONFIG_CRYPTO_SHA256 is not set - # CONFIG_CRYPTO_SHA512 is not set - # CONFIG_CRYPTO_WP512 is not set -@@ -1243,19 +1334,17 @@ CONFIG_CRYPTO_ARC4=m - # CONFIG_CRYPTO_CRC32C is not set - # CONFIG_CRYPTO_CAMELLIA is not set - # CONFIG_CRYPTO_TEST is not set -- --# --# Hardware crypto devices --# -+CONFIG_CRYPTO_HW=y - - # - # Library routines - # - CONFIG_BITREVERSE=y --# CONFIG_CRC_CCITT is not set -+CONFIG_CRC_CCITT=m - # CONFIG_CRC16 is not set - # CONFIG_CRC_ITU_T is not set - CONFIG_CRC32=y -+# CONFIG_CRC7 is not set - # CONFIG_LIBCRC32C is not set - CONFIG_ZLIB_INFLATE=y - CONFIG_ZLIB_DEFLATE=y -diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig -index 5ebec6d..2957cb9 100644 ---- a/arch/arm/mach-pxa/Kconfig -+++ b/arch/arm/mach-pxa/Kconfig -@@ -148,4 +148,12 @@ config PXA_SSP - tristate - help - Enable support for PXA2xx SSP ports -+ -+config PXA_PWR_I2C -+ bool "Simple Power I2C interface" -+ depends on PXA27x -+ help -+ Enable support for PXA27x Power I2C interface. This driver -+ enables very simple blocking access to Power I2C, which -+ might be useful for early access to Power Management ICs. - endif -diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile -index 7d6ab5c..2d7a431 100644 ---- a/arch/arm/mach-pxa/Makefile -+++ b/arch/arm/mach-pxa/Makefile -@@ -18,7 +18,7 @@ obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o sp - obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o - obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o - obj-$(CONFIG_MACH_TOSA) += tosa.o --obj-$(CONFIG_MACH_EM_X270) += em-x270.o -+obj-$(CONFIG_MACH_EM_X270) += em-x270.o em-x270-pm.o em-x270-lcd.o em-x270-devices.o - - # Support for blinky lights - led-y := leds.o -@@ -29,9 +29,16 @@ led-$(CONFIG_MACH_TRIZEPS4) += leds-trizeps4.o - - obj-$(CONFIG_LEDS) += $(led-y) - -+# CPU Frequency scaling -+obj-$(CONFIG_CPU_FREQ_PXA) += cpu-pxa.o -+ - # Misc features - obj-$(CONFIG_PM) += pm.o sleep.o - obj-$(CONFIG_PXA_SSP) += ssp.o -+obj-$(CONFIG_PXA_PWR_I2C) += pwr-i2c.o -+ -+#obj-m += da9030_asm.o -+#da9030_asm-y += da9030.o da9030_c.o - - ifeq ($(CONFIG_PXA27x),y) - obj-$(CONFIG_PM) += standby.o -diff --git a/arch/arm/mach-pxa/cpu-pxa.c b/arch/arm/mach-pxa/cpu-pxa.c -new file mode 100644 -index 0000000..7fa9703 ---- /dev/null -+++ b/arch/arm/mach-pxa/cpu-pxa.c -@@ -0,0 +1,442 @@ -+/* -+ * linux/arch/arm/mach-pxa/cpu-pxa.c -+ * -+ * Copyright (C) 2002,2003 Intrinsyc Software -+ * -+ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * -+ * History: -+ * 31-Jul-2002 : Initial version [FB] -+ * 29-Jan-2003 : added PXA255 support [FB] -+ * 20-Apr-2003 : ported to v2.5 (Dustin McIntire, Sensoria Corp.) -+ * 11-Jan-2006 : v2.6, support for PXA27x processor up to 624MHz (Bill Reese, Hewlett Packard) -+ * -+ * Note: -+ * This driver may change the memory bus clock rate, but will not do any -+ * platform specific access timing changes... for example if you have flash -+ * memory connected to CS0, you will need to register a platform specific -+ * notifier which will adjust the memory access strobes to maintain a -+ * minimum strobe width. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include -+ -+/* -+ * This comes from generic.h in this directory. -+ */ -+extern unsigned int get_clk_frequency_khz(int info); -+ -+#define DEBUG 0 -+ -+#ifdef DEBUG -+ static unsigned int freq_debug = DEBUG; -+ module_param(freq_debug, int, 0644); -+ MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0"); -+#else -+ #define freq_debug 0 -+#endif -+ -+typedef struct -+{ -+ unsigned int khz; /* CPU frequency */ -+ unsigned int membus; /* memory bus frequency */ -+ unsigned int cccr; /* new CCLKCFG setting */ -+ unsigned int div2; /* alter memory controller settings to divide by 2 */ -+ unsigned int cclkcfg; /* new CCLKCFG setting */ -+} pxa_freqs_t; -+ -+/* Define the refresh period in mSec for the SDRAM and the number of rows */ -+#define SDRAM_TREF 64 /* standard 64ms SDRAM */ -+#if defined(CONFIG_MACH_H4700) || defined(CONFIG_ARCH_H2200) || defined(CONFIG_MACH_MAGICIAN) -+#define SDRAM_ROWS 8192 /* hx4700 uses 2 64Mb DRAMs, 8912 rows */ -+#else -+#define SDRAM_ROWS 4096 /* 64MB=8192 32MB=4096 */ -+#endif -+#define MDREFR_DRI(x) (((x*SDRAM_TREF/SDRAM_ROWS - 31)/32)) -+ -+#define CCLKCFG_TURBO 0x1 -+#define CCLKCFG_FCS 0x2 -+#define CCLKCFG_HALFTURBO 0x4 -+#define CCLKCFG_FASTBUS 0x8 -+#ifdef CONFIG_ARCH_H5400 -+/* H5400's SAMCOP chip does not like when K2DB2 touched */ -+#define MDREFR_DB2_MASK (MDREFR_K1DB2) -+#else -+#define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2) -+#endif -+#define MDREFR_DRI_MASK 0xFFF -+#define PXA25x_CCLKCFG CCLKCFG_TURBO | CCLKCFG_FCS -+ -+/* -+ * For the PXA27x: -+ * Control variables are A, L, 2N for CCCR; B, HT, T for CLKCFG. -+ * -+ * A = 0 => memory controller clock from table 3-7, -+ * A = 1 => memory controller clock = system bus clock -+ * Run mode frequency = 13 MHz * L -+ * Turbo mode frequency = 13 MHz * L * N -+ * System bus frequency = 13 MHz * L / (B + 1) -+ * System initialized by bootldr to: -+ * -+ * In CCCR: -+ * A = 1 -+ * L = 16 oscillator to run mode ratio -+ * 2N = 6 2 * (turbo mode to run mode ratio) -+ * -+ * In CCLKCFG: -+ * B = 1 Fast bus mode -+ * HT = 0 Half-Turbo mode -+ * T = 1 Turbo mode -+ * -+ * For now, just support some of the combinations in table 3-7 of -+ * PXA27x Processor Family Developer's Manual to simplify frequency -+ * change sequences. -+ * -+ * Specify 2N in the PXA27x_CCCR macro, not N! -+ */ -+#define PXA27x_CCCR(A, L, N2) (A << 25 | N2 << 7 | L) -+#define PXA27x_CCLKCFG(B, HT, T) (B << 3 | HT << 2 | CCLKCFG_FCS | T) -+ -+#define PXA25x_CCCR(L, M, N) (L << 0 | M << 5 | N << 7) -+ -+/* -+ * Valid frequency assignments -+ */ -+static pxa_freqs_t pxa2xx_freqs[] = -+{ -+ /* CPU MEMBUS CCCR DIV2 */ -+#if defined(CONFIG_PXA25x) -+#if defined(CONFIG_PXA25x_ALTERNATE_FREQS) -+ { 99500, 99500, PXA25x_CCCR(1, 1, 2), 1, PXA25x_CCLKCFG}, /* run=99, turbo= 99, PXbus=50, SDRAM=50 */ -+ {199100, 99500, PXA25x_CCCR(1, 1, 4), 0, PXA25x_CCLKCFG}, /* run=99, turbo=199, PXbus=50, SDRAM=99 */ -+ {298500, 99500, PXA25x_CCCR(1, 1, 6), 0, PXA25x_CCLKCFG}, /* run=99, turbo=287, PXbus=50, SDRAM=99 */ -+ {298600, 99500, PXA25x_CCCR(1, 2, 3), 0, PXA25x_CCLKCFG}, /* run=199, turbo=287, PXbus=99, SDRAM=99 */ -+ {398100, 99500, PXA25x_CCCR(1, 2, 4), 0, PXA25x_CCLKCFG} /* run=199, turbo=398, PXbus=99, SDRAM=99 */ -+#else -+ { 99500, 99500, PXA25x_CCCR(1, 1, 2), 1, PXA25x_CCLKCFG}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */ -+ {132700, 132700, PXA25x_CCCR(3, 1, 2), 1, PXA25x_CCLKCFG}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */ -+ {199100, 99500, PXA25x_CCCR(1, 2, 2), 0, PXA25x_CCLKCFG}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */ -+ {265400, 132700, PXA25x_CCCR(3, 2, 2), 1, PXA25x_CCLKCFG}, /* run=265, turbo=265, PXbus=133, SDRAM=66 */ -+ {331800, 165900, PXA25x_CCCR(5, 2, 2), 1, PXA25x_CCLKCFG}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */ -+ {398100, 99500, PXA25x_CCCR(1, 3, 2), 0, PXA25x_CCLKCFG} /* run=398, turbo=398, PXbus=196, SDRAM=99 */ -+#endif -+#elif defined(CONFIG_PXA27x) -+ {104000, 104000, PXA27x_CCCR(1, 8, 2), 0, PXA27x_CCLKCFG(1, 0, 1)}, -+ {156000, 104000, PXA27x_CCCR(1, 8, 6), 0, PXA27x_CCLKCFG(1, 1, 1)}, -+ {208000, 208000, PXA27x_CCCR(0, 16, 2), 1, PXA27x_CCLKCFG(0, 0, 1)}, -+ {312000, 208000, PXA27x_CCCR(1, 16, 3), 1, PXA27x_CCLKCFG(1, 0, 1)}, -+ {416000, 208000, PXA27x_CCCR(1, 16, 4), 1, PXA27x_CCLKCFG(1, 0, 1)}, -+ {520000, 208000, PXA27x_CCCR(1, 16, 5), 1, PXA27x_CCLKCFG(1, 0, 1)}, -+/* {624000, 208000, PXA27x_CCCR(1, 16, 6), 1, PXA27x_CCLKCFG(1, 0, 1)} */ -+#endif -+}; -+#define NUM_FREQS (sizeof(pxa2xx_freqs)/sizeof(pxa_freqs_t)) -+ -+static struct cpufreq_frequency_table pxa2xx_freq_table[NUM_FREQS+1]; -+ -+/* Return the memory clock rate for a given cpu frequency. */ -+int pxa_cpufreq_memclk(int cpu_khz) -+{ -+ int i; -+ int freq_mem = 0; -+ -+ for (i = 0; i < NUM_FREQS; i++) { -+ if (pxa2xx_freqs[i].khz == cpu_khz) { -+ freq_mem = pxa2xx_freqs[i].membus; -+ break; -+ } -+ } -+ -+ return freq_mem; -+} -+EXPORT_SYMBOL(pxa_cpufreq_memclk); -+ -+ -+/* find a valid frequency point */ -+static int pxa_verify_policy(struct cpufreq_policy *policy) -+{ -+ int ret; -+ -+ ret=cpufreq_frequency_table_verify(policy, pxa2xx_freq_table); -+ -+ if(freq_debug) { -+ printk("Verified CPU policy: %dKhz min to %dKhz max\n", -+ policy->min, policy->max); -+ } -+ -+ return ret; -+} -+ -+static int pxa_set_target(struct cpufreq_policy *policy, -+ unsigned int target_freq, -+ unsigned int relation) -+{ -+ int idx; -+ cpumask_t cpus_allowed, allowedcpuset; -+ int cpu = policy->cpu; -+ struct cpufreq_freqs freqs; -+ unsigned long flags; -+ unsigned int unused; -+ unsigned int preset_mdrefr, postset_mdrefr, cclkcfg; -+ -+ if(freq_debug) { -+ printk ("CPU PXA: target freq %d\n", target_freq); -+ printk ("CPU PXA: relation %d\n", relation); -+ } -+ -+ /* -+ * Save this threads cpus_allowed mask. -+ */ -+ cpus_allowed = current->cpus_allowed; -+ -+ /* -+ * Bind to the specified CPU. When this call returns, -+ * we should be running on the right CPU. -+ */ -+ cpus_clear (allowedcpuset); -+ cpu_set (cpu, allowedcpuset); -+ set_cpus_allowed(current, allowedcpuset); -+ BUG_ON(cpu != smp_processor_id()); -+ -+ /* Lookup the next frequency */ -+ if (cpufreq_frequency_table_target(policy, pxa2xx_freq_table, -+ target_freq, relation, &idx)) { -+ return -EINVAL; -+ } -+ -+ freqs.old = policy->cur; -+ freqs.new = pxa2xx_freqs[idx].khz; -+ freqs.cpu = policy->cpu; -+ if(freq_debug) { -+ printk(KERN_INFO "Changing CPU frequency to %d Mhz, (SDRAM %d Mhz)\n", -+ freqs.new/1000, (pxa2xx_freqs[idx].div2) ? -+ (pxa2xx_freqs[idx].membus/2000) : -+ (pxa2xx_freqs[idx].membus/1000)); -+ } -+ -+ /* -+ * Tell everyone what we're about to do... -+ * you should add a notify client with any platform specific -+ * Vcc changing capability -+ */ -+ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); -+ -+ /* Calculate the next MDREFR. If we're slowing down the SDRAM clock -+ * we need to preset the smaller DRI before the change. If we're speeding -+ * up we need to set the larger DRI value after the change. -+ */ -+ preset_mdrefr = postset_mdrefr = MDREFR; -+ if((MDREFR & MDREFR_DRI_MASK) > MDREFR_DRI(pxa2xx_freqs[idx].membus)) { -+ preset_mdrefr = (preset_mdrefr & ~MDREFR_DRI_MASK) | -+ MDREFR_DRI(pxa2xx_freqs[idx].membus); -+ } -+ postset_mdrefr = (postset_mdrefr & ~MDREFR_DRI_MASK) | -+ MDREFR_DRI(pxa2xx_freqs[idx].membus); -+ -+ /* If we're dividing the memory clock by two for the SDRAM clock, this -+ * must be set prior to the change. Clearing the divide must be done -+ * after the change. -+ */ -+ if(pxa2xx_freqs[idx].div2) { -+ /* -+ * Potentially speeding up memory clock, so slow down the memory -+ * before speeding up the clock. -+ */ -+ preset_mdrefr |= MDREFR_DB2_MASK | MDREFR_K0DB4; -+ preset_mdrefr &= ~MDREFR_K0DB2; -+ -+ postset_mdrefr |= MDREFR_DB2_MASK | MDREFR_K0DB4; -+ postset_mdrefr &= ~MDREFR_K0DB2; -+ } else { -+ /* -+ * Potentially slowing down memory clock. Wait until after the change -+ * to speed up the memory. -+ */ -+ postset_mdrefr &= ~MDREFR_DB2_MASK; -+ postset_mdrefr &= ~MDREFR_K0DB4; -+ postset_mdrefr |= MDREFR_K0DB2; -+ } -+ -+ cclkcfg = pxa2xx_freqs[idx].cclkcfg; -+ -+ if (freq_debug) { -+ printk (KERN_INFO "CPU PXA writing 0x%08x to CCCR\n", -+ pxa2xx_freqs[idx].cccr); -+ printk (KERN_INFO "CPU PXA writing 0x%08x to CCLKCFG\n", -+ pxa2xx_freqs[idx].cclkcfg); -+ printk (KERN_INFO "CPU PXA writing 0x%08x to MDREFR before change\n", -+ preset_mdrefr); -+ printk (KERN_INFO "CPU PXA writing 0x%08x to MDREFR after change\n", -+ postset_mdrefr); -+ } -+ -+ local_irq_save(flags); -+ -+ /* Set new the CCCR */ -+ CCCR = pxa2xx_freqs[idx].cccr; -+ -+ /* -+ * Should really set both of PMCR[xIDAE] while changing the core frequency -+ */ -+ -+ /* -+ * TODO: On the PXA27x: If we're setting half-turbo mode and changing the -+ * core frequency at the same time we must split it up into two operations. -+ * The current values in the pxa2xx_freqs table don't do this, so the code -+ * is unimplemented. -+ */ -+ -+ __asm__ __volatile__(" \ -+ ldr r4, [%1] ; /* load MDREFR */ \ -+ b 2f ; \ -+ .align 5 ; \ -+1: \ -+ str %3, [%1] ; /* preset the MDREFR */ \ -+ mcr p14, 0, %2, c6, c0, 0 ; /* set CCLKCFG[FCS] */ \ -+ str %4, [%1] ; /* postset the MDREFR */ \ -+ \ -+ b 3f ; \ -+2: b 1b ; \ -+3: nop ; \ -+ " -+ : "=&r" (unused) -+ : "r" (&MDREFR), "r" (cclkcfg), \ -+ "r" (preset_mdrefr), "r" (postset_mdrefr) -+ : "r4", "r5"); -+ local_irq_restore(flags); -+ -+ if (freq_debug) { -+ printk (KERN_INFO "CPU PXA Frequency change successful\n"); -+ printk (KERN_INFO "CPU PXA new CCSR 0x%08x\n", CCSR); -+ } -+ -+ /* -+ * Restore the CPUs allowed mask. -+ */ -+ set_cpus_allowed(current, cpus_allowed); -+ -+ /* -+ * Tell everyone what we've just done... -+ * you should add a notify client with any platform specific -+ * SDRAM refresh timer adjustments -+ */ -+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); -+ -+ return 0; -+} -+ -+static int pxa_cpufreq_init(struct cpufreq_policy *policy) -+{ -+ cpumask_t cpus_allowed, allowedcpuset; -+ unsigned int cpu = policy->cpu; -+ int i; -+ unsigned int cclkcfg; -+ -+ cpus_allowed = current->cpus_allowed; -+ -+ cpus_clear (allowedcpuset); -+ cpu_set (cpu, allowedcpuset); -+ set_cpus_allowed(current, allowedcpuset); -+ BUG_ON(cpu != smp_processor_id()); -+ -+ /* set default governor and cpuinfo */ -+ policy->governor = CPUFREQ_DEFAULT_GOVERNOR; -+ policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ -+ policy->cur = get_clk_frequency_khz(0); /* current freq */ -+ -+ /* Generate the cpufreq_frequency_table struct */ -+ for(i=0;icpus_allowed; -+ set_cpus_allowed(current, cpumask_of_cpu(cpu)); -+ BUG_ON(cpu != smp_processor_id()); -+ -+ cur_freq = get_clk_frequency_khz(0); -+ -+ set_cpus_allowed(current, cpumask_saved); -+ -+ return cur_freq; -+} -+ -+static struct cpufreq_driver pxa_cpufreq_driver = { -+ .verify = pxa_verify_policy, -+ .target = pxa_set_target, -+ .init = pxa_cpufreq_init, -+ .get = pxa_cpufreq_get, -+#if defined(CONFIG_PXA25x) -+ .name = "PXA25x", -+#elif defined(CONFIG_PXA27x) -+ .name = "PXA27x", -+#endif -+}; -+ -+static int __init pxa_cpu_init(void) -+{ -+ return cpufreq_register_driver(&pxa_cpufreq_driver); -+} -+ -+static void __exit pxa_cpu_exit(void) -+{ -+ cpufreq_unregister_driver(&pxa_cpufreq_driver); -+} -+ -+ -+MODULE_AUTHOR ("Intrinsyc Software Inc."); -+MODULE_DESCRIPTION ("CPU frequency changing driver for the PXA architecture"); -+MODULE_LICENSE("GPL"); -+module_init(pxa_cpu_init); -+module_exit(pxa_cpu_exit); -+ -diff --git a/arch/arm/mach-pxa/em-x270-devices.c b/arch/arm/mach-pxa/em-x270-devices.c -new file mode 100644 -index 0000000..d142930 ---- /dev/null -+++ b/arch/arm/mach-pxa/em-x270-devices.c -@@ -0,0 +1,331 @@ -+/* -+ * Support for CompuLab EM-X270 platfrom specific device -+ * initialization, and per-device power management functions. -+ * -+ * Copyright (C) 2007 CompuLab, Ltd. -+ * Author: Mike Rapoport -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "../../../drivers/i2c/chips/da9030.h" -+ -+#include -+#include -+ -+struct em_x270_dev_data { -+ int (*is_on)(struct device *dev); -+ int (*set_on)(struct device *dev, int on); -+ int (*get_opts)(struct device *dev, -+ struct device_attribute *attr, -+ char *buf); -+ int (*set_opts)(struct device *dev, int opts); -+}; -+ -+static void em_x270_dev_release(struct device * dev) -+{ -+ -+} -+ -+static ssize_t em_x270_dev_pm_show(struct device *dev, -+ struct device_attribute *attr, -+ char *buf) -+{ -+ struct em_x270_dev_data *pm_data = dev->platform_data; -+ int is_on = pm_data->is_on(dev); -+ -+ return sprintf(buf, "%d\n", is_on); -+} -+ -+static ssize_t em_x270_dev_pm_store(struct device *dev, -+ struct device_attribute *attr, -+ const char *buf, size_t count) -+{ -+ char *endp; -+ int on = simple_strtoul(buf, &endp, 0); -+ size_t size = endp - buf; -+ struct em_x270_dev_data *pm_data = dev->platform_data; -+ -+ pr_info("%s: %s\n", __FUNCTION__, buf); -+ -+ if (*endp && isspace(*endp)) -+ size++; -+ if (size != count) -+ return -EINVAL; -+ -+ pm_data->set_on(dev, on); -+ -+ return count; -+} -+ -+static DEVICE_ATTR(pwr_on, S_IWUSR | S_IRUGO, -+ em_x270_dev_pm_show, em_x270_dev_pm_store); -+ -+static int gprs_is_on(struct device *dev) -+{ -+ return !!(pxa_gpio_get_value(20)); -+} -+ -+static int gprs_set_on(struct device *dev, int on) -+{ -+ pr_info("%s: on = %d\n", __FUNCTION__, on); -+ if (on) { -+ pxa_gpio_mode(20 | GPIO_OUT | GPIO_DFLT_HIGH); -+ mdelay(500); -+ pxa_gpio_set_value(82, 0); -+ mdelay(500); -+ pxa_gpio_mode(82 | GPIO_OUT | GPIO_DFLT_HIGH); -+ mdelay(1000); -+ pxa_gpio_set_value(82, 0); -+ } -+ else { -+ pxa_gpio_set_value(20, 0); -+ pxa_gpio_mode(20 | GPIO_OUT); -+ } -+ -+ return 0; -+} -+ -+static struct em_x270_dev_data em_x270_gprs_data = { -+ .is_on = gprs_is_on, -+ .set_on = gprs_set_on, -+}; -+ -+static struct platform_device em_x270_gprs = { -+ .name = "gprs", -+ .id = -1, -+ .dev = { -+ .platform_data = &em_x270_gprs_data, -+ .release = em_x270_dev_release, -+ }, -+}; -+ -+static int is_wlan_on; -+ -+static int wlan_is_on(struct device *dev) -+{ -+ return is_wlan_on; -+} -+ -+static int wlan_set_on(struct device *dev, int on) -+{ -+ if (on) { -+ /* WLAN power-up sequence */ -+ /* Mask LDO17 and LDO19 tolerance events */ -+ da9030_set_reg(IRQ_MASK_C, -+ IRQ_MASK_C_LDO19 | IRQ_MASK_C_LDO17); -+ -+ /* Force I2C control over LDO17, LDO19 */ -+ da9030_set_reg(SLEEP_CONTROL, -+ APP_SLEEP_CTL_BYPASS_LDO19 | -+ APP_SLEEP_CTL_BYPASS_LDO17); -+ -+ /* Turn off LDO17 and LDO19 */ -+ da9030_set_reg(REG_CONTROL_1_17, -+ RC1_LDO16_EN | RC1_LDO15_EN | -+ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); -+ da9030_set_reg(REG_CONTROL_2_18, RC2_SIMCP_EN | RC2_LDO18_EN); -+ -+ /* Set LDO17 voltage to 3V (VCC_WLAN_IO) */ -+ da9030_set_reg(LDO_17_SIMCP0, LDO_17_SIMCP0_LDO17_3V); -+ mdelay(200); -+ -+ /* Turn WLAN RF power on */ -+ pxa_gpio_mode(115 | GPIO_OUT | GPIO_DFLT_HIGH); -+ -+ /* Turn LDO17 on */ -+ da9030_set_reg(REG_CONTROL_1_17, -+ RC1_LDO17_EN| RC1_LDO16_EN | RC1_LDO15_EN | -+ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); -+ mdelay(200); -+ -+ /* Turn on LDO19 */ -+ da9030_set_reg(REG_CONTROL_2_18, -+ RC2_SIMCP_EN | RC2_LDO18_EN | RC2_LDO19_EN); -+ -+ } -+ else { -+ /* FIXME: implement BGW shutdown */ -+ } -+ is_wlan_on = on; -+ -+ return 0; -+} -+ -+static struct em_x270_dev_data em_x270_wlan_data = { -+ .is_on = wlan_is_on, -+ .set_on = wlan_set_on, -+}; -+ -+static struct platform_device em_x270_wlan = { -+ .name = "wlan", -+ .id = -1, -+ .dev = { -+ .platform_data = &em_x270_wlan_data, -+ .release = em_x270_dev_release, -+ }, -+}; -+ -+static int gps_is_on(struct device *dev) -+{ -+ int val = da9030_get_reg(REG_CONTROL_1_97); -+ return !!(val & RC3_LDO3_EN); -+} -+ -+static int gps_set_on(struct device *dev, int on) -+{ -+ int val = da9030_get_reg(REG_CONTROL_1_97); -+ -+ if (on) -+ val |= RC3_LDO3_EN; -+ else -+ val &= ~RC3_LDO3_EN; -+ da9030_set_reg(REG_CONTROL_1_97, val); -+ -+ return 0; -+} -+ -+static struct em_x270_dev_data em_x270_gps_data = { -+ .is_on = gps_is_on, -+ .set_on = gps_set_on, -+}; -+ -+static struct platform_device em_x270_gps = { -+ .name = "gps", -+ .id = -1, -+ .dev = { -+ .platform_data = &em_x270_gps_data, -+ .release = em_x270_dev_release, -+ }, -+}; -+ -+static int usb_mode; -+static int usb_host_is_on(struct device *dev) -+{ -+ return usb_mode; -+} -+ -+static int usb_host_set_on(struct device *dev, int on) -+{ -+ if (on) { -+ da9030_set_reg(MISC_CONTROLB, MISCB_SESSION_VALID_ENABLE); -+ da9030_set_reg(USBPUMP, -+ USB_PUMP_EN_USBVEP | -+ USB_PUMP_EN_USBVE | -+ USB_PUMP_USBVE); -+ -+ /* enable port 2 transiever */ -+ UP2OCR = UP2OCR_HXS | UP2OCR_HXOE; -+ usb_mode = 1; -+ } -+ else { -+ UP2OCR = UP2OCR_DPPUE | UP2OCR_DPPUBE | UP2OCR_HXOE; -+ da9030_set_reg(USBPUMP, -+ USB_PUMP_EN_USBVEP | USB_PUMP_EN_USBVE); -+ usb_mode = 0; -+ } -+ -+ return 0; -+} -+ -+static struct em_x270_dev_data em_x270_usb_host_data = { -+ .is_on = usb_host_is_on, -+ .set_on = usb_host_set_on, -+}; -+ -+static struct platform_device em_x270_usb_host = { -+ .name = "usb_host", -+ .id = -1, -+ .dev = { -+ .platform_data = &em_x270_usb_host_data, -+ .release = em_x270_dev_release, -+ }, -+}; -+ -+static struct platform_device *em_x270_devices[] = { -+ &em_x270_gprs, -+ &em_x270_wlan, -+ &em_x270_gps, -+ &em_x270_usb_host, -+}; -+ -+static struct work_struct usb_work; -+static void usb_worker(struct work_struct *work) -+{ -+ usb_host_set_on(NULL, !pxa_gpio_get_value(21)); -+} -+ -+static irqreturn_t usb_irq_handler(int irq, void *regs) -+{ -+ schedule_work(&usb_work); -+ -+ pr_info("%s\n", __FUNCTION__); -+ return IRQ_HANDLED; -+} -+ -+static int em_x270_devices_init(void) -+{ -+ int i, ret; -+ -+ for (i = 0; i < ARRAY_SIZE(em_x270_devices); i++ ) { -+ ret = platform_device_register(em_x270_devices[i]); -+ if (ret) { -+ dev_dbg(&em_x270_devices[i]->dev, -+ "Registration failed: %d\n", ret); -+ continue; -+ } -+ -+ ret = device_create_file(&em_x270_devices[i]->dev, -+ &dev_attr_pwr_on); -+ if (ret) { -+ dev_dbg(&em_x270_devices[i]->dev, -+ "PWR_ON attribute failed: %d\n", ret); -+ } -+ -+ dev_dbg(&em_x270_devices[i]->dev, -+ "Registered PWR ON attribute\n"); -+ } -+ -+ /* setup USB detection irq */ -+ INIT_WORK(&usb_work, usb_worker); -+ set_irq_type(IRQ_GPIO(21), IRQT_BOTHEDGE); -+ ret = request_irq(IRQ_GPIO(21), usb_irq_handler, IRQF_DISABLED, -+ "usb detect", 0); -+ if (ret) { -+ pr_info("USB device detection disabled\n"); -+ } -+ else { -+ schedule_work(&usb_work); -+ } -+ -+ return 0; -+} -+ -+static void em_x270_devices_exit(void) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(em_x270_devices); i++ ) { -+ device_remove_file(&em_x270_devices[i]->dev, -+ &dev_attr_pwr_on); -+ platform_device_unregister(em_x270_devices[i]); -+ } -+} -+ -+late_initcall(em_x270_devices_init); -+module_exit(em_x270_devices_exit); -+ -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_DESCRIPTION("Support for platfrom specific device attributes for EM-X270"); -+MODULE_LICENSE("GPL"); -diff --git a/arch/arm/mach-pxa/em-x270-lcd.c b/arch/arm/mach-pxa/em-x270-lcd.c -new file mode 100644 -index 0000000..437efe1 ---- /dev/null -+++ b/arch/arm/mach-pxa/em-x270-lcd.c -@@ -0,0 +1,223 @@ -+/* -+ * LCD initialization and backlight managemnet for EM-X270 -+ * -+ * Copyright (C) 2007 CompuLab, Ltd. -+ * Author: Igor Vaisbein -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "devices.h" -+ -+#define GPIO87_nPCE_2 87 /* Card Enable for Card Space (PXA27x) */ -+#define GPIO87_nPCE_2_MD (87 | GPIO_ALT_FN_1_IN) -+#define GPIO87_USB3_1_MD (87 | GPIO_ALT_FN_3_IN) -+#define GPIO87_SSPTXD2_MD (87 | GPIO_ALT_FN_1_OUT) -+#define GPIO87_SSFRM2_MD (87 | GPIO_ALT_FN_3_OUT) -+ -+#define LCCR4 __REG(0x44000010) -+ -+#define TD035STEE1_LCD_ID 0x2008 -+ -+static void em_x270_set_bl_intensity(int intensity) -+{ -+ da9030_set_wled((intensity != 0), intensity); -+} -+ -+struct corgibl_machinfo em_x270_bl_machinfo = { -+ .max_intensity = 0x7, -+ .default_intensity = 0x3, -+ .limit_mask = 0x1, -+ .set_bl_intensity = em_x270_set_bl_intensity, -+}; -+ -+static void em_x270_bl_release(struct device * dev) -+{ -+ -+} -+ -+static struct platform_device em_x270_bl = { -+ .name = "corgi-bl", -+ .dev = { -+ .release = em_x270_bl_release, -+ .parent = &pxa_device_fb.dev, -+ .platform_data = &em_x270_bl_machinfo, -+ }, -+ .id = -1, -+}; -+ -+/* -+ * Helper functions to access LCD throuhg SPI interface -+ */ -+static void set_ssp_9bit(void) -+{ -+ int temp; -+ SSCR0 = 0xFF208; -+ SSCR0 = 0xFF288; -+ SSCR1 = 0x40000018; -+ -+ while (SSSR & 0x8) -+ temp = SSDR; -+} -+ -+static void set_ssp_18bit(void) -+{ -+ int temp; -+ SSCR0 = 0x1FF201; -+ SSCR0 = 0x1FF281; -+ SSCR1 = 0x40000018; -+ while (SSSR & 0x8) -+ temp = SSDR; -+} -+ -+static void set_ssp_rcv(void) -+{ -+ int temp; -+ SSCR0 = 0x1FF20F; -+ SSCR0 = 0x1FF28F; -+ SSCR1 = 0x40000018; -+ while (SSSR & 0x8) -+ temp = SSDR; -+} -+ -+static void send_ssp_9bit(unsigned int value) -+{ -+ int temp; -+ SSDR = (value); -+ -+ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); -+ -+ if (!(SSSR & 0x4)) -+ while ((SSSR & 0xf00) == 0) -+ ; -+ -+ while ((SSSR & 0xf00) != 0) -+ ; -+ while (SSSR & 0x10) -+ ; -+ while (SSSR & 0x8) -+ temp = SSDR; -+} -+ -+static void send_ssp_18bit(unsigned int value) -+{ -+ int temp; -+ SSDR = (value); -+ -+ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); -+ -+ if (!(SSSR & 0x4)) -+ while ((SSSR & 0xf00) == 0) -+ ; -+ -+ while ((SSSR & 0xf00) != 0) -+ ; -+ while (SSSR & 0x10) -+ ; -+ while (SSSR & 0x8) -+ temp = SSDR; -+} -+ -+static unsigned int rcv_ssp_18bit(void) -+{ -+ SSDR = ((0x04) << 23); -+ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); -+ if (!(SSSR & 0x4)) -+ while ((SSSR & 0xf00) == 0) -+ ; -+ while ((SSSR & 0xf00) != 0) -+ ; -+ while (SSSR & 0x10) -+ ; -+ return SSDR; -+} -+ -+/* LCD init sequence */ -+int em_x270_lcd_detect(void) -+{ -+ unsigned int data; -+ -+ /* Reset the LCD module */ -+ pxa_gpio_mode(GPIO87_nPCE_2 | GPIO_OUT); -+ GPCR(GPIO87_nPCE_2) |= GPIO_bit(GPIO87_nPCE_2); -+ mdelay(75); -+ GPSR(GPIO87_nPCE_2) |= GPIO_bit(GPIO87_nPCE_2); -+ mdelay(70); -+ -+ /* TD035STEE1 LCD_SSP initialization commands */ -+ set_ssp_9bit(); -+ send_ssp_9bit(0x000); -+ mdelay(5); -+ -+ send_ssp_9bit(0x000); -+ mdelay(5); -+ -+ send_ssp_9bit(0x000); -+ mdelay(5); -+ -+ set_ssp_18bit(); -+ send_ssp_18bit(0x17980); -+ mdelay(5); -+ -+ send_ssp_18bit(0x17F10); -+ mdelay(5); -+ -+ set_ssp_9bit(); -+ send_ssp_9bit(0x011); -+ mdelay(50); -+ -+ send_ssp_9bit(0x029); -+ mdelay(10); -+ -+ set_ssp_rcv(); -+ -+ /* Check for LCD ID, to enable the back-light */ -+ data = rcv_ssp_18bit(); -+ -+ if ((data & 0xFFFF) != TD035STEE1_LCD_ID) -+ return -ENODEV; -+ -+ /* enable backlight */ -+ da9030_set_wled(1, 2); -+ return 0; -+} -+ -+static int em_x270_lcd_init(void) -+{ -+ int ret; -+ pr_debug("%s\n", __FUNCTION__); -+ ret = em_x270_lcd_detect(); -+ if (ret) -+ return ret; -+ -+ /* make sure we keep LCCR4 with PCD=0 */ -+ LCCR4 = 0x0; -+ -+ return platform_device_register(&em_x270_bl); -+} -+ -+static void em_x270_lcd_exit(void) -+{ -+ pr_debug("%s\n", __FUNCTION__); -+ platform_device_unregister(&em_x270_bl); -+} -+ -+late_initcall(em_x270_lcd_init); -+module_exit(em_x270_lcd_exit); -+ -+MODULE_DESCRIPTION("EM-X270 backlight and LCD initialization driver"); -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_LICENSE("GPL"); -diff --git a/arch/arm/mach-pxa/em-x270-pm.c b/arch/arm/mach-pxa/em-x270-pm.c -new file mode 100644 -index 0000000..55ba4cd ---- /dev/null -+++ b/arch/arm/mach-pxa/em-x270-pm.c -@@ -0,0 +1,892 @@ -+/* -+ * Support for CompuLab EM-X270 platform power management -+ * -+ * Copyright (C) 2007 CompuLab, Ltd. -+ * Author: Mike Rapoport -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "../../../drivers/i2c/chips/da9030.h" -+ -+#include -+#include -+#include -+#include -+ -+#define DA9030_ADDR 0x92 -+ -+#define EM_X270_BATCHK_TIME_SUSPEND (10*60) /* 10 min */ -+ -+#define VOLTAGE_MAX_DESIGN 4200000 /* 4.2V in uV */ -+#define VOLTAGE_MIN_DESIGN 3000000 /* 3V in uV */ -+ -+#define REG2VOLT(x) ((((x) * 2650) >> 8) + 2650) -+#define VOLT2REG(x) ((((x) - 2650) << 8) / 2650) -+ -+#define REG2CURR(x) ((((x) * 24000) >> 8) / 15) -+ -+#define VCHARGE_MIN_THRESHOLD VOLT2REG(3200) -+#define VCHARGE_MAX_THRESHOLD VOLT2REG(5500) -+ -+#define VBAT_LOW_THRESHOLD VOLT2REG(3600) -+#define VBAT_CRIT_THRESHOLD VOLT2REG(3400) -+ -+#define VBAT_CHARGE_START VOLT2REG(4100) -+#define VBAT_CHARGE_STOP VOLT2REG(4200) -+#define VBAT_CHARGE_RESTART VOLT2REG(4000) -+ -+#define TBAT_LOW_THRESHOLD 197 /* 0oC */ -+#define TBAT_HIGH_THRESHOLD 78 /* 45oC */ -+#define TBAT_RESUME_THRESHOLD 100 /* 35oC */ -+ -+struct em_x270_charger; -+ -+struct em_x270_charger_ops { -+ void (*get_status)(struct em_x270_charger *charger); -+ void (*set_charge)(struct em_x270_charger *charger, int on); -+ -+ s32 (*da9030_get_reg)(u32 reg); -+ s32 (*da9030_set_reg)(u32 reg, u8 val); -+}; -+ -+struct em_x270_charger { -+ struct device *dev; -+ -+ struct power_supply bat; -+ struct da9030_adc_res adc; -+ struct delayed_work work; -+ -+ int interval; -+ -+ int da9030_status; -+ int da9030_fault; -+ int mA; -+ int mV; -+ int is_on; -+ -+ struct em_x270_charger_ops *ops; -+ -+#ifdef CONFIG_DEBUG_FS -+ struct dentry *debug_file; -+#endif -+}; -+ -+static struct em_x270_charger *the_charger; -+ -+static unsigned short tbat_readings[] = { -+ 300, 244, 200, 178, 163, 152, 144, 137, 131, -+ 126, 122, 118, 114, 111, 108, 105, 103, 101, -+ 98, 96, 94, 93, 91, 89, 88, 86, 85, -+ 83, 82, 81, 79, 78, 77, 76, 75, 74, -+ 73, 72, 71, 70, 69, 68, 67, 67, 66, -+ 65, 64, 63, 63, 62, 61, 60, 60, 59, -+ 58, 58, 57, 57, 56, 55, 55, 54, 53, -+ 53, 52, 52, 51, 51, 50, 50, 49, 49, -+ 48, 48, 47, 47, 46, 46, 45, 45, 44, -+ 44, 43, 43, 42, 42, 41, 41, 41, 40, -+ 40, 39, 39, 38, 38, 38, 37, 37, 36, -+ 36, 35, 35, 35, 34, 34, 34, 33, 33, -+ 32, 32, 32, 31, 31, 30, 30, 30, 29, -+ 29, 29, 28, 28, 28, 27, 27, 26, 26, -+ 26, 25, 25, 25, 24, 24, 24, 23, 23, -+ 23, 22, 22, 21, 21, 21, 20, 20, 20, -+ 19, 19, 19, 18, 18, 18, 17, 17, 17, -+ 16, 16, 16, 15, 15, 14, 14, 14, 13, -+ 13, 13, 12, 12, 12, 11, 11, 11, 10, -+ 10, 10, 9, 9, 8, 8, 8, 7, 7, -+ 7, 6, 6, 5, 5, 5, 4, 4, 3, -+ 3, 3, 2, 2, 1, 1, 1, 0, 0, -+ -1, -1, -1, -2, -2, -3, -3, -4, -4, -+ -5, -5, -6, -6, -6, -7, -7, -8, -9, -+ -9, -10, -10, -11, -11, -12, -12, -13, -14, -+ -14, -15, -16, -16, -17, -18, -18, -19, -20, -+ -21, -21, -22, -23, -24, -25, -26, -27, -28, -+ -30, -31, -32, -34, -35, -37, -39, -41, -44, -+ -47, -50, -56, -64, -+}; -+ -+static inline int usb_host_on(void) -+{ -+ return !pxa_gpio_get_value(21); -+} -+ -+#ifdef CONFIG_DEBUG_FS -+ -+static int debug_show(struct seq_file *s, void *data) -+{ -+ struct em_x270_charger *charger = s->private; -+ -+ seq_printf(s, "charger is %s\n", charger->is_on ? "on" : "off"); -+ if (charger->da9030_status & CHRG_CHARGER_ENABLE) { -+ seq_printf(s, "iset = %dmA, vset = %dmV\n", -+ charger->mA, charger->mV); -+ } -+ -+ seq_printf(s, "vbat_res = %d (%dmV)\n", -+ charger->adc.vbat_res, REG2VOLT(charger->adc.vbat_res)); -+ seq_printf(s, "vbatmin_res = %d (%dmV)\n", -+ charger->adc.vbatmin_res, -+ REG2VOLT(charger->adc.vbatmin_res)); -+ seq_printf(s, "vbatmintxon = %d (%dmV)\n", -+ charger->adc.vbatmintxon, -+ REG2VOLT(charger->adc.vbatmintxon)); -+ seq_printf(s, "ichmax_res = %d (%dmA)\n", -+ charger->adc.ichmax_res, -+ REG2CURR(charger->adc.ichmax_res)); -+ seq_printf(s, "ichmin_res = %d (%dmA)\n", -+ charger->adc.ichmin_res, -+ REG2CURR(charger->adc.ichmin_res)); -+ seq_printf(s, "ichaverage_res = %d (%dmA)\n", -+ charger->adc.ichaverage_res, -+ REG2CURR(charger->adc.ichaverage_res)); -+ seq_printf(s, "vchmax_res = %d (%dmV)\n", -+ charger->adc.vchmax_res, -+ REG2VOLT(charger->adc.vchmax_res)); -+ seq_printf(s, "vchmin_res = %d (%dmV)\n", -+ charger->adc.vchmin_res, -+ REG2VOLT(charger->adc.vchmin_res)); -+ seq_printf(s, "tbat_res = %d (%doC)\n", charger->adc.tbat_res, -+ tbat_readings[charger->adc.tbat_res]); -+ seq_printf(s, "adc_in4_res = %d\n", charger->adc.adc_in4_res); -+ seq_printf(s, "adc_in5_res = %d\n", charger->adc.adc_in5_res); -+ -+ return 0; -+} -+ -+static int debug_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, debug_show, inode->i_private); -+} -+ -+static const struct file_operations debug_fops = { -+ .open = debug_open, -+ .read = seq_read, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+ -+static struct dentry* em_x270_create_debugfs(struct em_x270_charger *charger) -+{ -+ charger->debug_file = debugfs_create_file("charger", 0666, 0, charger, -+ &debug_fops); -+ return charger->debug_file; -+} -+ -+static void em_x270_remove_debugfs(struct em_x270_charger *charger) -+{ -+ debugfs_remove(charger->debug_file); -+} -+#else -+#define em_x270_create_debugfs(x) NULL -+#define em_x270_remove_debugfs(x) do {} while(0) -+#endif -+ -+/*********************************************************************/ -+/* DA9030 access functions for suspend/resume */ -+#define DA_ADDR 0x49 -+static inline s32 __da9030_get_reg(u32 reg) -+{ -+ pr_info("%s: reg = %d\n", __FUNCTION__, reg); -+ return pxa_pwr_i2c_reg_read(DA_ADDR, reg); -+} -+ -+static inline s32 __da9030_set_reg(u32 reg, u8 val) -+{ -+ pr_info("%s: reg = %d, val = %d\n", __FUNCTION__, reg, val); -+ return pxa_pwr_i2c_reg_write(DA_ADDR, reg, val); -+} -+ -+/*********************************************************************/ -+/* helpers for charger state monnitor. Different version for stready -+ * state and suspended system -+ */ -+static void em_x270_get_charger_status(struct em_x270_charger *charger) -+{ -+ da9030_get_charger(&charger->is_on, &charger->mA, &charger->mV); -+ da9030_read_adc(&charger->adc); -+ charger->da9030_status = da9030_get_status(); -+ charger->da9030_fault = da9030_get_fault_log(); -+} -+ -+static void em_x270_set_charge(struct em_x270_charger *charger, int on) -+{ -+ if (on) { -+ pr_debug("%s: enabling charger\n", __FUNCTION__); -+ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, -+ TBAT_RESUME_THRESHOLD, -+ TBAT_LOW_THRESHOLD, -+ VBAT_LOW_THRESHOLD); -+ da9030_set_reg(CCTR_CONTROL, CCTR_SET_8MIN); -+ da9030_set_charger(1, 1000, 4200); -+ da9030_set_led(3, 1, 0, 0, 0); -+ charger->is_on = 1; -+ } -+ else { -+ /* disable charger */ -+ pr_debug("%s: disabling charger\n", __FUNCTION__); -+ da9030_set_charger(0, 0, 0); -+ da9030_set_led(3, 0, 0, 0, 0); -+ charger->is_on = 0; -+ } -+} -+ -+static void em_x270_get_charger_status_suspend(struct em_x270_charger *charger) -+{ -+ s32 val; -+ -+ val = __da9030_get_reg(CHARGE_CONTROL); -+ charger->is_on = (val & CHRG_CHARGER_ENABLE) ? 1 : 0; -+ charger->mA = ((val >> 3) & 0xf) * 100; -+ charger->mV = (val & 0x7) * 50 + 4000; -+ -+ charger->adc.vbat_res = __da9030_get_reg(VBAT_RES); -+ charger->adc.vchmax_res = __da9030_get_reg(VCHMAX_RES); -+ charger->adc.vchmin_res = __da9030_get_reg(VCHMIN_RES); -+ charger->adc.tbat_res = __da9030_get_reg(TBAT_RES); -+ -+ charger->da9030_status = __da9030_get_reg(STATUS); -+ charger->da9030_fault = __da9030_get_reg(FAULT_LOG); -+} -+ -+static void em_x270_set_charge_suspend(struct em_x270_charger *charger, int on) -+{ -+ if (on) { -+ u8 val = 0; -+ int mA = 1000; -+ int mV = 4200; -+ -+ pr_debug("%s: enabling charger\n", __FUNCTION__); -+ val = CHRG_CHARGER_ENABLE; -+ val |= (mA / 100) << 3; -+ val |= (mV - 4000) / 50; -+ -+ __da9030_set_reg(CCTR_CONTROL, CCTR_SET_8MIN); -+ __da9030_set_reg(VBATMON, VBAT_LOW_THRESHOLD); -+ __da9030_set_reg(CHARGE_CONTROL, val); -+ charger->is_on = 1; -+ } -+ else { -+ /* disable charger */ -+ pr_debug("%s: disabling charger\n", __FUNCTION__); -+ __da9030_set_reg(CHARGE_CONTROL, 0); -+ charger->is_on = 0; -+ } -+} -+ -+static struct em_x270_charger_ops em_x270_charger_ops = { -+ .get_status = em_x270_get_charger_status, -+ .set_charge = em_x270_set_charge, -+ .da9030_get_reg = da9030_get_reg, -+ .da9030_set_reg = da9030_set_reg, -+}; -+ -+static struct em_x270_charger_ops em_x270_charger_ops_suspend = { -+ .get_status = em_x270_get_charger_status_suspend, -+ .set_charge = em_x270_set_charge_suspend, -+ .da9030_get_reg = __da9030_get_reg, -+ .da9030_set_reg = __da9030_set_reg, -+}; -+ -+/*********************************************************************/ -+/* charging state machine */ -+static void em_x270_check_charger_state(struct em_x270_charger *charger) -+{ -+ charger->ops->get_status(charger); -+ -+/* we wake or boot with external power on */ -+ if (!charger->is_on) { -+ if ((charger->da9030_status & STATUS_CHDET) && -+ (!usb_host_on()) && -+ (charger->adc.vbat_res < VBAT_CHARGE_START)) { -+ pr_debug("%s: vbat_res <= 4100\n", __FUNCTION__); -+ charger->ops->set_charge(charger, 1); -+ } -+ } -+ else { -+ if (charger->adc.vbat_res >= VBAT_CHARGE_STOP) { -+ pr_debug("%s: vbat_res >= 4200\n", __FUNCTION__); -+ charger->ops->set_charge(charger, 0); -+ charger->ops->da9030_set_reg(VBATMON, -+ VBAT_CHARGE_RESTART); -+ } -+ else if (charger->adc.vbat_res > VBAT_LOW_THRESHOLD) { -+ /* we are charging and passed LOW_THRESH, -+ so upate DA9030 VBAT threshold -+ */ -+ pr_debug("%s: vbat_res >= %d\n", __FUNCTION__, -+ REG2VOLT(VBAT_LOW_THRESHOLD)); -+ charger->ops->da9030_set_reg(VBATMON, -+ VBAT_LOW_THRESHOLD); -+ } -+ if (charger->adc.vchmax_res > VCHARGE_MAX_THRESHOLD || -+ charger->adc.vchmin_res < VCHARGE_MIN_THRESHOLD || -+ /* Tempreture readings are negative */ -+ charger->adc.tbat_res < TBAT_HIGH_THRESHOLD || -+ charger->adc.tbat_res > TBAT_LOW_THRESHOLD ) { -+ /* disable charger */ -+ pr_info("%s: thresholds fail\n", __FUNCTION__); -+ charger->ops->set_charge(charger, 0); -+ } -+ } -+} -+ -+static void em_x270_charging_monitor(struct work_struct *work) -+{ -+ struct em_x270_charger *charger; -+ -+ charger = container_of(work, struct em_x270_charger, work.work); -+ -+ em_x270_check_charger_state(charger); -+ -+ /* reschedule for the next time */ -+ schedule_delayed_work(&charger->work, charger->interval); -+} -+ -+void em_x270_battery_release(struct device * dev) -+{ -+} -+ -+struct em_x270_battery_thresh { -+ int voltage; -+ int percentage; -+}; -+ -+static struct em_x270_battery_thresh vbat_ranges[] = { -+ { 150, 100}, -+ { 149, 99}, -+ { 148, 98}, -+ { 147, 98}, -+ { 146, 97}, -+ { 145, 96}, -+ { 144, 96}, -+ { 143, 95}, -+ { 142, 94}, -+ { 141, 93}, -+ { 140, 92}, -+ { 139, 91}, -+ { 138, 90}, -+ { 137, 90}, -+ { 136, 89}, -+ { 135, 88}, -+ { 134, 88}, -+ { 133, 87}, -+ { 132, 86}, -+ { 131, 85}, -+ { 130, 83}, -+ { 129, 82}, -+ { 128, 81}, -+ { 127, 81}, -+ { 126, 80}, -+ { 125, 75}, -+ { 124, 74}, -+ { 123, 73}, -+ { 122, 70}, -+ { 121, 66}, -+ { 120, 65}, -+ { 119, 64}, -+ { 118, 64}, -+ { 117, 63}, -+ { 116, 59}, -+ { 115, 58}, -+ { 114, 57}, -+ { 113, 57}, -+ { 112, 56}, -+ { 111, 50}, -+ { 110, 49}, -+ { 109, 49}, -+ { 108, 48}, -+ { 107, 48}, -+ { 106, 33}, -+ { 105, 32}, -+ { 104, 32}, -+ { 103, 32}, -+ { 102, 31}, -+ { 101, 16}, -+ { 100, 15}, -+ { 99, 15}, -+ { 98, 15}, -+ { 97, 10}, -+ { 96, 9}, -+ { 95, 7}, -+ { 94, 3}, -+ { 93, 0}, -+}; -+ -+static enum power_supply_property em_x270_bat_props[] = { -+ POWER_SUPPLY_PROP_STATUS, -+ POWER_SUPPLY_PROP_HEALTH, -+ POWER_SUPPLY_PROP_TECHNOLOGY, -+ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, -+ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, -+ POWER_SUPPLY_PROP_VOLTAGE_NOW, -+ POWER_SUPPLY_PROP_CURRENT_AVG, -+ POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ -+ POWER_SUPPLY_PROP_TEMP, -+ POWER_SUPPLY_PROP_MANUFACTURER, -+ POWER_SUPPLY_PROP_MODEL_NAME, -+}; -+ -+static void em_x270_bat_check_status(struct em_x270_charger *charger, -+ union power_supply_propval *val) -+{ -+ /* FIXME: below code is very crude approximation of actual -+ states, we need to take into account voltage and current -+ measurements to determine actual charger state */ -+ if (charger->da9030_status & STATUS_CHDET) { -+ if (!usb_host_on()) { -+ if (charger->is_on) { -+ val->intval = POWER_SUPPLY_STATUS_CHARGING; -+ } -+ else { -+ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; -+ } -+ } -+ } -+ else { -+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING; -+ } -+} -+ -+static void em_x270_bat_check_health(struct em_x270_charger *charger, -+ union power_supply_propval *val) -+{ -+ if (charger->da9030_fault & FAULT_LOG_OVER_TEMP) { -+ val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; -+ } -+ else if (charger->da9030_fault & FAULT_LOG_VBAT_OVER) { -+ val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE; -+ } -+ else { -+ val->intval = POWER_SUPPLY_HEALTH_GOOD; -+ } -+} -+ -+static int vbat_interpolate(int reg) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(vbat_ranges); i++ ) -+ if (vbat_ranges[i].voltage == reg) { -+ pr_debug("%s: voltage = %d, percentage = %d\n", -+ __FUNCTION__, vbat_ranges[i].voltage, -+ vbat_ranges[i].percentage); -+ return vbat_ranges[i].percentage; -+ } -+ -+ return 0; -+} -+ -+static int em_x270_bat_get_property(struct power_supply *psy, -+ enum power_supply_property psp, -+ union power_supply_propval *val) -+{ -+ u32 reg; -+ struct em_x270_charger *charger; -+ charger = container_of(psy, struct em_x270_charger, bat); -+ -+ switch(psp) { -+ case POWER_SUPPLY_PROP_STATUS: -+ em_x270_bat_check_status(charger, val); -+ break; -+ case POWER_SUPPLY_PROP_HEALTH: -+ em_x270_bat_check_health(charger, val); -+ break; -+ case POWER_SUPPLY_PROP_TECHNOLOGY: -+ val->intval = POWER_SUPPLY_TECHNOLOGY_LIPO; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: -+ val->intval = VOLTAGE_MAX_DESIGN; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: -+ val->intval = VOLTAGE_MIN_DESIGN; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_NOW: -+ reg = charger->adc.vbat_res; -+ /* V = (reg / 256) * 2.65 + 2.65 (V) */ -+ val->intval = ((reg * 2650000) >> 8) + 2650000; -+ break; -+ case POWER_SUPPLY_PROP_CURRENT_AVG: -+ reg = charger->adc.ichaverage_res; -+ val->intval = reg; /* reg */ -+ break; -+ case POWER_SUPPLY_PROP_CAPACITY: -+ reg = charger->adc.vbat_res; -+ val->intval = vbat_interpolate(reg); -+ break; -+ case POWER_SUPPLY_PROP_TEMP: -+ reg = charger->adc.tbat_res; -+ val->intval = tbat_readings[reg]; -+ break; -+ case POWER_SUPPLY_PROP_MANUFACTURER: -+ val->strval = "MaxPower"; -+ pr_debug("%s: MFG = %s\n", __FUNCTION__, val->strval); -+ break; -+ case POWER_SUPPLY_PROP_MODEL_NAME: -+ val->strval = "LP555597P6H-FPS"; -+ pr_debug("%s: MODEL = %s\n", __FUNCTION__, val->strval); -+ break; -+ default: break; -+ } -+ -+ return 0; -+} -+ -+static void em_x270_setup_battery(struct power_supply *bat) -+{ -+ bat->name = "em-x270-battery"; -+ bat->type = POWER_SUPPLY_TYPE_BATTERY; -+ bat->properties = em_x270_bat_props; -+ bat->num_properties = ARRAY_SIZE(em_x270_bat_props); -+ bat->get_property = em_x270_bat_get_property; -+ bat->use_for_apm = 1; -+}; -+ -+static void em_x270_chiover_callback(int event, void *_charger) -+{ -+ /* disable charger */ -+ struct em_x270_charger *charger = _charger; -+/* pr_info("%s\n", __FUNCTION__); */ -+ em_x270_set_charge(charger, 0); -+} -+ -+static void em_x270_tbat_callback(int event, void *_charger) -+{ -+ /* disable charger */ -+ struct em_x270_charger *charger = _charger; -+/* pr_info("%s\n", __FUNCTION__); */ -+ em_x270_set_charge(charger, 0); -+} -+ -+static void em_x270_vbat_callback(int event, void *_charger) -+{ -+ struct em_x270_charger *charger = _charger; -+ da9030_read_adc(&charger->adc); -+ -+ if (!charger->is_on) { -+ if (charger->adc.vbat_res < VBAT_LOW_THRESHOLD) { -+ /* set VBAT threshold for critical */ -+ da9030_set_reg(VBATMON, VBAT_CRIT_THRESHOLD); -+ da9030_set_reg(VBATMON_1, VBAT_CRIT_THRESHOLD); -+ apm_queue_event(APM_LOW_BATTERY); -+ } -+ else if (charger->adc.vbat_res < VBAT_CRIT_THRESHOLD) { -+ /* notify the system of battery critical */ -+ apm_queue_event(APM_CRITICAL_SUSPEND); -+ } -+ } -+} -+ -+static void em_x270_chdet_callback(int event, void *_charger) -+{ -+ struct em_x270_charger *charger = _charger; -+ int status = da9030_get_status(); -+ pr_info("%s\n", __FUNCTION__); -+ -+/* em_x270_check_charger_state(charger); */ -+ -+ /* check if we have "real" charger or our own USB pump */ -+ if (!usb_host_on()) -+ em_x270_set_charge(charger, !!(status & CHRG_CHARGER_ENABLE)); -+} -+ -+static int em_x270_battery_probe(struct platform_device *pdev) -+{ -+ struct em_x270_charger *charger; -+ -+ pr_debug("%s\n", __FUNCTION__); -+ charger = kzalloc(sizeof(*charger), GFP_KERNEL); -+ if (charger == NULL) { -+ return -ENOMEM; -+ } -+ -+ the_charger = charger; -+ -+ charger->dev = &pdev->dev; -+ -+ charger->ops = &em_x270_charger_ops; -+ -+ charger->interval = 10 * HZ; /* 10 seconds between monotor runs */ -+ em_x270_setup_battery(&charger->bat); -+ -+ platform_set_drvdata(pdev, charger); -+ -+ da9030_enable_adc(); -+ -+ INIT_DELAYED_WORK(&charger->work, em_x270_charging_monitor); -+ schedule_delayed_work(&charger->work, charger->interval); -+ -+ charger->debug_file = em_x270_create_debugfs(charger); -+ -+ em_x270_setup_battery(&charger->bat); -+ -+ da9030_register_callback(DA9030_IRQ_CHDET, -+ em_x270_chdet_callback, -+ charger); -+ da9030_register_callback(DA9030_IRQ_VBATMON, -+ em_x270_vbat_callback, -+ charger); -+ -+ /* critical condition events */ -+ da9030_register_callback(DA9030_IRQ_CHIOVER, -+ em_x270_chiover_callback, -+ charger); -+ da9030_register_callback(DA9030_IRQ_TBAT, -+ em_x270_tbat_callback, -+ charger); -+ -+ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, -+ TBAT_RESUME_THRESHOLD, -+ TBAT_LOW_THRESHOLD, -+ VBAT_LOW_THRESHOLD); -+ -+ power_supply_register(&pdev->dev, &charger->bat); -+ -+ return 0; -+} -+ -+static int em_x270_battery_remove(struct platform_device *dev) -+{ -+ struct em_x270_charger *charger = platform_get_drvdata(dev); -+ -+ pr_debug("%s\n", __FUNCTION__); -+ em_x270_remove_debugfs(charger); -+ cancel_delayed_work(&charger->work); -+ power_supply_unregister(&charger->bat); -+ -+ kfree(charger); -+ the_charger = NULL; -+ -+ return 0; -+} -+ -+static int em_x270_battery_suspend(struct platform_device *pdev, -+ pm_message_t state) -+{ -+ pr_info("%s\n", __FUNCTION__); -+ da9030_set_reg(REG_CONTROL_1_97, RC3_BUCK_EN | RC3_LDO6_EN); -+ da9030_set_reg(REG_CONTROL_2_98, 0); -+ da9030_set_reg(REG_CONTROL_2_18,RC2_LDO18_EN); -+ da9030_set_reg(REG_CONTROL_1_17, -+ RC1_LDO16_EN | RC1_LDO15_EN | RC1_BUCK2_EN); -+ da9030_set_reg(WLED_CONTROL, 0); -+ -+ da9030_set_reg(LED_1_CONTROL, 0); -+ da9030_set_reg(LED_4_CONTROL, 0); -+ -+ return 0; -+} -+ -+extern int em_x270_lcd_detect(void); -+static int em_x270_battery_resume(struct platform_device *pdev) -+{ -+ pr_info("%s\n", __FUNCTION__); -+ -+ da9030_set_reg(LED_1_CONTROL, 0xff); -+ da9030_set_reg(LED_4_CONTROL, 0xff); -+ -+ da9030_set_reg(REG_CONTROL_1_97, -+ RC3_BUCK_EN | RC3_LDO1_EN | RC3_LDO2_EN | -+ RC3_LDO3_EN | RC3_LDO6_EN | RC3_LDO7_EN); -+ da9030_set_reg(REG_CONTROL_2_98, -+ RC4_SIMCP_ENABLE | RC4_LDO11_EN | -+ RC4_LDO9_EN | RC4_LDO8_EN); -+ da9030_set_reg(REG_CONTROL_2_18, -+ RC2_SIMCP_EN | RC2_LDO18_EN | RC2_LDO19_EN); -+ da9030_set_reg(REG_CONTROL_1_17, -+ RC1_LDO17_EN| RC1_LDO16_EN | RC1_LDO15_EN | -+ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); -+ -+ if (em_x270_lcd_detect() != 0) -+ pr_info("%s: LCD resume failed\n", __FUNCTION__); -+ -+ return 0; -+} -+ -+static struct platform_driver em_x270_battery_driver = { -+ .driver = { -+ .name = "em-x270-battery", -+ .owner = THIS_MODULE, -+ }, -+ .probe = em_x270_battery_probe, -+ .remove = em_x270_battery_remove, -+ -+ .suspend_late = em_x270_battery_suspend, -+ .resume_early = em_x270_battery_resume, -+}; -+ -+/**************************************************************************/ -+/* global patform power management */ -+/**************************************************************************/ -+/* suspend/resume button */ -+static irqreturn_t em_x270_suspend_irq(int irq, void *data) -+{ -+ apm_queue_event(APM_USER_SUSPEND); -+ return IRQ_HANDLED; -+} -+ -+static void em_x270_goto_sleep(suspend_state_t state, -+ unsigned long alarm_time, -+ unsigned int alarm_enable) -+{ -+ pr_info("%s\n", __FUNCTION__); -+ -+ the_charger->ops = &em_x270_charger_ops_suspend; -+ -+ RTSR &= RTSR_ALE; -+ RTAR = RCNR + EM_X270_BATCHK_TIME_SUSPEND; -+ -+ pxa_pm_enter(state); -+} -+ -+static int em_x270_enter_suspend(unsigned long alarm_time, -+ unsigned int alarm_enable) -+{ -+ s32 status = 0; -+ s32 event_a, event_b; -+ int ret; -+ int retry = 10; -+ pr_info("%s\n", __FUNCTION__); -+ -+ /* make sure power I2C state is consistent */ -+ PWRICR &= ~ICR_IUE; -+ -+ if ((PEDR & PWER_GPIO1)) { -+ /* button pressed */ -+ /* clear pending event to avoid interrupt*/ -+ PEDR &= ~PWER_GPIO1; -+ GEDR0 &= ~GPIO_bit(1); -+ -+ ret = 0; -+ } -+ else if ((PEDR & PWER_RTC)) { -+ PEDR &= ~PWER_RTC; -+ pr_debug("%s: timer alarm\n", __FUNCTION__); -+ em_x270_check_charger_state(the_charger); -+ ret = 1; -+ } -+ else if ((PEDR & PWER_GPIO0)) { -+ PEDR &= ~PWER_GPIO0; -+ GEDR0 &= ~GPIO_bit(0); -+ -+ /* we woke up because of DA9030 event */ -+ do { -+ status = the_charger->ops->da9030_get_reg(STATUS); -+ udelay(1000); -+ } while (status < 0 && retry--); -+ -+ the_charger->da9030_status = status; -+ event_a = the_charger->ops->da9030_get_reg(EVENT_A); -+ event_b = the_charger->ops->da9030_get_reg(EVENT_B); -+ -+ pr_info("%s: DA9030 wakeup: status: %x, ev_a: %x, ev_b: %x\n", -+ __FUNCTION__, the_charger->da9030_status, -+ event_a, event_b); -+ -+/* if ((the_charger->da9030_status & STATUS_CHDET)) { */ -+ if (event_a & EVENT_A_CHDET) { -+ pr_info("%s: EVENT_A_CHDET\n", __FUNCTION__); -+ em_x270_check_charger_state(the_charger); -+ } -+ else { -+ pr_info("%s: What the hell?\n", __FUNCTION__); -+ } -+ -+ ret = 1; -+ } -+ else { -+ /* wake up is not DA9030, so continue and let battery -+ driver check the charger state */ -+ ret = 0; -+ } -+ -+ /* get back to sleep */ -+ if (ret) -+ em_x270_goto_sleep(PM_SUSPEND_MEM, alarm_time, alarm_enable); -+ -+ return ret; -+} -+ -+static int em_x270_pm_enter(suspend_state_t state) -+{ -+ unsigned long alarm_time = RTAR; -+ unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0); -+ -+ /* pre-suspend */ -+ pr_info("suspending emma\n"); -+ pxa_gpio_mode(38 | GPIO_OUT | GPIO_DFLT_HIGH); -+ -+ em_x270_goto_sleep(state, alarm_time, alarm_status); -+ -+ /* check if we were resumed because of charger events */ -+ while (em_x270_enter_suspend(alarm_time, alarm_status)) -+ {} -+ -+ /* make sure power I2C state is consistent */ -+ PWRICR &= ~ICR_IUE; -+ -+ /* resume */ -+ pr_info("emma is resumed\n"); -+ the_charger->ops = &em_x270_charger_ops; -+ -+ return 0; -+} -+ -+static struct pm_ops em_x270_pm_ops = { -+ .enter = em_x270_pm_enter, -+ .valid = pm_valid_only_mem, -+}; -+ -+static int em_x270_pm_init(void) -+{ -+ int ret; -+ pm_set_ops(&em_x270_pm_ops); -+ -+ set_irq_type(IRQ_GPIO(1), IRQT_RISING); -+ -+ ret = platform_driver_register(&em_x270_battery_driver); -+ if (ret) -+ return ret; -+ -+ ret = request_irq(IRQ_GPIO(1), em_x270_suspend_irq, IRQF_DISABLED, -+ "suspend button", 0); -+ if (ret) { -+ platform_driver_unregister(&em_x270_battery_driver); -+ } -+ -+ return ret; -+} -+ -+static void em_x270_pm_exit(void) -+{ -+ free_irq(IRQ_GPIO(1), em_x270_suspend_irq); -+ platform_driver_unregister(&em_x270_battery_driver); -+} -+ -+/* make sure I2C is already running */ -+late_initcall(em_x270_pm_init); -+module_exit(em_x270_pm_exit); -+ -+MODULE_DESCRIPTION("EM-X270 power manager"); -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_LICENSE("GPL"); -diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c -index 3d0ad50..402d792 100644 ---- a/arch/arm/mach-pxa/em-x270.c -+++ b/arch/arm/mach-pxa/em-x270.c -@@ -18,20 +18,26 @@ - #include - #include - --#include -+#include -+#include - -+#include - #include - - #include - #include - #include - #include -+#include - #include - -+#include -+ -+#include -+ - #include "generic.h" - - /* GPIO IRQ usage */ --#define EM_X270_MMC_PD (105) - #define EM_X270_ETHIRQ IRQ_GPIO(41) - #define EM_X270_MMC_IRQ IRQ_GPIO(13) - -@@ -213,6 +219,68 @@ static struct platform_device em_x270_nand = { - } - }; - -+/* DA9030 */ -+static struct i2c_board_info em_x270_pmic_info = { -+ .driver_name = "da9030", -+ .type = "pmic", -+ .addr = 0x49, -+ .irq = IRQ_GPIO(0), -+}; -+ -+/* Keypad */ -+/* The Demo KeyPad has the following mapping: -+ * (0,0) (1,2) (2,1) -+ * (0,2) (1,1) (2,0) -+ * (0,1) (1,0) (2,2) -+ */ -+static struct pxa27x_keyboard_platform_data em_x270_kbd = { -+ .nr_rows = 3, -+ .nr_cols = 3, -+ .keycodes = { -+ { /* row 0 */ -+ -1, -+ -1, -+ KEY_LEFT, -+ }, -+ { /* row 1 */ -+ KEY_UP, -+ KEY_ENTER, -+ KEY_DOWN -+ }, -+ { /* row 2 */ -+ KEY_RIGHT, -+ -1, -+ -1 -+ }, -+ }, -+ .gpio_modes = { -+ (100 | GPIO_ALT_FN_1_IN), -+ (101 | GPIO_ALT_FN_1_IN), -+ (102 | GPIO_ALT_FN_1_IN), -+ (103 | GPIO_ALT_FN_2_OUT), -+ (104 | GPIO_ALT_FN_2_OUT), -+ (105 | GPIO_ALT_FN_2_OUT), -+ }, -+}; -+ -+static struct platform_device em_x270_pxa_keypad = { -+ .name = "pxa27x-keyboard", -+ .id = -1, -+ .dev = { -+ .platform_data = &em_x270_kbd, -+ }, -+}; -+ -+static struct platform_device em_x270_battery_device = { -+ .name = "em-x270-battery", -+ .id = -1, -+}; -+ -+static struct platform_device em_x270_led_device = { -+ .name = "em-x270-led", -+ .id = -1, -+}; -+ - /* platform devices */ - static struct platform_device *platform_devices[] __initdata = { - &em_x270_dm9k, -@@ -220,6 +288,9 @@ static struct platform_device *platform_devices[] __initdata = { - &em_x270_ts, - &em_x270_rtc, - &em_x270_nand, -+ &em_x270_pxa_keypad, -+ &em_x270_battery_device, -+ &em_x270_led_device, - }; - - -@@ -241,6 +312,33 @@ static struct pxaohci_platform_data em_x270_ohci_platform_data = { - .init = em_x270_ohci_init, - }; - -+/* -+ * USB Client (Gadget/UDC) -+ */ -+static void em_x270_udc_command(int cmd) -+{ -+ switch(cmd) { -+ case PXA2XX_UDC_CMD_CONNECT: -+ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; -+ break; -+ case PXA2XX_UDC_CMD_DISCONNECT: -+/* UP2OCR = UP2OCR_HXS | UP2OCR_HXOE; */ -+ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; -+ break; -+ } -+} -+ -+static int em_x270_udc_detect(void) -+{ -+ return 1; -+} -+ -+static struct pxa2xx_udc_mach_info em_x270_udc_info __initdata = { -+ .udc_is_connected = em_x270_udc_detect, -+ .udc_command = em_x270_udc_command, -+}; -+ -+ - - static int em_x270_mci_init(struct device *dev, - irq_handler_t em_x270_detect_int, -@@ -256,9 +354,6 @@ static int em_x270_mci_init(struct device *dev, - pxa_gpio_mode(GPIO110_MMCDAT2_MD); - pxa_gpio_mode(GPIO111_MMCDAT3_MD); - -- /* EM-X270 uses GPIO13 as SD power enable */ -- pxa_gpio_mode(EM_X270_MMC_PD | GPIO_OUT); -- - err = request_irq(EM_X270_MMC_IRQ, em_x270_detect_int, - IRQF_DISABLED | IRQF_TRIGGER_FALLING, - "MMC card detect", data); -@@ -313,12 +408,19 @@ static struct pxafb_mach_info em_x270_lcd = { - .num_modes = 1, - .cmap_inverse = 0, - .cmap_static = 0, -- .lccr0 = LCCR0_PAS, -- .lccr3 = LCCR3_PixClkDiv(0x01) | LCCR3_Acb(0xff), -+ -+ .lccr0 = LCCR0_Act, -+ .lccr3 = LCCR3_PixFlEdg, - }; - - static void __init em_x270_init(void) - { -+ /* register PMIC */ -+ i2c_register_board_info(1, &em_x270_pmic_info, 1); -+ -+ /* setup DA9030 irq */ -+ set_irq_type(IRQ_GPIO(0), IRQT_FALLING); -+ - /* setup LCD */ - set_pxa_fb_info(&em_x270_lcd); - -@@ -329,6 +431,8 @@ static void __init em_x270_init(void) - pxa_set_mci_info(&em_x270_mci_platform_data); - pxa_set_ohci_info(&em_x270_ohci_platform_data); - -+ pxa_set_udc_info(&em_x270_udc_info); -+ - /* setup STUART GPIOs */ - pxa_gpio_mode(GPIO46_STRXD_MD); - pxa_gpio_mode(GPIO47_STTXD_MD); -@@ -341,9 +445,16 @@ static void __init em_x270_init(void) - - /* Setup interrupt for dm9000 */ - set_irq_type(EM_X270_ETHIRQ, IRQT_RISING); -+ -+ PCFR = 0x6; -+ PSLR = 0xff400000; -+ PMCR = 0x00000005; -+ PWER = 0x80000003; -+ PFER = 0x00000003; -+ PRER = 0x00000000; - } - --MACHINE_START(EM_X270, "Compulab EM-x270") -+MACHINE_START(EM_X270, "Compulab EM-X270") - .boot_params = 0xa0000100, - .phys_io = 0x40000000, - .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, -diff --git a/arch/arm/mach-pxa/pwr-i2c.c b/arch/arm/mach-pxa/pwr-i2c.c -new file mode 100644 -index 0000000..8a501c4 ---- /dev/null -+++ b/arch/arm/mach-pxa/pwr-i2c.c -@@ -0,0 +1,539 @@ -+/* -+ * (C) Copyrihgt 2007 CompuLab, Ltd. -+ * Mike Rapoport -+ * Adaptation of U-Boot I2C driver for PXA. -+ * -+ * (C) Copyright 2000 -+ * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it -+ * -+ * (C) Copyright 2000 Sysgo Real-Time Solutions, GmbH -+ * Marius Groeger -+ * -+ * (C) Copyright 2003 Pengutronix e.K. -+ * Robert Schwebel -+ * -+ * See file CREDITS for list of people who contributed to this -+ * project. -+ * -+ * This program 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ * -+ * Back ported to the 8xx platform (from the 8260 platform) by -+ * Murray.Jensen@cmst.csiro.au, 27-Jan-01. -+ */ -+ -+/* #define DEBUG */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+ -+#define I2C_ICR_INIT (ICR_BEIE | ICR_IRFIE | ICR_ITEIE | ICR_GCD | ICR_SCLE) -+#define I2C_ISR_INIT 0x7FF -+ -+/* Shall the current transfer have a start/stop condition? */ -+#define I2C_COND_NORMAL 0 -+#define I2C_COND_START 1 -+#define I2C_COND_STOP 2 -+ -+/* Shall the current transfer be ack/nacked or being waited for it? */ -+#define I2C_ACKNAK_WAITACK 1 -+#define I2C_ACKNAK_SENDACK 2 -+#define I2C_ACKNAK_SENDNAK 4 -+ -+/* Specify who shall transfer the data (master or slave) */ -+#define I2C_READ 0 -+#define I2C_WRITE 1 -+ -+/* All transfers are described by this data structure */ -+struct i2c_msg { -+ u8 condition; -+ u8 acknack; -+ u8 direction; -+ u8 data; -+}; -+ -+/** -+ * pxa_pwr_i2c_transfer: - reset the host controller -+ * -+ */ -+/* static void pxa_pwr_i2c_reset(void) */ -+/* { */ -+/* int i; */ -+ -+/* /\* CKEN |= CKEN_PWRI2C; *\/ */ -+/* /\* PWRICR |= PCFR_PI2C_EN; *\/ */ -+ -+/* /\* /\\* delay 250ms *\\/ *\/ */ -+/* /\* for (i = 0; i < 250; i++) *\/ */ -+/* /\* udelay(1000); *\/ */ -+ -+/* /\* PWRICR &= ~(ICR_MA | ICR_START | ICR_STOP); *\/ */ -+/* /\* PWRICR |= ICR_UR; *\/ */ -+/* /\* PWRISR = 0x7ff; *\/ */ -+ -+/* /\* PWRICR &= ~ICR_UR; *\/ */ -+/* /\* PWRICR = ICR_GCD | ICR_SCLE; *\/ */ -+/* /\* PWRICR |= ICR_IUE; *\/ */ -+/* /\* PWRICR |= 0x8000; *\/ */ -+ -+/* /\* udelay(1000); *\/ */ -+ -+/* return; */ -+ -+/* PWRICR &= ~ICR_IUE; /\* disable unit *\/ */ -+/* PWRICR |= ICR_UR; /\* reset the unit *\/ */ -+/* udelay(100); */ -+/* PWRICR &= ~ICR_IUE; /\* disable unit *\/ */ -+ -+/* CKEN |= CKEN_PWRI2C; */ -+/* PCFR |= PCFR_PI2C_EN; */ -+ -+/* PWRICR = I2C_ICR_INIT; /\* set control register values *\/ */ -+/* PWRISR = I2C_ISR_INIT; /\* set clear interrupt bits *\/ */ -+/* PWRICR |= ICR_IUE; /\* enable unit *\/ */ -+/* udelay(100); */ -+/* } */ -+ -+static void pwr_i2c_abort() -+{ -+ unsigned long timeout = 250000; -+ unsigned long time = 0; -+ -+ while ((time < timeout) && (PWRIBMR & 0x1) == 0) { -+ unsigned long icr = PWRICR; -+ -+ icr &= ~ICR_START; -+ icr |= ICR_ACKNAK | ICR_STOP | ICR_TB; -+ -+ PWRICR = icr; -+ -+ udelay(1000); -+ time += 1000; -+ } -+ -+ PWRICR &= ~(ICR_MA | ICR_START | ICR_STOP); -+} -+ -+static void pxa_pwr_i2c_reset(void) -+{ -+ pr_debug("Resetting I2C Controller Unit\n"); -+ -+ /* abort any transfer currently under way */ -+ pwr_i2c_abort(); -+ -+ /* reset according to 9.8 */ -+ PWRICR = ICR_UR; -+ PWRISR = I2C_ISR_INIT; -+ PWRISR &= ~ICR_UR; -+ -+ /* set control register values */ -+ PWRICR = I2C_ICR_INIT; -+ -+ /* enable unit */ -+ PWRICR |= ICR_IUE; -+ udelay(100); -+ -+/* CKEN |= CKEN_PWRI2C; */ -+/* PCFR |= PCFR_PI2C_EN; */ -+} -+ -+/** -+ * i2c_isr_set_cleared: - wait until certain bits of the I2C status register -+ * are set and cleared -+ * -+ * @return: 1 in case of success, 0 means timeout (no match within 10 ms). -+ */ -+static int pxa_pwr_i2c_isr_set_cleared(unsigned long set_mask, -+ unsigned long cleared_mask) -+{ -+ int timeout = 10000; -+ -+ while (((PWRISR & set_mask) != set_mask) -+ || ((PWRISR & cleared_mask) != 0)) { -+ udelay(10); -+ if (timeout-- < 0) -+ return 0; -+ } -+ -+ return 1; -+} -+ -+/** -+ * pxa_pwr_i2c_transfer: - Transfer one byte over the i2c bus -+ * -+ * This function can tranfer a byte over the i2c bus in both directions. -+ * It is used by the public API functions. -+ * -+ * @return: 0: transfer successful -+ * -EINVAL: message is empty -+ * -ETIMEDOUT: transmit timeout -+ * -E: ACK missing -+ * -ETIMEDOUT: receive timeout -+ * -EINVAL: illegal parameters -+ * -EBUSY: bus is busy and couldn't be aquired -+ */ -+int pxa_pwr_i2c_transfer(struct i2c_msg *msg) -+{ -+ int ret; -+ -+ if (!msg) -+ goto transfer_error_msg_empty; -+ -+ switch (msg->direction) { -+ case I2C_WRITE: -+ /* check if bus is not busy */ -+/* if (!pxa_pwr_i2c_isr_set_cleared(0, (ISR_IBB | ISR_UB))) */ -+/* goto transfer_error_bus_busy; */ -+ -+ /* start transmission */ -+ PWRICR &= ~ICR_START; -+ PWRICR &= ~ICR_STOP; -+ PWRIDBR = msg->data; -+ if (msg->condition == I2C_COND_START) -+ PWRICR |= ICR_START; -+ if (msg->condition == I2C_COND_STOP) -+ PWRICR |= ICR_STOP; -+ if (msg->acknack == I2C_ACKNAK_SENDNAK) -+ PWRICR |= ICR_ACKNAK; -+ if (msg->acknack == I2C_ACKNAK_SENDACK) -+ PWRICR &= ~ICR_ACKNAK; -+ PWRICR &= ~ICR_ALDIE; -+ PWRICR |= ICR_TB; -+ -+ /* transmit register empty? */ -+ if (!pxa_pwr_i2c_isr_set_cleared(ISR_ITE, 0)) -+ goto transfer_error_transmit_timeout; -+ -+ /* clear 'transmit empty' state */ -+ PWRISR |= ISR_ITE; -+ -+ /* wait for ACK from slave */ -+ if (msg->acknack == I2C_ACKNAK_WAITACK) -+ if (!pxa_pwr_i2c_isr_set_cleared(0, ISR_ACKNAK)) -+ goto transfer_error_ack_missing; -+ break; -+ case I2C_READ: -+ /* check if bus is not busy */ -+/* if (!pxa_pwr_i2c_isr_set_cleared(0, ISR_IBB)) */ -+/* goto transfer_error_bus_busy; */ -+ -+ /* start receive */ -+ PWRICR &= ~ICR_START; -+ PWRICR &= ~ICR_STOP; -+ if (msg->condition == I2C_COND_START) -+ PWRICR |= ICR_START; -+ if (msg->condition == I2C_COND_STOP) -+ PWRICR |= ICR_STOP; -+ if (msg->acknack == I2C_ACKNAK_SENDNAK) -+ PWRICR |= ICR_ACKNAK; -+ if (msg->acknack == I2C_ACKNAK_SENDACK) -+ PWRICR &= ~ICR_ACKNAK; -+ PWRICR &= ~ICR_ALDIE; -+ PWRICR |= ICR_TB; -+ -+ /* receive register full? */ -+ if (!pxa_pwr_i2c_isr_set_cleared(ISR_IRF, 0)) -+ goto transfer_error_receive_timeout; -+ -+ msg->data = PWRIDBR; -+ -+ /* clear 'receive empty' state */ -+ PWRISR |= ISR_IRF; -+ -+ break; -+ default: -+ goto transfer_error_illegal_param; -+ -+ } -+ -+ return 0; -+ -+transfer_error_msg_empty: -+ pr_debug("%s: error: 'msg' is empty\n", __FUNCTION__); -+ ret = -1; -+ goto i2c_transfer_finish; -+ -+transfer_error_transmit_timeout: -+ pr_debug("%s: error: transmit timeout\n", __FUNCTION__); -+ ret = -2; -+ goto i2c_transfer_finish; -+ -+transfer_error_ack_missing: -+ pr_debug("%s: error: ACK missing\n", __FUNCTION__); -+ ret = -3; -+ goto i2c_transfer_finish; -+ -+transfer_error_receive_timeout: -+ pr_debug("%s: error: receive timeout\n", __FUNCTION__); -+ ret = -4; -+ goto i2c_transfer_finish; -+ -+transfer_error_illegal_param: -+ pr_debug("%s: error: illegal parameters\n", __FUNCTION__); -+ ret = -5; -+ goto i2c_transfer_finish; -+ -+transfer_error_bus_busy: -+ pr_debug("%s: error: bus is busy\n", __FUNCTION__); -+ ret = -6; -+ goto i2c_transfer_finish; -+ -+i2c_transfer_finish: -+ pr_debug("%s: ISR: 0x%04x\n", __FUNCTION__, ISR); -+ return ret; -+} -+ -+/* ------------------------------------------------------------------------ */ -+/* API Functions */ -+/* ------------------------------------------------------------------------ */ -+/** -+ * i2c_probe: - Test if a chip answers for a given i2c address -+ * -+ * @chip: address of the chip which is searched for -+ * @return: 0 if a chip was found, -1 otherwhise -+ */ -+int pxa_pwr_i2c_probe(u8 chip) -+{ -+ struct i2c_msg msg; -+ int ret; -+ -+ pxa_pwr_i2c_reset(); -+ -+ msg.condition = I2C_COND_START; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = (chip << 1) + 1; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ msg.condition = I2C_COND_STOP; -+ msg.acknack = I2C_ACKNAK_SENDNAK; -+ msg.direction = I2C_READ; -+ msg.data = 0x00; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ return 0; -+} -+ -+/** -+ * i2c_read: - Read multiple bytes from an i2c device -+ * -+ * The higher level routines take into account that this function is only -+ * called with len < page length of the device (see configuration file) -+ * -+ * @chip: address of the chip which is to be read -+ * @addr: i2c data address within the chip -+ * @alen: length of the i2c data address (1..2 bytes) -+ * @buffer: where to write the data -+ * @len: how much byte do we want to read -+ * @return: 0 in case of success -+ */ -+int pxa_pwr_i2c_read(u8 chip, uint addr, int alen, u8 * buffer, int len) -+{ -+ struct i2c_msg msg; -+ u8 addr_bytes[3]; /* lowest...highest byte of data address */ -+ int ret; -+ -+ pr_debug("%s(chip=0x%02x, addr=0x%02x, alen=0x%02x, len=0x%02x)\n", -+ __FUNCTION__, chip, addr, alen, len); -+ -+ pxa_pwr_i2c_reset(); -+ -+ /* dummy chip address write */ -+ pr_debug("%s: dummy chip address write\n", __FUNCTION__); -+ msg.condition = I2C_COND_START; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = (chip << 1); -+ msg.data &= 0xFE; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ /* -+ * send memory address bytes; -+ * alen defines how much bytes we have to send. -+ */ -+ /*addr &= ((1 << CFG_EEPROM_PAGE_WRITE_BITS)-1); */ -+ addr_bytes[0] = (u8) ((addr >> 0) & 0x000000FF); -+ addr_bytes[1] = (u8) ((addr >> 8) & 0x000000FF); -+ addr_bytes[2] = (u8) ((addr >> 16) & 0x000000FF); -+ -+ while (--alen >= 0) { -+ pr_debug("%s: send memory word address byte %1d\n", -+ __FUNCTION__, alen); -+ msg.condition = I2C_COND_NORMAL; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = addr_bytes[alen]; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ } -+ -+ /* start read sequence */ -+ pr_debug("%s: start read sequence\n", __FUNCTION__); -+ msg.condition = I2C_COND_START; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = (chip << 1); -+ msg.data |= 0x01; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ /* read bytes; send NACK at last byte */ -+ while (len--) { -+ if (len == 0) { -+ msg.condition = I2C_COND_STOP; -+ msg.acknack = I2C_ACKNAK_SENDNAK; -+ } else { -+ msg.condition = I2C_COND_NORMAL; -+ msg.acknack = I2C_ACKNAK_SENDACK; -+ } -+ -+ msg.direction = I2C_READ; -+ msg.data = 0x00; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ *buffer = msg.data; -+ pr_debug("%s: reading byte (0x%08x)=0x%02x\n", -+ __FUNCTION__, (unsigned int)buffer, *buffer); -+ buffer++; -+ } -+ -+ pxa_pwr_i2c_reset(); -+ return 0; -+} -+ -+/** -+ * i2c_write: - Write multiple bytes to an i2c device -+ * -+ * The higher level routines take into account that this function is only -+ * called with len < page length of the device (see configuration file) -+ * -+ * @chip: address of the chip which is to be written -+ * @addr: i2c data address within the chip -+ * @alen: length of the i2c data address (1..2 bytes) -+ * @buffer: where to find the data to be written -+ * @len: how much byte do we want to read -+ * @return: 0 in case of success -+ */ -+int pxa_pwr_i2c_write(u8 chip, uint addr, int alen, u8 * buffer, int len) -+{ -+ struct i2c_msg msg; -+ u8 addr_bytes[3]; /* lowest...highest byte of data address */ -+ int ret; -+ -+ pr_debug("%s(chip=0x%02x, addr=0x%02x, alen=0x%02x, len=0x%02x)\n", -+ __FUNCTION__, chip, addr, alen, len); -+ -+ pxa_pwr_i2c_reset(); -+ -+ /* chip address write */ -+ pr_debug("%s: chip address write\n", __FUNCTION__); -+ msg.condition = I2C_COND_START; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = (chip << 1); -+ msg.data &= 0xFE; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ -+ /* -+ * send memory address bytes; -+ * alen defines how much bytes we have to send. -+ */ -+ addr_bytes[0] = (u8) ((addr >> 0) & 0x000000FF); -+ addr_bytes[1] = (u8) ((addr >> 8) & 0x000000FF); -+ addr_bytes[2] = (u8) ((addr >> 16) & 0x000000FF); -+ -+ while (--alen >= 0) { -+ pr_debug("%s: send memory word address\n", __FUNCTION__); -+ msg.condition = I2C_COND_NORMAL; -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = addr_bytes[alen]; -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ } -+ -+ /* write bytes; send NACK at last byte */ -+ while (len--) { -+ pr_debug("%s: writing byte (0x%08x)=0x%02x\n", -+ __FUNCTION__, (unsigned int)buffer, *buffer); -+ -+ if (len == 0) -+ msg.condition = I2C_COND_STOP; -+ else -+ msg.condition = I2C_COND_NORMAL; -+ -+ msg.acknack = I2C_ACKNAK_WAITACK; -+ msg.direction = I2C_WRITE; -+ msg.data = *(buffer++); -+ -+ if ((ret = pxa_pwr_i2c_transfer(&msg))) -+ return ret; -+ } -+ -+ pxa_pwr_i2c_reset(); -+ return 0; -+} -+ -+/** -+ * pxa_pwr_i2c_reg_read: - Read single byte from an i2c device -+ * -+ * @chip: address of the chip which is to be read -+ * @reg: i2c data address within the chip -+ * @return: data in case of success, negative error code otherwise -+ */ -+s32 pxa_pwr_i2c_reg_read(u8 chip, u8 reg) -+{ -+ char buf; -+ int ret; -+ -+ pr_debug("%s(chip=0x%02x, reg=0x%02x)\n", __FUNCTION__, chip, reg); -+ ret = pxa_pwr_i2c_read(chip, reg, 1, &buf, 1); -+ if (ret == 0) -+ ret = buf; -+ -+ return ret; -+} -+ -+/** -+ * pxa_pwr_i2c_reg_write: - Write multiple bytes to an i2c device -+ * -+ * The higher level routines take into account that this function is only -+ * called with len < page length of the device (see configuration file) -+ * -+ * @chip: address of the chip which is to be written -+ * @reg: i2c data address within the chip -+ * @return: 0 in case of success, negative error code otherwise -+ */ -+s32 pxa_pwr_i2c_reg_write(u8 chip, u8 reg, u8 val) -+{ -+ pr_debug("%s(chip=0x%02x, reg=0x%02x, val=0x%02x)\n", -+ __FUNCTION__, chip, reg, val); -+ return pxa_pwr_i2c_write(chip, reg, 1, &val, 1); -+} -+ -+MODULE_DESCRIPTION("PXA Power I2C"); -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_LICENSE("GPL"); -diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c -index 203371a..36b695f 100644 ---- a/arch/arm/mach-pxa/pxa27x.c -+++ b/arch/arm/mach-pxa/pxa27x.c -@@ -243,7 +243,11 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) - case PM_SUSPEND_MEM: - /* set resume return address */ - PSPR = virt_to_phys(pxa_cpu_resume); -- pxa27x_cpu_suspend(PWRMODE_SLEEP); -+#ifdef CONFIG_MACH_EM_X270 -+ pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP); -+#else -+ pxa27x_cpu_suspend(PWRMODE_SLEEP); -+#endif - break; - } - } -diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c -index bae47e1..a16e532 100644 ---- a/arch/arm/mach-pxa/spitz.c -+++ b/arch/arm/mach-pxa/spitz.c -@@ -349,6 +349,32 @@ static struct pxamci_platform_data spitz_mci_platform_data = { - - - /* -+ * USB Client (Gadget/UDC) -+ */ -+static void spitz_udc_command(int cmd) -+{ -+ switch(cmd) { -+ case PXA2XX_UDC_CMD_CONNECT: -+ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; -+ break; -+ case PXA2XX_UDC_CMD_DISCONNECT: -+ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; -+ break; -+ } -+} -+ -+static int spitz_udc_detect(void) -+{ -+ return 1; -+} -+ -+static struct pxa2xx_udc_mach_info spitz_udc_info __initdata = { -+ .udc_is_connected = spitz_udc_detect, -+ .udc_command = spitz_udc_command, -+}; -+ -+ -+/* - * USB Host (OHCI) - */ - static int spitz_ohci_init(struct device *dev) -@@ -499,6 +525,7 @@ static void __init common_init(void) - pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN); - - platform_add_devices(devices, ARRAY_SIZE(devices)); -+ pxa_set_udc_info(&spitz_udc_info); - pxa_set_mci_info(&spitz_mci_platform_data); - pxa_set_ohci_info(&spitz_ohci_platform_data); - pxa_set_ficp_info(&spitz_ficp_platform_data); -diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig -index 2e1c24f..f80f2b1 100644 ---- a/drivers/i2c/chips/Kconfig -+++ b/drivers/i2c/chips/Kconfig -@@ -163,4 +163,17 @@ config MENELAUS - and other features that are often used in portable devices like - cell phones and PDAs. - -+config DA9030 -+ tristate "Dialog Semiconductor DA9030 power management chip" -+ depends on EXPERIMENTAL && EMBEDDED -+ help -+ If you say yes here you get support for the Dialog -+ Semiconductor DA9030 power management chip. -+ This includes voltage regulators, lithium ion/polymer battery -+ charging, and other features that are often used in portable -+ devices like PDAs, cell phones and cameras. -+ -+ This driver can also be built as a module. If so, the module -+ will be called da9030. -+ - endmenu -diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile -index ca924e1..69f545c 100644 ---- a/drivers/i2c/chips/Makefile -+++ b/drivers/i2c/chips/Makefile -@@ -15,6 +15,7 @@ obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o - obj-$(CONFIG_TPS65010) += tps65010.o - obj-$(CONFIG_MENELAUS) += menelaus.o - obj-$(CONFIG_SENSORS_TSL2550) += tsl2550.o -+obj-$(CONFIG_DA9030) += da9030.o - - ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) - EXTRA_CFLAGS += -DDEBUG -diff --git a/drivers/i2c/chips/da9030.c b/drivers/i2c/chips/da9030.c -new file mode 100644 -index 0000000..9791272 ---- /dev/null -+++ b/drivers/i2c/chips/da9030.c -@@ -0,0 +1,1213 @@ -+/* -+ * Dialog Semiconductor DA9030 power management IC driver -+ * -+ * Copyright (C) 2007 Compulab, Ltd. -+ * Mike Rapoport -+ * -+ * Some parts based on menelaus.c: -+ * Copyright (C) 2004 Texas Instruments, Inc. -+ * Copyright (C) 2005, 2006 Nokia Corporation -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file COPYING in the main directory of this archive for -+ * more details. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "da9030.h" -+ -+#define DRIVER_NAME "da9030" -+ -+static unsigned short normal_i2c[] = { 0x49, I2C_CLIENT_END }; -+ -+I2C_CLIENT_INSMOD; -+ -+struct da9030 { -+ struct mutex lock; -+ struct i2c_client *client; -+ -+ struct work_struct event_work; -+ -+ /* there are 24 interrupts */ -+ void (*callbacks[24])(int event, void *data); -+ void *callbacks_data[24]; -+ -+ struct dentry *debug_file; -+}; -+ -+/* I hardly believe there can be more than 1 such chip in the system, -+ so keeping its global instance won't really hurt */ -+static struct da9030 *the_da9030; -+ -+unsigned char defined_regs[] = { -+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, -+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, -+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, -+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, -+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, -+ 0x50, 0x51, -+ 0x60, 0x61, 0x62, 0x63, -+ 0x80, 0x81, -+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, -+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, -+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, -+}; -+ -+static inline int is_reg_valid(u32 reg) -+{ -+ int i; -+ for (i = 0; i < ARRAY_SIZE(defined_regs); i++) -+ if (reg == defined_regs[i]) -+ return 1; -+ -+ return 0; -+} -+ -+s32 da9030_get_reg(u32 reg) -+{ -+ if (!is_reg_valid(reg)) -+ return -EINVAL; -+ -+ return i2c_smbus_read_byte_data(the_da9030->client, reg); -+} -+EXPORT_SYMBOL(da9030_get_reg); -+ -+s32 da9030_set_reg(u32 reg, u8 val) -+{ -+ if (!is_reg_valid(reg)) -+ return -EINVAL; -+ -+ return i2c_smbus_write_byte_data(the_da9030->client, reg, val); -+} -+EXPORT_SYMBOL(da9030_set_reg); -+ -+static s32 da9030_update_reg_bits(u32 reg, int bits, int shift, int val) -+{ -+ int ret; -+ int new_val; -+ -+ mutex_lock(&the_da9030->lock); -+ ret = da9030_get_reg(reg); -+ if (ret < 0) -+ goto out; -+ -+ new_val = reg & ~(((1 << bits) - 1) << shift); -+ new_val |= (val << shift); -+ -+ ret = da9030_set_reg(reg, new_val); -+ mutex_unlock(&the_da9030->lock); -+ -+out: -+ return ret; -+} -+ -+int da9030_get_status(void) -+{ -+ s32 ret; -+ -+ mutex_lock(&the_da9030->lock); -+ ret = da9030_get_reg(STATUS); -+ mutex_unlock(&the_da9030->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(da9030_get_status); -+ -+int da9030_get_fault_log(void) -+{ -+ s32 ret; -+ -+ mutex_lock(&the_da9030->lock); -+ ret = da9030_get_reg(FAULT_LOG); -+ mutex_unlock(&the_da9030->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(da9030_get_fault_log); -+ -+void da9030_read_adc(struct da9030_adc_res *adc) -+{ -+ mutex_lock(&the_da9030->lock); -+ -+ adc->vbat_res = da9030_get_reg(VBAT_RES); -+ adc->vbatmin_res = da9030_get_reg(VBATMIN_RES); -+ adc->vbatmintxon = da9030_get_reg(VBATMINTXON_RES); -+ adc->ichmax_res = da9030_get_reg(ICHMAX_RES); -+ adc->ichmin_res = da9030_get_reg(ICHMIN_RES); -+ adc->ichaverage_res = da9030_get_reg(ICHAVERAGE_RES); -+ adc->vchmax_res = da9030_get_reg(VCHMAX_RES); -+ adc->vchmin_res = da9030_get_reg(VCHMIN_RES); -+ adc->tbat_res = da9030_get_reg(TBAT_RES); -+ adc->adc_in4_res = da9030_get_reg(ADC_IN4_RES); -+ adc->adc_in5_res = da9030_get_reg(ADC_IN5_RES); -+ -+ mutex_unlock(&the_da9030->lock); -+} -+EXPORT_SYMBOL(da9030_read_adc); -+ -+void da9030_enable_adc(void) -+{ -+ /* enable automatic A/D measurements */ -+ mutex_lock(&the_da9030->lock); -+ -+ da9030_set_reg(ADC_MAN_CONTROL, -+ ADC_LDO_INT_ENABLE | ADC_TBATREF_ENABLE); -+ da9030_set_reg(ADC_MAN_CONTROL_1, -+ ADC_LDO_INT_ENABLE | ADC_TBATREF_ENABLE); -+ da9030_set_reg(ADC_AUTO_CONTROL_1, -+ ADC_TBAT_ENABLE | ADC_VBAT_IN_TXON | ADC_VCH_ENABLE | -+ ADC_ICH_ENABLE | ADC_VBAT_ENABLE | -+ ADC_AUTO_SLEEP_ENABLE); -+ da9030_set_reg(ADC_AUTO_CONTROL, -+ ADC_TBAT_ENABLE | ADC_VBAT_IN_TXON | ADC_VCH_ENABLE | -+ ADC_ICH_ENABLE | ADC_VBAT_ENABLE | -+ ADC_AUTO_SLEEP_ENABLE); -+ -+ mutex_unlock(&the_da9030->lock); -+} -+EXPORT_SYMBOL(da9030_enable_adc); -+ -+void da9030_set_wled(int on, unsigned int brightness) -+{ -+ u8 val; -+ -+ mutex_lock(&the_da9030->lock); -+ -+ if (on) -+ val = WLED_CP_ENABLE | (brightness & 0x7); -+ else -+ val = da9030_get_reg(WLED_CONTROL) & ~WLED_CP_ENABLE; -+ -+ da9030_set_reg(WLED_CONTROL, val); -+ -+ mutex_unlock(&the_da9030->lock); -+} -+EXPORT_SYMBOL(da9030_set_wled); -+ -+int da9030_set_charger(int on, unsigned int mA, unsigned int mV) -+{ -+ int ret; -+ u8 val = 0; -+ if (on) { -+ if (mA >= 1500 || mV < 4000 || mV > 4350) -+ return -EINVAL; -+ -+ val = CHRG_CHARGER_ENABLE; -+ val |= (mA / 100) << 3; -+ val |= (mV - 4000) / 50; -+ } -+ -+ mutex_lock(&the_da9030->lock); -+ ret = da9030_set_reg(CHARGE_CONTROL, val); -+ mutex_unlock(&the_da9030->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(da9030_set_charger); -+ -+void da9030_get_charger(int *on, unsigned int *mA, unsigned int *mV) -+{ -+ s32 val; -+ -+ mutex_lock(&the_da9030->lock); -+ -+ val = da9030_get_reg(CHARGE_CONTROL); -+ -+ mutex_unlock(&the_da9030->lock); -+ -+ if (on) -+ *on = (val & CHRG_CHARGER_ENABLE) ? 1 : 0; -+ -+ if (mA) -+ *mA = ((val >> 3) & 0xf) * 100; -+ -+ if (mV) -+ *mV = (val & 0x7) * 50 + 4000; -+} -+EXPORT_SYMBOL(da9030_get_charger); -+ -+int da9030_set_led(int led, int on, -+ enum da9030_led_rate rate, -+ enum da9030_led_duty_cycle duty, -+ enum da9030_led_pwm_chop pwm_chop) -+{ -+ int reg; -+ int ret; -+ -+ u8 val = 0; -+ -+ if (led > 4) -+ return -EINVAL; -+ -+ reg = LED_1_CONTROL + led; -+ if (on) { -+ val = LED_ENABLE; -+ val |= (rate & 0x3) << 5; -+ val |= (duty & 0x3) << 3; -+ val |= (pwm_chop & 0x7); -+ } -+ -+ mutex_lock(&the_da9030->lock); -+ ret = da9030_set_reg(reg, val); -+ mutex_unlock(&the_da9030->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(da9030_set_led); -+ -+void da9030_set_thresholds(unsigned int tbathighp, unsigned int tbathighn, -+ unsigned int tbatlow, unsigned int vbatmon) -+{ -+ mutex_lock(&the_da9030->lock); -+ -+ da9030_set_reg(TBATHIGHP, tbathighp); -+ da9030_set_reg(TBATHIGHN, tbathighn); -+ da9030_set_reg(TBATLOW, tbatlow); -+ da9030_set_reg(VBATMONTXON, vbatmon); -+ da9030_set_reg(VBATMON, vbatmon); -+ -+ da9030_set_reg(TBATHIGHP_1, tbathighp); -+ da9030_set_reg(TBATHIGHN_1, tbathighn); -+ da9030_set_reg(TBATLOW_1, tbatlow); -+ da9030_set_reg(VBATMONTXMON_1, vbatmon); -+ da9030_set_reg(VBATMON_1, vbatmon); -+ -+ mutex_unlock(&the_da9030->lock); -+} -+EXPORT_SYMBOL(da9030_set_thresholds); -+ -+struct da9030_vtg_value { -+ u16 vtg; -+ u16 val; -+}; -+ -+struct da9030_vtg_value da9030_vtg_1V8_3V2[] = { -+ {1800, 0x0}, -+ {1900, 0x1}, -+ {2000, 0x2}, -+ {2100, 0x3}, -+ {2200, 0x4}, -+ {2300, 0x5}, -+ {2400, 0x6}, -+ {2500, 0x7}, -+ {2600, 0x8}, -+ {2700, 0x9}, -+ {2800, 0xa}, -+ {2900, 0xb}, -+ {3000, 0xc}, -+ {3100, 0xd}, -+ {3200, 0xe}, -+ {3200, 0xf}, -+}; -+ -+struct da9030_vtg_value da9030_vtg_1V1_2V65[] = { -+ {1100, 0x0}, -+ {1150, 0x1}, -+ {1200, 0x2}, -+ {1250, 0x3}, -+ {1300, 0x4}, -+ {1350, 0x5}, -+ {1400, 0x6}, -+ {1450, 0x7}, -+ {1500, 0x8}, -+ {1550, 0x9}, -+ {1600, 0xa}, -+ {1650, 0xb}, -+ {1700, 0xc}, -+ {1750, 0xd}, -+ {1800, 0xe}, -+ {1850, 0xf}, -+ {1900, 0x10}, -+ {1950, 0x11}, -+ {2000, 0x12}, -+ {2050, 0x13}, -+ {2100, 0x14}, -+ {2150, 0x15}, -+ {2200, 0x16}, -+ {2250, 0x17}, -+ {2300, 0x18}, -+ {2350, 0x19}, -+ {2400, 0x1a}, -+ {2450, 0x1b}, -+ {2500, 0x1c}, -+ {2550, 0x1d}, -+ {2600, 0x1e}, -+ {2650, 0x1f}, -+}; -+ -+struct da9030_vtg_value da9030_vtg_2V76_2V94[] = { -+ {2760, 0x7}, -+ {2790, 0x6}, -+ {2820, 0x5}, -+ {2850, 0x4}, -+ {2850, 0x3}, -+ {2880, 0x1}, -+ {2910, 0x2}, -+ {2940, 0x3}, -+}; -+ -+struct da9030_vtg_value da9030_vtg_0V85_1V625[] = { -+ {850, 0x0}, -+ {875, 0x1}, -+ {900, 0x2}, -+ {925, 0x3}, -+ {950, 0x4}, -+ {975, 0x5}, -+ {1000, 0x6}, -+ {1025, 0x7}, -+ {1050, 0x8}, -+ {1075, 0x9}, -+ {1100, 0xa}, -+ {1125, 0xb}, -+ {1150, 0xc}, -+ {1175, 0xd}, -+ {1200, 0xe}, -+ {1225, 0xf}, -+ {1250, 0x10}, -+ {1275, 0x11}, -+ {1300, 0x12}, -+ {1325, 0x13}, -+ {1350, 0x14}, -+ {1375, 0x15}, -+ {1400, 0x16}, -+ {1425, 0x17}, -+ {1450, 0x18}, -+ {1475, 0x19}, -+ {1500, 0x1a}, -+ {1525, 0x1b}, -+ {1550, 0x1c}, -+ {1575, 0x1d}, -+ {1600, 0x1e}, -+ {1625, 0x1f}, -+}; -+ -+struct ldo_param { -+ u8 reg; -+ u8 shift; -+ u8 bits; -+}; -+ -+struct da9030_ldo { -+ const char *name; -+ -+ struct ldo_param vtg; -+ struct ldo_param sleep; -+ struct ldo_param lock; -+ -+ /* several LDOs have two enable/disable bits */ -+ struct ldo_param enable[2]; -+ -+ struct da9030_vtg_value *values; -+ int values_count; -+}; -+ -+static struct da9030_ldo da9030_ldos[] = { -+ [0] = { -+ .name = "LDO1", -+ .vtg = { -+ .reg = LDO_1, -+ .shift = 0, -+ .bits = 5, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 1, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = LDO_1, -+ .shift = 5, -+ .bits = 2, -+ }, -+ .lock = { -+ .reg = REG_SLEEP_CONTROL1, -+ .shift = 0, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [1] = { -+ .name = "LDO2", -+ .vtg = { -+ .reg = LDO_2_3, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 2, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL1, -+ .shift = 2, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [2] = { -+ .name = "LDO3", -+ .vtg = { -+ .reg = LDO_2_3, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 3, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL1, -+ .shift = 4, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [3] = { -+ .name = "LDO4", -+ .vtg = { -+ .reg = LDO_4_5, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 4, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL1, -+ .shift = 6, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [4] = { -+ .name = "LDO5", -+ .vtg = { -+ .reg = LDO_4_5, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 5, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL2, -+ .shift = 0, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [5] = { -+ .name = "LDO6", -+ .vtg = { -+ .reg = LDO_6_SIMCP, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 6, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [6] = { -+ .name = "LDO7", -+ .vtg = { -+ .reg = LDO_7_8, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_97, -+ .shift = 7, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL2, -+ .shift = 2, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [7] = { -+ .name = "LDO8", -+ .vtg = { -+ .reg = LDO_7_8, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_2_98, -+ .shift = 0, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL2, -+ .shift = 4, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [8] = { -+ .name = "LDO9", -+ .vtg = { -+ .reg = LDO_9_12, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_2_98, -+ .shift = 1, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL2, -+ .shift = 6, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [9] = { -+ .name = "LDO10", -+ .vtg = { -+ .reg = LDO_10_11, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 1, -+ .bits = 1, -+ }, -+ .enable[1] = { -+ .reg = REG_CONTROL_2_98, -+ .shift = 2, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [10] = { -+ .name = "LDO11", -+ .vtg = { -+ .reg = LDO_10_11, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 2, -+ .bits = 1, -+ }, -+ .enable[1] = { -+ .reg = REG_CONTROL_2_98, -+ .shift = 3, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [11] = { -+ .name = "LDO12", -+ .vtg = { -+ .reg = LDO_9_12, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_2_98, -+ .shift = 4, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = REG_SLEEP_CONTROL3, -+ .shift = 0, -+ .bits = 2, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [12] = { -+ .name = "LDO13", -+ .vtg = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 3, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = NULL, -+ .values_count = 0, -+ }, -+ [13] = { -+ .name = "LDO14", -+ .vtg = { -+ .reg = LDO_14_16, -+ .shift = 0, -+ .bits = 3, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, /* FIXME: or 2_98? */ -+ .shift = 4, -+ .bits = 1, -+ }, -+ .enable[1] = { -+ .reg = REG_CONTROL_2_98, /* FIXME: or 2_98? */ -+ .shift = 5, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_2V76_2V94, -+ .values_count = ARRAY_SIZE(da9030_vtg_2V76_2V94), -+ }, -+ [14] = { -+ .name = "LDO15", -+ .vtg = { -+ .reg = LDO_15, -+ .shift = 0, -+ .bits = 5, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 5, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .lock = { -+ .reg = LDO_15, -+ .shift = 5, -+ .bits = 3, -+ }, -+ .values = da9030_vtg_1V1_2V65, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V1_2V65), -+ }, -+ [15] = { -+ .name = "LDO16", -+ .vtg = { -+ .reg = LDO_14_16, -+ .shift = 3, -+ .bits = 5, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 6, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V1_2V65, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V1_2V65), -+ }, -+ [16] = { -+ .name = "LDO17", -+ .vtg = { -+ .reg = LDO_17_SIMCP0, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_1_17, -+ .shift = 7, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [17] = { -+ .name = "LDO18", -+ .vtg = { -+ .reg = LDO_18_19, -+ .shift = 0, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_2_18, -+ .shift = 2, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+ [18] = { -+ .name = "LDO19", -+ .vtg = { -+ .reg = LDO_18_19, -+ .shift = 4, -+ .bits = 4, -+ }, -+ .enable[0] = { -+ .reg = REG_CONTROL_2_18, -+ .shift = 1, -+ .bits = 1, -+ }, -+ .sleep = { -+ .reg = 0, -+ .shift = 0, -+ .bits = 0, -+ }, -+ .values = da9030_vtg_1V8_3V2, -+ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), -+ }, -+}; -+ -+static int da9030_get_vtg_value(int vtg, const struct da9030_vtg_value *tbl, -+ int n) -+{ -+ int i; -+ -+ for (i = 0; i < n; i++, tbl++) -+ if (tbl->vtg == vtg) -+ return tbl->val; -+ return -EINVAL; -+} -+ -+static int da9030_set_ldo_volt(struct da9030_ldo *ldo, unsigned int mV) -+{ -+ int val; -+ -+ val = da9030_get_vtg_value(mV, ldo->values, ldo->values_count); -+ if (val < 0) -+ return val; -+ -+ return da9030_update_reg_bits(ldo->vtg.reg, ldo->vtg.bits, -+ ldo->vtg.shift, val); -+} -+ -+static int da9030_enable_ldo(struct da9030_ldo *ldo, int enable) -+{ -+ int ret; -+ -+ ret = da9030_update_reg_bits(ldo->enable[0].reg, ldo->enable[1].bits, -+ ldo->enable[0].shift, enable); -+ -+ if (ret < 0) -+ return ret; -+ -+ if (unlikely(ldo->enable[1].reg != 0)) -+ ret = da9030_update_reg_bits(ldo->enable[1].reg, -+ ldo->enable[1].bits, -+ ldo->enable[1].shift, enable); -+ -+ return ret; -+} -+ -+static int da9030_set_ldo_sleep(struct da9030_ldo *ldo, -+ enum da9030_ldo_sleep_mode sleep_mode) -+{ -+ return da9030_update_reg_bits(ldo->sleep.reg, ldo->sleep.bits, -+ ldo->sleep.shift, sleep_mode); -+} -+ -+int da9030_set_ldo(int ldo_num, int on, unsigned int mV, -+ enum da9030_ldo_sleep_mode sleep_mode) -+{ -+ struct da9030_ldo *ldo; -+ int ret; -+ -+ if (ldo_num < 0 || ldo_num > ARRAY_SIZE(da9030_ldos)) -+ return -EINVAL; -+ -+ ldo = &da9030_ldos[ldo_num]; -+ -+ ret = da9030_set_ldo_volt(ldo, mV); -+ if (ret < 0) -+ return ret; -+ -+ ret = da9030_enable_ldo(ldo, on); -+ if (ret < 0) -+ return ret; -+ -+ ret = da9030_set_ldo_sleep(ldo, sleep_mode); -+ if (ret < 0) -+ return ret; -+ -+ return 0; -+} -+EXPORT_SYMBOL(da9030_set_ldo); -+ -+int da9030_set_buck(int buck, int on, unsigned int mV, int flags) -+{ -+ /* FIXME: implement */ -+ return 0; -+} -+EXPORT_SYMBOL(da9030_set_buck); -+ -+static void da9030_disable_irq(unsigned int irq) -+{ -+ int reg, val; -+ -+ if (irq < 8) { -+ reg = IRQ_MASK_A; -+ val = 1 << irq; -+ } else if (irq < 16) { -+ reg = IRQ_MASK_B; -+ val = 1 << (irq - 8); -+ } else { -+ reg = IRQ_MASK_C; -+ val = 1 << (irq - 16); -+ } -+ -+ i2c_smbus_write_byte_data( -+ the_da9030->client, reg, -+ i2c_smbus_read_byte_data(the_da9030->client, reg) | val); -+} -+ -+static void da9030_enable_irq(unsigned int irq) -+{ -+ int reg, val; -+ -+ if (irq < 8) { -+ reg = IRQ_MASK_A; -+ val = 1 << irq; -+ } else if (irq < 16) { -+ reg = IRQ_MASK_B; -+ val = 1 << (irq - 8); -+ } else { -+ reg = IRQ_MASK_C; -+ val = 1 << (irq - 16); -+ } -+ -+ i2c_smbus_write_byte_data( -+ the_da9030->client, reg, -+ i2c_smbus_read_byte_data(the_da9030->client, reg) & ~val); -+} -+ -+int da9030_register_callback(int event, -+ void (*callback)(int event, void *data), -+ void *data) -+{ -+ int ret; -+ -+ if (event < 0 || event > 23) -+ return -EINVAL; -+ -+ mutex_lock(&the_da9030->lock); -+ if (the_da9030->callbacks[event]) -+ ret = -EBUSY; -+ else { -+ the_da9030->callbacks[event] = callback; -+ the_da9030->callbacks_data[event] = data; -+ da9030_enable_irq(event); -+ ret = 0; -+ } -+ mutex_unlock(&the_da9030->lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL(da9030_register_callback); -+ -+void da9030_unregister_callback(int event) -+{ -+ mutex_lock(&the_da9030->lock); -+ -+ da9030_disable_irq(event); -+ the_da9030->callbacks[event] = NULL; -+ the_da9030->callbacks_data[event] = 0; -+ -+ mutex_unlock(&the_da9030->lock); -+} -+EXPORT_SYMBOL(da9030_unregister_callback); -+ -+#ifdef CONFIG_DEBUG_FS -+#define MAX_BUF 256 -+ -+static int da9030_debug_show(struct seq_file *s, void *data) -+{ -+ int i, res = 0; -+ struct da9030 *da9030 = s->private; -+ struct i2c_client *client = da9030->client; -+ -+ seq_printf(s, "DA9030 state: da = %p, cl = %p, s->private = %p\n", -+ da9030, client, s->private); -+ -+ for (i = 0; i < ARRAY_SIZE(defined_regs); i++) { -+ res = i2c_smbus_read_byte_data(client, defined_regs[i]); -+ seq_printf(s, "%02x %x\n", defined_regs[i], res); -+ } -+ return 0; -+} -+ -+static int da9030_debug_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, da9030_debug_show, inode->i_private); -+} -+ -+ssize_t da9030_debug_write(struct file *f, const char __user *buf, size_t len, -+ loff_t *off) -+{ -+ char buffer[MAX_BUF]; -+ int reg, val; -+ char *endp; -+ struct da9030 *da9030 = ((struct seq_file *)f->private_data)->private; -+ struct i2c_client *client = da9030->client; -+ -+ if (len > MAX_BUF) { -+ printk(KERN_INFO "%s: large buffer\n", __FUNCTION__); -+ len = MAX_BUF; -+ } -+ -+ if (copy_from_user(buffer, buf, len)) { -+ printk(KERN_INFO "%s: copy_from_user failed\n", __FUNCTION__); -+ return -EFAULT; -+ } -+ buffer[len] = '\0'; -+ -+ reg = simple_strtoul(buffer, &endp, 0); -+ while (endp && isspace(*endp)) -+ endp++; -+ -+ val = simple_strtoul(endp, 0, 0); -+ -+ i2c_smbus_write_byte_data(client, reg, val); -+ -+ return len; -+} -+ -+static const struct file_operations debug_fops = { -+ .open = da9030_debug_open, -+ .read = seq_read, -+ .write = da9030_debug_write, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+ -+static struct dentry *da9030_create_debugfs(struct da9030 *da9030) -+{ -+ da9030->debug_file = debugfs_create_file("da9030", 0666, 0, da9030, -+ &debug_fops); -+ return da9030->debug_file; -+} -+ -+static void da9030_remove_debugfs(struct da9030 *da9030) -+{ -+ debugfs_remove(da9030->debug_file); -+} -+#else -+#define da9030_create_debugfs(x) NULL -+#define da9030_remove_debugfs(x) do {} while (0) -+#endif -+ -+static irqreturn_t da9030_irq(int irq, void *_da9030) -+{ -+ struct da9030 *da9030 = _da9030; -+ -+ (void)schedule_work(&da9030->event_work); -+ -+ return IRQ_HANDLED; -+} -+ -+static void da9030_irq_worker(struct work_struct *work) -+{ -+ struct da9030 *da9030 = container_of(work, struct da9030, event_work); -+ void (*callback)(int event, void *data); -+ u32 pending = 0; -+ u32 mask = 0; -+ int i; -+ -+ while (1) { -+ pending = (i2c_smbus_read_byte_data(da9030->client, -+ EVENT_A)) | -+ ((i2c_smbus_read_byte_data(da9030->client, -+ EVENT_B)) << 8) | -+ ((i2c_smbus_read_byte_data(da9030->client, -+ EVENT_C)) << 16); -+ -+ mask = (i2c_smbus_read_byte_data(da9030->client, -+ IRQ_MASK_A)) | -+ ((i2c_smbus_read_byte_data(da9030->client, -+ IRQ_MASK_B)) << 8) | -+ ((i2c_smbus_read_byte_data(da9030->client, -+ IRQ_MASK_C)) << 16); -+ pending &= ~mask; -+ -+ if (!pending) -+ return; -+ -+ while (pending) { -+ i = __ffs(pending); -+ callback = da9030->callbacks[i]; -+ if (callback) -+ callback(i, da9030->callbacks_data[i]); -+ pending &= ~(1 << i); -+ } -+ } -+} -+ -+static inline void da9030_disable_interrupts(struct da9030 *da9030) -+{ -+ /* clear pending interruts */ -+ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_A); -+ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_B); -+ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_C); -+ -+ /* disable interrupts */ -+ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_A, 0xff); -+ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_B, 0xff); -+ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_C, 0xff); -+} -+ -+static int da9030_probe(struct i2c_client *client) -+{ -+ int ret; -+ struct da9030 *da9030; -+ -+ if (the_da9030) { -+ dev_dbg(&client->dev, "only one %s for now\n", -+ DRIVER_NAME); -+ return -ENODEV; -+ } -+ -+ ret = i2c_smbus_read_byte_data(client, CHIP_ID); -+ -+ dev_info(&client->dev, "initialized chip revision %x\n", ret); -+ -+ da9030 = kzalloc(sizeof(struct da9030), GFP_KERNEL); -+ if (da9030 == NULL) { -+ dev_err(&client->dev, "insufficient memory\n"); -+ return -ENOMEM; -+ } -+ the_da9030 = da9030; -+ da9030->client = client; -+ -+ mutex_init(&the_da9030->lock); -+ -+ da9030_disable_interrupts(da9030); -+ INIT_WORK(&da9030->event_work, da9030_irq_worker); -+ -+ ret = request_irq(client->irq, da9030_irq, -+ IRQF_DISABLED, DRIVER_NAME, da9030); -+ -+ if (ret) { -+ kfree(da9030); -+ dev_err(&client->dev, -+ "failed to allocate irq %d\n", -+ client->irq); -+ return ret; -+ } -+ -+ i2c_set_clientdata(client, da9030); -+ -+ da9030->debug_file = da9030_create_debugfs(da9030); -+ -+ return 0; -+} -+ -+/* static int da9030_detach_adapter(struct i2c_adapter *a) */ -+static int da9030_remove(struct i2c_client *client) -+{ -+ struct da9030 *da9030 = i2c_get_clientdata(client); -+ -+ da9030_remove_debugfs(da9030); -+ -+ free_irq(da9030->client->irq, da9030); -+ kfree(da9030); -+ i2c_set_clientdata(client, NULL); -+ the_da9030 = NULL; -+ -+ return 0; -+} -+ -+static struct i2c_driver da9030_driver = { -+ .driver = { -+ .name = "da9030", -+ .owner = THIS_MODULE, -+ }, -+ -+ .probe = da9030_probe, -+ .remove = da9030_remove, -+}; -+ -+static int da9030_init(void) -+{ -+ i2c_add_driver(&da9030_driver); -+ return 0; -+} -+ -+static void da9030_exit(void) -+{ -+ i2c_del_driver(&da9030_driver); -+} -+ -+/* NOTE: this MUST be initialized before the other parts of the system -+ * that rely on it ... but after the i2c bus on which this relies. -+ * That is, much earlier than on PC-type systems, which don't often use -+ * I2C as a core system bus. -+ */ -+subsys_initcall(da9030_init); -+module_exit(da9030_exit); -+ -+MODULE_DESCRIPTION("DA9030 power manager driver"); -+MODULE_AUTHOR("Mike Rapoport, Compulab"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/i2c/chips/da9030.h b/drivers/i2c/chips/da9030.h -new file mode 100644 -index 0000000..4163156 ---- /dev/null -+++ b/drivers/i2c/chips/da9030.h -@@ -0,0 +1,282 @@ -+/* DA9030 Register definintions */ -+ -+#define CHIP_ID 0x00 -+ -+#define EVENT_A 0x01 -+#define EVENT_A_CHIOVER (1 << 7) -+#define EVENT_A_VBAT_MON_TXON (1 << 6) -+#define EVENT_A_VBAT_MON (1 << 5) -+#define EVENT_A_TBAT (1 << 4) -+#define EVENT_A_CHDET (1 << 3) -+#define EVENT_A_EXTON (1 << 2) -+#define EVENT_A_PWREN1 (1 << 1) -+#define EVENT_A_ONKEY_N (1 << 0) -+ -+#define EVENT_B 0x02 -+#define EVENT_B_WDOG_INT (1 << 7) -+#define EVENT_B_SRP_DETECT (1 << 6) -+#define EVENT_B_SESSION_VALID (1 << 5) -+#define EVENT_B_VBUS_VALID_4_0 (1 << 4) -+#define EVENT_B_VBUS_VALID_4_4 (1 << 3) -+#define EVENT_B_ADC_READY (1 << 2) -+#define EVENT_B_CCTO (1 << 1) -+#define EVENT_B_TCTO (1 << 0) -+ -+#define EVENT_C 0x03 -+#define EVENT_C_ADC_IN5 (1 << 7) -+#define EVENT_C_ADC_IN4 (1 << 6) -+#define EVENT_C_BUCK2 (1 << 5) -+#define EVENT_C_LDO19 (1 << 4) -+#define EVENT_C_LDO18 (1 << 3) -+#define EVENT_C_LDO17 (1 << 2) -+#define EVENT_C_LDO16 (1 << 1) -+#define EVENT_C_LDO15 (1 << 0) -+ -+#define STATUS 0x04 -+#define STATUS_MCLK_DETECT (1 << 7) -+#define STATUS_VBAT_MON_TXON (1 << 6) -+#define STATUS_VBAT_MON (1 << 5) -+#define STATUS_TBAT (1 << 4) -+#define STATUS_CHDET (1 << 3) -+#define STATUS_EXTON (1 << 2) -+#define STATUS_PWREN1 (1 << 1) -+#define STATUS_ONKEY_N (1 << 0) -+ -+#define IRQ_MASK_A 0x05 -+#define IRQ_MASK_A_CHIOVER (1 << 7) -+#define IRQ_MASK_A_VBAT_MON_TXON (1 << 6) -+#define IRQ_MASK_A_VBAT_MON (1 << 5) -+#define IRQ_MASK_A_TBAT (1 << 4) -+#define IRQ_MASK_A_CHDET (1 << 3) -+#define IRQ_MASK_A_EXTON (1 << 2) -+#define IRQ_MASK_A_PWREN1 (1 << 1) -+#define IRQ_MASK_A_ONKEY_N (1 << 0) -+ -+#define IRQ_MASK_B 0x06 -+#define IRQ_MASK_B_WDOG_INT (1 << 7) -+#define IRQ_MASK_B_SRP_DETECT (1 << 6) -+#define IRQ_MASK_B_SESSION_VALID (1 << 5) -+#define IRQ_MASK_B_VBUS_VALID_4_0 (1 << 4) -+#define IRQ_MASK_B_VBUS_VALID_4_4 (1 << 3) -+#define IRQ_MASK_B_ADC_READY (1 << 2) -+#define IRQ_MASK_B_CCTO (1 << 1) -+#define IRQ_MASK_B_TCTO (1 << 0) -+ -+#define IRQ_MASK_C 0x07 -+#define IRQ_MASK_C_ADC_IN5 (1 << 7) -+#define IRQ_MASK_C_ADC_IN4 (1 << 6) -+#define IRQ_MASK_C_BUCK2 (1 << 5) -+#define IRQ_MASK_C_LDO19 (1 << 4) -+#define IRQ_MASK_C_LDO18 (1 << 3) -+#define IRQ_MASK_C_LDO17 (1 << 2) -+#define IRQ_MASK_C_LDO16 (1 << 1) -+#define IRQ_MASK_C_LDO15 (1 << 0) -+ -+#define SYS_CTRL_A 0x08 -+#define SYS_CONTROL_A_SLEEP_N_PIN_ENABLE 0x1 -+#define SYS_CONTROL_A_SHUT_DOWN (1<<1) -+#define SYS_CONTROL_A_HWRES_ENABLE (1<<2) -+#define SYS_CONTROL_A_WDOG_ACTION (1<<3) -+#define SYS_CONTROL_A_WATCHDOG (1<<7) -+ -+#define SYS_CONTROL_B 0x09 -+#define SYS_CLTR_B_SLEEP_13MHZ_EN (1 << 4) -+#define SYS_CLTR_B_AUTO_CLK_SWITCH (1 << 3) -+ -+#define FAULT_LOG 0x0a -+#define FAULT_LOG_OVER_TEMP (1 << 7) -+#define FAULT_LOG_VBAT_OVER (1 << 4) -+ -+#define LDO_10_11 0x10 -+#define LDO_10_11_LDO10_3V (0xc) -+#define LDO_10_11_LDO11_3V2 (0xe << 4) -+ -+#define LDO_15 0x11 -+#define LDO_14_16 0x12 -+#define LDO_18_19 0x13 -+#define LDO_18_19_LDO18_3V2 (0xe) -+ -+#define LDO_17_SIMCP0 0x14 -+#define LDO_17_SIMCP0_LDO17_3V 0x0F -+ -+#define BUCK_2_DVC1 0x15 -+#define BUCK_2_GO (1 << 7) -+#define BUCK_2_SLEEP (1 << 6) -+#define BUCK_2_TRIM_1V5 (0x1a) -+ -+#define BUCK_2_DVC2 0x16 -+ -+#define REG_CONTROL_1_17 0x17 -+#define RC1_LDO17_EN (1 << 7) -+#define RC1_LDO16_EN (1 << 6) -+#define RC1_LDO15_EN (1 << 5) -+#define RC1_LDO14_EN (1 << 4) -+#define RC1_LDO13_EN (1 << 3) -+#define RC1_LDO11_EN (1 << 2) -+#define RC1_LDO10_EN (1 << 1) -+#define RC1_BUCK2_EN (1 << 0) -+ -+#define REG_CONTROL_2_18 0x18 -+#define RC2_SIMCP_EN (1 << 6) -+#define RC2_LDO19_EN (1 << 1) -+#define RC2_LDO18_EN (1 << 0) -+ -+#define REG_CONTROL_3_ -+ -+#define USBPUMP 0x19 -+#define USB_PUMP_EN_USBVEP (1 << 7) -+#define USB_PUMP_EN_USBVE (1 << 6) -+#define USB_PUMP_SPR_DETECT (1 << 5) -+#define USB_PUMP_SESSION_VALID (1 << 4) -+#define USB_PUMP_VBUS_VALID_4_0 (1 << 3) -+#define USB_PUMP_VBUS_VALID_4_4 (1 << 2) -+#define USB_PUMP_USBVEP (1 << 1) -+#define USB_PUMP_USBVE (1 << 0) -+ -+#define SLEEP_CONTROL 0x1a -+#define APP_SLEEP_CTL_PWR_EN (1 << 7) -+#define APP_SLEEP_CTL_SYS_EN (1 << 6) -+#define APP_SLEEP_CTL_BYPASS_LDO19 (1 << 2) -+#define APP_SLEEP_CTL_BYPASS_LDO18 (1 << 1) -+#define APP_SLEEP_CTL_BYPASS_LDO17 (1 << 0) -+ -+#define STARTUP_CONTROL 0x1b -+#define STARTUP_CTL_LDO11_PWR_SYS (1 << 3) -+#define STARTUP_CTL_LDO10_PWR_SYS (1 << 2) -+#define STARTUP_CTL_LDO11_START (1 << 1) -+#define STARTUP_CTL_LDO10_START (1 << 0) -+ -+#define LED_1_CONTROL 0x20 -+#define LED_2_CONTROL 0x21 -+#define LED_3_CONTROL 0x22 -+#define LED_4_CONTROL 0x23 -+#define LEDPC_CONTROL 0x24 -+#define LED_ENABLE (1 << 7) -+ -+#define WLED_CONTROL 0x25 -+#define WLED_CP_ENABLE (1 << 6) -+#define WLED_ISET_10 (3) -+ -+#define MISC_CONTROLA 0x26 -+#define MISC_CONTROLB 0x27 -+#define MISCB_SESSION_VALID_ENABLE (1 << 3) -+#define MISCB_USB_INT_RISING (1 << 2) -+#define MISCB_I2C_ADDRESS (1 << 1) -+#define MISCB_STARTUP_SEQUENCE (1 << 0) -+ -+#define CHARGE_CONTROL 0x28 -+#define CHRG_CHARGER_ENABLE (1 << 7) -+ -+#define CCTR_CONTROL 0x29 -+#define CCTR_SET_8MIN 0x01 -+ -+#define TCTR_CONTROL 0x2a -+#define CHARGE_PULSE 0x2b -+ -+#define ADC_MAN_CONTROL 0x30 -+ -+#define ADC_AUTO_CONTROL 0x31 -+#define ADC_IN5_EN (1 << 7) -+#define ADC_IN4_EN (1 << 6) -+#define ADC_TBAT_ENABLE (1 << 5) -+#define ADC_VBAT_IN_TXON (1 << 4) -+#define ADC_VCH_ENABLE (1 << 3) -+#define ADC_ICH_ENABLE (1 << 2) -+#define ADC_VBAT_ENABLE (1 << 1) -+#define ADC_AUTO_SLEEP_ENABLE (1 << 0) -+ -+#define VBATMON 0x32 -+#define VBATMONTXON 0x33 -+#define TBATHIGHP 0x34 -+#define TBATHIGHN 0x35 -+#define TBATLOW 0x36 -+#define ADC_IN4_MIN 0x37 -+#define ADC_IN4_MAX 0x38 -+#define ADC_IN5_MIN 0x39 -+#define ADC_IN5_MAX 0x3a -+ -+#define VBAT_RES 0x41 -+#define VBATMIN_RES 0x42 -+#define VBATMINTXON 0x43 -+#define ICHMAX_RES 0x44 -+#define ICHMIN_RES 0x45 -+#define ICHAVERAGE_RES 0x46 -+#define VCHMAX_RES 0x47 -+#define VCHMIN_RES 0x48 -+#define TBAT_RES 0x49 -+#define ADC_IN4_RES 0x4a -+#define ADC_IN5_RES 0x4b -+ -+#define LDO_1 0x90 -+#define LDO_1_UNLOCK (0x5 << 5) -+#define LDO_1_TRIM_3V (0x12) -+ -+#define LDO_2_3 0x91 -+#define LDO_2_3_LDO2_3V2 (0xe << 4) -+#define LDO_2_3_LDO3_3V (0xc) -+ -+#define LDO_4_5 0x92 -+#define LDO_6_SIMCP 0x93 -+#define LDO_6_SIMCP_LDO6_3V2 (0xe) -+ -+#define LDO_7_8 0x94 -+#define LDO_9_12 0x95 -+#define BUCK 0x96 -+#define REG_CONTROL_1_97 0x97 -+#define RC3_LDO7_EN (1 << 7) -+#define RC3_LDO6_EN (1 << 6) -+#define RC3_LDO5_EN (1 << 5) -+#define RC3_LDO4_EN (1 << 4) -+#define RC3_LDO3_EN (1 << 3) -+#define RC3_LDO2_EN (1 << 2) -+#define RC3_LDO1_EN (1 << 1) -+#define RC3_BUCK_EN (1 << 0) -+ -+#define REG_CONTROL_2_98 0x98 -+#define RC4_SLEEP (1 << 7) -+#define RC4_SIMCP_ENABLE (1 << 6) -+#define RC4_LDO14_EN (1 << 5) -+#define RC4_LDO12_EN (1 << 4) -+#define RC4_LDO11_EN (1 << 3) -+#define RC4_LDO10_EN (1 << 2) -+#define RC4_LDO9_EN (1 << 1) -+#define RC4_LDO8_EN (1 << 0) -+ -+#define REG_SLEEP_CONTROL1 0x99 -+#define REG_SLEEP_CONTROL2 0x9a -+#define REG_SLEEP_CONTROL3 0x9b -+ -+#define ADC_MAN_CONTROL_1 0xa0 -+#define ADC_DEBOUNCE_VBATMON_TXON (1 << 7) -+#define ADC_DEBOUNCE_VBATMON (1 << 6) -+#define ADC_TBATREF_ENABLE (1 << 5) -+#define ADC_LDO_INT_ENABLE (1 << 4) -+#define ADC_MAN_CONV (1 << 3) -+#define ADC_MUX_VBAT (0) -+ -+#define ADC_AUTO_CONTROL_1 0xa1 -+#define ADC_IN5_EN (1 << 7) -+#define ADC_IN4_EN (1 << 6) -+#define ADC_TBAT_ENABLE (1 << 5) -+#define ADC_VBAT_IN_TXON (1 << 4) -+#define ADC_VCH_ENABLE (1 << 3) -+#define ADC_ICH_ENABLE (1 << 2) -+#define ADC_VBAT_ENABLE (1 << 1) -+#define ADC_AUTO_SLEEP_ENABLE (1 << 0) -+ -+#define VBATMON_1 0xa2 -+#define VBATMONTXMON_1 0xa3 -+#define TBATHIGHP_1 0xa4 -+#define TBATHIGHN_1 0xa5 -+#define TBATLOW_1 0xa6 -+#define MAN_RES 0xb0 -+#define VBAT_RES_1 0xb1 -+#define VBATMIN_RES_1 0xb2 -+#define VBATMINTXON_RES 0xb3 -+#define ICHMAX_RES_1 0xb4 -+#define ICHMIN_RES_1 0xb5 -+#define ICHAVERAGE_RES_1 0xb6 -+#define VCHMAX_RES_1 0xb7 -+#define VCHMIN_RES_1 0xb8 -+#define TBAT_RES_1 0xb9 -+#define ADC_IN4_RES_1 0xba -diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig -index f929fcd..174ea2e 100644 ---- a/drivers/input/touchscreen/Kconfig -+++ b/drivers/input/touchscreen/Kconfig -@@ -126,6 +126,49 @@ config TOUCHSCREEN_HP600 - To compile this driver as a module, choose M here: the - module will be called hp680_ts_input. - -+config TOUCHSCREEN_WM97XX -+ tristate "Support for WM97xx AC97 touchscreen controllers" -+ depends AC97_BUS -+ -+choice -+ prompt "WM97xx codec type" -+ depends TOUCHSCREEN_WM97XX -+ -+config TOUCHSCREEN_WM9705 -+ bool "WM9705 Touchscreen interface support" -+ depends on TOUCHSCREEN_WM97XX -+ help -+ Say Y here if you have the wm9705 touchscreen. -+ -+ If unsure, say N. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called wm9705. -+ -+config TOUCHSCREEN_WM9712 -+ bool "WM9712 Touchscreen interface support" -+ depends on TOUCHSCREEN_WM97XX -+ help -+ Say Y here if you have the wm9712 touchscreen. -+ -+ If unsure, say N. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called wm9712. -+ -+config TOUCHSCREEN_WM9713 -+ bool "WM9713 Touchscreen interface support" -+ depends on TOUCHSCREEN_WM97XX -+ help -+ Say Y here if you have the wm9713 touchscreen. -+ -+ If unsure, say N. -+ -+ To compile this driver as a module, choose M here: the -+ module will be called wm9713. -+ -+endchoice -+ - config TOUCHSCREEN_PENMOUNT - tristate "Penmount serial touchscreen" - select SERIO -diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile -index 5de8933..3a059b1 100644 ---- a/drivers/input/touchscreen/Makefile -+++ b/drivers/input/touchscreen/Makefile -@@ -3,6 +3,7 @@ - # - - # Each configuration option enables a list of files. -+wm97xx-ts-objs := wm97xx-core.o - - obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o - obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o -@@ -18,3 +19,16 @@ obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o - obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o - obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o - obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o -+obj-$(CONFIG_TOUCHSCREEN_WM97XX) += wm97xx-ts.o -+ -+ifeq ($(CONFIG_TOUCHSCREEN_WM9713),y) -+wm97xx-ts-objs += wm9713.o -+endif -+ -+ifeq ($(CONFIG_TOUCHSCREEN_WM9712),y) -+wm97xx-ts-objs += wm9712.o -+endif -+ -+ifeq ($(CONFIG_TOUCHSCREEN_WM9705),y) -+wm97xx-ts-objs += wm9705.o -+endif -diff --git a/drivers/input/touchscreen/wm9705.c b/drivers/input/touchscreen/wm9705.c -new file mode 100644 -index 0000000..1dae63d ---- /dev/null -+++ b/drivers/input/touchscreen/wm9705.c -@@ -0,0 +1,360 @@ -+/* -+ * wm9705.c -- Codec driver for Wolfson WM9705 AC97 Codec. -+ * -+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. -+ * Author: Liam Girdwood -+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com -+ * Parts Copyright : Ian Molton -+ * Andrew Zabolotny -+ * Russell King -+ * -+ * This program 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. -+ * -+ * Revision history -+ * 6th Sep 2006 Mike Arthur -+ * Added pre and post sample calls. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define TS_NAME "wm97xx" -+#define WM9705_VERSION "0.62" -+#define DEFAULT_PRESSURE 0xb0c0 -+ -+/* -+ * Debug -+ */ -+#if 0 -+#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) -+#else -+#define dbg(format, arg...) -+#endif -+#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) -+#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) -+#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) -+ -+/* -+ * Module parameters -+ */ -+ -+/* -+ * Set current used for pressure measurement. -+ * -+ * Set pil = 2 to use 400uA -+ * pil = 1 to use 200uA and -+ * pil = 0 to disable pressure measurement. -+ * -+ * This is used to increase the range of values returned by the adc -+ * when measureing touchpanel pressure. -+ */ -+static int pil = 0; -+module_param(pil, int, 0); -+MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); -+ -+/* -+ * Set threshold for pressure measurement. -+ * -+ * Pen down pressure below threshold is ignored. -+ */ -+static int pressure = DEFAULT_PRESSURE & 0xfff; -+module_param(pressure, int, 0); -+MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); -+ -+/* -+ * Set adc sample delay. -+ * -+ * For accurate touchpanel measurements, some settling time may be -+ * required between the switch matrix applying a voltage across the -+ * touchpanel plate and the ADC sampling the signal. -+ * -+ * This delay can be set by setting delay = n, where n is the array -+ * position of the delay in the array delay_table below. -+ * Long delays > 1ms are supported for completeness, but are not -+ * recommended. -+ */ -+static int delay = 4; -+module_param(delay, int, 0); -+MODULE_PARM_DESC(delay, "Set adc sample delay."); -+ -+/* -+ * Pen detect comparator threshold. -+ * -+ * 0 to Vmid in 15 steps, 0 = use zero power comparator with Vmid threshold -+ * i.e. 1 = Vmid/15 threshold -+ * 15 = Vmid/1 threshold -+ * -+ * Adjust this value if you are having problems with pen detect not -+ * detecting any down events. -+ */ -+static int pdd = 8; -+module_param(pdd, int, 0); -+MODULE_PARM_DESC(pdd, "Set pen detect comparator threshold"); -+ -+/* -+ * Set adc mask function. -+ * -+ * Sources of glitch noise, such as signals driving an LCD display, may feed -+ * through to the touch screen plates and affect measurement accuracy. In -+ * order to minimise this, a signal may be applied to the MASK pin to delay or -+ * synchronise the sampling. -+ * -+ * 0 = No delay or sync -+ * 1 = High on pin stops conversions -+ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) -+ * 3 = Edge triggered, edge on pin starts conversion after delay param -+ */ -+static int mask = 0; -+module_param(mask, int, 0); -+MODULE_PARM_DESC(mask, "Set adc mask function."); -+ -+/* -+ * ADC sample delay times in uS -+ */ -+static const int delay_table[] = { -+ 21, // 1 AC97 Link frames -+ 42, // 2 -+ 84, // 4 -+ 167, // 8 -+ 333, // 16 -+ 667, // 32 -+ 1000, // 48 -+ 1333, // 64 -+ 2000, // 96 -+ 2667, // 128 -+ 3333, // 160 -+ 4000, // 192 -+ 4667, // 224 -+ 5333, // 256 -+ 6000, // 288 -+ 0 // No delay, switch matrix always on -+}; -+ -+/* -+ * Delay after issuing a POLL command. -+ * -+ * The delay is 3 AC97 link frames + the touchpanel settling delay -+ */ -+static inline void poll_delay(int d) -+{ -+ udelay (3 * AC97_LINK_FRAME + delay_table [d]); -+} -+ -+/* -+ * set up the physical settings of the WM9705 -+ */ -+static void init_wm9705_phy(struct wm97xx* wm) -+{ -+ u16 dig1 = 0, dig2 = WM97XX_RPR; -+ -+ /* -+ * mute VIDEO and AUX as they share X and Y touchscreen -+ * inputs on the WM9705 -+ */ -+ wm97xx_reg_write(wm, AC97_AUX, 0x8000); -+ wm97xx_reg_write(wm, AC97_VIDEO, 0x8000); -+ -+ /* touchpanel pressure current*/ -+ if (pil == 2) { -+ dig2 |= WM9705_PIL; -+ dbg("setting pressure measurement current to 400uA."); -+ } else if (pil) -+ dbg("setting pressure measurement current to 200uA."); -+ if(!pil) -+ pressure = 0; -+ -+ /* polling mode sample settling delay */ -+ if (delay!=4) { -+ if (delay < 0 || delay > 15) { -+ dbg("supplied delay out of range."); -+ delay = 4; -+ } -+ } -+ dig1 &= 0xff0f; -+ dig1 |= WM97XX_DELAY(delay); -+ dbg("setting adc sample delay to %d u Secs.", delay_table[delay]); -+ -+ /* WM9705 pdd */ -+ dig2 |= (pdd & 0x000f); -+ dbg("setting pdd to Vmid/%d", 1 - (pdd & 0x000f)); -+ -+ /* mask */ -+ dig2 |= ((mask & 0x3) << 4); -+ -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); -+} -+ -+static int wm9705_digitiser_ioctl(struct wm97xx* wm, int cmd) -+{ -+ switch(cmd) { -+ case WM97XX_DIG_START: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig[2] | WM97XX_PRP_DET_DIG); -+ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ -+ break; -+ case WM97XX_DIG_STOP: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig[2] & ~WM97XX_PRP_DET_DIG); -+ break; -+ case WM97XX_AUX_PREPARE: -+ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 0); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, WM97XX_PRP_DET_DIG); -+ break; -+ case WM97XX_DIG_RESTORE: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, wm->dig_save[1]); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig_save[2]); -+ break; -+ case WM97XX_PHY_INIT: -+ init_wm9705_phy(wm); -+ break; -+ default: -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+static inline int is_pden (struct wm97xx* wm) -+{ -+ return wm->dig[2] & WM9705_PDEN; -+} -+ -+/* -+ * Read a sample from the WM9705 adc in polling mode. -+ */ -+static int wm9705_poll_sample (struct wm97xx* wm, int adcsel, int *sample) -+{ -+ int timeout = 5 * delay; -+ -+ if (!wm->pen_probably_down) { -+ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (!(data & WM97XX_PEN_DOWN)) -+ return RC_PENUP; -+ wm->pen_probably_down = 1; -+ } -+ -+ /* set up digitiser */ -+ if (adcsel & 0x8000) -+ adcsel = ((adcsel & 0x7fff) + 3) << 12; -+ -+ if (wm->mach_ops && wm->mach_ops->pre_sample) -+ wm->mach_ops->pre_sample(adcsel); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay)); -+ -+ /* wait 3 AC97 time slots + delay for conversion */ -+ poll_delay (delay); -+ -+ /* wait for POLL to go low */ -+ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { -+ udelay(AC97_LINK_FRAME); -+ timeout--; -+ } -+ -+ if (timeout <= 0) { -+ /* If PDEN is set, we can get a timeout when pen goes up */ -+ if (is_pden(wm)) -+ wm->pen_probably_down = 0; -+ else -+ dbg ("adc sample timeout"); -+ return RC_PENUP; -+ } -+ -+ *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (wm->mach_ops && wm->mach_ops->post_sample) -+ wm->mach_ops->post_sample(adcsel); -+ -+ /* check we have correct sample */ -+ if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) { -+ dbg ("adc wrong sample, read %x got %x", adcsel, -+ *sample & WM97XX_ADCSEL_MASK); -+ return RC_PENUP; -+ } -+ -+ if (!(*sample & WM97XX_PEN_DOWN)) { -+ wm->pen_probably_down = 0; -+ return RC_PENUP; -+ } -+ -+ return RC_VALID; -+} -+ -+/* -+ * Sample the WM9705 touchscreen in polling mode -+ */ -+static int wm9705_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) -+{ -+ int rc; -+ -+ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID) -+ return rc; -+ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID) -+ return rc; -+ if (pil) { -+ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID) -+ return rc; -+ } else -+ data->p = DEFAULT_PRESSURE; -+ -+ return RC_VALID; -+} -+ -+/* -+ * Enable WM9705 continuous mode, i.e. touch data is streamed across an AC97 slot -+ */ -+static int wm9705_acc_enable (struct wm97xx* wm, int enable) -+{ -+ u16 dig1, dig2; -+ int ret = 0; -+ -+ dig1 = wm->dig[1]; -+ dig2 = wm->dig[2]; -+ -+ if (enable) { -+ /* continous mode */ -+ if (wm->mach_ops->acc_startup && (ret = wm->mach_ops->acc_startup(wm)) < 0) -+ return ret; -+ dig1 &= ~(WM97XX_CM_RATE_MASK | WM97XX_ADCSEL_MASK | -+ WM97XX_DELAY_MASK | WM97XX_SLT_MASK); -+ dig1 |= WM97XX_CTC | WM97XX_COO | WM97XX_SLEN | -+ WM97XX_DELAY (delay) | -+ WM97XX_SLT (wm->acc_slot) | -+ WM97XX_RATE (wm->acc_rate); -+ if (pil) -+ dig1 |= WM97XX_ADCSEL_PRES; -+ dig2 |= WM9705_PDEN; -+ } else { -+ dig1 &= ~(WM97XX_CTC | WM97XX_COO | WM97XX_SLEN); -+ dig2 &= ~WM9705_PDEN; -+ if (wm->mach_ops->acc_shutdown) -+ wm->mach_ops->acc_shutdown(wm); -+ } -+ -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); -+ return ret; -+} -+ -+struct wm97xx_codec_drv wm97xx_codec = { -+ .id = WM9705_ID2, -+ .name = "wm9705", -+ .poll_sample = wm9705_poll_sample, -+ .poll_touch = wm9705_poll_touch, -+ .acc_enable = wm9705_acc_enable, -+ .digitiser_ioctl = wm9705_digitiser_ioctl, -+}; -+ -+EXPORT_SYMBOL_GPL(wm97xx_codec); -+ -+/* Module information */ -+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); -+MODULE_DESCRIPTION("WM9705 Touch Screen Driver"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c -new file mode 100644 -index 0000000..99433e9 ---- /dev/null -+++ b/drivers/input/touchscreen/wm9712.c -@@ -0,0 +1,464 @@ -+/* -+ * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs. -+ * -+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. -+ * Author: Liam Girdwood -+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com -+ * Parts Copyright : Ian Molton -+ * Andrew Zabolotny -+ * Russell King -+ * -+ * This program 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. -+ * -+ * Revision history -+ * 4th Jul 2005 Initial version. -+ * 6th Sep 2006 Mike Arthur -+ * Added pre and post sample calls. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define TS_NAME "wm97xx" -+#define WM9712_VERSION "0.61" -+#define DEFAULT_PRESSURE 0xb0c0 -+ -+/* -+ * Debug -+ */ -+#if 0 -+#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) -+#else -+#define dbg(format, arg...) -+#endif -+#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) -+#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) -+#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) -+ -+/* -+ * Module parameters -+ */ -+ -+/* -+ * Set internal pull up for pen detect. -+ * -+ * Pull up is in the range 1.02k (least sensitive) to 64k (most sensitive) -+ * i.e. pull up resistance = 64k Ohms / rpu. -+ * -+ * Adjust this value if you are having problems with pen detect not -+ * detecting any down event. -+ */ -+static int rpu = 8; -+module_param(rpu, int, 0); -+MODULE_PARM_DESC(rpu, "Set internal pull up resitor for pen detect."); -+ -+/* -+ * Set current used for pressure measurement. -+ * -+ * Set pil = 2 to use 400uA -+ * pil = 1 to use 200uA and -+ * pil = 0 to disable pressure measurement. -+ * -+ * This is used to increase the range of values returned by the adc -+ * when measureing touchpanel pressure. -+ */ -+static int pil = 0; -+module_param(pil, int, 0); -+MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); -+ -+/* -+ * Set threshold for pressure measurement. -+ * -+ * Pen down pressure below threshold is ignored. -+ */ -+static int pressure = DEFAULT_PRESSURE & 0xfff; -+module_param(pressure, int, 0); -+MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); -+ -+/* -+ * Set adc sample delay. -+ * -+ * For accurate touchpanel measurements, some settling time may be -+ * required between the switch matrix applying a voltage across the -+ * touchpanel plate and the ADC sampling the signal. -+ * -+ * This delay can be set by setting delay = n, where n is the array -+ * position of the delay in the array delay_table below. -+ * Long delays > 1ms are supported for completeness, but are not -+ * recommended. -+ */ -+static int delay = 3; -+module_param(delay, int, 0); -+MODULE_PARM_DESC(delay, "Set adc sample delay."); -+ -+/* -+ * Set five_wire = 1 to use a 5 wire touchscreen. -+ * -+ * NOTE: Five wire mode does not allow for readback of pressure. -+ */ -+static int five_wire; -+module_param(five_wire, int, 0); -+MODULE_PARM_DESC(five_wire, "Set to '1' to use 5-wire touchscreen."); -+ -+/* -+ * Set adc mask function. -+ * -+ * Sources of glitch noise, such as signals driving an LCD display, may feed -+ * through to the touch screen plates and affect measurement accuracy. In -+ * order to minimise this, a signal may be applied to the MASK pin to delay or -+ * synchronise the sampling. -+ * -+ * 0 = No delay or sync -+ * 1 = High on pin stops conversions -+ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) -+ * 3 = Edge triggered, edge on pin starts conversion after delay param -+ */ -+static int mask = 0; -+module_param(mask, int, 0); -+MODULE_PARM_DESC(mask, "Set adc mask function."); -+ -+/* -+ * Coordinate Polling Enable. -+ * -+ * Set to 1 to enable coordinate polling. e.g. x,y[,p] is sampled together -+ * for every poll. -+ */ -+static int coord = 0; -+module_param(coord, int, 0); -+MODULE_PARM_DESC(coord, "Polling coordinate mode"); -+ -+/* -+ * ADC sample delay times in uS -+ */ -+static const int delay_table[] = { -+ 21, // 1 AC97 Link frames -+ 42, // 2 -+ 84, // 4 -+ 167, // 8 -+ 333, // 16 -+ 667, // 32 -+ 1000, // 48 -+ 1333, // 64 -+ 2000, // 96 -+ 2667, // 128 -+ 3333, // 160 -+ 4000, // 192 -+ 4667, // 224 -+ 5333, // 256 -+ 6000, // 288 -+ 0 // No delay, switch matrix always on -+}; -+ -+/* -+ * Delay after issuing a POLL command. -+ * -+ * The delay is 3 AC97 link frames + the touchpanel settling delay -+ */ -+static inline void poll_delay(int d) -+{ -+ udelay (3 * AC97_LINK_FRAME + delay_table [d]); -+} -+ -+/* -+ * set up the physical settings of the WM9712 -+ */ -+static void init_wm9712_phy(struct wm97xx* wm) -+{ -+ u16 dig1 = 0; -+ u16 dig2 = WM97XX_RPR | WM9712_RPU(1); -+ -+ /* WM9712 rpu */ -+ if (rpu) { -+ dig2 &= 0xffc0; -+ dig2 |= WM9712_RPU(rpu); -+ dbg("setting pen detect pull-up to %d Ohms",64000 / rpu); -+ } -+ -+ /* touchpanel pressure current*/ -+ if (pil == 2) { -+ dig2 |= WM9712_PIL; -+ dbg("setting pressure measurement current to 400uA."); -+ } else if (pil) -+ dbg("setting pressure measurement current to 200uA."); -+ if(!pil) -+ pressure = 0; -+ -+ /* WM9712 five wire */ -+ if (five_wire) { -+ dig2 |= WM9712_45W; -+ dbg("setting 5-wire touchscreen mode."); -+ } -+ -+ /* polling mode sample settling delay */ -+ if (delay < 0 || delay > 15) { -+ dbg("supplied delay out of range."); -+ delay = 4; -+ } -+ dig1 &= 0xff0f; -+ dig1 |= WM97XX_DELAY(delay); -+ dbg("setting adc sample delay to %d u Secs.", delay_table[delay]); -+ -+ /* mask */ -+ dig2 |= ((mask & 0x3) << 6); -+ if (mask) { -+ u16 reg; -+ /* Set GPIO4 as Mask Pin*/ -+ reg = wm97xx_reg_read(wm, AC97_MISC_AFE); -+ wm97xx_reg_write(wm, AC97_MISC_AFE, reg | WM97XX_GPIO_4); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_CFG); -+ wm97xx_reg_write(wm, AC97_GPIO_CFG, reg | WM97XX_GPIO_4); -+ } -+ -+ /* wait - coord mode */ -+ if(coord) -+ dig2 |= WM9712_WAIT; -+ -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); -+} -+ -+static int wm9712_digitiser_ioctl(struct wm97xx* wm, int cmd) -+{ -+ u16 dig2 = wm->dig[2]; -+ -+ switch(cmd) { -+ case WM97XX_DIG_START: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2 | WM97XX_PRP_DET_DIG); -+ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ -+ break; -+ case WM97XX_DIG_STOP: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2 & ~WM97XX_PRP_DET_DIG); -+ break; -+ case WM97XX_AUX_PREPARE: -+ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 0); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, WM97XX_PRP_DET_DIG); -+ break; -+ case WM97XX_DIG_RESTORE: -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, wm->dig_save[1]); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig_save[2]); -+ break; -+ case WM97XX_PHY_INIT: -+ init_wm9712_phy(wm); -+ break; -+ default: -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+static inline int is_pden (struct wm97xx* wm) -+{ -+ return wm->dig[2] & WM9712_PDEN; -+} -+ -+/* -+ * Read a sample from the WM9712 adc in polling mode. -+ */ -+static int wm9712_poll_sample (struct wm97xx* wm, int adcsel, int *sample) -+{ -+ int timeout = 5 * delay; -+ -+ if (!wm->pen_probably_down) { -+ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (!(data & WM97XX_PEN_DOWN)) -+ return RC_PENUP; -+ wm->pen_probably_down = 1; -+ } -+ -+ /* set up digitiser */ -+ if (adcsel & 0x8000) -+ adcsel = ((adcsel & 0x7fff) + 3) << 12; -+ -+ if (wm->mach_ops && wm->mach_ops->pre_sample) -+ wm->mach_ops->pre_sample(adcsel); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay)); -+ -+ /* wait 3 AC97 time slots + delay for conversion */ -+ poll_delay (delay); -+ -+ /* wait for POLL to go low */ -+ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { -+ udelay(AC97_LINK_FRAME); -+ timeout--; -+ } -+ -+ if (timeout <= 0) { -+ /* If PDEN is set, we can get a timeout when pen goes up */ -+ if (is_pden(wm)) -+ wm->pen_probably_down = 0; -+ else -+ dbg ("adc sample timeout"); -+ return RC_PENUP; -+ } -+ -+ *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (wm->mach_ops && wm->mach_ops->post_sample) -+ wm->mach_ops->post_sample(adcsel); -+ -+ /* check we have correct sample */ -+ if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) { -+ dbg ("adc wrong sample, read %x got %x", adcsel, -+ *sample & WM97XX_ADCSEL_MASK); -+ return RC_PENUP; -+ } -+ -+ if (!(*sample & WM97XX_PEN_DOWN)) { -+ wm->pen_probably_down = 0; -+ return RC_PENUP; -+ } -+ -+ return RC_VALID; -+} -+ -+/* -+ * Read a coord from the WM9712 adc in polling mode. -+ */ -+static int wm9712_poll_coord (struct wm97xx* wm, struct wm97xx_data *data) -+{ -+ int timeout = 5 * delay; -+ -+ if (!wm->pen_probably_down) { -+ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (!(data & WM97XX_PEN_DOWN)) -+ return RC_PENUP; -+ wm->pen_probably_down = 1; -+ } -+ -+ /* set up digitiser */ -+ if (wm->mach_ops && wm->mach_ops->pre_sample) -+ wm->mach_ops->pre_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); -+ -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, -+ WM97XX_COO | WM97XX_POLL | WM97XX_DELAY(delay)); -+ -+ /* wait 3 AC97 time slots + delay for conversion and read x */ -+ poll_delay(delay); -+ data->x = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ /* wait for POLL to go low */ -+ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { -+ udelay(AC97_LINK_FRAME); -+ timeout--; -+ } -+ -+ if (timeout <= 0) { -+ /* If PDEN is set, we can get a timeout when pen goes up */ -+ if (is_pden(wm)) -+ wm->pen_probably_down = 0; -+ else -+ dbg ("adc sample timeout"); -+ return RC_PENUP; -+ } -+ -+ /* read back y data */ -+ data->y = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (pil) -+ data->p = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ else -+ data->p = DEFAULT_PRESSURE; -+ -+ if (wm->mach_ops && wm->mach_ops->post_sample) -+ wm->mach_ops->post_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); -+ -+ /* check we have correct sample */ -+ if (!(data->x & WM97XX_ADCSEL_X) || !(data->y & WM97XX_ADCSEL_Y)) -+ goto err; -+ if(pil && !(data->p & WM97XX_ADCSEL_PRES)) -+ goto err; -+ -+ if (!(data->x & WM97XX_PEN_DOWN)) { -+ wm->pen_probably_down = 0; -+ return RC_PENUP; -+ } -+ return RC_VALID; -+err: -+ return RC_PENUP; -+} -+ -+/* -+ * Sample the WM9712 touchscreen in polling mode -+ */ -+static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) -+{ -+ int rc; -+ -+ if(coord) { -+ if((rc = wm9712_poll_coord(wm, data)) != RC_VALID) -+ return rc; -+ } else { -+ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID) -+ return rc; -+ -+ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID) -+ return rc; -+ -+ if (pil && !five_wire) { -+ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID) -+ return rc; -+ } else -+ data->p = DEFAULT_PRESSURE; -+ } -+ return RC_VALID; -+} -+ -+/* -+ * Enable WM9712 continuous mode, i.e. touch data is streamed across an AC97 slot -+ */ -+static int wm9712_acc_enable (struct wm97xx* wm, int enable) -+{ -+ u16 dig1, dig2; -+ int ret = 0; -+ -+ dig1 = wm->dig[1]; -+ dig2 = wm->dig[2]; -+ -+ if (enable) { -+ /* continous mode */ -+ if (wm->mach_ops->acc_startup && (ret = wm->mach_ops->acc_startup(wm)) < 0) -+ return ret; -+ dig1 &= ~(WM97XX_CM_RATE_MASK | WM97XX_ADCSEL_MASK | -+ WM97XX_DELAY_MASK | WM97XX_SLT_MASK); -+ dig1 |= WM97XX_CTC | WM97XX_COO | WM97XX_SLEN | -+ WM97XX_DELAY (delay) | -+ WM97XX_SLT (wm->acc_slot) | -+ WM97XX_RATE (wm->acc_rate); -+ if (pil) -+ dig1 |= WM97XX_ADCSEL_PRES; -+ dig2 |= WM9712_PDEN; -+ } else { -+ dig1 &= ~(WM97XX_CTC | WM97XX_COO | WM97XX_SLEN); -+ dig2 &= ~WM9712_PDEN; -+ if (wm->mach_ops->acc_shutdown) -+ wm->mach_ops->acc_shutdown(wm); -+ } -+ -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); -+ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); -+ return 0; -+} -+ -+struct wm97xx_codec_drv wm97xx_codec = { -+ .id = WM9712_ID2, -+ .name = "wm9712", -+ .poll_sample = wm9712_poll_sample, -+ .poll_touch = wm9712_poll_touch, -+ .acc_enable = wm9712_acc_enable, -+ .digitiser_ioctl = wm9712_digitiser_ioctl, -+}; -+ -+EXPORT_SYMBOL_GPL(wm97xx_codec); -+ -+/* Module information */ -+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); -+MODULE_DESCRIPTION("WM9712 Touch Screen Driver"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/input/touchscreen/wm9713.c b/drivers/input/touchscreen/wm9713.c -new file mode 100644 -index 0000000..42f5f30 ---- /dev/null -+++ b/drivers/input/touchscreen/wm9713.c -@@ -0,0 +1,461 @@ -+/* -+ * wm9713.c -- Codec touch driver for Wolfson WM9713 AC97 Codec. -+ * -+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. -+ * Author: Liam Girdwood -+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com -+ * Parts Copyright : Ian Molton -+ * Andrew Zabolotny -+ * Russell King -+ * -+ * This program 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. -+ * -+ * Revision history -+ * 6th Sep 2006 Mike Arthur -+ * Added pre and post sample calls. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define TS_NAME "wm97xx" -+#define WM9713_VERSION "0.53" -+#define DEFAULT_PRESSURE 0xb0c0 -+ -+/* -+ * Debug -+ */ -+#if 0 -+#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) -+#else -+#define dbg(format, arg...) -+#endif -+#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) -+#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) -+#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) -+ -+/* -+ * Module parameters -+ */ -+ -+/* -+ * Set internal pull up for pen detect. -+ * -+ * Pull up is in the range 1.02k (least sensitive) to 64k (most sensitive) -+ * i.e. pull up resistance = 64k Ohms / rpu. -+ * -+ * Adjust this value if you are having problems with pen detect not -+ * detecting any down event. -+ */ -+static int rpu = 8; -+module_param(rpu, int, 0); -+MODULE_PARM_DESC(rpu, "Set internal pull up resitor for pen detect."); -+ -+/* -+ * Set current used for pressure measurement. -+ * -+ * Set pil = 2 to use 400uA -+ * pil = 1 to use 200uA and -+ * pil = 0 to disable pressure measurement. -+ * -+ * This is used to increase the range of values returned by the adc -+ * when measureing touchpanel pressure. -+ */ -+static int pil = 0; -+module_param(pil, int, 0); -+MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); -+ -+/* -+ * Set threshold for pressure measurement. -+ * -+ * Pen down pressure below threshold is ignored. -+ */ -+static int pressure = DEFAULT_PRESSURE & 0xfff; -+module_param(pressure, int, 0); -+MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); -+ -+/* -+ * Set adc sample delay. -+ * -+ * For accurate touchpanel measurements, some settling time may be -+ * required between the switch matrix applying a voltage across the -+ * touchpanel plate and the ADC sampling the signal. -+ * -+ * This delay can be set by setting delay = n, where n is the array -+ * position of the delay in the array delay_table below. -+ * Long delays > 1ms are supported for completeness, but are not -+ * recommended. -+ */ -+static int delay = 4; -+module_param(delay, int, 0); -+MODULE_PARM_DESC(delay, "Set adc sample delay."); -+ -+/* -+ * Set adc mask function. -+ * -+ * Sources of glitch noise, such as signals driving an LCD display, may feed -+ * through to the touch screen plates and affect measurement accuracy. In -+ * order to minimise this, a signal may be applied to the MASK pin to delay or -+ * synchronise the sampling. -+ * -+ * 0 = No delay or sync -+ * 1 = High on pin stops conversions -+ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) -+ * 3 = Edge triggered, edge on pin starts conversion after delay param -+ */ -+static int mask = 0; -+module_param(mask, int, 0); -+MODULE_PARM_DESC(mask, "Set adc mask function."); -+ -+/* -+ * Coordinate Polling Enable. -+ * -+ * Set to 1 to enable coordinate polling. e.g. x,y[,p] is sampled together -+ * for every poll. -+ */ -+static int coord = 0; -+module_param(coord, int, 0); -+MODULE_PARM_DESC(coord, "Polling coordinate mode"); -+ -+/* -+ * ADC sample delay times in uS -+ */ -+static const int delay_table[] = { -+ 21, // 1 AC97 Link frames -+ 42, // 2 -+ 84, // 4 -+ 167, // 8 -+ 333, // 16 -+ 667, // 32 -+ 1000, // 48 -+ 1333, // 64 -+ 2000, // 96 -+ 2667, // 128 -+ 3333, // 160 -+ 4000, // 192 -+ 4667, // 224 -+ 5333, // 256 -+ 6000, // 288 -+ 0 // No delay, switch matrix always on -+}; -+ -+/* -+ * Delay after issuing a POLL command. -+ * -+ * The delay is 3 AC97 link frames + the touchpanel settling delay -+ */ -+static inline void poll_delay(int d) -+{ -+ udelay (3 * AC97_LINK_FRAME + delay_table [d]); -+} -+ -+/* -+ * set up the physical settings of the WM9713 -+ */ -+static void init_wm9713_phy(struct wm97xx* wm) -+{ -+ u16 dig1 = 0, dig2, dig3; -+ -+ /* default values */ -+ dig2 = WM97XX_DELAY(4) | WM97XX_SLT(5); -+ dig3= WM9712_RPU(1); -+ -+ /* rpu */ -+ if (rpu) { -+ dig3 &= 0xffc0; -+ dig3 |= WM9712_RPU(rpu); -+ info("setting pen detect pull-up to %d Ohms",64000 / rpu); -+ } -+ -+ /* touchpanel pressure */ -+ if (pil == 2) { -+ dig3 |= WM9712_PIL; -+ info("setting pressure measurement current to 400uA."); -+ } else if (pil) -+ info ("setting pressure measurement current to 200uA."); -+ if(!pil) -+ pressure = 0; -+ -+ /* sample settling delay */ -+ if (delay < 0 || delay > 15) { -+ info ("supplied delay out of range."); -+ delay = 4; -+ info("setting adc sample delay to %d u Secs.", delay_table[delay]); -+ } -+ dig2 &= 0xff0f; -+ dig2 |= WM97XX_DELAY(delay); -+ -+ /* mask */ -+ dig3 |= ((mask & 0x3) << 4); -+ if(coord) -+ dig3 |= WM9713_WAIT; -+ -+ wm->misc = wm97xx_reg_read(wm, 0x5a); -+ -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG2, dig2); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, dig3); -+ wm97xx_reg_write(wm, AC97_GPIO_STICKY, 0x0); -+} -+ -+static int wm9713_digitiser_ioctl(struct wm97xx* wm, int cmd) -+{ -+ u16 val = 0; -+ -+ switch(cmd){ -+ case WM97XX_DIG_START: -+ val = wm97xx_reg_read(wm, AC97_EXTENDED_MID); -+ wm97xx_reg_write(wm, AC97_EXTENDED_MID, val & 0x7fff); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2] | WM97XX_PRP_DET_DIG); -+ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ -+ break; -+ case WM97XX_DIG_STOP: -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2] & ~WM97XX_PRP_DET_DIG); -+ val = wm97xx_reg_read(wm, AC97_EXTENDED_MID); -+ wm97xx_reg_write(wm, AC97_EXTENDED_MID, val | 0x8000); -+ break; -+ case WM97XX_AUX_PREPARE: -+ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, 0); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG2, 0); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, WM97XX_PRP_DET_DIG); -+ break; -+ case WM97XX_DIG_RESTORE: -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, wm->dig_save[0]); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG2, wm->dig_save[1]); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig_save[2]); -+ break; -+ case WM97XX_PHY_INIT: -+ init_wm9713_phy(wm); -+ break; -+ default: -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+static inline int is_pden (struct wm97xx* wm) -+{ -+ return wm->dig[2] & WM9713_PDEN; -+} -+ -+/* -+ * Read a sample from the WM9713 adc in polling mode. -+ */ -+static int wm9713_poll_sample (struct wm97xx* wm, int adcsel, int *sample) -+{ -+ u16 dig1; -+ int timeout = 5 * delay; -+ -+ if (!wm->pen_probably_down) { -+ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (!(data & WM97XX_PEN_DOWN)) -+ return RC_PENUP; -+ wm->pen_probably_down = 1; -+ } -+ -+ /* set up digitiser */ -+ if (adcsel & 0x8000) -+ adcsel = 1 << ((adcsel & 0x7fff) + 3); -+ -+ dig1 = wm97xx_reg_read(wm, AC97_WM9713_DIG1); -+ dig1 &= ~WM9713_ADCSEL_MASK; -+ -+ if (wm->mach_ops && wm->mach_ops->pre_sample) -+ wm->mach_ops->pre_sample(adcsel); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1 | adcsel |WM9713_POLL); -+ -+ /* wait 3 AC97 time slots + delay for conversion */ -+ poll_delay(delay); -+ -+ /* wait for POLL to go low */ -+ while ((wm97xx_reg_read(wm, AC97_WM9713_DIG1) & WM9713_POLL) && timeout) { -+ udelay(AC97_LINK_FRAME); -+ timeout--; -+ } -+ -+ if (timeout <= 0) { -+ /* If PDEN is set, we can get a timeout when pen goes up */ -+ if (is_pden(wm)) -+ wm->pen_probably_down = 0; -+ else -+ dbg ("adc sample timeout"); -+ return RC_PENUP; -+ } -+ -+ *sample =wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (wm->mach_ops && wm->mach_ops->post_sample) -+ wm->mach_ops->post_sample(adcsel); -+ -+ /* check we have correct sample */ -+ if ((*sample & WM97XX_ADCSRC_MASK) != ffs(adcsel >> 1) << 12) { -+ dbg ("adc wrong sample, read %x got %x", adcsel, -+ *sample & WM97XX_ADCSRC_MASK); -+ return RC_PENUP; -+ } -+ -+ if (!(*sample & WM97XX_PEN_DOWN)) { -+ wm->pen_probably_down = 0; -+ return RC_PENUP; -+ } -+ -+ return RC_VALID; -+} -+ -+/* -+ * Read a coordinate from the WM9713 adc in polling mode. -+ */ -+static int wm9713_poll_coord (struct wm97xx* wm, struct wm97xx_data *data) -+{ -+ u16 dig1; -+ int timeout = 5 * delay; -+ -+ if (!wm->pen_probably_down) { -+ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (!(data & WM97XX_PEN_DOWN)) -+ return RC_PENUP; -+ wm->pen_probably_down = 1; -+ } -+ -+ /* set up digitiser */ -+ dig1 = wm97xx_reg_read(wm, AC97_WM9713_DIG1); -+ dig1 &= ~WM9713_ADCSEL_MASK; -+ if(pil) -+ dig1 |= WM97XX_ADCSEL_PRES; -+ -+ if (wm->mach_ops && wm->mach_ops->pre_sample) -+ wm->mach_ops->pre_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1 | WM9713_POLL | WM9713_COO); -+ -+ /* wait 3 AC97 time slots + delay for conversion */ -+ poll_delay(delay); -+ data->x = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ /* wait for POLL to go low */ -+ while ((wm97xx_reg_read(wm, AC97_WM9713_DIG1) & WM9713_POLL) && timeout) { -+ udelay(AC97_LINK_FRAME); -+ timeout--; -+ } -+ -+ if (timeout <= 0) { -+ /* If PDEN is set, we can get a timeout when pen goes up */ -+ if (is_pden(wm)) -+ wm->pen_probably_down = 0; -+ else -+ dbg ("adc sample timeout"); -+ return RC_PENUP; -+ } -+ -+ /* read back data */ -+ data->y = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ if (pil) -+ data->p = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); -+ else -+ data->p = DEFAULT_PRESSURE; -+ -+ if (wm->mach_ops && wm->mach_ops->post_sample) -+ wm->mach_ops->post_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); -+ -+ /* check we have correct sample */ -+ if (!(data->x & WM97XX_ADCSEL_X) || !(data->y & WM97XX_ADCSEL_Y)) -+ goto err; -+ if(pil && !(data->p & WM97XX_ADCSEL_PRES)) -+ goto err; -+ -+ if (!(data->x & WM97XX_PEN_DOWN)) { -+ wm->pen_probably_down = 0; -+ return RC_PENUP; -+ } -+ return RC_VALID; -+err: -+ return RC_PENUP; -+} -+ -+/* -+ * Sample the WM9713 touchscreen in polling mode -+ */ -+static int wm9713_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) -+{ -+ int rc; -+ -+ if(coord) { -+ if((rc = wm9713_poll_coord(wm, data)) != RC_VALID) -+ return rc; -+ } else { -+ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_X, &data->x)) != RC_VALID) -+ return rc; -+ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_Y, &data->y)) != RC_VALID) -+ return rc; -+ if (pil) { -+ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_PRES, &data->p)) != RC_VALID) -+ return rc; -+ } else -+ data->p = DEFAULT_PRESSURE; -+ } -+ return RC_VALID; -+} -+ -+/* -+ * Enable WM9713 continuous mode, i.e. touch data is streamed across an AC97 slot -+ */ -+static int wm9713_acc_enable (struct wm97xx* wm, int enable) -+{ -+ u16 dig1, dig2, dig3; -+ int ret = 0; -+ -+ dig1 = wm->dig[0]; -+ dig2 = wm->dig[1]; -+ dig3 = wm->dig[2]; -+ -+ if (enable) { -+ /* continous mode */ -+ if (wm->mach_ops->acc_startup && -+ (ret = wm->mach_ops->acc_startup(wm)) < 0) -+ return ret; -+ -+ dig1 &= ~WM9713_ADCSEL_MASK; -+ dig1 |= WM9713_CTC | WM9713_COO | WM9713_ADCSEL_X | WM9713_ADCSEL_Y; -+ if (pil) -+ dig1 |= WM9713_ADCSEL_PRES; -+ dig2 &= ~(WM97XX_DELAY_MASK | WM97XX_SLT_MASK | WM97XX_CM_RATE_MASK); -+ dig2 |= WM97XX_SLEN | WM97XX_DELAY (delay) | -+ WM97XX_SLT (wm->acc_slot) | WM97XX_RATE (wm->acc_rate); -+ dig3 |= WM9713_PDEN; -+ } else { -+ dig1 &= ~(WM9713_CTC | WM9713_COO); -+ dig2 &= ~WM97XX_SLEN; -+ dig3 &= ~WM9713_PDEN; -+ if (wm->mach_ops->acc_shutdown) -+ wm->mach_ops->acc_shutdown(wm); -+ } -+ -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG2, dig2); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, dig3); -+ return ret; -+} -+ -+struct wm97xx_codec_drv wm97xx_codec = { -+ .id = WM9713_ID2, -+ .name = "wm9713", -+ .poll_sample = wm9713_poll_sample, -+ .poll_touch = wm9713_poll_touch, -+ .acc_enable = wm9713_acc_enable, -+ .digitiser_ioctl = wm9713_digitiser_ioctl, -+}; -+ -+EXPORT_SYMBOL_GPL(wm97xx_codec); -+ -+/* Module information */ -+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); -+MODULE_DESCRIPTION("WM9713 Touch Screen Driver"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c -new file mode 100644 -index 0000000..87179d2 ---- /dev/null -+++ b/drivers/input/touchscreen/wm97xx-core.c -@@ -0,0 +1,859 @@ -+/* -+ * wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712 -+ * and WM9713 AC97 Codecs. -+ * -+ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. -+ * Author: Liam Girdwood -+ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com -+ * Parts Copyright : Ian Molton -+ * Andrew Zabolotny -+ * Russell King -+ * -+ * This program 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. -+ * -+ * Notes: -+ * -+ * Features: -+ * - supports WM9705, WM9712, WM9713 -+ * - polling mode -+ * - continuous mode (arch-dependent) -+ * - adjustable rpu/dpp settings -+ * - adjustable pressure current -+ * - adjustable sample settle delay -+ * - 4 and 5 wire touchscreens (5 wire is WM9712 only) -+ * - pen down detection -+ * - battery monitor -+ * - sample AUX adc's -+ * - power management -+ * - codec GPIO -+ * - codec event notification -+ * Todo -+ * - Support for async sampling control for noisy LCD's. -+ * -+ * Revision history -+ * 7th May 2003 Initial version. -+ * 6th June 2003 Added non module support and AC97 registration. -+ * 18th June 2003 Added AUX adc sampling. -+ * 23rd June 2003 Did some minimal reformatting, fixed a couple of -+ * codec_mutexing bugs and noted a race to fix. -+ * 24th June 2003 Added power management and fixed race condition. -+ * 10th July 2003 Changed to a misc device. -+ * 31st July 2003 Moved TS_EVENT and TS_CAL to wm97xx.h -+ * 8th Aug 2003 Added option for read() calling wm97xx_sample_touch() -+ * because some ac97_read/ac_97_write call schedule() -+ * 7th Nov 2003 Added Input touch event interface, stanley.cai@intel.com -+ * 13th Nov 2003 Removed h3600 touch interface, added interrupt based -+ * pen down notification and implemented continous mode -+ * on XScale arch. -+ * 16th Nov 2003 Ian Molton -+ * Modified so that it suits the new 2.6 driver model. -+ * 25th Jan 2004 Andrew Zabolotny -+ * Implemented IRQ-driven pen down detection, implemented -+ * the private API meant to be exposed to platform-specific -+ * drivers, reorganized the driver so that it supports -+ * an arbitrary number of devices. -+ * 1st Feb 2004 Moved continuous mode handling to a separate -+ * architecture-dependent file. For now only PXA -+ * built-in AC97 controller is supported (pxa-ac97-wm97xx.c). -+ * 11th Feb 2004 Reduced CPU usage by keeping a cached copy of both -+ * digitizer registers instead of reading them every time. -+ * A reorganization of the whole code for better -+ * error handling. -+ * 17th Apr 2004 Added BMON support. -+ * 17th Nov 2004 Added codec GPIO, codec event handling (real and virtual -+ * GPIOs) and 2.6 power management. -+ * 29th Nov 2004 Added WM9713 support. -+ * 4th Jul 2005 Moved codec specific code out to seperate files. -+ * 6th Sep 2006 Mike Arthur -+ * Added bus interface. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#define TS_NAME "wm97xx" -+#define WM_CORE_VERSION "0.64" -+#define DEFAULT_PRESSURE 0xb0c0 -+ -+ -+/* -+ * Touchscreen absolute values -+ * -+ * These parameters are used to help the input layer discard out of -+ * range readings and reduce jitter etc. -+ * -+ * o min, max:- indicate the min and max values your touch screen returns -+ * o fuzz:- use a higher number to reduce jitter -+ * -+ * The default values correspond to Mainstone II in QVGA mode -+ * -+ * Please read -+ * Documentation/input/input-programming.txt for more details. -+ */ -+ -+static int abs_x[3] = {350,3900,5}; -+module_param_array(abs_x, int, NULL, 0); -+MODULE_PARM_DESC(abs_x, "Touchscreen absolute X min, max, fuzz"); -+ -+static int abs_y[3] = {320,3750,40}; -+module_param_array(abs_y, int, NULL, 0); -+MODULE_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz"); -+ -+static int abs_p[3] = {0,150,4}; -+module_param_array(abs_p, int, NULL, 0); -+MODULE_PARM_DESC(abs_p, "Touchscreen absolute Pressure min, max, fuzz"); -+ -+/* -+ * Debug -+ */ -+#if 0 -+#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) -+#else -+#define dbg(format, arg...) -+#endif -+#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) -+#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) -+#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) -+ -+/* -+ * wm97xx IO access, all IO locking done by AC97 layer -+ */ -+int wm97xx_reg_read(struct wm97xx *wm, u16 reg) -+{ -+ if (wm->ac97) -+ return wm->ac97->bus->ops->read(wm->ac97, reg); -+ else -+ return -1; -+} -+EXPORT_SYMBOL_GPL(wm97xx_reg_read); -+ -+void wm97xx_reg_write(struct wm97xx *wm, u16 reg, u16 val) -+{ -+ /* cache digitiser registers */ -+ if(reg >= AC97_WM9713_DIG1 && reg <= AC97_WM9713_DIG3) -+ wm->dig[(reg - AC97_WM9713_DIG1) >> 1] = val; -+ -+ /* cache gpio regs */ -+ if(reg >= AC97_GPIO_CFG && reg <= AC97_MISC_AFE) -+ wm->gpio[(reg - AC97_GPIO_CFG) >> 1] = val; -+ -+ /* wm9713 irq reg */ -+ if(reg == 0x5a) -+ wm->misc = val; -+ -+ if (wm->ac97) -+ wm->ac97->bus->ops->write(wm->ac97, reg, val); -+} -+EXPORT_SYMBOL_GPL(wm97xx_reg_write); -+ -+/** -+ * wm97xx_read_aux_adc - Read the aux adc. -+ * @wm: wm97xx device. -+ * @adcsel: codec ADC to be read -+ * -+ * Reads the selected AUX ADC. -+ */ -+ -+int wm97xx_read_aux_adc(struct wm97xx *wm, u16 adcsel) -+{ -+ int power_adc = 0, auxval; -+ u16 power = 0; -+ -+ /* get codec */ -+ mutex_lock(&wm->codec_mutex); -+ -+ /* When the touchscreen is not in use, we may have to power up the AUX ADC -+ * before we can use sample the AUX inputs-> -+ */ -+ if (wm->id == WM9713_ID2 && -+ (power = wm97xx_reg_read(wm, AC97_EXTENDED_MID)) & 0x8000) { -+ power_adc = 1; -+ wm97xx_reg_write(wm, AC97_EXTENDED_MID, power & 0x7fff); -+ } -+ -+ /* Prepare the codec for AUX reading */ -+ wm->codec->digitiser_ioctl(wm, WM97XX_AUX_PREPARE); -+ -+ /* Turn polling mode on to read AUX ADC */ -+ wm->pen_probably_down = 1; -+ wm->codec->poll_sample(wm, adcsel, &auxval); -+ -+ if (power_adc) -+ wm97xx_reg_write(wm, AC97_EXTENDED_MID, power | 0x8000); -+ -+ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_RESTORE); -+ -+ wm->pen_probably_down = 0; -+ -+ mutex_unlock(&wm->codec_mutex); -+ return auxval & 0xfff; -+} -+EXPORT_SYMBOL_GPL(wm97xx_read_aux_adc); -+ -+/** -+ * wm97xx_get_gpio - Get the status of a codec GPIO. -+ * @wm: wm97xx device. -+ * @gpio: gpio -+ * -+ * Get the status of a codec GPIO pin -+ */ -+ -+wm97xx_gpio_status_t wm97xx_get_gpio(struct wm97xx *wm, u32 gpio) -+{ -+ u16 status; -+ wm97xx_gpio_status_t ret; -+ -+ mutex_lock(&wm->codec_mutex); -+ status = wm97xx_reg_read(wm, AC97_GPIO_STATUS); -+ -+ if (status & gpio) -+ ret = WM97XX_GPIO_HIGH; -+ else -+ ret = WM97XX_GPIO_LOW; -+ -+ mutex_unlock(&wm->codec_mutex); -+ return ret; -+} -+EXPORT_SYMBOL_GPL(wm97xx_get_gpio); -+ -+/** -+ * wm97xx_set_gpio - Set the status of a codec GPIO. -+ * @wm: wm97xx device. -+ * @gpio: gpio -+ * -+ * -+ * Set the status of a codec GPIO pin -+ */ -+ -+void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio, -+ wm97xx_gpio_status_t status) -+{ -+ u16 reg; -+ -+ mutex_lock(&wm->codec_mutex); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_STATUS); -+ -+ if (status & WM97XX_GPIO_HIGH) -+ reg |= gpio; -+ else -+ reg &= ~gpio; -+ -+ if (wm->id == WM9712_ID2) -+ wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg << 1); -+ else -+ wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg); -+ mutex_unlock(&wm->codec_mutex); -+} -+EXPORT_SYMBOL_GPL(wm97xx_set_gpio); -+ -+/* -+ * Codec GPIO pin configuration, this set's pin direction, polarity, -+ * stickyness and wake up. -+ */ -+void wm97xx_config_gpio(struct wm97xx *wm, u32 gpio, wm97xx_gpio_dir_t dir, -+ wm97xx_gpio_pol_t pol, wm97xx_gpio_sticky_t sticky, -+ wm97xx_gpio_wake_t wake) -+{ -+ u16 reg; -+ -+ mutex_lock(&wm->codec_mutex); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); -+ -+ if (pol == WM97XX_GPIO_POL_HIGH) -+ reg |= gpio; -+ else -+ reg &= ~gpio; -+ -+ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, reg); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_STICKY); -+ -+ if (sticky == WM97XX_GPIO_STICKY) -+ reg |= gpio; -+ else -+ reg &= ~gpio; -+ -+ wm97xx_reg_write(wm, AC97_GPIO_STICKY, reg); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); -+ -+ if (wake == WM97XX_GPIO_WAKE) -+ reg |= gpio; -+ else -+ reg &= ~gpio; -+ -+ wm97xx_reg_write(wm, AC97_GPIO_WAKEUP, reg); -+ reg = wm97xx_reg_read(wm, AC97_GPIO_CFG); -+ -+ if (dir == WM97XX_GPIO_IN) -+ reg |= gpio; -+ else -+ reg &= ~gpio; -+ -+ wm97xx_reg_write(wm, AC97_GPIO_CFG, reg); -+ mutex_unlock(&wm->codec_mutex); -+} -+EXPORT_SYMBOL_GPL(wm97xx_config_gpio); -+ -+/* -+ * Handle a pen down interrupt. -+ */ -+static void wm97xx_pen_irq_worker(struct work_struct *w) -+{ -+/* struct wm97xx *wm = (struct wm97xx *) ptr; */ -+ struct wm97xx *wm = container_of(w, struct wm97xx, pen_event_work); -+ -+ /* do we need to enable the touch panel reader */ -+ if (wm->id == WM9705_ID2) { -+ if (wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD) & WM97XX_PEN_DOWN) -+ wm->pen_is_down = 1; -+ else -+ wm->pen_is_down = 0; -+ wake_up_interruptible(&wm->pen_irq_wait); -+ } else { -+ u16 status, pol; -+ mutex_lock(&wm->codec_mutex); -+ status = wm97xx_reg_read(wm, AC97_GPIO_STATUS); -+ pol = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); -+ -+ if (WM97XX_GPIO_13 & pol & status) { -+ wm->pen_is_down = 1; -+ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, pol & ~WM97XX_GPIO_13); -+ } else { -+ wm->pen_is_down = 0; -+ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, pol | WM97XX_GPIO_13); -+ } -+ -+ if (wm->id == WM9712_ID2) -+ wm97xx_reg_write(wm, AC97_GPIO_STATUS, (status & ~WM97XX_GPIO_13) << 1); -+ else -+ wm97xx_reg_write(wm, AC97_GPIO_STATUS, status & ~WM97XX_GPIO_13); -+ mutex_unlock(&wm->codec_mutex); -+ wake_up_interruptible(&wm->pen_irq_wait); -+ } -+ -+ if (!wm->pen_is_down && wm->mach_ops && wm->mach_ops->acc_enabled) -+ wm->mach_ops->acc_pen_up(wm); -+ enable_irq(wm->pen_irq); -+} -+ -+/* -+ * Codec PENDOWN irq handler -+ * -+ * We have to disable the codec interrupt in the handler because it can -+ * take upto 1ms to clear the interrupt source. The interrupt is then enabled -+ * again in the slow handler when the source has been cleared. -+ */ -+static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id) -+{ -+ struct wm97xx *wm = (struct wm97xx *) dev_id; -+ disable_irq(wm->pen_irq); -+ queue_work(wm->pen_irq_workq, &wm->pen_event_work); -+ return IRQ_HANDLED; -+} -+ -+/* -+ * initialise pen IRQ handler and workqueue -+ */ -+static int wm97xx_init_pen_irq(struct wm97xx *wm) -+{ -+ u16 reg; -+ -+ INIT_WORK(&wm->pen_event_work, wm97xx_pen_irq_worker/* , wm */); -+ if ((wm->pen_irq_workq = -+ create_singlethread_workqueue("kwm97pen")) == NULL) { -+ err("could not create pen irq work queue"); -+ wm->pen_irq = 0; -+ return -EINVAL; -+ } -+ -+ -+ wm->pen_irq = IRQ_GPIO(90); -+ if (request_irq (wm->pen_irq, wm97xx_pen_interrupt, SA_SHIRQ, "wm97xx-pen", wm)) { -+ err("could not register codec pen down interrupt, will poll for pen down"); -+ destroy_workqueue(wm->pen_irq_workq); -+ wm->pen_irq = 0; -+ return -EINVAL; -+ } -+ -+ /* enable PEN down on wm9712/13 */ -+ if (wm->id != WM9705_ID2) { -+ reg = wm97xx_reg_read(wm, AC97_MISC_AFE); -+ wm97xx_reg_write(wm, AC97_MISC_AFE, reg & 0xfffb); -+ reg = wm97xx_reg_read(wm, 0x5a); -+ wm97xx_reg_write(wm, 0x5a, reg & ~0x0001); -+ } -+ -+ return 0; -+} -+ -+/* Private struct for communication between struct wm97xx_tshread -+ * and wm97xx_read_samples */ -+struct ts_state { -+ int sleep_time; -+ int min_sleep_time; -+}; -+ -+static int wm97xx_read_samples(struct wm97xx *wm, struct ts_state *state) -+{ -+ struct wm97xx_data data; -+ int rc; -+ -+ mutex_lock(&wm->codec_mutex); -+ -+ if (wm->mach_ops && wm->mach_ops->acc_enabled) -+ rc = wm->mach_ops->acc_pen_down(wm); -+ else -+ rc = wm->codec->poll_touch(wm, &data); -+ -+ if (rc & RC_PENUP) { -+ if (wm->pen_is_down) { -+ wm->pen_is_down = 0; -+ dbg("pen up"); -+ input_report_abs(wm->input_dev, ABS_PRESSURE, 0); -+ input_sync(wm->input_dev); -+ } else if (!(rc & RC_AGAIN)) { -+ /* We need high frequency updates only while pen is down, -+ * the user never will be able to touch screen faster than -+ * a few times per second... On the other hand, when the -+ * user is actively working with the touchscreen we don't -+ * want to lose the quick response. So we will slowly -+ * increase sleep time after the pen is up and quicky -+ * restore it to ~one task switch when pen is down again. -+ */ -+ if (state->sleep_time < HZ / 10) -+ state->sleep_time++; -+ } -+ -+ } else if (rc & RC_VALID) { -+ dbg("pen down: x=%x:%d, y=%x:%d, pressure=%x:%d\n", -+ data.x >> 12, data.x & 0xfff, data.y >> 12, -+ data.y & 0xfff, data.p >> 12, data.p & 0xfff); -+ input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff); -+ input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff); -+ input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff); -+ input_sync(wm->input_dev); -+ wm->pen_is_down = 1; -+ state->sleep_time = state->min_sleep_time; -+ } else if (rc & RC_PENDOWN) { -+ dbg("pen down"); -+ wm->pen_is_down = 1; -+ state->sleep_time = state->min_sleep_time; -+ } -+ -+ mutex_unlock(&wm->codec_mutex); -+ return rc; -+} -+ -+/* -+* The touchscreen sample reader thread. -+*/ -+static int wm97xx_ts_read(void *data) -+{ -+ int rc; -+ struct ts_state state; -+ struct wm97xx *wm = (struct wm97xx *) data; -+ -+ /* set up thread context */ -+ wm->ts_task = current; -+ daemonize("kwm97xxts"); -+ -+ if (wm->codec == NULL) { -+ wm->ts_task = NULL; -+ printk(KERN_ERR "codec is NULL, bailing\n"); -+ } -+ -+ complete(&wm->ts_init); -+ wm->pen_is_down = 0; -+ state.min_sleep_time = HZ >= 100 ? HZ / 100 : 1; -+ if (state.min_sleep_time < 1) -+ state.min_sleep_time = 1; -+ state.sleep_time = state.min_sleep_time; -+ -+ /* touch reader loop */ -+ while (wm->ts_task) { -+ do { -+ try_to_freeze(); -+ rc = wm97xx_read_samples(wm, &state); -+ } while (rc & RC_AGAIN); -+ if (!wm->pen_is_down && wm->pen_irq) { -+ /* Nice, we don't have to poll for pen down event */ -+ wait_event_interruptible(wm->pen_irq_wait, wm->pen_is_down); -+ } else { -+ set_task_state(current, TASK_INTERRUPTIBLE); -+ schedule_timeout(state.sleep_time); -+ } -+ } -+ complete_and_exit(&wm->ts_exit, 0); -+} -+ -+/** -+ * wm97xx_ts_input_open - Open the touch screen input device. -+ * @idev: Input device to be opened. -+ * -+ * Called by the input sub system to open a wm97xx touchscreen device. -+ * Starts the touchscreen thread and touch digitiser. -+ */ -+static int wm97xx_ts_input_open(struct input_dev *idev) -+{ -+ int ret = 0; -+ struct wm97xx *wm = (struct wm97xx *) idev->private; -+ -+ mutex_lock(&wm->codec_mutex); -+ /* first time opened ? */ -+ if (wm->ts_use_count++ == 0) { -+ /* start touchscreen thread */ -+ init_completion(&wm->ts_init); -+ init_completion(&wm->ts_exit); -+ ret = kernel_thread(wm97xx_ts_read, wm, CLONE_KERNEL); -+ -+ if (ret >= 0) { -+ wait_for_completion(&wm->ts_init); -+ if (wm->ts_task == NULL) -+ ret = -EINVAL; -+ } else { -+ mutex_unlock(&wm->codec_mutex); -+ return ret; -+ } -+ -+ /* start digitiser */ -+ if (wm->mach_ops && wm->mach_ops->acc_enabled) -+ wm->codec->acc_enable(wm, 1); -+ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_START); -+ -+ /* init pen down/up irq handling */ -+ if (wm->pen_irq) { -+ wm97xx_init_pen_irq(wm); -+ -+ if (wm->pen_irq == 0) { -+ /* we failed to get an irq for pen down events, -+ * so we resort to polling. kickstart the reader */ -+ wm->pen_is_down = 1; -+ wake_up_interruptible(&wm->pen_irq_wait); -+ } -+ } -+ } -+ -+ mutex_unlock(&wm->codec_mutex); -+ return 0; -+} -+ -+/** -+ * wm97xx_ts_input_close - Close the touch screen input device. -+ * @idev: Input device to be closed. -+ * -+ * Called by the input sub system to close a wm97xx touchscreen device. -+ * Kills the touchscreen thread and stops the touch digitiser. -+ */ -+ -+static void wm97xx_ts_input_close(struct input_dev *idev) -+{ -+ struct wm97xx *wm = (struct wm97xx *) idev->private; -+ -+ mutex_lock(&wm->codec_mutex); -+ if (--wm->ts_use_count == 0) { -+ /* destroy workqueues and free irqs */ -+ if (wm->pen_irq) { -+ free_irq(wm->pen_irq, wm); -+ destroy_workqueue(wm->pen_irq_workq); -+ } -+ -+ /* kill thread */ -+ if (wm->ts_task) { -+ wm->ts_task = NULL; -+ wm->pen_is_down = 1; -+ mutex_unlock(&wm->codec_mutex); -+ wake_up_interruptible(&wm->pen_irq_wait); -+ wait_for_completion(&wm->ts_exit); -+ wm->pen_is_down = 0; -+ mutex_lock(&wm->codec_mutex); -+ } -+ -+ /* stop digitiser */ -+ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_STOP); -+ if (wm->mach_ops && wm->mach_ops->acc_enabled) -+ wm->codec->acc_enable(wm, 0); -+ } -+ mutex_unlock(&wm->codec_mutex); -+} -+ -+/* -+ * Bus interface to allow for client drivers codec access -+ * e.g. battery monitor -+ */ -+static int wm97xx_bus_match(struct device *dev, struct device_driver *drv) -+{ -+ return !(strcmp(dev->bus_id,drv->name)); -+} -+ -+/* -+ * The AC97 audio driver will do all the Codec suspend and resume -+ * tasks. This is just for anything machine specific or extra. -+ */ -+static int wm97xx_bus_suspend(struct device *dev, pm_message_t state) -+{ -+ int ret = 0; -+ -+ if (dev->driver && dev->driver->suspend) -+ ret = dev->driver->suspend(dev, state); -+ -+ return ret; -+} -+ -+static int wm97xx_bus_resume(struct device *dev) -+{ -+ int ret = 0; -+ -+ if (dev->driver && dev->driver->resume) -+ ret = dev->driver->resume(dev); -+ -+ return ret; -+} -+ -+struct bus_type wm97xx_bus_type = { -+ .name = "wm97xx", -+ .match = wm97xx_bus_match, -+ .suspend = wm97xx_bus_suspend, -+ .resume = wm97xx_bus_resume, -+}; -+EXPORT_SYMBOL_GPL(wm97xx_bus_type); -+ -+static void wm97xx_release(struct device *dev) -+{ -+ kfree(dev); -+} -+ -+static int wm97xx_probe(struct device *dev) -+{ -+ struct wm97xx* wm; -+ int ret = 0, id = 0; -+ -+ if (!(wm = kzalloc(sizeof(struct wm97xx), GFP_KERNEL))) -+ return -ENOMEM; -+ mutex_init(&wm->codec_mutex); -+ -+ init_waitqueue_head(&wm->pen_irq_wait); -+ wm->dev = dev; -+ dev->driver_data = wm; -+ wm->ac97 = to_ac97_t(dev); -+ -+ /* check that we have a supported codec */ -+ if ((id = wm97xx_reg_read(wm, AC97_VENDOR_ID1)) != WM97XX_ID1) { -+ err("could not find a wm97xx, found a %x instead\n", id); -+ kfree(wm); -+ return -ENODEV; -+ } -+ -+ wm->id = wm97xx_reg_read(wm, AC97_VENDOR_ID2); -+ if(wm->id != wm97xx_codec.id) { -+ err("could not find a the selected codec, please build for wm97%2x", wm->id & 0xff); -+ kfree(wm); -+ return -ENODEV; -+ } -+ -+ if((wm->input_dev = input_allocate_device()) == NULL) { -+ kfree(wm); -+ return -ENOMEM; -+ } -+ -+ /* set up touch configuration */ -+ info("detected a wm97%2x codec", wm->id & 0xff); -+ wm->input_dev->name = "wm97xx touchscreen"; -+ wm->input_dev->open = wm97xx_ts_input_open; -+ wm->input_dev->close = wm97xx_ts_input_close; -+ set_bit(EV_ABS, wm->input_dev->evbit); -+ set_bit(ABS_X, wm->input_dev->absbit); -+ set_bit(ABS_Y, wm->input_dev->absbit); -+ set_bit(ABS_PRESSURE, wm->input_dev->absbit); -+ wm->input_dev->absmax[ABS_X] = abs_x[1]; -+ wm->input_dev->absmax[ABS_Y] = abs_y[1]; -+ wm->input_dev->absmax[ABS_PRESSURE] = abs_p[1]; -+ wm->input_dev->absmin[ABS_X] = abs_x[0]; -+ wm->input_dev->absmin[ABS_Y] = abs_y[0]; -+ wm->input_dev->absmin[ABS_PRESSURE] = abs_p[0]; -+ wm->input_dev->absfuzz[ABS_X] = abs_x[2]; -+ wm->input_dev->absfuzz[ABS_Y] = abs_y[2]; -+ wm->input_dev->absfuzz[ABS_PRESSURE] = abs_p[2]; -+ wm->input_dev->private = wm; -+ wm->codec = &wm97xx_codec; -+ if((ret = input_register_device(wm->input_dev)) < 0) { -+ kfree(wm); -+ return -ENOMEM; -+ } -+ -+ /* set up physical characteristics */ -+ wm->codec->digitiser_ioctl(wm, WM97XX_PHY_INIT); -+ -+ /* load gpio cache */ -+ wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG); -+ wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); -+ wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY); -+ wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); -+ wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS); -+ wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE); -+ -+ /* register our battery device */ -+ if (!(wm->battery_dev = kzalloc(sizeof(struct device), GFP_KERNEL))) { -+ ret = -ENOMEM; -+ goto batt_err; -+ } -+ wm->battery_dev->bus = &wm97xx_bus_type; -+ strcpy(wm->battery_dev->bus_id,"wm97xx-battery"); -+ wm->battery_dev->driver_data = wm; -+ wm->battery_dev->parent = dev; -+ wm->battery_dev->release = wm97xx_release; -+ if((ret = device_register(wm->battery_dev)) < 0) -+ goto batt_reg_err; -+ -+ /* register our extended touch device (for machine specific extensions) */ -+ if (!(wm->touch_dev = kzalloc(sizeof(struct device), GFP_KERNEL))) { -+ ret = -ENOMEM; -+ goto touch_err; -+ } -+ wm->touch_dev->bus = &wm97xx_bus_type; -+ strcpy(wm->touch_dev->bus_id,"wm97xx-touchscreen"); -+ wm->touch_dev->driver_data = wm; -+ wm->touch_dev->parent = dev; -+ wm->touch_dev->release = wm97xx_release; -+ if((ret = device_register(wm->touch_dev)) < 0) -+ goto touch_reg_err; -+ -+ return ret; -+ -+touch_reg_err: -+ kfree(wm->touch_dev); -+touch_err: -+ device_unregister(wm->battery_dev); -+batt_reg_err: -+ kfree(wm->battery_dev); -+batt_err: -+ input_unregister_device(wm->input_dev); -+ kfree(wm); -+ return ret; -+} -+ -+static int wm97xx_remove(struct device *dev) -+{ -+ struct wm97xx *wm = dev_get_drvdata(dev); -+ -+ /* Stop touch reader thread */ -+ if (wm->ts_task) { -+ wm->ts_task = NULL; -+ wm->pen_is_down = 1; -+ wake_up_interruptible(&wm->pen_irq_wait); -+ wait_for_completion(&wm->ts_exit); -+ } -+ device_unregister(wm->battery_dev); -+ device_unregister(wm->touch_dev); -+ input_unregister_device(wm->input_dev); -+ -+ kfree(wm); -+ return 0; -+} -+ -+#ifdef CONFIG_PM -+int wm97xx_resume(struct device* dev) -+{ -+ struct wm97xx *wm = dev_get_drvdata(dev); -+ -+ /* restore digitiser and gpio's */ -+ if(wm->id == WM9713_ID2) { -+ wm97xx_reg_write(wm, AC97_WM9713_DIG1, wm->dig[0]); -+ wm97xx_reg_write(wm, 0x5a, wm->misc); -+ if(wm->ts_use_count) { -+ u16 reg = wm97xx_reg_read(wm, AC97_EXTENDED_MID) & 0x7fff; -+ wm97xx_reg_write(wm, AC97_EXTENDED_MID, reg); -+ } -+ } -+ -+ wm97xx_reg_write(wm, AC97_WM9713_DIG2, wm->dig[1]); -+ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2]); -+ -+ wm97xx_reg_write(wm, AC97_GPIO_CFG, wm->gpio[0]); -+ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, wm->gpio[1]); -+ wm97xx_reg_write(wm, AC97_GPIO_STICKY, wm->gpio[2]); -+ wm97xx_reg_write(wm, AC97_GPIO_WAKEUP, wm->gpio[3]); -+ wm97xx_reg_write(wm, AC97_GPIO_STATUS, wm->gpio[4]); -+ wm97xx_reg_write(wm, AC97_MISC_AFE, wm->gpio[5]); -+ -+ return 0; -+} -+ -+#else -+#define wm97xx_resume NULL -+#endif -+ -+/* -+ * Machine specific operations -+ */ -+int wm97xx_register_mach_ops(struct wm97xx *wm, struct wm97xx_mach_ops *mach_ops) -+{ -+ mutex_lock(&wm->codec_mutex); -+ if(wm->mach_ops) { -+ mutex_unlock(&wm->codec_mutex); -+ return -EINVAL; -+ } -+ wm->mach_ops = mach_ops; -+ mutex_unlock(&wm->codec_mutex); -+ return 0; -+} -+EXPORT_SYMBOL_GPL(wm97xx_register_mach_ops); -+ -+void wm97xx_unregister_mach_ops(struct wm97xx *wm) -+{ -+ mutex_lock(&wm->codec_mutex); -+ wm->mach_ops = NULL; -+ mutex_unlock(&wm->codec_mutex); -+} -+EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops); -+ -+static struct device_driver wm97xx_driver = { -+ .name = "ac97", -+ .bus = &ac97_bus_type, -+ .owner = THIS_MODULE, -+ .probe = wm97xx_probe, -+ .remove = wm97xx_remove, -+ .resume = wm97xx_resume, -+}; -+ -+static int __init wm97xx_init(void) -+{ -+ int ret; -+ -+ info("version %s liam.girdwood@wolfsonmicro.com", WM_CORE_VERSION); -+ if((ret = bus_register(&wm97xx_bus_type)) < 0) -+ return ret; -+ return driver_register(&wm97xx_driver); -+} -+ -+static void __exit wm97xx_exit(void) -+{ -+ driver_unregister(&wm97xx_driver); -+ bus_unregister(&wm97xx_bus_type); -+} -+ -+module_init(wm97xx_init); -+module_exit(wm97xx_exit); -+ -+/* Module information */ -+MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); -+MODULE_DESCRIPTION("WM97xx Core - Touch Screen / AUX ADC / GPIO Driver"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig -index 4468cb3..01b4828 100644 ---- a/drivers/leds/Kconfig -+++ b/drivers/leds/Kconfig -@@ -101,6 +101,12 @@ config LEDS_GPIO - outputs. To be useful the particular board must have LEDs - and they must be connected to the GPIO lines. - -+config LEDS_EM_X270 -+ tristate "LED Support for the CompuLab EM-X270" -+ depends on LEDS_CLASS && MACH_EM_X270 -+ help -+ This option enables support for the LEDs on CompuLab EM-X270. -+ - comment "LED Triggers" - - config LEDS_TRIGGERS -diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile -index f8995c9..6d3941e 100644 ---- a/drivers/leds/Makefile -+++ b/drivers/leds/Makefile -@@ -17,6 +17,7 @@ obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o - obj-$(CONFIG_LEDS_H1940) += leds-h1940.o - obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o - obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o -+obj-$(CONFIG_LEDS_EM_X270) += leds-em-x270.o - - # LED Triggers - obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o -diff --git a/drivers/leds/leds-em-x270.c b/drivers/leds/leds-em-x270.c -new file mode 100644 -index 0000000..485e7da ---- /dev/null -+++ b/drivers/leds/leds-em-x270.c -@@ -0,0 +1,99 @@ -+/* -+ * LED Triggers Core -+ * -+ * Copyright 2007 CompuLab, Ltd. -+ * Author: Mike Rapoport -+ * -+ * Based on Corgi leds driver: -+ * Copyright 2005-2006 Openedhand Ltd. -+ * Author: Richard Purdie -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+static void em_x270_led_orange_set(struct led_classdev *led_cdev, -+ enum led_brightness value) -+{ -+ int on = 1; -+ int pwm_chop = 0; -+ -+ pr_info("%s: value = %d\n", __FUNCTION__, value); -+ if (value == LED_OFF) -+ on = 0; -+ else if (value == LED_HALF) -+ pwm_chop = 4; -+ -+ da9030_set_led(3, on, 0, 0, pwm_chop); -+} -+ -+static struct led_classdev em_x270_orange_led = { -+ .name = "em_x270:orange", -+ .default_trigger = "em-x270-battery.0-charging-or-full", -+ .brightness_set = em_x270_led_orange_set, -+}; -+ -+#ifdef CONFIG_PM -+static int em_x270_led_suspend(struct platform_device *dev, pm_message_t state) -+{ -+#ifdef CONFIG_LEDS_TRIGGERS -+ if (em_x270_orange_led.trigger && strcmp(em_x270_orange_led.trigger->name, "em-x270-battery-charging-or-full")) -+#endif -+ led_classdev_suspend(&em_x270_orange_led); -+ return 0; -+} -+ -+static int em_x270_led_resume(struct platform_device *dev) -+{ -+ led_classdev_resume(&em_x270_orange_led); -+ return 0; -+} -+#endif -+ -+static int em_x270_led_probe(struct platform_device *pdev) -+{ -+ return led_classdev_register(&pdev->dev, &em_x270_orange_led); -+} -+ -+static int em_x270_led_remove(struct platform_device *pdev) -+{ -+ led_classdev_unregister(&em_x270_orange_led); -+ return 0; -+} -+ -+static struct platform_driver em_x270_led_driver = { -+ .probe = em_x270_led_probe, -+ .remove = em_x270_led_remove, -+#ifdef CONFIG_PM -+ .suspend = em_x270_led_suspend, -+ .resume = em_x270_led_resume, -+#endif -+ .driver = { -+ .name = "em-x270-led", -+ }, -+}; -+ -+static int __init em_x270_led_init(void) -+{ -+ return platform_driver_register(&em_x270_led_driver); -+} -+ -+static void __exit em_x270_led_exit(void) -+{ -+ platform_driver_unregister(&em_x270_led_driver); -+} -+ -+module_init(em_x270_led_init); -+module_exit(em_x270_led_exit); -+ -+MODULE_AUTHOR("Mike Rapoport "); -+MODULE_DESCRIPTION("EX-X270 LED driver"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c -index 58e561e..7050e71 100644 ---- a/drivers/mtd/chips/jedec_probe.c -+++ b/drivers/mtd/chips/jedec_probe.c -@@ -38,7 +38,7 @@ - #define MANUFACTURER_ST 0x0020 - #define MANUFACTURER_TOSHIBA 0x0098 - #define MANUFACTURER_WINBOND 0x00da -- -+#define CONTINUATION_CODE 0x007f - - /* AMD */ - #define AM29DL800BB 0x22C8 -@@ -68,6 +68,10 @@ - #define AT49BV32X 0x00C8 - #define AT49BV32XT 0x00C9 - -+/* Eon */ -+#define EN29SL800BB 0x226B -+#define EN29SL800BT 0x22EA -+ - /* Fujitsu */ - #define MBM29F040C 0x00A4 - #define MBM29LV650UE 0x22D7 -@@ -632,6 +636,40 @@ static const struct amd_flash_info jedec_table[] = { - ERASEINFO(0x02000,8) - } - }, { -+ .mfr_id = 0x1c, -+ .dev_id = EN29SL800BT, -+ .name = "Eon EN29SL800BT", -+ .uaddr = { -+ [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ -+ [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */ -+ }, -+ .DevSize = SIZE_1MiB, -+ .CmdSet = P_ID_AMD_STD, -+ .NumEraseRegions= 4, -+ .regions = { -+ ERASEINFO(0x10000, 15), -+ ERASEINFO(0x08000, 1), -+ ERASEINFO(0x02000, 2), -+ ERASEINFO(0x04000, 1), -+ } -+ }, { -+ .mfr_id = 0x1c, -+ .dev_id = EN29SL800BB, -+ .name = "Eon EN29SL800BB", -+ .uaddr = { -+ [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ -+ [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */ -+ }, -+ .DevSize = SIZE_1MiB, -+ .CmdSet = P_ID_AMD_STD, -+ .NumEraseRegions= 4, -+ .regions = { -+ ERASEINFO(0x04000, 1), -+ ERASEINFO(0x02000, 2), -+ ERASEINFO(0x08000, 1), -+ ERASEINFO(0x10000, 15), -+ } -+ }, { - .mfr_id = MANUFACTURER_FUJITSU, - .dev_id = MBM29F040C, - .name = "Fujitsu MBM29F040C", -@@ -1769,9 +1807,21 @@ static inline u32 jedec_read_mfr(struct map_info *map, __u32 base, - { - map_word result; - unsigned long mask; -- u32 ofs = cfi_build_cmd_addr(0, cfi_interleave(cfi), cfi->device_type); -- mask = (1 << (cfi->device_type * 8)) -1; -- result = map_read(map, base + ofs); -+ int bank = 0; -+ -+ /* According to JEDEC "Standard Manufacturer's Identification Code" -+ * (http://www.jedec.org/download/search/jep106W.pdf) -+ * several first banks can contain 0x7f instead of actual ID -+ */ -+ do { -+ u32 ofs = cfi_build_cmd_addr(0 + (bank << 8), -+ cfi_interleave(cfi), -+ cfi->device_type); -+ mask = (1 << (cfi->device_type * 8)) -1; -+ result = map_read(map, base + ofs); -+ bank++; -+ } while ((result.x[0] & mask) == CONTINUATION_CODE); -+ - return result.x[0] & mask; - } - -diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c -index 738aa59..88dbbdf 100644 ---- a/drivers/net/dm9000.c -+++ b/drivers/net/dm9000.c -@@ -546,6 +546,7 @@ dm9000_probe(struct platform_device *pdev) - - if (id_val != DM9000_ID) { - printk("%s: wrong id: 0x%08x\n", CARDNAME, id_val); -+ ret = -ENODEV; - goto release; - } - -diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig -index 58c806e..3a16d9c 100644 ---- a/drivers/power/Kconfig -+++ b/drivers/power/Kconfig -@@ -49,4 +49,10 @@ config BATTERY_OLPC - help - Say Y to enable support for the battery on the OLPC laptop. - -+config BATTERY_EM_X270 -+ tristate "EM-X270 battery" -+ depends on DA9030 && MACH_EM_X270 -+ help -+ Say Y here to enable support for battery on EM-X270. -+ - endif # POWER_SUPPLY -diff --git a/drivers/power/Makefile b/drivers/power/Makefile -index 6413ded..dc9585e 100644 ---- a/drivers/power/Makefile -+++ b/drivers/power/Makefile -@@ -20,3 +20,4 @@ obj-$(CONFIG_APM_POWER) += apm_power.o - obj-$(CONFIG_BATTERY_DS2760) += ds2760_battery.o - obj-$(CONFIG_BATTERY_PMU) += pmu_battery.o - obj-$(CONFIG_BATTERY_OLPC) += olpc_battery.o -+obj-$(CONFIG_BATTERY_EM_X270) += em_x270_battery.o -diff --git a/drivers/power/em_x270_battery.c b/drivers/power/em_x270_battery.c -new file mode 100644 -index 0000000..2630c68 ---- /dev/null -+++ b/drivers/power/em_x270_battery.c -@@ -0,0 +1,579 @@ -+/* -+ * Power managemnet implementation for EM-X270 -+ * -+ * Copyright (C) 2007 CompuLab, Ltd. -+ * Author: Mike Rapoport -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ * -+ */ -+ -+#define DEBUG -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include "../i2c/chips/da9030.h" -+ -+#define VOLTAGE_MAX_DESIGN 4200000 /* 4.2V in uV */ -+#define VOLTAGE_MIN_DESIGN 3000000 /* 3V in uV */ -+ -+/* #define VCHARGE_MIN_THRESHOLD 72 /\* 4.5V *\/ */ -+ -+#define VCHARGE_MIN_THRESHOLD 60 /* ?.?V */ -+#define VCHARGE_MAX_THRESHOLD 89 /* 5.5V */ -+#define TBAT_LOW_THRESHOLD 197 /* 0oC */ -+#define TBAT_HIGH_THRESHOLD 78 /* 45oC */ -+#define TBAT_RESUME_THRESHOLD 100 /* 35oC */ -+#define VBAT_LOW_THRESHOLD 82 /* 3.498V */ -+#define VBAT_CRIT_THRESHOLD 62 /* 3.291V */ -+ -+struct da9030_charger { -+ struct device *dev; -+ -+ struct power_supply bat; -+ struct da9030_adc_res adc; -+ struct delayed_work work; -+ -+ int interval; -+ int status; -+ int mA; -+ int mV; -+ -+ int is_charging:1; -+ -+#ifdef CONFIG_DEBUG_FS -+ struct dentry *debug_file; -+#endif -+}; -+ -+static unsigned short tbat_readings[] = { -+ 300, 244, 200, 178, 163, 152, 144, 137, 131, -+ 126, 122, 118, 114, 111, 108, 105, 103, 101, -+ 98, 96, 94, 93, 91, 89, 88, 86, 85, -+ 83, 82, 81, 79, 78, 77, 76, 75, 74, -+ 73, 72, 71, 70, 69, 68, 67, 67, 66, -+ 65, 64, 63, 63, 62, 61, 60, 60, 59, -+ 58, 58, 57, 57, 56, 55, 55, 54, 53, -+ 53, 52, 52, 51, 51, 50, 50, 49, 49, -+ 48, 48, 47, 47, 46, 46, 45, 45, 44, -+ 44, 43, 43, 42, 42, 41, 41, 41, 40, -+ 40, 39, 39, 38, 38, 38, 37, 37, 36, -+ 36, 35, 35, 35, 34, 34, 34, 33, 33, -+ 32, 32, 32, 31, 31, 30, 30, 30, 29, -+ 29, 29, 28, 28, 28, 27, 27, 26, 26, -+ 26, 25, 25, 25, 24, 24, 24, 23, 23, -+ 23, 22, 22, 21, 21, 21, 20, 20, 20, -+ 19, 19, 19, 18, 18, 18, 17, 17, 17, -+ 16, 16, 16, 15, 15, 14, 14, 14, 13, -+ 13, 13, 12, 12, 12, 11, 11, 11, 10, -+ 10, 10, 9, 9, 8, 8, 8, 7, 7, -+ 7, 6, 6, 5, 5, 5, 4, 4, 3, -+ 3, 3, 2, 2, 1, 1, 1, 0, 0, -+ -1, -1, -1, -2, -2, -3, -3, -4, -4, -+ -5, -5, -6, -6, -6, -7, -7, -8, -9, -+ -9, -10, -10, -11, -11, -12, -12, -13, -14, -+ -14, -15, -16, -16, -17, -18, -18, -19, -20, -+ -21, -21, -22, -23, -24, -25, -26, -27, -28, -+ -30, -31, -32, -34, -35, -37, -39, -41, -44, -+ -47, -50, -56, -64, -+}; -+ -+#ifdef CONFIG_DEBUG_FS -+ -+#define REG2VOLT(x) ((((x) * 2650) >> 8) + 2650) -+ -+static int debug_show(struct seq_file *s, void *data) -+{ -+ struct da9030_charger *charger = s->private; -+ -+ seq_printf(s, "charger is %s\n", -+ charger->status & CHRG_CHARGER_ENABLE ? "on" : "off"); -+ if (charger->status & CHRG_CHARGER_ENABLE) { -+ seq_printf(s, "iset = %dmA, vset = %dmV\n", -+ charger->mA, charger->mV); -+ } -+ -+ seq_printf(s, "vbat_res = %d (%dmV)\n", -+ charger->adc.vbat_res, REG2VOLT(charger->adc.vbat_res)); -+ seq_printf(s, "vbatmin_res = %d (%dmV)\n", -+ charger->adc.vbatmin_res, -+ REG2VOLT(charger->adc.vbatmin_res)); -+ seq_printf(s, "vbatmintxon = %d (%dmV)\n", -+ charger->adc.vbatmintxon, -+ REG2VOLT(charger->adc.vbatmintxon)); -+ seq_printf(s, "ichmax_res = %d\n", charger->adc.ichmax_res); -+ seq_printf(s, "ichmin_res = %d\n", charger->adc.ichmin_res); -+ seq_printf(s, "ichaverage_res = %d\n", charger->adc.ichaverage_res); -+ seq_printf(s, "vchmax_res = %d (%dmV)\n", -+ charger->adc.vchmax_res, -+ REG2VOLT(charger->adc.vchmax_res)); -+ seq_printf(s, "vchmin_res = %d (%dmV)\n", -+ charger->adc.vchmin_res, -+ REG2VOLT(charger->adc.vchmin_res)); -+ seq_printf(s, "tbat_res = %d (%doC\n", charger->adc.tbat_res, -+ tbat_readings[charger->adc.tbat_res]); -+ seq_printf(s, "adc_in4_res = %d\n", charger->adc.adc_in4_res); -+ seq_printf(s, "adc_in5_res = %d\n", charger->adc.adc_in5_res); -+ -+ return 0; -+} -+ -+static int debug_open(struct inode *inode, struct file *file) -+{ -+ return single_open(file, debug_show, inode->i_private); -+} -+ -+static const struct file_operations debug_fops = { -+ .open = debug_open, -+ .read = seq_read, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+ -+static struct dentry* da9030_create_debugfs(struct da9030_charger *charger) -+{ -+ charger->debug_file = debugfs_create_file("charger", 0666, 0, charger, -+ &debug_fops); -+ return charger->debug_file; -+} -+ -+static void da9030_remove_debugfs(struct da9030_charger *charger) -+{ -+ debugfs_remove(charger->debug_file); -+} -+#else -+#define da9030_create_debugfs(x) NULL -+#define da9030_remove_debugfs(x) do {} while(0) -+#endif -+ -+static void da9030_set_charge(struct da9030_charger *charger, int on) -+{ -+/* int status = da9030_get_status(); */ -+ if (on) { -+ pr_debug("%s: enabling charger\n", __FUNCTION__); -+ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, -+ TBAT_RESUME_THRESHOLD, -+ TBAT_LOW_THRESHOLD); -+ da9030_set_charger(1, 1000, 4200); -+ charger->is_charging = 1; -+ } -+ else { -+ /* disable charger */ -+ pr_debug("%s: disabling charger\n", __FUNCTION__); -+ da9030_set_charger(0, 0, 0); -+ charger->is_charging = 0; -+ } -+} -+ -+static void da9030_charging_monitor(struct work_struct *work) -+{ -+ struct da9030_charger *charger; -+ int is_on; -+ unsigned int mA, mV; -+ -+ charger = container_of(work, struct da9030_charger, work.work); -+ -+ da9030_get_charger(&is_on, &mA, &mV); -+ da9030_read_adc(&charger->adc); -+ -+ charger->status = da9030_get_status(); -+ charger->mA = mA; -+ charger->mV = mV; -+ -+ /* we wake or boot with external power on */ -+ if (!is_on && (charger->status & STATUS_CHDET)) { -+ da9030_set_charge(charger, 1); -+ return; -+ } -+ -+ if (is_on) { -+/* pr_info("%s: mA = %d, mV = %d\n", __FUNCTION__, mA, mV); */ -+/* pr_info("%s: vchmin_res = %d, vchmax_res = %d\n", */ -+/* __FUNCTION__, charger->adc.vchmin_res, */ -+/* charger->adc.vchmax_res); */ -+/* pr_info("%s: tbat_res = %d\n", */ -+/* __FUNCTION__, charger->adc.tbat_res); */ -+ if (charger->adc.vbat_res > VBAT_LOW_THRESHOLD) { -+ /* update VBAT threshlods ? */ -+ da9030_set_reg(VBATMON, VBAT_LOW_THRESHOLD); -+ } -+ if (charger->adc.vchmax_res > VCHARGE_MAX_THRESHOLD || -+ charger->adc.vchmin_res < VCHARGE_MIN_THRESHOLD || -+ /* Tempreture readings are negative */ -+ charger->adc.tbat_res < TBAT_HIGH_THRESHOLD || -+ charger->adc.tbat_res > TBAT_LOW_THRESHOLD) { -+ /* disable charger */ -+ da9030_set_charge(charger, 0); -+ } -+ } -+ -+ /* reschedule for the next time */ -+ schedule_delayed_work(&charger->work, charger->interval); -+} -+ -+void da9030_battery_release(struct device * dev) -+{ -+} -+ -+static void da9030_external_power_changed(struct power_supply *psy) -+{ -+/* struct da9030_charger *charger; */ -+ -+/* charger = container_of(psy, struct da9030_charger, bat); */ -+/* pr_info("%s:\n", __FUNCTION__); */ -+/* da9030_set_charge(charger); */ -+} -+ -+struct da9030_battery_thresh { -+ int voltage; -+ int percentage; -+}; -+ -+static struct da9030_battery_thresh vbat_ranges[] = { -+ { 150, 100}, -+ { 149, 99}, -+ { 148, 98}, -+ { 147, 98}, -+ { 146, 97}, -+ { 145, 96}, -+ { 144, 96}, -+ { 143, 95}, -+ { 142, 94}, -+ { 141, 93}, -+ { 140, 92}, -+ { 139, 91}, -+ { 138, 90}, -+ { 137, 90}, -+ { 136, 89}, -+ { 135, 88}, -+ { 134, 88}, -+ { 133, 87}, -+ { 132, 86}, -+ { 131, 85}, -+ { 130, 83}, -+ { 129, 82}, -+ { 128, 81}, -+ { 127, 81}, -+ { 126, 80}, -+ { 125, 75}, -+ { 124, 74}, -+ { 123, 73}, -+ { 122, 70}, -+ { 121, 66}, -+ { 120, 65}, -+ { 119, 64}, -+ { 118, 64}, -+ { 117, 63}, -+ { 116, 59}, -+ { 115, 58}, -+ { 114, 57}, -+ { 113, 57}, -+ { 112, 56}, -+ { 111, 50}, -+ { 110, 49}, -+ { 109, 49}, -+ { 108, 48}, -+ { 107, 48}, -+ { 106, 33}, -+ { 105, 32}, -+ { 104, 32}, -+ { 103, 32}, -+ { 102, 31}, -+ { 101, 16}, -+ { 100, 15}, -+ { 99, 15}, -+ { 98, 15}, -+ { 97, 10}, -+ { 96, 9}, -+ { 95, 7}, -+ { 94, 3}, -+ { 93, 0}, -+}; -+ -+static enum power_supply_property da9030_bat_props[] = { -+ POWER_SUPPLY_PROP_STATUS, -+ POWER_SUPPLY_PROP_HEALTH, -+ POWER_SUPPLY_PROP_TECHNOLOGY, -+ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, -+ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, -+ POWER_SUPPLY_PROP_VOLTAGE_NOW, -+ POWER_SUPPLY_PROP_CURRENT_AVG, -+ POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ -+ POWER_SUPPLY_PROP_TEMP, -+ POWER_SUPPLY_PROP_MANUFACTURER, -+ POWER_SUPPLY_PROP_MODEL_NAME, -+}; -+ -+static void da9030_bat_check_status(union power_supply_propval *val) -+{ -+ int charger_on; -+ int status = da9030_get_status(); -+ -+ da9030_get_charger(&charger_on, 0, 0); -+ -+ /* FIXME: below code is very crude approximation of actual -+ states, we need to take into account voltage and current -+ measurements to determine actual charger state */ -+ if (status & STATUS_CHDET) { -+ if (charger_on) { -+ val->intval = POWER_SUPPLY_STATUS_CHARGING; -+ } -+ else { -+ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; -+ } -+ } -+ else { -+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING; -+ } -+} -+ -+static void da9030_bat_check_health(union power_supply_propval *val) -+{ -+ int fault_log = da9030_get_fault_log(); -+ -+ if (fault_log & FAULT_LOG_OVER_TEMP) { -+ val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; -+ } -+ else if (fault_log & FAULT_LOG_VBAT_OVER) { -+ val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE; -+ } -+ else { -+ val->intval = POWER_SUPPLY_HEALTH_GOOD; -+ } -+} -+ -+static int vbat_interpolate(int reg) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(vbat_ranges); i++ ) -+ if (vbat_ranges[i].voltage == reg) { -+ pr_debug("%s: voltage = %d, percentage = %d\n", -+ __FUNCTION__, vbat_ranges[i].voltage, -+ vbat_ranges[i].percentage); -+ return vbat_ranges[i].percentage; -+ } -+ -+ return 0; -+} -+ -+static int da9030_bat_get_property(struct power_supply *psy, -+ enum power_supply_property psp, -+ union power_supply_propval *val) -+{ -+ u32 reg; -+ struct da9030_charger *charger; -+ charger = container_of(psy, struct da9030_charger, bat); -+ -+ switch(psp) { -+ case POWER_SUPPLY_PROP_STATUS: -+ da9030_bat_check_status(val); -+ break; -+ case POWER_SUPPLY_PROP_HEALTH: -+ da9030_bat_check_health(val); -+ break; -+ case POWER_SUPPLY_PROP_TECHNOLOGY: -+ val->intval = POWER_SUPPLY_TECHNOLOGY_LIPO; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: -+ val->intval = VOLTAGE_MAX_DESIGN; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: -+ val->intval = VOLTAGE_MIN_DESIGN; -+ break; -+ case POWER_SUPPLY_PROP_VOLTAGE_NOW: -+ reg = charger->adc.vbat_res; -+ /* V = (reg / 256) * 2.65 + 2.65 (V) */ -+ val->intval = ((reg * 2650000) >> 8) + 2650000; -+ break; -+ case POWER_SUPPLY_PROP_CURRENT_AVG: -+ reg = charger->adc.ichaverage_res; -+ val->intval = reg; /* reg */ -+ break; -+ case POWER_SUPPLY_PROP_CAPACITY: -+ reg = charger->adc.vbat_res; -+ val->intval = vbat_interpolate(reg); -+ break; -+ case POWER_SUPPLY_PROP_TEMP: -+ reg = charger->adc.tbat_res; -+ val->intval = tbat_readings[reg]; -+ break; -+ case POWER_SUPPLY_PROP_MANUFACTURER: -+ val->strval = "MaxPower"; -+ pr_debug("%s: MFG = %s\n", __FUNCTION__, val->strval); -+ break; -+ case POWER_SUPPLY_PROP_MODEL_NAME: -+ val->strval = "LP555597P6H-FPS"; -+ pr_debug("%s: MODEL = %s\n", __FUNCTION__, val->strval); -+ break; -+ default: break; -+ } -+ -+ return 0; -+} -+ -+static void da9030_setup_battery(struct power_supply *bat) -+{ -+ bat->name = "em-x270-battery"; -+ bat->type = POWER_SUPPLY_TYPE_BATTERY; -+ bat->properties = da9030_bat_props; -+ bat->num_properties = ARRAY_SIZE(da9030_bat_props); -+ bat->get_property = da9030_bat_get_property; -+ bat->use_for_apm = 1; -+ bat->external_power_changed = da9030_external_power_changed; -+}; -+ -+static void da9030_chiover_callback(int event, void *_charger) -+{ -+ /* disable charger */ -+ struct da9030_charger *charger = _charger; -+ da9030_set_charge(charger, 0); -+} -+ -+static void da9030_tbat_callback(int event, void *_charger) -+{ -+ /* disable charger */ -+ struct da9030_charger *charger = _charger; -+ da9030_set_charge(charger, 0); -+} -+ -+static void da9030_vbat_callback(int event, void *_charger) -+{ -+ struct da9030_charger *charger = _charger; -+ da9030_read_adc(&charger->adc); -+ -+ if (charger->is_charging) { -+ if (charger->adc.vbat_res < VBAT_LOW_THRESHOLD) { -+ /* set VBAT threshold for critical */ -+ da9030_set_reg(VBATMON, VBAT_CRIT_THRESHOLD); -+ } -+ else if (charger->adc.vbat_res < VBAT_CRIT_THRESHOLD) { -+ /* notify the system of battery critical */ -+ apm_queue_event(APM_CRITICAL_SUSPEND); -+ } -+ } -+} -+ -+static void da9030_ccto_callback(int event, void *_charger) -+{ -+ /* x3 */ -+} -+ -+static void da9030_tcto_callback(int event, void *_charger) -+{ -+ /* x3 */ -+} -+ -+static void da9030_chdet_callback(int event, void *_charger) -+{ -+ struct da9030_charger *charger = _charger; -+ int status = da9030_get_status(); -+ da9030_set_charge(charger, !!(status & CHRG_CHARGER_ENABLE)); -+} -+ -+static int da9030_battery_probe(struct platform_device *pdev) -+{ -+ struct da9030_charger *charger; -+ -+ pr_debug("%s\n", __FUNCTION__); -+ charger = kzalloc(sizeof(*charger), GFP_KERNEL); -+ if (charger == NULL) { -+ return -ENOMEM; -+ } -+ -+ charger->dev = &pdev->dev; -+ -+ charger->interval = 10 * HZ; /* 10 seconds between monotor runs */ -+ da9030_setup_battery(&charger->bat); -+ -+ platform_set_drvdata(pdev, charger); -+ -+ da9030_enable_adc(); -+ -+ INIT_DELAYED_WORK(&charger->work, da9030_charging_monitor); -+ schedule_delayed_work(&charger->work, charger->interval); -+ -+ charger->debug_file = da9030_create_debugfs(charger); -+ -+ da9030_setup_battery(&charger->bat); -+ -+ da9030_register_callback(DA9030_IRQ_CHDET, -+ da9030_chdet_callback, -+ charger); -+ da9030_register_callback(DA9030_IRQ_VBATMON, -+ da9030_vbat_callback, -+ charger); -+ -+ /* critical condition events */ -+ da9030_register_callback(DA9030_IRQ_CHIOVER, -+ da9030_chiover_callback, -+ charger); -+ da9030_register_callback(DA9030_IRQ_TBAT, -+ da9030_tbat_callback, -+ charger); -+ -+ /* timer events */ -+ da9030_register_callback(DA9030_IRQ_TCTO, -+ da9030_tcto_callback, -+ charger); -+ da9030_register_callback(DA9030_IRQ_CCTO, -+ da9030_ccto_callback, -+ charger); -+ -+ power_supply_register(&pdev->dev, &charger->bat); -+ -+ return 0; -+} -+ -+static int da9030_battery_remove(struct platform_device *dev) -+{ -+ struct da9030_charger *charger = platform_get_drvdata(dev); -+ -+ pr_debug("%s\n", __FUNCTION__); -+ da9030_remove_debugfs(charger); -+ cancel_delayed_work(&charger->work); -+ power_supply_unregister(&charger->bat); -+ kfree(charger); -+ return 0; -+} -+ -+static struct platform_driver da9030_battery_driver = { -+ .driver = { -+ .name = "da9030-battery", -+ .owner = THIS_MODULE, -+ }, -+ .probe = da9030_battery_probe, -+ .remove = da9030_battery_remove, -+}; -+ -+static int da9030_battery_init(void) -+{ -+ pr_debug("%s\n", __FUNCTION__); -+ -+ return platform_driver_register(&da9030_battery_driver); -+} -+ -+static void da9030_battery_exit(void) -+{ -+ pr_debug("%s\n", __FUNCTION__); -+ -+ platform_driver_unregister(&da9030_battery_driver); -+} -+ -+module_init(da9030_battery_init); -+module_exit(da9030_battery_exit); -+ -+MODULE_DESCRIPTION("DA9030 charger driver"); -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig -index 767aed5..4c44a7a 100644 ---- a/drivers/usb/gadget/Kconfig -+++ b/drivers/usb/gadget/Kconfig -@@ -195,6 +195,26 @@ config USB_M66592 - default USB_GADGET - select USB_GADGET_SELECTED - -+config USB_GADGET_PXA27X -+ boolean "PXA 27x" -+ depends on ARCH_PXA && PXA27x -+ help -+ Intel's PXA 27x series XScale ARM-5TE processors include -+ an integrated full speed USB 1.1 device controller. -+ -+ It has 23 endpoints, as well as endpoint zero (for control -+ transfers). -+ -+ Say "y" to link the driver statically, or "m" to build a -+ dynamically linked module called "pxa27x_udc" and force all -+ gadget drivers to also be dynamically linked. -+ -+config USB_PXA27X -+ tristate -+ depends on USB_GADGET_PXA27X -+ default USB_GADGET -+ select USB_GADGET_SELECTED -+ - config USB_GADGET_GOKU - boolean "Toshiba TC86C001 'Goku-S'" - depends on PCI -diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile -index 1bc0f03..b8743bf 100644 ---- a/drivers/usb/gadget/Makefile -+++ b/drivers/usb/gadget/Makefile -@@ -9,6 +9,7 @@ obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o - obj-$(CONFIG_USB_NET2280) += net2280.o - obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o - obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o -+obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o - obj-$(CONFIG_USB_GOKU) += goku_udc.o - obj-$(CONFIG_USB_OMAP) += omap_udc.o - obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o -diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c -index 3aa46cf..d7d5550 100644 ---- a/drivers/usb/gadget/epautoconf.c -+++ b/drivers/usb/gadget/epautoconf.c -@@ -228,14 +228,19 @@ find_ep (struct usb_gadget *gadget, const char *name) - * - * On failure, this returns a null endpoint descriptor. - */ --struct usb_ep * __devinit usb_ep_autoconfig ( -+struct usb_ep * usb_ep_autoconfig ( - struct usb_gadget *gadget, -- struct usb_endpoint_descriptor *desc -+ struct usb_endpoint_descriptor *desc, -+ struct usb_endpoint_config *epconfig, int numconfigs - ) - { - struct usb_ep *ep; - u8 type; - -+ /* Use device specific ep allocation code if provided */ -+ if (gadget->ops->ep_alloc) -+ return gadget->ops->ep_alloc(gadget, desc, epconfig, numconfigs); -+ - type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; - - /* First, apply chip-specific "best usage" knowledge. -diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c -index 593e235..87aa9fb 100644 ---- a/drivers/usb/gadget/ether.c -+++ b/drivers/usb/gadget/ether.c -@@ -1350,6 +1350,10 @@ static void rndis_response_complete (struct usb_ep *ep, struct usb_request *req) - /* done sending after USB_CDC_GET_ENCAPSULATED_RESPONSE */ - } - -+#ifdef CONFIG_USB_GADGET_PXA27X -+int write_ep0_zlp(void); -+#endif -+ - static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req) - { - struct eth_dev *dev = ep->driver_data; -@@ -1360,6 +1364,10 @@ static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req) - status = rndis_msg_parser (dev->rndis_config, (u8 *) req->buf); - if (status < 0) - ERROR(dev, "%s: rndis parse error %d\n", __FUNCTION__, status); -+ -+#ifdef CONFIG_USB_GADGET_PXA27X -+ write_ep0_zlp(); -+#endif - spin_unlock(&dev->lock); - } - -@@ -2287,7 +2295,8 @@ eth_bind (struct usb_gadget *gadget) - struct eth_dev *dev; - struct net_device *net; - u8 cdc = 1, zlp = 1, rndis = 1; -- struct usb_ep *in_ep, *out_ep, *status_ep = NULL; -+ struct usb_ep *in_ep = NULL , *out_ep = NULL, *status_ep = NULL; -+ struct usb_endpoint_config ep_config[2]; - int status = -ENOMEM; - int gcnum; - -@@ -2386,7 +2395,30 @@ eth_bind (struct usb_gadget *gadget) - - /* all we really need is bulk IN/OUT */ - usb_ep_autoconfig_reset (gadget); -- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc); -+ -+ ep_config[0].config = DEV_CONFIG_VALUE; -+#if defined(DEV_CONFIG_CDC) -+ ep_config[0].interface = data_intf.bInterfaceNumber; -+ ep_config[0].altinterface = data_intf.bAlternateSetting; -+#else /* DEV_CONFIG_SUBSET */ -+ ep_config[0].interface = subset_data_intf.bInterfaceNumber; -+ ep_config[0].altinterface = subset_data_intf.bAlternateSetting; -+#endif -+ -+#ifdef CONFIG_USB_ETH_RNDIS -+ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE; -+#ifdef CONFIG_USB_GADGET_PXA27X -+ ep_config[1].interface = 0; -+#else -+ ep_config[1].interface = rndis_data_intf.bInterfaceNumber; -+#endif -+ ep_config[1].altinterface = rndis_data_intf.bAlternateSetting; -+ -+ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2); -+#else -+ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 1); -+#endif -+ - if (!in_ep) { - autoconf_fail: - dev_err (&gadget->dev, -@@ -2396,7 +2428,12 @@ autoconf_fail: - } - in_ep->driver_data = in_ep; /* claim */ - -- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc); -+#ifdef CONFIG_USB_ETH_RNDIS -+ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2); -+#else -+ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 1); -+#endif -+ - if (!out_ep) - goto autoconf_fail; - out_ep->driver_data = out_ep; /* claim */ -@@ -2406,7 +2443,25 @@ autoconf_fail: - * Since some hosts expect one, try to allocate one anyway. - */ - if (cdc || rndis) { -- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc); -+#ifdef DEV_CONFIG_CDC -+ ep_config[0].config = DEV_CONFIG_VALUE; -+ ep_config[0].interface = control_intf.bInterfaceNumber; -+ ep_config[0].altinterface = control_intf.bAlternateSetting; -+#endif -+#ifdef CONFIG_USB_ETH_RNDIS -+ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE; -+ ep_config[1].interface = rndis_control_intf.bInterfaceNumber; -+ ep_config[1].altinterface = rndis_control_intf.bAlternateSetting; -+#endif -+ -+#if defined(DEV_CONFIG_CDC) && defined(CONFIG_USB_ETH_RNDIS) -+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 2); -+#elif defined(CONFIG_USB_ETH_RNDIS) -+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[1], 1); -+#else -+ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 1); -+#endif -+ - if (status_ep) { - status_ep->driver_data = status_ep; /* claim */ - } else if (rndis) { -diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c -index 965ad7b..b9cd8c9 100644 ---- a/drivers/usb/gadget/file_storage.c -+++ b/drivers/usb/gadget/file_storage.c -@@ -3841,6 +3841,7 @@ static int __init fsg_bind(struct usb_gadget *gadget) - struct usb_ep *ep; - struct usb_request *req; - char *pathbuf, *p; -+ struct usb_endpoint_config ep_config; - - fsg->gadget = gadget; - set_gadget_data(gadget, fsg); -@@ -3911,21 +3912,25 @@ static int __init fsg_bind(struct usb_gadget *gadget) - } - - /* Find all the endpoints we will use */ -+ ep_config.config = CONFIG_VALUE; -+ ep_config.interface = intf_desc.bInterfaceNumber; -+ ep_config.altinterface = intf_desc.bAlternateSetting; -+ - usb_ep_autoconfig_reset(gadget); -- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc); -+ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, &ep_config, 1); - if (!ep) - goto autoconf_fail; - ep->driver_data = fsg; // claim the endpoint - fsg->bulk_in = ep; - -- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc); -+ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, &ep_config, 1); - if (!ep) - goto autoconf_fail; - ep->driver_data = fsg; // claim the endpoint - fsg->bulk_out = ep; - - if (transport_is_cbi()) { -- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc); -+ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, &ep_config, 1); - if (!ep) - goto autoconf_fail; - ep->driver_data = fsg; // claim the endpoint -diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c -new file mode 100644 -index 0000000..d4270d4 ---- /dev/null -+++ b/drivers/usb/gadget/pxa27x_udc.c -@@ -0,0 +1,2387 @@ -+/* -+ * Handles the Intel 27x USB Device Controller (UDC) -+ * -+ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker) -+ * Copyright (C) 2003 Robert Schwebel, Pengutronix -+ * Copyright (C) 2003 Benedikt Spranger, Pengutronix -+ * Copyright (C) 2003 David Brownell -+ * Copyright (C) 2003 Joshua Wise -+ * Copyright (C) 2004 Intel Corporation -+ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer) -+ * Copyright (C) 2005-2006 Openedhand Ltd. (Richard Purdie) -+ * -+ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * -+ */ -+ -+#undef DEBUG -+//#define DEBUG 1 -+//#define VERBOSE DBG_VERBOSE -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+#include -+ -+/* -+ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x -+ * series processors. -+ * -+ * Such controller drivers work with a gadget driver. The gadget driver -+ * returns descriptors, implements configuration and data protocols used -+ * by the host to interact with this device, and allocates endpoints to -+ * the different protocol interfaces. The controller driver virtualizes -+ * usb hardware so that the gadget drivers will be more portable. -+ * -+ * This UDC hardware wants to implement a bit too much USB protocol. The -+ * biggest issue is that the endpoints have to be setup before the controller -+ * can be enabled and each endpoint can only have one configuration, interface -+ * and alternative interface number. Once enabled, these cannot be changed -+ * without a controller reset. -+ * -+ * Intel Errata #22 mentions issues when changing alternate interface. -+ * The exact meaning of this remains uncertain as gadget drivers using alternate -+ * interfaces such as CDC-Ethernet appear to work... -+ */ -+ -+#define DRIVER_VERSION "01-01-2006" -+#define DRIVER_DESC "PXA 27x USB Device Controller driver" -+ -+static const char driver_name [] = "pxa27x_udc"; -+ -+static const char ep0name [] = "ep0"; -+ -+ -+#define USE_DMA -+//#undef USE_DMA -+ -+#ifdef CONFIG_PROC_FS -+#define UDC_PROC_FILE -+#endif -+ -+#include "pxa27x_udc.h" -+ -+#ifdef USE_DMA -+static int use_dma = 1; -+module_param(use_dma, bool, 0); -+MODULE_PARM_DESC(use_dma, "true to use dma"); -+ -+static void dma_nodesc_handler(int dmach, void *_ep); -+static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req); -+ -+#define DMASTR " (dma support)" -+ -+#else /* !USE_DMA */ -+#define DMASTR " (pio only)" -+#endif -+ -+#define UDCISR0_IR0 0x3 -+#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP) -+#define UDCICR_INT_MASK UDCISR_INT_MASK -+ -+#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME) -+ -+static void pxa27x_ep_fifo_flush(struct usb_ep *ep); -+static void nuke(struct pxa27x_ep *, int status); -+static void udc_init_ep(struct pxa27x_udc *dev); -+ -+ -+/* -+ * Endpoint Functions -+ */ -+static void pio_irq_enable(int ep_num) -+{ -+ if (ep_num < 16) -+ UDCICR0 |= 3 << (ep_num * 2); -+ else { -+ ep_num -= 16; -+ UDCICR1 |= 3 << (ep_num * 2); -+ } -+} -+ -+static void pio_irq_disable(int ep_num) -+{ -+ ep_num &= 0xf; -+ if (ep_num < 16) -+ UDCICR0 &= ~(3 << (ep_num * 2)); -+ else { -+ ep_num -= 16; -+ UDCICR1 &= ~(3 << (ep_num * 2)); -+ } -+} -+ -+/* The UDCCR reg contains mask and interrupt status bits, -+ * so using '|=' isn't safe as it may ack an interrupt. -+ */ -+#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE) -+ -+static inline void udc_set_mask_UDCCR(int mask) -+{ -+ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS); -+} -+ -+static inline void udc_clear_mask_UDCCR(int mask) -+{ -+ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS); -+} -+ -+static inline void udc_ack_int_UDCCR(int mask) -+{ -+ /* udccr contains the bits we dont want to change */ -+ __u32 udccr = UDCCR & UDCCR_MASK_BITS; -+ -+ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS); -+} -+ -+/* -+ * Endpoint enable/disable -+ * -+ * Not much to do here as the ep_alloc function sets up most things. Once -+ * enabled, not much of the pxa27x configuration can be changed. -+ * -+ */ -+static int pxa27x_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ struct pxa27x_udc *dev; -+ -+ if (!_ep || !desc || _ep->name == ep0name -+ || desc->bDescriptorType != USB_DT_ENDPOINT -+ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) { -+ dev_err(ep->dev->dev, "%s, bad ep or descriptor\n", __FUNCTION__); -+ return -EINVAL; -+ } -+ -+ /* xfer types must match, except that interrupt ~= bulk */ -+ if( ep->ep_type != USB_ENDPOINT_XFER_BULK -+ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) { -+ dev_err(ep->dev->dev, "%s, %s type mismatch\n", __FUNCTION__, _ep->name); -+ return -EINVAL; -+ } -+ -+ /* hardware _could_ do smaller, but driver doesn't */ -+ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK -+ && le16_to_cpu (desc->wMaxPacketSize) -+ != BULK_FIFO_SIZE) -+ || !desc->wMaxPacketSize) { -+ dev_err(ep->dev->dev, "%s, bad %s maxpacket\n", __FUNCTION__, _ep->name); -+ return -ERANGE; -+ } -+ -+ dev = ep->dev; -+ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) { -+ dev_err(ep->dev->dev, "%s, bogus device state\n", __FUNCTION__); -+ return -ESHUTDOWN; -+ } -+ -+ ep->desc = desc; -+ ep->dma = -1; -+ ep->stopped = 0; -+ ep->pio_irqs = ep->dma_irqs = 0; -+ ep->usb_ep->maxpacket = le16_to_cpu(desc->wMaxPacketSize); -+ -+ /* flush fifo (mostly for OUT buffers) */ -+ pxa27x_ep_fifo_flush(_ep); -+ -+ /* ... reset halt state too, if we could ... */ -+ -+#ifdef USE_DMA -+ /* for (some) bulk and ISO endpoints, try to get a DMA channel and -+ * bind it to the endpoint. otherwise use PIO. -+ */ -+ dev_dbg(ep->dev->dev, "%s: called attributes=%d\n", __FUNCTION__, ep->ep_type); -+ switch (ep->ep_type) { -+ case USB_ENDPOINT_XFER_ISOC: -+ if (le16_to_cpu(desc->wMaxPacketSize) % 32) -+ break; -+ // fall through -+ case USB_ENDPOINT_XFER_BULK: -+ if (!use_dma || !ep->reg_drcmr) -+ break; -+ ep->dma = pxa_request_dma((char *)_ep->name, (le16_to_cpu(desc->wMaxPacketSize) > 64) -+ ? DMA_PRIO_MEDIUM : DMA_PRIO_LOW, dma_nodesc_handler, ep); -+ if (ep->dma >= 0) { -+ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma; -+ dev_dbg(ep->dev->dev, "%s using dma%d\n", _ep->name, ep->dma); -+ } -+ default: -+ break; -+ } -+#endif -+ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name); -+ return 0; -+} -+ -+static int pxa27x_ep_disable(struct usb_ep *_ep) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ unsigned long flags; -+ -+ if (!_ep || !ep->desc) { -+ dev_err(ep->dev->dev, "%s, %s not enabled\n", __FUNCTION__, -+ _ep ? _ep->name : NULL); -+ return -EINVAL; -+ } -+ local_irq_save(flags); -+ nuke(ep, -ESHUTDOWN); -+ -+#ifdef USE_DMA -+ if (ep->dma >= 0) { -+ *ep->reg_drcmr = 0; -+ pxa_free_dma(ep->dma); -+ ep->dma = -1; -+ } -+#endif -+ -+ /* flush fifo (mostly for IN buffers) */ -+ pxa27x_ep_fifo_flush(_ep); -+ -+ ep->desc = 0; -+ ep->stopped = 1; -+ -+ local_irq_restore(flags); -+ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name); -+ return 0; -+} -+ -+ -+ -+/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers -+ * must still pass correctly initialized endpoints, since other controller -+ * drivers may care about how it's currently set up (dma issues etc). -+ */ -+ -+/* -+ * pxa27x_ep_alloc_request - allocate a request data structure -+ */ -+static struct usb_request * -+pxa27x_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags) -+{ -+ struct pxa27x_request *req; -+ -+ req = kzalloc(sizeof *req, gfp_flags); -+ if (!req) -+ return 0; -+ -+ INIT_LIST_HEAD(&req->queue); -+ return &req->req; -+} -+ -+ -+/* -+ * pxa27x_ep_free_request - deallocate a request data structure -+ */ -+static void -+pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req) -+{ -+ struct pxa27x_request *req; -+ -+ req = container_of(_req, struct pxa27x_request, req); -+ WARN_ON(!list_empty(&req->queue)); -+ kfree(req); -+} -+ -+ -+/*-------------------------------------------------------------------------*/ -+ -+/* -+ * done - retire a request; caller blocked irqs -+ */ -+static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status) -+{ -+ list_del_init(&req->queue); -+ if (likely (req->req.status == -EINPROGRESS)) -+ req->req.status = status; -+ else -+ status = req->req.status; -+ -+ if (status && status != -ESHUTDOWN) -+ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n", -+ ep->usb_ep->name, &req->req, status, -+ req->req.actual, req->req.length); -+ -+ /* don't modify queue heads during completion callback */ -+ req->req.complete(ep->usb_ep, &req->req); -+} -+ -+ -+static inline void ep0_idle(struct pxa27x_udc *dev) -+{ -+ dev->ep0state = EP0_IDLE; -+} -+ -+static int write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max) -+{ -+ u32 *buf; -+ int length, count, remain; -+ -+ buf = (u32*)(req->req.buf + req->req.actual); -+ prefetch(buf); -+ -+ /* how big will this packet be? */ -+ length = min(req->req.length - req->req.actual, max); -+ req->req.actual += length; -+ -+ remain = length & 0x3; -+ count = length & ~(0x3); -+ -+ //dev_dbg(ep->dev->dev, "Length %d, Remain %d, Count %d\n",length, remain, count); -+ -+ while (likely(count)) { -+ //dev_dbg(ep->dev->dev, "Sending:0x%x\n", *buf); -+ *uddr = *buf++; -+ count -= 4; -+ } -+ -+ if (remain) { -+ volatile u8* reg=(u8*)uddr; -+ char *rd =(u8*)buf; -+ -+ while (remain--) { -+ *reg=*rd++; -+ } -+ } -+ -+ return length; -+} -+ -+/* -+ * write to an IN endpoint fifo, as many packets as possible. -+ * irqs will use this to write the rest later. -+ * caller guarantees at least one packet buffer is ready (or a zlp). -+ */ -+static int -+write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) -+{ -+ unsigned max; -+ -+ max = le16_to_cpu(ep->desc->wMaxPacketSize); -+ do { -+ int count, is_last, is_short; -+ -+ //dev_dbg(ep->dev->dev, "write_fifo7 %x\n", *ep->reg_udccsr); -+ -+ if (*ep->reg_udccsr & UDCCSR_PC) { -+ //dev_dbg(ep->dev->dev, "Transmit Complete\n"); -+ *ep->reg_udccsr = UDCCSR_PC | (*ep->reg_udccsr & UDCCSR_MASK); -+ } -+ -+ if (*ep->reg_udccsr & UDCCSR_TRN) { -+ //dev_dbg(ep->dev->dev, "Clearing Underrun\n"); -+ *ep->reg_udccsr = UDCCSR_TRN | (*ep->reg_udccsr & UDCCSR_MASK); -+ } -+ //dev_dbg(ep->dev->dev, "write_fifo8 %x\n", *ep->reg_udccsr); -+ -+ count = write_packet(ep->reg_udcdr, req, max); -+ -+ /* last packet is usually short (or a zlp) */ -+ if (unlikely (count != max)) -+ is_last = is_short = 1; -+ else { -+ if (likely(req->req.length != req->req.actual) -+ || req->req.zero) -+ is_last = 0; -+ else -+ is_last = 1; -+ /* interrupt/iso maxpacket may not fill the fifo */ -+ is_short = unlikely (max < ep->fifo_size); -+ } -+ -+ //dev_dbg(ep->dev->dev, "write_fifo0 %x\n", *ep->reg_udccsr); -+ -+ dev_dbg(ep->dev->dev, "wrote %s count:%d bytes%s%s %d left %p\n", -+ ep->usb_ep->name, count, -+ is_last ? "/L" : "", is_short ? "/S" : "", -+ req->req.length - req->req.actual, &req->req); -+ -+ /* let loose that packet. maybe try writing another one, -+ * double buffering might work. -+ */ -+ -+ if (is_short) -+ *ep->reg_udccsr = UDCCSR_SP | (*ep->reg_udccsr & UDCCSR_MASK); -+ -+ dev_dbg(ep->dev->dev, "write_fifo0.5 %x\n", *ep->reg_udccsr); -+ -+ /* requests complete when all IN data is in the FIFO */ -+ if (is_last) { -+ done(ep, req, 0); -+ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) { -+ pio_irq_disable(ep->pxa_ep_num); -+ //dev_dbg(ep->dev->dev, "write_fifo1 %x\n", *ep->reg_udccsr); -+#ifdef USE_DMA -+ /* unaligned data and zlps couldn't use dma */ -+ if (unlikely(!list_empty(&ep->queue))) { -+ req = list_entry(ep->queue.next, -+ struct pxa27x_request, queue); -+ kick_dma(ep,req); -+ return 0; -+ } -+#endif -+ } -+ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr); -+ return 1; -+ } -+ -+ // TODO experiment: how robust can fifo mode tweaking be? -+ // double buffering is off in the default fifo mode, which -+ // prevents TFS from being set here. -+ -+ } while (*ep->reg_udccsr & UDCCSR_FS); -+ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr); -+ return 0; -+} -+ -+/* caller asserts req->pending (ep0 irq status nyet cleared); starts -+ * ep0 data stage. these chips want very simple state transitions. -+ */ -+static inline -+void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag) -+{ -+ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC; -+ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP); -+ dev->req_pending = 0; -+ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n", -+ __FUNCTION__, tag, UDCCSR0, flags); -+} -+ -+static int -+write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) -+{ -+ unsigned count; -+ int is_short; -+ -+ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE); -+ ep->dev->stats.write.bytes += count; -+ -+ /* last packet "must be" short (or a zlp) */ -+ is_short = (count != EP0_FIFO_SIZE); -+ -+ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count, -+ req->req.length - req->req.actual, &req->req); -+ -+ if (unlikely (is_short)) { -+ if (ep->dev->req_pending) -+ ep0start(ep->dev, UDCCSR0_IPR, "short IN"); -+ else -+ UDCCSR0 = UDCCSR0_IPR; -+ -+ count = req->req.length; -+ done(ep, req, 0); -+ ep0_idle(ep->dev); -+#if 0 -+ /* This seems to get rid of lost status irqs in some cases: -+ * host responds quickly, or next request involves config -+ * change automagic, or should have been hidden, or ... -+ * -+ * FIXME get rid of all udelays possible... -+ */ -+ if (count >= EP0_FIFO_SIZE) { -+ count = 100; -+ do { -+ if ((UDCCSR0 & UDCCSR0_OPC) != 0) { -+ /* clear OPC, generate ack */ -+ UDCCSR0 = UDCCSR0_OPC; -+ break; -+ } -+ count--; -+ udelay(1); -+ } while (count); -+ } -+#endif -+ } else if (ep->dev->req_pending) -+ ep0start(ep->dev, 0, "IN"); -+ return is_short; -+} -+ -+ -+/* -+ * read_fifo - unload packet(s) from the fifo we use for usb OUT -+ * transfers and put them into the request. caller should have made -+ * sure there's at least one packet ready. -+ * -+ * returns true if the request completed because of short packet or the -+ * request buffer having filled (and maybe overran till end-of-packet). -+ */ -+static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) -+{ -+ for (;;) { -+ u32 *buf; -+ int bufferspace, count, is_short; -+ -+ /* make sure there's a packet in the FIFO.*/ -+ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0)) -+ break; -+ buf =(u32*) (req->req.buf + req->req.actual); -+ prefetchw(buf); -+ bufferspace = req->req.length - req->req.actual; -+ -+ /* read all bytes from this packet */ -+ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) { -+ count = 0x3ff & *ep->reg_udcbcr; -+ req->req.actual += min(count, bufferspace); -+ } else /* zlp */ -+ count = 0; -+ -+ is_short = (count < ep->usb_ep->maxpacket); -+ dev_dbg(ep->dev->dev, "read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n", -+ ep->usb_ep->name, *ep->reg_udccsr, count, -+ is_short ? "/S" : "", -+ &req->req, req->req.actual, req->req.length); -+ -+ count = min(count, bufferspace); -+ while (likely (count > 0)) { -+ *buf++ = *ep->reg_udcdr; -+ count -= 4; -+ } -+ dev_dbg(ep->dev->dev, "Buf:0x%p\n", req->req.buf); -+ -+ *ep->reg_udccsr = UDCCSR_PC; -+ /* RPC/RSP/RNE could now reflect the other packet buffer */ -+ -+ /* completion */ -+ if (is_short || req->req.actual == req->req.length) { -+ done(ep, req, 0); -+ if (list_empty(&ep->queue)) -+ pio_irq_disable(ep->pxa_ep_num); -+ return 1; -+ } -+ -+ /* finished that packet. the next one may be waiting... */ -+ } -+ return 0; -+} -+ -+/* -+ * special ep0 version of the above. no UBCR0 or double buffering; status -+ * handshaking is magic. most device protocols don't need control-OUT. -+ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other -+ * protocols do use them. -+ */ -+static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) -+{ -+ u32 *buf, word; -+ unsigned bufferspace; -+ -+ buf = (u32*) (req->req.buf + req->req.actual); -+ bufferspace = req->req.length - req->req.actual; -+ -+ while (UDCCSR0 & UDCCSR0_RNE) { -+ word = UDCDR0; -+ -+ if (unlikely (bufferspace == 0)) { -+ /* this happens when the driver's buffer -+ * is smaller than what the host sent. -+ * discard the extra data. -+ */ -+ if (req->req.status != -EOVERFLOW) -+ dev_info(ep->dev->dev, "%s overflow\n", ep->usb_ep->name); -+ req->req.status = -EOVERFLOW; -+ } else { -+ *buf++ = word; -+ req->req.actual += 4; -+ bufferspace -= 4; -+ } -+ } -+ -+ UDCCSR0 = UDCCSR0_OPC ; -+ -+ /* completion */ -+ if (req->req.actual >= req->req.length) -+ return 1; -+ -+ /* finished that packet. the next one may be waiting... */ -+ return 0; -+} -+ -+#ifdef USE_DMA -+ -+#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE) -+static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req) -+{ -+ u32 dcmd = 0; -+ u32 len = req->req.length; -+ u32 buf = req->req.dma; -+ u32 fifo = io_v2p((u32)ep->reg_udcdr); -+ -+ buf += req->req.actual; -+ len -= req->req.actual; -+ ep->dma_con = 0; -+ -+ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n", -+ __FUNCTION__, &req->req, req->req.length, -+ req->req.actual,ep->dma); -+ -+ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */ -+ DCSR(ep->dma) = DCSR_NODESC; -+ if (buf & 0x3) -+ DALGN |= 1 << ep->dma; -+ else -+ DALGN &= ~(1 << ep->dma); -+ -+ if (ep->dir_in) { -+ DSADR(ep->dma) = buf; -+ DTADR(ep->dma) = fifo; -+ if (len > MAX_IN_DMA) { -+ len= MAX_IN_DMA; -+ ep->dma_con =1 ; -+ } else if (len >= ep->usb_ep->maxpacket) { -+ if ((ep->dma_con = (len % ep->usb_ep->maxpacket) != 0)) -+ len = ep->usb_ep->maxpacket; -+ } -+ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN -+ | DCMD_FLOWTRG | DCMD_INCSRCADDR; -+ } else { -+ DSADR(ep->dma) = fifo; -+ DTADR(ep->dma) = buf; -+ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN -+ | DCMD_FLOWSRC | DCMD_INCTRGADDR; -+ } -+ *ep->reg_udccsr = UDCCSR_DME; -+ DCMD(ep->dma) = dcmd; -+ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \ -+ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0); -+ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD; -+ DCSR(ep->dma) |= DCSR_RUN; -+} -+ -+static void cancel_dma(struct pxa27x_ep *ep) -+{ -+ struct pxa27x_request *req; -+ u32 tmp; -+ -+ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue)) -+ return; -+ -+ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma)); -+ DCSR(ep->dma) = 0; -+ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0) -+ cpu_relax(); -+ -+ req = list_entry(ep->queue.next, struct pxa27x_request, queue); -+ tmp = DCMD(ep->dma) & DCMD_LENGTH; -+ req->req.actual = req->req.length - tmp; -+ -+ /* the last tx packet may be incomplete, so flush the fifo. -+ * FIXME correct req.actual if we can -+ */ -+ *ep->reg_udccsr = UDCCSR_FEF; -+} -+ -+static void dma_nodesc_handler(int dmach, void *_ep) -+{ -+ struct pxa27x_ep *ep = _ep; -+ struct pxa27x_request *req, *req_next; -+ u32 dcsr, tmp, completed; -+ -+ local_irq_disable(); -+ -+ req = list_entry(ep->queue.next, struct pxa27x_request, queue); -+ -+ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf); -+ -+ ep->dma_irqs++; -+ ep->dev->stats.irqs++; -+ -+ completed = 0; -+ -+ dcsr = DCSR(dmach); -+ DCSR(ep->dma) &= ~DCSR_RUN; -+ -+ if (dcsr & DCSR_BUSERR) { -+ DCSR(dmach) = DCSR_BUSERR; -+ dev_err(ep->dev->dev, "DMA Bus Error\n"); -+ req->req.status = -EIO; -+ completed = 1; -+ } else if (dcsr & DCSR_ENDINTR) { -+ DCSR(dmach) = DCSR_ENDINTR; -+ if (ep->dir_in) { -+ tmp = req->req.length - req->req.actual; -+ /* Last packet is a short one*/ -+ if (tmp < ep->usb_ep->maxpacket) { -+ int count = 0; -+ -+ *ep->reg_udccsr = UDCCSR_SP | \ -+ (*ep->reg_udccsr & UDCCSR_MASK); -+ /*Wait for packet out */ -+ while( (count++ < 10000) && \ -+ !(*ep->reg_udccsr & UDCCSR_FS)); -+ if (count >= 10000) -+ DMSG("Failed to send packet\n"); -+ else -+ DMSG("%s: short packet sent len:%d," -+ "length:%d,actual:%d\n", __FUNCTION__, -+ tmp, req->req.length, req->req.actual); -+ req->req.actual = req->req.length; -+ completed = 1; -+ /* There are still packets to transfer */ -+ } else if ( ep->dma_con) { -+ DMSG("%s: more packets,length:%d,actual:%d\n", -+ __FUNCTION__,req->req.length, -+ req->req.actual); -+ req->req.actual += ep->usb_ep->maxpacket; -+ completed = 0; -+ } else { -+ DMSG("%s: no more packets,length:%d," -+ "actual:%d\n", __FUNCTION__, -+ req->req.length, req->req.actual); -+ req->req.actual = req->req.length; -+ completed = 1; -+ } -+ } else { -+ req->req.actual = req->req.length; -+ completed = 1; -+ } -+ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA -+ int remain,udccsr ; -+ -+ DCSR(dmach) = DCSR_EORINTR; -+ remain = DCMD(dmach) & DCMD_LENGTH; -+ req->req.actual = req->req.length - remain; -+ -+ udccsr = *ep->reg_udccsr; -+ if (udccsr & UDCCSR_SP) { -+ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK); -+ completed = 1; -+ } -+ DMSG("%s: length:%d actual:%d\n", -+ __FUNCTION__, req->req.length, req->req.actual); -+ } else -+ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n", -+ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach)); -+ -+ if (likely(completed)) { -+ if (req->queue.next != &ep->queue) { -+ req_next = list_entry(req->queue.next, -+ struct pxa27x_request, queue); -+ kick_dma(ep, req_next); -+ } -+ done(ep, req, 0); -+ } else { -+ kick_dma(ep, req); -+ } -+ -+ local_irq_enable(); -+} -+ -+#endif -+/*-------------------------------------------------------------------------*/ -+ -+static int -+pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags) -+{ -+ struct pxa27x_virt_ep *virt_ep; -+ struct pxa27x_ep *ep; -+ struct pxa27x_request *req; -+ struct pxa27x_udc *dev; -+ unsigned long flags; -+ -+ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ ep = virt_ep->pxa_ep; -+ -+ req = container_of(_req, struct pxa27x_request, req); -+ if (unlikely (!_req || !_req->complete || !_req->buf|| -+ !list_empty(&req->queue))) { -+ DMSG("%s, bad params\n", __FUNCTION__); -+ return -EINVAL; -+ } -+ -+ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))) { -+ DMSG("%s, bad ep\n", __FUNCTION__); -+ return -EINVAL; -+ } -+ -+ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num); -+ -+ dev = ep->dev; -+ if (unlikely (!dev->driver -+ || dev->gadget.speed == USB_SPEED_UNKNOWN)) { -+ DMSG("%s, bogus device state\n", __FUNCTION__); -+ return -ESHUTDOWN; -+ } -+ -+ /* iso is always one packet per request, that's the only way -+ * we can report per-packet status. that also helps with dma. -+ */ -+ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC -+ && req->req.length > le16_to_cpu -+ (ep->desc->wMaxPacketSize))) -+ return -EMSGSIZE; -+ -+#ifdef USE_DMA -+ // FIXME caller may already have done the dma mapping -+ if (ep->dma >= 0) { -+ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length, -+ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); -+ } -+#endif -+ -+ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n", -+ _ep->name, _req, _req->length, _req->buf); -+ -+ local_irq_save(flags); -+ -+ _req->status = -EINPROGRESS; -+ _req->actual = 0; -+ -+ /* kickstart this i/o queue? */ -+ if (list_empty(&ep->queue) && !ep->stopped) { -+ if (ep->desc == 0 /* ep0 */) { -+ unsigned length = _req->length; -+ -+ switch (dev->ep0state) { -+ case EP0_IN_DATA_PHASE: -+ dev->stats.write.ops++; -+ if (write_ep0_fifo(ep, req)) -+ req = 0; -+ break; -+ -+ case EP0_OUT_DATA_PHASE: -+ dev->stats.read.ops++; -+ if (dev->req_pending) -+ ep0start(dev, UDCCSR0_IPR, "OUT"); -+ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0 -+ && read_ep0_fifo(ep, req))) { -+ ep0_idle(dev); -+ done(ep, req, 0); -+ req = 0; -+ } -+ break; -+ case EP0_NO_ACTION: -+ ep0_idle(dev); -+ req=0; -+ break; -+ default: -+ DMSG("ep0 i/o, odd state %d\n", dev->ep0state); -+ local_irq_restore (flags); -+ return -EL2HLT; -+ } -+#ifdef USE_DMA -+ /* either start dma or prime pio pump */ -+ } else if (ep->dma >= 0) { -+ kick_dma(ep, req); -+#endif -+ /* can the FIFO can satisfy the request immediately? */ -+ } else if (ep->dir_in && (*ep->reg_udccsr & UDCCSR_FS) != 0 -+ && write_fifo(ep, req)) { -+ req = 0; -+ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0 -+ && read_fifo(ep, req)) { -+ req = 0; -+ } -+ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma); -+ if (likely (req && ep->desc) && ep->dma < 0) -+ pio_irq_enable(ep->pxa_ep_num); -+ } -+ -+ /* pio or dma irq handler advances the queue. */ -+ if (likely (req != 0)) -+ list_add_tail(&req->queue, &ep->queue); -+ local_irq_restore(flags); -+ -+ return 0; -+} -+ -+ -+/* -+ * nuke - dequeue ALL requests -+ */ -+static void nuke(struct pxa27x_ep *ep, int status) -+{ -+ struct pxa27x_request *req; -+ -+ /* called with irqs blocked */ -+#ifdef USE_DMA -+ if (ep->dma >= 0 && !ep->stopped) -+ cancel_dma(ep); -+#endif -+ while (!list_empty(&ep->queue)) { -+ req = list_entry(ep->queue.next, struct pxa27x_request, queue); -+ done(ep, req, status); -+ } -+ if (ep->desc) -+ pio_irq_disable(ep->pxa_ep_num); -+} -+ -+ -+/* dequeue JUST ONE request */ -+static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ struct pxa27x_request *req; -+ unsigned long flags; -+ -+ if (!_ep || _ep->name == ep0name) -+ return -EINVAL; -+ -+ local_irq_save(flags); -+ -+ /* make sure it's actually queued on this endpoint */ -+ list_for_each_entry(req, &ep->queue, queue) { -+ if (&req->req == _req) -+ break; -+ } -+ if (&req->req != _req) { -+ local_irq_restore(flags); -+ return -EINVAL; -+ } -+ -+#ifdef USE_DMA -+ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) { -+ cancel_dma(ep); -+ done(ep, req, -ECONNRESET); -+ /* restart i/o */ -+ if (!list_empty(&ep->queue)) { -+ req = list_entry(ep->queue.next, -+ struct pxa27x_request, queue); -+ kick_dma(ep, req); -+ } -+ } else -+#endif -+ done(ep, req, -ECONNRESET); -+ -+ local_irq_restore(flags); -+ return 0; -+} -+ -+/*-------------------------------------------------------------------------*/ -+ -+static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ unsigned long flags; -+ -+ DMSG("%s is called\n", __FUNCTION__); -+ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name)) -+ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) { -+ DMSG("%s, bad ep\n", __FUNCTION__); -+ return -EINVAL; -+ } -+ if (value == 0) { -+ /* this path (reset toggle+halt) is needed to implement -+ * SET_INTERFACE on normal hardware. but it can't be -+ * done from software on the PXA UDC, and the hardware -+ * forgets to do it as part of SET_INTERFACE automagic. -+ */ -+ DMSG("only host can clear %s halt\n", _ep->name); -+ return -EROFS; -+ } -+ -+ local_irq_save(flags); -+ -+ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0 -+ || !list_empty(&ep->queue))) { -+ local_irq_restore(flags); -+ return -EAGAIN; -+ } -+ -+ /* FST bit is the same for control, bulk in, bulk out, interrupt in */ -+ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF; -+ -+ /* ep0 needs special care */ -+ if (!ep->desc) { -+ start_watchdog(ep->dev); -+ ep->dev->req_pending = 0; -+ ep->dev->ep0state = EP0_STALL; -+ -+ /* and bulk/intr endpoints like dropping stalls too */ -+ } else { -+ unsigned i; -+ for (i = 0; i < 1000; i += 20) { -+ if (*ep->reg_udccsr & UDCCSR_SST) -+ break; -+ udelay(20); -+ } -+ } -+ local_irq_restore(flags); -+ -+ DBG(DBG_VERBOSE, "%s halt\n", _ep->name); -+ return 0; -+} -+ -+static int pxa27x_ep_fifo_status(struct usb_ep *_ep) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ -+ if (!_ep) { -+ DMSG("%s, bad ep\n", __FUNCTION__); -+ return -ENODEV; -+ } -+ /* pxa can't report unclaimed bytes from IN fifos */ -+ if (ep->dir_in) -+ return -EOPNOTSUPP; -+ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN -+ || (*ep->reg_udccsr & UDCCSR_FS) == 0) -+ return 0; -+ else -+ return (*ep->reg_udcbcr & 0xfff) + 1; -+} -+ -+static void pxa27x_ep_fifo_flush(struct usb_ep *_ep) -+{ -+ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ struct pxa27x_ep *ep = virt_ep->pxa_ep; -+ -+ DMSG("pxa27x_ep_fifo_flush\n"); -+ -+ if (!_ep || _ep->name == ep0name || !list_empty(&ep->queue)) { -+ DMSG("%s, bad ep\n", __FUNCTION__); -+ return; -+ } -+ -+ /* toggle and halt bits stay unchanged */ -+ -+ /* for OUT, just read and discard the FIFO contents. */ -+ if (!ep->dir_in) { -+ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0) -+ (void) *ep->reg_udcdr; -+ return; -+ } -+ -+ /* most IN status is the same, but ISO can't stall */ -+ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN -+ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC) -+ ? 0 : UDCCSR_SST; -+} -+ -+ -+static struct usb_ep_ops pxa27x_ep_ops = { -+ .enable = pxa27x_ep_enable, -+ .disable = pxa27x_ep_disable, -+ -+ .alloc_request = pxa27x_ep_alloc_request, -+ .free_request = pxa27x_ep_free_request, -+ -+ .queue = pxa27x_ep_queue, -+ .dequeue = pxa27x_ep_dequeue, -+ -+ .set_halt = pxa27x_ep_set_halt, -+ .fifo_status = pxa27x_ep_fifo_status, -+ .fifo_flush = pxa27x_ep_fifo_flush, -+}; -+ -+ -+/* --------------------------------------------------------------------------- -+ * device-scoped parts of the api to the usb controller hardware -+ * --------------------------------------------------------------------------- -+ */ -+ -+static inline unsigned int validate_fifo_size(u8 bmAttributes) -+{ -+ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { -+ case USB_ENDPOINT_XFER_CONTROL: -+ return EP0_FIFO_SIZE; -+ break; -+ case USB_ENDPOINT_XFER_ISOC: -+ return ISO_FIFO_SIZE; -+ break; -+ case USB_ENDPOINT_XFER_BULK: -+ return BULK_FIFO_SIZE; -+ break; -+ case USB_ENDPOINT_XFER_INT: -+ return INT_FIFO_SIZE; -+ break; -+ default: -+ break; -+ } -+} -+ -+static void pxa27x_ep_free(struct usb_gadget *gadget, struct usb_ep *_ep) -+{ -+ struct pxa27x_udc *dev = the_controller; -+ struct pxa27x_virt_ep *virt_ep; -+ int i; -+ -+ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); -+ -+ for (i = 1; i < UDC_EP_NUM; i++) { -+ if (dev->ep[i].usb_ep == &virt_ep->usb_ep) { -+ if (dev->ep[i].desc) { -+ virt_ep->pxa_ep = &dev->ep[i]; -+ pxa27x_ep_disable(&virt_ep->usb_ep); -+ } -+ dev->ep[i].usb_ep = NULL; -+ } -+ } -+ -+ if (!list_empty(&virt_ep->usb_ep.ep_list)) -+ list_del_init(&virt_ep->usb_ep.ep_list); -+ -+ kfree(virt_ep->usb_ep.name); -+ kfree(virt_ep); -+} -+ -+static void pxa27x_ep_freeall(struct usb_gadget *gadget) -+{ -+ struct pxa27x_udc *dev = the_controller; -+ int i; -+ -+ for (i = 1; i < UDC_EP_NUM; i++) { -+ if(dev->ep[i].usb_ep) -+ pxa27x_ep_free(gadget, dev->ep[i].usb_ep); -+ } -+} -+ -+#define NAME_SIZE 18 -+ -+static int pxa27x_find_free_ep(struct pxa27x_udc *dev) -+{ -+ int i; -+ for (i = 1; i < UDC_EP_NUM; i++) { -+ if(!dev->ep[i].assigned) -+ return i; -+ } -+ return -1; -+} -+ -+/* -+ * Endpoint Allocation/Configuration -+ * -+ * pxa27x endpoint configuration is fixed when the device is enabled. Any pxa -+ * endpoint is only active in one configuration, interface and alternate -+ * interface combination so to support gadget drivers, we map one usb_ep to -+ * one of several pxa ep's. One pxa endpoint is assigned per configuration -+ * combination. -+ */ -+static struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc, -+ struct usb_endpoint_config *epconfig, int configs) -+{ -+ struct pxa27x_udc *dev = the_controller; -+ struct pxa27x_virt_ep *virt_ep; -+ unsigned int i, fifo_size; -+ char *name; -+ -+ if (unlikely(configs < 1)) { -+ dev_err(dev->dev, "%s: Error in config data\n", __FUNCTION__); -+ return NULL; -+ } -+ -+ virt_ep = kmalloc(sizeof(struct pxa27x_virt_ep), GFP_KERNEL); -+ name = kmalloc(NAME_SIZE, GFP_KERNEL); -+ if (!virt_ep || !name) { -+ dev_err(dev->dev, "%s: -ENOMEM\n", __FUNCTION__); -+ kfree(name); -+ kfree(virt_ep); -+ return NULL; -+ } -+ -+ if (!(desc->wMaxPacketSize)) { -+ fifo_size = validate_fifo_size(desc->bmAttributes); -+ desc->wMaxPacketSize = fifo_size; -+ } else { -+ fifo_size = desc->wMaxPacketSize; -+ } -+ -+ DMSG("pxa27x_ep_alloc: bLength: %d, bDescriptorType: %x, bEndpointAddress: %x,\n" -+ " bmAttributes: %x, wMaxPacketSize: %d\n", desc->bLength, -+ desc->bDescriptorType, desc->bEndpointAddress, desc->bmAttributes, -+ desc->wMaxPacketSize); -+ -+ if (!(desc->bEndpointAddress & 0xF)) -+ desc->bEndpointAddress |= dev->ep_num; -+ -+ for (i = 0; i < configs; i++) -+ { -+ struct pxa27x_ep *pxa_ep; -+ int j; -+ -+ DMSG("pxa27x_ep_alloc: config: %d, interface: %d, altinterface: %x,\n", -+ epconfig->config, epconfig->interface, epconfig->altinterface); -+ -+ j = pxa27x_find_free_ep(dev); -+ -+ if (unlikely(j < 0)) { -+ dev_err(dev->dev, "pxa27x_ep_alloc: Failed to find a spare endpoint\n"); -+ pxa27x_ep_free(gadget, &virt_ep->usb_ep); -+ return NULL; -+ } -+ -+ pxa_ep = &dev->ep[j]; -+ -+ if (i == 0) -+ virt_ep->pxa_ep = pxa_ep; -+ -+ pxa_ep->assigned = 1; -+ pxa_ep->ep_num = dev->ep_num; -+ pxa_ep->pxa_ep_num = j; -+ pxa_ep->usb_ep = &virt_ep->usb_ep; -+ pxa_ep->dev = dev; -+ pxa_ep->desc = desc; -+ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0; -+ pxa_ep->dma = -1; -+ -+ pxa_ep->fifo_size = fifo_size; -+ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0; -+ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; -+ pxa_ep->stopped = 1; -+ pxa_ep->dma_con = 0; -+ pxa_ep->config = epconfig->config; -+ pxa_ep->interface = epconfig->interface; -+ pxa_ep->aisn = epconfig->altinterface; -+ -+ pxa_ep->reg_udccsr = &UDCCSR0 + j; -+ pxa_ep->reg_udcbcr = &UDCBCR0 + j; -+ pxa_ep->reg_udcdr = &UDCDR0 + j ; -+ pxa_ep->reg_udccr = &UDCCRA - 1 + j; -+#ifdef USE_DMA -+ pxa_ep->reg_drcmr = &DRCMR24 + j; -+#endif -+ -+ /* Configure UDCCR */ -+ *pxa_ep->reg_udccr = ((pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN) -+ | ((pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN) -+ | ((pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN) -+ | ((dev->ep_num << UDCCONR_EN_S) & UDCCONR_EN) -+ | ((pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET) -+ | ((pxa_ep->dir_in) ? UDCCONR_ED : 0) -+ | ((min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) << UDCCONR_MPS_S ) & UDCCONR_MPS) -+ | UDCCONR_EE; -+// | UDCCONR_DE | UDCCONR_EE; -+ -+ -+ -+#ifdef USE_DMA -+ /* Only BULK use DMA */ -+ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\ -+ == USB_ENDPOINT_XFER_BULK) -+ *pxa_ep->reg_udccsr = UDCCSR_DME; -+#endif -+ -+ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr); -+ -+ epconfig++; -+ } -+ -+ /* Fill ep name*/ -+ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { -+ case USB_ENDPOINT_XFER_BULK: -+ sprintf(name, "ep%d%s-bulk", dev->ep_num, -+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); -+ break; -+ case USB_ENDPOINT_XFER_INT: -+ sprintf(name, "ep%d%s-intr", dev->ep_num, -+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); -+ break; -+ default: -+ sprintf(name, "ep%d%s", dev->ep_num, -+ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); -+ break; -+ } -+ -+ virt_ep->desc = desc; -+ virt_ep->usb_ep.name = name; -+ virt_ep->usb_ep.ops = &pxa27x_ep_ops; -+ virt_ep->usb_ep.maxpacket = min((ushort)fifo_size, desc->wMaxPacketSize); -+ -+ list_add_tail(&virt_ep->usb_ep.ep_list, &gadget->ep_list); -+ -+ dev->ep_num++; -+ return &virt_ep->usb_ep; -+} -+ -+static int pxa27x_udc_get_frame(struct usb_gadget *_gadget) -+{ -+ return (UDCFNR & 0x7FF); -+} -+ -+static int pxa27x_udc_wakeup(struct usb_gadget *_gadget) -+{ -+ /* host may not have enabled remote wakeup */ -+ if ((UDCCR & UDCCR_DWRE) == 0) -+ return -EHOSTUNREACH; -+ udc_set_mask_UDCCR(UDCCR_UDR); -+ return 0; -+} -+ -+static const struct usb_gadget_ops pxa27x_udc_ops = { -+ .ep_alloc = pxa27x_ep_alloc, -+ .get_frame = pxa27x_udc_get_frame, -+ .wakeup = pxa27x_udc_wakeup, -+ // current versions must always be self-powered -+}; -+ -+ -+/*-------------------------------------------------------------------------*/ -+ -+#ifdef UDC_PROC_FILE -+ -+static const char proc_node_name [] = "driver/udc"; -+ -+static int -+udc_proc_read(char *page, char **start, off_t off, int count, -+ int *eof, void *_dev) -+{ -+ char *buf = page; -+ struct pxa27x_udc *dev = _dev; -+ char *next = buf; -+ unsigned size = count; -+ unsigned long flags; -+ int i, t; -+ u32 tmp; -+ -+ if (off != 0) -+ return 0; -+ -+ local_irq_save(flags); -+ -+ /* basic device status */ -+ t = scnprintf(next, size, DRIVER_DESC "\n" -+ "%s version: %s\nGadget driver: %s\n", -+ driver_name, DRIVER_VERSION DMASTR, -+ dev->driver ? dev->driver->driver.name : "(none)"); -+ size -= t; -+ next += t; -+ -+ /* registers for device and ep0 */ -+ t = scnprintf(next, size, -+ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n", -+ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR); -+ size -= t; -+ next += t; -+ -+ tmp = UDCCR; -+ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp, -+ (tmp & UDCCR_OEN) ? " oen":"", -+ (tmp & UDCCR_AALTHNP) ? " aalthnp":"", -+ (tmp & UDCCR_AHNP) ? " rem" : "", -+ (tmp & UDCCR_BHNP) ? " rstir" : "", -+ (tmp & UDCCR_DWRE) ? " dwre" : "", -+ (tmp & UDCCR_SMAC) ? " smac" : "", -+ (tmp & UDCCR_EMCE) ? " emce" : "", -+ (tmp & UDCCR_UDR) ? " udr" : "", -+ (tmp & UDCCR_UDA) ? " uda" : "", -+ (tmp & UDCCR_UDE) ? " ude" : "", -+ (tmp & UDCCR_ACN) >> UDCCR_ACN_S, -+ (tmp & UDCCR_AIN) >> UDCCR_AIN_S, -+ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S ); -+ -+ size -= t; -+ next += t; -+ -+ tmp = UDCCSR0; -+ t = scnprintf(next, size, -+ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp, -+ (tmp & UDCCSR0_SA) ? " sa" : "", -+ (tmp & UDCCSR0_RNE) ? " rne" : "", -+ (tmp & UDCCSR0_FST) ? " fst" : "", -+ (tmp & UDCCSR0_SST) ? " sst" : "", -+ (tmp & UDCCSR0_DME) ? " dme" : "", -+ (tmp & UDCCSR0_IPR) ? " ipr" : "", -+ (tmp & UDCCSR0_OPC) ? " opc" : ""); -+ size -= t; -+ next += t; -+ -+ if (!dev->driver) -+ goto done; -+ -+ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n", -+ dev->stats.write.bytes, dev->stats.write.ops, -+ dev->stats.read.bytes, dev->stats.read.ops, -+ dev->stats.irqs); -+ size -= t; -+ next += t; -+ -+ /* dump endpoint queues */ -+ for (i = 0; i < UDC_EP_NUM; i++) { -+ struct pxa27x_ep *ep = &dev->ep [i]; -+ struct pxa27x_request *req; -+ int t; -+ -+ if (i != 0) { -+ const struct usb_endpoint_descriptor *d; -+ -+ d = ep->desc; -+ if (!d) -+ continue; -+ tmp = *dev->ep [i].reg_udccsr; -+ t = scnprintf(next, size, -+ "%d max %d %s udccs %02x udccr:0x%x\n", -+ i, le16_to_cpu (d->wMaxPacketSize), -+ (ep->dma >= 0) ? "dma" : "pio", tmp, -+ *dev->ep[i].reg_udccr); -+ /* TODO translate all five groups of udccs bits! */ -+ -+ } else /* ep0 should only have one transfer queued */ -+ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n", -+ ep->pio_irqs); -+ if (t <= 0 || t > size) -+ goto done; -+ size -= t; -+ next += t; -+ -+ if (list_empty(&ep->queue)) { -+ t = scnprintf(next, size, "\t(nothing queued)\n"); -+ if (t <= 0 || t > size) -+ goto done; -+ size -= t; -+ next += t; -+ continue; -+ } -+ list_for_each_entry(req, &ep->queue, queue) { -+#ifdef USE_DMA -+ if (ep->dma >= 0 && req->queue.prev == &ep->queue) -+ t = scnprintf(next, size, "\treq %p len %d/%d " -+ "buf %p (dma%d dcmd %08x)\n", -+ &req->req, req->req.actual, -+ req->req.length, req->req.buf, -+ ep->dma, DCMD(ep->dma) -+ /* low 13 bits == bytes-to-go */); -+ else -+#endif -+ t = scnprintf(next, size, -+ "\treq %p len %d/%d buf %p\n", -+ &req->req, req->req.actual, -+ req->req.length, req->req.buf); -+ if (t <= 0 || t > size) -+ goto done; -+ size -= t; -+ next += t; -+ } -+ } -+ -+done: -+ local_irq_restore(flags); -+ *eof = 1; -+ return count - size; -+} -+ -+#define create_proc_files() \ -+ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev) -+#define remove_proc_files() \ -+ remove_proc_entry(proc_node_name, NULL) -+ -+#else /* !UDC_PROC_FILE */ -+#define create_proc_files() do {} while (0) -+#define remove_proc_files() do {} while (0) -+ -+#endif /* UDC_PROC_FILE */ -+ -+/* "function" sysfs attribute */ -+static ssize_t show_function(struct device *_dev, struct device_attribute *attr, char *buf) -+{ -+ struct pxa27x_udc *dev = dev_get_drvdata(_dev); -+ -+ if (!dev->driver || !dev->driver->function -+ || strlen(dev->driver->function) > PAGE_SIZE) -+ return 0; -+ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function); -+} -+static DEVICE_ATTR(function, S_IRUGO, show_function, NULL); -+ -+/*-------------------------------------------------------------------------*/ -+ -+/* -+ * udc_disable - disable USB device controller -+ */ -+static void udc_disable(struct pxa27x_udc *dev) -+{ -+ UDCICR0 = UDCICR1 = 0x00000000; -+ -+ udc_clear_mask_UDCCR(UDCCR_UDE); -+ -+ /* Disable clock for USB device */ -+ pxa_set_cken(CKEN_USB, 0); -+ -+ ep0_idle(dev); -+ dev->gadget.speed = USB_SPEED_UNKNOWN; -+ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); -+} -+ -+ -+/* -+ * udc_reinit - initialize software state -+ */ -+static void udc_reinit(struct pxa27x_udc *dev) -+{ -+ u32 i; -+ -+ dev->ep0state = EP0_IDLE; -+ -+ /* basic endpoint records init */ -+ for (i = 0; i < UDC_EP_NUM; i++) { -+ struct pxa27x_ep *ep = &dev->ep[i]; -+ -+ ep->stopped = 0; -+ ep->pio_irqs = ep->dma_irqs = 0; -+ } -+ dev->configuration = 0; -+ dev->interface = 0; -+ dev->alternate = 0; -+ /* the rest was statically initialized, and is read-only */ -+} -+ -+/* until it's enabled, this UDC should be completely invisible -+ * to any USB host. -+ */ -+static void udc_enable(struct pxa27x_udc *dev) -+{ -+ udc_clear_mask_UDCCR(UDCCR_UDE); -+ -+ /* Enable clock for USB device */ -+ pxa_set_cken(CKEN_USB, 1); -+ -+ UDCICR0 = UDCICR1 = 0; -+ -+ ep0_idle(dev); -+ dev->gadget.speed = USB_SPEED_FULL; -+ dev->stats.irqs = 0; -+ -+ udc_set_mask_UDCCR(UDCCR_UDE); -+ udelay(2); -+ if (UDCCR & UDCCR_EMCE) -+ dev_err(dev->dev, "There are error in configuration, udc disabled\n"); -+ -+ /* caller must be able to sleep in order to cope -+ * with startup transients. -+ */ -+ msleep(100); -+ -+ /* enable suspend/resume and reset irqs */ -+ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS; -+ -+ /* enable ep0 irqs */ -+ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK); -+ -+ DMSG("Connecting\n"); -+ /* RPFIXME */ -+ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; -+ //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT); -+} -+ -+ -+/* when a driver is successfully registered, it will receive -+ * control requests including set_configuration(), which enables -+ * non-control requests. then usb traffic follows until a -+ * disconnect is reported. then a host may connect again, or -+ * the driver might get unbound. -+ */ -+int usb_gadget_register_driver(struct usb_gadget_driver *driver) -+{ -+ struct pxa27x_udc *dev = the_controller; -+ int retval; -+ -+ if (!driver || driver->speed != USB_SPEED_FULL || !driver->bind -+ || !driver->unbind || !driver->disconnect || !driver->setup) -+ return -EINVAL; -+ if (!dev) -+ return -ENODEV; -+ if (dev->driver) -+ return -EBUSY; -+ -+ udc_disable(dev); -+ udc_init_ep(dev); -+ udc_reinit(dev); -+ -+ /* first hook up the driver ... */ -+ dev->driver = driver; -+ dev->gadget.dev.driver = &driver->driver; -+ dev->ep_num = 1; -+ -+ retval = device_add(&dev->gadget.dev); -+ if (retval) { -+ DMSG("device_add error %d\n", retval); -+ goto add_fail; -+ } -+ retval = driver->bind(&dev->gadget); -+ if (retval) { -+ DMSG("bind to driver %s --> error %d\n", -+ driver->driver.name, retval); -+ goto bind_fail; -+ } -+ retval = device_create_file(dev->dev, &dev_attr_function); -+ if (retval) { -+ DMSG("device_create_file failed: %d\n", retval); -+ goto create_file_fail; -+ } -+ -+ /* ... then enable host detection and ep0; and we're ready -+ * for set_configuration as well as eventual disconnect. -+ * NOTE: this shouldn't power up until later. -+ */ -+ DMSG("registered gadget driver '%s'\n", driver->driver.name); -+ udc_enable(dev); -+ dump_state(dev); -+ return 0; -+ -+create_file_fail: -+ driver->unbind(&dev->gadget); -+bind_fail: -+ device_del(&dev->gadget.dev); -+add_fail: -+ dev->driver = 0; -+ dev->gadget.dev.driver = 0; -+ return retval; -+} -+EXPORT_SYMBOL(usb_gadget_register_driver); -+ -+static void -+stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver) -+{ -+ int i; -+ -+ DMSG("Trace path 1\n"); -+ /* don't disconnect drivers more than once */ -+ if (dev->gadget.speed == USB_SPEED_UNKNOWN) -+ driver = 0; -+ dev->gadget.speed = USB_SPEED_UNKNOWN; -+ -+ /* prevent new request submissions, kill any outstanding requests */ -+ for (i = 0; i < UDC_EP_NUM; i++) { -+ struct pxa27x_ep *ep = &dev->ep[i]; -+ -+ ep->stopped = 1; -+ nuke(ep, -ESHUTDOWN); -+ } -+ del_timer_sync(&dev->timer); -+ -+ /* report disconnect; the driver is already quiesced */ -+ if (driver) -+ driver->disconnect(&dev->gadget); -+ -+ /* re-init driver-visible data structures */ -+ udc_reinit(dev); -+} -+ -+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) -+{ -+ struct pxa27x_udc *dev = the_controller; -+ -+ if (!dev) -+ return -ENODEV; -+ if (!driver || driver != dev->driver) -+ return -EINVAL; -+ -+ local_irq_disable(); -+ udc_disable(dev); -+ stop_activity(dev, driver); -+ local_irq_enable(); -+ -+ driver->unbind(&dev->gadget); -+ pxa27x_ep_freeall(&dev->gadget); -+ dev->driver = 0; -+ -+ device_del(&dev->gadget.dev); -+ device_remove_file(dev->dev, &dev_attr_function); -+ -+ DMSG("unregistered gadget driver '%s'\n", driver->driver.name); -+ dump_state(dev); -+ return 0; -+} -+EXPORT_SYMBOL(usb_gadget_unregister_driver); -+ -+ -+/*-------------------------------------------------------------------------*/ -+ -+static inline void clear_ep_state(struct pxa27x_udc *dev) -+{ -+ unsigned i; -+ -+ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint -+ * fifos, and pending transactions mustn't be continued in any case. -+ */ -+ for (i = 1; i < UDC_EP_NUM; i++) -+ nuke(&dev->ep[i], -ECONNABORTED); -+} -+ -+static void udc_watchdog(unsigned long _dev) -+{ -+ struct pxa27x_udc *dev = (void *)_dev; -+ -+ local_irq_disable(); -+ if (dev->ep0state == EP0_STALL -+ && (UDCCSR0 & UDCCSR0_FST) == 0 -+ && (UDCCSR0 & UDCCSR0_SST) == 0) { -+ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF; -+ DBG(DBG_VERBOSE, "ep0 re-stall\n"); -+ start_watchdog(dev); -+ } -+ local_irq_enable(); -+} -+ -+static void handle_ep0(struct pxa27x_udc *dev) -+{ -+ u32 udccsr0 = UDCCSR0; -+ struct pxa27x_ep *ep = &dev->ep[0]; -+ struct pxa27x_request *req; -+ union { -+ struct usb_ctrlrequest r; -+ u8 raw[8]; -+ u32 word[2]; -+ } u; -+ -+ if (list_empty(&ep->queue)) -+ req = 0; -+ else -+ req = list_entry(ep->queue.next, struct pxa27x_request, queue); -+ -+ /* clear stall status */ -+ if (udccsr0 & UDCCSR0_SST) { -+ nuke(ep, -EPIPE); -+ UDCCSR0 = UDCCSR0_SST; -+ del_timer(&dev->timer); -+ ep0_idle(dev); -+ } -+ -+ /* previous request unfinished? non-error iff back-to-back ... */ -+ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) { -+ nuke(ep, 0); -+ del_timer(&dev->timer); -+ ep0_idle(dev); -+ } -+ -+ switch (dev->ep0state) { -+ case EP0_NO_ACTION: -+ dev_info(dev->dev, "%s: Busy\n", __FUNCTION__); -+ /*Fall through */ -+ case EP0_IDLE: -+ /* late-breaking status? */ -+ udccsr0 = UDCCSR0; -+ -+ /* start control request? */ -+ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE)) -+ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) { -+ int i; -+ -+ nuke(ep, -EPROTO); -+ /* read SETUP packet */ -+ for (i = 0; i < 2; i++) { -+ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) { -+bad_setup: -+ DMSG("SETUP %d!\n", i); -+ goto stall; -+ } -+ u.word [i] = UDCDR0; -+ } -+ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0)) -+ goto bad_setup; -+ -+ le16_to_cpus(&u.r.wValue); -+ le16_to_cpus(&u.r.wIndex); -+ le16_to_cpus(&u.r.wLength); -+ -+ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n", -+ u.r.bRequestType, u.r.bRequest, -+ u.r.wValue, u.r.wIndex, u.r.wLength); -+ /* cope with automagic for some standard requests. */ -+ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK) -+ == USB_TYPE_STANDARD; -+ dev->req_config = 0; -+ dev->req_pending = 1; -+#if 0 -+ switch (u.r.bRequest) { -+ /* hardware was supposed to hide this */ -+ case USB_REQ_SET_CONFIGURATION: -+ case USB_REQ_SET_INTERFACE: -+ case USB_REQ_SET_ADDRESS: -+ dev_err(dev->dev, "Should not come here\n"); -+ break; -+ } -+ -+#endif -+ if (u.r.bRequestType & USB_DIR_IN) -+ dev->ep0state = EP0_IN_DATA_PHASE; -+ else -+ dev->ep0state = EP0_OUT_DATA_PHASE; -+ i = dev->driver->setup(&dev->gadget, &u.r); -+ -+ if (i < 0) { -+ /* hardware automagic preventing STALL... */ -+ if (dev->req_config) { -+ /* hardware sometimes neglects to tell -+ * tell us about config change events, -+ * so later ones may fail... -+ */ -+ WARN("config change %02x fail %d?\n", -+ u.r.bRequest, i); -+ return; -+ /* TODO experiment: if has_cfr, -+ * hardware didn't ACK; maybe we -+ * could actually STALL! -+ */ -+ } -+ DBG(DBG_VERBOSE, "protocol STALL, " -+ "%02x err %d\n", UDCCSR0, i); -+stall: -+ /* the watchdog timer helps deal with cases -+ * where udc seems to clear FST wrongly, and -+ * then NAKs instead of STALLing. -+ */ -+ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall"); -+ start_watchdog(dev); -+ dev->ep0state = EP0_STALL; -+ -+ /* deferred i/o == no response yet */ -+ } else if (dev->req_pending) { -+ if (likely(dev->ep0state == EP0_IN_DATA_PHASE -+ || dev->req_std || u.r.wLength)) -+ ep0start(dev, 0, "defer"); -+ else -+ ep0start(dev, UDCCSR0_IPR, "defer/IPR"); -+ } -+ -+ /* expect at least one data or status stage irq */ -+ return; -+ -+ } else { -+ /* some random early IRQ: -+ * - we acked FST -+ * - IPR cleared -+ * - OPC got set, without SA (likely status stage) -+ */ -+ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC); -+ } -+ break; -+ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */ -+ if (udccsr0 & UDCCSR0_OPC) { -+ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF; -+ DBG(DBG_VERBOSE, "ep0in premature status\n"); -+ if (req) -+ done(ep, req, 0); -+ ep0_idle(dev); -+ } else /* irq was IPR clearing */ { -+ if (req) { -+ /* this IN packet might finish the request */ -+ (void) write_ep0_fifo(ep, req); -+ } /* else IN token before response was written */ -+ } -+ break; -+ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */ -+ if (udccsr0 & UDCCSR0_OPC) { -+ if (req) { -+ /* this OUT packet might finish the request */ -+ if (read_ep0_fifo(ep, req)) -+ done(ep, req, 0); -+ /* else more OUT packets expected */ -+ } /* else OUT token before read was issued */ -+ } else /* irq was IPR clearing */ { -+ DBG(DBG_VERBOSE, "ep0out premature status\n"); -+ if (req) -+ done(ep, req, 0); -+ ep0_idle(dev); -+ } -+ break; -+ case EP0_STALL: -+ UDCCSR0 = UDCCSR0_FST; -+ break; -+ } -+ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK); -+} -+ -+ -+static void handle_ep(struct pxa27x_ep *ep) -+{ -+ struct pxa27x_request *req; -+ int completed; -+ u32 udccsr=0; -+ -+ DMSG("%s is called\n", __FUNCTION__); -+ do { -+ completed = 0; -+ if (likely (!list_empty(&ep->queue))) { -+ req = list_entry(ep->queue.next, -+ struct pxa27x_request, queue); -+ } else -+ req = 0; -+ -+// udccsr = *ep->reg_udccsr; -+ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__, -+ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr); -+ if (unlikely(ep->dir_in)) { -+ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr; -+ if (unlikely (udccsr)) -+ *ep->reg_udccsr = udccsr; -+ -+ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0)) -+ completed = write_fifo(ep, req); -+ -+ } else { -+ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr; -+ if (unlikely(udccsr)) -+ *ep->reg_udccsr = udccsr; -+ -+ /* fifos can hold packets, ready for reading... */ -+ if (likely(req)) { -+ completed = read_fifo(ep, req); -+ } else { -+ pio_irq_disable (ep->pxa_ep_num); -+ //*ep->reg_udccsr = UDCCSR_FEF; -+ DMSG("%s: no req for out data\n", -+ __FUNCTION__); -+ } -+ } -+ ep->pio_irqs++; -+ } while (completed); -+} -+ -+static void pxa27x_update_eps(struct pxa27x_udc *dev) -+{ -+ struct pxa27x_virt_ep *virt_ep; -+ int i; -+ -+ for (i = 1; i < UDC_EP_NUM; i++) { -+ if(!dev->ep[i].assigned || !dev->ep[i].usb_ep) -+ continue; -+ virt_ep = container_of(dev->ep[i].usb_ep, struct pxa27x_virt_ep, usb_ep); -+ -+ DMSG("%s, Updating eps %d:%d, %d:%d, %d:%d, %p,%p\n", __FUNCTION__, dev->ep[i].config, dev->configuration -+ ,dev->ep[i].interface, dev->interface, dev->ep[i].aisn, dev->alternate, virt_ep->pxa_ep, &dev->ep[i]); -+ -+ if(dev->ep[i].config == dev->configuration && virt_ep->pxa_ep != &dev->ep[i]) { -+ if ((dev->ep[i].interface == dev->interface && -+ dev->ep[i].aisn == dev->alternate) || virt_ep->pxa_ep->config != dev->configuration) { -+ -+ if (virt_ep->pxa_ep->desc) { -+ DMSG("%s, Changing end point to %d (en/dis)\n", __FUNCTION__, i); -+ pxa27x_ep_disable(&virt_ep->usb_ep); -+ virt_ep->pxa_ep = &dev->ep[i]; -+ pxa27x_ep_enable(&virt_ep->usb_ep, virt_ep->desc); -+ } else { -+ DMSG("%s, Changing end point to %d (no en/dis)\n", __FUNCTION__, i); -+ virt_ep->pxa_ep = &dev->ep[i]; -+ } -+ } -+ } -+ } -+} -+ -+static void pxa27x_change_configuration(struct pxa27x_udc *dev) -+{ -+ struct usb_ctrlrequest req ; -+ -+ pxa27x_update_eps(dev); -+ -+ req.bRequestType = 0; -+ req.bRequest = USB_REQ_SET_CONFIGURATION; -+ req.wValue = dev->configuration; -+ req.wIndex = 0; -+ req.wLength = 0; -+ -+ dev->ep0state = EP0_NO_ACTION; -+ dev->driver->setup(&dev->gadget, &req); -+} -+ -+static void pxa27x_change_interface(struct pxa27x_udc *dev) -+{ -+ struct usb_ctrlrequest req; -+ -+ pxa27x_update_eps(dev); -+ -+ req.bRequestType = USB_RECIP_INTERFACE; -+ req.bRequest = USB_REQ_SET_INTERFACE; -+ req.wValue = dev->alternate; -+ req.wIndex = dev->interface; -+ req.wLength = 0; -+ -+ dev->ep0state = EP0_NO_ACTION; -+ dev->driver->setup(&dev->gadget, &req); -+} -+ -+/* -+ * pxa27x_udc_irq - interrupt handler -+ * -+ * avoid delays in ep0 processing. the control handshaking isn't always -+ * under software control (pxa250c0 and the pxa255 are better), and delays -+ * could cause usb protocol errors. -+ */ -+static irqreturn_t pxa27x_udc_irq(int irq, void *_dev) -+{ -+ struct pxa27x_udc *dev = _dev; -+ int handled; -+ -+ dev->stats.irqs++; -+ -+ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, " -+ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR); -+ do { -+ u32 udcir = UDCISR1 & 0xF8000000; -+ -+ handled = 0; -+ -+ /* SUSpend Interrupt Request */ -+ if (unlikely(udcir & UDCISR1_IRSU)) { -+ UDCISR1 = UDCISR1_IRSU; -+ handled = 1; -+ DBG(DBG_VERBOSE, "USB suspend\n"); -+ if (dev->gadget.speed != USB_SPEED_UNKNOWN -+ && dev->driver -+ && dev->driver->suspend) -+ dev->driver->suspend(&dev->gadget); -+ ep0_idle(dev); -+ } -+ -+ /* RESume Interrupt Request */ -+ if (unlikely(udcir & UDCISR1_IRRU)) { -+ UDCISR1 = UDCISR1_IRRU; -+ handled = 1; -+ DBG(DBG_VERBOSE, "USB resume\n"); -+ -+ if (dev->gadget.speed != USB_SPEED_UNKNOWN -+ && dev->driver -+ && dev->driver->resume) -+ dev->driver->resume(&dev->gadget); -+ } -+ -+ if (unlikely(udcir & UDCISR1_IRCC)) { -+ unsigned config, interface, alternate; -+ -+ handled = 1; -+ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or " -+ "SET_INTERFACE command received\n"); -+ -+ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S; -+ -+ if (dev->configuration != config) { -+ dev->configuration = config; -+ pxa27x_change_configuration(dev) ; -+ } -+ -+ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S; -+ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S; -+ -+ if ((dev->interface != interface) || (dev->alternate != alternate)) { -+ dev->interface = interface; -+ dev->alternate = alternate; -+ pxa27x_change_interface(dev); -+ } -+ -+ UDCCR |= UDCCR_SMAC; -+ -+ UDCISR1 = UDCISR1_IRCC; -+ DMSG("%s: con:%d,inter:%d,alt:%d\n", -+ __FUNCTION__, config,interface, alternate); -+ } -+ -+ /* ReSeT Interrupt Request - USB reset */ -+ if (unlikely(udcir & UDCISR1_IRRS)) { -+ UDCISR1 = UDCISR1_IRRS; -+ handled = 1; -+ -+ if ((UDCCR & UDCCR_UDA) == 0) { -+ DBG(DBG_VERBOSE, "USB reset start\n"); -+ -+ /* reset driver and endpoints, -+ * in case that's not yet done -+ */ -+ stop_activity(dev, dev->driver); -+ } -+ INFO("USB reset\n"); -+ dev->gadget.speed = USB_SPEED_FULL; -+ memset(&dev->stats, 0, sizeof dev->stats); -+ -+ } else { -+ u32 udcisr0 = UDCISR0 ; -+ u32 udcisr1 = UDCISR1 & 0xFFFF; -+ int i; -+ -+ if (unlikely (!udcisr0 && !udcisr1)) -+ continue; -+ -+ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0); -+ -+ /* control traffic */ -+ if (udcisr0 & UDCISR0_IR0) { -+ dev->ep[0].pio_irqs++; -+ handle_ep0(dev); -+ handled = 1; -+ } -+ -+ udcisr0 >>= 2; -+ /* endpoint data transfers */ -+ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) { -+ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK); -+ -+ if (udcisr0 & UDC_INT_FIFOERROR) -+ dev_err(dev->dev, " Endpoint %d Fifo error\n", i); -+ if (udcisr0 & UDC_INT_PACKETCMP) { -+ handle_ep(&dev->ep[i]); -+ handled = 1; -+ } -+ -+ } -+ -+ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) { -+ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK); -+ -+ if (udcisr1 & UDC_INT_FIFOERROR) { -+ dev_err(dev->dev, "Endpoint %d fifo error\n", (i+16)); -+ } -+ -+ if (udcisr1 & UDC_INT_PACKETCMP) { -+ handle_ep(&dev->ep[i+16]); -+ handled = 1; -+ } -+ } -+ } -+ -+ /* we could also ask for 1 msec SOF (SIR) interrupts */ -+ -+ } while (handled); -+ return IRQ_HANDLED; -+} -+ -+int write_ep0_zlp(void) -+{ -+ UDCCSR0 = UDCCSR0_IPR; -+ return 0; -+} -+EXPORT_SYMBOL(write_ep0_zlp); -+ -+static void udc_init_ep(struct pxa27x_udc *dev) -+{ -+ int i; -+ -+ INIT_LIST_HEAD(&dev->gadget.ep_list); -+ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); -+ -+ for (i = 0; i < UDC_EP_NUM; i++) { -+ struct pxa27x_ep *ep = &dev->ep[i]; -+ -+ ep->dma = -1; -+ if (i != 0) { -+ memset(ep, 0, sizeof(*ep)); -+ } -+ INIT_LIST_HEAD(&ep->queue); -+ } -+} -+ -+/*-------------------------------------------------------------------------*/ -+ -+static void nop_release(struct device *dev) -+{ -+ DMSG("%s %s\n", __FUNCTION__, dev->bus_id); -+} -+ -+/* this uses load-time allocation and initialization (instead of -+ * doing it at run-time) to save code, eliminate fault paths, and -+ * be more obviously correct. -+ */ -+ -+static struct pxa27x_udc memory = { -+ .gadget = { -+ .ops = &pxa27x_udc_ops, -+ .ep0 = &memory.virt_ep0.usb_ep, -+ .name = driver_name, -+ .dev = { -+ .bus_id = "gadget", -+ .release = nop_release, -+ }, -+ }, -+ -+ /* control endpoint */ -+ .virt_ep0 = { -+ .pxa_ep = &memory.ep[0], -+ .usb_ep = { -+ .name = ep0name, -+ .ops = &pxa27x_ep_ops, -+ .maxpacket = EP0_FIFO_SIZE, -+ }, -+ }, -+ -+ .ep[0] = { -+ .usb_ep = &memory.virt_ep0.usb_ep, -+ .dev = &memory, -+ .reg_udccsr = &UDCCSR0, -+ .reg_udcdr = &UDCDR0, -+ }, -+}; -+ -+static int __init pxa27x_udc_probe(struct platform_device *_dev) -+{ -+ struct pxa27x_udc *dev = &memory; -+ int retval; -+ -+ /* other non-static parts of init */ -+ dev->dev = &_dev->dev; -+ dev->mach = _dev->dev.platform_data; -+ -+ /* RPFIXME */ -+ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; -+ -+ init_timer(&dev->timer); -+ dev->timer.function = udc_watchdog; -+ dev->timer.data = (unsigned long) dev; -+ -+ device_initialize(&dev->gadget.dev); -+ dev->gadget.dev.parent = &_dev->dev; -+ dev->gadget.dev.dma_mask = _dev->dev.dma_mask; -+ -+ the_controller = dev; -+ platform_set_drvdata(_dev, dev); -+ -+ udc_disable(dev); -+ udc_init_ep(dev); -+ udc_reinit(dev); -+ -+ /* irq setup after old hardware state is cleaned up */ -+ retval = request_irq(IRQ_USB, pxa27x_udc_irq, -+ SA_INTERRUPT, driver_name, dev); -+ if (retval != 0) { -+ dev_err(dev->dev, "%s: can't get irq %i, err %d\n", -+ driver_name, IRQ_USB, retval); -+ return -EBUSY; -+ } -+ dev->got_irq = 1; -+ -+ create_proc_files(); -+ -+ return 0; -+} -+ -+static int pxa27x_udc_remove(struct platform_device *_dev) -+{ -+ struct pxa27x_udc *dev = platform_get_drvdata(_dev); -+ -+ udc_disable(dev); -+ remove_proc_files(); -+ usb_gadget_unregister_driver(dev->driver); -+ -+ pxa27x_ep_freeall(&dev->gadget); -+ -+ if (dev->got_irq) { -+ free_irq(IRQ_USB, dev); -+ dev->got_irq = 0; -+ } -+ platform_set_drvdata(_dev, 0); -+ the_controller = 0; -+ return 0; -+} -+ -+#ifdef CONFIG_PM -+static void pxa27x_udc_shutdown(struct platform_device *_dev) -+{ -+ struct pxa27x_udc *dev = platform_get_drvdata(_dev); -+ -+ udc_disable(dev); -+} -+ -+static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state) -+{ -+ int i; -+ struct pxa27x_udc *dev = platform_get_drvdata(_dev); -+ -+ DMSG("%s is called\n", __FUNCTION__); -+ -+ dev->udccsr0 = UDCCSR0; -+ for(i=1; (iep[i].assigned) { -+ struct pxa27x_ep *ep = &dev->ep[i]; -+ ep->udccsr_value = *ep->reg_udccsr; -+ ep->udccr_value = *ep->reg_udccr; -+ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n", -+ i, *ep->reg_udccsr, *ep->reg_udccr); -+ } -+ } -+ -+ udc_clear_mask_UDCCR(UDCCR_UDE); -+ pxa_set_cken(CKEN_USB, 0); -+ -+ return 0; -+} -+ -+static int pxa27x_udc_resume(struct platform_device *_dev) -+{ -+ int i; -+ struct pxa27x_udc *dev = platform_get_drvdata(_dev); -+ -+ DMSG("%s is called\n", __FUNCTION__); -+ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME); -+ for (i=1; i < UDC_EP_NUM; i++) { -+ if (dev->ep[i].assigned) { -+ struct pxa27x_ep *ep = &dev->ep[i]; -+ *ep->reg_udccsr = ep->udccsr_value; -+ *ep->reg_udccr = ep->udccr_value; -+ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n", -+ i, *ep->reg_udccsr, *ep->reg_udccr); -+ } -+ } -+ -+ udc_enable(dev); -+ -+ /* OTGPH bit is set when sleep mode is entered. -+ * it indicates that OTG pad is retaining its state. -+ * Upon exit from sleep mode and before clearing OTGPH, -+ * Software must configure the USB OTG pad, UDC, and UHC -+ * to the state they were in before entering sleep mode.*/ -+ PSSR |= PSSR_OTGPH; -+ -+ return 0; -+} -+#endif -+ -+/*-------------------------------------------------------------------------*/ -+ -+static struct platform_driver udc_driver = { -+ .driver = { -+ .name = "pxa2xx-udc", -+ }, -+ .probe = pxa27x_udc_probe, -+ .remove = pxa27x_udc_remove, -+#ifdef CONFIG_PM -+ .shutdown = pxa27x_udc_shutdown, -+ .suspend = pxa27x_udc_suspend, -+ .resume = pxa27x_udc_resume -+#endif -+}; -+ -+static int __init udc_init(void) -+{ -+ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION); -+ return platform_driver_register(&udc_driver); -+} -+module_init(udc_init); -+ -+static void __exit udc_exit(void) -+{ -+ platform_driver_unregister(&udc_driver); -+} -+module_exit(udc_exit); -+ -+MODULE_DESCRIPTION(DRIVER_DESC); -+MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); -+MODULE_LICENSE("GPL"); -diff --git a/drivers/usb/gadget/pxa27x_udc.h b/drivers/usb/gadget/pxa27x_udc.h -new file mode 100644 -index 0000000..d4377cf ---- /dev/null -+++ b/drivers/usb/gadget/pxa27x_udc.h -@@ -0,0 +1,298 @@ -+/* -+ * linux/drivers/usb/gadget/pxa27x_udc.h -+ * Intel PXA27x on-chip full speed USB device controller -+ * -+ * Copyright (C) 2003 Robert Schwebel , Pengutronix -+ * Copyright (C) 2003 David Brownell -+ * Copyright (C) 2004 Intel Corporation -+ * -+ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ */ -+ -+#ifndef __LINUX_USB_GADGET_PXA27X_H -+#define __LINUX_USB_GADGET_PXA27X_H -+ -+#include -+ -+struct pxa27x_udc; -+ -+struct pxa27x_ep { -+ struct pxa27x_udc *dev; -+ struct usb_ep *usb_ep; -+ const struct usb_endpoint_descriptor *desc; -+ -+ struct list_head queue; -+ unsigned long pio_irqs; -+ unsigned long dma_irqs; -+ -+ unsigned pxa_ep_num; -+ int dma; -+ unsigned fifo_size; -+ unsigned ep_type; -+ -+ unsigned stopped : 1; -+ unsigned dma_con : 1; -+ unsigned dir_in : 1; -+ unsigned assigned : 1; -+ -+ unsigned ep_num; -+ unsigned config; -+ unsigned interface; -+ unsigned aisn; -+ /* UDCCSR = UDC Control/Status Register for this EP -+ * UBCR = UDC Byte Count Remaining (contents of OUT fifo) -+ * UDCDR = UDC Endpoint Data Register (the fifo) -+ * UDCCR = UDC Endpoint Configuration Registers -+ * DRCM = DMA Request Channel Map -+ */ -+ volatile u32 *reg_udccsr; -+ volatile u32 *reg_udcbcr; -+ volatile u32 *reg_udcdr; -+ volatile u32 *reg_udccr; -+#ifdef USE_DMA -+ volatile u32 *reg_drcmr; -+#define drcmr(n) .reg_drcmr = & DRCMR ## n , -+#else -+#define drcmr(n) -+#endif -+ -+#ifdef CONFIG_PM -+ unsigned udccsr_value; -+ unsigned udccr_value; -+#endif -+}; -+ -+struct pxa27x_virt_ep { -+ struct usb_ep usb_ep; -+ const struct usb_endpoint_descriptor *desc; -+ struct pxa27x_ep *pxa_ep; -+}; -+ -+struct pxa27x_request { -+ struct usb_request req; -+ struct list_head queue; -+}; -+ -+enum ep0_state { -+ EP0_IDLE, -+ EP0_IN_DATA_PHASE, -+ EP0_OUT_DATA_PHASE, -+// EP0_END_XFER, -+ EP0_STALL, -+ EP0_NO_ACTION -+}; -+ -+#define EP0_FIFO_SIZE ((unsigned)16) -+#define BULK_FIFO_SIZE ((unsigned)64) -+#define ISO_FIFO_SIZE ((unsigned)256) -+#define INT_FIFO_SIZE ((unsigned)8) -+ -+struct udc_stats { -+ struct ep0stats { -+ unsigned long ops; -+ unsigned long bytes; -+ } read, write; -+ unsigned long irqs; -+}; -+ -+#define UDC_EP_NUM 24 -+ -+ -+struct pxa27x_udc { -+ struct usb_gadget gadget; -+ struct usb_gadget_driver *driver; -+ -+ enum ep0_state ep0state; -+ struct udc_stats stats; -+ unsigned got_irq : 1, -+ has_cfr : 1, -+ req_pending : 1, -+ req_std : 1, -+ req_config : 1; -+ -+#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200)) -+ struct timer_list timer; -+ -+ struct device *dev; -+ struct pxa2xx_udc_mach_info *mach; -+ u64 dma_mask; -+ struct pxa27x_virt_ep virt_ep0; -+ struct pxa27x_ep ep[UDC_EP_NUM]; -+ unsigned int ep_num; -+ -+ unsigned configuration, -+ interface, -+ alternate; -+#ifdef CONFIG_PM -+ unsigned udccsr0; -+#endif -+}; -+ -+static struct pxa27x_udc *the_controller; -+ -+#if 0 -+/*-------------------------------------------------------------------------*/ -+ -+ -+/* one GPIO should be used to detect host disconnect */ -+static inline int is_usb_connected(void) -+{ -+ if (!the_controller->mach->udc_is_connected) -+ return 1; -+ return the_controller->mach->udc_is_connected(); -+} -+ -+/* one GPIO should force the host to see this device (or not) */ -+static inline void make_usb_disappear(void) -+{ -+ if (!the_controller->mach->udc_command) -+ return; -+ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT); -+} -+ -+static inline void let_usb_appear(void) -+{ -+ if (!the_controller->mach->udc_command) -+ return; -+ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT); -+} -+#endif -+ -+/*-------------------------------------------------------------------------*/ -+ -+/* -+ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be -+ * mostly silent during normal use/testing, with no timing side-effects. -+ */ -+#define DBG_NORMAL 1 /* error paths, device state transitions */ -+#define DBG_VERBOSE 2 /* add some success path trace info */ -+#define DBG_NOISY 3 /* ... even more: request level */ -+#define DBG_VERY_NOISY 4 /* ... even more: packet level */ -+ -+#ifdef DEBUG -+static const char *state_name[] = { -+ "EP0_IDLE", -+ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE", -+ "EP0_END_XFER", "EP0_STALL" -+}; -+ -+#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff) -+ -+#ifdef VERBOSE -+# define UDC_DEBUG DBG_VERBOSE -+#else -+# define UDC_DEBUG DBG_NORMAL -+#endif -+ -+static void __attribute__ ((__unused__)) -+dump_udccr(const char *label) -+{ -+ u32 udccr = UDCCR; -+ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", -+ label, udccr, -+ (udccr & UDCCR_OEN) ? " oen":"", -+ (udccr & UDCCR_AALTHNP) ? " aalthnp":"", -+ (udccr & UDCCR_AHNP) ? " rem" : "", -+ (udccr & UDCCR_BHNP) ? " rstir" : "", -+ (udccr & UDCCR_DWRE) ? " dwre" : "", -+ (udccr & UDCCR_SMAC) ? " smac" : "", -+ (udccr & UDCCR_EMCE) ? " emce" : "", -+ (udccr & UDCCR_UDR) ? " udr" : "", -+ (udccr & UDCCR_UDA) ? " uda" : "", -+ (udccr & UDCCR_UDE) ? " ude" : "", -+ (udccr & UDCCR_ACN) >> UDCCR_ACN_S, -+ (udccr & UDCCR_AIN) >> UDCCR_AIN_S, -+ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S ); -+} -+ -+static void __attribute__ ((__unused__)) -+dump_udccsr0(const char *label) -+{ -+ u32 udccsr0 = UDCCSR0; -+ -+ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n", -+ label, state_name[the_controller->ep0state], udccsr0, -+ (udccsr0 & UDCCSR0_SA) ? " sa" : "", -+ (udccsr0 & UDCCSR0_RNE) ? " rne" : "", -+ (udccsr0 & UDCCSR0_FST) ? " fst" : "", -+ (udccsr0 & UDCCSR0_SST) ? " sst" : "", -+ (udccsr0 & UDCCSR0_DME) ? " dme" : "", -+ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "", -+ (udccsr0 & UDCCSR0_OPC) ? " opr" : ""); -+} -+ -+static void __attribute__ ((__unused__)) -+dump_state(struct pxa27x_udc *dev) -+{ -+ unsigned i; -+ -+ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n", -+ state_name[dev->ep0state], -+ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR); -+ dump_udccr("udccr"); -+ -+ if (!dev->driver) { -+ DMSG("no gadget driver bound\n"); -+ return; -+ } else -+ DMSG("ep0 driver '%s'\n", dev->driver->driver.name); -+ -+ -+ dump_udccsr0 ("udccsr0"); -+ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n", -+ dev->stats.write.bytes, dev->stats.write.ops, -+ dev->stats.read.bytes, dev->stats.read.ops); -+ -+ for (i = 1; i < UDC_EP_NUM; i++) { -+ if (dev->ep[i].assigned) -+ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr); -+ } -+} -+ -+#if 0 -+static void dump_regs(u8 ep) -+{ -+ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n", -+ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep)); -+} -+static void dump_req (struct pxa27x_request *req) -+{ -+ struct usb_request *r = &req->req; -+ -+ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n", -+ __FUNCTION__, (unsigned)r->buf, r->length, -+ r->dma, r->actual); -+} -+#endif -+ -+#else -+ -+#define DMSG(stuff...) do{}while(0) -+ -+#define dump_udccr(x) do{}while(0) -+#define dump_udccsr0(x) do{}while(0) -+#define dump_state(x) do{}while(0) -+ -+#define UDC_DEBUG ((unsigned)4) -+ -+#endif -+ -+#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0) -+ -+#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff) -+#define INFO(stuff...) printk(KERN_INFO "udc: " stuff) -+ -+ -+#endif /* __LINUX_USB_GADGET_PXA27X_H */ -diff --git a/drivers/usb/gadget/pxa2xx_udc.h b/drivers/usb/gadget/pxa2xx_udc.h -index 0e5d0e6..9483a49 100644 ---- a/drivers/usb/gadget/pxa2xx_udc.h -+++ b/drivers/usb/gadget/pxa2xx_udc.h -@@ -206,7 +206,8 @@ dump_state(struct pxa2xx_udc *dev) - unsigned i; - - DMSG("%s %s, uicr %02X.%02X, usir %02X.%02x, ufnr %02X.%02X\n", -- is_usb_connected() ? "host " : "disconnected", -+ //is_usb_connected() ? "host " : "disconnected", -+ "host ", - state_name[dev->ep0state], - UICR1, UICR0, USIR1, USIR0, UFNRH, UFNRL); - dump_udccr("udccr"); -@@ -223,8 +224,8 @@ dump_state(struct pxa2xx_udc *dev) - } else - DMSG("ep0 driver '%s'\n", dev->driver->driver.name); - -- if (!is_usb_connected()) -- return; -+ //if (!is_usb_connected()) -+ // return; - - dump_udccs0 ("udccs0"); - DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n", -diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c -index ce4d2e0..5dac23f 100644 ---- a/drivers/usb/gadget/serial.c -+++ b/drivers/usb/gadget/serial.c -@@ -1356,6 +1356,7 @@ static int __init gs_bind(struct usb_gadget *gadget) - struct usb_ep *ep; - struct gs_dev *dev; - int gcnum; -+ struct usb_endpoint_config ep_config[2]; - - /* Some controllers can't support CDC ACM: - * - sh doesn't support multiple interfaces or configs; -@@ -1376,22 +1377,33 @@ static int __init gs_bind(struct usb_gadget *gadget) - __constant_cpu_to_le16(GS_VERSION_NUM|0x0099); - } - -+ ep_config[0].config = GS_BULK_CONFIG_ID; -+ ep_config[0].interface = gs_bulk_interface_desc.bInterfaceNumber; -+ ep_config[0].altinterface = gs_bulk_interface_desc.bAlternateSetting; -+ ep_config[1].config = GS_ACM_CONFIG_ID; -+ ep_config[1].interface = gs_data_interface_desc.bInterfaceNumber; -+ ep_config[1].altinterface = gs_data_interface_desc.bAlternateSetting; -+ - usb_ep_autoconfig_reset(gadget); - -- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc); -+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, &ep_config[0], 2); - if (!ep) - goto autoconf_fail; - EP_IN_NAME = ep->name; - ep->driver_data = ep; /* claim the endpoint */ - -- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc); -+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, &ep_config[0], 2); - if (!ep) - goto autoconf_fail; - EP_OUT_NAME = ep->name; - ep->driver_data = ep; /* claim the endpoint */ - - if (use_acm) { -- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc); -+ ep_config[0].config = GS_ACM_CONFIG_ID; -+ ep_config[0].interface = gs_control_interface_desc.bInterfaceNumber; -+ ep_config[0].altinterface = gs_control_interface_desc.bAlternateSetting; -+ -+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, &ep_config[0], 1); - if (!ep) { - printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name); - goto autoconf_fail; -diff --git a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c -index fcfe869..1e40d46 100644 ---- a/drivers/usb/gadget/zero.c -+++ b/drivers/usb/gadget/zero.c -@@ -1142,6 +1142,7 @@ zero_bind (struct usb_gadget *gadget) - struct zero_dev *dev; - struct usb_ep *ep; - int gcnum; -+ struct usb_endpoint_config ep_config[2]; - - /* FIXME this can't yet work right with SH ... it has only - * one configuration, numbered one. -@@ -1154,7 +1155,15 @@ zero_bind (struct usb_gadget *gadget) - * but there may also be important quirks to address. - */ - usb_ep_autoconfig_reset (gadget); -- ep = usb_ep_autoconfig (gadget, &fs_source_desc); -+ -+ ep_config[0].config = CONFIG_SOURCE_SINK; -+ ep_config[0].interface = source_sink_intf.bInterfaceNumber; -+ ep_config[0].altinterface = source_sink_intf.bAlternateSetting; -+ ep_config[1].config = CONFIG_LOOPBACK; -+ ep_config[1].interface = loopback_intf.bInterfaceNumber; -+ ep_config[1].altinterface = loopback_intf.bAlternateSetting; -+ -+ ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2); - if (!ep) { - autoconf_fail: - printk (KERN_ERR "%s: can't autoconfigure on %s\n", -@@ -1164,7 +1173,7 @@ autoconf_fail: - EP_IN_NAME = ep->name; - ep->driver_data = ep; /* claim */ - -- ep = usb_ep_autoconfig (gadget, &fs_sink_desc); -+ ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2); - if (!ep) - goto autoconf_fail; - EP_OUT_NAME = ep->name; -diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig -index 2580f5f..12e4b91 100644 ---- a/drivers/video/backlight/Kconfig -+++ b/drivers/video/backlight/Kconfig -@@ -40,7 +40,7 @@ config BACKLIGHT_CLASS_DEVICE - - config BACKLIGHT_CORGI - tristate "Sharp Corgi Backlight Driver (SL Series)" -- depends on BACKLIGHT_CLASS_DEVICE && PXA_SHARPSL -+ depends on BACKLIGHT_CLASS_DEVICE && (PXA_SHARPSL || MACH_EM_X270) - default y - help - If you have a Sharp Zaurus SL-C7xx, SL-Cxx00 or SL-6000x say y to enable the -diff --git a/include/asm-arm/arch-pxa/pwr-i2c.h b/include/asm-arm/arch-pxa/pwr-i2c.h -new file mode 100644 -index 0000000..6bad486 ---- /dev/null -+++ b/include/asm-arm/arch-pxa/pwr-i2c.h -@@ -0,0 +1,61 @@ -+/* -+ * (C) Copyright 2007 CompuLab, Ltd -+ * Mike Rapoport -+ * -+ * Simple Power I2C interface for PXA processors. -+ * Based on U-Boot PXA I2C driver. -+ * -+ * This program 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., 59 Temple Place, Suite 330, Boston, -+ * MA 02111-1307 USA -+ * -+ */ -+ -+#ifndef __PXA_PWR_I2C_H__ -+#define __PXA_PWR_I2C_H__ -+ -+/* -+ * Configuration items. -+ */ -+#define I2C_RXTX_LEN 128 /* maximum tx/rx buffer length */ -+ -+/* -+ * Probe the given I2C chip address. Returns 0 if a chip responded, -+ * not 0 on failure. -+ */ -+extern int pxa_pwr_i2c_probe(u8 chip); -+ -+/* -+ * Read/Write interface: -+ * chip: I2C chip address, range 0..127 -+ * addr: Memory (register) address within the chip -+ * alen: Number of bytes to use for addr (typically 1, 2 for larger -+ * memories, 0 for register type devices with only one -+ * register) -+ * buffer: Where to read/write the data -+ * len: How many bytes to read/write -+ * -+ * Returns: 0 on success, not 0 on failure -+ */ -+extern int pxa_pwr_i2c_read(u8 chip, uint addr, int alen, u8 *buffer, int len); -+extern int pxa_pwr_i2c_write(u8 chip, uint addr, int alen, -+ u8 *buffer, int len); -+ -+/* -+ * Utility routines to read/write registers. -+ */ -+extern s32 pxa_pwr_i2c_reg_read (u8 chip, u8 reg); -+extern s32 pxa_pwr_i2c_reg_write(u8 chip, u8 reg, u8 val); -+ -+#endif /* __PXA_PWR_I2C_H___ */ -diff --git a/include/linux/da9030.h b/include/linux/da9030.h -new file mode 100644 -index 0000000..6eb89e2 ---- /dev/null -+++ b/include/linux/da9030.h -@@ -0,0 +1,118 @@ -+#ifndef _DA9030_H -+#define _DA9030_H -+ -+/* DA9030 has 24 possible interrupts */ -+#define DA9030_IRQ_COUNT 24 -+ -+/* EVENT A */ -+#define DA9030_IRQ_ONKEY_EN 0 -+#define DA9030_IRQ_PWREN1 1 -+#define DA9030_IRQ_EXTON 2 -+#define DA9030_IRQ_CHDET 3 -+#define DA9030_IRQ_TBAT 4 -+#define DA9030_IRQ_VBATMON 5 -+#define DA9030_IRQ_VBATMONTXON 6 -+#define DA9030_IRQ_CHIOVER 7 -+ -+/* EVENT B */ -+#define DA9030_IRQ_TCTO 8 -+#define DA9030_IRQ_CCTO 9 -+#define DA9030_IRQ_ADC_READY 10 -+#define DA9030_IRQ_VBUS_4_4 11 -+#define DA9030_IRQ_VBUS_4_0 12 -+#define DA9030_IRQ_SESSION_VALID 13 -+#define DA9030_IRQ_SRP_DETECT 14 -+#define DA9030_IRQ_WDOG_INTR 15 -+ -+/* EVENT C */ -+#define DA9030_IRQ_LDO15 16 -+#define DA9030_IRQ_LDO16 17 -+#define DA9030_IRQ_LDO17 18 -+#define DA9030_IRQ_LDO18 19 -+#define DA9030_IRQ_LDO19 20 -+#define DA9030_IRQ_BUCK2 21 -+#define DA9030_IRQ_ADC_IN4 22 -+#define DA9030_IRQ_ADC_IN5 23 -+ -+enum da9030_ldo_sleep_mode { -+ DA9030_LDO_SLEEP_KEEP = 0x0, -+ DA9030_LDO_SLEEP_SHUT_DOWN = 0x1, -+ DA9030_LDO_SLEEP_POWER_UP = 0x2, -+ DA9030_LDO_SLEEP_HIGH_Z = 0x3, -+}; -+ -+enum da9030_led_rate { -+ DA9030_LED_RATE_ON = 0x0, -+ DA9030_LED_RATE_0_52 = 0x1, -+ DA9030_LED_RATE_1_05 = 0x2, -+ DA9030_LED_RATE_2_1 = 0x3, -+}; -+ -+enum da9030_led_duty_cycle { -+ DA9030_LED_DUTY_1_16 = 0x0, -+ DA9030_LED_DUTY_1_8 = 0x1, -+ DA9030_LED_DUTY_1_4 = 0x2, -+ DA9030_LED_DUTY_1_2 = 0x3, -+}; -+ -+enum da9030_led_pwm_chop { -+ DA9030_LED_PWM_8_8 = 0x0, -+ DA9030_LED_PWM_7_8 = 0x1, -+ DA9030_LED_PWM_6_8 = 0x2, -+ DA9030_LED_PWM_5_8 = 0x3, -+ DA9030_LED_PWM_4_8 = 0x4, -+ DA9030_LED_PWM_3_8 = 0x5, -+ DA9030_LED_PWM_2_8 = 0x6, -+ DA9030_LED_PWM_1_8 = 0x7, -+}; -+ -+struct da9030_adc_res { -+ int vbat_res; -+ int vbatmin_res; -+ int vbatmintxon; -+ int ichmax_res; -+ int ichmin_res; -+ int ichaverage_res; -+ int vchmax_res; -+ int vchmin_res; -+ int tbat_res; -+ int adc_in4_res; -+ int adc_in5_res; -+}; -+ -+extern int da9030_get_status(void); -+extern int da9030_get_fault_log(void); -+ -+extern void da9030_enable_adc(void); -+extern void da9030_read_adc(struct da9030_adc_res *adc); -+ -+extern void da9030_set_wled(int on, unsigned int brightness); -+ -+extern int da9030_set_led(int led, int on, -+ enum da9030_led_rate rate, -+ enum da9030_led_duty_cycle duty, -+ enum da9030_led_pwm_chop pwm_chop); -+ -+extern int da9030_set_charger(int on, unsigned int mA, unsigned int mV); -+extern void da9030_get_charger(int *on, unsigned int *mA, unsigned int *mV); -+ -+extern int da9030_set_ldo(int ldo, int on, unsigned int mV, -+ enum da9030_ldo_sleep_mode sleep_mode); -+extern int da9030_set_buck(int buck, int on, unsigned int mV, int flags); -+ -+extern void da9030_set_thresholds(unsigned int tbathighp, -+ unsigned int tbathighn, -+ unsigned int tbatlow, -+ unsigned int vbatmon); -+ -+extern int da9030_register_callback(int event, -+ void (*callback)(int event, void *data), -+ void *data); -+extern void da9030_unregister_callback(int event); -+ -+/* Keep these for now, although they are unsafe. When I'll see what -+ other methods are needed from DA9030, I'll remove these */ -+extern s32 da9030_get_reg(u32 reg); -+extern s32 da9030_set_reg(u32 reg, u8 val); -+ -+#endif -diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h -index 4f59b2a..792c568 100644 ---- a/include/linux/usb_gadget.h -+++ b/include/linux/usb_gadget.h -@@ -397,10 +397,28 @@ usb_ep_fifo_flush (struct usb_ep *ep) - - struct usb_gadget; - -+/** -+ * struct usb_endpoint_config - possible configurations of a given endpoint -+ * @config: the configuration number -+ * @interface: the interface number -+ * @altinterface: the altinterface number -+ * -+ * Used as an array to pass information about the possible configurations -+ * of a given endpoint to the bus controller. -+ */ -+struct usb_endpoint_config { -+ u8 config; -+ u8 interface; -+ u8 altinterface; -+}; -+ - /* the rest of the api to the controller hardware: device operations, - * which don't involve endpoints (or i/o). - */ - struct usb_gadget_ops { -+ struct usb_ep* (*ep_alloc)(struct usb_gadget *, -+ struct usb_endpoint_descriptor *, -+ struct usb_endpoint_config *, int); - int (*get_frame)(struct usb_gadget *); - int (*wakeup)(struct usb_gadget *); - int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered); -@@ -824,7 +842,10 @@ int usb_gadget_config_buf(const struct usb_config_descriptor *config, - /* utility wrapping a simple endpoint selection policy */ - - extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *, -- struct usb_endpoint_descriptor *) __devinit; -+ struct usb_endpoint_descriptor *, -+ struct usb_endpoint_config *, -+ int numconfigs -+); - - extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit; - -diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h -new file mode 100644 -index 0000000..354e533 ---- /dev/null -+++ b/include/linux/wm97xx.h -@@ -0,0 +1,291 @@ -+ -+/* -+ * Register bits and API for Wolfson WM97xx series of codecs -+ */ -+ -+#ifndef _LINUX_WM97XX_H -+#define _LINUX_WM97XX_H -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include /* Input device layer */ -+ -+/* -+ * WM97xx AC97 Touchscreen registers -+ */ -+#define AC97_WM97XX_DIGITISER1 0x76 -+#define AC97_WM97XX_DIGITISER2 0x78 -+#define AC97_WM97XX_DIGITISER_RD 0x7a -+#define AC97_WM9713_DIG1 0x74 -+#define AC97_WM9713_DIG2 AC97_WM97XX_DIGITISER1 -+#define AC97_WM9713_DIG3 AC97_WM97XX_DIGITISER2 -+ -+/* -+ * WM97xx register bits -+ */ -+#define WM97XX_POLL 0x8000 /* initiate a polling measurement */ -+#define WM97XX_ADCSEL_X 0x1000 /* x coord measurement */ -+#define WM97XX_ADCSEL_Y 0x2000 /* y coord measurement */ -+#define WM97XX_ADCSEL_PRES 0x3000 /* pressure measurement */ -+#define WM97XX_ADCSEL_MASK 0x7000 -+#define WM97XX_COO 0x0800 /* enable coordinate mode */ -+#define WM97XX_CTC 0x0400 /* enable continuous mode */ -+#define WM97XX_CM_RATE_93 0x0000 /* 93.75Hz continuous rate */ -+#define WM97XX_CM_RATE_187 0x0100 /* 187.5Hz continuous rate */ -+#define WM97XX_CM_RATE_375 0x0200 /* 375Hz continuous rate */ -+#define WM97XX_CM_RATE_750 0x0300 /* 750Hz continuous rate */ -+#define WM97XX_CM_RATE_8K 0x00f0 /* 8kHz continuous rate */ -+#define WM97XX_CM_RATE_12K 0x01f0 /* 12kHz continuous rate */ -+#define WM97XX_CM_RATE_24K 0x02f0 /* 24kHz continuous rate */ -+#define WM97XX_CM_RATE_48K 0x03f0 /* 48kHz continuous rate */ -+#define WM97XX_CM_RATE_MASK 0x03f0 -+#define WM97XX_RATE(i) (((i & 3) << 8) | ((i & 4) ? 0xf0 : 0)) -+#define WM97XX_DELAY(i) ((i << 4) & 0x00f0) /* sample delay times */ -+#define WM97XX_DELAY_MASK 0x00f0 -+#define WM97XX_SLEN 0x0008 /* slot read back enable */ -+#define WM97XX_SLT(i) ((i - 5) & 0x7) /* touchpanel slot selection (5-11) */ -+#define WM97XX_SLT_MASK 0x0007 -+#define WM97XX_PRP_DETW 0x4000 /* pen detect on, digitiser off, wake up */ -+#define WM97XX_PRP_DET 0x8000 /* pen detect on, digitiser off, no wake up */ -+#define WM97XX_PRP_DET_DIG 0xc000 /* pen detect on, digitiser on */ -+#define WM97XX_RPR 0x2000 /* wake up on pen down */ -+#define WM97XX_PEN_DOWN 0x8000 /* pen is down */ -+#define WM97XX_ADCSRC_MASK 0x7000 /* ADC source mask */ -+ -+#define WM97XX_AUX_ID1 0x8001 -+#define WM97XX_AUX_ID2 0x8002 -+#define WM97XX_AUX_ID3 0x8003 -+#define WM97XX_AUX_ID4 0x8004 -+ -+ -+/* WM9712 Bits */ -+#define WM9712_45W 0x1000 /* set for 5-wire touchscreen */ -+#define WM9712_PDEN 0x0800 /* measure only when pen down */ -+#define WM9712_WAIT 0x0200 /* wait until adc is read before next sample */ -+#define WM9712_PIL 0x0100 /* current used for pressure measurement. set 400uA else 200uA */ -+#define WM9712_MASK_HI 0x0040 /* hi on mask pin (47) stops conversions */ -+#define WM9712_MASK_EDGE 0x0080 /* rising/falling edge on pin delays sample */ -+#define WM9712_MASK_SYNC 0x00c0 /* rising/falling edge on mask initiates sample */ -+#define WM9712_RPU(i) (i&0x3f) /* internal pull up on pen detect (64k / rpu) */ -+#define WM9712_PD(i) (0x1 << i) /* power management */ -+ -+/* WM9712 Registers */ -+#define AC97_WM9712_POWER 0x24 -+#define AC97_WM9712_REV 0x58 -+ -+/* WM9705 Bits */ -+#define WM9705_PDEN 0x1000 /* measure only when pen is down */ -+#define WM9705_PINV 0x0800 /* inverts sense of pen down output */ -+#define WM9705_BSEN 0x0400 /* BUSY flag enable, pin47 is 1 when busy */ -+#define WM9705_BINV 0x0200 /* invert BUSY (pin47) output */ -+#define WM9705_WAIT 0x0100 /* wait until adc is read before next sample */ -+#define WM9705_PIL 0x0080 /* current used for pressure measurement. set 400uA else 200uA */ -+#define WM9705_PHIZ 0x0040 /* set PHONE and PCBEEP inputs to high impedance */ -+#define WM9705_MASK_HI 0x0010 /* hi on mask stops conversions */ -+#define WM9705_MASK_EDGE 0x0020 /* rising/falling edge on pin delays sample */ -+#define WM9705_MASK_SYNC 0x0030 /* rising/falling edge on mask initiates sample */ -+#define WM9705_PDD(i) (i & 0x000f) /* pen detect comparator threshold */ -+ -+ -+/* WM9713 Bits */ -+#define WM9713_PDPOL 0x0400 /* Pen down polarity */ -+#define WM9713_POLL 0x0200 /* initiate a polling measurement */ -+#define WM9713_CTC 0x0100 /* enable continuous mode */ -+#define WM9713_ADCSEL_X 0x0002 /* X measurement */ -+#define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ -+#define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ -+#define WM9713_COO 0x0001 /* enable coordinate mode */ -+#define WM9713_PDEN 0x0800 /* measure only when pen down */ -+#define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ -+#define WM9713_WAIT 0x0200 /* coordinate wait */ -+ -+/* AUX ADC ID's */ -+#define TS_COMP1 0x0 -+#define TS_COMP2 0x1 -+#define TS_BMON 0x2 -+#define TS_WIPER 0x3 -+ -+/* ID numbers */ -+#define WM97XX_ID1 0x574d -+#define WM9712_ID2 0x4c12 -+#define WM9705_ID2 0x4c05 -+#define WM9713_ID2 0x4c13 -+ -+/* Codec GPIO's */ -+#define WM97XX_MAX_GPIO 16 -+#define WM97XX_GPIO_1 (1 << 1) -+#define WM97XX_GPIO_2 (1 << 2) -+#define WM97XX_GPIO_3 (1 << 3) -+#define WM97XX_GPIO_4 (1 << 4) -+#define WM97XX_GPIO_5 (1 << 5) -+#define WM97XX_GPIO_6 (1 << 6) -+#define WM97XX_GPIO_7 (1 << 7) -+#define WM97XX_GPIO_8 (1 << 8) -+#define WM97XX_GPIO_9 (1 << 9) -+#define WM97XX_GPIO_10 (1 << 10) -+#define WM97XX_GPIO_11 (1 << 11) -+#define WM97XX_GPIO_12 (1 << 12) -+#define WM97XX_GPIO_13 (1 << 13) -+#define WM97XX_GPIO_14 (1 << 14) -+#define WM97XX_GPIO_15 (1 << 15) -+ -+ -+#define AC97_LINK_FRAME 21 /* time in uS for AC97 link frame */ -+ -+ -+/*---------------- Return codes from sample reading functions ---------------*/ -+ -+/* More data is available; call the sample gathering function again */ -+#define RC_AGAIN 0x00000001 -+/* The returned sample is valid */ -+#define RC_VALID 0x00000002 -+/* The pen is up (the first RC_VALID without RC_PENUP means pen is down) */ -+#define RC_PENUP 0x00000004 -+/* The pen is down (RC_VALID implies RC_PENDOWN, but sometimes it is helpful -+ to tell the handler that the pen is down but we don't know yet his coords, -+ so the handler should not sleep or wait for pendown irq) */ -+#define RC_PENDOWN 0x00000008 -+ -+/* The wm97xx driver provides a private API for writing platform-specific -+ * drivers. -+ */ -+ -+/* The structure used to return arch specific sampled data into */ -+struct wm97xx_data { -+ int x; -+ int y; -+ int p; -+}; -+ -+/* Codec GPIO status -+ */ -+typedef enum { -+ WM97XX_GPIO_HIGH, -+ WM97XX_GPIO_LOW -+} wm97xx_gpio_status_t; -+ -+/* Codec GPIO direction -+ */ -+typedef enum { -+ WM97XX_GPIO_IN, -+ WM97XX_GPIO_OUT -+} wm97xx_gpio_dir_t; -+ -+/* Codec GPIO polarity -+ */ -+typedef enum { -+ WM97XX_GPIO_POL_HIGH, -+ WM97XX_GPIO_POL_LOW -+} wm97xx_gpio_pol_t; -+ -+/* Codec GPIO sticky -+ */ -+typedef enum { -+ WM97XX_GPIO_STICKY, -+ WM97XX_GPIO_NOTSTICKY -+} wm97xx_gpio_sticky_t; -+ -+/* Codec GPIO wake -+ */ -+typedef enum { -+ WM97XX_GPIO_WAKE, -+ WM97XX_GPIO_NOWAKE -+} wm97xx_gpio_wake_t; -+ -+ -+/* -+ * Digitiser ioctl commands -+ */ -+#define WM97XX_DIG_START 0x1 -+#define WM97XX_DIG_STOP 0x2 -+#define WM97XX_PHY_INIT 0x3 -+#define WM97XX_AUX_PREPARE 0x4 -+#define WM97XX_DIG_RESTORE 0x5 -+ -+struct wm97xx; -+extern struct wm97xx_codec_drv wm97xx_codec; -+ -+/* -+ * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs -+ */ -+struct wm97xx_codec_drv { -+ u16 id; -+ char *name; -+ int (*poll_sample) (struct wm97xx *, int adcsel, int *sample); /* read 1 sample */ -+ int (*poll_touch) (struct wm97xx *, struct wm97xx_data *); /* read X,Y,[P] in poll */ -+ int (*digitiser_ioctl) (struct wm97xx *, int cmd); -+ int (*acc_enable) (struct wm97xx *, int enable); -+}; -+ -+ -+/* Machine specific and accelerated touch operations */ -+struct wm97xx_mach_ops { -+ -+ /* accelerated touch readback - coords are transmited on AC97 link */ -+ int acc_enabled; -+ void (*acc_pen_up) (struct wm97xx *); -+ int (*acc_pen_down) (struct wm97xx *); -+ int (*acc_startup) (struct wm97xx *); -+ void (*acc_shutdown) (struct wm97xx *); -+ -+ /* pre and post sample - can be used to minimise any analog noise */ -+ void (*pre_sample) (int); /* function to run before sampling */ -+ void (*post_sample) (int); /* function to run after sampling */ -+}; -+ -+struct wm97xx { -+ u16 dig[3], id, gpio[6], misc; /* Cached codec registers */ -+ u16 dig_save[3]; /* saved during aux reading */ -+ struct wm97xx_codec_drv *codec; /* attached codec driver*/ -+ struct input_dev* input_dev; /* touchscreen input device */ -+ struct snd_ac97 *ac97; /* ALSA codec access */ -+ struct device *dev; /* ALSA device */ -+ struct device *battery_dev; -+ struct device *touch_dev; -+ struct wm97xx_mach_ops *mach_ops; -+ struct mutex codec_mutex; -+ struct completion ts_init; -+ struct completion ts_exit; -+ struct task_struct *ts_task; -+ unsigned int pen_irq; /* Pen IRQ number in use */ -+ wait_queue_head_t pen_irq_wait; /* Pen IRQ wait queue */ -+ struct workqueue_struct *pen_irq_workq; -+ struct work_struct pen_event_work; -+ u16 acc_slot; /* AC97 slot used for acc touch data */ -+ u16 acc_rate; /* acc touch data rate */ -+ unsigned int ts_use_count; -+ unsigned pen_is_down:1; /* Pen is down */ -+ unsigned aux_waiting:1; /* aux measurement waiting */ -+ unsigned pen_probably_down:1; /* used in polling mode */ -+}; -+ -+/* Codec GPIO access (not supported on WM9705) -+ * This can be used to set/get codec GPIO and Virtual GPIO status. -+ */ -+wm97xx_gpio_status_t wm97xx_get_gpio(struct wm97xx *wm, u32 gpio); -+void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio, -+ wm97xx_gpio_status_t status); -+void wm97xx_config_gpio(struct wm97xx *wm, u32 gpio, -+ wm97xx_gpio_dir_t dir, -+ wm97xx_gpio_pol_t pol, -+ wm97xx_gpio_sticky_t sticky, -+ wm97xx_gpio_wake_t wake); -+ -+/* codec AC97 IO access */ -+int wm97xx_reg_read(struct wm97xx *wm, u16 reg); -+void wm97xx_reg_write(struct wm97xx *wm, u16 reg, u16 val); -+ -+/* aux adc readback */ -+int wm97xx_read_aux_adc(struct wm97xx *wm, u16 adcsel); -+ -+/* machine ops */ -+int wm97xx_register_mach_ops(struct wm97xx *, struct wm97xx_mach_ops *); -+void wm97xx_unregister_mach_ops(struct wm97xx *); -+ -+extern struct bus_type wm97xx_bus_type; -+#endif -diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig -index a83e229..89b5730 100644 ---- a/sound/soc/pxa/Kconfig -+++ b/sound/soc/pxa/Kconfig -@@ -53,3 +53,12 @@ config SND_PXA2XX_SOC_TOSA - help - Say Y if you want to add support for SoC audio on Sharp - Zaurus SL-C6000x models (Tosa). -+ -+config SND_PXA2XX_SOC_EM_X270 -+ tristate "SoC Audio support for CompuLab EM-x270" -+ depends on SND_PXA2XX_SOC && MACH_EM_X270 -+ select SND_PXA2XX_SOC_AC97 -+ select SND_SOC_WM9712 -+ help -+ Say Y if you want to add support for SoC audio on -+ CompuLab EM-x270. -diff --git a/sound/soc/pxa/Makefile b/sound/soc/pxa/Makefile -index 78e0d6b..32375ac 100644 ---- a/sound/soc/pxa/Makefile -+++ b/sound/soc/pxa/Makefile -@@ -12,9 +12,11 @@ snd-soc-corgi-objs := corgi.o - snd-soc-poodle-objs := poodle.o - snd-soc-tosa-objs := tosa.o - snd-soc-spitz-objs := spitz.o -+snd-soc-em-x270-objs := em-x270.o - - obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o - obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o - obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o - obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o -+obj-$(CONFIG_SND_PXA2XX_SOC_EM_X270) += snd-soc-em-x270.o - -diff --git a/sound/soc/pxa/em-x270.c b/sound/soc/pxa/em-x270.c -new file mode 100644 -index 0000000..9e891d0 ---- /dev/null -+++ b/sound/soc/pxa/em-x270.c -@@ -0,0 +1,137 @@ -+/* -+ * em-x270.c -- SoC audio for EM-X270 -+ * -+ * Copyright 2007 CompuLab, Ltd. -+ * -+ * Author: Mike Rapoport -+ * -+ * Copied from tosa.c: -+ * Copyright 2005 Wolfson Microelectronics PLC. -+ * Copyright 2005 Openedhand Ltd. -+ * -+ * Authors: Liam Girdwood -+ * Richard Purdie -+ * -+ * This program 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. -+ * -+ */ -+ -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include "../codecs/wm9712.h" -+#include "pxa2xx-pcm.h" -+#include "pxa2xx-ac97.h" -+ -+static struct snd_soc_machine em_x270; -+ -+#define EM_X270_HP 0 -+#define EM_X270_MIC_INT 1 -+#define EM_X270_HEADSET 2 -+#define EM_X270_HP_OFF 3 -+#define EM_X270_SPK_ON 0 -+#define EM_X270_SPK_OFF 1 -+ -+ -+static struct snd_soc_ops em_x270_ops = { -+}; -+ -+static const struct snd_kcontrol_new em_x270_controls[] = { -+}; -+ -+static int em_x270_ac97_init(struct snd_soc_codec *codec) -+{ -+ int i, err; -+ -+ /* add em_x270 specific controls */ -+ for (i = 0; i < ARRAY_SIZE(em_x270_controls); i++) { -+ err = snd_ctl_add(codec->card, -+ snd_soc_cnew(&em_x270_controls[i],codec, NULL)); -+ if (err < 0) -+ return err; -+ } -+ -+ snd_soc_dapm_sync_endpoints(codec); -+ return 0; -+} -+ -+static struct snd_soc_dai_link em_x270_dai[] = { -+ { -+ .name = "AC97", -+ .stream_name = "AC97 HiFi", -+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI], -+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI], -+ .init = em_x270_ac97_init, -+ .ops = &em_x270_ops, -+ }, -+ { -+ .name = "AC97 Aux", -+ .stream_name = "AC97 Aux", -+ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX], -+ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX], -+ .ops = &em_x270_ops, -+ }, -+}; -+ -+static struct snd_soc_machine em_x270 = { -+ .name = "EM-X270", -+ .dai_link = em_x270_dai, -+ .num_links = ARRAY_SIZE(em_x270_dai), -+}; -+ -+static struct snd_soc_device em_x270_snd_devdata = { -+ .machine = &em_x270, -+ .platform = &pxa2xx_soc_platform, -+ .codec_dev = &soc_codec_dev_wm9712, -+}; -+ -+static struct platform_device *em_x270_snd_device; -+ -+static int __init em_x270_init(void) -+{ -+ int ret; -+ -+ if (!machine_is_em_x270()) -+ return -ENODEV; -+ -+ em_x270_snd_device = platform_device_alloc("soc-audio", -1); -+ if (!em_x270_snd_device) -+ return -ENOMEM; -+ -+ platform_set_drvdata(em_x270_snd_device, &em_x270_snd_devdata); -+ em_x270_snd_devdata.dev = &em_x270_snd_device->dev; -+ ret = platform_device_add(em_x270_snd_device); -+ -+ if (ret) -+ platform_device_put(em_x270_snd_device); -+ -+ return ret; -+} -+ -+static void __exit em_x270_exit(void) -+{ -+ platform_device_unregister(em_x270_snd_device); -+} -+ -+module_init(em_x270_init); -+module_exit(em_x270_exit); -+ -+/* Module information */ -+MODULE_AUTHOR("Mike Rapoport"); -+MODULE_DESCRIPTION("ALSA SoC EM-X270"); -+MODULE_LICENSE("GPL"); diff --git a/recipes/linux/em-x270_2.6.23.bb b/recipes/linux/em-x270_2.6.23.bb deleted file mode 100644 index fcef7280d0..0000000000 --- a/recipes/linux/em-x270_2.6.23.bb +++ /dev/null @@ -1,29 +0,0 @@ -require linux.inc - -SECTION = "kernel" -DESCRIPTION = "Linux kernel for the Compulab EM-X270 system" -LICENSE = "GPL" -DEPENDS = "u-boot-utils-native" -PR = "r1" - -KERNEL_IMAGETYPE = "uImage" - -SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ - file://em-x270.patch;patch=1 \ - file://defconfig \ - " - -S = "${WORKDIR}/linux-${PV}" - -COMPATIBLE_HOST = 'arm.*-linux' -COMPATIBLE_MACHINE = "em-x270" - -inherit kernel -inherit package - -ARCH = "arm" - -FILES_kernel-image = "" - -S = "${WORKDIR}/linux-${PV}" - diff --git a/recipes/linux/linux-2.6.23/em-x270/01-prevent_loop_timespec_add_ns.patch b/recipes/linux/linux-2.6.23/em-x270/01-prevent_loop_timespec_add_ns.patch new file mode 100644 index 0000000000..a2f6e1765e --- /dev/null +++ b/recipes/linux/linux-2.6.23/em-x270/01-prevent_loop_timespec_add_ns.patch @@ -0,0 +1,19 @@ +--- + include/linux/time.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) +diff --git a/include/linux/time.h b/include/linux/time.h +index 2091a19..d32ef0a 100644 +--- a/include/linux/time.h ++++ b/include/linux/time.h +@@ -173,6 +173,10 @@ static inline void timespec_add_ns(struct timespec *a, u64 ns) + { + ns += a->tv_nsec; + while(unlikely(ns >= NSEC_PER_SEC)) { ++ /* The following asm() prevents the compiler from ++ * optimising this loop into a modulo operation. */ ++ asm("" : "+r"(ns)); ++ + ns -= NSEC_PER_SEC; + a->tv_sec++; + } + diff --git a/recipes/linux/linux-2.6.23/em-x270/defconfig b/recipes/linux/linux-2.6.23/em-x270/defconfig new file mode 100644 index 0000000000..3246136571 --- /dev/null +++ b/recipes/linux/linux-2.6.23/em-x270/defconfig @@ -0,0 +1,1354 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.23-rc9 +# Tue Oct 9 11:19:21 2007 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_MMU=y +# CONFIG_NO_IOPORT is not set +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA=y +CONFIG_ARCH_MTD_XIP=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-em-x270" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_USER_NS is not set +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_SYSFS_DEPRECATED=y +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set +# CONFIG_BLK_DEV_BSG is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CO285 is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IMX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_PNX4008 is not set +CONFIG_ARCH_PXA=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP is not set + +# +# Intel PXA2xx Implementations +# +# CONFIG_ARCH_LUBBOCK is not set +# CONFIG_MACH_LOGICPD_PXA270 is not set +# CONFIG_MACH_MAINSTONE is not set +# CONFIG_ARCH_PXA_IDP is not set +# CONFIG_PXA_SHARPSL is not set +# CONFIG_MACH_TRIZEPS4 is not set +CONFIG_MACH_EM_X270=y +CONFIG_PXA27x=y +CONFIG_PXA_PWR_I2C=y + +# +# Boot options +# + +# +# Power management +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_XSCALE=y +CONFIG_CPU_32v5=y +CONFIG_CPU_ABRT_EV5T=y +CONFIG_CPU_CACHE_VIVT=y +CONFIG_CPU_TLB_V4WBI=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_OUTER_CACHE is not set +CONFIG_IWMMXT=y +CONFIG_XSCALE_PMU=y + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +# CONFIG_TICK_ONESHOT is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +# CONFIG_PREEMPT is not set +CONFIG_HZ=100 +CONFIG_AEABI=y +CONFIG_OABI_COMPAT=y +# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4096 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200" +# CONFIG_XIP_KERNEL is not set +# CONFIG_KEXEC is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +# CONFIG_CPU_FREQ_DEBUG is not set +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_STAT_DETAILS is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +CONFIG_CPU_FREQ_GOV_ONDEMAND=m +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m +CONFIG_CPU_FREQ_PXA=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_FPE_NWFPE=y +# CONFIG_FPE_NWFPE_XP is not set +# CONFIG_FPE_FASTFPE is not set + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND_UP_POSSIBLE=y +CONFIG_SUSPEND=y +CONFIG_APM_EMULATION=y + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set +CONFIG_NET_SCH_FIFO=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +# CONFIG_BT_RFCOMM_TTY is not set +CONFIG_BT_BNEP=m +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +# CONFIG_BT_HCIUSB_SCO is not set +CONFIG_BT_HCIUART=m +# CONFIG_BT_HCIUART_H4 is not set +# CONFIG_BT_HCIUART_BCSP is not set +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +# CONFIG_BT_HCIVHCI is not set +# CONFIG_AF_RXRPC is not set + +# +# Wireless +# +CONFIG_CFG80211=m +CONFIG_WIRELESS_EXT=y +CONFIG_MAC80211=m +# CONFIG_MAC80211_LEDS is not set +CONFIG_MAC80211_DEBUGFS=y +# CONFIG_MAC80211_DEBUG is not set +CONFIG_IEEE80211=m +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=m +CONFIG_IEEE80211_CRYPT_CCMP=m +# CONFIG_IEEE80211_CRYPT_TKIP is not set +# CONFIG_IEEE80211_SOFTMAC is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +# CONFIG_MTD_AFS_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_XIP is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_START=0x0 +CONFIG_MTD_PHYSMAP_LEN=0x100000 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +# CONFIG_MTD_ARM_INTEGRATOR is not set +# CONFIG_MTD_IMPA7 is not set +# CONFIG_MTD_SHARP_SL is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_H1900 is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_SHARPSL is not set +# CONFIG_MTD_NAND_NANDSIM is not set +CONFIG_MTD_NAND_PLATFORM=y +# CONFIG_MTD_ONENAND is not set + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +CONFIG_MTD_UBI_GLUEBI=y + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=12000 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +# CONFIG_NETDEVICES_MULTIQUEUE is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_PHYLIB is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_AX88796 is not set +# CONFIG_SMC91X is not set +CONFIG_DM9000=y +# CONFIG_SMC911X is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET_MII is not set +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +CONFIG_PPP=m +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +# CONFIG_PPPOE is not set +CONFIG_PPPOL2TP=m +# CONFIG_SLIP is not set +CONFIG_SLHC=m +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +CONFIG_KEYBOARD_PXA27x=y +# CONFIG_KEYBOARD_GPIO is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +CONFIG_TOUCHSCREEN_WM97XX=y +# CONFIG_TOUCHSCREEN_WM9705 is not set +CONFIG_TOUCHSCREEN_WM9712=y +# CONFIG_TOUCHSCREEN_WM9713 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_UCB1400 is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_PXA=y +CONFIG_SERIAL_PXA_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_WATCHDOG is not set +CONFIG_HW_RANDOM=m +# CONFIG_NVRAM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set + +# +# I2C Algorithms +# +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALGOPCA is not set + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_PXA=y +# CONFIG_I2C_PXA_SLAVE is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_SENSORS_TSL2550 is not set +CONFIG_DA9030=y +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +CONFIG_APM_POWER=y +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_BATTERY_EM_X270 is not set +# CONFIG_HWMON is not set +CONFIG_MISC_DEVICES=y +# CONFIG_EEPROM_93CX6 is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m + +# +# LED drivers +# +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_EM_X270=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_CORGI=y + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_VGASTATE is not set +CONFIG_VIDEO_OUTPUT_CONTROL=m +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_SYS_FOPS is not set +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +CONFIG_FB_PXA=y +CONFIG_FB_PXA_PARAMETERS=y +# CONFIG_FB_MBX is not set +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y + +# +# Sound +# +CONFIG_SOUND=y + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +CONFIG_SND_AC97_CODEC=m +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# +CONFIG_SND_PXA2XX_PCM=m +CONFIG_SND_PXA2XX_AC97=m + +# +# USB devices +# +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_CAIAQ is not set + +# +# System on Chip audio support +# +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC=y +CONFIG_SND_PXA2XX_SOC=y +CONFIG_SND_PXA2XX_SOC_AC97=y +CONFIG_SND_PXA2XX_SOC_EM_X270=y + +# +# SoC Audio support for SuperH +# +CONFIG_SND_SOC_WM9712=y + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set +CONFIG_AC97_BUS=y +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +# CONFIG_HID_FF is not set +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_PERSIST is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +# CONFIG_USB_MON is not set + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y + +# +# MMC/SD Host Controller Drivers +# +CONFIG_MMC_PXA=y +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc1" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set + +# +# SPI RTC drivers +# + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T59 is not set +CONFIG_RTC_DRV_V3020=y + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_SA1100=y + +# +# DMA Engine support +# +# CONFIG_DMA_ENGINE is not set + +# +# DMA Clients +# + +# +# DMA Devices +# + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +# CONFIG_EXT4DEV_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_SUMMARY=y +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +# CONFIG_NFSD is not set +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_SUNRPC_BIND34 is not set +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=y +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=y + +# +# Distributed Lock Manager +# +# CONFIG_DLM is not set + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_MAGIC_SYSRQ=y +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DETECT_SOFTLOCKUP is not set +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_LIST is not set +CONFIG_FRAME_POINTER=y +CONFIG_FORCED_INLINING=y +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_ERRORS=y +CONFIG_DEBUG_LL=y +# CONFIG_DEBUG_ICEDCC is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_MANAGER=m +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +CONFIG_CRYPTO_SHA1=m +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_SERPENT is not set +CONFIG_CRYPTO_AES=m +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_ARC4=m +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_TEST is not set +CONFIG_CRYPTO_HW=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_CRC_CCITT=m +# CONFIG_CRC16 is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y diff --git a/recipes/linux/linux-2.6.23/em-x270/em-x270.patch b/recipes/linux/linux-2.6.23/em-x270/em-x270.patch new file mode 100644 index 0000000000..3c28be83c7 --- /dev/null +++ b/recipes/linux/linux-2.6.23/em-x270/em-x270.patch @@ -0,0 +1,12063 @@ + arch/arm/Kconfig | 13 +- + arch/arm/configs/em_x270_defconfig | 367 +++-- + arch/arm/mach-pxa/Kconfig | 8 + + arch/arm/mach-pxa/Makefile | 9 +- + arch/arm/mach-pxa/cpu-pxa.c | 442 ++++++ + arch/arm/mach-pxa/em-x270-devices.c | 331 +++++ + arch/arm/mach-pxa/em-x270-lcd.c | 223 +++ + arch/arm/mach-pxa/em-x270-pm.c | 892 ++++++++++++ + arch/arm/mach-pxa/em-x270.c | 127 ++- + arch/arm/mach-pxa/pwr-i2c.c | 539 +++++++ + arch/arm/mach-pxa/pxa27x.c | 6 +- + arch/arm/mach-pxa/spitz.c | 27 + + drivers/i2c/chips/Kconfig | 13 + + drivers/i2c/chips/Makefile | 1 + + drivers/i2c/chips/da9030.c | 1213 ++++++++++++++++ + drivers/i2c/chips/da9030.h | 282 ++++ + drivers/input/touchscreen/Kconfig | 43 + + drivers/input/touchscreen/Makefile | 14 + + drivers/input/touchscreen/wm9705.c | 360 +++++ + drivers/input/touchscreen/wm9712.c | 464 ++++++ + drivers/input/touchscreen/wm9713.c | 461 ++++++ + drivers/input/touchscreen/wm97xx-core.c | 859 +++++++++++ + drivers/leds/Kconfig | 6 + + drivers/leds/Makefile | 1 + + drivers/leds/leds-em-x270.c | 99 ++ + drivers/mtd/chips/jedec_probe.c | 58 +- + drivers/net/dm9000.c | 1 + + drivers/power/Kconfig | 6 + + drivers/power/Makefile | 1 + + drivers/power/em_x270_battery.c | 579 ++++++++ + drivers/usb/gadget/Kconfig | 20 + + drivers/usb/gadget/Makefile | 1 + + drivers/usb/gadget/epautoconf.c | 9 +- + drivers/usb/gadget/ether.c | 63 +- + drivers/usb/gadget/file_storage.c | 11 +- + drivers/usb/gadget/pxa27x_udc.c | 2387 +++++++++++++++++++++++++++++++ + drivers/usb/gadget/pxa27x_udc.h | 298 ++++ + drivers/usb/gadget/pxa2xx_udc.h | 7 +- + drivers/usb/gadget/serial.c | 18 +- + drivers/usb/gadget/zero.c | 13 +- + drivers/video/backlight/Kconfig | 2 +- + include/asm-arm/arch-pxa/pwr-i2c.h | 61 + + include/linux/da9030.h | 118 ++ + include/linux/usb_gadget.h | 23 +- + include/linux/wm97xx.h | 291 ++++ + sound/soc/pxa/Kconfig | 9 + + sound/soc/pxa/Makefile | 2 + + sound/soc/pxa/em-x270.c | 137 ++ + 48 files changed, 10742 insertions(+), 173 deletions(-) + +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 691aae3..cf1dbc2 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -858,7 +858,7 @@ config KEXEC + + endmenu + +-if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX ) ++if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP || ARCH_IMX || ARCH_PXA) + + menu "CPU Frequency scaling" + +@@ -894,6 +894,15 @@ config CPU_FREQ_IMX + + If in doubt, say N. + ++config CPU_FREQ_PXA ++ tristate "CPUfreq driver for PXA2xx CPUs" ++ depends on CPU_FREQ && ARCH_PXA ++ default y ++ help ++ Thes enables the CPUfreq driver for PXA2xx CPUs. ++ ++ If in doubt, say Y. ++ + endmenu + + endif +@@ -1029,6 +1038,8 @@ source "drivers/spi/Kconfig" + + source "drivers/w1/Kconfig" + ++source "drivers/power/Kconfig" ++ + source "drivers/hwmon/Kconfig" + + #source "drivers/l3/Kconfig" +diff --git a/arch/arm/configs/em_x270_defconfig b/arch/arm/configs/em_x270_defconfig +index 6bea090..3246136 100644 +--- a/arch/arm/configs/em_x270_defconfig ++++ b/arch/arm/configs/em_x270_defconfig +@@ -1,13 +1,13 @@ + # + # Automatically generated make config: don't edit +-# Linux kernel version: 2.6.22 +-# Mon Jul 9 15:18:20 2007 ++# Linux kernel version: 2.6.23-rc9 ++# Tue Oct 9 11:19:21 2007 + # + CONFIG_ARM=y + CONFIG_SYS_SUPPORTS_APM_EMULATION=y + CONFIG_GENERIC_GPIO=y + CONFIG_GENERIC_TIME=y +-# CONFIG_GENERIC_CLOCKEVENTS is not set ++CONFIG_GENERIC_CLOCKEVENTS=y + CONFIG_MMU=y + # CONFIG_NO_IOPORT is not set + CONFIG_GENERIC_HARDIRQS=y +@@ -27,25 +27,20 @@ CONFIG_VECTORS_BASE=0xffff0000 + CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + + # +-# Code maturity level options ++# General setup + # + CONFIG_EXPERIMENTAL=y + CONFIG_BROKEN_ON_SMP=y + CONFIG_INIT_ENV_ARG_LIMIT=32 +- +-# +-# General setup +-# + CONFIG_LOCALVERSION="-em-x270" + # CONFIG_LOCALVERSION_AUTO is not set + CONFIG_SWAP=y + CONFIG_SYSVIPC=y +-# CONFIG_IPC_NS is not set + CONFIG_SYSVIPC_SYSCTL=y + # CONFIG_POSIX_MQUEUE is not set + # CONFIG_BSD_PROCESS_ACCT is not set + # CONFIG_TASKSTATS is not set +-# CONFIG_UTS_NS is not set ++# CONFIG_USER_NS is not set + # CONFIG_AUDIT is not set + CONFIG_IKCONFIG=y + CONFIG_IKCONFIG_PROC=y +@@ -71,34 +66,27 @@ CONFIG_FUTEX=y + CONFIG_ANON_INODES=y + CONFIG_EPOLL=y + CONFIG_SIGNALFD=y +-CONFIG_TIMERFD=y + CONFIG_EVENTFD=y + CONFIG_SHMEM=y + CONFIG_VM_EVENT_COUNTERS=y +-CONFIG_SLAB=y +-# CONFIG_SLUB is not set ++CONFIG_SLUB_DEBUG=y ++# CONFIG_SLAB is not set ++CONFIG_SLUB=y + # CONFIG_SLOB is not set + CONFIG_RT_MUTEXES=y + # CONFIG_TINY_SHMEM is not set + CONFIG_BASE_SMALL=0 +- +-# +-# Loadable module support +-# + CONFIG_MODULES=y + CONFIG_MODULE_UNLOAD=y + CONFIG_MODULE_FORCE_UNLOAD=y + # CONFIG_MODVERSIONS is not set + # CONFIG_MODULE_SRCVERSION_ALL is not set + CONFIG_KMOD=y +- +-# +-# Block layer +-# + CONFIG_BLOCK=y + # CONFIG_LBD is not set + # CONFIG_BLK_DEV_IO_TRACE is not set + # CONFIG_LSF is not set ++# CONFIG_BLK_DEV_BSG is not set + + # + # IO Schedulers +@@ -139,6 +127,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" + # CONFIG_ARCH_L7200 is not set + # CONFIG_ARCH_KS8695 is not set + # CONFIG_ARCH_NS9XXX is not set ++# CONFIG_ARCH_MXC is not set + # CONFIG_ARCH_PNX4008 is not set + CONFIG_ARCH_PXA=y + # CONFIG_ARCH_RPC is not set +@@ -160,6 +149,15 @@ CONFIG_ARCH_PXA=y + # CONFIG_MACH_TRIZEPS4 is not set + CONFIG_MACH_EM_X270=y + CONFIG_PXA27x=y ++CONFIG_PXA_PWR_I2C=y ++ ++# ++# Boot options ++# ++ ++# ++# Power management ++# + + # + # Processor Type +@@ -185,6 +183,7 @@ CONFIG_XSCALE_PMU=y + # + # Bus support + # ++# CONFIG_PCI_SYSCALL is not set + # CONFIG_ARCH_SUPPORTS_MSI is not set + + # +@@ -196,8 +195,9 @@ CONFIG_XSCALE_PMU=y + # Kernel Features + # + # CONFIG_TICK_ONESHOT is not set ++# CONFIG_NO_HZ is not set ++# CONFIG_HIGH_RES_TIMERS is not set + # CONFIG_PREEMPT is not set +-# CONFIG_NO_IDLE_HZ is not set + CONFIG_HZ=100 + CONFIG_AEABI=y + CONFIG_OABI_COMPAT=y +@@ -212,6 +212,8 @@ CONFIG_FLAT_NODE_MEM_MAP=y + CONFIG_SPLIT_PTLOCK_CPUS=4096 + # CONFIG_RESOURCES_64BIT is not set + CONFIG_ZONE_DMA_FLAG=1 ++CONFIG_BOUNCE=y ++CONFIG_VIRT_TO_BUS=y + CONFIG_ALIGNMENT_TRAP=y + + # +@@ -219,11 +221,28 @@ CONFIG_ALIGNMENT_TRAP=y + # + CONFIG_ZBOOT_ROM_TEXT=0x0 + CONFIG_ZBOOT_ROM_BSS=0x0 +-CONFIG_CMDLINE="" ++CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200" + # CONFIG_XIP_KERNEL is not set + # CONFIG_KEXEC is not set + + # ++# CPU Frequency scaling ++# ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_TABLE=y ++# CONFIG_CPU_FREQ_DEBUG is not set ++CONFIG_CPU_FREQ_STAT=y ++# CONFIG_CPU_FREQ_STAT_DETAILS is not set ++CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y ++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set ++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=m ++CONFIG_CPU_FREQ_GOV_USERSPACE=m ++CONFIG_CPU_FREQ_GOV_ONDEMAND=m ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m ++CONFIG_CPU_FREQ_PXA=y ++ ++# + # Floating point emulation + # + +@@ -238,8 +257,8 @@ CONFIG_FPE_NWFPE=y + # Userspace binary formats + # + CONFIG_BINFMT_ELF=y +-# CONFIG_BINFMT_AOUT is not set +-# CONFIG_BINFMT_MISC is not set ++CONFIG_BINFMT_AOUT=m ++CONFIG_BINFMT_MISC=m + + # + # Power management options +@@ -247,8 +266,10 @@ CONFIG_BINFMT_ELF=y + CONFIG_PM=y + CONFIG_PM_LEGACY=y + # CONFIG_PM_DEBUG is not set +-# CONFIG_PM_SYSFS_DEPRECATED is not set +-CONFIG_APM_EMULATION=m ++CONFIG_PM_SLEEP=y ++CONFIG_SUSPEND_UP_POSSIBLE=y ++CONFIG_SUSPEND=y ++CONFIG_APM_EMULATION=y + + # + # Networking +@@ -316,6 +337,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" + # QoS and/or fair queueing + # + # CONFIG_NET_SCHED is not set ++CONFIG_NET_SCH_FIFO=y + + # + # Network testing +@@ -350,9 +372,12 @@ CONFIG_BT_HCIBFUSB=m + # + # Wireless + # +-# CONFIG_CFG80211 is not set +-# CONFIG_WIRELESS_EXT is not set +-# CONFIG_MAC80211 is not set ++CONFIG_CFG80211=m ++CONFIG_WIRELESS_EXT=y ++CONFIG_MAC80211=m ++# CONFIG_MAC80211_LEDS is not set ++CONFIG_MAC80211_DEBUGFS=y ++# CONFIG_MAC80211_DEBUG is not set + CONFIG_IEEE80211=m + # CONFIG_IEEE80211_DEBUG is not set + CONFIG_IEEE80211_CRYPT_WEP=m +@@ -360,6 +385,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=m + # CONFIG_IEEE80211_CRYPT_TKIP is not set + # CONFIG_IEEE80211_SOFTMAC is not set + # CONFIG_RFKILL is not set ++# CONFIG_NET_9P is not set + + # + # Device Drivers +@@ -374,10 +400,6 @@ CONFIG_FW_LOADER=y + # CONFIG_DEBUG_DRIVER is not set + # CONFIG_DEBUG_DEVRES is not set + # CONFIG_SYS_HYPERVISOR is not set +- +-# +-# Connector - unified userspace <-> kernelspace linker +-# + # CONFIG_CONNECTOR is not set + CONFIG_MTD=y + # CONFIG_MTD_DEBUG is not set +@@ -402,11 +424,10 @@ CONFIG_MTD_BLOCK=y + # + # RAM/ROM/Flash chip drivers + # +-# CONFIG_MTD_CFI is not set +-# CONFIG_MTD_JEDECPROBE is not set +-# CONFIG_MTD_CFI_NOSWAP is not set +-# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +-# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set ++CONFIG_MTD_CFI=y ++CONFIG_MTD_JEDECPROBE=y ++CONFIG_MTD_GEN_PROBE=y ++# CONFIG_MTD_CFI_ADV_OPTIONS is not set + CONFIG_MTD_MAP_BANK_WIDTH_1=y + CONFIG_MTD_MAP_BANK_WIDTH_2=y + CONFIG_MTD_MAP_BANK_WIDTH_4=y +@@ -417,14 +438,25 @@ CONFIG_MTD_CFI_I1=y + CONFIG_MTD_CFI_I2=y + # CONFIG_MTD_CFI_I4 is not set + # CONFIG_MTD_CFI_I8 is not set ++CONFIG_MTD_CFI_INTELEXT=y ++CONFIG_MTD_CFI_AMDSTD=y ++CONFIG_MTD_CFI_STAA=y ++CONFIG_MTD_CFI_UTIL=y + # CONFIG_MTD_RAM is not set + # CONFIG_MTD_ROM is not set + # CONFIG_MTD_ABSENT is not set ++# CONFIG_MTD_XIP is not set + + # + # Mapping drivers for chip access + # + # CONFIG_MTD_COMPLEX_MAPPINGS is not set ++CONFIG_MTD_PHYSMAP=y ++CONFIG_MTD_PHYSMAP_START=0x0 ++CONFIG_MTD_PHYSMAP_LEN=0x100000 ++CONFIG_MTD_PHYSMAP_BANKWIDTH=2 ++# CONFIG_MTD_ARM_INTEGRATOR is not set ++# CONFIG_MTD_IMPA7 is not set + # CONFIG_MTD_SHARP_SL is not set + # CONFIG_MTD_PLATRAM is not set + +@@ -457,21 +489,17 @@ CONFIG_MTD_NAND_PLATFORM=y + # + # UBI - Unsorted block images + # +-# CONFIG_MTD_UBI is not set ++CONFIG_MTD_UBI=m ++CONFIG_MTD_UBI_WL_THRESHOLD=4096 ++CONFIG_MTD_UBI_BEB_RESERVE=1 ++CONFIG_MTD_UBI_GLUEBI=y + + # +-# Parallel port support ++# UBI debugging options + # ++# CONFIG_MTD_UBI_DEBUG is not set + # CONFIG_PARPORT is not set +- +-# +-# Plug and Play support +-# +-# CONFIG_PNPACPI is not set +- +-# +-# Block devices +-# ++CONFIG_BLK_DEV=y + # CONFIG_BLK_DEV_COW_COMMON is not set + CONFIG_BLK_DEV_LOOP=y + # CONFIG_BLK_DEV_CRYPTOLOOP is not set +@@ -490,6 +518,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 + # + # CONFIG_RAID_ATTRS is not set + CONFIG_SCSI=y ++CONFIG_SCSI_DMA=y + # CONFIG_SCSI_TGT is not set + # CONFIG_SCSI_NETLINK is not set + # CONFIG_SCSI_PROC_FS is not set +@@ -519,36 +548,23 @@ CONFIG_SCSI_WAIT_SCAN=m + # CONFIG_SCSI_SPI_ATTRS is not set + # CONFIG_SCSI_FC_ATTRS is not set + # CONFIG_SCSI_ISCSI_ATTRS is not set +-# CONFIG_SCSI_SAS_ATTRS is not set + # CONFIG_SCSI_SAS_LIBSAS is not set +- +-# +-# SCSI low-level drivers +-# ++CONFIG_SCSI_LOWLEVEL=y + # CONFIG_ISCSI_TCP is not set + # CONFIG_SCSI_DEBUG is not set + # CONFIG_ATA is not set +- +-# +-# Multi-device support (RAID and LVM) +-# + # CONFIG_MD is not set +- +-# +-# Network device support +-# + CONFIG_NETDEVICES=y ++# CONFIG_NETDEVICES_MULTIQUEUE is not set + # CONFIG_DUMMY is not set + # CONFIG_BONDING is not set ++# CONFIG_MACVLAN is not set + # CONFIG_EQUALIZER is not set + # CONFIG_TUN is not set + # CONFIG_PHYLIB is not set +- +-# +-# Ethernet (10 or 100Mbit) +-# + CONFIG_NET_ETHERNET=y + CONFIG_MII=y ++# CONFIG_AX88796 is not set + # CONFIG_SMC91X is not set + CONFIG_DM9000=y + # CONFIG_SMC911X is not set +@@ -571,16 +587,22 @@ CONFIG_DM9000=y + # CONFIG_USB_USBNET_MII is not set + # CONFIG_USB_USBNET is not set + # CONFIG_WAN is not set +-# CONFIG_PPP is not set ++CONFIG_PPP=m ++# CONFIG_PPP_MULTILINK is not set ++# CONFIG_PPP_FILTER is not set ++CONFIG_PPP_ASYNC=m ++CONFIG_PPP_SYNC_TTY=m ++CONFIG_PPP_DEFLATE=m ++CONFIG_PPP_BSDCOMP=m ++CONFIG_PPP_MPPE=m ++# CONFIG_PPPOE is not set ++CONFIG_PPPOL2TP=m + # CONFIG_SLIP is not set ++CONFIG_SLHC=m + # CONFIG_SHAPER is not set + # CONFIG_NETCONSOLE is not set + # CONFIG_NETPOLL is not set + # CONFIG_NET_POLL_CONTROLLER is not set +- +-# +-# ISDN subsystem +-# + # CONFIG_ISDN is not set + + # +@@ -612,16 +634,21 @@ CONFIG_INPUT_KEYBOARD=y + # CONFIG_KEYBOARD_XTKBD is not set + # CONFIG_KEYBOARD_NEWTON is not set + # CONFIG_KEYBOARD_STOWAWAY is not set +-CONFIG_KEYBOARD_PXA27x=m ++CONFIG_KEYBOARD_PXA27x=y + # CONFIG_KEYBOARD_GPIO is not set + # CONFIG_INPUT_MOUSE is not set + # CONFIG_INPUT_JOYSTICK is not set + # CONFIG_INPUT_TABLET is not set + CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_FUJITSU is not set + # CONFIG_TOUCHSCREEN_GUNZE is not set + # CONFIG_TOUCHSCREEN_ELO is not set + # CONFIG_TOUCHSCREEN_MTOUCH is not set + # CONFIG_TOUCHSCREEN_MK712 is not set ++CONFIG_TOUCHSCREEN_WM97XX=y ++# CONFIG_TOUCHSCREEN_WM9705 is not set ++CONFIG_TOUCHSCREEN_WM9712=y ++# CONFIG_TOUCHSCREEN_WM9713 is not set + # CONFIG_TOUCHSCREEN_PENMOUNT is not set + # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set + # CONFIG_TOUCHSCREEN_TOUCHWIN is not set +@@ -660,58 +687,91 @@ CONFIG_SERIAL_PXA_CONSOLE=y + CONFIG_SERIAL_CORE=y + CONFIG_SERIAL_CORE_CONSOLE=y + CONFIG_UNIX98_PTYS=y +-CONFIG_LEGACY_PTYS=y +-CONFIG_LEGACY_PTY_COUNT=256 +- +-# +-# IPMI +-# ++# CONFIG_LEGACY_PTYS is not set + # CONFIG_IPMI_HANDLER is not set + # CONFIG_WATCHDOG is not set + CONFIG_HW_RANDOM=m + # CONFIG_NVRAM is not set + # CONFIG_R3964 is not set + # CONFIG_RAW_DRIVER is not set ++# CONFIG_TCG_TPM is not set ++CONFIG_I2C=y ++CONFIG_I2C_BOARDINFO=y ++# CONFIG_I2C_CHARDEV is not set + + # +-# TPM devices ++# I2C Algorithms + # +-# CONFIG_TCG_TPM is not set +-# CONFIG_I2C is not set ++# CONFIG_I2C_ALGOBIT is not set ++# CONFIG_I2C_ALGOPCF is not set ++# CONFIG_I2C_ALGOPCA is not set + + # +-# SPI support ++# I2C Hardware Bus support + # +-# CONFIG_SPI is not set +-# CONFIG_SPI_MASTER is not set ++# CONFIG_I2C_GPIO is not set ++CONFIG_I2C_PXA=y ++# CONFIG_I2C_PXA_SLAVE is not set ++# CONFIG_I2C_OCORES is not set ++# CONFIG_I2C_PARPORT_LIGHT is not set ++# CONFIG_I2C_SIMTEC is not set ++# CONFIG_I2C_TAOS_EVM is not set ++# CONFIG_I2C_STUB is not set ++# CONFIG_I2C_TINY_USB is not set + + # +-# Dallas's 1-wire bus ++# Miscellaneous I2C Chip support + # +-# CONFIG_W1 is not set +-# CONFIG_HWMON is not set ++# CONFIG_SENSORS_DS1337 is not set ++# CONFIG_SENSORS_DS1374 is not set ++# CONFIG_DS1682 is not set ++# CONFIG_SENSORS_EEPROM is not set ++# CONFIG_SENSORS_PCF8574 is not set ++# CONFIG_SENSORS_PCA9539 is not set ++# CONFIG_SENSORS_PCF8591 is not set ++# CONFIG_SENSORS_MAX6875 is not set ++# CONFIG_SENSORS_TSL2550 is not set ++CONFIG_DA9030=y ++# CONFIG_I2C_DEBUG_CORE is not set ++# CONFIG_I2C_DEBUG_ALGO is not set ++# CONFIG_I2C_DEBUG_BUS is not set ++# CONFIG_I2C_DEBUG_CHIP is not set + + # +-# Misc devices ++# SPI support + # ++# CONFIG_SPI is not set ++# CONFIG_SPI_MASTER is not set ++# CONFIG_W1 is not set ++CONFIG_POWER_SUPPLY=y ++# CONFIG_POWER_SUPPLY_DEBUG is not set ++# CONFIG_PDA_POWER is not set ++CONFIG_APM_POWER=y ++# CONFIG_BATTERY_DS2760 is not set ++# CONFIG_BATTERY_EM_X270 is not set ++# CONFIG_HWMON is not set ++CONFIG_MISC_DEVICES=y ++# CONFIG_EEPROM_93CX6 is not set + + # + # Multifunction device drivers + # + # CONFIG_MFD_SM501 is not set +- +-# +-# LED devices +-# +-# CONFIG_NEW_LEDS is not set ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=m + + # + # LED drivers + # ++CONFIG_LEDS_GPIO=m ++CONFIG_LEDS_EM_X270=m + + # + # LED Triggers + # ++CONFIG_LEDS_TRIGGERS=y ++CONFIG_LEDS_TRIGGER_TIMER=m ++CONFIG_LEDS_TRIGGER_HEARTBEAT=m + + # + # Multimedia devices +@@ -723,13 +783,17 @@ CONFIG_HW_RANDOM=m + # + # Graphics support + # +-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set ++CONFIG_BACKLIGHT_LCD_SUPPORT=y ++CONFIG_LCD_CLASS_DEVICE=y ++CONFIG_BACKLIGHT_CLASS_DEVICE=y ++CONFIG_BACKLIGHT_CORGI=y + + # + # Display device support + # + # CONFIG_DISPLAY_SUPPORT is not set + # CONFIG_VGASTATE is not set ++CONFIG_VIDEO_OUTPUT_CONTROL=m + CONFIG_FB=y + # CONFIG_FIRMWARE_EDID is not set + # CONFIG_FB_DDC is not set +@@ -752,7 +816,7 @@ CONFIG_FB_DEFERRED_IO=y + # + # CONFIG_FB_S1D13XXX is not set + CONFIG_FB_PXA=y +-# CONFIG_FB_PXA_PARAMETERS is not set ++CONFIG_FB_PXA_PARAMETERS=y + # CONFIG_FB_MBX is not set + # CONFIG_FB_VIRTUAL is not set + +@@ -762,6 +826,7 @@ CONFIG_FB_PXA=y + # CONFIG_VGA_CONSOLE is not set + CONFIG_DUMMY_CONSOLE=y + CONFIG_FRAMEBUFFER_CONSOLE=y ++# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set + # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set + # CONFIG_FONTS is not set + CONFIG_FONT_8x8=y +@@ -774,18 +839,18 @@ CONFIG_LOGO_LINUX_CLUT224=y + # + # Sound + # +-CONFIG_SOUND=m ++CONFIG_SOUND=y + + # + # Advanced Linux Sound Architecture + # +-CONFIG_SND=m +-CONFIG_SND_TIMER=m +-CONFIG_SND_PCM=m ++CONFIG_SND=y ++CONFIG_SND_TIMER=y ++CONFIG_SND_PCM=y + # CONFIG_SND_SEQUENCER is not set + CONFIG_SND_OSSEMUL=y +-CONFIG_SND_MIXER_OSS=m +-CONFIG_SND_PCM_OSS=m ++CONFIG_SND_MIXER_OSS=y ++CONFIG_SND_PCM_OSS=y + CONFIG_SND_PCM_OSS_PLUGINS=y + # CONFIG_SND_DYNAMIC_MINORS is not set + CONFIG_SND_SUPPORT_OLD_API=y +@@ -817,17 +882,23 @@ CONFIG_SND_PXA2XX_AC97=m + # + # System on Chip audio support + # +-# CONFIG_SND_SOC is not set ++CONFIG_SND_SOC_AC97_BUS=y ++CONFIG_SND_SOC=y ++CONFIG_SND_PXA2XX_SOC=y ++CONFIG_SND_PXA2XX_SOC_AC97=y ++CONFIG_SND_PXA2XX_SOC_EM_X270=y + + # +-# Open Sound System ++# SoC Audio support for SuperH + # +-# CONFIG_SOUND_PRIME is not set +-CONFIG_AC97_BUS=m ++CONFIG_SND_SOC_WM9712=y + + # +-# HID Devices ++# Open Sound System + # ++# CONFIG_SOUND_PRIME is not set ++CONFIG_AC97_BUS=y ++CONFIG_HID_SUPPORT=y + CONFIG_HID=y + # CONFIG_HID_DEBUG is not set + +@@ -838,10 +909,7 @@ CONFIG_USB_HID=y + # CONFIG_USB_HIDINPUT_POWERBOOK is not set + # CONFIG_HID_FF is not set + # CONFIG_USB_HIDDEV is not set +- +-# +-# USB support +-# ++CONFIG_USB_SUPPORT=y + CONFIG_USB_ARCH_HAS_HCD=y + CONFIG_USB_ARCH_HAS_OHCI=y + # CONFIG_USB_ARCH_HAS_EHCI is not set +@@ -855,6 +923,7 @@ CONFIG_USB_DEVICEFS=y + # CONFIG_USB_DEVICE_CLASS is not set + # CONFIG_USB_DYNAMIC_MINORS is not set + # CONFIG_USB_SUSPEND is not set ++# CONFIG_USB_PERSIST is not set + # CONFIG_USB_OTG is not set + + # +@@ -866,12 +935,13 @@ CONFIG_USB_OHCI_HCD=y + # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set + CONFIG_USB_OHCI_LITTLE_ENDIAN=y + # CONFIG_USB_SL811_HCD is not set ++# CONFIG_USB_R8A66597_HCD is not set + + # + # USB Device Class drivers + # +-# CONFIG_USB_ACM is not set +-# CONFIG_USB_PRINTER is not set ++CONFIG_USB_ACM=m ++CONFIG_USB_PRINTER=m + + # + # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +@@ -896,8 +966,8 @@ CONFIG_USB_STORAGE=y + # + # USB Imaging devices + # +-# CONFIG_USB_MDC800 is not set +-# CONFIG_USB_MICROTEK is not set ++CONFIG_USB_MDC800=m ++CONFIG_USB_MICROTEK=m + # CONFIG_USB_MON is not set + + # +@@ -940,25 +1010,25 @@ CONFIG_USB_STORAGE=y + # USB Gadget Support + # + # CONFIG_USB_GADGET is not set +-CONFIG_MMC=m ++CONFIG_MMC=y + # CONFIG_MMC_DEBUG is not set +-# CONFIG_MMC_UNSAFE_RESUME is not set ++CONFIG_MMC_UNSAFE_RESUME=y + + # + # MMC/SD Card Drivers + # +-CONFIG_MMC_BLOCK=m ++CONFIG_MMC_BLOCK=y ++CONFIG_MMC_BLOCK_BOUNCE=y + + # + # MMC/SD Host Controller Drivers + # +-CONFIG_MMC_PXA=m +- +-# +-# Real Time Clock +-# ++CONFIG_MMC_PXA=y + CONFIG_RTC_LIB=y +-CONFIG_RTC_CLASS=m ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_HCTOSYS=y ++CONFIG_RTC_HCTOSYS_DEVICE="rtc1" ++# CONFIG_RTC_DEBUG is not set + + # + # RTC interfaces +@@ -972,6 +1042,15 @@ CONFIG_RTC_INTF_DEV=y + # + # I2C RTC drivers + # ++# CONFIG_RTC_DRV_DS1307 is not set ++# CONFIG_RTC_DRV_DS1672 is not set ++# CONFIG_RTC_DRV_MAX6900 is not set ++# CONFIG_RTC_DRV_RS5C372 is not set ++# CONFIG_RTC_DRV_ISL1208 is not set ++# CONFIG_RTC_DRV_X1205 is not set ++# CONFIG_RTC_DRV_PCF8563 is not set ++# CONFIG_RTC_DRV_PCF8583 is not set ++# CONFIG_RTC_DRV_M41T80 is not set + + # + # SPI RTC drivers +@@ -982,14 +1061,29 @@ CONFIG_RTC_INTF_DEV=y + # + # CONFIG_RTC_DRV_CMOS is not set + # CONFIG_RTC_DRV_DS1553 is not set ++# CONFIG_RTC_DRV_STK17TA8 is not set + # CONFIG_RTC_DRV_DS1742 is not set + # CONFIG_RTC_DRV_M48T86 is not set +-CONFIG_RTC_DRV_V3020=m ++# CONFIG_RTC_DRV_M48T59 is not set ++CONFIG_RTC_DRV_V3020=y + + # + # on-CPU RTC drivers + # +-CONFIG_RTC_DRV_SA1100=m ++CONFIG_RTC_DRV_SA1100=y ++ ++# ++# DMA Engine support ++# ++# CONFIG_DMA_ENGINE is not set ++ ++# ++# DMA Clients ++# ++ ++# ++# DMA Devices ++# + + # + # File systems +@@ -1098,7 +1192,6 @@ CONFIG_SMB_FS=y + # CONFIG_NCP_FS is not set + # CONFIG_CODA_FS is not set + # CONFIG_AFS_FS is not set +-# CONFIG_9P_FS is not set + + # + # Partition Types +@@ -1167,20 +1260,22 @@ CONFIG_NLS_UTF8=y + CONFIG_ENABLE_MUST_CHECK=y + CONFIG_MAGIC_SYSRQ=y + # CONFIG_UNUSED_SYMBOLS is not set +-# CONFIG_DEBUG_FS is not set ++CONFIG_DEBUG_FS=y + # CONFIG_HEADERS_CHECK is not set + CONFIG_DEBUG_KERNEL=y + # CONFIG_DEBUG_SHIRQ is not set + # CONFIG_DETECT_SOFTLOCKUP is not set ++CONFIG_SCHED_DEBUG=y + # CONFIG_SCHEDSTATS is not set + # CONFIG_TIMER_STATS is not set +-# CONFIG_DEBUG_SLAB is not set ++# CONFIG_SLUB_DEBUG_ON is not set + # CONFIG_DEBUG_RT_MUTEXES is not set + # CONFIG_RT_MUTEX_TESTER is not set + # CONFIG_DEBUG_SPINLOCK is not set + # CONFIG_DEBUG_MUTEXES is not set + # CONFIG_DEBUG_LOCK_ALLOC is not set + # CONFIG_PROVE_LOCKING is not set ++# CONFIG_LOCK_STAT is not set + # CONFIG_DEBUG_SPINLOCK_SLEEP is not set + # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set + # CONFIG_DEBUG_KOBJECT is not set +@@ -1202,10 +1297,6 @@ CONFIG_DEBUG_LL=y + # + # CONFIG_KEYS is not set + # CONFIG_SECURITY is not set +- +-# +-# Cryptographic options +-# + CONFIG_CRYPTO=y + CONFIG_CRYPTO_ALGAPI=m + CONFIG_CRYPTO_BLKCIPHER=m +@@ -1215,7 +1306,7 @@ CONFIG_CRYPTO_MANAGER=m + # CONFIG_CRYPTO_NULL is not set + # CONFIG_CRYPTO_MD4 is not set + # CONFIG_CRYPTO_MD5 is not set +-# CONFIG_CRYPTO_SHA1 is not set ++CONFIG_CRYPTO_SHA1=m + # CONFIG_CRYPTO_SHA256 is not set + # CONFIG_CRYPTO_SHA512 is not set + # CONFIG_CRYPTO_WP512 is not set +@@ -1243,19 +1334,17 @@ CONFIG_CRYPTO_ARC4=m + # CONFIG_CRYPTO_CRC32C is not set + # CONFIG_CRYPTO_CAMELLIA is not set + # CONFIG_CRYPTO_TEST is not set +- +-# +-# Hardware crypto devices +-# ++CONFIG_CRYPTO_HW=y + + # + # Library routines + # + CONFIG_BITREVERSE=y +-# CONFIG_CRC_CCITT is not set ++CONFIG_CRC_CCITT=m + # CONFIG_CRC16 is not set + # CONFIG_CRC_ITU_T is not set + CONFIG_CRC32=y ++# CONFIG_CRC7 is not set + # CONFIG_LIBCRC32C is not set + CONFIG_ZLIB_INFLATE=y + CONFIG_ZLIB_DEFLATE=y +diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig +index 5ebec6d..2957cb9 100644 +--- a/arch/arm/mach-pxa/Kconfig ++++ b/arch/arm/mach-pxa/Kconfig +@@ -148,4 +148,12 @@ config PXA_SSP + tristate + help + Enable support for PXA2xx SSP ports ++ ++config PXA_PWR_I2C ++ bool "Simple Power I2C interface" ++ depends on PXA27x ++ help ++ Enable support for PXA27x Power I2C interface. This driver ++ enables very simple blocking access to Power I2C, which ++ might be useful for early access to Power Management ICs. + endif +diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile +index 7d6ab5c..2d7a431 100644 +--- a/arch/arm/mach-pxa/Makefile ++++ b/arch/arm/mach-pxa/Makefile +@@ -18,7 +18,7 @@ obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o sharpsl_pm.o sp + obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o + obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o + obj-$(CONFIG_MACH_TOSA) += tosa.o +-obj-$(CONFIG_MACH_EM_X270) += em-x270.o ++obj-$(CONFIG_MACH_EM_X270) += em-x270.o em-x270-pm.o em-x270-lcd.o em-x270-devices.o + + # Support for blinky lights + led-y := leds.o +@@ -29,9 +29,16 @@ led-$(CONFIG_MACH_TRIZEPS4) += leds-trizeps4.o + + obj-$(CONFIG_LEDS) += $(led-y) + ++# CPU Frequency scaling ++obj-$(CONFIG_CPU_FREQ_PXA) += cpu-pxa.o ++ + # Misc features + obj-$(CONFIG_PM) += pm.o sleep.o + obj-$(CONFIG_PXA_SSP) += ssp.o ++obj-$(CONFIG_PXA_PWR_I2C) += pwr-i2c.o ++ ++#obj-m += da9030_asm.o ++#da9030_asm-y += da9030.o da9030_c.o + + ifeq ($(CONFIG_PXA27x),y) + obj-$(CONFIG_PM) += standby.o +diff --git a/arch/arm/mach-pxa/cpu-pxa.c b/arch/arm/mach-pxa/cpu-pxa.c +new file mode 100644 +index 0000000..7fa9703 +--- /dev/null ++++ b/arch/arm/mach-pxa/cpu-pxa.c +@@ -0,0 +1,442 @@ ++/* ++ * linux/arch/arm/mach-pxa/cpu-pxa.c ++ * ++ * Copyright (C) 2002,2003 Intrinsyc Software ++ * ++ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * History: ++ * 31-Jul-2002 : Initial version [FB] ++ * 29-Jan-2003 : added PXA255 support [FB] ++ * 20-Apr-2003 : ported to v2.5 (Dustin McIntire, Sensoria Corp.) ++ * 11-Jan-2006 : v2.6, support for PXA27x processor up to 624MHz (Bill Reese, Hewlett Packard) ++ * ++ * Note: ++ * This driver may change the memory bus clock rate, but will not do any ++ * platform specific access timing changes... for example if you have flash ++ * memory connected to CS0, you will need to register a platform specific ++ * notifier which will adjust the memory access strobes to maintain a ++ * minimum strobe width. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include ++ ++/* ++ * This comes from generic.h in this directory. ++ */ ++extern unsigned int get_clk_frequency_khz(int info); ++ ++#define DEBUG 0 ++ ++#ifdef DEBUG ++ static unsigned int freq_debug = DEBUG; ++ module_param(freq_debug, int, 0644); ++ MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0"); ++#else ++ #define freq_debug 0 ++#endif ++ ++typedef struct ++{ ++ unsigned int khz; /* CPU frequency */ ++ unsigned int membus; /* memory bus frequency */ ++ unsigned int cccr; /* new CCLKCFG setting */ ++ unsigned int div2; /* alter memory controller settings to divide by 2 */ ++ unsigned int cclkcfg; /* new CCLKCFG setting */ ++} pxa_freqs_t; ++ ++/* Define the refresh period in mSec for the SDRAM and the number of rows */ ++#define SDRAM_TREF 64 /* standard 64ms SDRAM */ ++#if defined(CONFIG_MACH_H4700) || defined(CONFIG_ARCH_H2200) || defined(CONFIG_MACH_MAGICIAN) ++#define SDRAM_ROWS 8192 /* hx4700 uses 2 64Mb DRAMs, 8912 rows */ ++#else ++#define SDRAM_ROWS 4096 /* 64MB=8192 32MB=4096 */ ++#endif ++#define MDREFR_DRI(x) (((x*SDRAM_TREF/SDRAM_ROWS - 31)/32)) ++ ++#define CCLKCFG_TURBO 0x1 ++#define CCLKCFG_FCS 0x2 ++#define CCLKCFG_HALFTURBO 0x4 ++#define CCLKCFG_FASTBUS 0x8 ++#ifdef CONFIG_ARCH_H5400 ++/* H5400's SAMCOP chip does not like when K2DB2 touched */ ++#define MDREFR_DB2_MASK (MDREFR_K1DB2) ++#else ++#define MDREFR_DB2_MASK (MDREFR_K2DB2 | MDREFR_K1DB2) ++#endif ++#define MDREFR_DRI_MASK 0xFFF ++#define PXA25x_CCLKCFG CCLKCFG_TURBO | CCLKCFG_FCS ++ ++/* ++ * For the PXA27x: ++ * Control variables are A, L, 2N for CCCR; B, HT, T for CLKCFG. ++ * ++ * A = 0 => memory controller clock from table 3-7, ++ * A = 1 => memory controller clock = system bus clock ++ * Run mode frequency = 13 MHz * L ++ * Turbo mode frequency = 13 MHz * L * N ++ * System bus frequency = 13 MHz * L / (B + 1) ++ * System initialized by bootldr to: ++ * ++ * In CCCR: ++ * A = 1 ++ * L = 16 oscillator to run mode ratio ++ * 2N = 6 2 * (turbo mode to run mode ratio) ++ * ++ * In CCLKCFG: ++ * B = 1 Fast bus mode ++ * HT = 0 Half-Turbo mode ++ * T = 1 Turbo mode ++ * ++ * For now, just support some of the combinations in table 3-7 of ++ * PXA27x Processor Family Developer's Manual to simplify frequency ++ * change sequences. ++ * ++ * Specify 2N in the PXA27x_CCCR macro, not N! ++ */ ++#define PXA27x_CCCR(A, L, N2) (A << 25 | N2 << 7 | L) ++#define PXA27x_CCLKCFG(B, HT, T) (B << 3 | HT << 2 | CCLKCFG_FCS | T) ++ ++#define PXA25x_CCCR(L, M, N) (L << 0 | M << 5 | N << 7) ++ ++/* ++ * Valid frequency assignments ++ */ ++static pxa_freqs_t pxa2xx_freqs[] = ++{ ++ /* CPU MEMBUS CCCR DIV2 */ ++#if defined(CONFIG_PXA25x) ++#if defined(CONFIG_PXA25x_ALTERNATE_FREQS) ++ { 99500, 99500, PXA25x_CCCR(1, 1, 2), 1, PXA25x_CCLKCFG}, /* run=99, turbo= 99, PXbus=50, SDRAM=50 */ ++ {199100, 99500, PXA25x_CCCR(1, 1, 4), 0, PXA25x_CCLKCFG}, /* run=99, turbo=199, PXbus=50, SDRAM=99 */ ++ {298500, 99500, PXA25x_CCCR(1, 1, 6), 0, PXA25x_CCLKCFG}, /* run=99, turbo=287, PXbus=50, SDRAM=99 */ ++ {298600, 99500, PXA25x_CCCR(1, 2, 3), 0, PXA25x_CCLKCFG}, /* run=199, turbo=287, PXbus=99, SDRAM=99 */ ++ {398100, 99500, PXA25x_CCCR(1, 2, 4), 0, PXA25x_CCLKCFG} /* run=199, turbo=398, PXbus=99, SDRAM=99 */ ++#else ++ { 99500, 99500, PXA25x_CCCR(1, 1, 2), 1, PXA25x_CCLKCFG}, /* run= 99, turbo= 99, PXbus=50, SDRAM=50 */ ++ {132700, 132700, PXA25x_CCCR(3, 1, 2), 1, PXA25x_CCLKCFG}, /* run=133, turbo=133, PXbus=66, SDRAM=66 */ ++ {199100, 99500, PXA25x_CCCR(1, 2, 2), 0, PXA25x_CCLKCFG}, /* run=199, turbo=199, PXbus=99, SDRAM=99 */ ++ {265400, 132700, PXA25x_CCCR(3, 2, 2), 1, PXA25x_CCLKCFG}, /* run=265, turbo=265, PXbus=133, SDRAM=66 */ ++ {331800, 165900, PXA25x_CCCR(5, 2, 2), 1, PXA25x_CCLKCFG}, /* run=331, turbo=331, PXbus=166, SDRAM=83 */ ++ {398100, 99500, PXA25x_CCCR(1, 3, 2), 0, PXA25x_CCLKCFG} /* run=398, turbo=398, PXbus=196, SDRAM=99 */ ++#endif ++#elif defined(CONFIG_PXA27x) ++ {104000, 104000, PXA27x_CCCR(1, 8, 2), 0, PXA27x_CCLKCFG(1, 0, 1)}, ++ {156000, 104000, PXA27x_CCCR(1, 8, 6), 0, PXA27x_CCLKCFG(1, 1, 1)}, ++ {208000, 208000, PXA27x_CCCR(0, 16, 2), 1, PXA27x_CCLKCFG(0, 0, 1)}, ++ {312000, 208000, PXA27x_CCCR(1, 16, 3), 1, PXA27x_CCLKCFG(1, 0, 1)}, ++ {416000, 208000, PXA27x_CCCR(1, 16, 4), 1, PXA27x_CCLKCFG(1, 0, 1)}, ++ {520000, 208000, PXA27x_CCCR(1, 16, 5), 1, PXA27x_CCLKCFG(1, 0, 1)}, ++/* {624000, 208000, PXA27x_CCCR(1, 16, 6), 1, PXA27x_CCLKCFG(1, 0, 1)} */ ++#endif ++}; ++#define NUM_FREQS (sizeof(pxa2xx_freqs)/sizeof(pxa_freqs_t)) ++ ++static struct cpufreq_frequency_table pxa2xx_freq_table[NUM_FREQS+1]; ++ ++/* Return the memory clock rate for a given cpu frequency. */ ++int pxa_cpufreq_memclk(int cpu_khz) ++{ ++ int i; ++ int freq_mem = 0; ++ ++ for (i = 0; i < NUM_FREQS; i++) { ++ if (pxa2xx_freqs[i].khz == cpu_khz) { ++ freq_mem = pxa2xx_freqs[i].membus; ++ break; ++ } ++ } ++ ++ return freq_mem; ++} ++EXPORT_SYMBOL(pxa_cpufreq_memclk); ++ ++ ++/* find a valid frequency point */ ++static int pxa_verify_policy(struct cpufreq_policy *policy) ++{ ++ int ret; ++ ++ ret=cpufreq_frequency_table_verify(policy, pxa2xx_freq_table); ++ ++ if(freq_debug) { ++ printk("Verified CPU policy: %dKhz min to %dKhz max\n", ++ policy->min, policy->max); ++ } ++ ++ return ret; ++} ++ ++static int pxa_set_target(struct cpufreq_policy *policy, ++ unsigned int target_freq, ++ unsigned int relation) ++{ ++ int idx; ++ cpumask_t cpus_allowed, allowedcpuset; ++ int cpu = policy->cpu; ++ struct cpufreq_freqs freqs; ++ unsigned long flags; ++ unsigned int unused; ++ unsigned int preset_mdrefr, postset_mdrefr, cclkcfg; ++ ++ if(freq_debug) { ++ printk ("CPU PXA: target freq %d\n", target_freq); ++ printk ("CPU PXA: relation %d\n", relation); ++ } ++ ++ /* ++ * Save this threads cpus_allowed mask. ++ */ ++ cpus_allowed = current->cpus_allowed; ++ ++ /* ++ * Bind to the specified CPU. When this call returns, ++ * we should be running on the right CPU. ++ */ ++ cpus_clear (allowedcpuset); ++ cpu_set (cpu, allowedcpuset); ++ set_cpus_allowed(current, allowedcpuset); ++ BUG_ON(cpu != smp_processor_id()); ++ ++ /* Lookup the next frequency */ ++ if (cpufreq_frequency_table_target(policy, pxa2xx_freq_table, ++ target_freq, relation, &idx)) { ++ return -EINVAL; ++ } ++ ++ freqs.old = policy->cur; ++ freqs.new = pxa2xx_freqs[idx].khz; ++ freqs.cpu = policy->cpu; ++ if(freq_debug) { ++ printk(KERN_INFO "Changing CPU frequency to %d Mhz, (SDRAM %d Mhz)\n", ++ freqs.new/1000, (pxa2xx_freqs[idx].div2) ? ++ (pxa2xx_freqs[idx].membus/2000) : ++ (pxa2xx_freqs[idx].membus/1000)); ++ } ++ ++ /* ++ * Tell everyone what we're about to do... ++ * you should add a notify client with any platform specific ++ * Vcc changing capability ++ */ ++ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); ++ ++ /* Calculate the next MDREFR. If we're slowing down the SDRAM clock ++ * we need to preset the smaller DRI before the change. If we're speeding ++ * up we need to set the larger DRI value after the change. ++ */ ++ preset_mdrefr = postset_mdrefr = MDREFR; ++ if((MDREFR & MDREFR_DRI_MASK) > MDREFR_DRI(pxa2xx_freqs[idx].membus)) { ++ preset_mdrefr = (preset_mdrefr & ~MDREFR_DRI_MASK) | ++ MDREFR_DRI(pxa2xx_freqs[idx].membus); ++ } ++ postset_mdrefr = (postset_mdrefr & ~MDREFR_DRI_MASK) | ++ MDREFR_DRI(pxa2xx_freqs[idx].membus); ++ ++ /* If we're dividing the memory clock by two for the SDRAM clock, this ++ * must be set prior to the change. Clearing the divide must be done ++ * after the change. ++ */ ++ if(pxa2xx_freqs[idx].div2) { ++ /* ++ * Potentially speeding up memory clock, so slow down the memory ++ * before speeding up the clock. ++ */ ++ preset_mdrefr |= MDREFR_DB2_MASK | MDREFR_K0DB4; ++ preset_mdrefr &= ~MDREFR_K0DB2; ++ ++ postset_mdrefr |= MDREFR_DB2_MASK | MDREFR_K0DB4; ++ postset_mdrefr &= ~MDREFR_K0DB2; ++ } else { ++ /* ++ * Potentially slowing down memory clock. Wait until after the change ++ * to speed up the memory. ++ */ ++ postset_mdrefr &= ~MDREFR_DB2_MASK; ++ postset_mdrefr &= ~MDREFR_K0DB4; ++ postset_mdrefr |= MDREFR_K0DB2; ++ } ++ ++ cclkcfg = pxa2xx_freqs[idx].cclkcfg; ++ ++ if (freq_debug) { ++ printk (KERN_INFO "CPU PXA writing 0x%08x to CCCR\n", ++ pxa2xx_freqs[idx].cccr); ++ printk (KERN_INFO "CPU PXA writing 0x%08x to CCLKCFG\n", ++ pxa2xx_freqs[idx].cclkcfg); ++ printk (KERN_INFO "CPU PXA writing 0x%08x to MDREFR before change\n", ++ preset_mdrefr); ++ printk (KERN_INFO "CPU PXA writing 0x%08x to MDREFR after change\n", ++ postset_mdrefr); ++ } ++ ++ local_irq_save(flags); ++ ++ /* Set new the CCCR */ ++ CCCR = pxa2xx_freqs[idx].cccr; ++ ++ /* ++ * Should really set both of PMCR[xIDAE] while changing the core frequency ++ */ ++ ++ /* ++ * TODO: On the PXA27x: If we're setting half-turbo mode and changing the ++ * core frequency at the same time we must split it up into two operations. ++ * The current values in the pxa2xx_freqs table don't do this, so the code ++ * is unimplemented. ++ */ ++ ++ __asm__ __volatile__(" \ ++ ldr r4, [%1] ; /* load MDREFR */ \ ++ b 2f ; \ ++ .align 5 ; \ ++1: \ ++ str %3, [%1] ; /* preset the MDREFR */ \ ++ mcr p14, 0, %2, c6, c0, 0 ; /* set CCLKCFG[FCS] */ \ ++ str %4, [%1] ; /* postset the MDREFR */ \ ++ \ ++ b 3f ; \ ++2: b 1b ; \ ++3: nop ; \ ++ " ++ : "=&r" (unused) ++ : "r" (&MDREFR), "r" (cclkcfg), \ ++ "r" (preset_mdrefr), "r" (postset_mdrefr) ++ : "r4", "r5"); ++ local_irq_restore(flags); ++ ++ if (freq_debug) { ++ printk (KERN_INFO "CPU PXA Frequency change successful\n"); ++ printk (KERN_INFO "CPU PXA new CCSR 0x%08x\n", CCSR); ++ } ++ ++ /* ++ * Restore the CPUs allowed mask. ++ */ ++ set_cpus_allowed(current, cpus_allowed); ++ ++ /* ++ * Tell everyone what we've just done... ++ * you should add a notify client with any platform specific ++ * SDRAM refresh timer adjustments ++ */ ++ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); ++ ++ return 0; ++} ++ ++static int pxa_cpufreq_init(struct cpufreq_policy *policy) ++{ ++ cpumask_t cpus_allowed, allowedcpuset; ++ unsigned int cpu = policy->cpu; ++ int i; ++ unsigned int cclkcfg; ++ ++ cpus_allowed = current->cpus_allowed; ++ ++ cpus_clear (allowedcpuset); ++ cpu_set (cpu, allowedcpuset); ++ set_cpus_allowed(current, allowedcpuset); ++ BUG_ON(cpu != smp_processor_id()); ++ ++ /* set default governor and cpuinfo */ ++ policy->governor = CPUFREQ_DEFAULT_GOVERNOR; ++ policy->cpuinfo.transition_latency = 1000; /* FIXME: 1 ms, assumed */ ++ policy->cur = get_clk_frequency_khz(0); /* current freq */ ++ ++ /* Generate the cpufreq_frequency_table struct */ ++ for(i=0;icpus_allowed; ++ set_cpus_allowed(current, cpumask_of_cpu(cpu)); ++ BUG_ON(cpu != smp_processor_id()); ++ ++ cur_freq = get_clk_frequency_khz(0); ++ ++ set_cpus_allowed(current, cpumask_saved); ++ ++ return cur_freq; ++} ++ ++static struct cpufreq_driver pxa_cpufreq_driver = { ++ .verify = pxa_verify_policy, ++ .target = pxa_set_target, ++ .init = pxa_cpufreq_init, ++ .get = pxa_cpufreq_get, ++#if defined(CONFIG_PXA25x) ++ .name = "PXA25x", ++#elif defined(CONFIG_PXA27x) ++ .name = "PXA27x", ++#endif ++}; ++ ++static int __init pxa_cpu_init(void) ++{ ++ return cpufreq_register_driver(&pxa_cpufreq_driver); ++} ++ ++static void __exit pxa_cpu_exit(void) ++{ ++ cpufreq_unregister_driver(&pxa_cpufreq_driver); ++} ++ ++ ++MODULE_AUTHOR ("Intrinsyc Software Inc."); ++MODULE_DESCRIPTION ("CPU frequency changing driver for the PXA architecture"); ++MODULE_LICENSE("GPL"); ++module_init(pxa_cpu_init); ++module_exit(pxa_cpu_exit); ++ +diff --git a/arch/arm/mach-pxa/em-x270-devices.c b/arch/arm/mach-pxa/em-x270-devices.c +new file mode 100644 +index 0000000..d142930 +--- /dev/null ++++ b/arch/arm/mach-pxa/em-x270-devices.c +@@ -0,0 +1,331 @@ ++/* ++ * Support for CompuLab EM-X270 platfrom specific device ++ * initialization, and per-device power management functions. ++ * ++ * Copyright (C) 2007 CompuLab, Ltd. ++ * Author: Mike Rapoport ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "../../../drivers/i2c/chips/da9030.h" ++ ++#include ++#include ++ ++struct em_x270_dev_data { ++ int (*is_on)(struct device *dev); ++ int (*set_on)(struct device *dev, int on); ++ int (*get_opts)(struct device *dev, ++ struct device_attribute *attr, ++ char *buf); ++ int (*set_opts)(struct device *dev, int opts); ++}; ++ ++static void em_x270_dev_release(struct device * dev) ++{ ++ ++} ++ ++static ssize_t em_x270_dev_pm_show(struct device *dev, ++ struct device_attribute *attr, ++ char *buf) ++{ ++ struct em_x270_dev_data *pm_data = dev->platform_data; ++ int is_on = pm_data->is_on(dev); ++ ++ return sprintf(buf, "%d\n", is_on); ++} ++ ++static ssize_t em_x270_dev_pm_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t count) ++{ ++ char *endp; ++ int on = simple_strtoul(buf, &endp, 0); ++ size_t size = endp - buf; ++ struct em_x270_dev_data *pm_data = dev->platform_data; ++ ++ pr_info("%s: %s\n", __FUNCTION__, buf); ++ ++ if (*endp && isspace(*endp)) ++ size++; ++ if (size != count) ++ return -EINVAL; ++ ++ pm_data->set_on(dev, on); ++ ++ return count; ++} ++ ++static DEVICE_ATTR(pwr_on, S_IWUSR | S_IRUGO, ++ em_x270_dev_pm_show, em_x270_dev_pm_store); ++ ++static int gprs_is_on(struct device *dev) ++{ ++ return !!(pxa_gpio_get_value(20)); ++} ++ ++static int gprs_set_on(struct device *dev, int on) ++{ ++ pr_info("%s: on = %d\n", __FUNCTION__, on); ++ if (on) { ++ pxa_gpio_mode(20 | GPIO_OUT | GPIO_DFLT_HIGH); ++ mdelay(500); ++ pxa_gpio_set_value(82, 0); ++ mdelay(500); ++ pxa_gpio_mode(82 | GPIO_OUT | GPIO_DFLT_HIGH); ++ mdelay(1000); ++ pxa_gpio_set_value(82, 0); ++ } ++ else { ++ pxa_gpio_set_value(20, 0); ++ pxa_gpio_mode(20 | GPIO_OUT); ++ } ++ ++ return 0; ++} ++ ++static struct em_x270_dev_data em_x270_gprs_data = { ++ .is_on = gprs_is_on, ++ .set_on = gprs_set_on, ++}; ++ ++static struct platform_device em_x270_gprs = { ++ .name = "gprs", ++ .id = -1, ++ .dev = { ++ .platform_data = &em_x270_gprs_data, ++ .release = em_x270_dev_release, ++ }, ++}; ++ ++static int is_wlan_on; ++ ++static int wlan_is_on(struct device *dev) ++{ ++ return is_wlan_on; ++} ++ ++static int wlan_set_on(struct device *dev, int on) ++{ ++ if (on) { ++ /* WLAN power-up sequence */ ++ /* Mask LDO17 and LDO19 tolerance events */ ++ da9030_set_reg(IRQ_MASK_C, ++ IRQ_MASK_C_LDO19 | IRQ_MASK_C_LDO17); ++ ++ /* Force I2C control over LDO17, LDO19 */ ++ da9030_set_reg(SLEEP_CONTROL, ++ APP_SLEEP_CTL_BYPASS_LDO19 | ++ APP_SLEEP_CTL_BYPASS_LDO17); ++ ++ /* Turn off LDO17 and LDO19 */ ++ da9030_set_reg(REG_CONTROL_1_17, ++ RC1_LDO16_EN | RC1_LDO15_EN | ++ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); ++ da9030_set_reg(REG_CONTROL_2_18, RC2_SIMCP_EN | RC2_LDO18_EN); ++ ++ /* Set LDO17 voltage to 3V (VCC_WLAN_IO) */ ++ da9030_set_reg(LDO_17_SIMCP0, LDO_17_SIMCP0_LDO17_3V); ++ mdelay(200); ++ ++ /* Turn WLAN RF power on */ ++ pxa_gpio_mode(115 | GPIO_OUT | GPIO_DFLT_HIGH); ++ ++ /* Turn LDO17 on */ ++ da9030_set_reg(REG_CONTROL_1_17, ++ RC1_LDO17_EN| RC1_LDO16_EN | RC1_LDO15_EN | ++ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); ++ mdelay(200); ++ ++ /* Turn on LDO19 */ ++ da9030_set_reg(REG_CONTROL_2_18, ++ RC2_SIMCP_EN | RC2_LDO18_EN | RC2_LDO19_EN); ++ ++ } ++ else { ++ /* FIXME: implement BGW shutdown */ ++ } ++ is_wlan_on = on; ++ ++ return 0; ++} ++ ++static struct em_x270_dev_data em_x270_wlan_data = { ++ .is_on = wlan_is_on, ++ .set_on = wlan_set_on, ++}; ++ ++static struct platform_device em_x270_wlan = { ++ .name = "wlan", ++ .id = -1, ++ .dev = { ++ .platform_data = &em_x270_wlan_data, ++ .release = em_x270_dev_release, ++ }, ++}; ++ ++static int gps_is_on(struct device *dev) ++{ ++ int val = da9030_get_reg(REG_CONTROL_1_97); ++ return !!(val & RC3_LDO3_EN); ++} ++ ++static int gps_set_on(struct device *dev, int on) ++{ ++ int val = da9030_get_reg(REG_CONTROL_1_97); ++ ++ if (on) ++ val |= RC3_LDO3_EN; ++ else ++ val &= ~RC3_LDO3_EN; ++ da9030_set_reg(REG_CONTROL_1_97, val); ++ ++ return 0; ++} ++ ++static struct em_x270_dev_data em_x270_gps_data = { ++ .is_on = gps_is_on, ++ .set_on = gps_set_on, ++}; ++ ++static struct platform_device em_x270_gps = { ++ .name = "gps", ++ .id = -1, ++ .dev = { ++ .platform_data = &em_x270_gps_data, ++ .release = em_x270_dev_release, ++ }, ++}; ++ ++static int usb_mode; ++static int usb_host_is_on(struct device *dev) ++{ ++ return usb_mode; ++} ++ ++static int usb_host_set_on(struct device *dev, int on) ++{ ++ if (on) { ++ da9030_set_reg(MISC_CONTROLB, MISCB_SESSION_VALID_ENABLE); ++ da9030_set_reg(USBPUMP, ++ USB_PUMP_EN_USBVEP | ++ USB_PUMP_EN_USBVE | ++ USB_PUMP_USBVE); ++ ++ /* enable port 2 transiever */ ++ UP2OCR = UP2OCR_HXS | UP2OCR_HXOE; ++ usb_mode = 1; ++ } ++ else { ++ UP2OCR = UP2OCR_DPPUE | UP2OCR_DPPUBE | UP2OCR_HXOE; ++ da9030_set_reg(USBPUMP, ++ USB_PUMP_EN_USBVEP | USB_PUMP_EN_USBVE); ++ usb_mode = 0; ++ } ++ ++ return 0; ++} ++ ++static struct em_x270_dev_data em_x270_usb_host_data = { ++ .is_on = usb_host_is_on, ++ .set_on = usb_host_set_on, ++}; ++ ++static struct platform_device em_x270_usb_host = { ++ .name = "usb_host", ++ .id = -1, ++ .dev = { ++ .platform_data = &em_x270_usb_host_data, ++ .release = em_x270_dev_release, ++ }, ++}; ++ ++static struct platform_device *em_x270_devices[] = { ++ &em_x270_gprs, ++ &em_x270_wlan, ++ &em_x270_gps, ++ &em_x270_usb_host, ++}; ++ ++static struct work_struct usb_work; ++static void usb_worker(struct work_struct *work) ++{ ++ usb_host_set_on(NULL, !pxa_gpio_get_value(21)); ++} ++ ++static irqreturn_t usb_irq_handler(int irq, void *regs) ++{ ++ schedule_work(&usb_work); ++ ++ pr_info("%s\n", __FUNCTION__); ++ return IRQ_HANDLED; ++} ++ ++static int em_x270_devices_init(void) ++{ ++ int i, ret; ++ ++ for (i = 0; i < ARRAY_SIZE(em_x270_devices); i++ ) { ++ ret = platform_device_register(em_x270_devices[i]); ++ if (ret) { ++ dev_dbg(&em_x270_devices[i]->dev, ++ "Registration failed: %d\n", ret); ++ continue; ++ } ++ ++ ret = device_create_file(&em_x270_devices[i]->dev, ++ &dev_attr_pwr_on); ++ if (ret) { ++ dev_dbg(&em_x270_devices[i]->dev, ++ "PWR_ON attribute failed: %d\n", ret); ++ } ++ ++ dev_dbg(&em_x270_devices[i]->dev, ++ "Registered PWR ON attribute\n"); ++ } ++ ++ /* setup USB detection irq */ ++ INIT_WORK(&usb_work, usb_worker); ++ set_irq_type(IRQ_GPIO(21), IRQT_BOTHEDGE); ++ ret = request_irq(IRQ_GPIO(21), usb_irq_handler, IRQF_DISABLED, ++ "usb detect", 0); ++ if (ret) { ++ pr_info("USB device detection disabled\n"); ++ } ++ else { ++ schedule_work(&usb_work); ++ } ++ ++ return 0; ++} ++ ++static void em_x270_devices_exit(void) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(em_x270_devices); i++ ) { ++ device_remove_file(&em_x270_devices[i]->dev, ++ &dev_attr_pwr_on); ++ platform_device_unregister(em_x270_devices[i]); ++ } ++} ++ ++late_initcall(em_x270_devices_init); ++module_exit(em_x270_devices_exit); ++ ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_DESCRIPTION("Support for platfrom specific device attributes for EM-X270"); ++MODULE_LICENSE("GPL"); +diff --git a/arch/arm/mach-pxa/em-x270-lcd.c b/arch/arm/mach-pxa/em-x270-lcd.c +new file mode 100644 +index 0000000..437efe1 +--- /dev/null ++++ b/arch/arm/mach-pxa/em-x270-lcd.c +@@ -0,0 +1,223 @@ ++/* ++ * LCD initialization and backlight managemnet for EM-X270 ++ * ++ * Copyright (C) 2007 CompuLab, Ltd. ++ * Author: Igor Vaisbein ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "devices.h" ++ ++#define GPIO87_nPCE_2 87 /* Card Enable for Card Space (PXA27x) */ ++#define GPIO87_nPCE_2_MD (87 | GPIO_ALT_FN_1_IN) ++#define GPIO87_USB3_1_MD (87 | GPIO_ALT_FN_3_IN) ++#define GPIO87_SSPTXD2_MD (87 | GPIO_ALT_FN_1_OUT) ++#define GPIO87_SSFRM2_MD (87 | GPIO_ALT_FN_3_OUT) ++ ++#define LCCR4 __REG(0x44000010) ++ ++#define TD035STEE1_LCD_ID 0x2008 ++ ++static void em_x270_set_bl_intensity(int intensity) ++{ ++ da9030_set_wled((intensity != 0), intensity); ++} ++ ++struct corgibl_machinfo em_x270_bl_machinfo = { ++ .max_intensity = 0x7, ++ .default_intensity = 0x3, ++ .limit_mask = 0x1, ++ .set_bl_intensity = em_x270_set_bl_intensity, ++}; ++ ++static void em_x270_bl_release(struct device * dev) ++{ ++ ++} ++ ++static struct platform_device em_x270_bl = { ++ .name = "corgi-bl", ++ .dev = { ++ .release = em_x270_bl_release, ++ .parent = &pxa_device_fb.dev, ++ .platform_data = &em_x270_bl_machinfo, ++ }, ++ .id = -1, ++}; ++ ++/* ++ * Helper functions to access LCD throuhg SPI interface ++ */ ++static void set_ssp_9bit(void) ++{ ++ int temp; ++ SSCR0 = 0xFF208; ++ SSCR0 = 0xFF288; ++ SSCR1 = 0x40000018; ++ ++ while (SSSR & 0x8) ++ temp = SSDR; ++} ++ ++static void set_ssp_18bit(void) ++{ ++ int temp; ++ SSCR0 = 0x1FF201; ++ SSCR0 = 0x1FF281; ++ SSCR1 = 0x40000018; ++ while (SSSR & 0x8) ++ temp = SSDR; ++} ++ ++static void set_ssp_rcv(void) ++{ ++ int temp; ++ SSCR0 = 0x1FF20F; ++ SSCR0 = 0x1FF28F; ++ SSCR1 = 0x40000018; ++ while (SSSR & 0x8) ++ temp = SSDR; ++} ++ ++static void send_ssp_9bit(unsigned int value) ++{ ++ int temp; ++ SSDR = (value); ++ ++ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); ++ ++ if (!(SSSR & 0x4)) ++ while ((SSSR & 0xf00) == 0) ++ ; ++ ++ while ((SSSR & 0xf00) != 0) ++ ; ++ while (SSSR & 0x10) ++ ; ++ while (SSSR & 0x8) ++ temp = SSDR; ++} ++ ++static void send_ssp_18bit(unsigned int value) ++{ ++ int temp; ++ SSDR = (value); ++ ++ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); ++ ++ if (!(SSSR & 0x4)) ++ while ((SSSR & 0xf00) == 0) ++ ; ++ ++ while ((SSSR & 0xf00) != 0) ++ ; ++ while (SSSR & 0x10) ++ ; ++ while (SSSR & 0x8) ++ temp = SSDR; ++} ++ ++static unsigned int rcv_ssp_18bit(void) ++{ ++ SSDR = ((0x04) << 23); ++ asm volatile ("mcr p15, 0, r0, c7, c10, 4":::"r0"); ++ if (!(SSSR & 0x4)) ++ while ((SSSR & 0xf00) == 0) ++ ; ++ while ((SSSR & 0xf00) != 0) ++ ; ++ while (SSSR & 0x10) ++ ; ++ return SSDR; ++} ++ ++/* LCD init sequence */ ++int em_x270_lcd_detect(void) ++{ ++ unsigned int data; ++ ++ /* Reset the LCD module */ ++ pxa_gpio_mode(GPIO87_nPCE_2 | GPIO_OUT); ++ GPCR(GPIO87_nPCE_2) |= GPIO_bit(GPIO87_nPCE_2); ++ mdelay(75); ++ GPSR(GPIO87_nPCE_2) |= GPIO_bit(GPIO87_nPCE_2); ++ mdelay(70); ++ ++ /* TD035STEE1 LCD_SSP initialization commands */ ++ set_ssp_9bit(); ++ send_ssp_9bit(0x000); ++ mdelay(5); ++ ++ send_ssp_9bit(0x000); ++ mdelay(5); ++ ++ send_ssp_9bit(0x000); ++ mdelay(5); ++ ++ set_ssp_18bit(); ++ send_ssp_18bit(0x17980); ++ mdelay(5); ++ ++ send_ssp_18bit(0x17F10); ++ mdelay(5); ++ ++ set_ssp_9bit(); ++ send_ssp_9bit(0x011); ++ mdelay(50); ++ ++ send_ssp_9bit(0x029); ++ mdelay(10); ++ ++ set_ssp_rcv(); ++ ++ /* Check for LCD ID, to enable the back-light */ ++ data = rcv_ssp_18bit(); ++ ++ if ((data & 0xFFFF) != TD035STEE1_LCD_ID) ++ return -ENODEV; ++ ++ /* enable backlight */ ++ da9030_set_wled(1, 2); ++ return 0; ++} ++ ++static int em_x270_lcd_init(void) ++{ ++ int ret; ++ pr_debug("%s\n", __FUNCTION__); ++ ret = em_x270_lcd_detect(); ++ if (ret) ++ return ret; ++ ++ /* make sure we keep LCCR4 with PCD=0 */ ++ LCCR4 = 0x0; ++ ++ return platform_device_register(&em_x270_bl); ++} ++ ++static void em_x270_lcd_exit(void) ++{ ++ pr_debug("%s\n", __FUNCTION__); ++ platform_device_unregister(&em_x270_bl); ++} ++ ++late_initcall(em_x270_lcd_init); ++module_exit(em_x270_lcd_exit); ++ ++MODULE_DESCRIPTION("EM-X270 backlight and LCD initialization driver"); ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_LICENSE("GPL"); +diff --git a/arch/arm/mach-pxa/em-x270-pm.c b/arch/arm/mach-pxa/em-x270-pm.c +new file mode 100644 +index 0000000..55ba4cd +--- /dev/null ++++ b/arch/arm/mach-pxa/em-x270-pm.c +@@ -0,0 +1,892 @@ ++/* ++ * Support for CompuLab EM-X270 platform power management ++ * ++ * Copyright (C) 2007 CompuLab, Ltd. ++ * Author: Mike Rapoport ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "../../../drivers/i2c/chips/da9030.h" ++ ++#include ++#include ++#include ++#include ++ ++#define DA9030_ADDR 0x92 ++ ++#define EM_X270_BATCHK_TIME_SUSPEND (10*60) /* 10 min */ ++ ++#define VOLTAGE_MAX_DESIGN 4200000 /* 4.2V in uV */ ++#define VOLTAGE_MIN_DESIGN 3000000 /* 3V in uV */ ++ ++#define REG2VOLT(x) ((((x) * 2650) >> 8) + 2650) ++#define VOLT2REG(x) ((((x) - 2650) << 8) / 2650) ++ ++#define REG2CURR(x) ((((x) * 24000) >> 8) / 15) ++ ++#define VCHARGE_MIN_THRESHOLD VOLT2REG(3200) ++#define VCHARGE_MAX_THRESHOLD VOLT2REG(5500) ++ ++#define VBAT_LOW_THRESHOLD VOLT2REG(3600) ++#define VBAT_CRIT_THRESHOLD VOLT2REG(3400) ++ ++#define VBAT_CHARGE_START VOLT2REG(4100) ++#define VBAT_CHARGE_STOP VOLT2REG(4200) ++#define VBAT_CHARGE_RESTART VOLT2REG(4000) ++ ++#define TBAT_LOW_THRESHOLD 197 /* 0oC */ ++#define TBAT_HIGH_THRESHOLD 78 /* 45oC */ ++#define TBAT_RESUME_THRESHOLD 100 /* 35oC */ ++ ++struct em_x270_charger; ++ ++struct em_x270_charger_ops { ++ void (*get_status)(struct em_x270_charger *charger); ++ void (*set_charge)(struct em_x270_charger *charger, int on); ++ ++ s32 (*da9030_get_reg)(u32 reg); ++ s32 (*da9030_set_reg)(u32 reg, u8 val); ++}; ++ ++struct em_x270_charger { ++ struct device *dev; ++ ++ struct power_supply bat; ++ struct da9030_adc_res adc; ++ struct delayed_work work; ++ ++ int interval; ++ ++ int da9030_status; ++ int da9030_fault; ++ int mA; ++ int mV; ++ int is_on; ++ ++ struct em_x270_charger_ops *ops; ++ ++#ifdef CONFIG_DEBUG_FS ++ struct dentry *debug_file; ++#endif ++}; ++ ++static struct em_x270_charger *the_charger; ++ ++static unsigned short tbat_readings[] = { ++ 300, 244, 200, 178, 163, 152, 144, 137, 131, ++ 126, 122, 118, 114, 111, 108, 105, 103, 101, ++ 98, 96, 94, 93, 91, 89, 88, 86, 85, ++ 83, 82, 81, 79, 78, 77, 76, 75, 74, ++ 73, 72, 71, 70, 69, 68, 67, 67, 66, ++ 65, 64, 63, 63, 62, 61, 60, 60, 59, ++ 58, 58, 57, 57, 56, 55, 55, 54, 53, ++ 53, 52, 52, 51, 51, 50, 50, 49, 49, ++ 48, 48, 47, 47, 46, 46, 45, 45, 44, ++ 44, 43, 43, 42, 42, 41, 41, 41, 40, ++ 40, 39, 39, 38, 38, 38, 37, 37, 36, ++ 36, 35, 35, 35, 34, 34, 34, 33, 33, ++ 32, 32, 32, 31, 31, 30, 30, 30, 29, ++ 29, 29, 28, 28, 28, 27, 27, 26, 26, ++ 26, 25, 25, 25, 24, 24, 24, 23, 23, ++ 23, 22, 22, 21, 21, 21, 20, 20, 20, ++ 19, 19, 19, 18, 18, 18, 17, 17, 17, ++ 16, 16, 16, 15, 15, 14, 14, 14, 13, ++ 13, 13, 12, 12, 12, 11, 11, 11, 10, ++ 10, 10, 9, 9, 8, 8, 8, 7, 7, ++ 7, 6, 6, 5, 5, 5, 4, 4, 3, ++ 3, 3, 2, 2, 1, 1, 1, 0, 0, ++ -1, -1, -1, -2, -2, -3, -3, -4, -4, ++ -5, -5, -6, -6, -6, -7, -7, -8, -9, ++ -9, -10, -10, -11, -11, -12, -12, -13, -14, ++ -14, -15, -16, -16, -17, -18, -18, -19, -20, ++ -21, -21, -22, -23, -24, -25, -26, -27, -28, ++ -30, -31, -32, -34, -35, -37, -39, -41, -44, ++ -47, -50, -56, -64, ++}; ++ ++static inline int usb_host_on(void) ++{ ++ return !pxa_gpio_get_value(21); ++} ++ ++#ifdef CONFIG_DEBUG_FS ++ ++static int debug_show(struct seq_file *s, void *data) ++{ ++ struct em_x270_charger *charger = s->private; ++ ++ seq_printf(s, "charger is %s\n", charger->is_on ? "on" : "off"); ++ if (charger->da9030_status & CHRG_CHARGER_ENABLE) { ++ seq_printf(s, "iset = %dmA, vset = %dmV\n", ++ charger->mA, charger->mV); ++ } ++ ++ seq_printf(s, "vbat_res = %d (%dmV)\n", ++ charger->adc.vbat_res, REG2VOLT(charger->adc.vbat_res)); ++ seq_printf(s, "vbatmin_res = %d (%dmV)\n", ++ charger->adc.vbatmin_res, ++ REG2VOLT(charger->adc.vbatmin_res)); ++ seq_printf(s, "vbatmintxon = %d (%dmV)\n", ++ charger->adc.vbatmintxon, ++ REG2VOLT(charger->adc.vbatmintxon)); ++ seq_printf(s, "ichmax_res = %d (%dmA)\n", ++ charger->adc.ichmax_res, ++ REG2CURR(charger->adc.ichmax_res)); ++ seq_printf(s, "ichmin_res = %d (%dmA)\n", ++ charger->adc.ichmin_res, ++ REG2CURR(charger->adc.ichmin_res)); ++ seq_printf(s, "ichaverage_res = %d (%dmA)\n", ++ charger->adc.ichaverage_res, ++ REG2CURR(charger->adc.ichaverage_res)); ++ seq_printf(s, "vchmax_res = %d (%dmV)\n", ++ charger->adc.vchmax_res, ++ REG2VOLT(charger->adc.vchmax_res)); ++ seq_printf(s, "vchmin_res = %d (%dmV)\n", ++ charger->adc.vchmin_res, ++ REG2VOLT(charger->adc.vchmin_res)); ++ seq_printf(s, "tbat_res = %d (%doC)\n", charger->adc.tbat_res, ++ tbat_readings[charger->adc.tbat_res]); ++ seq_printf(s, "adc_in4_res = %d\n", charger->adc.adc_in4_res); ++ seq_printf(s, "adc_in5_res = %d\n", charger->adc.adc_in5_res); ++ ++ return 0; ++} ++ ++static int debug_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, debug_show, inode->i_private); ++} ++ ++static const struct file_operations debug_fops = { ++ .open = debug_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static struct dentry* em_x270_create_debugfs(struct em_x270_charger *charger) ++{ ++ charger->debug_file = debugfs_create_file("charger", 0666, 0, charger, ++ &debug_fops); ++ return charger->debug_file; ++} ++ ++static void em_x270_remove_debugfs(struct em_x270_charger *charger) ++{ ++ debugfs_remove(charger->debug_file); ++} ++#else ++#define em_x270_create_debugfs(x) NULL ++#define em_x270_remove_debugfs(x) do {} while(0) ++#endif ++ ++/*********************************************************************/ ++/* DA9030 access functions for suspend/resume */ ++#define DA_ADDR 0x49 ++static inline s32 __da9030_get_reg(u32 reg) ++{ ++ pr_info("%s: reg = %d\n", __FUNCTION__, reg); ++ return pxa_pwr_i2c_reg_read(DA_ADDR, reg); ++} ++ ++static inline s32 __da9030_set_reg(u32 reg, u8 val) ++{ ++ pr_info("%s: reg = %d, val = %d\n", __FUNCTION__, reg, val); ++ return pxa_pwr_i2c_reg_write(DA_ADDR, reg, val); ++} ++ ++/*********************************************************************/ ++/* helpers for charger state monnitor. Different version for stready ++ * state and suspended system ++ */ ++static void em_x270_get_charger_status(struct em_x270_charger *charger) ++{ ++ da9030_get_charger(&charger->is_on, &charger->mA, &charger->mV); ++ da9030_read_adc(&charger->adc); ++ charger->da9030_status = da9030_get_status(); ++ charger->da9030_fault = da9030_get_fault_log(); ++} ++ ++static void em_x270_set_charge(struct em_x270_charger *charger, int on) ++{ ++ if (on) { ++ pr_debug("%s: enabling charger\n", __FUNCTION__); ++ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, ++ TBAT_RESUME_THRESHOLD, ++ TBAT_LOW_THRESHOLD, ++ VBAT_LOW_THRESHOLD); ++ da9030_set_reg(CCTR_CONTROL, CCTR_SET_8MIN); ++ da9030_set_charger(1, 1000, 4200); ++ da9030_set_led(3, 1, 0, 0, 0); ++ charger->is_on = 1; ++ } ++ else { ++ /* disable charger */ ++ pr_debug("%s: disabling charger\n", __FUNCTION__); ++ da9030_set_charger(0, 0, 0); ++ da9030_set_led(3, 0, 0, 0, 0); ++ charger->is_on = 0; ++ } ++} ++ ++static void em_x270_get_charger_status_suspend(struct em_x270_charger *charger) ++{ ++ s32 val; ++ ++ val = __da9030_get_reg(CHARGE_CONTROL); ++ charger->is_on = (val & CHRG_CHARGER_ENABLE) ? 1 : 0; ++ charger->mA = ((val >> 3) & 0xf) * 100; ++ charger->mV = (val & 0x7) * 50 + 4000; ++ ++ charger->adc.vbat_res = __da9030_get_reg(VBAT_RES); ++ charger->adc.vchmax_res = __da9030_get_reg(VCHMAX_RES); ++ charger->adc.vchmin_res = __da9030_get_reg(VCHMIN_RES); ++ charger->adc.tbat_res = __da9030_get_reg(TBAT_RES); ++ ++ charger->da9030_status = __da9030_get_reg(STATUS); ++ charger->da9030_fault = __da9030_get_reg(FAULT_LOG); ++} ++ ++static void em_x270_set_charge_suspend(struct em_x270_charger *charger, int on) ++{ ++ if (on) { ++ u8 val = 0; ++ int mA = 1000; ++ int mV = 4200; ++ ++ pr_debug("%s: enabling charger\n", __FUNCTION__); ++ val = CHRG_CHARGER_ENABLE; ++ val |= (mA / 100) << 3; ++ val |= (mV - 4000) / 50; ++ ++ __da9030_set_reg(CCTR_CONTROL, CCTR_SET_8MIN); ++ __da9030_set_reg(VBATMON, VBAT_LOW_THRESHOLD); ++ __da9030_set_reg(CHARGE_CONTROL, val); ++ charger->is_on = 1; ++ } ++ else { ++ /* disable charger */ ++ pr_debug("%s: disabling charger\n", __FUNCTION__); ++ __da9030_set_reg(CHARGE_CONTROL, 0); ++ charger->is_on = 0; ++ } ++} ++ ++static struct em_x270_charger_ops em_x270_charger_ops = { ++ .get_status = em_x270_get_charger_status, ++ .set_charge = em_x270_set_charge, ++ .da9030_get_reg = da9030_get_reg, ++ .da9030_set_reg = da9030_set_reg, ++}; ++ ++static struct em_x270_charger_ops em_x270_charger_ops_suspend = { ++ .get_status = em_x270_get_charger_status_suspend, ++ .set_charge = em_x270_set_charge_suspend, ++ .da9030_get_reg = __da9030_get_reg, ++ .da9030_set_reg = __da9030_set_reg, ++}; ++ ++/*********************************************************************/ ++/* charging state machine */ ++static void em_x270_check_charger_state(struct em_x270_charger *charger) ++{ ++ charger->ops->get_status(charger); ++ ++/* we wake or boot with external power on */ ++ if (!charger->is_on) { ++ if ((charger->da9030_status & STATUS_CHDET) && ++ (!usb_host_on()) && ++ (charger->adc.vbat_res < VBAT_CHARGE_START)) { ++ pr_debug("%s: vbat_res <= 4100\n", __FUNCTION__); ++ charger->ops->set_charge(charger, 1); ++ } ++ } ++ else { ++ if (charger->adc.vbat_res >= VBAT_CHARGE_STOP) { ++ pr_debug("%s: vbat_res >= 4200\n", __FUNCTION__); ++ charger->ops->set_charge(charger, 0); ++ charger->ops->da9030_set_reg(VBATMON, ++ VBAT_CHARGE_RESTART); ++ } ++ else if (charger->adc.vbat_res > VBAT_LOW_THRESHOLD) { ++ /* we are charging and passed LOW_THRESH, ++ so upate DA9030 VBAT threshold ++ */ ++ pr_debug("%s: vbat_res >= %d\n", __FUNCTION__, ++ REG2VOLT(VBAT_LOW_THRESHOLD)); ++ charger->ops->da9030_set_reg(VBATMON, ++ VBAT_LOW_THRESHOLD); ++ } ++ if (charger->adc.vchmax_res > VCHARGE_MAX_THRESHOLD || ++ charger->adc.vchmin_res < VCHARGE_MIN_THRESHOLD || ++ /* Tempreture readings are negative */ ++ charger->adc.tbat_res < TBAT_HIGH_THRESHOLD || ++ charger->adc.tbat_res > TBAT_LOW_THRESHOLD ) { ++ /* disable charger */ ++ pr_info("%s: thresholds fail\n", __FUNCTION__); ++ charger->ops->set_charge(charger, 0); ++ } ++ } ++} ++ ++static void em_x270_charging_monitor(struct work_struct *work) ++{ ++ struct em_x270_charger *charger; ++ ++ charger = container_of(work, struct em_x270_charger, work.work); ++ ++ em_x270_check_charger_state(charger); ++ ++ /* reschedule for the next time */ ++ schedule_delayed_work(&charger->work, charger->interval); ++} ++ ++void em_x270_battery_release(struct device * dev) ++{ ++} ++ ++struct em_x270_battery_thresh { ++ int voltage; ++ int percentage; ++}; ++ ++static struct em_x270_battery_thresh vbat_ranges[] = { ++ { 150, 100}, ++ { 149, 99}, ++ { 148, 98}, ++ { 147, 98}, ++ { 146, 97}, ++ { 145, 96}, ++ { 144, 96}, ++ { 143, 95}, ++ { 142, 94}, ++ { 141, 93}, ++ { 140, 92}, ++ { 139, 91}, ++ { 138, 90}, ++ { 137, 90}, ++ { 136, 89}, ++ { 135, 88}, ++ { 134, 88}, ++ { 133, 87}, ++ { 132, 86}, ++ { 131, 85}, ++ { 130, 83}, ++ { 129, 82}, ++ { 128, 81}, ++ { 127, 81}, ++ { 126, 80}, ++ { 125, 75}, ++ { 124, 74}, ++ { 123, 73}, ++ { 122, 70}, ++ { 121, 66}, ++ { 120, 65}, ++ { 119, 64}, ++ { 118, 64}, ++ { 117, 63}, ++ { 116, 59}, ++ { 115, 58}, ++ { 114, 57}, ++ { 113, 57}, ++ { 112, 56}, ++ { 111, 50}, ++ { 110, 49}, ++ { 109, 49}, ++ { 108, 48}, ++ { 107, 48}, ++ { 106, 33}, ++ { 105, 32}, ++ { 104, 32}, ++ { 103, 32}, ++ { 102, 31}, ++ { 101, 16}, ++ { 100, 15}, ++ { 99, 15}, ++ { 98, 15}, ++ { 97, 10}, ++ { 96, 9}, ++ { 95, 7}, ++ { 94, 3}, ++ { 93, 0}, ++}; ++ ++static enum power_supply_property em_x270_bat_props[] = { ++ POWER_SUPPLY_PROP_STATUS, ++ POWER_SUPPLY_PROP_HEALTH, ++ POWER_SUPPLY_PROP_TECHNOLOGY, ++ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, ++ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, ++ POWER_SUPPLY_PROP_VOLTAGE_NOW, ++ POWER_SUPPLY_PROP_CURRENT_AVG, ++ POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ ++ POWER_SUPPLY_PROP_TEMP, ++ POWER_SUPPLY_PROP_MANUFACTURER, ++ POWER_SUPPLY_PROP_MODEL_NAME, ++}; ++ ++static void em_x270_bat_check_status(struct em_x270_charger *charger, ++ union power_supply_propval *val) ++{ ++ /* FIXME: below code is very crude approximation of actual ++ states, we need to take into account voltage and current ++ measurements to determine actual charger state */ ++ if (charger->da9030_status & STATUS_CHDET) { ++ if (!usb_host_on()) { ++ if (charger->is_on) { ++ val->intval = POWER_SUPPLY_STATUS_CHARGING; ++ } ++ else { ++ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; ++ } ++ } ++ } ++ else { ++ val->intval = POWER_SUPPLY_STATUS_DISCHARGING; ++ } ++} ++ ++static void em_x270_bat_check_health(struct em_x270_charger *charger, ++ union power_supply_propval *val) ++{ ++ if (charger->da9030_fault & FAULT_LOG_OVER_TEMP) { ++ val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; ++ } ++ else if (charger->da9030_fault & FAULT_LOG_VBAT_OVER) { ++ val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE; ++ } ++ else { ++ val->intval = POWER_SUPPLY_HEALTH_GOOD; ++ } ++} ++ ++static int vbat_interpolate(int reg) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(vbat_ranges); i++ ) ++ if (vbat_ranges[i].voltage == reg) { ++ pr_debug("%s: voltage = %d, percentage = %d\n", ++ __FUNCTION__, vbat_ranges[i].voltage, ++ vbat_ranges[i].percentage); ++ return vbat_ranges[i].percentage; ++ } ++ ++ return 0; ++} ++ ++static int em_x270_bat_get_property(struct power_supply *psy, ++ enum power_supply_property psp, ++ union power_supply_propval *val) ++{ ++ u32 reg; ++ struct em_x270_charger *charger; ++ charger = container_of(psy, struct em_x270_charger, bat); ++ ++ switch(psp) { ++ case POWER_SUPPLY_PROP_STATUS: ++ em_x270_bat_check_status(charger, val); ++ break; ++ case POWER_SUPPLY_PROP_HEALTH: ++ em_x270_bat_check_health(charger, val); ++ break; ++ case POWER_SUPPLY_PROP_TECHNOLOGY: ++ val->intval = POWER_SUPPLY_TECHNOLOGY_LIPO; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: ++ val->intval = VOLTAGE_MAX_DESIGN; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: ++ val->intval = VOLTAGE_MIN_DESIGN; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_NOW: ++ reg = charger->adc.vbat_res; ++ /* V = (reg / 256) * 2.65 + 2.65 (V) */ ++ val->intval = ((reg * 2650000) >> 8) + 2650000; ++ break; ++ case POWER_SUPPLY_PROP_CURRENT_AVG: ++ reg = charger->adc.ichaverage_res; ++ val->intval = reg; /* reg */ ++ break; ++ case POWER_SUPPLY_PROP_CAPACITY: ++ reg = charger->adc.vbat_res; ++ val->intval = vbat_interpolate(reg); ++ break; ++ case POWER_SUPPLY_PROP_TEMP: ++ reg = charger->adc.tbat_res; ++ val->intval = tbat_readings[reg]; ++ break; ++ case POWER_SUPPLY_PROP_MANUFACTURER: ++ val->strval = "MaxPower"; ++ pr_debug("%s: MFG = %s\n", __FUNCTION__, val->strval); ++ break; ++ case POWER_SUPPLY_PROP_MODEL_NAME: ++ val->strval = "LP555597P6H-FPS"; ++ pr_debug("%s: MODEL = %s\n", __FUNCTION__, val->strval); ++ break; ++ default: break; ++ } ++ ++ return 0; ++} ++ ++static void em_x270_setup_battery(struct power_supply *bat) ++{ ++ bat->name = "em-x270-battery"; ++ bat->type = POWER_SUPPLY_TYPE_BATTERY; ++ bat->properties = em_x270_bat_props; ++ bat->num_properties = ARRAY_SIZE(em_x270_bat_props); ++ bat->get_property = em_x270_bat_get_property; ++ bat->use_for_apm = 1; ++}; ++ ++static void em_x270_chiover_callback(int event, void *_charger) ++{ ++ /* disable charger */ ++ struct em_x270_charger *charger = _charger; ++/* pr_info("%s\n", __FUNCTION__); */ ++ em_x270_set_charge(charger, 0); ++} ++ ++static void em_x270_tbat_callback(int event, void *_charger) ++{ ++ /* disable charger */ ++ struct em_x270_charger *charger = _charger; ++/* pr_info("%s\n", __FUNCTION__); */ ++ em_x270_set_charge(charger, 0); ++} ++ ++static void em_x270_vbat_callback(int event, void *_charger) ++{ ++ struct em_x270_charger *charger = _charger; ++ da9030_read_adc(&charger->adc); ++ ++ if (!charger->is_on) { ++ if (charger->adc.vbat_res < VBAT_LOW_THRESHOLD) { ++ /* set VBAT threshold for critical */ ++ da9030_set_reg(VBATMON, VBAT_CRIT_THRESHOLD); ++ da9030_set_reg(VBATMON_1, VBAT_CRIT_THRESHOLD); ++ apm_queue_event(APM_LOW_BATTERY); ++ } ++ else if (charger->adc.vbat_res < VBAT_CRIT_THRESHOLD) { ++ /* notify the system of battery critical */ ++ apm_queue_event(APM_CRITICAL_SUSPEND); ++ } ++ } ++} ++ ++static void em_x270_chdet_callback(int event, void *_charger) ++{ ++ struct em_x270_charger *charger = _charger; ++ int status = da9030_get_status(); ++ pr_info("%s\n", __FUNCTION__); ++ ++/* em_x270_check_charger_state(charger); */ ++ ++ /* check if we have "real" charger or our own USB pump */ ++ if (!usb_host_on()) ++ em_x270_set_charge(charger, !!(status & CHRG_CHARGER_ENABLE)); ++} ++ ++static int em_x270_battery_probe(struct platform_device *pdev) ++{ ++ struct em_x270_charger *charger; ++ ++ pr_debug("%s\n", __FUNCTION__); ++ charger = kzalloc(sizeof(*charger), GFP_KERNEL); ++ if (charger == NULL) { ++ return -ENOMEM; ++ } ++ ++ the_charger = charger; ++ ++ charger->dev = &pdev->dev; ++ ++ charger->ops = &em_x270_charger_ops; ++ ++ charger->interval = 10 * HZ; /* 10 seconds between monotor runs */ ++ em_x270_setup_battery(&charger->bat); ++ ++ platform_set_drvdata(pdev, charger); ++ ++ da9030_enable_adc(); ++ ++ INIT_DELAYED_WORK(&charger->work, em_x270_charging_monitor); ++ schedule_delayed_work(&charger->work, charger->interval); ++ ++ charger->debug_file = em_x270_create_debugfs(charger); ++ ++ em_x270_setup_battery(&charger->bat); ++ ++ da9030_register_callback(DA9030_IRQ_CHDET, ++ em_x270_chdet_callback, ++ charger); ++ da9030_register_callback(DA9030_IRQ_VBATMON, ++ em_x270_vbat_callback, ++ charger); ++ ++ /* critical condition events */ ++ da9030_register_callback(DA9030_IRQ_CHIOVER, ++ em_x270_chiover_callback, ++ charger); ++ da9030_register_callback(DA9030_IRQ_TBAT, ++ em_x270_tbat_callback, ++ charger); ++ ++ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, ++ TBAT_RESUME_THRESHOLD, ++ TBAT_LOW_THRESHOLD, ++ VBAT_LOW_THRESHOLD); ++ ++ power_supply_register(&pdev->dev, &charger->bat); ++ ++ return 0; ++} ++ ++static int em_x270_battery_remove(struct platform_device *dev) ++{ ++ struct em_x270_charger *charger = platform_get_drvdata(dev); ++ ++ pr_debug("%s\n", __FUNCTION__); ++ em_x270_remove_debugfs(charger); ++ cancel_delayed_work(&charger->work); ++ power_supply_unregister(&charger->bat); ++ ++ kfree(charger); ++ the_charger = NULL; ++ ++ return 0; ++} ++ ++static int em_x270_battery_suspend(struct platform_device *pdev, ++ pm_message_t state) ++{ ++ pr_info("%s\n", __FUNCTION__); ++ da9030_set_reg(REG_CONTROL_1_97, RC3_BUCK_EN | RC3_LDO6_EN); ++ da9030_set_reg(REG_CONTROL_2_98, 0); ++ da9030_set_reg(REG_CONTROL_2_18,RC2_LDO18_EN); ++ da9030_set_reg(REG_CONTROL_1_17, ++ RC1_LDO16_EN | RC1_LDO15_EN | RC1_BUCK2_EN); ++ da9030_set_reg(WLED_CONTROL, 0); ++ ++ da9030_set_reg(LED_1_CONTROL, 0); ++ da9030_set_reg(LED_4_CONTROL, 0); ++ ++ return 0; ++} ++ ++extern int em_x270_lcd_detect(void); ++static int em_x270_battery_resume(struct platform_device *pdev) ++{ ++ pr_info("%s\n", __FUNCTION__); ++ ++ da9030_set_reg(LED_1_CONTROL, 0xff); ++ da9030_set_reg(LED_4_CONTROL, 0xff); ++ ++ da9030_set_reg(REG_CONTROL_1_97, ++ RC3_BUCK_EN | RC3_LDO1_EN | RC3_LDO2_EN | ++ RC3_LDO3_EN | RC3_LDO6_EN | RC3_LDO7_EN); ++ da9030_set_reg(REG_CONTROL_2_98, ++ RC4_SIMCP_ENABLE | RC4_LDO11_EN | ++ RC4_LDO9_EN | RC4_LDO8_EN); ++ da9030_set_reg(REG_CONTROL_2_18, ++ RC2_SIMCP_EN | RC2_LDO18_EN | RC2_LDO19_EN); ++ da9030_set_reg(REG_CONTROL_1_17, ++ RC1_LDO17_EN| RC1_LDO16_EN | RC1_LDO15_EN | ++ RC1_LDO11_EN | RC1_LDO10_EN | RC1_BUCK2_EN); ++ ++ if (em_x270_lcd_detect() != 0) ++ pr_info("%s: LCD resume failed\n", __FUNCTION__); ++ ++ return 0; ++} ++ ++static struct platform_driver em_x270_battery_driver = { ++ .driver = { ++ .name = "em-x270-battery", ++ .owner = THIS_MODULE, ++ }, ++ .probe = em_x270_battery_probe, ++ .remove = em_x270_battery_remove, ++ ++ .suspend_late = em_x270_battery_suspend, ++ .resume_early = em_x270_battery_resume, ++}; ++ ++/**************************************************************************/ ++/* global patform power management */ ++/**************************************************************************/ ++/* suspend/resume button */ ++static irqreturn_t em_x270_suspend_irq(int irq, void *data) ++{ ++ apm_queue_event(APM_USER_SUSPEND); ++ return IRQ_HANDLED; ++} ++ ++static void em_x270_goto_sleep(suspend_state_t state, ++ unsigned long alarm_time, ++ unsigned int alarm_enable) ++{ ++ pr_info("%s\n", __FUNCTION__); ++ ++ the_charger->ops = &em_x270_charger_ops_suspend; ++ ++ RTSR &= RTSR_ALE; ++ RTAR = RCNR + EM_X270_BATCHK_TIME_SUSPEND; ++ ++ pxa_pm_enter(state); ++} ++ ++static int em_x270_enter_suspend(unsigned long alarm_time, ++ unsigned int alarm_enable) ++{ ++ s32 status = 0; ++ s32 event_a, event_b; ++ int ret; ++ int retry = 10; ++ pr_info("%s\n", __FUNCTION__); ++ ++ /* make sure power I2C state is consistent */ ++ PWRICR &= ~ICR_IUE; ++ ++ if ((PEDR & PWER_GPIO1)) { ++ /* button pressed */ ++ /* clear pending event to avoid interrupt*/ ++ PEDR &= ~PWER_GPIO1; ++ GEDR0 &= ~GPIO_bit(1); ++ ++ ret = 0; ++ } ++ else if ((PEDR & PWER_RTC)) { ++ PEDR &= ~PWER_RTC; ++ pr_debug("%s: timer alarm\n", __FUNCTION__); ++ em_x270_check_charger_state(the_charger); ++ ret = 1; ++ } ++ else if ((PEDR & PWER_GPIO0)) { ++ PEDR &= ~PWER_GPIO0; ++ GEDR0 &= ~GPIO_bit(0); ++ ++ /* we woke up because of DA9030 event */ ++ do { ++ status = the_charger->ops->da9030_get_reg(STATUS); ++ udelay(1000); ++ } while (status < 0 && retry--); ++ ++ the_charger->da9030_status = status; ++ event_a = the_charger->ops->da9030_get_reg(EVENT_A); ++ event_b = the_charger->ops->da9030_get_reg(EVENT_B); ++ ++ pr_info("%s: DA9030 wakeup: status: %x, ev_a: %x, ev_b: %x\n", ++ __FUNCTION__, the_charger->da9030_status, ++ event_a, event_b); ++ ++/* if ((the_charger->da9030_status & STATUS_CHDET)) { */ ++ if (event_a & EVENT_A_CHDET) { ++ pr_info("%s: EVENT_A_CHDET\n", __FUNCTION__); ++ em_x270_check_charger_state(the_charger); ++ } ++ else { ++ pr_info("%s: What the hell?\n", __FUNCTION__); ++ } ++ ++ ret = 1; ++ } ++ else { ++ /* wake up is not DA9030, so continue and let battery ++ driver check the charger state */ ++ ret = 0; ++ } ++ ++ /* get back to sleep */ ++ if (ret) ++ em_x270_goto_sleep(PM_SUSPEND_MEM, alarm_time, alarm_enable); ++ ++ return ret; ++} ++ ++static int em_x270_pm_enter(suspend_state_t state) ++{ ++ unsigned long alarm_time = RTAR; ++ unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0); ++ ++ /* pre-suspend */ ++ pr_info("suspending emma\n"); ++ pxa_gpio_mode(38 | GPIO_OUT | GPIO_DFLT_HIGH); ++ ++ em_x270_goto_sleep(state, alarm_time, alarm_status); ++ ++ /* check if we were resumed because of charger events */ ++ while (em_x270_enter_suspend(alarm_time, alarm_status)) ++ {} ++ ++ /* make sure power I2C state is consistent */ ++ PWRICR &= ~ICR_IUE; ++ ++ /* resume */ ++ pr_info("emma is resumed\n"); ++ the_charger->ops = &em_x270_charger_ops; ++ ++ return 0; ++} ++ ++static struct pm_ops em_x270_pm_ops = { ++ .enter = em_x270_pm_enter, ++ .valid = pm_valid_only_mem, ++}; ++ ++static int em_x270_pm_init(void) ++{ ++ int ret; ++ pm_set_ops(&em_x270_pm_ops); ++ ++ set_irq_type(IRQ_GPIO(1), IRQT_RISING); ++ ++ ret = platform_driver_register(&em_x270_battery_driver); ++ if (ret) ++ return ret; ++ ++ ret = request_irq(IRQ_GPIO(1), em_x270_suspend_irq, IRQF_DISABLED, ++ "suspend button", 0); ++ if (ret) { ++ platform_driver_unregister(&em_x270_battery_driver); ++ } ++ ++ return ret; ++} ++ ++static void em_x270_pm_exit(void) ++{ ++ free_irq(IRQ_GPIO(1), em_x270_suspend_irq); ++ platform_driver_unregister(&em_x270_battery_driver); ++} ++ ++/* make sure I2C is already running */ ++late_initcall(em_x270_pm_init); ++module_exit(em_x270_pm_exit); ++ ++MODULE_DESCRIPTION("EM-X270 power manager"); ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_LICENSE("GPL"); +diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c +index 3d0ad50..402d792 100644 +--- a/arch/arm/mach-pxa/em-x270.c ++++ b/arch/arm/mach-pxa/em-x270.c +@@ -18,20 +18,26 @@ + #include + #include + +-#include ++#include ++#include + ++#include + #include + + #include + #include + #include + #include ++#include + #include + ++#include ++ ++#include ++ + #include "generic.h" + + /* GPIO IRQ usage */ +-#define EM_X270_MMC_PD (105) + #define EM_X270_ETHIRQ IRQ_GPIO(41) + #define EM_X270_MMC_IRQ IRQ_GPIO(13) + +@@ -213,6 +219,68 @@ static struct platform_device em_x270_nand = { + } + }; + ++/* DA9030 */ ++static struct i2c_board_info em_x270_pmic_info = { ++ .driver_name = "da9030", ++ .type = "pmic", ++ .addr = 0x49, ++ .irq = IRQ_GPIO(0), ++}; ++ ++/* Keypad */ ++/* The Demo KeyPad has the following mapping: ++ * (0,0) (1,2) (2,1) ++ * (0,2) (1,1) (2,0) ++ * (0,1) (1,0) (2,2) ++ */ ++static struct pxa27x_keyboard_platform_data em_x270_kbd = { ++ .nr_rows = 3, ++ .nr_cols = 3, ++ .keycodes = { ++ { /* row 0 */ ++ -1, ++ -1, ++ KEY_LEFT, ++ }, ++ { /* row 1 */ ++ KEY_UP, ++ KEY_ENTER, ++ KEY_DOWN ++ }, ++ { /* row 2 */ ++ KEY_RIGHT, ++ -1, ++ -1 ++ }, ++ }, ++ .gpio_modes = { ++ (100 | GPIO_ALT_FN_1_IN), ++ (101 | GPIO_ALT_FN_1_IN), ++ (102 | GPIO_ALT_FN_1_IN), ++ (103 | GPIO_ALT_FN_2_OUT), ++ (104 | GPIO_ALT_FN_2_OUT), ++ (105 | GPIO_ALT_FN_2_OUT), ++ }, ++}; ++ ++static struct platform_device em_x270_pxa_keypad = { ++ .name = "pxa27x-keyboard", ++ .id = -1, ++ .dev = { ++ .platform_data = &em_x270_kbd, ++ }, ++}; ++ ++static struct platform_device em_x270_battery_device = { ++ .name = "em-x270-battery", ++ .id = -1, ++}; ++ ++static struct platform_device em_x270_led_device = { ++ .name = "em-x270-led", ++ .id = -1, ++}; ++ + /* platform devices */ + static struct platform_device *platform_devices[] __initdata = { + &em_x270_dm9k, +@@ -220,6 +288,9 @@ static struct platform_device *platform_devices[] __initdata = { + &em_x270_ts, + &em_x270_rtc, + &em_x270_nand, ++ &em_x270_pxa_keypad, ++ &em_x270_battery_device, ++ &em_x270_led_device, + }; + + +@@ -241,6 +312,33 @@ static struct pxaohci_platform_data em_x270_ohci_platform_data = { + .init = em_x270_ohci_init, + }; + ++/* ++ * USB Client (Gadget/UDC) ++ */ ++static void em_x270_udc_command(int cmd) ++{ ++ switch(cmd) { ++ case PXA2XX_UDC_CMD_CONNECT: ++ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; ++ break; ++ case PXA2XX_UDC_CMD_DISCONNECT: ++/* UP2OCR = UP2OCR_HXS | UP2OCR_HXOE; */ ++ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; ++ break; ++ } ++} ++ ++static int em_x270_udc_detect(void) ++{ ++ return 1; ++} ++ ++static struct pxa2xx_udc_mach_info em_x270_udc_info __initdata = { ++ .udc_is_connected = em_x270_udc_detect, ++ .udc_command = em_x270_udc_command, ++}; ++ ++ + + static int em_x270_mci_init(struct device *dev, + irq_handler_t em_x270_detect_int, +@@ -256,9 +354,6 @@ static int em_x270_mci_init(struct device *dev, + pxa_gpio_mode(GPIO110_MMCDAT2_MD); + pxa_gpio_mode(GPIO111_MMCDAT3_MD); + +- /* EM-X270 uses GPIO13 as SD power enable */ +- pxa_gpio_mode(EM_X270_MMC_PD | GPIO_OUT); +- + err = request_irq(EM_X270_MMC_IRQ, em_x270_detect_int, + IRQF_DISABLED | IRQF_TRIGGER_FALLING, + "MMC card detect", data); +@@ -313,12 +408,19 @@ static struct pxafb_mach_info em_x270_lcd = { + .num_modes = 1, + .cmap_inverse = 0, + .cmap_static = 0, +- .lccr0 = LCCR0_PAS, +- .lccr3 = LCCR3_PixClkDiv(0x01) | LCCR3_Acb(0xff), ++ ++ .lccr0 = LCCR0_Act, ++ .lccr3 = LCCR3_PixFlEdg, + }; + + static void __init em_x270_init(void) + { ++ /* register PMIC */ ++ i2c_register_board_info(1, &em_x270_pmic_info, 1); ++ ++ /* setup DA9030 irq */ ++ set_irq_type(IRQ_GPIO(0), IRQT_FALLING); ++ + /* setup LCD */ + set_pxa_fb_info(&em_x270_lcd); + +@@ -329,6 +431,8 @@ static void __init em_x270_init(void) + pxa_set_mci_info(&em_x270_mci_platform_data); + pxa_set_ohci_info(&em_x270_ohci_platform_data); + ++ pxa_set_udc_info(&em_x270_udc_info); ++ + /* setup STUART GPIOs */ + pxa_gpio_mode(GPIO46_STRXD_MD); + pxa_gpio_mode(GPIO47_STTXD_MD); +@@ -341,9 +445,16 @@ static void __init em_x270_init(void) + + /* Setup interrupt for dm9000 */ + set_irq_type(EM_X270_ETHIRQ, IRQT_RISING); ++ ++ PCFR = 0x6; ++ PSLR = 0xff400000; ++ PMCR = 0x00000005; ++ PWER = 0x80000003; ++ PFER = 0x00000003; ++ PRER = 0x00000000; + } + +-MACHINE_START(EM_X270, "Compulab EM-x270") ++MACHINE_START(EM_X270, "Compulab EM-X270") + .boot_params = 0xa0000100, + .phys_io = 0x40000000, + .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, +diff --git a/arch/arm/mach-pxa/pwr-i2c.c b/arch/arm/mach-pxa/pwr-i2c.c +new file mode 100644 +index 0000000..8a501c4 +--- /dev/null ++++ b/arch/arm/mach-pxa/pwr-i2c.c +@@ -0,0 +1,539 @@ ++/* ++ * (C) Copyrihgt 2007 CompuLab, Ltd. ++ * Mike Rapoport ++ * Adaptation of U-Boot I2C driver for PXA. ++ * ++ * (C) Copyright 2000 ++ * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it ++ * ++ * (C) Copyright 2000 Sysgo Real-Time Solutions, GmbH ++ * Marius Groeger ++ * ++ * (C) Copyright 2003 Pengutronix e.K. ++ * Robert Schwebel ++ * ++ * See file CREDITS for list of people who contributed to this ++ * project. ++ * ++ * This program 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ * Back ported to the 8xx platform (from the 8260 platform) by ++ * Murray.Jensen@cmst.csiro.au, 27-Jan-01. ++ */ ++ ++/* #define DEBUG */ ++ ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++ ++#define I2C_ICR_INIT (ICR_BEIE | ICR_IRFIE | ICR_ITEIE | ICR_GCD | ICR_SCLE) ++#define I2C_ISR_INIT 0x7FF ++ ++/* Shall the current transfer have a start/stop condition? */ ++#define I2C_COND_NORMAL 0 ++#define I2C_COND_START 1 ++#define I2C_COND_STOP 2 ++ ++/* Shall the current transfer be ack/nacked or being waited for it? */ ++#define I2C_ACKNAK_WAITACK 1 ++#define I2C_ACKNAK_SENDACK 2 ++#define I2C_ACKNAK_SENDNAK 4 ++ ++/* Specify who shall transfer the data (master or slave) */ ++#define I2C_READ 0 ++#define I2C_WRITE 1 ++ ++/* All transfers are described by this data structure */ ++struct i2c_msg { ++ u8 condition; ++ u8 acknack; ++ u8 direction; ++ u8 data; ++}; ++ ++/** ++ * pxa_pwr_i2c_transfer: - reset the host controller ++ * ++ */ ++/* static void pxa_pwr_i2c_reset(void) */ ++/* { */ ++/* int i; */ ++ ++/* /\* CKEN |= CKEN_PWRI2C; *\/ */ ++/* /\* PWRICR |= PCFR_PI2C_EN; *\/ */ ++ ++/* /\* /\\* delay 250ms *\\/ *\/ */ ++/* /\* for (i = 0; i < 250; i++) *\/ */ ++/* /\* udelay(1000); *\/ */ ++ ++/* /\* PWRICR &= ~(ICR_MA | ICR_START | ICR_STOP); *\/ */ ++/* /\* PWRICR |= ICR_UR; *\/ */ ++/* /\* PWRISR = 0x7ff; *\/ */ ++ ++/* /\* PWRICR &= ~ICR_UR; *\/ */ ++/* /\* PWRICR = ICR_GCD | ICR_SCLE; *\/ */ ++/* /\* PWRICR |= ICR_IUE; *\/ */ ++/* /\* PWRICR |= 0x8000; *\/ */ ++ ++/* /\* udelay(1000); *\/ */ ++ ++/* return; */ ++ ++/* PWRICR &= ~ICR_IUE; /\* disable unit *\/ */ ++/* PWRICR |= ICR_UR; /\* reset the unit *\/ */ ++/* udelay(100); */ ++/* PWRICR &= ~ICR_IUE; /\* disable unit *\/ */ ++ ++/* CKEN |= CKEN_PWRI2C; */ ++/* PCFR |= PCFR_PI2C_EN; */ ++ ++/* PWRICR = I2C_ICR_INIT; /\* set control register values *\/ */ ++/* PWRISR = I2C_ISR_INIT; /\* set clear interrupt bits *\/ */ ++/* PWRICR |= ICR_IUE; /\* enable unit *\/ */ ++/* udelay(100); */ ++/* } */ ++ ++static void pwr_i2c_abort() ++{ ++ unsigned long timeout = 250000; ++ unsigned long time = 0; ++ ++ while ((time < timeout) && (PWRIBMR & 0x1) == 0) { ++ unsigned long icr = PWRICR; ++ ++ icr &= ~ICR_START; ++ icr |= ICR_ACKNAK | ICR_STOP | ICR_TB; ++ ++ PWRICR = icr; ++ ++ udelay(1000); ++ time += 1000; ++ } ++ ++ PWRICR &= ~(ICR_MA | ICR_START | ICR_STOP); ++} ++ ++static void pxa_pwr_i2c_reset(void) ++{ ++ pr_debug("Resetting I2C Controller Unit\n"); ++ ++ /* abort any transfer currently under way */ ++ pwr_i2c_abort(); ++ ++ /* reset according to 9.8 */ ++ PWRICR = ICR_UR; ++ PWRISR = I2C_ISR_INIT; ++ PWRISR &= ~ICR_UR; ++ ++ /* set control register values */ ++ PWRICR = I2C_ICR_INIT; ++ ++ /* enable unit */ ++ PWRICR |= ICR_IUE; ++ udelay(100); ++ ++/* CKEN |= CKEN_PWRI2C; */ ++/* PCFR |= PCFR_PI2C_EN; */ ++} ++ ++/** ++ * i2c_isr_set_cleared: - wait until certain bits of the I2C status register ++ * are set and cleared ++ * ++ * @return: 1 in case of success, 0 means timeout (no match within 10 ms). ++ */ ++static int pxa_pwr_i2c_isr_set_cleared(unsigned long set_mask, ++ unsigned long cleared_mask) ++{ ++ int timeout = 10000; ++ ++ while (((PWRISR & set_mask) != set_mask) ++ || ((PWRISR & cleared_mask) != 0)) { ++ udelay(10); ++ if (timeout-- < 0) ++ return 0; ++ } ++ ++ return 1; ++} ++ ++/** ++ * pxa_pwr_i2c_transfer: - Transfer one byte over the i2c bus ++ * ++ * This function can tranfer a byte over the i2c bus in both directions. ++ * It is used by the public API functions. ++ * ++ * @return: 0: transfer successful ++ * -EINVAL: message is empty ++ * -ETIMEDOUT: transmit timeout ++ * -E: ACK missing ++ * -ETIMEDOUT: receive timeout ++ * -EINVAL: illegal parameters ++ * -EBUSY: bus is busy and couldn't be aquired ++ */ ++int pxa_pwr_i2c_transfer(struct i2c_msg *msg) ++{ ++ int ret; ++ ++ if (!msg) ++ goto transfer_error_msg_empty; ++ ++ switch (msg->direction) { ++ case I2C_WRITE: ++ /* check if bus is not busy */ ++/* if (!pxa_pwr_i2c_isr_set_cleared(0, (ISR_IBB | ISR_UB))) */ ++/* goto transfer_error_bus_busy; */ ++ ++ /* start transmission */ ++ PWRICR &= ~ICR_START; ++ PWRICR &= ~ICR_STOP; ++ PWRIDBR = msg->data; ++ if (msg->condition == I2C_COND_START) ++ PWRICR |= ICR_START; ++ if (msg->condition == I2C_COND_STOP) ++ PWRICR |= ICR_STOP; ++ if (msg->acknack == I2C_ACKNAK_SENDNAK) ++ PWRICR |= ICR_ACKNAK; ++ if (msg->acknack == I2C_ACKNAK_SENDACK) ++ PWRICR &= ~ICR_ACKNAK; ++ PWRICR &= ~ICR_ALDIE; ++ PWRICR |= ICR_TB; ++ ++ /* transmit register empty? */ ++ if (!pxa_pwr_i2c_isr_set_cleared(ISR_ITE, 0)) ++ goto transfer_error_transmit_timeout; ++ ++ /* clear 'transmit empty' state */ ++ PWRISR |= ISR_ITE; ++ ++ /* wait for ACK from slave */ ++ if (msg->acknack == I2C_ACKNAK_WAITACK) ++ if (!pxa_pwr_i2c_isr_set_cleared(0, ISR_ACKNAK)) ++ goto transfer_error_ack_missing; ++ break; ++ case I2C_READ: ++ /* check if bus is not busy */ ++/* if (!pxa_pwr_i2c_isr_set_cleared(0, ISR_IBB)) */ ++/* goto transfer_error_bus_busy; */ ++ ++ /* start receive */ ++ PWRICR &= ~ICR_START; ++ PWRICR &= ~ICR_STOP; ++ if (msg->condition == I2C_COND_START) ++ PWRICR |= ICR_START; ++ if (msg->condition == I2C_COND_STOP) ++ PWRICR |= ICR_STOP; ++ if (msg->acknack == I2C_ACKNAK_SENDNAK) ++ PWRICR |= ICR_ACKNAK; ++ if (msg->acknack == I2C_ACKNAK_SENDACK) ++ PWRICR &= ~ICR_ACKNAK; ++ PWRICR &= ~ICR_ALDIE; ++ PWRICR |= ICR_TB; ++ ++ /* receive register full? */ ++ if (!pxa_pwr_i2c_isr_set_cleared(ISR_IRF, 0)) ++ goto transfer_error_receive_timeout; ++ ++ msg->data = PWRIDBR; ++ ++ /* clear 'receive empty' state */ ++ PWRISR |= ISR_IRF; ++ ++ break; ++ default: ++ goto transfer_error_illegal_param; ++ ++ } ++ ++ return 0; ++ ++transfer_error_msg_empty: ++ pr_debug("%s: error: 'msg' is empty\n", __FUNCTION__); ++ ret = -1; ++ goto i2c_transfer_finish; ++ ++transfer_error_transmit_timeout: ++ pr_debug("%s: error: transmit timeout\n", __FUNCTION__); ++ ret = -2; ++ goto i2c_transfer_finish; ++ ++transfer_error_ack_missing: ++ pr_debug("%s: error: ACK missing\n", __FUNCTION__); ++ ret = -3; ++ goto i2c_transfer_finish; ++ ++transfer_error_receive_timeout: ++ pr_debug("%s: error: receive timeout\n", __FUNCTION__); ++ ret = -4; ++ goto i2c_transfer_finish; ++ ++transfer_error_illegal_param: ++ pr_debug("%s: error: illegal parameters\n", __FUNCTION__); ++ ret = -5; ++ goto i2c_transfer_finish; ++ ++transfer_error_bus_busy: ++ pr_debug("%s: error: bus is busy\n", __FUNCTION__); ++ ret = -6; ++ goto i2c_transfer_finish; ++ ++i2c_transfer_finish: ++ pr_debug("%s: ISR: 0x%04x\n", __FUNCTION__, ISR); ++ return ret; ++} ++ ++/* ------------------------------------------------------------------------ */ ++/* API Functions */ ++/* ------------------------------------------------------------------------ */ ++/** ++ * i2c_probe: - Test if a chip answers for a given i2c address ++ * ++ * @chip: address of the chip which is searched for ++ * @return: 0 if a chip was found, -1 otherwhise ++ */ ++int pxa_pwr_i2c_probe(u8 chip) ++{ ++ struct i2c_msg msg; ++ int ret; ++ ++ pxa_pwr_i2c_reset(); ++ ++ msg.condition = I2C_COND_START; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = (chip << 1) + 1; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ msg.condition = I2C_COND_STOP; ++ msg.acknack = I2C_ACKNAK_SENDNAK; ++ msg.direction = I2C_READ; ++ msg.data = 0x00; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ return 0; ++} ++ ++/** ++ * i2c_read: - Read multiple bytes from an i2c device ++ * ++ * The higher level routines take into account that this function is only ++ * called with len < page length of the device (see configuration file) ++ * ++ * @chip: address of the chip which is to be read ++ * @addr: i2c data address within the chip ++ * @alen: length of the i2c data address (1..2 bytes) ++ * @buffer: where to write the data ++ * @len: how much byte do we want to read ++ * @return: 0 in case of success ++ */ ++int pxa_pwr_i2c_read(u8 chip, uint addr, int alen, u8 * buffer, int len) ++{ ++ struct i2c_msg msg; ++ u8 addr_bytes[3]; /* lowest...highest byte of data address */ ++ int ret; ++ ++ pr_debug("%s(chip=0x%02x, addr=0x%02x, alen=0x%02x, len=0x%02x)\n", ++ __FUNCTION__, chip, addr, alen, len); ++ ++ pxa_pwr_i2c_reset(); ++ ++ /* dummy chip address write */ ++ pr_debug("%s: dummy chip address write\n", __FUNCTION__); ++ msg.condition = I2C_COND_START; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = (chip << 1); ++ msg.data &= 0xFE; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ /* ++ * send memory address bytes; ++ * alen defines how much bytes we have to send. ++ */ ++ /*addr &= ((1 << CFG_EEPROM_PAGE_WRITE_BITS)-1); */ ++ addr_bytes[0] = (u8) ((addr >> 0) & 0x000000FF); ++ addr_bytes[1] = (u8) ((addr >> 8) & 0x000000FF); ++ addr_bytes[2] = (u8) ((addr >> 16) & 0x000000FF); ++ ++ while (--alen >= 0) { ++ pr_debug("%s: send memory word address byte %1d\n", ++ __FUNCTION__, alen); ++ msg.condition = I2C_COND_NORMAL; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = addr_bytes[alen]; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ } ++ ++ /* start read sequence */ ++ pr_debug("%s: start read sequence\n", __FUNCTION__); ++ msg.condition = I2C_COND_START; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = (chip << 1); ++ msg.data |= 0x01; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ /* read bytes; send NACK at last byte */ ++ while (len--) { ++ if (len == 0) { ++ msg.condition = I2C_COND_STOP; ++ msg.acknack = I2C_ACKNAK_SENDNAK; ++ } else { ++ msg.condition = I2C_COND_NORMAL; ++ msg.acknack = I2C_ACKNAK_SENDACK; ++ } ++ ++ msg.direction = I2C_READ; ++ msg.data = 0x00; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ *buffer = msg.data; ++ pr_debug("%s: reading byte (0x%08x)=0x%02x\n", ++ __FUNCTION__, (unsigned int)buffer, *buffer); ++ buffer++; ++ } ++ ++ pxa_pwr_i2c_reset(); ++ return 0; ++} ++ ++/** ++ * i2c_write: - Write multiple bytes to an i2c device ++ * ++ * The higher level routines take into account that this function is only ++ * called with len < page length of the device (see configuration file) ++ * ++ * @chip: address of the chip which is to be written ++ * @addr: i2c data address within the chip ++ * @alen: length of the i2c data address (1..2 bytes) ++ * @buffer: where to find the data to be written ++ * @len: how much byte do we want to read ++ * @return: 0 in case of success ++ */ ++int pxa_pwr_i2c_write(u8 chip, uint addr, int alen, u8 * buffer, int len) ++{ ++ struct i2c_msg msg; ++ u8 addr_bytes[3]; /* lowest...highest byte of data address */ ++ int ret; ++ ++ pr_debug("%s(chip=0x%02x, addr=0x%02x, alen=0x%02x, len=0x%02x)\n", ++ __FUNCTION__, chip, addr, alen, len); ++ ++ pxa_pwr_i2c_reset(); ++ ++ /* chip address write */ ++ pr_debug("%s: chip address write\n", __FUNCTION__); ++ msg.condition = I2C_COND_START; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = (chip << 1); ++ msg.data &= 0xFE; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ ++ /* ++ * send memory address bytes; ++ * alen defines how much bytes we have to send. ++ */ ++ addr_bytes[0] = (u8) ((addr >> 0) & 0x000000FF); ++ addr_bytes[1] = (u8) ((addr >> 8) & 0x000000FF); ++ addr_bytes[2] = (u8) ((addr >> 16) & 0x000000FF); ++ ++ while (--alen >= 0) { ++ pr_debug("%s: send memory word address\n", __FUNCTION__); ++ msg.condition = I2C_COND_NORMAL; ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = addr_bytes[alen]; ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ } ++ ++ /* write bytes; send NACK at last byte */ ++ while (len--) { ++ pr_debug("%s: writing byte (0x%08x)=0x%02x\n", ++ __FUNCTION__, (unsigned int)buffer, *buffer); ++ ++ if (len == 0) ++ msg.condition = I2C_COND_STOP; ++ else ++ msg.condition = I2C_COND_NORMAL; ++ ++ msg.acknack = I2C_ACKNAK_WAITACK; ++ msg.direction = I2C_WRITE; ++ msg.data = *(buffer++); ++ ++ if ((ret = pxa_pwr_i2c_transfer(&msg))) ++ return ret; ++ } ++ ++ pxa_pwr_i2c_reset(); ++ return 0; ++} ++ ++/** ++ * pxa_pwr_i2c_reg_read: - Read single byte from an i2c device ++ * ++ * @chip: address of the chip which is to be read ++ * @reg: i2c data address within the chip ++ * @return: data in case of success, negative error code otherwise ++ */ ++s32 pxa_pwr_i2c_reg_read(u8 chip, u8 reg) ++{ ++ char buf; ++ int ret; ++ ++ pr_debug("%s(chip=0x%02x, reg=0x%02x)\n", __FUNCTION__, chip, reg); ++ ret = pxa_pwr_i2c_read(chip, reg, 1, &buf, 1); ++ if (ret == 0) ++ ret = buf; ++ ++ return ret; ++} ++ ++/** ++ * pxa_pwr_i2c_reg_write: - Write multiple bytes to an i2c device ++ * ++ * The higher level routines take into account that this function is only ++ * called with len < page length of the device (see configuration file) ++ * ++ * @chip: address of the chip which is to be written ++ * @reg: i2c data address within the chip ++ * @return: 0 in case of success, negative error code otherwise ++ */ ++s32 pxa_pwr_i2c_reg_write(u8 chip, u8 reg, u8 val) ++{ ++ pr_debug("%s(chip=0x%02x, reg=0x%02x, val=0x%02x)\n", ++ __FUNCTION__, chip, reg, val); ++ return pxa_pwr_i2c_write(chip, reg, 1, &val, 1); ++} ++ ++MODULE_DESCRIPTION("PXA Power I2C"); ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_LICENSE("GPL"); +diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c +index 203371a..36b695f 100644 +--- a/arch/arm/mach-pxa/pxa27x.c ++++ b/arch/arm/mach-pxa/pxa27x.c +@@ -243,7 +243,11 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) + case PM_SUSPEND_MEM: + /* set resume return address */ + PSPR = virt_to_phys(pxa_cpu_resume); +- pxa27x_cpu_suspend(PWRMODE_SLEEP); ++#ifdef CONFIG_MACH_EM_X270 ++ pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP); ++#else ++ pxa27x_cpu_suspend(PWRMODE_SLEEP); ++#endif + break; + } + } +diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c +index bae47e1..a16e532 100644 +--- a/arch/arm/mach-pxa/spitz.c ++++ b/arch/arm/mach-pxa/spitz.c +@@ -349,6 +349,32 @@ static struct pxamci_platform_data spitz_mci_platform_data = { + + + /* ++ * USB Client (Gadget/UDC) ++ */ ++static void spitz_udc_command(int cmd) ++{ ++ switch(cmd) { ++ case PXA2XX_UDC_CMD_CONNECT: ++ UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; ++ break; ++ case PXA2XX_UDC_CMD_DISCONNECT: ++ //UP2OCR = UP2OCR_HXOE | UP2OCR_DMPUE | UP2OCR_DMPUBE; ++ break; ++ } ++} ++ ++static int spitz_udc_detect(void) ++{ ++ return 1; ++} ++ ++static struct pxa2xx_udc_mach_info spitz_udc_info __initdata = { ++ .udc_is_connected = spitz_udc_detect, ++ .udc_command = spitz_udc_command, ++}; ++ ++ ++/* + * USB Host (OHCI) + */ + static int spitz_ohci_init(struct device *dev) +@@ -499,6 +525,7 @@ static void __init common_init(void) + pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN); + + platform_add_devices(devices, ARRAY_SIZE(devices)); ++ pxa_set_udc_info(&spitz_udc_info); + pxa_set_mci_info(&spitz_mci_platform_data); + pxa_set_ohci_info(&spitz_ohci_platform_data); + pxa_set_ficp_info(&spitz_ficp_platform_data); +diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig +index 2e1c24f..f80f2b1 100644 +--- a/drivers/i2c/chips/Kconfig ++++ b/drivers/i2c/chips/Kconfig +@@ -163,4 +163,17 @@ config MENELAUS + and other features that are often used in portable devices like + cell phones and PDAs. + ++config DA9030 ++ tristate "Dialog Semiconductor DA9030 power management chip" ++ depends on EXPERIMENTAL && EMBEDDED ++ help ++ If you say yes here you get support for the Dialog ++ Semiconductor DA9030 power management chip. ++ This includes voltage regulators, lithium ion/polymer battery ++ charging, and other features that are often used in portable ++ devices like PDAs, cell phones and cameras. ++ ++ This driver can also be built as a module. If so, the module ++ will be called da9030. ++ + endmenu +diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile +index ca924e1..69f545c 100644 +--- a/drivers/i2c/chips/Makefile ++++ b/drivers/i2c/chips/Makefile +@@ -15,6 +15,7 @@ obj-$(CONFIG_ISP1301_OMAP) += isp1301_omap.o + obj-$(CONFIG_TPS65010) += tps65010.o + obj-$(CONFIG_MENELAUS) += menelaus.o + obj-$(CONFIG_SENSORS_TSL2550) += tsl2550.o ++obj-$(CONFIG_DA9030) += da9030.o + + ifeq ($(CONFIG_I2C_DEBUG_CHIP),y) + EXTRA_CFLAGS += -DDEBUG +diff --git a/drivers/i2c/chips/da9030.c b/drivers/i2c/chips/da9030.c +new file mode 100644 +index 0000000..9791272 +--- /dev/null ++++ b/drivers/i2c/chips/da9030.c +@@ -0,0 +1,1213 @@ ++/* ++ * Dialog Semiconductor DA9030 power management IC driver ++ * ++ * Copyright (C) 2007 Compulab, Ltd. ++ * Mike Rapoport ++ * ++ * Some parts based on menelaus.c: ++ * Copyright (C) 2004 Texas Instruments, Inc. ++ * Copyright (C) 2005, 2006 Nokia Corporation ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive for ++ * more details. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "da9030.h" ++ ++#define DRIVER_NAME "da9030" ++ ++static unsigned short normal_i2c[] = { 0x49, I2C_CLIENT_END }; ++ ++I2C_CLIENT_INSMOD; ++ ++struct da9030 { ++ struct mutex lock; ++ struct i2c_client *client; ++ ++ struct work_struct event_work; ++ ++ /* there are 24 interrupts */ ++ void (*callbacks[24])(int event, void *data); ++ void *callbacks_data[24]; ++ ++ struct dentry *debug_file; ++}; ++ ++/* I hardly believe there can be more than 1 such chip in the system, ++ so keeping its global instance won't really hurt */ ++static struct da9030 *the_da9030; ++ ++unsigned char defined_regs[] = { ++ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, ++ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, ++ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, ++ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, ++ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, ++ 0x50, 0x51, ++ 0x60, 0x61, 0x62, 0x63, ++ 0x80, 0x81, ++ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, ++ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, ++ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, ++}; ++ ++static inline int is_reg_valid(u32 reg) ++{ ++ int i; ++ for (i = 0; i < ARRAY_SIZE(defined_regs); i++) ++ if (reg == defined_regs[i]) ++ return 1; ++ ++ return 0; ++} ++ ++s32 da9030_get_reg(u32 reg) ++{ ++ if (!is_reg_valid(reg)) ++ return -EINVAL; ++ ++ return i2c_smbus_read_byte_data(the_da9030->client, reg); ++} ++EXPORT_SYMBOL(da9030_get_reg); ++ ++s32 da9030_set_reg(u32 reg, u8 val) ++{ ++ if (!is_reg_valid(reg)) ++ return -EINVAL; ++ ++ return i2c_smbus_write_byte_data(the_da9030->client, reg, val); ++} ++EXPORT_SYMBOL(da9030_set_reg); ++ ++static s32 da9030_update_reg_bits(u32 reg, int bits, int shift, int val) ++{ ++ int ret; ++ int new_val; ++ ++ mutex_lock(&the_da9030->lock); ++ ret = da9030_get_reg(reg); ++ if (ret < 0) ++ goto out; ++ ++ new_val = reg & ~(((1 << bits) - 1) << shift); ++ new_val |= (val << shift); ++ ++ ret = da9030_set_reg(reg, new_val); ++ mutex_unlock(&the_da9030->lock); ++ ++out: ++ return ret; ++} ++ ++int da9030_get_status(void) ++{ ++ s32 ret; ++ ++ mutex_lock(&the_da9030->lock); ++ ret = da9030_get_reg(STATUS); ++ mutex_unlock(&the_da9030->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(da9030_get_status); ++ ++int da9030_get_fault_log(void) ++{ ++ s32 ret; ++ ++ mutex_lock(&the_da9030->lock); ++ ret = da9030_get_reg(FAULT_LOG); ++ mutex_unlock(&the_da9030->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(da9030_get_fault_log); ++ ++void da9030_read_adc(struct da9030_adc_res *adc) ++{ ++ mutex_lock(&the_da9030->lock); ++ ++ adc->vbat_res = da9030_get_reg(VBAT_RES); ++ adc->vbatmin_res = da9030_get_reg(VBATMIN_RES); ++ adc->vbatmintxon = da9030_get_reg(VBATMINTXON_RES); ++ adc->ichmax_res = da9030_get_reg(ICHMAX_RES); ++ adc->ichmin_res = da9030_get_reg(ICHMIN_RES); ++ adc->ichaverage_res = da9030_get_reg(ICHAVERAGE_RES); ++ adc->vchmax_res = da9030_get_reg(VCHMAX_RES); ++ adc->vchmin_res = da9030_get_reg(VCHMIN_RES); ++ adc->tbat_res = da9030_get_reg(TBAT_RES); ++ adc->adc_in4_res = da9030_get_reg(ADC_IN4_RES); ++ adc->adc_in5_res = da9030_get_reg(ADC_IN5_RES); ++ ++ mutex_unlock(&the_da9030->lock); ++} ++EXPORT_SYMBOL(da9030_read_adc); ++ ++void da9030_enable_adc(void) ++{ ++ /* enable automatic A/D measurements */ ++ mutex_lock(&the_da9030->lock); ++ ++ da9030_set_reg(ADC_MAN_CONTROL, ++ ADC_LDO_INT_ENABLE | ADC_TBATREF_ENABLE); ++ da9030_set_reg(ADC_MAN_CONTROL_1, ++ ADC_LDO_INT_ENABLE | ADC_TBATREF_ENABLE); ++ da9030_set_reg(ADC_AUTO_CONTROL_1, ++ ADC_TBAT_ENABLE | ADC_VBAT_IN_TXON | ADC_VCH_ENABLE | ++ ADC_ICH_ENABLE | ADC_VBAT_ENABLE | ++ ADC_AUTO_SLEEP_ENABLE); ++ da9030_set_reg(ADC_AUTO_CONTROL, ++ ADC_TBAT_ENABLE | ADC_VBAT_IN_TXON | ADC_VCH_ENABLE | ++ ADC_ICH_ENABLE | ADC_VBAT_ENABLE | ++ ADC_AUTO_SLEEP_ENABLE); ++ ++ mutex_unlock(&the_da9030->lock); ++} ++EXPORT_SYMBOL(da9030_enable_adc); ++ ++void da9030_set_wled(int on, unsigned int brightness) ++{ ++ u8 val; ++ ++ mutex_lock(&the_da9030->lock); ++ ++ if (on) ++ val = WLED_CP_ENABLE | (brightness & 0x7); ++ else ++ val = da9030_get_reg(WLED_CONTROL) & ~WLED_CP_ENABLE; ++ ++ da9030_set_reg(WLED_CONTROL, val); ++ ++ mutex_unlock(&the_da9030->lock); ++} ++EXPORT_SYMBOL(da9030_set_wled); ++ ++int da9030_set_charger(int on, unsigned int mA, unsigned int mV) ++{ ++ int ret; ++ u8 val = 0; ++ if (on) { ++ if (mA >= 1500 || mV < 4000 || mV > 4350) ++ return -EINVAL; ++ ++ val = CHRG_CHARGER_ENABLE; ++ val |= (mA / 100) << 3; ++ val |= (mV - 4000) / 50; ++ } ++ ++ mutex_lock(&the_da9030->lock); ++ ret = da9030_set_reg(CHARGE_CONTROL, val); ++ mutex_unlock(&the_da9030->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(da9030_set_charger); ++ ++void da9030_get_charger(int *on, unsigned int *mA, unsigned int *mV) ++{ ++ s32 val; ++ ++ mutex_lock(&the_da9030->lock); ++ ++ val = da9030_get_reg(CHARGE_CONTROL); ++ ++ mutex_unlock(&the_da9030->lock); ++ ++ if (on) ++ *on = (val & CHRG_CHARGER_ENABLE) ? 1 : 0; ++ ++ if (mA) ++ *mA = ((val >> 3) & 0xf) * 100; ++ ++ if (mV) ++ *mV = (val & 0x7) * 50 + 4000; ++} ++EXPORT_SYMBOL(da9030_get_charger); ++ ++int da9030_set_led(int led, int on, ++ enum da9030_led_rate rate, ++ enum da9030_led_duty_cycle duty, ++ enum da9030_led_pwm_chop pwm_chop) ++{ ++ int reg; ++ int ret; ++ ++ u8 val = 0; ++ ++ if (led > 4) ++ return -EINVAL; ++ ++ reg = LED_1_CONTROL + led; ++ if (on) { ++ val = LED_ENABLE; ++ val |= (rate & 0x3) << 5; ++ val |= (duty & 0x3) << 3; ++ val |= (pwm_chop & 0x7); ++ } ++ ++ mutex_lock(&the_da9030->lock); ++ ret = da9030_set_reg(reg, val); ++ mutex_unlock(&the_da9030->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(da9030_set_led); ++ ++void da9030_set_thresholds(unsigned int tbathighp, unsigned int tbathighn, ++ unsigned int tbatlow, unsigned int vbatmon) ++{ ++ mutex_lock(&the_da9030->lock); ++ ++ da9030_set_reg(TBATHIGHP, tbathighp); ++ da9030_set_reg(TBATHIGHN, tbathighn); ++ da9030_set_reg(TBATLOW, tbatlow); ++ da9030_set_reg(VBATMONTXON, vbatmon); ++ da9030_set_reg(VBATMON, vbatmon); ++ ++ da9030_set_reg(TBATHIGHP_1, tbathighp); ++ da9030_set_reg(TBATHIGHN_1, tbathighn); ++ da9030_set_reg(TBATLOW_1, tbatlow); ++ da9030_set_reg(VBATMONTXMON_1, vbatmon); ++ da9030_set_reg(VBATMON_1, vbatmon); ++ ++ mutex_unlock(&the_da9030->lock); ++} ++EXPORT_SYMBOL(da9030_set_thresholds); ++ ++struct da9030_vtg_value { ++ u16 vtg; ++ u16 val; ++}; ++ ++struct da9030_vtg_value da9030_vtg_1V8_3V2[] = { ++ {1800, 0x0}, ++ {1900, 0x1}, ++ {2000, 0x2}, ++ {2100, 0x3}, ++ {2200, 0x4}, ++ {2300, 0x5}, ++ {2400, 0x6}, ++ {2500, 0x7}, ++ {2600, 0x8}, ++ {2700, 0x9}, ++ {2800, 0xa}, ++ {2900, 0xb}, ++ {3000, 0xc}, ++ {3100, 0xd}, ++ {3200, 0xe}, ++ {3200, 0xf}, ++}; ++ ++struct da9030_vtg_value da9030_vtg_1V1_2V65[] = { ++ {1100, 0x0}, ++ {1150, 0x1}, ++ {1200, 0x2}, ++ {1250, 0x3}, ++ {1300, 0x4}, ++ {1350, 0x5}, ++ {1400, 0x6}, ++ {1450, 0x7}, ++ {1500, 0x8}, ++ {1550, 0x9}, ++ {1600, 0xa}, ++ {1650, 0xb}, ++ {1700, 0xc}, ++ {1750, 0xd}, ++ {1800, 0xe}, ++ {1850, 0xf}, ++ {1900, 0x10}, ++ {1950, 0x11}, ++ {2000, 0x12}, ++ {2050, 0x13}, ++ {2100, 0x14}, ++ {2150, 0x15}, ++ {2200, 0x16}, ++ {2250, 0x17}, ++ {2300, 0x18}, ++ {2350, 0x19}, ++ {2400, 0x1a}, ++ {2450, 0x1b}, ++ {2500, 0x1c}, ++ {2550, 0x1d}, ++ {2600, 0x1e}, ++ {2650, 0x1f}, ++}; ++ ++struct da9030_vtg_value da9030_vtg_2V76_2V94[] = { ++ {2760, 0x7}, ++ {2790, 0x6}, ++ {2820, 0x5}, ++ {2850, 0x4}, ++ {2850, 0x3}, ++ {2880, 0x1}, ++ {2910, 0x2}, ++ {2940, 0x3}, ++}; ++ ++struct da9030_vtg_value da9030_vtg_0V85_1V625[] = { ++ {850, 0x0}, ++ {875, 0x1}, ++ {900, 0x2}, ++ {925, 0x3}, ++ {950, 0x4}, ++ {975, 0x5}, ++ {1000, 0x6}, ++ {1025, 0x7}, ++ {1050, 0x8}, ++ {1075, 0x9}, ++ {1100, 0xa}, ++ {1125, 0xb}, ++ {1150, 0xc}, ++ {1175, 0xd}, ++ {1200, 0xe}, ++ {1225, 0xf}, ++ {1250, 0x10}, ++ {1275, 0x11}, ++ {1300, 0x12}, ++ {1325, 0x13}, ++ {1350, 0x14}, ++ {1375, 0x15}, ++ {1400, 0x16}, ++ {1425, 0x17}, ++ {1450, 0x18}, ++ {1475, 0x19}, ++ {1500, 0x1a}, ++ {1525, 0x1b}, ++ {1550, 0x1c}, ++ {1575, 0x1d}, ++ {1600, 0x1e}, ++ {1625, 0x1f}, ++}; ++ ++struct ldo_param { ++ u8 reg; ++ u8 shift; ++ u8 bits; ++}; ++ ++struct da9030_ldo { ++ const char *name; ++ ++ struct ldo_param vtg; ++ struct ldo_param sleep; ++ struct ldo_param lock; ++ ++ /* several LDOs have two enable/disable bits */ ++ struct ldo_param enable[2]; ++ ++ struct da9030_vtg_value *values; ++ int values_count; ++}; ++ ++static struct da9030_ldo da9030_ldos[] = { ++ [0] = { ++ .name = "LDO1", ++ .vtg = { ++ .reg = LDO_1, ++ .shift = 0, ++ .bits = 5, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 1, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = LDO_1, ++ .shift = 5, ++ .bits = 2, ++ }, ++ .lock = { ++ .reg = REG_SLEEP_CONTROL1, ++ .shift = 0, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [1] = { ++ .name = "LDO2", ++ .vtg = { ++ .reg = LDO_2_3, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 2, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL1, ++ .shift = 2, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [2] = { ++ .name = "LDO3", ++ .vtg = { ++ .reg = LDO_2_3, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 3, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL1, ++ .shift = 4, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [3] = { ++ .name = "LDO4", ++ .vtg = { ++ .reg = LDO_4_5, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 4, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL1, ++ .shift = 6, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [4] = { ++ .name = "LDO5", ++ .vtg = { ++ .reg = LDO_4_5, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 5, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL2, ++ .shift = 0, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [5] = { ++ .name = "LDO6", ++ .vtg = { ++ .reg = LDO_6_SIMCP, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 6, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [6] = { ++ .name = "LDO7", ++ .vtg = { ++ .reg = LDO_7_8, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_97, ++ .shift = 7, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL2, ++ .shift = 2, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [7] = { ++ .name = "LDO8", ++ .vtg = { ++ .reg = LDO_7_8, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_2_98, ++ .shift = 0, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL2, ++ .shift = 4, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [8] = { ++ .name = "LDO9", ++ .vtg = { ++ .reg = LDO_9_12, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_2_98, ++ .shift = 1, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL2, ++ .shift = 6, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [9] = { ++ .name = "LDO10", ++ .vtg = { ++ .reg = LDO_10_11, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 1, ++ .bits = 1, ++ }, ++ .enable[1] = { ++ .reg = REG_CONTROL_2_98, ++ .shift = 2, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [10] = { ++ .name = "LDO11", ++ .vtg = { ++ .reg = LDO_10_11, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 2, ++ .bits = 1, ++ }, ++ .enable[1] = { ++ .reg = REG_CONTROL_2_98, ++ .shift = 3, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [11] = { ++ .name = "LDO12", ++ .vtg = { ++ .reg = LDO_9_12, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_2_98, ++ .shift = 4, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = REG_SLEEP_CONTROL3, ++ .shift = 0, ++ .bits = 2, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [12] = { ++ .name = "LDO13", ++ .vtg = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 3, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = NULL, ++ .values_count = 0, ++ }, ++ [13] = { ++ .name = "LDO14", ++ .vtg = { ++ .reg = LDO_14_16, ++ .shift = 0, ++ .bits = 3, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, /* FIXME: or 2_98? */ ++ .shift = 4, ++ .bits = 1, ++ }, ++ .enable[1] = { ++ .reg = REG_CONTROL_2_98, /* FIXME: or 2_98? */ ++ .shift = 5, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_2V76_2V94, ++ .values_count = ARRAY_SIZE(da9030_vtg_2V76_2V94), ++ }, ++ [14] = { ++ .name = "LDO15", ++ .vtg = { ++ .reg = LDO_15, ++ .shift = 0, ++ .bits = 5, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 5, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .lock = { ++ .reg = LDO_15, ++ .shift = 5, ++ .bits = 3, ++ }, ++ .values = da9030_vtg_1V1_2V65, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V1_2V65), ++ }, ++ [15] = { ++ .name = "LDO16", ++ .vtg = { ++ .reg = LDO_14_16, ++ .shift = 3, ++ .bits = 5, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 6, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V1_2V65, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V1_2V65), ++ }, ++ [16] = { ++ .name = "LDO17", ++ .vtg = { ++ .reg = LDO_17_SIMCP0, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_1_17, ++ .shift = 7, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [17] = { ++ .name = "LDO18", ++ .vtg = { ++ .reg = LDO_18_19, ++ .shift = 0, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_2_18, ++ .shift = 2, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++ [18] = { ++ .name = "LDO19", ++ .vtg = { ++ .reg = LDO_18_19, ++ .shift = 4, ++ .bits = 4, ++ }, ++ .enable[0] = { ++ .reg = REG_CONTROL_2_18, ++ .shift = 1, ++ .bits = 1, ++ }, ++ .sleep = { ++ .reg = 0, ++ .shift = 0, ++ .bits = 0, ++ }, ++ .values = da9030_vtg_1V8_3V2, ++ .values_count = ARRAY_SIZE(da9030_vtg_1V8_3V2), ++ }, ++}; ++ ++static int da9030_get_vtg_value(int vtg, const struct da9030_vtg_value *tbl, ++ int n) ++{ ++ int i; ++ ++ for (i = 0; i < n; i++, tbl++) ++ if (tbl->vtg == vtg) ++ return tbl->val; ++ return -EINVAL; ++} ++ ++static int da9030_set_ldo_volt(struct da9030_ldo *ldo, unsigned int mV) ++{ ++ int val; ++ ++ val = da9030_get_vtg_value(mV, ldo->values, ldo->values_count); ++ if (val < 0) ++ return val; ++ ++ return da9030_update_reg_bits(ldo->vtg.reg, ldo->vtg.bits, ++ ldo->vtg.shift, val); ++} ++ ++static int da9030_enable_ldo(struct da9030_ldo *ldo, int enable) ++{ ++ int ret; ++ ++ ret = da9030_update_reg_bits(ldo->enable[0].reg, ldo->enable[1].bits, ++ ldo->enable[0].shift, enable); ++ ++ if (ret < 0) ++ return ret; ++ ++ if (unlikely(ldo->enable[1].reg != 0)) ++ ret = da9030_update_reg_bits(ldo->enable[1].reg, ++ ldo->enable[1].bits, ++ ldo->enable[1].shift, enable); ++ ++ return ret; ++} ++ ++static int da9030_set_ldo_sleep(struct da9030_ldo *ldo, ++ enum da9030_ldo_sleep_mode sleep_mode) ++{ ++ return da9030_update_reg_bits(ldo->sleep.reg, ldo->sleep.bits, ++ ldo->sleep.shift, sleep_mode); ++} ++ ++int da9030_set_ldo(int ldo_num, int on, unsigned int mV, ++ enum da9030_ldo_sleep_mode sleep_mode) ++{ ++ struct da9030_ldo *ldo; ++ int ret; ++ ++ if (ldo_num < 0 || ldo_num > ARRAY_SIZE(da9030_ldos)) ++ return -EINVAL; ++ ++ ldo = &da9030_ldos[ldo_num]; ++ ++ ret = da9030_set_ldo_volt(ldo, mV); ++ if (ret < 0) ++ return ret; ++ ++ ret = da9030_enable_ldo(ldo, on); ++ if (ret < 0) ++ return ret; ++ ++ ret = da9030_set_ldo_sleep(ldo, sleep_mode); ++ if (ret < 0) ++ return ret; ++ ++ return 0; ++} ++EXPORT_SYMBOL(da9030_set_ldo); ++ ++int da9030_set_buck(int buck, int on, unsigned int mV, int flags) ++{ ++ /* FIXME: implement */ ++ return 0; ++} ++EXPORT_SYMBOL(da9030_set_buck); ++ ++static void da9030_disable_irq(unsigned int irq) ++{ ++ int reg, val; ++ ++ if (irq < 8) { ++ reg = IRQ_MASK_A; ++ val = 1 << irq; ++ } else if (irq < 16) { ++ reg = IRQ_MASK_B; ++ val = 1 << (irq - 8); ++ } else { ++ reg = IRQ_MASK_C; ++ val = 1 << (irq - 16); ++ } ++ ++ i2c_smbus_write_byte_data( ++ the_da9030->client, reg, ++ i2c_smbus_read_byte_data(the_da9030->client, reg) | val); ++} ++ ++static void da9030_enable_irq(unsigned int irq) ++{ ++ int reg, val; ++ ++ if (irq < 8) { ++ reg = IRQ_MASK_A; ++ val = 1 << irq; ++ } else if (irq < 16) { ++ reg = IRQ_MASK_B; ++ val = 1 << (irq - 8); ++ } else { ++ reg = IRQ_MASK_C; ++ val = 1 << (irq - 16); ++ } ++ ++ i2c_smbus_write_byte_data( ++ the_da9030->client, reg, ++ i2c_smbus_read_byte_data(the_da9030->client, reg) & ~val); ++} ++ ++int da9030_register_callback(int event, ++ void (*callback)(int event, void *data), ++ void *data) ++{ ++ int ret; ++ ++ if (event < 0 || event > 23) ++ return -EINVAL; ++ ++ mutex_lock(&the_da9030->lock); ++ if (the_da9030->callbacks[event]) ++ ret = -EBUSY; ++ else { ++ the_da9030->callbacks[event] = callback; ++ the_da9030->callbacks_data[event] = data; ++ da9030_enable_irq(event); ++ ret = 0; ++ } ++ mutex_unlock(&the_da9030->lock); ++ ++ return ret; ++} ++EXPORT_SYMBOL(da9030_register_callback); ++ ++void da9030_unregister_callback(int event) ++{ ++ mutex_lock(&the_da9030->lock); ++ ++ da9030_disable_irq(event); ++ the_da9030->callbacks[event] = NULL; ++ the_da9030->callbacks_data[event] = 0; ++ ++ mutex_unlock(&the_da9030->lock); ++} ++EXPORT_SYMBOL(da9030_unregister_callback); ++ ++#ifdef CONFIG_DEBUG_FS ++#define MAX_BUF 256 ++ ++static int da9030_debug_show(struct seq_file *s, void *data) ++{ ++ int i, res = 0; ++ struct da9030 *da9030 = s->private; ++ struct i2c_client *client = da9030->client; ++ ++ seq_printf(s, "DA9030 state: da = %p, cl = %p, s->private = %p\n", ++ da9030, client, s->private); ++ ++ for (i = 0; i < ARRAY_SIZE(defined_regs); i++) { ++ res = i2c_smbus_read_byte_data(client, defined_regs[i]); ++ seq_printf(s, "%02x %x\n", defined_regs[i], res); ++ } ++ return 0; ++} ++ ++static int da9030_debug_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, da9030_debug_show, inode->i_private); ++} ++ ++ssize_t da9030_debug_write(struct file *f, const char __user *buf, size_t len, ++ loff_t *off) ++{ ++ char buffer[MAX_BUF]; ++ int reg, val; ++ char *endp; ++ struct da9030 *da9030 = ((struct seq_file *)f->private_data)->private; ++ struct i2c_client *client = da9030->client; ++ ++ if (len > MAX_BUF) { ++ printk(KERN_INFO "%s: large buffer\n", __FUNCTION__); ++ len = MAX_BUF; ++ } ++ ++ if (copy_from_user(buffer, buf, len)) { ++ printk(KERN_INFO "%s: copy_from_user failed\n", __FUNCTION__); ++ return -EFAULT; ++ } ++ buffer[len] = '\0'; ++ ++ reg = simple_strtoul(buffer, &endp, 0); ++ while (endp && isspace(*endp)) ++ endp++; ++ ++ val = simple_strtoul(endp, 0, 0); ++ ++ i2c_smbus_write_byte_data(client, reg, val); ++ ++ return len; ++} ++ ++static const struct file_operations debug_fops = { ++ .open = da9030_debug_open, ++ .read = seq_read, ++ .write = da9030_debug_write, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static struct dentry *da9030_create_debugfs(struct da9030 *da9030) ++{ ++ da9030->debug_file = debugfs_create_file("da9030", 0666, 0, da9030, ++ &debug_fops); ++ return da9030->debug_file; ++} ++ ++static void da9030_remove_debugfs(struct da9030 *da9030) ++{ ++ debugfs_remove(da9030->debug_file); ++} ++#else ++#define da9030_create_debugfs(x) NULL ++#define da9030_remove_debugfs(x) do {} while (0) ++#endif ++ ++static irqreturn_t da9030_irq(int irq, void *_da9030) ++{ ++ struct da9030 *da9030 = _da9030; ++ ++ (void)schedule_work(&da9030->event_work); ++ ++ return IRQ_HANDLED; ++} ++ ++static void da9030_irq_worker(struct work_struct *work) ++{ ++ struct da9030 *da9030 = container_of(work, struct da9030, event_work); ++ void (*callback)(int event, void *data); ++ u32 pending = 0; ++ u32 mask = 0; ++ int i; ++ ++ while (1) { ++ pending = (i2c_smbus_read_byte_data(da9030->client, ++ EVENT_A)) | ++ ((i2c_smbus_read_byte_data(da9030->client, ++ EVENT_B)) << 8) | ++ ((i2c_smbus_read_byte_data(da9030->client, ++ EVENT_C)) << 16); ++ ++ mask = (i2c_smbus_read_byte_data(da9030->client, ++ IRQ_MASK_A)) | ++ ((i2c_smbus_read_byte_data(da9030->client, ++ IRQ_MASK_B)) << 8) | ++ ((i2c_smbus_read_byte_data(da9030->client, ++ IRQ_MASK_C)) << 16); ++ pending &= ~mask; ++ ++ if (!pending) ++ return; ++ ++ while (pending) { ++ i = __ffs(pending); ++ callback = da9030->callbacks[i]; ++ if (callback) ++ callback(i, da9030->callbacks_data[i]); ++ pending &= ~(1 << i); ++ } ++ } ++} ++ ++static inline void da9030_disable_interrupts(struct da9030 *da9030) ++{ ++ /* clear pending interruts */ ++ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_A); ++ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_B); ++ (void)i2c_smbus_read_byte_data(da9030->client, EVENT_C); ++ ++ /* disable interrupts */ ++ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_A, 0xff); ++ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_B, 0xff); ++ i2c_smbus_write_byte_data(da9030->client, IRQ_MASK_C, 0xff); ++} ++ ++static int da9030_probe(struct i2c_client *client) ++{ ++ int ret; ++ struct da9030 *da9030; ++ ++ if (the_da9030) { ++ dev_dbg(&client->dev, "only one %s for now\n", ++ DRIVER_NAME); ++ return -ENODEV; ++ } ++ ++ ret = i2c_smbus_read_byte_data(client, CHIP_ID); ++ ++ dev_info(&client->dev, "initialized chip revision %x\n", ret); ++ ++ da9030 = kzalloc(sizeof(struct da9030), GFP_KERNEL); ++ if (da9030 == NULL) { ++ dev_err(&client->dev, "insufficient memory\n"); ++ return -ENOMEM; ++ } ++ the_da9030 = da9030; ++ da9030->client = client; ++ ++ mutex_init(&the_da9030->lock); ++ ++ da9030_disable_interrupts(da9030); ++ INIT_WORK(&da9030->event_work, da9030_irq_worker); ++ ++ ret = request_irq(client->irq, da9030_irq, ++ IRQF_DISABLED, DRIVER_NAME, da9030); ++ ++ if (ret) { ++ kfree(da9030); ++ dev_err(&client->dev, ++ "failed to allocate irq %d\n", ++ client->irq); ++ return ret; ++ } ++ ++ i2c_set_clientdata(client, da9030); ++ ++ da9030->debug_file = da9030_create_debugfs(da9030); ++ ++ return 0; ++} ++ ++/* static int da9030_detach_adapter(struct i2c_adapter *a) */ ++static int da9030_remove(struct i2c_client *client) ++{ ++ struct da9030 *da9030 = i2c_get_clientdata(client); ++ ++ da9030_remove_debugfs(da9030); ++ ++ free_irq(da9030->client->irq, da9030); ++ kfree(da9030); ++ i2c_set_clientdata(client, NULL); ++ the_da9030 = NULL; ++ ++ return 0; ++} ++ ++static struct i2c_driver da9030_driver = { ++ .driver = { ++ .name = "da9030", ++ .owner = THIS_MODULE, ++ }, ++ ++ .probe = da9030_probe, ++ .remove = da9030_remove, ++}; ++ ++static int da9030_init(void) ++{ ++ i2c_add_driver(&da9030_driver); ++ return 0; ++} ++ ++static void da9030_exit(void) ++{ ++ i2c_del_driver(&da9030_driver); ++} ++ ++/* NOTE: this MUST be initialized before the other parts of the system ++ * that rely on it ... but after the i2c bus on which this relies. ++ * That is, much earlier than on PC-type systems, which don't often use ++ * I2C as a core system bus. ++ */ ++subsys_initcall(da9030_init); ++module_exit(da9030_exit); ++ ++MODULE_DESCRIPTION("DA9030 power manager driver"); ++MODULE_AUTHOR("Mike Rapoport, Compulab"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/i2c/chips/da9030.h b/drivers/i2c/chips/da9030.h +new file mode 100644 +index 0000000..4163156 +--- /dev/null ++++ b/drivers/i2c/chips/da9030.h +@@ -0,0 +1,282 @@ ++/* DA9030 Register definintions */ ++ ++#define CHIP_ID 0x00 ++ ++#define EVENT_A 0x01 ++#define EVENT_A_CHIOVER (1 << 7) ++#define EVENT_A_VBAT_MON_TXON (1 << 6) ++#define EVENT_A_VBAT_MON (1 << 5) ++#define EVENT_A_TBAT (1 << 4) ++#define EVENT_A_CHDET (1 << 3) ++#define EVENT_A_EXTON (1 << 2) ++#define EVENT_A_PWREN1 (1 << 1) ++#define EVENT_A_ONKEY_N (1 << 0) ++ ++#define EVENT_B 0x02 ++#define EVENT_B_WDOG_INT (1 << 7) ++#define EVENT_B_SRP_DETECT (1 << 6) ++#define EVENT_B_SESSION_VALID (1 << 5) ++#define EVENT_B_VBUS_VALID_4_0 (1 << 4) ++#define EVENT_B_VBUS_VALID_4_4 (1 << 3) ++#define EVENT_B_ADC_READY (1 << 2) ++#define EVENT_B_CCTO (1 << 1) ++#define EVENT_B_TCTO (1 << 0) ++ ++#define EVENT_C 0x03 ++#define EVENT_C_ADC_IN5 (1 << 7) ++#define EVENT_C_ADC_IN4 (1 << 6) ++#define EVENT_C_BUCK2 (1 << 5) ++#define EVENT_C_LDO19 (1 << 4) ++#define EVENT_C_LDO18 (1 << 3) ++#define EVENT_C_LDO17 (1 << 2) ++#define EVENT_C_LDO16 (1 << 1) ++#define EVENT_C_LDO15 (1 << 0) ++ ++#define STATUS 0x04 ++#define STATUS_MCLK_DETECT (1 << 7) ++#define STATUS_VBAT_MON_TXON (1 << 6) ++#define STATUS_VBAT_MON (1 << 5) ++#define STATUS_TBAT (1 << 4) ++#define STATUS_CHDET (1 << 3) ++#define STATUS_EXTON (1 << 2) ++#define STATUS_PWREN1 (1 << 1) ++#define STATUS_ONKEY_N (1 << 0) ++ ++#define IRQ_MASK_A 0x05 ++#define IRQ_MASK_A_CHIOVER (1 << 7) ++#define IRQ_MASK_A_VBAT_MON_TXON (1 << 6) ++#define IRQ_MASK_A_VBAT_MON (1 << 5) ++#define IRQ_MASK_A_TBAT (1 << 4) ++#define IRQ_MASK_A_CHDET (1 << 3) ++#define IRQ_MASK_A_EXTON (1 << 2) ++#define IRQ_MASK_A_PWREN1 (1 << 1) ++#define IRQ_MASK_A_ONKEY_N (1 << 0) ++ ++#define IRQ_MASK_B 0x06 ++#define IRQ_MASK_B_WDOG_INT (1 << 7) ++#define IRQ_MASK_B_SRP_DETECT (1 << 6) ++#define IRQ_MASK_B_SESSION_VALID (1 << 5) ++#define IRQ_MASK_B_VBUS_VALID_4_0 (1 << 4) ++#define IRQ_MASK_B_VBUS_VALID_4_4 (1 << 3) ++#define IRQ_MASK_B_ADC_READY (1 << 2) ++#define IRQ_MASK_B_CCTO (1 << 1) ++#define IRQ_MASK_B_TCTO (1 << 0) ++ ++#define IRQ_MASK_C 0x07 ++#define IRQ_MASK_C_ADC_IN5 (1 << 7) ++#define IRQ_MASK_C_ADC_IN4 (1 << 6) ++#define IRQ_MASK_C_BUCK2 (1 << 5) ++#define IRQ_MASK_C_LDO19 (1 << 4) ++#define IRQ_MASK_C_LDO18 (1 << 3) ++#define IRQ_MASK_C_LDO17 (1 << 2) ++#define IRQ_MASK_C_LDO16 (1 << 1) ++#define IRQ_MASK_C_LDO15 (1 << 0) ++ ++#define SYS_CTRL_A 0x08 ++#define SYS_CONTROL_A_SLEEP_N_PIN_ENABLE 0x1 ++#define SYS_CONTROL_A_SHUT_DOWN (1<<1) ++#define SYS_CONTROL_A_HWRES_ENABLE (1<<2) ++#define SYS_CONTROL_A_WDOG_ACTION (1<<3) ++#define SYS_CONTROL_A_WATCHDOG (1<<7) ++ ++#define SYS_CONTROL_B 0x09 ++#define SYS_CLTR_B_SLEEP_13MHZ_EN (1 << 4) ++#define SYS_CLTR_B_AUTO_CLK_SWITCH (1 << 3) ++ ++#define FAULT_LOG 0x0a ++#define FAULT_LOG_OVER_TEMP (1 << 7) ++#define FAULT_LOG_VBAT_OVER (1 << 4) ++ ++#define LDO_10_11 0x10 ++#define LDO_10_11_LDO10_3V (0xc) ++#define LDO_10_11_LDO11_3V2 (0xe << 4) ++ ++#define LDO_15 0x11 ++#define LDO_14_16 0x12 ++#define LDO_18_19 0x13 ++#define LDO_18_19_LDO18_3V2 (0xe) ++ ++#define LDO_17_SIMCP0 0x14 ++#define LDO_17_SIMCP0_LDO17_3V 0x0F ++ ++#define BUCK_2_DVC1 0x15 ++#define BUCK_2_GO (1 << 7) ++#define BUCK_2_SLEEP (1 << 6) ++#define BUCK_2_TRIM_1V5 (0x1a) ++ ++#define BUCK_2_DVC2 0x16 ++ ++#define REG_CONTROL_1_17 0x17 ++#define RC1_LDO17_EN (1 << 7) ++#define RC1_LDO16_EN (1 << 6) ++#define RC1_LDO15_EN (1 << 5) ++#define RC1_LDO14_EN (1 << 4) ++#define RC1_LDO13_EN (1 << 3) ++#define RC1_LDO11_EN (1 << 2) ++#define RC1_LDO10_EN (1 << 1) ++#define RC1_BUCK2_EN (1 << 0) ++ ++#define REG_CONTROL_2_18 0x18 ++#define RC2_SIMCP_EN (1 << 6) ++#define RC2_LDO19_EN (1 << 1) ++#define RC2_LDO18_EN (1 << 0) ++ ++#define REG_CONTROL_3_ ++ ++#define USBPUMP 0x19 ++#define USB_PUMP_EN_USBVEP (1 << 7) ++#define USB_PUMP_EN_USBVE (1 << 6) ++#define USB_PUMP_SPR_DETECT (1 << 5) ++#define USB_PUMP_SESSION_VALID (1 << 4) ++#define USB_PUMP_VBUS_VALID_4_0 (1 << 3) ++#define USB_PUMP_VBUS_VALID_4_4 (1 << 2) ++#define USB_PUMP_USBVEP (1 << 1) ++#define USB_PUMP_USBVE (1 << 0) ++ ++#define SLEEP_CONTROL 0x1a ++#define APP_SLEEP_CTL_PWR_EN (1 << 7) ++#define APP_SLEEP_CTL_SYS_EN (1 << 6) ++#define APP_SLEEP_CTL_BYPASS_LDO19 (1 << 2) ++#define APP_SLEEP_CTL_BYPASS_LDO18 (1 << 1) ++#define APP_SLEEP_CTL_BYPASS_LDO17 (1 << 0) ++ ++#define STARTUP_CONTROL 0x1b ++#define STARTUP_CTL_LDO11_PWR_SYS (1 << 3) ++#define STARTUP_CTL_LDO10_PWR_SYS (1 << 2) ++#define STARTUP_CTL_LDO11_START (1 << 1) ++#define STARTUP_CTL_LDO10_START (1 << 0) ++ ++#define LED_1_CONTROL 0x20 ++#define LED_2_CONTROL 0x21 ++#define LED_3_CONTROL 0x22 ++#define LED_4_CONTROL 0x23 ++#define LEDPC_CONTROL 0x24 ++#define LED_ENABLE (1 << 7) ++ ++#define WLED_CONTROL 0x25 ++#define WLED_CP_ENABLE (1 << 6) ++#define WLED_ISET_10 (3) ++ ++#define MISC_CONTROLA 0x26 ++#define MISC_CONTROLB 0x27 ++#define MISCB_SESSION_VALID_ENABLE (1 << 3) ++#define MISCB_USB_INT_RISING (1 << 2) ++#define MISCB_I2C_ADDRESS (1 << 1) ++#define MISCB_STARTUP_SEQUENCE (1 << 0) ++ ++#define CHARGE_CONTROL 0x28 ++#define CHRG_CHARGER_ENABLE (1 << 7) ++ ++#define CCTR_CONTROL 0x29 ++#define CCTR_SET_8MIN 0x01 ++ ++#define TCTR_CONTROL 0x2a ++#define CHARGE_PULSE 0x2b ++ ++#define ADC_MAN_CONTROL 0x30 ++ ++#define ADC_AUTO_CONTROL 0x31 ++#define ADC_IN5_EN (1 << 7) ++#define ADC_IN4_EN (1 << 6) ++#define ADC_TBAT_ENABLE (1 << 5) ++#define ADC_VBAT_IN_TXON (1 << 4) ++#define ADC_VCH_ENABLE (1 << 3) ++#define ADC_ICH_ENABLE (1 << 2) ++#define ADC_VBAT_ENABLE (1 << 1) ++#define ADC_AUTO_SLEEP_ENABLE (1 << 0) ++ ++#define VBATMON 0x32 ++#define VBATMONTXON 0x33 ++#define TBATHIGHP 0x34 ++#define TBATHIGHN 0x35 ++#define TBATLOW 0x36 ++#define ADC_IN4_MIN 0x37 ++#define ADC_IN4_MAX 0x38 ++#define ADC_IN5_MIN 0x39 ++#define ADC_IN5_MAX 0x3a ++ ++#define VBAT_RES 0x41 ++#define VBATMIN_RES 0x42 ++#define VBATMINTXON 0x43 ++#define ICHMAX_RES 0x44 ++#define ICHMIN_RES 0x45 ++#define ICHAVERAGE_RES 0x46 ++#define VCHMAX_RES 0x47 ++#define VCHMIN_RES 0x48 ++#define TBAT_RES 0x49 ++#define ADC_IN4_RES 0x4a ++#define ADC_IN5_RES 0x4b ++ ++#define LDO_1 0x90 ++#define LDO_1_UNLOCK (0x5 << 5) ++#define LDO_1_TRIM_3V (0x12) ++ ++#define LDO_2_3 0x91 ++#define LDO_2_3_LDO2_3V2 (0xe << 4) ++#define LDO_2_3_LDO3_3V (0xc) ++ ++#define LDO_4_5 0x92 ++#define LDO_6_SIMCP 0x93 ++#define LDO_6_SIMCP_LDO6_3V2 (0xe) ++ ++#define LDO_7_8 0x94 ++#define LDO_9_12 0x95 ++#define BUCK 0x96 ++#define REG_CONTROL_1_97 0x97 ++#define RC3_LDO7_EN (1 << 7) ++#define RC3_LDO6_EN (1 << 6) ++#define RC3_LDO5_EN (1 << 5) ++#define RC3_LDO4_EN (1 << 4) ++#define RC3_LDO3_EN (1 << 3) ++#define RC3_LDO2_EN (1 << 2) ++#define RC3_LDO1_EN (1 << 1) ++#define RC3_BUCK_EN (1 << 0) ++ ++#define REG_CONTROL_2_98 0x98 ++#define RC4_SLEEP (1 << 7) ++#define RC4_SIMCP_ENABLE (1 << 6) ++#define RC4_LDO14_EN (1 << 5) ++#define RC4_LDO12_EN (1 << 4) ++#define RC4_LDO11_EN (1 << 3) ++#define RC4_LDO10_EN (1 << 2) ++#define RC4_LDO9_EN (1 << 1) ++#define RC4_LDO8_EN (1 << 0) ++ ++#define REG_SLEEP_CONTROL1 0x99 ++#define REG_SLEEP_CONTROL2 0x9a ++#define REG_SLEEP_CONTROL3 0x9b ++ ++#define ADC_MAN_CONTROL_1 0xa0 ++#define ADC_DEBOUNCE_VBATMON_TXON (1 << 7) ++#define ADC_DEBOUNCE_VBATMON (1 << 6) ++#define ADC_TBATREF_ENABLE (1 << 5) ++#define ADC_LDO_INT_ENABLE (1 << 4) ++#define ADC_MAN_CONV (1 << 3) ++#define ADC_MUX_VBAT (0) ++ ++#define ADC_AUTO_CONTROL_1 0xa1 ++#define ADC_IN5_EN (1 << 7) ++#define ADC_IN4_EN (1 << 6) ++#define ADC_TBAT_ENABLE (1 << 5) ++#define ADC_VBAT_IN_TXON (1 << 4) ++#define ADC_VCH_ENABLE (1 << 3) ++#define ADC_ICH_ENABLE (1 << 2) ++#define ADC_VBAT_ENABLE (1 << 1) ++#define ADC_AUTO_SLEEP_ENABLE (1 << 0) ++ ++#define VBATMON_1 0xa2 ++#define VBATMONTXMON_1 0xa3 ++#define TBATHIGHP_1 0xa4 ++#define TBATHIGHN_1 0xa5 ++#define TBATLOW_1 0xa6 ++#define MAN_RES 0xb0 ++#define VBAT_RES_1 0xb1 ++#define VBATMIN_RES_1 0xb2 ++#define VBATMINTXON_RES 0xb3 ++#define ICHMAX_RES_1 0xb4 ++#define ICHMIN_RES_1 0xb5 ++#define ICHAVERAGE_RES_1 0xb6 ++#define VCHMAX_RES_1 0xb7 ++#define VCHMIN_RES_1 0xb8 ++#define TBAT_RES_1 0xb9 ++#define ADC_IN4_RES_1 0xba +diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig +index f929fcd..174ea2e 100644 +--- a/drivers/input/touchscreen/Kconfig ++++ b/drivers/input/touchscreen/Kconfig +@@ -126,6 +126,49 @@ config TOUCHSCREEN_HP600 + To compile this driver as a module, choose M here: the + module will be called hp680_ts_input. + ++config TOUCHSCREEN_WM97XX ++ tristate "Support for WM97xx AC97 touchscreen controllers" ++ depends AC97_BUS ++ ++choice ++ prompt "WM97xx codec type" ++ depends TOUCHSCREEN_WM97XX ++ ++config TOUCHSCREEN_WM9705 ++ bool "WM9705 Touchscreen interface support" ++ depends on TOUCHSCREEN_WM97XX ++ help ++ Say Y here if you have the wm9705 touchscreen. ++ ++ If unsure, say N. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called wm9705. ++ ++config TOUCHSCREEN_WM9712 ++ bool "WM9712 Touchscreen interface support" ++ depends on TOUCHSCREEN_WM97XX ++ help ++ Say Y here if you have the wm9712 touchscreen. ++ ++ If unsure, say N. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called wm9712. ++ ++config TOUCHSCREEN_WM9713 ++ bool "WM9713 Touchscreen interface support" ++ depends on TOUCHSCREEN_WM97XX ++ help ++ Say Y here if you have the wm9713 touchscreen. ++ ++ If unsure, say N. ++ ++ To compile this driver as a module, choose M here: the ++ module will be called wm9713. ++ ++endchoice ++ + config TOUCHSCREEN_PENMOUNT + tristate "Penmount serial touchscreen" + select SERIO +diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile +index 5de8933..3a059b1 100644 +--- a/drivers/input/touchscreen/Makefile ++++ b/drivers/input/touchscreen/Makefile +@@ -3,6 +3,7 @@ + # + + # Each configuration option enables a list of files. ++wm97xx-ts-objs := wm97xx-core.o + + obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o + obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o +@@ -18,3 +19,16 @@ obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o + obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o + obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o + obj-$(CONFIG_TOUCHSCREEN_UCB1400) += ucb1400_ts.o ++obj-$(CONFIG_TOUCHSCREEN_WM97XX) += wm97xx-ts.o ++ ++ifeq ($(CONFIG_TOUCHSCREEN_WM9713),y) ++wm97xx-ts-objs += wm9713.o ++endif ++ ++ifeq ($(CONFIG_TOUCHSCREEN_WM9712),y) ++wm97xx-ts-objs += wm9712.o ++endif ++ ++ifeq ($(CONFIG_TOUCHSCREEN_WM9705),y) ++wm97xx-ts-objs += wm9705.o ++endif +diff --git a/drivers/input/touchscreen/wm9705.c b/drivers/input/touchscreen/wm9705.c +new file mode 100644 +index 0000000..1dae63d +--- /dev/null ++++ b/drivers/input/touchscreen/wm9705.c +@@ -0,0 +1,360 @@ ++/* ++ * wm9705.c -- Codec driver for Wolfson WM9705 AC97 Codec. ++ * ++ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. ++ * Author: Liam Girdwood ++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com ++ * Parts Copyright : Ian Molton ++ * Andrew Zabolotny ++ * Russell King ++ * ++ * This program 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. ++ * ++ * Revision history ++ * 6th Sep 2006 Mike Arthur ++ * Added pre and post sample calls. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define TS_NAME "wm97xx" ++#define WM9705_VERSION "0.62" ++#define DEFAULT_PRESSURE 0xb0c0 ++ ++/* ++ * Debug ++ */ ++#if 0 ++#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) ++#else ++#define dbg(format, arg...) ++#endif ++#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) ++#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) ++#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) ++ ++/* ++ * Module parameters ++ */ ++ ++/* ++ * Set current used for pressure measurement. ++ * ++ * Set pil = 2 to use 400uA ++ * pil = 1 to use 200uA and ++ * pil = 0 to disable pressure measurement. ++ * ++ * This is used to increase the range of values returned by the adc ++ * when measureing touchpanel pressure. ++ */ ++static int pil = 0; ++module_param(pil, int, 0); ++MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); ++ ++/* ++ * Set threshold for pressure measurement. ++ * ++ * Pen down pressure below threshold is ignored. ++ */ ++static int pressure = DEFAULT_PRESSURE & 0xfff; ++module_param(pressure, int, 0); ++MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); ++ ++/* ++ * Set adc sample delay. ++ * ++ * For accurate touchpanel measurements, some settling time may be ++ * required between the switch matrix applying a voltage across the ++ * touchpanel plate and the ADC sampling the signal. ++ * ++ * This delay can be set by setting delay = n, where n is the array ++ * position of the delay in the array delay_table below. ++ * Long delays > 1ms are supported for completeness, but are not ++ * recommended. ++ */ ++static int delay = 4; ++module_param(delay, int, 0); ++MODULE_PARM_DESC(delay, "Set adc sample delay."); ++ ++/* ++ * Pen detect comparator threshold. ++ * ++ * 0 to Vmid in 15 steps, 0 = use zero power comparator with Vmid threshold ++ * i.e. 1 = Vmid/15 threshold ++ * 15 = Vmid/1 threshold ++ * ++ * Adjust this value if you are having problems with pen detect not ++ * detecting any down events. ++ */ ++static int pdd = 8; ++module_param(pdd, int, 0); ++MODULE_PARM_DESC(pdd, "Set pen detect comparator threshold"); ++ ++/* ++ * Set adc mask function. ++ * ++ * Sources of glitch noise, such as signals driving an LCD display, may feed ++ * through to the touch screen plates and affect measurement accuracy. In ++ * order to minimise this, a signal may be applied to the MASK pin to delay or ++ * synchronise the sampling. ++ * ++ * 0 = No delay or sync ++ * 1 = High on pin stops conversions ++ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) ++ * 3 = Edge triggered, edge on pin starts conversion after delay param ++ */ ++static int mask = 0; ++module_param(mask, int, 0); ++MODULE_PARM_DESC(mask, "Set adc mask function."); ++ ++/* ++ * ADC sample delay times in uS ++ */ ++static const int delay_table[] = { ++ 21, // 1 AC97 Link frames ++ 42, // 2 ++ 84, // 4 ++ 167, // 8 ++ 333, // 16 ++ 667, // 32 ++ 1000, // 48 ++ 1333, // 64 ++ 2000, // 96 ++ 2667, // 128 ++ 3333, // 160 ++ 4000, // 192 ++ 4667, // 224 ++ 5333, // 256 ++ 6000, // 288 ++ 0 // No delay, switch matrix always on ++}; ++ ++/* ++ * Delay after issuing a POLL command. ++ * ++ * The delay is 3 AC97 link frames + the touchpanel settling delay ++ */ ++static inline void poll_delay(int d) ++{ ++ udelay (3 * AC97_LINK_FRAME + delay_table [d]); ++} ++ ++/* ++ * set up the physical settings of the WM9705 ++ */ ++static void init_wm9705_phy(struct wm97xx* wm) ++{ ++ u16 dig1 = 0, dig2 = WM97XX_RPR; ++ ++ /* ++ * mute VIDEO and AUX as they share X and Y touchscreen ++ * inputs on the WM9705 ++ */ ++ wm97xx_reg_write(wm, AC97_AUX, 0x8000); ++ wm97xx_reg_write(wm, AC97_VIDEO, 0x8000); ++ ++ /* touchpanel pressure current*/ ++ if (pil == 2) { ++ dig2 |= WM9705_PIL; ++ dbg("setting pressure measurement current to 400uA."); ++ } else if (pil) ++ dbg("setting pressure measurement current to 200uA."); ++ if(!pil) ++ pressure = 0; ++ ++ /* polling mode sample settling delay */ ++ if (delay!=4) { ++ if (delay < 0 || delay > 15) { ++ dbg("supplied delay out of range."); ++ delay = 4; ++ } ++ } ++ dig1 &= 0xff0f; ++ dig1 |= WM97XX_DELAY(delay); ++ dbg("setting adc sample delay to %d u Secs.", delay_table[delay]); ++ ++ /* WM9705 pdd */ ++ dig2 |= (pdd & 0x000f); ++ dbg("setting pdd to Vmid/%d", 1 - (pdd & 0x000f)); ++ ++ /* mask */ ++ dig2 |= ((mask & 0x3) << 4); ++ ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); ++} ++ ++static int wm9705_digitiser_ioctl(struct wm97xx* wm, int cmd) ++{ ++ switch(cmd) { ++ case WM97XX_DIG_START: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig[2] | WM97XX_PRP_DET_DIG); ++ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ ++ break; ++ case WM97XX_DIG_STOP: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig[2] & ~WM97XX_PRP_DET_DIG); ++ break; ++ case WM97XX_AUX_PREPARE: ++ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 0); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, WM97XX_PRP_DET_DIG); ++ break; ++ case WM97XX_DIG_RESTORE: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, wm->dig_save[1]); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig_save[2]); ++ break; ++ case WM97XX_PHY_INIT: ++ init_wm9705_phy(wm); ++ break; ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static inline int is_pden (struct wm97xx* wm) ++{ ++ return wm->dig[2] & WM9705_PDEN; ++} ++ ++/* ++ * Read a sample from the WM9705 adc in polling mode. ++ */ ++static int wm9705_poll_sample (struct wm97xx* wm, int adcsel, int *sample) ++{ ++ int timeout = 5 * delay; ++ ++ if (!wm->pen_probably_down) { ++ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (!(data & WM97XX_PEN_DOWN)) ++ return RC_PENUP; ++ wm->pen_probably_down = 1; ++ } ++ ++ /* set up digitiser */ ++ if (adcsel & 0x8000) ++ adcsel = ((adcsel & 0x7fff) + 3) << 12; ++ ++ if (wm->mach_ops && wm->mach_ops->pre_sample) ++ wm->mach_ops->pre_sample(adcsel); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay)); ++ ++ /* wait 3 AC97 time slots + delay for conversion */ ++ poll_delay (delay); ++ ++ /* wait for POLL to go low */ ++ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { ++ udelay(AC97_LINK_FRAME); ++ timeout--; ++ } ++ ++ if (timeout <= 0) { ++ /* If PDEN is set, we can get a timeout when pen goes up */ ++ if (is_pden(wm)) ++ wm->pen_probably_down = 0; ++ else ++ dbg ("adc sample timeout"); ++ return RC_PENUP; ++ } ++ ++ *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (wm->mach_ops && wm->mach_ops->post_sample) ++ wm->mach_ops->post_sample(adcsel); ++ ++ /* check we have correct sample */ ++ if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) { ++ dbg ("adc wrong sample, read %x got %x", adcsel, ++ *sample & WM97XX_ADCSEL_MASK); ++ return RC_PENUP; ++ } ++ ++ if (!(*sample & WM97XX_PEN_DOWN)) { ++ wm->pen_probably_down = 0; ++ return RC_PENUP; ++ } ++ ++ return RC_VALID; ++} ++ ++/* ++ * Sample the WM9705 touchscreen in polling mode ++ */ ++static int wm9705_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) ++{ ++ int rc; ++ ++ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID) ++ return rc; ++ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID) ++ return rc; ++ if (pil) { ++ if ((rc = wm9705_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID) ++ return rc; ++ } else ++ data->p = DEFAULT_PRESSURE; ++ ++ return RC_VALID; ++} ++ ++/* ++ * Enable WM9705 continuous mode, i.e. touch data is streamed across an AC97 slot ++ */ ++static int wm9705_acc_enable (struct wm97xx* wm, int enable) ++{ ++ u16 dig1, dig2; ++ int ret = 0; ++ ++ dig1 = wm->dig[1]; ++ dig2 = wm->dig[2]; ++ ++ if (enable) { ++ /* continous mode */ ++ if (wm->mach_ops->acc_startup && (ret = wm->mach_ops->acc_startup(wm)) < 0) ++ return ret; ++ dig1 &= ~(WM97XX_CM_RATE_MASK | WM97XX_ADCSEL_MASK | ++ WM97XX_DELAY_MASK | WM97XX_SLT_MASK); ++ dig1 |= WM97XX_CTC | WM97XX_COO | WM97XX_SLEN | ++ WM97XX_DELAY (delay) | ++ WM97XX_SLT (wm->acc_slot) | ++ WM97XX_RATE (wm->acc_rate); ++ if (pil) ++ dig1 |= WM97XX_ADCSEL_PRES; ++ dig2 |= WM9705_PDEN; ++ } else { ++ dig1 &= ~(WM97XX_CTC | WM97XX_COO | WM97XX_SLEN); ++ dig2 &= ~WM9705_PDEN; ++ if (wm->mach_ops->acc_shutdown) ++ wm->mach_ops->acc_shutdown(wm); ++ } ++ ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); ++ return ret; ++} ++ ++struct wm97xx_codec_drv wm97xx_codec = { ++ .id = WM9705_ID2, ++ .name = "wm9705", ++ .poll_sample = wm9705_poll_sample, ++ .poll_touch = wm9705_poll_touch, ++ .acc_enable = wm9705_acc_enable, ++ .digitiser_ioctl = wm9705_digitiser_ioctl, ++}; ++ ++EXPORT_SYMBOL_GPL(wm97xx_codec); ++ ++/* Module information */ ++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); ++MODULE_DESCRIPTION("WM9705 Touch Screen Driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/input/touchscreen/wm9712.c b/drivers/input/touchscreen/wm9712.c +new file mode 100644 +index 0000000..99433e9 +--- /dev/null ++++ b/drivers/input/touchscreen/wm9712.c +@@ -0,0 +1,464 @@ ++/* ++ * wm9712.c -- Codec driver for Wolfson WM9712 AC97 Codecs. ++ * ++ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. ++ * Author: Liam Girdwood ++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com ++ * Parts Copyright : Ian Molton ++ * Andrew Zabolotny ++ * Russell King ++ * ++ * This program 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. ++ * ++ * Revision history ++ * 4th Jul 2005 Initial version. ++ * 6th Sep 2006 Mike Arthur ++ * Added pre and post sample calls. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define TS_NAME "wm97xx" ++#define WM9712_VERSION "0.61" ++#define DEFAULT_PRESSURE 0xb0c0 ++ ++/* ++ * Debug ++ */ ++#if 0 ++#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) ++#else ++#define dbg(format, arg...) ++#endif ++#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) ++#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) ++#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) ++ ++/* ++ * Module parameters ++ */ ++ ++/* ++ * Set internal pull up for pen detect. ++ * ++ * Pull up is in the range 1.02k (least sensitive) to 64k (most sensitive) ++ * i.e. pull up resistance = 64k Ohms / rpu. ++ * ++ * Adjust this value if you are having problems with pen detect not ++ * detecting any down event. ++ */ ++static int rpu = 8; ++module_param(rpu, int, 0); ++MODULE_PARM_DESC(rpu, "Set internal pull up resitor for pen detect."); ++ ++/* ++ * Set current used for pressure measurement. ++ * ++ * Set pil = 2 to use 400uA ++ * pil = 1 to use 200uA and ++ * pil = 0 to disable pressure measurement. ++ * ++ * This is used to increase the range of values returned by the adc ++ * when measureing touchpanel pressure. ++ */ ++static int pil = 0; ++module_param(pil, int, 0); ++MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); ++ ++/* ++ * Set threshold for pressure measurement. ++ * ++ * Pen down pressure below threshold is ignored. ++ */ ++static int pressure = DEFAULT_PRESSURE & 0xfff; ++module_param(pressure, int, 0); ++MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); ++ ++/* ++ * Set adc sample delay. ++ * ++ * For accurate touchpanel measurements, some settling time may be ++ * required between the switch matrix applying a voltage across the ++ * touchpanel plate and the ADC sampling the signal. ++ * ++ * This delay can be set by setting delay = n, where n is the array ++ * position of the delay in the array delay_table below. ++ * Long delays > 1ms are supported for completeness, but are not ++ * recommended. ++ */ ++static int delay = 3; ++module_param(delay, int, 0); ++MODULE_PARM_DESC(delay, "Set adc sample delay."); ++ ++/* ++ * Set five_wire = 1 to use a 5 wire touchscreen. ++ * ++ * NOTE: Five wire mode does not allow for readback of pressure. ++ */ ++static int five_wire; ++module_param(five_wire, int, 0); ++MODULE_PARM_DESC(five_wire, "Set to '1' to use 5-wire touchscreen."); ++ ++/* ++ * Set adc mask function. ++ * ++ * Sources of glitch noise, such as signals driving an LCD display, may feed ++ * through to the touch screen plates and affect measurement accuracy. In ++ * order to minimise this, a signal may be applied to the MASK pin to delay or ++ * synchronise the sampling. ++ * ++ * 0 = No delay or sync ++ * 1 = High on pin stops conversions ++ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) ++ * 3 = Edge triggered, edge on pin starts conversion after delay param ++ */ ++static int mask = 0; ++module_param(mask, int, 0); ++MODULE_PARM_DESC(mask, "Set adc mask function."); ++ ++/* ++ * Coordinate Polling Enable. ++ * ++ * Set to 1 to enable coordinate polling. e.g. x,y[,p] is sampled together ++ * for every poll. ++ */ ++static int coord = 0; ++module_param(coord, int, 0); ++MODULE_PARM_DESC(coord, "Polling coordinate mode"); ++ ++/* ++ * ADC sample delay times in uS ++ */ ++static const int delay_table[] = { ++ 21, // 1 AC97 Link frames ++ 42, // 2 ++ 84, // 4 ++ 167, // 8 ++ 333, // 16 ++ 667, // 32 ++ 1000, // 48 ++ 1333, // 64 ++ 2000, // 96 ++ 2667, // 128 ++ 3333, // 160 ++ 4000, // 192 ++ 4667, // 224 ++ 5333, // 256 ++ 6000, // 288 ++ 0 // No delay, switch matrix always on ++}; ++ ++/* ++ * Delay after issuing a POLL command. ++ * ++ * The delay is 3 AC97 link frames + the touchpanel settling delay ++ */ ++static inline void poll_delay(int d) ++{ ++ udelay (3 * AC97_LINK_FRAME + delay_table [d]); ++} ++ ++/* ++ * set up the physical settings of the WM9712 ++ */ ++static void init_wm9712_phy(struct wm97xx* wm) ++{ ++ u16 dig1 = 0; ++ u16 dig2 = WM97XX_RPR | WM9712_RPU(1); ++ ++ /* WM9712 rpu */ ++ if (rpu) { ++ dig2 &= 0xffc0; ++ dig2 |= WM9712_RPU(rpu); ++ dbg("setting pen detect pull-up to %d Ohms",64000 / rpu); ++ } ++ ++ /* touchpanel pressure current*/ ++ if (pil == 2) { ++ dig2 |= WM9712_PIL; ++ dbg("setting pressure measurement current to 400uA."); ++ } else if (pil) ++ dbg("setting pressure measurement current to 200uA."); ++ if(!pil) ++ pressure = 0; ++ ++ /* WM9712 five wire */ ++ if (five_wire) { ++ dig2 |= WM9712_45W; ++ dbg("setting 5-wire touchscreen mode."); ++ } ++ ++ /* polling mode sample settling delay */ ++ if (delay < 0 || delay > 15) { ++ dbg("supplied delay out of range."); ++ delay = 4; ++ } ++ dig1 &= 0xff0f; ++ dig1 |= WM97XX_DELAY(delay); ++ dbg("setting adc sample delay to %d u Secs.", delay_table[delay]); ++ ++ /* mask */ ++ dig2 |= ((mask & 0x3) << 6); ++ if (mask) { ++ u16 reg; ++ /* Set GPIO4 as Mask Pin*/ ++ reg = wm97xx_reg_read(wm, AC97_MISC_AFE); ++ wm97xx_reg_write(wm, AC97_MISC_AFE, reg | WM97XX_GPIO_4); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_CFG); ++ wm97xx_reg_write(wm, AC97_GPIO_CFG, reg | WM97XX_GPIO_4); ++ } ++ ++ /* wait - coord mode */ ++ if(coord) ++ dig2 |= WM9712_WAIT; ++ ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); ++} ++ ++static int wm9712_digitiser_ioctl(struct wm97xx* wm, int cmd) ++{ ++ u16 dig2 = wm->dig[2]; ++ ++ switch(cmd) { ++ case WM97XX_DIG_START: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2 | WM97XX_PRP_DET_DIG); ++ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ ++ break; ++ case WM97XX_DIG_STOP: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2 & ~WM97XX_PRP_DET_DIG); ++ break; ++ case WM97XX_AUX_PREPARE: ++ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, 0); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, WM97XX_PRP_DET_DIG); ++ break; ++ case WM97XX_DIG_RESTORE: ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, wm->dig_save[1]); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, wm->dig_save[2]); ++ break; ++ case WM97XX_PHY_INIT: ++ init_wm9712_phy(wm); ++ break; ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static inline int is_pden (struct wm97xx* wm) ++{ ++ return wm->dig[2] & WM9712_PDEN; ++} ++ ++/* ++ * Read a sample from the WM9712 adc in polling mode. ++ */ ++static int wm9712_poll_sample (struct wm97xx* wm, int adcsel, int *sample) ++{ ++ int timeout = 5 * delay; ++ ++ if (!wm->pen_probably_down) { ++ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (!(data & WM97XX_PEN_DOWN)) ++ return RC_PENUP; ++ wm->pen_probably_down = 1; ++ } ++ ++ /* set up digitiser */ ++ if (adcsel & 0x8000) ++ adcsel = ((adcsel & 0x7fff) + 3) << 12; ++ ++ if (wm->mach_ops && wm->mach_ops->pre_sample) ++ wm->mach_ops->pre_sample(adcsel); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, adcsel | WM97XX_POLL | WM97XX_DELAY(delay)); ++ ++ /* wait 3 AC97 time slots + delay for conversion */ ++ poll_delay (delay); ++ ++ /* wait for POLL to go low */ ++ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { ++ udelay(AC97_LINK_FRAME); ++ timeout--; ++ } ++ ++ if (timeout <= 0) { ++ /* If PDEN is set, we can get a timeout when pen goes up */ ++ if (is_pden(wm)) ++ wm->pen_probably_down = 0; ++ else ++ dbg ("adc sample timeout"); ++ return RC_PENUP; ++ } ++ ++ *sample = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (wm->mach_ops && wm->mach_ops->post_sample) ++ wm->mach_ops->post_sample(adcsel); ++ ++ /* check we have correct sample */ ++ if ((*sample & WM97XX_ADCSEL_MASK) != adcsel) { ++ dbg ("adc wrong sample, read %x got %x", adcsel, ++ *sample & WM97XX_ADCSEL_MASK); ++ return RC_PENUP; ++ } ++ ++ if (!(*sample & WM97XX_PEN_DOWN)) { ++ wm->pen_probably_down = 0; ++ return RC_PENUP; ++ } ++ ++ return RC_VALID; ++} ++ ++/* ++ * Read a coord from the WM9712 adc in polling mode. ++ */ ++static int wm9712_poll_coord (struct wm97xx* wm, struct wm97xx_data *data) ++{ ++ int timeout = 5 * delay; ++ ++ if (!wm->pen_probably_down) { ++ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (!(data & WM97XX_PEN_DOWN)) ++ return RC_PENUP; ++ wm->pen_probably_down = 1; ++ } ++ ++ /* set up digitiser */ ++ if (wm->mach_ops && wm->mach_ops->pre_sample) ++ wm->mach_ops->pre_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); ++ ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, ++ WM97XX_COO | WM97XX_POLL | WM97XX_DELAY(delay)); ++ ++ /* wait 3 AC97 time slots + delay for conversion and read x */ ++ poll_delay(delay); ++ data->x = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ /* wait for POLL to go low */ ++ while ((wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER1) & WM97XX_POLL) && timeout) { ++ udelay(AC97_LINK_FRAME); ++ timeout--; ++ } ++ ++ if (timeout <= 0) { ++ /* If PDEN is set, we can get a timeout when pen goes up */ ++ if (is_pden(wm)) ++ wm->pen_probably_down = 0; ++ else ++ dbg ("adc sample timeout"); ++ return RC_PENUP; ++ } ++ ++ /* read back y data */ ++ data->y = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (pil) ++ data->p = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ else ++ data->p = DEFAULT_PRESSURE; ++ ++ if (wm->mach_ops && wm->mach_ops->post_sample) ++ wm->mach_ops->post_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); ++ ++ /* check we have correct sample */ ++ if (!(data->x & WM97XX_ADCSEL_X) || !(data->y & WM97XX_ADCSEL_Y)) ++ goto err; ++ if(pil && !(data->p & WM97XX_ADCSEL_PRES)) ++ goto err; ++ ++ if (!(data->x & WM97XX_PEN_DOWN)) { ++ wm->pen_probably_down = 0; ++ return RC_PENUP; ++ } ++ return RC_VALID; ++err: ++ return RC_PENUP; ++} ++ ++/* ++ * Sample the WM9712 touchscreen in polling mode ++ */ ++static int wm9712_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) ++{ ++ int rc; ++ ++ if(coord) { ++ if((rc = wm9712_poll_coord(wm, data)) != RC_VALID) ++ return rc; ++ } else { ++ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_X, &data->x)) != RC_VALID) ++ return rc; ++ ++ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_Y, &data->y)) != RC_VALID) ++ return rc; ++ ++ if (pil && !five_wire) { ++ if ((rc = wm9712_poll_sample(wm, WM97XX_ADCSEL_PRES, &data->p)) != RC_VALID) ++ return rc; ++ } else ++ data->p = DEFAULT_PRESSURE; ++ } ++ return RC_VALID; ++} ++ ++/* ++ * Enable WM9712 continuous mode, i.e. touch data is streamed across an AC97 slot ++ */ ++static int wm9712_acc_enable (struct wm97xx* wm, int enable) ++{ ++ u16 dig1, dig2; ++ int ret = 0; ++ ++ dig1 = wm->dig[1]; ++ dig2 = wm->dig[2]; ++ ++ if (enable) { ++ /* continous mode */ ++ if (wm->mach_ops->acc_startup && (ret = wm->mach_ops->acc_startup(wm)) < 0) ++ return ret; ++ dig1 &= ~(WM97XX_CM_RATE_MASK | WM97XX_ADCSEL_MASK | ++ WM97XX_DELAY_MASK | WM97XX_SLT_MASK); ++ dig1 |= WM97XX_CTC | WM97XX_COO | WM97XX_SLEN | ++ WM97XX_DELAY (delay) | ++ WM97XX_SLT (wm->acc_slot) | ++ WM97XX_RATE (wm->acc_rate); ++ if (pil) ++ dig1 |= WM97XX_ADCSEL_PRES; ++ dig2 |= WM9712_PDEN; ++ } else { ++ dig1 &= ~(WM97XX_CTC | WM97XX_COO | WM97XX_SLEN); ++ dig2 &= ~WM9712_PDEN; ++ if (wm->mach_ops->acc_shutdown) ++ wm->mach_ops->acc_shutdown(wm); ++ } ++ ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER1, dig1); ++ wm97xx_reg_write(wm, AC97_WM97XX_DIGITISER2, dig2); ++ return 0; ++} ++ ++struct wm97xx_codec_drv wm97xx_codec = { ++ .id = WM9712_ID2, ++ .name = "wm9712", ++ .poll_sample = wm9712_poll_sample, ++ .poll_touch = wm9712_poll_touch, ++ .acc_enable = wm9712_acc_enable, ++ .digitiser_ioctl = wm9712_digitiser_ioctl, ++}; ++ ++EXPORT_SYMBOL_GPL(wm97xx_codec); ++ ++/* Module information */ ++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); ++MODULE_DESCRIPTION("WM9712 Touch Screen Driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/input/touchscreen/wm9713.c b/drivers/input/touchscreen/wm9713.c +new file mode 100644 +index 0000000..42f5f30 +--- /dev/null ++++ b/drivers/input/touchscreen/wm9713.c +@@ -0,0 +1,461 @@ ++/* ++ * wm9713.c -- Codec touch driver for Wolfson WM9713 AC97 Codec. ++ * ++ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. ++ * Author: Liam Girdwood ++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com ++ * Parts Copyright : Ian Molton ++ * Andrew Zabolotny ++ * Russell King ++ * ++ * This program 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. ++ * ++ * Revision history ++ * 6th Sep 2006 Mike Arthur ++ * Added pre and post sample calls. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define TS_NAME "wm97xx" ++#define WM9713_VERSION "0.53" ++#define DEFAULT_PRESSURE 0xb0c0 ++ ++/* ++ * Debug ++ */ ++#if 0 ++#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) ++#else ++#define dbg(format, arg...) ++#endif ++#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) ++#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) ++#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) ++ ++/* ++ * Module parameters ++ */ ++ ++/* ++ * Set internal pull up for pen detect. ++ * ++ * Pull up is in the range 1.02k (least sensitive) to 64k (most sensitive) ++ * i.e. pull up resistance = 64k Ohms / rpu. ++ * ++ * Adjust this value if you are having problems with pen detect not ++ * detecting any down event. ++ */ ++static int rpu = 8; ++module_param(rpu, int, 0); ++MODULE_PARM_DESC(rpu, "Set internal pull up resitor for pen detect."); ++ ++/* ++ * Set current used for pressure measurement. ++ * ++ * Set pil = 2 to use 400uA ++ * pil = 1 to use 200uA and ++ * pil = 0 to disable pressure measurement. ++ * ++ * This is used to increase the range of values returned by the adc ++ * when measureing touchpanel pressure. ++ */ ++static int pil = 0; ++module_param(pil, int, 0); ++MODULE_PARM_DESC(pil, "Set current used for pressure measurement."); ++ ++/* ++ * Set threshold for pressure measurement. ++ * ++ * Pen down pressure below threshold is ignored. ++ */ ++static int pressure = DEFAULT_PRESSURE & 0xfff; ++module_param(pressure, int, 0); ++MODULE_PARM_DESC(pressure, "Set threshold for pressure measurement."); ++ ++/* ++ * Set adc sample delay. ++ * ++ * For accurate touchpanel measurements, some settling time may be ++ * required between the switch matrix applying a voltage across the ++ * touchpanel plate and the ADC sampling the signal. ++ * ++ * This delay can be set by setting delay = n, where n is the array ++ * position of the delay in the array delay_table below. ++ * Long delays > 1ms are supported for completeness, but are not ++ * recommended. ++ */ ++static int delay = 4; ++module_param(delay, int, 0); ++MODULE_PARM_DESC(delay, "Set adc sample delay."); ++ ++/* ++ * Set adc mask function. ++ * ++ * Sources of glitch noise, such as signals driving an LCD display, may feed ++ * through to the touch screen plates and affect measurement accuracy. In ++ * order to minimise this, a signal may be applied to the MASK pin to delay or ++ * synchronise the sampling. ++ * ++ * 0 = No delay or sync ++ * 1 = High on pin stops conversions ++ * 2 = Edge triggered, edge on pin delays conversion by delay param (above) ++ * 3 = Edge triggered, edge on pin starts conversion after delay param ++ */ ++static int mask = 0; ++module_param(mask, int, 0); ++MODULE_PARM_DESC(mask, "Set adc mask function."); ++ ++/* ++ * Coordinate Polling Enable. ++ * ++ * Set to 1 to enable coordinate polling. e.g. x,y[,p] is sampled together ++ * for every poll. ++ */ ++static int coord = 0; ++module_param(coord, int, 0); ++MODULE_PARM_DESC(coord, "Polling coordinate mode"); ++ ++/* ++ * ADC sample delay times in uS ++ */ ++static const int delay_table[] = { ++ 21, // 1 AC97 Link frames ++ 42, // 2 ++ 84, // 4 ++ 167, // 8 ++ 333, // 16 ++ 667, // 32 ++ 1000, // 48 ++ 1333, // 64 ++ 2000, // 96 ++ 2667, // 128 ++ 3333, // 160 ++ 4000, // 192 ++ 4667, // 224 ++ 5333, // 256 ++ 6000, // 288 ++ 0 // No delay, switch matrix always on ++}; ++ ++/* ++ * Delay after issuing a POLL command. ++ * ++ * The delay is 3 AC97 link frames + the touchpanel settling delay ++ */ ++static inline void poll_delay(int d) ++{ ++ udelay (3 * AC97_LINK_FRAME + delay_table [d]); ++} ++ ++/* ++ * set up the physical settings of the WM9713 ++ */ ++static void init_wm9713_phy(struct wm97xx* wm) ++{ ++ u16 dig1 = 0, dig2, dig3; ++ ++ /* default values */ ++ dig2 = WM97XX_DELAY(4) | WM97XX_SLT(5); ++ dig3= WM9712_RPU(1); ++ ++ /* rpu */ ++ if (rpu) { ++ dig3 &= 0xffc0; ++ dig3 |= WM9712_RPU(rpu); ++ info("setting pen detect pull-up to %d Ohms",64000 / rpu); ++ } ++ ++ /* touchpanel pressure */ ++ if (pil == 2) { ++ dig3 |= WM9712_PIL; ++ info("setting pressure measurement current to 400uA."); ++ } else if (pil) ++ info ("setting pressure measurement current to 200uA."); ++ if(!pil) ++ pressure = 0; ++ ++ /* sample settling delay */ ++ if (delay < 0 || delay > 15) { ++ info ("supplied delay out of range."); ++ delay = 4; ++ info("setting adc sample delay to %d u Secs.", delay_table[delay]); ++ } ++ dig2 &= 0xff0f; ++ dig2 |= WM97XX_DELAY(delay); ++ ++ /* mask */ ++ dig3 |= ((mask & 0x3) << 4); ++ if(coord) ++ dig3 |= WM9713_WAIT; ++ ++ wm->misc = wm97xx_reg_read(wm, 0x5a); ++ ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG2, dig2); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, dig3); ++ wm97xx_reg_write(wm, AC97_GPIO_STICKY, 0x0); ++} ++ ++static int wm9713_digitiser_ioctl(struct wm97xx* wm, int cmd) ++{ ++ u16 val = 0; ++ ++ switch(cmd){ ++ case WM97XX_DIG_START: ++ val = wm97xx_reg_read(wm, AC97_EXTENDED_MID); ++ wm97xx_reg_write(wm, AC97_EXTENDED_MID, val & 0x7fff); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2] | WM97XX_PRP_DET_DIG); ++ wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); /* dummy read */ ++ break; ++ case WM97XX_DIG_STOP: ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2] & ~WM97XX_PRP_DET_DIG); ++ val = wm97xx_reg_read(wm, AC97_EXTENDED_MID); ++ wm97xx_reg_write(wm, AC97_EXTENDED_MID, val | 0x8000); ++ break; ++ case WM97XX_AUX_PREPARE: ++ memcpy(wm->dig_save, wm->dig, sizeof(wm->dig)); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, 0); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG2, 0); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, WM97XX_PRP_DET_DIG); ++ break; ++ case WM97XX_DIG_RESTORE: ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, wm->dig_save[0]); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG2, wm->dig_save[1]); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig_save[2]); ++ break; ++ case WM97XX_PHY_INIT: ++ init_wm9713_phy(wm); ++ break; ++ default: ++ return -EINVAL; ++ } ++ return 0; ++} ++ ++static inline int is_pden (struct wm97xx* wm) ++{ ++ return wm->dig[2] & WM9713_PDEN; ++} ++ ++/* ++ * Read a sample from the WM9713 adc in polling mode. ++ */ ++static int wm9713_poll_sample (struct wm97xx* wm, int adcsel, int *sample) ++{ ++ u16 dig1; ++ int timeout = 5 * delay; ++ ++ if (!wm->pen_probably_down) { ++ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (!(data & WM97XX_PEN_DOWN)) ++ return RC_PENUP; ++ wm->pen_probably_down = 1; ++ } ++ ++ /* set up digitiser */ ++ if (adcsel & 0x8000) ++ adcsel = 1 << ((adcsel & 0x7fff) + 3); ++ ++ dig1 = wm97xx_reg_read(wm, AC97_WM9713_DIG1); ++ dig1 &= ~WM9713_ADCSEL_MASK; ++ ++ if (wm->mach_ops && wm->mach_ops->pre_sample) ++ wm->mach_ops->pre_sample(adcsel); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1 | adcsel |WM9713_POLL); ++ ++ /* wait 3 AC97 time slots + delay for conversion */ ++ poll_delay(delay); ++ ++ /* wait for POLL to go low */ ++ while ((wm97xx_reg_read(wm, AC97_WM9713_DIG1) & WM9713_POLL) && timeout) { ++ udelay(AC97_LINK_FRAME); ++ timeout--; ++ } ++ ++ if (timeout <= 0) { ++ /* If PDEN is set, we can get a timeout when pen goes up */ ++ if (is_pden(wm)) ++ wm->pen_probably_down = 0; ++ else ++ dbg ("adc sample timeout"); ++ return RC_PENUP; ++ } ++ ++ *sample =wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (wm->mach_ops && wm->mach_ops->post_sample) ++ wm->mach_ops->post_sample(adcsel); ++ ++ /* check we have correct sample */ ++ if ((*sample & WM97XX_ADCSRC_MASK) != ffs(adcsel >> 1) << 12) { ++ dbg ("adc wrong sample, read %x got %x", adcsel, ++ *sample & WM97XX_ADCSRC_MASK); ++ return RC_PENUP; ++ } ++ ++ if (!(*sample & WM97XX_PEN_DOWN)) { ++ wm->pen_probably_down = 0; ++ return RC_PENUP; ++ } ++ ++ return RC_VALID; ++} ++ ++/* ++ * Read a coordinate from the WM9713 adc in polling mode. ++ */ ++static int wm9713_poll_coord (struct wm97xx* wm, struct wm97xx_data *data) ++{ ++ u16 dig1; ++ int timeout = 5 * delay; ++ ++ if (!wm->pen_probably_down) { ++ u16 data = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (!(data & WM97XX_PEN_DOWN)) ++ return RC_PENUP; ++ wm->pen_probably_down = 1; ++ } ++ ++ /* set up digitiser */ ++ dig1 = wm97xx_reg_read(wm, AC97_WM9713_DIG1); ++ dig1 &= ~WM9713_ADCSEL_MASK; ++ if(pil) ++ dig1 |= WM97XX_ADCSEL_PRES; ++ ++ if (wm->mach_ops && wm->mach_ops->pre_sample) ++ wm->mach_ops->pre_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1 | WM9713_POLL | WM9713_COO); ++ ++ /* wait 3 AC97 time slots + delay for conversion */ ++ poll_delay(delay); ++ data->x = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ /* wait for POLL to go low */ ++ while ((wm97xx_reg_read(wm, AC97_WM9713_DIG1) & WM9713_POLL) && timeout) { ++ udelay(AC97_LINK_FRAME); ++ timeout--; ++ } ++ ++ if (timeout <= 0) { ++ /* If PDEN is set, we can get a timeout when pen goes up */ ++ if (is_pden(wm)) ++ wm->pen_probably_down = 0; ++ else ++ dbg ("adc sample timeout"); ++ return RC_PENUP; ++ } ++ ++ /* read back data */ ++ data->y = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ if (pil) ++ data->p = wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD); ++ else ++ data->p = DEFAULT_PRESSURE; ++ ++ if (wm->mach_ops && wm->mach_ops->post_sample) ++ wm->mach_ops->post_sample(WM97XX_ADCSEL_X | WM97XX_ADCSEL_Y); ++ ++ /* check we have correct sample */ ++ if (!(data->x & WM97XX_ADCSEL_X) || !(data->y & WM97XX_ADCSEL_Y)) ++ goto err; ++ if(pil && !(data->p & WM97XX_ADCSEL_PRES)) ++ goto err; ++ ++ if (!(data->x & WM97XX_PEN_DOWN)) { ++ wm->pen_probably_down = 0; ++ return RC_PENUP; ++ } ++ return RC_VALID; ++err: ++ return RC_PENUP; ++} ++ ++/* ++ * Sample the WM9713 touchscreen in polling mode ++ */ ++static int wm9713_poll_touch(struct wm97xx* wm, struct wm97xx_data *data) ++{ ++ int rc; ++ ++ if(coord) { ++ if((rc = wm9713_poll_coord(wm, data)) != RC_VALID) ++ return rc; ++ } else { ++ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_X, &data->x)) != RC_VALID) ++ return rc; ++ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_Y, &data->y)) != RC_VALID) ++ return rc; ++ if (pil) { ++ if ((rc = wm9713_poll_sample(wm, WM9713_ADCSEL_PRES, &data->p)) != RC_VALID) ++ return rc; ++ } else ++ data->p = DEFAULT_PRESSURE; ++ } ++ return RC_VALID; ++} ++ ++/* ++ * Enable WM9713 continuous mode, i.e. touch data is streamed across an AC97 slot ++ */ ++static int wm9713_acc_enable (struct wm97xx* wm, int enable) ++{ ++ u16 dig1, dig2, dig3; ++ int ret = 0; ++ ++ dig1 = wm->dig[0]; ++ dig2 = wm->dig[1]; ++ dig3 = wm->dig[2]; ++ ++ if (enable) { ++ /* continous mode */ ++ if (wm->mach_ops->acc_startup && ++ (ret = wm->mach_ops->acc_startup(wm)) < 0) ++ return ret; ++ ++ dig1 &= ~WM9713_ADCSEL_MASK; ++ dig1 |= WM9713_CTC | WM9713_COO | WM9713_ADCSEL_X | WM9713_ADCSEL_Y; ++ if (pil) ++ dig1 |= WM9713_ADCSEL_PRES; ++ dig2 &= ~(WM97XX_DELAY_MASK | WM97XX_SLT_MASK | WM97XX_CM_RATE_MASK); ++ dig2 |= WM97XX_SLEN | WM97XX_DELAY (delay) | ++ WM97XX_SLT (wm->acc_slot) | WM97XX_RATE (wm->acc_rate); ++ dig3 |= WM9713_PDEN; ++ } else { ++ dig1 &= ~(WM9713_CTC | WM9713_COO); ++ dig2 &= ~WM97XX_SLEN; ++ dig3 &= ~WM9713_PDEN; ++ if (wm->mach_ops->acc_shutdown) ++ wm->mach_ops->acc_shutdown(wm); ++ } ++ ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, dig1); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG2, dig2); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, dig3); ++ return ret; ++} ++ ++struct wm97xx_codec_drv wm97xx_codec = { ++ .id = WM9713_ID2, ++ .name = "wm9713", ++ .poll_sample = wm9713_poll_sample, ++ .poll_touch = wm9713_poll_touch, ++ .acc_enable = wm9713_acc_enable, ++ .digitiser_ioctl = wm9713_digitiser_ioctl, ++}; ++ ++EXPORT_SYMBOL_GPL(wm97xx_codec); ++ ++/* Module information */ ++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); ++MODULE_DESCRIPTION("WM9713 Touch Screen Driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c +new file mode 100644 +index 0000000..87179d2 +--- /dev/null ++++ b/drivers/input/touchscreen/wm97xx-core.c +@@ -0,0 +1,859 @@ ++/* ++ * wm97xx-core.c -- Touch screen driver core for Wolfson WM9705, WM9712 ++ * and WM9713 AC97 Codecs. ++ * ++ * Copyright 2003, 2004, 2005, 2006 Wolfson Microelectronics PLC. ++ * Author: Liam Girdwood ++ * liam.girdwood@wolfsonmicro.com or linux@wolfsonmicro.com ++ * Parts Copyright : Ian Molton ++ * Andrew Zabolotny ++ * Russell King ++ * ++ * This program 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. ++ * ++ * Notes: ++ * ++ * Features: ++ * - supports WM9705, WM9712, WM9713 ++ * - polling mode ++ * - continuous mode (arch-dependent) ++ * - adjustable rpu/dpp settings ++ * - adjustable pressure current ++ * - adjustable sample settle delay ++ * - 4 and 5 wire touchscreens (5 wire is WM9712 only) ++ * - pen down detection ++ * - battery monitor ++ * - sample AUX adc's ++ * - power management ++ * - codec GPIO ++ * - codec event notification ++ * Todo ++ * - Support for async sampling control for noisy LCD's. ++ * ++ * Revision history ++ * 7th May 2003 Initial version. ++ * 6th June 2003 Added non module support and AC97 registration. ++ * 18th June 2003 Added AUX adc sampling. ++ * 23rd June 2003 Did some minimal reformatting, fixed a couple of ++ * codec_mutexing bugs and noted a race to fix. ++ * 24th June 2003 Added power management and fixed race condition. ++ * 10th July 2003 Changed to a misc device. ++ * 31st July 2003 Moved TS_EVENT and TS_CAL to wm97xx.h ++ * 8th Aug 2003 Added option for read() calling wm97xx_sample_touch() ++ * because some ac97_read/ac_97_write call schedule() ++ * 7th Nov 2003 Added Input touch event interface, stanley.cai@intel.com ++ * 13th Nov 2003 Removed h3600 touch interface, added interrupt based ++ * pen down notification and implemented continous mode ++ * on XScale arch. ++ * 16th Nov 2003 Ian Molton ++ * Modified so that it suits the new 2.6 driver model. ++ * 25th Jan 2004 Andrew Zabolotny ++ * Implemented IRQ-driven pen down detection, implemented ++ * the private API meant to be exposed to platform-specific ++ * drivers, reorganized the driver so that it supports ++ * an arbitrary number of devices. ++ * 1st Feb 2004 Moved continuous mode handling to a separate ++ * architecture-dependent file. For now only PXA ++ * built-in AC97 controller is supported (pxa-ac97-wm97xx.c). ++ * 11th Feb 2004 Reduced CPU usage by keeping a cached copy of both ++ * digitizer registers instead of reading them every time. ++ * A reorganization of the whole code for better ++ * error handling. ++ * 17th Apr 2004 Added BMON support. ++ * 17th Nov 2004 Added codec GPIO, codec event handling (real and virtual ++ * GPIOs) and 2.6 power management. ++ * 29th Nov 2004 Added WM9713 support. ++ * 4th Jul 2005 Moved codec specific code out to seperate files. ++ * 6th Sep 2006 Mike Arthur ++ * Added bus interface. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#define TS_NAME "wm97xx" ++#define WM_CORE_VERSION "0.64" ++#define DEFAULT_PRESSURE 0xb0c0 ++ ++ ++/* ++ * Touchscreen absolute values ++ * ++ * These parameters are used to help the input layer discard out of ++ * range readings and reduce jitter etc. ++ * ++ * o min, max:- indicate the min and max values your touch screen returns ++ * o fuzz:- use a higher number to reduce jitter ++ * ++ * The default values correspond to Mainstone II in QVGA mode ++ * ++ * Please read ++ * Documentation/input/input-programming.txt for more details. ++ */ ++ ++static int abs_x[3] = {350,3900,5}; ++module_param_array(abs_x, int, NULL, 0); ++MODULE_PARM_DESC(abs_x, "Touchscreen absolute X min, max, fuzz"); ++ ++static int abs_y[3] = {320,3750,40}; ++module_param_array(abs_y, int, NULL, 0); ++MODULE_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz"); ++ ++static int abs_p[3] = {0,150,4}; ++module_param_array(abs_p, int, NULL, 0); ++MODULE_PARM_DESC(abs_p, "Touchscreen absolute Pressure min, max, fuzz"); ++ ++/* ++ * Debug ++ */ ++#if 0 ++#define dbg(format, arg...) printk(KERN_DEBUG TS_NAME ": " format "\n" , ## arg) ++#else ++#define dbg(format, arg...) ++#endif ++#define err(format, arg...) printk(KERN_ERR TS_NAME ": " format "\n" , ## arg) ++#define info(format, arg...) printk(KERN_INFO TS_NAME ": " format "\n" , ## arg) ++#define warn(format, arg...) printk(KERN_WARNING TS_NAME ": " format "\n" , ## arg) ++ ++/* ++ * wm97xx IO access, all IO locking done by AC97 layer ++ */ ++int wm97xx_reg_read(struct wm97xx *wm, u16 reg) ++{ ++ if (wm->ac97) ++ return wm->ac97->bus->ops->read(wm->ac97, reg); ++ else ++ return -1; ++} ++EXPORT_SYMBOL_GPL(wm97xx_reg_read); ++ ++void wm97xx_reg_write(struct wm97xx *wm, u16 reg, u16 val) ++{ ++ /* cache digitiser registers */ ++ if(reg >= AC97_WM9713_DIG1 && reg <= AC97_WM9713_DIG3) ++ wm->dig[(reg - AC97_WM9713_DIG1) >> 1] = val; ++ ++ /* cache gpio regs */ ++ if(reg >= AC97_GPIO_CFG && reg <= AC97_MISC_AFE) ++ wm->gpio[(reg - AC97_GPIO_CFG) >> 1] = val; ++ ++ /* wm9713 irq reg */ ++ if(reg == 0x5a) ++ wm->misc = val; ++ ++ if (wm->ac97) ++ wm->ac97->bus->ops->write(wm->ac97, reg, val); ++} ++EXPORT_SYMBOL_GPL(wm97xx_reg_write); ++ ++/** ++ * wm97xx_read_aux_adc - Read the aux adc. ++ * @wm: wm97xx device. ++ * @adcsel: codec ADC to be read ++ * ++ * Reads the selected AUX ADC. ++ */ ++ ++int wm97xx_read_aux_adc(struct wm97xx *wm, u16 adcsel) ++{ ++ int power_adc = 0, auxval; ++ u16 power = 0; ++ ++ /* get codec */ ++ mutex_lock(&wm->codec_mutex); ++ ++ /* When the touchscreen is not in use, we may have to power up the AUX ADC ++ * before we can use sample the AUX inputs-> ++ */ ++ if (wm->id == WM9713_ID2 && ++ (power = wm97xx_reg_read(wm, AC97_EXTENDED_MID)) & 0x8000) { ++ power_adc = 1; ++ wm97xx_reg_write(wm, AC97_EXTENDED_MID, power & 0x7fff); ++ } ++ ++ /* Prepare the codec for AUX reading */ ++ wm->codec->digitiser_ioctl(wm, WM97XX_AUX_PREPARE); ++ ++ /* Turn polling mode on to read AUX ADC */ ++ wm->pen_probably_down = 1; ++ wm->codec->poll_sample(wm, adcsel, &auxval); ++ ++ if (power_adc) ++ wm97xx_reg_write(wm, AC97_EXTENDED_MID, power | 0x8000); ++ ++ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_RESTORE); ++ ++ wm->pen_probably_down = 0; ++ ++ mutex_unlock(&wm->codec_mutex); ++ return auxval & 0xfff; ++} ++EXPORT_SYMBOL_GPL(wm97xx_read_aux_adc); ++ ++/** ++ * wm97xx_get_gpio - Get the status of a codec GPIO. ++ * @wm: wm97xx device. ++ * @gpio: gpio ++ * ++ * Get the status of a codec GPIO pin ++ */ ++ ++wm97xx_gpio_status_t wm97xx_get_gpio(struct wm97xx *wm, u32 gpio) ++{ ++ u16 status; ++ wm97xx_gpio_status_t ret; ++ ++ mutex_lock(&wm->codec_mutex); ++ status = wm97xx_reg_read(wm, AC97_GPIO_STATUS); ++ ++ if (status & gpio) ++ ret = WM97XX_GPIO_HIGH; ++ else ++ ret = WM97XX_GPIO_LOW; ++ ++ mutex_unlock(&wm->codec_mutex); ++ return ret; ++} ++EXPORT_SYMBOL_GPL(wm97xx_get_gpio); ++ ++/** ++ * wm97xx_set_gpio - Set the status of a codec GPIO. ++ * @wm: wm97xx device. ++ * @gpio: gpio ++ * ++ * ++ * Set the status of a codec GPIO pin ++ */ ++ ++void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio, ++ wm97xx_gpio_status_t status) ++{ ++ u16 reg; ++ ++ mutex_lock(&wm->codec_mutex); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_STATUS); ++ ++ if (status & WM97XX_GPIO_HIGH) ++ reg |= gpio; ++ else ++ reg &= ~gpio; ++ ++ if (wm->id == WM9712_ID2) ++ wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg << 1); ++ else ++ wm97xx_reg_write(wm, AC97_GPIO_STATUS, reg); ++ mutex_unlock(&wm->codec_mutex); ++} ++EXPORT_SYMBOL_GPL(wm97xx_set_gpio); ++ ++/* ++ * Codec GPIO pin configuration, this set's pin direction, polarity, ++ * stickyness and wake up. ++ */ ++void wm97xx_config_gpio(struct wm97xx *wm, u32 gpio, wm97xx_gpio_dir_t dir, ++ wm97xx_gpio_pol_t pol, wm97xx_gpio_sticky_t sticky, ++ wm97xx_gpio_wake_t wake) ++{ ++ u16 reg; ++ ++ mutex_lock(&wm->codec_mutex); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); ++ ++ if (pol == WM97XX_GPIO_POL_HIGH) ++ reg |= gpio; ++ else ++ reg &= ~gpio; ++ ++ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, reg); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_STICKY); ++ ++ if (sticky == WM97XX_GPIO_STICKY) ++ reg |= gpio; ++ else ++ reg &= ~gpio; ++ ++ wm97xx_reg_write(wm, AC97_GPIO_STICKY, reg); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); ++ ++ if (wake == WM97XX_GPIO_WAKE) ++ reg |= gpio; ++ else ++ reg &= ~gpio; ++ ++ wm97xx_reg_write(wm, AC97_GPIO_WAKEUP, reg); ++ reg = wm97xx_reg_read(wm, AC97_GPIO_CFG); ++ ++ if (dir == WM97XX_GPIO_IN) ++ reg |= gpio; ++ else ++ reg &= ~gpio; ++ ++ wm97xx_reg_write(wm, AC97_GPIO_CFG, reg); ++ mutex_unlock(&wm->codec_mutex); ++} ++EXPORT_SYMBOL_GPL(wm97xx_config_gpio); ++ ++/* ++ * Handle a pen down interrupt. ++ */ ++static void wm97xx_pen_irq_worker(struct work_struct *w) ++{ ++/* struct wm97xx *wm = (struct wm97xx *) ptr; */ ++ struct wm97xx *wm = container_of(w, struct wm97xx, pen_event_work); ++ ++ /* do we need to enable the touch panel reader */ ++ if (wm->id == WM9705_ID2) { ++ if (wm97xx_reg_read(wm, AC97_WM97XX_DIGITISER_RD) & WM97XX_PEN_DOWN) ++ wm->pen_is_down = 1; ++ else ++ wm->pen_is_down = 0; ++ wake_up_interruptible(&wm->pen_irq_wait); ++ } else { ++ u16 status, pol; ++ mutex_lock(&wm->codec_mutex); ++ status = wm97xx_reg_read(wm, AC97_GPIO_STATUS); ++ pol = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); ++ ++ if (WM97XX_GPIO_13 & pol & status) { ++ wm->pen_is_down = 1; ++ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, pol & ~WM97XX_GPIO_13); ++ } else { ++ wm->pen_is_down = 0; ++ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, pol | WM97XX_GPIO_13); ++ } ++ ++ if (wm->id == WM9712_ID2) ++ wm97xx_reg_write(wm, AC97_GPIO_STATUS, (status & ~WM97XX_GPIO_13) << 1); ++ else ++ wm97xx_reg_write(wm, AC97_GPIO_STATUS, status & ~WM97XX_GPIO_13); ++ mutex_unlock(&wm->codec_mutex); ++ wake_up_interruptible(&wm->pen_irq_wait); ++ } ++ ++ if (!wm->pen_is_down && wm->mach_ops && wm->mach_ops->acc_enabled) ++ wm->mach_ops->acc_pen_up(wm); ++ enable_irq(wm->pen_irq); ++} ++ ++/* ++ * Codec PENDOWN irq handler ++ * ++ * We have to disable the codec interrupt in the handler because it can ++ * take upto 1ms to clear the interrupt source. The interrupt is then enabled ++ * again in the slow handler when the source has been cleared. ++ */ ++static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id) ++{ ++ struct wm97xx *wm = (struct wm97xx *) dev_id; ++ disable_irq(wm->pen_irq); ++ queue_work(wm->pen_irq_workq, &wm->pen_event_work); ++ return IRQ_HANDLED; ++} ++ ++/* ++ * initialise pen IRQ handler and workqueue ++ */ ++static int wm97xx_init_pen_irq(struct wm97xx *wm) ++{ ++ u16 reg; ++ ++ INIT_WORK(&wm->pen_event_work, wm97xx_pen_irq_worker/* , wm */); ++ if ((wm->pen_irq_workq = ++ create_singlethread_workqueue("kwm97pen")) == NULL) { ++ err("could not create pen irq work queue"); ++ wm->pen_irq = 0; ++ return -EINVAL; ++ } ++ ++ ++ wm->pen_irq = IRQ_GPIO(90); ++ if (request_irq (wm->pen_irq, wm97xx_pen_interrupt, SA_SHIRQ, "wm97xx-pen", wm)) { ++ err("could not register codec pen down interrupt, will poll for pen down"); ++ destroy_workqueue(wm->pen_irq_workq); ++ wm->pen_irq = 0; ++ return -EINVAL; ++ } ++ ++ /* enable PEN down on wm9712/13 */ ++ if (wm->id != WM9705_ID2) { ++ reg = wm97xx_reg_read(wm, AC97_MISC_AFE); ++ wm97xx_reg_write(wm, AC97_MISC_AFE, reg & 0xfffb); ++ reg = wm97xx_reg_read(wm, 0x5a); ++ wm97xx_reg_write(wm, 0x5a, reg & ~0x0001); ++ } ++ ++ return 0; ++} ++ ++/* Private struct for communication between struct wm97xx_tshread ++ * and wm97xx_read_samples */ ++struct ts_state { ++ int sleep_time; ++ int min_sleep_time; ++}; ++ ++static int wm97xx_read_samples(struct wm97xx *wm, struct ts_state *state) ++{ ++ struct wm97xx_data data; ++ int rc; ++ ++ mutex_lock(&wm->codec_mutex); ++ ++ if (wm->mach_ops && wm->mach_ops->acc_enabled) ++ rc = wm->mach_ops->acc_pen_down(wm); ++ else ++ rc = wm->codec->poll_touch(wm, &data); ++ ++ if (rc & RC_PENUP) { ++ if (wm->pen_is_down) { ++ wm->pen_is_down = 0; ++ dbg("pen up"); ++ input_report_abs(wm->input_dev, ABS_PRESSURE, 0); ++ input_sync(wm->input_dev); ++ } else if (!(rc & RC_AGAIN)) { ++ /* We need high frequency updates only while pen is down, ++ * the user never will be able to touch screen faster than ++ * a few times per second... On the other hand, when the ++ * user is actively working with the touchscreen we don't ++ * want to lose the quick response. So we will slowly ++ * increase sleep time after the pen is up and quicky ++ * restore it to ~one task switch when pen is down again. ++ */ ++ if (state->sleep_time < HZ / 10) ++ state->sleep_time++; ++ } ++ ++ } else if (rc & RC_VALID) { ++ dbg("pen down: x=%x:%d, y=%x:%d, pressure=%x:%d\n", ++ data.x >> 12, data.x & 0xfff, data.y >> 12, ++ data.y & 0xfff, data.p >> 12, data.p & 0xfff); ++ input_report_abs(wm->input_dev, ABS_X, data.x & 0xfff); ++ input_report_abs(wm->input_dev, ABS_Y, data.y & 0xfff); ++ input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff); ++ input_sync(wm->input_dev); ++ wm->pen_is_down = 1; ++ state->sleep_time = state->min_sleep_time; ++ } else if (rc & RC_PENDOWN) { ++ dbg("pen down"); ++ wm->pen_is_down = 1; ++ state->sleep_time = state->min_sleep_time; ++ } ++ ++ mutex_unlock(&wm->codec_mutex); ++ return rc; ++} ++ ++/* ++* The touchscreen sample reader thread. ++*/ ++static int wm97xx_ts_read(void *data) ++{ ++ int rc; ++ struct ts_state state; ++ struct wm97xx *wm = (struct wm97xx *) data; ++ ++ /* set up thread context */ ++ wm->ts_task = current; ++ daemonize("kwm97xxts"); ++ ++ if (wm->codec == NULL) { ++ wm->ts_task = NULL; ++ printk(KERN_ERR "codec is NULL, bailing\n"); ++ } ++ ++ complete(&wm->ts_init); ++ wm->pen_is_down = 0; ++ state.min_sleep_time = HZ >= 100 ? HZ / 100 : 1; ++ if (state.min_sleep_time < 1) ++ state.min_sleep_time = 1; ++ state.sleep_time = state.min_sleep_time; ++ ++ /* touch reader loop */ ++ while (wm->ts_task) { ++ do { ++ try_to_freeze(); ++ rc = wm97xx_read_samples(wm, &state); ++ } while (rc & RC_AGAIN); ++ if (!wm->pen_is_down && wm->pen_irq) { ++ /* Nice, we don't have to poll for pen down event */ ++ wait_event_interruptible(wm->pen_irq_wait, wm->pen_is_down); ++ } else { ++ set_task_state(current, TASK_INTERRUPTIBLE); ++ schedule_timeout(state.sleep_time); ++ } ++ } ++ complete_and_exit(&wm->ts_exit, 0); ++} ++ ++/** ++ * wm97xx_ts_input_open - Open the touch screen input device. ++ * @idev: Input device to be opened. ++ * ++ * Called by the input sub system to open a wm97xx touchscreen device. ++ * Starts the touchscreen thread and touch digitiser. ++ */ ++static int wm97xx_ts_input_open(struct input_dev *idev) ++{ ++ int ret = 0; ++ struct wm97xx *wm = (struct wm97xx *) idev->private; ++ ++ mutex_lock(&wm->codec_mutex); ++ /* first time opened ? */ ++ if (wm->ts_use_count++ == 0) { ++ /* start touchscreen thread */ ++ init_completion(&wm->ts_init); ++ init_completion(&wm->ts_exit); ++ ret = kernel_thread(wm97xx_ts_read, wm, CLONE_KERNEL); ++ ++ if (ret >= 0) { ++ wait_for_completion(&wm->ts_init); ++ if (wm->ts_task == NULL) ++ ret = -EINVAL; ++ } else { ++ mutex_unlock(&wm->codec_mutex); ++ return ret; ++ } ++ ++ /* start digitiser */ ++ if (wm->mach_ops && wm->mach_ops->acc_enabled) ++ wm->codec->acc_enable(wm, 1); ++ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_START); ++ ++ /* init pen down/up irq handling */ ++ if (wm->pen_irq) { ++ wm97xx_init_pen_irq(wm); ++ ++ if (wm->pen_irq == 0) { ++ /* we failed to get an irq for pen down events, ++ * so we resort to polling. kickstart the reader */ ++ wm->pen_is_down = 1; ++ wake_up_interruptible(&wm->pen_irq_wait); ++ } ++ } ++ } ++ ++ mutex_unlock(&wm->codec_mutex); ++ return 0; ++} ++ ++/** ++ * wm97xx_ts_input_close - Close the touch screen input device. ++ * @idev: Input device to be closed. ++ * ++ * Called by the input sub system to close a wm97xx touchscreen device. ++ * Kills the touchscreen thread and stops the touch digitiser. ++ */ ++ ++static void wm97xx_ts_input_close(struct input_dev *idev) ++{ ++ struct wm97xx *wm = (struct wm97xx *) idev->private; ++ ++ mutex_lock(&wm->codec_mutex); ++ if (--wm->ts_use_count == 0) { ++ /* destroy workqueues and free irqs */ ++ if (wm->pen_irq) { ++ free_irq(wm->pen_irq, wm); ++ destroy_workqueue(wm->pen_irq_workq); ++ } ++ ++ /* kill thread */ ++ if (wm->ts_task) { ++ wm->ts_task = NULL; ++ wm->pen_is_down = 1; ++ mutex_unlock(&wm->codec_mutex); ++ wake_up_interruptible(&wm->pen_irq_wait); ++ wait_for_completion(&wm->ts_exit); ++ wm->pen_is_down = 0; ++ mutex_lock(&wm->codec_mutex); ++ } ++ ++ /* stop digitiser */ ++ wm->codec->digitiser_ioctl(wm, WM97XX_DIG_STOP); ++ if (wm->mach_ops && wm->mach_ops->acc_enabled) ++ wm->codec->acc_enable(wm, 0); ++ } ++ mutex_unlock(&wm->codec_mutex); ++} ++ ++/* ++ * Bus interface to allow for client drivers codec access ++ * e.g. battery monitor ++ */ ++static int wm97xx_bus_match(struct device *dev, struct device_driver *drv) ++{ ++ return !(strcmp(dev->bus_id,drv->name)); ++} ++ ++/* ++ * The AC97 audio driver will do all the Codec suspend and resume ++ * tasks. This is just for anything machine specific or extra. ++ */ ++static int wm97xx_bus_suspend(struct device *dev, pm_message_t state) ++{ ++ int ret = 0; ++ ++ if (dev->driver && dev->driver->suspend) ++ ret = dev->driver->suspend(dev, state); ++ ++ return ret; ++} ++ ++static int wm97xx_bus_resume(struct device *dev) ++{ ++ int ret = 0; ++ ++ if (dev->driver && dev->driver->resume) ++ ret = dev->driver->resume(dev); ++ ++ return ret; ++} ++ ++struct bus_type wm97xx_bus_type = { ++ .name = "wm97xx", ++ .match = wm97xx_bus_match, ++ .suspend = wm97xx_bus_suspend, ++ .resume = wm97xx_bus_resume, ++}; ++EXPORT_SYMBOL_GPL(wm97xx_bus_type); ++ ++static void wm97xx_release(struct device *dev) ++{ ++ kfree(dev); ++} ++ ++static int wm97xx_probe(struct device *dev) ++{ ++ struct wm97xx* wm; ++ int ret = 0, id = 0; ++ ++ if (!(wm = kzalloc(sizeof(struct wm97xx), GFP_KERNEL))) ++ return -ENOMEM; ++ mutex_init(&wm->codec_mutex); ++ ++ init_waitqueue_head(&wm->pen_irq_wait); ++ wm->dev = dev; ++ dev->driver_data = wm; ++ wm->ac97 = to_ac97_t(dev); ++ ++ /* check that we have a supported codec */ ++ if ((id = wm97xx_reg_read(wm, AC97_VENDOR_ID1)) != WM97XX_ID1) { ++ err("could not find a wm97xx, found a %x instead\n", id); ++ kfree(wm); ++ return -ENODEV; ++ } ++ ++ wm->id = wm97xx_reg_read(wm, AC97_VENDOR_ID2); ++ if(wm->id != wm97xx_codec.id) { ++ err("could not find a the selected codec, please build for wm97%2x", wm->id & 0xff); ++ kfree(wm); ++ return -ENODEV; ++ } ++ ++ if((wm->input_dev = input_allocate_device()) == NULL) { ++ kfree(wm); ++ return -ENOMEM; ++ } ++ ++ /* set up touch configuration */ ++ info("detected a wm97%2x codec", wm->id & 0xff); ++ wm->input_dev->name = "wm97xx touchscreen"; ++ wm->input_dev->open = wm97xx_ts_input_open; ++ wm->input_dev->close = wm97xx_ts_input_close; ++ set_bit(EV_ABS, wm->input_dev->evbit); ++ set_bit(ABS_X, wm->input_dev->absbit); ++ set_bit(ABS_Y, wm->input_dev->absbit); ++ set_bit(ABS_PRESSURE, wm->input_dev->absbit); ++ wm->input_dev->absmax[ABS_X] = abs_x[1]; ++ wm->input_dev->absmax[ABS_Y] = abs_y[1]; ++ wm->input_dev->absmax[ABS_PRESSURE] = abs_p[1]; ++ wm->input_dev->absmin[ABS_X] = abs_x[0]; ++ wm->input_dev->absmin[ABS_Y] = abs_y[0]; ++ wm->input_dev->absmin[ABS_PRESSURE] = abs_p[0]; ++ wm->input_dev->absfuzz[ABS_X] = abs_x[2]; ++ wm->input_dev->absfuzz[ABS_Y] = abs_y[2]; ++ wm->input_dev->absfuzz[ABS_PRESSURE] = abs_p[2]; ++ wm->input_dev->private = wm; ++ wm->codec = &wm97xx_codec; ++ if((ret = input_register_device(wm->input_dev)) < 0) { ++ kfree(wm); ++ return -ENOMEM; ++ } ++ ++ /* set up physical characteristics */ ++ wm->codec->digitiser_ioctl(wm, WM97XX_PHY_INIT); ++ ++ /* load gpio cache */ ++ wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG); ++ wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); ++ wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY); ++ wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); ++ wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS); ++ wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE); ++ ++ /* register our battery device */ ++ if (!(wm->battery_dev = kzalloc(sizeof(struct device), GFP_KERNEL))) { ++ ret = -ENOMEM; ++ goto batt_err; ++ } ++ wm->battery_dev->bus = &wm97xx_bus_type; ++ strcpy(wm->battery_dev->bus_id,"wm97xx-battery"); ++ wm->battery_dev->driver_data = wm; ++ wm->battery_dev->parent = dev; ++ wm->battery_dev->release = wm97xx_release; ++ if((ret = device_register(wm->battery_dev)) < 0) ++ goto batt_reg_err; ++ ++ /* register our extended touch device (for machine specific extensions) */ ++ if (!(wm->touch_dev = kzalloc(sizeof(struct device), GFP_KERNEL))) { ++ ret = -ENOMEM; ++ goto touch_err; ++ } ++ wm->touch_dev->bus = &wm97xx_bus_type; ++ strcpy(wm->touch_dev->bus_id,"wm97xx-touchscreen"); ++ wm->touch_dev->driver_data = wm; ++ wm->touch_dev->parent = dev; ++ wm->touch_dev->release = wm97xx_release; ++ if((ret = device_register(wm->touch_dev)) < 0) ++ goto touch_reg_err; ++ ++ return ret; ++ ++touch_reg_err: ++ kfree(wm->touch_dev); ++touch_err: ++ device_unregister(wm->battery_dev); ++batt_reg_err: ++ kfree(wm->battery_dev); ++batt_err: ++ input_unregister_device(wm->input_dev); ++ kfree(wm); ++ return ret; ++} ++ ++static int wm97xx_remove(struct device *dev) ++{ ++ struct wm97xx *wm = dev_get_drvdata(dev); ++ ++ /* Stop touch reader thread */ ++ if (wm->ts_task) { ++ wm->ts_task = NULL; ++ wm->pen_is_down = 1; ++ wake_up_interruptible(&wm->pen_irq_wait); ++ wait_for_completion(&wm->ts_exit); ++ } ++ device_unregister(wm->battery_dev); ++ device_unregister(wm->touch_dev); ++ input_unregister_device(wm->input_dev); ++ ++ kfree(wm); ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++int wm97xx_resume(struct device* dev) ++{ ++ struct wm97xx *wm = dev_get_drvdata(dev); ++ ++ /* restore digitiser and gpio's */ ++ if(wm->id == WM9713_ID2) { ++ wm97xx_reg_write(wm, AC97_WM9713_DIG1, wm->dig[0]); ++ wm97xx_reg_write(wm, 0x5a, wm->misc); ++ if(wm->ts_use_count) { ++ u16 reg = wm97xx_reg_read(wm, AC97_EXTENDED_MID) & 0x7fff; ++ wm97xx_reg_write(wm, AC97_EXTENDED_MID, reg); ++ } ++ } ++ ++ wm97xx_reg_write(wm, AC97_WM9713_DIG2, wm->dig[1]); ++ wm97xx_reg_write(wm, AC97_WM9713_DIG3, wm->dig[2]); ++ ++ wm97xx_reg_write(wm, AC97_GPIO_CFG, wm->gpio[0]); ++ wm97xx_reg_write(wm, AC97_GPIO_POLARITY, wm->gpio[1]); ++ wm97xx_reg_write(wm, AC97_GPIO_STICKY, wm->gpio[2]); ++ wm97xx_reg_write(wm, AC97_GPIO_WAKEUP, wm->gpio[3]); ++ wm97xx_reg_write(wm, AC97_GPIO_STATUS, wm->gpio[4]); ++ wm97xx_reg_write(wm, AC97_MISC_AFE, wm->gpio[5]); ++ ++ return 0; ++} ++ ++#else ++#define wm97xx_resume NULL ++#endif ++ ++/* ++ * Machine specific operations ++ */ ++int wm97xx_register_mach_ops(struct wm97xx *wm, struct wm97xx_mach_ops *mach_ops) ++{ ++ mutex_lock(&wm->codec_mutex); ++ if(wm->mach_ops) { ++ mutex_unlock(&wm->codec_mutex); ++ return -EINVAL; ++ } ++ wm->mach_ops = mach_ops; ++ mutex_unlock(&wm->codec_mutex); ++ return 0; ++} ++EXPORT_SYMBOL_GPL(wm97xx_register_mach_ops); ++ ++void wm97xx_unregister_mach_ops(struct wm97xx *wm) ++{ ++ mutex_lock(&wm->codec_mutex); ++ wm->mach_ops = NULL; ++ mutex_unlock(&wm->codec_mutex); ++} ++EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops); ++ ++static struct device_driver wm97xx_driver = { ++ .name = "ac97", ++ .bus = &ac97_bus_type, ++ .owner = THIS_MODULE, ++ .probe = wm97xx_probe, ++ .remove = wm97xx_remove, ++ .resume = wm97xx_resume, ++}; ++ ++static int __init wm97xx_init(void) ++{ ++ int ret; ++ ++ info("version %s liam.girdwood@wolfsonmicro.com", WM_CORE_VERSION); ++ if((ret = bus_register(&wm97xx_bus_type)) < 0) ++ return ret; ++ return driver_register(&wm97xx_driver); ++} ++ ++static void __exit wm97xx_exit(void) ++{ ++ driver_unregister(&wm97xx_driver); ++ bus_unregister(&wm97xx_bus_type); ++} ++ ++module_init(wm97xx_init); ++module_exit(wm97xx_exit); ++ ++/* Module information */ ++MODULE_AUTHOR("Liam Girdwood, liam.girdwood@wolfsonmicro.com, www.wolfsonmicro.com"); ++MODULE_DESCRIPTION("WM97xx Core - Touch Screen / AUX ADC / GPIO Driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig +index 4468cb3..01b4828 100644 +--- a/drivers/leds/Kconfig ++++ b/drivers/leds/Kconfig +@@ -101,6 +101,12 @@ config LEDS_GPIO + outputs. To be useful the particular board must have LEDs + and they must be connected to the GPIO lines. + ++config LEDS_EM_X270 ++ tristate "LED Support for the CompuLab EM-X270" ++ depends on LEDS_CLASS && MACH_EM_X270 ++ help ++ This option enables support for the LEDs on CompuLab EM-X270. ++ + comment "LED Triggers" + + config LEDS_TRIGGERS +diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile +index f8995c9..6d3941e 100644 +--- a/drivers/leds/Makefile ++++ b/drivers/leds/Makefile +@@ -17,6 +17,7 @@ obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o + obj-$(CONFIG_LEDS_H1940) += leds-h1940.o + obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o + obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o ++obj-$(CONFIG_LEDS_EM_X270) += leds-em-x270.o + + # LED Triggers + obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o +diff --git a/drivers/leds/leds-em-x270.c b/drivers/leds/leds-em-x270.c +new file mode 100644 +index 0000000..485e7da +--- /dev/null ++++ b/drivers/leds/leds-em-x270.c +@@ -0,0 +1,99 @@ ++/* ++ * LED Triggers Core ++ * ++ * Copyright 2007 CompuLab, Ltd. ++ * Author: Mike Rapoport ++ * ++ * Based on Corgi leds driver: ++ * Copyright 2005-2006 Openedhand Ltd. ++ * Author: Richard Purdie ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++static void em_x270_led_orange_set(struct led_classdev *led_cdev, ++ enum led_brightness value) ++{ ++ int on = 1; ++ int pwm_chop = 0; ++ ++ pr_info("%s: value = %d\n", __FUNCTION__, value); ++ if (value == LED_OFF) ++ on = 0; ++ else if (value == LED_HALF) ++ pwm_chop = 4; ++ ++ da9030_set_led(3, on, 0, 0, pwm_chop); ++} ++ ++static struct led_classdev em_x270_orange_led = { ++ .name = "em_x270:orange", ++ .default_trigger = "em-x270-battery.0-charging-or-full", ++ .brightness_set = em_x270_led_orange_set, ++}; ++ ++#ifdef CONFIG_PM ++static int em_x270_led_suspend(struct platform_device *dev, pm_message_t state) ++{ ++#ifdef CONFIG_LEDS_TRIGGERS ++ if (em_x270_orange_led.trigger && strcmp(em_x270_orange_led.trigger->name, "em-x270-battery-charging-or-full")) ++#endif ++ led_classdev_suspend(&em_x270_orange_led); ++ return 0; ++} ++ ++static int em_x270_led_resume(struct platform_device *dev) ++{ ++ led_classdev_resume(&em_x270_orange_led); ++ return 0; ++} ++#endif ++ ++static int em_x270_led_probe(struct platform_device *pdev) ++{ ++ return led_classdev_register(&pdev->dev, &em_x270_orange_led); ++} ++ ++static int em_x270_led_remove(struct platform_device *pdev) ++{ ++ led_classdev_unregister(&em_x270_orange_led); ++ return 0; ++} ++ ++static struct platform_driver em_x270_led_driver = { ++ .probe = em_x270_led_probe, ++ .remove = em_x270_led_remove, ++#ifdef CONFIG_PM ++ .suspend = em_x270_led_suspend, ++ .resume = em_x270_led_resume, ++#endif ++ .driver = { ++ .name = "em-x270-led", ++ }, ++}; ++ ++static int __init em_x270_led_init(void) ++{ ++ return platform_driver_register(&em_x270_led_driver); ++} ++ ++static void __exit em_x270_led_exit(void) ++{ ++ platform_driver_unregister(&em_x270_led_driver); ++} ++ ++module_init(em_x270_led_init); ++module_exit(em_x270_led_exit); ++ ++MODULE_AUTHOR("Mike Rapoport "); ++MODULE_DESCRIPTION("EX-X270 LED driver"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/mtd/chips/jedec_probe.c b/drivers/mtd/chips/jedec_probe.c +index 58e561e..7050e71 100644 +--- a/drivers/mtd/chips/jedec_probe.c ++++ b/drivers/mtd/chips/jedec_probe.c +@@ -38,7 +38,7 @@ + #define MANUFACTURER_ST 0x0020 + #define MANUFACTURER_TOSHIBA 0x0098 + #define MANUFACTURER_WINBOND 0x00da +- ++#define CONTINUATION_CODE 0x007f + + /* AMD */ + #define AM29DL800BB 0x22C8 +@@ -68,6 +68,10 @@ + #define AT49BV32X 0x00C8 + #define AT49BV32XT 0x00C9 + ++/* Eon */ ++#define EN29SL800BB 0x226B ++#define EN29SL800BT 0x22EA ++ + /* Fujitsu */ + #define MBM29F040C 0x00A4 + #define MBM29LV650UE 0x22D7 +@@ -632,6 +636,40 @@ static const struct amd_flash_info jedec_table[] = { + ERASEINFO(0x02000,8) + } + }, { ++ .mfr_id = 0x1c, ++ .dev_id = EN29SL800BT, ++ .name = "Eon EN29SL800BT", ++ .uaddr = { ++ [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ ++ [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */ ++ }, ++ .DevSize = SIZE_1MiB, ++ .CmdSet = P_ID_AMD_STD, ++ .NumEraseRegions= 4, ++ .regions = { ++ ERASEINFO(0x10000, 15), ++ ERASEINFO(0x08000, 1), ++ ERASEINFO(0x02000, 2), ++ ERASEINFO(0x04000, 1), ++ } ++ }, { ++ .mfr_id = 0x1c, ++ .dev_id = EN29SL800BB, ++ .name = "Eon EN29SL800BB", ++ .uaddr = { ++ [0] = MTD_UADDR_0x0555_0x02AA, /* x8 */ ++ [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */ ++ }, ++ .DevSize = SIZE_1MiB, ++ .CmdSet = P_ID_AMD_STD, ++ .NumEraseRegions= 4, ++ .regions = { ++ ERASEINFO(0x04000, 1), ++ ERASEINFO(0x02000, 2), ++ ERASEINFO(0x08000, 1), ++ ERASEINFO(0x10000, 15), ++ } ++ }, { + .mfr_id = MANUFACTURER_FUJITSU, + .dev_id = MBM29F040C, + .name = "Fujitsu MBM29F040C", +@@ -1769,9 +1807,21 @@ static inline u32 jedec_read_mfr(struct map_info *map, __u32 base, + { + map_word result; + unsigned long mask; +- u32 ofs = cfi_build_cmd_addr(0, cfi_interleave(cfi), cfi->device_type); +- mask = (1 << (cfi->device_type * 8)) -1; +- result = map_read(map, base + ofs); ++ int bank = 0; ++ ++ /* According to JEDEC "Standard Manufacturer's Identification Code" ++ * (http://www.jedec.org/download/search/jep106W.pdf) ++ * several first banks can contain 0x7f instead of actual ID ++ */ ++ do { ++ u32 ofs = cfi_build_cmd_addr(0 + (bank << 8), ++ cfi_interleave(cfi), ++ cfi->device_type); ++ mask = (1 << (cfi->device_type * 8)) -1; ++ result = map_read(map, base + ofs); ++ bank++; ++ } while ((result.x[0] & mask) == CONTINUATION_CODE); ++ + return result.x[0] & mask; + } + +diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c +index 738aa59..88dbbdf 100644 +--- a/drivers/net/dm9000.c ++++ b/drivers/net/dm9000.c +@@ -546,6 +546,7 @@ dm9000_probe(struct platform_device *pdev) + + if (id_val != DM9000_ID) { + printk("%s: wrong id: 0x%08x\n", CARDNAME, id_val); ++ ret = -ENODEV; + goto release; + } + +diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig +index 58c806e..3a16d9c 100644 +--- a/drivers/power/Kconfig ++++ b/drivers/power/Kconfig +@@ -49,4 +49,10 @@ config BATTERY_OLPC + help + Say Y to enable support for the battery on the OLPC laptop. + ++config BATTERY_EM_X270 ++ tristate "EM-X270 battery" ++ depends on DA9030 && MACH_EM_X270 ++ help ++ Say Y here to enable support for battery on EM-X270. ++ + endif # POWER_SUPPLY +diff --git a/drivers/power/Makefile b/drivers/power/Makefile +index 6413ded..dc9585e 100644 +--- a/drivers/power/Makefile ++++ b/drivers/power/Makefile +@@ -20,3 +20,4 @@ obj-$(CONFIG_APM_POWER) += apm_power.o + obj-$(CONFIG_BATTERY_DS2760) += ds2760_battery.o + obj-$(CONFIG_BATTERY_PMU) += pmu_battery.o + obj-$(CONFIG_BATTERY_OLPC) += olpc_battery.o ++obj-$(CONFIG_BATTERY_EM_X270) += em_x270_battery.o +diff --git a/drivers/power/em_x270_battery.c b/drivers/power/em_x270_battery.c +new file mode 100644 +index 0000000..2630c68 +--- /dev/null ++++ b/drivers/power/em_x270_battery.c +@@ -0,0 +1,579 @@ ++/* ++ * Power managemnet implementation for EM-X270 ++ * ++ * Copyright (C) 2007 CompuLab, Ltd. ++ * Author: Mike Rapoport ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++ * ++ */ ++ ++#define DEBUG ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include "../i2c/chips/da9030.h" ++ ++#define VOLTAGE_MAX_DESIGN 4200000 /* 4.2V in uV */ ++#define VOLTAGE_MIN_DESIGN 3000000 /* 3V in uV */ ++ ++/* #define VCHARGE_MIN_THRESHOLD 72 /\* 4.5V *\/ */ ++ ++#define VCHARGE_MIN_THRESHOLD 60 /* ?.?V */ ++#define VCHARGE_MAX_THRESHOLD 89 /* 5.5V */ ++#define TBAT_LOW_THRESHOLD 197 /* 0oC */ ++#define TBAT_HIGH_THRESHOLD 78 /* 45oC */ ++#define TBAT_RESUME_THRESHOLD 100 /* 35oC */ ++#define VBAT_LOW_THRESHOLD 82 /* 3.498V */ ++#define VBAT_CRIT_THRESHOLD 62 /* 3.291V */ ++ ++struct da9030_charger { ++ struct device *dev; ++ ++ struct power_supply bat; ++ struct da9030_adc_res adc; ++ struct delayed_work work; ++ ++ int interval; ++ int status; ++ int mA; ++ int mV; ++ ++ int is_charging:1; ++ ++#ifdef CONFIG_DEBUG_FS ++ struct dentry *debug_file; ++#endif ++}; ++ ++static unsigned short tbat_readings[] = { ++ 300, 244, 200, 178, 163, 152, 144, 137, 131, ++ 126, 122, 118, 114, 111, 108, 105, 103, 101, ++ 98, 96, 94, 93, 91, 89, 88, 86, 85, ++ 83, 82, 81, 79, 78, 77, 76, 75, 74, ++ 73, 72, 71, 70, 69, 68, 67, 67, 66, ++ 65, 64, 63, 63, 62, 61, 60, 60, 59, ++ 58, 58, 57, 57, 56, 55, 55, 54, 53, ++ 53, 52, 52, 51, 51, 50, 50, 49, 49, ++ 48, 48, 47, 47, 46, 46, 45, 45, 44, ++ 44, 43, 43, 42, 42, 41, 41, 41, 40, ++ 40, 39, 39, 38, 38, 38, 37, 37, 36, ++ 36, 35, 35, 35, 34, 34, 34, 33, 33, ++ 32, 32, 32, 31, 31, 30, 30, 30, 29, ++ 29, 29, 28, 28, 28, 27, 27, 26, 26, ++ 26, 25, 25, 25, 24, 24, 24, 23, 23, ++ 23, 22, 22, 21, 21, 21, 20, 20, 20, ++ 19, 19, 19, 18, 18, 18, 17, 17, 17, ++ 16, 16, 16, 15, 15, 14, 14, 14, 13, ++ 13, 13, 12, 12, 12, 11, 11, 11, 10, ++ 10, 10, 9, 9, 8, 8, 8, 7, 7, ++ 7, 6, 6, 5, 5, 5, 4, 4, 3, ++ 3, 3, 2, 2, 1, 1, 1, 0, 0, ++ -1, -1, -1, -2, -2, -3, -3, -4, -4, ++ -5, -5, -6, -6, -6, -7, -7, -8, -9, ++ -9, -10, -10, -11, -11, -12, -12, -13, -14, ++ -14, -15, -16, -16, -17, -18, -18, -19, -20, ++ -21, -21, -22, -23, -24, -25, -26, -27, -28, ++ -30, -31, -32, -34, -35, -37, -39, -41, -44, ++ -47, -50, -56, -64, ++}; ++ ++#ifdef CONFIG_DEBUG_FS ++ ++#define REG2VOLT(x) ((((x) * 2650) >> 8) + 2650) ++ ++static int debug_show(struct seq_file *s, void *data) ++{ ++ struct da9030_charger *charger = s->private; ++ ++ seq_printf(s, "charger is %s\n", ++ charger->status & CHRG_CHARGER_ENABLE ? "on" : "off"); ++ if (charger->status & CHRG_CHARGER_ENABLE) { ++ seq_printf(s, "iset = %dmA, vset = %dmV\n", ++ charger->mA, charger->mV); ++ } ++ ++ seq_printf(s, "vbat_res = %d (%dmV)\n", ++ charger->adc.vbat_res, REG2VOLT(charger->adc.vbat_res)); ++ seq_printf(s, "vbatmin_res = %d (%dmV)\n", ++ charger->adc.vbatmin_res, ++ REG2VOLT(charger->adc.vbatmin_res)); ++ seq_printf(s, "vbatmintxon = %d (%dmV)\n", ++ charger->adc.vbatmintxon, ++ REG2VOLT(charger->adc.vbatmintxon)); ++ seq_printf(s, "ichmax_res = %d\n", charger->adc.ichmax_res); ++ seq_printf(s, "ichmin_res = %d\n", charger->adc.ichmin_res); ++ seq_printf(s, "ichaverage_res = %d\n", charger->adc.ichaverage_res); ++ seq_printf(s, "vchmax_res = %d (%dmV)\n", ++ charger->adc.vchmax_res, ++ REG2VOLT(charger->adc.vchmax_res)); ++ seq_printf(s, "vchmin_res = %d (%dmV)\n", ++ charger->adc.vchmin_res, ++ REG2VOLT(charger->adc.vchmin_res)); ++ seq_printf(s, "tbat_res = %d (%doC\n", charger->adc.tbat_res, ++ tbat_readings[charger->adc.tbat_res]); ++ seq_printf(s, "adc_in4_res = %d\n", charger->adc.adc_in4_res); ++ seq_printf(s, "adc_in5_res = %d\n", charger->adc.adc_in5_res); ++ ++ return 0; ++} ++ ++static int debug_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, debug_show, inode->i_private); ++} ++ ++static const struct file_operations debug_fops = { ++ .open = debug_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static struct dentry* da9030_create_debugfs(struct da9030_charger *charger) ++{ ++ charger->debug_file = debugfs_create_file("charger", 0666, 0, charger, ++ &debug_fops); ++ return charger->debug_file; ++} ++ ++static void da9030_remove_debugfs(struct da9030_charger *charger) ++{ ++ debugfs_remove(charger->debug_file); ++} ++#else ++#define da9030_create_debugfs(x) NULL ++#define da9030_remove_debugfs(x) do {} while(0) ++#endif ++ ++static void da9030_set_charge(struct da9030_charger *charger, int on) ++{ ++/* int status = da9030_get_status(); */ ++ if (on) { ++ pr_debug("%s: enabling charger\n", __FUNCTION__); ++ da9030_set_thresholds(TBAT_HIGH_THRESHOLD, ++ TBAT_RESUME_THRESHOLD, ++ TBAT_LOW_THRESHOLD); ++ da9030_set_charger(1, 1000, 4200); ++ charger->is_charging = 1; ++ } ++ else { ++ /* disable charger */ ++ pr_debug("%s: disabling charger\n", __FUNCTION__); ++ da9030_set_charger(0, 0, 0); ++ charger->is_charging = 0; ++ } ++} ++ ++static void da9030_charging_monitor(struct work_struct *work) ++{ ++ struct da9030_charger *charger; ++ int is_on; ++ unsigned int mA, mV; ++ ++ charger = container_of(work, struct da9030_charger, work.work); ++ ++ da9030_get_charger(&is_on, &mA, &mV); ++ da9030_read_adc(&charger->adc); ++ ++ charger->status = da9030_get_status(); ++ charger->mA = mA; ++ charger->mV = mV; ++ ++ /* we wake or boot with external power on */ ++ if (!is_on && (charger->status & STATUS_CHDET)) { ++ da9030_set_charge(charger, 1); ++ return; ++ } ++ ++ if (is_on) { ++/* pr_info("%s: mA = %d, mV = %d\n", __FUNCTION__, mA, mV); */ ++/* pr_info("%s: vchmin_res = %d, vchmax_res = %d\n", */ ++/* __FUNCTION__, charger->adc.vchmin_res, */ ++/* charger->adc.vchmax_res); */ ++/* pr_info("%s: tbat_res = %d\n", */ ++/* __FUNCTION__, charger->adc.tbat_res); */ ++ if (charger->adc.vbat_res > VBAT_LOW_THRESHOLD) { ++ /* update VBAT threshlods ? */ ++ da9030_set_reg(VBATMON, VBAT_LOW_THRESHOLD); ++ } ++ if (charger->adc.vchmax_res > VCHARGE_MAX_THRESHOLD || ++ charger->adc.vchmin_res < VCHARGE_MIN_THRESHOLD || ++ /* Tempreture readings are negative */ ++ charger->adc.tbat_res < TBAT_HIGH_THRESHOLD || ++ charger->adc.tbat_res > TBAT_LOW_THRESHOLD) { ++ /* disable charger */ ++ da9030_set_charge(charger, 0); ++ } ++ } ++ ++ /* reschedule for the next time */ ++ schedule_delayed_work(&charger->work, charger->interval); ++} ++ ++void da9030_battery_release(struct device * dev) ++{ ++} ++ ++static void da9030_external_power_changed(struct power_supply *psy) ++{ ++/* struct da9030_charger *charger; */ ++ ++/* charger = container_of(psy, struct da9030_charger, bat); */ ++/* pr_info("%s:\n", __FUNCTION__); */ ++/* da9030_set_charge(charger); */ ++} ++ ++struct da9030_battery_thresh { ++ int voltage; ++ int percentage; ++}; ++ ++static struct da9030_battery_thresh vbat_ranges[] = { ++ { 150, 100}, ++ { 149, 99}, ++ { 148, 98}, ++ { 147, 98}, ++ { 146, 97}, ++ { 145, 96}, ++ { 144, 96}, ++ { 143, 95}, ++ { 142, 94}, ++ { 141, 93}, ++ { 140, 92}, ++ { 139, 91}, ++ { 138, 90}, ++ { 137, 90}, ++ { 136, 89}, ++ { 135, 88}, ++ { 134, 88}, ++ { 133, 87}, ++ { 132, 86}, ++ { 131, 85}, ++ { 130, 83}, ++ { 129, 82}, ++ { 128, 81}, ++ { 127, 81}, ++ { 126, 80}, ++ { 125, 75}, ++ { 124, 74}, ++ { 123, 73}, ++ { 122, 70}, ++ { 121, 66}, ++ { 120, 65}, ++ { 119, 64}, ++ { 118, 64}, ++ { 117, 63}, ++ { 116, 59}, ++ { 115, 58}, ++ { 114, 57}, ++ { 113, 57}, ++ { 112, 56}, ++ { 111, 50}, ++ { 110, 49}, ++ { 109, 49}, ++ { 108, 48}, ++ { 107, 48}, ++ { 106, 33}, ++ { 105, 32}, ++ { 104, 32}, ++ { 103, 32}, ++ { 102, 31}, ++ { 101, 16}, ++ { 100, 15}, ++ { 99, 15}, ++ { 98, 15}, ++ { 97, 10}, ++ { 96, 9}, ++ { 95, 7}, ++ { 94, 3}, ++ { 93, 0}, ++}; ++ ++static enum power_supply_property da9030_bat_props[] = { ++ POWER_SUPPLY_PROP_STATUS, ++ POWER_SUPPLY_PROP_HEALTH, ++ POWER_SUPPLY_PROP_TECHNOLOGY, ++ POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, ++ POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, ++ POWER_SUPPLY_PROP_VOLTAGE_NOW, ++ POWER_SUPPLY_PROP_CURRENT_AVG, ++ POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ ++ POWER_SUPPLY_PROP_TEMP, ++ POWER_SUPPLY_PROP_MANUFACTURER, ++ POWER_SUPPLY_PROP_MODEL_NAME, ++}; ++ ++static void da9030_bat_check_status(union power_supply_propval *val) ++{ ++ int charger_on; ++ int status = da9030_get_status(); ++ ++ da9030_get_charger(&charger_on, 0, 0); ++ ++ /* FIXME: below code is very crude approximation of actual ++ states, we need to take into account voltage and current ++ measurements to determine actual charger state */ ++ if (status & STATUS_CHDET) { ++ if (charger_on) { ++ val->intval = POWER_SUPPLY_STATUS_CHARGING; ++ } ++ else { ++ val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; ++ } ++ } ++ else { ++ val->intval = POWER_SUPPLY_STATUS_DISCHARGING; ++ } ++} ++ ++static void da9030_bat_check_health(union power_supply_propval *val) ++{ ++ int fault_log = da9030_get_fault_log(); ++ ++ if (fault_log & FAULT_LOG_OVER_TEMP) { ++ val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; ++ } ++ else if (fault_log & FAULT_LOG_VBAT_OVER) { ++ val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE; ++ } ++ else { ++ val->intval = POWER_SUPPLY_HEALTH_GOOD; ++ } ++} ++ ++static int vbat_interpolate(int reg) ++{ ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(vbat_ranges); i++ ) ++ if (vbat_ranges[i].voltage == reg) { ++ pr_debug("%s: voltage = %d, percentage = %d\n", ++ __FUNCTION__, vbat_ranges[i].voltage, ++ vbat_ranges[i].percentage); ++ return vbat_ranges[i].percentage; ++ } ++ ++ return 0; ++} ++ ++static int da9030_bat_get_property(struct power_supply *psy, ++ enum power_supply_property psp, ++ union power_supply_propval *val) ++{ ++ u32 reg; ++ struct da9030_charger *charger; ++ charger = container_of(psy, struct da9030_charger, bat); ++ ++ switch(psp) { ++ case POWER_SUPPLY_PROP_STATUS: ++ da9030_bat_check_status(val); ++ break; ++ case POWER_SUPPLY_PROP_HEALTH: ++ da9030_bat_check_health(val); ++ break; ++ case POWER_SUPPLY_PROP_TECHNOLOGY: ++ val->intval = POWER_SUPPLY_TECHNOLOGY_LIPO; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: ++ val->intval = VOLTAGE_MAX_DESIGN; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN: ++ val->intval = VOLTAGE_MIN_DESIGN; ++ break; ++ case POWER_SUPPLY_PROP_VOLTAGE_NOW: ++ reg = charger->adc.vbat_res; ++ /* V = (reg / 256) * 2.65 + 2.65 (V) */ ++ val->intval = ((reg * 2650000) >> 8) + 2650000; ++ break; ++ case POWER_SUPPLY_PROP_CURRENT_AVG: ++ reg = charger->adc.ichaverage_res; ++ val->intval = reg; /* reg */ ++ break; ++ case POWER_SUPPLY_PROP_CAPACITY: ++ reg = charger->adc.vbat_res; ++ val->intval = vbat_interpolate(reg); ++ break; ++ case POWER_SUPPLY_PROP_TEMP: ++ reg = charger->adc.tbat_res; ++ val->intval = tbat_readings[reg]; ++ break; ++ case POWER_SUPPLY_PROP_MANUFACTURER: ++ val->strval = "MaxPower"; ++ pr_debug("%s: MFG = %s\n", __FUNCTION__, val->strval); ++ break; ++ case POWER_SUPPLY_PROP_MODEL_NAME: ++ val->strval = "LP555597P6H-FPS"; ++ pr_debug("%s: MODEL = %s\n", __FUNCTION__, val->strval); ++ break; ++ default: break; ++ } ++ ++ return 0; ++} ++ ++static void da9030_setup_battery(struct power_supply *bat) ++{ ++ bat->name = "em-x270-battery"; ++ bat->type = POWER_SUPPLY_TYPE_BATTERY; ++ bat->properties = da9030_bat_props; ++ bat->num_properties = ARRAY_SIZE(da9030_bat_props); ++ bat->get_property = da9030_bat_get_property; ++ bat->use_for_apm = 1; ++ bat->external_power_changed = da9030_external_power_changed; ++}; ++ ++static void da9030_chiover_callback(int event, void *_charger) ++{ ++ /* disable charger */ ++ struct da9030_charger *charger = _charger; ++ da9030_set_charge(charger, 0); ++} ++ ++static void da9030_tbat_callback(int event, void *_charger) ++{ ++ /* disable charger */ ++ struct da9030_charger *charger = _charger; ++ da9030_set_charge(charger, 0); ++} ++ ++static void da9030_vbat_callback(int event, void *_charger) ++{ ++ struct da9030_charger *charger = _charger; ++ da9030_read_adc(&charger->adc); ++ ++ if (charger->is_charging) { ++ if (charger->adc.vbat_res < VBAT_LOW_THRESHOLD) { ++ /* set VBAT threshold for critical */ ++ da9030_set_reg(VBATMON, VBAT_CRIT_THRESHOLD); ++ } ++ else if (charger->adc.vbat_res < VBAT_CRIT_THRESHOLD) { ++ /* notify the system of battery critical */ ++ apm_queue_event(APM_CRITICAL_SUSPEND); ++ } ++ } ++} ++ ++static void da9030_ccto_callback(int event, void *_charger) ++{ ++ /* x3 */ ++} ++ ++static void da9030_tcto_callback(int event, void *_charger) ++{ ++ /* x3 */ ++} ++ ++static void da9030_chdet_callback(int event, void *_charger) ++{ ++ struct da9030_charger *charger = _charger; ++ int status = da9030_get_status(); ++ da9030_set_charge(charger, !!(status & CHRG_CHARGER_ENABLE)); ++} ++ ++static int da9030_battery_probe(struct platform_device *pdev) ++{ ++ struct da9030_charger *charger; ++ ++ pr_debug("%s\n", __FUNCTION__); ++ charger = kzalloc(sizeof(*charger), GFP_KERNEL); ++ if (charger == NULL) { ++ return -ENOMEM; ++ } ++ ++ charger->dev = &pdev->dev; ++ ++ charger->interval = 10 * HZ; /* 10 seconds between monotor runs */ ++ da9030_setup_battery(&charger->bat); ++ ++ platform_set_drvdata(pdev, charger); ++ ++ da9030_enable_adc(); ++ ++ INIT_DELAYED_WORK(&charger->work, da9030_charging_monitor); ++ schedule_delayed_work(&charger->work, charger->interval); ++ ++ charger->debug_file = da9030_create_debugfs(charger); ++ ++ da9030_setup_battery(&charger->bat); ++ ++ da9030_register_callback(DA9030_IRQ_CHDET, ++ da9030_chdet_callback, ++ charger); ++ da9030_register_callback(DA9030_IRQ_VBATMON, ++ da9030_vbat_callback, ++ charger); ++ ++ /* critical condition events */ ++ da9030_register_callback(DA9030_IRQ_CHIOVER, ++ da9030_chiover_callback, ++ charger); ++ da9030_register_callback(DA9030_IRQ_TBAT, ++ da9030_tbat_callback, ++ charger); ++ ++ /* timer events */ ++ da9030_register_callback(DA9030_IRQ_TCTO, ++ da9030_tcto_callback, ++ charger); ++ da9030_register_callback(DA9030_IRQ_CCTO, ++ da9030_ccto_callback, ++ charger); ++ ++ power_supply_register(&pdev->dev, &charger->bat); ++ ++ return 0; ++} ++ ++static int da9030_battery_remove(struct platform_device *dev) ++{ ++ struct da9030_charger *charger = platform_get_drvdata(dev); ++ ++ pr_debug("%s\n", __FUNCTION__); ++ da9030_remove_debugfs(charger); ++ cancel_delayed_work(&charger->work); ++ power_supply_unregister(&charger->bat); ++ kfree(charger); ++ return 0; ++} ++ ++static struct platform_driver da9030_battery_driver = { ++ .driver = { ++ .name = "da9030-battery", ++ .owner = THIS_MODULE, ++ }, ++ .probe = da9030_battery_probe, ++ .remove = da9030_battery_remove, ++}; ++ ++static int da9030_battery_init(void) ++{ ++ pr_debug("%s\n", __FUNCTION__); ++ ++ return platform_driver_register(&da9030_battery_driver); ++} ++ ++static void da9030_battery_exit(void) ++{ ++ pr_debug("%s\n", __FUNCTION__); ++ ++ platform_driver_unregister(&da9030_battery_driver); ++} ++ ++module_init(da9030_battery_init); ++module_exit(da9030_battery_exit); ++ ++MODULE_DESCRIPTION("DA9030 charger driver"); ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig +index 767aed5..4c44a7a 100644 +--- a/drivers/usb/gadget/Kconfig ++++ b/drivers/usb/gadget/Kconfig +@@ -195,6 +195,26 @@ config USB_M66592 + default USB_GADGET + select USB_GADGET_SELECTED + ++config USB_GADGET_PXA27X ++ boolean "PXA 27x" ++ depends on ARCH_PXA && PXA27x ++ help ++ Intel's PXA 27x series XScale ARM-5TE processors include ++ an integrated full speed USB 1.1 device controller. ++ ++ It has 23 endpoints, as well as endpoint zero (for control ++ transfers). ++ ++ Say "y" to link the driver statically, or "m" to build a ++ dynamically linked module called "pxa27x_udc" and force all ++ gadget drivers to also be dynamically linked. ++ ++config USB_PXA27X ++ tristate ++ depends on USB_GADGET_PXA27X ++ default USB_GADGET ++ select USB_GADGET_SELECTED ++ + config USB_GADGET_GOKU + boolean "Toshiba TC86C001 'Goku-S'" + depends on PCI +diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile +index 1bc0f03..b8743bf 100644 +--- a/drivers/usb/gadget/Makefile ++++ b/drivers/usb/gadget/Makefile +@@ -9,6 +9,7 @@ obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o + obj-$(CONFIG_USB_NET2280) += net2280.o + obj-$(CONFIG_USB_AMD5536UDC) += amd5536udc.o + obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o ++obj-$(CONFIG_USB_PXA27X) += pxa27x_udc.o + obj-$(CONFIG_USB_GOKU) += goku_udc.o + obj-$(CONFIG_USB_OMAP) += omap_udc.o + obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o +diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c +index 3aa46cf..d7d5550 100644 +--- a/drivers/usb/gadget/epautoconf.c ++++ b/drivers/usb/gadget/epautoconf.c +@@ -228,14 +228,19 @@ find_ep (struct usb_gadget *gadget, const char *name) + * + * On failure, this returns a null endpoint descriptor. + */ +-struct usb_ep * __devinit usb_ep_autoconfig ( ++struct usb_ep * usb_ep_autoconfig ( + struct usb_gadget *gadget, +- struct usb_endpoint_descriptor *desc ++ struct usb_endpoint_descriptor *desc, ++ struct usb_endpoint_config *epconfig, int numconfigs + ) + { + struct usb_ep *ep; + u8 type; + ++ /* Use device specific ep allocation code if provided */ ++ if (gadget->ops->ep_alloc) ++ return gadget->ops->ep_alloc(gadget, desc, epconfig, numconfigs); ++ + type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; + + /* First, apply chip-specific "best usage" knowledge. +diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c +index 593e235..87aa9fb 100644 +--- a/drivers/usb/gadget/ether.c ++++ b/drivers/usb/gadget/ether.c +@@ -1350,6 +1350,10 @@ static void rndis_response_complete (struct usb_ep *ep, struct usb_request *req) + /* done sending after USB_CDC_GET_ENCAPSULATED_RESPONSE */ + } + ++#ifdef CONFIG_USB_GADGET_PXA27X ++int write_ep0_zlp(void); ++#endif ++ + static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req) + { + struct eth_dev *dev = ep->driver_data; +@@ -1360,6 +1364,10 @@ static void rndis_command_complete (struct usb_ep *ep, struct usb_request *req) + status = rndis_msg_parser (dev->rndis_config, (u8 *) req->buf); + if (status < 0) + ERROR(dev, "%s: rndis parse error %d\n", __FUNCTION__, status); ++ ++#ifdef CONFIG_USB_GADGET_PXA27X ++ write_ep0_zlp(); ++#endif + spin_unlock(&dev->lock); + } + +@@ -2287,7 +2295,8 @@ eth_bind (struct usb_gadget *gadget) + struct eth_dev *dev; + struct net_device *net; + u8 cdc = 1, zlp = 1, rndis = 1; +- struct usb_ep *in_ep, *out_ep, *status_ep = NULL; ++ struct usb_ep *in_ep = NULL , *out_ep = NULL, *status_ep = NULL; ++ struct usb_endpoint_config ep_config[2]; + int status = -ENOMEM; + int gcnum; + +@@ -2386,7 +2395,30 @@ eth_bind (struct usb_gadget *gadget) + + /* all we really need is bulk IN/OUT */ + usb_ep_autoconfig_reset (gadget); +- in_ep = usb_ep_autoconfig (gadget, &fs_source_desc); ++ ++ ep_config[0].config = DEV_CONFIG_VALUE; ++#if defined(DEV_CONFIG_CDC) ++ ep_config[0].interface = data_intf.bInterfaceNumber; ++ ep_config[0].altinterface = data_intf.bAlternateSetting; ++#else /* DEV_CONFIG_SUBSET */ ++ ep_config[0].interface = subset_data_intf.bInterfaceNumber; ++ ep_config[0].altinterface = subset_data_intf.bAlternateSetting; ++#endif ++ ++#ifdef CONFIG_USB_ETH_RNDIS ++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE; ++#ifdef CONFIG_USB_GADGET_PXA27X ++ ep_config[1].interface = 0; ++#else ++ ep_config[1].interface = rndis_data_intf.bInterfaceNumber; ++#endif ++ ep_config[1].altinterface = rndis_data_intf.bAlternateSetting; ++ ++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2); ++#else ++ in_ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 1); ++#endif ++ + if (!in_ep) { + autoconf_fail: + dev_err (&gadget->dev, +@@ -2396,7 +2428,12 @@ autoconf_fail: + } + in_ep->driver_data = in_ep; /* claim */ + +- out_ep = usb_ep_autoconfig (gadget, &fs_sink_desc); ++#ifdef CONFIG_USB_ETH_RNDIS ++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2); ++#else ++ out_ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 1); ++#endif ++ + if (!out_ep) + goto autoconf_fail; + out_ep->driver_data = out_ep; /* claim */ +@@ -2406,7 +2443,25 @@ autoconf_fail: + * Since some hosts expect one, try to allocate one anyway. + */ + if (cdc || rndis) { +- status_ep = usb_ep_autoconfig (gadget, &fs_status_desc); ++#ifdef DEV_CONFIG_CDC ++ ep_config[0].config = DEV_CONFIG_VALUE; ++ ep_config[0].interface = control_intf.bInterfaceNumber; ++ ep_config[0].altinterface = control_intf.bAlternateSetting; ++#endif ++#ifdef CONFIG_USB_ETH_RNDIS ++ ep_config[1].config = DEV_RNDIS_CONFIG_VALUE; ++ ep_config[1].interface = rndis_control_intf.bInterfaceNumber; ++ ep_config[1].altinterface = rndis_control_intf.bAlternateSetting; ++#endif ++ ++#if defined(DEV_CONFIG_CDC) && defined(CONFIG_USB_ETH_RNDIS) ++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 2); ++#elif defined(CONFIG_USB_ETH_RNDIS) ++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[1], 1); ++#else ++ status_ep = usb_ep_autoconfig(gadget, &fs_status_desc, &ep_config[0], 1); ++#endif ++ + if (status_ep) { + status_ep->driver_data = status_ep; /* claim */ + } else if (rndis) { +diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c +index 965ad7b..b9cd8c9 100644 +--- a/drivers/usb/gadget/file_storage.c ++++ b/drivers/usb/gadget/file_storage.c +@@ -3841,6 +3841,7 @@ static int __init fsg_bind(struct usb_gadget *gadget) + struct usb_ep *ep; + struct usb_request *req; + char *pathbuf, *p; ++ struct usb_endpoint_config ep_config; + + fsg->gadget = gadget; + set_gadget_data(gadget, fsg); +@@ -3911,21 +3912,25 @@ static int __init fsg_bind(struct usb_gadget *gadget) + } + + /* Find all the endpoints we will use */ ++ ep_config.config = CONFIG_VALUE; ++ ep_config.interface = intf_desc.bInterfaceNumber; ++ ep_config.altinterface = intf_desc.bAlternateSetting; ++ + usb_ep_autoconfig_reset(gadget); +- ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc); ++ ep = usb_ep_autoconfig(gadget, &fs_bulk_in_desc, &ep_config, 1); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint + fsg->bulk_in = ep; + +- ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc); ++ ep = usb_ep_autoconfig(gadget, &fs_bulk_out_desc, &ep_config, 1); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint + fsg->bulk_out = ep; + + if (transport_is_cbi()) { +- ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc); ++ ep = usb_ep_autoconfig(gadget, &fs_intr_in_desc, &ep_config, 1); + if (!ep) + goto autoconf_fail; + ep->driver_data = fsg; // claim the endpoint +diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c +new file mode 100644 +index 0000000..d4270d4 +--- /dev/null ++++ b/drivers/usb/gadget/pxa27x_udc.c +@@ -0,0 +1,2387 @@ ++/* ++ * Handles the Intel 27x USB Device Controller (UDC) ++ * ++ * Copyright (C) 2002 Intrinsyc, Inc. (Frank Becker) ++ * Copyright (C) 2003 Robert Schwebel, Pengutronix ++ * Copyright (C) 2003 Benedikt Spranger, Pengutronix ++ * Copyright (C) 2003 David Brownell ++ * Copyright (C) 2003 Joshua Wise ++ * Copyright (C) 2004 Intel Corporation ++ * Copyright (C) 2005 SDG Systems, LLC (Aric Blumer) ++ * Copyright (C) 2005-2006 Openedhand Ltd. (Richard Purdie) ++ * ++ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ */ ++ ++#undef DEBUG ++//#define DEBUG 1 ++//#define VERBOSE DBG_VERBOSE ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++ ++/* ++ * This driver handles the USB Device Controller (UDC) in Intel's PXA 27x ++ * series processors. ++ * ++ * Such controller drivers work with a gadget driver. The gadget driver ++ * returns descriptors, implements configuration and data protocols used ++ * by the host to interact with this device, and allocates endpoints to ++ * the different protocol interfaces. The controller driver virtualizes ++ * usb hardware so that the gadget drivers will be more portable. ++ * ++ * This UDC hardware wants to implement a bit too much USB protocol. The ++ * biggest issue is that the endpoints have to be setup before the controller ++ * can be enabled and each endpoint can only have one configuration, interface ++ * and alternative interface number. Once enabled, these cannot be changed ++ * without a controller reset. ++ * ++ * Intel Errata #22 mentions issues when changing alternate interface. ++ * The exact meaning of this remains uncertain as gadget drivers using alternate ++ * interfaces such as CDC-Ethernet appear to work... ++ */ ++ ++#define DRIVER_VERSION "01-01-2006" ++#define DRIVER_DESC "PXA 27x USB Device Controller driver" ++ ++static const char driver_name [] = "pxa27x_udc"; ++ ++static const char ep0name [] = "ep0"; ++ ++ ++#define USE_DMA ++//#undef USE_DMA ++ ++#ifdef CONFIG_PROC_FS ++#define UDC_PROC_FILE ++#endif ++ ++#include "pxa27x_udc.h" ++ ++#ifdef USE_DMA ++static int use_dma = 1; ++module_param(use_dma, bool, 0); ++MODULE_PARM_DESC(use_dma, "true to use dma"); ++ ++static void dma_nodesc_handler(int dmach, void *_ep); ++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req); ++ ++#define DMASTR " (dma support)" ++ ++#else /* !USE_DMA */ ++#define DMASTR " (pio only)" ++#endif ++ ++#define UDCISR0_IR0 0x3 ++#define UDCISR_INT_MASK (UDC_INT_FIFOERROR | UDC_INT_PACKETCMP) ++#define UDCICR_INT_MASK UDCISR_INT_MASK ++ ++#define UDCCSR_MASK (UDCCSR_FST | UDCCSR_DME) ++ ++static void pxa27x_ep_fifo_flush(struct usb_ep *ep); ++static void nuke(struct pxa27x_ep *, int status); ++static void udc_init_ep(struct pxa27x_udc *dev); ++ ++ ++/* ++ * Endpoint Functions ++ */ ++static void pio_irq_enable(int ep_num) ++{ ++ if (ep_num < 16) ++ UDCICR0 |= 3 << (ep_num * 2); ++ else { ++ ep_num -= 16; ++ UDCICR1 |= 3 << (ep_num * 2); ++ } ++} ++ ++static void pio_irq_disable(int ep_num) ++{ ++ ep_num &= 0xf; ++ if (ep_num < 16) ++ UDCICR0 &= ~(3 << (ep_num * 2)); ++ else { ++ ep_num -= 16; ++ UDCICR1 &= ~(3 << (ep_num * 2)); ++ } ++} ++ ++/* The UDCCR reg contains mask and interrupt status bits, ++ * so using '|=' isn't safe as it may ack an interrupt. ++ */ ++#define UDCCR_MASK_BITS (UDCCR_OEN | UDCCR_UDE) ++ ++static inline void udc_set_mask_UDCCR(int mask) ++{ ++ UDCCR = (UDCCR & UDCCR_MASK_BITS) | (mask & UDCCR_MASK_BITS); ++} ++ ++static inline void udc_clear_mask_UDCCR(int mask) ++{ ++ UDCCR = (UDCCR & UDCCR_MASK_BITS) & ~(mask & UDCCR_MASK_BITS); ++} ++ ++static inline void udc_ack_int_UDCCR(int mask) ++{ ++ /* udccr contains the bits we dont want to change */ ++ __u32 udccr = UDCCR & UDCCR_MASK_BITS; ++ ++ UDCCR = udccr | (mask & ~UDCCR_MASK_BITS); ++} ++ ++/* ++ * Endpoint enable/disable ++ * ++ * Not much to do here as the ep_alloc function sets up most things. Once ++ * enabled, not much of the pxa27x configuration can be changed. ++ * ++ */ ++static int pxa27x_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ struct pxa27x_udc *dev; ++ ++ if (!_ep || !desc || _ep->name == ep0name ++ || desc->bDescriptorType != USB_DT_ENDPOINT ++ || ep->fifo_size < le16_to_cpu(desc->wMaxPacketSize)) { ++ dev_err(ep->dev->dev, "%s, bad ep or descriptor\n", __FUNCTION__); ++ return -EINVAL; ++ } ++ ++ /* xfer types must match, except that interrupt ~= bulk */ ++ if( ep->ep_type != USB_ENDPOINT_XFER_BULK ++ && desc->bmAttributes != USB_ENDPOINT_XFER_INT) { ++ dev_err(ep->dev->dev, "%s, %s type mismatch\n", __FUNCTION__, _ep->name); ++ return -EINVAL; ++ } ++ ++ /* hardware _could_ do smaller, but driver doesn't */ ++ if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK ++ && le16_to_cpu (desc->wMaxPacketSize) ++ != BULK_FIFO_SIZE) ++ || !desc->wMaxPacketSize) { ++ dev_err(ep->dev->dev, "%s, bad %s maxpacket\n", __FUNCTION__, _ep->name); ++ return -ERANGE; ++ } ++ ++ dev = ep->dev; ++ if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) { ++ dev_err(ep->dev->dev, "%s, bogus device state\n", __FUNCTION__); ++ return -ESHUTDOWN; ++ } ++ ++ ep->desc = desc; ++ ep->dma = -1; ++ ep->stopped = 0; ++ ep->pio_irqs = ep->dma_irqs = 0; ++ ep->usb_ep->maxpacket = le16_to_cpu(desc->wMaxPacketSize); ++ ++ /* flush fifo (mostly for OUT buffers) */ ++ pxa27x_ep_fifo_flush(_ep); ++ ++ /* ... reset halt state too, if we could ... */ ++ ++#ifdef USE_DMA ++ /* for (some) bulk and ISO endpoints, try to get a DMA channel and ++ * bind it to the endpoint. otherwise use PIO. ++ */ ++ dev_dbg(ep->dev->dev, "%s: called attributes=%d\n", __FUNCTION__, ep->ep_type); ++ switch (ep->ep_type) { ++ case USB_ENDPOINT_XFER_ISOC: ++ if (le16_to_cpu(desc->wMaxPacketSize) % 32) ++ break; ++ // fall through ++ case USB_ENDPOINT_XFER_BULK: ++ if (!use_dma || !ep->reg_drcmr) ++ break; ++ ep->dma = pxa_request_dma((char *)_ep->name, (le16_to_cpu(desc->wMaxPacketSize) > 64) ++ ? DMA_PRIO_MEDIUM : DMA_PRIO_LOW, dma_nodesc_handler, ep); ++ if (ep->dma >= 0) { ++ *ep->reg_drcmr = DRCMR_MAPVLD | ep->dma; ++ dev_dbg(ep->dev->dev, "%s using dma%d\n", _ep->name, ep->dma); ++ } ++ default: ++ break; ++ } ++#endif ++ DBG(DBG_VERBOSE, "enabled %s\n", _ep->name); ++ return 0; ++} ++ ++static int pxa27x_ep_disable(struct usb_ep *_ep) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ unsigned long flags; ++ ++ if (!_ep || !ep->desc) { ++ dev_err(ep->dev->dev, "%s, %s not enabled\n", __FUNCTION__, ++ _ep ? _ep->name : NULL); ++ return -EINVAL; ++ } ++ local_irq_save(flags); ++ nuke(ep, -ESHUTDOWN); ++ ++#ifdef USE_DMA ++ if (ep->dma >= 0) { ++ *ep->reg_drcmr = 0; ++ pxa_free_dma(ep->dma); ++ ep->dma = -1; ++ } ++#endif ++ ++ /* flush fifo (mostly for IN buffers) */ ++ pxa27x_ep_fifo_flush(_ep); ++ ++ ep->desc = 0; ++ ep->stopped = 1; ++ ++ local_irq_restore(flags); ++ DBG(DBG_VERBOSE, "%s disabled\n", _ep->name); ++ return 0; ++} ++ ++ ++ ++/* for the pxa27x, these can just wrap kmalloc/kfree. gadget drivers ++ * must still pass correctly initialized endpoints, since other controller ++ * drivers may care about how it's currently set up (dma issues etc). ++ */ ++ ++/* ++ * pxa27x_ep_alloc_request - allocate a request data structure ++ */ ++static struct usb_request * ++pxa27x_ep_alloc_request(struct usb_ep *_ep, unsigned gfp_flags) ++{ ++ struct pxa27x_request *req; ++ ++ req = kzalloc(sizeof *req, gfp_flags); ++ if (!req) ++ return 0; ++ ++ INIT_LIST_HEAD(&req->queue); ++ return &req->req; ++} ++ ++ ++/* ++ * pxa27x_ep_free_request - deallocate a request data structure ++ */ ++static void ++pxa27x_ep_free_request(struct usb_ep *_ep, struct usb_request *_req) ++{ ++ struct pxa27x_request *req; ++ ++ req = container_of(_req, struct pxa27x_request, req); ++ WARN_ON(!list_empty(&req->queue)); ++ kfree(req); ++} ++ ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* ++ * done - retire a request; caller blocked irqs ++ */ ++static void done(struct pxa27x_ep *ep, struct pxa27x_request *req, int status) ++{ ++ list_del_init(&req->queue); ++ if (likely (req->req.status == -EINPROGRESS)) ++ req->req.status = status; ++ else ++ status = req->req.status; ++ ++ if (status && status != -ESHUTDOWN) ++ DBG(DBG_VERBOSE, "complete %s req %p stat %d len %u/%u\n", ++ ep->usb_ep->name, &req->req, status, ++ req->req.actual, req->req.length); ++ ++ /* don't modify queue heads during completion callback */ ++ req->req.complete(ep->usb_ep, &req->req); ++} ++ ++ ++static inline void ep0_idle(struct pxa27x_udc *dev) ++{ ++ dev->ep0state = EP0_IDLE; ++} ++ ++static int write_packet(volatile u32 *uddr, struct pxa27x_request *req, unsigned max) ++{ ++ u32 *buf; ++ int length, count, remain; ++ ++ buf = (u32*)(req->req.buf + req->req.actual); ++ prefetch(buf); ++ ++ /* how big will this packet be? */ ++ length = min(req->req.length - req->req.actual, max); ++ req->req.actual += length; ++ ++ remain = length & 0x3; ++ count = length & ~(0x3); ++ ++ //dev_dbg(ep->dev->dev, "Length %d, Remain %d, Count %d\n",length, remain, count); ++ ++ while (likely(count)) { ++ //dev_dbg(ep->dev->dev, "Sending:0x%x\n", *buf); ++ *uddr = *buf++; ++ count -= 4; ++ } ++ ++ if (remain) { ++ volatile u8* reg=(u8*)uddr; ++ char *rd =(u8*)buf; ++ ++ while (remain--) { ++ *reg=*rd++; ++ } ++ } ++ ++ return length; ++} ++ ++/* ++ * write to an IN endpoint fifo, as many packets as possible. ++ * irqs will use this to write the rest later. ++ * caller guarantees at least one packet buffer is ready (or a zlp). ++ */ ++static int ++write_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) ++{ ++ unsigned max; ++ ++ max = le16_to_cpu(ep->desc->wMaxPacketSize); ++ do { ++ int count, is_last, is_short; ++ ++ //dev_dbg(ep->dev->dev, "write_fifo7 %x\n", *ep->reg_udccsr); ++ ++ if (*ep->reg_udccsr & UDCCSR_PC) { ++ //dev_dbg(ep->dev->dev, "Transmit Complete\n"); ++ *ep->reg_udccsr = UDCCSR_PC | (*ep->reg_udccsr & UDCCSR_MASK); ++ } ++ ++ if (*ep->reg_udccsr & UDCCSR_TRN) { ++ //dev_dbg(ep->dev->dev, "Clearing Underrun\n"); ++ *ep->reg_udccsr = UDCCSR_TRN | (*ep->reg_udccsr & UDCCSR_MASK); ++ } ++ //dev_dbg(ep->dev->dev, "write_fifo8 %x\n", *ep->reg_udccsr); ++ ++ count = write_packet(ep->reg_udcdr, req, max); ++ ++ /* last packet is usually short (or a zlp) */ ++ if (unlikely (count != max)) ++ is_last = is_short = 1; ++ else { ++ if (likely(req->req.length != req->req.actual) ++ || req->req.zero) ++ is_last = 0; ++ else ++ is_last = 1; ++ /* interrupt/iso maxpacket may not fill the fifo */ ++ is_short = unlikely (max < ep->fifo_size); ++ } ++ ++ //dev_dbg(ep->dev->dev, "write_fifo0 %x\n", *ep->reg_udccsr); ++ ++ dev_dbg(ep->dev->dev, "wrote %s count:%d bytes%s%s %d left %p\n", ++ ep->usb_ep->name, count, ++ is_last ? "/L" : "", is_short ? "/S" : "", ++ req->req.length - req->req.actual, &req->req); ++ ++ /* let loose that packet. maybe try writing another one, ++ * double buffering might work. ++ */ ++ ++ if (is_short) ++ *ep->reg_udccsr = UDCCSR_SP | (*ep->reg_udccsr & UDCCSR_MASK); ++ ++ dev_dbg(ep->dev->dev, "write_fifo0.5 %x\n", *ep->reg_udccsr); ++ ++ /* requests complete when all IN data is in the FIFO */ ++ if (is_last) { ++ done(ep, req, 0); ++ if (list_empty(&ep->queue) || unlikely(ep->dma >= 0)) { ++ pio_irq_disable(ep->pxa_ep_num); ++ //dev_dbg(ep->dev->dev, "write_fifo1 %x\n", *ep->reg_udccsr); ++#ifdef USE_DMA ++ /* unaligned data and zlps couldn't use dma */ ++ if (unlikely(!list_empty(&ep->queue))) { ++ req = list_entry(ep->queue.next, ++ struct pxa27x_request, queue); ++ kick_dma(ep,req); ++ return 0; ++ } ++#endif ++ } ++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr); ++ return 1; ++ } ++ ++ // TODO experiment: how robust can fifo mode tweaking be? ++ // double buffering is off in the default fifo mode, which ++ // prevents TFS from being set here. ++ ++ } while (*ep->reg_udccsr & UDCCSR_FS); ++ //dev_dbg(ep->dev->dev, "write_fifo2 %x\n", *ep->reg_udccsr); ++ return 0; ++} ++ ++/* caller asserts req->pending (ep0 irq status nyet cleared); starts ++ * ep0 data stage. these chips want very simple state transitions. ++ */ ++static inline ++void ep0start(struct pxa27x_udc *dev, u32 flags, const char *tag) ++{ ++ UDCCSR0 = flags|UDCCSR0_SA|UDCCSR0_OPC; ++ UDCISR0 = UDCICR_INT(0, UDC_INT_FIFOERROR | UDC_INT_PACKETCMP); ++ dev->req_pending = 0; ++ DBG(DBG_VERY_NOISY, "%s %s, %02x/%02x\n", ++ __FUNCTION__, tag, UDCCSR0, flags); ++} ++ ++static int ++write_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) ++{ ++ unsigned count; ++ int is_short; ++ ++ count = write_packet(&UDCDR0, req, EP0_FIFO_SIZE); ++ ep->dev->stats.write.bytes += count; ++ ++ /* last packet "must be" short (or a zlp) */ ++ is_short = (count != EP0_FIFO_SIZE); ++ ++ DBG(DBG_VERY_NOISY, "ep0in %d bytes %d left %p\n", count, ++ req->req.length - req->req.actual, &req->req); ++ ++ if (unlikely (is_short)) { ++ if (ep->dev->req_pending) ++ ep0start(ep->dev, UDCCSR0_IPR, "short IN"); ++ else ++ UDCCSR0 = UDCCSR0_IPR; ++ ++ count = req->req.length; ++ done(ep, req, 0); ++ ep0_idle(ep->dev); ++#if 0 ++ /* This seems to get rid of lost status irqs in some cases: ++ * host responds quickly, or next request involves config ++ * change automagic, or should have been hidden, or ... ++ * ++ * FIXME get rid of all udelays possible... ++ */ ++ if (count >= EP0_FIFO_SIZE) { ++ count = 100; ++ do { ++ if ((UDCCSR0 & UDCCSR0_OPC) != 0) { ++ /* clear OPC, generate ack */ ++ UDCCSR0 = UDCCSR0_OPC; ++ break; ++ } ++ count--; ++ udelay(1); ++ } while (count); ++ } ++#endif ++ } else if (ep->dev->req_pending) ++ ep0start(ep->dev, 0, "IN"); ++ return is_short; ++} ++ ++ ++/* ++ * read_fifo - unload packet(s) from the fifo we use for usb OUT ++ * transfers and put them into the request. caller should have made ++ * sure there's at least one packet ready. ++ * ++ * returns true if the request completed because of short packet or the ++ * request buffer having filled (and maybe overran till end-of-packet). ++ */ ++static int read_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) ++{ ++ for (;;) { ++ u32 *buf; ++ int bufferspace, count, is_short; ++ ++ /* make sure there's a packet in the FIFO.*/ ++ if (unlikely ((*ep->reg_udccsr & UDCCSR_PC) == 0)) ++ break; ++ buf =(u32*) (req->req.buf + req->req.actual); ++ prefetchw(buf); ++ bufferspace = req->req.length - req->req.actual; ++ ++ /* read all bytes from this packet */ ++ if (likely (*ep->reg_udccsr & UDCCSR_BNE)) { ++ count = 0x3ff & *ep->reg_udcbcr; ++ req->req.actual += min(count, bufferspace); ++ } else /* zlp */ ++ count = 0; ++ ++ is_short = (count < ep->usb_ep->maxpacket); ++ dev_dbg(ep->dev->dev, "read %s udccsr:%02x, count:%d bytes%s req %p %d/%d\n", ++ ep->usb_ep->name, *ep->reg_udccsr, count, ++ is_short ? "/S" : "", ++ &req->req, req->req.actual, req->req.length); ++ ++ count = min(count, bufferspace); ++ while (likely (count > 0)) { ++ *buf++ = *ep->reg_udcdr; ++ count -= 4; ++ } ++ dev_dbg(ep->dev->dev, "Buf:0x%p\n", req->req.buf); ++ ++ *ep->reg_udccsr = UDCCSR_PC; ++ /* RPC/RSP/RNE could now reflect the other packet buffer */ ++ ++ /* completion */ ++ if (is_short || req->req.actual == req->req.length) { ++ done(ep, req, 0); ++ if (list_empty(&ep->queue)) ++ pio_irq_disable(ep->pxa_ep_num); ++ return 1; ++ } ++ ++ /* finished that packet. the next one may be waiting... */ ++ } ++ return 0; ++} ++ ++/* ++ * special ep0 version of the above. no UBCR0 or double buffering; status ++ * handshaking is magic. most device protocols don't need control-OUT. ++ * CDC vendor commands (and RNDIS), mass storage CB/CBI, and some other ++ * protocols do use them. ++ */ ++static int read_ep0_fifo(struct pxa27x_ep *ep, struct pxa27x_request *req) ++{ ++ u32 *buf, word; ++ unsigned bufferspace; ++ ++ buf = (u32*) (req->req.buf + req->req.actual); ++ bufferspace = req->req.length - req->req.actual; ++ ++ while (UDCCSR0 & UDCCSR0_RNE) { ++ word = UDCDR0; ++ ++ if (unlikely (bufferspace == 0)) { ++ /* this happens when the driver's buffer ++ * is smaller than what the host sent. ++ * discard the extra data. ++ */ ++ if (req->req.status != -EOVERFLOW) ++ dev_info(ep->dev->dev, "%s overflow\n", ep->usb_ep->name); ++ req->req.status = -EOVERFLOW; ++ } else { ++ *buf++ = word; ++ req->req.actual += 4; ++ bufferspace -= 4; ++ } ++ } ++ ++ UDCCSR0 = UDCCSR0_OPC ; ++ ++ /* completion */ ++ if (req->req.actual >= req->req.length) ++ return 1; ++ ++ /* finished that packet. the next one may be waiting... */ ++ return 0; ++} ++ ++#ifdef USE_DMA ++ ++#define MAX_IN_DMA ((DCMD_LENGTH + 1) - BULK_FIFO_SIZE) ++static void kick_dma(struct pxa27x_ep *ep, struct pxa27x_request *req) ++{ ++ u32 dcmd = 0; ++ u32 len = req->req.length; ++ u32 buf = req->req.dma; ++ u32 fifo = io_v2p((u32)ep->reg_udcdr); ++ ++ buf += req->req.actual; ++ len -= req->req.actual; ++ ep->dma_con = 0; ++ ++ DMSG("%s: req:0x%p length:%d, actual:%d dma:%d\n", ++ __FUNCTION__, &req->req, req->req.length, ++ req->req.actual,ep->dma); ++ ++ /* no-descriptor mode can be simple for bulk-in, iso-in, iso-out */ ++ DCSR(ep->dma) = DCSR_NODESC; ++ if (buf & 0x3) ++ DALGN |= 1 << ep->dma; ++ else ++ DALGN &= ~(1 << ep->dma); ++ ++ if (ep->dir_in) { ++ DSADR(ep->dma) = buf; ++ DTADR(ep->dma) = fifo; ++ if (len > MAX_IN_DMA) { ++ len= MAX_IN_DMA; ++ ep->dma_con =1 ; ++ } else if (len >= ep->usb_ep->maxpacket) { ++ if ((ep->dma_con = (len % ep->usb_ep->maxpacket) != 0)) ++ len = ep->usb_ep->maxpacket; ++ } ++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN ++ | DCMD_FLOWTRG | DCMD_INCSRCADDR; ++ } else { ++ DSADR(ep->dma) = fifo; ++ DTADR(ep->dma) = buf; ++ dcmd = len | DCMD_BURST32 | DCMD_WIDTH4 | DCMD_ENDIRQEN ++ | DCMD_FLOWSRC | DCMD_INCTRGADDR; ++ } ++ *ep->reg_udccsr = UDCCSR_DME; ++ DCMD(ep->dma) = dcmd; ++ DCSR(ep->dma) = DCSR_NODESC | DCSR_EORIRQEN \ ++ | ((ep->dir_in) ? DCSR_STOPIRQEN : 0); ++ *ep->reg_drcmr = ep->dma | DRCMR_MAPVLD; ++ DCSR(ep->dma) |= DCSR_RUN; ++} ++ ++static void cancel_dma(struct pxa27x_ep *ep) ++{ ++ struct pxa27x_request *req; ++ u32 tmp; ++ ++ if (DCSR(ep->dma) == 0 || list_empty(&ep->queue)) ++ return; ++ ++ DMSG("hehe dma:%d,dcsr:0x%x\n", ep->dma, DCSR(ep->dma)); ++ DCSR(ep->dma) = 0; ++ while ((DCSR(ep->dma) & DCSR_STOPSTATE) == 0) ++ cpu_relax(); ++ ++ req = list_entry(ep->queue.next, struct pxa27x_request, queue); ++ tmp = DCMD(ep->dma) & DCMD_LENGTH; ++ req->req.actual = req->req.length - tmp; ++ ++ /* the last tx packet may be incomplete, so flush the fifo. ++ * FIXME correct req.actual if we can ++ */ ++ *ep->reg_udccsr = UDCCSR_FEF; ++} ++ ++static void dma_nodesc_handler(int dmach, void *_ep) ++{ ++ struct pxa27x_ep *ep = _ep; ++ struct pxa27x_request *req, *req_next; ++ u32 dcsr, tmp, completed; ++ ++ local_irq_disable(); ++ ++ req = list_entry(ep->queue.next, struct pxa27x_request, queue); ++ ++ DMSG("%s, buf:0x%p\n",__FUNCTION__, req->req.buf); ++ ++ ep->dma_irqs++; ++ ep->dev->stats.irqs++; ++ ++ completed = 0; ++ ++ dcsr = DCSR(dmach); ++ DCSR(ep->dma) &= ~DCSR_RUN; ++ ++ if (dcsr & DCSR_BUSERR) { ++ DCSR(dmach) = DCSR_BUSERR; ++ dev_err(ep->dev->dev, "DMA Bus Error\n"); ++ req->req.status = -EIO; ++ completed = 1; ++ } else if (dcsr & DCSR_ENDINTR) { ++ DCSR(dmach) = DCSR_ENDINTR; ++ if (ep->dir_in) { ++ tmp = req->req.length - req->req.actual; ++ /* Last packet is a short one*/ ++ if (tmp < ep->usb_ep->maxpacket) { ++ int count = 0; ++ ++ *ep->reg_udccsr = UDCCSR_SP | \ ++ (*ep->reg_udccsr & UDCCSR_MASK); ++ /*Wait for packet out */ ++ while( (count++ < 10000) && \ ++ !(*ep->reg_udccsr & UDCCSR_FS)); ++ if (count >= 10000) ++ DMSG("Failed to send packet\n"); ++ else ++ DMSG("%s: short packet sent len:%d," ++ "length:%d,actual:%d\n", __FUNCTION__, ++ tmp, req->req.length, req->req.actual); ++ req->req.actual = req->req.length; ++ completed = 1; ++ /* There are still packets to transfer */ ++ } else if ( ep->dma_con) { ++ DMSG("%s: more packets,length:%d,actual:%d\n", ++ __FUNCTION__,req->req.length, ++ req->req.actual); ++ req->req.actual += ep->usb_ep->maxpacket; ++ completed = 0; ++ } else { ++ DMSG("%s: no more packets,length:%d," ++ "actual:%d\n", __FUNCTION__, ++ req->req.length, req->req.actual); ++ req->req.actual = req->req.length; ++ completed = 1; ++ } ++ } else { ++ req->req.actual = req->req.length; ++ completed = 1; ++ } ++ } else if (dcsr & DCSR_EORINTR) { //Only happened in OUT DMA ++ int remain,udccsr ; ++ ++ DCSR(dmach) = DCSR_EORINTR; ++ remain = DCMD(dmach) & DCMD_LENGTH; ++ req->req.actual = req->req.length - remain; ++ ++ udccsr = *ep->reg_udccsr; ++ if (udccsr & UDCCSR_SP) { ++ *ep->reg_udccsr = UDCCSR_PC | (udccsr & UDCCSR_MASK); ++ completed = 1; ++ } ++ DMSG("%s: length:%d actual:%d\n", ++ __FUNCTION__, req->req.length, req->req.actual); ++ } else ++ DMSG("%s: Others dma:%d DCSR:0x%x DCMD:0x%x\n", ++ __FUNCTION__, dmach, DCSR(dmach), DCMD(dmach)); ++ ++ if (likely(completed)) { ++ if (req->queue.next != &ep->queue) { ++ req_next = list_entry(req->queue.next, ++ struct pxa27x_request, queue); ++ kick_dma(ep, req_next); ++ } ++ done(ep, req, 0); ++ } else { ++ kick_dma(ep, req); ++ } ++ ++ local_irq_enable(); ++} ++ ++#endif ++/*-------------------------------------------------------------------------*/ ++ ++static int ++pxa27x_ep_queue(struct usb_ep *_ep, struct usb_request *_req, unsigned gfp_flags) ++{ ++ struct pxa27x_virt_ep *virt_ep; ++ struct pxa27x_ep *ep; ++ struct pxa27x_request *req; ++ struct pxa27x_udc *dev; ++ unsigned long flags; ++ ++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ ep = virt_ep->pxa_ep; ++ ++ req = container_of(_req, struct pxa27x_request, req); ++ if (unlikely (!_req || !_req->complete || !_req->buf|| ++ !list_empty(&req->queue))) { ++ DMSG("%s, bad params\n", __FUNCTION__); ++ return -EINVAL; ++ } ++ ++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name))) { ++ DMSG("%s, bad ep\n", __FUNCTION__); ++ return -EINVAL; ++ } ++ ++ DMSG("%s, ep point %d is queue\n", __FUNCTION__, ep->ep_num); ++ ++ dev = ep->dev; ++ if (unlikely (!dev->driver ++ || dev->gadget.speed == USB_SPEED_UNKNOWN)) { ++ DMSG("%s, bogus device state\n", __FUNCTION__); ++ return -ESHUTDOWN; ++ } ++ ++ /* iso is always one packet per request, that's the only way ++ * we can report per-packet status. that also helps with dma. ++ */ ++ if (unlikely (ep->ep_type == USB_ENDPOINT_XFER_ISOC ++ && req->req.length > le16_to_cpu ++ (ep->desc->wMaxPacketSize))) ++ return -EMSGSIZE; ++ ++#ifdef USE_DMA ++ // FIXME caller may already have done the dma mapping ++ if (ep->dma >= 0) { ++ _req->dma = dma_map_single(dev->dev, _req->buf, _req->length, ++ (ep->dir_in) ? DMA_TO_DEVICE : DMA_FROM_DEVICE); ++ } ++#endif ++ ++ DBG(DBG_NOISY, "%s queue req %p, len %d buf %p\n", ++ _ep->name, _req, _req->length, _req->buf); ++ ++ local_irq_save(flags); ++ ++ _req->status = -EINPROGRESS; ++ _req->actual = 0; ++ ++ /* kickstart this i/o queue? */ ++ if (list_empty(&ep->queue) && !ep->stopped) { ++ if (ep->desc == 0 /* ep0 */) { ++ unsigned length = _req->length; ++ ++ switch (dev->ep0state) { ++ case EP0_IN_DATA_PHASE: ++ dev->stats.write.ops++; ++ if (write_ep0_fifo(ep, req)) ++ req = 0; ++ break; ++ ++ case EP0_OUT_DATA_PHASE: ++ dev->stats.read.ops++; ++ if (dev->req_pending) ++ ep0start(dev, UDCCSR0_IPR, "OUT"); ++ if (length == 0 || ((UDCCSR0 & UDCCSR0_RNE) != 0 ++ && read_ep0_fifo(ep, req))) { ++ ep0_idle(dev); ++ done(ep, req, 0); ++ req = 0; ++ } ++ break; ++ case EP0_NO_ACTION: ++ ep0_idle(dev); ++ req=0; ++ break; ++ default: ++ DMSG("ep0 i/o, odd state %d\n", dev->ep0state); ++ local_irq_restore (flags); ++ return -EL2HLT; ++ } ++#ifdef USE_DMA ++ /* either start dma or prime pio pump */ ++ } else if (ep->dma >= 0) { ++ kick_dma(ep, req); ++#endif ++ /* can the FIFO can satisfy the request immediately? */ ++ } else if (ep->dir_in && (*ep->reg_udccsr & UDCCSR_FS) != 0 ++ && write_fifo(ep, req)) { ++ req = 0; ++ } else if ((*ep->reg_udccsr & UDCCSR_FS) != 0 ++ && read_fifo(ep, req)) { ++ req = 0; ++ } ++ DMSG("req:%p,ep->desc:%p,ep->dma:%d\n", req, ep->desc, ep->dma); ++ if (likely (req && ep->desc) && ep->dma < 0) ++ pio_irq_enable(ep->pxa_ep_num); ++ } ++ ++ /* pio or dma irq handler advances the queue. */ ++ if (likely (req != 0)) ++ list_add_tail(&req->queue, &ep->queue); ++ local_irq_restore(flags); ++ ++ return 0; ++} ++ ++ ++/* ++ * nuke - dequeue ALL requests ++ */ ++static void nuke(struct pxa27x_ep *ep, int status) ++{ ++ struct pxa27x_request *req; ++ ++ /* called with irqs blocked */ ++#ifdef USE_DMA ++ if (ep->dma >= 0 && !ep->stopped) ++ cancel_dma(ep); ++#endif ++ while (!list_empty(&ep->queue)) { ++ req = list_entry(ep->queue.next, struct pxa27x_request, queue); ++ done(ep, req, status); ++ } ++ if (ep->desc) ++ pio_irq_disable(ep->pxa_ep_num); ++} ++ ++ ++/* dequeue JUST ONE request */ ++static int pxa27x_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ struct pxa27x_request *req; ++ unsigned long flags; ++ ++ if (!_ep || _ep->name == ep0name) ++ return -EINVAL; ++ ++ local_irq_save(flags); ++ ++ /* make sure it's actually queued on this endpoint */ ++ list_for_each_entry(req, &ep->queue, queue) { ++ if (&req->req == _req) ++ break; ++ } ++ if (&req->req != _req) { ++ local_irq_restore(flags); ++ return -EINVAL; ++ } ++ ++#ifdef USE_DMA ++ if (ep->dma >= 0 && ep->queue.next == &req->queue && !ep->stopped) { ++ cancel_dma(ep); ++ done(ep, req, -ECONNRESET); ++ /* restart i/o */ ++ if (!list_empty(&ep->queue)) { ++ req = list_entry(ep->queue.next, ++ struct pxa27x_request, queue); ++ kick_dma(ep, req); ++ } ++ } else ++#endif ++ done(ep, req, -ECONNRESET); ++ ++ local_irq_restore(flags); ++ return 0; ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static int pxa27x_ep_set_halt(struct usb_ep *_ep, int value) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ unsigned long flags; ++ ++ DMSG("%s is called\n", __FUNCTION__); ++ if (unlikely (!_ep || (!ep->desc && _ep->name != ep0name)) ++ || ep->ep_type == USB_ENDPOINT_XFER_ISOC) { ++ DMSG("%s, bad ep\n", __FUNCTION__); ++ return -EINVAL; ++ } ++ if (value == 0) { ++ /* this path (reset toggle+halt) is needed to implement ++ * SET_INTERFACE on normal hardware. but it can't be ++ * done from software on the PXA UDC, and the hardware ++ * forgets to do it as part of SET_INTERFACE automagic. ++ */ ++ DMSG("only host can clear %s halt\n", _ep->name); ++ return -EROFS; ++ } ++ ++ local_irq_save(flags); ++ ++ if (ep->dir_in && ((*ep->reg_udccsr & UDCCSR_FS) == 0 ++ || !list_empty(&ep->queue))) { ++ local_irq_restore(flags); ++ return -EAGAIN; ++ } ++ ++ /* FST bit is the same for control, bulk in, bulk out, interrupt in */ ++ *ep->reg_udccsr = UDCCSR_FST|UDCCSR_FEF; ++ ++ /* ep0 needs special care */ ++ if (!ep->desc) { ++ start_watchdog(ep->dev); ++ ep->dev->req_pending = 0; ++ ep->dev->ep0state = EP0_STALL; ++ ++ /* and bulk/intr endpoints like dropping stalls too */ ++ } else { ++ unsigned i; ++ for (i = 0; i < 1000; i += 20) { ++ if (*ep->reg_udccsr & UDCCSR_SST) ++ break; ++ udelay(20); ++ } ++ } ++ local_irq_restore(flags); ++ ++ DBG(DBG_VERBOSE, "%s halt\n", _ep->name); ++ return 0; ++} ++ ++static int pxa27x_ep_fifo_status(struct usb_ep *_ep) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ ++ if (!_ep) { ++ DMSG("%s, bad ep\n", __FUNCTION__); ++ return -ENODEV; ++ } ++ /* pxa can't report unclaimed bytes from IN fifos */ ++ if (ep->dir_in) ++ return -EOPNOTSUPP; ++ if (ep->dev->gadget.speed == USB_SPEED_UNKNOWN ++ || (*ep->reg_udccsr & UDCCSR_FS) == 0) ++ return 0; ++ else ++ return (*ep->reg_udcbcr & 0xfff) + 1; ++} ++ ++static void pxa27x_ep_fifo_flush(struct usb_ep *_ep) ++{ ++ struct pxa27x_virt_ep *virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ struct pxa27x_ep *ep = virt_ep->pxa_ep; ++ ++ DMSG("pxa27x_ep_fifo_flush\n"); ++ ++ if (!_ep || _ep->name == ep0name || !list_empty(&ep->queue)) { ++ DMSG("%s, bad ep\n", __FUNCTION__); ++ return; ++ } ++ ++ /* toggle and halt bits stay unchanged */ ++ ++ /* for OUT, just read and discard the FIFO contents. */ ++ if (!ep->dir_in) { ++ while (((*ep->reg_udccsr) & UDCCSR_BNE) != 0) ++ (void) *ep->reg_udcdr; ++ return; ++ } ++ ++ /* most IN status is the same, but ISO can't stall */ ++ *ep->reg_udccsr = UDCCSR_PC|UDCCSR_FST|UDCCSR_TRN ++ | (ep->ep_type == USB_ENDPOINT_XFER_ISOC) ++ ? 0 : UDCCSR_SST; ++} ++ ++ ++static struct usb_ep_ops pxa27x_ep_ops = { ++ .enable = pxa27x_ep_enable, ++ .disable = pxa27x_ep_disable, ++ ++ .alloc_request = pxa27x_ep_alloc_request, ++ .free_request = pxa27x_ep_free_request, ++ ++ .queue = pxa27x_ep_queue, ++ .dequeue = pxa27x_ep_dequeue, ++ ++ .set_halt = pxa27x_ep_set_halt, ++ .fifo_status = pxa27x_ep_fifo_status, ++ .fifo_flush = pxa27x_ep_fifo_flush, ++}; ++ ++ ++/* --------------------------------------------------------------------------- ++ * device-scoped parts of the api to the usb controller hardware ++ * --------------------------------------------------------------------------- ++ */ ++ ++static inline unsigned int validate_fifo_size(u8 bmAttributes) ++{ ++ switch (bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { ++ case USB_ENDPOINT_XFER_CONTROL: ++ return EP0_FIFO_SIZE; ++ break; ++ case USB_ENDPOINT_XFER_ISOC: ++ return ISO_FIFO_SIZE; ++ break; ++ case USB_ENDPOINT_XFER_BULK: ++ return BULK_FIFO_SIZE; ++ break; ++ case USB_ENDPOINT_XFER_INT: ++ return INT_FIFO_SIZE; ++ break; ++ default: ++ break; ++ } ++} ++ ++static void pxa27x_ep_free(struct usb_gadget *gadget, struct usb_ep *_ep) ++{ ++ struct pxa27x_udc *dev = the_controller; ++ struct pxa27x_virt_ep *virt_ep; ++ int i; ++ ++ virt_ep = container_of(_ep, struct pxa27x_virt_ep, usb_ep); ++ ++ for (i = 1; i < UDC_EP_NUM; i++) { ++ if (dev->ep[i].usb_ep == &virt_ep->usb_ep) { ++ if (dev->ep[i].desc) { ++ virt_ep->pxa_ep = &dev->ep[i]; ++ pxa27x_ep_disable(&virt_ep->usb_ep); ++ } ++ dev->ep[i].usb_ep = NULL; ++ } ++ } ++ ++ if (!list_empty(&virt_ep->usb_ep.ep_list)) ++ list_del_init(&virt_ep->usb_ep.ep_list); ++ ++ kfree(virt_ep->usb_ep.name); ++ kfree(virt_ep); ++} ++ ++static void pxa27x_ep_freeall(struct usb_gadget *gadget) ++{ ++ struct pxa27x_udc *dev = the_controller; ++ int i; ++ ++ for (i = 1; i < UDC_EP_NUM; i++) { ++ if(dev->ep[i].usb_ep) ++ pxa27x_ep_free(gadget, dev->ep[i].usb_ep); ++ } ++} ++ ++#define NAME_SIZE 18 ++ ++static int pxa27x_find_free_ep(struct pxa27x_udc *dev) ++{ ++ int i; ++ for (i = 1; i < UDC_EP_NUM; i++) { ++ if(!dev->ep[i].assigned) ++ return i; ++ } ++ return -1; ++} ++ ++/* ++ * Endpoint Allocation/Configuration ++ * ++ * pxa27x endpoint configuration is fixed when the device is enabled. Any pxa ++ * endpoint is only active in one configuration, interface and alternate ++ * interface combination so to support gadget drivers, we map one usb_ep to ++ * one of several pxa ep's. One pxa endpoint is assigned per configuration ++ * combination. ++ */ ++static struct usb_ep* pxa27x_ep_alloc(struct usb_gadget *gadget, struct usb_endpoint_descriptor *desc, ++ struct usb_endpoint_config *epconfig, int configs) ++{ ++ struct pxa27x_udc *dev = the_controller; ++ struct pxa27x_virt_ep *virt_ep; ++ unsigned int i, fifo_size; ++ char *name; ++ ++ if (unlikely(configs < 1)) { ++ dev_err(dev->dev, "%s: Error in config data\n", __FUNCTION__); ++ return NULL; ++ } ++ ++ virt_ep = kmalloc(sizeof(struct pxa27x_virt_ep), GFP_KERNEL); ++ name = kmalloc(NAME_SIZE, GFP_KERNEL); ++ if (!virt_ep || !name) { ++ dev_err(dev->dev, "%s: -ENOMEM\n", __FUNCTION__); ++ kfree(name); ++ kfree(virt_ep); ++ return NULL; ++ } ++ ++ if (!(desc->wMaxPacketSize)) { ++ fifo_size = validate_fifo_size(desc->bmAttributes); ++ desc->wMaxPacketSize = fifo_size; ++ } else { ++ fifo_size = desc->wMaxPacketSize; ++ } ++ ++ DMSG("pxa27x_ep_alloc: bLength: %d, bDescriptorType: %x, bEndpointAddress: %x,\n" ++ " bmAttributes: %x, wMaxPacketSize: %d\n", desc->bLength, ++ desc->bDescriptorType, desc->bEndpointAddress, desc->bmAttributes, ++ desc->wMaxPacketSize); ++ ++ if (!(desc->bEndpointAddress & 0xF)) ++ desc->bEndpointAddress |= dev->ep_num; ++ ++ for (i = 0; i < configs; i++) ++ { ++ struct pxa27x_ep *pxa_ep; ++ int j; ++ ++ DMSG("pxa27x_ep_alloc: config: %d, interface: %d, altinterface: %x,\n", ++ epconfig->config, epconfig->interface, epconfig->altinterface); ++ ++ j = pxa27x_find_free_ep(dev); ++ ++ if (unlikely(j < 0)) { ++ dev_err(dev->dev, "pxa27x_ep_alloc: Failed to find a spare endpoint\n"); ++ pxa27x_ep_free(gadget, &virt_ep->usb_ep); ++ return NULL; ++ } ++ ++ pxa_ep = &dev->ep[j]; ++ ++ if (i == 0) ++ virt_ep->pxa_ep = pxa_ep; ++ ++ pxa_ep->assigned = 1; ++ pxa_ep->ep_num = dev->ep_num; ++ pxa_ep->pxa_ep_num = j; ++ pxa_ep->usb_ep = &virt_ep->usb_ep; ++ pxa_ep->dev = dev; ++ pxa_ep->desc = desc; ++ pxa_ep->pio_irqs = pxa_ep->dma_irqs = 0; ++ pxa_ep->dma = -1; ++ ++ pxa_ep->fifo_size = fifo_size; ++ pxa_ep->dir_in = (desc->bEndpointAddress & USB_DIR_IN) ? 1 : 0; ++ pxa_ep->ep_type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; ++ pxa_ep->stopped = 1; ++ pxa_ep->dma_con = 0; ++ pxa_ep->config = epconfig->config; ++ pxa_ep->interface = epconfig->interface; ++ pxa_ep->aisn = epconfig->altinterface; ++ ++ pxa_ep->reg_udccsr = &UDCCSR0 + j; ++ pxa_ep->reg_udcbcr = &UDCBCR0 + j; ++ pxa_ep->reg_udcdr = &UDCDR0 + j ; ++ pxa_ep->reg_udccr = &UDCCRA - 1 + j; ++#ifdef USE_DMA ++ pxa_ep->reg_drcmr = &DRCMR24 + j; ++#endif ++ ++ /* Configure UDCCR */ ++ *pxa_ep->reg_udccr = ((pxa_ep->config << UDCCONR_CN_S) & UDCCONR_CN) ++ | ((pxa_ep->interface << UDCCONR_IN_S) & UDCCONR_IN) ++ | ((pxa_ep->aisn << UDCCONR_AISN_S) & UDCCONR_AISN) ++ | ((dev->ep_num << UDCCONR_EN_S) & UDCCONR_EN) ++ | ((pxa_ep->ep_type << UDCCONR_ET_S) & UDCCONR_ET) ++ | ((pxa_ep->dir_in) ? UDCCONR_ED : 0) ++ | ((min(pxa_ep->fifo_size, (unsigned)desc->wMaxPacketSize) << UDCCONR_MPS_S ) & UDCCONR_MPS) ++ | UDCCONR_EE; ++// | UDCCONR_DE | UDCCONR_EE; ++ ++ ++ ++#ifdef USE_DMA ++ /* Only BULK use DMA */ ++ if ((pxa_ep->ep_type & USB_ENDPOINT_XFERTYPE_MASK)\ ++ == USB_ENDPOINT_XFER_BULK) ++ *pxa_ep->reg_udccsr = UDCCSR_DME; ++#endif ++ ++ DMSG("UDCCR: 0x%p is 0x%x\n", pxa_ep->reg_udccr,*pxa_ep->reg_udccr); ++ ++ epconfig++; ++ } ++ ++ /* Fill ep name*/ ++ switch (desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { ++ case USB_ENDPOINT_XFER_BULK: ++ sprintf(name, "ep%d%s-bulk", dev->ep_num, ++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); ++ break; ++ case USB_ENDPOINT_XFER_INT: ++ sprintf(name, "ep%d%s-intr", dev->ep_num, ++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); ++ break; ++ default: ++ sprintf(name, "ep%d%s", dev->ep_num, ++ ((desc->bEndpointAddress & USB_DIR_IN) ? "in":"out")); ++ break; ++ } ++ ++ virt_ep->desc = desc; ++ virt_ep->usb_ep.name = name; ++ virt_ep->usb_ep.ops = &pxa27x_ep_ops; ++ virt_ep->usb_ep.maxpacket = min((ushort)fifo_size, desc->wMaxPacketSize); ++ ++ list_add_tail(&virt_ep->usb_ep.ep_list, &gadget->ep_list); ++ ++ dev->ep_num++; ++ return &virt_ep->usb_ep; ++} ++ ++static int pxa27x_udc_get_frame(struct usb_gadget *_gadget) ++{ ++ return (UDCFNR & 0x7FF); ++} ++ ++static int pxa27x_udc_wakeup(struct usb_gadget *_gadget) ++{ ++ /* host may not have enabled remote wakeup */ ++ if ((UDCCR & UDCCR_DWRE) == 0) ++ return -EHOSTUNREACH; ++ udc_set_mask_UDCCR(UDCCR_UDR); ++ return 0; ++} ++ ++static const struct usb_gadget_ops pxa27x_udc_ops = { ++ .ep_alloc = pxa27x_ep_alloc, ++ .get_frame = pxa27x_udc_get_frame, ++ .wakeup = pxa27x_udc_wakeup, ++ // current versions must always be self-powered ++}; ++ ++ ++/*-------------------------------------------------------------------------*/ ++ ++#ifdef UDC_PROC_FILE ++ ++static const char proc_node_name [] = "driver/udc"; ++ ++static int ++udc_proc_read(char *page, char **start, off_t off, int count, ++ int *eof, void *_dev) ++{ ++ char *buf = page; ++ struct pxa27x_udc *dev = _dev; ++ char *next = buf; ++ unsigned size = count; ++ unsigned long flags; ++ int i, t; ++ u32 tmp; ++ ++ if (off != 0) ++ return 0; ++ ++ local_irq_save(flags); ++ ++ /* basic device status */ ++ t = scnprintf(next, size, DRIVER_DESC "\n" ++ "%s version: %s\nGadget driver: %s\n", ++ driver_name, DRIVER_VERSION DMASTR, ++ dev->driver ? dev->driver->driver.name : "(none)"); ++ size -= t; ++ next += t; ++ ++ /* registers for device and ep0 */ ++ t = scnprintf(next, size, ++ "uicr %02X.%02X, usir %02X.%02x, ufnr %02X\n", ++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR); ++ size -= t; ++ next += t; ++ ++ tmp = UDCCR; ++ t = scnprintf(next, size,"udccr %02X =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", tmp, ++ (tmp & UDCCR_OEN) ? " oen":"", ++ (tmp & UDCCR_AALTHNP) ? " aalthnp":"", ++ (tmp & UDCCR_AHNP) ? " rem" : "", ++ (tmp & UDCCR_BHNP) ? " rstir" : "", ++ (tmp & UDCCR_DWRE) ? " dwre" : "", ++ (tmp & UDCCR_SMAC) ? " smac" : "", ++ (tmp & UDCCR_EMCE) ? " emce" : "", ++ (tmp & UDCCR_UDR) ? " udr" : "", ++ (tmp & UDCCR_UDA) ? " uda" : "", ++ (tmp & UDCCR_UDE) ? " ude" : "", ++ (tmp & UDCCR_ACN) >> UDCCR_ACN_S, ++ (tmp & UDCCR_AIN) >> UDCCR_AIN_S, ++ (tmp & UDCCR_AAISN)>> UDCCR_AAISN_S ); ++ ++ size -= t; ++ next += t; ++ ++ tmp = UDCCSR0; ++ t = scnprintf(next, size, ++ "udccsr0 %02X =%s%s%s%s%s%s%s\n", tmp, ++ (tmp & UDCCSR0_SA) ? " sa" : "", ++ (tmp & UDCCSR0_RNE) ? " rne" : "", ++ (tmp & UDCCSR0_FST) ? " fst" : "", ++ (tmp & UDCCSR0_SST) ? " sst" : "", ++ (tmp & UDCCSR0_DME) ? " dme" : "", ++ (tmp & UDCCSR0_IPR) ? " ipr" : "", ++ (tmp & UDCCSR0_OPC) ? " opc" : ""); ++ size -= t; ++ next += t; ++ ++ if (!dev->driver) ++ goto done; ++ ++ t = scnprintf(next, size, "ep0 IN %lu/%lu, OUT %lu/%lu\nirqs %lu\n\n", ++ dev->stats.write.bytes, dev->stats.write.ops, ++ dev->stats.read.bytes, dev->stats.read.ops, ++ dev->stats.irqs); ++ size -= t; ++ next += t; ++ ++ /* dump endpoint queues */ ++ for (i = 0; i < UDC_EP_NUM; i++) { ++ struct pxa27x_ep *ep = &dev->ep [i]; ++ struct pxa27x_request *req; ++ int t; ++ ++ if (i != 0) { ++ const struct usb_endpoint_descriptor *d; ++ ++ d = ep->desc; ++ if (!d) ++ continue; ++ tmp = *dev->ep [i].reg_udccsr; ++ t = scnprintf(next, size, ++ "%d max %d %s udccs %02x udccr:0x%x\n", ++ i, le16_to_cpu (d->wMaxPacketSize), ++ (ep->dma >= 0) ? "dma" : "pio", tmp, ++ *dev->ep[i].reg_udccr); ++ /* TODO translate all five groups of udccs bits! */ ++ ++ } else /* ep0 should only have one transfer queued */ ++ t = scnprintf(next, size, "ep0 max 16 pio irqs %lu\n", ++ ep->pio_irqs); ++ if (t <= 0 || t > size) ++ goto done; ++ size -= t; ++ next += t; ++ ++ if (list_empty(&ep->queue)) { ++ t = scnprintf(next, size, "\t(nothing queued)\n"); ++ if (t <= 0 || t > size) ++ goto done; ++ size -= t; ++ next += t; ++ continue; ++ } ++ list_for_each_entry(req, &ep->queue, queue) { ++#ifdef USE_DMA ++ if (ep->dma >= 0 && req->queue.prev == &ep->queue) ++ t = scnprintf(next, size, "\treq %p len %d/%d " ++ "buf %p (dma%d dcmd %08x)\n", ++ &req->req, req->req.actual, ++ req->req.length, req->req.buf, ++ ep->dma, DCMD(ep->dma) ++ /* low 13 bits == bytes-to-go */); ++ else ++#endif ++ t = scnprintf(next, size, ++ "\treq %p len %d/%d buf %p\n", ++ &req->req, req->req.actual, ++ req->req.length, req->req.buf); ++ if (t <= 0 || t > size) ++ goto done; ++ size -= t; ++ next += t; ++ } ++ } ++ ++done: ++ local_irq_restore(flags); ++ *eof = 1; ++ return count - size; ++} ++ ++#define create_proc_files() \ ++ create_proc_read_entry(proc_node_name, 0, NULL, udc_proc_read, dev) ++#define remove_proc_files() \ ++ remove_proc_entry(proc_node_name, NULL) ++ ++#else /* !UDC_PROC_FILE */ ++#define create_proc_files() do {} while (0) ++#define remove_proc_files() do {} while (0) ++ ++#endif /* UDC_PROC_FILE */ ++ ++/* "function" sysfs attribute */ ++static ssize_t show_function(struct device *_dev, struct device_attribute *attr, char *buf) ++{ ++ struct pxa27x_udc *dev = dev_get_drvdata(_dev); ++ ++ if (!dev->driver || !dev->driver->function ++ || strlen(dev->driver->function) > PAGE_SIZE) ++ return 0; ++ return scnprintf(buf, PAGE_SIZE, "%s\n", dev->driver->function); ++} ++static DEVICE_ATTR(function, S_IRUGO, show_function, NULL); ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* ++ * udc_disable - disable USB device controller ++ */ ++static void udc_disable(struct pxa27x_udc *dev) ++{ ++ UDCICR0 = UDCICR1 = 0x00000000; ++ ++ udc_clear_mask_UDCCR(UDCCR_UDE); ++ ++ /* Disable clock for USB device */ ++ pxa_set_cken(CKEN_USB, 0); ++ ++ ep0_idle(dev); ++ dev->gadget.speed = USB_SPEED_UNKNOWN; ++ dev->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); ++} ++ ++ ++/* ++ * udc_reinit - initialize software state ++ */ ++static void udc_reinit(struct pxa27x_udc *dev) ++{ ++ u32 i; ++ ++ dev->ep0state = EP0_IDLE; ++ ++ /* basic endpoint records init */ ++ for (i = 0; i < UDC_EP_NUM; i++) { ++ struct pxa27x_ep *ep = &dev->ep[i]; ++ ++ ep->stopped = 0; ++ ep->pio_irqs = ep->dma_irqs = 0; ++ } ++ dev->configuration = 0; ++ dev->interface = 0; ++ dev->alternate = 0; ++ /* the rest was statically initialized, and is read-only */ ++} ++ ++/* until it's enabled, this UDC should be completely invisible ++ * to any USB host. ++ */ ++static void udc_enable(struct pxa27x_udc *dev) ++{ ++ udc_clear_mask_UDCCR(UDCCR_UDE); ++ ++ /* Enable clock for USB device */ ++ pxa_set_cken(CKEN_USB, 1); ++ ++ UDCICR0 = UDCICR1 = 0; ++ ++ ep0_idle(dev); ++ dev->gadget.speed = USB_SPEED_FULL; ++ dev->stats.irqs = 0; ++ ++ udc_set_mask_UDCCR(UDCCR_UDE); ++ udelay(2); ++ if (UDCCR & UDCCR_EMCE) ++ dev_err(dev->dev, "There are error in configuration, udc disabled\n"); ++ ++ /* caller must be able to sleep in order to cope ++ * with startup transients. ++ */ ++ msleep(100); ++ ++ /* enable suspend/resume and reset irqs */ ++ UDCICR1 = UDCICR1_IECC | UDCICR1_IERU | UDCICR1_IESU | UDCICR1_IERS; ++ ++ /* enable ep0 irqs */ ++ UDCICR0 = UDCICR_INT(0,UDCICR_INT_MASK); ++ ++ DMSG("Connecting\n"); ++ /* RPFIXME */ ++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; ++ //dev->mach->udc_command(PXA2XX_UDC_CMD_CONNECT); ++} ++ ++ ++/* when a driver is successfully registered, it will receive ++ * control requests including set_configuration(), which enables ++ * non-control requests. then usb traffic follows until a ++ * disconnect is reported. then a host may connect again, or ++ * the driver might get unbound. ++ */ ++int usb_gadget_register_driver(struct usb_gadget_driver *driver) ++{ ++ struct pxa27x_udc *dev = the_controller; ++ int retval; ++ ++ if (!driver || driver->speed != USB_SPEED_FULL || !driver->bind ++ || !driver->unbind || !driver->disconnect || !driver->setup) ++ return -EINVAL; ++ if (!dev) ++ return -ENODEV; ++ if (dev->driver) ++ return -EBUSY; ++ ++ udc_disable(dev); ++ udc_init_ep(dev); ++ udc_reinit(dev); ++ ++ /* first hook up the driver ... */ ++ dev->driver = driver; ++ dev->gadget.dev.driver = &driver->driver; ++ dev->ep_num = 1; ++ ++ retval = device_add(&dev->gadget.dev); ++ if (retval) { ++ DMSG("device_add error %d\n", retval); ++ goto add_fail; ++ } ++ retval = driver->bind(&dev->gadget); ++ if (retval) { ++ DMSG("bind to driver %s --> error %d\n", ++ driver->driver.name, retval); ++ goto bind_fail; ++ } ++ retval = device_create_file(dev->dev, &dev_attr_function); ++ if (retval) { ++ DMSG("device_create_file failed: %d\n", retval); ++ goto create_file_fail; ++ } ++ ++ /* ... then enable host detection and ep0; and we're ready ++ * for set_configuration as well as eventual disconnect. ++ * NOTE: this shouldn't power up until later. ++ */ ++ DMSG("registered gadget driver '%s'\n", driver->driver.name); ++ udc_enable(dev); ++ dump_state(dev); ++ return 0; ++ ++create_file_fail: ++ driver->unbind(&dev->gadget); ++bind_fail: ++ device_del(&dev->gadget.dev); ++add_fail: ++ dev->driver = 0; ++ dev->gadget.dev.driver = 0; ++ return retval; ++} ++EXPORT_SYMBOL(usb_gadget_register_driver); ++ ++static void ++stop_activity(struct pxa27x_udc *dev, struct usb_gadget_driver *driver) ++{ ++ int i; ++ ++ DMSG("Trace path 1\n"); ++ /* don't disconnect drivers more than once */ ++ if (dev->gadget.speed == USB_SPEED_UNKNOWN) ++ driver = 0; ++ dev->gadget.speed = USB_SPEED_UNKNOWN; ++ ++ /* prevent new request submissions, kill any outstanding requests */ ++ for (i = 0; i < UDC_EP_NUM; i++) { ++ struct pxa27x_ep *ep = &dev->ep[i]; ++ ++ ep->stopped = 1; ++ nuke(ep, -ESHUTDOWN); ++ } ++ del_timer_sync(&dev->timer); ++ ++ /* report disconnect; the driver is already quiesced */ ++ if (driver) ++ driver->disconnect(&dev->gadget); ++ ++ /* re-init driver-visible data structures */ ++ udc_reinit(dev); ++} ++ ++int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) ++{ ++ struct pxa27x_udc *dev = the_controller; ++ ++ if (!dev) ++ return -ENODEV; ++ if (!driver || driver != dev->driver) ++ return -EINVAL; ++ ++ local_irq_disable(); ++ udc_disable(dev); ++ stop_activity(dev, driver); ++ local_irq_enable(); ++ ++ driver->unbind(&dev->gadget); ++ pxa27x_ep_freeall(&dev->gadget); ++ dev->driver = 0; ++ ++ device_del(&dev->gadget.dev); ++ device_remove_file(dev->dev, &dev_attr_function); ++ ++ DMSG("unregistered gadget driver '%s'\n", driver->driver.name); ++ dump_state(dev); ++ return 0; ++} ++EXPORT_SYMBOL(usb_gadget_unregister_driver); ++ ++ ++/*-------------------------------------------------------------------------*/ ++ ++static inline void clear_ep_state(struct pxa27x_udc *dev) ++{ ++ unsigned i; ++ ++ /* hardware SET_{CONFIGURATION,INTERFACE} automagic resets endpoint ++ * fifos, and pending transactions mustn't be continued in any case. ++ */ ++ for (i = 1; i < UDC_EP_NUM; i++) ++ nuke(&dev->ep[i], -ECONNABORTED); ++} ++ ++static void udc_watchdog(unsigned long _dev) ++{ ++ struct pxa27x_udc *dev = (void *)_dev; ++ ++ local_irq_disable(); ++ if (dev->ep0state == EP0_STALL ++ && (UDCCSR0 & UDCCSR0_FST) == 0 ++ && (UDCCSR0 & UDCCSR0_SST) == 0) { ++ UDCCSR0 = UDCCSR0_FST|UDCCSR0_FTF; ++ DBG(DBG_VERBOSE, "ep0 re-stall\n"); ++ start_watchdog(dev); ++ } ++ local_irq_enable(); ++} ++ ++static void handle_ep0(struct pxa27x_udc *dev) ++{ ++ u32 udccsr0 = UDCCSR0; ++ struct pxa27x_ep *ep = &dev->ep[0]; ++ struct pxa27x_request *req; ++ union { ++ struct usb_ctrlrequest r; ++ u8 raw[8]; ++ u32 word[2]; ++ } u; ++ ++ if (list_empty(&ep->queue)) ++ req = 0; ++ else ++ req = list_entry(ep->queue.next, struct pxa27x_request, queue); ++ ++ /* clear stall status */ ++ if (udccsr0 & UDCCSR0_SST) { ++ nuke(ep, -EPIPE); ++ UDCCSR0 = UDCCSR0_SST; ++ del_timer(&dev->timer); ++ ep0_idle(dev); ++ } ++ ++ /* previous request unfinished? non-error iff back-to-back ... */ ++ if ((udccsr0 & UDCCSR0_SA) != 0 && dev->ep0state != EP0_IDLE) { ++ nuke(ep, 0); ++ del_timer(&dev->timer); ++ ep0_idle(dev); ++ } ++ ++ switch (dev->ep0state) { ++ case EP0_NO_ACTION: ++ dev_info(dev->dev, "%s: Busy\n", __FUNCTION__); ++ /*Fall through */ ++ case EP0_IDLE: ++ /* late-breaking status? */ ++ udccsr0 = UDCCSR0; ++ ++ /* start control request? */ ++ if (likely((udccsr0 & (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE)) ++ == (UDCCSR0_OPC|UDCCSR0_SA|UDCCSR0_RNE))) { ++ int i; ++ ++ nuke(ep, -EPROTO); ++ /* read SETUP packet */ ++ for (i = 0; i < 2; i++) { ++ if (unlikely(!(UDCCSR0 & UDCCSR0_RNE))) { ++bad_setup: ++ DMSG("SETUP %d!\n", i); ++ goto stall; ++ } ++ u.word [i] = UDCDR0; ++ } ++ if (unlikely((UDCCSR0 & UDCCSR0_RNE) != 0)) ++ goto bad_setup; ++ ++ le16_to_cpus(&u.r.wValue); ++ le16_to_cpus(&u.r.wIndex); ++ le16_to_cpus(&u.r.wLength); ++ ++ DBG(DBG_VERBOSE, "SETUP %02x.%02x v%04x i%04x l%04x\n", ++ u.r.bRequestType, u.r.bRequest, ++ u.r.wValue, u.r.wIndex, u.r.wLength); ++ /* cope with automagic for some standard requests. */ ++ dev->req_std = (u.r.bRequestType & USB_TYPE_MASK) ++ == USB_TYPE_STANDARD; ++ dev->req_config = 0; ++ dev->req_pending = 1; ++#if 0 ++ switch (u.r.bRequest) { ++ /* hardware was supposed to hide this */ ++ case USB_REQ_SET_CONFIGURATION: ++ case USB_REQ_SET_INTERFACE: ++ case USB_REQ_SET_ADDRESS: ++ dev_err(dev->dev, "Should not come here\n"); ++ break; ++ } ++ ++#endif ++ if (u.r.bRequestType & USB_DIR_IN) ++ dev->ep0state = EP0_IN_DATA_PHASE; ++ else ++ dev->ep0state = EP0_OUT_DATA_PHASE; ++ i = dev->driver->setup(&dev->gadget, &u.r); ++ ++ if (i < 0) { ++ /* hardware automagic preventing STALL... */ ++ if (dev->req_config) { ++ /* hardware sometimes neglects to tell ++ * tell us about config change events, ++ * so later ones may fail... ++ */ ++ WARN("config change %02x fail %d?\n", ++ u.r.bRequest, i); ++ return; ++ /* TODO experiment: if has_cfr, ++ * hardware didn't ACK; maybe we ++ * could actually STALL! ++ */ ++ } ++ DBG(DBG_VERBOSE, "protocol STALL, " ++ "%02x err %d\n", UDCCSR0, i); ++stall: ++ /* the watchdog timer helps deal with cases ++ * where udc seems to clear FST wrongly, and ++ * then NAKs instead of STALLing. ++ */ ++ ep0start(dev, UDCCSR0_FST|UDCCSR0_FTF, "stall"); ++ start_watchdog(dev); ++ dev->ep0state = EP0_STALL; ++ ++ /* deferred i/o == no response yet */ ++ } else if (dev->req_pending) { ++ if (likely(dev->ep0state == EP0_IN_DATA_PHASE ++ || dev->req_std || u.r.wLength)) ++ ep0start(dev, 0, "defer"); ++ else ++ ep0start(dev, UDCCSR0_IPR, "defer/IPR"); ++ } ++ ++ /* expect at least one data or status stage irq */ ++ return; ++ ++ } else { ++ /* some random early IRQ: ++ * - we acked FST ++ * - IPR cleared ++ * - OPC got set, without SA (likely status stage) ++ */ ++ UDCCSR0 = udccsr0 & (UDCCSR0_SA|UDCCSR0_OPC); ++ } ++ break; ++ case EP0_IN_DATA_PHASE: /* GET_DESCRIPTOR etc */ ++ if (udccsr0 & UDCCSR0_OPC) { ++ UDCCSR0 = UDCCSR0_OPC|UDCCSR0_FTF; ++ DBG(DBG_VERBOSE, "ep0in premature status\n"); ++ if (req) ++ done(ep, req, 0); ++ ep0_idle(dev); ++ } else /* irq was IPR clearing */ { ++ if (req) { ++ /* this IN packet might finish the request */ ++ (void) write_ep0_fifo(ep, req); ++ } /* else IN token before response was written */ ++ } ++ break; ++ case EP0_OUT_DATA_PHASE: /* SET_DESCRIPTOR etc */ ++ if (udccsr0 & UDCCSR0_OPC) { ++ if (req) { ++ /* this OUT packet might finish the request */ ++ if (read_ep0_fifo(ep, req)) ++ done(ep, req, 0); ++ /* else more OUT packets expected */ ++ } /* else OUT token before read was issued */ ++ } else /* irq was IPR clearing */ { ++ DBG(DBG_VERBOSE, "ep0out premature status\n"); ++ if (req) ++ done(ep, req, 0); ++ ep0_idle(dev); ++ } ++ break; ++ case EP0_STALL: ++ UDCCSR0 = UDCCSR0_FST; ++ break; ++ } ++ UDCISR0 = UDCISR_INT(0, UDCISR_INT_MASK); ++} ++ ++ ++static void handle_ep(struct pxa27x_ep *ep) ++{ ++ struct pxa27x_request *req; ++ int completed; ++ u32 udccsr=0; ++ ++ DMSG("%s is called\n", __FUNCTION__); ++ do { ++ completed = 0; ++ if (likely (!list_empty(&ep->queue))) { ++ req = list_entry(ep->queue.next, ++ struct pxa27x_request, queue); ++ } else ++ req = 0; ++ ++// udccsr = *ep->reg_udccsr; ++ DMSG("%s: req:%p, udcisr0:0x%x udccsr %p:0x%x\n", __FUNCTION__, ++ req, UDCISR0, ep->reg_udccsr, *ep->reg_udccsr); ++ if (unlikely(ep->dir_in)) { ++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr; ++ if (unlikely (udccsr)) ++ *ep->reg_udccsr = udccsr; ++ ++ if (req && likely ((*ep->reg_udccsr & UDCCSR_FS) != 0)) ++ completed = write_fifo(ep, req); ++ ++ } else { ++ udccsr = (UDCCSR_SST | UDCCSR_TRN) & *ep->reg_udccsr; ++ if (unlikely(udccsr)) ++ *ep->reg_udccsr = udccsr; ++ ++ /* fifos can hold packets, ready for reading... */ ++ if (likely(req)) { ++ completed = read_fifo(ep, req); ++ } else { ++ pio_irq_disable (ep->pxa_ep_num); ++ //*ep->reg_udccsr = UDCCSR_FEF; ++ DMSG("%s: no req for out data\n", ++ __FUNCTION__); ++ } ++ } ++ ep->pio_irqs++; ++ } while (completed); ++} ++ ++static void pxa27x_update_eps(struct pxa27x_udc *dev) ++{ ++ struct pxa27x_virt_ep *virt_ep; ++ int i; ++ ++ for (i = 1; i < UDC_EP_NUM; i++) { ++ if(!dev->ep[i].assigned || !dev->ep[i].usb_ep) ++ continue; ++ virt_ep = container_of(dev->ep[i].usb_ep, struct pxa27x_virt_ep, usb_ep); ++ ++ DMSG("%s, Updating eps %d:%d, %d:%d, %d:%d, %p,%p\n", __FUNCTION__, dev->ep[i].config, dev->configuration ++ ,dev->ep[i].interface, dev->interface, dev->ep[i].aisn, dev->alternate, virt_ep->pxa_ep, &dev->ep[i]); ++ ++ if(dev->ep[i].config == dev->configuration && virt_ep->pxa_ep != &dev->ep[i]) { ++ if ((dev->ep[i].interface == dev->interface && ++ dev->ep[i].aisn == dev->alternate) || virt_ep->pxa_ep->config != dev->configuration) { ++ ++ if (virt_ep->pxa_ep->desc) { ++ DMSG("%s, Changing end point to %d (en/dis)\n", __FUNCTION__, i); ++ pxa27x_ep_disable(&virt_ep->usb_ep); ++ virt_ep->pxa_ep = &dev->ep[i]; ++ pxa27x_ep_enable(&virt_ep->usb_ep, virt_ep->desc); ++ } else { ++ DMSG("%s, Changing end point to %d (no en/dis)\n", __FUNCTION__, i); ++ virt_ep->pxa_ep = &dev->ep[i]; ++ } ++ } ++ } ++ } ++} ++ ++static void pxa27x_change_configuration(struct pxa27x_udc *dev) ++{ ++ struct usb_ctrlrequest req ; ++ ++ pxa27x_update_eps(dev); ++ ++ req.bRequestType = 0; ++ req.bRequest = USB_REQ_SET_CONFIGURATION; ++ req.wValue = dev->configuration; ++ req.wIndex = 0; ++ req.wLength = 0; ++ ++ dev->ep0state = EP0_NO_ACTION; ++ dev->driver->setup(&dev->gadget, &req); ++} ++ ++static void pxa27x_change_interface(struct pxa27x_udc *dev) ++{ ++ struct usb_ctrlrequest req; ++ ++ pxa27x_update_eps(dev); ++ ++ req.bRequestType = USB_RECIP_INTERFACE; ++ req.bRequest = USB_REQ_SET_INTERFACE; ++ req.wValue = dev->alternate; ++ req.wIndex = dev->interface; ++ req.wLength = 0; ++ ++ dev->ep0state = EP0_NO_ACTION; ++ dev->driver->setup(&dev->gadget, &req); ++} ++ ++/* ++ * pxa27x_udc_irq - interrupt handler ++ * ++ * avoid delays in ep0 processing. the control handshaking isn't always ++ * under software control (pxa250c0 and the pxa255 are better), and delays ++ * could cause usb protocol errors. ++ */ ++static irqreturn_t pxa27x_udc_irq(int irq, void *_dev) ++{ ++ struct pxa27x_udc *dev = _dev; ++ int handled; ++ ++ dev->stats.irqs++; ++ ++ DBG(DBG_VERBOSE, "Interrupt, UDCISR0:0x%08x, UDCISR1:0x%08x, " ++ "UDCCR:0x%08x\n", UDCISR0, UDCISR1, UDCCR); ++ do { ++ u32 udcir = UDCISR1 & 0xF8000000; ++ ++ handled = 0; ++ ++ /* SUSpend Interrupt Request */ ++ if (unlikely(udcir & UDCISR1_IRSU)) { ++ UDCISR1 = UDCISR1_IRSU; ++ handled = 1; ++ DBG(DBG_VERBOSE, "USB suspend\n"); ++ if (dev->gadget.speed != USB_SPEED_UNKNOWN ++ && dev->driver ++ && dev->driver->suspend) ++ dev->driver->suspend(&dev->gadget); ++ ep0_idle(dev); ++ } ++ ++ /* RESume Interrupt Request */ ++ if (unlikely(udcir & UDCISR1_IRRU)) { ++ UDCISR1 = UDCISR1_IRRU; ++ handled = 1; ++ DBG(DBG_VERBOSE, "USB resume\n"); ++ ++ if (dev->gadget.speed != USB_SPEED_UNKNOWN ++ && dev->driver ++ && dev->driver->resume) ++ dev->driver->resume(&dev->gadget); ++ } ++ ++ if (unlikely(udcir & UDCISR1_IRCC)) { ++ unsigned config, interface, alternate; ++ ++ handled = 1; ++ DBG(DBG_VERBOSE, "USB SET_CONFIGURATION or " ++ "SET_INTERFACE command received\n"); ++ ++ config = (UDCCR & UDCCR_ACN) >> UDCCR_ACN_S; ++ ++ if (dev->configuration != config) { ++ dev->configuration = config; ++ pxa27x_change_configuration(dev) ; ++ } ++ ++ interface = (UDCCR & UDCCR_AIN) >> UDCCR_AIN_S; ++ alternate = (UDCCR & UDCCR_AAISN) >> UDCCR_AAISN_S; ++ ++ if ((dev->interface != interface) || (dev->alternate != alternate)) { ++ dev->interface = interface; ++ dev->alternate = alternate; ++ pxa27x_change_interface(dev); ++ } ++ ++ UDCCR |= UDCCR_SMAC; ++ ++ UDCISR1 = UDCISR1_IRCC; ++ DMSG("%s: con:%d,inter:%d,alt:%d\n", ++ __FUNCTION__, config,interface, alternate); ++ } ++ ++ /* ReSeT Interrupt Request - USB reset */ ++ if (unlikely(udcir & UDCISR1_IRRS)) { ++ UDCISR1 = UDCISR1_IRRS; ++ handled = 1; ++ ++ if ((UDCCR & UDCCR_UDA) == 0) { ++ DBG(DBG_VERBOSE, "USB reset start\n"); ++ ++ /* reset driver and endpoints, ++ * in case that's not yet done ++ */ ++ stop_activity(dev, dev->driver); ++ } ++ INFO("USB reset\n"); ++ dev->gadget.speed = USB_SPEED_FULL; ++ memset(&dev->stats, 0, sizeof dev->stats); ++ ++ } else { ++ u32 udcisr0 = UDCISR0 ; ++ u32 udcisr1 = UDCISR1 & 0xFFFF; ++ int i; ++ ++ if (unlikely (!udcisr0 && !udcisr1)) ++ continue; ++ ++ DBG(DBG_VERY_NOISY, "irq %02x.%02x\n", udcisr1,udcisr0); ++ ++ /* control traffic */ ++ if (udcisr0 & UDCISR0_IR0) { ++ dev->ep[0].pio_irqs++; ++ handle_ep0(dev); ++ handled = 1; ++ } ++ ++ udcisr0 >>= 2; ++ /* endpoint data transfers */ ++ for (i = 1; udcisr0!=0 && i < 16; udcisr0>>=2,i++) { ++ UDCISR0 = UDCISR_INT(i, UDCISR_INT_MASK); ++ ++ if (udcisr0 & UDC_INT_FIFOERROR) ++ dev_err(dev->dev, " Endpoint %d Fifo error\n", i); ++ if (udcisr0 & UDC_INT_PACKETCMP) { ++ handle_ep(&dev->ep[i]); ++ handled = 1; ++ } ++ ++ } ++ ++ for (i = 0; udcisr1!=0 && i < 8; udcisr1 >>= 2, i++) { ++ UDCISR1 = UDCISR_INT(i, UDCISR_INT_MASK); ++ ++ if (udcisr1 & UDC_INT_FIFOERROR) { ++ dev_err(dev->dev, "Endpoint %d fifo error\n", (i+16)); ++ } ++ ++ if (udcisr1 & UDC_INT_PACKETCMP) { ++ handle_ep(&dev->ep[i+16]); ++ handled = 1; ++ } ++ } ++ } ++ ++ /* we could also ask for 1 msec SOF (SIR) interrupts */ ++ ++ } while (handled); ++ return IRQ_HANDLED; ++} ++ ++int write_ep0_zlp(void) ++{ ++ UDCCSR0 = UDCCSR0_IPR; ++ return 0; ++} ++EXPORT_SYMBOL(write_ep0_zlp); ++ ++static void udc_init_ep(struct pxa27x_udc *dev) ++{ ++ int i; ++ ++ INIT_LIST_HEAD(&dev->gadget.ep_list); ++ INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); ++ ++ for (i = 0; i < UDC_EP_NUM; i++) { ++ struct pxa27x_ep *ep = &dev->ep[i]; ++ ++ ep->dma = -1; ++ if (i != 0) { ++ memset(ep, 0, sizeof(*ep)); ++ } ++ INIT_LIST_HEAD(&ep->queue); ++ } ++} ++ ++/*-------------------------------------------------------------------------*/ ++ ++static void nop_release(struct device *dev) ++{ ++ DMSG("%s %s\n", __FUNCTION__, dev->bus_id); ++} ++ ++/* this uses load-time allocation and initialization (instead of ++ * doing it at run-time) to save code, eliminate fault paths, and ++ * be more obviously correct. ++ */ ++ ++static struct pxa27x_udc memory = { ++ .gadget = { ++ .ops = &pxa27x_udc_ops, ++ .ep0 = &memory.virt_ep0.usb_ep, ++ .name = driver_name, ++ .dev = { ++ .bus_id = "gadget", ++ .release = nop_release, ++ }, ++ }, ++ ++ /* control endpoint */ ++ .virt_ep0 = { ++ .pxa_ep = &memory.ep[0], ++ .usb_ep = { ++ .name = ep0name, ++ .ops = &pxa27x_ep_ops, ++ .maxpacket = EP0_FIFO_SIZE, ++ }, ++ }, ++ ++ .ep[0] = { ++ .usb_ep = &memory.virt_ep0.usb_ep, ++ .dev = &memory, ++ .reg_udccsr = &UDCCSR0, ++ .reg_udcdr = &UDCDR0, ++ }, ++}; ++ ++static int __init pxa27x_udc_probe(struct platform_device *_dev) ++{ ++ struct pxa27x_udc *dev = &memory; ++ int retval; ++ ++ /* other non-static parts of init */ ++ dev->dev = &_dev->dev; ++ dev->mach = _dev->dev.platform_data; ++ ++ /* RPFIXME */ ++ UP2OCR = UP2OCR_HXOE | UP2OCR_DPPUE | UP2OCR_DPPUBE; ++ ++ init_timer(&dev->timer); ++ dev->timer.function = udc_watchdog; ++ dev->timer.data = (unsigned long) dev; ++ ++ device_initialize(&dev->gadget.dev); ++ dev->gadget.dev.parent = &_dev->dev; ++ dev->gadget.dev.dma_mask = _dev->dev.dma_mask; ++ ++ the_controller = dev; ++ platform_set_drvdata(_dev, dev); ++ ++ udc_disable(dev); ++ udc_init_ep(dev); ++ udc_reinit(dev); ++ ++ /* irq setup after old hardware state is cleaned up */ ++ retval = request_irq(IRQ_USB, pxa27x_udc_irq, ++ SA_INTERRUPT, driver_name, dev); ++ if (retval != 0) { ++ dev_err(dev->dev, "%s: can't get irq %i, err %d\n", ++ driver_name, IRQ_USB, retval); ++ return -EBUSY; ++ } ++ dev->got_irq = 1; ++ ++ create_proc_files(); ++ ++ return 0; ++} ++ ++static int pxa27x_udc_remove(struct platform_device *_dev) ++{ ++ struct pxa27x_udc *dev = platform_get_drvdata(_dev); ++ ++ udc_disable(dev); ++ remove_proc_files(); ++ usb_gadget_unregister_driver(dev->driver); ++ ++ pxa27x_ep_freeall(&dev->gadget); ++ ++ if (dev->got_irq) { ++ free_irq(IRQ_USB, dev); ++ dev->got_irq = 0; ++ } ++ platform_set_drvdata(_dev, 0); ++ the_controller = 0; ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static void pxa27x_udc_shutdown(struct platform_device *_dev) ++{ ++ struct pxa27x_udc *dev = platform_get_drvdata(_dev); ++ ++ udc_disable(dev); ++} ++ ++static int pxa27x_udc_suspend(struct platform_device *_dev, pm_message_t state) ++{ ++ int i; ++ struct pxa27x_udc *dev = platform_get_drvdata(_dev); ++ ++ DMSG("%s is called\n", __FUNCTION__); ++ ++ dev->udccsr0 = UDCCSR0; ++ for(i=1; (iep[i].assigned) { ++ struct pxa27x_ep *ep = &dev->ep[i]; ++ ep->udccsr_value = *ep->reg_udccsr; ++ ep->udccr_value = *ep->reg_udccr; ++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n", ++ i, *ep->reg_udccsr, *ep->reg_udccr); ++ } ++ } ++ ++ udc_clear_mask_UDCCR(UDCCR_UDE); ++ pxa_set_cken(CKEN_USB, 0); ++ ++ return 0; ++} ++ ++static int pxa27x_udc_resume(struct platform_device *_dev) ++{ ++ int i; ++ struct pxa27x_udc *dev = platform_get_drvdata(_dev); ++ ++ DMSG("%s is called\n", __FUNCTION__); ++ UDCCSR0 = dev->udccsr0 & (UDCCSR0_FST | UDCCSR0_DME); ++ for (i=1; i < UDC_EP_NUM; i++) { ++ if (dev->ep[i].assigned) { ++ struct pxa27x_ep *ep = &dev->ep[i]; ++ *ep->reg_udccsr = ep->udccsr_value; ++ *ep->reg_udccr = ep->udccr_value; ++ DMSG("EP%d, udccsr:0x%x, udccr:0x%x\n", ++ i, *ep->reg_udccsr, *ep->reg_udccr); ++ } ++ } ++ ++ udc_enable(dev); ++ ++ /* OTGPH bit is set when sleep mode is entered. ++ * it indicates that OTG pad is retaining its state. ++ * Upon exit from sleep mode and before clearing OTGPH, ++ * Software must configure the USB OTG pad, UDC, and UHC ++ * to the state they were in before entering sleep mode.*/ ++ PSSR |= PSSR_OTGPH; ++ ++ return 0; ++} ++#endif ++ ++/*-------------------------------------------------------------------------*/ ++ ++static struct platform_driver udc_driver = { ++ .driver = { ++ .name = "pxa2xx-udc", ++ }, ++ .probe = pxa27x_udc_probe, ++ .remove = pxa27x_udc_remove, ++#ifdef CONFIG_PM ++ .shutdown = pxa27x_udc_shutdown, ++ .suspend = pxa27x_udc_suspend, ++ .resume = pxa27x_udc_resume ++#endif ++}; ++ ++static int __init udc_init(void) ++{ ++ printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION); ++ return platform_driver_register(&udc_driver); ++} ++module_init(udc_init); ++ ++static void __exit udc_exit(void) ++{ ++ platform_driver_unregister(&udc_driver); ++} ++module_exit(udc_exit); ++ ++MODULE_DESCRIPTION(DRIVER_DESC); ++MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); ++MODULE_LICENSE("GPL"); +diff --git a/drivers/usb/gadget/pxa27x_udc.h b/drivers/usb/gadget/pxa27x_udc.h +new file mode 100644 +index 0000000..d4377cf +--- /dev/null ++++ b/drivers/usb/gadget/pxa27x_udc.h +@@ -0,0 +1,298 @@ ++/* ++ * linux/drivers/usb/gadget/pxa27x_udc.h ++ * Intel PXA27x on-chip full speed USB device controller ++ * ++ * Copyright (C) 2003 Robert Schwebel , Pengutronix ++ * Copyright (C) 2003 David Brownell ++ * Copyright (C) 2004 Intel Corporation ++ * ++ * This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef __LINUX_USB_GADGET_PXA27X_H ++#define __LINUX_USB_GADGET_PXA27X_H ++ ++#include ++ ++struct pxa27x_udc; ++ ++struct pxa27x_ep { ++ struct pxa27x_udc *dev; ++ struct usb_ep *usb_ep; ++ const struct usb_endpoint_descriptor *desc; ++ ++ struct list_head queue; ++ unsigned long pio_irqs; ++ unsigned long dma_irqs; ++ ++ unsigned pxa_ep_num; ++ int dma; ++ unsigned fifo_size; ++ unsigned ep_type; ++ ++ unsigned stopped : 1; ++ unsigned dma_con : 1; ++ unsigned dir_in : 1; ++ unsigned assigned : 1; ++ ++ unsigned ep_num; ++ unsigned config; ++ unsigned interface; ++ unsigned aisn; ++ /* UDCCSR = UDC Control/Status Register for this EP ++ * UBCR = UDC Byte Count Remaining (contents of OUT fifo) ++ * UDCDR = UDC Endpoint Data Register (the fifo) ++ * UDCCR = UDC Endpoint Configuration Registers ++ * DRCM = DMA Request Channel Map ++ */ ++ volatile u32 *reg_udccsr; ++ volatile u32 *reg_udcbcr; ++ volatile u32 *reg_udcdr; ++ volatile u32 *reg_udccr; ++#ifdef USE_DMA ++ volatile u32 *reg_drcmr; ++#define drcmr(n) .reg_drcmr = & DRCMR ## n , ++#else ++#define drcmr(n) ++#endif ++ ++#ifdef CONFIG_PM ++ unsigned udccsr_value; ++ unsigned udccr_value; ++#endif ++}; ++ ++struct pxa27x_virt_ep { ++ struct usb_ep usb_ep; ++ const struct usb_endpoint_descriptor *desc; ++ struct pxa27x_ep *pxa_ep; ++}; ++ ++struct pxa27x_request { ++ struct usb_request req; ++ struct list_head queue; ++}; ++ ++enum ep0_state { ++ EP0_IDLE, ++ EP0_IN_DATA_PHASE, ++ EP0_OUT_DATA_PHASE, ++// EP0_END_XFER, ++ EP0_STALL, ++ EP0_NO_ACTION ++}; ++ ++#define EP0_FIFO_SIZE ((unsigned)16) ++#define BULK_FIFO_SIZE ((unsigned)64) ++#define ISO_FIFO_SIZE ((unsigned)256) ++#define INT_FIFO_SIZE ((unsigned)8) ++ ++struct udc_stats { ++ struct ep0stats { ++ unsigned long ops; ++ unsigned long bytes; ++ } read, write; ++ unsigned long irqs; ++}; ++ ++#define UDC_EP_NUM 24 ++ ++ ++struct pxa27x_udc { ++ struct usb_gadget gadget; ++ struct usb_gadget_driver *driver; ++ ++ enum ep0_state ep0state; ++ struct udc_stats stats; ++ unsigned got_irq : 1, ++ has_cfr : 1, ++ req_pending : 1, ++ req_std : 1, ++ req_config : 1; ++ ++#define start_watchdog(dev) mod_timer(&dev->timer, jiffies + (HZ/200)) ++ struct timer_list timer; ++ ++ struct device *dev; ++ struct pxa2xx_udc_mach_info *mach; ++ u64 dma_mask; ++ struct pxa27x_virt_ep virt_ep0; ++ struct pxa27x_ep ep[UDC_EP_NUM]; ++ unsigned int ep_num; ++ ++ unsigned configuration, ++ interface, ++ alternate; ++#ifdef CONFIG_PM ++ unsigned udccsr0; ++#endif ++}; ++ ++static struct pxa27x_udc *the_controller; ++ ++#if 0 ++/*-------------------------------------------------------------------------*/ ++ ++ ++/* one GPIO should be used to detect host disconnect */ ++static inline int is_usb_connected(void) ++{ ++ if (!the_controller->mach->udc_is_connected) ++ return 1; ++ return the_controller->mach->udc_is_connected(); ++} ++ ++/* one GPIO should force the host to see this device (or not) */ ++static inline void make_usb_disappear(void) ++{ ++ if (!the_controller->mach->udc_command) ++ return; ++ the_controller->mach->udc_command(PXA27X_UDC_CMD_DISCONNECT); ++} ++ ++static inline void let_usb_appear(void) ++{ ++ if (!the_controller->mach->udc_command) ++ return; ++ the_controller->mach->udc_command(PXA2XX_UDC_CMD_CONNECT); ++} ++#endif ++ ++/*-------------------------------------------------------------------------*/ ++ ++/* ++ * Debugging support vanishes in non-debug builds. DBG_NORMAL should be ++ * mostly silent during normal use/testing, with no timing side-effects. ++ */ ++#define DBG_NORMAL 1 /* error paths, device state transitions */ ++#define DBG_VERBOSE 2 /* add some success path trace info */ ++#define DBG_NOISY 3 /* ... even more: request level */ ++#define DBG_VERY_NOISY 4 /* ... even more: packet level */ ++ ++#ifdef DEBUG ++static const char *state_name[] = { ++ "EP0_IDLE", ++ "EP0_IN_DATA_PHASE", "EP0_OUT_DATA_PHASE", ++ "EP0_END_XFER", "EP0_STALL" ++}; ++ ++#define DMSG(stuff...) printk(KERN_ERR "udc: " stuff) ++ ++#ifdef VERBOSE ++# define UDC_DEBUG DBG_VERBOSE ++#else ++# define UDC_DEBUG DBG_NORMAL ++#endif ++ ++static void __attribute__ ((__unused__)) ++dump_udccr(const char *label) ++{ ++ u32 udccr = UDCCR; ++ DMSG("%s 0x%08x =%s%s%s%s%s%s%s%s%s%s, con=%d,inter=%d,altinter=%d\n", ++ label, udccr, ++ (udccr & UDCCR_OEN) ? " oen":"", ++ (udccr & UDCCR_AALTHNP) ? " aalthnp":"", ++ (udccr & UDCCR_AHNP) ? " rem" : "", ++ (udccr & UDCCR_BHNP) ? " rstir" : "", ++ (udccr & UDCCR_DWRE) ? " dwre" : "", ++ (udccr & UDCCR_SMAC) ? " smac" : "", ++ (udccr & UDCCR_EMCE) ? " emce" : "", ++ (udccr & UDCCR_UDR) ? " udr" : "", ++ (udccr & UDCCR_UDA) ? " uda" : "", ++ (udccr & UDCCR_UDE) ? " ude" : "", ++ (udccr & UDCCR_ACN) >> UDCCR_ACN_S, ++ (udccr & UDCCR_AIN) >> UDCCR_AIN_S, ++ (udccr & UDCCR_AAISN)>> UDCCR_AAISN_S ); ++} ++ ++static void __attribute__ ((__unused__)) ++dump_udccsr0(const char *label) ++{ ++ u32 udccsr0 = UDCCSR0; ++ ++ DMSG("%s %s 0x%08x =%s%s%s%s%s%s%s\n", ++ label, state_name[the_controller->ep0state], udccsr0, ++ (udccsr0 & UDCCSR0_SA) ? " sa" : "", ++ (udccsr0 & UDCCSR0_RNE) ? " rne" : "", ++ (udccsr0 & UDCCSR0_FST) ? " fst" : "", ++ (udccsr0 & UDCCSR0_SST) ? " sst" : "", ++ (udccsr0 & UDCCSR0_DME) ? " dme" : "", ++ (udccsr0 & UDCCSR0_IPR) ? " ipr" : "", ++ (udccsr0 & UDCCSR0_OPC) ? " opr" : ""); ++} ++ ++static void __attribute__ ((__unused__)) ++dump_state(struct pxa27x_udc *dev) ++{ ++ unsigned i; ++ ++ DMSG("%s, udcicr %02X.%02X, udcsir %02X.%02x, udcfnr %02X\n", ++ state_name[dev->ep0state], ++ UDCICR1, UDCICR0, UDCISR1, UDCISR0, UDCFNR); ++ dump_udccr("udccr"); ++ ++ if (!dev->driver) { ++ DMSG("no gadget driver bound\n"); ++ return; ++ } else ++ DMSG("ep0 driver '%s'\n", dev->driver->driver.name); ++ ++ ++ dump_udccsr0 ("udccsr0"); ++ DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n", ++ dev->stats.write.bytes, dev->stats.write.ops, ++ dev->stats.read.bytes, dev->stats.read.ops); ++ ++ for (i = 1; i < UDC_EP_NUM; i++) { ++ if (dev->ep[i].assigned) ++ DMSG ("udccs%d = %02x\n", i, *dev->ep->reg_udccsr); ++ } ++} ++ ++#if 0 ++static void dump_regs(u8 ep) ++{ ++ DMSG("EP:%d UDCCSR:0x%08x UDCBCR:0x%08x\n UDCCR:0x%08x\n", ++ ep,UDCCSN(ep), UDCBCN(ep), UDCCN(ep)); ++} ++static void dump_req (struct pxa27x_request *req) ++{ ++ struct usb_request *r = &req->req; ++ ++ DMSG("%s: buf:0x%08x length:%d dma:0x%08x actual:%d\n", ++ __FUNCTION__, (unsigned)r->buf, r->length, ++ r->dma, r->actual); ++} ++#endif ++ ++#else ++ ++#define DMSG(stuff...) do{}while(0) ++ ++#define dump_udccr(x) do{}while(0) ++#define dump_udccsr0(x) do{}while(0) ++#define dump_state(x) do{}while(0) ++ ++#define UDC_DEBUG ((unsigned)4) ++ ++#endif ++ ++#define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0) ++ ++#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff) ++#define INFO(stuff...) printk(KERN_INFO "udc: " stuff) ++ ++ ++#endif /* __LINUX_USB_GADGET_PXA27X_H */ +diff --git a/drivers/usb/gadget/pxa2xx_udc.h b/drivers/usb/gadget/pxa2xx_udc.h +index 0e5d0e6..9483a49 100644 +--- a/drivers/usb/gadget/pxa2xx_udc.h ++++ b/drivers/usb/gadget/pxa2xx_udc.h +@@ -206,7 +206,8 @@ dump_state(struct pxa2xx_udc *dev) + unsigned i; + + DMSG("%s %s, uicr %02X.%02X, usir %02X.%02x, ufnr %02X.%02X\n", +- is_usb_connected() ? "host " : "disconnected", ++ //is_usb_connected() ? "host " : "disconnected", ++ "host ", + state_name[dev->ep0state], + UICR1, UICR0, USIR1, USIR0, UFNRH, UFNRL); + dump_udccr("udccr"); +@@ -223,8 +224,8 @@ dump_state(struct pxa2xx_udc *dev) + } else + DMSG("ep0 driver '%s'\n", dev->driver->driver.name); + +- if (!is_usb_connected()) +- return; ++ //if (!is_usb_connected()) ++ // return; + + dump_udccs0 ("udccs0"); + DMSG("ep0 IN %lu/%lu, OUT %lu/%lu\n", +diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c +index ce4d2e0..5dac23f 100644 +--- a/drivers/usb/gadget/serial.c ++++ b/drivers/usb/gadget/serial.c +@@ -1356,6 +1356,7 @@ static int __init gs_bind(struct usb_gadget *gadget) + struct usb_ep *ep; + struct gs_dev *dev; + int gcnum; ++ struct usb_endpoint_config ep_config[2]; + + /* Some controllers can't support CDC ACM: + * - sh doesn't support multiple interfaces or configs; +@@ -1376,22 +1377,33 @@ static int __init gs_bind(struct usb_gadget *gadget) + __constant_cpu_to_le16(GS_VERSION_NUM|0x0099); + } + ++ ep_config[0].config = GS_BULK_CONFIG_ID; ++ ep_config[0].interface = gs_bulk_interface_desc.bInterfaceNumber; ++ ep_config[0].altinterface = gs_bulk_interface_desc.bAlternateSetting; ++ ep_config[1].config = GS_ACM_CONFIG_ID; ++ ep_config[1].interface = gs_data_interface_desc.bInterfaceNumber; ++ ep_config[1].altinterface = gs_data_interface_desc.bAlternateSetting; ++ + usb_ep_autoconfig_reset(gadget); + +- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc); ++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_in_desc, &ep_config[0], 2); + if (!ep) + goto autoconf_fail; + EP_IN_NAME = ep->name; + ep->driver_data = ep; /* claim the endpoint */ + +- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc); ++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_out_desc, &ep_config[0], 2); + if (!ep) + goto autoconf_fail; + EP_OUT_NAME = ep->name; + ep->driver_data = ep; /* claim the endpoint */ + + if (use_acm) { +- ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc); ++ ep_config[0].config = GS_ACM_CONFIG_ID; ++ ep_config[0].interface = gs_control_interface_desc.bInterfaceNumber; ++ ep_config[0].altinterface = gs_control_interface_desc.bAlternateSetting; ++ ++ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc, &ep_config[0], 1); + if (!ep) { + printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name); + goto autoconf_fail; +diff --git a/drivers/usb/gadget/zero.c b/drivers/usb/gadget/zero.c +index fcfe869..1e40d46 100644 +--- a/drivers/usb/gadget/zero.c ++++ b/drivers/usb/gadget/zero.c +@@ -1142,6 +1142,7 @@ zero_bind (struct usb_gadget *gadget) + struct zero_dev *dev; + struct usb_ep *ep; + int gcnum; ++ struct usb_endpoint_config ep_config[2]; + + /* FIXME this can't yet work right with SH ... it has only + * one configuration, numbered one. +@@ -1154,7 +1155,15 @@ zero_bind (struct usb_gadget *gadget) + * but there may also be important quirks to address. + */ + usb_ep_autoconfig_reset (gadget); +- ep = usb_ep_autoconfig (gadget, &fs_source_desc); ++ ++ ep_config[0].config = CONFIG_SOURCE_SINK; ++ ep_config[0].interface = source_sink_intf.bInterfaceNumber; ++ ep_config[0].altinterface = source_sink_intf.bAlternateSetting; ++ ep_config[1].config = CONFIG_LOOPBACK; ++ ep_config[1].interface = loopback_intf.bInterfaceNumber; ++ ep_config[1].altinterface = loopback_intf.bAlternateSetting; ++ ++ ep = usb_ep_autoconfig(gadget, &fs_source_desc, &ep_config[0], 2); + if (!ep) { + autoconf_fail: + printk (KERN_ERR "%s: can't autoconfigure on %s\n", +@@ -1164,7 +1173,7 @@ autoconf_fail: + EP_IN_NAME = ep->name; + ep->driver_data = ep; /* claim */ + +- ep = usb_ep_autoconfig (gadget, &fs_sink_desc); ++ ep = usb_ep_autoconfig(gadget, &fs_sink_desc, &ep_config[0], 2); + if (!ep) + goto autoconf_fail; + EP_OUT_NAME = ep->name; +diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig +index 2580f5f..12e4b91 100644 +--- a/drivers/video/backlight/Kconfig ++++ b/drivers/video/backlight/Kconfig +@@ -40,7 +40,7 @@ config BACKLIGHT_CLASS_DEVICE + + config BACKLIGHT_CORGI + tristate "Sharp Corgi Backlight Driver (SL Series)" +- depends on BACKLIGHT_CLASS_DEVICE && PXA_SHARPSL ++ depends on BACKLIGHT_CLASS_DEVICE && (PXA_SHARPSL || MACH_EM_X270) + default y + help + If you have a Sharp Zaurus SL-C7xx, SL-Cxx00 or SL-6000x say y to enable the +diff --git a/include/asm-arm/arch-pxa/pwr-i2c.h b/include/asm-arm/arch-pxa/pwr-i2c.h +new file mode 100644 +index 0000000..6bad486 +--- /dev/null ++++ b/include/asm-arm/arch-pxa/pwr-i2c.h +@@ -0,0 +1,61 @@ ++/* ++ * (C) Copyright 2007 CompuLab, Ltd ++ * Mike Rapoport ++ * ++ * Simple Power I2C interface for PXA processors. ++ * Based on U-Boot PXA I2C driver. ++ * ++ * This program 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., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++ ++#ifndef __PXA_PWR_I2C_H__ ++#define __PXA_PWR_I2C_H__ ++ ++/* ++ * Configuration items. ++ */ ++#define I2C_RXTX_LEN 128 /* maximum tx/rx buffer length */ ++ ++/* ++ * Probe the given I2C chip address. Returns 0 if a chip responded, ++ * not 0 on failure. ++ */ ++extern int pxa_pwr_i2c_probe(u8 chip); ++ ++/* ++ * Read/Write interface: ++ * chip: I2C chip address, range 0..127 ++ * addr: Memory (register) address within the chip ++ * alen: Number of bytes to use for addr (typically 1, 2 for larger ++ * memories, 0 for register type devices with only one ++ * register) ++ * buffer: Where to read/write the data ++ * len: How many bytes to read/write ++ * ++ * Returns: 0 on success, not 0 on failure ++ */ ++extern int pxa_pwr_i2c_read(u8 chip, uint addr, int alen, u8 *buffer, int len); ++extern int pxa_pwr_i2c_write(u8 chip, uint addr, int alen, ++ u8 *buffer, int len); ++ ++/* ++ * Utility routines to read/write registers. ++ */ ++extern s32 pxa_pwr_i2c_reg_read (u8 chip, u8 reg); ++extern s32 pxa_pwr_i2c_reg_write(u8 chip, u8 reg, u8 val); ++ ++#endif /* __PXA_PWR_I2C_H___ */ +diff --git a/include/linux/da9030.h b/include/linux/da9030.h +new file mode 100644 +index 0000000..6eb89e2 +--- /dev/null ++++ b/include/linux/da9030.h +@@ -0,0 +1,118 @@ ++#ifndef _DA9030_H ++#define _DA9030_H ++ ++/* DA9030 has 24 possible interrupts */ ++#define DA9030_IRQ_COUNT 24 ++ ++/* EVENT A */ ++#define DA9030_IRQ_ONKEY_EN 0 ++#define DA9030_IRQ_PWREN1 1 ++#define DA9030_IRQ_EXTON 2 ++#define DA9030_IRQ_CHDET 3 ++#define DA9030_IRQ_TBAT 4 ++#define DA9030_IRQ_VBATMON 5 ++#define DA9030_IRQ_VBATMONTXON 6 ++#define DA9030_IRQ_CHIOVER 7 ++ ++/* EVENT B */ ++#define DA9030_IRQ_TCTO 8 ++#define DA9030_IRQ_CCTO 9 ++#define DA9030_IRQ_ADC_READY 10 ++#define DA9030_IRQ_VBUS_4_4 11 ++#define DA9030_IRQ_VBUS_4_0 12 ++#define DA9030_IRQ_SESSION_VALID 13 ++#define DA9030_IRQ_SRP_DETECT 14 ++#define DA9030_IRQ_WDOG_INTR 15 ++ ++/* EVENT C */ ++#define DA9030_IRQ_LDO15 16 ++#define DA9030_IRQ_LDO16 17 ++#define DA9030_IRQ_LDO17 18 ++#define DA9030_IRQ_LDO18 19 ++#define DA9030_IRQ_LDO19 20 ++#define DA9030_IRQ_BUCK2 21 ++#define DA9030_IRQ_ADC_IN4 22 ++#define DA9030_IRQ_ADC_IN5 23 ++ ++enum da9030_ldo_sleep_mode { ++ DA9030_LDO_SLEEP_KEEP = 0x0, ++ DA9030_LDO_SLEEP_SHUT_DOWN = 0x1, ++ DA9030_LDO_SLEEP_POWER_UP = 0x2, ++ DA9030_LDO_SLEEP_HIGH_Z = 0x3, ++}; ++ ++enum da9030_led_rate { ++ DA9030_LED_RATE_ON = 0x0, ++ DA9030_LED_RATE_0_52 = 0x1, ++ DA9030_LED_RATE_1_05 = 0x2, ++ DA9030_LED_RATE_2_1 = 0x3, ++}; ++ ++enum da9030_led_duty_cycle { ++ DA9030_LED_DUTY_1_16 = 0x0, ++ DA9030_LED_DUTY_1_8 = 0x1, ++ DA9030_LED_DUTY_1_4 = 0x2, ++ DA9030_LED_DUTY_1_2 = 0x3, ++}; ++ ++enum da9030_led_pwm_chop { ++ DA9030_LED_PWM_8_8 = 0x0, ++ DA9030_LED_PWM_7_8 = 0x1, ++ DA9030_LED_PWM_6_8 = 0x2, ++ DA9030_LED_PWM_5_8 = 0x3, ++ DA9030_LED_PWM_4_8 = 0x4, ++ DA9030_LED_PWM_3_8 = 0x5, ++ DA9030_LED_PWM_2_8 = 0x6, ++ DA9030_LED_PWM_1_8 = 0x7, ++}; ++ ++struct da9030_adc_res { ++ int vbat_res; ++ int vbatmin_res; ++ int vbatmintxon; ++ int ichmax_res; ++ int ichmin_res; ++ int ichaverage_res; ++ int vchmax_res; ++ int vchmin_res; ++ int tbat_res; ++ int adc_in4_res; ++ int adc_in5_res; ++}; ++ ++extern int da9030_get_status(void); ++extern int da9030_get_fault_log(void); ++ ++extern void da9030_enable_adc(void); ++extern void da9030_read_adc(struct da9030_adc_res *adc); ++ ++extern void da9030_set_wled(int on, unsigned int brightness); ++ ++extern int da9030_set_led(int led, int on, ++ enum da9030_led_rate rate, ++ enum da9030_led_duty_cycle duty, ++ enum da9030_led_pwm_chop pwm_chop); ++ ++extern int da9030_set_charger(int on, unsigned int mA, unsigned int mV); ++extern void da9030_get_charger(int *on, unsigned int *mA, unsigned int *mV); ++ ++extern int da9030_set_ldo(int ldo, int on, unsigned int mV, ++ enum da9030_ldo_sleep_mode sleep_mode); ++extern int da9030_set_buck(int buck, int on, unsigned int mV, int flags); ++ ++extern void da9030_set_thresholds(unsigned int tbathighp, ++ unsigned int tbathighn, ++ unsigned int tbatlow, ++ unsigned int vbatmon); ++ ++extern int da9030_register_callback(int event, ++ void (*callback)(int event, void *data), ++ void *data); ++extern void da9030_unregister_callback(int event); ++ ++/* Keep these for now, although they are unsafe. When I'll see what ++ other methods are needed from DA9030, I'll remove these */ ++extern s32 da9030_get_reg(u32 reg); ++extern s32 da9030_set_reg(u32 reg, u8 val); ++ ++#endif +diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h +index 4f59b2a..792c568 100644 +--- a/include/linux/usb_gadget.h ++++ b/include/linux/usb_gadget.h +@@ -397,10 +397,28 @@ usb_ep_fifo_flush (struct usb_ep *ep) + + struct usb_gadget; + ++/** ++ * struct usb_endpoint_config - possible configurations of a given endpoint ++ * @config: the configuration number ++ * @interface: the interface number ++ * @altinterface: the altinterface number ++ * ++ * Used as an array to pass information about the possible configurations ++ * of a given endpoint to the bus controller. ++ */ ++struct usb_endpoint_config { ++ u8 config; ++ u8 interface; ++ u8 altinterface; ++}; ++ + /* the rest of the api to the controller hardware: device operations, + * which don't involve endpoints (or i/o). + */ + struct usb_gadget_ops { ++ struct usb_ep* (*ep_alloc)(struct usb_gadget *, ++ struct usb_endpoint_descriptor *, ++ struct usb_endpoint_config *, int); + int (*get_frame)(struct usb_gadget *); + int (*wakeup)(struct usb_gadget *); + int (*set_selfpowered) (struct usb_gadget *, int is_selfpowered); +@@ -824,7 +842,10 @@ int usb_gadget_config_buf(const struct usb_config_descriptor *config, + /* utility wrapping a simple endpoint selection policy */ + + extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *, +- struct usb_endpoint_descriptor *) __devinit; ++ struct usb_endpoint_descriptor *, ++ struct usb_endpoint_config *, ++ int numconfigs ++); + + extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit; + +diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h +new file mode 100644 +index 0000000..354e533 +--- /dev/null ++++ b/include/linux/wm97xx.h +@@ -0,0 +1,291 @@ ++ ++/* ++ * Register bits and API for Wolfson WM97xx series of codecs ++ */ ++ ++#ifndef _LINUX_WM97XX_H ++#define _LINUX_WM97XX_H ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include /* Input device layer */ ++ ++/* ++ * WM97xx AC97 Touchscreen registers ++ */ ++#define AC97_WM97XX_DIGITISER1 0x76 ++#define AC97_WM97XX_DIGITISER2 0x78 ++#define AC97_WM97XX_DIGITISER_RD 0x7a ++#define AC97_WM9713_DIG1 0x74 ++#define AC97_WM9713_DIG2 AC97_WM97XX_DIGITISER1 ++#define AC97_WM9713_DIG3 AC97_WM97XX_DIGITISER2 ++ ++/* ++ * WM97xx register bits ++ */ ++#define WM97XX_POLL 0x8000 /* initiate a polling measurement */ ++#define WM97XX_ADCSEL_X 0x1000 /* x coord measurement */ ++#define WM97XX_ADCSEL_Y 0x2000 /* y coord measurement */ ++#define WM97XX_ADCSEL_PRES 0x3000 /* pressure measurement */ ++#define WM97XX_ADCSEL_MASK 0x7000 ++#define WM97XX_COO 0x0800 /* enable coordinate mode */ ++#define WM97XX_CTC 0x0400 /* enable continuous mode */ ++#define WM97XX_CM_RATE_93 0x0000 /* 93.75Hz continuous rate */ ++#define WM97XX_CM_RATE_187 0x0100 /* 187.5Hz continuous rate */ ++#define WM97XX_CM_RATE_375 0x0200 /* 375Hz continuous rate */ ++#define WM97XX_CM_RATE_750 0x0300 /* 750Hz continuous rate */ ++#define WM97XX_CM_RATE_8K 0x00f0 /* 8kHz continuous rate */ ++#define WM97XX_CM_RATE_12K 0x01f0 /* 12kHz continuous rate */ ++#define WM97XX_CM_RATE_24K 0x02f0 /* 24kHz continuous rate */ ++#define WM97XX_CM_RATE_48K 0x03f0 /* 48kHz continuous rate */ ++#define WM97XX_CM_RATE_MASK 0x03f0 ++#define WM97XX_RATE(i) (((i & 3) << 8) | ((i & 4) ? 0xf0 : 0)) ++#define WM97XX_DELAY(i) ((i << 4) & 0x00f0) /* sample delay times */ ++#define WM97XX_DELAY_MASK 0x00f0 ++#define WM97XX_SLEN 0x0008 /* slot read back enable */ ++#define WM97XX_SLT(i) ((i - 5) & 0x7) /* touchpanel slot selection (5-11) */ ++#define WM97XX_SLT_MASK 0x0007 ++#define WM97XX_PRP_DETW 0x4000 /* pen detect on, digitiser off, wake up */ ++#define WM97XX_PRP_DET 0x8000 /* pen detect on, digitiser off, no wake up */ ++#define WM97XX_PRP_DET_DIG 0xc000 /* pen detect on, digitiser on */ ++#define WM97XX_RPR 0x2000 /* wake up on pen down */ ++#define WM97XX_PEN_DOWN 0x8000 /* pen is down */ ++#define WM97XX_ADCSRC_MASK 0x7000 /* ADC source mask */ ++ ++#define WM97XX_AUX_ID1 0x8001 ++#define WM97XX_AUX_ID2 0x8002 ++#define WM97XX_AUX_ID3 0x8003 ++#define WM97XX_AUX_ID4 0x8004 ++ ++ ++/* WM9712 Bits */ ++#define WM9712_45W 0x1000 /* set for 5-wire touchscreen */ ++#define WM9712_PDEN 0x0800 /* measure only when pen down */ ++#define WM9712_WAIT 0x0200 /* wait until adc is read before next sample */ ++#define WM9712_PIL 0x0100 /* current used for pressure measurement. set 400uA else 200uA */ ++#define WM9712_MASK_HI 0x0040 /* hi on mask pin (47) stops conversions */ ++#define WM9712_MASK_EDGE 0x0080 /* rising/falling edge on pin delays sample */ ++#define WM9712_MASK_SYNC 0x00c0 /* rising/falling edge on mask initiates sample */ ++#define WM9712_RPU(i) (i&0x3f) /* internal pull up on pen detect (64k / rpu) */ ++#define WM9712_PD(i) (0x1 << i) /* power management */ ++ ++/* WM9712 Registers */ ++#define AC97_WM9712_POWER 0x24 ++#define AC97_WM9712_REV 0x58 ++ ++/* WM9705 Bits */ ++#define WM9705_PDEN 0x1000 /* measure only when pen is down */ ++#define WM9705_PINV 0x0800 /* inverts sense of pen down output */ ++#define WM9705_BSEN 0x0400 /* BUSY flag enable, pin47 is 1 when busy */ ++#define WM9705_BINV 0x0200 /* invert BUSY (pin47) output */ ++#define WM9705_WAIT 0x0100 /* wait until adc is read before next sample */ ++#define WM9705_PIL 0x0080 /* current used for pressure measurement. set 400uA else 200uA */ ++#define WM9705_PHIZ 0x0040 /* set PHONE and PCBEEP inputs to high impedance */ ++#define WM9705_MASK_HI 0x0010 /* hi on mask stops conversions */ ++#define WM9705_MASK_EDGE 0x0020 /* rising/falling edge on pin delays sample */ ++#define WM9705_MASK_SYNC 0x0030 /* rising/falling edge on mask initiates sample */ ++#define WM9705_PDD(i) (i & 0x000f) /* pen detect comparator threshold */ ++ ++ ++/* WM9713 Bits */ ++#define WM9713_PDPOL 0x0400 /* Pen down polarity */ ++#define WM9713_POLL 0x0200 /* initiate a polling measurement */ ++#define WM9713_CTC 0x0100 /* enable continuous mode */ ++#define WM9713_ADCSEL_X 0x0002 /* X measurement */ ++#define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ ++#define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ ++#define WM9713_COO 0x0001 /* enable coordinate mode */ ++#define WM9713_PDEN 0x0800 /* measure only when pen down */ ++#define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ ++#define WM9713_WAIT 0x0200 /* coordinate wait */ ++ ++/* AUX ADC ID's */ ++#define TS_COMP1 0x0 ++#define TS_COMP2 0x1 ++#define TS_BMON 0x2 ++#define TS_WIPER 0x3 ++ ++/* ID numbers */ ++#define WM97XX_ID1 0x574d ++#define WM9712_ID2 0x4c12 ++#define WM9705_ID2 0x4c05 ++#define WM9713_ID2 0x4c13 ++ ++/* Codec GPIO's */ ++#define WM97XX_MAX_GPIO 16 ++#define WM97XX_GPIO_1 (1 << 1) ++#define WM97XX_GPIO_2 (1 << 2) ++#define WM97XX_GPIO_3 (1 << 3) ++#define WM97XX_GPIO_4 (1 << 4) ++#define WM97XX_GPIO_5 (1 << 5) ++#define WM97XX_GPIO_6 (1 << 6) ++#define WM97XX_GPIO_7 (1 << 7) ++#define WM97XX_GPIO_8 (1 << 8) ++#define WM97XX_GPIO_9 (1 << 9) ++#define WM97XX_GPIO_10 (1 << 10) ++#define WM97XX_GPIO_11 (1 << 11) ++#define WM97XX_GPIO_12 (1 << 12) ++#define WM97XX_GPIO_13 (1 << 13) ++#define WM97XX_GPIO_14 (1 << 14) ++#define WM97XX_GPIO_15 (1 << 15) ++ ++ ++#define AC97_LINK_FRAME 21 /* time in uS for AC97 link frame */ ++ ++ ++/*---------------- Return codes from sample reading functions ---------------*/ ++ ++/* More data is available; call the sample gathering function again */ ++#define RC_AGAIN 0x00000001 ++/* The returned sample is valid */ ++#define RC_VALID 0x00000002 ++/* The pen is up (the first RC_VALID without RC_PENUP means pen is down) */ ++#define RC_PENUP 0x00000004 ++/* The pen is down (RC_VALID implies RC_PENDOWN, but sometimes it is helpful ++ to tell the handler that the pen is down but we don't know yet his coords, ++ so the handler should not sleep or wait for pendown irq) */ ++#define RC_PENDOWN 0x00000008 ++ ++/* The wm97xx driver provides a private API for writing platform-specific ++ * drivers. ++ */ ++ ++/* The structure used to return arch specific sampled data into */ ++struct wm97xx_data { ++ int x; ++ int y; ++ int p; ++}; ++ ++/* Codec GPIO status ++ */ ++typedef enum { ++ WM97XX_GPIO_HIGH, ++ WM97XX_GPIO_LOW ++} wm97xx_gpio_status_t; ++ ++/* Codec GPIO direction ++ */ ++typedef enum { ++ WM97XX_GPIO_IN, ++ WM97XX_GPIO_OUT ++} wm97xx_gpio_dir_t; ++ ++/* Codec GPIO polarity ++ */ ++typedef enum { ++ WM97XX_GPIO_POL_HIGH, ++ WM97XX_GPIO_POL_LOW ++} wm97xx_gpio_pol_t; ++ ++/* Codec GPIO sticky ++ */ ++typedef enum { ++ WM97XX_GPIO_STICKY, ++ WM97XX_GPIO_NOTSTICKY ++} wm97xx_gpio_sticky_t; ++ ++/* Codec GPIO wake ++ */ ++typedef enum { ++ WM97XX_GPIO_WAKE, ++ WM97XX_GPIO_NOWAKE ++} wm97xx_gpio_wake_t; ++ ++ ++/* ++ * Digitiser ioctl commands ++ */ ++#define WM97XX_DIG_START 0x1 ++#define WM97XX_DIG_STOP 0x2 ++#define WM97XX_PHY_INIT 0x3 ++#define WM97XX_AUX_PREPARE 0x4 ++#define WM97XX_DIG_RESTORE 0x5 ++ ++struct wm97xx; ++extern struct wm97xx_codec_drv wm97xx_codec; ++ ++/* ++ * Codec driver interface - allows mapping to WM9705/12/13 and newer codecs ++ */ ++struct wm97xx_codec_drv { ++ u16 id; ++ char *name; ++ int (*poll_sample) (struct wm97xx *, int adcsel, int *sample); /* read 1 sample */ ++ int (*poll_touch) (struct wm97xx *, struct wm97xx_data *); /* read X,Y,[P] in poll */ ++ int (*digitiser_ioctl) (struct wm97xx *, int cmd); ++ int (*acc_enable) (struct wm97xx *, int enable); ++}; ++ ++ ++/* Machine specific and accelerated touch operations */ ++struct wm97xx_mach_ops { ++ ++ /* accelerated touch readback - coords are transmited on AC97 link */ ++ int acc_enabled; ++ void (*acc_pen_up) (struct wm97xx *); ++ int (*acc_pen_down) (struct wm97xx *); ++ int (*acc_startup) (struct wm97xx *); ++ void (*acc_shutdown) (struct wm97xx *); ++ ++ /* pre and post sample - can be used to minimise any analog noise */ ++ void (*pre_sample) (int); /* function to run before sampling */ ++ void (*post_sample) (int); /* function to run after sampling */ ++}; ++ ++struct wm97xx { ++ u16 dig[3], id, gpio[6], misc; /* Cached codec registers */ ++ u16 dig_save[3]; /* saved during aux reading */ ++ struct wm97xx_codec_drv *codec; /* attached codec driver*/ ++ struct input_dev* input_dev; /* touchscreen input device */ ++ struct snd_ac97 *ac97; /* ALSA codec access */ ++ struct device *dev; /* ALSA device */ ++ struct device *battery_dev; ++ struct device *touch_dev; ++ struct wm97xx_mach_ops *mach_ops; ++ struct mutex codec_mutex; ++ struct completion ts_init; ++ struct completion ts_exit; ++ struct task_struct *ts_task; ++ unsigned int pen_irq; /* Pen IRQ number in use */ ++ wait_queue_head_t pen_irq_wait; /* Pen IRQ wait queue */ ++ struct workqueue_struct *pen_irq_workq; ++ struct work_struct pen_event_work; ++ u16 acc_slot; /* AC97 slot used for acc touch data */ ++ u16 acc_rate; /* acc touch data rate */ ++ unsigned int ts_use_count; ++ unsigned pen_is_down:1; /* Pen is down */ ++ unsigned aux_waiting:1; /* aux measurement waiting */ ++ unsigned pen_probably_down:1; /* used in polling mode */ ++}; ++ ++/* Codec GPIO access (not supported on WM9705) ++ * This can be used to set/get codec GPIO and Virtual GPIO status. ++ */ ++wm97xx_gpio_status_t wm97xx_get_gpio(struct wm97xx *wm, u32 gpio); ++void wm97xx_set_gpio(struct wm97xx *wm, u32 gpio, ++ wm97xx_gpio_status_t status); ++void wm97xx_config_gpio(struct wm97xx *wm, u32 gpio, ++ wm97xx_gpio_dir_t dir, ++ wm97xx_gpio_pol_t pol, ++ wm97xx_gpio_sticky_t sticky, ++ wm97xx_gpio_wake_t wake); ++ ++/* codec AC97 IO access */ ++int wm97xx_reg_read(struct wm97xx *wm, u16 reg); ++void wm97xx_reg_write(struct wm97xx *wm, u16 reg, u16 val); ++ ++/* aux adc readback */ ++int wm97xx_read_aux_adc(struct wm97xx *wm, u16 adcsel); ++ ++/* machine ops */ ++int wm97xx_register_mach_ops(struct wm97xx *, struct wm97xx_mach_ops *); ++void wm97xx_unregister_mach_ops(struct wm97xx *); ++ ++extern struct bus_type wm97xx_bus_type; ++#endif +diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig +index a83e229..89b5730 100644 +--- a/sound/soc/pxa/Kconfig ++++ b/sound/soc/pxa/Kconfig +@@ -53,3 +53,12 @@ config SND_PXA2XX_SOC_TOSA + help + Say Y if you want to add support for SoC audio on Sharp + Zaurus SL-C6000x models (Tosa). ++ ++config SND_PXA2XX_SOC_EM_X270 ++ tristate "SoC Audio support for CompuLab EM-x270" ++ depends on SND_PXA2XX_SOC && MACH_EM_X270 ++ select SND_PXA2XX_SOC_AC97 ++ select SND_SOC_WM9712 ++ help ++ Say Y if you want to add support for SoC audio on ++ CompuLab EM-x270. +diff --git a/sound/soc/pxa/Makefile b/sound/soc/pxa/Makefile +index 78e0d6b..32375ac 100644 +--- a/sound/soc/pxa/Makefile ++++ b/sound/soc/pxa/Makefile +@@ -12,9 +12,11 @@ snd-soc-corgi-objs := corgi.o + snd-soc-poodle-objs := poodle.o + snd-soc-tosa-objs := tosa.o + snd-soc-spitz-objs := spitz.o ++snd-soc-em-x270-objs := em-x270.o + + obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o + obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o + obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o + obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o ++obj-$(CONFIG_SND_PXA2XX_SOC_EM_X270) += snd-soc-em-x270.o + +diff --git a/sound/soc/pxa/em-x270.c b/sound/soc/pxa/em-x270.c +new file mode 100644 +index 0000000..9e891d0 +--- /dev/null ++++ b/sound/soc/pxa/em-x270.c +@@ -0,0 +1,137 @@ ++/* ++ * em-x270.c -- SoC audio for EM-X270 ++ * ++ * Copyright 2007 CompuLab, Ltd. ++ * ++ * Author: Mike Rapoport ++ * ++ * Copied from tosa.c: ++ * Copyright 2005 Wolfson Microelectronics PLC. ++ * Copyright 2005 Openedhand Ltd. ++ * ++ * Authors: Liam Girdwood ++ * Richard Purdie ++ * ++ * This program 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. ++ * ++ */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++#include "../codecs/wm9712.h" ++#include "pxa2xx-pcm.h" ++#include "pxa2xx-ac97.h" ++ ++static struct snd_soc_machine em_x270; ++ ++#define EM_X270_HP 0 ++#define EM_X270_MIC_INT 1 ++#define EM_X270_HEADSET 2 ++#define EM_X270_HP_OFF 3 ++#define EM_X270_SPK_ON 0 ++#define EM_X270_SPK_OFF 1 ++ ++ ++static struct snd_soc_ops em_x270_ops = { ++}; ++ ++static const struct snd_kcontrol_new em_x270_controls[] = { ++}; ++ ++static int em_x270_ac97_init(struct snd_soc_codec *codec) ++{ ++ int i, err; ++ ++ /* add em_x270 specific controls */ ++ for (i = 0; i < ARRAY_SIZE(em_x270_controls); i++) { ++ err = snd_ctl_add(codec->card, ++ snd_soc_cnew(&em_x270_controls[i],codec, NULL)); ++ if (err < 0) ++ return err; ++ } ++ ++ snd_soc_dapm_sync_endpoints(codec); ++ return 0; ++} ++ ++static struct snd_soc_dai_link em_x270_dai[] = { ++ { ++ .name = "AC97", ++ .stream_name = "AC97 HiFi", ++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_HIFI], ++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_HIFI], ++ .init = em_x270_ac97_init, ++ .ops = &em_x270_ops, ++ }, ++ { ++ .name = "AC97 Aux", ++ .stream_name = "AC97 Aux", ++ .cpu_dai = &pxa_ac97_dai[PXA2XX_DAI_AC97_AUX], ++ .codec_dai = &wm9712_dai[WM9712_DAI_AC97_AUX], ++ .ops = &em_x270_ops, ++ }, ++}; ++ ++static struct snd_soc_machine em_x270 = { ++ .name = "EM-X270", ++ .dai_link = em_x270_dai, ++ .num_links = ARRAY_SIZE(em_x270_dai), ++}; ++ ++static struct snd_soc_device em_x270_snd_devdata = { ++ .machine = &em_x270, ++ .platform = &pxa2xx_soc_platform, ++ .codec_dev = &soc_codec_dev_wm9712, ++}; ++ ++static struct platform_device *em_x270_snd_device; ++ ++static int __init em_x270_init(void) ++{ ++ int ret; ++ ++ if (!machine_is_em_x270()) ++ return -ENODEV; ++ ++ em_x270_snd_device = platform_device_alloc("soc-audio", -1); ++ if (!em_x270_snd_device) ++ return -ENOMEM; ++ ++ platform_set_drvdata(em_x270_snd_device, &em_x270_snd_devdata); ++ em_x270_snd_devdata.dev = &em_x270_snd_device->dev; ++ ret = platform_device_add(em_x270_snd_device); ++ ++ if (ret) ++ platform_device_put(em_x270_snd_device); ++ ++ return ret; ++} ++ ++static void __exit em_x270_exit(void) ++{ ++ platform_device_unregister(em_x270_snd_device); ++} ++ ++module_init(em_x270_init); ++module_exit(em_x270_exit); ++ ++/* Module information */ ++MODULE_AUTHOR("Mike Rapoport"); ++MODULE_DESCRIPTION("ALSA SoC EM-X270"); ++MODULE_LICENSE("GPL"); diff --git a/recipes/linux/linux_2.6.23.bb b/recipes/linux/linux_2.6.23.bb index 76ebbbe917..0f62a1c37c 100644 --- a/recipes/linux/linux_2.6.23.bb +++ b/recipes/linux/linux_2.6.23.bb @@ -28,6 +28,9 @@ SRC_URI_avr32 = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 file://defconfig \ http://avr32linux.org/twiki/pub/Main/LinuxPatches/linux-2.6.23.atmel.3.patch.bz2;patch=1 \ " +SRC_URI_append_em-x270 = "\ + file://em-x270.patch;patch=1 \ + file://01-prevent_loop_timespec_add_ns.patch;patch=1" SRC_URI_append_cm-x270 = "\ file://0001-cm-x270-base2.patch;patch=1 \ -- cgit v1.2.3 From 7a7e66530372d88a716bbb4a2b48563680f0ef08 Mon Sep 17 00:00:00 2001 From: Graham Gower Date: Tue, 4 Aug 2009 15:46:28 +0000 Subject: libmad_0.15.1b: fix libmad compilation with GCC-4.4 on mips Fix build failure due to removal of the h asm constraint in GCC-4.4 mips port. http://patchwork.openembedded.org/patch/921/ Signed-Off-By: Holger Hans Peter Freyther --- recipes/libmad/files/mad-mips-h-constraint.patch | 70 ++++++++++++++++++++++++ recipes/libmad/libmad_0.15.1b.bb | 3 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 recipes/libmad/files/mad-mips-h-constraint.patch diff --git a/recipes/libmad/files/mad-mips-h-constraint.patch b/recipes/libmad/files/mad-mips-h-constraint.patch new file mode 100644 index 0000000000..b65555e1fa --- /dev/null +++ b/recipes/libmad/files/mad-mips-h-constraint.patch @@ -0,0 +1,70 @@ +diff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h +--- libmad-0.15.1b-orig/fixed.h 2004-02-17 12:32:03.000000000 +1030 ++++ libmad-0.15.1b/fixed.h 2009-08-05 10:46:30.000000000 +0930 +@@ -299,6 +299,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -328,6 +345,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ +diff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h +--- libmad-0.15.1b-orig/mad.h 2004-02-17 13:25:44.000000000 +1030 ++++ libmad-0.15.1b/mad.h 2009-08-05 10:42:40.000000000 +0930 +@@ -344,6 +344,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -373,6 +390,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ diff --git a/recipes/libmad/libmad_0.15.1b.bb b/recipes/libmad/libmad_0.15.1b.bb index 4a75c2d927..738dcc2160 100644 --- a/recipes/libmad/libmad_0.15.1b.bb +++ b/recipes/libmad/libmad_0.15.1b.bb @@ -7,7 +7,8 @@ PR = "r4" SRC_URI = "${SOURCEFORGE_MIRROR}/mad/libmad-${PV}.tar.gz \ file://add-pkgconfig.patch;patch=1 \ - file://mad.diff;patch=1 " + file://mad.diff;patch=1 \ + file://mad-mips-h-constraint.patch;patch=1" S = "${WORKDIR}/libmad-${PV}" -- cgit v1.2.3 From 0d3f61c8280b329f573ded891fad573f666379db Mon Sep 17 00:00:00 2001 From: Graham Gower Date: Mon, 3 Aug 2009 16:19:00 +0000 Subject: libgcrypt.inc: Fix libgcrypt compilation with GCC-4.4 on mips Patch taken from https://forum.openwrt.org/viewtopic.php?id=20520 Makes sense and seems to work ok. libgcrypt.inc has --disable-asm in EXTRA_OECONF, yet strangely the configure script does nothing with this information beyond parsing it. Assembler is certainly still being used. http://patchwork.openembedded.org/patch/919/ Signed-Off-By: Holger Hans Peter Freyther --- recipes/libgcrypt/files/mips-h-constraint.patch | 70 +++++++++++++++++++++++++ recipes/libgcrypt/libgcrypt.inc | 3 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 recipes/libgcrypt/files/mips-h-constraint.patch diff --git a/recipes/libgcrypt/files/mips-h-constraint.patch b/recipes/libgcrypt/files/mips-h-constraint.patch new file mode 100644 index 0000000000..20566bc259 --- /dev/null +++ b/recipes/libgcrypt/files/mips-h-constraint.patch @@ -0,0 +1,70 @@ +The MIPS port for GCC-4.4 no longer recognizes the h asm constraint. +Patch from: https://forum.openwrt.org/viewtopic.php?id=20520 + +--- libgcrypt/mpi/longlong.h-asdf 2009-08-04 09:58:51.000000000 +0930 ++++ libgcrypt/mpi/longlong.h 2009-08-04 10:10:27.000000000 +0930 +@@ -710,18 +710,35 @@ + #endif /* __m88110__ */ + #endif /* __m88000__ */ + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ + /*************************************** + ************** MIPS ***************** + ***************************************/ + #if defined (__mips__) && W_TYPE_SIZE == 32 +-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 ++#if __GNUC_PREREQ (4,4) ++#define umul_ppmm(w1, w0, u, v) \ ++ do { \ ++ UDItype __ll = (UDItype)(u) * (v); \ ++ w1 = __ll >> 32; \ ++ w0 = __ll; \ ++ } while (0) ++#endif ++#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("multu %2,%3" \ + : "=l" ((USItype)(w0)), \ + "=h" ((USItype)(w1)) \ + : "d" ((USItype)(u)), \ + "d" ((USItype)(v))) +-#else ++#endif ++#if !defined (umul_ppmm) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("multu %2,%3 \n" \ + "mflo %0 \n" \ +@@ -739,14 +756,24 @@ + ************** MIPS/64 ************** + ***************************************/ + #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 +-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7 ++#if __GNUC_PREREQ (4,4) ++#define umul_ppmm(w1, w0, u, v) \ ++ do { \ ++ typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ ++ __ll_UTItype __ll = (__ll_UTItype)(u) * (v); \ ++ w1 = __ll >> 64; \ ++ w0 = __ll; \ ++ } while (0) ++#endif ++#if !defined (umul_ppmm) && __GNUC_PREREQ (2,7) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("dmultu %2,%3" \ + : "=l" ((UDItype)(w0)), \ + "=h" ((UDItype)(w1)) \ + : "d" ((UDItype)(u)), \ + "d" ((UDItype)(v))) +-#else ++#endif ++#if !defined (umul_ppmm) + #define umul_ppmm(w1, w0, u, v) \ + __asm__ ("dmultu %2,%3 \n" \ + "mflo %0 \n" \ diff --git a/recipes/libgcrypt/libgcrypt.inc b/recipes/libgcrypt/libgcrypt.inc index 691f4fe133..afec2fde90 100644 --- a/recipes/libgcrypt/libgcrypt.inc +++ b/recipes/libgcrypt/libgcrypt.inc @@ -5,7 +5,8 @@ LICENSE = "GPL LGPL FDL" DEPENDS = "libgpg-error" SRC_URI = "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-${PV}.tar.gz \ - file://add-pkgconfig-support.patch;patch=1" + file://add-pkgconfig-support.patch;patch=1 \ + file://mips-h-constraint.patch;patch=1" inherit autotools binconfig pkgconfig lib_package -- cgit v1.2.3 From 3b920ca03db2392b542c1fc80505228ae43b14fb Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 05:29:06 +0200 Subject: usermanual: Only advertize using shlibs for external toolchains Using shlibs and ASSUME_SHLIBS should be everything we need to get proper dependencies into packages. This section should get more work and the external-poky-toolchain approach should be copied to simplify this task. --- docs/usermanual/chapters/common_use_cases.xml | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 8000f5f1d3..241eb5318b 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -379,20 +379,16 @@ NOTE: Couldn't find shared library provider for libm.so.6 OpenEmbedded tries to automatically add run-time dependencies - (RDEPENDS) to the package. It uses the shlibs system to do add them, in this - case it was not able to find packages providing these libraries as they - are prebuilt. This means they will not be added to the RDEPENDS of the - just created package. The result can be fatal. If you use OpenEmbedded - to create images you will end up with a image without a libc being - installed. This will lead to a fatal failure. To workaround this issue - you could create a package for the metadata to install every needed - library and use ${BOOTSTRAP_EXTRA_RDEPENDS} to make sure this package is - installed when creating images. - - However, the correct way to resolve this is to provide explicit - mapping using ASSUME_SHLIBS variable. For example, for the libraries - above (partial): + (RDEPENDS) to generated packages. It is inspecting binaries and + libraries and uses the shlibs + system to do add dependencies for the linked libaries, + however in this case it was not able to find packages providing these + libraries as they were prebuilt. + + + One way to resolve this problem is to provide an explicit mapping + using the ASSUME_SHLIBS variable in a config file local.conf. + For example, for the libraries above (partial): ASSUME_SHLIBS = "libqtopia2.so.2:qtopia2_2.4 libc.so.6:libc" -- cgit v1.2.3 From 436d7da2df7ca8a8ed92ee174c91b05033d758fa Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 09:51:45 +0200 Subject: usermanual: Start a chapter on how to build your own SDK. --- docs/usermanual/chapters/common_use_cases.xml | 113 ++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 241eb5318b..2c693c681c 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -402,4 +402,117 @@ ASSUME_SHLIBS = "libqtopia2.so.2:qtopia2_2.4 libc.so.6:libc" This section is a stub, help us by expanding it + +
+ Creating Software Development Kits (SDKs) + +
+ What is provided by a SDK + + The Software Development Kit (SDK) should be easy to install and + enable your userbase to create binaries and libraries that work on the + target hardware. + + + To accomplish this goal OpenEmbedded SDKs contain tools for the + host and tools for the target hardware. Among these tools is a cross + compiler, libraries and header files for additional dependencies, pkg-config + files to allow buildsystems to easily find the dependencies, a file with + results for autoconf and a script that can be sourced to setup the + environment. + +
+ +
+ Creating a SDK with your libraries pre-installed + +
+ Preparing the host side + Your SDK might need utilities that will run on the + host. These could include scripts, buildsystem software like + cmake, or an emulator like qemu. For these dependencies it is + imported that they inherit sdk and by + convention end with -sdk in the + PN. + + + A new task should be created that will assure that all + host utilities will be installed. Place a file called + task-YOUR-toolchain-host.bb in the + recipes/tasks directory and place the + following content in it: + +require task-sdk-host.bb +DESCRIPTION = "Host packages for YOUR SDK" +LICENSE = "MIT" +ALLOW_EMPTY = "1" +RDEPENDS_${PN} += "YOUR-DEPENDENCY-sdk" + + +
+ +
+ Preapring the target side + Your SDK should provide your user with header files and libraries + he will need when doing application development. In OpenEmbedded the + ${PN}-dev isi providing the header files, pkg-config + files and symbolic links to libraries to allow using the library. The SDK + should install these development packages to the SDK. + + + To install the development packages you will need to create a + new task. Create a new file task-YOUR-toolchain-target.bb + in the recipes/tasks directory and place the + following content in it: + +DESCRIPTION = "Target package for YOUR SDK" +LICENSE = "MIT" +ALLOW_EMPTY = "1" + +PR = "r0" + +RDEPENDS_${PN} += "\ + task-sdk-bare \ + your-lib-dev \ + your-data + " + + +
+ +
+ Putting it together + In the previous two sections we have prepared the host and + target side. One thing that is missing is combining the two newly + created tasks and actually create the SDK. This is what we are going + to do now. + + Create meta-toolchain-YOU.bb in the + recipes/meta directory and place the following + content in it: + +PR = "r0" +TOOLCHAIN_TARGET_TASK = "task-YOUR-toolchain-target" +TOOLCHAIN_HOST_TASK = "task-YOUR-toolchain-host" + +require meta-toolchain.bb +SDK_SUFFIX = "toolchain-YOUR" + + + + + Using bitbake meta-toolchain-YOU the SDK + creation should be started and you should find a sdk + directory inside your deploy directory with a SDK waiting for you. With + the above command you still need to have OE configured with your + conf/local.conf to select the machine and + distribution you are targetting. + + + SDK creation currently does not work with the DISTRO + set to micro. +
+
+ +
-- cgit v1.2.3 From 40c774719b3b91d510be7f153a90bd086592ffcd Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Mon, 10 Aug 2009 13:53:29 -0700 Subject: libart-lgpl: add 2.3.20 --- conf/checksums.ini | 4 ++++ recipes/gnome/libart-lgpl_2.3.20.bb | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 recipes/gnome/libart-lgpl_2.3.20.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 394ad6fb5b..6025788d4e 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -12966,6 +12966,10 @@ sha256=18dc03fcf7514b0b0b0597e39c79353e00dd9d057aedaa5e14d4f08b8f92065f md5=ac885805d1918026a18b560f4015bc66 sha256=46d66be76f962cd6f921011c60409c1d5070db4b01619e6d3e5093705665e7a7 +[http://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/libart_lgpl-2.3.20.tar.bz2] +md5=d0ce67f2ebcef1e51a83136c69242a73 +sha256=d5531ae3a206a9b5cc74e9a20d89d61b2ba3ba03d342d6a2ed48d2130ad3d847 + [http://downloads.sourceforge.net/libassa/libassa-3.4.2-2.tar.gz] md5=f619b4f01aeda6d5f2679be9dcec5a51 sha256=ae2d5d228a1251666f9f80248178b40fb22513597cf78b976e4c3f15d8fc260c diff --git a/recipes/gnome/libart-lgpl_2.3.20.bb b/recipes/gnome/libart-lgpl_2.3.20.bb new file mode 100644 index 0000000000..99f8f8b280 --- /dev/null +++ b/recipes/gnome/libart-lgpl_2.3.20.bb @@ -0,0 +1,4 @@ +require libart-lgpl.inc + +PR = "${INC_PR}.1" + -- cgit v1.2.3 From 217e13eaed8eecfe86672af565d4e76f8f9e71bc Mon Sep 17 00:00:00 2001 From: Steve Sakoman Date: Mon, 10 Aug 2009 13:59:16 -0700 Subject: libbonobo: add 2.24.1 --- conf/checksums.ini | 4 ++++ recipes/gnome/libbonobo_2.24.1.bb | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 recipes/gnome/libbonobo_2.24.1.bb diff --git a/conf/checksums.ini b/conf/checksums.ini index 6025788d4e..6769ad7e8a 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -13018,6 +13018,10 @@ sha256=d49cc01bf85a185836689013191f92c21b625e7f38bcfcd06b41e19201765754 md5=998a576ad26784ac87eab99e96013527 sha256=5a6d96b9b15afa5d1702eee3a1ee3e50c3cfedb65d7c3faad64036ccfb3294b4 +[http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.24/libbonobo-2.24.1.tar.bz2] +md5=8868b6083392964a6969547ceb8d7cd1 +sha256=42b2ac58b86b2cc93fbbc65f94a3d1fcf5e8f33f728384653b30dbe456e91274 + [http://ftp.gnome.org/pub/GNOME/sources/libbonobo/2.6/libbonobo-2.6.0.tar.bz2] md5=078942cb9c6a1a31f93958e993353f45 sha256=cd579e8dff38882d685be01449db92dad7c78900885d5a9abf6160756f83a7a8 diff --git a/recipes/gnome/libbonobo_2.24.1.bb b/recipes/gnome/libbonobo_2.24.1.bb new file mode 100644 index 0000000000..efc71d24a8 --- /dev/null +++ b/recipes/gnome/libbonobo_2.24.1.bb @@ -0,0 +1,2 @@ +require libbonobo.inc + -- cgit v1.2.3 From 2569b442fcb9ea48f16fade6fe0372f2e7a7f236 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 11:57:24 +0200 Subject: meta-toolchain-qte: Set the QMAKESPEC... And finally we have a working SDK (tm). --- recipes/meta/meta-toolchain-qte.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/meta/meta-toolchain-qte.bb b/recipes/meta/meta-toolchain-qte.bb index 52fd2795e2..c27e7cc88c 100644 --- a/recipes/meta/meta-toolchain-qte.bb +++ b/recipes/meta/meta-toolchain-qte.bb @@ -24,6 +24,7 @@ do_populate_sdk_append() { echo 'export OE_QMAKE_QDBUSCPP2XML=${prefix}/bin/qdbuscpp2xml4' >> $script echo 'export OE_QMAKE_QDBUSXML2CPP=${prefix}/bin/qdbusxml2cpp4' >> $script echo 'export OE_QMAKE_QT_CONFIG=${prefix}/${TARGET_SYS}/${layout_datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script + echo 'export QMAKESPEC=${prefix}/${TARGET_SYS}/${layout_datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script # Repack SDK with new environment-setup cd ${SDK_OUTPUT} -- cgit v1.2.3 From cf0456a2949ed437b4e4f2521e72631c272573a6 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 11:54:11 +0200 Subject: usermanual: Provide a section on Qt Embedded SDK Explain how to configure, build and use a Qt Embedded SDK generated with OpenEmbedded. --- docs/usermanual/chapters/common_use_cases.xml | 110 ++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 2c693c681c..1407304ec9 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -511,8 +511,118 @@ SDK_SUFFIX = "toolchain-YOUR" SDK creation currently does not work with the DISTRO set to micro. + + If the environment-setup script packaged in the SDK should + require more environment look at the meta-toolchain-qte.bb + to accomplish this. + + +
+ Creating and Using a Qt Embedded SDK + +
+ Creating the SDK + + The SDK should contain a build of Qt Embedded, but also + optional depedencies like directFB, glib-2.0, gstreamer-0.10, tslib + and more esoteric depedencies like mysql and postgres. This allows + developers to simply start developing using Qt and enables system + integrators to easily recompile Qt and base libraries without tracking + down extra depedencies. + + + OpenEmbedded provides an easy way to create a Qt Embedded + SDK. In + recipes/tasks/task-qte-toolchain-host.bb host + tools like moc, uic, rcc, qmake will get installed and in + recipes/tasks/task-qte-toolchain-target.bb the Qt4 header + files and libraries will be installed. + + To build the SDK, setup OpenEmbedded in the usual way by picking + a DISTRO and MACHINE. Issue + the below command and after the operation finished you should find + a SDK in the deployment directory. + +# bitbake meta-toolchain-qte + + + + The deployment directory depends on the distribution and used + C library. In the case of Angstrom and glibc it is located in + tmp/deploy/glibc/sdk. + + Change qt4-embedded.inc and + qt4.inc for using different Qt configuration + flags. This might include a custom qconfig.h to produce a reduced + size build. + + When distributing the SDK make sure to include a written offer + to provide the sourcecode of GPL licensed applications or provide + parts of the sources folder. The + sources folder is located right next to the sdk + one. +
+ + +
+ Using the Qt Embedded SDK + + In this example we are assuming that the target hardware + is an armv5t system and the SDK targets the Angstrom Distribution. You + should start by downloading the SDK and untar it to the root folder + (/). Once this operation is finished you will + find a new directory /usr/local/angstrom/arm/ and + it contains the environment-setup to setup the + QMAKESPEC and various other paths. + + + +Untar the SDK once +# tar -C / -xjf angstrom-armv5te-linux-gnueabi-toolchain-qte.tar.bz2 + +Before using it source the environment +# . /usr/local/angstrom/arm/environment-setup + +Use qmake2 to build software for the target +# qmake2 + + + Creating and building a simple example. We will create a simple + Qt Embedded application and use qmake2 and + make to cross compile. + + +# . /usr/local/angstrom/arm/environment-setup +# cd $HOME +# mkdir qte-example +# cd qte-example + +# echo "TEMPLATE=app +SOURCES=main.cpp +" > qte-example.pro + +# echo '#include <QApplication> +#include <QPushButton> + +int main(int argc, char** argv) { + QApplication app(argc, argv); + + QPushButton btn("Hello World"); + btn.show(); + btn.showMaximized(); + + return app.exec(); +} +' > main.cpp + +# qmake2 +# make + + + +
-- cgit v1.2.3 From 1720b8b58b4ff36b5c331269a1b21e9d7ae10421 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 12:08:25 +0200 Subject: usermanual: Fix the make pdf target. Use filename and emphasis inside a para to make jade happy. --- docs/usermanual/chapters/common_use_cases.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 1407304ec9..532e183c56 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -509,12 +509,12 @@ SDK_SUFFIX = "toolchain-YOUR" distribution you are targetting.
- SDK creation currently does not work with the DISTRO - set to micro. + SDK creation currently does not work with the DISTRO + set to micro. - If the environment-setup script packaged in the SDK should + If the environment-setup script packaged in the SDK should require more environment look at the meta-toolchain-qte.bb - to accomplish this. + to accomplish this.
@@ -550,20 +550,20 @@ SDK_SUFFIX = "toolchain-YOUR" - The deployment directory depends on the distribution and used - C library. In the case of Angstrom and glibc it is located in - tmp/deploy/glibc/sdk. + The deployment directory depends on the distribution + and used C library. In the case of Angstrom and glibc it is + located in tmp/deploy/glibc/sdk. - Change qt4-embedded.inc and + Change qt4-embedded.inc and qt4.inc for using different Qt configuration flags. This might include a custom qconfig.h to produce a reduced - size build. + size build. - When distributing the SDK make sure to include a written offer + When distributing the SDK make sure to include a written offer to provide the sourcecode of GPL licensed applications or provide parts of the sources folder. The sources folder is located right next to the sdk - one. + one. -- cgit v1.2.3 From d043fdacfdea39cf4184ded86679d1a90c1079ff Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 12:09:49 +0200 Subject: Ignore some files with a .gitignore ignore generated docbook files, ignore temporary vim files --- .gitignore | 1 + docs/usermanual/.gitignore | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 .gitignore create mode 100644 docs/usermanual/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..45d62d8696 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.sw? diff --git a/docs/usermanual/.gitignore b/docs/usermanual/.gitignore new file mode 100644 index 0000000000..6532057c27 --- /dev/null +++ b/docs/usermanual/.gitignore @@ -0,0 +1,4 @@ +*.pdf +html/ +xhtml/ +*.sw? -- cgit v1.2.3 From 5eb5026f290d27352958ae5bbcdf524c3f6361e1 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 12:27:28 +0200 Subject: usermanual: Do not ask to use svn for bitbake --- docs/usermanual/chapters/getting_oe.xml | 39 +++++++++------------------------ 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/docs/usermanual/chapters/getting_oe.xml b/docs/usermanual/chapters/getting_oe.xml index 83fbad1fab..5d6709321a 100644 --- a/docs/usermanual/chapters/getting_oe.xml +++ b/docs/usermanual/chapters/getting_oe.xml @@ -50,41 +50,22 @@ $ cd $OEBASE set the PATH variable so that the BitBake tools are accessible (see ). -
Getting <application>BitBake</application> Using Subversion - To checkout the latest version of the BitBake 1.8 branch, use the - following command: +
Downloading a <application>BitBake</application> release + Releases are available from the berlios project website. The current + release series is BitBake 1.8 + and the current release is 1.8.12. To download execute + the following commands: -$ cd $OEBASE -$ svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake +$ cd $OEBASE +$ wgethttp://download.berlios.de/bitbake/bitbake-1.8.12.tar.gz +$ tar xvzf bitbake-1.8.12.tar.gz +$ mv bitbake-1.8.12 bitbake - BitBake is checked out now and + BitBake is now downloaded and the $OEBASE directory will contain a bitbake/ subdirectory. - - If you need to access a Subversion server through a proxy, see the - SVN FAQ - -
- -
Updating <application>BitBake</application> - Bitbake is being revised fairly often. Periodically it's a good - idea to check the repository of bitbake stable branches to see if a - new stable branch is available or if the current branch has been - revised. Compare your existing bitbake directory with the latest - bitbake branch in the repository. Your existing bitbake branch and - its 'last changed revision' number can be found as follows: - - $ cd $OEBASE/bitbake; svn info - - If there is a new stable branch, you will want to move or delete - your existing bitbake directory and repeat the process listed above - under "To obtain bitbake". If there is no new branch, it is easy to - update bitbake: - - $ cd $OEBASE/bitbake; svn update -
-- cgit v1.2.3 From 43649c644a8ecf2ba6035ce8b0ffd44948497aac Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 12:59:29 +0200 Subject: usermanual: Improve consistency in displaying shell commands Use $ NAME for all shell commands on the host throughout the docbook. $ was picked over the other three candidates due being the oldest one we have used. --- docs/usermanual/chapters/common_use_cases.xml | 28 ++++++------- docs/usermanual/chapters/getting_oe.xml | 34 ++++++++-------- docs/usermanual/chapters/recipes.xml | 56 +++++++++++++------------- docs/usermanual/chapters/usage.xml | 58 +++++++++++++-------------- 4 files changed, 88 insertions(+), 88 deletions(-) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index 532e183c56..b5d376a9db 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -169,7 +169,7 @@ inherit image toolchain is in your PATH. -ls pre-built/cross/bin +$ ls pre-built/cross/bin arm-linux-g++ arm-linux-ld @@ -204,7 +204,7 @@ arm-linux-objdump lib sub-directory. -ls $PRE_BUILT +$ ls $PRE_BUILT include lib qt2 @@ -546,7 +546,7 @@ SDK_SUFFIX = "toolchain-YOUR" the below command and after the operation finished you should find a SDK in the deployment directory. -# bitbake meta-toolchain-qte +$ bitbake meta-toolchain-qte @@ -581,13 +581,13 @@ SDK_SUFFIX = "toolchain-YOUR" Untar the SDK once -# tar -C / -xjf angstrom-armv5te-linux-gnueabi-toolchain-qte.tar.bz2 +$ tar -C / -xjf angstrom-armv5te-linux-gnueabi-toolchain-qte.tar.bz2 Before using it source the environment -# . /usr/local/angstrom/arm/environment-setup +$ . /usr/local/angstrom/arm/environment-setup Use qmake2 to build software for the target -# qmake2 +$ qmake2 Creating and building a simple example. We will create a simple @@ -595,16 +595,16 @@ Use qmake2 to build software for the target make to cross compile. -# . /usr/local/angstrom/arm/environment-setup -# cd $HOME -# mkdir qte-example -# cd qte-example +$ . /usr/local/angstrom/arm/environment-setup +$ cd $HOME +$ mkdir qte-example +$ cd qte-example -# echo "TEMPLATE=app +$ echo "TEMPLATE=app SOURCES=main.cpp " > qte-example.pro -# echo '#include <QApplication> +$ echo '#include <QApplication> #include <QPushButton> int main(int argc, char** argv) { @@ -618,8 +618,8 @@ int main(int argc, char** argv) { } ' > main.cpp -# qmake2 -# make +$ qmake2 +$ make diff --git a/docs/usermanual/chapters/getting_oe.xml b/docs/usermanual/chapters/getting_oe.xml index 5d6709321a..1d51a55ca0 100644 --- a/docs/usermanual/chapters/getting_oe.xml +++ b/docs/usermanual/chapters/getting_oe.xml @@ -22,8 +22,8 @@ To create the directory structure: -$ mkdir -p $OEBASE/build/conf -$ cd $OEBASE +$ mkdir -p $OEBASE/build/conf +$ cd $OEBASE The $OEBASE/build directory will contain your local configurations and extensions to the OpenEmbedded system which allow @@ -85,8 +85,8 @@ $ mv bitbake-1.8.12 bitbake
Checking Out OpenEmbedded With Git Once you have installed Git, checkout the OpenEmbedded repository: -$ cd $OEBASE -$ git clone git://git.openembedded.org/openembedded +$ cd $OEBASE +$ git clone git://git.openembedded.org/openembedded The $OEBASE/openembedded/ directory should now exist.
@@ -98,22 +98,22 @@ $ git clone git://git.openembedded.org/openembedded
seems good practice to update your OpenEmbedded tree at least daily. To do this, run: -$ cd $OEBASE -$ git pull +$ cd $OEBASE +$ git pull
Changing Branches Working with multiple branches is very easy to do with Git. The OpenEmbedded repository holds many branches. To list all branches, use this command: - $ git branch -a + $ git branch -a Branch names that begin with origin/ denote branches that exist on the remote server. The name with a * in front of it is the branch currently checked out. If you want to work with a remote branch, you must first create a local copy of it. The following command will create a local copy of a remote branch: - $ git branch <local_name> <remote_name> + $ git branch <local_name> <remote_name> To change branches, use this command: - $ git checkout <branch_name> + $ git checkout <branch_name> There are more complicated branch operations that can be done with git, but those are beyond the scope of this document.
@@ -149,12 +149,12 @@ $ git pull If you use a CSH like shell (e.g. on a FreeBSD system), you will set environment variables like this: -$ setenv VAR_NAME "VAR_VALUE" +$ setenv VAR_NAME "VAR_VALUE" , do this: -$ export OEBASE=/path/to/your/oe/installation +$ export OEBASE=/path/to/your/oe/installation @@ -163,7 +163,7 @@ $ export OEBASE=/path/to/your/oe/installation your PATH environment variable like this: -$ export PATH=$OEBASE/bitbake/bin:$PATH +$ export PATH=$OEBASE/bitbake/bin:$PATH In order for bitbake to find the configuration files for @@ -171,7 +171,7 @@ $ export PATH=$OEBASE/bitbake/bin:$PATH variable. -$ export BBPATH=$OEBASE/build:$OEBASE/openembedded +$ export BBPATH=$OEBASE/build:$OEBASE/openembedded Finally, if you wish to allow BitBake to inherit @@ -179,7 +179,7 @@ $ export BBPATH=$OEBASE/build:$OEBASE/openembedded need to set the BB_ENV_EXTRAWHITE variable: -$ export BB_ENV_EXTRAWHITE="OEBASE" +$ export BB_ENV_EXTRAWHITE="OEBASE" Note the absence of the "$" character which implies that you are setting BB_ENV_EXTRAWHITE to the variable name, not @@ -192,9 +192,9 @@ $ export BB_ENV_EXTRAWHITE="OEBASE" copy the default local.conf.sample like this: -$ cd $OEBASE -$ cp openembedded/conf/local.conf.sample build/conf/local.conf -$ vi build/conf/local.conf +$ cd $OEBASE +$ cp openembedded/conf/local.conf.sample build/conf/local.conf +$ vi build/conf/local.conf It is actually recommended to start smaller and keep local.conf.sample in the background. Add diff --git a/docs/usermanual/chapters/recipes.xml b/docs/usermanual/chapters/recipes.xml index 480e8be2b9..e609e98670 100644 --- a/docs/usermanual/chapters/recipes.xml +++ b/docs/usermanual/chapters/recipes.xml @@ -253,7 +253,7 @@ CFLAGS_prepend += "-I${S}/myincludes2 "Note also the lack of a space oe-stylize.py which can be used to reformat your recipes to the correct style. The output will contain a list of warnings (to let you know what you did wrong) which should be edited - out before using the new file.contrib/oe-stylize.py myrecipe.bb > fixed-recipe.bb + out before using the new file.$ contrib/oe-stylize.py myrecipe.bb > fixed-recipe.bb vi fixed-recipe.bb mv fixed.recipe.bb myrecipe.bb @@ -1071,9 +1071,9 @@ ${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/files:${FILE_DIRNAME}" First we'll create the myhelloworld.c file and a readme file. We'll place this in the files subdirectory, which is one of the places - that is searched for file:// URIs:mkdir recipes/myhelloworld -mkdir recipes/myhelloworld/files -cat > recipes/myhelloworld/files/myhelloworld.c + that is searched for file:// URIs:$ mkdir recipes/myhelloworld +$ mkdir recipes/myhelloworld/files +$ cat > recipes/myhelloworld/files/myhelloworld.c #include <stdio.h> int main(int argc, char** argv) @@ -1082,7 +1082,7 @@ int main(int argc, char** argv) return 0; } ^D -cat > recipes/myhelloworld/files/README.txt +$ cat > recipes/myhelloworld/files/README.txt Readme file for myhelloworld. ^D @@ -1176,7 +1176,7 @@ PR = "r0" We'll consider this release 0 and version 0.1 of a program called - helloworld. So we'll name the recipe myhelloworld_0.1.bb:cat > recipes/myhelloworld/myhelloworld_0.1.bb + helloworld. So we'll name the recipe myhelloworld_0.1.bb:$ cat > recipes/myhelloworld/myhelloworld_0.1.bb DESCRIPTION = "Hello world program" PR = "r0" @@ -1193,7 +1193,7 @@ do_install() { install -m 0644 ${WORKDIR}/README.txt ${D}${docdir}/myhelloworld } ^DNow we are ready to build our package, hopefully it'll all work - since it's such a simple example:~/oe%> bitbake -b recipes/myhelloworld/myhelloworld_0.1.bb + since it's such a simple example:$ bitbake -b recipes/myhelloworld/myhelloworld_0.1.bb NOTE: package myhelloworld-0.1: started NOTE: package myhelloworld-0.1-r0: task do_fetch: started NOTE: package myhelloworld-0.1-r0: task do_fetch: completed @@ -1225,17 +1225,17 @@ NOTE: package myhelloworld-0.1-r0: task do_build: completed NOTE: package myhelloworld-0.1: completed Build statistics: Attempted builds: 1 -~/oe%> +$ The package was successfully built, the output consists of two .ipkg files, which are ready to be installed on the target. One contains - the binary and the other contains the readme file:~/oe%> ls -l tmp/deploy/ipk/*/myhelloworld* + the binary and the other contains the readme file:$ ls -l tmp/deploy/ipk/*/myhelloworld* -rw-r--r-- 1 lenehan lenehan 3040 Jan 12 14:46 tmp/deploy/ipk/sh4/myhelloworld_0.1-r0_sh4.ipk -rw-r--r-- 1 lenehan lenehan 768 Jan 12 14:46 tmp/deploy/ipk/sh4/myhelloworld-doc_0.1-r0_sh4.ipk -~/oe%> +$ It's worthwhile looking at the working directory to see where - various files ended up:~/oe%> find tmp/work/myhelloworld-0.1-r0 + various files ended up:$ find tmp/work/myhelloworld-0.1-r0 tmp/work/myhelloworld-0.1-r0 tmp/work/myhelloworld-0.1-r0/myhelloworld-0.1 tmp/work/myhelloworld-0.1-r0/myhelloworld-0.1/patches @@ -1271,7 +1271,7 @@ tmp/work/myhelloworld-0.1-r0/image/usr/share/doc tmp/work/myhelloworld-0.1-r0/image/usr/share/doc/myhelloworld tmp/work/myhelloworld-0.1-r0/myhelloworld.c tmp/work/myhelloworld-0.1-r0/README.txt -~/oe%>Things to note here are: +$Things to note here are: @@ -1321,11 +1321,11 @@ tmp/work/myhelloworld-0.1-r0/README.txt At this stage it's good to verify that we really did produce a binary for the target and not for our host system. We can check that - with the file command:~/oe%> file tmp/work/myhelloworld-0.1-r0/install/myhelloworld/usr/bin/myhelloworld + with the file command:$ file tmp/work/myhelloworld-0.1-r0/install/myhelloworld/usr/bin/myhelloworld tmp/work/myhelloworld-0.1-r0/install/myhelloworld/usr/bin/myhelloworld: ELF 32-bit LSB executable, Hitachi SH, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped -~/oe%> file /bin/ls +$ file /bin/ls /bin/ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), for GNU/Linux 2.4.0, stripped -~/oe%>This shows us that the helloworld program is for an SH +$This shows us that the helloworld program is for an SH processor (obviously this will change depending on what your target system is), while checking the /bin/ls program on the host shows us that the host system is an AMD X86-64 system. @@ -1344,7 +1344,7 @@ tmp/work/myhelloworld-0.1-r0/install/myhelloworld/usr/bin/myhelloworld: ELF 32-b of building an autotools based package. Let's take a look at the tuxnes recipe which is an example of a - very simple autotools based recipe:%~oe> cat recipes/tuxnes/tuxnes_0.75.bb + very simple autotools based recipe:$ cat recipes/tuxnes/tuxnes_0.75.bb DESCRIPTION = "Tuxnes Nintendo (8bit) Emulator" HOMEPAGE = "http://prdownloads.sourceforge.net/tuxnes/tuxnes-0.75.tar.gz" LICENSE = "GPLv2" @@ -2070,7 +2070,7 @@ PACKAGES += "FILES-${PN}-test" the install directory there is one subdirectory created per package, and the files are moved into the install directory as they are matched to a specific package. The following shows the packages and files for the - helloworld example:~/oe%> find tmp/work/helloworld-0.1-r0/install + helloworld example:$ find tmp/work/helloworld-0.1-r0/install tmp/work/helloworld-0.1-r0/install tmp/work/helloworld-0.1-r0/install/helloworld-locale tmp/work/helloworld-0.1-r0/install/helloworld-dbg @@ -2085,7 +2085,7 @@ tmp/work/helloworld-0.1-r0/install/helloworld tmp/work/helloworld-0.1-r0/install/helloworld/usr tmp/work/helloworld-0.1-r0/install/helloworld/usr/bin tmp/work/helloworld-0.1-r0/install/helloworld/usr/bin/helloworld -~/oe%>The above shows that the -local, -dbg and -dev packages are +$The above shows that the -local, -dbg and -dev packages are all empty, and the -doc and base package contain a single file each. Using the "-type f" option to find to show just files will make this clearer as well. @@ -2093,17 +2093,17 @@ tmp/work/helloworld-0.1-r0/install/helloworld/usr/bin/helloworld In addition to the install directory the image directory (which corresponds to the destination directory, D) will contain any files that were not - packaged:~/oe%> find tmp/work/helloworld-0.1-r0/image + packaged:$ find tmp/work/helloworld-0.1-r0/image tmp/work/helloworld-0.1-r0/image tmp/work/helloworld-0.1-r0/image/usr tmp/work/helloworld-0.1-r0/image/usr/bin tmp/work/helloworld-0.1-r0/image/usr/share tmp/work/helloworld-0.1-r0/image/usr/share/doc tmp/work/helloworld-0.1-r0/image/usr/share/doc/helloworld -~/oe%>In this case all files were packaged and so there are no +$In this case all files were packaged and so there are no left over files. Using find with "-type - f" makes this much clearer:~/oe%> find tmp/work/helloworld-0.1-r0/image -type f -~/oe%> + f" makes this much clearer:$ find tmp/work/helloworld-0.1-r0/image -type f +$ Messages regarding missing files are also displayed by bitbake during the package task:NOTE: package helloworld-0.1-r0: task do_package: started @@ -2164,7 +2164,7 @@ NOTE: package helloworld-0.1-r0: task do_package: completedExcept in If we look at the lzo_1.08.bb recipe, currently at release 14, it generates a package containing a single - shared library :~oe/build/titan-glibc-25%> find tmp/work/lzo-1.08-r14/install/ + shared library :$ find tmp/work/lzo-1.08-r14/install/ tmp/work/lzo-1.08-r14/install/lzo tmp/work/lzo-1.08-r14/install/lzo/usr tmp/work/lzo-1.08-r14/install/lzo/usr/lib @@ -2178,7 +2178,7 @@ tmp/work/lzo-1.08-r14/install/lzo/usr/lib/liblzo.so.1.0.0Without enabled the package is renamed based on the name of the shared library, which is liblzo.so.1.0.0 in this case. So the name lzo is replaced with - liblzo1:~oe/build/titan-glibc-25%> find tmp/deploy/ipk/ -name '*lzo*' + liblzo1:$ find tmp/deploy/ipk/ -name '*lzo*' tmp/deploy/ipk/sh4/liblzo1_1.08-r14_sh4.ipk tmp/deploy/ipk/sh4/liblzo-dev_1.08-r14_sh4.ipk tmp/deploy/ipk/sh4/liblzo-dbg_1.08-r14_sh4.ipk @@ -2485,9 +2485,9 @@ addtask unpack_extra after do_unpack before do_patch linkend="chapter_reference" />. Looking in the staging area under tmp you can see the result of the - bzip2 recipes staging task:%> find tmp/staging -name '*bzlib*' + bzip2 recipes staging task:$ find tmp/staging -name '*bzlib*' tmp/staging/sh4-linux/include/bzlib.h -%> find tmp/staging -name '*libbz*' +$ find tmp/staging -name '*libbz*' tmp/staging/sh4-linux/lib/libbz2.so tmp/staging/sh4-linux/lib/libbz2.so.1.0 tmp/staging/sh4-linux/lib/libbz2.so.1 @@ -3356,10 +3356,10 @@ do_configure() { via the PV variable). For example if we were to ask bitbake to build procps and the - following packages are available:~/oe%> ls recipes/procps + following packages are available:$ ls recipes/procps procps-3.1.15/ procps-3.2.1/ procps-3.2.5/ procps-3.2.7/ procps.inc procps_3.1.15.bb procps_3.2.1.bb procps_3.2.5.bb procps_3.2.7.bb -~/oe%>then we would expect it to select version +$then we would expect it to select version 3.2.7 (the highest version number) to build. Sometimes this is not actually what you want to happen though. diff --git a/docs/usermanual/chapters/usage.xml b/docs/usermanual/chapters/usage.xml index 5dd00d68e5..47aa7b4869 100644 --- a/docs/usermanual/chapters/usage.xml +++ b/docs/usermanual/chapters/usage.xml @@ -197,7 +197,7 @@ that this may not be exactly what see - there are a lot of options that can effect exactly how things are done, but it gives us a pretty good idea of whats going on. What we are looking at here is the tmp directory (as - specified by TMPDIR in your local.conf):~%> find tmp -maxdepth 2 -type d + specified by TMPDIR in your local.conf):$ find tmp -maxdepth 2 -type d tmp tmp/stamps tmp/cross @@ -329,9 +329,9 @@ tmp/deploy/images To perform a complete rebuild from script you would usually rename or delete tmp and then restart your build. I recommend keeping one old version of tmp around to use for comparison if something goes wrong with - your new build. For example:%> rm -fr tmp.OLD -$> mv tmp tmp.OLD -%> bitbake bootstrap-image + your new build. For example:$ rm -fr tmp.OLD +$ mv tmp tmp.OLD +$ bitbake bootstrap-image
work directory (tmp/work) @@ -344,7 +344,7 @@ $> mv tmp tmp.OLD defined by the PR variable within the recipe). Here's an example of a few of the subdirectories under the work - directory:~%> find tmp/work -maxdepth 1 -type d | head -4 + directory:$ find tmp/work -maxdepth 1 -type d | head -4 tmp/work tmp/work/busybox-1.2.1-r13 tmp/work/libice-1_1.0.3-r0 @@ -354,7 +354,7 @@ tmp/work/arpwatch-2.1a15-r2You can see that the first three (of It's also possible that you may just have a sub directory for your targets architecture and operating system in which case these directories will be in that additional subdirectory, as shown - here:~%> find tmp/work -maxdepth 2 -type d | head -4 + here:$ find tmp/work -maxdepth 2 -type d | head -4 tmp/work tmp/work/sh4-linux tmp/work/sh4-linux/busybox-1.2.1-r13 @@ -375,7 +375,7 @@ tmp/work/sh4-linux/arpwatch-2.1a15-r2 distribution is using it. Using lzo 1.08 as an example we'll examine the contents of the - working directory for a typical recipe:~%> find tmp/work/lzo-1.08-r14 -maxdepth 1 + working directory for a typical recipe:$ find tmp/work/lzo-1.08-r14 -maxdepth 1 tmp/work/lzo-1.08-r14 tmp/work/lzo-1.08-r14/temp tmp/work/lzo-1.08-r14/lzo-1.08 @@ -478,7 +478,7 @@ tmp/work/lzo-1.08-r14/image How about checking out what happened during the configuration of lzo? Well that requires checking the log file for configure that is - generated in the temp directory:~%> less tmp/work/lzo-1.08-r14/temp/log.do_configure.* + generated in the temp directory:$ less tmp/work/lzo-1.08-r14/temp/log.do_configure.* ... checking whether ccache sh4-linux-gcc -ml -m4 suffers the -fschedule-insns bug... unknown checking whether ccache sh4-linux-gcc -ml -m4 suffers the -fstrength-reduce bug... unknown @@ -499,7 +499,7 @@ config.status: executing depfiles commands Or perhaps you want to see how the files were distributed into individual packages prior to packaging? The install directory is where the files are split into separate packages and so that shows us which - files end up where:~%> find tmp/work/lzo-1.08-r14/install + files end up where:$ find tmp/work/lzo-1.08-r14/install tmp/work/lzo-1.08-r14/install tmp/work/lzo-1.08-r14/install/lzo-doc tmp/work/lzo-1.08-r14/install/lzo-dbg @@ -554,7 +554,7 @@ tmp/work/lzo-1.08-r14/install/lzo/usr/lib/liblzo.so.1.0.0 each recipe. Any many of the tasks correspond to those listed above like "download the source". In fact you've probably already seen some of the names of these tasks - bitbake displays them as - they are processed:~%> bitbake lzo + they are processed:$ bitbake lzo NOTE: Psyco JIT Compiler (http://psyco.sf.net) not available. Install it to increase performance. NOTE: Handling BitBake files: \ (4541/4541) [100 %] NOTE: Parsing finished. 4325 cached, 0 parsed, 216 skipped, 0 masked. @@ -827,7 +827,7 @@ NOTE: build 200705041709: completed To determine the full list of tasks available for a specific recipe you can run bitbake on the recipe and asking it for the full list of - available tasks:~%> bitbake -b recipes/perl/perl_5.8.8.bb -c listtasks + available tasks:$ bitbake -b recipes/perl/perl_5.8.8.bb -c listtasks NOTE: package perl-5.8.8: started NOTE: package perl-5.8.8-r11: task do_listtasks: started do_fetchall @@ -851,7 +851,7 @@ do_qa_staging do_patch NOTE: package perl-5.8.8-r11: task do_listtasks: completed NOTE: package perl-5.8.8: completed -~%> +$ If your being observant you'll note that listtasks is in fact a task itself, and that the @@ -878,8 +878,8 @@ NOTE: package perl-5.8.8: completed Here's a typically example that cleans up the package (using the clean task) and the rebuilds it with debugging output - from bitbake enabled:~%> bitbake -b <bb-file> -c clean -~%> bitbake -b <bb-file> -D + from bitbake enabled:$ bitbake -b <bb-file> -c clean +$ bitbake -b <bb-file> -D The options to bitbake that are most useful here are: @@ -1020,27 +1020,27 @@ NOTE: package perl-5.8.8: completed A typically development session might involve editing files in the working directory and then recompiling until it all works:[... test ...] -~%> bitbake -b recipes/testapp/testapp_4.3.bb -c compile -D +$ bitbake -b recipes/testapp/testapp_4.3.bb -c compile -D [... save a copy of main.c and make some changes ...] -~%> vi tmp/work/testapp-4.3-r0/main.c -~%> bitbake -b recipes/testapp/testapp_4.3.bb -c compile -D -f +$ vi tmp/work/testapp-4.3-r0/main.c +$ bitbake -b recipes/testapp/testapp_4.3.bb -c compile -D -f [... create a patch and add it to the recipe ...] -~%> vi recipes/testapp/testapp_4.3.bb +$ vi recipes/testapp/testapp_4.3.bb [... test from clean ...] -~%> bitbake -b recipes/testapp/testapp_4.3.bb -c clean -~%> bitbake -b recipes/testapp/testapp_4.3.bb +$ bitbake -b recipes/testapp/testapp_4.3.bb -c clean +$ bitbake -b recipes/testapp/testapp_4.3.bb [... NOTE: How to create the patch is not covered at this point ...] Here's another example showing how you might go about fixing up the - packaging in your recipe:~%> bitbake -b recipes/testapp/testapp_4.3.bb -c install -f -~%> bitbake -b recipes/testapp/testapp_4.3.bb -c stage -f -~%> find tmp/work/testapp_4.3/install + packaging in your recipe:$ bitbake -b recipes/testapp/testapp_4.3.bb -c install -f +$ bitbake -b recipes/testapp/testapp_4.3.bb -c stage -f +$ find tmp/work/testapp_4.3/install ... -~%> vi recipes/testapp/testapp_4.3.bbAt this stage you play with +$ vi recipes/testapp/testapp_4.3.bbAt this stage you play with the PACKAGE_ and FILES_ variables and then repeat the above sequence. @@ -1062,7 +1062,7 @@ NOTE: package perl-5.8.8: completed
Interactive bitbake - To interactively test things use:~%> bitbake -ithis + To interactively test things use:$ bitbake -ithis will open the bitbake shell. From here there are a lot of commands available (try help). @@ -1103,7 +1103,7 @@ BB>> build net-snmpNote that you can use wildcards in the role="bold">devshell" With the inclusion of this class you'll find that devshell is - added as a new task that you can use on recipes:~%> bitbake -b recipes/lzo/lzo_1.08.bb -c listtasks + added as a new task that you can use on recipes:$ bitbake -b recipes/lzo/lzo_1.08.bb -c listtasks NOTE: package lzo-1.08: started NOTE: package lzo-1.08-r14: task do_listtasks: started do_devshell @@ -1130,7 +1130,7 @@ NOTE: package lzo-1.08-r14: task do_listtasks: completed NOTE: package lzo-1.08: completed To bring up the devshell you call bitbake on a recipe and ask it - for the devshell task:~%> ./bb -b recipes/lzo/lzo_1.08.bb -c devshell + for the devshell task:$ bitbake -b recipes/lzo/lzo_1.08.bb -c devshell NOTE: package lzo-1.08: started NOTE: package lzo-1.08-r14: task do_devshell: started [... devshell will appear here ...] @@ -1163,11 +1163,11 @@ NOTE: package lzo-1.08: completed a devshell. It requires no changes to your configuration, instead you simply - build the devshell recipe:bitabike devshell + build the devshell recipe:$ bitbake devshell and then manually startup the shell. Once in the shell you'll usually want to change into the working directory for the recipe you are - working on:~%> ./tmp/deploy/addons/sh4-linux-erouter-titan-devshell + working on:$ ./tmp/deploy/addons/sh4-linux-erouter-titan-devshell bash: alias: `./configure': invalid alias name [OE::sh4-linux-erouter-titan]:~$ cd tmp/work/lzo-1.08-r14/lzo-1.08 [OE::sh4-linux-erouter-titan]:~tmp/work/lzo-1.08-r14/lzo-1.08$ -- cgit v1.2.3 From 154a69bf190d281eafdb2244d3368cc505510125 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 14:15:09 +0200 Subject: usermanual: First round of spell checking --- docs/usermanual/chapters/common_use_cases.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/usermanual/chapters/common_use_cases.xml b/docs/usermanual/chapters/common_use_cases.xml index b5d376a9db..7ae3ee5ada 100644 --- a/docs/usermanual/chapters/common_use_cases.xml +++ b/docs/usermanual/chapters/common_use_cases.xml @@ -105,7 +105,7 @@ SRCDATE = "20061014"
building from unstable source code Building against the latest, bleeding-edge source has some intricacies of its own. - For one, it is desirable to pin down a souce code revision that is known to build to + For one, it is desirable to pin down a 1 code revision that is known to build to prevent random breakage in OE at the most inopportune time for all OE users. Here is how to do that properly. @@ -221,7 +221,7 @@ qt2 available.
- Sourcable script + Sourceable script To ease the usage of OpenEmbedded we start by creating a source-able script. This is actually a small variation from the @@ -381,7 +381,7 @@ NOTE: Couldn't find shared library provider for libm.so.6 OpenEmbedded tries to automatically add run-time dependencies (RDEPENDS) to generated packages. It is inspecting binaries and libraries and uses the shlibs - system to do add dependencies for the linked libaries, + system to do add dependencies for the linked libraries, however in this case it was not able to find packages providing these libraries as they were prebuilt. @@ -410,7 +410,7 @@ ASSUME_SHLIBS = "libqtopia2.so.2:qtopia2_2.4 libc.so.6:libc" What is provided by a SDK The Software Development Kit (SDK) should be easy to install and - enable your userbase to create binaries and libraries that work on the + enable your user-base to create binaries and libraries that work on the target hardware. @@ -452,10 +452,10 @@ RDEPENDS_${PN} += "YOUR-DEPENDENCY-sdk"
- Preapring the target side + Preparing the target side Your SDK should provide your user with header files and libraries he will need when doing application development. In OpenEmbedded the - ${PN}-dev isi providing the header files, pkg-config + ${PN}-dev is providing the header files, pkg-config files and symbolic links to libraries to allow using the library. The SDK should install these development packages to the SDK. @@ -506,7 +506,7 @@ SDK_SUFFIX = "toolchain-YOUR" directory inside your deploy directory with a SDK waiting for you. With the above command you still need to have OE configured with your conf/local.conf to select the machine and - distribution you are targetting. + distribution you are targeting. SDK creation currently does not work with the DISTRO @@ -526,11 +526,11 @@ SDK_SUFFIX = "toolchain-YOUR" Creating the SDK The SDK should contain a build of Qt Embedded, but also - optional depedencies like directFB, glib-2.0, gstreamer-0.10, tslib - and more esoteric depedencies like mysql and postgres. This allows + optional dependencies like directFB, glib-2.0, gstreamer-0.10, tslib + and more esoteric dependencies like mysql and postgres. This allows developers to simply start developing using Qt and enables system - integrators to easily recompile Qt and base libraries without tracking - down extra depedencies. + integrator to easily recompile Qt and base libraries without tracking + down extra dependencies. OpenEmbedded provides an easy way to create a Qt Embedded -- cgit v1.2.3 From 0b5373120b1f074cba500361c31effaf7bee75f5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 15:00:31 +0200 Subject: usermanual: Some more spelling fixes --- docs/usermanual/chapters/getting_oe.xml | 4 ++-- docs/usermanual/chapters/metadata.xml | 2 +- docs/usermanual/chapters/recipes.xml | 14 +++++++------- docs/usermanual/chapters/usage.xml | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/usermanual/chapters/getting_oe.xml b/docs/usermanual/chapters/getting_oe.xml index 1d51a55ca0..bd376c33e9 100644 --- a/docs/usermanual/chapters/getting_oe.xml +++ b/docs/usermanual/chapters/getting_oe.xml @@ -209,7 +209,7 @@ $ vi build/conf/local.conf the following three entries: BBFILES, DISTRO and MACHINE. For example, consider the following - mininal local.conf file for the Ångström + minimal local.conf file for the Ångström distribution and the Openmoko gta01 machine: @@ -294,7 +294,7 @@ MACHINE = "om-gta01" meta/ - A collection of usefull meta tasks and recipes that + A collection of useful meta tasks and recipes that don't fit in a general category. diff --git a/docs/usermanual/chapters/metadata.xml b/docs/usermanual/chapters/metadata.xml index 3e76b2ddbb..c698be961a 100644 --- a/docs/usermanual/chapters/metadata.xml +++ b/docs/usermanual/chapters/metadata.xml @@ -67,7 +67,7 @@ recipes/ - Conatins all of the + Contains all of the BitBake .bb files. There is a subdirectory for each task or application and within that subdirectory is diff --git a/docs/usermanual/chapters/recipes.xml b/docs/usermanual/chapters/recipes.xml index e609e98670..74e8e16366 100644 --- a/docs/usermanual/chapters/recipes.xml +++ b/docs/usermanual/chapters/recipes.xml @@ -146,7 +146,7 @@ VAR2 = "The version is ${PV}" Conditional assignment - Conditional assignement is used to assign a value to a + Conditional assignment is used to assign a value to a variable, but only when the variable is currently unset. This is commonly used to provide a default value for use when no specific definition is provided by the machine or distro configuration of the @@ -1503,7 +1503,7 @@ inherit autotools example from net-snmp shows oe_runconf being called manually so that the parameter for specifying the endianess can be computed and passed in to the configure script:do_configure() { - # Additional flag based on target endiness (see siteinfo.bbclass) + # Additional flag based on target endianess (see siteinfo.bbclass) ENDIANESS="${@base_conditional('SITEINFO_ENDIANESS', 'le', '--with-endianness=little', '--with-endianness=big', d)}" oenote Determined endianess as: $ENDIANESS oe_runconf $ENDIANESS @@ -1576,7 +1576,7 @@ inherit autotools The following example from net-snmp uses oenote to tell the user which endianess it determined was appropriate for the target device:do_configure() { - # Additional flag based on target endiness (see siteinfo.bbclass) + # Additional flag based on target endianess (see siteinfo.bbclass) ENDIANESS="${@base_conditional('SITEINFO_ENDIANESS', 'le', '--with-endianness=little', '--with-endianness=big', d)}" oenote Determined endianess as: $ENDIANESS oe_runconf $ENDIANESS @@ -1694,7 +1694,7 @@ inherit autotools to le for little endian targets and to be for big endian targets:do_compile () { ... - # Additional flag based on target endiness (see siteinfo.bbclass) + # Additional flag based on target endianess (see siteinfo.bbclass) CFLAG="${CFLAG} ${@base_conditional('SITEINFO_ENDIANESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)}" ... @@ -2928,7 +2928,7 @@ fi Sometimes packages require root permissions in order to perform some action, such as changing user or group owners or creating device nodes. Since OpenEmbedded will not keep the user and group information - it's usually preferabe to remove that from the makefiles. For device + it's usually preferable to remove that from the makefiles. For device nodes it's usually preferably to create them from the initial device node lists or via udev configuration. @@ -3268,7 +3268,7 @@ do_configure() { to le for little endian targets and to be for big endian targets:do_compile () { ... - # Additional flag based on target endiness (see siteinfo.bbclass) + # Additional flag based on target endianess (see siteinfo.bbclass) CFLAG="${CFLAG} ${@base_conditional('SITEINFO_ENDIANESS', 'le', '-DL_ENDIAN', '-DB_ENDIAN', d)}" ... @@ -3544,7 +3544,7 @@ which find all contents of the /var directory is lost when the device is powered off or restarted. Therefore special handling of /var is required in all - packages. Even if your distrubution does not use a tmpfs based /var you need to assume it does when creating packages to ensure the package can be used on those distributions that do use a tmpfs based /var. This special diff --git a/docs/usermanual/chapters/usage.xml b/docs/usermanual/chapters/usage.xml index 47aa7b4869..31ba613ca9 100644 --- a/docs/usermanual/chapters/usage.xml +++ b/docs/usermanual/chapters/usage.xml @@ -542,7 +542,7 @@ tmp/work/lzo-1.08-r14/install/lzo/usr/lib/liblzo.so.1.0.0 When you go about building and installing a software package there are a number of tasks that you generally follow with most software packages. You probably need to start out by downloading the source code, - then unpacking the source code. Maye you need to apply some patches for + then unpacking the source code. Maybe you need to apply some patches for some reason. Then you might run the configure script of the package, perhaps passing it some options to configure it to your liking. The you might run "make install" to install the software. If your actually going -- cgit v1.2.3 From a829724ce2c1e3b931032e2576636f2742f93d90 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 11 Aug 2009 15:01:04 +0200 Subject: usermanual: Pass proper arguments to tar. --- docs/usermanual/chapters/getting_oe.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usermanual/chapters/getting_oe.xml b/docs/usermanual/chapters/getting_oe.xml index bd376c33e9..e8d1f2cc9d 100644 --- a/docs/usermanual/chapters/getting_oe.xml +++ b/docs/usermanual/chapters/getting_oe.xml @@ -58,7 +58,7 @@ $ cd $OEBASE $ cd $OEBASE $ wgethttp://download.berlios.de/bitbake/bitbake-1.8.12.tar.gz -$ tar xvzf bitbake-1.8.12.tar.gz +$ tar -xvzf bitbake-1.8.12.tar.gz $ mv bitbake-1.8.12 bitbake -- cgit v1.2.3 From 4d43fd978edf91f5ac9c6f72064e8beff998e1e1 Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Wed, 12 Aug 2009 00:01:17 +0200 Subject: zaurus-updater: remove unused files - recipe was unified in 2008 --- recipes/zaurus-updater/akita/updater.sh | 252 ------------------------------- recipes/zaurus-updater/poodle/updater.sh | 231 ---------------------------- 2 files changed, 483 deletions(-) delete mode 100644 recipes/zaurus-updater/akita/updater.sh delete mode 100644 recipes/zaurus-updater/poodle/updater.sh diff --git a/recipes/zaurus-updater/akita/updater.sh b/recipes/zaurus-updater/akita/updater.sh deleted file mode 100644 index ad2c27b012..0000000000 --- a/recipes/zaurus-updater/akita/updater.sh +++ /dev/null @@ -1,252 +0,0 @@ -#!/bin/sh - - -DATAPATH=$1 -TMPPATH=/tmp/update -TMPDATA=$TMPPATH/tmpdata.bin -TMPHEAD=$TMPPATH/tmphead.bin - -WFLG_KERNEL=0 -WFLG_INITRD=0 -WFLG_MVERSION=0 - -RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` -if [ "$RO_MTD_LINE" = "" ]; then - RO_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` -RO_MTD=/dev/mtd$RO_MTD_NO -RO_MTDBLK=/dev/mtdblock$RO_MTD_NO -RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` - -RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` -if [ "$RW_MTD_LINE" = "" ]; then - RW_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` -RW_MTD=/dev/mtd$RW_MTD_NO -RW_MTDBLK=/dev/mtdblock$RW_MTD_NO -RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` - -LOGOCAL_MTD=/dev/mtd1 - -VERBLOCK=0x48000 -MVRBLOCK=0x70000 - -RESULT=0 - -Cleanup(){ - rm -f $VTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - rm $CTRLPATH/* > /dev/null 2>&1 - rm $DATAPATH/* > /dev/null 2>&1 - exit $1 -} -trap 'Cleanup 1' 1 15 -trap '' 2 3 - - -### Check model ### -/sbin/writerominfo -MODEL=`cat /proc/deviceinfo/product` -echo 'MODEL:'$MODEL -case "$MODEL" in - SL-C700) ;; - SL-C750) ;; - SL-C760) ;; - SL-C860) ;; - SL-C1000) ;; - SL-B500) ;; - SL-5600) ;; - *) - echo 'ERROR:Invalid model!' - echo 'Please reset' - while true - do - done - ;; -esac - -mkdir -p $TMPPATH > /dev/null 2>&1 - -cd $DATAPATH/ - -for TARGETFILE in zImage.bin zimage.bin ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN -do - if [ -e $TARGETFILE ] - then - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - DATASIZE=`wc -c $TARGETFILE` - DATASIZE=`echo $DATASIZE | cut -d' ' -f1` - - #echo $TARGETFILE':'$DATASIZE'bytes' - TARGETTYPE=Invalid - case "$TARGETFILE" in - zImage.bin) TARGETTYPE=Kernel;; - zimage.bin) TARGETTYPE=Kernel;; - ZIMAGE.BIN) TARGETTYPE=Kernel;; - initrd.bin) TARGETTYPE=RoFs;; - INITRD.BIN) TARGETTYPE=RoFs;; - mversion.bin) TARGETTYPE=MasterVer;; - MVERSION.BIN) TARGETTYPE=MasterVer;; - *) - continue - ;; - esac - - case "$TARGETTYPE" in - Kernel) - if [ $WFLG_KERNEL != 0 ] - then - continue - fi - WFLG_KERNEL=1 - echo 'kernel' - ISLOGICAL=1 - MODULEID=5 - MODULESIZE=0x13C000 - ADDR=`dc 0xE0000` - ISFORMATTED=1 - DATAPOS=0 - ONESIZE=524288 - HDTOP=`expr $DATASIZE - 16` - /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE - ;; - RoFs) - if [ $WFLG_INITRD != 0 ] - then - continue - fi - WFLG_INITRD=1 - echo 'RO file system' - ISLOGICAL=0 - MODULEID=6 - MODULESIZE=0x1900000 - ADDR=0 - ISFORMATTED=0 - TARGET_MTD=$RO_MTD - DATAPOS=16 - ONESIZE=1048576 - /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE - ;; - MasterVer) - if [ $WFLG_MVERSION != 0 ] - then - continue - fi - WFLG_MVERSION=1 - echo 'Master version' - MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' - /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - echo 'Success!' - continue - ;; - *) - continue - ;; - esac - - - #format? - if [ $ISFORMATTED = 0 ] - then - echo -n 'Flash erasing...' - /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null - #/sbin/eraseall $TARGET_MTD 2 - echo 'done' - ISFORMATTED=1 - fi - - echo '' - echo '0% 100%' - PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` - PROGSTEP=`expr 25 / $PROGSTEP` - if [ $PROGSTEP = 0 ] - then - PROGSTEP=1 - fi - - #00 means header information - VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' - MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' - /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - - #echo 'found header' - /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 - /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 - - if [ "$MODEL" = "SL-C1000" ] && [ $TARGETTYPE = Kernel ]; then - echo $TARGETFILE':'$DATASIZE'bytes' - echo ' ' > /tmp/data - /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 - #loop - else - while [ $DATAPOS -lt $DATASIZE ] - do - #data create - bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE - TMPSIZE=`wc -c $TMPDATA` - TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` - DATAPOS=`expr $DATAPOS + $TMPSIZE` - - #handle data file - #echo 'ADDR='$ADDR - #echo 'SIZE='$TMPSIZE - #echo 'TMPDATA='$TMPDATA - if [ $ISLOGICAL = 0 ] - then - next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` - if [ "$next_addr" = "" ]; then - echo "ERROR:flash write" - rm $TMPDATA > /dev/null 2>&1 - RESULT=3 - break; - fi - ADDR=$next_addr - else - /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 - ADDR=`expr $ADDR + $TMPSIZE` - fi - - rm $TMPDATA > /dev/null 2>&1 - - #progress - SPNUM=0 - while [ $SPNUM -lt $PROGSTEP ] - do - echo -n '.' - SPNUM=`expr $SPNUM + 1` - done - done - - fi - - echo '' - -#finish - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - - if [ $RESULT = 0 ] - then - /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - - rm -f $VTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - echo 'Success!' - else - echo 'Error!' - exit $RESULT - fi - fi -done - -exit 0 diff --git a/recipes/zaurus-updater/poodle/updater.sh b/recipes/zaurus-updater/poodle/updater.sh deleted file mode 100644 index a5e3f846ea..0000000000 --- a/recipes/zaurus-updater/poodle/updater.sh +++ /dev/null @@ -1,231 +0,0 @@ -#!/bin/sh - - -DATAPATH=$1 -TMPPATH=/tmp/update -TMPDATA=$TMPPATH/tmpdata.bin -TMPHEAD=$TMPPATH/tmphead.bin - - -RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` -if [ "$RO_MTD_LINE" = "" ]; then - RO_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2` -RO_MTD=/dev/mtd$RO_MTD_NO -RO_MTDBLK=/dev/mtdblock$RO_MTD_NO -RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /` - -RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` -if [ "$RW_MTD_LINE" = "" ]; then - RW_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` -RW_MTD=/dev/mtd$RW_MTD_NO -RW_MTDBLK=/dev/mtdblock$RW_MTD_NO -RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` - -LOGOCAL_MTD=/dev/mtd1 - -VERBLOCK=0x48000 -MVRBLOCK=0x70000 - -RESULT=0 - -Cleanup(){ - rm -f $VTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - rm $CTRLPATH/* > /dev/null 2>&1 - rm $DATAPATH/* > /dev/null 2>&1 - exit $1 -} -trap 'Cleanup 1' 1 15 -trap '' 2 3 - - -### Check model ### -/sbin/writerominfo -MODEL=`cat /proc/deviceinfo/product` -echo 'MODEL:'$MODEL -case "$MODEL" in - SL-B500) ;; - SL-5600) ;; - *) - echo 'ERROR:Invalid model!' - echo 'Please reset' - while true - do - done - ;; -esac - -mkdir -p $TMPPATH > /dev/null 2>&1 - -cd $DATAPATH/ - -if [ -e consolescroll ] -then - ./consolescroll -fi - -for TARGETFILE in zImage zimage zimage.bin initrd.bin mversion.bin -do - if [ -e $TARGETFILE ] - then - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - DATASIZE=`wc -c $TARGETFILE` - DATASIZE=`echo $DATASIZE | cut -d' ' -f1` - - #echo $TARGETFILE':'$DATASIZE'bytes' - case "$TARGETFILE" in - zImage|zimage|zimage.bin) - echo 'kernel' - ISLOGICAL=1 - MODULEID=5 - MODULESIZE=0x13C000 - ADDR=`dc 0xE0000` - ISFORMATTED=1 - DATAPOS=0 - ONESIZE=524288 - HDTOP=`expr $DATASIZE - 16` - /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE - ;; - initrd.bin) - echo 'RO file system' - ISLOGICAL=0 - MODULEID=6 - MODULESIZE=0x1600000 - ADDR=0 - ISFORMATTED=0 - TARGET_MTD=$RO_MTD - DATAPOS=16 - ONESIZE=1048576 - /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE - ;; - mversion.bin) - echo 'Master version' - MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' - /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - echo 'Success!' - continue - ;; - *) - continue; - ;; - esac - - #check version - /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD - if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 - then - #no version info... - rm -f $TMPHEAD > /dev/null 2>&1 - DATAPOS=0 - fi - - #format? - if [ $ISFORMATTED = 0 ] - then - echo -n 'Flash erasing...' - /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null - #/sbin/eraseall $TARGET_MTD 2 - echo 'done' - ISFORMATTED=1 - fi - - echo '' - echo '0% 100%' - PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` - PROGSTEP=`expr 25 / $PROGSTEP` - if [ $PROGSTEP = 0 ] - then - PROGSTEP=1 - fi - - #header information - if [ -e $TMPHEAD ] - then - VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' - MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' - /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - - #echo 'found header' - /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 - /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1 - fi - - #loop - while [ $DATAPOS -lt $DATASIZE ] - do - #data create - bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE - TMPSIZE=`wc -c $TMPDATA` - TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` - DATAPOS=`expr $DATAPOS + $TMPSIZE` - - #handle data file - #echo 'ADDR='$ADDR - #echo 'SIZE='$TMPSIZE - if [ $ISLOGICAL = 0 ] - then - next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` - if [ "$next_addr" = "" ]; then - echo "ERROR:flash write" - rm $TMPDATA > /dev/null 2>&1 - RESULT=3 - break; - fi - ADDR=$next_addr - else - /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 - ADDR=`expr $ADDR + $TMPSIZE` - fi - - rm $TMPDATA > /dev/null 2>&1 - - #progress - SPNUM=0 - while [ $SPNUM -lt $PROGSTEP ] - do - echo -n '.' - SPNUM=`expr $SPNUM + 1` - done - done - - echo '' - -#finish - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - - if [ $RESULT = 0 ] - then - if [ -e $VTMPNAME ] - then - /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - rm -f $VTMPNAME > /dev/null 2>&1 - fi - if [ -e $MTMPNAME ] - then - /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - fi - echo 'Success!' - else - echo 'Error!' -# exit $RESULT - fi - fi -done - -#exit 0 - -echo 'Please reset' -while true -do -done -- cgit v1.2.3 From ecb37e065e8e402711c415a01b50f1186fc27a10 Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Wed, 12 Aug 2009 00:04:39 +0200 Subject: nandlogical: remove unused -static recipe (we have nandlogical-klibc-static now) --- recipes/nandlogical/nandlogical-static_1.0.0.bb | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 recipes/nandlogical/nandlogical-static_1.0.0.bb diff --git a/recipes/nandlogical/nandlogical-static_1.0.0.bb b/recipes/nandlogical/nandlogical-static_1.0.0.bb deleted file mode 100644 index d595d00d62..0000000000 --- a/recipes/nandlogical/nandlogical-static_1.0.0.bb +++ /dev/null @@ -1,5 +0,0 @@ -require nandlogical_${PV}.bb - -do_compile () { - ${CC} nandlogical.c -o nandlogical ${CFLAGS} ${LDFLAGS} -static -} -- cgit v1.2.3 From 5a7e0f0eb265c98248ffd23d4801d1e0c1af031b Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Wed, 12 Aug 2009 00:09:31 +0200 Subject: zaurus-utils: create a common container for the various Zaurus tools --- recipes/zaurus-updater/encdec-updater-native.bb | 6 - recipes/zaurus-updater/encdec-updater.bb | 16 - recipes/zaurus-updater/files/encdec-updater.c | 80 ---- recipes/zaurus-updater/files/gnu-tar.gz | Bin 242146 -> 0 bytes recipes/zaurus-updater/zaurus-installer.bb | 35 -- recipes/zaurus-updater/zaurus-updater.bb | 38 -- recipes/zaurus-updater/zaurus-updater/updater.sh | 515 ----------------------- recipes/zaurus-utils/encdec-updater-native.bb | 6 + recipes/zaurus-utils/encdec-updater.bb | 16 + recipes/zaurus-utils/files/encdec-updater.c | 80 ++++ recipes/zaurus-utils/files/gnu-tar.gz | Bin 0 -> 242146 bytes recipes/zaurus-utils/zaurus-installer.bb | 35 ++ recipes/zaurus-utils/zaurus-updater.bb | 38 ++ recipes/zaurus-utils/zaurus-updater/updater.sh | 515 +++++++++++++++++++++++ 14 files changed, 690 insertions(+), 690 deletions(-) delete mode 100644 recipes/zaurus-updater/encdec-updater-native.bb delete mode 100644 recipes/zaurus-updater/encdec-updater.bb delete mode 100644 recipes/zaurus-updater/files/encdec-updater.c delete mode 100644 recipes/zaurus-updater/files/gnu-tar.gz delete mode 100644 recipes/zaurus-updater/zaurus-installer.bb delete mode 100644 recipes/zaurus-updater/zaurus-updater.bb delete mode 100644 recipes/zaurus-updater/zaurus-updater/updater.sh create mode 100644 recipes/zaurus-utils/encdec-updater-native.bb create mode 100644 recipes/zaurus-utils/encdec-updater.bb create mode 100644 recipes/zaurus-utils/files/encdec-updater.c create mode 100644 recipes/zaurus-utils/files/gnu-tar.gz create mode 100644 recipes/zaurus-utils/zaurus-installer.bb create mode 100644 recipes/zaurus-utils/zaurus-updater.bb create mode 100644 recipes/zaurus-utils/zaurus-updater/updater.sh diff --git a/recipes/zaurus-updater/encdec-updater-native.bb b/recipes/zaurus-updater/encdec-updater-native.bb deleted file mode 100644 index 3bf49d5010..0000000000 --- a/recipes/zaurus-updater/encdec-updater-native.bb +++ /dev/null @@ -1,6 +0,0 @@ -require encdec-updater.bb -inherit native - -do_stage() { - install -m 0755 encdec-updater ${STAGING_BINDIR} -} diff --git a/recipes/zaurus-updater/encdec-updater.bb b/recipes/zaurus-updater/encdec-updater.bb deleted file mode 100644 index 72ecdcad48..0000000000 --- a/recipes/zaurus-updater/encdec-updater.bb +++ /dev/null @@ -1,16 +0,0 @@ -SECTION = "console/utils" -LICENSE = "GPL" -DESCRIPTION = "A tool to encode and decode the Sharp Zaurus updater.sh script" - -SRC_URI = "file://encdec-updater.c" - -COMPATIBLE_MACHINE = '(poodle|c7x0|spitz|akita|tosa)' - -do_compile() { - ${CC} ${LDFLAGS} -o encdec-updater ${WORKDIR}/encdec-updater.c -} - -do_install() { - install -d ${D}${bindir} - install -m 0755 encdec-updater ${D}${bindir}/ -} diff --git a/recipes/zaurus-updater/files/encdec-updater.c b/recipes/zaurus-updater/files/encdec-updater.c deleted file mode 100644 index b894623c65..0000000000 --- a/recipes/zaurus-updater/files/encdec-updater.c +++ /dev/null @@ -1,80 +0,0 @@ -// -// -// Sharp Zaurus SL-C7x0 updater.sh script encoder/decoder -// -// mailto:sash@cacko.biz -// -// - -#include - -unsigned char enctab[] = { - 0x4a,0xf7,0x77,0x62,0xb0,0xe3,0xd8,0xf6,0xd1,0x98,0x09,0x2e,0x19,0x0c,0x0d,0x7c, - 0x04,0xe0,0x6b,0x22,0x10,0x08,0x15,0x16,0xb9,0x28,0x83,0x1f,0x91,0x06,0xfa,0xe8, - 0xbd,0xc6,0x21,0x32,0x23,0x6f,0x01,0x26,0x5f,0x03,0x33,0xb6,0x35,0xac,0x2d,0x0a, - 0x6e,0x6c,0xfc,0xc4,0x29,0x34,0x2b,0x42,0x25,0x66,0xc9,0x3e,0x87,0xb4,0x74,0xf2, - 0x11,0x20,0x41,0xb3,0x27,0x14,0xc1,0xcd,0x3d,0x80,0xd5,0x7f,0xcf,0x4c,0x4d,0xca, - 0x75,0x51,0xc8,0xa6,0x17,0xf0,0x55,0x82,0x79,0xdc,0x59,0x5a,0x5b,0xb8,0x5d,0x40, - 0x64,0x58,0xff,0xc5,0xab,0xc0,0xae,0xeb,0xa3,0xad,0xea,0x6a,0x37,0x3b,0x73,0x9a, - 0x88,0x3a,0xe1,0x68,0x0b,0xec,0xc7,0x76,0xf9,0x38,0x57,0xdd,0x49,0x96,0x95,0x7a, - 0x50,0x2a,0x4e,0xdb,0x00,0x48,0xd7,0x86,0x47,0x94,0xa0,0x1c,0x8b,0x8c,0x8d,0x92, - 0x45,0x90,0x7e,0x56,0x93,0xef,0x1a,0x52,0x97,0xbc,0x99,0xb5,0x7d,0x72,0x9d,0x9c, - 0xfb,0x24,0xa1,0xa2,0x07,0x46,0xa5,0x02,0x69,0xe6,0xa9,0xd3,0x30,0xba,0xd6,0x84, - 0x63,0x13,0x1b,0xb2,0x1d,0xaf,0x36,0x8e,0xb7,0x53,0x05,0xbb,0x12,0x78,0x8f,0xbe, - 0x71,0xbf,0xe4,0x1e,0x9e,0xa4,0xe5,0x2f,0x9b,0x31,0x67,0x4b,0xcb,0x43,0xc3,0xce, - 0x44,0x3c,0x0f,0xd2,0xaa,0xd4,0xed,0xa7,0x7b,0x18,0xd0,0xda,0x0e,0x54,0xf1,0xde, - 0xdf,0xa8,0x3f,0xe2,0x6d,0xcc,0xf8,0x70,0xe7,0x61,0xe9,0x85,0x65,0x2c,0x39,0xee, - 0x60,0x81,0x89,0xc2,0xf3,0xf4,0xf5,0x8a,0x5c,0x5e,0xd9,0x4f,0x9f,0xb1,0xfd,0xfe, -}; - -unsigned char decode_c(unsigned char c) -{ - int i; - for (i = 0; i < 256; i++) { - if (c == enctab[i]) return i; - } - printf("Internal bug: encode_c()\n"); - exit(1); - return 0; -} - -unsigned char encode_c(unsigned char c) -{ - int i; - return enctab[c]; -} - -int main(int argc, char *argv[]) -{ - int i, decode; - int c; - FILE *inf, *outf; - char name[256]; - - if (argc < 3) { - printf("Decode file:\n\tencsh -d file.sh\nEncode file:\n\tencsh -c file.sh\n"); - exit(1); - } - - if (strcmp(argv[1], "-d")) decode = 1; - else decode = 0; - - strcpy(name, argv[2]); - strcat(name, ".$$$$"); - - inf = fopen(argv[2], "rb"); - outf = fopen(name, "wb"); - - while ((c = fgetc(inf)) >= 0) { - if (decode) c = decode_c(c); - else c = encode_c(c); - fputc(c, outf); - } - - fclose(inf); - fclose(outf); - - rename(name, argv[2]); - - return 0; -} diff --git a/recipes/zaurus-updater/files/gnu-tar.gz b/recipes/zaurus-updater/files/gnu-tar.gz deleted file mode 100644 index 93d1a43704..0000000000 Binary files a/recipes/zaurus-updater/files/gnu-tar.gz and /dev/null differ diff --git a/recipes/zaurus-updater/zaurus-installer.bb b/recipes/zaurus-updater/zaurus-installer.bb deleted file mode 100644 index e24f2aafaf..0000000000 --- a/recipes/zaurus-updater/zaurus-installer.bb +++ /dev/null @@ -1,35 +0,0 @@ -DESCRIPTION = "Installkit for kexecboot-kernel" -DEPENDS = "${@base_conditional('MACHINE', 'collie', 'linux-kexecboot', 'zaurus-updater linux-kexecboot', d)}" -LICENSE = "zaurus-installer" -PR = "r1" - -PACKAGES = "" -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = '(collie|poodle|c7x0|spitz|akita|tosa)' - -S = "${WORKDIR}" - -do_configure() { -} - -do_compile() { -} - -do_deploy() { - - cd ${DEPLOY_DIR_IMAGE} - rm -rf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}/ - mkdir installkit-${MACHINE}/ - - [ -f "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}.bin" ] && cp ${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}.bin installkit-${MACHINE}/${KERNEL_IMAGETYPE} - - if [ ! "${MACHINE}" = "collie" ]; then - cp updater.sh.${MACHINE} installkit-${MACHINE}/updater.sh - fi - - tar czf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz installkit-${MACHINE}/ - md5sum ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz > ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz.md5 - rm -rf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}/ -} - -addtask deploy before do_build after do_compile diff --git a/recipes/zaurus-updater/zaurus-updater.bb b/recipes/zaurus-updater/zaurus-updater.bb deleted file mode 100644 index ab32d7fe29..0000000000 --- a/recipes/zaurus-updater/zaurus-updater.bb +++ /dev/null @@ -1,38 +0,0 @@ -DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update" -DEPENDS = "encdec-updater-native" -LICENSE = "zaurus-updater" -PR = "r23" - -PACKAGES = "" -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = '(poodle|c7x0|spitz|akita|tosa)' - -SRC_URI = "file://updater.sh \ - file://gnu-tar.gz" -S = "${WORKDIR}" - -do_configure() { - sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh" -} - -do_compile() { - encdec-updater -e updater.sh -} - -do_deploy() { - install -d ${DEPLOY_DIR_IMAGE} - install -m 0755 updater.sh ${DEPLOY_DIR_IMAGE}/updater.sh.${MACHINE} - package_stagefile_shell ${DEPLOY_DIR_IMAGE}/updater.sh.${MACHINE} - - case ${MACHINE} in - spitz ) - install -m 0755 gnu-tar ${DEPLOY_DIR_IMAGE}/gnu-tar - package_stagefile_shell ${DEPLOY_DIR_IMAGE}/gnu-tar - ;; - *) - ;; - esac -} - -addtask deploy before do_build after do_compile -PARALLEL_MAKE = "" diff --git a/recipes/zaurus-updater/zaurus-updater/updater.sh b/recipes/zaurus-updater/zaurus-updater/updater.sh deleted file mode 100644 index f195aff383..0000000000 --- a/recipes/zaurus-updater/zaurus-updater/updater.sh +++ /dev/null @@ -1,515 +0,0 @@ -#!/bin/sh -# -# One updater.sh to rule them all -# -# 2006.10.24 Marcin 'Hrw' Juszkiewicz -# - started work on common updater.sh -# - works on poodle, c760, spitz -# - breaks on tosa -# -# 2007.10.08 Marcin 'Hrw' Juszkiewicz -# - do not allow to flash files bigger then partition size -# - created functions for common stuff -# -# 2007.11.18 Dmitry 'Lumag' Baryshkov -# - fixes -# - tosa unbreak -# -# 2007.11.19 Marcin 'Hrw' Juszkiewicz -# - size check unbreak -# - c760/c860 has bigger rootfs - use it -# -# 2007.11.23 Koen Kooi -# - consistent error messages -# - fix flashing from case sensitive filesystem (e.g. ext2) -# -# 2007.11.23 Matthias 'CoreDump' Hentges -# - Always treat MTD_PART_SIZE as HEX when comparing sizes -# - Thanks to ZeroChaos for debugging -# -# 2007.12.04 Matthias 'CoreDump' Hentges -# - Unb0rk flashing of Akita kernels -# -# 2007.12.10 Marcin 'Hrw' Juszkiewicz -# - Reformatted file - please use spaces not tabs -# - "version check" is only on Tosa and Poodle - breaks other machines -# -# 2007.12.23 Matthias 'CoreDump' Hentges -# - Fix kernel install on spitz machines -# - Unify format of do_flashing()... -# - Display ${PR} of zaurus-updater.bb to the user -# - Polish HDD installer messages -# -# 2007.12.25 Matthias 'CoreDump' Hentges -# -Add support for installing / updating u-boot -# -# 2008.11.23 Dmitry 'lumag' Baryshkov -# - Add support for reflashing home partitions - -# Set to "yes" to enable -ENABLE_UBOOT_UPDATER="no" - -DATAPATH=$1 -TMPPATH=/tmp/update -TMPDATA=$TMPPATH/tmpdata.bin -TMPHEAD=$TMPPATH/tmphead.bin - -FLASHED_KERNEL=0 -FLASHED_ROOTFS=0 -FLASHED_HOMEFS=0 -UNPACKED_ROOTFS=0 # spitz only - -RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` -if [ "$RO_MTD_LINE" = "" ]; then - RO_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RO_MTD=/dev/mtd$RO_MTD_NO -ROOTFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2` - -RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` -if [ "$RW_MTD_LINE" = "" ]; then - RW_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` -fi -RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` -RW_MTD=/dev/mtd$RW_MTD_NO -HOMEFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2` - -LOGOCAL_MTD=/dev/mtd1 - -VERBLOCK=0x48000 -MVRBLOCK=0x70000 - -RESULT=0 - -Cleanup() -{ - rm -f $VTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - exit $1 -} - -trap 'Cleanup 1' 1 15 -trap '' 2 3 - -get_dev_pcmcia() -{ - while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR; - do - echo $DEVS - done -} - -get_dev_pcmcia_slot() -{ - grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia -} - -check_for_hdd() -{ - IDE1=`get_dev_pcmcia_slot 1` - if [ "$IDE1" = "" ]; then - echo "Error: There is no microdrive. Retrying..." - while [ "$IDE1" = "" ]; do - IDE1=`get_dev_pcmcia_slot 1` - done - echo "Microdrive found." - fi - - LINUXFMT=ext3 - MKE2FSOPT=-j -} - -check_for_tar() -{ - ### Check that we have a valid tar - for TARNAME in gnu-tar GNU-TAR - do - if [ -e $DATAPATH/$TARNAME ] - then - TARBIN=$DATAPATH/$TARNAME - fi - done - - if [ ! -e $TARBIN ]; then - echo 'Error: Please place a valid copy of tar as "gnu-tar" on your card.' - echo 'Please reset' - while true - do - done - fi -} - -do_rootfs_extraction() -{ - UNPACKED_ROOTFS=1 - echo 'Installing HDD root file system' - if [ ! -f /hdd1/NotAvailable ]; then - umount /hdd1 - fi - echo -n '* Now formatting...' - mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1 - e2fsck -p /dev/${IDE1}1 > /dev/null - if [ "$?" != "0" ]; then - echo "FAILED" - echo "Error: Unable to create filesystem on microdrive!" - exit "$?" - else - echo "Done" - fi - - mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1 - if [ "$?" != "0" ]; then - echo "Error: Unable to mount microdrive!" - exit "$?" - fi - - cd /hdd1 - echo -n '* Now extracting (this can take over 5m)...' - gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf - - if [ "$?" != "0" ]; then - echo "FAILED" - echo "Error: Unable to extract root filesystem archive!" - exit "$?" - else - echo "Done" - fi - - echo 'HDD Installation Finished.' - - # remount as RO - cd / - umount /hdd1 - mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 -} - -do_flashing() -{ - if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ] - then - echo "Error: File is too big to flash!" - echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]" - return - fi - - if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ] - then - #check version - /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD - - if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 - then - #no version info... - rm -f $TMPHEAD > /dev/null 2>&1 - DATAPOS=0 - fi - fi - - if [ $ISFORMATTED = 0 ] - then - /sbin/eraseall $TARGET_MTD > /dev/null 2>&1 - ISFORMATTED=1 - fi - - if [ -e $TMPHEAD ] - then - VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' - MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' - /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - - /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 - /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 - fi - - # Looks like Akita and Spitz are unique when it comes to kernel flashing - - if [ "$ZAURUS" = "akita" -o "$ZAURUS" = "c3x00" ] && [ "$FLASH_TYPE" = "kernel" ] - then -# echo $TARGETFILE':'$DATASIZE'bytes' - echo "" - echo -n "Installing SL-Cxx00 kernel..." - echo ' ' > /tmp/data - test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 - /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 - test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 - echo "Done" - else - - echo '' - echo '0% 100%' - PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` - PROGSTEP=`expr 25 / $PROGSTEP` - - if [ $PROGSTEP = 0 ] - then - PROGSTEP=1 - fi - - #loop - while [ $DATAPOS -lt $DATASIZE ] - do - #data create - bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE - TMPSIZE=`wc -c $TMPDATA` - TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` - DATAPOS=`expr $DATAPOS + $TMPSIZE` - - #handle data file - if [ $ISLOGICAL = 0 ] - then - next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` - if [ "$next_addr" = "" ]; then - echo "Error: flash write" - rm $TMPDATA > /dev/null 2>&1 - RESULT=3 - break; - fi - ADDR=$next_addr - else - /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 - ADDR=`expr $ADDR + $TMPSIZE` - fi - - rm $TMPDATA > /dev/null 2>&1 - - #progress - SPNUM=0 - while [ $SPNUM -lt $PROGSTEP ] - do - echo -n '.' - SPNUM=`expr $SPNUM + 1` - done - done - fi - echo '' - - #finish - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - - if [ $RESULT = 0 ] - then - if [ -e $VTMPNAME ] - then - /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 - rm -f $VTMPNAME > /dev/null 2>&1 - fi - - if [ -e $MTMPNAME ] - then - /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 - rm -f $MTMPNAME > /dev/null 2>&1 - fi - - [ "$FLASH_TYPE" != "kernel" ] && echo 'Done.' - else - echo 'Error!' - fi -} - -update_uboot() { - # The flashing part of this function is based on pdaXrom's - # updater.sh - - if test "$ENABLE_UBOOT_UPDATER" != "yes" -o -z "$1" - then - echo "u-boot updates not allowed." - return - fi - - echo "" - echo "Installing u-boot bootloader:" - - DATASIZE=`wc -c $TARGETFILE` - FSIZE=`echo $DATASIZE | cut -d' ' -f1` - - echo -n "* Creating backup ($FSIZE Bytes)..." - if ( nandlogical /dev/mtd1 READ 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 - then - echo "Ok" - - echo -n "* Flashing u-boot..." - if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE $1 ) > /dev/null 2>&1 - then - echo "Success" - else - echo "FAILED" - echo "ERROR: Installation of u-boot failed!" - - echo -n "* Trying to restore backup..." - if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 - then - echo "Success" - echo "Your old bootloader has been restored" - else - echo "FAILED" - echo "Sorry, it's NAND-Restore time for you =(" - fi - fi - else - echo "FAILED" - echo "Could not create backup, aborting!" - echo "Your bootloader has not been altered in any way." - exit 1 - fi -} - -### Check model ### -/sbin/writerominfo -MODEL=`cat /proc/deviceinfo/product` -case "$MODEL" in - SL-B500|SL-5600) - ZAURUS='poodle' - ;; - SL-6000) - ZAURUS='tosa' - ;; - SL-C1000) - ZAURUS='akita' - ;; - SL-C700|SL-C750|SL-7500|SL-C760|SL-C860) - ZAURUS='c7x0' - ;; - SL-C3000|SL-C3100|SL-C3200) - ZAURUS='c3x00' - check_for_hdd - check_for_tar - ;; - *) - echo 'MODEL: '$MODEL 'is unsupported' - echo '' - echo 'Please reset' - while true - do - done - ;; -esac - -clear -echo "---- Universal Zaurus Updater ZAURUS_UPDATER_VERSION ----" -echo 'MODEL: '$MODEL' ('$ZAURUS')' - -mkdir -p $TMPPATH > /dev/null 2>&1 - -cd $DATAPATH/ - -for TARGETFILE in u-boot.bin U-BOOT.BIN zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ home.bin HOME.BIN -do - if [ ! -e $TARGETFILE ] - then - continue - fi - - rm -f $TMPPATH/*.bin > /dev/null 2>&1 - DATASIZE=`wc -c $TARGETFILE` - DATASIZE=`echo $DATASIZE | cut -d' ' -f1` - - # make TARGETFILE lowercase - TARGETFILE_LC=`echo $TARGETFILE|tr A-Z a-z` - - case "$TARGETFILE_LC" in - - zimage|zimage.bin) - if [ $FLASHED_KERNEL != 0 ] - then - continue - fi - FLASHED_KERNEL=1 - ISLOGICAL=1 - MODULEID=5 - MTD_PART_SIZE=0x13C000 - ADDR=`dc 0xE0000` - ISFORMATTED=1 - DATAPOS=0 - ONESIZE=524288 - HDTOP=`expr $DATASIZE - 16` - /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE - FLASH_TYPE="kernel" - do_flashing - FLASH_TYPE="" - ;; - - initrd.bin) - if [ $FLASHED_ROOTFS != 0 ] - then - continue - fi - echo 'root file system' - FLASHED_ROOTFS=1 - ISLOGICAL=0 - MODULEID=6 - MTD_PART_SIZE="0x$ROOTFS_SIZE" - ADDR=0 - ISFORMATTED=0 - TARGET_MTD=$RO_MTD - DATAPOS=16 - ONESIZE=1048576 - /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE - FLASH_TYPE="rootfs" - do_flashing - FLASH_TYPE="" - ;; - - home.bin) - if [ $FLASHED_HOMEFS != 0 ] - then - continue - fi - echo 'home file system' - FLASHED_HOMEFS=1 - ISLOGICAL=0 - ADDR=0 - ISFORMATTED=0 - MTD_PART_SIZE="0x$HOMEFS_SIZE" - ADDR=0 - ISFORMATTED=0 - TARGET_MTD=$RW_MTD - DATAPOS=0 - ONESIZE=1048576 - FLASH_TYPE="home" - /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE - do_flashing - FLASH_TYPE="" - ;; - - hdimage1.tgz) - if [ $UNPACKED_ROOTFS = 0 ] - then - do_rootfs_extraction - fi - ;; - - u-boot.bin) - if [ $FLASHED_UBOOT != 1 ] - then - update_uboot "$TARGETFILE" - FLASHED_UBOOT="1" - fi - ;; - - *) - ;; - esac -done - -# reboot -exit 0 - -# bcut usage: bcut [OPTION] - -# -a: start position -# -s: cut size -# -o: output file - -# ModuleId informations used by verchg Sharp binary: -# -# 0 - master -# 1 - Maintaince -# 2 - Diagnostics -# 3 - rescue kernel -# 4 - rescue rootfs -# 5 - normal kernel -# 6 - normal rootfs -# 7 - /home/ -# 8 - parameter (whatever it means) -# diff --git a/recipes/zaurus-utils/encdec-updater-native.bb b/recipes/zaurus-utils/encdec-updater-native.bb new file mode 100644 index 0000000000..3bf49d5010 --- /dev/null +++ b/recipes/zaurus-utils/encdec-updater-native.bb @@ -0,0 +1,6 @@ +require encdec-updater.bb +inherit native + +do_stage() { + install -m 0755 encdec-updater ${STAGING_BINDIR} +} diff --git a/recipes/zaurus-utils/encdec-updater.bb b/recipes/zaurus-utils/encdec-updater.bb new file mode 100644 index 0000000000..72ecdcad48 --- /dev/null +++ b/recipes/zaurus-utils/encdec-updater.bb @@ -0,0 +1,16 @@ +SECTION = "console/utils" +LICENSE = "GPL" +DESCRIPTION = "A tool to encode and decode the Sharp Zaurus updater.sh script" + +SRC_URI = "file://encdec-updater.c" + +COMPATIBLE_MACHINE = '(poodle|c7x0|spitz|akita|tosa)' + +do_compile() { + ${CC} ${LDFLAGS} -o encdec-updater ${WORKDIR}/encdec-updater.c +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 encdec-updater ${D}${bindir}/ +} diff --git a/recipes/zaurus-utils/files/encdec-updater.c b/recipes/zaurus-utils/files/encdec-updater.c new file mode 100644 index 0000000000..b894623c65 --- /dev/null +++ b/recipes/zaurus-utils/files/encdec-updater.c @@ -0,0 +1,80 @@ +// +// +// Sharp Zaurus SL-C7x0 updater.sh script encoder/decoder +// +// mailto:sash@cacko.biz +// +// + +#include + +unsigned char enctab[] = { + 0x4a,0xf7,0x77,0x62,0xb0,0xe3,0xd8,0xf6,0xd1,0x98,0x09,0x2e,0x19,0x0c,0x0d,0x7c, + 0x04,0xe0,0x6b,0x22,0x10,0x08,0x15,0x16,0xb9,0x28,0x83,0x1f,0x91,0x06,0xfa,0xe8, + 0xbd,0xc6,0x21,0x32,0x23,0x6f,0x01,0x26,0x5f,0x03,0x33,0xb6,0x35,0xac,0x2d,0x0a, + 0x6e,0x6c,0xfc,0xc4,0x29,0x34,0x2b,0x42,0x25,0x66,0xc9,0x3e,0x87,0xb4,0x74,0xf2, + 0x11,0x20,0x41,0xb3,0x27,0x14,0xc1,0xcd,0x3d,0x80,0xd5,0x7f,0xcf,0x4c,0x4d,0xca, + 0x75,0x51,0xc8,0xa6,0x17,0xf0,0x55,0x82,0x79,0xdc,0x59,0x5a,0x5b,0xb8,0x5d,0x40, + 0x64,0x58,0xff,0xc5,0xab,0xc0,0xae,0xeb,0xa3,0xad,0xea,0x6a,0x37,0x3b,0x73,0x9a, + 0x88,0x3a,0xe1,0x68,0x0b,0xec,0xc7,0x76,0xf9,0x38,0x57,0xdd,0x49,0x96,0x95,0x7a, + 0x50,0x2a,0x4e,0xdb,0x00,0x48,0xd7,0x86,0x47,0x94,0xa0,0x1c,0x8b,0x8c,0x8d,0x92, + 0x45,0x90,0x7e,0x56,0x93,0xef,0x1a,0x52,0x97,0xbc,0x99,0xb5,0x7d,0x72,0x9d,0x9c, + 0xfb,0x24,0xa1,0xa2,0x07,0x46,0xa5,0x02,0x69,0xe6,0xa9,0xd3,0x30,0xba,0xd6,0x84, + 0x63,0x13,0x1b,0xb2,0x1d,0xaf,0x36,0x8e,0xb7,0x53,0x05,0xbb,0x12,0x78,0x8f,0xbe, + 0x71,0xbf,0xe4,0x1e,0x9e,0xa4,0xe5,0x2f,0x9b,0x31,0x67,0x4b,0xcb,0x43,0xc3,0xce, + 0x44,0x3c,0x0f,0xd2,0xaa,0xd4,0xed,0xa7,0x7b,0x18,0xd0,0xda,0x0e,0x54,0xf1,0xde, + 0xdf,0xa8,0x3f,0xe2,0x6d,0xcc,0xf8,0x70,0xe7,0x61,0xe9,0x85,0x65,0x2c,0x39,0xee, + 0x60,0x81,0x89,0xc2,0xf3,0xf4,0xf5,0x8a,0x5c,0x5e,0xd9,0x4f,0x9f,0xb1,0xfd,0xfe, +}; + +unsigned char decode_c(unsigned char c) +{ + int i; + for (i = 0; i < 256; i++) { + if (c == enctab[i]) return i; + } + printf("Internal bug: encode_c()\n"); + exit(1); + return 0; +} + +unsigned char encode_c(unsigned char c) +{ + int i; + return enctab[c]; +} + +int main(int argc, char *argv[]) +{ + int i, decode; + int c; + FILE *inf, *outf; + char name[256]; + + if (argc < 3) { + printf("Decode file:\n\tencsh -d file.sh\nEncode file:\n\tencsh -c file.sh\n"); + exit(1); + } + + if (strcmp(argv[1], "-d")) decode = 1; + else decode = 0; + + strcpy(name, argv[2]); + strcat(name, ".$$$$"); + + inf = fopen(argv[2], "rb"); + outf = fopen(name, "wb"); + + while ((c = fgetc(inf)) >= 0) { + if (decode) c = decode_c(c); + else c = encode_c(c); + fputc(c, outf); + } + + fclose(inf); + fclose(outf); + + rename(name, argv[2]); + + return 0; +} diff --git a/recipes/zaurus-utils/files/gnu-tar.gz b/recipes/zaurus-utils/files/gnu-tar.gz new file mode 100644 index 0000000000..93d1a43704 Binary files /dev/null and b/recipes/zaurus-utils/files/gnu-tar.gz differ diff --git a/recipes/zaurus-utils/zaurus-installer.bb b/recipes/zaurus-utils/zaurus-installer.bb new file mode 100644 index 0000000000..e24f2aafaf --- /dev/null +++ b/recipes/zaurus-utils/zaurus-installer.bb @@ -0,0 +1,35 @@ +DESCRIPTION = "Installkit for kexecboot-kernel" +DEPENDS = "${@base_conditional('MACHINE', 'collie', 'linux-kexecboot', 'zaurus-updater linux-kexecboot', d)}" +LICENSE = "zaurus-installer" +PR = "r1" + +PACKAGES = "" +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = '(collie|poodle|c7x0|spitz|akita|tosa)' + +S = "${WORKDIR}" + +do_configure() { +} + +do_compile() { +} + +do_deploy() { + + cd ${DEPLOY_DIR_IMAGE} + rm -rf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}/ + mkdir installkit-${MACHINE}/ + + [ -f "${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}.bin" ] && cp ${KERNEL_IMAGETYPE}-kexecboot-${MACHINE}.bin installkit-${MACHINE}/${KERNEL_IMAGETYPE} + + if [ ! "${MACHINE}" = "collie" ]; then + cp updater.sh.${MACHINE} installkit-${MACHINE}/updater.sh + fi + + tar czf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz installkit-${MACHINE}/ + md5sum ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz > ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}.tar.gz.md5 + rm -rf ${DEPLOY_DIR_IMAGE}/installkit-${MACHINE}/ +} + +addtask deploy before do_build after do_compile diff --git a/recipes/zaurus-utils/zaurus-updater.bb b/recipes/zaurus-utils/zaurus-updater.bb new file mode 100644 index 0000000000..ab32d7fe29 --- /dev/null +++ b/recipes/zaurus-utils/zaurus-updater.bb @@ -0,0 +1,38 @@ +DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update" +DEPENDS = "encdec-updater-native" +LICENSE = "zaurus-updater" +PR = "r23" + +PACKAGES = "" +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = '(poodle|c7x0|spitz|akita|tosa)' + +SRC_URI = "file://updater.sh \ + file://gnu-tar.gz" +S = "${WORKDIR}" + +do_configure() { + sed -i "s/ZAURUS_UPDATER_VERSION/${PR}/" "${S}/updater.sh" +} + +do_compile() { + encdec-updater -e updater.sh +} + +do_deploy() { + install -d ${DEPLOY_DIR_IMAGE} + install -m 0755 updater.sh ${DEPLOY_DIR_IMAGE}/updater.sh.${MACHINE} + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/updater.sh.${MACHINE} + + case ${MACHINE} in + spitz ) + install -m 0755 gnu-tar ${DEPLOY_DIR_IMAGE}/gnu-tar + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/gnu-tar + ;; + *) + ;; + esac +} + +addtask deploy before do_build after do_compile +PARALLEL_MAKE = "" diff --git a/recipes/zaurus-utils/zaurus-updater/updater.sh b/recipes/zaurus-utils/zaurus-updater/updater.sh new file mode 100644 index 0000000000..f195aff383 --- /dev/null +++ b/recipes/zaurus-utils/zaurus-updater/updater.sh @@ -0,0 +1,515 @@ +#!/bin/sh +# +# One updater.sh to rule them all +# +# 2006.10.24 Marcin 'Hrw' Juszkiewicz +# - started work on common updater.sh +# - works on poodle, c760, spitz +# - breaks on tosa +# +# 2007.10.08 Marcin 'Hrw' Juszkiewicz +# - do not allow to flash files bigger then partition size +# - created functions for common stuff +# +# 2007.11.18 Dmitry 'Lumag' Baryshkov +# - fixes +# - tosa unbreak +# +# 2007.11.19 Marcin 'Hrw' Juszkiewicz +# - size check unbreak +# - c760/c860 has bigger rootfs - use it +# +# 2007.11.23 Koen Kooi +# - consistent error messages +# - fix flashing from case sensitive filesystem (e.g. ext2) +# +# 2007.11.23 Matthias 'CoreDump' Hentges +# - Always treat MTD_PART_SIZE as HEX when comparing sizes +# - Thanks to ZeroChaos for debugging +# +# 2007.12.04 Matthias 'CoreDump' Hentges +# - Unb0rk flashing of Akita kernels +# +# 2007.12.10 Marcin 'Hrw' Juszkiewicz +# - Reformatted file - please use spaces not tabs +# - "version check" is only on Tosa and Poodle - breaks other machines +# +# 2007.12.23 Matthias 'CoreDump' Hentges +# - Fix kernel install on spitz machines +# - Unify format of do_flashing()... +# - Display ${PR} of zaurus-updater.bb to the user +# - Polish HDD installer messages +# +# 2007.12.25 Matthias 'CoreDump' Hentges +# -Add support for installing / updating u-boot +# +# 2008.11.23 Dmitry 'lumag' Baryshkov +# - Add support for reflashing home partitions + +# Set to "yes" to enable +ENABLE_UBOOT_UPDATER="no" + +DATAPATH=$1 +TMPPATH=/tmp/update +TMPDATA=$TMPPATH/tmpdata.bin +TMPHEAD=$TMPPATH/tmphead.bin + +FLASHED_KERNEL=0 +FLASHED_ROOTFS=0 +FLASHED_HOMEFS=0 +UNPACKED_ROOTFS=0 # spitz only + +RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1` +if [ "$RO_MTD_LINE" = "" ]; then + RO_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` +fi +RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2` +RO_MTD=/dev/mtd$RO_MTD_NO +ROOTFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2` + +RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` +if [ "$RW_MTD_LINE" = "" ]; then + RW_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` +fi +RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` +RW_MTD=/dev/mtd$RW_MTD_NO +HOMEFS_SIZE=`echo $RO_MTD_LINE | cut -d" " -f2` + +LOGOCAL_MTD=/dev/mtd1 + +VERBLOCK=0x48000 +MVRBLOCK=0x70000 + +RESULT=0 + +Cleanup() +{ + rm -f $VTMPNAME > /dev/null 2>&1 + rm -f $MTMPNAME > /dev/null 2>&1 + exit $1 +} + +trap 'Cleanup 1' 1 15 +trap '' 2 3 + +get_dev_pcmcia() +{ + while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR; + do + echo $DEVS + done +} + +get_dev_pcmcia_slot() +{ + grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia +} + +check_for_hdd() +{ + IDE1=`get_dev_pcmcia_slot 1` + if [ "$IDE1" = "" ]; then + echo "Error: There is no microdrive. Retrying..." + while [ "$IDE1" = "" ]; do + IDE1=`get_dev_pcmcia_slot 1` + done + echo "Microdrive found." + fi + + LINUXFMT=ext3 + MKE2FSOPT=-j +} + +check_for_tar() +{ + ### Check that we have a valid tar + for TARNAME in gnu-tar GNU-TAR + do + if [ -e $DATAPATH/$TARNAME ] + then + TARBIN=$DATAPATH/$TARNAME + fi + done + + if [ ! -e $TARBIN ]; then + echo 'Error: Please place a valid copy of tar as "gnu-tar" on your card.' + echo 'Please reset' + while true + do + done + fi +} + +do_rootfs_extraction() +{ + UNPACKED_ROOTFS=1 + echo 'Installing HDD root file system' + if [ ! -f /hdd1/NotAvailable ]; then + umount /hdd1 + fi + echo -n '* Now formatting...' + mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1 + e2fsck -p /dev/${IDE1}1 > /dev/null + if [ "$?" != "0" ]; then + echo "FAILED" + echo "Error: Unable to create filesystem on microdrive!" + exit "$?" + else + echo "Done" + fi + + mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1 + if [ "$?" != "0" ]; then + echo "Error: Unable to mount microdrive!" + exit "$?" + fi + + cd /hdd1 + echo -n '* Now extracting (this can take over 5m)...' + gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf - + if [ "$?" != "0" ]; then + echo "FAILED" + echo "Error: Unable to extract root filesystem archive!" + exit "$?" + else + echo "Done" + fi + + echo 'HDD Installation Finished.' + + # remount as RO + cd / + umount /hdd1 + mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 +} + +do_flashing() +{ + if [ $DATASIZE -gt `printf "%d" $MTD_PART_SIZE` ] + then + echo "Error: File is too big to flash!" + echo "$FLASH_TYPE: [$DATASIZE] > [`printf "%d" ${MTD_PART_SIZE}`]" + return + fi + + if [ "$ZAURUS" = "tosa" ] || [ "$ZAURUS" = "poodle" ] + then + #check version + /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD + + if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1 + then + #no version info... + rm -f $TMPHEAD > /dev/null 2>&1 + DATAPOS=0 + fi + fi + + if [ $ISFORMATTED = 0 ] + then + /sbin/eraseall $TARGET_MTD > /dev/null 2>&1 + ISFORMATTED=1 + fi + + if [ -e $TMPHEAD ] + then + VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp' + MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp' + /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 + /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 + + /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 + /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1 + fi + + # Looks like Akita and Spitz are unique when it comes to kernel flashing + + if [ "$ZAURUS" = "akita" -o "$ZAURUS" = "c3x00" ] && [ "$FLASH_TYPE" = "kernel" ] + then +# echo $TARGETFILE':'$DATASIZE'bytes' + echo "" + echo -n "Installing SL-Cxx00 kernel..." + echo ' ' > /tmp/data + test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x60100 16 /tmp/data > /dev/null 2>&1 + /sbin/nandlogical $LOGOCAL_MTD WRITE 0xe0000 $DATASIZE $TARGETFILE > /dev/null 2>&1 + test "$ZAURUS" = "akita" && /sbin/nandlogical $LOGOCAL_MTD WRITE 0x21bff0 16 /tmp/data > /dev/null 2>&1 + echo "Done" + else + + echo '' + echo '0% 100%' + PROGSTEP=`expr $DATASIZE / $ONESIZE + 1` + PROGSTEP=`expr 25 / $PROGSTEP` + + if [ $PROGSTEP = 0 ] + then + PROGSTEP=1 + fi + + #loop + while [ $DATAPOS -lt $DATASIZE ] + do + #data create + bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE + TMPSIZE=`wc -c $TMPDATA` + TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1` + DATAPOS=`expr $DATAPOS + $TMPSIZE` + + #handle data file + if [ $ISLOGICAL = 0 ] + then + next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD 2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1` + if [ "$next_addr" = "" ]; then + echo "Error: flash write" + rm $TMPDATA > /dev/null 2>&1 + RESULT=3 + break; + fi + ADDR=$next_addr + else + /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1 + ADDR=`expr $ADDR + $TMPSIZE` + fi + + rm $TMPDATA > /dev/null 2>&1 + + #progress + SPNUM=0 + while [ $SPNUM -lt $PROGSTEP ] + do + echo -n '.' + SPNUM=`expr $SPNUM + 1` + done + done + fi + echo '' + + #finish + rm -f $TMPPATH/*.bin > /dev/null 2>&1 + + if [ $RESULT = 0 ] + then + if [ -e $VTMPNAME ] + then + /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1 + rm -f $VTMPNAME > /dev/null 2>&1 + fi + + if [ -e $MTMPNAME ] + then + /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1 + rm -f $MTMPNAME > /dev/null 2>&1 + fi + + [ "$FLASH_TYPE" != "kernel" ] && echo 'Done.' + else + echo 'Error!' + fi +} + +update_uboot() { + # The flashing part of this function is based on pdaXrom's + # updater.sh + + if test "$ENABLE_UBOOT_UPDATER" != "yes" -o -z "$1" + then + echo "u-boot updates not allowed." + return + fi + + echo "" + echo "Installing u-boot bootloader:" + + DATASIZE=`wc -c $TARGETFILE` + FSIZE=`echo $DATASIZE | cut -d' ' -f1` + + echo -n "* Creating backup ($FSIZE Bytes)..." + if ( nandlogical /dev/mtd1 READ 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 + then + echo "Ok" + + echo -n "* Flashing u-boot..." + if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE $1 ) > /dev/null 2>&1 + then + echo "Success" + else + echo "FAILED" + echo "ERROR: Installation of u-boot failed!" + + echo -n "* Trying to restore backup..." + if ( nandlogical /dev/mtd1 WRITE 0 $FSIZE /tmp/sharploader.bin ) > /dev/null 2>&1 + then + echo "Success" + echo "Your old bootloader has been restored" + else + echo "FAILED" + echo "Sorry, it's NAND-Restore time for you =(" + fi + fi + else + echo "FAILED" + echo "Could not create backup, aborting!" + echo "Your bootloader has not been altered in any way." + exit 1 + fi +} + +### Check model ### +/sbin/writerominfo +MODEL=`cat /proc/deviceinfo/product` +case "$MODEL" in + SL-B500|SL-5600) + ZAURUS='poodle' + ;; + SL-6000) + ZAURUS='tosa' + ;; + SL-C1000) + ZAURUS='akita' + ;; + SL-C700|SL-C750|SL-7500|SL-C760|SL-C860) + ZAURUS='c7x0' + ;; + SL-C3000|SL-C3100|SL-C3200) + ZAURUS='c3x00' + check_for_hdd + check_for_tar + ;; + *) + echo 'MODEL: '$MODEL 'is unsupported' + echo '' + echo 'Please reset' + while true + do + done + ;; +esac + +clear +echo "---- Universal Zaurus Updater ZAURUS_UPDATER_VERSION ----" +echo 'MODEL: '$MODEL' ('$ZAURUS')' + +mkdir -p $TMPPATH > /dev/null 2>&1 + +cd $DATAPATH/ + +for TARGETFILE in u-boot.bin U-BOOT.BIN zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ home.bin HOME.BIN +do + if [ ! -e $TARGETFILE ] + then + continue + fi + + rm -f $TMPPATH/*.bin > /dev/null 2>&1 + DATASIZE=`wc -c $TARGETFILE` + DATASIZE=`echo $DATASIZE | cut -d' ' -f1` + + # make TARGETFILE lowercase + TARGETFILE_LC=`echo $TARGETFILE|tr A-Z a-z` + + case "$TARGETFILE_LC" in + + zimage|zimage.bin) + if [ $FLASHED_KERNEL != 0 ] + then + continue + fi + FLASHED_KERNEL=1 + ISLOGICAL=1 + MODULEID=5 + MTD_PART_SIZE=0x13C000 + ADDR=`dc 0xE0000` + ISFORMATTED=1 + DATAPOS=0 + ONESIZE=524288 + HDTOP=`expr $DATASIZE - 16` + /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE + FLASH_TYPE="kernel" + do_flashing + FLASH_TYPE="" + ;; + + initrd.bin) + if [ $FLASHED_ROOTFS != 0 ] + then + continue + fi + echo 'root file system' + FLASHED_ROOTFS=1 + ISLOGICAL=0 + MODULEID=6 + MTD_PART_SIZE="0x$ROOTFS_SIZE" + ADDR=0 + ISFORMATTED=0 + TARGET_MTD=$RO_MTD + DATAPOS=16 + ONESIZE=1048576 + /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE + FLASH_TYPE="rootfs" + do_flashing + FLASH_TYPE="" + ;; + + home.bin) + if [ $FLASHED_HOMEFS != 0 ] + then + continue + fi + echo 'home file system' + FLASHED_HOMEFS=1 + ISLOGICAL=0 + ADDR=0 + ISFORMATTED=0 + MTD_PART_SIZE="0x$HOMEFS_SIZE" + ADDR=0 + ISFORMATTED=0 + TARGET_MTD=$RW_MTD + DATAPOS=0 + ONESIZE=1048576 + FLASH_TYPE="home" + /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE + do_flashing + FLASH_TYPE="" + ;; + + hdimage1.tgz) + if [ $UNPACKED_ROOTFS = 0 ] + then + do_rootfs_extraction + fi + ;; + + u-boot.bin) + if [ $FLASHED_UBOOT != 1 ] + then + update_uboot "$TARGETFILE" + FLASHED_UBOOT="1" + fi + ;; + + *) + ;; + esac +done + +# reboot +exit 0 + +# bcut usage: bcut [OPTION] + +# -a: start position +# -s: cut size +# -o: output file + +# ModuleId informations used by verchg Sharp binary: +# +# 0 - master +# 1 - Maintaince +# 2 - Diagnostics +# 3 - rescue kernel +# 4 - rescue rootfs +# 5 - normal kernel +# 6 - normal rootfs +# 7 - /home/ +# 8 - parameter (whatever it means) +# -- cgit v1.2.3 From e71f85f6b4f015c172fdf570d831ef826d4df8c7 Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Wed, 12 Aug 2009 00:30:24 +0200 Subject: nandlogical: move to zaurus-utils --- recipes/nandlogical/files/mtd-abi.h | 152 -------- recipes/nandlogical/files/mtd-user.h | 21 -- recipes/nandlogical/files/nandlogical.c | 386 --------------------- .../nandlogical/nandlogical-klibc-static_1.0.0.bb | 23 -- recipes/nandlogical/nandlogical_1.0.0.bb | 18 - .../zaurus-utils/nandlogical-klibc-static_1.0.0.bb | 23 ++ recipes/zaurus-utils/nandlogical/mtd-abi.h | 152 ++++++++ recipes/zaurus-utils/nandlogical/mtd-user.h | 21 ++ recipes/zaurus-utils/nandlogical/nandlogical.c | 386 +++++++++++++++++++++ recipes/zaurus-utils/nandlogical_1.0.0.bb | 18 + 10 files changed, 600 insertions(+), 600 deletions(-) delete mode 100644 recipes/nandlogical/files/mtd-abi.h delete mode 100644 recipes/nandlogical/files/mtd-user.h delete mode 100644 recipes/nandlogical/files/nandlogical.c delete mode 100644 recipes/nandlogical/nandlogical-klibc-static_1.0.0.bb delete mode 100644 recipes/nandlogical/nandlogical_1.0.0.bb create mode 100644 recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb create mode 100644 recipes/zaurus-utils/nandlogical/mtd-abi.h create mode 100644 recipes/zaurus-utils/nandlogical/mtd-user.h create mode 100644 recipes/zaurus-utils/nandlogical/nandlogical.c create mode 100644 recipes/zaurus-utils/nandlogical_1.0.0.bb diff --git a/recipes/nandlogical/files/mtd-abi.h b/recipes/nandlogical/files/mtd-abi.h deleted file mode 100644 index 86defe175f..0000000000 --- a/recipes/nandlogical/files/mtd-abi.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * $Id: mtd-abi.h,v 1.13 2005/11/07 11:14:56 gleixner Exp $ - * - * Portions of MTD ABI definition which are shared by kernel and user space - */ - -#ifndef __MTD_ABI_H__ -#define __MTD_ABI_H__ - -struct erase_info_user { - uint32_t start; - uint32_t length; -}; - -struct mtd_oob_buf { - uint32_t start; - uint32_t length; - unsigned char *ptr; -}; - -#define MTD_ABSENT 0 -#define MTD_RAM 1 -#define MTD_ROM 2 -#define MTD_NORFLASH 3 -#define MTD_NANDFLASH 4 -#define MTD_DATAFLASH 6 -#define MTD_UBIVOLUME 7 - -#define MTD_WRITEABLE 0x400 /* Device is writeable */ -#define MTD_BIT_WRITEABLE 0x800 /* Single bits can be flipped */ -#define MTD_NO_ERASE 0x1000 /* No erase necessary */ -#define MTD_STUPID_LOCK 0x2000 /* Always locked after reset */ - -// Some common devices / combinations of capabilities -#define MTD_CAP_ROM 0 -#define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) -#define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) -#define MTD_CAP_NANDFLASH (MTD_WRITEABLE) - -/* ECC byte placement */ -#define MTD_NANDECC_OFF 0 // Switch off ECC (Not recommended) -#define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) -#define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme -#define MTD_NANDECC_PLACEONLY 3 // Use the given placement in the structure (Do not store ecc result on read) -#define MTD_NANDECC_AUTOPL_USR 4 // Use the given autoplacement scheme rather than using the default - -/* OTP mode selection */ -#define MTD_OTP_OFF 0 -#define MTD_OTP_FACTORY 1 -#define MTD_OTP_USER 2 - -struct mtd_info_user { - uint8_t type; - uint32_t flags; - uint32_t size; // Total size of the MTD - uint32_t erasesize; - uint32_t writesize; - uint32_t oobsize; // Amount of OOB data per block (e.g. 16) - /* The below two fields are obsolete and broken, do not use them - * (TODO: remove at some point) */ - uint32_t ecctype; - uint32_t eccsize; -}; - -struct region_info_user { - uint32_t offset; /* At which this region starts, - * from the beginning of the MTD */ - uint32_t erasesize; /* For this region */ - uint32_t numblocks; /* Number of blocks in this region */ - uint32_t regionindex; -}; - -struct otp_info { - uint32_t start; - uint32_t length; - uint32_t locked; -}; - -#define MEMGETINFO _IOR('M', 1, struct mtd_info_user) -#define MEMERASE _IOW('M', 2, struct erase_info_user) -#define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) -#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) -#define MEMLOCK _IOW('M', 5, struct erase_info_user) -#define MEMUNLOCK _IOW('M', 6, struct erase_info_user) -#define MEMGETREGIONCOUNT _IOR('M', 7, int) -#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) -#define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) -#define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) -#define MEMGETBADBLOCK _IOW('M', 11, loff_t) -#define MEMSETBADBLOCK _IOW('M', 12, loff_t) -#define OTPSELECT _IOR('M', 13, int) -#define OTPGETREGIONCOUNT _IOW('M', 14, int) -#define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) -#define OTPLOCK _IOR('M', 16, struct otp_info) -#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout) -#define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) -#define MTDFILEMODE _IO('M', 19) - -/* - * Obsolete legacy interface. Keep it in order not to break userspace - * interfaces - */ -struct nand_oobinfo { - uint32_t useecc; - uint32_t eccbytes; - uint32_t oobfree[8][2]; - uint32_t eccpos[32]; -}; - -struct nand_oobfree { - uint32_t offset; - uint32_t length; -}; - -#define MTD_MAX_OOBFREE_ENTRIES 8 -/* - * ECC layout control structure. Exported to userspace for - * diagnosis and to allow creation of raw images - */ -struct nand_ecclayout { - uint32_t eccbytes; - uint32_t eccpos[64]; - uint32_t oobavail; - struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES]; -}; - -/** - * struct mtd_ecc_stats - error correction stats - * - * @corrected: number of corrected bits - * @failed: number of uncorrectable errors - * @badblocks: number of bad blocks in this partition - * @bbtblocks: number of blocks reserved for bad block tables - */ -struct mtd_ecc_stats { - uint32_t corrected; - uint32_t failed; - uint32_t badblocks; - uint32_t bbtblocks; -}; - -/* - * Read/write file modes for access to MTD - */ -enum mtd_file_modes { - MTD_MODE_NORMAL = MTD_OTP_OFF, - MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY, - MTD_MODE_OTP_USER = MTD_OTP_USER, - MTD_MODE_RAW, -}; - -#endif /* __MTD_ABI_H__ */ diff --git a/recipes/nandlogical/files/mtd-user.h b/recipes/nandlogical/files/mtd-user.h deleted file mode 100644 index 713f34d3e6..0000000000 --- a/recipes/nandlogical/files/mtd-user.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * $Id: mtd-user.h,v 1.2 2004/05/05 14:44:57 dwmw2 Exp $ - * - * MTD ABI header for use by user space only. - */ - -#ifndef __MTD_USER_H__ -#define __MTD_USER_H__ - -#include - -/* This file is blessed for inclusion by userspace */ -#include - -typedef struct mtd_info_user mtd_info_t; -typedef struct erase_info_user erase_info_t; -typedef struct region_info_user region_info_t; -typedef struct nand_oobinfo nand_oobinfo_t; -typedef struct nand_ecclayout nand_ecclayout_t; - -#endif /* __MTD_USER_H__ */ diff --git a/recipes/nandlogical/files/nandlogical.c b/recipes/nandlogical/files/nandlogical.c deleted file mode 100644 index d88d1c212f..0000000000 --- a/recipes/nandlogical/files/nandlogical.c +++ /dev/null @@ -1,386 +0,0 @@ -/* - NAND logical utility for Sharp Zaurus SL-C7x0/860/7500/Cxx00 - version 1.0 - Copyright 2006 Alexander Chukov - - This program 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, 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. - */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -int fd; - -unsigned char *readbuf; -unsigned char *oobbuf; -unsigned long *log2phy; - -struct mtd_oob_buf oob = {0, 16, NULL}; - -struct nand_oobinfo none_oobinfo = { - .useecc = MTD_NANDECC_OFF, -}; - -#define NAND_LOGICAL_SIZE (7 * 1024 * 1024) - -///////////////////////////////////////////////////////////////////// -// oob structure -///////////////////////////////////////////////////////////////////// - -#define NAND_NOOB_LOGADDR_00 8 -#define NAND_NOOB_LOGADDR_01 9 -#define NAND_NOOB_LOGADDR_10 10 -#define NAND_NOOB_LOGADDR_11 11 -#define NAND_NOOB_LOGADDR_20 12 -#define NAND_NOOB_LOGADDR_21 13 - -static uint nand_get_logical_no(unsigned char *oob) -{ - unsigned short us,bit; - int par; - int good0, good1; - - if(oob[NAND_NOOB_LOGADDR_00] == oob[NAND_NOOB_LOGADDR_10] && - oob[NAND_NOOB_LOGADDR_01] == oob[NAND_NOOB_LOGADDR_11]){ - good0 = NAND_NOOB_LOGADDR_00; - good1 = NAND_NOOB_LOGADDR_01; - }else - if(oob[NAND_NOOB_LOGADDR_10] == oob[NAND_NOOB_LOGADDR_20] && - oob[NAND_NOOB_LOGADDR_11] == oob[NAND_NOOB_LOGADDR_21]){ - good0 = NAND_NOOB_LOGADDR_10; - good1 = NAND_NOOB_LOGADDR_11; - }else - if(oob[NAND_NOOB_LOGADDR_20] == oob[NAND_NOOB_LOGADDR_00] && - oob[NAND_NOOB_LOGADDR_21] == oob[NAND_NOOB_LOGADDR_01]){ - good0 = NAND_NOOB_LOGADDR_20; - good1 = NAND_NOOB_LOGADDR_21; - }else{ - return (uint)-1; - } - - us = (((unsigned short)(oob[good0]) & 0x00ff) << 0) | - (((unsigned short)(oob[good1]) & 0x00ff) << 8); - - par = 0; - for(bit = 0x0001; bit != 0; bit <<= 1){ - if(us & bit){ - par++; - } - } - if(par & 1){ - return (uint)-2; - } - - if(us == 0xffff){ - return 0xffff; - }else{ - return ((us & 0x07fe) >> 1); - } -} - -static void nand_set_logical_no(uint log_no, unsigned char *oob) -{ - unsigned short us,bit; - int par; - - us = (((log_no & 0x03ff) << 1) | 0x1000); - - par = 0; - for(bit = 0x0001; bit != 0; bit <<= 1){ - if(us & bit){ - par++; - } - } - if(par & 1){ - us |= 0x0001; - } - - oob[NAND_NOOB_LOGADDR_00] = (unsigned char)((us & 0x00ff) >> 0); - oob[NAND_NOOB_LOGADDR_01] = (unsigned char)((us & 0xff00) >> 8); - oob[NAND_NOOB_LOGADDR_10] = oob[NAND_NOOB_LOGADDR_00]; - oob[NAND_NOOB_LOGADDR_11] = oob[NAND_NOOB_LOGADDR_01]; - oob[NAND_NOOB_LOGADDR_20] = oob[NAND_NOOB_LOGADDR_00]; - oob[NAND_NOOB_LOGADDR_21] = oob[NAND_NOOB_LOGADDR_01]; -} - -void scan_logical(int blocks, int erasesize) -{ - int i; - unsigned long offset; - int ret = 1; - for (i = 0; i < blocks; i++) - log2phy[i] = (uint) -1; - offset = 0; - for (i = 0; i < blocks; i++) { - oob.start = offset; - ret = ioctl(fd, MEMREADOOB, &oob); - - //ret = nand_read_raw(nand, oobuf, offset, nand->writesize, nand->oobsize); - if (!ret) { - int log_no = nand_get_logical_no(oobbuf); - if (((int)log_no >= 0) && (log_no < blocks)) { - log2phy[log_no] = offset; - //printf("NAND logical - %08X -> %04X\n", offset, log_no * erasesize); - } else { - //printf("NAND logical - %08X - skip (%x)\n", offset, log_no); - } - } else { - //printf("NAND logical - offset %x read OOB problem\n", offset); - } - offset += erasesize; - } -} - -unsigned long add_logical(unsigned long ofs, int blocks, int erasesize, int bs) -{ - erase_info_t erase; - unsigned long offset = 0; - int i; - int ret; - - erase.length = erasesize; - - for (i = 0; i < blocks; i++) { - oob.start = offset; - ret = ioctl(fd, MEMREADOOB, &oob); - - if (!ret) { - int log_no = nand_get_logical_no(oobbuf); - -//printf("-- %x\n", log_no); - - if ((short)log_no == -1) { - int j = 0; - { - loff_t offs = offset; - erase.start = offset; - int ret = ioctl(fd, MEMGETBADBLOCK, &offs); - if (ret > 0) { - printf ("\nSkipping bad block at 0x%08x\n", erase.start); - goto nextblock; - } else if (ret < 0) { - perror("ioctl(MEMGETBADBLOCK)"); - exit(1); - } else { - printf("%x - no bad block\n", offset); - } - - if (ioctl(fd, MEMERASE, &erase) != 0) { - perror("ioctl(MEMERASE)"); - goto nextblock; - } - - //printf("%x - erased\n", offset); - - } - - //printf("NAND logical - found free block %x, mapped as %x\n", offset, ofs); - - log2phy[ofs / erasesize] = offset; - - return offset; - } else { - //fprintf(stderr, "found: %x\n", log_no); - } - } else { - perror ("ioctl(MEMREADOOB)"); - } - - nextblock: - offset += erasesize; - } - - return (unsigned long)-1; -} - -void usage(void) -{ - fprintf(stderr, "Usage:\nnandlogical READ|WRITE \n"); - exit(1); -} - -int main(int argc, char *argv[]) -{ - mtd_info_t meminfo; - char *mtddev; - int blocks; - unsigned long start_addr; - unsigned long end_addr; - unsigned long length; - unsigned long ofs; - int bs; - int ofd; - int func_write = 0; - int oobinfochanged = 0; - struct nand_oobinfo old_oobinfo; - - if (argc < 6) - usage(); - - if (strcmp(argv[2], "WRITE") == 0) - func_write = 1; - else if (strcmp(argv[2], "READ") != 0) - usage(); - - mtddev = argv[1]; - start_addr = strtoul(argv[3], NULL, 0); - length = strtoul(argv[4], NULL, 0); - - if (func_write) { - if ((ofd = open(argv[5], O_RDONLY)) == -1) { - perror("open input file"); - exit(1); - } - /* Open MTD device */ - if ((fd = open(mtddev, O_RDWR)) == -1) { - perror("open flash"); - exit (1); - } - } else { - if ((ofd = open(argv[5], O_WRONLY | O_TRUNC | O_CREAT, 0644)) == -1) { - perror ("open outfile"); - exit(1); - } - /* Open MTD device */ - if ((fd = open(mtddev, O_RDONLY)) == -1) { - perror("open flash"); - exit (1); - } - } - - /* Fill in MTD device capability structure */ - if (ioctl(fd, MEMGETINFO, &meminfo) != 0) { - perror("MEMGETINFO"); - close(fd); - exit (1); - } - - /* Make sure device page sizes are valid */ - if (!(meminfo.oobsize == 64 && meminfo.writesize == 2048) && - !(meminfo.oobsize == 16 && meminfo.writesize == 512) && - !(meminfo.oobsize == 8 && meminfo.writesize == 256)) { - fprintf(stderr, "Unknown flash (not normal NAND)\n"); - close(fd); - exit(1); - } - - //printf("erasesize %x\nwritesize %x\noobsize %x\nsize %x\n", meminfo.erasesize, meminfo.writesize, meminfo.oobsize, meminfo.size); - - blocks = NAND_LOGICAL_SIZE / meminfo.erasesize; - log2phy = (unsigned long *) malloc(blocks * sizeof(unsigned long)); - readbuf = (char *)malloc(meminfo.erasesize); - oobbuf = (char *)malloc(meminfo.writesize); - oob.ptr = oobbuf; - - scan_logical(blocks, meminfo.erasesize); - - //printf("Start: %x\nEnd: %x\n", start_addr, length); - - end_addr = start_addr + length; - bs = meminfo.writesize; - - for (ofs = start_addr; ofs < end_addr ; ofs+=bs) { - int new_logical_added = 0; - int offset = log2phy[ofs / meminfo.erasesize]; - - if ((int)offset < 0 && func_write) { - //printf("add logical block...\n"); - offset = add_logical(ofs, blocks, meminfo.erasesize, bs); - new_logical_added = 1; - } - - if ((int)offset < 0) { - printf("NAND logical - offset %08X not found\n", ofs); - goto closeall; - } - - offset += ofs % meminfo.erasesize; - - //printf(":%x\n", offset); - - if (func_write) { - int len; - memset(readbuf, 0xff, bs); - len = read(ofd, readbuf, bs); - if (len > 0) { -#if 1 - if (ofs % meminfo.erasesize == 0) { - int j; - erase_info_t erase; - erase.start = offset; - erase.length = meminfo.erasesize; - if (ioctl(fd, MEMERASE, &erase) != 0) { - printf("ioctl(MEMERASE) %x\n", offset); - //goto nextblock; - } - //printf("Erased\n"); - - for (j = 0; j < meminfo.erasesize; j+=bs) { - int log_no; - oob.start = offset + j; - oob.length = 16; - - memset(oobbuf, 0xff, 16); - nand_set_logical_no(ofs / meminfo.erasesize, oobbuf); - if (ioctl(fd, MEMWRITEOOB, &oob) != 0) { - //perror ("ioctl(MEMWRITEOOB)"); - printf("NAND logical add - MEMWRITEOOB error %x\n", offset + j); - exit(1); - } - memset(oobbuf, 0xff, 16); - if (ioctl(fd, MEMREADOOB, &oob) != 0) { - perror ("ioctl(MEMREADOOB)"); - exit(1); - } - log_no = nand_get_logical_no(oobbuf); - //printf("%x:1 write %x, read %x\n", offset + j, ofs / meminfo.erasesize, log_no); - } - - } -#endif - if (pwrite(fd, readbuf, bs, offset) != bs) { - perror ("pwrite"); - goto closeall; - } - - } else - break; - } else { - if (pread(fd, readbuf, bs, offset) != bs) { - perror("pread"); - goto closeall; - } - write(ofd, readbuf, ((end_addr - ofs) < bs)?(end_addr - ofs):bs); - } - } - - closeall: - - free(log2phy); - free(readbuf); - free(oobbuf); - close(fd); - close(ofd); - - return 0; -} diff --git a/recipes/nandlogical/nandlogical-klibc-static_1.0.0.bb b/recipes/nandlogical/nandlogical-klibc-static_1.0.0.bb deleted file mode 100644 index 8c3ca9da79..0000000000 --- a/recipes/nandlogical/nandlogical-klibc-static_1.0.0.bb +++ /dev/null @@ -1,23 +0,0 @@ -require nandlogical_${PV}.bb - -SRC_URI_append = " file://nandlogical.c \ - file://mtd-user.h \ - file://mtd-abi.h \ - " -DEPENDS += "klibc" - -export CC = ${TARGET_PREFIX}klcc - -# standard oe cflags don't work with klcc -export CFLAGS = "" -export CPPFLAGS = "" -export LDFLAGS = "" - -do_configure_prepend() { - sed -i 's::"mtd-user.h":g' '${S}/nandlogical.c' - sed -i 's::"mtd-abi.h":g' '${S}/mtd-user.h' -} - -do_compile() { - ${CC} nandlogical.c -o nandlogical ${CFLAGS} ${LDFLAGS} -static -} diff --git a/recipes/nandlogical/nandlogical_1.0.0.bb b/recipes/nandlogical/nandlogical_1.0.0.bb deleted file mode 100644 index d567b48a3c..0000000000 --- a/recipes/nandlogical/nandlogical_1.0.0.bb +++ /dev/null @@ -1,18 +0,0 @@ -DESCRIPTION = "Nandlogical for Sharp mtd1" -LICENSE = "GPL" -DEPENDS = "mtd-utils" -COMPATIBLE_MACHINE = "(poodle|c7x0|akita|spitz|tosa)" -PR = "r2" - -SRC_URI = "file://nandlogical.c" - -S = "${WORKDIR}" - -do_compile () { - ${CC} nandlogical.c -o nandlogical ${CFLAGS} ${LDFLAGS} -} - -do_install () { - install -d ${D}${bindir}/ - install -m 0755 nandlogical ${D}${bindir}/ -} diff --git a/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb b/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb new file mode 100644 index 0000000000..8c3ca9da79 --- /dev/null +++ b/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb @@ -0,0 +1,23 @@ +require nandlogical_${PV}.bb + +SRC_URI_append = " file://nandlogical.c \ + file://mtd-user.h \ + file://mtd-abi.h \ + " +DEPENDS += "klibc" + +export CC = ${TARGET_PREFIX}klcc + +# standard oe cflags don't work with klcc +export CFLAGS = "" +export CPPFLAGS = "" +export LDFLAGS = "" + +do_configure_prepend() { + sed -i 's::"mtd-user.h":g' '${S}/nandlogical.c' + sed -i 's::"mtd-abi.h":g' '${S}/mtd-user.h' +} + +do_compile() { + ${CC} nandlogical.c -o nandlogical ${CFLAGS} ${LDFLAGS} -static +} diff --git a/recipes/zaurus-utils/nandlogical/mtd-abi.h b/recipes/zaurus-utils/nandlogical/mtd-abi.h new file mode 100644 index 0000000000..86defe175f --- /dev/null +++ b/recipes/zaurus-utils/nandlogical/mtd-abi.h @@ -0,0 +1,152 @@ +/* + * $Id: mtd-abi.h,v 1.13 2005/11/07 11:14:56 gleixner Exp $ + * + * Portions of MTD ABI definition which are shared by kernel and user space + */ + +#ifndef __MTD_ABI_H__ +#define __MTD_ABI_H__ + +struct erase_info_user { + uint32_t start; + uint32_t length; +}; + +struct mtd_oob_buf { + uint32_t start; + uint32_t length; + unsigned char *ptr; +}; + +#define MTD_ABSENT 0 +#define MTD_RAM 1 +#define MTD_ROM 2 +#define MTD_NORFLASH 3 +#define MTD_NANDFLASH 4 +#define MTD_DATAFLASH 6 +#define MTD_UBIVOLUME 7 + +#define MTD_WRITEABLE 0x400 /* Device is writeable */ +#define MTD_BIT_WRITEABLE 0x800 /* Single bits can be flipped */ +#define MTD_NO_ERASE 0x1000 /* No erase necessary */ +#define MTD_STUPID_LOCK 0x2000 /* Always locked after reset */ + +// Some common devices / combinations of capabilities +#define MTD_CAP_ROM 0 +#define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) +#define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) +#define MTD_CAP_NANDFLASH (MTD_WRITEABLE) + +/* ECC byte placement */ +#define MTD_NANDECC_OFF 0 // Switch off ECC (Not recommended) +#define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) +#define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme +#define MTD_NANDECC_PLACEONLY 3 // Use the given placement in the structure (Do not store ecc result on read) +#define MTD_NANDECC_AUTOPL_USR 4 // Use the given autoplacement scheme rather than using the default + +/* OTP mode selection */ +#define MTD_OTP_OFF 0 +#define MTD_OTP_FACTORY 1 +#define MTD_OTP_USER 2 + +struct mtd_info_user { + uint8_t type; + uint32_t flags; + uint32_t size; // Total size of the MTD + uint32_t erasesize; + uint32_t writesize; + uint32_t oobsize; // Amount of OOB data per block (e.g. 16) + /* The below two fields are obsolete and broken, do not use them + * (TODO: remove at some point) */ + uint32_t ecctype; + uint32_t eccsize; +}; + +struct region_info_user { + uint32_t offset; /* At which this region starts, + * from the beginning of the MTD */ + uint32_t erasesize; /* For this region */ + uint32_t numblocks; /* Number of blocks in this region */ + uint32_t regionindex; +}; + +struct otp_info { + uint32_t start; + uint32_t length; + uint32_t locked; +}; + +#define MEMGETINFO _IOR('M', 1, struct mtd_info_user) +#define MEMERASE _IOW('M', 2, struct erase_info_user) +#define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) +#define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) +#define MEMLOCK _IOW('M', 5, struct erase_info_user) +#define MEMUNLOCK _IOW('M', 6, struct erase_info_user) +#define MEMGETREGIONCOUNT _IOR('M', 7, int) +#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) +#define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) +#define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) +#define MEMGETBADBLOCK _IOW('M', 11, loff_t) +#define MEMSETBADBLOCK _IOW('M', 12, loff_t) +#define OTPSELECT _IOR('M', 13, int) +#define OTPGETREGIONCOUNT _IOW('M', 14, int) +#define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) +#define OTPLOCK _IOR('M', 16, struct otp_info) +#define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout) +#define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) +#define MTDFILEMODE _IO('M', 19) + +/* + * Obsolete legacy interface. Keep it in order not to break userspace + * interfaces + */ +struct nand_oobinfo { + uint32_t useecc; + uint32_t eccbytes; + uint32_t oobfree[8][2]; + uint32_t eccpos[32]; +}; + +struct nand_oobfree { + uint32_t offset; + uint32_t length; +}; + +#define MTD_MAX_OOBFREE_ENTRIES 8 +/* + * ECC layout control structure. Exported to userspace for + * diagnosis and to allow creation of raw images + */ +struct nand_ecclayout { + uint32_t eccbytes; + uint32_t eccpos[64]; + uint32_t oobavail; + struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES]; +}; + +/** + * struct mtd_ecc_stats - error correction stats + * + * @corrected: number of corrected bits + * @failed: number of uncorrectable errors + * @badblocks: number of bad blocks in this partition + * @bbtblocks: number of blocks reserved for bad block tables + */ +struct mtd_ecc_stats { + uint32_t corrected; + uint32_t failed; + uint32_t badblocks; + uint32_t bbtblocks; +}; + +/* + * Read/write file modes for access to MTD + */ +enum mtd_file_modes { + MTD_MODE_NORMAL = MTD_OTP_OFF, + MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY, + MTD_MODE_OTP_USER = MTD_OTP_USER, + MTD_MODE_RAW, +}; + +#endif /* __MTD_ABI_H__ */ diff --git a/recipes/zaurus-utils/nandlogical/mtd-user.h b/recipes/zaurus-utils/nandlogical/mtd-user.h new file mode 100644 index 0000000000..713f34d3e6 --- /dev/null +++ b/recipes/zaurus-utils/nandlogical/mtd-user.h @@ -0,0 +1,21 @@ +/* + * $Id: mtd-user.h,v 1.2 2004/05/05 14:44:57 dwmw2 Exp $ + * + * MTD ABI header for use by user space only. + */ + +#ifndef __MTD_USER_H__ +#define __MTD_USER_H__ + +#include + +/* This file is blessed for inclusion by userspace */ +#include + +typedef struct mtd_info_user mtd_info_t; +typedef struct erase_info_user erase_info_t; +typedef struct region_info_user region_info_t; +typedef struct nand_oobinfo nand_oobinfo_t; +typedef struct nand_ecclayout nand_ecclayout_t; + +#endif /* __MTD_USER_H__ */ diff --git a/recipes/zaurus-utils/nandlogical/nandlogical.c b/recipes/zaurus-utils/nandlogical/nandlogical.c new file mode 100644 index 0000000000..d88d1c212f --- /dev/null +++ b/recipes/zaurus-utils/nandlogical/nandlogical.c @@ -0,0 +1,386 @@ +/* + NAND logical utility for Sharp Zaurus SL-C7x0/860/7500/Cxx00 + version 1.0 + Copyright 2006 Alexander Chukov + + This program 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, 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. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +int fd; + +unsigned char *readbuf; +unsigned char *oobbuf; +unsigned long *log2phy; + +struct mtd_oob_buf oob = {0, 16, NULL}; + +struct nand_oobinfo none_oobinfo = { + .useecc = MTD_NANDECC_OFF, +}; + +#define NAND_LOGICAL_SIZE (7 * 1024 * 1024) + +///////////////////////////////////////////////////////////////////// +// oob structure +///////////////////////////////////////////////////////////////////// + +#define NAND_NOOB_LOGADDR_00 8 +#define NAND_NOOB_LOGADDR_01 9 +#define NAND_NOOB_LOGADDR_10 10 +#define NAND_NOOB_LOGADDR_11 11 +#define NAND_NOOB_LOGADDR_20 12 +#define NAND_NOOB_LOGADDR_21 13 + +static uint nand_get_logical_no(unsigned char *oob) +{ + unsigned short us,bit; + int par; + int good0, good1; + + if(oob[NAND_NOOB_LOGADDR_00] == oob[NAND_NOOB_LOGADDR_10] && + oob[NAND_NOOB_LOGADDR_01] == oob[NAND_NOOB_LOGADDR_11]){ + good0 = NAND_NOOB_LOGADDR_00; + good1 = NAND_NOOB_LOGADDR_01; + }else + if(oob[NAND_NOOB_LOGADDR_10] == oob[NAND_NOOB_LOGADDR_20] && + oob[NAND_NOOB_LOGADDR_11] == oob[NAND_NOOB_LOGADDR_21]){ + good0 = NAND_NOOB_LOGADDR_10; + good1 = NAND_NOOB_LOGADDR_11; + }else + if(oob[NAND_NOOB_LOGADDR_20] == oob[NAND_NOOB_LOGADDR_00] && + oob[NAND_NOOB_LOGADDR_21] == oob[NAND_NOOB_LOGADDR_01]){ + good0 = NAND_NOOB_LOGADDR_20; + good1 = NAND_NOOB_LOGADDR_21; + }else{ + return (uint)-1; + } + + us = (((unsigned short)(oob[good0]) & 0x00ff) << 0) | + (((unsigned short)(oob[good1]) & 0x00ff) << 8); + + par = 0; + for(bit = 0x0001; bit != 0; bit <<= 1){ + if(us & bit){ + par++; + } + } + if(par & 1){ + return (uint)-2; + } + + if(us == 0xffff){ + return 0xffff; + }else{ + return ((us & 0x07fe) >> 1); + } +} + +static void nand_set_logical_no(uint log_no, unsigned char *oob) +{ + unsigned short us,bit; + int par; + + us = (((log_no & 0x03ff) << 1) | 0x1000); + + par = 0; + for(bit = 0x0001; bit != 0; bit <<= 1){ + if(us & bit){ + par++; + } + } + if(par & 1){ + us |= 0x0001; + } + + oob[NAND_NOOB_LOGADDR_00] = (unsigned char)((us & 0x00ff) >> 0); + oob[NAND_NOOB_LOGADDR_01] = (unsigned char)((us & 0xff00) >> 8); + oob[NAND_NOOB_LOGADDR_10] = oob[NAND_NOOB_LOGADDR_00]; + oob[NAND_NOOB_LOGADDR_11] = oob[NAND_NOOB_LOGADDR_01]; + oob[NAND_NOOB_LOGADDR_20] = oob[NAND_NOOB_LOGADDR_00]; + oob[NAND_NOOB_LOGADDR_21] = oob[NAND_NOOB_LOGADDR_01]; +} + +void scan_logical(int blocks, int erasesize) +{ + int i; + unsigned long offset; + int ret = 1; + for (i = 0; i < blocks; i++) + log2phy[i] = (uint) -1; + offset = 0; + for (i = 0; i < blocks; i++) { + oob.start = offset; + ret = ioctl(fd, MEMREADOOB, &oob); + + //ret = nand_read_raw(nand, oobuf, offset, nand->writesize, nand->oobsize); + if (!ret) { + int log_no = nand_get_logical_no(oobbuf); + if (((int)log_no >= 0) && (log_no < blocks)) { + log2phy[log_no] = offset; + //printf("NAND logical - %08X -> %04X\n", offset, log_no * erasesize); + } else { + //printf("NAND logical - %08X - skip (%x)\n", offset, log_no); + } + } else { + //printf("NAND logical - offset %x read OOB problem\n", offset); + } + offset += erasesize; + } +} + +unsigned long add_logical(unsigned long ofs, int blocks, int erasesize, int bs) +{ + erase_info_t erase; + unsigned long offset = 0; + int i; + int ret; + + erase.length = erasesize; + + for (i = 0; i < blocks; i++) { + oob.start = offset; + ret = ioctl(fd, MEMREADOOB, &oob); + + if (!ret) { + int log_no = nand_get_logical_no(oobbuf); + +//printf("-- %x\n", log_no); + + if ((short)log_no == -1) { + int j = 0; + { + loff_t offs = offset; + erase.start = offset; + int ret = ioctl(fd, MEMGETBADBLOCK, &offs); + if (ret > 0) { + printf ("\nSkipping bad block at 0x%08x\n", erase.start); + goto nextblock; + } else if (ret < 0) { + perror("ioctl(MEMGETBADBLOCK)"); + exit(1); + } else { + printf("%x - no bad block\n", offset); + } + + if (ioctl(fd, MEMERASE, &erase) != 0) { + perror("ioctl(MEMERASE)"); + goto nextblock; + } + + //printf("%x - erased\n", offset); + + } + + //printf("NAND logical - found free block %x, mapped as %x\n", offset, ofs); + + log2phy[ofs / erasesize] = offset; + + return offset; + } else { + //fprintf(stderr, "found: %x\n", log_no); + } + } else { + perror ("ioctl(MEMREADOOB)"); + } + + nextblock: + offset += erasesize; + } + + return (unsigned long)-1; +} + +void usage(void) +{ + fprintf(stderr, "Usage:\nnandlogical READ|WRITE \n"); + exit(1); +} + +int main(int argc, char *argv[]) +{ + mtd_info_t meminfo; + char *mtddev; + int blocks; + unsigned long start_addr; + unsigned long end_addr; + unsigned long length; + unsigned long ofs; + int bs; + int ofd; + int func_write = 0; + int oobinfochanged = 0; + struct nand_oobinfo old_oobinfo; + + if (argc < 6) + usage(); + + if (strcmp(argv[2], "WRITE") == 0) + func_write = 1; + else if (strcmp(argv[2], "READ") != 0) + usage(); + + mtddev = argv[1]; + start_addr = strtoul(argv[3], NULL, 0); + length = strtoul(argv[4], NULL, 0); + + if (func_write) { + if ((ofd = open(argv[5], O_RDONLY)) == -1) { + perror("open input file"); + exit(1); + } + /* Open MTD device */ + if ((fd = open(mtddev, O_RDWR)) == -1) { + perror("open flash"); + exit (1); + } + } else { + if ((ofd = open(argv[5], O_WRONLY | O_TRUNC | O_CREAT, 0644)) == -1) { + perror ("open outfile"); + exit(1); + } + /* Open MTD device */ + if ((fd = open(mtddev, O_RDONLY)) == -1) { + perror("open flash"); + exit (1); + } + } + + /* Fill in MTD device capability structure */ + if (ioctl(fd, MEMGETINFO, &meminfo) != 0) { + perror("MEMGETINFO"); + close(fd); + exit (1); + } + + /* Make sure device page sizes are valid */ + if (!(meminfo.oobsize == 64 && meminfo.writesize == 2048) && + !(meminfo.oobsize == 16 && meminfo.writesize == 512) && + !(meminfo.oobsize == 8 && meminfo.writesize == 256)) { + fprintf(stderr, "Unknown flash (not normal NAND)\n"); + close(fd); + exit(1); + } + + //printf("erasesize %x\nwritesize %x\noobsize %x\nsize %x\n", meminfo.erasesize, meminfo.writesize, meminfo.oobsize, meminfo.size); + + blocks = NAND_LOGICAL_SIZE / meminfo.erasesize; + log2phy = (unsigned long *) malloc(blocks * sizeof(unsigned long)); + readbuf = (char *)malloc(meminfo.erasesize); + oobbuf = (char *)malloc(meminfo.writesize); + oob.ptr = oobbuf; + + scan_logical(blocks, meminfo.erasesize); + + //printf("Start: %x\nEnd: %x\n", start_addr, length); + + end_addr = start_addr + length; + bs = meminfo.writesize; + + for (ofs = start_addr; ofs < end_addr ; ofs+=bs) { + int new_logical_added = 0; + int offset = log2phy[ofs / meminfo.erasesize]; + + if ((int)offset < 0 && func_write) { + //printf("add logical block...\n"); + offset = add_logical(ofs, blocks, meminfo.erasesize, bs); + new_logical_added = 1; + } + + if ((int)offset < 0) { + printf("NAND logical - offset %08X not found\n", ofs); + goto closeall; + } + + offset += ofs % meminfo.erasesize; + + //printf(":%x\n", offset); + + if (func_write) { + int len; + memset(readbuf, 0xff, bs); + len = read(ofd, readbuf, bs); + if (len > 0) { +#if 1 + if (ofs % meminfo.erasesize == 0) { + int j; + erase_info_t erase; + erase.start = offset; + erase.length = meminfo.erasesize; + if (ioctl(fd, MEMERASE, &erase) != 0) { + printf("ioctl(MEMERASE) %x\n", offset); + //goto nextblock; + } + //printf("Erased\n"); + + for (j = 0; j < meminfo.erasesize; j+=bs) { + int log_no; + oob.start = offset + j; + oob.length = 16; + + memset(oobbuf, 0xff, 16); + nand_set_logical_no(ofs / meminfo.erasesize, oobbuf); + if (ioctl(fd, MEMWRITEOOB, &oob) != 0) { + //perror ("ioctl(MEMWRITEOOB)"); + printf("NAND logical add - MEMWRITEOOB error %x\n", offset + j); + exit(1); + } + memset(oobbuf, 0xff, 16); + if (ioctl(fd, MEMREADOOB, &oob) != 0) { + perror ("ioctl(MEMREADOOB)"); + exit(1); + } + log_no = nand_get_logical_no(oobbuf); + //printf("%x:1 write %x, read %x\n", offset + j, ofs / meminfo.erasesize, log_no); + } + + } +#endif + if (pwrite(fd, readbuf, bs, offset) != bs) { + perror ("pwrite"); + goto closeall; + } + + } else + break; + } else { + if (pread(fd, readbuf, bs, offset) != bs) { + perror("pread"); + goto closeall; + } + write(ofd, readbuf, ((end_addr - ofs) < bs)?(end_addr - ofs):bs); + } + } + + closeall: + + free(log2phy); + free(readbuf); + free(oobbuf); + close(fd); + close(ofd); + + return 0; +} diff --git a/recipes/zaurus-utils/nandlogical_1.0.0.bb b/recipes/zaurus-utils/nandlogical_1.0.0.bb new file mode 100644 index 0000000000..d567b48a3c --- /dev/null +++ b/recipes/zaurus-utils/nandlogical_1.0.0.bb @@ -0,0 +1,18 @@ +DESCRIPTION = "Nandlogical for Sharp mtd1" +LICENSE = "GPL" +DEPENDS = "mtd-utils" +COMPATIBLE_MACHINE = "(poodle|c7x0|akita|spitz|tosa)" +PR = "r2" + +SRC_URI = "file://nandlogical.c" + +S = "${WORKDIR}" + +do_compile () { + ${CC} nandlogical.c -o nandlogical ${CFLAGS} ${LDFLAGS} +} + +do_install () { + install -d ${D}${bindir}/ + install -m 0755 nandlogical ${D}${bindir}/ +} -- cgit v1.2.3 From 3c987350ba0eeeefd08e0da677bdd0f5f62130b4 Mon Sep 17 00:00:00 2001 From: Andrea Adami Date: Wed, 12 Aug 2009 01:49:04 +0200 Subject: nandlogical-klibc-static: fix FILESPATHPKG --- recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb b/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb index 8c3ca9da79..42d30c90f8 100644 --- a/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb +++ b/recipes/zaurus-utils/nandlogical-klibc-static_1.0.0.bb @@ -1,7 +1,8 @@ require nandlogical_${PV}.bb -SRC_URI_append = " file://nandlogical.c \ - file://mtd-user.h \ +FILESPATHPKG =. "nandlogical:" + +SRC_URI_append = " file://mtd-user.h \ file://mtd-abi.h \ " DEPENDS += "klibc" -- cgit v1.2.3 From dd72daef5fd9b6660e8b9093607b4aea09ec643f Mon Sep 17 00:00:00 2001 From: Graham Gower Date: Thu, 6 Aug 2009 15:26:21 +0000 Subject: dbus: fix dbus-daemon segfault on mipsel with recent toolchain dbus-daemon segfaults on mipsel when built with -fPIE/-pie, as outlined in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=532821 Removes PIE compilation from the dbus-daemon Makefile as a workaround. Signed-off-by: Graham Gower Acked-by: Khem Raj Signed-off-by: Holger Freyther --- recipes/dbus/dbus-native_1.0.3.bb | 2 +- recipes/dbus/dbus-native_1.2.1.bb | 1 + recipes/dbus/dbus.inc | 6 ++++++ recipes/dbus/dbus_1.0.3.bb | 2 +- recipes/dbus/dbus_1.2.1.bb | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/recipes/dbus/dbus-native_1.0.3.bb b/recipes/dbus/dbus-native_1.0.3.bb index 8a4c6fee7d..6ec0fc870d 100644 --- a/recipes/dbus/dbus-native_1.0.3.bb +++ b/recipes/dbus/dbus-native_1.0.3.bb @@ -1,6 +1,6 @@ require dbus.inc -PR = "r1" +PR = "${INC_PR}.0" DEFAULT_PREFERENCE = "-1" inherit native diff --git a/recipes/dbus/dbus-native_1.2.1.bb b/recipes/dbus/dbus-native_1.2.1.bb index 566c7bc32f..2b1610ee49 100644 --- a/recipes/dbus/dbus-native_1.2.1.bb +++ b/recipes/dbus/dbus-native_1.2.1.bb @@ -1,4 +1,5 @@ require dbus.inc +PR = "${INC_PR}.0" RRECOMMENDS_${PN} = "" RDEPENDS_${PN} = "" inherit native diff --git a/recipes/dbus/dbus.inc b/recipes/dbus/dbus.inc index 0302cfe776..b5eeb08629 100644 --- a/recipes/dbus/dbus.inc +++ b/recipes/dbus/dbus.inc @@ -4,6 +4,8 @@ SECTION = "base" LICENSE = "GPL" DEPENDS = "expat glib-2.0 virtual/libintl libsm libice virtual/libx11" +INC_PR = "r16" + SRC_URI = "\ http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \ file://cross.patch;patch=1 \ @@ -30,6 +32,10 @@ EXTRA_OECONF = "\ --with-dbus-default-reply-timeout=200000 \ " +do_compile_prepend_mipsel() { + sed -i -e 's/\-fPIE//' -e 's/\-pie\ \-Wl\,\-z\,relro//' bus/Makefile +} + do_install_append() { install -d ${D}${sysconfdir}/init.d install -m 0755 ${WORKDIR}/dbus-1.init ${D}${sysconfdir}/init.d/dbus-1 diff --git a/recipes/dbus/dbus_1.0.3.bb b/recipes/dbus/dbus_1.0.3.bb index 2589cfef53..7001bb90e9 100644 --- a/recipes/dbus/dbus_1.0.3.bb +++ b/recipes/dbus/dbus_1.0.3.bb @@ -1,4 +1,4 @@ require dbus.inc -PR = "r16" +PR = "${INC_PR}.0" DEFAULT_PREFERENCE = "-1" diff --git a/recipes/dbus/dbus_1.2.1.bb b/recipes/dbus/dbus_1.2.1.bb index 9d6c4c1fe2..72db1daa9c 100644 --- a/recipes/dbus/dbus_1.2.1.bb +++ b/recipes/dbus/dbus_1.2.1.bb @@ -1,3 +1,3 @@ include dbus.inc -PR = "r12" +PR = "${INC_PR}.0" -- cgit v1.2.3 From c80831a276fe0bc9f9718ac06241b26d043eef6c Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Wed, 12 Aug 2009 10:31:58 +0200 Subject: python: add missing dependencies * Added mimetools.py and rfc822.py to python-netclient * Added python-json package * Let python-email depend on python-netclient, because email/utils.py depends on base64.py NOTE: Fixes http://trac.shr-project.org/trac/ticket/549 --- contrib/python/generate-manifest-2.6.py | 13 +++-- recipes/python/python-2.6-manifest.inc | 99 +++++++++++++++++---------------- recipes/python/python.inc | 2 +- recipes/python/python_2.6.2.bb | 3 +- 4 files changed, 61 insertions(+), 56 deletions(-) diff --git a/contrib/python/generate-manifest-2.6.py b/contrib/python/generate-manifest-2.6.py index b75486f129..f549b6be9c 100755 --- a/contrib/python/generate-manifest-2.6.py +++ b/contrib/python/generate-manifest-2.6.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # generate Python Manifest for the OpenEmbedded build system -# (C) 2002-2008 Michael 'Mickey' Lauer +# (C) 2002-2009 Michael 'Mickey' Lauer # (C) 2007 Jeremy Laine # licensed under MIT, see COPYING.MIT @@ -12,7 +12,7 @@ import time VERSION = "2.6.1" __author__ = "Michael 'Mickey' Lauer " -__version__ = "20081214" +__version__ = "20090812" class MakefileMaker: @@ -23,7 +23,7 @@ class MakefileMaker: self.output = outfile self.out( """ # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. -# Generator: '%s' Version %s (C) 2002-2008 Michael 'Mickey' Lauer +# Generator: '%s' Version %s (C) 2002-2009 Michael 'Mickey' Lauer # Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy """ % ( sys.argv[0], __version__ ) ) @@ -223,7 +223,7 @@ if __name__ == "__main__": m.addPackage( "python-doctest", "Python framework for running examples in docstrings.", "python-core python-lang python-io python-re python-unittest python-debugger python-difflib", "doctest.*" ) - m.addPackage( "python-email", "Python Email Support", "python-core python-io python-re python-mime python-audio python-image", + m.addPackage( "python-email", "Python Email Support", "python-core python-io python-re python-mime python-audio python-image python-netclient", "email" ) # package m.addPackage( "python-fcntl", "Python's fcntl Interface", "python-core", @@ -245,6 +245,9 @@ if __name__ == "__main__": "lib-dynload/_socket.so lib-dynload/_ssl.so lib-dynload/select.so lib-dynload/termios.so lib-dynload/cStringIO.so " + "pipes.* socket.* tempfile.* StringIO.* " ) + m.addPackage( "python-json", "Python JSON Support", "python-core python-math python-re", + "json" ) # package + m.addPackage( "python-lang", "Python Low-Level Language Support", "python-core", "lib-dynload/_bisect.so lib-dynload/_collections.so lib-dynload/_heapq.so lib-dynload/_weakref.so lib-dynload/_functools.so " + "lib-dynload/array.so lib-dynload/itertools.so lib-dynload/operator.so lib-dynload/parser.so " + @@ -271,7 +274,7 @@ if __name__ == "__main__": m.addPackage( "python-netclient", "Python Internet Protocol Clients", "python-core python-crypt python-datetime python-io python-lang python-logging python-mime", "*Cookie*.* " + - "base64.* cookielib.* ftplib.* gopherlib.* hmac.* httplib.* mimetypes.* nntplib.* poplib.* smtplib.* telnetlib.* urllib.* urllib2.* urlparse.* uuid.*" ) + "base64.* cookielib.* ftplib.* gopherlib.* hmac.* httplib.* mimetypes.* nntplib.* poplib.* smtplib.* telnetlib.* urllib.* urllib2.* urlparse.* uuid.* rfc822.* mimetools.*" ) m.addPackage( "python-netserver", "Python Internet Protocol Servers", "python-core python-netclient", "cgi.* BaseHTTPServer.* SimpleHTTPServer.* SocketServer.*" ) diff --git a/recipes/python/python-2.6-manifest.inc b/recipes/python/python-2.6-manifest.inc index ad1d5f6982..3977e71953 100644 --- a/recipes/python/python-2.6-manifest.inc +++ b/recipes/python/python-2.6-manifest.inc @@ -1,16 +1,17 @@ + # WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file. -# Generator: './generate-manifest-2.6.py' Version 20090425 (C) 2002-2009 Michael 'Mickey' Lauer +# Generator: '/local/pkg/oe/openembedded/contrib/python/generate-manifest-2.6.py' Version 20090812 (C) 2002-2009 Michael 'Mickey' Lauer # Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy -PROVIDES+="python-codecs python-threading python-distutils python-textutils python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-dev python-email python-image python-tests python-core-dbg python-resource python-difflib python-math python-syslog python-hotshot python-unixadmin python-doctest python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-sqlite3-tests python-logging python-mailbox python-xml python-mime python-sqlite3 python-idle python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-bzip2 python-lang python-audio " +PROVIDES+="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-core-dbg python-resource python-json python-devel python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio " -PACKAGES="python-codecs python-threading python-distutils python-textutils python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-dev python-email python-image python-tests python-core-dbg python-resource python-difflib python-math python-syslog python-hotshot python-unixadmin python-doctest python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-sqlite3-tests python-logging python-mailbox python-xml python-mime python-sqlite3 python-idle python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-bzip2 python-lang python-audio python-modules" +PACKAGES="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-core-dbg python-resource python-json python-devel python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio python-modules" -DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support" -RDEPENDS_python-codecs="python-core python-lang" -FILES_python-codecs="${libdir}/python2.6/codecs.* ${libdir}/python2.6/encodings ${libdir}/python2.6/gettext.* ${libdir}/python2.6/locale.* ${libdir}/python2.6/lib-dynload/_locale.so ${libdir}/python2.6/lib-dynload/unicodedata.so ${libdir}/python2.6/stringprep.* ${libdir}/python2.6/xdrlib.* " +DESCRIPTION_python-profile="Python Basic Profiling Support" +RDEPENDS_python-profile="python-core python-textutils" +FILES_python-profile="${libdir}/python2.6/profile.* ${libdir}/python2.6/pstats.* ${libdir}/python2.6/cProfile.* ${libdir}/python2.6/lib-dynload/_lsprof.so " DESCRIPTION_python-threading="Python Threading & Synchronization Support" RDEPENDS_python-threading="python-core python-lang" @@ -20,17 +21,13 @@ DESCRIPTION_python-distutils="Python Distribution Utilities" RDEPENDS_python-distutils="python-core" FILES_python-distutils="${libdir}/python2.6/config ${libdir}/python2.6/distutils " -DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support" -RDEPENDS_python-textutils="python-core python-io python-re python-stringold" -FILES_python-textutils="${libdir}/python2.6/lib-dynload/_csv.so ${libdir}/python2.6/csv.* ${libdir}/python2.6/optparse.* ${libdir}/python2.6/textwrap.* " - -DESCRIPTION_python-stringold="Python String APIs [deprecated]" -RDEPENDS_python-stringold="python-core python-re" -FILES_python-stringold="${libdir}/python2.6/lib-dynload/strop.so ${libdir}/python2.6/string.* " +DESCRIPTION_python-doctest="Python framework for running examples in docstrings." +RDEPENDS_python-doctest="python-core python-lang python-io python-re python-unittest python-debugger python-difflib" +FILES_python-doctest="${libdir}/python2.6/doctest.* " -DESCRIPTION_python-curses="Python Curses Support" -RDEPENDS_python-curses="python-core" -FILES_python-curses="${libdir}/python2.6/curses ${libdir}/python2.6/lib-dynload/_curses.so ${libdir}/python2.6/lib-dynload/_curses_panel.so " +DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support" +RDEPENDS_python-codecs="python-core python-lang" +FILES_python-codecs="${libdir}/python2.6/codecs.* ${libdir}/python2.6/encodings ${libdir}/python2.6/gettext.* ${libdir}/python2.6/locale.* ${libdir}/python2.6/lib-dynload/_locale.so ${libdir}/python2.6/lib-dynload/unicodedata.so ${libdir}/python2.6/stringprep.* ${libdir}/python2.6/xdrlib.* " DESCRIPTION_python-ctypes="Python C Types Support" RDEPENDS_python-ctypes="python-core" @@ -40,6 +37,10 @@ DESCRIPTION_python-pickle="Python Persistence Support" RDEPENDS_python-pickle="python-core python-codecs python-io python-re" FILES_python-pickle="${libdir}/python2.6/pickle.* ${libdir}/python2.6/shelve.* ${libdir}/python2.6/lib-dynload/cPickle.so " +DESCRIPTION_python-bzip2="Python bzip2 support" +RDEPENDS_python-bzip2="python-core" +FILES_python-bzip2="${libdir}/python2.6/lib-dynload/bz2.so " + DESCRIPTION_python-datetime="Python Calendar and Time support" RDEPENDS_python-datetime="python-core python-codecs" FILES_python-datetime="${libdir}/python2.6/_strptime.* ${libdir}/python2.6/calendar.* ${libdir}/python2.6/lib-dynload/datetime.so " @@ -52,6 +53,10 @@ DESCRIPTION_python-io="Python Low-Level I/O" RDEPENDS_python-io="python-core python-math" FILES_python-io="${libdir}/python2.6/lib-dynload/_socket.so ${libdir}/python2.6/lib-dynload/_ssl.so ${libdir}/python2.6/lib-dynload/select.so ${libdir}/python2.6/lib-dynload/termios.so ${libdir}/python2.6/lib-dynload/cStringIO.so ${libdir}/python2.6/pipes.* ${libdir}/python2.6/socket.* ${libdir}/python2.6/tempfile.* ${libdir}/python2.6/StringIO.* " +DESCRIPTION_python-compiler="Python Compiler Support" +RDEPENDS_python-compiler="python-core" +FILES_python-compiler="${libdir}/python2.6/compiler " + DESCRIPTION_python-compression="Python High Level Compression Support" RDEPENDS_python-compression="python-core python-zlib" FILES_python-compression="${libdir}/python2.6/gzip.* ${libdir}/python2.6/zipfile.* ${libdir}/python2.6/tarfile.* " @@ -60,10 +65,6 @@ DESCRIPTION_python-re="Python Regular Expression APIs" RDEPENDS_python-re="python-core" FILES_python-re="${libdir}/python2.6/re.* ${libdir}/python2.6/sre.* ${libdir}/python2.6/sre_compile.* ${libdir}/python2.6/sre_constants* ${libdir}/python2.6/sre_parse.* " -DESCRIPTION_python-profile="Python Basic Profiling Support" -RDEPENDS_python-profile="python-core python-textutils" -FILES_python-profile="${libdir}/python2.6/profile.* ${libdir}/python2.6/pstats.* ${libdir}/python2.6/cProfile.* ${libdir}/python2.6/lib-dynload/_lsprof.so " - DESCRIPTION_python-xmlrpc="Python XMLRPC Support" RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang" FILES_python-xmlrpc="${libdir}/python2.6/xmlrpclib.* ${libdir}/python2.6/SimpleXMLRPCServer.* " @@ -72,13 +73,9 @@ DESCRIPTION_python-terminal="Python Terminal Controlling Support" RDEPENDS_python-terminal="python-core python-io" FILES_python-terminal="${libdir}/python2.6/pty.* ${libdir}/python2.6/tty.* " -DESCRIPTION_python-dev="Python Development Package" -RDEPENDS_python-dev="python-core" -FILES_python-dev="${includedir} ${libdir}/python2.6/config " - DESCRIPTION_python-email="Python Email Support" -RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image" -FILES_python-email="${libdir}/python2.6/imaplib.* ${libdir}/python2.6/email " +RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image python-netclient" +FILES_python-email="${libdir}/python2.6/email " DESCRIPTION_python-image="Python Graphical Image Handling" RDEPENDS_python-image="python-core" @@ -96,6 +93,14 @@ DESCRIPTION_python-resource="Python Resource Control Interface" RDEPENDS_python-resource="python-core" FILES_python-resource="${libdir}/python2.6/lib-dynload/resource.so " +DESCRIPTION_python-json="Python JSON Support" +RDEPENDS_python-json="python-core python-math python-re" +FILES_python-json="${libdir}/python2.6/json " + +DESCRIPTION_python-devel="Python Development Package" +RDEPENDS_python-devel="python-core" +FILES_python-devel="${includedir} ${libdir}/python2.6/config " + DESCRIPTION_python-difflib="Python helpers for computing deltas between objects." RDEPENDS_python-difflib="python-lang python-re" FILES_python-difflib="${libdir}/python2.6/difflib.* " @@ -104,7 +109,7 @@ DESCRIPTION_python-math="Python Math Support" RDEPENDS_python-math="python-core" FILES_python-math="${libdir}/python2.6/lib-dynload/cmath.so ${libdir}/python2.6/lib-dynload/math.so ${libdir}/python2.6/lib-dynload/_random.so ${libdir}/python2.6/random.* ${libdir}/python2.6/sets.* " -DESCRIPTION_python-syslog="Python Syslog Interface" +DESCRIPTION_python-syslog="Python's Syslog Interface" RDEPENDS_python-syslog="python-core" FILES_python-syslog="${libdir}/python2.6/lib-dynload/syslog.so " @@ -116,9 +121,9 @@ DESCRIPTION_python-unixadmin="Python Unix Administration Support" RDEPENDS_python-unixadmin="python-core" FILES_python-unixadmin="${libdir}/python2.6/lib-dynload/nis.so ${libdir}/python2.6/lib-dynload/grp.so ${libdir}/python2.6/lib-dynload/pwd.so ${libdir}/python2.6/getpass.* " -DESCRIPTION_python-doctest="Python framework for running examples in docstrings." -RDEPENDS_python-doctest="python-core python-lang python-io python-re python-unittest python-debugger python-difflib" -FILES_python-doctest="${libdir}/python2.6/doctest.* " +DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support" +RDEPENDS_python-textutils="python-core python-io python-re python-stringold" +FILES_python-textutils="${libdir}/python2.6/lib-dynload/_csv.so ${libdir}/python2.6/csv.* ${libdir}/python2.6/optparse.* ${libdir}/python2.6/textwrap.* " DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings" RDEPENDS_python-tkinter="python-core" @@ -138,7 +143,7 @@ FILES_python-fcntl="${libdir}/python2.6/lib-dynload/fcntl.so " DESCRIPTION_python-netclient="Python Internet Protocol Clients" RDEPENDS_python-netclient="python-core python-crypt python-datetime python-io python-lang python-logging python-mime" -FILES_python-netclient="${libdir}/python2.6/*Cookie*.* ${libdir}/python2.6/base64.* ${libdir}/python2.6/cookielib.* ${libdir}/python2.6/ftplib.* ${libdir}/python2.6/gopherlib.* ${libdir}/python2.6/hmac.* ${libdir}/python2.6/httplib.* ${libdir}/python2.6/mimetypes.* ${libdir}/python2.6/nntplib.* ${libdir}/python2.6/poplib.* ${libdir}/python2.6/smtplib.* ${libdir}/python2.6/telnetlib.* ${libdir}/python2.6/urllib.* ${libdir}/python2.6/urllib2.* ${libdir}/python2.6/urlparse.* ${libdir}/python2.6/uuid.* " +FILES_python-netclient="${libdir}/python2.6/*Cookie*.* ${libdir}/python2.6/base64.* ${libdir}/python2.6/cookielib.* ${libdir}/python2.6/ftplib.* ${libdir}/python2.6/gopherlib.* ${libdir}/python2.6/hmac.* ${libdir}/python2.6/httplib.* ${libdir}/python2.6/mimetypes.* ${libdir}/python2.6/nntplib.* ${libdir}/python2.6/poplib.* ${libdir}/python2.6/smtplib.* ${libdir}/python2.6/telnetlib.* ${libdir}/python2.6/urllib.* ${libdir}/python2.6/urllib2.* ${libdir}/python2.6/urlparse.* ${libdir}/python2.6/uuid.* ${libdir}/python2.6/rfc822.* ${libdir}/python2.6/mimetools.* " DESCRIPTION_python-pprint="Python Pretty-Print Support" RDEPENDS_python-pprint="python-core" @@ -148,9 +153,9 @@ DESCRIPTION_python-netserver="Python Internet Protocol Servers" RDEPENDS_python-netserver="python-core python-netclient" FILES_python-netserver="${libdir}/python2.6/cgi.* ${libdir}/python2.6/BaseHTTPServer.* ${libdir}/python2.6/SimpleHTTPServer.* ${libdir}/python2.6/SocketServer.* " -DESCRIPTION_python-compiler="Python Compiler Support" -RDEPENDS_python-compiler="python-core" -FILES_python-compiler="${libdir}/python2.6/compiler " +DESCRIPTION_python-curses="Python Curses Support" +RDEPENDS_python-curses="python-core" +FILES_python-curses="${libdir}/python2.6/curses ${libdir}/python2.6/lib-dynload/_curses.so ${libdir}/python2.6/lib-dynload/_curses_panel.so " DESCRIPTION_python-smtpd="Python Simple Mail Transport Daemon" RDEPENDS_python-smtpd="python-core python-netserver python-email python-mime" @@ -172,10 +177,6 @@ DESCRIPTION_python-pydoc="Python Interactive Help Support" RDEPENDS_python-pydoc="python-core python-lang python-stringold python-re" FILES_python-pydoc="${bindir}/pydoc ${libdir}/python2.6/pydoc.* " -DESCRIPTION_python-sqlite3-tests="Python Sqlite3 Database Support Tests" -RDEPENDS_python-sqlite3-tests="python-core python-sqlite3" -FILES_python-sqlite3-tests="${libdir}/python2.6/sqlite3/test " - DESCRIPTION_python-logging="Python Logging Support" RDEPENDS_python-logging="python-core python-io python-lang python-pickle python-stringold" FILES_python-logging="${libdir}/python2.6/logging " @@ -194,19 +195,19 @@ FILES_python-mime="${libdir}/python2.6/mimetools.* ${libdir}/python2.6/uu.* ${li DESCRIPTION_python-sqlite3="Python Sqlite3 Database Support" RDEPENDS_python-sqlite3="python-core python-datetime python-lang python-crypt python-io python-threading python-zlib" -FILES_python-sqlite3="${libdir}/python2.6/lib-dynload/_sqlite3.so ${libdir}/python2.6/sqlite3/dbapi2.* ${libdir}/python2.6/sqlite3/__init__.* ${libdir}/python2.6/sqlite3/dump.* " +FILES_python-sqlite3="${libdir}/python2.6/lib-dynload/_sqlite3.so ${libdir}/python2.6/sqlite3/dbapi2.* ${libdir}/python2.6/sqlite3/__init__.* " -DESCRIPTION_python-idle="Python Integrated Development Environment" -RDEPENDS_python-idle="python-core python-tkinter" -FILES_python-idle="${bindir}/idle ${libdir}/python2.6/idlelib " +DESCRIPTION_python-sqlite3-tests="Python Sqlite3 Database Support Tests" +RDEPENDS_python-sqlite3-tests="python-core python-sqlite3" +FILES_python-sqlite3-tests="${libdir}/python2.6/sqlite3/test " DESCRIPTION_python-unittest="Python Unit Testing Framework" RDEPENDS_python-unittest="python-core python-stringold python-lang" FILES_python-unittest="${libdir}/python2.6/unittest.* " -DESCRIPTION_python-multiprocessing="Python Multiprocessing Support" -RDEPENDS_python-multiprocessing="python-core python-io python-lang" -FILES_python-multiprocessing="${libdir}/python2.6/lib-dynload/_multiprocessing.so ${libdir}/python2.6/multiprocessing " +DESCRIPTION_python-stringold="Python String APIs [deprecated]" +RDEPENDS_python-stringold="python-core python-re" +FILES_python-stringold="${libdir}/python2.6/lib-dynload/strop.so ${libdir}/python2.6/string.* " DESCRIPTION_python-robotparser="Python robots.txt parser" RDEPENDS_python-robotparser="python-core python-netclient" @@ -248,9 +249,9 @@ DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support" RDEPENDS_python-crypt="python-core" FILES_python-crypt="${libdir}/python2.6/hashlib.* ${libdir}/python2.6/md5.* ${libdir}/python2.6/sha.* ${libdir}/python2.6/lib-dynload/crypt.so ${libdir}/python2.6/lib-dynload/_hashlib.so ${libdir}/python2.6/lib-dynload/_sha256.so ${libdir}/python2.6/lib-dynload/_sha512.so " -DESCRIPTION_python-bzip2="Python bzip2 support" -RDEPENDS_python-bzip2="python-core" -FILES_python-bzip2="${libdir}/python2.6/lib-dynload/bz2.so " +DESCRIPTION_python-idle="Python Integrated Development Environment" +RDEPENDS_python-idle="python-core python-tkinter" +FILES_python-idle="${bindir}/idle ${libdir}/python2.6/idlelib " DESCRIPTION_python-lang="Python Low-Level Language Support" RDEPENDS_python-lang="python-core" @@ -261,7 +262,7 @@ RDEPENDS_python-audio="python-core" FILES_python-audio="${libdir}/python2.6/wave.* ${libdir}/python2.6/chunk.* ${libdir}/python2.6/sndhdr.* ${libdir}/python2.6/lib-dynload/ossaudiodev.so ${libdir}/python2.6/lib-dynload/audioop.so " DESCRIPTION_python-modules="All Python modules" -RDEPENDS_python-modules="python-codecs python-threading python-distutils python-textutils python-stringold python-curses python-ctypes python-pickle python-datetime python-core python-io python-compression python-re python-profile python-xmlrpc python-terminal python-dev python-email python-image python-tests python-resource python-difflib python-math python-syslog python-hotshot python-unixadmin python-doctest python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-compiler python-smtpd python-html python-readline python-subprocess python-pydoc python-sqlite3-tests python-logging python-mailbox python-xml python-mime python-sqlite3 python-idle python-unittest python-multiprocessing python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-bzip2 python-lang python-audio " +RDEPENDS_python-modules="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-bzip2 python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-resource python-json python-devel python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-elementtree python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-stringold python-robotparser python-compile python-debugger python-pkgutil python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio " ALLOW_EMPTY_python-modules = "1" diff --git a/recipes/python/python.inc b/recipes/python/python.inc index 598d97cfd3..93c9569a26 100644 --- a/recipes/python/python.inc +++ b/recipes/python/python.inc @@ -4,7 +4,7 @@ LICENSE = "PSF" SECTION = "devel/python" PRIORITY = "optional" # bump this on every change in contrib/python/generate-manifest-2.6.py -INC_PR = "ml4" +INC_PR = "ml5" DEFAULT_PREFERENCE = "-26" diff --git a/recipes/python/python_2.6.2.bb b/recipes/python/python_2.6.2.bb index d70a6e9e06..941f039af7 100644 --- a/recipes/python/python_2.6.2.bb +++ b/recipes/python/python_2.6.2.bb @@ -1,7 +1,8 @@ require python.inc DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl tk zlib" DEPENDS_sharprom = "python-native db readline zlib gdbm openssl" -PR = "${INC_PR}.2" +# set to .0 on every increase of INC_PR +PR = "${INC_PR}.0" SRC_URI = "\ http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.bz2 \ -- cgit v1.2.3 From 5814ae4cdecac7099adcc29a9c1b92b0caabe1fc Mon Sep 17 00:00:00 2001 From: Dirk Opfer Date: Tue, 11 Aug 2009 11:54:41 +0200 Subject: gcc: add new gcc version 4.3.4 Tested on a armv5te platform using thumb instruction set --- recipes/gcc/gcc-4.3.4.inc | 100 + recipes/gcc/gcc-4.3.4/100-uclibc-conf.patch | 37 + .../gcc/gcc-4.3.4/103-uclibc-conf-noupstream.patch | 11 + recipes/gcc/gcc-4.3.4/110-arm-eabi.patch | 27 + recipes/gcc/gcc-4.3.4/200-uclibc-locale.patch | 2833 + .../gcc/gcc-4.3.4/203-uclibc-locale-no__x.patch | 233 + .../gcc-4.3.4/204-uclibc-locale-wchar_fix.patch | 48 + .../gcc/gcc-4.3.4/205-uclibc-locale-update.patch | 519 + recipes/gcc/gcc-4.3.4/300-libstdc++-pic.patch | 46 + recipes/gcc/gcc-4.3.4/301-missing-execinfo_h.patch | 11 + recipes/gcc/gcc-4.3.4/302-c99-snprintf.patch | 13 + .../gcc/gcc-4.3.4/303-c99-complex-ugly-hack.patch | 12 + recipes/gcc/gcc-4.3.4/304-index_macro.patch | 24 + .../gcc-4.3.4/305-libmudflap-susv3-legacy.patch | 49 + .../gcc/gcc-4.3.4/306-libstdc++-namespace.patch | 36 + recipes/gcc/gcc-4.3.4/307-locale_facets.patch | 19 + .../gcc-4.3.4/402-libbackend_dep_gcov-iov.h.patch | 13 + .../gcc/gcc-4.3.4/602-sdk-libstdc++-includes.patch | 20 + recipes/gcc/gcc-4.3.4/740-sh-pr24836.patch | 25 + recipes/gcc/gcc-4.3.4/800-arm-bigendian.patch | 34 + .../gcc/gcc-4.3.4/904-flatten-switch-stmt-00.patch | 153 + recipes/gcc/gcc-4.3.4/arm-nolibfloat.patch | 24 + recipes/gcc/gcc-4.3.4/arm-softfloat.patch | 16 + recipes/gcc/gcc-4.3.4/arm-thumb-cache.patch | 29 + recipes/gcc/gcc-4.3.4/arm-thumb.patch | 43 + recipes/gcc/gcc-4.3.4/cache-amnesia.patch | 31 + recipes/gcc/gcc-4.3.4/debian/ada-acats.dpatch | 78 + recipes/gcc/gcc-4.3.4/debian/ada-alpha.dpatch | 88 + .../debian/ada-default-project-path.dpatch | 147 + .../gcc/gcc-4.3.4/debian/ada-driver-check.dpatch | 50 + recipes/gcc/gcc-4.3.4/debian/ada-driver.dpatch | 42 + recipes/gcc/gcc-4.3.4/debian/ada-gcc-name.dpatch | 87 + recipes/gcc/gcc-4.3.4/debian/ada-gnatvsn.dpatch | 46 + recipes/gcc/gcc-4.3.4/debian/ada-libgnatprj.dpatch | 4809 + recipes/gcc/gcc-4.3.4/debian/ada-libgnatvsn.dpatch | 1598 + recipes/gcc/gcc-4.3.4/debian/ada-link-lib.dpatch | 1932 + recipes/gcc/gcc-4.3.4/debian/ada-sjlj.dpatch | 1307 + .../debian/ada-symbolic-tracebacks.dpatch | 346 + recipes/gcc/gcc-4.3.4/debian/alpha-ieee-doc.dpatch | 44 + recipes/gcc/gcc-4.3.4/debian/alpha-ieee.dpatch | 57 + .../gcc-4.3.4/debian/alpha-no-ev4-directive.dpatch | 49 + .../debian/arm-unbreak-eabi-armv4t.dpatch | 36 + .../gcc/gcc-4.3.4/debian/boehm-gc-getnprocs.dpatch | 39 + .../gcc/gcc-4.3.4/debian/boehm-gc-nocheck.dpatch | 37 + recipes/gcc/gcc-4.3.4/debian/config-ml.dpatch | 94 + .../gcc/gcc-4.3.4/debian/cpu-default-i486.dpatch | 37 + recipes/gcc/gcc-4.3.4/debian/cross-fixes.dpatch | 129 + recipes/gcc/gcc-4.3.4/debian/cross-include.dpatch | 39 + recipes/gcc/gcc-4.3.4/debian/deb-protoize.dpatch | 47 + recipes/gcc/gcc-4.3.4/debian/gcc-d-lang.dpatch | 246 + .../gcc-4.3.4/debian/gcc-driver-extra-langs.dpatch | 40 + .../gcc-4.3.4/debian/gcc-hash-style-both.dpatch | 163 + .../gcc/gcc-4.3.4/debian/gcc-hash-style-gnu.dpatch | 163 + .../gcc/gcc-4.3.4/debian/gcc-i386-emit-cld.dpatch | 179 + recipes/gcc/gcc-4.3.4/debian/gcc-ice-apport.dpatch | 44 + recipes/gcc/gcc-4.3.4/debian/gcc-ice-hack.dpatch | 331 + .../gcc/gcc-4.3.4/debian/gcc-multilib64dir.dpatch | 62 + .../gcc/gcc-4.3.4/debian/gcc-pascal-lang.dpatch | 726 + .../gcc/gcc-4.3.4/debian/gcc-ssp-default.dpatch | 209 + recipes/gcc/gcc-4.3.4/debian/gcc-textdomain.dpatch | 103 + .../gcc-4.3.4/debian/gdc-fix-build-kbsd-gnu.dpatch | 87 + recipes/gcc/gcc-4.3.4/debian/gpc-4.1.dpatch | 28 + recipes/gcc/gcc-4.3.4/debian/gpc-gcc-4.x.dpatch | 32 + recipes/gcc/gcc-4.3.4/debian/gpc-names.dpatch | 117 + recipes/gcc/gcc-4.3.4/debian/hurd-changes.dpatch | 72 + .../gcc/gcc-4.3.4/debian/ignore-comp-fail.dpatch | 38 + recipes/gcc/gcc-4.3.4/debian/kbsd-gnu-ada.dpatch | 231 + recipes/gcc/gcc-4.3.4/debian/kbsd-gnu.dpatch | 99 + .../gcc/gcc-4.3.4/debian/libffi-configure.dpatch | 45 + .../gcc-4.3.4/debian/libjava-armel-ldflags.dpatch | 38 + .../gcc/gcc-4.3.4/debian/libjava-debuginfo.dpatch | 43 + .../gcc-4.3.4/debian/libjava-disable-static.dpatch | 45 + recipes/gcc/gcc-4.3.4/debian/libjava-jar.dpatch | 227 + .../gcc/gcc-4.3.4/debian/libjava-jnipath.dpatch | 94 + .../debian/libjava-loading-constraints.dpatch | 431 + .../gcc-4.3.4/debian/libjava-nobiarch-check.dpatch | 44 + .../gcc-4.3.4/debian/libjava-realloc-leak.dpatch | 79 + recipes/gcc/gcc-4.3.4/debian/libjava-rpath.dpatch | 49 + recipes/gcc/gcc-4.3.4/debian/libjava-sjlj.dpatch | 65 + recipes/gcc/gcc-4.3.4/debian/libjava-soname.dpatch | 34 + .../gcc/gcc-4.3.4/debian/libjava-stacktrace.dpatch | 70 + recipes/gcc/gcc-4.3.4/debian/libjava-subdir.dpatch | 246 + .../gcc-4.3.4/debian/libjava-xulrunner1.9.dpatch | 41 + .../gcc/gcc-4.3.4/debian/libobjc-gc-link.dpatch | 73 + recipes/gcc/gcc-4.3.4/debian/libssp-gnu.dpatch | 52 + .../gcc/gcc-4.3.4/debian/libstdc++-doclink.dpatch | 51 + recipes/gcc/gcc-4.3.4/debian/libstdc++-pic.dpatch | 71 + .../gcc-4.3.4/debian/libstdc++-symbols-hppa.dpatch | 369 + recipes/gcc/gcc-4.3.4/debian/link-libs.dpatch | 157 + recipes/gcc/gcc-4.3.4/debian/mips-triarch.dpatch | 61 + .../gcc/gcc-4.3.4/debian/mudflap-nocheck.dpatch | 36 + .../gcc/gcc-4.3.4/debian/multiarch-include.dpatch | 138 + recipes/gcc/gcc-4.3.4/debian/multiarch-lib.dpatch | 52 + recipes/gcc/gcc-4.3.4/debian/note-gnu-stack.dpatch | 316 + recipes/gcc/gcc-4.3.4/debian/powerpc-biarch.dpatch | 47 + recipes/gcc/gcc-4.3.4/debian/ppc64-ada.dpatch | 257 + recipes/gcc/gcc-4.3.4/debian/pr24170.dpatch | 88 + recipes/gcc/gcc-4.3.4/debian/pr27880.dpatch | 90 + recipes/gcc/gcc-4.3.4/debian/pr28102.dpatch | 45 + recipes/gcc/gcc-4.3.4/debian/pr28322.dpatch | 151 + recipes/gcc/gcc-4.3.4/debian/pr30961.dpatch | 179 + recipes/gcc/gcc-4.3.4/debian/pr33148.dpatch | 94 + recipes/gcc/gcc-4.3.4/debian/pr34571.dpatch | 63 + .../gcc/gcc-4.3.4/debian/rename-info-files.dpatch | 710 + recipes/gcc/gcc-4.3.4/debian/s390-biarch.dpatch | 36 + recipes/gcc/gcc-4.3.4/debian/sparc-biarch.dpatch | 80 + .../gcc/gcc-4.3.4/debian/svn-class-updates.dpatch | 55 + .../gcc/gcc-4.3.4/debian/svn-doc-updates.dpatch | 79 + .../gcc/gcc-4.3.4/debian/svn-gdc-updates.dpatch | 137 + recipes/gcc/gcc-4.3.4/debian/svn-updates.dpatch | 569584 ++++++++++++++++++ recipes/gcc/gcc-4.3.4/debian/template.dpatch | 33 + recipes/gcc/gcc-4.3.4/ep93xx/README | 11 + recipes/gcc/gcc-4.3.4/ep93xx/URL | 1 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-20000320.patch | 13 + .../arm-crunch-arm_dbx_register_number.patch | 15 + .../gcc-4.3.4/ep93xx/arm-crunch-ccmav-mode.patch | 734 + .../ep93xx/arm-crunch-cfcpy-with-cfsh64.patch | 27 + .../ep93xx/arm-crunch-cftruncd32-attr.patch | 12 + .../ep93xx/arm-crunch-cirrus-di-flag.patch | 248 + .../ep93xx/arm-crunch-disable-cmpdi.patch | 29 + .../gcc-4.3.4/ep93xx/arm-crunch-drop-thumb2.patch | 98 + ...eabi-ieee754-endian-littleword-littlebyte.patch | 15 + .../arm-crunch-eabi-mvf0-scratch-ieee754.patch | 89 + .../arm-crunch-fix-64bit-const-offsets.patch | 25 + .../ep93xx/arm-crunch-fix-cirrus-reorg5.patch | 313 + .../ep93xx/arm-crunch-floatsi-no-scratch.patch | 35 + .../gcc-4.3.4/ep93xx/arm-crunch-fp_consts.patch | 15 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-mieee.patch | 267 + .../ep93xx/arm-crunch-movsf-movdf-Uy.patch | 65 + .../gcc-4.3.4/ep93xx/arm-crunch-neg-enable.patch | 31 + .../gcc-4.3.4/ep93xx/arm-crunch-neg-protect.patch | 33 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-pipeline.patch | 461 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-readme.patch | 107 + .../ep93xx/arm-crunch-repair-truncxfsi.patch | 29 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-saveregs.patch | 88 + .../gcc/gcc-4.3.4/ep93xx/arm-crunch-scratch.patch | 27 + .../gcc-4.3.4/ep93xx/arm-prologue_use-length.patch | 10 + recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch | 33 + recipes/gcc/gcc-4.3.4/ep93xx/series | 25 + .../fedora/gcc43-c++-builtin-redecl.patch | 102 + .../gcc/gcc-4.3.4/fedora/gcc43-cpp-pragma.patch | 284 + .../gcc/gcc-4.3.4/fedora/gcc43-i386-libgomp.patch | 61 + .../gcc-4.3.4/fedora/gcc43-ia64-libunwind.patch | 538 + .../fedora/gcc43-java-debug-iface-type.patch | 17 + .../gcc/gcc-4.3.4/fedora/gcc43-java-nomulti.patch | 44 + .../gcc-4.3.4/fedora/gcc43-libgomp-speedup.patch | 2797 + .../gcc/gcc-4.3.4/fedora/gcc43-ppc32-retaddr.patch | 86 + recipes/gcc/gcc-4.3.4/fedora/gcc43-pr27898.patch | 16 + recipes/gcc/gcc-4.3.4/fedora/gcc43-pr32139.patch | 19 + recipes/gcc/gcc-4.3.4/fedora/gcc43-pr33763.patch | 153 + recipes/gcc/gcc-4.3.4/fedora/gcc43-pr35440.patch | 56 + recipes/gcc/gcc-4.3.4/fedora/gcc43-pr35751.patch | 114 + recipes/gcc/gcc-4.3.4/fedora/gcc43-rh251682.patch | 89 + recipes/gcc/gcc-4.3.4/fedora/gcc43-rh330771.patch | 34 + recipes/gcc/gcc-4.3.4/fedora/gcc43-rh341221.patch | 28 + .../gcc/gcc-4.3.4/fortran-cross-compile-hack.patch | 30 + recipes/gcc/gcc-4.3.4/fortran-static-linking.patch | 48 + recipes/gcc/gcc-4.3.4/gcc-4.0.2-e300c2c3.patch | 319 + .../gcc-4.3.4/gcc-4.2.3-linux-multilib-fix.patch | 23 + .../gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch | 31 + .../gcc-4.3.4-SYSROOT_CFLAGS_FOR_TARGET.patch | 6620 + .../gcc/gcc-4.3.4/gcc-arm-frename-registers.patch | 15 + recipes/gcc/gcc-4.3.4/gcc-flags-for-build.patch | 279 + .../gcc-release-branch/PR-36500-fix-neon.patch | 265 + recipes/gcc/gcc-4.3.4/gcc41-configure.in.patch | 22 + recipes/gcc/gcc-4.3.4/gcc43-build-id.patch | 74 + .../gcc/gcc-4.3.4/gcc43-ppc64-ia64-GNU-stack.patch | 86 + recipes/gcc/gcc-4.3.4/pr34130.patch | 16 + recipes/gcc/gcc-4.3.4/sdk-libstdc++-includes.patch | 22 + .../gcc/gcc-4.3.4/sh3-installfix-fixheaders.patch | 11 + recipes/gcc/gcc-4.3.4/sh_unwind.patch | 18 + recipes/gcc/gcc-4.3.4/unbreak-armv4t.patch | 12 + recipes/gcc/gcc-4.3.4/zecke-no-host-includes.patch | 31 + recipes/gcc/gcc-4.3.4/zecke-xgcc-cpp.patch | 28 + recipes/gcc/gcc-cross-initial_4.3.4.bb | 9 + recipes/gcc/gcc-cross-intermediate_4.3.4.bb | 8 + recipes/gcc/gcc-cross-sdk_4.3.4.bb | 14 + recipes/gcc/gcc-cross_4.3.4.bb | 11 + recipes/gcc/gcc_4.3.4.bb | 13 + 179 files changed, 608468 insertions(+) create mode 100644 recipes/gcc/gcc-4.3.4.inc create mode 100644 recipes/gcc/gcc-4.3.4/100-uclibc-conf.patch create mode 100644 recipes/gcc/gcc-4.3.4/103-uclibc-conf-noupstream.patch create mode 100644 recipes/gcc/gcc-4.3.4/110-arm-eabi.patch create mode 100644 recipes/gcc/gcc-4.3.4/200-uclibc-locale.patch create mode 100644 recipes/gcc/gcc-4.3.4/203-uclibc-locale-no__x.patch create mode 100644 recipes/gcc/gcc-4.3.4/204-uclibc-locale-wchar_fix.patch create mode 100644 recipes/gcc/gcc-4.3.4/205-uclibc-locale-update.patch create mode 100644 recipes/gcc/gcc-4.3.4/300-libstdc++-pic.patch create mode 100644 recipes/gcc/gcc-4.3.4/301-missing-execinfo_h.patch create mode 100644 recipes/gcc/gcc-4.3.4/302-c99-snprintf.patch create mode 100644 recipes/gcc/gcc-4.3.4/303-c99-complex-ugly-hack.patch create mode 100644 recipes/gcc/gcc-4.3.4/304-index_macro.patch create mode 100644 recipes/gcc/gcc-4.3.4/305-libmudflap-susv3-legacy.patch create mode 100644 recipes/gcc/gcc-4.3.4/306-libstdc++-namespace.patch create mode 100644 recipes/gcc/gcc-4.3.4/307-locale_facets.patch create mode 100644 recipes/gcc/gcc-4.3.4/402-libbackend_dep_gcov-iov.h.patch create mode 100644 recipes/gcc/gcc-4.3.4/602-sdk-libstdc++-includes.patch create mode 100644 recipes/gcc/gcc-4.3.4/740-sh-pr24836.patch create mode 100644 recipes/gcc/gcc-4.3.4/800-arm-bigendian.patch create mode 100644 recipes/gcc/gcc-4.3.4/904-flatten-switch-stmt-00.patch create mode 100644 recipes/gcc/gcc-4.3.4/arm-nolibfloat.patch create mode 100644 recipes/gcc/gcc-4.3.4/arm-softfloat.patch create mode 100644 recipes/gcc/gcc-4.3.4/arm-thumb-cache.patch create mode 100644 recipes/gcc/gcc-4.3.4/arm-thumb.patch create mode 100644 recipes/gcc/gcc-4.3.4/cache-amnesia.patch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-acats.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-alpha.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-default-project-path.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-driver-check.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-driver.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-gcc-name.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-gnatvsn.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-libgnatprj.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-libgnatvsn.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-link-lib.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-sjlj.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ada-symbolic-tracebacks.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/alpha-ieee-doc.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/alpha-ieee.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/alpha-no-ev4-directive.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/arm-unbreak-eabi-armv4t.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/boehm-gc-getnprocs.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/boehm-gc-nocheck.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/config-ml.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/cpu-default-i486.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/cross-fixes.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/cross-include.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/deb-protoize.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-d-lang.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-driver-extra-langs.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-both.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-gnu.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-i386-emit-cld.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-ice-apport.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-ice-hack.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-multilib64dir.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-pascal-lang.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-ssp-default.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gcc-textdomain.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gdc-fix-build-kbsd-gnu.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gpc-4.1.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gpc-gcc-4.x.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/gpc-names.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/hurd-changes.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ignore-comp-fail.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/kbsd-gnu-ada.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/kbsd-gnu.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libffi-configure.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-armel-ldflags.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-debuginfo.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-disable-static.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-jar.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-jnipath.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-loading-constraints.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-nobiarch-check.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-rpath.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-sjlj.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-soname.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-stacktrace.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-subdir.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libjava-xulrunner1.9.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libobjc-gc-link.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libssp-gnu.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libstdc++-doclink.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libstdc++-pic.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/libstdc++-symbols-hppa.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/link-libs.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/mips-triarch.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/mudflap-nocheck.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/multiarch-include.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/multiarch-lib.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/note-gnu-stack.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/powerpc-biarch.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/ppc64-ada.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr24170.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr27880.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr28102.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr28322.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr30961.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr33148.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/pr34571.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/rename-info-files.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/s390-biarch.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/sparc-biarch.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/svn-class-updates.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/svn-doc-updates.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/svn-gdc-updates.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/svn-updates.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/debian/template.dpatch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/README create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/URL create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-20000320.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-arm_dbx_register_number.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-ccmav-mode.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-cfcpy-with-cfsh64.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-cftruncd32-attr.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-cirrus-di-flag.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-disable-cmpdi.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-drop-thumb2.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-eabi-ieee754-endian-littleword-littlebyte.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-eabi-mvf0-scratch-ieee754.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-fix-64bit-const-offsets.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-fix-cirrus-reorg5.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-floatsi-no-scratch.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-fp_consts.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-mieee.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-movsf-movdf-Uy.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-neg-enable.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-neg-protect.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-pipeline.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-readme.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-repair-truncxfsi.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-saveregs.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-crunch-scratch.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-prologue_use-length.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/arm-size-bugfix.patch create mode 100644 recipes/gcc/gcc-4.3.4/ep93xx/series create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-c++-builtin-redecl.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-cpp-pragma.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-i386-libgomp.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-ia64-libunwind.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-java-debug-iface-type.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-java-nomulti.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-libgomp-speedup.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-ppc32-retaddr.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-pr27898.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-pr32139.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-pr33763.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-pr35440.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-pr35751.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-rh251682.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-rh330771.patch create mode 100644 recipes/gcc/gcc-4.3.4/fedora/gcc43-rh341221.patch create mode 100644 recipes/gcc/gcc-4.3.4/fortran-cross-compile-hack.patch create mode 100644 recipes/gcc/gcc-4.3.4/fortran-static-linking.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-4.0.2-e300c2c3.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-4.2.3-linux-multilib-fix.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-4.3.4-SYSROOT_CFLAGS_FOR_TARGET.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-arm-frename-registers.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-flags-for-build.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc-release-branch/PR-36500-fix-neon.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc41-configure.in.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc43-build-id.patch create mode 100644 recipes/gcc/gcc-4.3.4/gcc43-ppc64-ia64-GNU-stack.patch create mode 100644 recipes/gcc/gcc-4.3.4/pr34130.patch create mode 100644 recipes/gcc/gcc-4.3.4/sdk-libstdc++-includes.patch create mode 100644 recipes/gcc/gcc-4.3.4/sh3-installfix-fixheaders.patch create mode 100644 recipes/gcc/gcc-4.3.4/sh_unwind.patch create mode 100644 recipes/gcc/gcc-4.3.4/unbreak-armv4t.patch create mode 100644 recipes/gcc/gcc-4.3.4/zecke-no-host-includes.patch create mode 100644 recipes/gcc/gcc-4.3.4/zecke-xgcc-cpp.patch create mode 100644 recipes/gcc/gcc-cross-initial_4.3.4.bb create mode 100644 recipes/gcc/gcc-cross-intermediate_4.3.4.bb create mode 100644 recipes/gcc/gcc-cross-sdk_4.3.4.bb create mode 100644 recipes/gcc/gcc-cross_4.3.4.bb create mode 100644 recipes/gcc/gcc_4.3.4.bb diff --git a/recipes/gcc/gcc-4.3.4.inc b/recipes/gcc/gcc-4.3.4.inc new file mode 100644 index 0000000000..a6bfbcc216 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4.inc @@ -0,0 +1,100 @@ +# No armeb and thumb patches - really needs checking +DEFAULT_PREFERENCE = "-999" +ARM_INSTRUCTION_SET = "arm" + +require gcc-common.inc +LICENSE = "GPLv3" + +DEPENDS = "mpfr gmp" + +INC_PR = "r5" + +SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \ + file://fedora/gcc43-c++-builtin-redecl.patch;patch=1;pnum=0 \ + file://fedora/gcc43-ia64-libunwind.patch;patch=1;pnum=0 \ + file://fedora/gcc43-java-nomulti.patch;patch=1;pnum=0 \ + file://fedora/gcc43-ppc32-retaddr.patch;patch=1;pnum=0 \ + file://fedora/gcc43-pr27898.patch;patch=1;pnum=0 \ + file://fedora/gcc43-pr32139.patch;patch=1;pnum=0 \ + file://fedora/gcc43-pr33763.patch;patch=1;pnum=0 \ + file://fedora/gcc43-rh330771.patch;patch=1;pnum=0 \ + file://fedora/gcc43-rh341221.patch;patch=1;pnum=0 \ + file://fedora/gcc43-cpp-pragma.patch;patch=1;pnum=0 \ + file://fedora/gcc43-java-debug-iface-type.patch;patch=1;pnum=0 \ + file://fedora/gcc43-libgomp-speedup.patch;patch=1;pnum=0 \ + file://fedora/gcc43-i386-libgomp.patch;patch=1;pnum=0 \ + file://fedora/gcc43-rh251682.patch;patch=1;pnum=0 \ + file://debian/arm-unbreak-eabi-armv4t.dpatch;patch=1 \ + file://debian/libstdc++-pic.dpatch;patch=1;pnum=0 \ + file://debian/gcc-ice-hack.dpatch;patch=1;pnum=0 \ + file://debian/pr30961.dpatch;patch=1;pnum=0 \ + file://100-uclibc-conf.patch;patch=1 \ + file://103-uclibc-conf-noupstream.patch;patch=1 \ + file://200-uclibc-locale.patch;patch=1 \ + file://203-uclibc-locale-no__x.patch;patch=1 \ + file://204-uclibc-locale-wchar_fix.patch;patch=1 \ + file://205-uclibc-locale-update.patch;patch=1 \ + file://301-missing-execinfo_h.patch;patch=1 \ + file://302-c99-snprintf.patch;patch=1 \ + file://303-c99-complex-ugly-hack.patch;patch=1 \ + file://304-index_macro.patch;patch=1 \ + file://305-libmudflap-susv3-legacy.patch;patch=1 \ + file://306-libstdc++-namespace.patch;patch=1 \ + file://307-locale_facets.patch;patch=1 \ + file://602-sdk-libstdc++-includes.patch;patch=1 \ + file://740-sh-pr24836.patch;patch=1 \ + file://800-arm-bigendian.patch;patch=1 \ + file://904-flatten-switch-stmt-00.patch;patch=1 \ + file://arm-nolibfloat.patch;patch=1 \ + file://arm-softfloat.patch;patch=1 \ + file://cache-amnesia.patch;patch=1 \ + file://gfortran-4.3.x.patch;patch=1 \ + file://gcc-4.0.2-e300c2c3.patch;patch=1 \ +# file://pr34130.patch;patch=1 \ +# file://fortran-static-linking.patch;patch=1 \ + file://gcc-arm-frename-registers.patch;patch=1 \ + file://gcc-4.3.4-SYSROOT_CFLAGS_FOR_TARGET.patch;patch=1 \ + file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \ + file://zecke-xgcc-cpp.patch;patch=1 \ + file://gcc-flags-for-build.patch;patch=1 \ +" + +SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 " + +SRC_URI_append_sh4 = " file://sh_unwind.patch;patch=1 \ + file://gcc-4.2.3-linux-multilib-fix.patch;patch=1 \ + " +SRC_URI_append_ep93xx = " \ + file://ep93xx/arm-crunch-readme.patch;patch=1 \ + file://ep93xx/arm-crunch-saveregs.patch;patch=1 \ + file://ep93xx/arm-crunch-scratch.patch;patch=1 \ + file://ep93xx/arm-crunch-eabi-ieee754-endian-littleword-littlebyte.patch;patch=1 \ + file://ep93xx/arm-crunch-eabi-mvf0-scratch-ieee754.patch;patch=1 \ + file://ep93xx/arm-crunch-20000320.patch;patch=1 \ + file://ep93xx/arm-crunch-disable-cmpdi.patch;patch=1 \ + file://ep93xx/arm-crunch-fix-64bit-const-offsets.patch;patch=1 \ + file://ep93xx/arm-crunch-fp_consts.patch;patch=1 \ + file://ep93xx/arm-crunch-neg-enable.patch;patch=1 \ + file://ep93xx/arm-crunch-neg-protect.patch;patch=1 \ + file://ep93xx/arm-crunch-repair-truncxfsi.patch;patch=1 \ + file://ep93xx/arm-crunch-floatsi-no-scratch.patch;patch=1 \ + file://ep93xx/arm-crunch-movsf-movdf-Uy.patch;patch=1 \ + file://ep93xx/arm-crunch-drop-thumb2.patch;patch=1 \ + file://ep93xx/arm-crunch-arm_dbx_register_number.patch;patch=1 \ + file://ep93xx/arm-crunch-pipeline.patch;patch=1 \ + file://ep93xx/arm-crunch-ccmav-mode.patch;patch=1 \ + file://ep93xx/arm-crunch-cfcpy-with-cfsh64.patch;patch=1 \ + file://ep93xx/arm-crunch-mieee.patch;patch=1 \ + file://ep93xx/arm-size-bugfix.patch;patch=1 \ + file://ep93xx/arm-prologue_use-length.patch;patch=1 \ + file://ep93xx/arm-crunch-cftruncd32-attr.patch;patch=1 \ + file://ep93xx/arm-crunch-fix-cirrus-reorg5.patch;patch=1 \ + file://ep93xx/arm-crunch-cirrus-di-flag.patch;patch=1 \ +" +# Language Overrides +FORTRAN = "" +FORTRAN_linux-gnueabi = ",fortran" +JAVA = "" + +EXTRA_OECONF_BASE = " --enable-cheaders=c_std --enable-libssp --disable-bootstrap --disable-libgomp --disable-libmudflap" + diff --git a/recipes/gcc/gcc-4.3.4/100-uclibc-conf.patch b/recipes/gcc/gcc-4.3.4/100-uclibc-conf.patch new file mode 100644 index 0000000000..0b799607e8 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/100-uclibc-conf.patch @@ -0,0 +1,37 @@ +Index: gcc-4.3.1/contrib/regression/objs-gcc.sh +=================================================================== +--- gcc-4.3.1.orig/contrib/regression/objs-gcc.sh 2007-12-24 15:18:57.000000000 -0800 ++++ gcc-4.3.1/contrib/regression/objs-gcc.sh 2008-08-16 01:15:12.000000000 -0700 +@@ -105,6 +105,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 +Index: gcc-4.3.1/libjava/classpath/ltconfig +=================================================================== +--- gcc-4.3.1.orig/libjava/classpath/ltconfig 2007-06-03 16:18:43.000000000 -0700 ++++ gcc-4.3.1/libjava/classpath/ltconfig 2008-08-16 01:15:12.000000000 -0700 +@@ -603,7 +603,7 @@ + + # Transform linux* to *-*-linux-gnu*, to support old configure scripts. + case $host_os in +-linux-gnu*) ;; ++linux-gnu*|linux-uclibc*) ;; + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` + esac + +@@ -1251,7 +1251,7 @@ + ;; + + # This must be Linux ELF. +-linux-gnu*) ++linux*) + version_type=linux + need_lib_prefix=no + need_version=no diff --git a/recipes/gcc/gcc-4.3.4/103-uclibc-conf-noupstream.patch b/recipes/gcc/gcc-4.3.4/103-uclibc-conf-noupstream.patch new file mode 100644 index 0000000000..09c9bbecfb --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/103-uclibc-conf-noupstream.patch @@ -0,0 +1,11 @@ +--- gcc/gcc/config.gcc.uclibc100-sh~ 2006-03-06 20:46:56 +0100 ++++ gcc/gcc/config.gcc 2006-03-10 15:02:41 +0100 +@@ -1905,7 +1905,7 @@ + ;; + sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ + sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ +- sh-*-linux* | sh[346lbe]*-*-linux* | \ ++ sh*-*-linux* | sh[346lbe]*-*-linux* | \ + sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ + sh64-*-netbsd* | sh64l*-*-netbsd*) + tmake_file="${tmake_file} sh/t-sh sh/t-elf" diff --git a/recipes/gcc/gcc-4.3.4/110-arm-eabi.patch b/recipes/gcc/gcc-4.3.4/110-arm-eabi.patch new file mode 100644 index 0000000000..acebe5308f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/110-arm-eabi.patch @@ -0,0 +1,27 @@ +--- gcc-2005q3-1.orig/gcc/config.gcc 2005-10-31 19:02:54.000000000 +0300 ++++ gcc-2005q3-1/gcc/config.gcc 2006-01-27 01:09:09.000000000 +0300 +@@ -674,7 +674,7 @@ + tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" + tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm" + case ${target} in +- arm*-*-linux-gnueabi) ++ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) + tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" + tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi" + # The BPABI long long divmod functions return a 128-bit value in + +diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h +--- gcc-2005q3-2/gcc/config/arm/linux-eabi.h 2005-12-07 23:14:16.000000000 +0300 ++++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h 2006-03-29 19:02:34.000000000 +0400 +@@ -53,7 +53,11 @@ + /* Use ld-linux.so.3 so that it will be possible to run "classic" + GNU/Linux binaries on an EABI system. */ + #undef LINUX_TARGET_INTERPRETER ++#ifdef USE_UCLIBC ++#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" ++#else + #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" ++#endif + + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ diff --git a/recipes/gcc/gcc-4.3.4/200-uclibc-locale.patch b/recipes/gcc/gcc-4.3.4/200-uclibc-locale.patch new file mode 100644 index 0000000000..70ba98eed7 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/200-uclibc-locale.patch @@ -0,0 +1,2833 @@ +Index: gcc-4.3.2/libstdc++-v3/acinclude.m4 +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/acinclude.m4 2008-04-25 09:52:57.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/acinclude.m4 2008-08-28 17:55:56.000000000 -0700 +@@ -1349,7 +1349,7 @@ + AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ + GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], + [use MODEL for target locale package], +- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) ++ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) + + # Deal with gettext issues. Default to not using it (=no) until we detect + # support for it later. Let the user turn it off via --e/d, but let that +@@ -1370,6 +1370,9 @@ + # Default to "generic". + if test $enable_clocale_flag = auto; then + case ${target_os} in ++ *-uclibc*) ++ enable_clocale_flag=uclibc ++ ;; + linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) + enable_clocale_flag=gnu + ;; +@@ -1541,6 +1544,40 @@ + CTIME_CC=config/locale/generic/time_members.cc + CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h + ;; ++ uclibc) ++ AC_MSG_RESULT(uclibc) ++ ++ # Declare intention to use gettext, and add support for specific ++ # languages. ++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT ++ ALL_LINGUAS="de fr" ++ ++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. ++ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) ++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then ++ USE_NLS=yes ++ fi ++ # Export the build objects. ++ for ling in $ALL_LINGUAS; do \ ++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ ++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ ++ done ++ AC_SUBST(glibcxx_MOFILES) ++ AC_SUBST(glibcxx_POFILES) ++ ++ CLOCALE_H=config/locale/uclibc/c_locale.h ++ CLOCALE_CC=config/locale/uclibc/c_locale.cc ++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc ++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc ++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc ++ CMESSAGES_H=config/locale/uclibc/messages_members.h ++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc ++ CMONEY_CC=config/locale/uclibc/monetary_members.cc ++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc ++ CTIME_H=config/locale/uclibc/time_members.h ++ CTIME_CC=config/locale/uclibc/time_members.cc ++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h ++ ;; + esac + + # This is where the testsuite looks for locale catalogs, using the +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,63 @@ ++// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- ++ ++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// Written by Jakub Jelinek ++ ++#include ++#include ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning clean this up ++#endif ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ ++extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; ++extern "C" __typeof(strcoll_l) __strcoll_l; ++extern "C" __typeof(strftime_l) __strftime_l; ++extern "C" __typeof(strtod_l) __strtod_l; ++extern "C" __typeof(strtof_l) __strtof_l; ++extern "C" __typeof(strtold_l) __strtold_l; ++extern "C" __typeof(strxfrm_l) __strxfrm_l; ++extern "C" __typeof(newlocale) __newlocale; ++extern "C" __typeof(freelocale) __freelocale; ++extern "C" __typeof(duplocale) __duplocale; ++extern "C" __typeof(uselocale) __uselocale; ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++extern "C" __typeof(iswctype_l) __iswctype_l; ++extern "C" __typeof(towlower_l) __towlower_l; ++extern "C" __typeof(towupper_l) __towupper_l; ++extern "C" __typeof(wcscoll_l) __wcscoll_l; ++extern "C" __typeof(wcsftime_l) __wcsftime_l; ++extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; ++extern "C" __typeof(wctype_l) __wctype_l; ++#endif ++ ++#endif // GLIBC 2.3 and later +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,160 @@ ++// Wrapper for underlying C-language localization -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.8 Standard locale categories. ++// ++ ++// Written by Benjamin Kosnik ++ ++#include // For errno ++#include ++#include ++#include ++#include ++ ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) ++#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) ++#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) ++#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) ++#define __strtof_l(S, E, L) strtof((S), (E)) ++#define __strtod_l(S, E, L) strtod((S), (E)) ++#define __strtold_l(S, E, L) strtold((S), (E)) ++#warning should dummy __newlocale check for C|POSIX ? ++#define __newlocale(a, b, c) NULL ++#define __freelocale(a) ((void)0) ++#define __duplocale(a) __c_locale() ++#endif ++ ++namespace std ++{ ++ template<> ++ void ++ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, ++ const __c_locale& __cloc) ++ { ++ if (!(__err & ios_base::failbit)) ++ { ++ char* __sanity; ++ errno = 0; ++ float __f = __strtof_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __f; ++ else ++ __err |= ios_base::failbit; ++ } ++ } ++ ++ template<> ++ void ++ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, ++ const __c_locale& __cloc) ++ { ++ if (!(__err & ios_base::failbit)) ++ { ++ char* __sanity; ++ errno = 0; ++ double __d = __strtod_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __d; ++ else ++ __err |= ios_base::failbit; ++ } ++ } ++ ++ template<> ++ void ++ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, ++ const __c_locale& __cloc) ++ { ++ if (!(__err & ios_base::failbit)) ++ { ++ char* __sanity; ++ errno = 0; ++ long double __ld = __strtold_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __ld; ++ else ++ __err |= ios_base::failbit; ++ } ++ } ++ ++ void ++ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, ++ __c_locale __old) ++ { ++ __cloc = __newlocale(1 << LC_ALL, __s, __old); ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ if (!__cloc) ++ { ++ // This named locale is not supported by the underlying OS. ++ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " ++ "name not valid")); ++ } ++#endif ++ } ++ ++ void ++ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) ++ { ++ if (_S_get_c_locale() != __cloc) ++ __freelocale(__cloc); ++ } ++ ++ __c_locale ++ locale::facet::_S_clone_c_locale(__c_locale& __cloc) ++ { return __duplocale(__cloc); } ++} // namespace std ++ ++namespace __gnu_cxx ++{ ++ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = ++ { ++ "LC_CTYPE", ++ "LC_NUMERIC", ++ "LC_TIME", ++ "LC_COLLATE", ++ "LC_MONETARY", ++ "LC_MESSAGES", ++#if _GLIBCXX_NUM_CATEGORIES != 0 ++ "LC_PAPER", ++ "LC_NAME", ++ "LC_ADDRESS", ++ "LC_TELEPHONE", ++ "LC_MEASUREMENT", ++ "LC_IDENTIFICATION" ++#endif ++ }; ++} ++ ++namespace std ++{ ++ const char* const* const locale::_S_categories = __gnu_cxx::category_names; ++} // namespace std +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,117 @@ ++// Wrapper for underlying C-language localization -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.8 Standard locale categories. ++// ++ ++// Written by Benjamin Kosnik ++ ++#ifndef _C_LOCALE_H ++#define _C_LOCALE_H 1 ++ ++#pragma GCC system_header ++ ++#include // get std::strlen ++#include // get std::snprintf or std::sprintf ++#include ++#include // For codecvt ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix this ++#endif ++#ifdef __UCLIBC_HAS_LOCALE__ ++#include // For codecvt using iconv, iconv_t ++#endif ++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ ++#include // For messages ++#endif ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning what is _GLIBCXX_C_LOCALE_GNU for ++#endif ++#define _GLIBCXX_C_LOCALE_GNU 1 ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix categories ++#endif ++// #define _GLIBCXX_NUM_CATEGORIES 6 ++#define _GLIBCXX_NUM_CATEGORIES 0 ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++namespace __gnu_cxx ++{ ++ extern "C" __typeof(uselocale) __uselocale; ++} ++#endif ++ ++namespace std ++{ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ typedef __locale_t __c_locale; ++#else ++ typedef int* __c_locale; ++#endif ++ ++ // Convert numeric value of type _Tv to string and return length of ++ // string. If snprintf is available use it, otherwise fall back to ++ // the unsafe sprintf which, in general, can be dangerous and should ++ // be avoided. ++ template ++ int ++ __convert_from_v(char* __out, ++ const int __size __attribute__ ((__unused__)), ++ const char* __fmt, ++#ifdef __UCLIBC_HAS_XCLOCALE__ ++ _Tv __v, const __c_locale& __cloc, int __prec) ++ { ++ __c_locale __old = __gnu_cxx::__uselocale(__cloc); ++#else ++ _Tv __v, const __c_locale&, int __prec) ++ { ++# ifdef __UCLIBC_HAS_LOCALE__ ++ char* __old = std::setlocale(LC_ALL, NULL); ++ char* __sav = new char[std::strlen(__old) + 1]; ++ std::strcpy(__sav, __old); ++ std::setlocale(LC_ALL, "C"); ++# endif ++#endif ++ ++ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); ++ ++#ifdef __UCLIBC_HAS_XCLOCALE__ ++ __gnu_cxx::__uselocale(__old); ++#elif defined __UCLIBC_HAS_LOCALE__ ++ std::setlocale(LC_ALL, __sav); ++ delete [] __sav; ++#endif ++ return __ret; ++ } ++} ++ ++#endif +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,308 @@ ++// std::codecvt implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.1.5 - Template class codecvt ++// ++ ++// Written by Benjamin Kosnik ++ ++#include ++#include // For MB_CUR_MAX ++#include // For MB_LEN_MAX ++#include ++ ++namespace std ++{ ++ // Specializations. ++#ifdef _GLIBCXX_USE_WCHAR_T ++ codecvt_base::result ++ codecvt:: ++ do_out(state_type& __state, const intern_type* __from, ++ const intern_type* __from_end, const intern_type*& __from_next, ++ extern_type* __to, extern_type* __to_end, ++ extern_type*& __to_next) const ++ { ++ result __ret = ok; ++ state_type __tmp_state(__state); ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_codecvt); ++#endif ++ ++ // wcsnrtombs is *very* fast but stops if encounters NUL characters: ++ // in case we fall back to wcrtomb and then continue, in a loop. ++ // NB: wcsnrtombs is a GNU extension ++ for (__from_next = __from, __to_next = __to; ++ __from_next < __from_end && __to_next < __to_end ++ && __ret == ok;) ++ { ++ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', ++ __from_end - __from_next); ++ if (!__from_chunk_end) ++ __from_chunk_end = __from_end; ++ ++ __from = __from_next; ++ const size_t __conv = wcsnrtombs(__to_next, &__from_next, ++ __from_chunk_end - __from_next, ++ __to_end - __to_next, &__state); ++ if (__conv == static_cast(-1)) ++ { ++ // In case of error, in order to stop at the exact place we ++ // have to start again from the beginning with a series of ++ // wcrtomb. ++ for (; __from < __from_next; ++__from) ++ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); ++ __state = __tmp_state; ++ __ret = error; ++ } ++ else if (__from_next && __from_next < __from_chunk_end) ++ { ++ __to_next += __conv; ++ __ret = partial; ++ } ++ else ++ { ++ __from_next = __from_chunk_end; ++ __to_next += __conv; ++ } ++ ++ if (__from_next < __from_end && __ret == ok) ++ { ++ extern_type __buf[MB_LEN_MAX]; ++ __tmp_state = __state; ++ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); ++ if (__conv > static_cast(__to_end - __to_next)) ++ __ret = partial; ++ else ++ { ++ memcpy(__to_next, __buf, __conv); ++ __state = __tmp_state; ++ __to_next += __conv; ++ ++__from_next; ++ } ++ } ++ } ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ ++ return __ret; ++ } ++ ++ codecvt_base::result ++ codecvt:: ++ do_in(state_type& __state, const extern_type* __from, ++ const extern_type* __from_end, const extern_type*& __from_next, ++ intern_type* __to, intern_type* __to_end, ++ intern_type*& __to_next) const ++ { ++ result __ret = ok; ++ state_type __tmp_state(__state); ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_codecvt); ++#endif ++ ++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: ++ // in case we store a L'\0' and then continue, in a loop. ++ // NB: mbsnrtowcs is a GNU extension ++ for (__from_next = __from, __to_next = __to; ++ __from_next < __from_end && __to_next < __to_end ++ && __ret == ok;) ++ { ++ const extern_type* __from_chunk_end; ++ __from_chunk_end = static_cast(memchr(__from_next, '\0', ++ __from_end ++ - __from_next)); ++ if (!__from_chunk_end) ++ __from_chunk_end = __from_end; ++ ++ __from = __from_next; ++ size_t __conv = mbsnrtowcs(__to_next, &__from_next, ++ __from_chunk_end - __from_next, ++ __to_end - __to_next, &__state); ++ if (__conv == static_cast(-1)) ++ { ++ // In case of error, in order to stop at the exact place we ++ // have to start again from the beginning with a series of ++ // mbrtowc. ++ for (;; ++__to_next, __from += __conv) ++ { ++ __conv = mbrtowc(__to_next, __from, __from_end - __from, ++ &__tmp_state); ++ if (__conv == static_cast(-1) ++ || __conv == static_cast(-2)) ++ break; ++ } ++ __from_next = __from; ++ __state = __tmp_state; ++ __ret = error; ++ } ++ else if (__from_next && __from_next < __from_chunk_end) ++ { ++ // It is unclear what to return in this case (see DR 382). ++ __to_next += __conv; ++ __ret = partial; ++ } ++ else ++ { ++ __from_next = __from_chunk_end; ++ __to_next += __conv; ++ } ++ ++ if (__from_next < __from_end && __ret == ok) ++ { ++ if (__to_next < __to_end) ++ { ++ // XXX Probably wrong for stateful encodings ++ __tmp_state = __state; ++ ++__from_next; ++ *__to_next++ = L'\0'; ++ } ++ else ++ __ret = partial; ++ } ++ } ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ ++ return __ret; ++ } ++ ++ int ++ codecvt:: ++ do_encoding() const throw() ++ { ++ // XXX This implementation assumes that the encoding is ++ // stateless and is either single-byte or variable-width. ++ int __ret = 0; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_codecvt); ++#endif ++ if (MB_CUR_MAX == 1) ++ __ret = 1; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ return __ret; ++ } ++ ++ int ++ codecvt:: ++ do_max_length() const throw() ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_codecvt); ++#endif ++ // XXX Probably wrong for stateful encodings. ++ int __ret = MB_CUR_MAX; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ return __ret; ++ } ++ ++ int ++ codecvt:: ++ do_length(state_type& __state, const extern_type* __from, ++ const extern_type* __end, size_t __max) const ++ { ++ int __ret = 0; ++ state_type __tmp_state(__state); ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_codecvt); ++#endif ++ ++ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: ++ // in case we advance past it and then continue, in a loop. ++ // NB: mbsnrtowcs is a GNU extension ++ ++ // A dummy internal buffer is needed in order for mbsnrtocws to consider ++ // its fourth parameter (it wouldn't with NULL as first parameter). ++ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) ++ * __max)); ++ while (__from < __end && __max) ++ { ++ const extern_type* __from_chunk_end; ++ __from_chunk_end = static_cast(memchr(__from, '\0', ++ __end ++ - __from)); ++ if (!__from_chunk_end) ++ __from_chunk_end = __end; ++ ++ const extern_type* __tmp_from = __from; ++ size_t __conv = mbsnrtowcs(__to, &__from, ++ __from_chunk_end - __from, ++ __max, &__state); ++ if (__conv == static_cast(-1)) ++ { ++ // In case of error, in order to stop at the exact place we ++ // have to start again from the beginning with a series of ++ // mbrtowc. ++ for (__from = __tmp_from;; __from += __conv) ++ { ++ __conv = mbrtowc(NULL, __from, __end - __from, ++ &__tmp_state); ++ if (__conv == static_cast(-1) ++ || __conv == static_cast(-2)) ++ break; ++ } ++ __state = __tmp_state; ++ __ret += __from - __tmp_from; ++ break; ++ } ++ if (!__from) ++ __from = __from_chunk_end; ++ ++ __ret += __from - __tmp_from; ++ __max -= __conv; ++ ++ if (__from < __end && __max) ++ { ++ // XXX Probably wrong for stateful encodings ++ __tmp_state = __state; ++ ++__from; ++ ++__ret; ++ --__max; ++ } ++ } ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ ++ return __ret; ++ } ++#endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,80 @@ ++// std::collate implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.4.1.2 collate virtual functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#include ++#include ++ ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) ++#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) ++#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) ++#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) ++#endif ++ ++namespace std ++{ ++ // These are basically extensions to char_traits, and perhaps should ++ // be put there instead of here. ++ template<> ++ int ++ collate::_M_compare(const char* __one, const char* __two) const ++ { ++ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); ++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); ++ } ++ ++ template<> ++ size_t ++ collate::_M_transform(char* __to, const char* __from, ++ size_t __n) const ++ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ template<> ++ int ++ collate::_M_compare(const wchar_t* __one, ++ const wchar_t* __two) const ++ { ++ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); ++ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); ++ } ++ ++ template<> ++ size_t ++ collate::_M_transform(wchar_t* __to, const wchar_t* __from, ++ size_t __n) const ++ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } ++#endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,300 @@ ++// std::ctype implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. ++// ++ ++// Written by Benjamin Kosnik ++ ++#define _LIBC ++#include ++#undef _LIBC ++#include ++ ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __wctype_l(S, L) wctype((S)) ++#define __towupper_l(C, L) towupper((C)) ++#define __towlower_l(C, L) towlower((C)) ++#define __iswctype_l(C, M, L) iswctype((C), (M)) ++#endif ++ ++namespace std ++{ ++ // NB: The other ctype specializations are in src/locale.cc and ++ // various /config/os/* files. ++ template<> ++ ctype_byname::ctype_byname(const char* __s, size_t __refs) ++ : ctype(0, false, __refs) ++ { ++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) ++ { ++ this->_S_destroy_c_locale(this->_M_c_locale_ctype); ++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; ++ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; ++ this->_M_table = this->_M_c_locale_ctype->__ctype_b; ++#endif ++ } ++ } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ ctype::__wmask_type ++ ctype::_M_convert_to_wmask(const mask __m) const ++ { ++ __wmask_type __ret; ++ switch (__m) ++ { ++ case space: ++ __ret = __wctype_l("space", _M_c_locale_ctype); ++ break; ++ case print: ++ __ret = __wctype_l("print", _M_c_locale_ctype); ++ break; ++ case cntrl: ++ __ret = __wctype_l("cntrl", _M_c_locale_ctype); ++ break; ++ case upper: ++ __ret = __wctype_l("upper", _M_c_locale_ctype); ++ break; ++ case lower: ++ __ret = __wctype_l("lower", _M_c_locale_ctype); ++ break; ++ case alpha: ++ __ret = __wctype_l("alpha", _M_c_locale_ctype); ++ break; ++ case digit: ++ __ret = __wctype_l("digit", _M_c_locale_ctype); ++ break; ++ case punct: ++ __ret = __wctype_l("punct", _M_c_locale_ctype); ++ break; ++ case xdigit: ++ __ret = __wctype_l("xdigit", _M_c_locale_ctype); ++ break; ++ case alnum: ++ __ret = __wctype_l("alnum", _M_c_locale_ctype); ++ break; ++ case graph: ++ __ret = __wctype_l("graph", _M_c_locale_ctype); ++ break; ++ default: ++ __ret = __wmask_type(); ++ } ++ return __ret; ++ } ++ ++ wchar_t ++ ctype::do_toupper(wchar_t __c) const ++ { return __towupper_l(__c, _M_c_locale_ctype); } ++ ++ const wchar_t* ++ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi) ++ { ++ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); ++ ++__lo; ++ } ++ return __hi; ++ } ++ ++ wchar_t ++ ctype::do_tolower(wchar_t __c) const ++ { return __towlower_l(__c, _M_c_locale_ctype); } ++ ++ const wchar_t* ++ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi) ++ { ++ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); ++ ++__lo; ++ } ++ return __hi; ++ } ++ ++ bool ++ ctype:: ++ do_is(mask __m, wchar_t __c) const ++ { ++ // Highest bitmask in ctype_base == 10, but extra in "C" ++ // library for blank. ++ bool __ret = false; ++ const size_t __bitmasksize = 11; ++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) ++ if (__m & _M_bit[__bitcur] ++ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) ++ { ++ __ret = true; ++ break; ++ } ++ return __ret; ++ } ++ ++ const wchar_t* ++ ctype:: ++ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const ++ { ++ for (; __lo < __hi; ++__vec, ++__lo) ++ { ++ // Highest bitmask in ctype_base == 10, but extra in "C" ++ // library for blank. ++ const size_t __bitmasksize = 11; ++ mask __m = 0; ++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) ++ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) ++ __m |= _M_bit[__bitcur]; ++ *__vec = __m; ++ } ++ return __hi; ++ } ++ ++ const wchar_t* ++ ctype:: ++ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const ++ { ++ while (__lo < __hi && !this->do_is(__m, *__lo)) ++ ++__lo; ++ return __lo; ++ } ++ ++ const wchar_t* ++ ctype:: ++ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const ++ { ++ while (__lo < __hi && this->do_is(__m, *__lo) != 0) ++ ++__lo; ++ return __lo; ++ } ++ ++ wchar_t ++ ctype:: ++ do_widen(char __c) const ++ { return _M_widen[static_cast(__c)]; } ++ ++ const char* ++ ctype:: ++ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const ++ { ++ while (__lo < __hi) ++ { ++ *__dest = _M_widen[static_cast(*__lo)]; ++ ++__lo; ++ ++__dest; ++ } ++ return __hi; ++ } ++ ++ char ++ ctype:: ++ do_narrow(wchar_t __wc, char __dfault) const ++ { ++ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) ++ return _M_narrow[__wc]; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_ctype); ++#endif ++ const int __c = wctob(__wc); ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ return (__c == EOF ? __dfault : static_cast(__c)); ++ } ++ ++ const wchar_t* ++ ctype:: ++ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, ++ char* __dest) const ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_ctype); ++#endif ++ if (_M_narrow_ok) ++ while (__lo < __hi) ++ { ++ if (*__lo >= 0 && *__lo < 128) ++ *__dest = _M_narrow[*__lo]; ++ else ++ { ++ const int __c = wctob(*__lo); ++ *__dest = (__c == EOF ? __dfault : static_cast(__c)); ++ } ++ ++__lo; ++ ++__dest; ++ } ++ else ++ while (__lo < __hi) ++ { ++ const int __c = wctob(*__lo); ++ *__dest = (__c == EOF ? __dfault : static_cast(__c)); ++ ++__lo; ++ ++__dest; ++ } ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ return __hi; ++ } ++ ++ void ++ ctype::_M_initialize_ctype() ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_ctype); ++#endif ++ wint_t __i; ++ for (__i = 0; __i < 128; ++__i) ++ { ++ const int __c = wctob(__i); ++ if (__c == EOF) ++ break; ++ else ++ _M_narrow[__i] = static_cast(__c); ++ } ++ if (__i == 128) ++ _M_narrow_ok = true; ++ else ++ _M_narrow_ok = false; ++ for (size_t __j = 0; ++ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) ++ _M_widen[__j] = btowc(__j); ++ ++ for (size_t __k = 0; __k <= 11; ++__k) ++ { ++ _M_bit[__k] = static_cast(_ISbit(__k)); ++ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); ++ } ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#endif ++ } ++#endif // _GLIBCXX_USE_WCHAR_T ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,100 @@ ++// std::messages implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.7.1.2 messages virtual functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#include ++#include ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix gettext stuff ++#endif ++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ ++extern "C" char *__dcgettext(const char *domainname, ++ const char *msgid, int category); ++#undef gettext ++#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) ++#else ++#undef gettext ++#define gettext(msgid) (msgid) ++#endif ++ ++namespace std ++{ ++ // Specializations. ++ template<> ++ string ++ messages::do_get(catalog, int, int, const string& __dfault) const ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_messages); ++ const char* __msg = const_cast(gettext(__dfault.c_str())); ++ __uselocale(__old); ++ return string(__msg); ++#elif defined __UCLIBC_HAS_LOCALE__ ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, _M_name_messages); ++ const char* __msg = gettext(__dfault.c_str()); ++ setlocale(LC_ALL, __old); ++ free(__old); ++ return string(__msg); ++#else ++ const char* __msg = gettext(__dfault.c_str()); ++ return string(__msg); ++#endif ++ } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ template<> ++ wstring ++ messages::do_get(catalog, int, int, const wstring& __dfault) const ++ { ++# ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(_M_c_locale_messages); ++ char* __msg = gettext(_M_convert_to_char(__dfault)); ++ __uselocale(__old); ++ return _M_convert_from_char(__msg); ++# elif defined __UCLIBC_HAS_LOCALE__ ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, _M_name_messages); ++ char* __msg = gettext(_M_convert_to_char(__dfault)); ++ setlocale(LC_ALL, __old); ++ free(__old); ++ return _M_convert_from_char(__msg); ++# else ++ char* __msg = gettext(_M_convert_to_char(__dfault)); ++ return _M_convert_from_char(__msg); ++# endif ++ } ++#endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,118 @@ ++// std::messages implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.7.1.2 messages functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix prototypes for *textdomain funcs ++#endif ++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ ++extern "C" char *__textdomain(const char *domainname); ++extern "C" char *__bindtextdomain(const char *domainname, ++ const char *dirname); ++#else ++#undef __textdomain ++#undef __bindtextdomain ++#define __textdomain(D) ((void)0) ++#define __bindtextdomain(D,P) ((void)0) ++#endif ++ ++ // Non-virtual member functions. ++ template ++ messages<_CharT>::messages(size_t __refs) ++ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), ++ _M_name_messages(_S_get_c_name()) ++ { } ++ ++ template ++ messages<_CharT>::messages(__c_locale __cloc, const char* __s, ++ size_t __refs) ++ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), ++ _M_name_messages(__s) ++ { ++ char* __tmp = new char[std::strlen(__s) + 1]; ++ std::strcpy(__tmp, __s); ++ _M_name_messages = __tmp; ++ } ++ ++ template ++ typename messages<_CharT>::catalog ++ messages<_CharT>::open(const basic_string& __s, const locale& __loc, ++ const char* __dir) const ++ { ++ __bindtextdomain(__s.c_str(), __dir); ++ return this->do_open(__s, __loc); ++ } ++ ++ // Virtual member functions. ++ template ++ messages<_CharT>::~messages() ++ { ++ if (_M_name_messages != _S_get_c_name()) ++ delete [] _M_name_messages; ++ _S_destroy_c_locale(_M_c_locale_messages); ++ } ++ ++ template ++ typename messages<_CharT>::catalog ++ messages<_CharT>::do_open(const basic_string& __s, ++ const locale&) const ++ { ++ // No error checking is done, assume the catalog exists and can ++ // be used. ++ __textdomain(__s.c_str()); ++ return 0; ++ } ++ ++ template ++ void ++ messages<_CharT>::do_close(catalog) const ++ { } ++ ++ // messages_byname ++ template ++ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) ++ : messages<_CharT>(__refs) ++ { ++ if (this->_M_name_messages != locale::facet::_S_get_c_name()) ++ delete [] this->_M_name_messages; ++ char* __tmp = new char[std::strlen(__s) + 1]; ++ std::strcpy(__tmp, __s); ++ this->_M_name_messages = __tmp; ++ ++ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) ++ { ++ this->_S_destroy_c_locale(this->_M_c_locale_messages); ++ this->_S_create_c_locale(this->_M_c_locale_messages, __s); ++ } ++ } +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,692 @@ ++// std::moneypunct implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#define _LIBC ++#include ++#undef _LIBC ++#include ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning optimize this for uclibc ++#warning tailor for stub locale support ++#endif ++ ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __nl_langinfo_l(N, L) nl_langinfo((N)) ++#endif ++ ++namespace std ++{ ++ // Construct and return valid pattern consisting of some combination of: ++ // space none symbol sign value ++ money_base::pattern ++ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) ++ { ++ pattern __ret; ++ ++ // This insanely complicated routine attempts to construct a valid ++ // pattern for use with monyepunct. A couple of invariants: ++ ++ // if (__precedes) symbol -> value ++ // else value -> symbol ++ ++ // if (__space) space ++ // else none ++ ++ // none == never first ++ // space never first or last ++ ++ // Any elegant implementations of this are welcome. ++ switch (__posn) ++ { ++ case 0: ++ case 1: ++ // 1 The sign precedes the value and symbol. ++ __ret.field[0] = sign; ++ if (__space) ++ { ++ // Pattern starts with sign. ++ if (__precedes) ++ { ++ __ret.field[1] = symbol; ++ __ret.field[3] = value; ++ } ++ else ++ { ++ __ret.field[1] = value; ++ __ret.field[3] = symbol; ++ } ++ __ret.field[2] = space; ++ } ++ else ++ { ++ // Pattern starts with sign and ends with none. ++ if (__precedes) ++ { ++ __ret.field[1] = symbol; ++ __ret.field[2] = value; ++ } ++ else ++ { ++ __ret.field[1] = value; ++ __ret.field[2] = symbol; ++ } ++ __ret.field[3] = none; ++ } ++ break; ++ case 2: ++ // 2 The sign follows the value and symbol. ++ if (__space) ++ { ++ // Pattern either ends with sign. ++ if (__precedes) ++ { ++ __ret.field[0] = symbol; ++ __ret.field[2] = value; ++ } ++ else ++ { ++ __ret.field[0] = value; ++ __ret.field[2] = symbol; ++ } ++ __ret.field[1] = space; ++ __ret.field[3] = sign; ++ } ++ else ++ { ++ // Pattern ends with sign then none. ++ if (__precedes) ++ { ++ __ret.field[0] = symbol; ++ __ret.field[1] = value; ++ } ++ else ++ { ++ __ret.field[0] = value; ++ __ret.field[1] = symbol; ++ } ++ __ret.field[2] = sign; ++ __ret.field[3] = none; ++ } ++ break; ++ case 3: ++ // 3 The sign immediately precedes the symbol. ++ if (__precedes) ++ { ++ __ret.field[0] = sign; ++ __ret.field[1] = symbol; ++ if (__space) ++ { ++ __ret.field[2] = space; ++ __ret.field[3] = value; ++ } ++ else ++ { ++ __ret.field[2] = value; ++ __ret.field[3] = none; ++ } ++ } ++ else ++ { ++ __ret.field[0] = value; ++ if (__space) ++ { ++ __ret.field[1] = space; ++ __ret.field[2] = sign; ++ __ret.field[3] = symbol; ++ } ++ else ++ { ++ __ret.field[1] = sign; ++ __ret.field[2] = symbol; ++ __ret.field[3] = none; ++ } ++ } ++ break; ++ case 4: ++ // 4 The sign immediately follows the symbol. ++ if (__precedes) ++ { ++ __ret.field[0] = symbol; ++ __ret.field[1] = sign; ++ if (__space) ++ { ++ __ret.field[2] = space; ++ __ret.field[3] = value; ++ } ++ else ++ { ++ __ret.field[2] = value; ++ __ret.field[3] = none; ++ } ++ } ++ else ++ { ++ __ret.field[0] = value; ++ if (__space) ++ { ++ __ret.field[1] = space; ++ __ret.field[2] = symbol; ++ __ret.field[3] = sign; ++ } ++ else ++ { ++ __ret.field[1] = symbol; ++ __ret.field[2] = sign; ++ __ret.field[3] = none; ++ } ++ } ++ break; ++ default: ++ ; ++ } ++ return __ret; ++ } ++ ++ template<> ++ void ++ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, ++ const char*) ++ { ++ if (!_M_data) ++ _M_data = new __moneypunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_decimal_point = '.'; ++ _M_data->_M_thousands_sep = ','; ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_curr_symbol = ""; ++ _M_data->_M_curr_symbol_size = 0; ++ _M_data->_M_positive_sign = ""; ++ _M_data->_M_positive_sign_size = 0; ++ _M_data->_M_negative_sign = ""; ++ _M_data->_M_negative_sign_size = 0; ++ _M_data->_M_frac_digits = 0; ++ _M_data->_M_pos_format = money_base::_S_default_pattern; ++ _M_data->_M_neg_format = money_base::_S_default_pattern; ++ ++ for (size_t __i = 0; __i < money_base::_S_end; ++__i) ++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; ++ } ++ else ++ { ++ // Named locale. ++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, ++ __cloc)); ++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, ++ __cloc)); ++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); ++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); ++ ++ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); ++ if (!__nposn) ++ _M_data->_M_negative_sign = "()"; ++ else ++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, ++ __cloc); ++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); ++ ++ // _Intl == true ++ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); ++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); ++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, ++ __cloc)); ++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); ++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); ++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); ++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, ++ __pposn); ++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); ++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); ++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, ++ __nposn); ++ } ++ } ++ ++ template<> ++ void ++ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, ++ const char*) ++ { ++ if (!_M_data) ++ _M_data = new __moneypunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_decimal_point = '.'; ++ _M_data->_M_thousands_sep = ','; ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_curr_symbol = ""; ++ _M_data->_M_curr_symbol_size = 0; ++ _M_data->_M_positive_sign = ""; ++ _M_data->_M_positive_sign_size = 0; ++ _M_data->_M_negative_sign = ""; ++ _M_data->_M_negative_sign_size = 0; ++ _M_data->_M_frac_digits = 0; ++ _M_data->_M_pos_format = money_base::_S_default_pattern; ++ _M_data->_M_neg_format = money_base::_S_default_pattern; ++ ++ for (size_t __i = 0; __i < money_base::_S_end; ++__i) ++ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; ++ } ++ else ++ { ++ // Named locale. ++ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, ++ __cloc)); ++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, ++ __cloc)); ++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); ++ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); ++ ++ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); ++ if (!__nposn) ++ _M_data->_M_negative_sign = "()"; ++ else ++ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, ++ __cloc); ++ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); ++ ++ // _Intl == false ++ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); ++ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); ++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); ++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); ++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); ++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); ++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, ++ __pposn); ++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); ++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); ++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, ++ __nposn); ++ } ++ } ++ ++ template<> ++ moneypunct::~moneypunct() ++ { delete _M_data; } ++ ++ template<> ++ moneypunct::~moneypunct() ++ { delete _M_data; } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ template<> ++ void ++ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ const char*) ++#else ++ const char* __name) ++#endif ++ { ++ if (!_M_data) ++ _M_data = new __moneypunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_decimal_point = L'.'; ++ _M_data->_M_thousands_sep = L','; ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_curr_symbol = L""; ++ _M_data->_M_curr_symbol_size = 0; ++ _M_data->_M_positive_sign = L""; ++ _M_data->_M_positive_sign_size = 0; ++ _M_data->_M_negative_sign = L""; ++ _M_data->_M_negative_sign_size = 0; ++ _M_data->_M_frac_digits = 0; ++ _M_data->_M_pos_format = money_base::_S_default_pattern; ++ _M_data->_M_neg_format = money_base::_S_default_pattern; ++ ++ // Use ctype::widen code without the facet... ++ for (size_t __i = 0; __i < money_base::_S_end; ++__i) ++ _M_data->_M_atoms[__i] = ++ static_cast(money_base::_S_atoms[__i]); ++ } ++ else ++ { ++ // Named locale. ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(__cloc); ++#else ++ // Switch to named locale so that mbsrtowcs will work. ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, __name); ++#endif ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix this... should be monetary ++#endif ++#ifdef __UCLIBC__ ++# ifdef __UCLIBC_HAS_XLOCALE__ ++ _M_data->_M_decimal_point = __cloc->decimal_point_wc; ++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; ++# else ++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; ++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; ++# endif ++#else ++ union { char *__s; wchar_t __w; } __u; ++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); ++ _M_data->_M_decimal_point = __u.__w; ++ ++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); ++ _M_data->_M_thousands_sep = __u.__w; ++#endif ++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ ++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); ++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); ++ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); ++ ++ wchar_t* __wcs_ps = 0; ++ wchar_t* __wcs_ns = 0; ++ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); ++ try ++ { ++ mbstate_t __state; ++ size_t __len = strlen(__cpossign); ++ if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ __wcs_ps = new wchar_t[__len]; ++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); ++ _M_data->_M_positive_sign = __wcs_ps; ++ } ++ else ++ _M_data->_M_positive_sign = L""; ++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); ++ ++ __len = strlen(__cnegsign); ++ if (!__nposn) ++ _M_data->_M_negative_sign = L"()"; ++ else if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ __wcs_ns = new wchar_t[__len]; ++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); ++ _M_data->_M_negative_sign = __wcs_ns; ++ } ++ else ++ _M_data->_M_negative_sign = L""; ++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); ++ ++ // _Intl == true. ++ __len = strlen(__ccurr); ++ if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ wchar_t* __wcs = new wchar_t[__len]; ++ mbsrtowcs(__wcs, &__ccurr, __len, &__state); ++ _M_data->_M_curr_symbol = __wcs; ++ } ++ else ++ _M_data->_M_curr_symbol = L""; ++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); ++ } ++ catch (...) ++ { ++ delete _M_data; ++ _M_data = 0; ++ delete __wcs_ps; ++ delete __wcs_ns; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#else ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ __throw_exception_again; ++ } ++ ++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, ++ __cloc)); ++ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); ++ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); ++ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); ++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, ++ __pposn); ++ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); ++ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); ++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, ++ __nposn); ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#else ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ } ++ } ++ ++ template<> ++ void ++ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ const char*) ++#else ++ const char* __name) ++#endif ++ { ++ if (!_M_data) ++ _M_data = new __moneypunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_decimal_point = L'.'; ++ _M_data->_M_thousands_sep = L','; ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_curr_symbol = L""; ++ _M_data->_M_curr_symbol_size = 0; ++ _M_data->_M_positive_sign = L""; ++ _M_data->_M_positive_sign_size = 0; ++ _M_data->_M_negative_sign = L""; ++ _M_data->_M_negative_sign_size = 0; ++ _M_data->_M_frac_digits = 0; ++ _M_data->_M_pos_format = money_base::_S_default_pattern; ++ _M_data->_M_neg_format = money_base::_S_default_pattern; ++ ++ // Use ctype::widen code without the facet... ++ for (size_t __i = 0; __i < money_base::_S_end; ++__i) ++ _M_data->_M_atoms[__i] = ++ static_cast(money_base::_S_atoms[__i]); ++ } ++ else ++ { ++ // Named locale. ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __c_locale __old = __uselocale(__cloc); ++#else ++ // Switch to named locale so that mbsrtowcs will work. ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, __name); ++#endif ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix this... should be monetary ++#endif ++#ifdef __UCLIBC__ ++# ifdef __UCLIBC_HAS_XLOCALE__ ++ _M_data->_M_decimal_point = __cloc->decimal_point_wc; ++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; ++# else ++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; ++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; ++# endif ++#else ++ union { char *__s; wchar_t __w; } __u; ++ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); ++ _M_data->_M_decimal_point = __u.__w; ++ ++ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); ++ _M_data->_M_thousands_sep = __u.__w; ++#endif ++ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ ++ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); ++ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); ++ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); ++ ++ wchar_t* __wcs_ps = 0; ++ wchar_t* __wcs_ns = 0; ++ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); ++ try ++ { ++ mbstate_t __state; ++ size_t __len; ++ __len = strlen(__cpossign); ++ if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ __wcs_ps = new wchar_t[__len]; ++ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); ++ _M_data->_M_positive_sign = __wcs_ps; ++ } ++ else ++ _M_data->_M_positive_sign = L""; ++ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); ++ ++ __len = strlen(__cnegsign); ++ if (!__nposn) ++ _M_data->_M_negative_sign = L"()"; ++ else if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ __wcs_ns = new wchar_t[__len]; ++ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); ++ _M_data->_M_negative_sign = __wcs_ns; ++ } ++ else ++ _M_data->_M_negative_sign = L""; ++ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); ++ ++ // _Intl == true. ++ __len = strlen(__ccurr); ++ if (__len) ++ { ++ ++__len; ++ memset(&__state, 0, sizeof(mbstate_t)); ++ wchar_t* __wcs = new wchar_t[__len]; ++ mbsrtowcs(__wcs, &__ccurr, __len, &__state); ++ _M_data->_M_curr_symbol = __wcs; ++ } ++ else ++ _M_data->_M_curr_symbol = L""; ++ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); ++ } ++ catch (...) ++ { ++ delete _M_data; ++ _M_data = 0; ++ delete __wcs_ps; ++ delete __wcs_ns; ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#else ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ __throw_exception_again; ++ } ++ ++ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); ++ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); ++ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); ++ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); ++ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, ++ __pposn); ++ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); ++ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); ++ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, ++ __nposn); ++ ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __uselocale(__old); ++#else ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ } ++ } ++ ++ template<> ++ moneypunct::~moneypunct() ++ { ++ if (_M_data->_M_positive_sign_size) ++ delete [] _M_data->_M_positive_sign; ++ if (_M_data->_M_negative_sign_size ++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) ++ delete [] _M_data->_M_negative_sign; ++ if (_M_data->_M_curr_symbol_size) ++ delete [] _M_data->_M_curr_symbol; ++ delete _M_data; ++ } ++ ++ template<> ++ moneypunct::~moneypunct() ++ { ++ if (_M_data->_M_positive_sign_size) ++ delete [] _M_data->_M_positive_sign; ++ if (_M_data->_M_negative_sign_size ++ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) ++ delete [] _M_data->_M_negative_sign; ++ if (_M_data->_M_curr_symbol_size) ++ delete [] _M_data->_M_curr_symbol; ++ delete _M_data; ++ } ++#endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,160 @@ ++// std::numpunct implementation details, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#define _LIBC ++#include ++#undef _LIBC ++#include ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning tailor for stub locale support ++#endif ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __nl_langinfo_l(N, L) nl_langinfo((N)) ++#endif ++ ++namespace std ++{ ++ template<> ++ void ++ numpunct::_M_initialize_numpunct(__c_locale __cloc) ++ { ++ if (!_M_data) ++ _M_data = new __numpunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_use_grouping = false; ++ ++ _M_data->_M_decimal_point = '.'; ++ _M_data->_M_thousands_sep = ','; ++ ++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) ++ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; ++ ++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) ++ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; ++ } ++ else ++ { ++ // Named locale. ++ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, ++ __cloc)); ++ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, ++ __cloc)); ++ ++ // Check for NULL, which implies no grouping. ++ if (_M_data->_M_thousands_sep == '\0') ++ _M_data->_M_grouping = ""; ++ else ++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ } ++ ++ // NB: There is no way to extact this info from posix locales. ++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); ++ _M_data->_M_truename = "true"; ++ _M_data->_M_truename_size = 4; ++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); ++ _M_data->_M_falsename = "false"; ++ _M_data->_M_falsename_size = 5; ++ } ++ ++ template<> ++ numpunct::~numpunct() ++ { delete _M_data; } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ template<> ++ void ++ numpunct::_M_initialize_numpunct(__c_locale __cloc) ++ { ++ if (!_M_data) ++ _M_data = new __numpunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_data->_M_grouping = ""; ++ _M_data->_M_grouping_size = 0; ++ _M_data->_M_use_grouping = false; ++ ++ _M_data->_M_decimal_point = L'.'; ++ _M_data->_M_thousands_sep = L','; ++ ++ // Use ctype::widen code without the facet... ++ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) ++ _M_data->_M_atoms_out[__i] = ++ static_cast(__num_base::_S_atoms_out[__i]); ++ ++ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) ++ _M_data->_M_atoms_in[__j] = ++ static_cast(__num_base::_S_atoms_in[__j]); ++ } ++ else ++ { ++ // Named locale. ++ // NB: In the GNU model wchar_t is always 32 bit wide. ++ union { char *__s; wchar_t __w; } __u; ++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); ++ _M_data->_M_decimal_point = __u.__w; ++ ++ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); ++ _M_data->_M_thousands_sep = __u.__w; ++ ++ if (_M_data->_M_thousands_sep == L'\0') ++ _M_data->_M_grouping = ""; ++ else ++ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); ++ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); ++ } ++ ++ // NB: There is no way to extact this info from posix locales. ++ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); ++ _M_data->_M_truename = L"true"; ++ _M_data->_M_truename_size = 4; ++ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); ++ _M_data->_M_falsename = L"false"; ++ _M_data->_M_falsename_size = 5; ++ } ++ ++ template<> ++ numpunct::~numpunct() ++ { delete _M_data; } ++ #endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,406 @@ ++// std::time_get, std::time_put implementation, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions ++// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions ++// ++ ++// Written by Benjamin Kosnik ++ ++#include ++#include ++ ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning tailor for stub locale support ++#endif ++#ifndef __UCLIBC_HAS_XLOCALE__ ++#define __nl_langinfo_l(N, L) nl_langinfo((N)) ++#endif ++ ++namespace std ++{ ++ template<> ++ void ++ __timepunct:: ++ _M_put(char* __s, size_t __maxlen, const char* __format, ++ const tm* __tm) const ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, ++ _M_c_locale_timepunct); ++#else ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, _M_name_timepunct); ++ const size_t __len = strftime(__s, __maxlen, __format, __tm); ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ // Make sure __s is null terminated. ++ if (__len == 0) ++ __s[0] = '\0'; ++ } ++ ++ template<> ++ void ++ __timepunct::_M_initialize_timepunct(__c_locale __cloc) ++ { ++ if (!_M_data) ++ _M_data = new __timepunct_cache; ++ ++ if (!__cloc) ++ { ++ // "C" locale ++ _M_c_locale_timepunct = _S_get_c_locale(); ++ ++ _M_data->_M_date_format = "%m/%d/%y"; ++ _M_data->_M_date_era_format = "%m/%d/%y"; ++ _M_data->_M_time_format = "%H:%M:%S"; ++ _M_data->_M_time_era_format = "%H:%M:%S"; ++ _M_data->_M_date_time_format = ""; ++ _M_data->_M_date_time_era_format = ""; ++ _M_data->_M_am = "AM"; ++ _M_data->_M_pm = "PM"; ++ _M_data->_M_am_pm_format = ""; ++ ++ // Day names, starting with "C"'s Sunday. ++ _M_data->_M_day1 = "Sunday"; ++ _M_data->_M_day2 = "Monday"; ++ _M_data->_M_day3 = "Tuesday"; ++ _M_data->_M_day4 = "Wednesday"; ++ _M_data->_M_day5 = "Thursday"; ++ _M_data->_M_day6 = "Friday"; ++ _M_data->_M_day7 = "Saturday"; ++ ++ // Abbreviated day names, starting with "C"'s Sun. ++ _M_data->_M_aday1 = "Sun"; ++ _M_data->_M_aday2 = "Mon"; ++ _M_data->_M_aday3 = "Tue"; ++ _M_data->_M_aday4 = "Wed"; ++ _M_data->_M_aday5 = "Thu"; ++ _M_data->_M_aday6 = "Fri"; ++ _M_data->_M_aday7 = "Sat"; ++ ++ // Month names, starting with "C"'s January. ++ _M_data->_M_month01 = "January"; ++ _M_data->_M_month02 = "February"; ++ _M_data->_M_month03 = "March"; ++ _M_data->_M_month04 = "April"; ++ _M_data->_M_month05 = "May"; ++ _M_data->_M_month06 = "June"; ++ _M_data->_M_month07 = "July"; ++ _M_data->_M_month08 = "August"; ++ _M_data->_M_month09 = "September"; ++ _M_data->_M_month10 = "October"; ++ _M_data->_M_month11 = "November"; ++ _M_data->_M_month12 = "December"; ++ ++ // Abbreviated month names, starting with "C"'s Jan. ++ _M_data->_M_amonth01 = "Jan"; ++ _M_data->_M_amonth02 = "Feb"; ++ _M_data->_M_amonth03 = "Mar"; ++ _M_data->_M_amonth04 = "Apr"; ++ _M_data->_M_amonth05 = "May"; ++ _M_data->_M_amonth06 = "Jun"; ++ _M_data->_M_amonth07 = "Jul"; ++ _M_data->_M_amonth08 = "Aug"; ++ _M_data->_M_amonth09 = "Sep"; ++ _M_data->_M_amonth10 = "Oct"; ++ _M_data->_M_amonth11 = "Nov"; ++ _M_data->_M_amonth12 = "Dec"; ++ } ++ else ++ { ++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); ++ ++ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); ++ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); ++ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); ++ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); ++ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); ++ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, ++ __cloc); ++ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); ++ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); ++ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); ++ ++ // Day names, starting with "C"'s Sunday. ++ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); ++ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); ++ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); ++ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); ++ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); ++ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); ++ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); ++ ++ // Abbreviated day names, starting with "C"'s Sun. ++ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); ++ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); ++ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); ++ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); ++ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); ++ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); ++ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); ++ ++ // Month names, starting with "C"'s January. ++ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); ++ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); ++ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); ++ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); ++ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); ++ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); ++ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); ++ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); ++ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); ++ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); ++ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); ++ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); ++ ++ // Abbreviated month names, starting with "C"'s Jan. ++ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); ++ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); ++ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); ++ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); ++ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); ++ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); ++ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); ++ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); ++ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); ++ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); ++ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); ++ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); ++ } ++ } ++ ++#ifdef _GLIBCXX_USE_WCHAR_T ++ template<> ++ void ++ __timepunct:: ++ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, ++ const tm* __tm) const ++ { ++#ifdef __UCLIBC_HAS_XLOCALE__ ++ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); ++ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, ++ _M_c_locale_timepunct); ++#else ++ char* __old = strdup(setlocale(LC_ALL, NULL)); ++ setlocale(LC_ALL, _M_name_timepunct); ++ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); ++ setlocale(LC_ALL, __old); ++ free(__old); ++#endif ++ // Make sure __s is null terminated. ++ if (__len == 0) ++ __s[0] = L'\0'; ++ } ++ ++ template<> ++ void ++ __timepunct::_M_initialize_timepunct(__c_locale __cloc) ++ { ++ if (!_M_data) ++ _M_data = new __timepunct_cache; ++ ++#warning wide time stuff ++// if (!__cloc) ++ { ++ // "C" locale ++ _M_c_locale_timepunct = _S_get_c_locale(); ++ ++ _M_data->_M_date_format = L"%m/%d/%y"; ++ _M_data->_M_date_era_format = L"%m/%d/%y"; ++ _M_data->_M_time_format = L"%H:%M:%S"; ++ _M_data->_M_time_era_format = L"%H:%M:%S"; ++ _M_data->_M_date_time_format = L""; ++ _M_data->_M_date_time_era_format = L""; ++ _M_data->_M_am = L"AM"; ++ _M_data->_M_pm = L"PM"; ++ _M_data->_M_am_pm_format = L""; ++ ++ // Day names, starting with "C"'s Sunday. ++ _M_data->_M_day1 = L"Sunday"; ++ _M_data->_M_day2 = L"Monday"; ++ _M_data->_M_day3 = L"Tuesday"; ++ _M_data->_M_day4 = L"Wednesday"; ++ _M_data->_M_day5 = L"Thursday"; ++ _M_data->_M_day6 = L"Friday"; ++ _M_data->_M_day7 = L"Saturday"; ++ ++ // Abbreviated day names, starting with "C"'s Sun. ++ _M_data->_M_aday1 = L"Sun"; ++ _M_data->_M_aday2 = L"Mon"; ++ _M_data->_M_aday3 = L"Tue"; ++ _M_data->_M_aday4 = L"Wed"; ++ _M_data->_M_aday5 = L"Thu"; ++ _M_data->_M_aday6 = L"Fri"; ++ _M_data->_M_aday7 = L"Sat"; ++ ++ // Month names, starting with "C"'s January. ++ _M_data->_M_month01 = L"January"; ++ _M_data->_M_month02 = L"February"; ++ _M_data->_M_month03 = L"March"; ++ _M_data->_M_month04 = L"April"; ++ _M_data->_M_month05 = L"May"; ++ _M_data->_M_month06 = L"June"; ++ _M_data->_M_month07 = L"July"; ++ _M_data->_M_month08 = L"August"; ++ _M_data->_M_month09 = L"September"; ++ _M_data->_M_month10 = L"October"; ++ _M_data->_M_month11 = L"November"; ++ _M_data->_M_month12 = L"December"; ++ ++ // Abbreviated month names, starting with "C"'s Jan. ++ _M_data->_M_amonth01 = L"Jan"; ++ _M_data->_M_amonth02 = L"Feb"; ++ _M_data->_M_amonth03 = L"Mar"; ++ _M_data->_M_amonth04 = L"Apr"; ++ _M_data->_M_amonth05 = L"May"; ++ _M_data->_M_amonth06 = L"Jun"; ++ _M_data->_M_amonth07 = L"Jul"; ++ _M_data->_M_amonth08 = L"Aug"; ++ _M_data->_M_amonth09 = L"Sep"; ++ _M_data->_M_amonth10 = L"Oct"; ++ _M_data->_M_amonth11 = L"Nov"; ++ _M_data->_M_amonth12 = L"Dec"; ++ } ++#if 0 ++ else ++ { ++ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); ++ ++ union { char *__s; wchar_t *__w; } __u; ++ ++ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); ++ _M_data->_M_date_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); ++ _M_data->_M_date_era_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); ++ _M_data->_M_time_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); ++ _M_data->_M_time_era_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); ++ _M_data->_M_date_time_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); ++ _M_data->_M_date_time_era_format = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); ++ _M_data->_M_am = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); ++ _M_data->_M_pm = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); ++ _M_data->_M_am_pm_format = __u.__w; ++ ++ // Day names, starting with "C"'s Sunday. ++ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); ++ _M_data->_M_day1 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); ++ _M_data->_M_day2 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); ++ _M_data->_M_day3 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); ++ _M_data->_M_day4 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); ++ _M_data->_M_day5 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); ++ _M_data->_M_day6 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); ++ _M_data->_M_day7 = __u.__w; ++ ++ // Abbreviated day names, starting with "C"'s Sun. ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); ++ _M_data->_M_aday1 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); ++ _M_data->_M_aday2 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); ++ _M_data->_M_aday3 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); ++ _M_data->_M_aday4 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); ++ _M_data->_M_aday5 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); ++ _M_data->_M_aday6 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); ++ _M_data->_M_aday7 = __u.__w; ++ ++ // Month names, starting with "C"'s January. ++ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); ++ _M_data->_M_month01 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); ++ _M_data->_M_month02 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); ++ _M_data->_M_month03 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); ++ _M_data->_M_month04 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); ++ _M_data->_M_month05 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); ++ _M_data->_M_month06 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); ++ _M_data->_M_month07 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); ++ _M_data->_M_month08 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); ++ _M_data->_M_month09 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); ++ _M_data->_M_month10 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); ++ _M_data->_M_month11 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); ++ _M_data->_M_month12 = __u.__w; ++ ++ // Abbreviated month names, starting with "C"'s Jan. ++ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); ++ _M_data->_M_amonth01 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); ++ _M_data->_M_amonth02 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); ++ _M_data->_M_amonth03 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); ++ _M_data->_M_amonth04 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); ++ _M_data->_M_amonth05 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); ++ _M_data->_M_amonth06 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); ++ _M_data->_M_amonth07 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); ++ _M_data->_M_amonth08 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); ++ _M_data->_M_amonth09 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); ++ _M_data->_M_amonth10 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); ++ _M_data->_M_amonth11 = __u.__w; ++ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); ++ _M_data->_M_amonth12 = __u.__w; ++ } ++#endif // 0 ++ } ++#endif ++} +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 2008-08-28 17:55:56.000000000 -0700 +@@ -0,0 +1,68 @@ ++// std::time_get, std::time_put implementation, GNU version -*- C++ -*- ++ ++// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) ++// any later version. ++ ++// This 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 General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING. If not, write to the Free ++// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++// USA. ++ ++// As a special exception, you may use this file as part of a free software ++// library without restriction. Specifically, if other files instantiate ++// templates or use macros or inline functions from this file, or you compile ++// this file and link it with other files to produce an executable, this ++// file does not by itself cause the resulting executable to be covered by ++// the GNU General Public License. This exception does not however ++// invalidate any other reasons why the executable file might be covered by ++// the GNU General Public License. ++ ++// ++// ISO C++ 14882: 22.2.5.1.2 - time_get functions ++// ISO C++ 14882: 22.2.5.3.2 - time_put functions ++// ++ ++// Written by Benjamin Kosnik ++ ++ template ++ __timepunct<_CharT>::__timepunct(size_t __refs) ++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), ++ _M_name_timepunct(_S_get_c_name()) ++ { _M_initialize_timepunct(); } ++ ++ template ++ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) ++ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), ++ _M_name_timepunct(_S_get_c_name()) ++ { _M_initialize_timepunct(); } ++ ++ template ++ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, ++ size_t __refs) ++ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), ++ _M_name_timepunct(__s) ++ { ++ char* __tmp = new char[std::strlen(__s) + 1]; ++ std::strcpy(__tmp, __s); ++ _M_name_timepunct = __tmp; ++ _M_initialize_timepunct(__cloc); ++ } ++ ++ template ++ __timepunct<_CharT>::~__timepunct() ++ { ++ if (_M_name_timepunct != _S_get_c_name()) ++ delete [] _M_name_timepunct; ++ delete _M_data; ++ _S_destroy_c_locale(_M_c_locale_timepunct); ++ } +Index: gcc-4.3.2/libstdc++-v3/configure +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/configure 2008-07-07 12:49:54.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/configure 2008-08-28 18:02:13.000000000 -0700 +@@ -14003,7 +14003,7 @@ + enableval="$enable_clocale" + + case "$enableval" in +- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; ++ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; + *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 + echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} + { (exit 1); exit 1; }; } ;; +@@ -14036,6 +14036,9 @@ + # Default to "generic". + if test $enable_clocale_flag = auto; then + case ${target_os} in ++ *-uclibc*) ++ enable_clocale_flag=uclibc ++ ;; + linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) + enable_clocale_flag=gnu + ;; +@@ -14424,6 +14427,76 @@ + CTIME_CC=config/locale/generic/time_members.cc + CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h + ;; ++ uclibc) ++ echo "$as_me:$LINENO: result: uclibc" >&5 ++echo "${ECHO_T}uclibc" >&6 ++ ++ # Declare intention to use gettext, and add support for specific ++ # languages. ++ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT ++ ALL_LINGUAS="de fr" ++ ++ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. ++ # Extract the first word of "msgfmt", so it can be a program name with args. ++set dummy msgfmt; ac_word=$2 ++echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++if test "${ac_cv_prog_check_msgfmt+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test -n "$check_msgfmt"; then ++ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ ac_cv_prog_check_msgfmt="yes" ++ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++done ++ ++ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" ++fi ++fi ++check_msgfmt=$ac_cv_prog_check_msgfmt ++if test -n "$check_msgfmt"; then ++ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 ++echo "${ECHO_T}$check_msgfmt" >&6 ++else ++ echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6 ++fi ++ ++ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then ++ USE_NLS=yes ++ fi ++ # Export the build objects. ++ for ling in $ALL_LINGUAS; do \ ++ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ ++ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ ++ done ++ ++ ++ ++ CLOCALE_H=config/locale/uclibc/c_locale.h ++ CLOCALE_CC=config/locale/uclibc/c_locale.cc ++ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc ++ CCOLLATE_CC=config/locale/uclibc/collate_members.cc ++ CCTYPE_CC=config/locale/uclibc/ctype_members.cc ++ CMESSAGES_H=config/locale/uclibc/messages_members.h ++ CMESSAGES_CC=config/locale/uclibc/messages_members.cc ++ CMONEY_CC=config/locale/uclibc/monetary_members.cc ++ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc ++ CTIME_H=config/locale/uclibc/time_members.h ++ CTIME_CC=config/locale/uclibc/time_members.cc ++ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h ++ ;; + esac + + # This is where the testsuite looks for locale catalogs, using the +@@ -17016,7 +17089,7 @@ + + # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. + cat > conftest.$ac_ext << EOF +-#line 17019 "configure" ++#line 17092 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +Index: gcc-4.3.2/libstdc++-v3/include/c_compatibility/wchar.h +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/include/c_compatibility/wchar.h 2007-03-04 14:59:49.000000000 -0800 ++++ gcc-4.3.2/libstdc++-v3/include/c_compatibility/wchar.h 2008-08-28 17:55:56.000000000 -0700 +@@ -106,7 +106,9 @@ + using std::wmemcpy; + using std::wmemmove; + using std::wmemset; ++#if _GLIBCXX_HAVE_WCSFTIME + using std::wcsftime; ++#endif + + #if _GLIBCXX_USE_C99 + using std::wcstold; +Index: gcc-4.3.2/libstdc++-v3/include/c_std/cwchar +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/include/c_std/cwchar 2007-05-27 07:50:21.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/include/c_std/cwchar 2008-08-28 17:55:56.000000000 -0700 +@@ -182,7 +182,9 @@ + using ::wcscoll; + using ::wcscpy; + using ::wcscspn; ++#if _GLIBCXX_HAVE_WCSFTIME + using ::wcsftime; ++#endif + using ::wcslen; + using ::wcsncat; + using ::wcsncmp; diff --git a/recipes/gcc/gcc-4.3.4/203-uclibc-locale-no__x.patch b/recipes/gcc/gcc-4.3.4/203-uclibc-locale-no__x.patch new file mode 100644 index 0000000000..f39e65220c --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/203-uclibc-locale-no__x.patch @@ -0,0 +1,233 @@ +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-16 01:33:23.000000000 -0700 +@@ -60,4 +60,49 @@ + extern "C" __typeof(wctype_l) __wctype_l; + #endif + ++# define __nl_langinfo_l nl_langinfo_l ++# define __strcoll_l strcoll_l ++# define __strftime_l strftime_l ++# define __strtod_l strtod_l ++# define __strtof_l strtof_l ++# define __strtold_l strtold_l ++# define __strxfrm_l strxfrm_l ++# define __newlocale newlocale ++# define __freelocale freelocale ++# define __duplocale duplocale ++# define __uselocale uselocale ++ ++# ifdef _GLIBCXX_USE_WCHAR_T ++# define __iswctype_l iswctype_l ++# define __towlower_l towlower_l ++# define __towupper_l towupper_l ++# define __wcscoll_l wcscoll_l ++# define __wcsftime_l wcsftime_l ++# define __wcsxfrm_l wcsxfrm_l ++# define __wctype_l wctype_l ++# endif ++ ++#else ++# define __nl_langinfo_l(N, L) nl_langinfo((N)) ++# define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) ++# define __strtod_l(S, E, L) strtod((S), (E)) ++# define __strtof_l(S, E, L) strtof((S), (E)) ++# define __strtold_l(S, E, L) strtold((S), (E)) ++# define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) ++# warning should dummy __newlocale check for C|POSIX ? ++# define __newlocale(a, b, c) NULL ++# define __freelocale(a) ((void)0) ++# define __duplocale(a) __c_locale() ++//# define __uselocale ? ++// ++# ifdef _GLIBCXX_USE_WCHAR_T ++# define __iswctype_l(C, M, L) iswctype((C), (M)) ++# define __towlower_l(C, L) towlower((C)) ++# define __towupper_l(C, L) towupper((C)) ++# define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) ++//# define __wcsftime_l(S, M, F, T, L) wcsftime((S), (M), (F), (T)) ++# define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) ++# define __wctype_l(S, L) wctype((S)) ++# endif ++ + #endif // GLIBC 2.3 and later +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-16 01:33:00.000000000 -0700 +@@ -39,20 +39,6 @@ + #include + #include + +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) +-#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) +-#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) +-#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) +-#define __strtof_l(S, E, L) strtof((S), (E)) +-#define __strtod_l(S, E, L) strtod((S), (E)) +-#define __strtold_l(S, E, L) strtold((S), (E)) +-#warning should dummy __newlocale check for C|POSIX ? +-#define __newlocale(a, b, c) NULL +-#define __freelocale(a) ((void)0) +-#define __duplocale(a) __c_locale() +-#endif +- + namespace std + { + template<> +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -36,13 +36,6 @@ + #include + #include + +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) +-#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) +-#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) +-#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) +-#endif +- + namespace std + { + // These are basically extensions to char_traits, and perhaps should +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -43,10 +43,6 @@ + #warning tailor for stub locale support + #endif + +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __nl_langinfo_l(N, L) nl_langinfo((N)) +-#endif +- + namespace std + { + // Construct and return valid pattern consisting of some combination of: +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -41,9 +41,6 @@ + #ifdef __UCLIBC_MJN3_ONLY__ + #warning tailor for stub locale support + #endif +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __nl_langinfo_l(N, L) nl_langinfo((N)) +-#endif + + namespace std + { +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -40,9 +40,6 @@ + #ifdef __UCLIBC_MJN3_ONLY__ + #warning tailor for stub locale support + #endif +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __nl_langinfo_l(N, L) nl_langinfo((N)) +-#endif + + namespace std + { +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -38,13 +38,6 @@ + #undef _LIBC + #include + +-#ifndef __UCLIBC_HAS_XLOCALE__ +-#define __wctype_l(S, L) wctype((S)) +-#define __towupper_l(C, L) towupper((C)) +-#define __towlower_l(C, L) towlower((C)) +-#define __iswctype_l(C, M, L) iswctype((C), (M)) +-#endif +- + namespace std + { + // NB: The other ctype specializations are in src/locale.cc and +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-16 01:27:18.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-16 01:30:31.000000000 -0700 +@@ -39,13 +39,10 @@ + #ifdef __UCLIBC_MJN3_ONLY__ + #warning fix gettext stuff + #endif +-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +-extern "C" char *__dcgettext(const char *domainname, +- const char *msgid, int category); + #undef gettext +-#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) ++#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ ++#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES) + #else +-#undef gettext + #define gettext(msgid) (msgid) + #endif + +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-16 01:31:43.000000000 -0700 +@@ -36,15 +36,11 @@ + #ifdef __UCLIBC_MJN3_ONLY__ + #warning fix prototypes for *textdomain funcs + #endif +-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +-extern "C" char *__textdomain(const char *domainname); +-extern "C" char *__bindtextdomain(const char *domainname, +- const char *dirname); +-#else +-#undef __textdomain +-#undef __bindtextdomain +-#define __textdomain(D) ((void)0) +-#define __bindtextdomain(D,P) ((void)0) ++#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__ ++#undef textdomain ++#undef bindtextdomain ++#define textdomain(D) ((void)0) ++#define bindtextdomain(D,P) ((void)0) + #endif + + // Non-virtual member functions. +@@ -70,7 +66,7 @@ + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char* __dir) const + { +- __bindtextdomain(__s.c_str(), __dir); ++ bindtextdomain(__s.c_str(), __dir); + return this->do_open(__s, __loc); + } + +@@ -90,7 +86,7 @@ + { + // No error checking is done, assume the catalog exists and can + // be used. +- __textdomain(__s.c_str()); ++ textdomain(__s.c_str()); + return 0; + } + +Index: gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-16 01:29:20.000000000 -0700 ++++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-16 01:30:31.000000000 -0700 +@@ -68,6 +68,7 @@ + { + extern "C" __typeof(uselocale) __uselocale; + } ++#define __uselocale uselocale + #endif + + namespace std diff --git a/recipes/gcc/gcc-4.3.4/204-uclibc-locale-wchar_fix.patch b/recipes/gcc/gcc-4.3.4/204-uclibc-locale-wchar_fix.patch new file mode 100644 index 0000000000..160ab35bb3 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/204-uclibc-locale-wchar_fix.patch @@ -0,0 +1,48 @@ +--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100 ++++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:37:27 +0100 +@@ -401,7 +401,7 @@ + # ifdef __UCLIBC_HAS_XLOCALE__ + _M_data->_M_decimal_point = __cloc->decimal_point_wc; + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; +-# else ++# elif defined __UCLIBC_HAS_LOCALE__ + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; + # endif +@@ -556,7 +556,7 @@ + # ifdef __UCLIBC_HAS_XLOCALE__ + _M_data->_M_decimal_point = __cloc->decimal_point_wc; + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; +-# else ++# elif defined __UCLIBC_HAS_LOCALE__ + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; + # endif +--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100 ++++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:37:27 +0100 +@@ -127,12 +127,25 @@ + { + // Named locale. + // NB: In the GNU model wchar_t is always 32 bit wide. ++#ifdef __UCLIBC_MJN3_ONLY__ ++#warning fix this... should be numeric ++#endif ++#ifdef __UCLIBC__ ++# ifdef __UCLIBC_HAS_XLOCALE__ ++ _M_data->_M_decimal_point = __cloc->decimal_point_wc; ++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; ++# elif defined __UCLIBC_HAS_LOCALE__ ++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; ++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; ++# endif ++#else + union { char *__s; wchar_t __w; } __u; + __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); + _M_data->_M_decimal_point = __u.__w; + + __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); + _M_data->_M_thousands_sep = __u.__w; ++#endif + + if (_M_data->_M_thousands_sep == L'\0') + _M_data->_M_grouping = ""; diff --git a/recipes/gcc/gcc-4.3.4/205-uclibc-locale-update.patch b/recipes/gcc/gcc-4.3.4/205-uclibc-locale-update.patch new file mode 100644 index 0000000000..48eaa1d442 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/205-uclibc-locale-update.patch @@ -0,0 +1,519 @@ +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-09-17 22:35:29.000000000 -0700 +@@ -39,23 +39,20 @@ + #include + #include + +-namespace std +-{ ++_GLIBCXX_BEGIN_NAMESPACE(std) ++ + template<> + void + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { +- if (!(__err & ios_base::failbit)) +- { +- char* __sanity; +- errno = 0; +- float __f = __strtof_l(__s, &__sanity, __cloc); +- if (__sanity != __s && errno != ERANGE) +- __v = __f; +- else +- __err |= ios_base::failbit; +- } ++ char* __sanity; ++ errno = 0; ++ float __f = __strtof_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __f; ++ else ++ __err |= ios_base::failbit; + } + + template<> +@@ -63,16 +60,13 @@ + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { +- if (!(__err & ios_base::failbit)) +- { +- char* __sanity; +- errno = 0; +- double __d = __strtod_l(__s, &__sanity, __cloc); +- if (__sanity != __s && errno != ERANGE) +- __v = __d; +- else +- __err |= ios_base::failbit; +- } ++ char* __sanity; ++ errno = 0; ++ double __d = __strtod_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __d; ++ else ++ __err |= ios_base::failbit; + } + + template<> +@@ -80,16 +74,13 @@ + __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, + const __c_locale& __cloc) + { +- if (!(__err & ios_base::failbit)) +- { +- char* __sanity; +- errno = 0; +- long double __ld = __strtold_l(__s, &__sanity, __cloc); +- if (__sanity != __s && errno != ERANGE) +- __v = __ld; +- else +- __err |= ios_base::failbit; +- } ++ char* __sanity; ++ errno = 0; ++ long double __ld = __strtold_l(__s, &__sanity, __cloc); ++ if (__sanity != __s && errno != ERANGE) ++ __v = __ld; ++ else ++ __err |= ios_base::failbit; + } + + void +@@ -110,17 +101,18 @@ + void + locale::facet::_S_destroy_c_locale(__c_locale& __cloc) + { +- if (_S_get_c_locale() != __cloc) ++ if (__cloc && _S_get_c_locale() != __cloc) + __freelocale(__cloc); + } + + __c_locale + locale::facet::_S_clone_c_locale(__c_locale& __cloc) + { return __duplocale(__cloc); } +-} // namespace std + +-namespace __gnu_cxx +-{ ++_GLIBCXX_END_NAMESPACE ++ ++_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) ++ + const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = + { + "LC_CTYPE", +@@ -138,9 +130,11 @@ + "LC_IDENTIFICATION" + #endif + }; +-} + +-namespace std +-{ ++_GLIBCXX_END_NAMESPACE ++ ++_GLIBCXX_BEGIN_NAMESPACE(std) ++ + const char* const* const locale::_S_categories = __gnu_cxx::category_names; +-} // namespace std ++ ++_GLIBCXX_END_NAMESPACE +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-09-17 23:09:49.000000000 -0700 +@@ -33,16 +33,20 @@ + + // Written by Benjamin Kosnik + ++#include ++#ifdef __UCLIBC_HAS_LOCALE__ + #define _LIBC + #include + #undef _LIBC ++#else ++#include ++#endif + #include + +-namespace std +-{ ++_GLIBCXX_BEGIN_NAMESPACE(std) ++ + // NB: The other ctype specializations are in src/locale.cc and + // various /config/os/* files. +- template<> + ctype_byname::ctype_byname(const char* __s, size_t __refs) + : ctype(0, false, __refs) + { +@@ -57,6 +61,8 @@ + #endif + } + } ++ ctype_byname::~ctype_byname() ++ { } + + #ifdef _GLIBCXX_USE_WCHAR_T + ctype::__wmask_type +@@ -138,17 +144,33 @@ + ctype:: + do_is(mask __m, wchar_t __c) const + { +- // Highest bitmask in ctype_base == 10, but extra in "C" +- // library for blank. ++ // The case of __m == ctype_base::space is particularly important, ++ // due to its use in many istream functions. Therefore we deal with ++ // it first, exploiting the knowledge that on GNU systems _M_bit[5] ++ // is the mask corresponding to ctype_base::space. NB: an encoding ++ // change would not affect correctness! ++ + bool __ret = false; +- const size_t __bitmasksize = 11; +- for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) +- if (__m & _M_bit[__bitcur] +- && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) +- { +- __ret = true; +- break; +- } ++ if (__m == _M_bit[5]) ++ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype); ++ else ++ { ++ // Highest bitmask in ctype_base == 10, but extra in "C" ++ // library for blank. ++ const size_t __bitmasksize = 11; ++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) ++ if (__m & _M_bit[__bitcur]) ++ { ++ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) ++ { ++ __ret = true; ++ break; ++ } ++ else if (__m == _M_bit[__bitcur]) ++ break; ++ } ++ } ++ + return __ret; + } + +@@ -290,4 +312,5 @@ + #endif + } + #endif // _GLIBCXX_USE_WCHAR_T +-} ++ ++_GLIBCXX_END_NAMESPACE +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-09-17 23:13:34.000000000 -0700 +@@ -53,12 +53,16 @@ + template + messages<_CharT>::messages(__c_locale __cloc, const char* __s, + size_t __refs) +- : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), +- _M_name_messages(__s) ++ : facet(__refs), _M_c_locale_messages(NULL), ++ _M_name_messages(NULL) + { +- char* __tmp = new char[std::strlen(__s) + 1]; +- std::strcpy(__tmp, __s); ++ const size_t __len = std::strlen(__s) + 1; ++ char* __tmp = new char[__len]; ++ std::memcpy(__tmp, __s, __len); + _M_name_messages = __tmp; ++ ++ // Last to avoid leaking memory if new throws. ++ _M_c_locale_messages = _S_clone_c_locale(__cloc); + } + + template +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-09-17 22:35:29.000000000 -0700 +@@ -33,9 +33,14 @@ + + // Written by Benjamin Kosnik + ++#include ++#ifdef __UCLIBC_HAS_LOCALE__ + #define _LIBC + #include + #undef _LIBC ++#else ++#include ++#endif + #include + + #ifdef __UCLIBC_MJN3_ONLY__ +@@ -206,7 +211,7 @@ + } + break; + default: +- ; ++ __ret = pattern(); + } + return __ret; + } +@@ -390,7 +395,9 @@ + __c_locale __old = __uselocale(__cloc); + #else + // Switch to named locale so that mbsrtowcs will work. +- char* __old = strdup(setlocale(LC_ALL, NULL)); ++ char* __old = setlocale(LC_ALL, NULL); ++ const size_t __llen = strlen(__old) + 1; ++ char* __sav = new char[__llen]; + setlocale(LC_ALL, __name); + #endif + +@@ -477,8 +484,8 @@ + #ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); + #else +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + __throw_exception_again; + } +@@ -498,8 +505,8 @@ + #ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); + #else +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + } + } +@@ -545,8 +552,11 @@ + __c_locale __old = __uselocale(__cloc); + #else + // Switch to named locale so that mbsrtowcs will work. +- char* __old = strdup(setlocale(LC_ALL, NULL)); +- setlocale(LC_ALL, __name); ++ char* __old = setlocale(LC_ALL, NULL); ++ const size_t __llen = strlen(__old) + 1; ++ char* __sav = new char[__llen]; ++ memcpy(__sav, __old, __llen); ++ setlocale(LC_ALL, __name); + #endif + + #ifdef __UCLIBC_MJN3_ONLY__ +@@ -633,8 +643,8 @@ + #ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); + #else +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + __throw_exception_again; + } +@@ -653,8 +663,8 @@ + #ifdef __UCLIBC_HAS_XLOCALE__ + __uselocale(__old); + #else +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + } + } +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-09-17 22:35:29.000000000 -0700 +@@ -33,9 +33,14 @@ + + // Written by Benjamin Kosnik + ++#include ++#ifdef __UCLIBC_HAS_LOCALE__ + #define _LIBC + #include + #undef _LIBC ++#else ++#include ++#endif + #include + + #ifdef __UCLIBC_MJN3_ONLY__ +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h 2008-09-17 22:35:27.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 2008-09-17 23:13:34.000000000 -0700 +@@ -50,12 +50,21 @@ + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), +- _M_name_timepunct(__s) ++ _M_name_timepunct(NULL) + { +- char* __tmp = new char[std::strlen(__s) + 1]; +- std::strcpy(__tmp, __s); ++ const size_t __len = std::strlen(__s) + 1; ++ char* __tmp = new char[__len]; ++ std::memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; +- _M_initialize_timepunct(__cloc); ++ ++ try ++ { _M_initialize_timepunct(__cloc); } ++ catch(...) ++ { ++ delete [] _M_name_timepunct; ++ __throw_exception_again; ++ } ++ + } + + template +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-09-17 22:35:29.000000000 -0700 +@@ -39,21 +39,23 @@ + #pragma GCC system_header + + #include // get std::strlen +-#include // get std::snprintf or std::sprintf ++#include // get std::vsnprintf or std::vsprintf + #include + #include // For codecvt + #ifdef __UCLIBC_MJN3_ONLY__ + #warning fix this + #endif +-#ifdef __UCLIBC_HAS_LOCALE__ ++#ifdef _GLIBCXX_USE_ICONV + #include // For codecvt using iconv, iconv_t + #endif +-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ +-#include // For messages ++#ifdef HAVE_LIBINTL_H ++#include // For messages + #endif ++#include + + #ifdef __UCLIBC_MJN3_ONLY__ + #warning what is _GLIBCXX_C_LOCALE_GNU for ++// psm: used in os/gnu-linux/ctype_noninline.h + #endif + #define _GLIBCXX_C_LOCALE_GNU 1 + +@@ -78,23 +80,25 @@ + #else + typedef int* __c_locale; + #endif +- +- // Convert numeric value of type _Tv to string and return length of +- // string. If snprintf is available use it, otherwise fall back to +- // the unsafe sprintf which, in general, can be dangerous and should ++ // Convert numeric value of type double to string and return length of ++ // string. If vsnprintf is available use it, otherwise fall back to ++ // the unsafe vsprintf which, in general, can be dangerous and should + // be avoided. +- template +- int +- __convert_from_v(char* __out, +- const int __size __attribute__ ((__unused__)), +- const char* __fmt, +-#ifdef __UCLIBC_HAS_XCLOCALE__ +- _Tv __v, const __c_locale& __cloc, int __prec) ++ inline int ++ __convert_from_v(const __c_locale& ++#ifndef __UCLIBC_HAS_XCLOCALE__ ++ __cloc __attribute__ ((__unused__)) ++#endif ++ , ++ char* __out, ++ const int __size, ++ const char* __fmt, ...) + { ++ va_list __args; ++#ifdef __UCLIBC_HAS_XCLOCALE__ ++ + __c_locale __old = __gnu_cxx::__uselocale(__cloc); + #else +- _Tv __v, const __c_locale&, int __prec) +- { + # ifdef __UCLIBC_HAS_LOCALE__ + char* __old = std::setlocale(LC_ALL, NULL); + char* __sav = new char[std::strlen(__old) + 1]; +@@ -103,7 +107,9 @@ + # endif + #endif + +- const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); ++ va_start(__args, __fmt); ++ const int __ret = std::vsnprintf(__out, __size, __fmt, __args); ++ va_end(__args); + + #ifdef __UCLIBC_HAS_XCLOCALE__ + __gnu_cxx::__uselocale(__old); +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-09-17 22:35:29.000000000 -0700 +@@ -53,11 +53,14 @@ + const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, + _M_c_locale_timepunct); + #else +- char* __old = strdup(setlocale(LC_ALL, NULL)); ++ char* __old = setlocale(LC_ALL, NULL); ++ const size_t __llen = strlen(__old) + 1; ++ char* __sav = new char[__llen]; ++ memcpy(__sav, __old, __llen); + setlocale(LC_ALL, _M_name_timepunct); + const size_t __len = strftime(__s, __maxlen, __format, __tm); +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + // Make sure __s is null terminated. + if (__len == 0) +@@ -207,11 +210,14 @@ + const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, + _M_c_locale_timepunct); + #else +- char* __old = strdup(setlocale(LC_ALL, NULL)); ++ char* __old = setlocale(LC_ALL, NULL); ++ const size_t __llen = strlen(__old) + 1; ++ char* __sav = new char[__llen]; ++ memcpy(__sav, __old, __llen); + setlocale(LC_ALL, _M_name_timepunct); + const size_t __len = wcsftime(__s, __maxlen, __format, __tm); +- setlocale(LC_ALL, __old); +- free(__old); ++ setlocale(LC_ALL, __sav); ++ delete [] __sav; + #endif + // Make sure __s is null terminated. + if (__len == 0) +Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h +=================================================================== +--- gcc-4.3.2.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-09-17 22:35:28.000000000 -0700 ++++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-09-17 22:35:29.000000000 -0700 +@@ -31,6 +31,9 @@ + + #include + #include ++#include ++#include ++#include + + #ifdef __UCLIBC_MJN3_ONLY__ + #warning clean this up diff --git a/recipes/gcc/gcc-4.3.4/300-libstdc++-pic.patch b/recipes/gcc/gcc-4.3.4/300-libstdc++-pic.patch new file mode 100644 index 0000000000..89d03a85e5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/300-libstdc++-pic.patch @@ -0,0 +1,46 @@ +# DP: Build and install libstdc++_pic.a library. + +--- gcc-4.1.0/libstdc++-v3/src/Makefile.am 2004-11-15 17:33:05.000000000 -0600 ++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.am 2005-04-25 20:05:59.186930896 -0500 +@@ -214,6 +214,10 @@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ + + ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Added bits to build debug library. + if GLIBCXX_BUILD_DEBUG + all-local: build_debug +--- gcc-4.1.0/libstdc++-v3/src/Makefile.in 2005-04-11 19:13:08.000000000 -0500 ++++ gcc-4.1.0-patched/libstdc++-v3/src/Makefile.in 2005-04-25 20:12:33.284316275 -0500 +@@ -627,7 +627,7 @@ + + install-data-am: install-data-local + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local + + install-info: install-info-am + +@@ -660,6 +660,7 @@ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-exec \ ++ install-exec-local \ + install-exec-am install-info install-info-am install-man \ + install-strip install-toolexeclibLTLIBRARIES installcheck \ + installcheck-am installdirs maintainer-clean \ +@@ -745,6 +746,11 @@ + install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ++ ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/recipes/gcc/gcc-4.3.4/301-missing-execinfo_h.patch b/recipes/gcc/gcc-4.3.4/301-missing-execinfo_h.patch new file mode 100644 index 0000000000..0e2092f3fb --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/301-missing-execinfo_h.patch @@ -0,0 +1,11 @@ +--- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500 ++++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500 +@@ -500,7 +500,7 @@ + #ifdef __linux__ + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff --git a/recipes/gcc/gcc-4.3.4/302-c99-snprintf.patch b/recipes/gcc/gcc-4.3.4/302-c99-snprintf.patch new file mode 100644 index 0000000000..02865865e5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/302-c99-snprintf.patch @@ -0,0 +1,13 @@ +Index: gcc-4.3.1/libstdc++-v3/include/c_std/cstdio +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/include/c_std/cstdio 2006-12-07 01:35:57.000000000 -0800 ++++ gcc-4.3.1/libstdc++-v3/include/c_std/cstdio 2008-08-16 02:11:37.000000000 -0700 +@@ -144,7 +144,7 @@ + + _GLIBCXX_END_NAMESPACE + +-#if _GLIBCXX_USE_C99 ++#if _GLIBCXX_USE_C99 || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf diff --git a/recipes/gcc/gcc-4.3.4/303-c99-complex-ugly-hack.patch b/recipes/gcc/gcc-4.3.4/303-c99-complex-ugly-hack.patch new file mode 100644 index 0000000000..2ccc80d9bb --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/303-c99-complex-ugly-hack.patch @@ -0,0 +1,12 @@ +--- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500 ++++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500 +@@ -7194,6 +7194,9 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#ifdef __UCLIBC__ ++#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs ++#endif + int + main () + { diff --git a/recipes/gcc/gcc-4.3.4/304-index_macro.patch b/recipes/gcc/gcc-4.3.4/304-index_macro.patch new file mode 100644 index 0000000000..d8e476555d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/304-index_macro.patch @@ -0,0 +1,24 @@ +--- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100 ++++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100 +@@ -59,6 +59,9 @@ + #include + #include + ++/* cope w/ index defined as macro, SuSv3 proposal */ ++#undef index ++ + # ifdef __GC + # define __GC_CONST const + # else +--- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100 ++++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100 +@@ -53,6 +53,9 @@ + #include // For uninitialized_copy_n + #include // For power + ++/* cope w/ index defined as macro, SuSv3 proposal */ ++#undef index ++ + _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + + using std::size_t; diff --git a/recipes/gcc/gcc-4.3.4/305-libmudflap-susv3-legacy.patch b/recipes/gcc/gcc-4.3.4/305-libmudflap-susv3-legacy.patch new file mode 100644 index 0000000000..374b1f8659 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/305-libmudflap-susv3-legacy.patch @@ -0,0 +1,49 @@ +Index: gcc-4.2/libmudflap/mf-hooks2.c +=================================================================== +--- gcc-4.2/libmudflap/mf-hooks2.c (revision 119834) ++++ gcc-4.2/libmudflap/mf-hooks2.c (working copy) +@@ -427,7 +427,7 @@ + { + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); +- bzero (s, n); ++ memset (s, 0, n); + } + + +@@ -437,7 +437,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src"); + MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest"); +- bcopy (src, dest, n); ++ memmove (dest, src, n); + } + + +@@ -447,7 +447,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg"); + MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg"); +- return bcmp (s1, s2, n); ++ return n == 0 ? 0 : memcmp (s1, s2, n); + } + + +@@ -456,7 +456,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region"); +- return index (s, c); ++ return strchr (s, c); + } + + +@@ -465,7 +465,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region"); +- return rindex (s, c); ++ return strrchr (s, c); + } + + /* XXX: stpcpy, memccpy */ diff --git a/recipes/gcc/gcc-4.3.4/306-libstdc++-namespace.patch b/recipes/gcc/gcc-4.3.4/306-libstdc++-namespace.patch new file mode 100644 index 0000000000..69587ca63a --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/306-libstdc++-namespace.patch @@ -0,0 +1,36 @@ +diff -rup gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.2/libstdc++-v3/config/locale/uclibc/messages_members.h +--- gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-12-22 13:06:56.000000000 +0100 ++++ gcc-4.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-12-22 15:23:41.000000000 +0100 +@@ -32,7 +32,8 @@ + // + + // Written by Benjamin Kosnik +- ++namespace std ++{ + #ifdef __UCLIBC_MJN3_ONLY__ + #warning fix prototypes for *textdomain funcs + #endif +@@ -115,3 +116,4 @@ + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } ++} +diff -rup gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.2/libstdc++-v3/config/locale/uclibc/time_members.h +--- gcc-4.2.orig/libstdc++-v3/config/locale/uclibc/time_members.h 2006-12-22 13:06:56.000000000 +0100 ++++ gcc-4.2/libstdc++-v3/config/locale/uclibc/time_members.h 2006-12-22 15:20:31.000000000 +0100 +@@ -33,7 +33,8 @@ + // + + // Written by Benjamin Kosnik +- ++namespace std ++{ + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), +@@ -74,3 +75,4 @@ + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } ++} diff --git a/recipes/gcc/gcc-4.3.4/307-locale_facets.patch b/recipes/gcc/gcc-4.3.4/307-locale_facets.patch new file mode 100644 index 0000000000..774fcfa2ca --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/307-locale_facets.patch @@ -0,0 +1,19 @@ +This patch fixes a bug into ostream::operator<<(double) due to the wrong size +passed into the __convert_from_v method. The wrong size is then passed to +std::snprintf function, that, on uClibc, doens't handle sized 0 buffer. + +Signed-off-by: Carmelo Amoroso + +Index: gcc-4.3.1/libstdc++-v3/include/bits/locale_facets.tcc +=================================================================== +--- gcc-4.3.1.orig/libstdc++-v3/include/bits/locale_facets.tcc 2007-11-26 17:59:41.000000000 -0800 ++++ gcc-4.3.1/libstdc++-v3/include/bits/locale_facets.tcc 2008-08-16 02:14:48.000000000 -0700 +@@ -1004,7 +1004,7 @@ + const int __cs_size = __fixed ? __max_exp + __prec + 4 + : __max_digits * 2 + __prec; + char* __cs = static_cast(__builtin_alloca(__cs_size)); +- __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf, ++ __len = std::__convert_from_v(_S_get_c_locale(), __cs, __cs_size, __fbuf, + __prec, __v); + #endif + diff --git a/recipes/gcc/gcc-4.3.4/402-libbackend_dep_gcov-iov.h.patch b/recipes/gcc/gcc-4.3.4/402-libbackend_dep_gcov-iov.h.patch new file mode 100644 index 0000000000..0bf115c45d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/402-libbackend_dep_gcov-iov.h.patch @@ -0,0 +1,13 @@ +Index: gcc-4.2/gcc/Makefile.in +=================================================================== +--- gcc-4.2/gcc/Makefile.in (revision 121758) ++++ gcc-4.2/gcc/Makefile.in (working copy) +@@ -2658,7 +2658,7 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) + # FIXME: writing proper dependencies for this is a *LOT* of work. + libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ + insn-config.h insn-flags.h insn-codes.h insn-constants.h \ +- insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) ++ insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) gcov-iov.h + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + -DTARGET_NAME=\"$(target_noncanonical)\" \ + -DLOCALEDIR=\"$(localedir)\" \ diff --git a/recipes/gcc/gcc-4.3.4/602-sdk-libstdc++-includes.patch b/recipes/gcc/gcc-4.3.4/602-sdk-libstdc++-includes.patch new file mode 100644 index 0000000000..23fce7544d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/602-sdk-libstdc++-includes.patch @@ -0,0 +1,20 @@ +--- gcc-4.1.0/libstdc++-v3/fragment.am 2005-03-21 11:40:14.000000000 -0600 ++++ gcc-4.1.0-patched/libstdc++-v3/fragment.am 2005-04-25 20:14:39.856251785 -0500 +@@ -21,5 +21,5 @@ + $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once + + # -I/-D flags to pass when compiling. +-AM_CPPFLAGS = $(GLIBCXX_INCLUDES) ++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include + +--- gcc-4.1.0/libstdc++-v3/libmath/Makefile.am 2005-03-21 11:40:18.000000000 -0600 ++++ gcc-4.1.0-patched/libstdc++-v3/libmath/Makefile.am 2005-04-25 20:14:39.682280735 -0500 +@@ -35,7 +35,7 @@ + + libmath_la_SOURCES = stubs.c + +-AM_CPPFLAGS = $(CANADIAN_INCLUDES) ++AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include + + # Only compiling "C" sources in this directory. + LIBTOOL = @LIBTOOL@ --tag CC diff --git a/recipes/gcc/gcc-4.3.4/740-sh-pr24836.patch b/recipes/gcc/gcc-4.3.4/740-sh-pr24836.patch new file mode 100644 index 0000000000..7992282cff --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/740-sh-pr24836.patch @@ -0,0 +1,25 @@ +http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348 +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836 + +--- gcc/gcc/configure.ac (revision 106699) ++++ gcc/gcc/configure.ac (working copy) +@@ -2446,7 +2446,7 @@ + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 +--- gcc/gcc/configure ++++ gcc/gcc/configure +@@ -14846,7 +14846,7 @@ + tls_first_minor=14 + tls_as_opt="-m64 -Aesame --fatal-warnings" + ;; +- sh-*-* | sh[34]-*-*) ++ sh-*-* | sh[34]*-*-*) + conftest_s=' + .section ".tdata","awT",@progbits + foo: .long 25 diff --git a/recipes/gcc/gcc-4.3.4/800-arm-bigendian.patch b/recipes/gcc/gcc-4.3.4/800-arm-bigendian.patch new file mode 100644 index 0000000000..f433942783 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/800-arm-bigendian.patch @@ -0,0 +1,34 @@ +By Lennert Buytenhek +Adds support for arm*b-linux* big-endian ARM targets + +See http://gcc.gnu.org/PR16350 + +Index: gcc-4.3.2/gcc/config/arm/linux-elf.h +=================================================================== +--- gcc-4.3.2.orig/gcc/config/arm/linux-elf.h 2007-11-08 05:44:09.000000000 -0800 ++++ gcc-4.3.2/gcc/config/arm/linux-elf.h 2008-08-28 21:08:30.000000000 -0700 +@@ -51,7 +51,7 @@ + + #undef MULTILIB_DEFAULTS + #define MULTILIB_DEFAULTS \ +- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } ++ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } + + /* Now we define the strings used to build the spec file. */ + #undef LIB_SPEC +Index: gcc-4.3.2/gcc/config.gcc +=================================================================== +--- gcc-4.3.2.orig/gcc/config.gcc 2008-08-28 20:57:39.000000000 -0700 ++++ gcc-4.3.2/gcc/config.gcc 2008-08-28 21:00:11.000000000 -0700 +@@ -742,6 +742,11 @@ + esac + tmake_file="${tmake_file} t-linux arm/t-arm" + case ${target} in ++ arm*b-*) ++ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ++ ;; ++ esac ++ case ${target} in + arm*-*-linux-*eabi) + tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" + tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi" diff --git a/recipes/gcc/gcc-4.3.4/904-flatten-switch-stmt-00.patch b/recipes/gcc/gcc-4.3.4/904-flatten-switch-stmt-00.patch new file mode 100644 index 0000000000..8fac37c4df --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/904-flatten-switch-stmt-00.patch @@ -0,0 +1,153 @@ +Hi, + +The attached patch makes sure that we create smaller object code for +simple switch statements. We just make sure to flatten the switch +statement into an if-else chain, basically. + +This fixes a size-regression as compared to gcc-3.4, as can be seen +below. + +2007-04-15 Bernhard Fischer <..> + + * stmt.c (expand_case): Do not create a complex binary tree when + optimizing for size but rather use the simple ordered list. + (emit_case_nodes): do not emit jumps to the default_label when + optimizing for size. + +Not regtested so far. +Comments? + +Attached is the test switch.c mentioned below. + +$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do +gcc-$i -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done +$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do +gcc-$i -UCHAIN -Os -o switch-$i.o -c switch.c ;done + +$ size switch-*.o + text data bss dec hex filename + 169 0 0 169 a9 switch-2.95.o + 115 0 0 115 73 switch-3.3.o + 103 0 0 103 67 switch-3.4.o + 124 0 0 124 7c switch-4.0.o + 124 0 0 124 7c switch-4.1.o + 124 0 0 124 7c switch-4.2.orig-HEAD.o + 95 0 0 95 5f switch-4.3-HEAD.o + 124 0 0 124 7c switch-4.3.orig-HEAD.o + 166 0 0 166 a6 switch-CHAIN-2.95.o + 111 0 0 111 6f switch-CHAIN-3.3.o + 95 0 0 95 5f switch-CHAIN-3.4.o + 95 0 0 95 5f switch-CHAIN-4.0.o + 95 0 0 95 5f switch-CHAIN-4.1.o + 95 0 0 95 5f switch-CHAIN-4.2.orig-HEAD.o + 95 0 0 95 5f switch-CHAIN-4.3-HEAD.o + 95 0 0 95 5f switch-CHAIN-4.3.orig-HEAD.o + + +Content-Type: text/x-diff; charset=us-ascii +Content-Disposition: attachment; filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff" + +Index: gcc-4.2.0/gcc/stmt.c +=================================================================== +--- gcc-4.2.0.orig/gcc/stmt.c (revision 123843) ++++ gcc-4.2.0/gcc/stmt.c (working copy) +@@ -2517,7 +2517,11 @@ expand_case (tree exp) + use_cost_table + = (TREE_CODE (orig_type) != ENUMERAL_TYPE + && estimate_case_costs (case_list)); +- balance_case_nodes (&case_list, NULL); ++ /* When optimizing for size, we want a straight list to avoid ++ jumps as much as possible. This basically creates an if-else ++ chain. */ ++ if (!optimize_size) ++ balance_case_nodes (&case_list, NULL); + emit_case_nodes (index, case_list, default_label, index_type); + emit_jump (default_label); + } +@@ -3075,6 +3079,7 @@ emit_case_nodes (rtx index, case_node_pt + { + if (!node_has_low_bound (node, index_type)) + { ++ if (!optimize_size) /* don't jl to the .default_label. */ + emit_cmp_and_jump_insns (index, + convert_modes + (mode, imode, + + +Content-Type: text/x-csrc; charset=us-ascii +Content-Disposition: attachment; filename="switch.c" + +int +commutative_tree_code (int code) +{ +#define CASE(val, ret) case val:/* __asm__("# val="#val ",ret="#ret);*/ return ret; +#ifndef CHAIN + switch (code) + { +# if 1 + CASE(1,3) + CASE(3,2) + CASE(5,8) + CASE(7,1) + CASE(33,4) + CASE(44,9) + CASE(55,10) + CASE(66,-1) + CASE(77,99) + CASE(666,0) +# else + case 1: + return 3; + case 3: + return 2; + case 5: + return 8; + case 7: + return 1; + case 33: + return 4; + case 44: + return 9; + case 55: + return 10; + case 66: + return -1; + case 77: + return 99; + case 666: + return 0; +# endif + default: + break; + } + return 4711; + +#else + if (code == 1) + return 3; + else if (code == 3) + return 2; + else if (code == 5) + return 8; + else if (code == 7) + return 1; + else if (code == 33) + return 4; + else if (code == 44) + return 9; + else if (code == 55) + return 10; + else if (code == 66) + return -1; + else if (code == 77) + return 99; + else if (code == 666) + return 0; + else + return 4711; +#endif +} + + +--AhhlLboLdkugWU4S-- + diff --git a/recipes/gcc/gcc-4.3.4/arm-nolibfloat.patch b/recipes/gcc/gcc-4.3.4/arm-nolibfloat.patch new file mode 100644 index 0000000000..c4897c0330 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/arm-nolibfloat.patch @@ -0,0 +1,24 @@ +# Dimitry Andric , 2004-05-01 +# +# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed +# anymore. (The required functions are now in libgcc.) +# +# Fixes errors like +# arm-softfloat-linux-gnu/3.4.0/../../../../arm-softfloat-linux-gnu/bin/ld: cannot find -lfloat +# collect2: ld returned 1 exit status +# make[2]: *** [arm-softfloat-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/iconvdata/ISO8859-1.so] Error 1 +# when building glibc-2.3.3 with gcc-3.4.0 for arm-softfloat + +Index: gcc-4.0.2/gcc/config/arm/linux-elf.h +=================================================================== +--- gcc-4.0.2.orig/gcc/config/arm/linux-elf.h 2005-03-04 16:14:01.000000000 +0000 ++++ gcc-4.0.2/gcc/config/arm/linux-elf.h 2005-11-11 18:02:54.000000000 +0000 +@@ -56,7 +56,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add + the GNU/Linux magical crtbegin.o file (see crtstuff.c) which diff --git a/recipes/gcc/gcc-4.3.4/arm-softfloat.patch b/recipes/gcc/gcc-4.3.4/arm-softfloat.patch new file mode 100644 index 0000000000..5e1edd9208 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/arm-softfloat.patch @@ -0,0 +1,16 @@ +Index: gcc-4.0.2/gcc/config/arm/t-linux +=================================================================== +--- gcc-4.0.2.orig/gcc/config/arm/t-linux 2004-05-15 12:41:35.000000000 +0000 ++++ gcc-4.0.2/gcc/config/arm/t-linux 2005-11-11 16:07:53.000000000 +0000 +@@ -4,7 +4,10 @@ + LIBGCC2_DEBUG_CFLAGS = -g0 + + LIB1ASMSRC = arm/lib1funcs.asm +-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx ++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ ++ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ ++ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ ++ _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf + + # MULTILIB_OPTIONS = mhard-float/msoft-float + # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/recipes/gcc/gcc-4.3.4/arm-thumb-cache.patch b/recipes/gcc/gcc-4.3.4/arm-thumb-cache.patch new file mode 100644 index 0000000000..fa63846c8c --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/arm-thumb-cache.patch @@ -0,0 +1,29 @@ +--- gcc-4.1.1/gcc/config/arm/linux-gas.h- 2005-06-25 03:22:41.000000000 +0200 ++++ gcc-4.1.1/gcc/config/arm/linux-gas.h 2006-06-18 10:23:46.000000000 +0200 +@@ -44,6 +44,7 @@ + + /* Clear the instruction cache from `beg' to `end'. This makes an + inline system call to SYS_cacheflush. */ ++#if !defined(__thumb__) + #define CLEAR_INSN_CACHE(BEG, END) \ + { \ + register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ +@@ -53,3 +54,18 @@ + : "=r" (_beg) \ + : "0" (_beg), "r" (_end), "r" (_flg)); \ + } ++#else ++#define CLEAR_INSN_CACHE(BEG, END) \ ++{ \ ++ register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ ++ register unsigned long _end __asm ("a2") = (unsigned long) (END); \ ++ register unsigned long _flg __asm ("a3") = 0; \ ++ register unsigned long _swi __asm ("a4") = 0xf0002; \ ++ __asm __volatile ("push {r7}\n" \ ++ " mov r7,a4\n" \ ++ " swi 0 @ sys_cacheflush\n" \ ++ " pop {r7}\n" \ ++ : "=r" (_beg) \ ++ : "0" (_beg), "r" (_end), "r" (_flg), "r" (_swi)); \ ++} ++#endif diff --git a/recipes/gcc/gcc-4.3.4/arm-thumb.patch b/recipes/gcc/gcc-4.3.4/arm-thumb.patch new file mode 100644 index 0000000000..7b0b8b2ddc --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/arm-thumb.patch @@ -0,0 +1,43 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +Index: gcc-4.3.1/gcc/config/arm/lib1funcs.asm +=================================================================== +--- gcc-4.3.1.orig/gcc/config/arm/lib1funcs.asm 2007-05-30 12:04:09.000000000 -0700 ++++ gcc-4.3.1/gcc/config/arm/lib1funcs.asm 2008-08-28 21:51:17.000000000 -0700 +@@ -1225,11 +1225,12 @@ + code here switches to the correct mode before executing the function. */ + + .text +- .align 0 ++ .align 1 + .force_thumb + + .macro call_via register + THUMB_FUNC_START _call_via_\register ++ .hidden SYM (_call_via_\register) + + bx \register + nop +@@ -1330,6 +1331,7 @@ + .code 16 + + THUMB_FUNC_START _interwork_call_via_\register ++ .hidden SYM (_interwork_call_via_\register) + + bx pc + nop +Index: gcc-4.3.1/gcc/config/arm/t-linux +=================================================================== +--- gcc-4.3.1.orig/gcc/config/arm/t-linux 2008-08-28 21:25:24.000000000 -0700 ++++ gcc-4.3.1/gcc/config/arm/t-linux 2008-08-28 21:51:17.000000000 -0700 +@@ -6,6 +6,7 @@ + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ + _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ + _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ ++ _call_via_rX \ + _fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundisf _floatundidf + + # MULTILIB_OPTIONS = mhard-float/msoft-float diff --git a/recipes/gcc/gcc-4.3.4/cache-amnesia.patch b/recipes/gcc/gcc-4.3.4/cache-amnesia.patch new file mode 100644 index 0000000000..fb4d1a26d8 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/cache-amnesia.patch @@ -0,0 +1,31 @@ +--- + gcc/configure | 2 +- + gcc/configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: gcc-4.3.1/gcc/configure +=================================================================== +--- gcc-4.3.1.orig/gcc/configure 2008-08-20 00:27:57.000000000 -0700 ++++ gcc-4.3.1/gcc/configure 2008-08-20 00:45:11.000000000 -0700 +@@ -12813,7 +12813,7 @@ else + esac + saved_CFLAGS="${CFLAGS}" + CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ +- ${realsrcdir}/configure \ ++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \ + --enable-languages=${enable_languages-all} \ + --target=$target_alias --host=$build_alias --build=$build_alias + CFLAGS="${saved_CFLAGS}" +Index: gcc-4.3.1/gcc/configure.ac +=================================================================== +--- gcc-4.3.1.orig/gcc/configure.ac 2008-08-20 00:27:57.000000000 -0700 ++++ gcc-4.3.1/gcc/configure.ac 2008-08-20 00:44:52.000000000 -0700 +@@ -1480,7 +1480,7 @@ else + esac + saved_CFLAGS="${CFLAGS}" + CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ +- ${realsrcdir}/configure \ ++ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \ + --enable-languages=${enable_languages-all} \ + --target=$target_alias --host=$build_alias --build=$build_alias + CFLAGS="${saved_CFLAGS}" diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-acats.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-acats.dpatch new file mode 100644 index 0000000000..fc25bf901f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-acats.dpatch @@ -0,0 +1,78 @@ +#! /bin/sh -e + +# DP: - When running the ACATS, look for the gnat tools in their new +# DP: directory (build/gnattools), and for the shared libraries in +# DP: build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/testsuite/ada/acats/run_acats~ ++++ gcc/testsuite/ada/acats/run_acats 2006-04-22 08:57:50.933824704 +0200 +@@ -11,23 +11,42 @@ + host_gnatmake=`type gnatmake | awk '{print $3}'` + ROOT=`${PWDCMD-pwd}` + BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}` +- +-PATH=$BASE:$ROOT:$PATH +-ADA_INCLUDE_PATH=$BASE/ada/rts ++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}` ++LIBGNATVSN=`cd $BASE/../libgnatvsn; ${PWDCMD-pwd}` ++LIBGNATPRJ=`cd $BASE/../libgnatprj; ${PWDCMD-pwd}` ++ ++PATH=$GNATTOOLS:$BASE:$ROOT:$PATH ++ADA_INCLUDE_DIR=$BASE/ada/rts ++ADA_INCLUDE_PATH=$ADA_INCLUDE_DIR:$LIBGNATVSN:$LIBGNATPRJ + LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH + ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH + +-if [ ! -d $ADA_INCLUDE_PATH ]; then ++if [ ! -d $ADA_INCLUDE_DIR ]; then + echo gnatlib missing, exiting. + exit 1 + fi + +-if [ ! -f $BASE/gnatchop ]; then ++if [ ! -d $GNATTOOLS ]; then ++ echo gnattools missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -d $LIBGNATVSN ]; then ++ echo libgnatvsn missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -d $LIBGNATPRJ ]; then ++ echo libgnatprj missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -f $GNATTOOLS/gnatchop ]; then + echo gnattools missing, exiting. + exit 1 + fi + +-if [ ! -f $BASE/gnatmake ]; then ++if [ ! -f $GNATTOOLS/gnatmake ]; then + echo gnattools missing, exiting. + exit 1 + fi diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-alpha.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-alpha.dpatch new file mode 100644 index 0000000000..1e2c47d670 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-alpha.dpatch @@ -0,0 +1,88 @@ +#! /bin/sh -e + +# DP: Fix GNAT on alpha. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-04-01 Aurelien Jarno + + * s-osinte-linux-alpha.ads (SC_NPROCESSORS_ONLN): New constant + for sysconf call. + (bit_field): New packed boolean type used by cpu_set_t. + (cpu_set_t): New type corresponding to the C type with + the same name. Note that on the Ada side we use a bit + field array for the affinity mask. There is not need + for the C macro for setting individual bit. + (pthread_setaffinity_np): New imported routine. + +Index: gcc/ada/s-osinte-linux-alpha.ads +=================================================================== +--- gcc/ada/s-osinte-linux-alpha.ads (révision 133772) ++++ gcc/ada/s-osinte-linux-alpha.ads (copie de travail) +@@ -237,6 +237,7 @@ + pragma Import (C, sysconf); + + SC_CLK_TCK : constant := 2; ++ SC_NPROCESSORS_ONLN : constant := 84; + + ------------------------- + -- Priority Scheduling -- +@@ -268,6 +269,7 @@ + + type Thread_Body is access + function (arg : System.Address) return System.Address; ++ pragma Convention (C, Thread_Body); + + function Thread_Body_Access is new + Unchecked_Conversion (System.Address, Thread_Body); +@@ -448,12 +450,31 @@ + pragma Import (C, pthread_getspecific, "pthread_getspecific"); + + type destructor_pointer is access procedure (arg : System.Address); ++ pragma Convention (C, destructor_pointer); + + function pthread_key_create + (key : access pthread_key_t; + destructor : destructor_pointer) return int; + pragma Import (C, pthread_key_create, "pthread_key_create"); + ++ CPU_SETSIZE : constant := 1_024; ++ ++ type bit_field is array (1 .. CPU_SETSIZE) of Boolean; ++ for bit_field'Size use CPU_SETSIZE; ++ pragma Pack (bit_field); ++ pragma Convention (C, bit_field); ++ ++ type cpu_set_t is record ++ bits : bit_field; ++ end record; ++ pragma Convention (C, cpu_set_t); ++ ++ function pthread_setaffinity_np ++ (thread : pthread_t; ++ cpusetsize : size_t; ++ cpuset : access cpu_set_t) return int; ++ pragma Import (C, pthread_setaffinity_np, "__gnat_pthread_setaffinity_np"); ++ + private + + type sigset_t is record diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-default-project-path.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-default-project-path.dpatch new file mode 100644 index 0000000000..b3283d75f3 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-default-project-path.dpatch @@ -0,0 +1,147 @@ +#! /bin/sh -e + +# DP: - Change the default search path for project files to the one specified +# DP: by the Debian Policy for Ada: /usr/share/ada/adainclude. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/ada/Make-lang.in +=================================================================== +--- gcc/ada/Make-lang.in.orig ++++ gcc/ada/Make-lang.in +@@ -974,7 +974,7 @@ + $(ECHO) " S1 : constant String := \"$(ADA_INCLUDE_DIR)/\";" >>tmp-sdefault.adb + $(ECHO) " S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb + $(ECHO) " S3 : constant String := \"$(target)/\";" >>tmp-sdefault.adb +- $(ECHO) " S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb ++ $(ECHO) " S4 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb + $(ECHO) " function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb + $(ECHO) " begin" >>tmp-sdefault.adb + $(ECHO) " return Relocate_Path (S0, S1);" >>tmp-sdefault.adb +Index: gcc/ada/prj-ext.adb +=================================================================== +--- gcc/ada/prj-ext.adb.orig ++++ gcc/ada/prj-ext.adb +@@ -24,7 +24,6 @@ + ------------------------------------------------------------------------------ + + with Hostparm; +-with Makeutl; use Makeutl; + with Output; use Output; + with Osint; use Osint; + with Sdefault; +@@ -254,38 +253,10 @@ + + -- Set the initial value of Current_Project_Path + +- if Add_Default_Dir then +- declare +- Prefix : String_Ptr := Sdefault.Search_Dir_Prefix; +- begin +- if Prefix = null then +- Prefix := new String'(Executable_Prefix_Path); +- +- if Prefix.all /= "" then +- if Get_Mode = Ada_Only then +- Current_Project_Path := +- new String'(Name_Buffer (1 .. Name_Len) & +- Path_Separator & +- Prefix.all & Directory_Separator & "gnat"); +- +- else +- Current_Project_Path := +- new String'(Name_Buffer (1 .. Name_Len) & +- Path_Separator & +- Prefix.all & Directory_Separator & +- "share" & Directory_Separator & "gpr"); +- end if; +- end if; +- +- else +- Current_Project_Path := +- new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & +- Prefix.all & +- ".." & Directory_Separator & +- ".." & Directory_Separator & +- ".." & Directory_Separator & "gnat"); +- end if; +- end; ++ if Add_Default_Dir and Sdefault.Search_Dir_Prefix /= null then ++ Current_Project_Path := ++ new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & ++ Sdefault.Search_Dir_Prefix.all); + end if; + + if Current_Project_Path = null then +Index: gcc/ada/gnatls.adb +=================================================================== +--- gcc/ada/gnatls.adb.orig ++++ gcc/ada/gnatls.adb +@@ -1622,9 +1622,6 @@ + declare + Project_Path : String_Access := Getenv (Gpr_Project_Path); + +- Lib : constant String := +- Directory_Separator & "lib" & Directory_Separator; +- + First : Natural; + Last : Natural; + +@@ -1684,36 +1681,8 @@ + if Add_Default_Dir then + Name_Len := 0; + Add_Str_To_Name_Buffer (Sdefault.Search_Dir_Prefix.all); +- +- -- On Windows, make sure that all directory separators are '\' +- +- if Directory_Separator /= '/' then +- for J in 1 .. Name_Len loop +- if Name_Buffer (J) = '/' then +- Name_Buffer (J) := Directory_Separator; +- end if; +- end loop; +- end if; +- +- -- Find the sequence "/lib/" +- +- while Name_Len >= Lib'Length +- and then Name_Buffer (Name_Len - 4 .. Name_Len) /= Lib +- loop +- Name_Len := Name_Len - 1; +- end loop; +- +- -- If the sequence "/lib"/ was found, display the default +- -- directory /lib/gnat/. +- +- if Name_Len >= 5 then +- Name_Buffer (Name_Len + 1 .. Name_Len + 4) := "gnat"; +- Name_Buffer (Name_Len + 5) := Directory_Separator; +- Name_Len := Name_Len + 5; +- Write_Str (" "); +- Write_Line +- (To_Host_Dir_Spec (Name_Buffer (1 .. Name_Len), True).all); +- end if; ++ Write_Str (" "); ++ Write_Line (Name_Buffer (1 .. Name_Len)); + end if; + end; + diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-driver-check.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-driver-check.dpatch new file mode 100644 index 0000000000..9ac1148329 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-driver-check.dpatch @@ -0,0 +1,50 @@ +#! /bin/sh -e + +# DP: Simplify Ada driver check (we always build using the required +# DP: Ada version. Needed for warnings on alpha. + +dir=./ +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- config/acx.m4~ 2007-09-02 19:24:08.865326043 +0200 ++++ config/acx.m4 2007-09-02 19:28:53.719623005 +0200 +@@ -380,7 +380,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi +--- configure~ 2007-09-02 16:50:31.206279000 +0200 ++++ configure 2007-09-02 19:28:58.259691491 +0200 +@@ -4261,7 +4261,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-driver.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-driver.dpatch new file mode 100644 index 0000000000..74ee94d1b6 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-driver.dpatch @@ -0,0 +1,42 @@ +#! /bin/sh -e + +# DP: Look for gcc-3.4, gcc-4.0 and gcc-4.1 as gcc with Ada support. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/aclocal.m4~ Sat Mar 2 00:37:42 2002 ++++ gcc/aclocal.m4 Sat Apr 6 13:01:36 2002 +@@ -312,6 +312,11 @@ + ${ac_tool_prefix}$user_cc $user_cc \ + ${ac_tool_prefix}gcc gcc \ + ${ac_tool_prefix}cc cc \ ++ ${ac_tool_prefix}gcc-4.3 gcc-4.3 \ ++ ${ac_tool_prefix}gcc-4.2 gcc-4.2 \ ++ ${ac_tool_prefix}gcc-4.1 gcc-4.1 \ ++ ${ac_tool_prefix}gcc-4.0 gcc-4.0 \ ++ ${ac_tool_prefix}gcc-3.4 gcc-3.4 \ + ${ac_tool_prefix}gnatgcc gnatgcc \ + ${ac_tool_prefix}gnatcc gnatcc \ + ${ac_tool_prefix}adagcc adagcc \ diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-gcc-name.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-gcc-name.dpatch new file mode 100644 index 0000000000..681d634480 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-gcc-name.dpatch @@ -0,0 +1,87 @@ +#! /bin/sh -e + +# DP: use gcc-4.3 instead of gcc as the command name. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/ada/comperr.adb +=================================================================== +--- gcc/ada/comperr.adb.orig 2007-09-10 18:53:41.000000000 +0200 ++++ gcc/ada/comperr.adb 2007-12-05 00:15:52.596687382 +0100 +@@ -330,7 +330,7 @@ + End_Line; + + Write_Str +- ("| Include the exact gcc or gnatmake command " & ++ ("| Include the exact gcc-4.3 or gnatmake command " & + "that you entered."); + End_Line; + +Index: gcc/ada/gnatlink.adb +=================================================================== +--- gcc/ada/gnatlink.adb.orig 2007-10-19 15:14:33.000000000 +0200 ++++ gcc/ada/gnatlink.adb 2007-12-05 00:15:52.596687382 +0100 +@@ -137,7 +137,7 @@ + -- This table collects the arguments to be passed to compile the binder + -- generated file. + +- Gcc : String_Access := Program_Name ("gcc"); ++ Gcc : String_Access := Program_Name ("gcc-4.3"); + + Read_Mode : constant String := "r" & ASCII.Nul; + +@@ -1368,7 +1368,8 @@ + end if; + + Write_Line (" --GCC=comp Use comp as the compiler"); +- Write_Line (" --LINK=nam Use 'nam' for the linking rather than 'gcc'"); ++ Write_Line (" --LINK=nam Use 'nam' for the linking rather " & ++ "than 'gcc-4.3'"); + Write_Eol; + Write_Line (" [non-Ada-objects] list of non Ada object files"); + Write_Line (" [linker-options] other options for the linker"); +Index: gcc/ada/make.adb +=================================================================== +--- gcc/ada/make.adb.orig 2007-10-19 15:14:33.000000000 +0200 ++++ gcc/ada/make.adb 2007-12-05 00:15:52.604687208 +0100 +@@ -662,7 +662,7 @@ + -- Compiler, Binder & Linker Data and Subprograms -- + ---------------------------------------------------- + +- Gcc : String_Access := Program_Name ("gcc"); ++ Gcc : String_Access := Program_Name ("gcc-4.3"); + Gnatbind : String_Access := Program_Name ("gnatbind"); + Gnatlink : String_Access := Program_Name ("gnatlink"); + -- Default compiler, binder, linker programs +Index: gcc/ada/gnatchop.adb +=================================================================== +--- gcc/ada/gnatchop.adb.orig 2007-10-19 15:14:33.000000000 +0200 ++++ gcc/ada/gnatchop.adb 2007-12-05 00:15:52.612687034 +0100 +@@ -44,7 +44,7 @@ + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := new String'("gcc-4.3"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-gnatvsn.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-gnatvsn.dpatch new file mode 100644 index 0000000000..365bd60bb4 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-gnatvsn.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e + +# DP: proposed patch for PR ada/27194. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- orig/gnatvsn.adb 2005-07-01 03:29:17.000000000 +0200 ++++ gcc/ada/gnatvsn.adb 2006-04-18 10:00:05.100002000 +0200 +@@ -54,12 +54,13 @@ + ------------------------- + + function Gnat_Version_String return String is +- NUL_Pos : Positive := 1; ++ NUL_Pos : Positive := Version_String'Last; + begin +- loop +- exit when Version_String (NUL_Pos) = ASCII.NUL; +- +- NUL_Pos := NUL_Pos + 1; ++ for J in Version_String'Range loop ++ if Version_String (J) = ASCII.NUL then ++ NUL_Pos := J; ++ exit; ++ end if; + end loop; + + return Version_String (1 .. NUL_Pos - 1); diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-libgnatprj.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-libgnatprj.dpatch new file mode 100644 index 0000000000..dcbf30aef7 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-libgnatprj.dpatch @@ -0,0 +1,4809 @@ +#! /bin/sh -e + +# DP: - Introduce a new shared library named libgnatprj, containing +# DP: the GNAT project file manager licensed under the pure GPL, for +# DP: use in GNAT tools, GLADE and GPS. Link the GNAT tools against +# DP: this new library. + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +# !!! Must be applied after ada-libgnatvsn.dpatch + +dir=./ +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/ada/config-lang.in +=================================================================== +--- gcc/ada/config-lang.in.orig ++++ gcc/ada/config-lang.in +@@ -34,8 +34,8 @@ + + outputs=ada/Makefile + +-target_libs="target-libada target-libgnatvsn" +-lang_dirs="libada libgnatvsn gnattools" ++target_libs="target-libada target-libgnatvsn target-libgnatprj" ++lang_dirs="libada libgnatvsn libgnatprj gnattools" + + # Ada will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +Index: gnattools/Makefile.in +=================================================================== +--- gnattools/Makefile.in.orig ++++ gnattools/Makefile.in +@@ -35,13 +35,13 @@ + target_noncanonical=@target_noncanonical@ + + CFLAGS=-O2 -Wall +-INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) + ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) + ADA_LIBS += -L../libgnatvsn -lgnatvsn ++ADA_LIBS += -L../libgnatprj -lgnatprj + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -66,74 +66,18 @@ + + # Since we don't have gnatmake, we must specify the full list of + # object files necessary to build gnatmake and gnatlink. +-# TODO: remove from these lists the objects that are part of +-# libgnatprj. + GNATLINK_OBJS = \ +-ali.o \ +-butil.o \ +-fmap.o \ + gnatlink.o \ + indepsw.o \ +-osint.o \ +-prefix.o \ +-rident.o \ +-sdefault.o \ +-stylesw.o \ +-switch.o \ +-targparm.o \ + validsw.o + + GNATMAKE_OBJS = \ +-ali-util.o \ +-ali.o \ +-binderr.o \ +-butil.o \ +-err_vars.o \ +-erroutc.o \ +-errutil.o \ +-fmap.o \ + fname-sf.o \ +-fname-uf.o \ + gnatmake.o \ + make.o \ + makeusg.o \ +-makeutl.o \ +-mlib-fil.o \ + mlib-prj.o \ +-mlib-tgt.o \ +-mlib-tgt-specific.o \ +-mlib-utl.o \ +-mlib.o \ + osint-m.o \ +-osint.o \ +-prefix.o \ +-prj-attr-pm.o \ +-prj-attr.o \ +-prj-com.o \ +-prj-dect.o \ +-prj-env.o \ +-prj-err.o \ +-prj-ext.o \ +-prj-nmsc.o \ +-prj-pars.o \ +-prj-part.o \ +-prj-proc.o \ +-prj-strt.o \ +-prj-tree.o \ +-prj-util.o \ +-prj.o \ +-rident.o \ +-scng.o \ +-sdefault.o \ +-sfn_scan.o \ +-sinput-c.o \ +-sinput-p.o \ +-styleg.o \ +-stylesw.o \ +-switch-m.o \ +-switch.o \ +-targparm.o \ +-tempdir.o \ + usage.o \ + validsw.o \ + $(EXTRA_GNATMAKE_OBJS) +@@ -175,11 +119,6 @@ + for file in $(BODIES) $(SPECS); do \ + $(LN_S) -f $$file .; \ + done +- rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb . +- $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ +- rm -f $(word 1,$(subst <, ,$(PAIR)));\ +- $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ +- $(word 1,$(subst <, ,$(PAIR)));) + touch $@ + + gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so +@@ -192,19 +131,16 @@ + vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc + vpath %.h @srcdir@/../gcc/ada + +-# Because the just-built gcc is a host tool like us, we can use some +-# of its object files, e.g. prefix.o. +-vpath prefix.o ../gcc +- + # gnatlink + +-gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o ++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o + $(GCC) -o $@ $^ \ ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +-gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o ++gnatlink: $(GNATLINK_OBJS) b_gnatl.o + $(GCC) -o $@ $^ $(ADA_LIBS) ../libiberty/libiberty.a + + b_gnatl.o: b_gnatl.c adaint.h +@@ -215,13 +151,14 @@ + + # gnatmake + +-gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o ++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +-gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o ++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ $(ADA_LIBS) ../libiberty/libiberty.a + + b_gnatm.o: b_gnatm.c adaint.h +@@ -231,19 +168,11 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatkr: +- if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi +- ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ +- --GCC="$(GCC)" \ +- --GNATBIND=../gcc/gnatbind +- ./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \ +- --GCC="$(GCC) $(ADA_INCLUDES)" +- + gnat: gnatcmd + cp -lp $< $@ + +-gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref gprmake: \ +-link.o prefix.o ++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \ ++gnatxref gprmake: + if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ +@@ -252,29 +181,19 @@ + ../libiberty/libiberty.a \ + --GCC="$(GCC) $(ADA_INCLUDES)" + +-gnatbl: gnatbl.c link.o prefix.o ++gnatbl: gnatbl.c + $(GCC) -o $@ $< $(CFLAGS) \ + -I../gcc -I@srcdir@/../gcc/config -I@srcdir@/../gcc \ + -I@srcdir@/../include \ + $(filter-out %.c,$^) \ + $(ADA_LIBS) ../libiberty/libiberty.a + +-# Force compiling sdefault.adb, not .ads, to produce sdefault.o +-sdefault.o: sdefault.adb +- +-sdefault.adb: stamp-gnattools-sources +- + %.o: %.adb + $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) + + %.o: %.ads + $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) + +-%.o: %.c +- $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) +- +-prefix.o: +- + # Other + # ----- + +Index: libgnatprj/configure +=================================================================== +--- /dev/null ++++ libgnatprj/configure +@@ -0,0 +1,3138 @@ ++#! /bin/sh ++# Guess values for system-dependent variables and create Makefiles. ++# Generated by GNU Autoconf 2.61. ++# ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++# This configure script is free software; the Free Software Foundation ++# gives unlimited permission to copy, distribute and modify it. ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ case $as_dir in ++ /*) ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf@gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++ ++exec 7<&0 &1 ++ ++# Name of the host. ++# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ++# so uname gets run too. ++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ++ ++# ++# Initializations. ++# ++ac_default_prefix=/usr/local ++ac_clean_files= ++ac_config_libobj_dir=. ++LIBOBJS= ++cross_compiling=no ++subdirs= ++MFLAGS= ++MAKEFLAGS= ++SHELL=${CONFIG_SHELL-/bin/sh} ++ ++# Identity of this package. ++PACKAGE_NAME= ++PACKAGE_TARNAME= ++PACKAGE_VERSION= ++PACKAGE_STRING= ++PACKAGE_BUGREPORT= ++ ++ac_unique_file="Makefile.in" ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++INSTALL_PROGRAM ++INSTALL_SCRIPT ++INSTALL_DATA ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++target ++target_cpu ++target_vendor ++target_os ++target_noncanonical ++LN_S ++x_ada_cflags ++default_gnattools_target ++TOOLS_TARGET_PAIRS ++LIBOBJS ++LTLIBOBJS' ++ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias' ++ ++ ++# Initialize some variables set by options. ++ac_init_help= ++ac_init_version=false ++# The variables have the same names as the options, with ++# dashes changed to underlines. ++cache_file=/dev/null ++exec_prefix=NONE ++no_create= ++no_recursion= ++prefix=NONE ++program_prefix=NONE ++program_suffix=NONE ++program_transform_name=s,x,x, ++silent= ++site= ++srcdir= ++verbose= ++x_includes=NONE ++x_libraries=NONE ++ ++# Installation directory options. ++# These are left unexpanded so users can "make install exec_prefix=/foo" ++# and all the variables that are supposed to be based on exec_prefix ++# by default will actually change. ++# Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) ++bindir='${exec_prefix}/bin' ++sbindir='${exec_prefix}/sbin' ++libexecdir='${exec_prefix}/libexec' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' ++sysconfdir='${prefix}/etc' ++sharedstatedir='${prefix}/com' ++localstatedir='${prefix}/var' ++includedir='${prefix}/include' ++oldincludedir='/usr/include' ++docdir='${datarootdir}/doc/${PACKAGE}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' ++ ++ac_prev= ++ac_dashdash= ++for ac_option ++do ++ # If the previous option needs an argument, assign it. ++ if test -n "$ac_prev"; then ++ eval $ac_prev=\$ac_option ++ ac_prev= ++ continue ++ fi ++ ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac ++ ++ # Accept the important Cygnus configure options, so we can diagnose typos. ++ ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; ++ ++ -bindir | --bindir | --bindi | --bind | --bin | --bi) ++ ac_prev=bindir ;; ++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ++ bindir=$ac_optarg ;; ++ ++ -build | --build | --buil | --bui | --bu) ++ ac_prev=build_alias ;; ++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) ++ build_alias=$ac_optarg ;; ++ ++ -cache-file | --cache-file | --cache-fil | --cache-fi \ ++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ++ ac_prev=cache_file ;; ++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ ++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ++ cache_file=$ac_optarg ;; ++ ++ --config-cache | -C) ++ cache_file=config.cache ;; ++ ++ -datadir | --datadir | --datadi | --datad) ++ ac_prev=datadir ;; ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) ++ datadir=$ac_optarg ;; ++ ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ ++ -disable-* | --disable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; ++ ++ -enable-* | --enable-*) ++ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ++ { (exit 1); exit 1; }; } ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; ++ ++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ ++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ ++ | --exec | --exe | --ex) ++ ac_prev=exec_prefix ;; ++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ ++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ ++ | --exec=* | --exe=* | --ex=*) ++ exec_prefix=$ac_optarg ;; ++ ++ -gas | --gas | --ga | --g) ++ # Obsolete; use --with-gas. ++ with_gas=yes ;; ++ ++ -help | --help | --hel | --he | -h) ++ ac_init_help=long ;; ++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ++ ac_init_help=recursive ;; ++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ++ ac_init_help=short ;; ++ ++ -host | --host | --hos | --ho) ++ ac_prev=host_alias ;; ++ -host=* | --host=* | --hos=* | --ho=*) ++ host_alias=$ac_optarg ;; ++ ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ ++ -includedir | --includedir | --includedi | --included | --include \ ++ | --includ | --inclu | --incl | --inc) ++ ac_prev=includedir ;; ++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ ++ | --includ=* | --inclu=* | --incl=* | --inc=*) ++ includedir=$ac_optarg ;; ++ ++ -infodir | --infodir | --infodi | --infod | --info | --inf) ++ ac_prev=infodir ;; ++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ++ infodir=$ac_optarg ;; ++ ++ -libdir | --libdir | --libdi | --libd) ++ ac_prev=libdir ;; ++ -libdir=* | --libdir=* | --libdi=* | --libd=*) ++ libdir=$ac_optarg ;; ++ ++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ ++ | --libexe | --libex | --libe) ++ ac_prev=libexecdir ;; ++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ ++ | --libexe=* | --libex=* | --libe=*) ++ libexecdir=$ac_optarg ;; ++ ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ ++ -localstatedir | --localstatedir | --localstatedi | --localstated \ ++ | --localstate | --localstat | --localsta | --localst | --locals) ++ ac_prev=localstatedir ;; ++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) ++ localstatedir=$ac_optarg ;; ++ ++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ++ ac_prev=mandir ;; ++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ++ mandir=$ac_optarg ;; ++ ++ -nfp | --nfp | --nf) ++ # Obsolete; use --without-fp. ++ with_fp=no ;; ++ ++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ++ | --no-cr | --no-c | -n) ++ no_create=yes ;; ++ ++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ++ no_recursion=yes ;; ++ ++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ ++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ ++ | --oldin | --oldi | --old | --ol | --o) ++ ac_prev=oldincludedir ;; ++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ ++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ ++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ++ oldincludedir=$ac_optarg ;; ++ ++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ++ ac_prev=prefix ;; ++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ++ prefix=$ac_optarg ;; ++ ++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ ++ | --program-pre | --program-pr | --program-p) ++ ac_prev=program_prefix ;; ++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ ++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ++ program_prefix=$ac_optarg ;; ++ ++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ ++ | --program-suf | --program-su | --program-s) ++ ac_prev=program_suffix ;; ++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ ++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ++ program_suffix=$ac_optarg ;; ++ ++ -program-transform-name | --program-transform-name \ ++ | --program-transform-nam | --program-transform-na \ ++ | --program-transform-n | --program-transform- \ ++ | --program-transform | --program-transfor \ ++ | --program-transfo | --program-transf \ ++ | --program-trans | --program-tran \ ++ | --progr-tra | --program-tr | --program-t) ++ ac_prev=program_transform_name ;; ++ -program-transform-name=* | --program-transform-name=* \ ++ | --program-transform-nam=* | --program-transform-na=* \ ++ | --program-transform-n=* | --program-transform-=* \ ++ | --program-transform=* | --program-transfor=* \ ++ | --program-transfo=* | --program-transf=* \ ++ | --program-trans=* | --program-tran=* \ ++ | --progr-tra=* | --program-tr=* | --program-t=*) ++ program_transform_name=$ac_optarg ;; ++ ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ silent=yes ;; ++ ++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ++ ac_prev=sbindir ;; ++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ ++ | --sbi=* | --sb=*) ++ sbindir=$ac_optarg ;; ++ ++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ ++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ ++ | --sharedst | --shareds | --shared | --share | --shar \ ++ | --sha | --sh) ++ ac_prev=sharedstatedir ;; ++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ ++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ ++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ ++ | --sha=* | --sh=*) ++ sharedstatedir=$ac_optarg ;; ++ ++ -site | --site | --sit) ++ ac_prev=site ;; ++ -site=* | --site=* | --sit=*) ++ site=$ac_optarg ;; ++ ++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ++ ac_prev=srcdir ;; ++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ++ srcdir=$ac_optarg ;; ++ ++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ ++ | --syscon | --sysco | --sysc | --sys | --sy) ++ ac_prev=sysconfdir ;; ++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ ++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ++ sysconfdir=$ac_optarg ;; ++ ++ -target | --target | --targe | --targ | --tar | --ta | --t) ++ ac_prev=target_alias ;; ++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ++ target_alias=$ac_optarg ;; ++ ++ -v | -verbose | --verbose | --verbos | --verbo | --verb) ++ verbose=yes ;; ++ ++ -version | --version | --versio | --versi | --vers | -V) ++ ac_init_version=: ;; ++ ++ -with-* | --with-*) ++ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; ++ ++ -without-* | --without-*) ++ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid package name: $ac_package" >&2 ++ { (exit 1); exit 1; }; } ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; ++ ++ --x) ++ # Obsolete; use --with-x. ++ with_x=yes ;; ++ ++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ ++ | --x-incl | --x-inc | --x-in | --x-i) ++ ac_prev=x_includes ;; ++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ ++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ++ x_includes=$ac_optarg ;; ++ ++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ ++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ++ ac_prev=x_libraries ;; ++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ ++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ++ x_libraries=$ac_optarg ;; ++ ++ -*) { echo "$as_me: error: unrecognized option: $ac_option ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ++ ;; ++ ++ *=*) ++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` ++ # Reject names that are not valid shell variable names. ++ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && ++ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 ++ { (exit 1); exit 1; }; } ++ eval $ac_envvar=\$ac_optarg ++ export $ac_envvar ;; ++ ++ *) ++ # FIXME: should be removed in autoconf 3.0. ++ echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ++ echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ++ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ++ ;; ++ ++ esac ++done ++ ++if test -n "$ac_prev"; then ++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` ++ { echo "$as_me: error: missing argument to $ac_option" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ ++# Be sure to have absolute directory names. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir ++do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; ++ esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } ++done ++ ++# There might be people who depend on the old broken behavior: `$host' ++# used to hold the argument of --host etc. ++# FIXME: To remove some day. ++build=$build_alias ++host=$host_alias ++target=$target_alias ++ ++# FIXME: To remove some day. ++if test "x$host_alias" != x; then ++ if test "x$build_alias" = x; then ++ cross_compiling=maybe ++ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. ++ If a cross compiler is detected then cross compile mode will be used." >&2 ++ elif test "x$build_alias" != "x$host_alias"; then ++ cross_compiling=yes ++ fi ++fi ++ ++ac_tool_prefix= ++test -n "$host_alias" && ac_tool_prefix=$host_alias- ++ ++test "$silent" = yes && exec 6>/dev/null ++ ++ ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ ++# Find the source files, if location was not specified. ++if test -z "$srcdir"; then ++ ac_srcdir_defaulted=yes ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || ++$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$0" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ srcdir=$ac_confdir ++ if test ! -r "$srcdir/$ac_unique_file"; then ++ srcdir=.. ++ fi ++else ++ ac_srcdir_defaulted=no ++fi ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done ++ ++# ++# Report the --help message. ++# ++if test "$ac_init_help" = "long"; then ++ # Omit some internal or obsolete options to make the list less imposing. ++ # This message is too long to be a string in the A/UX 3.1 sh. ++ cat <<_ACEOF ++\`configure' configures this package to adapt to many kinds of systems. ++ ++Usage: $0 [OPTION]... [VAR=VALUE]... ++ ++To assign environment variables (e.g., CC, CFLAGS...), specify them as ++VAR=VALUE. See below for descriptions of some of the useful variables. ++ ++Defaults for the options are specified in brackets. ++ ++Configuration: ++ -h, --help display this help and exit ++ --help=short display options specific to this package ++ --help=recursive display the short help of all the included packages ++ -V, --version display version information and exit ++ -q, --quiet, --silent do not print \`checking...' messages ++ --cache-file=FILE cache test results in FILE [disabled] ++ -C, --config-cache alias for \`--cache-file=config.cache' ++ -n, --no-create do not create output files ++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] ++ ++Installation directories: ++ --prefix=PREFIX install architecture-independent files in PREFIX ++ [$ac_default_prefix] ++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ++ [PREFIX] ++ ++By default, \`make install' will install all the files in ++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ++an installation prefix other than \`$ac_default_prefix' using \`--prefix', ++for instance \`--prefix=\$HOME'. ++ ++For better control, use the options below. ++ ++Fine tuning of the installation directories: ++ --bindir=DIR user executables [EPREFIX/bin] ++ --sbindir=DIR system admin executables [EPREFIX/sbin] ++ --libexecdir=DIR program executables [EPREFIX/libexec] ++ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] ++ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] ++ --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --libdir=DIR object code libraries [EPREFIX/lib] ++ --includedir=DIR C header files [PREFIX/include] ++ --oldincludedir=DIR C header files for non-gcc [/usr/include] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] ++_ACEOF ++ ++ cat <<\_ACEOF ++ ++System types: ++ --build=BUILD configure for building on BUILD [guessed] ++ --host=HOST cross-compile to build programs to run on HOST [BUILD] ++ --target=TARGET configure for building compilers for TARGET [HOST] ++_ACEOF ++fi ++ ++if test -n "$ac_init_help"; then ++ ++ cat <<\_ACEOF ++ ++_ACEOF ++ac_status=$? ++fi ++ ++if test "$ac_init_help" = "recursive"; then ++ # If there are subdirs, report their specific --help. ++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ++ test -d "$ac_dir" || continue ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive ++ else ++ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } ++ done ++fi ++ ++test -n "$ac_init_help" && exit $ac_status ++if $ac_init_version; then ++ cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 ++ ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ++This configure script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it. ++_ACEOF ++ exit ++fi ++cat >config.log <<_ACEOF ++This file contains any messages produced by compilers while ++running configure, to aid debugging if configure makes a mistake. ++ ++It was created by $as_me, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ $ $0 $@ ++ ++_ACEOF ++exec 5>>config.log ++{ ++cat <<_ASUNAME ++## --------- ## ++## Platform. ## ++## --------- ## ++ ++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ++uname -m = `(uname -m) 2>/dev/null || echo unknown` ++uname -r = `(uname -r) 2>/dev/null || echo unknown` ++uname -s = `(uname -s) 2>/dev/null || echo unknown` ++uname -v = `(uname -v) 2>/dev/null || echo unknown` ++ ++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ++ ++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` ++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ++ ++_ASUNAME ++ ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ echo "PATH: $as_dir" ++done ++IFS=$as_save_IFS ++ ++} >&5 ++ ++cat >&5 <<_ACEOF ++ ++ ++## ----------- ## ++## Core tests. ## ++## ----------- ## ++ ++_ACEOF ++ ++ ++# Keep a trace of the command line. ++# Strip out --no-create and --no-recursion so they do not pile up. ++# Strip out --silent because we don't want to record it for future runs. ++# Also quote any args containing shell meta-characters. ++# Make two passes to allow for proper duplicate-argument suppression. ++ac_configure_args= ++ac_configure_args0= ++ac_configure_args1= ++ac_must_keep_next=false ++for ac_pass in 1 2 ++do ++ for ac_arg ++ do ++ case $ac_arg in ++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil) ++ continue ;; ++ *\'*) ++ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ++ esac ++ case $ac_pass in ++ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ++ 2) ++ ac_configure_args1="$ac_configure_args1 '$ac_arg'" ++ if test $ac_must_keep_next = true; then ++ ac_must_keep_next=false # Got value, back to normal. ++ else ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac ++ fi ++ ac_configure_args="$ac_configure_args '$ac_arg'" ++ ;; ++ esac ++ done ++done ++$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ++$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ++ ++# When interrupted or exit'd, cleanup temporary files, and complete ++# config.log. We remove comments because anyway the quotes in there ++# would cause problems or look ugly. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. ++trap 'exit_status=$? ++ # Save into config.log some information that might help in debugging. ++ { ++ echo ++ ++ cat <<\_ASBOX ++## ---------------- ## ++## Cache variables. ## ++## ---------------- ## ++_ASBOX ++ echo ++ # The following way of writing the cache mishandles newlines in values, ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ (set) 2>&1 | ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ sed -n \ ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( ++ *) ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) ++ echo ++ ++ cat <<\_ASBOX ++## ----------------- ## ++## Output variables. ## ++## ----------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_vars ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ ++ if test -n "$ac_subst_files"; then ++ cat <<\_ASBOX ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## ++_ASBOX ++ echo ++ for ac_var in $ac_subst_files ++ do ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" ++ done | sort ++ echo ++ fi ++ ++ if test -s confdefs.h; then ++ cat <<\_ASBOX ++## ----------- ## ++## confdefs.h. ## ++## ----------- ## ++_ASBOX ++ echo ++ cat confdefs.h ++ echo ++ fi ++ test "$ac_signal" != 0 && ++ echo "$as_me: caught signal $ac_signal" ++ echo "$as_me: exit $exit_status" ++ } >&5 ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && ++ exit $exit_status ++' 0 ++for ac_signal in 1 2 13 15; do ++ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ++done ++ac_signal=0 ++ ++# confdefs.h avoids OS command line length limits that DEFS can exceed. ++rm -f -r conftest* confdefs.h ++ ++# Predefined preprocessor variables. ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_NAME "$PACKAGE_NAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_VERSION "$PACKAGE_VERSION" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_STRING "$PACKAGE_STRING" ++_ACEOF ++ ++ ++cat >>confdefs.h <<_ACEOF ++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" ++_ACEOF ++ ++ ++# Let the site file select an alternate cache file if it wants to. ++# Prefer explicitly selected file to automatically selected ones. ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" ++fi ++shift ++for ac_site_file ++do ++ if test -r "$ac_site_file"; then ++ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ++echo "$as_me: loading site script $ac_site_file" >&6;} ++ sed 's/^/| /' "$ac_site_file" >&5 ++ . "$ac_site_file" ++ fi ++done ++ ++if test -r "$cache_file"; then ++ # Some versions of bash will fail to source /dev/null (special ++ # files actually), so we avoid doing that. ++ if test -f "$cache_file"; then ++ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 ++echo "$as_me: loading cache $cache_file" >&6;} ++ case $cache_file in ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; ++ esac ++ fi ++else ++ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 ++echo "$as_me: creating cache $cache_file" >&6;} ++ >$cache_file ++fi ++ ++# Check that the precious variables saved in the cache have kept the same ++# value. ++ac_cache_corrupted=false ++for ac_var in $ac_precious_vars; do ++ eval ac_old_set=\$ac_cv_env_${ac_var}_set ++ eval ac_new_set=\$ac_env_${ac_var}_set ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value ++ case $ac_old_set,$ac_new_set in ++ set,) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,set) ++ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ++echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ++ ac_cache_corrupted=: ;; ++ ,);; ++ *) ++ if test "x$ac_old_val" != "x$ac_new_val"; then ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 ++echo "$as_me: former value: $ac_old_val" >&2;} ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 ++echo "$as_me: current value: $ac_new_val" >&2;} ++ ac_cache_corrupted=: ++ fi;; ++ esac ++ # Pass precious variables to config.status. ++ if test "$ac_new_set" = set; then ++ case $ac_new_val in ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *) ac_arg=$ac_var=$ac_new_val ;; ++ esac ++ case " $ac_configure_args " in ++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ++ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ++ esac ++ fi ++done ++if $ac_cache_corrupted; then ++ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ++echo "$as_me: error: changes in the environment can compromise the build" >&2;} ++ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ++echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu ++ ++ ++ ++ ++ ++ ++# Start of actual configure tests ++ ++ac_aux_dir= ++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do ++ if test -f "$ac_dir/install-sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install-sh -c" ++ break ++ elif test -f "$ac_dir/install.sh"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/install.sh -c" ++ break ++ elif test -f "$ac_dir/shtool"; then ++ ac_aux_dir=$ac_dir ++ ac_install_sh="$ac_aux_dir/shtool install -c" ++ break ++ fi ++done ++if test -z "$ac_aux_dir"; then ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ ++ ++# Find a good install program. We prefer a C program (faster), ++# so one script is as good as another. But avoid the broken or ++# incompatible versions: ++# SysV /etc/install, /usr/sbin/install ++# SunOS /usr/etc/install ++# IRIX /sbin/install ++# AIX /bin/install ++# AmigaOS /C/install, which installs bootblocks on floppy discs ++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag ++# AFS /usr/afsws/bin/install, which mishandles nonexistent args ++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic ++# ./install, which can be erroneously created by make from ./install.sh. ++{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ++echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } ++if test -z "$INSTALL"; then ++if test "${ac_cv_path_install+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ # Account for people who put trailing slashes in PATH elements. ++case $as_dir/ in ++ ./ | .// | /cC/* | \ ++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi ++ done ++ done ++ ;; ++esac ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ if test "${ac_cv_path_install+set}" = set; then ++ INSTALL=$ac_cv_path_install ++ else ++ # As a last resort, use the slow shell script. Don't cache a ++ # value for INSTALL within a source directory, because that will ++ # break other packages using the cache if that directory is ++ # removed, or if the value is a relative name. ++ INSTALL=$ac_install_sh ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $INSTALL" >&5 ++echo "${ECHO_T}$INSTALL" >&6; } ++ ++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. ++# It thinks the first close brace ends the variable substitution. ++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ++ ++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' ++ ++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ++ ++ ++# Make sure we can run config.sub. ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} ++ { (exit 1); exit 1; }; } ++ ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } ++if test "${ac_cv_build+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && ++ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 ++echo "$as_me: error: cannot guess build type; you must specify one" >&2;} ++ { (exit 1); exit 1; }; } ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++build=$ac_cv_build ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } ++if test "${ac_cv_host+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++host=$ac_cv_host ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ++ ++ ++{ echo "$as_me:$LINENO: checking target system type" >&5 ++echo $ECHO_N "checking target system type... $ECHO_C" >&6; } ++if test "${ac_cv_target+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if test "x$target_alias" = x; then ++ ac_cv_target=$ac_cv_host ++else ++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 ++echo "${ECHO_T}$ac_cv_target" >&6; } ++case $ac_cv_target in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 ++echo "$as_me: error: invalid value of canonical target" >&2;} ++ { (exit 1); exit 1; }; };; ++esac ++target=$ac_cv_target ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_target ++shift ++target_cpu=$1 ++target_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++target_os=$* ++IFS=$ac_save_IFS ++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac ++ ++ ++# The aliases save the names the user supplied, while $host etc. ++# will get canonicalized. ++test -n "$target_alias" && ++ test "$program_prefix$program_suffix$program_transform_name" = \ ++ NONENONEs,x,x, && ++ program_prefix=${target_alias}- ++ ++# Autoconf M4 include file defining utility macros for complex Canadian ++# cross builds. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++#### ++# _NCN_TOOL_PREFIXES: Some stuff that oughtta be done in AC_CANONICAL_SYSTEM ++# or AC_INIT. ++# These demand that AC_CANONICAL_SYSTEM be called beforehand. ++ ++#### ++# NCN_STRICT_CHECK_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) ++# Like plain AC_CHECK_TOOLS, but require prefix if build!=host. ++ ++ ++#### ++# NCN_STRICT_CHECK_TARGET_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path]) ++# Like CVS Autoconf AC_CHECK_TARGET_TOOLS, but require prefix if build!=target. ++ ++ ++ ++# Backported from Autoconf 2.5x; can go away when and if ++# we switch. Put the OS path separator in $PATH_SEPARATOR. ++ ++ ++ ++ ++# ACX_HAVE_GCC_FOR_TARGET ++# Check if the variable GCC_FOR_TARGET really points to a GCC binary. ++ ++ ++# ACX_CHECK_INSTALLED_TARGET_TOOL(VAR, PROG) ++# Searching for installed target binutils. We need to take extra care, ++# else we may find the wrong assembler, linker, etc., and lose. ++# ++# First try --with-build-time-tools, if specified. ++# ++# For build != host, we ask the installed GCC for the name of the tool it ++# uses, and accept it if it is an absolute path. This is because the ++# only good choice for a compiler is the same GCC version that is being ++# installed (or we couldn't make target libraries), and we assume that ++# on the host system we'll have not only the same GCC version, but also ++# the same binutils version. ++# ++# For build == host, search the same directories that the installed ++# compiler will search. We used to do this for the assembler, linker, ++# and nm only; for simplicity of configuration, however, we extend this ++# criterion to tools (such as ar and ranlib) that are never invoked by ++# the compiler, to avoid mismatches. ++# ++# Also note we have to check MD_EXEC_PREFIX before checking the user's path ++# if build == target. This makes the most sense only when bootstrapping, ++# but we also do so when build != host. In this case, we hope that the ++# build and host systems will have similar contents of MD_EXEC_PREFIX. ++# ++# If we do not find a suitable binary, then try the user's path. ++ ++ ++### ++# AC_PROG_CPP_WERROR ++# Used for autoconf 2.5x to force AC_PREPROC_IFELSE to reject code which ++# triggers warnings from the preprocessor. Will be in autoconf 2.58. ++# For now, using this also overrides header checks to use only the ++# preprocessor (matches 2.13 behavior; matching 2.58's behavior is a ++# bit harder from here). ++# Eventually autoconf will default to checking headers with the compiler ++# instead, and we'll have to do this differently. ++ ++# AC_PROG_CPP_WERROR ++ ++# Test for GNAT. ++# We require the gnatbind program, and a compiler driver that ++# understands Ada. We use the user's CC setting, already found. ++# ++# Sets the shell variable have_gnat to yes or no as appropriate, and ++# substitutes GNATBIND and GNATMAKE. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ case ${build_alias} in ++ "") build_noncanonical=${build} ;; ++ *) build_noncanonical=${build_alias} ;; ++esac ++ ++ case ${host_alias} in ++ "") host_noncanonical=${build_noncanonical} ;; ++ *) host_noncanonical=${host_alias} ;; ++esac ++ ++ case ${target_alias} in ++ "") target_noncanonical=${host_noncanonical} ;; ++ *) target_noncanonical=${target_alias} ;; ++esac ++ ++ ++ ++ ++# Need to pass this down for now :-P ++{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 ++echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } ++LN_S=$as_ln_s ++if test "$LN_S" = "ln -s"; then ++ { echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } ++else ++ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ++echo "${ECHO_T}no, using $LN_S" >&6; } ++fi ++ ++ ++# Determine x_ada_cflags ++case $host in ++ hppa*) x_ada_cflags=-mdisable-indexing ;; ++ *) x_ada_cflags= ;; ++esac ++ ++ ++# Determine what to build for 'gnattools' ++if test $build = $target ; then ++ # Note that build=target is almost certainly the wrong test; FIXME ++ default_gnattools_target="gnattools-native" ++else ++ default_gnattools_target="gnattools-cross" ++fi ++ ++ ++# Target-specific stuff (defaults) ++TOOLS_TARGET_PAIRS= ++ ++ ++# Per-target case statement ++# ------------------------- ++case "${target}" in ++ alpha*-dec-vx*) # Unlike all other Vxworks ++ ;; ++ m68k*-wrs-vx* \ ++ | powerpc*-wrs-vxworks \ ++ | sparc*-wrs-vx* \ ++ | *86-wrs-vxworks \ ++ | xscale*-wrs-vx* \ ++ | xscale*-wrs-coff \ ++ | mips*-wrs-vx*) ++ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adbconfcache <<\_ACEOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs, see configure's option --config-cache. ++# It is not useful on other systems. If it contains results you don't ++# want to keep, you may remove or edit it. ++# ++# config.status only pays attention to the cache file if you give it ++# the --recheck option to rerun configure. ++# ++# `ac_cv_env_foo' variables (set or unset) will be overridden when ++# loading this file, other *unset* `ac_cv_foo' will be assigned the ++# following values. ++ ++_ACEOF ++ ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, we kill variables containing newlines. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ ++ (set) 2>&1 | ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) ++ # `set' does not quote correctly, so add quotes (double-quote ++ # substitution turns \\\\ into \\, and sed turns \\ into \). ++ sed -n \ ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ ;; #( ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ++ ;; ++ esac | ++ sort ++) | ++ sed ' ++ /^ac_cv_env_/b end ++ t clear ++ :clear ++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ++ t end ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} ++ cat confcache >$cache_file ++ else ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} ++ fi ++fi ++rm -f confcache ++ ++test "x$prefix" = xNONE && prefix=$ac_default_prefix ++# Let make expand exec_prefix. ++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ++ ++# Transform confdefs.h into DEFS. ++# Protect against shell expansion while executing Makefile rules. ++# Protect against Makefile macro expansion. ++# ++# If the first sed substitution is executed (which looks for macros that ++# take arguments), then branch to the quote section. Otherwise, ++# look for a macro that doesn't take arguments. ++ac_script=' ++t clear ++:clear ++s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g ++t quote ++s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g ++t quote ++b any ++:quote ++s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g ++s/\[/\\&/g ++s/\]/\\&/g ++s/\$/$$/g ++H ++:any ++${ ++ g ++ s/^\n// ++ s/\n/ /g ++ p ++} ++' ++DEFS=`sed -n "$ac_script" confdefs.h` ++ ++ ++ac_libobjs= ++ac_ltlibobjs= ++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ++ # 1. Remove the extension, and $U if already installed. ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' ++done ++LIBOBJS=$ac_libobjs ++ ++LTLIBOBJS=$ac_ltlibobjs ++ ++ ++ ++: ${CONFIG_STATUS=./config.status} ++ac_clean_files_save=$ac_clean_files ++ac_clean_files="$ac_clean_files $CONFIG_STATUS" ++{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ++echo "$as_me: creating $CONFIG_STATUS" >&6;} ++cat >$CONFIG_STATUS <<_ACEOF ++#! $SHELL ++# Generated by $as_me. ++# Run this file to recreate the current configuration. ++# Compiler output produced by configure, useful for debugging ++# configure, is in config.log if it exists. ++ ++debug=false ++ac_cs_recheck=false ++ac_cs_silent=false ++SHELL=\${CONFIG_SHELL-$SHELL} ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++## --------------------- ## ++## M4sh Initialization. ## ++## --------------------- ## ++ ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh ++fi ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then ++ as_unset=unset ++else ++ as_unset=false ++fi ++ ++ ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ ++# Work around bugs in pre-3.0 UWIN ksh. ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done ++PS1='$ ' ++PS2='> ' ++PS4='+ ' ++ ++# NLS nuisances. ++for as_var in \ ++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ++ LC_TELEPHONE LC_TIME ++do ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ eval $as_var=C; export $as_var ++ else ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ fi ++done ++ ++# Required to use basename. ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then ++ as_basename=basename ++else ++ as_basename=false ++fi ++ ++ ++# Name of the executable. ++as_me=`$as_basename -- "$0" || ++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || ++echo X/"$0" | ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ ++# CDPATH. ++$as_unset CDPATH ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { ++ ++ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ++ # uniformly replaced by the line number. The first 'sed' inserts a ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. ++ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | ++ sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno ++ N ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ ++ t loop ++ s/-\n.*// ++ ' >$as_me.lineno && ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 ++ { (exit 1); exit 1; }; } ++ ++ # Don't try to exec as it changes $[0], causing all sort of problems ++ # (the dirname of $[0] is not the place where we might find the ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" ++ # Exit status is that of the last command. ++ exit ++} ++ ++ ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; ++esac ++ ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then ++ as_expr=expr ++else ++ as_expr=false ++fi ++ ++rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi ++echo >conf$$.file ++if ln -s conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || ++ as_ln_s='cp -p' ++elif ln conf$$.file conf$$ 2>/dev/null; then ++ as_ln_s=ln ++else ++ as_ln_s='cp -p' ++fi ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null ++ ++if mkdir -p . 2>/dev/null; then ++ as_mkdir_p=: ++else ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++exec 6>&1 ++ ++# Save the log message, to keep $[0] and so on meaningful, and to ++# report actual input values of CONFIG_FILES etc. instead of their ++# values after options handling. ++ac_log=" ++This file was extended by $as_me, which was ++generated by GNU Autoconf 2.61. Invocation command line was ++ ++ CONFIG_FILES = $CONFIG_FILES ++ CONFIG_HEADERS = $CONFIG_HEADERS ++ CONFIG_LINKS = $CONFIG_LINKS ++ CONFIG_COMMANDS = $CONFIG_COMMANDS ++ $ $0 $@ ++ ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++# Files that config.status was made for. ++config_files="$ac_config_files" ++ ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ac_cs_usage="\ ++\`$as_me' instantiates files from templates according to the ++current configuration. ++ ++Usage: $0 [OPTIONS] [FILE]... ++ ++ -h, --help print this help, then exit ++ -V, --version print version number and configuration settings, then exit ++ -q, --quiet do not print progress messages ++ -d, --debug don't remove temporary files ++ --recheck update $as_me by reconfiguring in the same conditions ++ --file=FILE[:TEMPLATE] ++ instantiate the configuration file FILE ++ ++Configuration files: ++$config_files ++ ++Report bugs to ." ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ac_cs_version="\\ ++config.status ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" ++ ++Copyright (C) 2006 Free Software Foundation, Inc. ++This config.status script is free software; the Free Software Foundation ++gives unlimited permission to copy, distribute and modify it." ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' ++INSTALL='$INSTALL' ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If no file are specified by the user, then we need to provide default ++# value. By we need to know if files were specified by the user. ++ac_need_defaults=: ++while test $# != 0 ++do ++ case $1 in ++ --*=*) ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ++ ac_shift=: ++ ;; ++ *) ++ ac_option=$1 ++ ac_optarg=$2 ++ ac_shift=shift ++ ;; ++ esac ++ ++ case $ac_option in ++ # Handling of the options. ++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ++ ac_cs_recheck=: ;; ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) ++ debug=: ;; ++ --file | --fil | --fi | --f ) ++ $ac_shift ++ CONFIG_FILES="$CONFIG_FILES $ac_optarg" ++ ac_need_defaults=false;; ++ --he | --h | --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; ++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ++ | -silent | --silent | --silen | --sile | --sil | --si | --s) ++ ac_cs_silent=: ;; ++ ++ # This is an error. ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 ++ { (exit 1); exit 1; }; } ;; ++ ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; ++ ++ esac ++ shift ++done ++ ++ac_configure_extra_args= ++ ++if $ac_cs_silent; then ++ exec 6>/dev/null ++ ac_configure_extra_args="$ac_configure_extra_args --silent" ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++if \$ac_cs_recheck; then ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++fi ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 ++ ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. ++for ac_config_target in $ac_config_targets ++do ++ case $ac_config_target in ++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; ++ ++ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ++echo "$as_me: error: invalid argument: $ac_config_target" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++done ++ ++ ++# If the user did not use the arguments to specify the items to instantiate, ++# then the envvar interface is used. Set only those that are not. ++# We use the long form for the default assignment because of an extremely ++# bizarre bug on SunOS 4.1.3. ++if $ac_need_defaults; then ++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ++fi ++ ++# Have a temporary directory for convenience. Make it in the build tree ++# simply because there is no reason against having it here, and in addition, ++# creating and moving files from /tmp can sometimes cause problems. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. ++$debug || ++{ ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 ++ trap '{ (exit 1); exit 1; }' 1 2 13 15 ++} ++# Create a (secure) tmp directory for tmp files. ++ ++{ ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && ++ test -n "$tmp" && test -d "$tmp" ++} || ++{ ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") ++} || ++{ ++ echo "$me: cannot create a temporary directory in ." >&2 ++ { (exit 1); exit 1; } ++} ++ ++# ++# Set up the sed scripts for CONFIG_FILES section. ++# ++ ++# No need to generate the scripts if there are no CONFIG_FILES. ++# This happens for instance when ./config.status config.h ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim ++INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim ++INSTALL_DATA!$INSTALL_DATA$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++target!$target$ac_delim ++target_cpu!$target_cpu$ac_delim ++target_vendor!$target_vendor$ac_delim ++target_os!$target_os$ac_delim ++target_noncanonical!$target_noncanonical$ac_delim ++LN_S!$LN_S$ac_delim ++x_ada_cflags!$x_ada_cflags$ac_delim ++default_gnattools_target!$default_gnattools_target$ac_delim ++TOOLS_TARGET_PAIRS!$TOOLS_TARGET_PAIRS$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 59; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " ++ fi ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi ++ ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end ++_ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; ++ esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done ++ ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || ++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$ac_file" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { ++ as_dirs= ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break ++ done ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} ++ { (exit 1); exit 1; }; }; } ++ ac_builddir=. ++ ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) ++ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix ++ ++case $srcdir in ++ .) # We are building in place. ++ ac_srcdir=. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. ++ ac_srcdir=$srcdir$ac_dir_suffix; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; ++esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix ++ ++ ++ case $ac_mode in ++ :F) ++ # ++ # CONFIG_FILE ++ # ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; ++ esac ++_ACEOF ++ ++cat >>$CONFIG_STATUS <<\_ACEOF ++# If the template does not know about datarootdir, expand it. ++# FIXME: This hack should be removed a few years after 2.60. ++ac_datarootdir_hack=; ac_datarootdir_seen= ++ ++case `sed -n '/datarootdir/ { ++ p ++ q ++} ++/@datadir@/p ++/@docdir@/p ++/@infodir@/p ++/@localedir@/p ++/@mandir@/p ++' $ac_file_inputs` in ++*datarootdir*) ac_datarootdir_seen=yes;; ++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) ++ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 ++echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++ ac_datarootdir_hack=' ++ s&@datadir@&$datadir&g ++ s&@docdir@&$docdir&g ++ s&@infodir@&$infodir&g ++ s&@localedir@&$localedir&g ++ s&@mandir@&$mandir&g ++ s&\\\${datarootdir}&$datarootdir&g' ;; ++esac ++_ACEOF ++ ++# Neutralize VPATH when `$srcdir' = `.'. ++# Shell code in configure.ac might set extrasub. ++# FIXME: do we really want to maintain this feature? ++cat >>$CONFIG_STATUS <<_ACEOF ++ sed "$ac_vpsub ++$extrasub ++_ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++:t ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b ++s&@configure_input@&$configure_input&;t t ++s&@top_builddir@&$ac_top_builddir_sub&;t t ++s&@srcdir@&$ac_srcdir&;t t ++s&@abs_srcdir@&$ac_abs_srcdir&;t t ++s&@top_srcdir@&$ac_top_srcdir&;t t ++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t ++s&@builddir@&$ac_builddir&;t t ++s&@abs_builddir@&$ac_abs_builddir&;t t ++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t ++s&@INSTALL@&$ac_INSTALL&;t t ++$ac_datarootdir_hack ++" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out ++ ++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && ++ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && ++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && ++ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&5 ++echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' ++which seems to be undefined. Please make sure it is defined." >&2;} ++ ++ rm -f "$tmp/stdin" ++ case $ac_file in ++ -) cat "$tmp/out"; rm -f "$tmp/out";; ++ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; ++ esac ++ ;; ++ ++ ++ ++ esac ++ ++done # for ac_tag ++ ++ ++{ (exit 0); exit 0; } ++_ACEOF ++chmod +x $CONFIG_STATUS ++ac_clean_files=$ac_clean_files_save ++ ++ ++# configure is writing to config.log, and then calls config.status. ++# config.status does its own redirection, appending to config.log. ++# Unfortunately, on DOS this fails, as config.log is still kept open ++# by configure, so config.status won't be able to write to it; its ++# output is simply discarded. So we exec the FD to /dev/null, ++# effectively closing config.log, so it can be properly (re)opened and ++# appended to by config.status. When coming back to configure, we ++# need to make the FD available again. ++if test "$no_create" != yes; then ++ ac_cs_success=: ++ ac_config_status_args= ++ test "$silent" = yes && ++ ac_config_status_args="$ac_config_status_args --quiet" ++ exec 5>/dev/null ++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ++ exec 5>>config.log ++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which ++ # would make configure fail if this is the last instruction. ++ $ac_cs_success || { (exit 1); exit 1; } ++fi ++ +Index: libgnatprj/Makefile.in +=================================================================== +--- /dev/null ++++ libgnatprj/Makefile.in +@@ -0,0 +1,177 @@ ++# Makefile for libgnatprj. ++# Copyright (c) 2006 Ludovic Brenta ++# ++# This file 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 ++ ++# Default target; must be first. ++all: libgnatprj ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC:=../gcc/xgcc -B../gcc/ ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++LIBGNATVSN := -I../libgnatvsn ++CFLAGS := -g -O2 ++ADAFLAGS := -g -O2 -gnatn ++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++TOOLS_TARGET_PAIRS := @TOOLS_TARGET_PAIRS@ ++LN_S := @LN_S@ ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatprj install ++libgnatprj: libgnatprj.so.$(LIB_VERSION) libgnatprj.a ++ ++# Here we list one file per Ada unit: the body file if the unit has a ++# body, the spec file otherwise. ++PRJ_SOURCES := ali.adb ali-util.adb butil.adb binderr.adb errout.adb \ ++erroutc.adb errutil.adb err_vars.ads fname-uf.adb fmap.adb impunit.adb \ ++lib-util.adb makeutl.adb mlib.adb mlib-fil.adb mlib-tgt.adb \ ++mlib-tgt-specific.adb mlib-utl.adb osint.adb osint-c.adb prj.adb prj-attr.adb \ ++prj-attr-pm.adb prj-com.ads prj-dect.adb prj-env.adb prj-err.adb prj-ext.adb \ ++prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb prj-proc.adb prj-strt.adb \ ++prj-tree.adb prj-util.adb rident.ads scng.adb sfn_scan.adb sinfo-cn.adb \ ++sinput-c.adb sinput-p.adb style.ads styleg.adb styleg-c.adb stylesw.adb \ ++switch.adb switch-m.adb targparm.adb tempdir.adb ++ ++# Source files generated in build/gcc/ada, not src/gcc/ada. ++GENERATED_SOURCES := sdefault.adb ++ ++SOURCES := $(PRJ_SOURCES) $(GENERATED_SOURCES) ++ ++OBJECTS := $(patsubst %.ads,%.o,$(SOURCES:.adb=.o)) ++ ++# Add some object files compiled from C sources. prefix.o requires ++# some objects from libiberty. ++OBJECTS += concat.o link.o prefix.o xexit.o xmalloc.o xstrdup.o ++ ++vpath %.c @srcdir@/../gcc/ada ++ ++libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatprj.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L../libgnatvsn -lgnatvsn ++ $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so ++ chmod a=r obj-shared/*.ali ++# Make the .ali files, but not the .o files, visible to the gnat tools. ++ cp -lp obj-shared/*.ali . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatprj-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.c ++ $(GCC) -c -fPIC $(CFLAGS) -I@srcdir@/../gcc $< -o $@ ++ ++obj-shared/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GCC) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ $< -o $@ ++ ++obj-shared/%.o: @srcdir@/../libiberty/%.c ++ $(GCC) -c -fPIC $(CFLAGS) \ ++ -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatprj.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatprj.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatprj-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.c ++ $(GCC) -c $(CFLAGS) -I@srcdir@/../gcc $< -o $@ ++ ++obj-static/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GCC) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ $< -o $@ ++ ++obj-static/%.o: @srcdir@/../libiberty/%.c ++ $(GCC) -c -fPIC $(CFLAGS) \ ++ -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(SOURCES): stamp-libgnatprj-sources ++ ++stamp-libgnatprj-sources: ++ for file in $(PRJ_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ for file in $(GENERATED_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) ../gcc/ada/$$file .; fi; \ ++ if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) ../gcc/ada/$$ads .; \ ++ else \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ fi; \ ++ done ++ $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ rm -f $(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ $(word 1,$(subst <, ,$(PAIR)));) ++ touch $@ ++ ++# Generate a list of source files (.ads and .adb) to install. Almost ++# all of them are in src/gcc/ada, but some are generated during build ++# and are in build/gcc/ada. ++BODIES := $(filter %.adb,$(PRJ_SOURCES)) ++SPECS := $(filter %.ads,$(PRJ_SOURCES)) $(patsubst %.adb,%.ads,$(BODIES)) ++SOURCES_TO_INSTALL := \ ++$(addprefix @srcdir@/../gcc/ada/,$(SPECS) $(BODIES)) \ ++$(addprefix ../gcc/ada/,$(GENERATED_SOURCES)) ++ ++install: libgnatprj ++ $(INSTALL_DATA) libgnatprj.a $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) libgnatprj.so.$(LIB_VERSION) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; \ ++ ln -sf libgnatprj.so.$(LIB_VERSION) libgnatprj.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ $(INSTALL_DATA) $(SOURCES_TO_INSTALL) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatprj* *.adb *.ads stamp* +Index: Makefile.def +=================================================================== +--- Makefile.def.orig ++++ Makefile.def +@@ -130,6 +130,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -175,6 +182,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; lib_path=.libs; }; + + // These are (some of) the make targets to be done in each subdirectory. +@@ -346,7 +360,10 @@ + + dependencies = { module=all-gnattools; on=all-libada; }; + dependencies = { module=all-gnattools; on=all-libgnatvsn; }; ++dependencies = { module=all-gnattools; on=all-libgnatprj; }; + dependencies = { module=all-libgnatvsn; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libgnatvsn; }; + + dependencies = { module=configure-mpfr; on=all-gmp; }; + +Index: Makefile.in +=================================================================== +--- Makefile.in.orig ++++ Makefile.in +@@ -699,6 +699,7 @@ + maybe-configure-utils \ + maybe-configure-libada \ + maybe-configure-libgnatvsn \ ++ maybe-configure-libgnatprj \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -723,6 +724,7 @@ + maybe-configure-target-rda \ + maybe-configure-target-libada \ + maybe-configure-target-libgnatvsn \ ++ maybe-configure-target-libgnatprj \ + maybe-configure-target-libgomp + + # The target built for a native non-bootstrap build. +@@ -852,6 +854,7 @@ + all-host: maybe-all-utils + all-host: maybe-all-libada + all-host: maybe-all-libgnatvsn ++all-host: maybe-all-libgnatprj + all-host: maybe-all-gnattools + + .PHONY: all-target +@@ -879,6 +882,7 @@ + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgnatvsn ++all-target: maybe-all-target-libgnatprj + all-target: maybe-all-target-libgomp + + # Do a target for all the subdirectories. A ``make do-X'' will do a +@@ -968,6 +972,7 @@ + info-host: maybe-info-utils + info-host: maybe-info-libada + info-host: maybe-info-libgnatvsn ++info-host: maybe-info-libgnatprj + info-host: maybe-info-gnattools + + .PHONY: info-target +@@ -993,6 +998,7 @@ + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgnatvsn ++info-target: maybe-info-target-libgnatprj + info-target: maybe-info-target-libgomp + + .PHONY: do-dvi +@@ -1077,6 +1083,7 @@ + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada + dvi-host: maybe-dvi-libgnatvsn ++dvi-host: maybe-dvi-libgnatprj + dvi-host: maybe-dvi-gnattools + + .PHONY: dvi-target +@@ -1102,6 +1109,7 @@ + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgnatvsn ++dvi-target: maybe-dvi-target-libgnatprj + dvi-target: maybe-dvi-target-libgomp + + .PHONY: do-pdf +@@ -1186,6 +1194,7 @@ + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada + pdf-host: maybe-pdf-libgnatvsn ++pdf-host: maybe-pdf-libgnatprj + pdf-host: maybe-pdf-gnattools + + .PHONY: pdf-target +@@ -1211,6 +1220,7 @@ + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgnatvsn ++pdf-target: maybe-pdf-target-libgnatprj + pdf-target: maybe-pdf-target-libgomp + + .PHONY: do-html +@@ -1295,6 +1305,7 @@ + html-host: maybe-html-utils + html-host: maybe-html-libada + html-host: maybe-html-libgnatvsn ++html-host: maybe-html-libgnatprj + html-host: maybe-html-gnattools + + .PHONY: html-target +@@ -1320,6 +1331,7 @@ + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgnatvsn ++html-target: maybe-html-target-libgnatprj + html-target: maybe-html-target-libgomp + + .PHONY: do-TAGS +@@ -1404,6 +1416,7 @@ + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada + TAGS-host: maybe-TAGS-libgnatvsn ++TAGS-host: maybe-TAGS-libgnatprj + TAGS-host: maybe-TAGS-gnattools + + .PHONY: TAGS-target +@@ -1429,6 +1442,7 @@ + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgnatvsn ++TAGS-target: maybe-TAGS-target-libgnatprj + TAGS-target: maybe-TAGS-target-libgomp + + .PHONY: do-install-info +@@ -1513,6 +1527,7 @@ + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada + install-info-host: maybe-install-info-libgnatvsn ++install-info-host: maybe-install-info-libgnatprj + install-info-host: maybe-install-info-gnattools + + .PHONY: install-info-target +@@ -1538,6 +1553,7 @@ + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgnatvsn ++install-info-target: maybe-install-info-target-libgnatprj + install-info-target: maybe-install-info-target-libgomp + + .PHONY: do-install-pdf +@@ -1622,6 +1638,7 @@ + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada + install-pdf-host: maybe-install-pdf-libgnatvsn ++install-pdf-host: maybe-install-pdf-libgnatprj + install-pdf-host: maybe-install-pdf-gnattools + + .PHONY: install-pdf-target +@@ -1647,6 +1664,7 @@ + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgnatvsn ++install-pdf-target: maybe-install-pdf-target-libgnatprj + install-pdf-target: maybe-install-pdf-target-libgomp + + .PHONY: do-install-html +@@ -1731,6 +1749,7 @@ + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada + install-html-host: maybe-install-html-libgnatvsn ++install-html-host: maybe-install-html-libgnatprj + install-html-host: maybe-install-html-gnattools + + .PHONY: install-html-target +@@ -1756,6 +1775,7 @@ + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgnatvsn ++install-html-target: maybe-install-html-target-libgnatprj + install-html-target: maybe-install-html-target-libgomp + + .PHONY: do-installcheck +@@ -1840,6 +1860,7 @@ + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada + installcheck-host: maybe-installcheck-libgnatvsn ++installcheck-host: maybe-installcheck-libgnatprj + installcheck-host: maybe-installcheck-gnattools + + .PHONY: installcheck-target +@@ -1865,6 +1886,7 @@ + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgnatvsn ++installcheck-target: maybe-installcheck-target-libgnatprj + installcheck-target: maybe-installcheck-target-libgomp + + .PHONY: do-mostlyclean +@@ -1949,6 +1971,7 @@ + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada + mostlyclean-host: maybe-mostlyclean-libgnatvsn ++mostlyclean-host: maybe-mostlyclean-libgnatprj + mostlyclean-host: maybe-mostlyclean-gnattools + + .PHONY: mostlyclean-target +@@ -1974,6 +1997,7 @@ + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgnatvsn ++mostlyclean-target: maybe-mostlyclean-target-libgnatprj + mostlyclean-target: maybe-mostlyclean-target-libgomp + + .PHONY: do-clean +@@ -2058,6 +2082,7 @@ + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada + clean-host: maybe-clean-libgnatvsn ++clean-host: maybe-clean-libgnatprj + clean-host: maybe-clean-gnattools + + .PHONY: clean-target +@@ -2083,6 +2108,7 @@ + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgnatvsn ++clean-target: maybe-clean-target-libgnatprj + clean-target: maybe-clean-target-libgomp + + .PHONY: do-distclean +@@ -2167,6 +2193,7 @@ + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada + distclean-host: maybe-distclean-libgnatvsn ++distclean-host: maybe-distclean-libgnatprj + distclean-host: maybe-distclean-gnattools + + .PHONY: distclean-target +@@ -2192,6 +2219,7 @@ + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgnatvsn ++distclean-target: maybe-distclean-target-libgnatprj + distclean-target: maybe-distclean-target-libgomp + + .PHONY: do-maintainer-clean +@@ -2276,6 +2304,7 @@ + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada + maintainer-clean-host: maybe-maintainer-clean-libgnatvsn ++maintainer-clean-host: maybe-maintainer-clean-libgnatprj + maintainer-clean-host: maybe-maintainer-clean-gnattools + + .PHONY: maintainer-clean-target +@@ -2301,6 +2330,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + + +@@ -2439,6 +2469,7 @@ + maybe-check-utils \ + maybe-check-libada \ + maybe-check-libgnatvsn \ ++ maybe-check-libgnatprj \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2464,6 +2495,7 @@ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgnatvsn \ ++ maybe-check-target-libgnatprj \ + maybe-check-target-libgomp + + do-check: +@@ -2574,6 +2606,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2649,6 +2682,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2674,6 +2708,7 @@ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgnatvsn \ ++ maybe-install-target-libgnatprj \ + maybe-install-target-libgomp + + uninstall: +@@ -39562,6 +39597,327 @@ + + + ++.PHONY: configure-libgnatprj maybe-configure-libgnatprj ++maybe-configure-libgnatprj: ++@if gcc-bootstrap ++configure-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++maybe-configure-libgnatprj: configure-libgnatprj ++configure-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatprj ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatprj; \ ++ cd "$(HOST_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-libgnatprj maybe-all-libgnatprj ++maybe-all-libgnatprj: ++@if gcc-bootstrap ++all-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++TARGET-libgnatprj=all ++maybe-all-libgnatprj: all-libgnatprj ++all-libgnatprj: configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgnatprj)) ++@endif libgnatprj ++ ++ ++ ++ ++.PHONY: check-libgnatprj maybe-check-libgnatprj ++maybe-check-libgnatprj: ++@if libgnatprj ++maybe-check-libgnatprj: check-libgnatprj ++ ++check-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: install-libgnatprj maybe-install-libgnatprj ++maybe-install-libgnatprj: ++@if libgnatprj ++maybe-install-libgnatprj: install-libgnatprj ++ ++install-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatprj info-libgnatprj ++maybe-info-libgnatprj: ++@if libgnatprj ++maybe-info-libgnatprj: info-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-dvi-libgnatprj dvi-libgnatprj ++maybe-dvi-libgnatprj: ++@if libgnatprj ++maybe-dvi-libgnatprj: dvi-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-pdf-libgnatprj pdf-libgnatprj ++maybe-pdf-libgnatprj: ++@if libgnatprj ++maybe-pdf-libgnatprj: pdf-libgnatprj ++ ++pdf-libgnatprj: \ ++ configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-html-libgnatprj html-libgnatprj ++maybe-html-libgnatprj: ++@if libgnatprj ++maybe-html-libgnatprj: html-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-TAGS-libgnatprj TAGS-libgnatprj ++maybe-TAGS-libgnatprj: ++@if libgnatprj ++maybe-TAGS-libgnatprj: TAGS-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-info-libgnatprj install-info-libgnatprj ++maybe-install-info-libgnatprj: ++@if libgnatprj ++maybe-install-info-libgnatprj: install-info-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-pdf-libgnatprj install-pdf-libgnatprj ++maybe-install-pdf-libgnatprj: ++@if libgnatprj ++maybe-install-pdf-libgnatprj: install-pdf-libgnatprj ++ ++install-pdf-libgnatprj: \ ++ configure-libgnatprj \ ++ pdf-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-html-libgnatprj install-html-libgnatprj ++maybe-install-html-libgnatprj: ++@if libgnatprj ++maybe-install-html-libgnatprj: install-html-libgnatprj ++ ++install-html-libgnatprj: \ ++ configure-libgnatprj \ ++ html-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-installcheck-libgnatprj installcheck-libgnatprj ++maybe-installcheck-libgnatprj: ++@if libgnatprj ++maybe-installcheck-libgnatprj: installcheck-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-mostlyclean-libgnatprj mostlyclean-libgnatprj ++maybe-mostlyclean-libgnatprj: ++@if libgnatprj ++maybe-mostlyclean-libgnatprj: mostlyclean-libgnatprj ++ ++mostlyclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-clean-libgnatprj clean-libgnatprj ++maybe-clean-libgnatprj: ++@if libgnatprj ++maybe-clean-libgnatprj: clean-libgnatprj ++ ++clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-distclean-libgnatprj distclean-libgnatprj ++maybe-distclean-libgnatprj: ++@if libgnatprj ++maybe-distclean-libgnatprj: distclean-libgnatprj ++ ++distclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++.PHONY: maybe-maintainer-clean-libgnatprj maintainer-clean-libgnatprj ++maybe-maintainer-clean-libgnatprj: ++@if libgnatprj ++maybe-maintainer-clean-libgnatprj: maintainer-clean-libgnatprj ++ ++maintainer-clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -49480,6 +49836,345 @@ + + + ++.PHONY: configure-target-libgnatprj maybe-configure-target-libgnatprj ++maybe-configure-target-libgnatprj: ++@if gcc-bootstrap ++configure-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++maybe-configure-target-libgnatprj: configure-target-libgnatprj ++configure-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatprj..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatprj/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatprj; \ ++ cd "$(TARGET_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatprj maybe-all-target-libgnatprj ++maybe-all-target-libgnatprj: ++@if gcc-bootstrap ++all-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++TARGET-target-libgnatprj=all ++maybe-all-target-libgnatprj: all-target-libgnatprj ++all-target-libgnatprj: configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgnatprj)) ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatprj maybe-check-target-libgnatprj ++maybe-check-target-libgnatprj: ++@if target-libgnatprj ++maybe-check-target-libgnatprj: check-target-libgnatprj ++ ++# Dummy target for uncheckable module. ++check-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: install-target-libgnatprj maybe-install-target-libgnatprj ++maybe-install-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-target-libgnatprj: install-target-libgnatprj ++ ++install-target-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatprj info-target-libgnatprj ++maybe-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-info-target-libgnatprj: info-target-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-dvi-target-libgnatprj dvi-target-libgnatprj ++maybe-dvi-target-libgnatprj: ++@if target-libgnatprj ++maybe-dvi-target-libgnatprj: dvi-target-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-pdf-target-libgnatprj pdf-target-libgnatprj ++maybe-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-pdf-target-libgnatprj: pdf-target-libgnatprj ++ ++pdf-target-libgnatprj: \ ++ configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-html-target-libgnatprj html-target-libgnatprj ++maybe-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-html-target-libgnatprj: html-target-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-TAGS-target-libgnatprj TAGS-target-libgnatprj ++maybe-TAGS-target-libgnatprj: ++@if target-libgnatprj ++maybe-TAGS-target-libgnatprj: TAGS-target-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-info-target-libgnatprj install-info-target-libgnatprj ++maybe-install-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-info-target-libgnatprj: install-info-target-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-pdf-target-libgnatprj install-pdf-target-libgnatprj ++maybe-install-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-pdf-target-libgnatprj: install-pdf-target-libgnatprj ++ ++install-pdf-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ pdf-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-html-target-libgnatprj install-html-target-libgnatprj ++maybe-install-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-html-target-libgnatprj: install-html-target-libgnatprj ++ ++install-html-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ html-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-installcheck-target-libgnatprj installcheck-target-libgnatprj ++maybe-installcheck-target-libgnatprj: ++@if target-libgnatprj ++maybe-installcheck-target-libgnatprj: installcheck-target-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-mostlyclean-target-libgnatprj mostlyclean-target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: mostlyclean-target-libgnatprj ++ ++mostlyclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-clean-target-libgnatprj clean-target-libgnatprj ++maybe-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-clean-target-libgnatprj: clean-target-libgnatprj ++ ++clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-distclean-target-libgnatprj distclean-target-libgnatprj ++maybe-distclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-distclean-target-libgnatprj: distclean-target-libgnatprj ++ ++distclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: maintainer-clean-target-libgnatprj ++ ++maintainer-clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -52030,6 +52725,7 @@ + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgnatvsn: stage_last ++configure-target-libgnatprj: stage_last + configure-target-libgomp: stage_last + @endif gcc-bootstrap + +@@ -52055,6 +52751,7 @@ + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgnatvsn: maybe-all-gcc ++configure-target-libgnatprj: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + @endif gcc-no-bootstrap + +@@ -52310,7 +53007,10 @@ + all-fixincludes: maybe-all-libiberty + all-gnattools: maybe-all-libada + all-gnattools: maybe-all-libgnatvsn ++all-gnattools: maybe-all-libgnatprj + all-libgnatvsn: maybe-all-libada ++all-libgnatprj: maybe-all-libada ++all-libgnatprj: maybe-all-libgnatvsn + configure-mpfr: maybe-all-gmp + + configure-stage1-mpfr: maybe-all-stage1-gmp +@@ -52749,6 +53449,7 @@ + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgnatvsn: maybe-all-target-libgcc ++configure-target-libgnatprj: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + @endif gcc-no-bootstrap + +@@ -52793,6 +53494,8 @@ + + configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + +Index: configure.ac +=================================================================== +--- configure.ac.orig ++++ configure.ac +@@ -155,7 +155,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr libada libgnatvsn" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr libada libgnatvsn libgnatprj" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -186,7 +186,8 @@ + ${libgcj} \ + target-libobjc \ + target-libada \ +- target-libgnatvsn" ++ target-libgnatvsn \ ++ target-libgnatprj" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -264,7 +265,7 @@ + + # Similarly, some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn target-libgnatprj" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -341,7 +342,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools" + fi + + AC_ARG_ENABLE(libssp, +Index: libgnatprj/configure.ac +=================================================================== +--- /dev/null ++++ libgnatprj/configure.ac +@@ -0,0 +1,144 @@ ++# Configure script for libada. ++# Copyright 2003, 2004 Free Software Foundation, Inc. ++# ++# This file 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++AC_INIT ++AC_PREREQ([2.59]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Start of actual configure tests ++ ++AC_PROG_INSTALL ++ ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++ ++sinclude(../config/acx.m4) ++ACX_NONCANONICAL_TARGET ++ ++# Need to pass this down for now :-P ++AC_PROG_LN_S ++ ++# Determine x_ada_cflags ++case $host in ++ hppa*) x_ada_cflags=-mdisable-indexing ;; ++ *) x_ada_cflags= ;; ++esac ++AC_SUBST([x_ada_cflags]) ++ ++# Determine what to build for 'gnattools' ++if test $build = $target ; then ++ # Note that build=target is almost certainly the wrong test; FIXME ++ default_gnattools_target="gnattools-native" ++else ++ default_gnattools_target="gnattools-cross" ++fi ++AC_SUBST([default_gnattools_target]) ++ ++# Target-specific stuff (defaults) ++TOOLS_TARGET_PAIRS= ++AC_SUBST(TOOLS_TARGET_PAIRS) ++ ++# Per-target case statement ++# ------------------------- ++case "${target}" in ++ alpha*-dec-vx*) # Unlike all other Vxworks ++ ;; ++ m68k*-wrs-vx* \ ++ | powerpc*-wrs-vxworks \ ++ | sparc*-wrs-vx* \ ++ | *86-wrs-vxworks \ ++ | xscale*-wrs-vx* \ ++ | xscale*-wrs-coff \ ++ | mips*-wrs-vx*) ++ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/ada/config-lang.in +=================================================================== +--- gcc/ada/config-lang.in.orig ++++ gcc/ada/config-lang.in +@@ -34,8 +34,8 @@ + + outputs=ada/Makefile + +-target_libs="target-libada" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn" ++lang_dirs="libada libgnatvsn gnattools" + + # Ada will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +Index: gnattools/Makefile.in +=================================================================== +--- gnattools/Makefile.in.orig ++++ gnattools/Makefile.in +@@ -37,10 +35,11 @@ + CFLAGS=-O2 -Wall + INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ +- @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) ++ ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) + ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ADA_LIBS += -L../libgnatvsn -lgnatvsn + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -66,62 +65,34 @@ + # Since we don't have gnatmake, we must specify the full list of + # object files necessary to build gnatmake and gnatlink. + # TODO: remove from these lists the objects that are part of +-# libgnatvsn and libgnatprj. ++# libgnatprj. + GNATLINK_OBJS = \ + ali.o \ +-alloc.o \ + butil.o \ +-casing.o \ +-csets.o \ +-debug.o \ + fmap.o \ +-fname.o \ + gnatlink.o \ +-gnatvsn.o \ +-hostparm.o \ + indepsw.o \ +-namet.o \ +-opt.o \ + osint.o \ +-output.o \ + prefix.o \ + rident.o \ + sdefault.o \ +-snames.o \ + stylesw.o \ + switch.o \ +-table.o \ + targparm.o \ +-tree_io.o \ +-types.o \ +-validsw.o \ +-version.o \ +-widechar.o ++validsw.o + + GNATMAKE_OBJS = \ + ali-util.o \ + ali.o \ +-alloc.o \ +-atree.o \ + binderr.o \ + butil.o \ +-casing.o \ +-csets.o \ +-debug.o \ +-einfo.o\ +-elists.o \ + err_vars.o \ + erroutc.o \ + errutil.o \ + fmap.o \ + fname-sf.o \ + fname-uf.o \ +-fname.o \ + gnatmake.o \ +-gnatvsn.o \ +-hostparm.o \ +-krunch.o \ +-lib.o \ + make.o \ + makeusg.o \ + makeutl.o \ +@@ -131,12 +102,8 @@ + mlib-tgt-specific.o \ + mlib-utl.o \ + mlib.o \ +-namet.o \ +-nlists.o \ +-opt.o \ + osint-m.o \ + osint.o \ +-output.o \ + prefix.o \ + prj-attr-pm.o \ + prj-attr.o \ +@@ -154,47 +121,59 @@ + prj-util.o \ + prj.o \ + rident.o \ +-scans.o \ + scng.o \ + sdefault.o \ + sfn_scan.o \ +-sinfo.o \ + sinput-c.o \ + sinput-p.o \ +-sinput.o \ +-snames.o \ +-stand.o \ +-stringt.o \ + styleg.o \ + stylesw.o \ + switch-m.o \ + switch.o \ +-table.o \ + targparm.o \ + tempdir.o \ +-tree_io.o \ +-types.o \ +-uintp.o \ +-uname.o \ +-urealp.o \ + usage.o \ + validsw.o \ +-version.o \ +-widechar.o \ + $(EXTRA_GNATMAKE_OBJS) + ++ ++EXTRA_TOOLS_OBJS = \ ++bcheck.o \ ++binde.o \ ++bindgen.o \ ++bindusg.o \ ++clean.o \ ++gprep.o \ ++makegpr.o \ ++osint-b.o \ ++osint-l.o \ ++prep.o \ ++prj-makr.o \ ++prj-pp.o \ ++switch-b.o \ ++vms_conv.o \ ++vms_data.o \ ++xr_tabls.o \ ++xref_lib.o ++ ++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS) ++ + # Makefile targets + # ---------------- + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ + +-# Build directory for the tools. Let's copy the target-dependent +-# sources using the same mechanism as for gnatlib. The other sources are +-# accessed using the vpath directive. ++BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) ++SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) ++ ++$(notdir $(SPECS) $(BODIES)): stamp-gnattools-sources + + stamp-gnattools-sources: +- $(LN_S) ../gcc/ada/sdefault.adb . ++ for file in $(BODIES) $(SPECS); do \ ++ $(LN_S) -f $$file .; \ ++ done ++ rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb . + $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ + rm -f $(word 1,$(subst <, ,$(PAIR)));\ + $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ +@@ -202,6 +181,7 @@ + touch $@ + + gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) gnatbl + +@@ -209,18 +189,16 @@ + + vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc + vpath %.h @srcdir@/../gcc/ada +-vpath %.adb .:@srcdir@/../gcc/ada +-vpath %.ads @srcdir@/../gcc/ada + + # Because the just-built gcc is a host tool like us, we can use some +-# of its object files, e.g. prefix.o and version.o. ++# of its object files, e.g. prefix.o. + vpath prefix.o ../gcc +-vpath version.o ../gcc + + # gnatlink + + gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o + $(GCC) -o $@ $^ \ ++ ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +@@ -237,6 +215,7 @@ + + gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ ++ ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +@@ -250,7 +229,8 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatkr: version.o ++gnatkr: ++ if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ + --GNATBIND=../gcc/gnatbind +@@ -261,7 +241,8 @@ + cp -lp $< $@ + + gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref gprmake: \ +-link.o version.o prefix.o ++link.o prefix.o ++ if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ + --GNATBIND=../gcc/gnatbind +@@ -269,7 +250,7 @@ + ../libiberty/libiberty.a \ + --GCC="$(GCC) $(ADA_INCLUDES)" + +-gnatbl: gnatbl.c link.o version.o prefix.o ++gnatbl: gnatbl.c link.o prefix.o + $(GCC) -o $@ $< $(CFLAGS) \ + -I../gcc -I@srcdir@/../gcc/config -I@srcdir@/../gcc \ + -I@srcdir@/../include \ +@@ -290,6 +271,8 @@ + %.o: %.c + $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) + ++prefix.o: ++ + # Other + # ----- + +@@ -325,13 +308,15 @@ + install-html: + + # Cleaning rules. ++.PHONY: mostlyclean clean distclean ++ + mostlyclean: + $(RM) gnatmake gnatlink $(TOOLS) gnatbl *.o *.ali + +-clean: ++clean: mostlyclean + $(RM) *.ads *.adb stamp-gnattools-sources + +-distclean: ++distclean: clean + $(RM) Makefile config.status config.log + + maintainer-clean: +Index: libgnatvsn/configure +=================================================================== +--- /dev/null ++++ libgnatvsn/configure +@@ -0,0 +1,43 @@ ++#!/bin/sh ++ ++# Minimal configure script for libgnatvsn. We're only interested in ++# a few parameters. ++ ++for arg in $*; do ++ case ${arg} in ++ --build=*) ++ build=`expr ${arg} : '--build=\(.\+\)'`;; ++ --host=*) ++ host=`expr ${arg} : '--host=\(.\+\)'`;; ++ --target=*) ++ target=`expr ${arg} : '--target=\(.\+\)'`;; ++ --prefix=*) ++ prefix=`expr ${arg} : '--prefix=\(.\+\)'`;; ++ --srcdir=*) ++ srcdir=`expr ${arg} : '--srcdir=\(.\+\)'`;; ++ --with-pkgversion=*) ++ pkgversion=`expr ${arg} : '--with-pkgversion=\(.\+\)'`;; ++ --with-bugurl=*) ++ bugurl=`expr ${arg} : '--with-bugurl=\(.\+\)'`;; ++ *) ++ echo "Warning: ignoring option: ${arg}" ++ esac ++done ++ ++echo "build: ${build}" | tee config.log ++echo "host: ${host}" | tee -a config.log ++echo "target: ${target}" | tee -a config.log ++echo "prefix: ${prefix}" | tee -a config.log ++echo "srcdir: ${srcdir}" | tee -a config.log ++echo "pkgversion: ${pkgversion}" | tee -a config.log ++echo "bugurl: ${bugurl}" | tee -a config.log ++ ++echo "Creating Makefile..." | tee -a config.log ++sed -e "s,@build@,${build},g" \ ++ -e "s,@host@,${host},g" \ ++ -e "s,@target@,${target},g" \ ++ -e "s,@prefix@,${prefix},g" \ ++ -e "s,@srcdir@,${srcdir},g" \ ++ -e "s,@PKGVERSION@,${pkgversion},g" \ ++ -e "s,@REPORT_BUGS_TO@,${bugurl},g" \ ++ < ${srcdir}/Makefile.in > Makefile +Index: libgnatvsn/Makefile.in +=================================================================== +--- /dev/null ++++ libgnatvsn/Makefile.in +@@ -0,0 +1,147 @@ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# ++# This file 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 ++ ++# Default target; must be first. ++all: libgnatvsn ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC:=../gcc/xgcc -B../gcc/ ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++CFLAGS := -g -O2 -gnatn ++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++ ++# For use in version.c - double quoted strings, with appropriate ++# surrounding punctuation and spaces, and with the datestamp and ++# development phase collapsed to the empty string in release mode ++# (i.e. if DEVPHASE_c is empty). The space immediately after the ++# comma in the $(if ...) constructs is significant - do not remove it. ++BASEVER_s := "\"$(BASEVER)\"" ++DEVPHASE_s := "\"$(if $(DEVPHASE), ($(DEVPHASE)))\"" ++DATESTAMP_s := "\"$(if $(DEVPHASE), $(DATESTAMP))\"" ++PKGVERSION_s:= "\"@PKGVERSION@\"" ++BUGURL_s := "\"@REPORT_BUGS_TO@\"" ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatvsn install ++libgnatvsn: libgnatvsn.so.$(LIB_VERSION) libgnatvsn.a ++ ++VSN_SOURCES := alloc.ads atree.adb casing.adb csets.adb debug.adb einfo.adb \ ++elists.adb fname.adb gnatvsn.adb hostparm.ads krunch.adb lib.adb namet.adb \ ++nlists.adb opt.adb output.adb repinfo.adb scans.adb sinfo.adb sinput.adb \ ++snames.adb stand.adb stringt.adb table.adb tree_in.adb tree_io.adb types.adb \ ++uintp.adb uname.adb urealp.adb widechar.adb ++ ++VSN_SEPARATES := lib-list.adb lib-sort.adb ++ ++OBJECTS=$(patsubst %.ads,%.o,$(VSN_SOURCES:.adb=.o)) version.o ++ ++vpath %.c @srcdir@/../gcc ++ ++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatvsn.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ chmod a=r obj-shared/*.ali ++# Make the .ali files, but not the .o files, visible to the gnat tools. ++ cp -lp obj-shared/*.ali . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/version.o: version.c ++ $(GCC) -c -fPIC -g -O2 \ ++ -DBASEVER=$(BASEVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $(realpath $<) -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatvsn.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/version.o: version.c ++ $(GCC) -c -g -O2 \ ++ -DBASEVER=$(BASEVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(VSN_SOURCES) $(VSN_SEPARATES): stamp-libgnatvsn-sources ++ ++stamp-libgnatvsn-sources: ++ for file in $(VSN_SOURCES) $(VSN_SEPARATES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then ln -s @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ touch $@ ++ ++install: libgnatvsn ++ $(INSTALL_DATA) libgnatvsn.a $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) libgnatvsn.so.$(LIB_VERSION) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; \ ++ ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ $(INSTALL_DATA) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(VSN_SOURCES) $(VSN_SEPARATES)) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(patsubst %.adb,%.ads,$(filter %.adb,$(VSN_SOURCES)))) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatvsn* *.adb *.ads stamp* +Index: Makefile.def +=================================================================== +--- Makefile.def.orig ++++ Makefile.def +@@ -123,6 +123,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -161,6 +168,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; lib_path=.libs; }; + + // These are (some of) the make targets to be done in each subdirectory. +@@ -331,6 +345,8 @@ + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-gnattools; on=all-libada; }; ++dependencies = { module=all-gnattools; on=all-libgnatvsn; }; ++dependencies = { module=all-libgnatvsn; on=all-libada; }; + + dependencies = { module=configure-mpfr; on=all-gmp; }; + +Index: Makefile.in +=================================================================== +--- Makefile.in.orig ++++ Makefile.in +@@ -698,6 +698,7 @@ + maybe-configure-libtermcap \ + maybe-configure-utils \ + maybe-configure-libada \ ++ maybe-configure-libgnatvsn \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -721,6 +722,7 @@ + maybe-configure-target-qthreads \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ ++ maybe-configure-target-libgnatvsn \ + maybe-configure-target-libgomp + + # The target built for a native non-bootstrap build. +@@ -849,6 +851,7 @@ + all-host: maybe-all-libtermcap + all-host: maybe-all-utils + all-host: maybe-all-libada ++all-host: maybe-all-libgnatvsn + all-host: maybe-all-gnattools + + .PHONY: all-target +@@ -875,6 +878,7 @@ + all-target: maybe-all-target-qthreads + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada ++all-target: maybe-all-target-libgnatvsn + all-target: maybe-all-target-libgomp + + # Do a target for all the subdirectories. A ``make do-X'' will do a +@@ -963,6 +967,7 @@ + info-host: maybe-info-libtermcap + info-host: maybe-info-utils + info-host: maybe-info-libada ++info-host: maybe-info-libgnatvsn + info-host: maybe-info-gnattools + + .PHONY: info-target +@@ -987,6 +992,7 @@ + info-target: maybe-info-target-qthreads + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada ++info-target: maybe-info-target-libgnatvsn + info-target: maybe-info-target-libgomp + + .PHONY: do-dvi +@@ -1070,6 +1076,7 @@ + dvi-host: maybe-dvi-libtermcap + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada ++dvi-host: maybe-dvi-libgnatvsn + dvi-host: maybe-dvi-gnattools + + .PHONY: dvi-target +@@ -1094,6 +1101,7 @@ + dvi-target: maybe-dvi-target-qthreads + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada ++dvi-target: maybe-dvi-target-libgnatvsn + dvi-target: maybe-dvi-target-libgomp + + .PHONY: do-pdf +@@ -1177,6 +1185,7 @@ + pdf-host: maybe-pdf-libtermcap + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada ++pdf-host: maybe-pdf-libgnatvsn + pdf-host: maybe-pdf-gnattools + + .PHONY: pdf-target +@@ -1201,6 +1210,7 @@ + pdf-target: maybe-pdf-target-qthreads + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada ++pdf-target: maybe-pdf-target-libgnatvsn + pdf-target: maybe-pdf-target-libgomp + + .PHONY: do-html +@@ -1284,6 +1294,7 @@ + html-host: maybe-html-libtermcap + html-host: maybe-html-utils + html-host: maybe-html-libada ++html-host: maybe-html-libgnatvsn + html-host: maybe-html-gnattools + + .PHONY: html-target +@@ -1308,6 +1319,7 @@ + html-target: maybe-html-target-qthreads + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada ++html-target: maybe-html-target-libgnatvsn + html-target: maybe-html-target-libgomp + + .PHONY: do-TAGS +@@ -1391,6 +1403,7 @@ + TAGS-host: maybe-TAGS-libtermcap + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada ++TAGS-host: maybe-TAGS-libgnatvsn + TAGS-host: maybe-TAGS-gnattools + + .PHONY: TAGS-target +@@ -1415,6 +1428,7 @@ + TAGS-target: maybe-TAGS-target-qthreads + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada ++TAGS-target: maybe-TAGS-target-libgnatvsn + TAGS-target: maybe-TAGS-target-libgomp + + .PHONY: do-install-info +@@ -1498,6 +1512,7 @@ + install-info-host: maybe-install-info-libtermcap + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada ++install-info-host: maybe-install-info-libgnatvsn + install-info-host: maybe-install-info-gnattools + + .PHONY: install-info-target +@@ -1522,6 +1537,7 @@ + install-info-target: maybe-install-info-target-qthreads + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada ++install-info-target: maybe-install-info-target-libgnatvsn + install-info-target: maybe-install-info-target-libgomp + + .PHONY: do-install-pdf +@@ -1605,6 +1621,7 @@ + install-pdf-host: maybe-install-pdf-libtermcap + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada ++install-pdf-host: maybe-install-pdf-libgnatvsn + install-pdf-host: maybe-install-pdf-gnattools + + .PHONY: install-pdf-target +@@ -1629,6 +1646,7 @@ + install-pdf-target: maybe-install-pdf-target-qthreads + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada ++install-pdf-target: maybe-install-pdf-target-libgnatvsn + install-pdf-target: maybe-install-pdf-target-libgomp + + .PHONY: do-install-html +@@ -1712,6 +1730,7 @@ + install-html-host: maybe-install-html-libtermcap + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada ++install-html-host: maybe-install-html-libgnatvsn + install-html-host: maybe-install-html-gnattools + + .PHONY: install-html-target +@@ -1736,6 +1755,7 @@ + install-html-target: maybe-install-html-target-qthreads + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada ++install-html-target: maybe-install-html-target-libgnatvsn + install-html-target: maybe-install-html-target-libgomp + + .PHONY: do-installcheck +@@ -1819,6 +1839,7 @@ + installcheck-host: maybe-installcheck-libtermcap + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada ++installcheck-host: maybe-installcheck-libgnatvsn + installcheck-host: maybe-installcheck-gnattools + + .PHONY: installcheck-target +@@ -1843,6 +1864,7 @@ + installcheck-target: maybe-installcheck-target-qthreads + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada ++installcheck-target: maybe-installcheck-target-libgnatvsn + installcheck-target: maybe-installcheck-target-libgomp + + .PHONY: do-mostlyclean +@@ -1926,6 +1948,7 @@ + mostlyclean-host: maybe-mostlyclean-libtermcap + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada ++mostlyclean-host: maybe-mostlyclean-libgnatvsn + mostlyclean-host: maybe-mostlyclean-gnattools + + .PHONY: mostlyclean-target +@@ -1950,6 +1973,7 @@ + mostlyclean-target: maybe-mostlyclean-target-qthreads + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada ++mostlyclean-target: maybe-mostlyclean-target-libgnatvsn + mostlyclean-target: maybe-mostlyclean-target-libgomp + + .PHONY: do-clean +@@ -2033,6 +2057,7 @@ + clean-host: maybe-clean-libtermcap + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada ++clean-host: maybe-clean-libgnatvsn + clean-host: maybe-clean-gnattools + + .PHONY: clean-target +@@ -2057,6 +2082,7 @@ + clean-target: maybe-clean-target-qthreads + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada ++clean-target: maybe-clean-target-libgnatvsn + clean-target: maybe-clean-target-libgomp + + .PHONY: do-distclean +@@ -2140,6 +2166,7 @@ + distclean-host: maybe-distclean-libtermcap + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada ++distclean-host: maybe-distclean-libgnatvsn + distclean-host: maybe-distclean-gnattools + + .PHONY: distclean-target +@@ -2164,6 +2191,7 @@ + distclean-target: maybe-distclean-target-qthreads + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada ++distclean-target: maybe-distclean-target-libgnatvsn + distclean-target: maybe-distclean-target-libgomp + + .PHONY: do-maintainer-clean +@@ -2247,6 +2275,7 @@ + maintainer-clean-host: maybe-maintainer-clean-libtermcap + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada ++maintainer-clean-host: maybe-maintainer-clean-libgnatvsn + maintainer-clean-host: maybe-maintainer-clean-gnattools + + .PHONY: maintainer-clean-target +@@ -2271,6 +2300,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-qthreads + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + + +@@ -2408,6 +2438,7 @@ + maybe-check-libtermcap \ + maybe-check-utils \ + maybe-check-libada \ ++ maybe-check-libgnatvsn \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2432,6 +2463,7 @@ + maybe-check-target-qthreads \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libgnatvsn \ + maybe-check-target-libgomp + + do-check: +@@ -2541,6 +2573,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2615,6 +2648,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2639,6 +2673,7 @@ + maybe-install-target-qthreads \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libgnatvsn \ + maybe-install-target-libgomp + + uninstall: +@@ -39206,6 +39241,327 @@ + + + ++.PHONY: configure-libgnatvsn maybe-configure-libgnatvsn ++maybe-configure-libgnatvsn: ++@if gcc-bootstrap ++configure-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++maybe-configure-libgnatvsn: configure-libgnatvsn ++configure-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatvsn ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatvsn; \ ++ cd "$(HOST_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-libgnatvsn maybe-all-libgnatvsn ++maybe-all-libgnatvsn: ++@if gcc-bootstrap ++all-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++TARGET-libgnatvsn=all ++maybe-all-libgnatvsn: all-libgnatvsn ++all-libgnatvsn: configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgnatvsn)) ++@endif libgnatvsn ++ ++ ++ ++ ++.PHONY: check-libgnatvsn maybe-check-libgnatvsn ++maybe-check-libgnatvsn: ++@if libgnatvsn ++maybe-check-libgnatvsn: check-libgnatvsn ++ ++check-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: install-libgnatvsn maybe-install-libgnatvsn ++maybe-install-libgnatvsn: ++@if libgnatvsn ++maybe-install-libgnatvsn: install-libgnatvsn ++ ++install-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatvsn info-libgnatvsn ++maybe-info-libgnatvsn: ++@if libgnatvsn ++maybe-info-libgnatvsn: info-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-dvi-libgnatvsn dvi-libgnatvsn ++maybe-dvi-libgnatvsn: ++@if libgnatvsn ++maybe-dvi-libgnatvsn: dvi-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-pdf-libgnatvsn pdf-libgnatvsn ++maybe-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-pdf-libgnatvsn: pdf-libgnatvsn ++ ++pdf-libgnatvsn: \ ++ configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-html-libgnatvsn html-libgnatvsn ++maybe-html-libgnatvsn: ++@if libgnatvsn ++maybe-html-libgnatvsn: html-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-TAGS-libgnatvsn TAGS-libgnatvsn ++maybe-TAGS-libgnatvsn: ++@if libgnatvsn ++maybe-TAGS-libgnatvsn: TAGS-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-info-libgnatvsn install-info-libgnatvsn ++maybe-install-info-libgnatvsn: ++@if libgnatvsn ++maybe-install-info-libgnatvsn: install-info-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-pdf-libgnatvsn install-pdf-libgnatvsn ++maybe-install-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-install-pdf-libgnatvsn: install-pdf-libgnatvsn ++ ++install-pdf-libgnatvsn: \ ++ configure-libgnatvsn \ ++ pdf-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-html-libgnatvsn install-html-libgnatvsn ++maybe-install-html-libgnatvsn: ++@if libgnatvsn ++maybe-install-html-libgnatvsn: install-html-libgnatvsn ++ ++install-html-libgnatvsn: \ ++ configure-libgnatvsn \ ++ html-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-installcheck-libgnatvsn installcheck-libgnatvsn ++maybe-installcheck-libgnatvsn: ++@if libgnatvsn ++maybe-installcheck-libgnatvsn: installcheck-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-mostlyclean-libgnatvsn mostlyclean-libgnatvsn ++maybe-mostlyclean-libgnatvsn: ++@if libgnatvsn ++maybe-mostlyclean-libgnatvsn: mostlyclean-libgnatvsn ++ ++mostlyclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-clean-libgnatvsn clean-libgnatvsn ++maybe-clean-libgnatvsn: ++@if libgnatvsn ++maybe-clean-libgnatvsn: clean-libgnatvsn ++ ++clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-distclean-libgnatvsn distclean-libgnatvsn ++maybe-distclean-libgnatvsn: ++@if libgnatvsn ++maybe-distclean-libgnatvsn: distclean-libgnatvsn ++ ++distclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-maintainer-clean-libgnatvsn maintainer-clean-libgnatvsn ++maybe-maintainer-clean-libgnatvsn: ++@if libgnatvsn ++maybe-maintainer-clean-libgnatvsn: maintainer-clean-libgnatvsn ++ ++maintainer-clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatvsn" ; \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -48785,6 +49141,345 @@ + + + ++.PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn ++maybe-configure-target-libgnatvsn: ++@if gcc-bootstrap ++configure-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++maybe-configure-target-libgnatvsn: configure-target-libgnatvsn ++configure-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatvsn..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatvsn; \ ++ cd "$(TARGET_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatvsn maybe-all-target-libgnatvsn ++maybe-all-target-libgnatvsn: ++@if gcc-bootstrap ++all-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++TARGET-target-libgnatvsn=all ++maybe-all-target-libgnatvsn: all-target-libgnatvsn ++all-target-libgnatvsn: configure-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgnatvsn)) ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatvsn maybe-check-target-libgnatvsn ++maybe-check-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-check-target-libgnatvsn: check-target-libgnatvsn ++ ++# Dummy target for uncheckable module. ++check-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: install-target-libgnatvsn maybe-install-target-libgnatvsn ++maybe-install-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-target-libgnatvsn: install-target-libgnatvsn ++ ++install-target-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatvsn info-target-libgnatvsn ++maybe-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-info-target-libgnatvsn: info-target-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-dvi-target-libgnatvsn dvi-target-libgnatvsn ++maybe-dvi-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-dvi-target-libgnatvsn: dvi-target-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-pdf-target-libgnatvsn pdf-target-libgnatvsn ++maybe-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-pdf-target-libgnatvsn: pdf-target-libgnatvsn ++ ++pdf-target-libgnatvsn: \ ++ configure-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-html-target-libgnatvsn html-target-libgnatvsn ++maybe-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-html-target-libgnatvsn: html-target-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-TAGS-target-libgnatvsn TAGS-target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: TAGS-target-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-info-target-libgnatvsn install-info-target-libgnatvsn ++maybe-install-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-info-target-libgnatvsn: install-info-target-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-pdf-target-libgnatvsn install-pdf-target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: install-pdf-target-libgnatvsn ++ ++install-pdf-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ pdf-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-html-target-libgnatvsn install-html-target-libgnatvsn ++maybe-install-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-html-target-libgnatvsn: install-html-target-libgnatvsn ++ ++install-html-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ html-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn ++ ++mostlyclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn ++maybe-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn ++ ++clean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn ++maybe-distclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn ++ ++distclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-maintainer-clean-target-libgnatvsn maintainer-clean-target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: maintainer-clean-target-libgnatvsn ++ ++maintainer-clean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatvsn" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -51334,6 +52029,7 @@ + configure-target-qthreads: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libgnatvsn: stage_last + configure-target-libgomp: stage_last + @endif gcc-bootstrap + +@@ -51358,6 +52054,7 @@ + configure-target-qthreads: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libgnatvsn: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + @endif gcc-no-bootstrap + +@@ -51612,6 +52309,8 @@ + all-stagefeedback-libcpp: maybe-all-stagefeedback-intl + all-fixincludes: maybe-all-libiberty + all-gnattools: maybe-all-libada ++all-gnattools: maybe-all-libgnatvsn ++all-libgnatvsn: maybe-all-libada + configure-mpfr: maybe-all-gmp + + configure-stage1-mpfr: maybe-all-stage1-gmp +@@ -52049,6 +52748,7 @@ + configure-target-qthreads: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc ++configure-target-libgnatvsn: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + @endif gcc-no-bootstrap + +@@ -52091,6 +52791,8 @@ + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + +Index: configure.ac +=================================================================== +--- configure.ac.orig ++++ configure.ac +@@ -155,7 +155,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr libada" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr libada libgnatvsn" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -185,7 +185,8 @@ + target-boehm-gc \ + ${libgcj} \ + target-libobjc \ +- target-libada" ++ target-libada \ ++ target-libgnatvsn" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -263,7 +264,7 @@ + + # Similarly, some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -340,7 +341,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn gnattools" + fi + + AC_ARG_ENABLE(libssp, diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-link-lib.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-link-lib.dpatch new file mode 100644 index 0000000000..2645fe034e --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-link-lib.dpatch @@ -0,0 +1,1932 @@ +#! /bin/sh -e + +# DP: - Install the shared Ada libraries as '.so.1', not '.so' to conform +# DP: to the Debian policy. +# DP: - Don't include a runtime link path (-rpath), when linking binaries. +# DP: - Build the shared libraries on hppa-linux. +# DP: - Instead of building libada as a target library only, build it as +# DP: both a host and, if different, target library. +# DP: - Build the GNAT tools in their top-level directory; do not use +# DP: recursive makefiles. +# DP: - Link the GNAT tools dynamically. +# DP: - Fix a bug in src/gnattools/configure.ac whereby a nonexistent version +# DP: of indepsw's body was selected. Regenerate configure. (PR ada/27300) + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +dir=./ +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/ada/config-lang.in +=================================================================== +--- gcc/ada/config-lang.in.orig 2007-09-03 15:14:47.000000000 +0200 ++++ gcc/ada/config-lang.in 2008-01-29 12:16:44.688811730 +0100 +@@ -35,7 +35,7 @@ + outputs=ada/Makefile + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +Index: gcc/ada/link.c +=================================================================== +--- gcc/ada/link.c.orig 2007-11-21 12:20:42.000000000 +0100 ++++ gcc/ada/link.c 2008-01-29 12:16:44.688811730 +0100 +@@ -146,8 +146,8 @@ + + #elif defined (__FreeBSD__) + const char *__gnat_object_file_option = ""; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; ++char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + unsigned char __gnat_using_gnu_linker = 1; +@@ -155,8 +155,8 @@ + + #elif defined (linux) + const char *__gnat_object_file_option = ""; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + unsigned char __gnat_using_gnu_linker = 1; +Index: gcc/ada/Makefile.in +=================================================================== +--- gcc/ada/Makefile.in.orig 2008-01-29 12:10:06.222766372 +0100 ++++ gcc/ada/Makefile.in 2008-01-29 12:17:55.465175005 +0100 +@@ -114,7 +114,7 @@ + MAKEINFO = makeinfo + TEXI2DVI = texi2dvi + TEXI2PDF = texi2pdf +-GNATBIND_FLAGS = -static -x ++GNATBIND_FLAGS = -shared -x + ADA_CFLAGS = + ADAFLAGS = -W -Wall -gnatpg -gnata + SOME_ADAFLAGS =-gnata +@@ -247,7 +247,6 @@ + LIBDEPS = $(LIBINTL_DEP) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libiberty/libiberty.a $(SYSLIBS) $(TGT_LIB) + + # Specify the directories to be searched for header files. + # Both . and srcdir are used, in that order, +@@ -293,30 +292,6 @@ + # defined in this file into the environment. + .NOEXPORT: + +-# Lists of files for various purposes. +- +-GNATLINK_OBJS = gnatlink.o \ +- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \ +- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \ +- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \ +- types.o validsw.o widechar.o +- +-GNATMAKE_OBJS = a-except.o ali.o ali-util.o s-casuti.o \ +- alloc.o atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o\ +- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \ +- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \ +- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \ +- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o output.o \ +- prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o prj-err.o prj-ext.o prj-nmsc.o \ +- prj-pars.o prj-part.o prj-proc.o prj-strt.o prj-tree.o prj-util.o \ +- rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- scans.o scng.o sdefault.o sfn_scan.o s-purexc.o s-htable.o \ +- sinfo.o sinput.o sinput-c.o sinput-p.o \ +- snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o switch.o switch-m.o \ +- table.o targparm.o tempdir.o tree_io.o types.o \ +- uintp.o uname.o urealp.o usage.o widechar.o \ +- $(EXTRA_GNATMAKE_OBJS) + + # Convert the target variable into a space separated list of architecture, + # manufacturer, and operating system and assign each of those to its own +@@ -1017,6 +992,11 @@ + GMEM_LIB = gmemlib + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(targ))),) + LIBGNAT_TARGET_PAIRS = \ + a-excpol.adb&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +Index: src/libada/Makefile.in +=================================================================== +--- src.orig/libada/Makefile.in ++++ src/libada/Makefile.in +@@ -16,7 +16,8 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + # Default target; must be first. +-all: gnatlib ++GNATLIB = gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx ++all: $(GNATLIB) + + # Standard autoconf-set variables. + SHELL = @SHELL@ +@@ -78,30 +79,38 @@ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" + + # Rules to build gnatlib. +-.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared +-gnatlib: @default_gnatlib_target@ ++.PHONY: $(GNATLIB) + +-gnatlib-plain: $(GCC_DIR)/ada/Makefile +- test -f stamp-libada || \ ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads: + $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ + THREAD_KIND="$(THREAD_KIND)" \ + TRACE="$(TRACE)" \ +- gnatlib \ +- && touch stamp-libada ++ EH_MECHANISM="" \ ++ gnatlib-sources-sjlj/a-except.ads + +-gnatlib-sjlj gnatlib-zcx gnatlib-shared: $(GCC_DIR)/ada/Makefile +- test -f stamp-libada || \ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads: + $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ + THREAD_KIND="$(THREAD_KIND)" \ + TRACE="$(TRACE)" \ +- $@ \ +- && touch stamp-libada ++ EH_MECHANISM="-gcc" \ ++ gnatlib-sources-zcx/a-except.ads ++ ++$(GNATLIB): $(GCC_DIR)/ada/Makefile \ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads \ ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads ++ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ TRACE="$(TRACE)" \ ++ $@ + + # Check uninstalled version. + check: +Index: src/libada/configure +=================================================================== +--- src.orig/libada/configure ++++ src/libada/configure +@@ -1552,17 +1552,6 @@ + *) x_ada_cflags= ;; + esac + +- +-# Determine what to build for 'gnatlib' +-if test $build = $target \ +- && test ${enable_shared} = yes ; then +- # Note that build=target is almost certainly the wrong test; FIXME +- default_gnatlib_target="gnatlib-shared" +-else +- default_gnatlib_target="gnatlib-plain" +-fi +- +- + # Output: create a Makefile. + ac_config_files="$ac_config_files Makefile" + +@@ -2222,7 +2211,6 @@ + s,@enable_shared@,$enable_shared,;t t + s,@LN_S@,$LN_S,;t t + s,@x_ada_cflags@,$x_ada_cflags,;t t +-s,@default_gnatlib_target@,$default_gnatlib_target,;t t + s,@LIBOBJS@,$LIBOBJS,;t t + s,@LTLIBOBJS@,$LTLIBOBJS,;t t + CEOF +Index: src/gcc/ada/Makefile.in +=================================================================== +--- src.orig/gcc/ada/Makefile.in ++++ src/gcc/ada/Makefile.in +@@ -1324,6 +1324,50 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out mips linux%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads $(dir)/s.ads + + # GNULLI End ############################################################# + +@@ -1646,57 +1723,60 @@ + # Example: cd rts; ar rc libfoo.a $(LONG_LIST_OF_OBJS) + # is guaranteed to overflow the buffer. + +-gnatlib: ../stamp-gnatlib1 +- $(MAKE) -C rts \ ++%/libgnat$(arext): build_dir = $(dir $@) ++%/libgnat$(arext): libgnarl = $(subst libgnat,libgnarl,$@) ++%/libgnat$(arext): libgnala = $(subst libgnat,libgnala,$@) ++%/libgnat$(arext): % ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +- INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ +- CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ +- FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ + srcdir=$(fsrcdir) \ +- -f ../Makefile $(LIBGNAT_OBJS) +- $(MAKE) -C rts \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +- ADA_INCLUDES="" \ +- CFLAGS="$(GNATLIBCFLAGS)" \ +- ADAFLAGS="$(GNATLIBFLAGS)" \ +- FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS)" \ ++ ADAFLAGS="$(GNATLIBFLAGS)" \ + srcdir=$(fsrcdir) \ +- -f ../Makefile \ +- $(GNATRTL_OBJS) +- $(RM) rts/libgnat$(arext) rts/libgnarl$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgnat$(arext) \ +- $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) ++ $(RM) $@ $(libgnarl) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $@ \ ++ $(addprefix $(build_dir),$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) + ifneq ($(PREFIX_OBJS),) +- $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgccprefix$(arext) \ ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgccprefix$(arext) \ + $(PREFIX_OBJS); +- $(RANLIB_FOR_TARGET) rts/libgccprefix$(arext) ++ $(RANLIB_FOR_TARGET) $(build_dir)libgccprefix$(arext) + endif +- $(RANLIB_FOR_TARGET) rts/libgnat$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgnarl$(arext) \ +- $(addprefix rts/,$(GNATRTL_TASKING_OBJS)) +- $(RANLIB_FOR_TARGET) rts/libgnarl$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgnala$(arext) \ +- $(addprefix rts/,$(GNATRTL_LINEARALGEBRA_OBJS)) +- $(RANLIB_FOR_TARGET) rts/libgnala$(arext) ++ $(RANLIB_FOR_TARGET) $@ ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnarl) \ ++ $(addprefix $(build_dir),$(GNATRTL_TASKING_OBJS)) ++ $(RANLIB_FOR_TARGET) $(libgnarl) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnala) \ ++ $(addprefix $(build_dir),$(GNATRTL_LINEARALGEBRA_OBJS)) ++ $(RANLIB_FOR_TARGET) $(libgnala) + ifeq ($(GMEM_LIB),gmemlib) +- $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgmem$(arext) \ +- rts/memtrack.o +- $(RANLIB_FOR_TARGET) rts/libgmem$(arext) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgmem$(arext) \ ++ $(build_dir)memtrack.o ++ $(RANLIB_FOR_TARGET) $(build_dir)libgmem$(arext) + endif +- touch ../stamp-gnatlib + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. +-gnatlib-shared-default: ../stamp-gnatlib1 +- $(MAKE) -C rts \ ++%/$(libgnat) %/$(libgnat-sjlj): build_dir = $(dir $@) ++%/$(libgnat) %/$(libgnat-sjlj): libgnarl = $(notdir $(subst libgnat,libgnarl,$@)) ++%/$(libgnat) %/$(libgnat-sjlj): libgnala = $(notdir $(subst libgnat,libgnala,$@)) ++%/$(libgnat) %/$(libgnat-sjlj): % ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ + CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ + srcdir=$(fsrcdir) \ + -f ../Makefile $(LIBGNAT_OBJS) +- $(MAKE) -C rts \ ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + ADA_INCLUDES="" \ +@@ -1706,157 +1786,75 @@ + srcdir=$(fsrcdir) \ + -f ../Makefile \ + $(GNATRTL_OBJS) +- $(RM) rts/libgna*$(soext) rts/libgna*$(soext).1 +- cd rts; ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ $(RM) $(build_dir)/libgna*$(soext) $(build_dir)/libgna*$(soext).1 ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(notdir $@).1 \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ + g-trasym.o convert_addresses.o \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(notdir $@).1 \ + $(MISCLIB) -lm +- cd rts; ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ cd $(build_dir); $(LN_S) $(notdir $@).1 $(notdir $@) ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(libgnarl).1 \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(libgnarl).1 \ + $(THREADSLIB) +- cd rts; for lib in gnat gnarl; do \ +- l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ +- $(LN_S) $$l.1 $$l; \ +- done +-# Delete the object files, lest they be linked statically into the tools +-# executables. Only the .ali, .a and .so files must remain. +- rm -f rts/*.o +- $(CHMOD) a-wx rts/*.ali +- +-gnatlib-shared-dual: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) rts/*.o rts/*.ali +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-default +- +-gnatlib-shared-dual-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) rts/*.o rts/*.ali +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-win32 +- +-# ??? we need to add the option to support auto-import of arrays/records to +-# the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +-# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on +-# Windows. +-gnatlib-shared-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) rts/libgna*$(soext) +- cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) +- cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- +-gnatlib-shared-darwin: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) \ +- -fno-common" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) rts/libgnat$(soext) rts/libgnarl$(soext) +- cd rts; ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS) \ +- $(MISCLIB) -lm +- cd rts; ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- cd rts; $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd rts; $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) +- +-gnatlib-shared-vms: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) rts/libgna*$(soext) +- cd rts && echo "case_sensitive=yes" > SYMVEC_$$$$.opt && \ +- objdump --syms $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) | \ +- $(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt && \ +- echo "case_sensitive=NO" >> SYMVEC_$$$$.opt && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) +- cd rts && echo "case_sensitive=yes" > SYMVEC_$$$$.opt && \ +- objdump --syms $(GNATRTL_TASKING_OBJS) | \ +- $(SHLIB_SYMVEC) >> SYMVEC_$$$$.opt && \ +- echo "case_sensitive=NO" >> SYMVEC_$$$$.opt && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) ++ cd $(build_dir); $(LN_S) $(libgnarl).1 $(libgnarl) ++# TODO: enable building the shared libgnala ++ifeq (libgnala-shared-enabled,yes) ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ $(TARGET_LIBGCC2_CFLAGS) \ ++ -o $(libgnala).1 \ ++ $(GNATRTL_LINEARALGEBRA_OBJS) \ ++ $(SO_OPTS)$(libgnala).1 ++ cd $(build_dir); $(LN_S) $(libgnala).1 $(libgnala) ++endif + +-gnatlib-shared: ++gnatlib-shared-dual: gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx ++ ++gnatlib-shared-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-shared-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ ++ EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + THREAD_KIND="$(THREAD_KIND)" \ + TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ +- $(GNATLIB_SHARED) ++ $(rts)/$(libgnat) + +-gnatlib-sjlj: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" ../stamp-gnatlib1 +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' rts/system.ads > rts/s.ads +- $(MV) rts/s.ads rts/system.ads ++gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-sjlj $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ $(rts)/libgnat$(arext) + +-gnatlib-zcx: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" ../stamp-gnatlib1 +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := True;/' rts/system.ads > rts/s.ads +- $(MV) rts/s.ads rts/system.ads ++gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ $(rts)/libgnat$(arext) + + # .s files for cross-building + gnat-cross: force +@@ -1864,6 +1862,10 @@ + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude ++ADA_NATIVE_RTL_OBJ_DIR = $(libsubdir)/rts-native/adalib ++ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude ++ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib + + # force no sibling call optimization on s-traceb.o so the number of stack + # frames to be skipped when computing a call chain is not modified by +Index: src/gnattools/Makefile.in +=================================================================== +--- src.orig/gnattools/Makefile.in ++++ src/gnattools/Makefile.in +@@ -34,12 +34,13 @@ + LN_S=@LN_S@ + target_noncanonical=@target_noncanonical@ + ++RTS=../gcc/ada/rts-shared-zcx + CFLAGS=-O2 -Wall + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj ++ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +-ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) + ADA_LIBS += -L../libgnatvsn -lgnatvsn + ADA_LIBS += -L../libgnatprj -lgnatprj + +@@ -109,6 +110,7 @@ + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ ++ (cd $(RTS); if [ -d obj ]; then mv obj/* .; rmdir obj; fi) + + BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) + SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) +@@ -119,9 +121,12 @@ + for file in $(BODIES) $(SPECS); do \ + $(LN_S) -f $$file .; \ + done ++# Move the RTS object files away lest they be linked statically into the ++# tools. Only the .ali, .a and .so files must remain. ++ (cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali) + touch $@ + +-gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: $(RTS)/libgnat-$(LIB_VERSION).so + gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) gnatbl +@@ -137,7 +142,7 @@ + $(GCC) -o $@ $^ \ + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a \ ++ ../gcc/ada/rts-static-zcx/libgnat.a \ + ../libiberty/libiberty.a + + gnatlink: $(GNATLINK_OBJS) b_gnatl.o +@@ -155,7 +160,7 @@ + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a \ ++ ../gcc/ada/rts-static-zcx/libgnat.a \ + ../libiberty/libiberty.a + + gnatmake: $(GNATMAKE_OBJS) b_gnatm.o +Index: src/libgnatprj/Makefile.in +=================================================================== +--- src.orig/libgnatprj/Makefile.in ++++ src/libgnatprj/Makefile.in +@@ -25,7 +25,8 @@ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC:=../gcc/xgcc -B../gcc/ +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + LIBGNATVSN := -I../libgnatvsn + CFLAGS := -g -O2 + ADAFLAGS := -g -O2 -gnatn +@@ -65,7 +66,7 @@ + libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) + : # Make libgnatprj.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L$(RTS) -lgnat-$(LIB_VERSION) \ + -L../libgnatvsn -lgnatvsn + $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so + chmod a=r obj-shared/*.ali +Index: src/libgnatvsn/Makefile.in +=================================================================== +--- src.orig/libgnatvsn/Makefile.in ++++ src/libgnatvsn/Makefile.in +@@ -25,7 +25,8 @@ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC:=../gcc/xgcc -B../gcc/ +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + CFLAGS := -g -O2 -gnatn + BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) + DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) +@@ -64,7 +65,7 @@ + libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) + : # Make libgnatvsn.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ -L$(RTS) -lgnat-$(LIB_VERSION) + ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so + chmod a=r obj-shared/*.ali + # Make the .ali files, but not the .o files, visible to the gnat tools. +Index: src/gcc/ada/Make-lang.in +=================================================================== +--- src.orig/gcc/ada/Make-lang.in ++++ src/gcc/ada/Make-lang.in +@@ -62,7 +62,8 @@ + "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ +- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" + + # Say how to compile Ada programs. + .SUFFIXES: .ada .adb .ads +Index: src/gcc/ada/system-linux-mips.ads +=================================================================== +--- /dev/null ++++ src/gcc/ada/system-linux-mips.ads +@@ -0,0 +1,154 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (GNU-Linux/MIPS Version) -- ++-- -- ++-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT 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 distributed with GNAT; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := Integer'Last; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ Max_Priority : constant Positive := 30; ++ Max_Interrupt_Priority : constant Positive := 31; ++ ++ subtype Any_Priority is Integer range 0 .. 31; ++ subtype Priority is Any_Priority range 0 .. 30; ++ subtype Interrupt_Priority is Any_Priority range 31 .. 31; ++ ++ Default_Priority : constant Priority := 15; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ AAMP : constant Boolean := False; ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Compiler_System_Version : constant Boolean := False; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Functions_Return_By_DSP : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ OpenVMS : constant Boolean := False; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ Front_End_ZCX_Support : constant Boolean := False; ++ ++ -- Obsolete entries, to be removed eventually (bootstrap issues!) ++ ++ High_Integrity_Mode : constant Boolean := False; ++ Long_Shifts_Inlined : constant Boolean := True; ++ ++end System; +Index: src/gcc/ada/system-linux-mipsel.ads +=================================================================== +--- /dev/null ++++ src/gcc/ada/system-linux-mipsel.ads +@@ -0,0 +1,154 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (GNU-Linux/MIPSEL Version) -- ++-- -- ++-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT 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 distributed with GNAT; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := Integer'Last; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := Low_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ Max_Priority : constant Positive := 30; ++ Max_Interrupt_Priority : constant Positive := 31; ++ ++ subtype Any_Priority is Integer range 0 .. 31; ++ subtype Priority is Any_Priority range 0 .. 30; ++ subtype Interrupt_Priority is Any_Priority range 31 .. 31; ++ ++ Default_Priority : constant Priority := 15; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ AAMP : constant Boolean := False; ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Compiler_System_Version : constant Boolean := False; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Functions_Return_By_DSP : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ OpenVMS : constant Boolean := False; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ Front_End_ZCX_Support : constant Boolean := False; ++ ++ -- Obsolete entries, to be removed eventually (bootstrap issues!) ++ ++ High_Integrity_Mode : constant Boolean := False; ++ Long_Shifts_Inlined : constant Boolean := True; ++ ++end System; +Index: src/gcc/ada/g-soccon-linux-mips.ads +=================================================================== +--- /dev/null ++++ src/gcc/ada/g-soccon-linux-mips.ads +@@ -0,0 +1,184 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT COMPILER COMPONENTS -- ++-- -- ++-- G N A T . S O C K E T S . C O N S T A N T S -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 2000-2005, Free Software Foundation, Inc. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT 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 distributed with GNAT; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- ++-- Boston, MA 02110-1301, USA. -- ++-- -- ++-- As a special exception, if other files instantiate generics from this -- ++-- unit, or you link this unit with other files to produce an executable, -- ++-- this unit does not by itself cause the resulting executable to be -- ++-- covered by the GNU General Public License. This exception does not -- ++-- however invalidate any other reasons why the executable file might be -- ++-- covered by the GNU Public License. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This package provides target dependent definitions of constant for use ++-- by the GNAT.Sockets package (g-socket.ads). This package should not be ++-- directly with'ed by an applications program. ++ ++-- This is the version for mips-linux, manually edited for the first shot ++-- no mips hardware at hand ++-- using http://www.gelato.unsw.edu.au/lxr/source/include/asm-mips/socket.h ++-- in order to find differents values ++-- This file is generated automatically, do not modify it by hand! Instead, ++-- make changes to gen-soccon.c and re-run it on each target. ++ ++package GNAT.Sockets.Constants is ++ ++ -------------- ++ -- Families -- ++ -------------- ++ ++ AF_INET : constant := 2; -- IPv4 address family ++ AF_INET6 : constant := 10; -- IPv6 address family ++ ++ ----------- ++ -- Modes -- ++ ----------- ++ ++ SOCK_STREAM : constant := 1; -- Stream socket ++ SOCK_DGRAM : constant := 2; -- Datagram socket ++ ++ ------------------- ++ -- Socket errors -- ++ ------------------- ++ ++ EACCES : constant := 13; -- Permission denied ++ EADDRINUSE : constant := 98; -- Address already in use ++ EADDRNOTAVAIL : constant := 99; -- Cannot assign address ++ EAFNOSUPPORT : constant := 97; -- Addr family not supported ++ EALREADY : constant := 114; -- Operation in progress ++ EBADF : constant := 9; -- Bad file descriptor ++ ECONNABORTED : constant := 103; -- Connection aborted ++ ECONNREFUSED : constant := 111; -- Connection refused ++ ECONNRESET : constant := 104; -- Connection reset by peer ++ EDESTADDRREQ : constant := 89; -- Destination addr required ++ EFAULT : constant := 14; -- Bad address ++ EHOSTDOWN : constant := 112; -- Host is down ++ EHOSTUNREACH : constant := 113; -- No route to host ++ EINPROGRESS : constant := 115; -- Operation now in progress ++ EINTR : constant := 4; -- Interrupted system call ++ EINVAL : constant := 22; -- Invalid argument ++ EIO : constant := 5; -- Input output error ++ EISCONN : constant := 106; -- Socket already connected ++ ELOOP : constant := 40; -- Too many symbolic lynks ++ EMFILE : constant := 24; -- Too many open files ++ EMSGSIZE : constant := 90; -- Message too long ++ ENAMETOOLONG : constant := 36; -- Name too long ++ ENETDOWN : constant := 100; -- Network is down ++ ENETRESET : constant := 102; -- Disconn. on network reset ++ ENETUNREACH : constant := 101; -- Network is unreachable ++ ENOBUFS : constant := 105; -- No buffer space available ++ ENOPROTOOPT : constant := 92; -- Protocol not available ++ ENOTCONN : constant := 107; -- Socket not connected ++ ENOTSOCK : constant := 88; -- Operation on non socket ++ EOPNOTSUPP : constant := 95; -- Operation not supported ++ EPFNOSUPPORT : constant := 96; -- Unknown protocol family ++ EPROTONOSUPPORT : constant := 93; -- Unknown protocol ++ EPROTOTYPE : constant := 91; -- Unknown protocol type ++ ESHUTDOWN : constant := 108; -- Cannot send once shutdown ++ ESOCKTNOSUPPORT : constant := 94; -- Socket type not supported ++ ETIMEDOUT : constant := 110; -- Connection timed out ++ ETOOMANYREFS : constant := 109; -- Too many references ++ EWOULDBLOCK : constant := 11; -- Operation would block ++ ++ ----------------- ++ -- Host errors -- ++ ----------------- ++ ++ HOST_NOT_FOUND : constant := 1; -- Unknown host ++ TRY_AGAIN : constant := 2; -- Host name lookup failure ++ NO_DATA : constant := 4; -- No data record for name ++ NO_RECOVERY : constant := 3; -- Non recoverable errors ++ ++ ------------------- ++ -- Control flags -- ++ ------------------- ++ ++ FIONBIO : constant := 16#667e#; -- Set/clear non-blocking io ++ FIONREAD : constant := 16#467f#; -- How many bytes to read ++ ++ -------------------- ++ -- Shutdown modes -- ++ -------------------- ++ ++ SHUT_RD : constant := 0; -- No more recv ++ SHUT_WR : constant := 1; -- No more send ++ SHUT_RDWR : constant := 2; -- No more recv/send ++ ++ --------------------- ++ -- Protocol levels -- ++ --------------------- ++ ++ SOL_SOCKET : constant := 1; -- Options for socket level ++ IPPROTO_IP : constant := 0; -- Dummy protocol for IP ++ IPPROTO_UDP : constant := 17; -- UDP ++ IPPROTO_TCP : constant := 6; -- TCP ++ ++ ------------------- ++ -- Request flags -- ++ ------------------- ++ ++ MSG_OOB : constant := 1; -- Process out-of-band data ++ MSG_PEEK : constant := 2; -- Peek at incoming data ++ MSG_EOR : constant := 128; -- Send end of record ++ MSG_WAITALL : constant := 256; -- Wait for full reception ++ MSG_NOSIGNAL : constant := 16384; -- No SIGPIPE on send ++ MSG_Forced_Flags : constant := MSG_NOSIGNAL; ++ -- Flags set on all send(2) calls ++ ++ -------------------- ++ -- Socket options -- ++ -------------------- ++ ++ TCP_NODELAY : constant := 1; -- Do not coalesce packets ++ SO_REUSEADDR : constant := 4; -- Bind reuse local address ++ SO_KEEPALIVE : constant := 8; -- Enable keep-alive msgs ++ SO_LINGER : constant := 16#80#; -- Defer close to flush data ++ SO_BROADCAST : constant := 16#20#; -- Can send broadcast msgs ++ SO_SNDBUF : constant := 16#1001#; -- Set/get send buffer size ++ SO_RCVBUF : constant := 16#1002#; -- Set/get recv buffer size ++ SO_SNDTIMEO : constant := 16#1005#; -- Emission timeout ++ SO_RCVTIMEO : constant := 16#1006#; -- Reception timeout ++ SO_ERROR : constant := 16#1007#; -- Get/clear error status ++ IP_MULTICAST_IF : constant := 32; -- Set/get mcast interface ++ IP_MULTICAST_TTL : constant := 33; -- Set/get multicast TTL ++ IP_MULTICAST_LOOP : constant := 34; -- Set/get mcast loopback ++ IP_ADD_MEMBERSHIP : constant := 35; -- Join a multicast group ++ IP_DROP_MEMBERSHIP : constant := 36; -- Leave a multicast group ++ ++ ------------------- ++ -- System limits -- ++ ------------------- ++ ++ IOV_MAX : constant := 2147483647; -- Maximum writev iovcnt ++ ++ ---------------------- ++ -- Type definitions -- ++ ---------------------- ++ ++ -- Sizes (in bytes) of the components of struct timeval ++ ++ SIZEOF_tv_sec : constant := 4; -- tv_sec ++ SIZEOF_tv_usec : constant := 4; -- tv_usec ++ ++end GNAT.Sockets.Constants; diff --git a/recipes/gcc/gcc-4.3.4/debian/ada-symbolic-tracebacks.dpatch b/recipes/gcc/gcc-4.3.4/debian/ada-symbolic-tracebacks.dpatch new file mode 100644 index 0000000000..d39accfdb5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ada-symbolic-tracebacks.dpatch @@ -0,0 +1,346 @@ +#! /bin/sh -e + +# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy +# DP: convert_addresses from adaint.c, and provide a real one separately.) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Ported Jürgen Pfeifer's patch to enable symbolic tracebacks on Debian +GNU/Linux. + +The binary distribution of GNAT 3.15p comes with an old version of +binutils that includes a library, libaddr2line.a. This library does +not exist in recent versions of binutils. The patch works around this +by calling /usr/bin/addr2line (still part of binutils) and parsing the +output. See debian/convert_addresses.c for the gory details. + +I have modified convert_addresses.c to not use a shell script anymore; +Debian controls the version of binutils which is installed. Also, I +use execve instead of execle. + +-- +Ludovic Brenta. + +# ' make emacs highlighting happy + +Index: gcc/ada/Makefile.in +=================================================================== +--- gcc/ada/Makefile.in.orig 2008-01-13 22:19:26.000000000 +0100 ++++ gcc/ada/Makefile.in 2008-01-29 11:56:42.178635045 +0100 +@@ -1655,7 +1655,7 @@ + a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o + + GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \ +- $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o ++ $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o convert_addresses.o + + # Default run time files + +@@ -1810,7 +1810,6 @@ + for file in rts/*.ali; do \ + $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + done +- -$(INSTALL_DATA) rts/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR) + -cd rts; for file in *$(arext);do \ + $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ +@@ -1907,7 +1906,7 @@ + $(GNATRTL_OBJS) + $(RM) rts/libgnat$(arext) rts/libgnarl$(arext) + $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgnat$(arext) \ +- $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) ++ $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) + ifneq ($(PREFIX_OBJS),) + $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgccprefix$(arext) \ + $(PREFIX_OBJS); +@@ -1940,6 +1939,7 @@ + $(TARGET_LIBGCC2_CFLAGS) \ + -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ ++ g-trasym.o convert_addresses.o \ + $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(MISCLIB) -lm + cd rts; ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ +@@ -2183,6 +2183,7 @@ + sysdep.o : sysdep.c + raise-gcc.o : raise-gcc.c raise.h + raise.o : raise.c raise.h ++convert_addresses.o : convert_addresses.c + vx_stack_info.o : vx_stack_info.c + + gen-soccon: gen-soccon.c gsocket.h +Index: gcc/ada/adaint.c +=================================================================== +--- gcc/ada/adaint.c.orig 2008-01-13 22:19:26.000000000 +0100 ++++ gcc/ada/adaint.c 2008-01-29 11:56:06.614450462 +0100 +@@ -2852,35 +2852,6 @@ + } + #endif + +-#if defined (CROSS_DIRECTORY_STRUCTURE) \ +- || (! ((defined (sparc) || defined (i386)) && defined (sun) \ +- && defined (__SVR4)) \ +- && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \ +- && ! (defined (linux) && defined (__ia64__)) \ +- && ! defined (__FreeBSD__) \ +- && ! defined (__hpux__) \ +- && ! defined (__APPLE__) \ +- && ! defined (_AIX) \ +- && ! (defined (__alpha__) && defined (__osf__)) \ +- && ! defined (VMS) \ +- && ! defined (__MINGW32__) \ +- && ! (defined (__mips) && defined (__sgi))) +- +-/* Dummy function to satisfy g-trasym.o. See the preprocessor conditional +- just above for a list of native platforms that provide a non-dummy +- version of this procedure in libaddr2line.a. */ +- +-void +-convert_addresses (const char *file_name ATTRIBUTE_UNUSED, +- void *addrs ATTRIBUTE_UNUSED, +- int n_addr ATTRIBUTE_UNUSED, +- void *buf ATTRIBUTE_UNUSED, +- int *len ATTRIBUTE_UNUSED) +-{ +- *len = 0; +-} +-#endif +- + #if defined (_WIN32) + int __gnat_argument_needs_quote = 1; + #else +Index: gcc/ada/convert_addresses.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/ada/convert_addresses.c 2008-01-29 11:56:06.614450462 +0100 +@@ -0,0 +1,157 @@ ++/* ++ Copyright (C) 1999 by Juergen Pfeifer ++ Ada for Linux Team (ALT) ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++ copy of this software and associated documentation files (the ++ "Software"), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, distribute with modifications, sublicense, and/or sell ++ copies of the Software, and to permit persons to whom the Software is ++ furnished to do so, subject to the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, ++ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR ++ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ++ THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++ Except as contained in this notice, the name(s) of the above copyright ++ holders shall not be used in advertising or otherwise to promote the ++ sale, use or other dealings in this Software without prior written ++ authorization. ++*/ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#define STDIN_FILENO 0 ++#define STDOUT_FILENO 1 ++#define MAX_LINE 1024 ++ ++#define CLOSE1 close(fd1[0]); close(fd1[1]) ++#define CLOSE2 close(fd2[0]); close(fd2[1]) ++#define RESTSIG sigaction(SIGPIPE,&oact,NULL) ++ ++void convert_addresses ++( void* addrs[], ++ int n_addr, ++ char* buf, ++ int* len) ++{ ++ int max_len = *len; ++ pid_t pid = getpid(); ++ pid_t child; ++ ++ struct sigaction act, oact; ++ ++ int fd1[2], fd2[2]; ++ char exe_name[128]; ++ ++ *buf = 0; *len = 0; ++ /* Thanx to the /proc filesystem we can very easily reference our own ++ executable image:-)*/ ++ snprintf(exe_name,sizeof(exe_name),"--exe=/proc/%ld/exe", (long)pid); ++ ++ act.sa_handler = SIG_IGN; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = 0; ++ if (sigaction(SIGPIPE,&act,&oact) < 0) ++ return; ++ ++ if (pipe(fd1) >= 0) { ++ if (pipe(fd2)>=0) { ++ if ((child = fork()) < 0) { ++ CLOSE1; CLOSE2; RESTSIG; ++ return; ++ } ++ else { ++ if (0==child) { ++ close(fd1[1]); ++ close(fd2[0]); ++ if (fd1[0] != STDIN_FILENO) { ++ if (dup2(fd1[0],STDIN_FILENO) != STDIN_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd1[0]); ++ } ++ if (fd2[1] != STDOUT_FILENO) { ++ if (dup2(fd2[1],STDOUT_FILENO) != STDOUT_FILENO) { ++ CLOSE1; CLOSE2; ++ } ++ close(fd2[1]); ++ } ++ { ++ /* As pointed out by Florian Weimer to me, it is a ++ security threat to call the script with a user defined ++ environment and using the path. That would be Trojans ++ pleasure. Therefore we use the absolute path to ++ addr2line and an empty environment. That should be ++ safe. ++ */ ++ char *const argv[] = { "addr2line", ++ exe_name, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve("/usr/bin/addr2line", argv, envp) < 0) { ++ CLOSE1; CLOSE2; ++ } ++ } ++ } ++ else { ++ int i, n; ++ char hex[16]; ++ char line[MAX_LINE + 1]; ++ char *p; ++ char *s = buf; ++ ++ /* Parent context */ ++ close(fd1[0]); ++ close(fd2[1]); ++ ++ for(i=0; i < n_addr; i++) { ++ snprintf(hex,sizeof(hex),"%p\n",addrs[i]); ++ write(fd1[1],hex,strlen(hex)); ++ n = read(fd2[0],line,MAX_LINE); ++ if (n<=0) ++ break; ++ line[n]=0; ++ /* We have approx. 16 additional chars for "%p in " clause. ++ We use this info to prevent a buffer overrun. ++ */ ++ if (n + 16 + (*len) > max_len) ++ break; ++ p = strchr(line,'\n'); ++ if (p) { ++ if (*(p+1)) { ++ *p = 0; ++ *len += snprintf(s, (max_len - (*len)), "%p in %s at %s",addrs[i], line, p+1); ++ } ++ else { ++ *len += snprintf(s, (max_len - (*len)), "%p at %s",addrs[i], line); ++ } ++ s = buf + (*len); ++ } ++ } ++ close(fd1[1]); ++ close(fd2[0]); ++ } ++ } ++ } ++ else { ++ CLOSE1; ++ } ++ } ++ RESTSIG; ++} +Index: gcc/ada/g-trasym.adb +=================================================================== +--- gcc/ada/g-trasym.adb.orig 2007-04-11 10:18:15.000000000 +0200 ++++ gcc/ada/g-trasym.adb 2008-01-29 11:56:06.614450462 +0100 +@@ -32,16 +32,16 @@ + ------------------------------------------------------------------------------ + + -- Run-time symbolic traceback support ++-- This file has been modified by Juergen Pfeifer (31-Dec-1999) for ++-- the purpose to support the Ada for Linux Team implementation of ++-- convert_addresses. This implementation has the advantage to run ++-- on the binutils as they are deployed on Linux. + + with System.Soft_Links; + with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; + + package body GNAT.Traceback.Symbolic is + +- pragma Linker_Options ("-laddr2line"); +- pragma Linker_Options ("-lbfd"); +- pragma Linker_Options ("-liberty"); +- + package TSL renames System.Soft_Links; + + -- To perform the raw addresses to symbolic form translation we rely on a +@@ -79,9 +79,13 @@ + -- raw addresses provided in ADDRS, looked up in debug information from + -- FILENAME. LEN is filled with the result length. + -- +- -- This procedure is provided by libaddr2line on targets that support +- -- it. A dummy version is in adaint.c for other targets so that build +- -- of shared libraries doesn't generate unresolved symbols. ++ -- This is the ALT Linux specific version adapted to the binutils ++ -- deployed with most Linuxes. These binutils already have an ++ -- addr2line tool that demangles Ada symbolic names, but there are ++ -- version dependant variants for the option names. Therefore our ++ -- implementation spawns a shell script that does normalization of ++ -- the option and then executes addr2line and communicates with it ++ -- through a bidirectional pipe. + -- + -- Note that this procedure is *not* thread-safe. + +@@ -93,8 +97,9 @@ + (c_exename : System.Address) return System.Address; + pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); + +- Res : String (1 .. 256 * Traceback'Length); +- Len : Integer; ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); + + use type System.Address; + diff --git a/recipes/gcc/gcc-4.3.4/debian/alpha-ieee-doc.dpatch b/recipes/gcc/gcc-4.3.4/debian/alpha-ieee-doc.dpatch new file mode 100644 index 0000000000..b4976bf847 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/alpha-ieee-doc.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- src/gcc/doc/invoke.texi~ 2005-09-29 20:00:57.638380128 +0200 ++++ src/gcc/doc/invoke.texi 2005-09-30 22:23:22.922502992 +0200 +@@ -7670,6 +7670,13 @@ + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @item -mieee-with-inexact + @opindex mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains diff --git a/recipes/gcc/gcc-4.3.4/debian/alpha-ieee.dpatch b/recipes/gcc/gcc-4.3.4/debian/alpha-ieee.dpatch new file mode 100644 index 0000000000..4070b1a39e --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/alpha-ieee.dpatch @@ -0,0 +1,57 @@ +#! /bin/sh -e + +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- src/gcc/config/alpha/alpha.c~ 2005-06-04 21:25:45.000000000 +0200 ++++ src/gcc/config/alpha/alpha.c 2005-09-30 22:21:33.251175568 +0200 +@@ -248,6 +248,10 @@ + { 0, 0, 0 } + }; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + /* Unicos/Mk doesn't have shared libraries. */ + if (TARGET_ABI_UNICOSMK && flag_pic) + { +#--- src/gcc/doc/invoke.texi~ 2005-09-29 20:00:57.638380128 +0200 +#+++ src/gcc/doc/invoke.texi 2005-09-30 22:23:22.922502992 +0200 +#@@ -7670,6 +7670,13 @@ +# values such as not-a-number and plus/minus infinity. Other Alpha +# compilers call this option @option{-ieee_with_no_inexact}. +# +#+DEBIAN SPECIFIC: This option is on by default, unless +#+@option{-ffinite-math-only} (which is part of the @option{-ffast-math} +#+set) is specified, because the software functions in the GNU libc math +#+libraries generate denormalized numbers, NaNs, and infs (all of which +#+will cause a programs to SIGFPE when it attempts to use the results without +#+@option{-mieee}). +#+ +# @item -mieee-with-inexact +# @opindex mieee-with-inexact +# This is like @option{-mieee} except the generated code also maintains diff --git a/recipes/gcc/gcc-4.3.4/debian/alpha-no-ev4-directive.dpatch b/recipes/gcc/gcc-4.3.4/debian/alpha-no-ev4-directive.dpatch new file mode 100644 index 0000000000..e3f84244d2 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/alpha-no-ev4-directive.dpatch @@ -0,0 +1,49 @@ +#! /bin/sh -e + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/config/alpha/alpha.c +=================================================================== +--- gcc/config/alpha/alpha.c (revision 115263) ++++ gcc/config/alpha/alpha.c (working copy) +@@ -9372,7 +9372,7 @@ + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -9382,10 +9382,9 @@ + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + #endif diff --git a/recipes/gcc/gcc-4.3.4/debian/arm-unbreak-eabi-armv4t.dpatch b/recipes/gcc/gcc-4.3.4/debian/arm-unbreak-eabi-armv4t.dpatch new file mode 100644 index 0000000000..7bb8887068 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/arm-unbreak-eabi-armv4t.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: Fix armv4t build on ARM + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src/gcc/config/arm/linux-eabi.h.orig 2007-11-24 12:37:38.000000000 +0000 ++++ src/gcc/config/arm/linux-eabi.h 2007-11-24 12:39:41.000000000 +0000 +@@ -44,7 +44,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ diff --git a/recipes/gcc/gcc-4.3.4/debian/boehm-gc-getnprocs.dpatch b/recipes/gcc/gcc-4.3.4/debian/boehm-gc-getnprocs.dpatch new file mode 100644 index 0000000000..8d85cdcbb0 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/boehm-gc-getnprocs.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: boehm-gc/pthread_support.c (GC_get_nprocs): Use sysconf as fallback. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: boehm-gc/pthread_support.c +=================================================================== +--- boehm-gc/pthread_support.c (revision 127207) ++++ boehm-gc/pthread_support.c (working copy) +@@ -724,7 +724,8 @@ + f = open("/proc/stat", O_RDONLY); + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) { + WARN("Couldn't read /proc/stat\n", 0); +- return -1; ++ /* Fallback to sysconf after the warning */ ++ return sysconf(_SC_NPROCESSORS_ONLN); + } + for (i = 0; i < len - 100; ++i) { + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c' diff --git a/recipes/gcc/gcc-4.3.4/debian/boehm-gc-nocheck.dpatch b/recipes/gcc/gcc-4.3.4/debian/boehm-gc-nocheck.dpatch new file mode 100644 index 0000000000..f9910dc041 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/boehm-gc-nocheck.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- boehm-gc/Makefile.in~ 2004-06-20 16:24:06.000000000 +0200 ++++ boehm-gc/Makefile.in 2004-06-23 09:43:42.000000000 +0200 +@@ -662,7 +662,8 @@ + test "$$failed" -eq 0; \ + else :; fi + check-am: $(check_PROGRAMS) +- $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ : # $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ @echo target $@ disabled for Debian build. + check: check-recursive + all-am: Makefile $(LTLIBRARIES) all-multi + installdirs: installdirs-recursive diff --git a/recipes/gcc/gcc-4.3.4/debian/config-ml.dpatch b/recipes/gcc/gcc-4.3.4/debian/config-ml.dpatch new file mode 100644 index 0000000000..12ef7b495a --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/config-ml.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh -e + +# DP: disable some biarch libraries for biarch builds + +if [ $# -eq 3 ] && [ "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- config-ml.in.orig 2007-12-01 10:09:04.533972767 +0100 ++++ config-ml.in 2007-12-01 10:21:50.625529084 +0100 +@@ -301,6 +301,11 @@ + done + fi + ;; ++i[34567]86-*-*) ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=x86_64-linux-gnu" ++ esac ++ ;; + m68*-*-*) + if [ x$enable_softfloat = xno ] + then +@@ -472,9 +477,36 @@ + esac + done + fi ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=powerpc64-linux-gnu" ++ esac ++ ;; ++s390-*-*) ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=s390x-linux-gnu" ++ esac + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" 64 " ) ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -852,9 +884,20 @@ + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *GCJ=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- ${ac_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then ++ ${ac_configure_args} ${ml_configure_args} ${ml_srcdiroption} ; then + true + else + exit 1 diff --git a/recipes/gcc/gcc-4.3.4/debian/cpu-default-i486.dpatch b/recipes/gcc/gcc-4.3.4/debian/cpu-default-i486.dpatch new file mode 100644 index 0000000000..1afa60faf2 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/cpu-default-i486.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: set default 32bit ix86 architecture to i486 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/config/i386/i386.c~ 2007-06-28 13:23:31.000000000 +0200 ++++ gcc/config/i386/i386.c 2007-06-28 13:26:33.000000000 +0200 +@@ -1953,7 +1953,7 @@ + "-mtune=generic instead as appropriate."); + + if (!ix86_arch_string) +- ix86_arch_string = TARGET_64BIT ? "x86-64" : "i386"; ++ ix86_arch_string = TARGET_64BIT ? "x86-64" : "i486"; + else + ix86_arch_specified = 1; + diff --git a/recipes/gcc/gcc-4.3.4/debian/cross-fixes.dpatch b/recipes/gcc/gcc-4.3.4/debian/cross-fixes.dpatch new file mode 100644 index 0000000000..84d50bfd4a --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/cross-fixes.dpatch @@ -0,0 +1,129 @@ +#! /bin/sh -e + +# DP: Fix the linker error when creating an xcc for ia64 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + cd ${dir}gcc && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/ia64/fde-glibc.c gcc-4.0.0.new/gcc/config/ia64/fde-glibc.c +--- gcc-4.0.0.orig/gcc/config/ia64/fde-glibc.c 2003-11-02 18:35:20.000000000 +0100 ++++ gcc-4.0.0.new/gcc/config/ia64/fde-glibc.c 2005-05-15 02:42:27.675247674 +0200 +@@ -31,6 +31,7 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif ++#ifndef inhibit_libc + #include "config.h" + #include + #include +@@ -162,3 +163,5 @@ _Unwind_FindTableEntry (void *pc, unsign + + return data.ret; + } ++ ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/ia64/unwind-ia64.c gcc-4.0.0.new/gcc/config/ia64/unwind-ia64.c +--- gcc-4.0.0.orig/gcc/config/ia64/unwind-ia64.c 2005-04-06 05:50:36.000000000 +0200 ++++ gcc-4.0.0.new/gcc/config/ia64/unwind-ia64.c 2005-05-15 02:43:10.842199954 +0200 +@@ -30,7 +30,7 @@ + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +- ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2404,3 +2404,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/sh/linux-unwind.h gcc-4.0.0.new/gcc/config/sh/linux-unwind.h +--- gcc-4.0.0.orig/gcc/config/sh/linux-unwind.h 2005-02-11 02:12:57.000000000 +0100 ++++ gcc-4.0.0.new/gcc/config/sh/linux-unwind.h 2005-05-15 02:44:31.000000000 +0200 +@@ -29,6 +29,7 @@ Boston, MA 02111-1307, USA. */ + /* Do code reading to identify a signal frame, and set the frame + state data appropriately. See unwind-dw2.c for the structs. */ + ++#ifndef inhibit_libc + #include + #include + #include "insn-constants.h" +@@ -169,3 +170,4 @@ sh_fallback_frame_state (struct _Unwind_ + return _URC_NO_REASON; + } + #endif /* defined (__SH5__) */ ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/unwind-compat.c gcc-4.0.0.new/gcc/unwind-compat.c +--- gcc-4.0.0.orig/gcc/unwind-compat.c 2004-09-04 02:15:40.000000000 +0200 ++++ gcc-4.0.0.new/gcc/unwind-compat.c 2005-05-15 02:41:17.000000000 +0200 +@@ -29,6 +29,7 @@ + 02110-1301, USA. */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -204,3 +205,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/unwind-generic.h gcc-4.0.0.new/gcc/unwind-generic.h +--- gcc-4.0.0.orig/gcc/unwind-generic.h 2004-11-30 09:15:39.000000000 +0100 ++++ gcc-4.0.0.new/gcc/unwind-generic.h 2005-05-15 02:38:33.000000000 +0200 +@@ -202,6 +202,7 @@ extern _Unwind_Reason_Code _Unwind_SjLj_ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + #include + + static inline _Unwind_Ptr +@@ -220,6 +221,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.new/gcc/config/alpha/linux-unwind.h gcc-4.0.0.new2/gcc/config/alpha/linux-unwind.h +--- gcc-4.0.0.new/gcc/config/alpha/linux-unwind.h 2005-02-11 02:12:54.000000000 +0100 ++++ gcc-4.0.0.new2/gcc/config/alpha/linux-unwind.h 2005-05-15 05:09:16.000000000 +0200 +@@ -29,6 +29,7 @@ Boston, MA 02111-1307, USA. */ + /* Do code reading to identify a signal frame, and set the frame + state data appropriately. See unwind-dw2.c for the structs. */ + ++#ifndef inhibit_libc + #include + #include + +@@ -80,3 +81,5 @@ alpha_fallback_frame_state (struct _Unwi + fs->retaddr_column = 64; + return _URC_NO_REASON; + } ++ ++#endif diff --git a/recipes/gcc/gcc-4.3.4/debian/cross-include.dpatch b/recipes/gcc/gcc-4.3.4/debian/cross-include.dpatch new file mode 100644 index 0000000000..c2622903ec --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/cross-include.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Set cross include path to .../include, not .../sys-include +# DP: This should be a fix for famous limits.h issue + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir}gcc && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/configure.ac.orig 2005-08-24 06:24:11.000000000 +0400 ++++ gcc/configure.ac 2005-12-06 00:40:45.000000000 +0300 +@@ -681,7 +681,7 @@ + ], [ + TARGET_SYSTEM_ROOT= + TARGET_SYSTEM_ROOT_DEFINE= +- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' ++ CROSS_SYSTEM_HEADER_DIR='$(prefix)/$(target_noncanonical)/include' + ]) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) diff --git a/recipes/gcc/gcc-4.3.4/debian/deb-protoize.dpatch b/recipes/gcc/gcc-4.3.4/debian/deb-protoize.dpatch new file mode 100644 index 0000000000..f86ee09942 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/deb-protoize.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: build protoize/unprotoize binaries + +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/Makefile.in.orig 2007-09-06 21:31:39.864036975 +0200 ++++ gcc/Makefile.in 2007-09-06 21:33:57.836118252 +0200 +@@ -137,7 +137,7 @@ + + # Selection of languages to be made. + CONFIG_LANGUAGES = @all_selected_languages@ +-LANGUAGES = c gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES) ++LANGUAGES = c proto gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES) + + # Various ways of specifying flags for compilations: + # CFLAGS is for the user to override to, e.g., do a cross build with -O2. +@@ -3280,14 +3280,14 @@ + protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h + (SHLIB_LINK='$(SHLIB_LINK)'; \ +- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + + unprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h + (SHLIB_LINK='$(SHLIB_LINK)'; \ +- $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-d-lang.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-d-lang.dpatch new file mode 100644 index 0000000000..24267ddbb3 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-d-lang.dpatch @@ -0,0 +1,246 @@ +#! /bin/sh -e + +# DP: Add D options and specs for the gcc driver. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc.orig/d/lang.opt gcc/d/lang.opt +--- gcc.orig/d/lang.opt 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/d/lang.opt 2007-03-04 16:29:47.000000000 +0100 +@@ -0,0 +1,160 @@ ++; GDC -- D front-end for GCC ++; Copyright (C) 2004 David Friedman ++; ++; This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ ++; This is used in GCC 3.4+ ++ ++Language ++D ++ ++I ++D Joined Separate ++-I Add to the end of the main include path. ++ ++J ++D Joined Separate ++-J Add to the end of the string import path. ++ ++fdeprecated ++D ++Allow use of deprecated features ++ ++fassert ++D ++Generate runtime code for assert()'s ++ ++frelease ++D ++Compile release version ++ ++funittest ++D ++Compile in unittest code ++ ++fversion= ++D Joined RejectNegative ++-fversion= Compile in version code >= or identified by ++ ++fdebug= ++D Joined RejectNegative ++-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident ++ ++fdebug ++D ++Compile in debug code ++ ++fdebug-c ++D ++With -g, generate C debug information for debugger compatibility ++ ++fd-verbose ++D ++Print information about D language processing to stdout ++ ++fd-version=1 ++D RejectNegative ++Compile as D language version 1 ++ ++femit-templates= ++D Joined RejectNegative ++-femit-templates=[normal|private|all|none|auto] Control template emission ++ ++femit-templates ++D ++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies ++ ++nostdinc ++D ++Do not search standard system include directories ++ ++fonly= ++D Joined RejectNegative ++Process all modules specified on the command line, but only generate code for the module specified by the argument. ++ ++fod= ++D Joined RejectNegative ++-fod= Specify the object output directory. Note: this is actually a driver option; the backend ignores it. ++ ++fop ++D ++Specify that the source file's parent directories should be appended to the object output directory. Note: this is actually a driver option; the backend ignores it. ++ ++fintfc ++Generate D interface files ++ ++fintfc-dir= ++D Joined RejectNegative ++-fintfc-dir= Write D interface files to directory ++ ++fintfc-file= ++D Joined RejectNegative ++-fintfc-file= Write D interface file to ++ ++fdoc ++D ++Generate documentation ++ ++fdoc-dir= ++D Joined RejectNegative ++-fdoc-dir= Write documentation file to docdir directory ++ ++fdoc-file= ++D Joined RejectNegative ++-fdoc-file= Write documentation file to filename ++ ++fdoc-inc= ++D Joined RejectNegative ++-fdoc-inc= Include a Ddoc macro file ++ ++fmultilib-dir= ++D Joined RejectNegative ++-fmultilib-dir= Select header multilib subdirectory ++ ++Wsign-compare ++D ++Warn about signed-unsigned comparisons ++ ++fdump-source ++D RejectNegative ++Dump decoded UTF-8 text and source from HTML ++ ++fbuiltin ++D ++Recognize built-in functions ++ ++funsigned-char ++D ++Make \"char\" unsigned by default (silently ignored in D) ++ ++fsigned-char ++D ++Make \"char\" signed by default (silently ignored in D) ++ ++iprefix ++D Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isysroot ++D Joined Separate ++-isysroot Set to be the system root directory ++ ++isystem ++D Joined Separate ++-isystem Add to the start of the system include path ++ ++Wall ++D ++Enable most warning messages +diff -urN gcc.orig/d/lang-specs.h gcc/d/lang-specs.h +--- gcc.orig/d/lang-specs.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/d/lang-specs.h 2007-03-04 16:36:44.000000000 +0100 +@@ -0,0 +1,53 @@ ++/* GDC -- D front-end for GCC ++ Copyright (C) 2004 David Friedman ++ ++ This program 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++ ++#ifndef D_D_SPEC ++#define D_D_SPEC 0 ++#endif ++ ++/* %{!M} probably doesn't make sense because we would need ++ to do that -- -MD and -MMD doesn't sound like a plan for D.... */ ++ ++/* %(d_options) ? */ ++ ++#if GCC_SPEC_FORMAT_4 ++#define D_D_SPEC_REST 0, 1, 0 ++#else ++#define D_D_SPEC_REST 0 ++#endif ++ ++#if D_DRIVER_ONLY ++{".html", "@d", D_D_SPEC_REST }, ++{".HTML", "@d", D_D_SPEC_REST }, ++{".htm", "@d", D_D_SPEC_REST }, ++{".HTM", "@d", D_D_SPEC_REST }, ++{".xhtml", "@d", D_D_SPEC_REST }, ++{".XHTML", "@d", D_D_SPEC_REST }, ++{".d", "@d", D_D_SPEC_REST }, ++{".D", "@d", D_D_SPEC_REST }, ++{"@d", ++ "%{!E:cc1d %i %:d-all-sources() %(cc1_options) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC_REST }, ++#else ++{".d", "@d", D_D_SPEC_REST }, ++{".D", "@d", D_D_SPEC_REST }, ++{"@d", ++ "%{!E:cc1d %i %(cc1_options) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC_REST }, ++#endif ++ diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-driver-extra-langs.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-driver-extra-langs.dpatch new file mode 100644 index 0000000000..2a206f7edc --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-driver-extra-langs.dpatch @@ -0,0 +1,40 @@ +#! /bin/sh -e + +# DP: Add options and specs for languages that are not built from a source +# DP: (but built from separate sources). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/Makefile.in~ 2006-07-11 14:03:25.865618000 +0200 ++++ gcc/Makefile.in 2006-07-11 21:15:30.011548776 +0200 +@@ -424,8 +424,8 @@ + xm_include_list=@xm_include_list@ + xm_defines=@xm_defines@ + lang_checks=check-gcc +-lang_opt_files=@lang_opt_files@ $(srcdir)/c.opt $(srcdir)/common.opt +-lang_specs_files=@lang_specs_files@ ++lang_opt_files=$(sort @lang_opt_files@ $(foreach lang,$(debian_extra_langs),$(srcdir)/$(lang)/lang.opt)) $(srcdir)/c.opt $(srcdir)/common.opt ++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(debian_extra_langs),$(srcdir)/$(lang)/lang-specs.h)) + lang_tree_files=@lang_tree_files@ + target_cpu_default=@target_cpu_default@ + GCC_THREAD_FILE=@thread_file@ diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-both.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-both.dpatch new file mode 100644 index 0000000000..8fea7586d0 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-both.dpatch @@ -0,0 +1,163 @@ +#! /bin/sh -e + +# DP: Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +--- gcc/config/alpha/linux-elf.h.orig 2007-08-04 08:55:58.000000000 +0200 ++++ gcc/config/alpha/linux-elf.h 2007-09-01 15:47:26.605865578 +0200 +@@ -39,7 +39,7 @@ + + #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- gcc/config/s390/linux.h.orig 2007-08-04 08:55:59.000000000 +0200 ++++ gcc/config/s390/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -77,7 +77,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux.h.orig 2007-08-04 08:56:01.000000000 +0200 ++++ gcc/config/sparc/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -132,7 +132,7 @@ + + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!ibcs: \ +--- gcc/config/sparc/linux64.h.orig 2007-08-04 08:56:01.000000000 +0200 ++++ gcc/config/sparc/linux64.h 2007-09-01 15:47:26.605865578 +0200 +@@ -166,7 +166,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -175,7 +175,7 @@ + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -256,7 +256,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2007-08-04 08:56:07.000000000 +0200 ++++ gcc/config/i386/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -108,7 +108,7 @@ + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux64.h.orig 2007-08-04 08:56:07.000000000 +0200 ++++ gcc/config/i386/linux64.h 2007-09-01 15:48:27.336781690 +0200 +@@ -65,7 +65,7 @@ + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/ia64/linux.h.orig 2006-12-12 18:59:53.000000000 +0100 ++++ gcc/config/ia64/linux.h 2007-09-01 15:47:26.605865578 +0200 +@@ -40,7 +40,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/sysv4.h.orig 2007-08-08 23:37:49.000000000 +0200 ++++ gcc/config/rs6000/sysv4.h 2007-09-01 15:47:26.615865729 +0200 +@@ -901,7 +901,7 @@ + #define LINUX_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +--- gcc/config/rs6000/linux64.h.orig 2007-08-04 08:56:12.000000000 +0200 ++++ gcc/config/rs6000/linux64.h 2007-09-01 15:47:26.615865729 +0200 +@@ -354,11 +354,11 @@ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-gnu.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-gnu.dpatch new file mode 100644 index 0000000000..8c6e2691b1 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-hash-style-gnu.dpatch @@ -0,0 +1,163 @@ +#! /bin/sh -e + +# DP: Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +--- gcc/config/alpha/linux-elf.h.orig 2007-09-01 15:49:36.997832511 +0200 ++++ gcc/config/alpha/linux-elf.h 2007-09-01 15:49:48.538006592 +0200 +@@ -39,7 +39,7 @@ + + #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- gcc/config/s390/linux.h.orig 2007-09-01 15:49:36.997832511 +0200 ++++ gcc/config/s390/linux.h 2007-09-01 15:49:48.548006743 +0200 +@@ -77,7 +77,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux.h.orig 2007-09-01 15:49:36.997832511 +0200 ++++ gcc/config/sparc/linux.h 2007-09-01 15:49:48.548006743 +0200 +@@ -132,7 +132,7 @@ + + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!ibcs: \ +--- gcc/config/sparc/linux64.h.orig 2007-09-01 15:49:36.997832511 +0200 ++++ gcc/config/sparc/linux64.h 2007-09-01 15:49:48.548006743 +0200 +@@ -166,7 +166,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -175,7 +175,7 @@ + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -256,7 +256,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2007-09-01 15:49:37.007832662 +0200 ++++ gcc/config/i386/linux.h 2007-09-01 15:49:48.548006743 +0200 +@@ -108,7 +108,7 @@ + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux64.h.orig 2007-09-01 15:49:37.007832662 +0200 ++++ gcc/config/i386/linux64.h 2007-09-01 15:50:49.068919687 +0200 +@@ -65,7 +65,7 @@ + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/ia64/linux.h.orig 2007-09-01 15:49:37.007832662 +0200 ++++ gcc/config/ia64/linux.h 2007-09-01 15:49:48.548006743 +0200 +@@ -40,7 +40,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/sysv4.h.orig 2007-09-01 15:49:37.007832662 +0200 ++++ gcc/config/rs6000/sysv4.h 2007-09-01 15:49:48.548006743 +0200 +@@ -901,7 +901,7 @@ + #define LINUX_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +--- gcc/config/rs6000/linux64.h.orig 2007-09-01 15:49:37.007832662 +0200 ++++ gcc/config/rs6000/linux64.h 2007-09-01 15:49:48.548006743 +0200 +@@ -354,11 +354,11 @@ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-i386-emit-cld.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-i386-emit-cld.dpatch new file mode 100644 index 0000000000..1267b00e18 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-i386-emit-cld.dpatch @@ -0,0 +1,179 @@ +#! /bin/sh -e + +# DP: Emit cld instruction when stringops are used (i386). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-03-06 Uros Bizjak + + * config/i386/i386.h (TARGET_CLD): New define. + (struct machine_function): Add needs_cld field. + (ix86_current_function_needs_cld): New define. + * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant. + ("cld"): New isns pattern. + ("strmov_singleop"): Set ix86_current_function_needs_cld flag. + ("rep_mov"): Ditto. + ("strset_singleop"): Ditto. + ("rep_stos"): Ditto. + ("cmpstrnqi_nz_1"): Ditto. + ("cmpstrnqi_1"): Ditto. + ("strlenqi_1"): Ditto. + * config/i386/i386.c (ix86_expand_prologue): Emit cld insn for + TARGET_CLD when ix86_current_function_needs_cld is set. + +Index: gcc/config/i386/i386.h +=================================================================== +--- gcc/config/i386/i386.h (revision 132966) ++++ gcc/config/i386/i386.h (working copy) +@@ -388,6 +388,7 @@ extern unsigned int ix86_arch_features[X + + extern int x86_prefetch_sse; + ++#define TARGET_CLD 1 + #define TARGET_ABM x86_abm + #define TARGET_CMPXCHG16B x86_cmpxchg16b + #define TARGET_POPCNT x86_popcnt +@@ -2446,8 +2447,9 @@ struct machine_function GTY(()) + int save_varrargs_registers; + int accesses_prev_frame; + int optimize_mode_switching[MAX_386_ENTITIES]; +- /* Set by ix86_compute_frame_layout and used by prologue/epilogue expander to +- determine the style used. */ ++ int needs_cld; ++ /* Set by ix86_compute_frame_layout and used by prologue/epilogue ++ expander to determine the style used. */ + int use_fast_prologue_epilogue; + /* Number of saved registers USE_FAST_PROLOGUE_EPILOGUE has been computed + for. */ +@@ -2467,6 +2469,7 @@ struct machine_function GTY(()) + #define ix86_stack_locals (cfun->machine->stack_locals) + #define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers) + #define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching) ++#define ix86_current_function_needs_cld (cfun->machine->needs_cld) + #define ix86_tls_descriptor_calls_expanded_in_cfun \ + (cfun->machine->tls_descriptor_call_expanded_p) + /* Since tls_descriptor_call_expanded is not cleared, even if all TLS +Index: gcc/config/i386/i386.md +=================================================================== +--- gcc/config/i386/i386.md (revision 132966) ++++ gcc/config/i386/i386.md (working copy) +@@ -205,6 +205,7 @@ + (UNSPECV_XCHG 12) + (UNSPECV_LOCK 13) + (UNSPECV_PROLOGUE_USE 14) ++ (UNSPECV_CLD 15) + ]) + + ;; Constants to represent pcomtrue/pcomfalse variants +@@ -18519,6 +18520,14 @@ + + ;; Block operation instructions + ++(define_insn "cld" ++ [(unspec_volatile [(const_int 0)] UNSPECV_CLD)] ++ "" ++ "cld" ++ [(set_attr "length" "1") ++ (set_attr "length_immediate" "0") ++ (set_attr "modrm" "0")]) ++ + (define_expand "movmemsi" + [(use (match_operand:BLK 0 "memory_operand" "")) + (use (match_operand:BLK 1 "memory_operand" "")) +@@ -18591,7 +18600,7 @@ + (set (match_operand 2 "register_operand" "") + (match_operand 5 "" ""))])] + "TARGET_SINGLE_STRINGOP || optimize_size" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*strmovdi_rex_1" + [(set (mem:DI (match_operand:DI 2 "register_operand" "0")) +@@ -18708,7 +18717,7 @@ + (match_operand 3 "memory_operand" "")) + (use (match_dup 4))])] + "" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*rep_movdi_rex64" + [(set (match_operand:DI 2 "register_operand" "=c") (const_int 0)) +@@ -18868,7 +18877,7 @@ + (set (match_operand 0 "register_operand" "") + (match_operand 3 "" ""))])] + "TARGET_SINGLE_STRINGOP || optimize_size" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*strsetdi_rex_1" + [(set (mem:DI (match_operand:DI 1 "register_operand" "0")) +@@ -18962,7 +18971,7 @@ + (use (match_operand 3 "register_operand" "")) + (use (match_dup 1))])] + "" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*rep_stosdi_rex64" + [(set (match_operand:DI 1 "register_operand" "=c") (const_int 0)) +@@ -19138,7 +19147,7 @@ + (clobber (match_operand 1 "register_operand" "")) + (clobber (match_dup 2))])] + "" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*cmpstrnqi_nz_1" + [(set (reg:CC FLAGS_REG) +@@ -19185,7 +19194,7 @@ + (clobber (match_operand 1 "register_operand" "")) + (clobber (match_dup 2))])] + "" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*cmpstrnqi_1" + [(set (reg:CC FLAGS_REG) +@@ -19254,7 +19263,7 @@ + (clobber (match_operand 1 "register_operand" "")) + (clobber (reg:CC FLAGS_REG))])] + "" +- "") ++ "ix86_current_function_needs_cld = 1;") + + (define_insn "*strlenqi_1" + [(set (match_operand:SI 0 "register_operand" "=&c") +Index: gcc/config/i386/i386.c +=================================================================== +--- gcc/config/i386/i386.c (revision 132966) ++++ gcc/config/i386/i386.c (working copy) +@@ -6498,6 +6498,10 @@ ix86_expand_prologue (void) + emit_insn (gen_prologue_use (pic_offset_table_rtx)); + emit_insn (gen_blockage ()); + } ++ ++ /* Emit cld instruction if stringops are used in the function. */ ++ if (TARGET_CLD && ix86_current_function_needs_cld) ++ emit_insn (gen_cld ()); + } + + /* Emit code to restore saved registers using MOV insns. First register diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-ice-apport.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-ice-apport.dpatch new file mode 100644 index 0000000000..87b8f06ea8 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-ice-apport.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/gcc.c~ 2007-08-05 22:17:07.000000000 +0200 ++++ gcc/gcc.c 2007-08-12 15:03:16.000000000 +0200 +@@ -6119,6 +6119,15 @@ + { + notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n", + temp_filenames[attempt * 2]); ++ if (!getenv ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = xmalloc (50 + strlen (temp_filenames[attempt * 2]) + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], temp_filenames[attempt * 2]); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (temp_filenames[attempt * 2]); + temp_filenames[attempt * 2] = NULL; diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-ice-hack.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-ice-hack.dpatch new file mode 100644 index 0000000000..84c5ef2ebd --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-ice-hack.dpatch @@ -0,0 +1,331 @@ +#! /bin/sh -e + +# DP: Retry the build on an ice, save the calling options and preprocessed +# DP: source when the ice is reproducible. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2004-01-23 Jakub Jelinek + + * system.h (ICE_EXIT_CODE): Define. + * gcc.c (execute): Don't free first string early, but at the end + of the function. Call retry_ice if compiler exited with + ICE_EXIT_CODE. + (retry_ice): New function. + * diagnostic.c (diagnostic_count_diagnostic, + diagnostic_action_after_output, error_recursion): Exit with + ICE_EXIT_CODE instead of FATAL_EXIT_CODE. + +--- gcc/diagnostic.c.orig 2007-09-30 10:48:13.000000000 +0000 ++++ gcc/diagnostic.c 2007-09-30 10:49:57.000000000 +0000 +@@ -244,7 +244,7 @@ + fnotice (stderr, "Please submit a full bug report,\n" + "with preprocessed source if appropriate.\n" + "See %s for instructions.\n", bug_report_url); +- exit (ICE_EXIT_CODE); ++ exit (FATAL_EXIT_CODE); + + case DK_FATAL: + if (context->abort_on_error) +--- gcc/gcc.c.orig 2007-09-30 10:48:13.000000000 +0000 ++++ gcc/gcc.c 2007-09-30 10:48:39.000000000 +0000 +@@ -357,6 +357,9 @@ + #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX) + static const char *convert_filename (const char *, int, int); + #endif ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++static void retry_ice (const char *prog, const char **argv); ++#endif + + static const char *getenv_spec_function (int, const char **); + static const char *if_exists_spec_function (int, const char **); +@@ -2999,7 +3002,7 @@ + } + } + +- if (string != commands[i].prog) ++ if (i && string != commands[i].prog) + free (CONST_CAST (char *, string)); + } + +@@ -3056,6 +3059,16 @@ + else if (WIFEXITED (status) + && WEXITSTATUS (status) >= MIN_FATAL_STATUS) + { ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++ /* For ICEs in cc1, cc1obj, cc1plus see if it is ++ reproducible or not. */ ++ char *p; ++ if (WEXITSTATUS (status) == ICE_EXIT_CODE ++ && i == 0 ++ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) ++ && ! strncmp (p + 1, "cc1", 3)) ++ retry_ice (commands[0].prog, commands[0].argv); ++#endif + if (WEXITSTATUS (status) > greatest_status) + greatest_status = WEXITSTATUS (status); + ret_code = -1; +@@ -3076,6 +3089,9 @@ + } + } + ++ if (commands[0].argv[0] != commands[0].prog) ++ free ((PTR) commands[0].argv[0]); ++ + return ret_code; + } + } +@@ -6016,6 +6032,224 @@ + switches[switchnum].validated = 1; + } + ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++#define RETRY_ICE_ATTEMPTS 2 ++ ++static void ++retry_ice (const char *prog, const char **argv) ++{ ++ int nargs, out_arg = -1, quiet = 0, attempt; ++ int pid, retries, sleep_interval; ++ const char **new_argv; ++ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2]; ++ ++ if (input_filename == NULL || ! strcmp (input_filename, "-")) ++ return; ++ ++ for (nargs = 0; argv[nargs] != NULL; ++nargs) ++ /* Only retry compiler ICEs, not preprocessor ones. */ ++ if (! strcmp (argv[nargs], "-E")) ++ return; ++ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o') ++ { ++ if (out_arg == -1) ++ out_arg = nargs; ++ else ++ return; ++ } ++ /* If the compiler is going to output any time information, ++ it might vary between invocations. */ ++ else if (! strcmp (argv[nargs], "-quiet")) ++ quiet = 1; ++ else if (! strcmp (argv[nargs], "-ftime-report")) ++ return; ++ ++ if (out_arg == -1 || !quiet) ++ return; ++ ++ memset (temp_filenames, '\0', sizeof (temp_filenames)); ++ new_argv = alloca ((nargs + 3) * sizeof (const char *)); ++ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *)); ++ new_argv[nargs++] = "-frandom-seed=0"; ++ new_argv[nargs] = NULL; ++ if (new_argv[out_arg][2] == '\0') ++ new_argv[out_arg + 1] = "-"; ++ else ++ new_argv[out_arg] = "-o-"; ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt) ++ { ++ int fd = -1; ++ int status; ++ ++ temp_filenames[attempt * 2] = make_temp_file (".out"); ++ temp_filenames[attempt * 2 + 1] = make_temp_file (".err"); ++ ++ if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ int i; ++ int fd1, fd2; ++ struct stat st1, st2; ++ size_t n, len; ++ char *buf; ++ ++ buf = xmalloc (8192); ++ ++ for (i = 0; i < 2; ++i) ++ { ++ fd1 = open (temp_filenames[i], O_RDONLY); ++ fd2 = open (temp_filenames[2 + i], O_RDONLY); ++ ++ if (fd1 < 0 || fd2 < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (st1.st_size != st2.st_size) ++ { ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ len = 0; ++ for (n = st1.st_size; n; n -= len) ++ { ++ len = n; ++ if (len > 4096) ++ len = 4096; ++ ++ if (read (fd1, buf, len) != (int) len ++ || read (fd2, buf + 4096, len) != (int) len) ++ { ++ i = -1; ++ break; ++ } ++ ++ if (memcmp (buf, buf + 4096, len) != 0) ++ break; ++ } ++ ++ close (fd1); ++ close (fd2); ++ ++ if (n) ++ break; ++ } ++ ++ free (buf); ++ if (i == -1) ++ break; ++ ++ if (i != 2) ++ { ++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); ++ break; ++ } ++ ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ break; ++ write (fd, "//", 2); ++ for (i = 0; i < nargs; i++) ++ { ++ write (fd, " ", 1); ++ write (fd, new_argv[i], strlen (new_argv[i])); ++ } ++ write (fd, "\n", 1); ++ new_argv[nargs] = "-E"; ++ new_argv[nargs + 1] = NULL; ++ } ++ ++ /* Fork a subprocess; wait and retry if it fails. */ ++ sleep_interval = 1; ++ pid = -1; ++ for (retries = 0; retries < 4; retries++) ++ { ++ pid = fork (); ++ if (pid >= 0) ++ break; ++ sleep (sleep_interval); ++ sleep_interval *= 2; ++ } ++ ++ if (pid < 0) ++ break; ++ else if (pid == 0) ++ { ++ if (attempt != RETRY_ICE_ATTEMPTS) ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 1) ++ { ++ close (1); ++ dup (fd); ++ close (fd); ++ } ++ ++ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 2) ++ { ++ close (2); ++ dup (fd); ++ close (fd); ++ } ++ ++ if (prog == new_argv[0]) ++ execvp (prog, (char *const *) new_argv); ++ else ++ execv (new_argv[0], (char *const *) new_argv); ++ exit (-1); ++ } ++ ++ if (waitpid (pid, &status, 0) < 0) ++ break; ++ ++ if (attempt < RETRY_ICE_ATTEMPTS ++ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE)) ++ { ++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); ++ break; ++ } ++ else if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ close (fd); ++ if (WIFEXITED (status) ++ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE) ++ { ++ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n", ++ temp_filenames[attempt * 2]); ++ /* Make sure it is not deleted. */ ++ free (temp_filenames[attempt * 2]); ++ temp_filenames[attempt * 2] = NULL; ++ break; ++ } ++ } ++ } ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++) ++ if (temp_filenames[attempt]) ++ { ++ unlink (temp_filenames[attempt]); ++ free (temp_filenames[attempt]); ++ } ++} ++#endif ++ + /* Search for a file named NAME trying various prefixes including the + user's -B prefix and some standard ones. + Return the absolute file name found. If nothing is found, return NAME. */ +--- gcc/Makefile.in.orig 2007-09-30 10:48:13.000000000 +0000 ++++ gcc/Makefile.in 2007-09-30 10:48:39.000000000 +0000 +@@ -192,6 +192,7 @@ + build/gengtype-lex.o-warn = -Wno-error + # SYSCALLS.c misses prototypes + SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error ++build/gcc.o-warn = -Wno-error + + # All warnings have to be shut off in stage1 if the compiler used then + # isn't gcc; configure determines that. WARN_CFLAGS will be either diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-multilib64dir.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-multilib64dir.dpatch new file mode 100644 index 0000000000..fe8f5a1a41 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-multilib64dir.dpatch @@ -0,0 +1,62 @@ +#! /bin/sh -e + +# DP: Use lib instead of lib64 as multilibdir on amd64 and ppc64. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/config/i386/t-linux64 +=================================================================== +--- gcc/config/i386/t-linux64 (revision 130706) ++++ gcc/config/i386/t-linux64 (working copy) +@@ -13,7 +13,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +Index: gcc/config/rs6000/t-linux64 +=================================================================== +--- gcc/config/rs6000/t-linux64 (revision 130706) ++++ gcc/config/rs6000/t-linux64 (working copy) +@@ -14,13 +14,13 @@ + # it doesn't tell anything about the 32bit libraries on those systems. Set + # MULTILIB_OSDIRNAMES according to what is found on the target. + +-MULTILIB_OPTIONS = m64/m32 msoft-float +-MULTILIB_DIRNAMES = 64 32 nof ++MULTILIB_OPTIONS = m64/m32 ++MULTILIB_DIRNAMES = 64 32 + MULTILIB_EXTRA_OPTS = fPIC mstrict-align +-MULTILIB_EXCEPTIONS = m64/msoft-float +-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof +-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) ++MULTILIB_EXCEPTIONS = ++MULTILIB_EXCLUSIONS = ++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_MATCHES = + + softfp_wrap_start := '\#ifndef __powerpc64__' + softfp_wrap_end := '\#endif' diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-pascal-lang.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-pascal-lang.dpatch new file mode 100644 index 0000000000..eab416ad63 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-pascal-lang.dpatch @@ -0,0 +1,726 @@ +#! /bin/sh -e + +# DP: Add pascal options and specs for the gcc driver. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ln -sf p ${dir}/gcc/pascal + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc.orig/p/lang.opt gcc/p/lang.opt +--- gcc.orig/p/lang.opt 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/p/lang.opt 2006-03-03 20:17:49.000000000 +0100 +@@ -0,0 +1,635 @@ ++; This file was generated automatically by mk-lang_opt. ++; DO NOT CHANGE THIS FILE MANUALLY! ++; ++; Options for the Pascal front end. ++; Copyright (C) 2004-2006 Free Software Foundation, Inc. ++; ++; This file is part of GNU Pascal. ++; ++; GNU Pascal 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, or (at your option) ++; any later version. ++; ++; GNU Pascal 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 GNU Pascal; see the file COPYING. If not, write to the ++; Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++; 02111-1307, USA. ++ ++; See c.opt for a description of this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++Language ++Pascal ++ ++A ++Pascal ++Ignored ++ ++D ++Pascal Joined Separate ++-D[=] Define a with as its value. If just is given, is taken to be 1 ++ ++E ++Pascal ++Preprocess only ++ ++H ++Pascal ++Print the name of include files as they are used ++ ++I ++Pascal Joined Separate ++-I Add to the end of the main include path. ++ ++M ++Pascal ++Generate make dependencies ++ ++MM ++Pascal ++Like -M but ignore system header files ++ ++P ++Pascal ++Do not generate #line directives ++ ++U ++Pascal Joined Separate ++-U Undefine ++ ++Wabsolute ++Pascal ++Warn about variables at absolute adresses and `absolute' variable with non-constant addresses (default) ++ ++Wall ++Pascal ++ ++ ++Wcomment ++Pascal ++ ++ ++Wdynamic-arrays ++Pascal ++Warn about arrays whose size is determined at run time (including array slices) ++ ++Werror ++Pascal ++ ++ ++Wfloat-equal ++Pascal ++Warn about `=' and `<>' comparisons of real numbers ++ ++Widentifier-case ++Pascal ++Warn about an identifier written with varying case ++ ++Widentifier-case-local ++Pascal ++Warn about an identifier written with varying case within one program/module/unit ++ ++Wimplicit-abstract ++Pascal ++Warn when an object type not declared `abstract' contains an abstract method (default) ++ ++Wimplicit-io ++Pascal ++Warn when `Input' or `Output' are used implicitly ++ ++Winherited-abstract ++Pascal ++Warn when an abstract object type inherits from a non-abstract one (default) ++ ++Winterface-file-name ++Pascal ++Warn when a unit/module interface differs from the file name ++ ++Wlocal-external ++Pascal ++Warn about local `external' declarations ++ ++Wmissing-declarations ++Pascal ++ ++ ++Wmissing-prototypes ++Pascal ++ ++ ++Wmixed-comments ++Pascal ++Warn about mixed comments like `{ ... *)' ++ ++Wnear-far ++Pascal ++Warn about use of useless `near' or `far' directives (default) ++ ++Wnested-comments ++Pascal ++Warn about nested comments like `{ { } }' ++ ++Wobject-assignment ++Pascal ++Warn when when assigning objects or declaring them as value parameters or function results (default) ++ ++Wpointer-arith ++Pascal ++ ++ ++Wsemicolon ++Pascal ++Warn about a semicolon after `then', `else' or `do' (default) ++ ++Wtyped-const ++Pascal ++Warn about misuse of typed constants as initialized variables (default) ++ ++Wundef ++Pascal ++ ++ ++Wunderscore ++Pascal ++Warn about double/leading/trailing underscores in identifiers ++ ++Wwarnings ++Pascal ++Enable warnings (same as `{$W+}') ++ ++Wwrite-strings ++Pascal ++ ++ ++famtmpfile= ++Pascal Joined RejectNegative ++(Internal switch used for automake) ++ ++fassertions ++Pascal ++Enable assertion checking (default) ++ ++fautobuild ++Pascal ++Automatically compile all units/modules/`{$L ...}' files and link the object files provided ++ ++fautolink ++Pascal ++Automatically link object files provided by units/modules or `{$L ...}' (default) ++ ++fautomake ++Pascal ++Automatically compile changed units/modules/`{$L ...}' files and link the object files provided ++ ++fautomake-g++= ++Pascal Joined RejectNegative ++Set the C++ compiler invoked by automake ++ ++fautomake-gcc= ++Pascal Joined RejectNegative ++Set the C compiler invoked by automake ++ ++fautomake-gpc= ++Pascal Joined RejectNegative ++Set the Pascal compiler invoked by automake ++ ++fbig-endian ++Pascal RejectNegative ++Tell GPC that the system is big-endian (for those targets where it can vary) ++ ++fborland-objects ++Pascal RejectNegative ++Choose Borland object model ++ ++fborland-pascal ++Pascal RejectNegative ++Try to emulate Borland Pascal, version 7.0 ++ ++fcase-value-checking ++Pascal ++Cause a runtime error if a `case' matches no branch (default in ISO Pascal modes) ++ ++fcidefine= ++Pascal Joined RejectNegative ++Define a case-insensitive macro ++ ++fclassic-pascal ++Pascal RejectNegative ++Reject anything besides ISO 7185 Pascal ++ ++fclassic-pascal-level-0 ++Pascal RejectNegative ++Reject conformant arrays and anything besides ISO 7185 Pascal ++ ++fcsdefine= ++Pascal Joined RejectNegative ++Define a case-sensitive macro ++ ++fcstrings-as-strings ++Pascal ++Treat CStrings as strings ++ ++fdebug-automake ++Pascal RejectNegative ++(For GPC developers.) Give additional information about the actions of automake ++ ++fdebug-gpi ++Pascal RejectNegative ++(For GPC developers.) Show what is written to and read from GPI files (huge output!) ++ ++fdebug-source ++Pascal ++Output the source while it is processed to standard error ++ ++fdebug-tree= ++Pascal Joined RejectNegative ++(For GPC developers.) Show the internal representation of a given tree node (name or address) ++ ++fdelphi ++Pascal RejectNegative ++Try to emulate Borland Pascal, version 7.0, with some Delphi extensions ++ ++fdelphi-comments ++Pascal ++Allow Delphi style `//' comments (default) ++ ++fdelphi-method-shadowing ++Pascal ++Redefining methods silently shadows old definition (default in `--delphi') ++ ++fdisable-debug-info ++Pascal RejectNegative ++Inhibit `-g' options (temporary work-around, this option may disappear in the future) ++ ++fdisable-default-paths ++Pascal RejectNegative ++Do not add a default path to the unit and object path ++ ++fdisable-keyword= ++Pascal Joined RejectNegative ++Disable a keyword, independently of dialect defaults ++ ++fdisable-predefined-identifier= ++Pascal Joined RejectNegative ++Disable a predefined identifier, independently of dialect defaults ++ ++fdouble-quoted-strings ++Pascal ++Allow strings enclosed in \"\" (default) ++ ++fenable-keyword= ++Pascal Joined RejectNegative ++Enable a keyword, independently of dialect defaults ++ ++fenable-predefined-identifier= ++Pascal Joined RejectNegative ++Enable a predefined identifier, independently of dialect defaults ++ ++fexact-compare-strings ++Pascal ++Do not blank-pad strings for comparisons ++ ++fexecutable-file-name ++Pascal RejectNegative ++Derive output file name from main source file name ++ ++fexecutable-file-name= ++Pascal Joined RejectNegative ++Specify the name of the output file ++ ++fexecutable-path ++Pascal ++`--no-executable-path': Create the executable file in the directory where the main source is (default) ++ ++fexecutable-path= ++Pascal Joined RejectNegative ++Path where to create the executable file ++ ++fextended-pascal ++Pascal RejectNegative ++Reject anything besides ISO 10206 Extended Pascal ++ ++fextended-syntax ++Pascal ++same as `--ignore-function-results --pointer-arithmetic --cstrings-as-strings -Wno-absolute' (same as `{$X+}') ++ ++ffield-widths ++Pascal ++Use default field widths in write statements ++ ++ffield-widths= ++Pascal Joined RejectNegative ++Specify as a colon-separated list the default field widths in write statements for Integer, Real, Boolean, LongInt, LongReal ++ ++fgnu-objects ++Pascal RejectNegative ++Reset object model to default state ++ ++fgnu-pascal ++Pascal RejectNegative ++Undo the effect of previous dialect options, allow all features again ++ ++fgpc-main= ++Pascal Joined RejectNegative ++External name for the program's entry point (default: `main') ++ ++fgpi-destination-path= ++Pascal Joined RejectNegative ++(Internal switch used for automake) ++ ++fignore-function-results ++Pascal ++Do not complain when a function is called like a procedure ++ ++fignore-garbage-after-dot ++Pascal ++Ignore anything after the terminating `.' (default in `--borland-pascal') ++ ++fignore-packed ++Pascal ++Ignore `packed' in the source code (default in `--borland-pascal') ++ ++fimplementation-only ++Pascal RejectNegative ++Do not produce a GPI file; only compile the implementation part ++ ++fimplicit-result ++Pascal ++Enable implicit `Result' for functions (default only in `--delphi') ++ ++finit-modules= ++Pascal Joined RejectNegative ++Initialize the named modules in addition to those imported regularly; kind of a kludge ++ ++finterface-only ++Pascal RejectNegative ++Compile only the interface part of a unit/module and exit (creates `.gpi' file, no `.o' file) ++ ++fio-checking ++Pascal ++Check I/O operations automatically (same as `{$I+}') (default) ++ ++fiso-goto-restrictions ++Pascal ++Do not allow jumps into structured instructions (default) ++ ++flittle-endian ++Pascal RejectNegative ++Tell GPC that the system is little-endian (for those targets where it can vary) ++ ++flongjmp-all-nonlocal-labels ++Pascal ++Use `longjmp' for all nonlocal labels (default for Darwin/PPC) ++ ++fmac-objects ++Pascal RejectNegative ++Choose Mac object model ++ ++fmac-pascal ++Pascal RejectNegative ++Support (some features of) traditional Macintosh Pascal compilers ++ ++fmacros ++Pascal ++Expand macros (default except with `--ucsd-pascal', `--borland-pascal' or `--delphi') ++ ++fmaximum-field-alignment= ++Pascal Joined RejectNegative ++Set the maximum field alignment in bits if `pack-struct' is in effect ++ ++fmethods-always-virtual ++Pascal ++Make all methods virtual (default in `--mac-pascal') ++ ++fmixed-comments ++Pascal ++Allow comments like `{ ... *)' as required in ISO Pascal (default in ISO 7185/10206 Pascal mode) ++ ++fnested-comments ++Pascal ++Allow nested comments like `{ { } }' and `(* (* *) *)' ++ ++fnonlocal-exit ++Pascal ++Allow non-local `Exit' statements (default in `--ucsd-pascal' and `--mac-pascal') ++ ++fobject-checking ++Pascal ++Check for valid objects on virtual method calls (default) ++ ++fobject-destination-path ++Pascal ++`--no-object-destination-path': Create additional object files (e.g. of C files, not Pascal units) in the current directory (default) ++ ++fobject-destination-path= ++Pascal Joined RejectNegative ++Path where to create additional object files (e.g. of C files, not Pascal units) ++ ++fobject-pascal ++Pascal RejectNegative ++Reject anything besides (the implemented parts of) ANSI draft Object Pascal ++ ++fobject-path ++Pascal ++`--no-object-path': Forget about directories where to look for additional object (and source) files ++ ++fobject-path= ++Pascal Joined RejectNegative ++Directories where to look for additional object (and source) files ++ ++fobjects-are-references ++Pascal ++Turn objects into references (default in `--mac-pascal') ++ ++fobjects-require-override ++Pascal ++Require override directive for objects (default in `--mac-pascal') ++ ++fooe-objects ++Pascal RejectNegative ++Choose OOE object model ++ ++fpascal-sc ++Pascal RejectNegative ++Be strict about the implemented Pascal-SC extensions ++ ++fpedantic ++Pascal ++Reject everything not allowed in some dialect, e.g. redefinition of its keywords ++ ++fpointer-arithmetic ++Pascal ++Enable pointer arithmetic ++ ++fpointer-checking ++Pascal ++Validate pointers before dereferencing ++ ++fpointer-checking-user-defined ++Pascal ++Use user-defined procedure for validating pointers ++ ++fpreprocessed ++Pascal RejectNegative ++Treat the input file as already preprocessed ++ ++fprint-needed-options ++Pascal RejectNegative ++Print the needed options ++ ++fprogress-bar ++Pascal ++Output number of processed lines while compiling ++ ++fprogress-messages ++Pascal ++Output source file names and line numbers while compiling ++ ++fpropagate-units ++Pascal ++Automalically export all imported identifiers from a unit ++ ++frange-and-object-checking ++Pascal ++Same as `--range-checking --object-checking', same as `{$R+}' ++ ++frange-checking ++Pascal ++Do automatic range checks (default) ++ ++fread-base-specifier ++Pascal ++In read statements, allow input base specifier `n#' (default) ++ ++fread-hex ++Pascal ++In read statements, allow hexadecimal input with `$' (default) ++ ++fread-white-space ++Pascal ++In read statements, require whitespace after numbers ++ ++fsetlimit= ++Pascal Joined RejectNegative ++Define the range for `set of Integer' etc. ++ ++fshort-circuit ++Pascal ++Guarantee short-circuit Boolean evaluation (default; same as `{$B-}') ++ ++fstack-checking ++Pascal ++Enable stack checking (same as `{$S+}') ++ ++fstandard-pascal ++Pascal RejectNegative ++Synonym for `--classic-pascal' ++ ++fstandard-pascal-level-0 ++Pascal RejectNegative ++Synonym for `--classic-pascal-level-0' ++ ++fsun-pascal ++Pascal RejectNegative ++Support (a few features of) Sun Pascal ++ ++ftransparent-file-names ++Pascal ++Derive external file names from variable names ++ ++ftruncate-strings ++Pascal ++Truncate strings being assigned to other strings of too short capacity ++ ++ftyped-address ++Pascal ++Make the result of the address operator typed (same as `{$T+}', default) ++ ++fucsd-pascal ++Pascal RejectNegative ++Try to emulate UCSD Pascal ++ ++funit-destination-path ++Pascal ++`--no-unit-destination-path': Create object and GPI files of Pascal units in the current directory (default) ++ ++funit-destination-path= ++Pascal Joined RejectNegative ++Path where to create object and GPI files of Pascal units ++ ++funit-path ++Pascal ++`--no-unit-path': Forget about directories where to look for unit/module sources ++ ++funit-path= ++Pascal Joined RejectNegative ++Directories where to look for unit/module sources ++ ++fuses= ++Pascal Joined RejectNegative ++Add an implicit `uses' clause ++ ++fvax-pascal ++Pascal RejectNegative ++Support (a few features of) VAX Pascal ++ ++fwrite-capital-exponent ++Pascal ++Write real exponents with a capital `E' ++ ++fwrite-clip-strings ++Pascal ++In write statements, truncate strings exceeding their field width (`Write (SomeLongString : 3)') ++ ++fwrite-real-blank ++Pascal ++Output a blank in front of positive reals in exponential form (default) ++ ++idirafter ++Pascal Joined Separate ++`-idirafter ' Add to the end of the system include path ++ ++imacros ++Pascal Joined Separate ++-imacros Accept definition of macros in ++ ++include ++Pascal Joined Separate ++-include Include the contents of before other files ++ ++iprefix ++Pascal Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isystem ++Pascal Joined Separate ++-isystem Add to the start of the system include path ++ ++iwithprefix ++Pascal Joined Separate ++-iwithprefix Add to the end of the system include path ++ ++iwithprefixbefore ++Pascal Joined Separate ++-iwithprefixbefore Add to the end of the main include path ++ ++nostdinc ++Pascal ++Do not search standard system include directories (those specified with -isystem will still be used) ++ ++remap ++Pascal ++Remap file names when including files ++ ++v ++Pascal ++Enable verbose output ++ ++; This comment is to ensure we retain the blank line above. +diff -urN gcc.orig/p/lang-specs.h gcc/p/lang-specs.h +--- gcc.orig/p/lang-specs.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/p/lang-specs.h 2006-03-25 02:53:09.000000000 +0100 +@@ -0,0 +1,46 @@ ++/*Definitions for specs for Pascal. ++ ++ Copyright (C) 1997-2006 Free Software Foundation, Inc. ++ ++ Authors: Peter Gerwinski ++ Frank Heckenbach ++ ++ This file is part of GNU Pascal. ++ ++ GNU Pascal 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, or (at your ++ option) any later version. ++ ++ GNU Pascal 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 GNU Pascal; see the file COPYING. If not, write to the ++ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include "p/p-version.h" ++ ++/* This is the contribution to the `default_compilers' array for Pascal. */ ++ {".pas", "@Pascal", 0}, ++ {".p", "@Pascal", 0}, ++ {".pp", "@Pascal", 0}, ++ {".dpr", "@Pascal", 0}, ++ {"@Pascal", ++ "gpc1 %{E:-E %{!M:%(cpp_unique_options) %1 %{m*} %{f*&W*&pedantic*} %{w} " ++ "%(cpp_debug_options) %{O*}}}" ++ "%{M:%(cpp_unique_options) %1 %{m*} %{f*&W*&pedantic*} %{w}" ++ "%(cpp_debug_options) %{O*}}" ++ "%{!E:%{!M:%{save-temps:-E %(cpp_unique_options) %1 %{m*} " ++ "%{f*&W*&pedantic*} %{w} %{O*} -o %b.i \n\ ++ gpc1 -fpreprocessed %b.i} %{!save-temps:%(cpp_unique_options)} \ ++ %(cc1_options)\ ++ %{!famtmpfile*:%eInternal GPC problem: internal option `--amtmpfile' not given}\ ++ %{!fsyntax-only:%(invoke_as)}}}", 0}, ++ {"@Preprocessed-Pascal", ++ "%{!M:%{!MM:%{!E:gpc1 -fpreprocessed %i %(cc1_options)\ ++ %{!famtmpfile*:%eInternal GPC problem: internal option `--amtmpfile' not given}\ ++ %{!fsyntax-only:%(invoke_as)} }}}", 0}, +diff -urN gcc.orig/p/p-version.h gcc/p/p-version.h +--- gcc.orig/p/p-version.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/p/p-version.h 2006-03-25 02:53:09.000000000 +0100 +@@ -0,0 +1,7 @@ ++/* Generated automatically by the Makefile. ++ DO NOT CHANGE THIS FILE MANUALLY! */ ++ ++#define GPC_MAJOR "2" ++#define GPC_MINOR "1" ++#define GPC_VERSION_STRING "20060325" ++#define GPC_RELEASE_STRING GPC_VERSION_STRING diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-ssp-default.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-ssp-default.dpatch new file mode 100644 index 0000000000..6ba9893680 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-ssp-default.dpatch @@ -0,0 +1,209 @@ +#! /bin/sh -e + +# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++. +# DP: Build libgcc using -fno-stack-protector. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/doc/invoke.texi.orig 2007-11-29 11:21:52.863409623 +0000 ++++ gcc/doc/invoke.texi 2007-11-29 11:22:35.014045455 +0000 +@@ -6553,6 +6553,10 @@ + when a function is entered and then checked when the function exits. + If a guard check fails, an error message is printed and the program exits. + ++NOTE: In Ubuntu 6.10 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-no-fstack-protector} ++nor @option{-nostdlib} are found. ++ + @item -fstack-protector-all + @opindex fstack-protector-all + Like @option{-fstack-protector} except that all functions are protected. +--- gcc/objc/lang-specs.h.orig 2007-11-29 11:21:52.863409623 +0000 ++++ gcc/objc/lang-specs.h 2007-11-29 11:22:35.014045455 +0000 +@@ -30,13 +30,13 @@ + %{traditional|ftraditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ +- cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ ++ cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {".mi", "@objc-cpp-output", 0, 0, 0}, + {"@objc-cpp-output", +- "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objective-c-header", + "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ +@@ -45,10 +45,10 @@ + %{traditional|ftraditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ +- cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, +--- gcc/objcp/lang-specs.h.orig 2007-11-29 11:21:52.863409623 +0000 ++++ gcc/objcp/lang-specs.h 2007-11-29 11:22:35.014045455 +0000 +@@ -36,7 +36,7 @@ + %(cpp_options) %2 -o %{save-temps:%b.mii} %{!save-temps:%g.mii} \n}\ + cc1objplus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.mii} %{!save-temps:%g.mii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@objective-c++", +@@ -46,15 +46,15 @@ + %(cpp_options) %2 -o %{save-temps:%b.mii} %{!save-temps:%g.mii} \n}\ + cc1objplus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.mii} %{!save-temps:%g.mii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".mii", "@objective-c++-cpp-output", 0, 0, 0}, + {"@objective-c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- gcc/cp/lang-specs.h.orig 2007-11-29 11:21:52.863409623 +0000 ++++ gcc/cp/lang-specs.h 2007-11-29 11:22:35.014045455 +0000 +@@ -47,7 +47,7 @@ + %(cpp_options) %2 -o %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\ + cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:-o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@c++", +@@ -57,11 +57,11 @@ + %(cpp_options) %2 -o %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\ + cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".ii", "@c++-cpp-output", 0, 0, 0}, + {"@c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1plus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- gcc/Makefile.in.orig 2007-11-29 11:21:52.863409623 +0000 ++++ gcc/Makefile.in 2007-11-29 11:23:23.254773156 +0000 +@@ -559,6 +559,7 @@ + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) \ + -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \ ++ -fno-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +@@ -572,6 +573,7 @@ + CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ + -finhibit-size-directive -fno-inline-functions -fno-exceptions \ + -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ ++ -fno-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional sources to handle exceptions; overridden by targets as needed. +--- gcc/gcc.c.orig 2007-11-29 11:21:52.873409773 +0000 ++++ gcc/gcc.c 2007-11-29 11:22:35.024045606 +0000 +@@ -701,6 +701,10 @@ + #endif + #endif + ++#ifndef SSP_DEFAULT_SPEC ++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!nostdlib:-fstack-protector}}" ++#endif ++ + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #define LINK_PIE_SPEC "%{pie:-pie} " +@@ -754,6 +758,7 @@ + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; ++static const char *ssp_default_spec = SSP_DEFAULT_SPEC; + static const char *asm_spec = ASM_SPEC; + static const char *asm_final_spec = ASM_FINAL_SPEC; + static const char *link_spec = LINK_SPEC; +@@ -827,6 +832,7 @@ + %{--help=*:--help=%(VALUE)}\ + %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ + %{fsyntax-only:-o %j} %{-param*}\ ++ %(ssp_default)\ + %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\ + %{coverage:-fprofile-arcs -ftest-coverage}"; + +@@ -988,15 +994,15 @@ + %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i} \n\ + cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} \ +- %(cc1_options)}\ ++ %(cc1_options) %(ssp_default)}\ + %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\ + %{!fsyntax-only:%(invoke_as)}} \ + %{combine:\ + %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i}}\ + %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}\ + %{!fsyntax-only:%(invoke_as)}}}}}}", 0, 1, 1}, + {"-", + "%{!E:%e-E or -x required when input is from standard input}\ +@@ -1019,7 +1025,7 @@ + %W{o*:--output-pch=%*}%V}}}}}}", 0, 0, 0}, + {".i", "@cpp-output", 0, 1, 0}, + {"@cpp-output", +- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0}, ++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0}, + {".s", "@assembler", 0, 1, 0}, + {"@assembler", + "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 1, 0}, +@@ -1579,6 +1585,7 @@ + INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec), + INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec), + INIT_STATIC_SPEC ("link_ssp", &link_ssp_spec), ++ INIT_STATIC_SPEC ("ssp_default", &ssp_default_spec), + INIT_STATIC_SPEC ("endfile", &endfile_spec), + INIT_STATIC_SPEC ("link", &link_spec), + INIT_STATIC_SPEC ("lib", &lib_spec), diff --git a/recipes/gcc/gcc-4.3.4/debian/gcc-textdomain.dpatch b/recipes/gcc/gcc-4.3.4/debian/gcc-textdomain.dpatch new file mode 100644 index 0000000000..6315a19de5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gcc-textdomain.dpatch @@ -0,0 +1,103 @@ +#! /bin/sh -e + +# DP: Set gettext's domain and textdomain to the versioned package name. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/Makefile.in.orig 2005-09-04 23:32:54.003440040 +0000 ++++ gcc/Makefile.in 2005-09-04 23:40:10.954013456 +0000 +@@ -4565,8 +4565,8 @@ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.3.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.3.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- gcc/intl.c.orig 2005-09-04 23:32:54.006439584 +0000 ++++ gcc/intl.c 2005-09-04 23:36:37.933397512 +0000 +@@ -51,8 +51,8 @@ + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-4.3", LOCALEDIR); ++ (void) textdomain ("gcc-4.3"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- libcpp/Makefile.in.orig 2005-09-04 23:32:54.009439128 +0000 ++++ libcpp/Makefile.in 2005-09-04 23:33:24.607787472 +0000 +@@ -47,6 +47,7 @@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -4.3 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -66,6 +67,7 @@ + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++CPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + + ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) + +@@ -156,8 +158,8 @@ + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: +--- libcpp/system.h.orig 2005-09-04 23:32:54.006439584 +0000 ++++ libcpp/system.h 2005-09-04 23:33:24.606787624 +0000 +@@ -260,7 +260,7 @@ + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +--- libcpp/init.c.orig 2005-09-04 23:32:54.008439280 +0000 ++++ libcpp/init.c 2005-09-04 23:33:24.607787472 +0000 +@@ -122,7 +122,7 @@ + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } diff --git a/recipes/gcc/gcc-4.3.4/debian/gdc-fix-build-kbsd-gnu.dpatch b/recipes/gcc/gcc-4.3.4/debian/gdc-fix-build-kbsd-gnu.dpatch new file mode 100644 index 0000000000..9878d8abfb --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gdc-fix-build-kbsd-gnu.dpatch @@ -0,0 +1,87 @@ +#! /bin/sh -e + +# gdc-fix-build-kfreebsd.dpatch by Arthur Loiret +# DP: Fix gdc build on k*bsd*-gnu, update configure and target-ver-syms.sh +# DP: to build k*bsd*-gnu architectures as a freebsd + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/d/phobos/configure 2007-09-03 01:23:59.000000000 +0200 ++++ gcc/d/phobos/configure 2007-09-03 01:27:18.000000000 +0200 +@@ -4599,7 +4599,7 @@ + case "$target_os" in + darwin6*) DCFG_LONG_DOUBLE_FUNCS=config/noldfuncs ;; + darwin*) DCFG_LONG_DOUBLE_FUNCS=config/ldfuncs-darwin ;; +- linux*) ++ linux*|k*bsd*-gnu) + case "$target_cpu" in + powerpc*) + DCFG_LONG_DOUBLE_FUNCS=config/ldfuncs-ppclinux +@@ -5687,7 +5687,7 @@ + + case "$d_target_os" in + # use fpmath on Linux +- linux*) d_have_fpsb='' ++ linux*|k*bsd*-gnu) d_have_fpsb='' + ;; + esac + +@@ -7014,7 +7014,7 @@ + rm -f conftest.d conftest.$ac_objext + + case "$d_target_os" in +- aix*|*bsd*|cygwin*|darwin*|linux*|skyos*|solaris*|sysv*) d_have_unix=1 ;; ++ aix*|*bsd*|cygwin*|darwin*|linux*|k*bsd*-gnu|skyos*|solaris*|sysv*) d_have_unix=1 ;; + esac + + DCFG_CBRIDGE_STDIO= +@@ -7027,7 +7027,7 @@ + d_sem_impl="mach" + d_have_loader=1 + ;; +- freebsd*) ++ freebsd*|k*bsd*-gnu) + d_have_loader=1 + D_EXTRA_OBJS="$D_EXTRA_OBJS gcc/cbridge_stdio.o" + DCFG_CBRIDGE_STDIO=GNU_CBridge_Stdio +@@ -9046,7 +9046,7 @@ + d_gc_stack=GC_Use_Stack_Fixed + d_gc_data="$d_gc_data GC_Use_Data_Dyld" + ;; +- freebsd*) D_GC_MODULES="$D_GC_MODULES internal/gc/gc_freebsd.o" ++ freebsd*|k*bsd*-gnu) D_GC_MODULES="$D_GC_MODULES internal/gc/gc_freebsd.o" + d_gc_stack=GC_Use_Stack_FreeBSD + d_gc_data="$d_gc_data GC_Use_Data_Fixed" + ;; +--- gcc/d/target-ver-syms.sh 2007-09-03 02:14:56.000000000 +0200 ++++ gcc/d/target-ver-syms.sh 2007-09-03 02:52:43.000000000 +0200 +@@ -30,6 +30,7 @@ + darwin*) d_os_versym=darwin ; d_unix=1 ;; + elf*) ;; + freebsd*) d_os_versym=freebsd ; d_unix=1 ;; ++k*bsd*-gnu) d_os_versym=freebsd ; d_unix=1;; + linux*) d_os_versym=linux ; d_unix=1 ;; + mingw32*) d_os_versym=Win32; d_windows=1 ;; + pe*) case "$target" in diff --git a/recipes/gcc/gcc-4.3.4/debian/gpc-4.1.dpatch b/recipes/gcc/gcc-4.3.4/debian/gpc-4.1.dpatch new file mode 100644 index 0000000000..fcd499115f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gpc-4.1.dpatch @@ -0,0 +1,28 @@ +#! /bin/sh -e + +# DP: GPC updates for GCC 4.1.2 + +dir=gcc/ +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3/gcc" + dir="$3/gcc/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Not yet available for GCC-4.3 diff --git a/recipes/gcc/gcc-4.3.4/debian/gpc-gcc-4.x.dpatch b/recipes/gcc/gcc-4.3.4/debian/gpc-gcc-4.x.dpatch new file mode 100644 index 0000000000..9ddfced70d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gpc-gcc-4.x.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e + +# DP: The gpc patch from the gpc tarball. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + #pdir="-d $3/gcc" + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +gpc_gcc_patch=$pdir/p/diffs/gcc-4.1.diff +gpc_gcc_patch=debian/patches/gpc-gcc-4.1.diff + +case "$1" in + -patch) + echo Using patch file ${gpc_gcc_patch} + patch $pdir -f -p0 < ${gpc_gcc_patch} + ;; + -unpatch) + # get the patch from the gpc source + echo Using patch file ${gpc_gcc_patch} + patch $pdir -f -R -p0 < ${gpc_gcc_patch} + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 diff --git a/recipes/gcc/gcc-4.3.4/debian/gpc-names.dpatch b/recipes/gcc/gcc-4.3.4/debian/gpc-names.dpatch new file mode 100644 index 0000000000..f494383ca3 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/gpc-names.dpatch @@ -0,0 +1,117 @@ +#! /bin/sh -e + +# DP: versioned gpc names + +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/p/doc/en/gpc.texi.orig 2007-08-27 00:21:02.340767891 +0200 ++++ gcc/p/doc/en/gpc.texi 2007-08-27 00:21:29.921183935 +0200 +@@ -23,11 +23,11 @@ + + @dircategory GNU programming tools + @direntry +-* GPC: (gpc). The GNU Pascal Compiler. ++* GPC-4.1: (gpc-4.1). The GNU Pascal Compiler (v2.1, based on GCC 4.1). + @end direntry + @dircategory Individual utilities + @direntry +-* GPC: (gpc)Invoking GPC. The GNU Pascal Compiler. ++* GPC-4.1: (gpc-4.1)Invoking GPC. The GNU Pascal Compiler (v2.1, based on GCC 4.1). + @end direntry + + @c For FSF printing, turn on finalout (to get rid of the black +--- gcc/p/Make-lang.in.orig 2007-08-27 00:21:02.340767891 +0200 ++++ gcc/p/Make-lang.in 2007-08-27 00:23:19.412835592 +0200 +@@ -799,42 +799,43 @@ + pascal.start.encap: + pascal.rest.encap: pascal.rts pascal.utils + +-pascal.info: $(srcdir)/p/doc/info/gpc.info \ +- $(srcdir)/p/doc/info/gpcs.info \ +- $(srcdir)/p/doc/info/gpcs-de.info \ +- $(srcdir)/p/doc/info/gpc-hr.info \ +- $(srcdir)/p/doc/info/gpcs-hr.info \ +- $(srcdir)/p/doc/info/gpc-es.info \ +- $(srcdir)/p/doc/info/gpcs-es.info ++iv=-4.1 ++pascal.info: $(srcdir)/p/doc/info/gpc$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-de$(iv).info \ ++ $(srcdir)/p/doc/info/gpc-hr$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-hr$(iv).info \ ++ $(srcdir)/p/doc/info/gpc-es$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-es$(iv).info + pascal.dvi: gpc.dvi + +-$(srcdir)/p/doc/info/gpc.info: $(GPC_TEXI_EN) ++$(srcdir)/p/doc/info/gpc$(iv).info: $(GPC_TEXI_EN) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_EN) -o $(srcdir)/p/doc/info/gpc.info gpc.texi ++ $(MAKEINFO_EN) -o $(srcdir)/p/doc/info/gpc$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs.info: $(GPC_TEXI_EN) ++$(srcdir)/p/doc/info/gpcs$(iv).info: $(GPC_TEXI_EN) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_EN) --no-split -o $(srcdir)/p/doc/info/gpcs.info gpcs.texi ++ $(MAKEINFO_EN) --no-split -o $(srcdir)/p/doc/info/gpcs$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpcs-de.info: $(GPC_TEXI_DE) ++$(srcdir)/p/doc/info/gpcs-de$(iv).info: $(GPC_TEXI_DE) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_DE) --no-split -o $(srcdir)/p/doc/info/gpcs-de.info gpcs.texi ++ $(MAKEINFO_DE) --no-split -o $(srcdir)/p/doc/info/gpcs-de$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpc-hr.info: $(GPC_TEXI_HR) ++$(srcdir)/p/doc/info/gpc-hr$(iv).info: $(GPC_TEXI_HR) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_HR) -o $(srcdir)/p/doc/info/gpc-hr.info gpc.texi ++ $(MAKEINFO_HR) -o $(srcdir)/p/doc/info/gpc-hr$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs-hr.info: $(GPC_TEXI_HR) ++$(srcdir)/p/doc/info/gpcs-hr$(iv).info: $(GPC_TEXI_HR) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_HR) --no-split -o $(srcdir)/p/doc/info/gpcs-hr.info gpcs.texi ++ $(MAKEINFO_HR) --no-split -o $(srcdir)/p/doc/info/gpcs-hr$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpc-es.info: $(GPC_TEXI_ES) ++$(srcdir)/p/doc/info/gpc-es$(iv).info: $(GPC_TEXI_ES) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_ES) -o $(srcdir)/p/doc/info/gpc-es.info gpc.texi ++ $(MAKEINFO_ES) -o $(srcdir)/p/doc/info/gpc-es$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs-es.info: $(GPC_TEXI_ES) ++$(srcdir)/p/doc/info/gpcs-es$(iv).info: $(GPC_TEXI_ES) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_ES) --no-split -o $(srcdir)/p/doc/info/gpcs-es.info gpcs.texi ++ $(MAKEINFO_ES) --no-split -o $(srcdir)/p/doc/info/gpcs-es$(iv).info gpcs.texi + + gpc.dvi: $(GPC_TEXI_EN) + TEXINPUTS=$(srcdir)/p/doc:$(srcdir)/p/doc/images:$$TEXINPUTS \ +@@ -1023,11 +1024,11 @@ + fi + + pascal.install-info: pascal.install-info-man-dirs pascal.info +- rm -f $(DESTDIR)$(infodir)/gpc.info* $(DESTDIR)$(infodir)/gpcs.info* $(DESTDIR)$(infodir)/gpcs-de.info* $(DESTDIR)$(infodir)/gpcs-hr.info* $(DESTDIR)$(infodir)/gpcs-es.info* +- for f in `cd $(srcdir)/p/doc/info && echo gpc.info* gpcs*.info*`; do \ ++ rm -f $(DESTDIR)$(infodir)/gpc*.info* $(DESTDIR)$(infodir)/gpcs*.info* $(DESTDIR)$(infodir)/gpcs-de*.info* $(DESTDIR)$(infodir)/gpcs-hr*.info* $(DESTDIR)$(infodir)/gpcs-es*.info* ++ for f in `cd $(srcdir)/p/doc/info && echo gpc$(iv).info* gpcs*.info*`; do \ + $(INSTALL_DATA) $(srcdir)/p/doc/info/$$f $(DESTDIR)$(infodir)/$$f || exit 1; \ + done +- chmod a-x $(DESTDIR)$(infodir)/gpc.info* $(DESTDIR)$(infodir)/gpcs.info* $(DESTDIR)$(infodir)/gpcs-de.info* $(DESTDIR)$(infodir)/gpcs-hr.info* $(DESTDIR)$(infodir)/gpcs-es.info* ++ chmod a-x $(DESTDIR)$(infodir)/gpc*.info* $(DESTDIR)$(infodir)/gpcs*.info* $(DESTDIR)$(infodir)/gpcs-de*.info* $(DESTDIR)$(infodir)/gpcs-hr*.info* $(DESTDIR)$(infodir)/gpcs-es*.info* + + pascal.install-man: pascal.install-info-man-dirs $(srcdir)/p/doc/en/gpc.1 $(srcdir)/p/doc/generated/gpc-run.1 + -if [ -f gpc1$(exeext) ]; then \ diff --git a/recipes/gcc/gcc-4.3.4/debian/hurd-changes.dpatch b/recipes/gcc/gcc-4.3.4/debian/hurd-changes.dpatch new file mode 100644 index 0000000000..1ccb5ca269 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/hurd-changes.dpatch @@ -0,0 +1,72 @@ +#! /bin/sh -e + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# DP: Traditional GNU systems don't have a /usr directory. However, Debian +# DP: systems do, and we support both having a /usr -> . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. +# DP: +# DP: Define MAXPATHLEN and PATH_MAX. + +--- gcc/config/gnu.h.orig 2004-07-05 21:49:20.000000000 +0200 ++++ gcc/config/gnu.h 2006-12-10 12:28:45.000000000 +0100 +@@ -6,7 +6,8 @@ + + /* Standard include directory. In GNU, "/usr" is a four-letter word. */ + #undef STANDARD_INCLUDE_DIR +-#define STANDARD_INCLUDE_DIR "/include" ++/* Overriden for Debian GNU/Hurd. */ ++#define STANDARD_INCLUDE_DIR "/usr/include" + + /* The system headers under GNU are C++-aware. */ + #define NO_IMPLICIT_EXTERN_C +--- gcc/config/t-gnu.orig 2004-01-10 07:40:24.000000000 +0100 ++++ gcc/config/t-gnu 2006-12-10 12:28:45.000000000 +0100 +@@ -1,2 +1,2 @@ + # In GNU, "/usr" is a four-letter word. +-NATIVE_SYSTEM_HEADER_DIR = /include ++NATIVE_SYSTEM_HEADER_DIR = /usr/include +--- gcc/tlink.c.orig 2005-06-25 04:02:01.000000000 +0200 ++++ gcc/tlink.c 2006-12-10 12:28:45.000000000 +0100 +@@ -34,6 +34,10 @@ + + #define MAX_ITERATIONS 17 + ++#ifndef MAXPATHLEN ++#define MAXPATHLEN 4096 ++#endif ++ + /* Defined in the automatically-generated underscore.c. */ + extern int prepends_underscore; + +--- boehm-gc/dyn_load.c.orig 2007-08-13 09:10:48.215678000 +0200 ++++ boehm-gc/dyn_load.c 2007-08-13 09:11:09.743969000 +0200 +@@ -26,7 +26,7 @@ + * None of this is safe with dlclose and incremental collection. + * But then not much of anything is safe in the presence of dlclose. + */ +-#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE) ++#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) && !defined(_GNU_SOURCE) + /* Can't test LINUX, since this must be define before other includes */ + # define _GNU_SOURCE + #endif diff --git a/recipes/gcc/gcc-4.3.4/debian/ignore-comp-fail.dpatch b/recipes/gcc/gcc-4.3.4/debian/ignore-comp-fail.dpatch new file mode 100644 index 0000000000..4609a82120 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ignore-comp-fail.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Ignore the bootstrap comparision failure + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/Makefile.in~ 2004-02-06 08:03:12.000000000 +0100 ++++ gcc/Makefile.in 2004-02-14 10:27:19.000000000 +0100 +@@ -3567,7 +3567,9 @@ + if [ -f .bad_compare ]; then \ + echo "Bootstrap comparison failure!"; \ + cat .bad_compare; \ +- exit 1; \ ++ echo ""; \ ++ echo "Ignore the comparision failure!"; \ ++ true; \ + else \ + case "$@" in \ + *-lean ) rm -rf stage$$stage ;; \ diff --git a/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu-ada.dpatch b/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu-ada.dpatch new file mode 100644 index 0000000000..e159ec3fd0 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu-ada.dpatch @@ -0,0 +1,231 @@ +#! /bin/sh -e + +# Description: Ada support for GNU/k*BSD +# Author: Aurelien Jarno +# Status: submitted. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- src/gcc/ada/Makefile.in.orig 2008-02-09 13:03:14 +0100 ++++ src/gcc/ada/Makefile.in 2008-02-09 13:03:33 +0100 +@@ -866,6 +866,8 @@ + s-osinte.adstm_gmtoff; + + /* All other platforms: Treat all time values in GMT */ +--- src/gcc/ada/link.c.orig 2008-02-10 11:59:07 +0100 ++++ src/gcc/ada/link.c 2008-02-10 11:59:14 +0100 +@@ -153,7 +153,7 @@ + unsigned char __gnat_using_gnu_linker = 1; + const char *__gnat_object_library_extension = ".a"; + +-#elif defined (linux) ++#elif defined (linux) || defined(__GLIBC__) + const char *__gnat_object_file_option = ""; + const char *__gnat_run_path_option = ""; + char __gnat_shared_libgnat_default = SHARED; diff --git a/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu.dpatch b/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu.dpatch new file mode 100644 index 0000000000..5c9bb0e708 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/kbsd-gnu.dpatch @@ -0,0 +1,99 @@ +#! /bin/sh -e + +# DP: GNU/k*BSD support +# Author: Robert Millan +# Status: Not yet submitted + + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +diff -Nurd gcc-4.2.orig/gcc/config/i386/kfreebsd-gnu.h gcc-4.2/gcc/config/i386/kfreebsd-gnu.h +--- gcc-4.2.orig/gcc/config/i386/kfreebsd-gnu.h 2006-01-18 22:46:30.000000000 +0100 ++++ gcc-4.2/gcc/config/i386/kfreebsd-gnu.h 2007-05-23 05:34:47.000000000 +0200 +@@ -20,7 +20,29 @@ + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + ++#ifdef GLIBC_DYNAMIC_LINKER32 ++#undef GLIBC_DYNAMIC_LINKER32 ++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" ++#endif ++ ++#ifdef GLIBC_DYNAMIC_LINKER64 ++#undef GLIBC_DYNAMIC_LINKER64 ++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" ++#endif ++ + #undef LINK_EMULATION + #define LINK_EMULATION "elf_i386_fbsd" ++ ++#ifdef LINK_EMULATION32 ++#undef LINK_EMULATION32 ++#define LINK_EMULATION32 LINK_EMULATION ++#endif ++ ++#ifdef LINK_EMULATION64 ++#undef LINK_EMULATION64 ++#define LINK_EMULATION64 "elf_x86_64_fbsd" ++#endif ++ + #undef REG_NAME + #define REG_NAME(reg) sc_ ## reg ++ +diff -Nurd gcc-4.2.orig/gcc/config/i386/linux64.h gcc-4.2/gcc/config/i386/linux64.h +--- gcc-4.2.orig/gcc/config/i386/linux64.h 2007-05-22 22:25:11.000000000 +0200 ++++ gcc-4.2/gcc/config/i386/linux64.h 2007-05-23 05:39:11.000000000 +0200 +@@ -53,8 +53,11 @@ + When the -shared link option is used a final link is not being + done. */ + ++/* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */ + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" ++#define LINK_EMULATION32 "elf_i386" ++#define LINK_EMULATION64 "elf_x86_64" + + #if TARGET_64BIT_DEFAULT + #define SPEC_32 "m32" +@@ -65,7 +68,7 @@ + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ ++#define LINK_SPEC "%{" SPEC_64 ":-m " LINK_EMULATION64 "} %{" SPEC_32 ":-m " LINK_EMULATION32 "} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +diff -Nurd gcc-4.2.orig/gcc/config.gcc gcc-4.2/gcc/config.gcc +--- gcc-4.2.orig/gcc/config.gcc 2007-02-03 10:03:58.000000000 +0100 ++++ gcc-4.2/gcc/config.gcc 2007-05-23 05:37:10.000000000 +0200 +@@ -1102,7 +1102,7 @@ + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ + i386/x86-64.h i386/linux64.h" + case ${target} in +- x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; ++ x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; + x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; + esac + tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm t-dfprules" diff --git a/recipes/gcc/gcc-4.3.4/debian/libffi-configure.dpatch b/recipes/gcc/gcc-4.3.4/debian/libffi-configure.dpatch new file mode 100644 index 0000000000..8cc9d23550 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libffi-configure.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: Add --enable-libffi option to toplevel configure script + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- configure.ac.orig 2007-08-27 13:42:57.000000000 +0200 ++++ configure.ac 2007-09-01 15:57:19.664811738 +0200 +@@ -347,6 +347,16 @@ + ENABLE_LIBSSP=$enableval, + ENABLE_LIBSSP=yes) + ++AC_ARG_ENABLE(libffi, ++[ --enable-libffi build libffi directory], ++ENABLE_LIBFFI=$enableval, ++ENABLE_LIBFFI=yes) ++if test "${ENABLE_LIBFFI}" != "yes" ; then ++ noconfigdirs="$noconfigdirs target-libffi" ++else ++ libgcj="`echo $libgcj | sed 's/target-libffi *//'`" ++fi ++ + # Save it here so that, even in case of --enable-libgcj, if the Java + # front-end isn't enabled, we still get libgcj disabled. + libgcj_saved=$libgcj diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-armel-ldflags.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-armel-ldflags.dpatch new file mode 100644 index 0000000000..ecaddb61e0 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-armel-ldflags.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Adjust libjava extra_ldflags for armel. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/configure.ac~ 2008-01-14 15:45:26.698717101 +0100 ++++ libjava/configure.ac 2008-01-14 15:47:37.460689616 +0100 +@@ -807,7 +807,7 @@ + # Some of the ARM unwinder code is actually in libstdc++. We + # could in principle replicate it in libgcj, but it's better to + # have a dependency on libstdc++. +- extra_ldflags='-L$(here)/../libstdc++-v3/src/.libs -lstdc++' ++ extra_ldflags='-L$(here)/../libstdc++-v3/src -L$(here)/../libstdc++-v3/src/.libs -lstdc++' + LIBSTDCXXSPEC=-lstdc++ + LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++" + ;; diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-debuginfo.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-debuginfo.dpatch new file mode 100644 index 0000000000..942bbe1f91 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-debuginfo.dpatch @@ -0,0 +1,43 @@ +#! /bin/sh -e + +# DP: Fix java debuginfo breakage. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-03-06 Andrew Haley + + * jcf-parse.c (give_name_to_class): Call find_sourcefile fo find full + pathname of source file. + +Index: jcf-parse.c +=================================================================== +--- gcc/java/jcf-parse.c (revision 131324) ++++ gcc/java/jcf-parse.c (working copy) +@@ -1208,7 +1208,7 @@ + #ifdef USE_MAPPED_LOCATION + { + tree source_name = identifier_subst (class_name, "", '.', '/', ".java"); +- const char *sfname = IDENTIFIER_POINTER (source_name); ++ const char *sfname = find_sourcefile (IDENTIFIER_POINTER (source_name)); + linemap_add (line_table, LC_ENTER, false, sfname, 0); + input_location = linemap_line_start (line_table, 0, 1); + file_start_location = input_location; diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-disable-static.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-disable-static.dpatch new file mode 100644 index 0000000000..23f6846c3f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-disable-static.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: Disable building the static libjava. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- Makefile.in~ 2007-03-26 10:44:16.881179540 +0200 ++++ Makefile.in 2007-03-26 10:48:27.564961048 +0200 +@@ -43901,7 +43901,7 @@ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ +- --target=${target_alias} $${srcdiroption} \ ++ --target=${target_alias} --disable-static $${srcdiroption} \ + || exit 1 + @endif target-libjava + +@@ -44783,7 +44783,7 @@ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ +- --target=${target_alias} $${srcdiroption} \ ++ --target=${target_alias} --disable-static $${srcdiroption} \ + || exit 1 + @endif target-boehm-gc + diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-jar.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-jar.dpatch new file mode 100644 index 0000000000..38177b2495 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-jar.dpatch @@ -0,0 +1,227 @@ +#! /bin/sh -e + +# DP: gjar: support @ arguments. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + uudecode $0 + tar -xv -f jar-main-classes.tar.bz2 -C ${dir}libjava + rm -f jar-main-classes.tar.bz2* + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +From: Christian Thalinger + +While building OpenJDK b16 I noticed that jar does not support @ +arguments. OpenJDK e.g. uses it to import the binary plug files. + +This patch adds support for @filelist, where the file filelist may only +contain files and not options, as the spec says. + +Index: libjava/classpath/tools/gnu/classpath/tools/jar/Main.java +=================================================================== +RCS file: /cvsroot/classpath/classpath/tools/gnu/classpath/tools/jar/Main.java,v +retrieving revision 1.9 +diff -u -3 -p -r1.9 Main.java +--- libjava/classpath/tools/gnu/classpath/tools/jar/Main.java 31 Jan 2007 17:05:34 -0000 1.9 ++++ libjava/classpath/tools/gnu/classpath/tools/jar/Main.java 23 Jul 2007 18:31:19 -0000 +@@ -47,6 +47,8 @@ import gnu.classpath.tools.getopt.Parser + + import java.io.BufferedReader; + import java.io.File; ++import java.io.FileNotFoundException; ++import java.io.FileReader; + import java.io.InputStreamReader; + import java.io.IOException; + import java.text.MessageFormat; +@@ -102,14 +104,51 @@ public class Main + public void notifyFile(String fileArgument) + { + Entry entry; ++ ++ if (fileArgument.charAt(0) == '@') ++ { ++ BufferedReader br = null; ++ String filename; ++ ++ try ++ { ++ br = ++ new BufferedReader(new FileReader(fileArgument.substring(1))); ++ } ++ catch (FileNotFoundException fnfe) ++ { ++ System.err.println(fnfe); ++ System.exit(1); ++ } ++ ++ try ++ { ++ while ((filename = br.readLine()) != null) ++ addEntry(filename); ++ } ++ catch (IOException ioe) ++ { ++ ioe.printStackTrace(); ++ } ++ } ++ else ++ { ++ addEntry(fileArgument); ++ } ++ } ++ ++ private final void addEntry(String filename) ++ { ++ Entry entry; ++ + if (changedDirectory != null) + { +- entry = new Entry(new File(changedDirectory, fileArgument), +- fileArgument); ++ entry = new Entry(new File(changedDirectory, filename), ++ filename); + changedDirectory = null; + } + else +- entry = new Entry(new File(fileArgument)); ++ entry = new Entry(new File(filename)); + entries.add(entry); + } + } + + +begin-base64 644 jar-main-classes.tar.bz2 +QlpoOTFBWSZTWW4Pr8QAFqP///////////////////////////////////// +////////4BOPr29evtt9a93vvsuw0a9lKAaOfcb1vZ9At3H0B99gLzH0+EA8 +2AFAAVnBDJEBMhPRMkZlDI0Mo2ERp6jE8mjSD0EaDaU9GU/Sm2U0zSDT1MNJ +k0mBphNG1TxTGpvSaT0xGU02iYEbRoD1NBNqbQ0abU0NNNDJoeoyNtVBkiJp +kDIGk01NpNpqegniaJoanqeQnqaZNGmj1ANAwhoaGgAaMgAGTQyaaAMgNABo +ADQaAGQ0AGgDQAAAEIASamamIgNqZAADQDQDQDQAABoAAAADIAAAAAAAAAAA +AAAAAAAaAAAEhSKYqAfpQ9Q0aGgBoDTQBo9QAPUDTQAZABo0AeoaaAGgAAAA +NMgA0AAANAAAAAaAA0AAilKek2kKfkU/UHokPCJoek0AaABhMgyPU9R6gBo0 +0AGgDQ0AMQBhDQADID1AAAAAABkAyaMJoAAAESiCZAgTCBpGaTCp7RP1Gqex +KepsaZU9TDSNP0pp6myIAMn6o2kZHptU0NNAPUGhtQDRoAANAaGgADQAAAAA +AAANORgXkIhhCi1SRyiIoJ2mm1Wt12x2sXO5wkZ8kLEfmiQoH/XjqQsgDANT +ZFNpCAbQFPZAlk3xj7KoxTNdac3Clvk4ClApjUVWEBqaOkwUmcJbpFrAK6kH +JVugdJN5bL/awNpwKg0UMv0kioqlgFCUlJVKVZlasWQNKiRZjxgsDK57Fzlt +MS5yX0mUs+/UnAuw5+U1LsreBl6iEHAIRb1AHEzxgiE9bn8UY5CCYIgpUA2D +IU75ihEIgwFJFGXUAlKKshM1GtKZCF8ABMkQQWycWGbVla7wEUKhONOOvSaE +Ml2HIIE4Q34l9JIGVSyv6S8/AxDc/anjZwM8cNzE3Z9zppdbSl1L7IUn+u/4 ++oolwkJ5EgEmMxV1QWVdNHTFiyWKV9JL3PAn7sNzJT5XxPis960sZ2zcIAy6 +EOvAXxtGAB7Nso7phqOEYkxVCzw61oKpIRUBGSmIaXnFKzlcw7crzvi7scA+ +T9KHq+lvA6R7eTLQPw4QrF1EMGFOGnTnUmEODx7iLCnOXC4axUpK3MKFMYKW +KKPcvYggQ63AVRIdnofk+c8snqEE6CIJSoo8iuXMTNWONXxkCVqAb5bQ1K6W +FvIBykYuUSzt4uoQ0E06NJ+X8f9cd732JyzFXGcMPPlJEL+vTWLhpQt5tg2C +nn6CSADH9FyXa7R6+ESbz1oQVRWKsAwb7RnXzxttqqsRj2pEAjY2MQIhFIs+ +Mi0rW4DABwGCIlIAhyBADOUuP4koVDCAEAYkQg4hAveQQAPrLRM2SBj8FCYB +I1W+yOEuf253jZnF/lyeRjZz8Xb/VPs06E5gNAEe3bDVhBgQQbRwC1LHB6Td +60Nm90SyBVFXGiCjuVNgwMpdwEtBB2wtq5oCr0LIefo3AoMnRtORq3fSMrdN +7+fqTxe2s9VtbDwAx8r02YBr474A21QqB5DbfyCCOG0DBAsNo36wjGRIaA6n +Xe47NowoUECYnFJJBSShgIBnQZZIkAZEx47+mmPB2lDcPQ48c/FZAXtyslVv +HFYtkBJaAIqxjAXPtc5ht2pfrW0UvDEMTtA/E5fiat+YwdTmWZg4OfPnPxdQ +WIQBMra5ZkWoD7QM3E2uProCWoCHhCXQ4j+fXpoQmCoc0wpwgxM9EPu7FZ6T +LKRqvQTEBCYeUtgmwo6+oz7AOGBVZmJo1WTApChGB2zsoB4jHdfZyieoBdnL +7u7dAC5roqrar7UQwJTbd5lLlgBxCzbw8GIDgvhodKgEmvByIOaayEAGWCsH +J9b2r+k1DsSvmvxAkrPKJm4nU8y9XMA4RwEc2Q5Go1lssDS1NNH1XVrpR4S8 +ZCmDdcC04HRrdwjhU1Db9fuW9zdz12z12c71TvlOmp36mKH1cPuLhW5I0trQ +QZRyEhJWKSO8lZYh3ktkRhOg+DYskUcI1IXdWiiCGxP+qYSHK5+JOdfxTL4Y +h+G1ThDUyTfNYxbE5UufXvzW5k9mC8z6OJj59UBy/ahMMZteibZBRUxqLnOE +1HNdx+dCG3ETtrkW7q7ekuyEcbfIylkyBZWZarNw9/luOKCdm/f6ITnuwltu +CJo+4cYnWnvuu2ux41nKvRXgPElS7D1dhJxGOSwE7JS5ODGee72ZWrwPOScI +PCwgpgdn38AMNwHQtoTIBZzDIl8TxJ2ii9YCmCBE3oqWyQJB06WIgokWWSUy +FaAHWwtQiDN/J50grj8y4PqSJuP8L9Obd0+mtg7KZhqb82Q1yujZhu8HiN1b +DWYr1LZSVKfw89kuFLcQXvGS+yiXcUU06GO1R2Ds7P0fsjPvv/hDfR5rNeP1 +mt9LOw+wc40V57YdyxORzFrSg5z7JD6QLRzAublOxjDKiSpWRSlGQdFCq+uw +oP43PZes0VRy8MQeDGWtXZ4wMSWJA8537JLHCcn7sz3PVxmbBuCniu9Jb7F3 +B1HuVUckdgz8bXzR7t9HE/bN2E3Yyr7xoKa/Qx3f9xYZ6+Q9Fa5leq8a+U8/ +LuKIOYnDxPnhJ2oZquSyugtLa9n2euR7SmcHZpasq1rcccO23zoecN2B2sRA +axBf1byPSlAA5cm2NsnhKTda+zbaVxVggbxjx9bvd7zGOahDRpEA0BIuvDtW +47aIokTQA96YwSNx7HH/owBbF2b2z4DKF+aayyV/hSejq47uJcsGCqXEyKep +Pop0g7FvRISGNfaadcCWMkEOjd29vmWJVG6L+AHVQEhCZRKHGZXvYTDNTeFu +ITvgL5L7HYX3PbPbR8nsol5n5rgt6TKsn8HNZIkE+hLIDn37DWVVZ8L/KY6H +L5eqIZSQ/iOPtreek106az16/UNmHRUADiG/qJGwn/Ko8PKe22GYwP6/J0Xz +u36t0EBz9x4MjX2qABqkQMVYVAZDIGca/rBZNAcjo1AD2Hnx1TBItHbwBhh2 +t53u32lHCvQInNRwInDT704qW6eyn4p+eBu+52XD7aMOYjE0mrwm33Ldj1uK +AF4s2T43BtQAu5xB2M3Qs5xf/JramLMOYbi22fwAFzk1cd91EFd3iAa2ixhW +Fof7KYrvU9BY0kxWUCEaTT5pffbjSrsWvEWS2t11gOd0w+wBb9bPdNEDLKAR +L2qrQIgI0z6lPvrx20G0fzLPxQhHm7KTr/ionm65xv0mcf1+uiwbr3G95kOo +Xs8312GeaVZ469MoE29+U9QXrCkjG4HUe1lNBCvtCoAUF4z/s+/tfJ5X5NUe +VEQNuAoa8aQECQPO1X1EJKgFpulnr5YCl8U9dFAnuN5fdUdz4D43IgGECxBO +gEkgIhAayYPWg9u69niCr6XYMXqFG7obVSpCjX7ipANDPUY0GUBeixp6xpyy +nTZDN3ncHkKt2/W0ebrJLeMFGtHuYVmXWxpxvX5MQvpgRksPGwsKhfNUOmkE +grR6VesZqWHnZLyln11T4VSpUpsTablSQA+gjoQpCTsqEEQQRFx+JpjTyWG4 +IIXgb5XRrEtLh6Fc1mml39V5agl1smaqviIcTVtsmGPfbt1ceWcyowhzAQgp +YwqJ4QSgQwIQECIKlZJa2dj9hTQWJbRNCNPWti6mCA1ishIyCSCB4XVQrq8E +TX6Xl+B/R9F6PL3GH4FutFwY4CgEAoV3i0vvq7J8/tf18tKeREQPJfwwVZPi +1sZBb94GK6ixtKHof7oqjV8sH47txn65rdZeld+uZueNIvoyz0enYEUkkIUA +kUJAjACQVhCQROoJShCPFohQ/U7iwwhYyBCIxIBbEGRVkkSyQvzv9ImJFbWy +0vmb1XkvjoYua8yx0E235O7uqri3hKdJlCFrdcUZCQZJEkEJFQJFGQQkUZFk +STW9F6z0IVsVLYoQgyJIUQgjSMihIgkgBIjtKUoPLUgD1IjWKsiJIjIu6JF3 +QE3kCi2RWRkFkUkWRkFhEfeAM72A3fgk1A1CsOPk409yPETyzrh2Dujrnwvw +JvmhzvDop1e71/h9UE24zrGyBUZgqNTOokRtoKMCMRGhR1JKtvebzD1JdPRE +G06GvNegCLKAUK75f8otIQIprQHqeEhwqdxF37dUzExc16blxwH2UZF1Td4+ +6mXT0wHCobX/dDZwmeRRNmOuvyRHFc0tBvGwVn7F94zv8nE9V5e48LRfm4Ob +XCQJLAzRJOaE7G9VMKWNpE78V+D6ne9fwPUcr1Pm8MYpDLGRMT+BfaB6EC6x +KEqh1iDWpRpRASsaDQAKrRASt3nVOsIAQoEkKXaLCqkAg8migQtwpYubTraQ +bCvhqUwWenElRTaggHnLF53ClyAWqbkUoptbedSme6zOpZooXXgXwsiaFpTN +JJbfVShjf62tvQG1SX3hfapjXFuxvNm2mKOdMVIZUKwyGN1L3C2lhAltwF1e +ytbeGpfVyXFEmdSxTCthbXTbY2kUlKqWSTMpepZbcjfXC2xta5I3KWKXKZMF +Lr7cZXHFTJha3uJbFM2NLLboGMaRGSnTo10G5w5JSgkCDgHNDXtN5Il4+cfv +3z5sXbHYi6wCIM5XFKri0CUgIIQpUqKB2VsCwwRWyluUs91cVUsSliS0VFzW +hVobAbuhiTXoF08hSJSQSecgFkd0gG935gZuZ6wxZZqyvKo3rYYCVqGgqZoS +QD5Qz+e0hAkiQI2mUzOAGVSeKpWlpmOuHZZ7B2fiFvujsd3XaEulbbJTvBM1 +cBM2mCySbksYSRLSEjs1tMppyDpjJbnaFYGU3gyF9jbIQ2Eyhmh3ikfaSto3 +R8IxCtQJ3PjbmV8bhgb/W+EotbZ5ClEDhHEU1OEut6M9A3ub0RSEdR1Arn+8 +tZuKVAqFvigwiBxMckrkpClINBRjquFodgFd5is9ybI6zPHDSCQDmcxBjyUy +tmM+7SSjlmltqasGmwjKlMRGyQgBNoY08LAuCbcW5u2XBbgLXlPowKlGeQpM +ujsWKpSrYwgLtZDk4+RPe3XG28hQCBBbBv58sAhZJIjY8OBidC6hac+35ntz +hbims4miinCxQE7zFDOppU813hhacCNMkodsAEIqQ2FK0bY/xa/hd5Yvgz2t +RhUIyB32/4FxbfOnAQbxMxpff6wVgXPcCluI89T3H/h4E6aBoBSlJf6awy9P +zRUUsivkqSAIGIp2FOae/HbFDnJyTo0EsU5haR8PfiovS8z6tTRnA3SmGUDr +XkkWu6cdaUBwQ6UlFjBoFddM25Z+RSFVJi3HD8XrtQDAKT8OhmUGwVFLAwt6 +gnCoFjUZalBQQvcqy2tqFaVqm6jvyAT3Gm/zzFW6nUUpiZTlkW/Tw04lGvqw +wymCU/fe7viv03DG5LGaO3rRAC8LGsV+pE2SlA2049AJf7OzgraFtpclQ4/I +KtyDE7KEhzL00MHFS62l3Z5TRfksLVJLoLbG5sopxbyhh3dnnuLjjfblMuUi +lhz5S6yqHPsolLSlCXqUKBW2FaudTkXjwwLAcyex5cWgOxzBoGgDMFAv0kLt +CnbP0mqi5cQdDMDl1JKskgEdVTf6KmZ2Dt9oMeiYqcR1dhqpQ19Gr0AxQ8gv +DI2LBA1b3nmfIpv+Y4qN9gaUOyU3Q5vPNjNv3mJiG7JKQEGkBEhyctSMCPoH +mCBfo8xPDgO9EXsKNBiHiNdIVUKr1IZZrhJCSEkJISQk4YksklCRsEt7VjAX +WWoWXIvqSQGEL8MipAwt9ltYwElrMpVoX+RviFCW/wtsZIEORBhMTveMUiou +XgI5gRNRfblNIFUNpF2NAAHsLPzR2ETucqG+bKnYgFo6QNvNnVU983lPTGU7 +Vg8mdXwij5NCideLSbxt0SEUQ9jKFLGodIcmpyJHkqUecvGKxTXUBtU7RQgC +hNkucFIIRSAnZjAopWjfvwT0vZmC+AZkUC3RoKTuKSa8S2Qx23jnMUtQikbb +ej6RA8rtczcaxFNemMqDISVohSSIgSAxgkJJIARAy6DL0s+VbMDYdYtHEXeU +6mmq2KAwESKxQuUogXciroEhipaFy1pQqGVMwgBcgcD0imsXotxctlFmpqS7 +IWUNopCE1jaKURUChVFnOVZogG4gdbOigenYCF8ODz9NQ47xlznsMpeYB3Sm +hA2fN2dmasOmeD0wOkKgetMvg7jyPMHRM9ggZTkwCaKUJAZJCCwTV13ka5YG +Q2ygFYmEMI5q0JKKSKqRWtCgMGKcQ4Jab1jgsdlTluSFOqdXQcXKBvFNAYhg +4ySARilyomyeGkORqF9d01PKDWxuMq82ogYd3DPJIGruqbWCkxo6qm4Jyqhd +YJsCpVSKqbaBYtksL5xqhTMa0iAVFPUu4WLUVA1VC5ICCRwJBiY9dTQUU7gt +3zdy62U2i4wArwuNXtNNlppJWHP4p5mABW6ECYqXtMCOuUrHgWFB1ySx7QsA +dSjnasu7rCoqBMfbVOYJitQL7cq6FHRAkTCAxglpycqKBgIF12YoGoaAMjZR +QSg24buo61ogBfxdTHAqWil6poFtCBq/WKUW8LRo16ghecDUqoShr3G10Hta +1w5aLRIXWamrSDvxmYDl7iBwS7SBagA2JsGwNAYRgoxRhMFFs12Stlflw5B8 +tXE2k3i3cZDZ+Lw+m34tWU2NhZYcdS+oLexLCSYvS6EROkz9a1oZEU4PsY/d +MA5Ikh0JGRRQICk2SHOewE4tERhFZGPCi0eFWG3HFoqJ4a+32Vz3tSBxLLh8 +i5fAukmtTMuY89BplR6YoEhI0WGJM9oaDxQXXWlIMmgfKeZU1uKqc22TdTKG +Px0ECavqrKNX5xq763V57n8Znf4cn85nlWOcuuR+vFuZl1yZnTU4pLuojZkj +U5UHF0Nau9MIxl+h0SxD0ovwB59hqqqJoQIbUkIFodSRV5tS+3QAMyGh0GQy +bRjmandQWPSGJJY/Y4gC5ZRiEXiQ17x/4u5IpwoSDcH1+IA= +==== diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-jnipath.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-jnipath.dpatch new file mode 100644 index 0000000000..a33888bf14 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-jnipath.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh -e + +# DP: - Add /usr/lib/jni to java.library.path. +# DP: - When running the i386 binaries on amd64, look in +# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/gnu/classpath/natSystemProperties.cc~ 2006-08-02 00:53:40.000000000 +0200 ++++ libjava/gnu/classpath/natSystemProperties.cc 2006-08-19 00:41:50.063803000 +0200 +@@ -141,6 +141,34 @@ + return retval; + } + ++static char* ++AppendJniLibdir (char *path, struct utsname *u) ++{ ++ char* retval; ++ const char* jnilibdir = "/usr/lib/jni"; ++ ++#if defined(__linux__) && defined (__i386__) ++ if (! strcmp ("x86_64", u->machine)) ++ jnilibdir = "/usr/lib32/jni"; ++#endif ++ ++ if (path) ++ { ++ jsize total = strlen (path) ++ + (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) + 1; ++ retval = (char*) _Jv_Malloc (total); ++ strcpy (retval, path); ++ strcat (retval, PATH_SEPARATOR); ++ strcat (retval, jnilibdir); ++ } ++ else ++ { ++ retval = (char*) _Jv_Malloc (strlen (jnilibdir) + 1); ++ strcpy (retval, jnilibdir); ++ } ++ return retval; ++} ++ + void + gnu::classpath::SystemProperties::insertSystemProperties (java::util::Properties *newprops) + { +@@ -370,8 +398,13 @@ + // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that + // libgcj will find its own JNI libraries, like libgtkpeer.so. + char* val = PrependVersionedLibdir (path); +- _Jv_SetDLLSearchPath (val); ++ ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + } + else + { +@@ -379,9 +412,12 @@ + #ifdef USE_LTDL + char *libpath = getenv (LTDL_SHLIBPATH_VAR); + char* val = _Jv_PrependVersionedLibdir (libpath); +- SET ("java.library.path", val); +- _Jv_SetDLLSearchPath (val); ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ SET ("java.library.path", val2); ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + #else + SET ("java.library.path", ""); + #endif diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-loading-constraints.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-loading-constraints.dpatch new file mode 100644 index 0000000000..85f13ebe41 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-loading-constraints.dpatch @@ -0,0 +1,431 @@ +#! /bin/sh -e + +# DP: Reimplement loading constraints (taken from the trunk). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + uudecode $0 + tar -xv -f class-loader-classes.tar.bz2 -C ${dir}libjava + rm -f class-loader-classes.tar.bz2* + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-03-13 Tom Tromey + + * java/lang/natClassLoader.cc (_Jv_RegisterInitiatingLoader): + Check loading constraints. + (_Jv_CheckOrCreateLoadingConstraint): New function. + * java/lang/ClassLoader.java (loadingConstraints): New field. + * link.cc (_Jv_Linker::find_field): Use + _Jv_CheckOrCreateLoadingConstraint. + (_Jv_Linker::check_loading_constraints): New function. + (_Jv_Linker::resolve_method_entry): Use + check_loading_constraints. + (_Jv_Linker::append_partial_itable): Likewise. + (_Jv_Linker::layout_vtable_methods): Likewise. + * include/jvm.h (_Jv_Linker::check_loading_constraints): Declare. + (_Jv_CheckOrCreateLoadingConstraint): Declare. + +--- libjava/include/jvm.h.orig 2008-03-21 22:09:54.249100837 +0100 ++++ libjava/include/jvm.h 2008-03-21 22:10:20.739500439 +0100 +@@ -1,6 +1,6 @@ + // jvm.h - Header file for private implementation information. -*- c++ -*- + +-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation ++/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation + + This file is part of libgcj. + +@@ -265,6 +265,7 @@ + jclass, jclass *); + static _Jv_Field *find_field(jclass, jclass, jclass *, _Jv_Utf8Const *, + _Jv_Utf8Const *); ++ static void check_loading_constraints (_Jv_Method *, jclass, jclass); + static void prepare_constant_time_tables(jclass); + static jshort get_interfaces(jclass, _Jv_ifaces *); + static void link_symbol_table(jclass); +@@ -557,6 +558,9 @@ + jboolean is_jni_call = true, + jclass iface = NULL); + ++extern void _Jv_CheckOrCreateLoadingConstraint (jclass, ++ java::lang::ClassLoader *); ++ + extern jobject _Jv_NewMultiArray (jclass, jint ndims, jint* dims) + __attribute__((__malloc__)); + +--- libjava/java/lang/ClassLoader.h.orig 2008-03-21 22:09:54.249100837 +0100 ++++ libjava/java/lang/ClassLoader.h 2008-03-21 22:10:20.749500589 +0100 +@@ -86,6 +86,7 @@ + void checkInitialized(); + public: // actually package-private + ::java::util::HashMap * __attribute__((aligned(__alignof__( ::java::lang::Object)))) loadedClasses; ++ ::java::util::HashMap * loadingConstraints; + ::java::util::HashMap * definedPackages; + private: + ::java::lang::ClassLoader * parent; +--- libjava/java/lang/ClassLoader.java.orig 2008-03-21 22:09:54.249100837 +0100 ++++ libjava/java/lang/ClassLoader.java 2008-03-21 22:10:20.749500589 +0100 +@@ -1,5 +1,5 @@ + /* ClassLoader.java -- responsible for loading classes into the VM +- Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. ++ Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + + This file is part of GNU Classpath. + +@@ -45,6 +45,7 @@ + + import java.io.IOException; + import java.io.InputStream; ++import java.lang.ref.WeakReference; + import java.net.URL; + import java.nio.ByteBuffer; + import java.security.CodeSource; +@@ -130,6 +131,15 @@ + final HashMap loadedClasses = new HashMap(); + + /** ++ * Loading constraints registered with this classloader. This maps ++ * a class name to a weak reference to a class. When the reference ++ * is non-null, it means that a reference to the name must resolve ++ * to the indicated class. ++ */ ++ final HashMap> loadingConstraints ++ = new HashMap>(); ++ ++ /** + * All packages defined by this classloader. It is not private in order to + * allow native code (and trusted subclasses) access to this field. + */ +--- libjava/java/lang/natClassLoader.cc.orig 2008-03-21 22:09:54.249100837 +0100 ++++ libjava/java/lang/natClassLoader.cc 2008-03-21 22:10:20.749500589 +0100 +@@ -1,6 +1,6 @@ + // natClassLoader.cc - Implementation of java.lang.ClassLoader native methods. + +-/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation ++/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 Free Software Foundation + + This file is part of libgcj. + +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -143,7 +144,21 @@ + // them later. + return; + } +- loader->loadedClasses->put(klass->name->toString(), klass); ++ ++ JvSynchronize sync (loader->loadingConstraints); ++ ++ using namespace java::lang::ref; ++ ++ jstring name = klass->getName(); ++ WeakReference *ref = (WeakReference *) loader->loadingConstraints->get (name); ++ if (ref) ++ { ++ jclass constraint = (jclass) ref->get(); ++ if (constraint && constraint != klass) ++ throw new java::lang::LinkageError(JvNewStringLatin1("loading constraint violated")); ++ } ++ loader->loadingConstraints->put(name, new WeakReference(klass)); ++ loader->loadedClasses->put(name, klass); + } + + // If we found an error while defining an interpreted class, we must +@@ -156,6 +171,46 @@ + loader->loadedClasses->remove(klass->name->toString()); + } + ++// Check a loading constraint. In particular check that, if there is ++// a constraint for the name of KLASS in LOADER, that it maps to ++// KLASS. If there is no such constraint, make a new one. If the ++// constraint is violated, throw an exception. Do nothing for ++// primitive types. ++void ++_Jv_CheckOrCreateLoadingConstraint (jclass klass, ++ java::lang::ClassLoader *loader) ++{ ++ // Strip arrays. ++ while (klass->isArray()) ++ klass = klass->getComponentType(); ++ // Ignore primitive types. ++ if (klass->isPrimitive()) ++ return; ++ ++ if (! loader) ++ loader = java::lang::VMClassLoader::bootLoader; ++ jstring name = klass->getName(); ++ ++ JvSynchronize sync (loader->loadingConstraints); ++ ++ using namespace java::lang::ref; ++ ++ WeakReference *ref = (WeakReference *) loader->loadingConstraints->get (name); ++ if (ref) ++ { ++ jclass constraint = (jclass) ref->get(); ++ if (constraint) ++ { ++ if (klass != constraint) ++ throw new java::lang::LinkageError(JvNewStringLatin1("loading constraint violated")); ++ // Otherwise, all is ok. ++ return; ++ } ++ } ++ // No constraint (or old constraint GC'd). Make a new one. ++ loader->loadingConstraints->put(name, new WeakReference(klass)); ++} ++ + + // Class registration. + // +--- libjava/link.cc.orig 2008-03-21 22:09:54.249100837 +0100 ++++ libjava/link.cc 2008-03-21 22:24:51.692638568 +0100 +@@ -246,13 +246,9 @@ + if (_Jv_CheckAccess (klass, *found_class, the_field->flags)) + { + // Note that the field returned by find_field_helper is always +- // resolved. There's no point checking class loaders here, +- // since we already did the work to look up all the types. +- // FIXME: being lazy here would be nice. +- if (the_field->type != field_type) +- throw new java::lang::LinkageError +- (JvNewStringLatin1 +- ("field type mismatch with different loaders")); ++ // resolved. However, we still use the constraint mechanism ++ // because this may affect other lookups. ++ _Jv_CheckOrCreateLoadingConstraint (klass, (*found_class)->loader); + } + else + { +@@ -269,6 +265,23 @@ + return the_field; + } + ++// Check loading constraints for method. ++void ++_Jv_Linker::check_loading_constraints (_Jv_Method *method, jclass self_class, ++ jclass other_class) ++{ ++ JArray *klass_args; ++ jclass klass_return; ++ ++ _Jv_GetTypesFromSignature (method, self_class, &klass_args, &klass_return); ++ jclass *klass_arg = elements (klass_args); ++ java::lang::ClassLoader *found_loader = other_class->loader; ++ ++ _Jv_CheckOrCreateLoadingConstraint (klass_return, found_loader); ++ for (int i = 0; i < klass_args->length; i++) ++ _Jv_CheckOrCreateLoadingConstraint (*(klass_arg++), found_loader); ++} ++ + _Jv_Method * + _Jv_Linker::resolve_method_entry (jclass klass, jclass &found_class, + int class_index, int name_and_type_index, +@@ -359,6 +372,11 @@ + throw new java::lang::NoSuchMethodError (sb->toString()); + } + ++ // if (found_class->loader != klass->loader), then we must actually ++ // check that the types of arguments correspond. JVMS 5.4.3.3. ++ if (found_class->loader != klass->loader) ++ check_loading_constraints (the_method, klass, found_class); ++ + return the_method; + } + +@@ -891,7 +909,8 @@ + continue; + + meth = NULL; +- for (jclass cl = klass; cl; cl = cl->getSuperclass()) ++ jclass cl; ++ for (cl = klass; cl; cl = cl->getSuperclass()) + { + meth = _Jv_GetMethodLocal (cl, iface->methods[j].name, + iface->methods[j].signature); +@@ -913,6 +932,9 @@ + itable[pos] = (void *) &_Jv_ThrowAbstractMethodError; + else + itable[pos] = meth->ncode; ++ ++ if (cl->loader != iface->loader) ++ check_loading_constraints (meth, cl, iface); + } + else + { +@@ -1467,6 +1489,11 @@ + sb->append(_Jv_GetMethodString(declarer, super_meth)); + throw new VerifyError(sb->toString()); + } ++ else if (declarer->loader != klass->loader) ++ { ++ // JVMS 5.4.2. ++ check_loading_constraints (meth, klass, declarer); ++ } + } + } + + +begin 644 class-loader-classes.tar.bz2 +M0EIH.3%!62936;AC>/P`$B'_____________________________________ +M________X!6?>GEKK>IQ%5[=.%0070O6<+;>];;V[[P&^V:]RKXV;8WK.('; +M!H:"@#;-,'G=N]V!J:30!&B:8AJGFF0-)HGFI/0Q/5/*;3:IY3U-M1,FI^J9 +MXE/`U/5!^J>IYJ>IIIM)LBGIE-IZ)F13]3U3>I-/94:>4>F9)IZDT]0]IJ@V +MIXH&TGE-/3T:HTQ/4]&C1IJ/4:`T031-,"9":8FIZ&2GM)IZ3$TR:FU&C(GM +M*/4]1F:4]$>H>4]1X4-I!M1Z&4-!ZC1D]1H]"!B:'H3`:3(,F:FT0>4TQ#0! +MB-/2:;4T&Q)IZ@:$:!!-11ZGA1C4](V4-`]3(/:H]1Z@`!D`!H:`:`#3T0`` +M!H`!H````]0#30T``]0&@-`-`--`:`)-20C4*>1HRIZGJ#3:GFE,F::@PAZ0 +M'J#)Z@TTT!D;4/1-J>IH!ZAH:`T/*`-#0```!Z@`&FC0````&@!D!H`$```` +M``````!,```````````F``````````````````$P$P)$DT)IH),-)IDTT(VF +M(1Z*>TIZ3R3PIDT&(#33$T>D&C0R-`-`!H````!H`:``&F@````````:`+40 +MP,AXAHV[384=&=*:I_H[F;&$@=O37@`S\@]IP%T.,X'0,ER*QC?1QSRUW6N" +M,PD32^QGX&7VT)L,"HQLLV_A$&=,*!-;&"*90NL**ZQZ$2E+7^&68,XD +MZ2L-J&VEA="HDKM#=(RL%]F7&*"*JQ;(5';J(%2;Q.A.*U0,-@1P8$.WD]@LZ*(+8/Q +MM2^67GXUDF$[MV*91J,-Q06UU8-K,$JF";`4%N=>X=8:D)$PT3#&JK1PF +M`6FCDVM\`OR89!US!(FP$DN'GR:J3I?3Z^*W$,PN@9,1IT2%8*V!L&,O3JI5 +M9V7FG=(-/TD2LS&X4'>0H"1[(-_EJ1(\?O,8Y'5]&9\O%]=JW;YJ->]TMO&3 +MUW0O>4K#;_1LB0M"2)(89D*IVLG-0=09=D.?N@!8^15(J,.O%"N5XG;T:=]U +MW"WV<%9HYM;QMB!+Y"WJQHK6!K:^WW/3,V*>OSZ"6BLCN=38I2D'=Y:$6$(:)"SOK,X#:Q[ +M+:)P*%QZF^?P"D*K7+,D3[+;EK-FHG=U,%,@9&1F0,#/U#$`.FFE[,JK"!;O +M:9GS/GY-9C;[R4!XZB(Z7S3,MV8K7!X,$95GI;Z8J?DZ'P>+Y7?/6?7?`%9* +M`^02!IR^$4LLMO"VFI?+^O'W_728W=<'7?#F4``8K;#,EEEHL;,OS_V0!U'X +MYR=^^ALB"$9<.8A)%`^@O/])`I]DQ+I`.X^K==RM9DILN(F?W,LG(DP5'`39 +M$54$10]$AH`8>^6;0K'NX(6U0;O<1<#[O)=MYKUGIFC`-RI-]Z5NE8I*`7N\ +MP.=_L@H!(;5?#6K\UD`25NI!)WMYH^/Y7=]5%:<=$_ZZM,#Q$C&]ER8U+I;GC=BY\)=H@!G: +M*::N"G;4X5`'0PN6Y<5VGN=;P,')31=0`V9$D"%)UM2:R&$8"]5YMORU$"HS +M/7UO=R$Q$,I:0QD5]=7*Y2''F17^;O;,JK@Z,(C62SN+OL]]M(NSD4%Q[B&2 +M&2JIK]V"1%2$IU5[:31T2H]L.3$83K6I3-D=3N=JFGTF`V`>"N?&!Q.>X?6?KJ..`4;;$P#0"V.W"?M+'?RZ%:A<*Y@_/`-1 +M!U]#N0@!1Z5JU84FUAMJ`C_Y")13(2'H+#8C>@3]R@@4/L(:^!\1'5FJ5""% +M5/?77,VOVZ+Z7SJ,D9`S`Z>`8PI`;JTREAX/[GX:)_=[$[<-,U(C#>L,/.[I +MXST?5M/GS,HN_X!^9_R3$X5;-TNB<<6FZ7C9DRXX^PX2A78UNM=M?^U9U/:- +M.BGXEFIAAS7^1P98&8F<.(/@68-LRLL`6'LGE>BHD.V)--&1CAQ`5<*>UII3 +M;XKW@2D6QLG#4MJX-TGPEENNNFN2Z:E*I0*&>SH,:=!$0,`E+UVIY/I['V)F +M%@TN]]O*>QD]2OR:[I]7UK/;V/8Z=%Z6_I_^M7'7]#2N#>(0,!RGW+Y'6]6^ +MP*;^-[NI.7#\YE(OUB-8VVHLD2-)U):CBZ/3>2,X&+^D\COQG4]".VQ-`W7L +M&77M;=\/N2ZO?FUO7_2QWP=O&YIZ')R88;Z]NHM#E7[*!USJT=0I/%4I7'3FT[A+(F7#4WU'Y>'8F5', +MIRIO=[CWCAV69]2KI4GO%JIWS)^:?)DSJ +M'!)&7"9$,C'XF[0&Z6. +MIL,Y:JX1*?TR(3\U!)1HCQ-A0C]'W]I+W2GJ-3&NB;I6+UGQV/_$[UUM(?(AT56-55502B4 +MK>G@+3QZ44!S.&(-9,W;..KZW'+.G,;]92Q-69=O$!?631=T6+'<.,GG:6HO +M!D':\:*DSJ#RL!`2PQ-1MFA4%)53Q+;RJYJKXF(=))L0%:%@`Z!5,1MX"Z2B-3Z.V,[R[:(T5:)0 +MKAA$^LR-1M)C@J+XG7_)Z4'N0%P/NY;N#UJ-%#I>^=G!W5S=*O369O/^]VVE +M'%CECI^"]&+I:WL02,K2))",3$77FCNYG&8Q=)IICOX>P-YY?.6.L(MY9V/B +ME2H0;X3J';+6J>JVK4?RX$EV>\C9^KQXJ]W#QE#/"+:C`S6M#WP;.FX0[8/V +MZ^JNNY/B3]F!6S""+$0S3"]]@-4YZ6, +M.VB_>LTJJK`0(?B!@B#?>N)(N>\E4J@,._BEVJQH9UZGF6D$'Z#F]QO]_?IQ +MD076O?U[W!?)[*^XF<8A0H4U;M^"K7K0:I7F-^'G-9I]G:Z/9;9T``*$C`%! +M2;9@IRZ9_ORUU7;3?U+.EI<'D\[?+[=5MCM.-MU1[19N^%0*[>MOVF$EIN!E +M4)@+'!I4N40H0,$69!5%!8+)39(%1#]OD];SUTGE,O9K;7LG-Q;^V%>5+&P4 +MF&C+VR7:33*+2SR5DKOJ]'B=NGV/CQ4C&@D`8:(C&#;%REE^6Q>SZ/&Z9V[X'(8^BP +M_?G0U6+-"Q/,W-I6=R$@*MV07$R:%`Y:XT2B=!LL*]WAE43PQ%#1*?<.L^]< +M-!U=/D6T79D]QDY5_#6A71[3:$)$M&(8KHX:0`$1M!JM;9N=-:UG-K9MG6EI +M"VFV_U;S6E2[>$MRX9RAE#RTU@:[M1(^/X[-(XL#+X!!=EV9,%11E[0.WL^? +M_Y^OYWVR$\,1T)*#`4`%O&**@W(KLFW59#[ +M9&;C5/=5^%MKY3,.9S65O+I#`7MA0O([NRNY6NW(=8FU2HZ^$:)+Y_1R6\G] +M[PJKY*'40F!3\;NY>'NI:'J'6_D#X[#">A'G"C&;=-WNHY9KDTO6PYR>C?;) +M@:F(];UJ![&U]?D*$^!#YF>;0CS;"`_!!@%[DM=CSW8"K\A.2,L$@U'2C9>- +M5U575S2TLO.YZ/4(,'1GA&">8.($J#2U]5>*=:;XW/)_3D;UA-IM=$O)'&1V +M^`2*P^&2C`L,NI&@8270C`)Y9+P&O3Y;2__9DF=-^6E20`RC"8,D#)O!-F/* +M=K*U3"@::!=GY60I$QD',R(TZH1S]9!40-03/9=02"G/IC.QOAE:2+WQDMB4 +M%PUB9.PWWK@TS-F9G%HC0/J((+8(+ED28-HK)E2K*%,8QHO/_G_O\=@_EYWD +MWF8O)Q,9\+A,1=91HR-U

K7WK^Q#N@,&K&/#80>J*$8\G+,<`%BB,$D8@9F)-945F%4)"HG$G(=$Y[Z@6L,"]6]YI8:0M@9F4>JJIJH +M+;X`!(-#C"%NV-BP]W:.DD*#HJ.@HZ7.I73:LUN0G.$QK%!%!T,=KE4U,%4(NLA`W +M(=)+=M10:LDP9%I8I6GL5##!R;6-CTXFMM%DU1VUG<$1#/A?V.-PXIC*\2O= +M[,8=GI0@A@8Y&9@QLJG<>A.I5XL,<-VPI<7W%.XOO1## +M;):P\/79[M>6Y+$S%&118"CL#8B6L#.9HV7GX`"HZQ&EV0^,HIZD%SC3>X$E +MH4&V0J1-&J(P3OTEA4BYS9>D;V&&$WB2`-%6T".>F5<.I +M8L3-XI&_Q4^P%0"07]E9EMV!;<&-(VN/"#I`R^,@`5)H;,><7Q;+GTD=B +M`V+"<<"JMZY5JF.>NF$:&PXB6?`9-&=S&ERO,W0UR0;N$=?-'D;YZW%+FCQU +M=*Y>NRA"2[[KA8EF;_-=)FLIG`M=*(<)M$\U%D>N#0=N-5;Z2*DP"T9$1F"> +M(X152$R3EWXM--C#,5S%E**K76.*W%^I;$O]+8VF.6^ZR#5R61E0S,VK[RQM +M7=L"9>=^]K7H10F33U0JZH93NDD5(O@22#V(M=041?=BK)1%QG0,*JA$\`1* +M]GSC6*)"I:+F.E!F&-=64T,:>\Y*0$-R@;1!A.^BNH)7]^EC4F$OSULI!%J@ +MH@>8Y/3UQE()$44V`.&-IM`V$I85S"6`T\[9:&^P,HV>X16A[4I1N,?DM+1[ +MCIQ<"]=BB@$4CR8D@`B(.1``F<[G,Y$_S2)RS0,*3'QM?T:9Q?(U_1QQLG9Y +M>8S2S((#CDN/YUA)=61F['.V:"P6[/I$7AJ_E +M,21@U*X.$6W:IM'75C&!M-H!M#30AL#6-IO4J0->7T"JO+-ULS,XAIZ.(VSW +M+$+H9G0F30-I<*N.9XG*DD(NM&F;F"A`A>TEZX4BCEZA17:T&7(HD+= +ME9L`,-P9DD`$DAD<;X43%3,PB*0Q@%C,@F.L%%=5B,*#?F'&'GE(#,XVK8-C +M:`>?"V:6=OC"=>5",XU\^4`M2!;%4JV2%'=C@UE+K'P,/)W>S;!`4@0D,P"%T!/8%JOEJ$58`J;,#4,AMC;:8$T$!)I4F_,[D+YA0V"19 +M4D8UEQ(+!BTC(P8KB)_!$Y]E`5,\1*A`Q11=(!R?EH(BI7!`%A&1((!QKJA/ +M!MT(QC)R8R:T`"N9NGE%*$%=6PPE`()2&]1)R,.;=MP4J>^B:0.3A7&BEG+9 +MYF#;#8(IM!)KP85"ABP515%5B**\[J^!="W'!=JO+Q4%0>F[;:RF +M^WU6;_GRVY#D^OFGDO5A-"FJ5C37(Z95Y=0JBJGVL..V%W@61Z:"IXVX?;*A +M6\XAKU*F2D@F0"Q'2(2`\08UB^U]YL'NZ*)JW]"RYCB;U=S"<2EP+&689, +M)&JJKJMCURP6,1@ZAD1$1$``\(`E9&+=K5NV_R>85'/^FVXP5V&ON2G03L:#C.+,)EBMYTS[M-_Y!*X$F-D-?<]=X4WUL\JN7'<&"=IUNFD5! +M"/6'D.?C(^=%^9R`)4GE,Y#JIN&&;EW&A0TK&M.)18\?:!RN)([P%E%<()W2 +M^ND/$6-[M7U1G[UDX7.K8\YLL<_/3.KB*EO[;JKT1XLJN(%K2AYZ.SD\LM`: +M)RT%&#?Y!_Q_T'*;9T0\/O]JT-.PO'!$8&CE_^+N2*<*$A<,;Q^```` +` +end diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-nobiarch-check.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-nobiarch-check.dpatch new file mode 100644 index 0000000000..b32e1050a2 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-nobiarch-check.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: For biarch builds, disable the testsuite for the non-default architecture +# DP: for runtime libraries, which are not built by default (libjava). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/testsuite/Makefile.in~ 2005-09-29 23:53:39.213898000 +0200 ++++ libjava/testsuite/Makefile.in 2005-09-29 23:55:33.382541760 +0200 +@@ -346,12 +346,14 @@ + + + check-DEJAGNU: site.exp ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + l='$(DEJATOOL)'; for tool in $$l; do \ +- $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \ + done; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch new file mode 100644 index 0000000000..6bf7a7310f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch @@ -0,0 +1,79 @@ +#! /bin/sh -e + +# DP: Don't leak upon failed realloc (taken from the trunk). + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +libjava/ + +2008-03-10 Jim Meyering + + Don't leak upon failed realloc. + * gnu/classpath/natSystemProperties.cc + (SystemProperties::insertSystemProperties): + +libjava/classpath/ + +2008-03-10 Jim Meyering + + Don't leak upon failed realloc. + * native/jni/classpath/jcl.c (JCL_realloc): Upon failed realloc, + free the original buffer before throwing the exception. + +Index: libjava/classpath/native/jni/classpath/jcl.c +=================================================================== +--- libjava/classpath/native/jni/classpath/jcl.c (revision 133093) ++++ libjava/classpath/native/jni/classpath/jcl.c (revision 133094) +@@ -1,5 +1,5 @@ + /* jcl.c +- Copyright (C) 1998, 2005, 2006 Free Software Foundation, Inc. ++ Copyright (C) 1998, 2005, 2006, 2008 Free Software Foundation, Inc. + + This file is part of GNU Classpath. + +@@ -152,9 +152,11 @@ + JNIEXPORT void *JNICALL + JCL_realloc (JNIEnv * env, void *ptr, size_t size) + { ++ void *orig_ptr = ptr; + ptr = realloc (ptr, size); + if (ptr == 0) + { ++ free (orig_ptr); + JCL_ThrowException (env, "java/lang/OutOfMemoryError", + "malloc() failed."); + return NULL; +Index: libjava/gnu/classpath/natSystemProperties.cc +=================================================================== +--- libjava/gnu/classpath/natSystemProperties.cc (revision 133093) ++++ libjava/gnu/classpath/natSystemProperties.cc (revision 133094) +@@ -270,7 +270,10 @@ + if (errno != ERANGE) + break; + buflen = 2 * buflen; ++ char *orig_buf = buffer; + buffer = (char *) realloc (buffer, buflen); ++ if (buffer == NULL) ++ free (orig_buf); + } + if (buffer != NULL) + free (buffer); diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-rpath.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-rpath.dpatch new file mode 100644 index 0000000000..e9b7f03f5b --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-rpath.dpatch @@ -0,0 +1,49 @@ +#! /bin/sh -e + +# DP: - Link ecjx with -rpath $(dbexecdir) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/Makefile.am~ 2007-03-04 18:50:01.000000000 +0100 ++++ libjava/Makefile.am 2007-03-04 19:19:32.000000000 +0100 +@@ -683,7 +683,7 @@ + ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + endif !ENABLE_SHARED + +-ecjx_LDADD = -L$(here)/.libs libgcj.la ++ecjx_LDADD = -L$(here)/.libs libgcj.la -rpath $(dbexecdir) + ecjx_DEPENDENCIES = libgcj.la libgcj.spec + + else !NATIVE +--- libjava/Makefile.in~ 2007-03-04 18:50:01.000000000 +0100 ++++ libjava/Makefile.in 2007-03-04 19:21:22.000000000 +0100 +@@ -7787,7 +7787,7 @@ + @ENABLE_SHARED_TRUE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR) + @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + @NATIVE_FALSE@ecjx_LDADD = +-@NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la ++@NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la -rpath $(dbexecdir) + @NATIVE_FALSE@ecjx_DEPENDENCIES = + @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec + gappletviewer_SOURCES = diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-sjlj.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-sjlj.dpatch new file mode 100644 index 0000000000..95b4673b3f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-sjlj.dpatch @@ -0,0 +1,65 @@ +#! /bin/sh -e + +# DP: Don't try to use _Unwind_Backtrace on SJLJ targets. +# DP: See bug #387875, #388505, GCC PR 29206. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- + libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +Index: src/libjava/sysdep/generic/backtrace.h +=================================================================== +--- src.orig/libjava/sysdep/generic/backtrace.h 2006-11-06 14:00:32.000000000 -0500 ++++ src/libjava/sysdep/generic/backtrace.h 2006-11-06 14:04:38.000000000 -0500 +@@ -13,6 +13,20 @@ details. */ + + #include + ++#ifdef SJLJ_EXCEPTIONS ++ ++#undef _Unwind_GetIPInfo ++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \ ++ (abort (), (void) (ctx), *ip_before_insn = 1, 0) ++ ++#undef _Unwind_GetRegionStart ++#define _Unwind_GetRegionStart(ctx) \ ++ (abort (), (void) (ctx), 0) ++ ++#undef _Unwind_Backtrace ++#define _Unwind_Backtrace(trace_fn,state_ptr) \ ++ (fallback_backtrace (trace_fn, state_ptr)) ++ + /* Unwind through the call stack calling TRACE_FN with STATE for every stack + frame. Returns the reason why the unwinding was stopped. */ + _Unwind_Reason_Code +@@ -20,4 +34,7 @@ fallback_backtrace (_Unwind_Trace_Fn, _J + { + return _URC_NO_REASON; + } ++ ++#endif /* SJLJ_EXCEPTIONS */ ++ + #endif diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-soname.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-soname.dpatch new file mode 100644 index 0000000000..ccac8a40db --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-soname.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e + +# DP: Bump the libgcj soversion. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- libjava/libtool-version~ 2006-01-18 22:52:29.000000000 +0100 ++++ libjava/libtool-version 2006-04-03 23:32:44.934656864 +0200 +@@ -3,4 +3,4 @@ + # a separate file so that version updates don't involve re-running + # automake. + # CURRENT:REVISION:AGE +-9:0:0 ++90:0:0 diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-stacktrace.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-stacktrace.dpatch new file mode 100644 index 0000000000..9ace9dfb28 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-stacktrace.dpatch @@ -0,0 +1,70 @@ +#! /bin/sh -e + +# DP: libgcj: Lookup source file name and line number in separated +# DP: debug files found in /usr/lib/debug + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- libjava/stacktrace.cc.orig 2006-06-16 13:54:07.078577632 +0200 ++++ libjava/stacktrace.cc 2006-06-16 13:56:08.032189888 +0200 +@@ -20,6 +20,11 @@ + #endif + + #include ++#include ++#include ++#ifdef HAVE_UNISTD_H ++#include ++#endif + + #include + #include +@@ -222,6 +227,28 @@ + finder->lookup (binaryName, (jlong) offset); + *sourceFileName = finder->getSourceFile(); + *lineNum = finder->getLineNum(); ++ if (*lineNum == -1 && info.file_name[0] == '/') ++ { ++ const char *debugPrefix = "/usr/lib/debug"; ++ char *debugPath = (char *) malloc (strlen(debugPrefix) ++ + strlen(info.file_name) ++ + 2); ++ ++ if (debugPath) ++ { ++ strcpy (debugPath, debugPrefix); ++ strcat (debugPath, info.file_name); ++ //printf ("%s: 0x%x\n", debugPath, offset); ++ if (!access (debugPath, R_OK)) ++ { ++ binaryName = JvNewStringUTF (debugPath); ++ finder->lookup (binaryName, (jlong) offset); ++ *sourceFileName = finder->getSourceFile(); ++ *lineNum = finder->getLineNum(); ++ } ++ free (debugPath); ++ } ++ } + if (*lineNum == -1 && NameFinder::showRaw()) + { + gnu::gcj::runtime::StringBuffer *t = diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-subdir.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-subdir.dpatch new file mode 100644 index 0000000000..ec707b8b5e --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-subdir.dpatch @@ -0,0 +1,246 @@ +#! /bin/sh -e + +# DP: - Set the libjava sublibdir to /usr/lib/gcj-4.3 +# DP: - Set the default libgcj database dir to /var/lib/gcj-4.3 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libjava && aclocal -I . -I .. -I ../config -I libltdl && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/java/Make-lang.in.orig 2007-09-06 21:19:09.582719152 +0200 ++++ gcc/java/Make-lang.in 2007-09-06 21:20:32.543970604 +0200 +@@ -313,12 +313,13 @@ + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ZLIBINC) \ + $(srcdir)/java/jcf-io.c $(OUTPUT_OPTION) + ++short_version := $(shell echo $(version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/') + # jcf-path.o needs a -D. + java/jcf-path.o: java/jcf-path.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + java/jcf.h + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ +- -DLIBGCJ_ZIP_FILE='"$(datadir)/java/libgcj-$(version).jar"' \ +- -DDEFAULT_TARGET_VERSION=\"$(version)\" \ ++ -DLIBGCJ_ZIP_FILE='"$(datadir)/java/libgcj-$(short_version).jar"' \ ++ -DDEFAULT_TARGET_VERSION=\"$(short_version)\" \ + $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) + + TEXI_JAVA_FILES = java/gcj.texi $(gcc_docdir)/include/fdl.texi \ +--- libjava/classpath/configure.ac.orig 2008-01-13 17:18:19.000000000 +0100 ++++ libjava/classpath/configure.ac 2008-01-13 17:18:45.000000000 +0100 +@@ -301,7 +301,7 @@ + nativeexeclibdir=${withval} + ], + [ +- nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[[^#]].*:/ { print $1 }' ${srcdir}/../libtool-version` ++ nativeexeclibdir='${toolexeclibdir}/gcj-'`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[[^#]].*:/ { print $1 }' ${srcdir}/../libtool-version` + ]) + + AC_SUBST(nativeexeclibdir) +--- libjava/classpath/configure.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/classpath/configure 2008-01-13 17:18:45.000000000 +0100 +@@ -4771,7 +4771,7 @@ + + else + +- nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[^#].*:/ { print $1 }' ${srcdir}/../libtool-version` ++ nativeexeclibdir='${toolexeclibdir}/gcj-'`sed -r 's/([0-9]+\.[0-9]+).*/\1/' ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[^#].*:/ { print $1 }' ${srcdir}/../libtool-version` + + fi; + +--- libjava/testsuite/lib/libjava.exp.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/testsuite/lib/libjava.exp 2008-01-13 17:18:45.000000000 +0100 +@@ -169,6 +169,7 @@ + set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"] + regexp " version \[^\n\r\]*" $text version + set libjava_version [lindex $version 1] ++ set libjava_version "4.3" + + verbose "version: $libjava_version" + +--- libjava/testsuite/Makefile.am.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/testsuite/Makefile.am 2008-01-13 17:18:45.000000000 +0100 +@@ -4,6 +4,7 @@ + + # May be used by various substitution variables. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_short_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + # autoconf2.13's target_alias + target_noncanonical = @target_noncanonical@ +@@ -59,11 +60,11 @@ + rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \ + if test -n "$$testdep"; then \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +- $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \ ++ $(top_builddir)/libgcj-$(gcc_short_version).jar::$$testtmpdir \ + -d $$testtmpdir $(srcdir)/$$testdep || exit; \ + fi; \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +- $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \ ++ $(top_builddir)/libgcj-$(gcc_short_version).jar:$$testtmpdir \ + -d $$testtmpdir $(srcdir)/$$test || exit; \ + case "$$test" in \ + libjava.loader/dummy.java) \ +@@ -75,7 +76,7 @@ + esac; \ + if test -n "$$genheader"; then \ + $(MYGCJH) $$genheader $$testtmpdir/*.class \ +- -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \ ++ -bootclasspath $(top_builddir)/libgcj-$(gcc_short_version).jar \ + -d $$testtmpdir/ || exit; \ + mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + fi; \ +--- libjava/testsuite/Makefile.in.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/testsuite/Makefile.in 2008-01-13 17:18:45.000000000 +0100 +@@ -327,6 +327,7 @@ + + # May be used by various substitution variables. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_short_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + # Setup the testing framework, if you have one + EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \ +@@ -576,11 +577,11 @@ + @JAVA_MAINTAINER_MODE_TRUE@ rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \ + @JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$testdep"; then \ + @JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +-@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \ ++@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_short_version).jar::$$testtmpdir \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$testdep || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ fi; \ + @JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +-@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \ ++@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_short_version).jar:$$testtmpdir \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$test || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ case "$$test" in \ + @JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/dummy.java) \ +@@ -592,7 +593,7 @@ + @JAVA_MAINTAINER_MODE_TRUE@ esac; \ + @JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$genheader"; then \ + @JAVA_MAINTAINER_MODE_TRUE@ $(MYGCJH) $$genheader $$testtmpdir/*.class \ +-@JAVA_MAINTAINER_MODE_TRUE@ -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \ ++@JAVA_MAINTAINER_MODE_TRUE@ -bootclasspath $(top_builddir)/libgcj-$(gcc_short_version).jar \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir/ || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + @JAVA_MAINTAINER_MODE_TRUE@ fi; \ +--- libjava/Makefile.am.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/Makefile.am 2008-01-13 17:18:45.000000000 +0100 +@@ -5,7 +5,8 @@ + ACLOCAL_AMFLAGS = -I . -I .. -I ../config -I libltdl + + # May be used by various substitution variables. +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_full_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + SUBDIRS = $(DIRLTDL) gcj include classpath + if TESTSUBDIR +@@ -27,9 +28,9 @@ + target_noncanonical = @target_noncanonical@ + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + + ## + ## What gets installed, and where. +@@ -141,7 +142,7 @@ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/gcj-4.3/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- libjava/Makefile.in.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/Makefile.in 2008-01-13 17:18:45.000000000 +0100 +@@ -816,7 +816,8 @@ + ACLOCAL_AMFLAGS = -I . -I .. -I ../config -I libltdl + + # May be used by various substitution variables. +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_full_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + SUBDIRS = $(DIRLTDL) gcj include classpath $(am__append_1) + + # write_entries_to_file - writes each entry in a list +@@ -829,8 +830,8 @@ + write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach object,$(1),$(shell echo $(object) >> $(2))) + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_full_version) ++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \ + $(am__append_2) $(am__append_3) + toolexecmainlib_DATA = libgcj.spec +@@ -875,7 +876,7 @@ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/gcj-4.3/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- libjava/configure.ac.orig 2008-01-13 17:18:20.000000000 +0100 ++++ libjava/configure.ac 2008-01-13 17:18:45.000000000 +0100 +@@ -511,6 +511,9 @@ + AS_HELP_STRING([--with-java-home=DIRECTORY], + [value of java.home system property]), + [JAVA_HOME="${withval}"], [JAVA_HOME=""]) ++if test -n "$with_multisubdir"; then ++ JAVA_HOME=`echo $JAVA_HOME | sed "s,/usr/lib/,/usr/lib$with_multisubdir/,"` ++fi + AM_CONDITIONAL(JAVA_HOME_SET, test ! -z "$JAVA_HOME") + AC_SUBST(JAVA_HOME) + +@@ -1385,6 +1388,7 @@ + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /. ++ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;; + *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;; + esac + ;; +@@ -1395,6 +1399,7 @@ + + # Determine gcj and libgcj version number. + gcjversion=`cat "$srcdir/../gcc/BASE-VER"` ++short_version=`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' $srcdir/../gcc/BASE-VER` + libgcj_soversion=`awk -F: '/^[[^#]].*:/ { print $1 }' $srcdir/libtool-version` + GCJVERSION=$gcjversion + AC_SUBST(GCJVERSION) +@@ -1402,7 +1407,7 @@ + + # Determine where the standard .db file and GNU Classpath JNI + # libraries are found. +-gcjsubdir=gcj-$gcjversion-$libgcj_soversion ++gcjsubdir=gcj-$short_version-$libgcj_soversion + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-xulrunner1.9.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-xulrunner1.9.dpatch new file mode 100644 index 0000000000..19d67d88ba --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libjava-xulrunner1.9.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: Add configure check for xulrunner-1.9. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libjava/classpath && aclocal -I m4 -I ../.. -I ../../config && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/classpath/configure.ac~ 2008-02-22 08:37:10.356094701 +0100 ++++ libjava/classpath/configure.ac 2008-02-22 08:38:49.397588719 +0100 +@@ -702,7 +702,10 @@ + + dnl Check for plugin support headers and libraries. + if test "x${COMPILE_PLUGIN}" = xyes; then +- PKG_CHECK_MODULES(MOZILLA, mozilla-plugin, [MOZILLA_FOUND=yes], [MOZILLA_FOUND=no]) ++ PKG_CHECK_MODULES(MOZILLA, mozilla-plugin libxul-unstable, [MOZILLA_FOUND=yes], [MOZILLA_FOUND=no]) ++ if test "x${MOZILLA_FOUND}" = xno; then ++ PKG_CHECK_MODULES(MOZILLA, mozilla-plugin, [MOZILLA_FOUND=yes], [MOZILLA_FOUND=no]) ++ fi + if test "x${MOZILLA_FOUND}" = xno; then + PKG_CHECK_MODULES(MOZILLA, firefox-plugin firefox-xpcom, [MOZILLA_FOUND=yes], [MOZILLA_FOUND=no]) + fi diff --git a/recipes/gcc/gcc-4.3.4/debian/libobjc-gc-link.dpatch b/recipes/gcc/gcc-4.3.4/debian/libobjc-gc-link.dpatch new file mode 100644 index 0000000000..87cb742c77 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libobjc-gc-link.dpatch @@ -0,0 +1,73 @@ +#! /bin/sh -e + +# DP: Link libobjc_gc with libgcjgc_convenience.la. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libobjc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libobjc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-02-06 Matthias Klose + + * configure.ac (OBJC_BOEHM_GC_LIBS): Link with libgcjgc_convenience.la. + * configure: Regenerate. + * Makefile.in (libobjc_gc$(libsuffix).la): Link with OBJC_BOEHM_GC_LIBS. + +--- libobjc/Makefile.in~ 2007-07-05 10:18:52.000000000 +0200 ++++ libobjc/Makefile.in 2008-02-07 17:17:17.243167905 +0100 +@@ -95,6 +95,7 @@ + OBJC_THREAD_FILE=thr-objc + OBJC_BOEHM_GC=@OBJC_BOEHM_GC@ + OBJC_BOEHM_GC_INCLUDES=@OBJC_BOEHM_GC_INCLUDES@ ++OBJC_BOEHM_GC_LIBS=@OBJC_BOEHM_GC_LIBS@ + + INCLUDES = -I$(srcdir)/objc -I$(srcdir)/$(MULTISRCTOP)../gcc \ + -I$(srcdir)/$(MULTISRCTOP)../gcc/config \ +@@ -281,6 +282,7 @@ + + libobjc_gc$(libsuffix).la: $(OBJS_GC) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ ++ $(OBJC_BOEHM_GC_LIBS) \ + -rpath $(toolexeclibdir) \ + -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) + +--- libobjc/configure.ac~ 2007-10-19 15:14:58.000000000 +0200 ++++ libobjc/configure.ac 2008-02-07 17:25:15.750386077 +0100 +@@ -66,15 +66,18 @@ + no) + OBJC_BOEHM_GC='' + OBJC_BOEHM_GC_INCLUDES='' ++ OBJC_BOEHM_GC_LIBS='' + ;; + *) + OBJC_BOEHM_GC=libobjc_gc.la + OBJC_BOEHM_GC_INCLUDES='-I$(top_srcdir)/../boehm-gc/include -I../boehm-gc/include' ++ OBJC_BOEHM_GC_LIBS='../boehm-gc/libgcjgc_convenience.la -pthread' + ;; + esac], + [OBJC_BOEHM_GC=''; OBJC_BOEHM_GC_INCLUDES='']) + AC_SUBST(OBJC_BOEHM_GC) + AC_SUBST(OBJC_BOEHM_GC_INCLUDES) ++AC_SUBST(OBJC_BOEHM_GC_LIBS) + + # ----------- + # Directories + diff --git a/recipes/gcc/gcc-4.3.4/debian/libssp-gnu.dpatch b/recipes/gcc/gcc-4.3.4/debian/libssp-gnu.dpatch new file mode 100644 index 0000000000..a0c6acd9fc --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libssp-gnu.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh -e + +# DP: GNU/k*BSD support +# Author: Aurelien Jarno +# Status: Submitted: http://gcc.gnu.org/ml/gcc-patches/2007-04/msg01962.html + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- src.orig/gcc/configure 2008-03-01 15:51:06 +0100 ++++ src/gcc/configure 2008-03-01 16:02:24 +0100 +@@ -17110,7 +17110,7 @@ + else + gcc_cv_libc_provides_ssp=no + case "$target" in +- *-*-linux*) ++ *-*-*-gnu*) + if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then + if test "x$with_sysroot" = x; then + glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include" +--- src.orig/gcc/configure.ac 2008-02-01 19:55:55 +0100 ++++ src/gcc/configure.ac 2008-03-01 16:02:06 +0100 +@@ -3379,7 +3379,7 @@ + gcc_cv_libc_provides_ssp, + [gcc_cv_libc_provides_ssp=no + case "$target" in +- *-*-linux*) ++ *-*-*-gnu*) + if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then + if test "x$with_sysroot" = x; then + glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include" + diff --git a/recipes/gcc/gcc-4.3.4/debian/libstdc++-doclink.dpatch b/recipes/gcc/gcc-4.3.4/debian/libstdc++-doclink.dpatch new file mode 100644 index 0000000000..9393296712 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libstdc++-doclink.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# DP: adjust hrefs to point to the local documentation + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libstdc++-v3/doc/doxygen/mainpage.html~ 2008-02-19 21:08:07.375796572 +0100 ++++ libstdc++-v3/doc/doxygen/mainpage.html 2008-02-19 21:14:20.841430216 +0100 +@@ -30,8 +30,8 @@ +

There are two types of documentation for libstdc++. One is the + distribution documentation, which can be read online + here +- or offline from the file doc/html/index.html in the library source +- directory. ++ or offline in the documentation directory ++ here. +

+ +

The other type is the source documentation, of which this is the first page. +@@ -71,9 +71,9 @@ + This style guide can also be viewed on the web. + +

License, Copyright, and Other Lawyerly Verbosity

+-

The libstdc++ documentation is released under +- +- these terms. ++

The libstdc++ documentation is released under these terms ++ (read online, or ++ read offline). +

+

Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: diff --git a/recipes/gcc/gcc-4.3.4/debian/libstdc++-pic.dpatch b/recipes/gcc/gcc-4.3.4/debian/libstdc++-pic.dpatch new file mode 100644 index 0000000000..70c9e81542 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libstdc++-pic.dpatch @@ -0,0 +1,71 @@ +#! /bin/sh -e + +# DP: Build and install libstdc++_pic.a library. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -ur libstdc++-v3/src/Makefile.am libstdc++-v3/src/Makefile.am +--- libstdc++-v3/src/Makefile.am~ 2004-04-16 21:04:05.000000000 +0200 ++++ libstdc++-v3/src/Makefile.am 2004-07-03 20:22:43.000000000 +0200 +@@ -210,6 +210,10 @@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ + + ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Added bits to build debug library. + if GLIBCXX_BUILD_DEBUG + all-local: build_debug +diff -ur libstdc++-v3/src/Makefile.in libstdc++-v3/src/Makefile.in +--- libstdc++-v3/src/Makefile.in 2004-07-03 06:41:13.000000000 +0200 ++++ libstdc++-v3/src/Makefile.in 2004-07-03 20:25:05.000000000 +0200 +@@ -611,7 +611,7 @@ + + install-data-am: install-data-local + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local + + install-info: install-info-am + +@@ -644,6 +644,7 @@ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-exec \ ++ install-exec-local \ + install-exec-am install-info install-info-am install-man \ + install-strip install-toolexeclibLTLIBRARIES installcheck \ + installcheck-am installdirs maintainer-clean \ +@@ -729,6 +730,11 @@ + install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ++ ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/recipes/gcc/gcc-4.3.4/debian/libstdc++-symbols-hppa.dpatch b/recipes/gcc/gcc-4.3.4/debian/libstdc++-symbols-hppa.dpatch new file mode 100644 index 0000000000..250ec3aae5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/libstdc++-symbols-hppa.dpatch @@ -0,0 +1,369 @@ +#! /bin/sh -e + +# DP: Update libstdc++ baseline symbols for hppa. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt +=================================================================== +--- libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (revision 133733) ++++ libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (working copy) +@@ -33,19 +33,51 @@ + FUNC:_ZN10__gnu_norm15_List_node_base6unhookEv@@GLIBCXX_3.4 + FUNC:_ZN10__gnu_norm15_List_node_base7reverseEv@@GLIBCXX_3.4 + FUNC:_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4 ++FUNC:_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@@GLIBCXX_3.4.9 ++FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.9 ++FUNC:_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@@GLIBCXX_3.4.9 + FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@@GLIBCXX_3.4 ++FUNC:_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@@GLIBCXX_3.4.9 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 ++FUNC:_ZN14__gnu_parallel9_Settings3getEv@@GLIBCXX_3.4.10 ++FUNC:_ZN14__gnu_parallel9_Settings3setERS0_@@GLIBCXX_3.4.10 + FUNC:_ZN9__gnu_cxx12__atomic_addEPVii@@GLIBCXX_3.4 + FUNC:_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@@GLIBCXX_3.4.2 + FUNC:_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@@GLIBCXX_3.4.2 + FUNC:_ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@@GLIBCXX_3.4.2 + FUNC:_ZN9__gnu_cxx18__exchange_and_addEPVii@@GLIBCXX_3.4 + FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@@GLIBCXX_3.4.2 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@@GLIBCXX_3.4.10 + FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4.10 ++FUNC:_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4.10 + FUNC:_ZN9__gnu_cxx27__verbose_terminate_handlerEv@@CXXABI_1.3 + FUNC:_ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@@GLIBCXX_3.4.4 + FUNC:_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@@GLIBCXX_3.4.4 +@@ -53,6 +85,7 @@ + FUNC:_ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4 + FUNC:_ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@@GLIBCXX_3.4.4 + FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@@GLIBCXX_3.4.4 ++FUNC:_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@@GLIBCXX_3.4.6 + FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@@GLIBCXX_3.4.4 + FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@@GLIBCXX_3.4.4 + FUNC:_ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@@GLIBCXX_3.4.4 +@@ -81,6 +114,7 @@ + FUNC:_ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@@GLIBCXX_3.4 + FUNC:_ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@@GLIBCXX_3.4 + FUNC:_ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@@GLIBCXX_3.4 ++FUNC:_ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@@GLIBCXX_3.4.10 + FUNC:_ZNK11__gnu_debug16_Error_formatter8_M_errorEv@@GLIBCXX_3.4 + FUNC:_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@@GLIBCXX_3.4 + FUNC:_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@@GLIBCXX_3.4 +@@ -203,6 +237,7 @@ + FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4 + FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4 + FUNC:_ZNKSsixEj@@GLIBCXX_3.4 ++FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4 + FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4 + FUNC:_ZNKSt10moneypunctIcLb0EE10pos_formatEv@@GLIBCXX_3.4 +@@ -301,6 +336,7 @@ + FUNC:_ZNKSt11logic_error4whatEv@@GLIBCXX_3.4 + FUNC:_ZNKSt12__basic_fileIcE7is_openEv@@GLIBCXX_3.4 + FUNC:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4 ++FUNC:_ZNKSt13bad_exception4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@@GLIBCXX_3.4 + FUNC:_ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@@GLIBCXX_3.4 + FUNC:_ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@@GLIBCXX_3.4 +@@ -353,6 +389,16 @@ + FUNC:_ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@@GLIBCXX_3.4 + FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4 + FUNC:_ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@@GLIBCXX_3.4 ++FUNC:_ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt3tr14hashIRKSsEclES2_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt3tr14hashISsEclESs@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt3tr14hashIeEclEe@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt4hashIRKSsEclES1_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt4hashISsEclESs@@GLIBCXX_3.4.10 ++FUNC:_ZNKSt4hashIeEclEe@@GLIBCXX_3.4.10 + FUNC:_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4 + FUNC:_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4 + FUNC:_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4 +@@ -515,6 +561,7 @@ + FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@@GLIBCXX_3.4 + FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@@GLIBCXX_3.4 + FUNC:_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@@GLIBCXX_3.4 ++FUNC:_ZNKSt8bad_cast4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt8ios_base7failure4whatEv@@GLIBCXX_3.4 + FUNC:_ZNKSt8messagesIcE18_M_convert_to_charERKSs@@GLIBCXX_3.4 + FUNC:_ZNKSt8messagesIcE20_M_convert_from_charEPc@@GLIBCXX_3.4 +@@ -591,6 +638,7 @@ + FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@@GLIBCXX_3.4 + FUNC:_ZNKSt8valarrayIjE4sizeEv@@GLIBCXX_3.4 ++FUNC:_ZNKSt9bad_alloc4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@@GLIBCXX_3.4 + FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@@GLIBCXX_3.4 + FUNC:_ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@@GLIBCXX_3.4 +@@ -774,6 +822,17 @@ + FUNC:_ZNSdD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSdD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSdD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSi10_M_extractIPvEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIbEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIdEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIeEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIfEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIjEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIlEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractImEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractItEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIxEERSiRT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSi10_M_extractIyEERSiRT_@@GLIBCXX_3.4.9 + FUNC:_ZNSi3getEPci@@GLIBCXX_3.4 + FUNC:_ZNSi3getEPcic@@GLIBCXX_3.4 + FUNC:_ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 +@@ -833,6 +892,14 @@ + FUNC:_ZNSo6sentryD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSo6sentryD2Ev@@GLIBCXX_3.4 + FUNC:_ZNSo8_M_writeEPKci@@GLIBCXX_3.4 ++FUNC:_ZNSo9_M_insertIPKvEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIbEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIdEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIeEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIlEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertImEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIxEERSoT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSo9_M_insertIyEERSoT_@@GLIBCXX_3.4.9 + FUNC:_ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 + FUNC:_ZNSoC1Ev@@GLIBCXX_3.4 + FUNC:_ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@@GLIBCXX_3.4 +@@ -1206,6 +1273,17 @@ + FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@@GLIBCXX_3.4.9 + FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@@GLIBCXX_3.4 +@@ -1265,6 +1343,14 @@ + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@@GLIBCXX_3.4 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@@GLIBCXX_3.4.9 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@@GLIBCXX_3.4 +@@ -1386,6 +1472,7 @@ + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@@GLIBCXX_3.4.10 + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@@GLIBCXX_3.4 +@@ -1424,6 +1511,7 @@ + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@@GLIBCXX_3.4.10 + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@@GLIBCXX_3.4 +@@ -1455,6 +1543,7 @@ + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@@GLIBCXX_3.4.6 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 +@@ -1471,6 +1560,7 @@ + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@@GLIBCXX_3.4.6 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 +@@ -1660,10 +1750,16 @@ + FUNC:_ZNSt5ctypeIwED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIwED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIwED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt6__norm15_List_node_base4hookEPS0_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt6__norm15_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.9 ++FUNC:_ZNSt6__norm15_List_node_base6unhookEv@@GLIBCXX_3.4.9 ++FUNC:_ZNSt6__norm15_List_node_base7reverseEv@@GLIBCXX_3.4.9 ++FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 + FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 + FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 + FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 + FUNC:_ZNSt6locale21_S_normalize_categoryEi@@GLIBCXX_3.4 ++FUNC:_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@@GLIBCXX_3.4.7 + FUNC:_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@@GLIBCXX_3.4 +@@ -1676,6 +1772,7 @@ + FUNC:_ZNSt6locale5_ImplC2Ej@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5_ImplD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5_ImplD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt6locale5facet13_S_get_c_nameEv@@GLIBCXX_3.4.6 + FUNC:_ZNSt6locale5facet15_S_get_c_localeEv@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@@GLIBCXX_3.4 + FUNC:_ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@@GLIBCXX_3.4 +@@ -1753,7 +1850,9 @@ + FUNC:_ZNSt8bad_castD2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt8ios_base13_M_grow_wordsEib@@GLIBCXX_3.4 + FUNC:_ZNSt8ios_base15sync_with_stdioEb@@GLIBCXX_3.4 ++FUNC:_ZNSt8ios_base17_M_call_callbacksENS_5eventE@@GLIBCXX_3.4.6 + FUNC:_ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4 ++FUNC:_ZNSt8ios_base20_M_dispose_callbacksEv@@GLIBCXX_3.4.6 + FUNC:_ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt8ios_base4InitC2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4 +@@ -1832,6 +1931,11 @@ + FUNC:_ZNSt8valarrayIjED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt8valarrayIjED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt8valarrayIjEixEj@@GLIBCXX_3.4 ++FUNC:_ZNSt9__cxx199815_List_node_base4hookEPS0_@@GLIBCXX_3.4.10 ++FUNC:_ZNSt9__cxx199815_List_node_base4swapERS0_S1_@@GLIBCXX_3.4.10 ++FUNC:_ZNSt9__cxx199815_List_node_base6unhookEv@@GLIBCXX_3.4.10 ++FUNC:_ZNSt9__cxx199815_List_node_base7reverseEv@@GLIBCXX_3.4.10 ++FUNC:_ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.10 + FUNC:_ZNSt9bad_allocD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9bad_allocD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9bad_allocD2Ev@@GLIBCXX_3.4 +@@ -1913,8 +2017,13 @@ + FUNC:_ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@@GLIBCXX_3.4 + FUNC:_ZSt14set_unexpectedPFvvE@@GLIBCXX_3.4 + FUNC:_ZSt15set_new_handlerPFvvE@@GLIBCXX_3.4 ++FUNC:_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 ++FUNC:_ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@@GLIBCXX_3.4.9 + FUNC:_ZSt16__throw_bad_castv@@GLIBCXX_3.4 ++FUNC:_ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6 ++FUNC:_ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@@GLIBCXX_3.4.6 + FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4 ++FUNC:_ZSt17__verify_groupingPKcjRKSs@@GLIBCXX_3.4.10 + FUNC:_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 + FUNC:_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@@GLIBCXX_3.4 + FUNC:_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@@GLIBCXX_3.4 +@@ -1930,6 +2039,8 @@ + FUNC:_ZSt20__throw_length_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt20__throw_out_of_rangePKc@@GLIBCXX_3.4 + FUNC:_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@@GLIBCXX_3.4 ++FUNC:_ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 ++FUNC:_ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@@GLIBCXX_3.4.9 + FUNC:_ZSt21__throw_bad_exceptionv@@GLIBCXX_3.4 + FUNC:_ZSt21__throw_runtime_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt22__throw_overflow_errorPKc@@GLIBCXX_3.4 +@@ -2162,36 +2273,23 @@ + FUNC:__cxa_vec_new@@CXXABI_1.3 + FUNC:__dynamic_cast@@CXXABI_1.3 + FUNC:__gxx_personality_v0@@CXXABI_1.3 +-FUNC:acosl@@GLIBCXX_3.4.3 +-FUNC:asinl@@GLIBCXX_3.4.3 +-FUNC:atan2l@@GLIBCXX_3.4 +-FUNC:atanl@@GLIBCXX_3.4.3 +-FUNC:ceill@@GLIBCXX_3.4.3 +-FUNC:coshl@@GLIBCXX_3.4 +-FUNC:cosl@@GLIBCXX_3.4 +-FUNC:expl@@GLIBCXX_3.4 +-FUNC:floorl@@GLIBCXX_3.4.3 +-FUNC:fmodl@@GLIBCXX_3.4.3 +-FUNC:frexpl@@GLIBCXX_3.4.3 +-FUNC:hypotl@@GLIBCXX_3.4 +-FUNC:ldexpl@@GLIBCXX_3.4.3 +-FUNC:log10l@@GLIBCXX_3.4 +-FUNC:logl@@GLIBCXX_3.4 +-FUNC:modfl@@GLIBCXX_3.4.3 +-FUNC:powl@@GLIBCXX_3.4 +-FUNC:sinhl@@GLIBCXX_3.4 +-FUNC:sinl@@GLIBCXX_3.4 +-FUNC:sqrtl@@GLIBCXX_3.4 +-FUNC:tanhl@@GLIBCXX_3.4 +-FUNC:tanl@@GLIBCXX_3.4 ++FUNC:__signbitl@@GLIBCXX_3.4 + OBJECT:0:CXXABI_1.3 + OBJECT:0:CXXABI_1.3.1 ++OBJECT:0:CXXABI_1.3.2 + OBJECT:0:GLIBCXX_3.4 + OBJECT:0:GLIBCXX_3.4.1 ++OBJECT:0:GLIBCXX_3.4.10 + OBJECT:0:GLIBCXX_3.4.2 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 ++OBJECT:0:GLIBCXX_3.4.6 ++OBJECT:0:GLIBCXX_3.4.7 ++OBJECT:0:GLIBCXX_3.4.8 ++OBJECT:0:GLIBCXX_3.4.9 ++OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10 ++OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10 + OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3 + OBJECT:12:_ZTIN10__cxxabiv117__array_type_infoE@@CXXABI_1.3 + OBJECT:12:_ZTIN10__cxxabiv117__class_type_infoE@@CXXABI_1.3 +@@ -3135,6 +3233,8 @@ + OBJECT:8:_ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 + OBJECT:8:_ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4 + OBJECT:8:_ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4 ++OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2 ++OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2 + OBJECT:8:_ZTINSt6locale5facetE@@GLIBCXX_3.4 + OBJECT:8:_ZTISt10ctype_base@@GLIBCXX_3.4 + OBJECT:8:_ZTISt10money_base@@GLIBCXX_3.4 diff --git a/recipes/gcc/gcc-4.3.4/debian/link-libs.dpatch b/recipes/gcc/gcc-4.3.4/debian/link-libs.dpatch new file mode 100644 index 0000000000..340d5a51be --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/link-libs.dpatch @@ -0,0 +1,157 @@ +#! /bin/sh -e + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/t-slibgcc-elf-ver.orig 2006-10-03 18:16:53.094898500 +0200 ++++ gcc/config/t-slibgcc-elf-ver 2006-10-03 18:17:40.061833750 +0200 +@@ -14,6 +14,7 @@ + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,--soname=$(SHLIB_SONAME) \ + -Wl,--version-script=$(SHLIB_MAP) \ ++ -Wl,-O1 \ + -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ + $(SHLIB_OBJS) $(SHLIB_LC) && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ +--- libstdc++-v3/src/Makefile.am.orig 2006-10-03 18:16:53.186904250 +0200 ++++ libstdc++-v3/src/Makefile.am 2006-10-03 18:17:40.121837500 +0200 +@@ -185,6 +185,7 @@ + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + # Use special rules for the deprecated source files so that they find +--- libstdc++-v3/src/Makefile.in.orig 2006-10-03 18:16:53.206905500 +0200 ++++ libstdc++-v3/src/Makefile.in 2006-10-03 18:17:40.137838500 +0200 +@@ -387,6 +387,7 @@ + + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + +--- libobjc/Makefile.in.orig 2006-10-03 18:16:53.098898750 +0200 ++++ libobjc/Makefile.in 2006-10-03 18:17:40.061833750 +0200 +@@ -276,11 +276,13 @@ + libobjc$(libext).la: $(OBJS) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) + + libobjc_gc$(libext).la: $(OBJS_GC) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) + + # +--- libgfortran/Makefile.am.orig 2006-10-03 18:16:53.102899000 +0200 ++++ libgfortran/Makefile.am 2006-10-03 18:18:59.566802500 +0200 +@@ -7,7 +7,7 @@ + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + + toolexeclib_LTLIBRARIES = libgfortran.la +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) -Wl,-O1 + + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +--- libgfortran/Makefile.in.orig 2006-10-03 18:16:53.106899250 +0200 ++++ libgfortran/Makefile.in 2006-10-03 18:19:17.543926000 +0200 +@@ -359,7 +359,7 @@ + ACLOCAL_AMFLAGS = -I ../config + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + toolexeclib_LTLIBRARIES = libgfortran.la +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) -Wl,-O1 + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libgfortranbegin_la_SOURCES = fmain.c +--- libmudflap/Makefile.am.orig 2006-10-03 18:16:53.182904000 +0200 ++++ libmudflap/Makefile.am 2006-10-03 18:17:40.117837250 +0200 +@@ -34,7 +34,7 @@ + mf-hooks2.c + libmudflap_la_LIBADD = + libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) +-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + clean-local: + rm -f pth/*.o pth/*.lo +--- libmudflap/Makefile.in.orig 2006-10-03 18:16:53.182904000 +0200 ++++ libmudflap/Makefile.in 2006-10-03 18:17:40.121837500 +0200 +@@ -241,7 +241,7 @@ + + libmudflap_la_LIBADD = + libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) +-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + libmudflapth_la_SOURCES = + libmudflapth_la_LIBADD = \ + pth/mf-runtime.lo \ +--- libffi/Makefile.am.orig 2006-10-03 18:16:53.098898750 +0200 ++++ libffi/Makefile.am 2006-10-03 18:17:40.061833750 +0200 +@@ -154,7 +154,7 @@ + + AM_CFLAGS = -Wall -g -fexceptions + +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) +--- libffi/Makefile.in.orig 2006-10-03 18:16:53.102899000 +0200 ++++ libffi/Makefile.in 2006-10-03 18:17:40.065834000 +0200 +@@ -436,7 +436,7 @@ + libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) + nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + AM_CFLAGS = -Wall -g -fexceptions +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) + all: fficonfig.h +--- libjava/Makefile.am.orig 2006-10-03 18:16:53.130900750 +0200 ++++ libjava/Makefile.am 2006-10-03 18:17:40.093835750 +0200 +@@ -97,7 +97,7 @@ + GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ + $(LDFLAGS) -o $@ + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ ++ $(LDFLAGS) $(extra_ldflags_libjava) -Wl,-O1 -o $@ + + GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ + +--- libjava/Makefile.in.orig 2006-10-03 18:16:53.162902750 +0200 ++++ libjava/Makefile.in 2006-10-03 18:17:40.117837250 +0200 +@@ -733,7 +733,7 @@ + $(LDFLAGS) -o $@ + + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ ++ $(LDFLAGS) $(extra_ldflags_libjava) -Wl,-O1 -o $@ + + WARNINGS = -Wextra -Wall + AM_CXXFLAGS = \ diff --git a/recipes/gcc/gcc-4.3.4/debian/mips-triarch.dpatch b/recipes/gcc/gcc-4.3.4/debian/mips-triarch.dpatch new file mode 100644 index 0000000000..5738bb4791 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/mips-triarch.dpatch @@ -0,0 +1,61 @@ +#! /bin/sh -e + +# DP: Patch author: Stuart Anderson +# DP: Upstream status: Not submitted +# DP: Description: add full tri-arch support. Include linux64.h also fix up +# DP: Description: the directory names so that o32 is the default and follow +# DP: Description: the glibc convention for 32 & 64 bit names + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src/gcc/config/mips/linux64.h 2007-08-02 12:49:31.000000000 +0200 ++++ src/gcc/config/mips/linux64.h 2008-03-14 14:33:41.000000000 +0100 +@@ -24,7 +24,7 @@ + #define DRIVER_SELF_SPECS \ + NO_SHARED_SPECS \ + " %{!EB:%{!EL:%(endian_spec)}}" \ +-" %{!mabi=*: -mabi=n32}" ++" %{!mabi=*: -mabi=32}" + + #undef SUBTARGET_ASM_SPEC + #define SUBTARGET_ASM_SPEC "\ +--- src/gcc/config/mips/t-linux64 2006-06-06 14:51:24.000000000 +0200 ++++ src/gcc/config/mips/t-linux64 2008-03-14 14:26:21.000000000 +0100 +@@ -1,5 +1,5 @@ + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 +-MULTILIB_DIRNAMES = n32 32 64 ++MULTILIB_DIRNAMES = n32 . 64 + MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64 + + EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o +--- src/gcc/config.gcc 2008-01-29 17:28:10.000000000 +0100 ++++ src/gcc/config.gcc 2008-03-14 14:26:21.000000000 +0100 +@@ -1680,7 +1680,8 @@ + test x$with_llsc != x || with_llsc=yes + ;; + mips*-*-linux*) # Linux MIPS, either endian. +- tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" ++ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h" ++ tmake_file="${tmake_file} mips/t-linux64" + case ${target} in + mipsisa32r2*) + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33" diff --git a/recipes/gcc/gcc-4.3.4/debian/mudflap-nocheck.dpatch b/recipes/gcc/gcc-4.3.4/debian/mudflap-nocheck.dpatch new file mode 100644 index 0000000000..9f8f025d82 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/mudflap-nocheck.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: Disable running the libmudflap testsuite. Getting killed on alpha. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libmudflap/testsuite/Makefile.in~ 2005-09-23 18:33:47.000000000 +0200 ++++ libmudflap/testsuite/Makefile.in 2006-03-25 20:31:45.044903808 +0100 +@@ -218,6 +218,8 @@ + + + check-DEJAGNU: site.exp ++ @echo target $@ disabled for Debian build. ++check-DEJAGNU-disabled: site.exp + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ diff --git a/recipes/gcc/gcc-4.3.4/debian/multiarch-include.dpatch b/recipes/gcc/gcc-4.3.4/debian/multiarch-include.dpatch new file mode 100644 index 0000000000..2580444e7d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/multiarch-include.dpatch @@ -0,0 +1,138 @@ +#! /bin/sh -e + +# DP: biarch-include.dpatch +# DP: +# DP: Adds biarch include directories +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: to the system include paths, depending on 32/64 bit mode. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/cppdefault.c +=================================================================== +--- gcc/cppdefault.c (revision 112832) ++++ gcc/cppdefault.c (working copy) +@@ -60,6 +60,7 @@ + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -83,6 +84,7 @@ + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +Index: gcc/c-incpath.c +=================================================================== +--- gcc/c-incpath.c (revision 112832) ++++ gcc/c-incpath.c (working copy) +@@ -30,6 +30,7 @@ + #include "intl.h" + #include "c-incpath.h" + #include "cppdefault.h" ++#include "errors.h" + + /* Windows does not natively support inodes, and neither does MSDOS. + Cygwin's emulation can generate non-unique inodes, so don't use it. +@@ -121,6 +121,31 @@ + } + } + ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] ++= { ++#include "multiarch.inc" ++ { 0, 0 } ++}; ++ ++static const char* ++multilib_to_multiarch (const char *imultilib) ++{ ++ const struct multiarch_mapping *p; ++ ++ for (p = multiarch_mappings; p->multiarch; p++) ++ { ++ if (!strcmp(p->multilib, imultilib ? imultilib : "")) ++ return p->multiarch; ++ } ++ internal_error("no multiarch mapping for multilib (%s)\n", imultilib); ++} ++ + /* Append the standard include chain defined in cppdefault.c. */ + static void + add_standard_paths (const char *sysroot, const char *iprefix, +@@ -128,6 +153,7 @@ + { + const struct default_include *p; + size_t len; ++ const char *multiarch; + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -146,8 +172,15 @@ + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); +- if (p->multilib && imultilib) ++ if (p->multilib == 1 && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++ if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -166,9 +199,17 @@ + else + str = update_path (p->fname, p->component); + +- if (p->multilib && imultilib) ++ if (p->multilib == 1 && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); + ++ if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++ + add_path (str, SYSTEM, p->cxx_aware, false); + } + } diff --git a/recipes/gcc/gcc-4.3.4/debian/multiarch-lib.dpatch b/recipes/gcc/gcc-4.3.4/debian/multiarch-lib.dpatch new file mode 100644 index 0000000000..93ba09fa39 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/multiarch-lib.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh -e + +# multiarch-lib.dpatch by Stephen Frost + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc.old/config/i386/t-linux64 gcc/config/i386/t-linux64 +--- gcc.old/config/i386/t-linux64 2002-11-28 15:47:02.000000000 +0100 ++++ gcc/config/i386/t-linux64 2004-07-10 07:28:01.000000000 +0200 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = x86_64-linux i486-linux + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +diff -urN gcc.old/config/t-linux gcc/config/t-linux +--- gcc.old/config/t-linux 2004-05-04 18:09:38.000000000 +0200 ++++ gcc/config/t-linux 2004-07-10 07:28:01.000000000 +0200 +@@ -11,3 +11,11 @@ + LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ + $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c + LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c ++ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = 32 ++MULTILIB_OSDIRNAMES = $TARGET_ARCH ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib ++ diff --git a/recipes/gcc/gcc-4.3.4/debian/note-gnu-stack.dpatch b/recipes/gcc/gcc-4.3.4/debian/note-gnu-stack.dpatch new file mode 100644 index 0000000000..3ffc3925d4 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/note-gnu-stack.dpatch @@ -0,0 +1,316 @@ +#! /bin/sh -e + +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + + +boehm-gc/ + +2005-02-08 Jakub Jelinek + + * ia64_save_regs_in_stack.s: Moved to... + * ia64_save_regs_in_stack.S: ... this. Add .note.GNU-stack + on Linux. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + + +Index: boehm-gc/ia64_save_regs_in_stack.s +=================================================================== +--- boehm-gc/ia64_save_regs_in_stack.s (revision 107431) ++++ boehm-gc/ia64_save_regs_in_stack.s (revision 107432) +@@ -1,12 +0,0 @@ +- .text +- .align 16 +- .global GC_save_regs_in_stack +- .proc GC_save_regs_in_stack +-GC_save_regs_in_stack: +- .body +- flushrs +- ;; +- mov r8=ar.bsp +- br.ret.sptk.few rp +- .endp GC_save_regs_in_stack +- +Index: boehm-gc/ia64_save_regs_in_stack.S +=================================================================== +--- boehm-gc/ia64_save_regs_in_stack.S (revision 0) ++++ boehm-gc/ia64_save_regs_in_stack.S (revision 107432) +@@ -0,0 +1,15 @@ ++ .text ++ .align 16 ++ .global GC_save_regs_in_stack ++ .proc GC_save_regs_in_stack ++GC_save_regs_in_stack: ++ .body ++ flushrs ++ ;; ++ mov r8=ar.bsp ++ br.ret.sptk.few rp ++ .endp GC_save_regs_in_stack ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- gcc/config/ia64/linux.h.orig 2006-10-12 02:01:00.000000000 +0200 ++++ gcc/config/ia64/linux.h 2006-12-11 10:33:13.000000000 +0100 +@@ -5,6 +5,8 @@ + + #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); + ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* This is for -profile to use -lc_p instead of -lc. */ + #undef CC1_SPEC + #define CC1_SPEC "%{profile:-p} %{G*}" +--- gcc/config/ia64/lib1funcs.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/lib1funcs.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -792,3 +792,7 @@ + } + .endp __floattitf + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crti.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crti.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -64,3 +64,7 @@ + .body + + # end of crti.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtn.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtn.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -54,3 +54,7 @@ + br.ret.sptk.many b0 + + # end of crtn.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtend.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtend.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -122,3 +122,7 @@ + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtbegin.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtbegin.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -255,3 +255,7 @@ + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/rs6000/ppc-asm.h.orig 2006-01-18 22:46:46.000000000 +0100 ++++ gcc/config/rs6000/ppc-asm.h 2006-12-11 10:33:14.000000000 +0100 +@@ -158,7 +158,7 @@ + .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif +--- libffi/src/powerpc/ppc_closure.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/ppc_closure.S 2006-12-11 10:33:14.000000000 +0100 +@@ -281,3 +281,7 @@ + .LEFDE1: + + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/sysv.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -217,3 +217,7 @@ + .align 2 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/linux64_closure.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/powerpc/linux64_closure.S 2006-12-11 10:33:14.000000000 +0100 +@@ -204,3 +204,7 @@ + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/linux64.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/linux64.S 2006-12-11 10:33:14.000000000 +0100 +@@ -175,3 +175,7 @@ + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/arm/sysv.S.orig 2006-10-12 02:00:57.000000000 +0200 ++++ libffi/src/arm/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -255,3 +255,6 @@ + .ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",%progbits ++#endif +--- libffi/src/m68k/sysv.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/m68k/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -207,3 +207,7 @@ + rts + CFI_ENDPROC() + .size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/alpha/osf.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/alpha/osf.S 2006-12-11 10:33:14.000000000 +0100 +@@ -356,4 +356,8 @@ + .byte 16 # uleb128 offset 16*-8 + .align 3 + $LEFDE3: ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif + #endif +--- libffi/src/x86/sysv.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/x86/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -376,3 +376,7 @@ + #endif + + #endif /* ifndef __x86_64__ */ ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/x86/unix64.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/x86/unix64.S 2006-12-11 10:33:14.000000000 +0100 +@@ -410,3 +410,7 @@ + .LEFDE3: + + #endif /* __x86_64__ */ ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/s390/sysv.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/s390/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -427,3 +427,6 @@ + + #endif + ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/ia64/unix.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/ia64/unix.S 2006-12-11 10:33:14.000000000 +0100 +@@ -553,3 +553,7 @@ + data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/sparc/v9.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/sparc/v9.S 2006-12-11 10:33:14.000000000 +0100 +@@ -300,3 +300,7 @@ + .align 8 + .LLEFDE2: + #endif ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/sparc/v8.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/sparc/v8.S 2006-12-11 10:33:14.000000000 +0100 +@@ -265,3 +265,7 @@ + .byte 0x1f ! uleb128 0x1f + .align WS + .LLEFDE2: ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif diff --git a/recipes/gcc/gcc-4.3.4/debian/powerpc-biarch.dpatch b/recipes/gcc/gcc-4.3.4/debian/powerpc-biarch.dpatch new file mode 100644 index 0000000000..a1d2a727a9 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/powerpc-biarch.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: enable biarch for 32 bit compiler + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/rs6000/t-linux64.orig 2007-09-29 16:03:54.000000000 +0000 ++++ gcc/config/rs6000/t-linux64 2007-09-30 10:36:47.000000000 +0000 +@@ -14,13 +14,13 @@ + # it doesn't tell anything about the 32bit libraries on those systems. Set + # MULTILIB_OSDIRNAMES according to what is found on the target. + +-MULTILIB_OPTIONS = m64/m32 msoft-float +-MULTILIB_DIRNAMES = 64 32 nof ++MULTILIB_OPTIONS = m64/m32 ++MULTILIB_DIRNAMES = 64 32 + MULTILIB_EXTRA_OPTS = fPIC mstrict-align +-MULTILIB_EXCEPTIONS = m64/msoft-float +-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof +-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) ++MULTILIB_EXCEPTIONS = ++MULTILIB_EXCLUSIONS = ++MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_MATCHES = + + softfp_wrap_start := '\#ifndef __powerpc64__' + softfp_wrap_end := '\#endif' diff --git a/recipes/gcc/gcc-4.3.4/debian/ppc64-ada.dpatch b/recipes/gcc/gcc-4.3.4/debian/ppc64-ada.dpatch new file mode 100644 index 0000000000..db9a229c40 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/ppc64-ada.dpatch @@ -0,0 +1,257 @@ +#! /bin/sh -e + +# DP: Add gcc/ada/system-linux-ppc64.ads and use it in gcc/ada/Makefile.in +# DP: + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN src.orig/gcc/ada/Makefile.in src/gcc/ada/Makefile.in +--- src.orig/gcc/ada/Makefile.in 2005-05-02 16:39:32.000000000 +0200 ++++ src/gcc/ada/Makefile.in 2005-05-02 16:36:37.000000000 +0200 +@@ -1346,6 +1346,31 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out powerpc64% linux%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ Max_Priority : constant Positive := 30; ++ Max_Interrupt_Priority : constant Positive := 31; ++ ++ subtype Any_Priority is Integer range 0 .. 31; ++ subtype Priority is Any_Priority range 0 .. 30; ++ subtype Interrupt_Priority is Any_Priority range 31 .. 31; ++ ++ Default_Priority : constant Priority := 15; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ AAMP : constant Boolean := False; ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Functions_Return_By_DSP : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ OpenVMS : constant Boolean := False; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ Front_End_ZCX_Support : constant Boolean := False; ++ ++ -- Obsolete entries, to be removed eventually (bootstrap issues!) ++ ++ High_Integrity_Mode : constant Boolean := False; ++ Long_Shifts_Inlined : constant Boolean := True; ++ ++end System; +diff -urN tmp/gcc/ada/s-auxdec.ads src/gcc/ada/s-auxdec.ads +--- tmp/gcc/ada/s-auxdec.ads 2004-06-11 12:47:36.000000000 +0200 ++++ src/gcc/ada/s-auxdec.ads 2005-05-03 11:34:17.000000000 +0200 +@@ -108,13 +108,13 @@ + pragma Warnings (Off); + + type F_Float is digits 6; +- pragma Float_Representation (VAX_Float, F_Float); ++-- pragma Float_Representation (VAX_Float, F_Float); + + type D_Float is digits 9; +- pragma Float_Representation (Vax_Float, D_Float); ++-- pragma Float_Representation (Vax_Float, D_Float); + + type G_Float is digits 15; +- pragma Float_Representation (Vax_Float, G_Float); ++-- pragma Float_Representation (Vax_Float, G_Float); + + -- Floating point type declarations for IEEE floating point data types + +--- tmp/gcc/ada/s-vaflop.ads 2003-10-21 15:42:18.000000000 +0200 ++++ src/gcc/ada/s-vaflop.ads 2005-05-03 15:24:24.000000000 +0200 +@@ -40,15 +40,15 @@ + -- Suppress warnings if not on Alpha/VAX + + type D is digits 9; +- pragma Float_Representation (VAX_Float, D); ++-- pragma Float_Representation (VAX_Float, D); + -- D Float type on Vax + + type G is digits 15; +- pragma Float_Representation (VAX_Float, G); ++-- pragma Float_Representation (VAX_Float, G); + -- G Float type on Vax + + type F is digits 6; +- pragma Float_Representation (VAX_Float, F); ++-- pragma Float_Representation (VAX_Float, F); + -- F Float type on Vax + + type S is digits 6; diff --git a/recipes/gcc/gcc-4.3.4/debian/pr24170.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr24170.dpatch new file mode 100644 index 0000000000..028291ed6f --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr24170.dpatch @@ -0,0 +1,88 @@ +#! /bin/sh -e + +# DP: Fix PR libgcj/24170. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2008-02-20 Tom Tromey + + PR libgcj/24170: + * java/io/natFilePosix.cc (File::performList): Don't use + readdir_r. + * configure, include/config.h.in: Rebuilt. + * configure.ac: Don't check for readdir_r. + +Index: libjava/configure.ac +=================================================================== +--- libjava/configure.ac (revision 132490) ++++ libjava/configure.ac (revision 132491) +@@ -1023,7 +1023,7 @@ + PLATFORMNET=NoNet + else + AC_CHECK_FUNCS([strerror_r select fstat open fsync sleep opendir \ +- localtime_r readdir_r getpwuid_r getcwd \ ++ localtime_r getpwuid_r getcwd \ + access stat lstat mkdir rename rmdir unlink utime chmod readlink \ + nl_langinfo setlocale \ + inet_pton uname inet_ntoa \ +Index: libjava/include/config.h.in +=================================================================== +--- libjava/include/config.h.in (revision 132490) ++++ libjava/include/config.h.in (revision 132491) +@@ -214,9 +214,6 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_PWD_H + +-/* Define to 1 if you have the `readdir_r' function. */ +-#undef HAVE_READDIR_R +- + /* Define to 1 if you have the `readlink' function. */ + #undef HAVE_READLINK + +Index: libjava/java/io/natFilePosix.cc +=================================================================== +--- libjava/java/io/natFilePosix.cc (revision 132490) ++++ libjava/java/io/natFilePosix.cc (revision 132491) +@@ -1,6 +1,6 @@ + // natFile.cc - Native part of File class for POSIX. + +-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006 ++/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2008 + Free Software Foundation + + This file is part of libgcj. +@@ -292,13 +292,7 @@ + + java::util::ArrayList *list = new java::util::ArrayList (); + struct dirent *d; +-#if defined(HAVE_READDIR_R) && defined(_POSIX_PTHREAD_SEMANTICS) +- int name_max = pathconf (buf, _PC_NAME_MAX); +- char dbuf[sizeof (struct dirent) + name_max + 1]; +- while (readdir_r (dir, (struct dirent *) dbuf, &d) == 0 && d != NULL) +-#else /* HAVE_READDIR_R */ + while ((d = readdir (dir)) != NULL) +-#endif /* HAVE_READDIR_R */ + { + // Omit "." and "..". + if (d->d_name[0] == '.' diff --git a/recipes/gcc/gcc-4.3.4/debian/pr27880.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr27880.dpatch new file mode 100644 index 0000000000..f8f08b0695 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr27880.dpatch @@ -0,0 +1,90 @@ +#! /bin/sh -e + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# DP: PR target/27880: Restore static linking on ia64 with system libunwind +# DP: by adding unwind-compat to the static libgcc. + +2006-06-19 Andreas Schwab + + PR target/27880 + * unwind-compat.c: Wrap everything except _Unwind_GetIPInfo inside + SHARED. + * config/t-libunwind (LIB2ADDEHSTATIC): Add + $(srcdir)/unwind-compat.c. + +Index: gcc/config/t-libunwind +=================================================================== +--- gcc/config/t-libunwind (revision 114767) ++++ gcc/config/t-libunwind (working copy) +@@ -6,7 +6,8 @@ + SHLIB_LC = -lunwind -lc + LIB2ADDEH = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \ + $(srcdir)/unwind-compat.c $(srcdir)/unwind-dw2-fde-compat.c +-LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c ++LIB2ADDEHSTATIC = $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c \ ++ $(srcdir)/unwind-compat.c + + T_CFLAGS += -DUSE_LIBUNWIND_EXCEPTIONS + TARGET_LIBGCC2_CFLAGS += -DUSE_GAS_SYMVER +Index: gcc/unwind-compat.c +=================================================================== +--- gcc/unwind-compat.c (revision 114767) ++++ gcc/unwind-compat.c (working copy) +@@ -35,6 +35,7 @@ + #include "unwind-dw2-fde.h" + #include "unwind-compat.h" + ++#ifdef SHARED + extern _Unwind_Reason_Code __libunwind_Unwind_Backtrace + (_Unwind_Trace_Fn, void *); + +@@ -136,13 +137,6 @@ _Unwind_GetIP (struct _Unwind_Context *c + } + symver (_Unwind_GetIP, GCC_3.0); + +-_Unwind_Ptr +-_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn) +-{ +- *ip_before_insn = 0; +- return __libunwind_Unwind_GetIP (context); +-} +- + extern void *__libunwind_Unwind_GetLanguageSpecificData + (struct _Unwind_Context *); + +@@ -212,4 +206,14 @@ _Unwind_SetIP (struct _Unwind_Context *c + return __libunwind_Unwind_SetIP (context, val); + } + symver (_Unwind_SetIP, GCC_3.0); ++#endif /* SHARED */ ++ ++extern _Unwind_Ptr __libunwind_Unwind_GetIP (struct _Unwind_Context *); ++ ++_Unwind_Ptr ++_Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn) ++{ ++ *ip_before_insn = 0; ++ return __libunwind_Unwind_GetIP (context); ++} + #endif + diff --git a/recipes/gcc/gcc-4.3.4/debian/pr28102.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr28102.dpatch new file mode 100644 index 0000000000..bdb546546a --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr28102.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: Apply proposed fix for PR target/28102. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-07-15 Alfred M. Szmidt + + * config/i386/gnu.h (TARGET_C99_FUNCTIONS): Undefine macro. + +Index: gcc/config/i386/gnu.h +=================================================================== +--- gcc/config/i386/gnu.h (revision 115472) ++++ gcc/config/i386/gnu.h (working copy) +@@ -36,3 +36,9 @@ + + /* FIXME: Is a Hurd-specific fallback mechanism necessary? */ + #undef MD_UNWIND_SUPPORT ++ ++/* config.gcc includes i386/linux.h. */ ++#undef TARGET_C99_FUNCTIONS ++#define TARGET_C99_FUNCTIONS 1 ++#undef TARGET_HAS_SINCOS ++#define TARGET_HAS_SINCOS 1 + + diff --git a/recipes/gcc/gcc-4.3.4/debian/pr28322.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr28322.dpatch new file mode 100644 index 0000000000..ea2ea2abcc --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr28322.dpatch @@ -0,0 +1,151 @@ +#! /bin/sh -e + +# DP: Fix PR other/28322, GCC new warnings and compatibility. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +gcc/ + +2008-02-26 Manuel Lopez-Ibanez + + PR other/28322 + * toplev.c (toplev_main): If there are warnings or error, print + errors for ignored options. + * opts.c (ignored_options): New static variable. + (postpone_unknown_option_error): New. + (print_ignored_options): New. + (handle_option): Postpone errors for unknown -Wno-* options. + * opts.h (print_ignored_options): Declare. + +gcc/testsuite/ + +2008-02-26 Manuel Lopez-Ibanez + + PR other/28322 + * gcc.dg/pr28322.c: New. + * gcc.dg/pr28322-2.c: New. + * lib/prune.exp: Ignore "At top level" even if there is no ':' + preceding it. + +Index: gcc/toplev.c +=================================================================== +--- gcc/toplev.c (revision 132801) ++++ gcc/toplev.c (working copy) +@@ -2278,6 +2278,9 @@ + if (!exit_after_options) + do_compile (); + ++ if (warningcount || errorcount) ++ print_ignored_options (); ++ + if (errorcount || sorrycount) + return (FATAL_EXIT_CODE); + +Index: gcc/testsuite/lib/prune.exp +=================================================================== +--- gcc/testsuite/lib/prune.exp (revision 132801) ++++ gcc/testsuite/lib/prune.exp (working copy) +@@ -21,7 +21,7 @@ + #send_user "Before:$text\n" + + regsub -all "(^|\n)(\[^\n\]*: )?In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text +- regsub -all "(^|\n)\[^\n\]*: At (top level|global scope):\[^\n\]*" $text "" text ++ regsub -all "(^|\n)\[^\n\]*(: )?At (top level|global scope):\[^\n\]*" $text "" text + regsub -all "(^|\n)\[^\n\]*: instantiated from \[^\n\]*" $text "" text + regsub -all "(^|\n) inlined from \[^\n\]*" $text "" text + regsub -all "(^|\n)collect2: ld returned \[^\n\]*" $text "" text +Index: gcc/opts.c +=================================================================== +--- gcc/opts.c (revision 132801) ++++ gcc/opts.c (working copy) +@@ -356,6 +356,12 @@ + static VEC(char_p,heap) *flag_instrument_functions_exclude_functions; + static VEC(char_p,heap) *flag_instrument_functions_exclude_files; + ++typedef const char *const_char_p; /* For DEF_VEC_P. */ ++DEF_VEC_P(const_char_p); ++DEF_VEC_ALLOC_P(const_char_p,heap); ++ ++static VEC(const_char_p,heap) *ignored_options; ++ + /* Input file names. */ + const char **in_fnames; + unsigned num_in_fnames; +@@ -434,6 +440,33 @@ + free (bad_lang); + } + ++/* Buffer the unknown option described by the string OPT. Currently, ++ we only complain about unknown -Wno-* options if they may have ++ prevented a diagnostic. Otherwise, we just ignore them. */ ++ ++static void postpone_unknown_option_error(const char *opt) ++{ ++ VEC_safe_push (const_char_p, heap, ignored_options, opt); ++} ++ ++/* Produce an error for each option previously buffered. */ ++ ++void print_ignored_options (void) ++{ ++ location_t saved_loc = input_location; ++ ++ input_location = 0; ++ ++ while (!VEC_empty (const_char_p, ignored_options)) ++ { ++ const char *opt; ++ opt = VEC_pop (const_char_p, ignored_options); ++ error ("unrecognized command line option \"%s\"", opt); ++ } ++ ++ input_location = saved_loc; ++} ++ + /* Handle the switch beginning at ARGV for the language indicated by + LANG_MASK. Returns the number of switches consumed. */ + static unsigned int +@@ -463,6 +496,14 @@ + opt = dup; + value = 0; + opt_index = find_opt (opt + 1, lang_mask | CL_COMMON | CL_TARGET); ++ if (opt_index == cl_options_count && opt[1] == 'W') ++ { ++ /* We don't generate errors for unknown -Wno-* options ++ unless we issue diagnostics. */ ++ postpone_unknown_option_error (argv[0]); ++ result = 1; ++ goto done; ++ } + } + + if (opt_index == cl_options_count) +Index: gcc/opts.h +=================================================================== +--- gcc/opts.h (revision 132801) ++++ gcc/opts.h (working copy) +@@ -105,4 +105,5 @@ + + extern void enable_warning_as_error (const char *arg, int value, + unsigned int lang_mask); ++extern void print_ignored_options (void); + #endif diff --git a/recipes/gcc/gcc-4.3.4/debian/pr30961.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr30961.dpatch new file mode 100644 index 0000000000..b20fdf5bf5 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr30961.dpatch @@ -0,0 +1,179 @@ +#! /bin/sh -e + +# DP: + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +From: "H.J. Lu" +Sender: gcc-patches-owner@gcc.gnu.org +To: gcc-patches@gcc.gnu.org +Subject: PATCH: PR target/30961: [4.1/4.2/4.3 regression] redundant reg/mem stores/moves +Date: Mon, 27 Aug 2007 11:34:12 -0700 + +We start with + +(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG) + +(insn:HI 6 3 10 2 c.c:3 (set (reg:DF 58 [ ]) + (subreg:DF (reg/v:DI 59 [ in ]) 0)) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg/v:DI 59 [ in ]) + (nil))) + +(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ ]) + (reg:DF 58 [ ])) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg:DF 58 [ ]) + (nil))) + +(insn:HI 16 10 0 2 c.c:7 (use (reg/i:DF 21 xmm0 [ ])) -1 (nil)) + +we are trying to allocate registers for insn 6 and we allocate +xmm0 for the return value. Reload doesn't check if xmm0 can be used for +DF 59, it allocates xmm1 for DF 59 and generates: + +Reloads for insn # 6 +Reload 0: reload_in (DF) = (reg:DF 5 di) + SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine + reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0) + reload_reg_rtx: (reg:DF 22 xmm1) +... + +(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK) + +(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG) + +(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp) + (const_int -8 [0xfffffffffffffff8])) [0 S8 A8]) + (reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil)) + +(insn 23 22 6 2 c.c:3 (set (reg:DF 22 xmm1) + (mem/c:DF (plus:DI (reg/f:DI 7 sp) + (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil)) + +(insn:HI 6 23 16 2 c.c:3 (set (reg:DF 21 xmm0 [orig:58 ] [58]) + (reg:DF 22 xmm1)) 102 {*movdf_integer_rex64} (nil)) + +(insn 16 6 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ ])) -1 (nil)) + +This patch tries to use the destination register when reloading for input. It +generates + +Reloads for insn # 6 +Reload 0: reload_in (DF) = (reg:DF 5 di) + SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine + reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0) + reload_reg_rtx: (reg:DF 21 xmm0) +... +(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK) + +(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG) + +(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp) + (const_int -8 [0xfffffffffffffff8])) [0 S8 A8]) + (reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil)) + +(insn 23 22 6 2 c.c:3 (set (reg:DF 21 xmm0) + (mem/c:DF (plus:DI (reg/f:DI 7 sp) + (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil)) + +(insn:HI 6 23 10 2 c.c:3 (set (reg:DF 22 xmm1 [orig:58 ] [58]) + (reg:DF 21 xmm0)) 102 {*movdf_integer_rex64} (nil)) + +(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ ]) + (reg:DF 22 xmm1 [orig:58 ] [58])) 102 {*movdf_integer_rex64} (nil)) + +(insn 16 10 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ ])) -1 (nil)) + + +H.J. +---- +gcc/ + +2007-08-27 H.J. Lu + + PR target/30961 + * reload1.c (find_reg): Favor the hard register in destination + if it is usable and a memory location is needed for reload + input. + +gcc/testsuite/ + +2007-08-27 H.J. Lu + + PR target/30961 + * gcc.target/i386/pr30961-1.c: New. + +--- gcc/reload1.c.second 2007-08-27 09:35:08.000000000 -0700 ++++ gcc/reload1.c 2007-08-27 09:36:33.000000000 -0700 +@@ -1781,6 +1781,20 @@ find_reg (struct insn_chain *chain, int + HARD_REG_SET not_usable; + HARD_REG_SET used_by_other_reload; + reg_set_iterator rsi; ++#ifdef SECONDARY_MEMORY_NEEDED ++ rtx body = PATTERN (chain->insn); ++ unsigned int dest_reg = FIRST_PSEUDO_REGISTER; ++ ++ if (GET_CODE (body) == SET) ++ { ++ rtx dest = SET_DEST (body); ++ ++ if ((REG_P (dest) ++ || (GET_CODE (dest) == SUBREG ++ && REG_P (SUBREG_REG (dest))))) ++ dest_reg = reg_or_subregno (dest); ++ } ++#endif + + COPY_HARD_REG_SET (not_usable, bad_spill_regs); + IOR_HARD_REG_SET (not_usable, bad_spill_regs_global); +@@ -1821,6 +1835,18 @@ find_reg (struct insn_chain *chain, int + this_cost--; + if (rl->out && REG_P (rl->out) && REGNO (rl->out) == regno) + this_cost--; ++#ifdef SECONDARY_MEMORY_NEEDED ++ /* If a memory location is needed for rl->in and dest_reg ++ is usable, we will favor it. */ ++ else if (dest_reg == regno ++ && rl->in ++ && REG_P (rl->in) ++ && REGNO (rl->in) < FIRST_PSEUDO_REGISTER ++ && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (rl->in)), ++ rl->class, ++ rl->mode)) ++ this_cost = 0; ++#endif + if (this_cost < best_cost + /* Among registers with equal cost, prefer caller-saved ones, or + use REG_ALLOC_ORDER if it is defined. */ +--- gcc/testsuite/gcc.target/i386/pr30961-1.c.second 2007-08-27 11:01:59.000000000 -0700 ++++ gcc/testsuite/gcc.target/i386/pr30961-1.c 2007-08-27 11:02:51.000000000 -0700 +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O2" } */ ++ ++double ++convert (long long in) ++{ ++ double f; ++ __builtin_memcpy( &f, &in, sizeof( in ) ); ++ return f; ++} ++ ++/* { dg-final { scan-assembler-not "movapd" } } */ diff --git a/recipes/gcc/gcc-4.3.4/debian/pr33148.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr33148.dpatch new file mode 100644 index 0000000000..bcf30ffb56 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr33148.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh -e + +# DP: Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +From: Jakub Jelinek +Sender: gcc-patches-owner@gcc.gnu.org +To: gcc-patches@gcc.gnu.org +Subject: [PATCH] Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148) +Date: Mon, 27 Aug 2007 07:22:44 -0400 + +Hi! + +PR25600 change introduced an optimization of (neg (lt x 0)) to +(ashirtrt x C), but it is not checking whether x's mode is suitable +for it. As it checks that op1 is const0_rtx, I believe MODE_FLOAT +or VECTOR_MODE_P modes are not a problem, CC modes can certainly appear +in LT's first operand with second operand const0_rtx. +So, when we optimize +(neg:DI (lt:DI (reg:CC ...) (const_int 0))) +we create something like +(sign_extend:DI (ashirtrt:CC (reg:CC ...) (const_int 31))) +which is IMHO invalid RTL, ashirtrt is documented on fixed point modes +only (guess vector modes aren't listed just by omission) and so is +sign_extend. + +Ok for 4.2/trunk? + +2007-08-27 Jakub Jelinek + + PR rtl-optimization/33148 + * simplify-rtx.c (simplify_unary_operation_1): Only optimize + (neg (lt X 0)) if X has scalar int mode. + + * gcc.c-torture/compile/20070827-1.c: New test. + +--- gcc/simplify-rtx.c.jj 2007-08-27 10:15:33.000000000 +0200 ++++ gcc/simplify-rtx.c 2007-08-27 12:12:51.000000000 +0200 +@@ -583,7 +583,8 @@ simplify_unary_operation_1 (enum rtx_cod + /* (neg (lt x 0)) is (ashiftrt X C) if STORE_FLAG_VALUE is 1. */ + /* (neg (lt x 0)) is (lshiftrt X C) if STORE_FLAG_VALUE is -1. */ + if (GET_CODE (op) == LT +- && XEXP (op, 1) == const0_rtx) ++ && XEXP (op, 1) == const0_rtx ++ && SCALAR_INT_MODE_P (GET_MODE (XEXP (op, 0)))) + { + enum machine_mode inner = GET_MODE (XEXP (op, 0)); + int isize = GET_MODE_BITSIZE (inner); +--- gcc/testsuite/gcc.c-torture/compile/20070827-1.c.jj 2007-08-27 12:17:20.000000000 +0200 ++++ gcc/testsuite/gcc.c-torture/compile/20070827-1.c 2007-08-27 12:15:45.000000000 +0200 +@@ -0,0 +1,20 @@ ++/* PR rtl-optimization/33148 */ ++ ++int ++foo (unsigned int *p, int *q, unsigned int w, unsigned int b) ++{ ++ unsigned int i; ++ int mask; ++ ++ if (q[0] < q[1]) ++ mask = 0xff; ++ else ++ mask = 0; ++ ++ for (i = 0; 8 * i < w; i++) ++ { ++ b ^= mask; ++ *p++ = b; ++ } ++ return 0; ++} + + Jakub diff --git a/recipes/gcc/gcc-4.3.4/debian/pr34571.dpatch b/recipes/gcc/gcc-4.3.4/debian/pr34571.dpatch new file mode 100644 index 0000000000..d0a654a3cc --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/pr34571.dpatch @@ -0,0 +1,63 @@ +#! /bin/sh -e + +# DP: Proposed patch for PR target/34571 (alpha) + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2007-12-26 Rask Ingemann Lambertsen + + PR target/34571 + * config/alpha/alpha.c (alpha_cannot_force_const_mem): Use + symbolic_operand. + * varasm.c (output_constant_pool_1): Fix typo. + +Index: gcc/config/alpha/alpha.c +=================================================================== +--- gcc/config/alpha/alpha.c (revision 131132) ++++ gcc/config/alpha/alpha.c (working copy) +@@ -1112,10 +1112,9 @@ alpha_legitimize_address (rtx x, rtx scr + + static bool + alpha_cannot_force_const_mem (rtx x) + { +- enum rtx_code code = GET_CODE (x); +- return code == SYMBOL_REF || code == LABEL_REF || code == CONST; ++ return symbolic_operand (x, GET_MODE (x)); + } + + /* We do not allow indirect calls to be optimized into sibling calls, nor + can we allow a call to a function with a different GP to be optimized +Index: gcc/varasm.c +=================================================================== +--- gcc/varasm.c (revision 131132) ++++ gcc/varasm.c (working copy) +@@ -3709,9 +3709,9 @@ output_constant_pool_1 (struct constant_ + tmp = XEXP (XEXP (x, 0), 0); + /* FALLTHRU */ + + case LABEL_REF: +- tmp = XEXP (x, 0); ++ tmp = XEXP (tmp, 0); + gcc_assert (!INSN_DELETED_P (tmp)); + gcc_assert (!NOTE_P (tmp) + || NOTE_KIND (tmp) != NOTE_INSN_DELETED); + break; diff --git a/recipes/gcc/gcc-4.3.4/debian/rename-info-files.dpatch b/recipes/gcc/gcc-4.3.4/debian/rename-info-files.dpatch new file mode 100644 index 0000000000..665d3e5f33 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/rename-info-files.dpatch @@ -0,0 +1,710 @@ +#! /bin/sh -e + +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +gcc/ChangeLog: + +2004-02-17 Matthias Klose + + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +gcc/java/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gcj.texi: Use macros defined in MAKEINFODEFS for references. + +gcc/treelang/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + Define TREELANG_MAKEINFODEFS macros to pass transformated info file + names to makeinfo. + * treelang.texi: Use macros defined in MAKEINFO_DEFS for references. + + +Index: libgomp/libgomp.texi +=================================================================== +--- libgomp/libgomp.texi.orig 2007-10-29 12:36:42.000000000 +0100 ++++ libgomp/libgomp.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -32,7 +32,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU OpenMP runtime library ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU OpenMP runtime library + @end direntry + + This manual documents the GNU implementation of the OpenMP API for +Index: libgomp/Makefile.am +=================================================================== +--- libgomp/Makefile.am.orig 2007-12-12 12:01:26.000000000 +0100 ++++ libgomp/Makefile.am 2008-02-08 16:27:44.000000000 +0100 +@@ -91,16 +91,19 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info +Index: libgomp/Makefile.in +=================================================================== +--- libgomp/Makefile.in.orig 2008-01-08 17:45:56.000000000 +0100 ++++ libgomp/Makefile.in 2008-02-08 16:27:44.000000000 +0100 +@@ -316,7 +316,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive +@@ -1079,15 +1080,16 @@ install-pdf: $(PDFS) + done + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +Index: gcc/doc/cpp.texi +=================================================================== +--- gcc/doc/cpp.texi.orig 2008-02-04 11:28:51.000000000 +0100 ++++ gcc/doc/cpp.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -52,7 +52,7 @@ This manual contains no Invariant Sectio + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +Index: gcc/doc/cppinternals.texi +=================================================================== +--- gcc/doc/cppinternals.texi.orig 2007-03-11 13:17:34.000000000 +0100 ++++ gcc/doc/cppinternals.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +Index: gcc/doc/extend.texi +=================================================================== +--- gcc/doc/extend.texi.orig 2008-02-04 11:28:51.000000000 +0100 ++++ gcc/doc/extend.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -11497,7 +11497,7 @@ want to write code that checks whether t + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * Volatiles:: What constitutes an access to a volatile object. +Index: gcc/doc/gcc.texi +=================================================================== +--- gcc/doc/gcc.texi.orig 2008-01-24 17:57:55.000000000 +0100 ++++ gcc/doc/gcc.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -65,8 +65,8 @@ included in the section entitled ``GNU F + @ifnottex + @dircategory Software development + @direntry +-* gcc: (gcc). The GNU Compiler Collection. +-* g++: (gcc). The GNU C++ compiler. ++* @value{fngcc}: (@value{fngcc}). The GNU Compiler Collection. ++* @value{fngxx}: (@value{fngcc}). The GNU C++ compiler. + @end direntry + This file documents the use of the GNU compilers. + @sp 1 +@@ -126,7 +126,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +Index: gcc/doc/gccint.texi +=================================================================== +--- gcc/doc/gccint.texi.orig 2007-10-29 14:31:38.000000000 +0100 ++++ gcc/doc/gccint.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -51,7 +51,7 @@ included in the section entitled ``GNU F + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -83,7 +83,7 @@ write front ends for new languages. It + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +Index: gcc/doc/invoke.texi +=================================================================== +--- gcc/doc/invoke.texi.orig 2008-02-07 12:10:09.000000000 +0100 ++++ gcc/doc/invoke.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -7456,7 +7456,7 @@ One of the standard libraries bypassed b + @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or special + needs for some languages. +-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler ++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler + Collection (GCC) Internals}, + for more discussion of @file{libgcc.a}.) + In most cases, you need @file{libgcc.a} even when you want to avoid +@@ -7464,7 +7464,7 @@ other standard libraries. In other word + or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well. + This ensures that you have no unresolved references to internal GCC + library subroutines. (For example, @samp{__main}, used to ensure C++ +-constructors will be called; @pxref{Collect2,,@code{collect2}, gccint, ++constructors will be called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}.) + + @item -pie +@@ -15215,7 +15215,7 @@ Note that you can also specify places to + @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These + take precedence over places specified using environment variables, which + in turn take precedence over those specified by the configuration of GCC@. +-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, ++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}. + + @table @env +@@ -15370,7 +15370,7 @@ the headers it contains change. + + A precompiled header file will be searched for when @code{#include} is + seen in the compilation. As it searches for the included file +-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the ++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the + compiler looks for a precompiled header in each directory just before it + looks for the include file in that directory. The name searched for is + the name specified in the @code{#include} with @samp{.gch} appended. If +Index: gcc/doc/libgcc.texi +=================================================================== +--- gcc/doc/libgcc.texi.orig 2007-10-29 14:31:38.000000000 +0100 ++++ gcc/doc/libgcc.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +Index: gcc/doc/makefile.texi +=================================================================== +--- gcc/doc/makefile.texi.orig 2008-02-04 11:28:51.000000000 +0100 ++++ gcc/doc/makefile.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -139,7 +139,7 @@ regardless of how it itself was compiled + @item profiledbootstrap + Builds a compiler with profiling feedback information. For more + information, see +-@ref{Building,,Building with profile feedback,gccinstall,Installing GCC}. ++@ref{Building,,Building with profile feedback,@value{fngccinstall},Installing GCC}. + + @item restrap + Restart a bootstrap, so that everything that was not built with +Index: gcc/doc/passes.texi +=================================================================== +--- gcc/doc/passes.texi.orig 2008-02-04 11:28:51.000000000 +0100 ++++ gcc/doc/passes.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -191,7 +191,7 @@ rid of it. This pass is located in @fil + @item Mudflap declaration registration + + If mudflap (@pxref{Optimize Options,,-fmudflap -fmudflapth +--fmudflapir,gcc,Using the GNU Compiler Collection (GCC)}) is ++-fmudflapir,@value{fngcc},Using the GNU Compiler Collection (GCC)}) is + enabled, we generate code to register some variable declarations with + the mudflap runtime. Specifically, the runtime tracks the lifetimes of + those variable declarations that have their addresses taken, or whose +Index: gcc/doc/standards.texi +=================================================================== +--- gcc/doc/standards.texi.orig 2007-12-12 12:01:27.000000000 +0100 ++++ gcc/doc/standards.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -230,8 +230,8 @@ HTML format. + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. + +-@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj}, ++@xref{Compatibility,,Compatibility with the Java Platform, @value{fngcj}, GNU gcj}, + for details of compatibility between @command{gcj} and the Java Platform. +Index: gcc/java/Make-lang.in +=================================================================== +--- gcc/java/Make-lang.in.orig 2008-02-07 12:10:09.000000000 +0100 ++++ gcc/java/Make-lang.in 2008-02-08 16:27:44.000000000 +0100 +@@ -127,11 +127,23 @@ java.tags: force + etags --include TAGS.sub --include ../TAGS.sub + + +-java.info: doc/gcj.info ++TEXI_GCJ_FILES = java/gcj.texi \ ++ $(gcc_docdir)/include/gpl.texi $(gcc_docdir)/include/funding.texi \ ++ $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi ++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)') + +-java.srcinfo: doc/gcj.info ++java.info: doc/$(INFO_GCJ_NAME).info ++ ++java.srcinfo: doc/$(INFO_GCJ_NAME).info + -cp -p $^ $(srcdir)/doc + ++doc/$(INFO_GCJ_NAME).info: $(TEXI_GCJ_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f $(@)*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) \ ++ -I$(gcc_docdir)/include -I$(srcdir)/f -o$@ $<; \ ++ fi ++ + java.dvi: doc/gcj.dvi + + JAVA_PDFFILES = doc/gcj.pdf +@@ -187,8 +199,9 @@ java.uninstall: + -rm -rf $(DESTDIR)$(man1dir)/gij$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/jv-convert$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/gcj-dbtool$(man1ext) ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info* + +-java.install-info: $(DESTDIR)$(infodir)/gcj.info ++java.install-info: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info + + java.install-pdf: $(JAVA_PDFFILES) + @$(NORMAL_INSTALL) +Index: gcc/java/gcj.texi +=================================================================== +--- gcc/java/gcj.texi.orig 2007-12-12 12:01:27.000000000 +0100 ++++ gcc/java/gcj.texi 2008-02-08 17:19:48.000000000 +0100 +@@ -56,21 +56,21 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gcj: (gcj). Ahead-of-time compiler for the Java language ++* @value{fngcj}: (@value{fngcj}). Ahead-of-time compiler for the Java language + @end direntry + + @dircategory Individual utilities + @direntry +-* jcf-dump: (gcj)Invoking jcf-dump. ++* jcf-dump: (@value{fngcj}) Invoking jcf-dump. + Print information about Java class files +-* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode +-* gcj-dbtool: (gcj)Invoking gcj-dbtool. ++* gij: (@value{fngcj}) Invoking gij. GNU interpreter for Java bytecode ++* gcj-dbtool: (@value{fngcj}) Invoking gcj-dbtool. + Tool for manipulating class file databases. +-* jv-convert: (gcj)Invoking jv-convert. ++* jv-convert: (@value{fngcj}) Invoking jv-convert. + Convert file from one encoding to another +-* grmic: (gcj)Invoking grmic. ++* grmic: (@value{fngcj}) Invoking grmic. + Generate stubs for Remote Method Invocation. +-* gc-analyze: (gcj)Invoking gc-analyze. ++* gc-analyze: (@value{fngcj}) Invoking gc-analyze. + Analyze Garbage Collector (GC) memory dumps. + @end direntry + @end format +@@ -152,7 +152,7 @@ and the Info entries for @file{gcj} and + + As @command{gcj} is just another front end to @command{gcc}, it supports many + of the same options as gcc. @xref{Option Summary, , Option Summary, +-gcc, Using the GNU Compiler Collection (GCC)}. This manual only documents the ++@value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual only documents the + options specific to @command{gcj}. + + @c man end +Index: gcc/fortran/Make-lang.in +=================================================================== +--- gcc/fortran/Make-lang.in.orig 2008-02-07 12:10:11.000000000 +0100 ++++ gcc/fortran/Make-lang.in 2008-02-08 16:27:44.000000000 +0100 +@@ -112,7 +112,8 @@ fortran.tags: force + cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info + fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi + fortran.html: $(build_htmldir)/gfortran/index.html + +@@ -154,10 +155,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -225,7 +226,7 @@ fortran.install-common: install-finclude + fi ; \ + fi + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -243,7 +244,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +Index: gcc/fortran/gfortran.texi +=================================================================== +--- gcc/fortran/gfortran.texi.orig 2008-01-25 16:49:43.000000000 +0100 ++++ gcc/fortran/gfortran.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -102,7 +102,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +Index: gcc/treelang/Make-lang.in +=================================================================== +--- gcc/treelang/Make-lang.in.orig 2008-02-07 12:10:11.000000000 +0100 ++++ gcc/treelang/Make-lang.in 2008-02-08 16:27:44.000000000 +0100 +@@ -153,9 +153,12 @@ treelang.tags: force + cd $(srcdir)/treelang; etags -o TAGS.sub *.y *.l *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-treelang.info: doc/treelang.info ++INFO_TREELANG_NAME = $(shell echo treelang|sed '$(program_transform_name)') ++TREELANG_MAKEINFODEFS = -D 'fntreelang $(INFO_TREELANG_NAME)' + +-treelang.srcinfo: doc/treelang.info ++treelang.info: doc/$(INFO_TREELANG_NAME).info ++ ++treelang.srcinfo: doc/$(INFO_TREELANG_NAME).info + -cp -p $^ $(srcdir)/doc + + treelang.dvi: doc/treelang.dvi +@@ -171,8 +174,8 @@ TEXI_TREELANG_FILES = treelang/treelang. + $(gcc_docdir)/include/funding.texi \ + gcc-vers.texi + +-doc/treelang.info: $(TEXI_TREELANG_FILES) +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir)/include -o $@ $< ++doc/$(INFO_TREELANG_NAME).info: $(TEXI_TREELANG_FILES) ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(TREELANG_MAKEINFODEFS) -I $(gcc_docdir)/include -o $@ $< + + doc/treelang.dvi: $(TEXI_TREELANG_FILES) + $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< +@@ -210,7 +213,7 @@ treelang.install.common.done: installdi + $(STAMP) treelang.install.common.done + + # We might not be able to build the info files +-treelang.install-info: $(DESTDIR)$(infodir)/treelang.info ++treelang.install-info: $(DESTDIR)$(infodir)/$(INFO_TREELANG_NAME).info + + treelang.install-pdf: $(TREELANG_PDFFILES) + @$(NORMAL_INSTALL) +@@ -233,6 +236,7 @@ treelang.uninstall: + echo -rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ + rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ + done ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_TREELANG_NAME).info* + -rm treelang.install.common.done + + # +Index: gcc/treelang/treelang.texi +=================================================================== +--- gcc/treelang/treelang.texi.orig 2007-10-29 14:33:20.000000000 +0100 ++++ gcc/treelang/treelang.texi 2008-02-08 16:27:44.000000000 +0100 +@@ -107,7 +107,7 @@ texts being (a) (see below), and with th + @ifnottex + @dircategory Software development + @direntry +-* treelang: (treelang). The GNU Treelang compiler. ++* @value{fntreelang}: (@value{fntreelang}). The GNU Treelang compiler. + @end direntry + @ifset INTERNALS + @ifset USING +@@ -260,7 +260,7 @@ James A. Morrison. + @item + The packaging and compiler portions of GNU Treelang are based largely + on the GCC compiler. +-@xref{Contributors,,Contributors to GCC,GCC,Using and Maintaining GCC}, ++@xref{Contributors,,Contributors to GCC,@value{fngcc},Using and Maintaining GCC}, + for more information. + + @item +@@ -880,7 +880,7 @@ files and accepts Treelang-specific comm + command-line options that are designed to cater to Treelang users + but apply to other languages as well. + +-@xref{G++ and GCC,,Programming Languages Supported by GCC,GCC,Using ++@xref{G++ and GCC,,Programming Languages Supported by GCC,@value{fngcc},Using + the GNU Compiler Collection (GCC)}, + for information on the way different languages are handled + by the GCC compiler (@code{gcc}). +Index: gcc/Makefile.in +=================================================================== +--- gcc/Makefile.in.orig 2008-02-08 16:27:44.000000000 +0100 ++++ gcc/Makefile.in 2008-02-08 17:18:23.000000000 +0100 +@@ -3617,8 +3617,27 @@ stmp-install-fixproto: fixproto + + doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug + +-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ +- doc/gccinstall.info doc/cppinternals.info ++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') ++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') ++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') ++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') ++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') ++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') ++ ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)') ++ ++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ ++ doc/$(INFO_GCCINT_NAME).info \ ++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info ++ ++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' -D 'fngcc $(INFO_GCC_NAME)' \ ++ -D 'fngxx $(INFO_GXX_NAME)' \ ++ -D 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ ++ -D 'fngcj $(INFO_GCJ_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3668,21 +3687,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + # patterns. To use them, put each of the specific targets with its + # specific dependencies but no build commands. + +-doc/cpp.info: $(TEXI_CPP_FILES) +-doc/gcc.info: $(TEXI_GCC_FILES) +-doc/gccint.info: $(TEXI_GCCINT_FILES) +-doc/cppinternals.info: $(TEXI_CPPINT_FILES) +- ++# Generic entry to handle info files, which are not renamed (currently Ada) + doc/%.info: %.texi + if [ x$(BUILD_INFO) = xinfo ]; then \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ + # Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + +@@ -3990,11 +4029,11 @@ install-driver: installdirs xgcc$(exeext + # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir + # to do the install. + install-info:: doc installdirs \ +- $(DESTDIR)$(infodir)/cpp.info \ +- $(DESTDIR)$(infodir)/gcc.info \ +- $(DESTDIR)$(infodir)/cppinternals.info \ +- $(DESTDIR)$(infodir)/gccinstall.info \ +- $(DESTDIR)$(infodir)/gccint.info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs +@@ -4195,8 +4234,11 @@ uninstall: lang.uninstall + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext) +- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* +- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* + # + # These targets are for the dejagnu testsuites. The file site.exp + # contains global variables that all the testsuites will use. +Index: gcc/doc/install.texi +=================================================================== +--- gcc/doc/install.texi.orig 2008-01-30 11:21:55.000000000 +0100 ++++ gcc/doc/install.texi 2008-02-08 16:29:13.000000000 +0100 +@@ -96,7 +96,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +Index: gcc/ada/gnat-style.texi +=================================================================== +--- gcc/ada/gnat-style.texi.orig 2007-10-29 12:59:35.000000000 +0100 ++++ gcc/ada/gnat-style.texi 2008-02-08 17:15:59.000000000 +0100 +@@ -31,7 +31,7 @@ + + @dircategory Software development + @direntry +-* gnat-style: (gnat-style). GNAT Coding Style ++* gnat-style: (gnat-style-4.3). GNAT Coding Style + @end direntry + + @macro syntax{element} +Index: gcc/ada/gnat_rm.texi +=================================================================== +--- gcc/ada/gnat_rm.texi.orig 2008-01-02 11:19:07.000000000 +0100 ++++ gcc/ada/gnat_rm.texi 2008-02-08 17:15:12.000000000 +0100 +@@ -30,7 +30,7 @@ + + @dircategory GNU Ada tools + @direntry +-* GNAT Reference Manual: (gnat_rm). Reference Manual for GNU Ada tools. ++* GNAT Reference Manual: (gnat_rm-4.3). Reference Manual for GNU Ada tools. + @end direntry + + @copying +Index: gcc/ada/gnat_ugn.texi +=================================================================== +--- gcc/ada/gnat_ugn.texi.orig 2008-01-02 11:19:08.000000000 +0100 ++++ gcc/ada/gnat_ugn.texi 2008-02-08 17:15:37.000000000 +0100 +@@ -96,7 +96,7 @@ + + @ifset unw + @set PLATFORM +-@set FILE gnat_ugn_unw ++@set FILE gnat_ugn_unw-4.3 + @end ifset + + @ifset vms diff --git a/recipes/gcc/gcc-4.3.4/debian/s390-biarch.dpatch b/recipes/gcc/gcc-4.3.4/debian/s390-biarch.dpatch new file mode 100644 index 0000000000..392185f9bf --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/s390-biarch.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: enable biarch for 31 bit compiler + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config.gcc~ 2006-06-02 01:59:42.000000000 +0200 ++++ gcc/config.gcc 2006-06-04 18:20:56.272554984 +0200 +@@ -1884,7 +1884,7 @@ + ;; + s390-*-linux*) + tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" +- tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux" ++ tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux s390/t-linux64" + ;; + s390x-*-linux*) + tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" diff --git a/recipes/gcc/gcc-4.3.4/debian/sparc-biarch.dpatch b/recipes/gcc/gcc-4.3.4/debian/sparc-biarch.dpatch new file mode 100644 index 0000000000..bf7a1370c2 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/sparc-biarch.dpatch @@ -0,0 +1,80 @@ +#! /bin/sh -e +# 10_newpatch.dpatch by +# updated for 4.0, 4.1, 4.2 by Matthias Klose +# +# DP: Enable biarch support for the 32bit sparc compiler + +if [ $# -eq 3 ] && [ "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + cd ${dir}libcpp && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir}libcpp && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- gcc/config/sparc/linux64.h.orig 2006-06-04 13:09:21.857528428 -0300 ++++ gcc/config/sparc/linux64.h 2006-06-04 13:11:15.385012057 -0300 +@@ -54,8 +54,8 @@ + + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) + #endif + +-#undef ASM_CPU_DEFAULT_SPEC +-#define ASM_CPU_DEFAULT_SPEC "-Av9a" ++#undef ASM_CPU64_DEFAULT_SPEC ++#define ASM_CPU64_DEFAULT_SPEC "-Av9a" + + /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add + the GNU/Linux magical crtbegin.o file (see crtstuff.c) which +--- gcc/config.gcc.orig 2006-06-04 13:09:21.882530957 -0300 ++++ gcc/config.gcc 2006-06-04 13:14:13.577036688 -0300 +@@ -315,6 +315,7 @@ + ;; + sparc*-*-*) + cpu_type=sparc ++ need_64bit_hwint=yes + ;; + s390*-*-*) + cpu_type=s390 +@@ -2105,9 +2106,16 @@ + use_fixproto=yes + ;; + sparc-*-linux*) # SPARC's running GNU/Linux, libc6 ++ # If cpu is specified, assume we want a 32/64 compiler ++ if test x$with_cpu = x; then + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h" + extra_options="${extra_options} sparc/long-double-switch.opt" + tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm" ++ else ++ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h" ++ extra_options="${extra_options} sparc/long-double-switch.opt" ++ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm" ++ fi + ;; + sparc-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h" +--- libcpp/configure.ac~ 2006-01-18 22:52:36.862072128 +0100 ++++ libcpp/configure.ac 2006-08-15 14:48:00.484137064 +0200 +@@ -124,7 +124,7 @@ + powerpc*-*-* | \ + rs6000*-*-* | \ + s390*-*-* | \ +- sparc64*-*-* | ultrasparc-*-freebsd* | \ ++ sparc*-*-* | ultrasparc-*-freebsd* | \ + sparcv9-*-solaris2* | \ + sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + sh[123456789l]*-*-*) diff --git a/recipes/gcc/gcc-4.3.4/debian/svn-class-updates.dpatch b/recipes/gcc/gcc-4.3.4/debian/svn-class-updates.dpatch new file mode 100644 index 0000000000..14274d86cf --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/svn-class-updates.dpatch @@ -0,0 +1,55 @@ +#! /bin/sh -e + +# DP: updated class files from the 4.2 branch upto 20070804. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + set -x + uudecode class-files.tar.bz2.uue + tar -xv -f class-files.tar.bz2 -C $dir + rm -f class-files.tar.bz2 + ;; + -unpatch) + echo "cannot undo patch $(basename $0)" + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +#! /bin/sh + +dir=gcc-4_2-ubuntu-branch +tag=ubuntu/gcc-4_2_1-release +branch=ubuntu/gcc-4_2-branch + +tmplist=files$$ + +svn diff --summarize \ + svn://gcc.gnu.org/svn/gcc/tags/$tag \ + svn://gcc.gnu.org/svn/gcc/branches/$branch \ + | grep '\.class$' > $tmplist + +sed -n '/^[AM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > neworchanged.list +sed -n '/^[D].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > removed.list +sed -n '/^[^ADM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > unknown.list + +echo "new or changed: $(wc -l neworchanged.list | cut '-d ' -f1), removed $(wc -l removed.list | cut '-d ' -f1): , unknown: $(wc -l unknown.list | cut '-d ' -f1)" +tar -c -j -f class-files.tar.bz2 -C $dir -T neworchanged.list +uuencode class-files.tar.bz2 class-files.tar.bz2 > class-files.tar.bz2.uue + +rm -f $tmplist neworchanged.list removed.list unknown.list + diff --git a/recipes/gcc/gcc-4.3.4/debian/svn-doc-updates.dpatch b/recipes/gcc/gcc-4.3.4/debian/svn-doc-updates.dpatch new file mode 100644 index 0000000000..d4fa85a556 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/svn-doc-updates.dpatch @@ -0,0 +1,79 @@ +#! /bin/sh -e + +# DP: updates from the 4.3 branch upto 20080321 (documentation). + +last_updated() +{ + cat > ${dir}LAST_UPDATED <&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + last_updated + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_3-branch \ +# | awk '/^Index:.*\.class/ {skip=1; next} /^Index:/ { skip=0 } skip==0' + +Index: gcc/doc/extend.texi +=================================================================== +--- gcc/doc/extend.texi (.../tags/gcc_4_3_0_release) (revision 133434) ++++ gcc/doc/extend.texi (.../branches/gcc-4_3-branch) (revision 133434) +@@ -3380,7 +3380,8 @@ + + Some machines never actually require alignment; they allow reference to any + data type even at an odd address. For these machines, @code{__alignof__} +-reports the @emph{recommended} alignment of a type. ++reports the smallest alignment that GCC will give the data type, usually as ++mandated by the target ABI. + + If the operand of @code{__alignof__} is an lvalue rather than a type, + its value is the required alignment for its type, taking into account +Index: gcc/doc/invoke.texi +=================================================================== +--- gcc/doc/invoke.texi (.../tags/gcc_4_3_0_release) (revision 133434) ++++ gcc/doc/invoke.texi (.../branches/gcc-4_3-branch) (revision 133434) +@@ -5208,8 +5208,9 @@ + @opindex O3 + Optimize yet more. @option{-O3} turns on all optimizations specified by + @option{-O2} and also turns on the @option{-finline-functions}, +-@option{-funswitch-loops}, @option{-fpredictive-commoning} and +-@option{-fgcse-after-reload} options. ++@option{-funswitch-loops}, @option{-fpredictive-commoning}, ++@option{-fgcse-after-reload} and @option{-ftree-vectorize} ++options. + + @item -O0 + @opindex O0 +@@ -5973,7 +5974,8 @@ + + @item -ftree-vectorize + @opindex ftree-vectorize +-Perform loop vectorization on trees. ++Perform loop vectorization on trees. This flag is enabled by default at ++@option{-O3}. + + @item -ftree-vect-loop-version + @opindex ftree-vect-loop-version diff --git a/recipes/gcc/gcc-4.3.4/debian/svn-gdc-updates.dpatch b/recipes/gcc/gcc-4.3.4/debian/svn-gdc-updates.dpatch new file mode 100644 index 0000000000..728209e51d --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/svn-gdc-updates.dpatch @@ -0,0 +1,137 @@ +#! /bin/sh -e + +# svn-gdc-updates.dpatch by Arthur Loiret +# DP: SVN updates from the gdc branch up to 20070831. + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +diff -ruN gcc/d/ChangeLog gcc/d/ChangeLog +--- gcc/d/ChangeLog 2007-08-26 22:34:22.000000000 +0200 ++++ gcc/d/ChangeLog 2007-09-02 19:33:43.000000000 +0200 +@@ -1,3 +1,20 @@ ++2007-08-31 David Friedman ++ ++ * d-objfile.cc (outdata): Do not set TREE_CONSTANT on initializers ++ (Bugzilla 1453) ++ ++2007-08-29 David Friedman ++ ++ * d-decls.cc (uniqueName): Allow multiple static declaration with ++ the same name if in a function. (SF 1783085) ++ ++2007-08-28 David Friedman ++ ++ * d-codegen.cc (call): Use CommaExp correctly. (Bugzilla 1443) ++ ++ * dmd/todt.c (createTsarrayDt): Don't take quadratic time to build ++ the initializer. (Bugzilla 1440) ++ + 2007-08-22 David Friedman + + Release GDC 0.24 +diff -ruN gcc/d/d-codegen.cc gcc/d/d-codegen.cc +--- gcc/d/d-codegen.cc 2007-08-26 22:34:22.000000000 +0200 ++++ gcc/d/d-codegen.cc 2007-09-02 19:33:43.000000000 +0200 +@@ -780,10 +780,12 @@ + if (expr->op == TOKcomma) + { + CommaExp * ce = (CommaExp *) expr; ++ expr = ce->e2; ++ + VarExp * ve; +- expr = ce->e1; +- gcc_assert( ce->e2->op == TOKvar && +- ((VarExp *) ce->e2)->var->isFuncDeclaration() ); ++ gcc_assert( ce->e2->op == TOKvar ); ++ ve = (VarExp *) ce->e2; ++ gcc_assert(ve->var->isFuncDeclaration() && ! ve->var->needThis()); + } + + Type* t = expr->type->toBasetype(); +diff -ruN gcc/d/d-decls.cc gcc/d/d-decls.cc +--- gcc/d/d-decls.cc 2007-08-26 22:34:22.000000000 +0200 ++++ gcc/d/d-decls.cc 2007-09-02 19:33:43.000000000 +0200 +@@ -137,10 +137,17 @@ + FuncDeclaration * f = d->isFuncDeclaration(); + VarDeclaration * v = d->isVarDeclaration(); + +- if (d->protection == PROTprivate && +- !(f && ! f->fbody) && ++ /* Check cases for which it is okay to have a duplicate symbol name. ++ Otherwise, duplicate names are an error and the condition will ++ be caught by the assembler. */ ++ if (!(f && ! f->fbody) && + !(v && (v->storage_class & STCextern)) && +- (!p || p->isModule())) ++ ( ++ // Static declarations in different scope statements ++ (p && p->isFuncDeclaration()) || ++ ++ // Top-level duplicate names are okay if private. ++ ((!p || p->isModule()) && d->protection == PROTprivate) )) + { + StringValue * sv; + +diff -ruN gcc/d/dmd/todt.c gcc/d/dmd/todt.c +--- gcc/d/dmd/todt.c 2007-08-26 22:34:22.000000000 +0200 ++++ gcc/d/dmd/todt.c 2007-09-02 19:33:43.000000000 +0200 +@@ -73,17 +73,18 @@ + + target_size_t dim = tsa->dim->toInteger(); + dt_t * adt = NULL; ++ dt_t ** padt = & adt; + + if (eoa_size * dim == eoa_size) + { + for (target_size_t i = 0; i < dim; i++) +- dtcontainer(& adt, NULL, elem_or_all); ++ padt = dtcontainer(padt, NULL, elem_or_all); + } + else + { + assert(tsa->size(0) % eoa_size == 0); + for (target_size_t i = 0; i < dim; i++) +- dtcontainer(& adt, NULL, ++ padt = dtcontainer(padt, NULL, + createTsarrayDt(elem_or_all, tsa->next)); + } + dt_t * fdt = NULL; +diff -ruN gcc/d/d-objfile.cc gcc/d/d-objfile.cc +--- gcc/d/d-objfile.cc 2007-08-26 22:34:22.000000000 +0200 ++++ gcc/d/d-objfile.cc 2007-09-02 19:33:43.000000000 +0200 +@@ -954,11 +954,8 @@ + + assert( t ); + +- if (sym->Sdt && DECL_INITIAL( t ) == NULL_TREE) { +- tree ini = dt2tree( sym->Sdt ); +- TREE_CONSTANT( ini ) = TREE_CONSTANT( t ); +- DECL_INITIAL( t ) = ini; +- } ++ if (sym->Sdt && DECL_INITIAL( t ) == NULL_TREE) ++ DECL_INITIAL( t ) = dt2tree( sym->Sdt ); + + if (! g.ofile->shouldEmit(sym)) + return; diff --git a/recipes/gcc/gcc-4.3.4/debian/svn-updates.dpatch b/recipes/gcc/gcc-4.3.4/debian/svn-updates.dpatch new file mode 100644 index 0000000000..480eeaeba4 --- /dev/null +++ b/recipes/gcc/gcc-4.3.4/debian/svn-updates.dpatch @@ -0,0 +1,569584 @@ +#! /bin/sh -e + +# DP: updates from the 4.3 branch upto 20080401. + +last_updated() +{ + cat > ${dir}LAST_UPDATED <&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + last_updated + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_3-branch \ +# | awk '/^Index:.*\.class/ {skip=1; next} /^Index:/ { skip=0 } skip==0' + +Index: libgomp/iter.c +=================================================================== +--- libgomp/iter.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ libgomp/iter.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -242,17 +242,17 @@ + if (ws->next == ws->end) + return false; + +- n = (ws->end - ws->next) / ws->incr; ++ start = ws->next; ++ n = (ws->end - start) / ws->incr; + q = (n + nthreads - 1) / nthreads; + + if (q < ws->chunk_size) + q = ws->chunk_size; +- if (q > n) +- q = n; ++ if (q <= n) ++ end = start + q * ws->incr; ++ else ++ end = ws->end; + +- start = ws->next; +- end = start + q * ws->incr; +- + ws->next = end; + *pstart = start; + *pend = end; +@@ -286,16 +286,16 @@ + if (start == end) + return false; + +- n = (end - start) / ws->incr; ++ n = (end - start) / incr; + q = (n + nthreads - 1) / nthreads; + + if (q < chunk_size) + q = chunk_size; +- if (q > n) +- q = n; ++ if (__builtin_expect (q <= n, 1)) ++ nend = start + q * incr; ++ else ++ nend = end; + +- nend = start + q * incr; +- + tmp = __sync_val_compare_and_swap (&ws->next, start, nend); + if (__builtin_expect (tmp == start, 1)) + break; +Index: libgomp/ChangeLog +=================================================================== +--- libgomp/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ libgomp/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,27 @@ ++2008-03-18 Jakub Jelinek ++ ++ PR middle-end/35611 ++ * testsuite/libgomp.c/atomic-4.c: New test. ++ ++ PR libgomp/35625 ++ * iter.c (gomp_iter_guided_next_locked): If q > n, set end to ws->end. ++ (gomp_iter_guided_next): Likewise. ++ * testsuite/libgomp.c/pr35625.c: New test. ++ ++2008-03-13 Jakub Jelinek ++ ++ PR middle-end/35185 ++ * testsuite/libgomp.c++/pr35185.C: New test. ++ ++2008-03-12 Jakub Jelinek ++ ++ PR middle-end/35549 ++ * testsuite/libgomp.c/pr35549.c: New test. ++ ++2008-03-06 Jakub Jelinek ++ ++ * testsuite/libgomp.c/atomic-3.c: New test. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: libgomp/testsuite/libgomp.c++/pr35185.C +=================================================================== +--- libgomp/testsuite/libgomp.c++/pr35185.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ libgomp/testsuite/libgomp.c++/pr35185.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,33 @@ ++// PR middle-end/35185 ++// { dg-do run } ++ ++extern "C" void abort (); ++ ++struct S ++{ ++ S () : s (6) {} ++ ~S () {} ++ int s; ++}; ++ ++__attribute__((noinline)) ++bool ++bar (S s) ++{ ++ return s.s != 6; ++} ++ ++int ++main () ++{ ++ S s; ++ int err = 0; ++#pragma omp parallel shared (s) ++ { ++ if (bar (s)) ++ #pragma omp atomic ++ err++; ++ } ++ if (err) ++ abort (); ++} +Index: libgomp/testsuite/libgomp.c/pr35549.c +=================================================================== +--- libgomp/testsuite/libgomp.c/pr35549.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ libgomp/testsuite/libgomp.c/pr35549.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,30 @@ ++/* PR middle-end/35549 */ ++/* { dg-do run } */ ++ ++#include ++#include ++ ++int ++main (void) ++{ ++ int i = 6, n = 0; ++ omp_set_dynamic (0); ++ omp_set_nested (1); ++ #pragma omp parallel shared (i) num_threads (3) ++ { ++ if (omp_get_num_threads () != 3) ++ #pragma omp atomic ++ n += 1; ++ #pragma omp parallel shared (i) num_threads (4) ++ { ++ if (omp_get_num_threads () != 4) ++ #pragma omp atomic ++ n += 1; ++ #pragma omp critical ++ i += 1; ++ } ++ } ++ if (n == 0 && i != 6 + 3 * 4) ++ abort (); ++ return 0; ++} +Index: libgomp/testsuite/libgomp.c/atomic-4.c +=================================================================== +--- libgomp/testsuite/libgomp.c/atomic-4.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ libgomp/testsuite/libgomp.c/atomic-4.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++/* PR middle-end/35611 */ ++/* { dg-options "-O2" } */ ++ ++extern void abort (void); ++ ++int ++main (void) ++{ ++ long double d = .0L; ++ int i; ++ #pragma omp parallel for shared (d) ++ for (i = 0; i < 1000; i++) ++ #pragma omp atomic ++ d += 1.0L; ++ if (d != 1000.0L) ++ abort (); ++ return 0; ++} +Index: libgomp/testsuite/libgomp.c/pr35625.c +=================================================================== +--- libgomp/testsuite/libgomp.c/pr35625.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ libgomp/testsuite/libgomp.c/pr35625.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++/* PR libgomp/35625 */ ++/* { dg-do run } */ ++/* { dg-options "-std=c99" } */ ++ ++int ++main (void) ++{ ++#pragma omp parallel ++ { ++ #pragma omp for schedule (guided, 10) ++ for (int i = 0; i < 1826; i += 10) ++ ; ++ #pragma omp for schedule (guided, 10) ++ for (int i = 0; i > -1826; i -= 10) ++ ; ++ } ++ return 0; ++} +Index: libgomp/testsuite/libgomp.c/atomic-3.c +=================================================================== +--- libgomp/testsuite/libgomp.c/atomic-3.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ libgomp/testsuite/libgomp.c/atomic-3.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,50 @@ ++/* { dg-do run } */ ++/* { dg-options "-fopenmp -O0" } */ ++ ++#include ++#include ++ ++short e[64]; ++int g; ++_Complex double d, f; ++int num_threads; ++ ++__attribute__((noinline)) void ++foo (int x, long long y) ++{ ++#pragma omp parallel num_threads (4) ++ { ++ int i; ++ #pragma omp barrier ++ for (i = 0; i < 2400; i++) ++ { ++ if (i == 0) ++ num_threads = omp_get_num_threads (); ++ #pragma omp atomic ++ e[0] += x; ++ #pragma omp atomic ++ e[16] += x; ++ #pragma omp atomic ++ g += y; ++ #pragma omp atomic ++ __real__ d += x; ++ #pragma omp atomic ++ __imag__ f += x; ++ } ++ } ++} ++ ++int ++main (void) ++{ ++ int i; ++ foo (3, 3LL); ++ if (g != 3 * 2400 * num_threads ++ || __real__ d != g || __imag__ d != 0 ++ || __real__ f != 0 || __imag__ f != g) ++ abort (); ++ for (i = 0; i < 64; i++) ++ if (e[i] != ((i && i != 16) ? 0 : g)) ++ abort (); ++ return 0; ++} +Index: gcc/doc/include/texinfo.tex +=================================================================== +--- gcc/doc/include/texinfo.tex (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/doc/include/texinfo.tex (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,7 +3,7 @@ + % Load plain if necessary, i.e., if running under initex. + \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi + % +-\def\texinfoversion{2008-02-04.16} ++\def\texinfoversion{2008-03-07.10} + % + % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, + % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +@@ -917,16 +917,21 @@ + \temp + } + +-% @include file insert text of that file as input. ++% @include FILE -- \input text of FILE. + % + \def\include{\parseargusing\filenamecatcodes\includezzz} + \def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% +- \makevalueexpandable +- \input #1 +- }% ++ \makevalueexpandable % we want to expand any @value in FILE. ++ \turnoffactive % and allow special characters in the expansion ++ \edef\temp{\noexpand\input #1 }% ++ % ++ % This trickery is to read FILE outside of a group, in case it makes ++ % definitions, etc. ++ \expandafter ++ }\temp + \popthisfilestack + } + \def\filenamecatcodes{% +@@ -5725,7 +5730,7 @@ + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext +- \expandafter \let\csname top \endcsname=\ptextop % outer ++ \expandafter \let\csname top\endcsname=\ptextop % outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% +Index: gcc/java/jcf-parse.c +=================================================================== +--- gcc/java/jcf-parse.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/java/jcf-parse.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1208,7 +1208,7 @@ + #ifdef USE_MAPPED_LOCATION + { + tree source_name = identifier_subst (class_name, "", '.', '/', ".java"); +- const char *sfname = IDENTIFIER_POINTER (source_name); ++ const char *sfname = find_sourcefile (IDENTIFIER_POINTER (source_name)); + linemap_add (line_table, LC_ENTER, false, sfname, 0); + input_location = linemap_line_start (line_table, 0, 1); + file_start_location = input_location; +Index: gcc/java/Make-lang.in +=================================================================== +--- gcc/java/Make-lang.in (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/java/Make-lang.in (.../branches/gcc-4_3-branch) (revision 133808) +@@ -311,7 +311,7 @@ + $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) + + TEXI_JAVA_FILES = java/gcj.texi $(gcc_docdir)/include/fdl.texi \ +- $(gcc_docdir)/include/gpl.texi $(gcc_docdir)/include/gcc-common.texi \ ++ $(gcc_docdir)/include/gpl_v3.texi $(gcc_docdir)/include/gcc-common.texi \ + gcc-vers.texi + + # Documentation +Index: gcc/java/ChangeLog +=================================================================== +--- gcc/java/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/java/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,14 @@ ++2008-04-01 Joseph Myers ++ ++ * gcj.texi: Include gpl_v3.texi instead of gpl.texi ++ * Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of ++ gpl.texi. ++ ++2008-03-06 Andrew Haley ++ ++ * jcf-parse.c (give_name_to_class): Call find_sourcefile to find ++ full pathname of source file. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: gcc/DATESTAMP +=================================================================== +--- gcc/DATESTAMP (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/DATESTAMP (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1 +1 @@ +-20080305 ++20080401 +Index: gcc/tree.c +=================================================================== +--- gcc/tree.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/tree.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -4067,6 +4067,16 @@ + return NULL_TREE; + } + ++ if (TREE_CODE (node) == TYPE_DECL ++ && TREE_CODE (TREE_TYPE (node)) != RECORD_TYPE ++ && TREE_CODE (TREE_TYPE (node)) != UNION_TYPE) ++ { ++ *no_add_attrs = true; ++ warning (OPT_Wattributes, "%qs attribute ignored", ++ IDENTIFIER_POINTER (name)); ++ return NULL_TREE; ++ } ++ + /* Report error on dllimport ambiguities seen now before they cause + any damage. */ + else if (is_attribute_p ("dllimport", name)) +Index: gcc/fold-const.c +=================================================================== +--- gcc/fold-const.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fold-const.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -5066,9 +5066,10 @@ + + Note that all these transformations are correct if A is + NaN, since the two alternatives (A and -A) are also NaNs. */ +- if ((FLOAT_TYPE_P (TREE_TYPE (arg01)) +- ? real_zerop (arg01) +- : integer_zerop (arg01)) ++ if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type)) ++ && (FLOAT_TYPE_P (TREE_TYPE (arg01)) ++ ? real_zerop (arg01) ++ : integer_zerop (arg01)) + && ((TREE_CODE (arg2) == NEGATE_EXPR + && operand_equal_p (TREE_OPERAND (arg2, 0), arg1, 0)) + /* In the case that A is of the form X-Y, '-A' (arg2) may +@@ -5121,7 +5122,8 @@ + both transformations are correct when A is NaN: A != 0 + is then true, and A == 0 is false. */ + +- if (integer_zerop (arg01) && integer_zerop (arg2)) ++ if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type)) ++ && integer_zerop (arg01) && integer_zerop (arg2)) + { + if (comp_code == NE_EXPR) + return pedantic_non_lvalue (fold_convert (type, arg1)); +@@ -5155,7 +5157,8 @@ + a number and A is not. The conditions in the original + expressions will be false, so all four give B. The min() + and max() versions would give a NaN instead. */ +- if (operand_equal_for_comparison_p (arg01, arg2, arg00) ++ if (!HONOR_SIGNED_ZEROS (TYPE_MODE (type)) ++ && operand_equal_for_comparison_p (arg01, arg2, arg00) + /* Avoid these transformations if the COND_EXPR may be used + as an lvalue in the C++ front-end. PR c++/19199. */ + && (in_gimple_form +@@ -9357,7 +9360,7 @@ + } + } + +- if (DECL_P (expr)) ++ if (DECL_P (expr) && TREE_CODE (expr) != FUNCTION_DECL) + return DECL_ALIGN_UNIT (expr); + } + else if (code == POINTER_PLUS_EXPR) +Index: gcc/omp-low.c +=================================================================== +--- gcc/omp-low.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/omp-low.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -456,7 +456,7 @@ + } + + static inline tree +-maybe_lookup_decl (tree var, omp_context *ctx) ++maybe_lookup_decl (const_tree var, omp_context *ctx) + { + tree *n; + n = (tree *) pointer_map_contains (ctx->cb.decl_map, var); +@@ -479,18 +479,18 @@ + return n ? (tree) n->value : NULL_TREE; + } + +-/* Return true if DECL should be copied by pointer. SHARED_P is true +- if DECL is to be shared. */ ++/* Return true if DECL should be copied by pointer. SHARED_CTX is ++ the parallel context if DECL is to be shared. */ + + static bool +-use_pointer_for_field (const_tree decl, bool shared_p) ++use_pointer_for_field (const_tree decl, omp_context *shared_ctx) + { + if (AGGREGATE_TYPE_P (TREE_TYPE (decl))) + return true; + + /* We can only use copy-in/copy-out semantics for shared variables + when we know the value is not accessible from an outer scope. */ +- if (shared_p) ++ if (shared_ctx) + { + /* ??? Trivially accessible from anywhere. But why would we even + be passing an address in this case? Should we simply assert +@@ -510,6 +510,34 @@ + address taken. */ + if (TREE_ADDRESSABLE (decl)) + return true; ++ ++ /* Disallow copy-in/out in nested parallel if ++ decl is shared in outer parallel, otherwise ++ each thread could store the shared variable ++ in its own copy-in location, making the ++ variable no longer really shared. */ ++ if (!TREE_READONLY (decl) && shared_ctx->is_nested) ++ { ++ omp_context *up; ++ ++ for (up = shared_ctx->outer; up; up = up->outer) ++ if (maybe_lookup_decl (decl, up)) ++ break; ++ ++ if (up && is_parallel_ctx (up)) ++ { ++ tree c; ++ ++ for (c = OMP_PARALLEL_CLAUSES (up->stmt); ++ c; c = OMP_CLAUSE_CHAIN (c)) ++ if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED ++ && OMP_CLAUSE_DECL (c) == decl) ++ break; ++ ++ if (c) ++ return true; ++ } ++ } + } + + return false; +@@ -596,7 +624,7 @@ + } + else if (is_parallel_ctx (ctx)) + { +- bool by_ref = use_pointer_for_field (var, false); ++ bool by_ref = use_pointer_for_field (var, NULL); + x = build_receiver_ref (var, by_ref, ctx); + } + else if (ctx->outer) +@@ -966,7 +994,7 @@ + gcc_assert (is_parallel_ctx (ctx)); + decl = OMP_CLAUSE_DECL (c); + gcc_assert (!is_variable_sized (decl)); +- by_ref = use_pointer_for_field (decl, true); ++ by_ref = use_pointer_for_field (decl, ctx); + /* Global variables don't need to be copied, + the receiver side will use them directly. */ + if (is_global_var (maybe_lookup_decl_in_outer_ctx (decl, ctx))) +@@ -1001,7 +1029,7 @@ + && ! is_global_var (maybe_lookup_decl_in_outer_ctx (decl, + ctx))) + { +- by_ref = use_pointer_for_field (decl, false); ++ by_ref = use_pointer_for_field (decl, NULL); + install_var_field (decl, by_ref, ctx); + } + install_var_local (decl, ctx); +@@ -1014,7 +1042,7 @@ + + case OMP_CLAUSE_COPYIN: + decl = OMP_CLAUSE_DECL (c); +- by_ref = use_pointer_for_field (decl, false); ++ by_ref = use_pointer_for_field (decl, NULL); + install_var_field (decl, by_ref, ctx); + break; + +@@ -1751,7 +1779,7 @@ + /* Set up the DECL_VALUE_EXPR for shared variables now. This + needs to be delayed until after fixup_child_record_type so + that we get the correct type during the dereference. */ +- by_ref = use_pointer_for_field (var, true); ++ by_ref = use_pointer_for_field (var, ctx); + x = build_receiver_ref (var, by_ref, ctx); + SET_DECL_VALUE_EXPR (new_var, x); + DECL_HAS_VALUE_EXPR_P (new_var) = 1; +@@ -1794,7 +1822,7 @@ + break; + + case OMP_CLAUSE_COPYIN: +- by_ref = use_pointer_for_field (var, false); ++ by_ref = use_pointer_for_field (var, NULL); + x = build_receiver_ref (var, by_ref, ctx); + x = lang_hooks.decls.omp_clause_assign_op (c, new_var, x); + append_to_statement_list (x, ©in_seq); +@@ -2007,7 +2035,7 @@ + continue; + + var = OMP_CLAUSE_DECL (c); +- by_ref = use_pointer_for_field (var, false); ++ by_ref = use_pointer_for_field (var, NULL); + + ref = build_sender_ref (var, ctx); + x = lookup_decl_in_outer_ctx (var, ctx); +@@ -2059,7 +2087,7 @@ + continue; + if (is_variable_sized (val)) + continue; +- by_ref = use_pointer_for_field (val, false); ++ by_ref = use_pointer_for_field (val, NULL); + + switch (OMP_CLAUSE_CODE (c)) + { +@@ -2129,7 +2157,7 @@ + mapping for OVAR. */ + var = lookup_decl_in_outer_ctx (ovar, ctx); + +- if (use_pointer_for_field (ovar, true)) ++ if (use_pointer_for_field (ovar, ctx)) + { + x = build_sender_ref (ovar, ctx); + var = build_fold_addr_expr (var); +@@ -4852,184 +4880,177 @@ + pop_gimplify_context (NULL_TREE); + } + ++/* Callback for lower_omp_1. Return non-NULL if *tp needs to be ++ regimplified. */ + +-/* Pass *TP back through the gimplifier within the context determined by WI. +- This handles replacement of DECL_VALUE_EXPR, as well as adjusting the +- flags on ADDR_EXPR. */ +- +-static void +-lower_regimplify (tree *tp, struct walk_stmt_info *wi) ++static tree ++lower_omp_2 (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) + { +- enum gimplify_status gs; +- tree pre = NULL; ++ tree t = *tp; + +- if (wi->is_lhs) +- gs = gimplify_expr (tp, &pre, NULL, is_gimple_lvalue, fb_lvalue); +- else if (wi->val_only) +- gs = gimplify_expr (tp, &pre, NULL, is_gimple_val, fb_rvalue); +- else +- gs = gimplify_expr (tp, &pre, NULL, is_gimple_formal_tmp_var, fb_rvalue); +- gcc_assert (gs == GS_ALL_DONE); ++ /* Any variable with DECL_VALUE_EXPR needs to be regimplified. */ ++ if (TREE_CODE (t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (t)) ++ return t; + +- if (pre) +- tsi_link_before (&wi->tsi, pre, TSI_SAME_STMT); +-} ++ /* If a global variable has been privatized, TREE_CONSTANT on ++ ADDR_EXPR might be wrong. */ ++ if (TREE_CODE (t) == ADDR_EXPR) ++ recompute_tree_invariant_for_addr_expr (t); + +-/* Copy EXP into a temporary. Insert the initialization statement before TSI. */ +- +-static tree +-init_tmp_var (tree exp, tree_stmt_iterator *tsi) +-{ +- tree t, stmt; +- +- t = create_tmp_var (TREE_TYPE (exp), NULL); +- DECL_GIMPLE_REG_P (t) = 1; +- stmt = build_gimple_modify_stmt (t, exp); +- SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi))); +- tsi_link_before (tsi, stmt, TSI_SAME_STMT); +- +- return t; ++ *walk_subtrees = !TYPE_P (t) && !DECL_P (t); ++ return NULL_TREE; + } + +-/* Similarly, but copy from the temporary and insert the statement +- after the iterator. */ +- +-static tree +-save_tmp_var (tree exp, tree_stmt_iterator *tsi) ++static void ++lower_omp_1 (tree *tp, omp_context *ctx, tree_stmt_iterator *tsi) + { +- tree t, stmt; ++ tree t = *tp; + +- t = create_tmp_var (TREE_TYPE (exp), NULL); +- DECL_GIMPLE_REG_P (t) = 1; +- stmt = build_gimple_modify_stmt (exp, t); +- SET_EXPR_LOCUS (stmt, EXPR_LOCUS (tsi_stmt (*tsi))); +- tsi_link_after (tsi, stmt, TSI_SAME_STMT); ++ if (!t) ++ return; + +- return t; +-} ++ if (EXPR_HAS_LOCATION (t)) ++ input_location = EXPR_LOCATION (t); + +-/* Callback for walk_stmts. Lower the OpenMP directive pointed by TP. */ +- +-static tree +-lower_omp_1 (tree *tp, int *walk_subtrees, void *data) +-{ +- struct walk_stmt_info *wi = data; +- omp_context *ctx = wi->info; +- tree t = *tp; +- + /* If we have issued syntax errors, avoid doing any heavy lifting. + Just replace the OpenMP directives with a NOP to avoid + confusing RTL expansion. */ +- if (errorcount && OMP_DIRECTIVE_P (*tp)) ++ if (errorcount && OMP_DIRECTIVE_P (t)) + { + *tp = build_empty_stmt (); +- return NULL_TREE; ++ return; + } + +- *walk_subtrees = 0; +- switch (TREE_CODE (*tp)) ++ switch (TREE_CODE (t)) + { ++ case STATEMENT_LIST: ++ { ++ tree_stmt_iterator i; ++ for (i = tsi_start (t); !tsi_end_p (i); tsi_next (&i)) ++ lower_omp_1 (tsi_stmt_ptr (i), ctx, &i); ++ } ++ break; ++ ++ case COND_EXPR: ++ lower_omp_1 (&COND_EXPR_THEN (t), ctx, NULL); ++ lower_omp_1 (&COND_EXPR_ELSE (t), ctx, NULL); ++ if (ctx ++ && walk_tree (&COND_EXPR_COND (t), lower_omp_2, ctx, NULL)) ++ { ++ tree pre = NULL; ++ gimplify_expr (&COND_EXPR_COND (t), &pre, NULL, ++ is_gimple_condexpr, fb_rvalue); ++ if (pre) ++ { ++ if (tsi) ++ tsi_link_before (tsi, pre, TSI_SAME_STMT); ++ else ++ { ++ append_to_statement_list (t, &pre); ++ *tp = pre; ++ } ++ } ++ } ++ break; ++ case CATCH_EXPR: ++ lower_omp_1 (&CATCH_BODY (t), ctx, NULL); ++ break; ++ case EH_FILTER_EXPR: ++ lower_omp_1 (&EH_FILTER_FAILURE (t), ctx, NULL); ++ break; ++ case TRY_CATCH_EXPR: ++ case TRY_FINALLY_EXPR: ++ lower_omp_1 (&TREE_OPERAND (t, 0), ctx, NULL); ++ lower_omp_1 (&TREE_OPERAND (t, 1), ctx, NULL); ++ break; ++ case BIND_EXPR: ++ lower_omp_1 (&BIND_EXPR_BODY (t), ctx, NULL); ++ break; ++ case RETURN_EXPR: ++ lower_omp_1 (&TREE_OPERAND (t, 0), ctx, NULL); ++ break; ++ + case OMP_PARALLEL: + ctx = maybe_lookup_ctx (t); + lower_omp_parallel (tp, ctx); + break; +- + case OMP_FOR: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_for (tp, ctx); + break; +- + case OMP_SECTIONS: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_sections (tp, ctx); + break; +- + case OMP_SINGLE: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_single (tp, ctx); + break; +- + case OMP_MASTER: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_master (tp, ctx); + break; +- + case OMP_ORDERED: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_ordered (tp, ctx); + break; +- + case OMP_CRITICAL: + ctx = maybe_lookup_ctx (t); + gcc_assert (ctx); + lower_omp_critical (tp, ctx); + break; + +- case VAR_DECL: +- if (ctx && DECL_HAS_VALUE_EXPR_P (t)) ++ default: ++ if (ctx && walk_tree (tp, lower_omp_2, ctx, NULL)) + { +- lower_regimplify (&t, wi); +- if (wi->val_only) ++ /* The gimplifier doesn't gimplify CALL_EXPR_STATIC_CHAIN. ++ Handle that here. */ ++ tree call = get_call_expr_in (t); ++ if (call ++ && CALL_EXPR_STATIC_CHAIN (call) ++ && walk_tree (&CALL_EXPR_STATIC_CHAIN (call), lower_omp_2, ++ ctx, NULL)) + { +- if (wi->is_lhs) +- t = save_tmp_var (t, &wi->tsi); +- else +- t = init_tmp_var (t, &wi->tsi); ++ tree pre = NULL; ++ gimplify_expr (&CALL_EXPR_STATIC_CHAIN (call), &pre, NULL, ++ is_gimple_val, fb_rvalue); ++ if (pre) ++ { ++ if (tsi) ++ tsi_link_before (tsi, pre, TSI_SAME_STMT); ++ else ++ { ++ append_to_statement_list (t, &pre); ++ lower_omp_1 (&pre, ctx, NULL); ++ *tp = pre; ++ return; ++ } ++ } + } +- *tp = t; +- } +- break; + +- case ADDR_EXPR: +- if (ctx) +- lower_regimplify (tp, wi); +- break; +- +- case ARRAY_REF: +- case ARRAY_RANGE_REF: +- case REALPART_EXPR: +- case IMAGPART_EXPR: +- case COMPONENT_REF: +- case VIEW_CONVERT_EXPR: +- if (ctx) +- lower_regimplify (tp, wi); +- break; +- +- case INDIRECT_REF: +- if (ctx) +- { +- wi->is_lhs = false; +- wi->val_only = true; +- lower_regimplify (&TREE_OPERAND (t, 0), wi); ++ if (tsi == NULL) ++ gimplify_stmt (tp); ++ else ++ { ++ tree pre = NULL; ++ gimplify_expr (tp, &pre, NULL, is_gimple_stmt, fb_none); ++ if (pre) ++ tsi_link_before (tsi, pre, TSI_SAME_STMT); ++ } + } + break; +- +- default: +- if (!TYPE_P (t) && !DECL_P (t)) +- *walk_subtrees = 1; +- break; + } +- +- return NULL_TREE; + } + + static void + lower_omp (tree *stmt_p, omp_context *ctx) + { +- struct walk_stmt_info wi; +- +- memset (&wi, 0, sizeof (wi)); +- wi.callback = lower_omp_1; +- wi.info = ctx; +- wi.val_only = true; +- wi.want_locations = true; +- +- walk_stmts (&wi, stmt_p); ++ lower_omp_1 (stmt_p, ctx, NULL); + } + + /* Main entry point. */ +Index: gcc/tree-ssa-dse.c +=================================================================== +--- gcc/tree-ssa-dse.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/tree-ssa-dse.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -470,24 +470,23 @@ + vuse_vec_p vv; + tree stmt_lhs; + +- if (LOADED_SYMS (use_stmt)) ++ /* If use_stmt is or might be a nop assignment, e.g. for ++ struct { ... } S a, b, *p; ... ++ b = a; b = b; ++ or ++ b = a; b = *p; where p might be &b, ++ or ++ *p = a; *p = b; where p might be &b, ++ or ++ *p = *u; *p = *v; where p might be v, then USE_STMT ++ acts as a use as well as definition, so store in STMT ++ is not dead. */ ++ if (LOADED_SYMS (use_stmt) ++ && bitmap_intersect_p (LOADED_SYMS (use_stmt), ++ STORED_SYMS (use_stmt))) + { +- tree use_base +- = get_base_address (GIMPLE_STMT_OPERAND (use_stmt, 0)); +- /* If use_stmt is or might be a nop assignment, e.g. for +- struct { ... } S a, b, *p; ... +- b = a; b = b; +- or +- b = a; b = *p; where p might be &b, then USE_STMT +- acts as a use as well as definition, so store in STMT +- is not dead. */ +- if (TREE_CODE (use_base) == VAR_DECL +- && bitmap_bit_p (LOADED_SYMS (use_stmt), +- DECL_UID (use_base))) +- { +- record_voperand_set (dse_gd->stores, &bd->stores, ann->uid); +- return; +- } ++ record_voperand_set (dse_gd->stores, &bd->stores, ann->uid); ++ return; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +Index: gcc/DEV-PHASE +=================================================================== +--- gcc/DEV-PHASE (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/DEV-PHASE (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1 @@ ++prerelease +Index: gcc/ChangeLog +=================================================================== +--- gcc/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,300 @@ ++2008-04-01 John David Anglin ++ ++ PR middle-end/35705 ++ * fold-const.c (get_pointer_modulus_and_residue): Return modulus 1 if ++ the expression is a function address. ++ ++2008-04-01 Joseph Myers ++ ++ * doc/include/gpl_v3.texi: Update for manpage generation. ++ * doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of ++ gpl.texi. ++ * doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi. ++ * Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include ++ gpl_v3.texi instead of gpl.texi. ++ (gpl.pod): New. ++ ++2008-03-28 Nick Clifton ++ ++ PR target/31232 ++ * config/stormy16/stormy16.c (xstormy16_legitimate_address_p): Do ++ not allow INT+INT as a legitimate addressing mode. ++ ++2008-03-28 Nick Clifton ++ ++ PR target/31110 ++ * config/mn10300/mn10300.c (mn10300_secondary_reload_class): ++ Return GENERAL_REGS for stack adjustment reloads. ++ ++2008-03-27 H.J. Lu ++ ++ Backport from mainline: ++ 2008-03-27 H.J. Lu ++ ++ PR target/35657 ++ * config/i386/i386.c (ix86_function_arg_boundary): Align ++ decimal floating point to its natural boundary. ++ ++2008-03-25 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-19 Richard Guenther ++ ++ PR middle-end/35609 ++ * tree-ssa.c (walk_data): New structure. ++ (warn_uninitialized_var): If not always_executed warn with "maybe" ++ instead of "is". ++ (execute_early_warn_uninitialized): Compute post-dominators. ++ Initialize always_executed before processing each basic block. ++ ++2008-03-20 Ira Rosen ++ ++ * doc/invoke.texi (-O3): Add -ftree-vectorize to the list of ++ optimizations turned on under -O3. ++ (ftree-vectorize): Add that the flag is turned on with -O3. ++ ++2008-03-19 Michael Matz ++ ++ Backport from mainline: ++ 2008-03-19 Michael Matz ++ ++ PR middle-end/35616 ++ * calls.c (expand_call): Check overlap of arguments with call ++ address for sibcalls. ++ ++2008-03-19 Michael Matz ++ ++ * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden. ++ ++2008-03-19 Andreas Krebbel ++ ++ * cse.c (cse_insn): Avoid creation of overlapping MEMs. ++ * alias.c (nonoverlapping_memrefs_p): Export for use in other modules. ++ * alias.h (nonoverlapping_memrefs_p): Likewise. ++ ++2008-03-19 Andreas Krebbel ++ ++ * cse.c (cse_extended_basic_block): Invalidate artificial defs ++ at bb start. ++ ++2008-03-18 Mikulas Patocka ++ ++ PR target/35504 ++ * config/i386/i386.c (x86_this_parameter): Calculate correct location ++ of "this" pointer when "regparm = N" or "fastcall" is in effect. ++ ++2008-03-18 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-15 Richard Guenther ++ ++ PR middle-end/35593 ++ * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make sure ++ to not produce negative array indices if not allowed. Add ++ parameter to indicate that. ++ (maybe_fold_offset_to_component_ref): Allow negative array ++ indices only for the first member of a structure. ++ (maybe_fold_offset_to_reference): Allow negative array indices. ++ (maybe_fold_stmt_addition): Likewise. ++ ++2008-03-18 Jakub Jelinek ++ ++ PR middle-end/35611 ++ * gimplify.c (gimplify_expr): Gimplify second operand of ++ OMP_ATOMIC_LOAD. ++ ++2008-03-16 James E. Wilson ++ ++ PR debug/31510 ++ * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for ++ emulated thread local variables. ++ ++2008-03-16 Hans-Peter Nilsson ++ ++ * doc/extend.texi (Alignment): Say that the ABI controls ++ the __alignof__ for non-strict-alignment targets rather ++ than being a recommendation. ++ ++2008-03-14 Richard Guenther ++ ++ Backport from mainline: ++ 2008-02-19 Richard Guenther ++ ++ PR tree-optimization/34989 ++ * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Re-structure. ++ Allow propagation to INDIRECT_REF if we can simplify only. ++ ++2008-03-14 Uros Bizjak ++ ++ PR target/34000 ++ PR target/35553 ++ * config/i386/xmmintrin.h: Change all static inline functions to ++ extern inline and add __gnu_inline__ attribute. ++ * config/i386/bmintrin.h: Ditto. ++ * config/i386/smmintrin.h: Ditto. ++ * config/i386/tmmintrin.h: Ditto. ++ * config/i386/mmintrin-common.h: Ditto. ++ * config/i386/ammintrin.h: Ditto. ++ * config/i386/emmintrin.h: Ditto. ++ * config/i386/pmmintrin.h: Ditto. ++ * config/i386/mmintrin.h: Ditto. ++ * config/i386/mm3dnow.h: Ditto. ++ ++2008-03-13 Jakub Jelinek ++ ++ PR middle-end/35185 ++ * omp-low.c (lower_regimplify, init_tmp_var, save_tmp_var): Removed. ++ (lower_omp_2): New function. ++ (lower_omp_1, lower_omp): Rewritten. ++ ++2008-03-12 Jakub Jelinek ++ ++ PR middle-end/35549 ++ * omp-low.c (maybe_lookup_decl): Constify first argument. ++ (use_pointer_for_field): Change last argument from bool to ++ omp_context *. Disallow shared copy-in/out in nested ++ parallel if decl is shared in outer parallel too. ++ (build_outer_var_ref, scan_sharing_clauses, ++ lower_rec_input_clauses, lower_copyprivate_clauses, ++ lower_send_clauses, lower_send_shared_vars): Adjust callers. ++ ++2008-03-12 Uros Bizjak ++ ++ PR target/35540 ++ * config/i386/i386.md (paritysi2, paritydi2): Use register_operand ++ constraint for operand 1. ++ (paritysi2_cmp): Use register_operand constraint for operand 2. ++ Use earlyclobber modifier for operand 1. Remove support for ++ memory operands. ++ (paritydi2_cmp): Use register_operand constraint for operand 3. ++ Use earlyclobber modifier for operand 1. Remove support for ++ memory operands. ++ ++2008-03-11 Uros Bizjak ++ ++ PR middle-end/35526 ++ * expr.c (store_expr): Call emit_block_move if the mode ++ of "temp" RTX is BLKmode. ++ ++2008-03-10 Vladimir Makarov ++ ++ * config/i386/sse.md (ssse3_pmaddubswv8hi3, ssse3_pmaddubswv4hi3): ++ Remove commutativity hint. ++ ++2008-03-10 Jakub Jelinek ++ ++ PR c/35438 ++ PR c/35439 ++ * c-parser.c (c_parser_omp_threadprivate): Don't add vars with ++ errorneous type. Check that v is a VAR_DECL. ++ ++ PR middle-end/35099 ++ * tree-cfg.c (new_label_mapper): Update cfun->last_label_uid. ++ ++2008-03-10 Uros Bizjak ++ ++ Backport from mainline: ++ 2008-03-09 Uros Bizjak ++ ++ PR target/35496 ++ * config/i386/i386.c (ix86_constant_alignment): Compute alignment using ++ ALIGN_MODE_128 for VECTOR_CST and INTEGER_CST in addition to REAL_CST. ++ ++ 2008-03-04 Uros Bizjak ++ ++ PR middle-end/35456 ++ * fold-const.c (fold_cond_expr_with_comparison): Prevent ++ transformations for modes that have signed zeros. ++ * ifcvt.c (noce_try_abs): Ditto. ++ ++2008-03-09 Kaz Kojima ++ ++ Backport from mainline: ++ PR target/35225 ++ * config/sh/sh.c (find_barrier): Don't go past 'from' argument. ++ ++2008-03-09 Kaz Kojima ++ ++ Backport from mainline: ++ PR target/35190 ++ * config/sh/sh.md (jump_compact): Disable for crossing jumps. ++ ++ * config/sh/sh.c (find_barrier): Don't go past ++ NOTE_INSN_SWITCH_TEXT_SECTIONS note. ++ ++2008-03-08 Jakub Jelinek ++ ++ PR target/35498 ++ * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): Shift ++ wdst back after sync_compare_and_swapqhi_internal. ++ ++2008-03-07 Joseph Myers ++ ++ * doc/include/texinfo.tex: Update to version 2008-03-07.10. ++ ++2008-03-07 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-05 Richard Guenther ++ ++ PR tree-optimization/35472 ++ * tree-ssa-dse.c (dse_optimize_stmt): Do not delete a store ++ whose single use_stmt has a overlapping set of loaded and ++ stored symbols as that use_stmt might be a noop assignment then. ++ ++2008-03-06 H.J. Lu ++ ++ Backport from mainline: ++ 2008-02-18 H.J. Lu ++ ++ PR target/35189 ++ * config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New. ++ (OPTION_MASK_ISA_3DNOW_SET): Likewise. ++ (OPTION_MASK_ISA_SSE_SET): Likewise. ++ (OPTION_MASK_ISA_SSE2_SET): Likewise. ++ (OPTION_MASK_ISA_SSE3_SET): Likewise. ++ (OPTION_MASK_ISA_SSSE3_SET): Likewise. ++ (OPTION_MASK_ISA_SSE4_1_SET): Likewise. ++ (OPTION_MASK_ISA_SSE4_2_SET): Likewise. ++ (OPTION_MASK_ISA_SSE4_SET): Likewise. ++ (OPTION_MASK_ISA_SSE4A_SET): Likewise. ++ (OPTION_MASK_ISA_SSE5_SET): Likewise. ++ (OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise. ++ (OPTION_MASK_ISA_MMX_UNSET): Updated. ++ (OPTION_MASK_ISA_3DNOW_UNSET): Updated. ++ (OPTION_MASK_ISA_SSE_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE3_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSSE3_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE4A_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE5_UNSET): Likewise. ++ (OPTION_MASK_ISA_SSE4): Removed. ++ (ix86_handle_option): Turn on bits in ix86_isa_flags and ++ ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for -mXXX. ++ (override_options): Don't turn on implied SSE/MMX bits in ++ ix86_isa_flags. ++ ++2008-03-06 Jakub Jelinek ++ ++ * gimplify.c (goa_lhs_expr_p): Allow different ADDR_EXPR nodes ++ for the same VAR_DECL. ++ ++2008-03-06 Daniel Jacobowitz ++ ++ * expmed.c (extract_bit_field): Always use adjust_address for MEM. ++ ++2008-03-06 Joseph Myers ++ ++ PR target/33963 ++ * tree.c (handle_dll_attribute): Disallow TYPE_DECLs for types ++ other than structures and unions. ++ ++2008-03-06 Jakub Jelinek ++ ++ * BASE-VER: Set to 4.3.1. ++ * DEV-PHASE: Set to prerelease. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +@@ -56,12 +353,12 @@ + Uros Bizjak + + PR target/25477 +- * gcc/config/darwin-protos.h: Add darwin_patch_builtins prototype. +- * gcc/config/darwin-ppc-ldouble-patch.def: New file. +- * gcc/config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro. +- * gcc/config/rs6000/rs6000.c (rs6000_init_builtins): Call ++ * config/darwin-protos.h: Add darwin_patch_builtins prototype. ++ * config/darwin-ppc-ldouble-patch.def: New file. ++ * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro. ++ * config/rs6000/rs6000.c (rs6000_init_builtins): Call + SUBTARGET_INIT_BUILTINS if defined. +- * gcc/config/darwin.c (darwin_patch_builtin, ++ * config/darwin.c (darwin_patch_builtin, + darwin_patch_builtins): New functions. + + 2008-02-27 Richard Guenther +@@ -2122,7 +2419,7 @@ + 2008-01-02 Arthur Norman + + PR target/34013 +- * gcc/config/i386/i386.c (ix86_expand_prologue): Save red-zone ++ * config/i386/i386.c (ix86_expand_prologue): Save red-zone + while stack probing. + + 2008-01-01 Douglas Gregor +Index: gcc/testsuite/gcc.c-torture/execute/20080222-1.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/20080222-1.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.c-torture/execute/20080222-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,22 @@ ++extern void abort (void); ++ ++struct container ++{ ++ unsigned char data[1]; ++}; ++ ++unsigned char space[6] = {1, 2, 3, 4, 5, 6}; ++ ++int ++foo (struct container *p) ++{ ++ return p->data[4]; ++} ++ ++int ++main () ++{ ++ if (foo ((struct container *) space) != 5) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr35472.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/pr35472.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.c-torture/execute/pr35472.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,22 @@ ++extern void abort (void); ++extern void *memset (void *s, int c, __SIZE_TYPE__ n); ++struct S { int i[16]; }; ++struct S *p; ++void __attribute__((noinline)) ++foo(struct S *a, struct S *b) { a->i[0] = -1; p = b; } ++void test (void) ++{ ++ struct S a, b; ++ memset (&a.i[0], '\0', sizeof (a.i)); ++ memset (&b.i[0], '\0', sizeof (b.i)); ++ foo (&a, &b); ++ *p = a; ++ *p = b; ++ if (b.i[0] != -1) ++ abort (); ++} ++int main() ++{ ++ test(); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr35456.c +=================================================================== +--- gcc/testsuite/gcc.c-torture/execute/pr35456.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.c-torture/execute/pr35456.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,21 @@ ++extern void abort (void); ++ ++double ++__attribute__ ((noinline)) ++not_fabs (double x) ++{ ++ return x >= 0.0 ? x : -x; ++} ++ ++int main() ++{ ++ double x = -0.0; ++ double y; ++ ++ y = not_fabs (x); ++ ++ if (!__builtin_signbit (y)) ++ abort(); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-phsubw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phsubw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phsubw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/sse-14.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/sse-14.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/sse-14.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile without optimization. All of them are + defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h +- that reference the proper builtin functions. Defining away "static" and ++ that reference the proper builtin functions. Defining away "extern" and + "__inline" results in all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/ssse3-phaddd.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phaddd.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phaddd.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/ssse3-pabsb.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pabsb.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pabsb.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-1.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-1.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if !defined __SSSE3__ ++ abort (); ++#endif ++#if !defined __SSE4_1__ ++ abort (); ++#endif ++#if !defined __SSE4_2__ ++ abort (); ++#endif ++#if defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-psignb.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-psignb.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-psignb.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-9.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-9.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-9.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=amdfam10 -mno-sse5" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/isa-12.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-12.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-12.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse5 -mno-sse3" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-2.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-2.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-2.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse4 -msse5" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if !defined __SSSE3__ ++ abort (); ++#endif ++#if !defined __SSE4_1__ ++ abort (); ++#endif ++#if !defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/isa-13.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-13.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-13.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse5 -mno-sse2" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if defined __SSE2__ ++ abort (); ++#endif ++#if defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-pabsd.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pabsd.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pabsd.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-3.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-3.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-3.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse4 -msse5 -msse4a" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if !defined __SSSE3__ ++ abort (); ++#endif ++#if !defined __SSE4_1__ ++ abort (); ++#endif ++#if !defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-psignd.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-psignd.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-psignd.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-14.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-14.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-14.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse5 -mno-sse" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if defined __SSE__ ++ abort (); ++#endif ++#if defined __SSE2__ ++ abort (); ++#endif ++#if defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/ssse3-phaddw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phaddw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phaddw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-4.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-4.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-4.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=core2 -msse5 -mno-sse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if !defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/mmx-1.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/mmx-1.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/mmx-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile with optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/isa-5.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-5.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-5.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=core2 -msse4a -mno-sse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if !defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-phsubd.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phsubd.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phsubd.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/mmx-2.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/mmx-2.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/mmx-2.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile without optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/pr35540.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/pr35540.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/pr35540.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,45 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++extern void abort (void); ++ ++int __attribute__ ((noinline)) ++test (unsigned int *a, int b) ++{ ++ return b ? 1 : __builtin_parity (*a); ++} ++ ++int __attribute__ ((noinline)) ++testl (unsigned long *a, int b) ++{ ++ return b ? 1 : __builtin_parityl (*a); ++} ++ ++int __attribute__ ((noinline)) ++testll (unsigned long long *a, int b) ++{ ++ return b ? 1 : __builtin_parityll (*a); ++} ++ ++int ++main () ++{ ++ unsigned int a = 0; ++ unsigned long al; ++ unsigned long long all; ++ ++ a = 0x12345670; ++ if (test (&a, 0)) ++ abort (); ++ ++ al = 0x12345670ul; ++ if (testl (&al, 0)) ++ abort(); ++ ++#if 1 ++ all = 0x12345678abcdef0ull; ++ if (testll (&all, 0)) ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-pabsw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pabsw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pabsw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-6.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-6.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-6.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=amdfam10 -mno-sse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/ssse3-psignw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-psignw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-psignw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/ssse3-pshufb.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-pshufb.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-pshufb.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/3dnow-1.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/3dnow-1.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/3dnow-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile with optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-phsubsw.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-7.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-7.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-7.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/3dnowA-1.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/3dnowA-1.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/3dnowA-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,13 +1,12 @@ + /* { dg-do assemble } */ +-/* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-O2 -Werror-implicit-function-declaration -m3dnow -march=athlon" } */ ++/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */ + + /* Test that the intrinsics compile with optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/isa-10.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-10.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-10.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse5 -mno-sse4" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/sse-13.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/sse-13.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/sse-13.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile with optimization. All of them are + defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h +- that reference the proper builtin functions. Defining away "static" and ++ that reference the proper builtin functions. Defining away "extern" and + "__inline" results in all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + /* Following intrinsics require immediate arguments. */ +Index: gcc/testsuite/gcc.target/i386/3dnow-2.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/3dnow-2.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/3dnow-2.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3,10 +3,10 @@ + + /* Test that the intrinsics compile without optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/isa-8.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-8.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-8.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if defined __SSE4A__ ++ abort (); ++#endif ++#if defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.target/i386/3dnowA-2.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/3dnowA-2.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/3dnowA-2.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,13 +1,12 @@ + /* { dg-do assemble } */ +-/* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-O0 -Werror-implicit-function-declaration -m3dnow -march=athlon" } */ ++/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */ + + /* Test that the intrinsics compile without optimization. All of them are + defined as inline functions in mmintrin.h that reference the proper +- builtin functions. Defining away "static" and "__inline" results in ++ builtin functions. Defining away "extern" and "__inline" results in + all of them being compiled as proper functions. */ + +-#define static ++#define extern + #define __inline + + #include +Index: gcc/testsuite/gcc.target/i386/ssse3-palignr.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/ssse3-palignr.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.target/i386/ssse3-palignr.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,6 +1,6 @@ + /* { dg-do run } */ + /* { dg-require-effective-target ssse3 } */ +-/* { dg-options "-O2 -mssse3" } */ ++/* { dg-options "-O2 -fno-strict-aliasing -mssse3" } */ + + #include "ssse3-check.h" + #include "ssse3-vals.h" +Index: gcc/testsuite/gcc.target/i386/isa-11.c +=================================================================== +--- gcc/testsuite/gcc.target/i386/isa-11.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.target/i386/isa-11.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,34 @@ ++/* { dg-do run } */ ++/* { dg-options "-march=x86-64 -msse5 -mno-ssse3" } */ ++ ++extern void abort (void); ++ ++int ++main () ++{ ++#if !defined __SSE__ ++ abort (); ++#endif ++#if !defined __SSE2__ ++ abort (); ++#endif ++#if !defined __SSE3__ ++ abort (); ++#endif ++#if defined __SSSE3__ ++ abort (); ++#endif ++#if defined __SSE4_1__ ++ abort (); ++#endif ++#if defined __SSE4_2__ ++ abort (); ++#endif ++#if !defined __SSE4A__ ++ abort (); ++#endif ++#if !defined __SSE5__ ++ abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gnat.dg/frame_overflow.adb +=================================================================== +--- gcc/testsuite/gnat.dg/frame_overflow.adb (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gnat.dg/frame_overflow.adb (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,15 +1,17 @@ + -- { dg-do compile } + ++with System; ++ + procedure frame_overflow is + +- type Bitpos_Range_T is new Positive; ++ type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1; + type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean; + + type Bitmap_T is record + Bits : Bitmap_Array_T := (others => False); + end record; + +- function -- { dg-error "too large" "" } ++ function -- { dg-error "too large" } + Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T + is + Result: Bitmap_T := Bitmap; +@@ -18,7 +20,7 @@ + return Result; + end; + +- function -- { dg-error "too large" "" } ++ function -- { dg-error "too large" } + Negate (Bitmap : Bitmap_T) return Bitmap_T is + Result: Bitmap_T; + begin +Index: gcc/testsuite/gnat.dg/object_overflow.adb +=================================================================== +--- gcc/testsuite/gnat.dg/object_overflow.adb (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gnat.dg/object_overflow.adb (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,14 @@ ++-- { dg-do compile } ++ ++procedure Object_Overflow is ++ ++ type Rec is null record; ++ ++ procedure Proc (x : Rec) is begin null; end; ++ ++ type Arr is array(Long_Integer) of Rec; ++ Obj : Arr; -- { dg-warning "Storage_Error will be raised" } ++ ++begin ++ Proc (Obj(1)); ++end; +Index: gcc/testsuite/gcc.dg/pr34989-1.c +=================================================================== +--- gcc/testsuite/gcc.dg/pr34989-1.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/pr34989-1.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "--combine -O2" } */ ++/* { dg-additional-sources "pr34989-2.c" } */ ++ ++extern struct globals *const ptr_to_globals; ++struct globals { }; ++int syslogd_main(int argc, char **argv) ++{ ++ (*(struct globals**)&ptr_to_globals) = 0; ++} +Index: gcc/testsuite/gcc.dg/gomp/pr34692.c +=================================================================== +--- gcc/testsuite/gcc.dg/gomp/pr34692.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.dg/gomp/pr34692.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -24,3 +24,5 @@ + cde f g h); + } + } ++ ++/* { dg-final { cleanup-tree-dump "gimple" } } */ +Index: gcc/testsuite/gcc.dg/gomp/pr35439.c +=================================================================== +--- gcc/testsuite/gcc.dg/gomp/pr35439.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/gomp/pr35439.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,6 @@ ++/* PR c/35439 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp" } */ ++ ++void x[1]; /* { dg-error "array of voids" } */ ++#pragma omp threadprivate(x) +Index: gcc/testsuite/gcc.dg/gomp/pr35244.c +=================================================================== +--- gcc/testsuite/gcc.dg/gomp/pr35244.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/gomp/pr35244.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,20 @@ ++/* PR c++/35244 */ ++/* { dg-do compile } */ ++/* { dg-require-effective-target tls_native } */ ++/* { dg-options "-fopenmp" } */ ++ ++int v1; ++typedef struct A A; ++typedef int i; ++#pragma omp threadprivate (i) /* { dg-error "expected identifier before" } */ ++#pragma omp threadprivate (A) /* { dg-error "expected identifier before" } */ ++#pragma omp threadprivate (v1) ++ ++void foo () ++{ ++ static int v4; ++ { ++ static int v5; ++#pragma omp threadprivate (v4, v5) ++ } ++} +Index: gcc/testsuite/gcc.dg/gomp/pr35438.c +=================================================================== +--- gcc/testsuite/gcc.dg/gomp/pr35438.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/gomp/pr35438.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,6 @@ ++/* PR c/35438 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp" } */ ++ ++void foo (); ++#pragma omp threadprivate(foo) /* { dg-error "is not a variable" } */ +Index: gcc/testsuite/gcc.dg/gomp/pr34964.c +=================================================================== +--- gcc/testsuite/gcc.dg/gomp/pr34964.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/gomp/pr34964.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,6 @@ ++/* PR c++/34964 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp" } */ ++ ++char x[] = 0; /* { dg-error "invalid initializer" } */ ++#pragma omp threadprivate (x) +Index: gcc/testsuite/gcc.dg/uninit-16.c +=================================================================== +--- gcc/testsuite/gcc.dg/uninit-16.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/uninit-16.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wuninitialized" } */ ++ ++int foo, bar; ++ ++static ++void decode_reloc(int reloc, int *is_alt) ++{ ++ if (reloc >= 20) ++ *is_alt = 1; ++ else if (reloc >= 10) ++ *is_alt = 0; ++} ++ ++void testfunc() ++{ ++ int alt_reloc; ++ ++ decode_reloc(foo, &alt_reloc); ++ ++ if (alt_reloc) /* { dg-warning "may be used uninitialized" } */ ++ bar = 42; ++} +Index: gcc/testsuite/gcc.dg/pr34989-2.c +=================================================================== +--- gcc/testsuite/gcc.dg/pr34989-2.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/pr34989-2.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,3 @@ ++/* { dg-do compile } */ ++ ++extern struct globals *const ptr_to_globals; +Index: gcc/testsuite/gcc.dg/uninit-15.c +=================================================================== +--- gcc/testsuite/gcc.dg/uninit-15.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/uninit-15.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O -Wuninitialized" } */ ++ ++inline int foo (int i) ++{ ++ if (i) return 1; /* { dg-warning "is used uninitialized" } */ ++ return 0; ++} ++ ++void baz(); ++ ++void bar() ++{ ++ int j; /* { dg-message "was declared here" } */ ++ for (; foo(j); ++j) ++ baz(); ++} +Index: gcc/testsuite/gcc.dg/pr35616.c +=================================================================== +--- gcc/testsuite/gcc.dg/pr35616.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/pr35616.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,43 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++typedef void (*listener_fun)( ++ int a, ++ int b, ++ int c); ++ ++struct data_t ++{ ++ int a; ++ ++ listener_fun listener; ++ ++ int b; ++ int c; ++ int d; ++}; ++ ++extern void abort(void); ++void function_calling_listener (struct data_t data); ++ ++void function_calling_listener (struct data_t data) ++{ ++ data.listener(data.a, data.c, data.d); ++} ++ ++void my_listener(int a, int b, int c) ++{ ++ if (a != 42 || b != 44 || c != 45) ++ abort (); ++} ++ ++int main() ++{ ++ struct data_t d; ++ d.a = 42; ++ d.b = 43; ++ d.c = 44; ++ d.d = 45; ++ d.listener = my_listener; ++ function_calling_listener (d); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr35258.c +=================================================================== +--- gcc/testsuite/gcc.dg/pr35258.c (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gcc.dg/pr35258.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,28 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++extern void *memcpy (void *, const void *, __SIZE_TYPE__); ++extern int memcmp (const void *, const void *, __SIZE_TYPE__); ++extern void abort(void); ++ ++char str[9] = "1234"; ++ ++void ++bar (void) ++{ ++ unsigned int temp; ++ char *p = &str[2]; ++ ++ memcpy (&temp, &str[1], 4); ++ memcpy (p, &temp, 4); ++ str[1] = '.'; ++} ++ ++int main() ++{ ++ bar(); ++ if (memcmp (str, "1.234", 5) != 0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/vect.exp +=================================================================== +--- gcc/testsuite/gcc.dg/vect/vect.exp (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gcc.dg/vect/vect.exp (.../branches/gcc-4_3-branch) (revision 133808) +@@ -63,7 +63,11 @@ + set dg-do-what-default run + } elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } { + lappend DEFAULT_VECTCFLAGS "-msse2" +- set dg-do-what-default run ++ if [check_sse2_hw_available] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } elseif { [istarget "mips*-*-*"] + && [check_effective_target_mpaired_single] + && [check_effective_target_nomips16] } { +Index: gcc/testsuite/ChangeLog +=================================================================== +--- gcc/testsuite/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,293 @@ ++2008-03-31 Eric Botcazou ++ ++ * gnat.dg/object_overflow.adb: New test. ++ ++2008-03-30 John David Anglin ++ ++ PR c++/35245 ++ * g++.dg/other/anon5.C: Skip on hppa*-*-hpux*. ++ ++2008-03-30 Paul Thomas ++ ++ PR fortran/35740 ++ * gfortran.dg/transpose_conjg_1.f90: New test. ++ ++2008-03-29 Paul Thomas ++ ++ PR fortran/35698 ++ * gfortran.dg/allocate_zerosize_3.f: New test. ++ ++ PR fortran/35702 ++ * gfortran.dg/character_assign_1.f90: New test. ++ ++2008-03-28 Jerry DeLisle ++ ++ PR fortran/35699 ++ * gfortran.dg/direct_io_10.f: New test. ++ ++2008-03-27 Jerry DeLisle ++ ++ PR fortran/35724 ++ * gfortran.dg/cshift_shift_real_2.f90: New test. ++ ++2008-03-26 Kaveh R. Ghazi ++ ++ * gcc.dg/uninit-16.c (decode_reloc): Mark static. ++ ++2008-03-26 Jakub Jelinek ++ ++ PR c++/35546 ++ * g++.dg/ext/attrib33.C: New test. ++ ++ PR c++/35332 ++ * g++.dg/other/error27.C: New test. ++ ++2008-03-25 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-19 Richard Guenther ++ ++ PR middle-end/35609 ++ * gcc.dg/testsuite/uninit-15.c: New testcase. ++ * gcc.dg/testsuite/uninit-16.c: Likewise. ++ ++2008-03-24 Paul Thomas ++ ++ PR fortran/34813 ++ * gfortran.dg/null_3.f90 : New test ++ ++ PR fortran/33295 ++ * gfortran.dg/module_function_type_1.f90 : New test ++ ++2008-03-21 Uros Bizjak ++ ++ Backport from mainline: ++ 2008-03-20 Victor Kaplansky ++ Uros Bizjak ++ ++ PR testsuite/34168 ++ * lib/target-supports.exp (check_sse2_hw_available): New procedure. ++ * gcc.dg/vect/vect.exp: Set dg-do-what-default to "compile" ++ if SSE2 hardware is not available. ++ * g++.dg/vect/vect.exp: Update target-dependent overrides to match ++ gcc.dg/vect/vect.exp. ++ * gfortran.dg/vect/vect.exp: Ditto. ++ (check_effective_target_lp64_or_vect_no_align): Remove procedure. ++ ++ 2008-03-20 Uros Bizjak ++ ++ * gcc.dg/gomp/pr34692.c: Cleanup gimple dump file. ++ ++2008-03-20 Jerry DeLisle ++ ++ Backport from trunk: ++ PR libfortran/35627 ++ * gfortran.dg/namelist_46.f90: New test. ++ ++ PR libfortran/35617 ++ * gfortran.dg/namelist_45.f90: New test. ++ ++2008-03-20 H.J. Lu ++ ++ Backport from mainline: ++ 2008-03-20 H.J. Lu ++ ++ PR testsuite/35621 ++ * gcc.target/i386/ssse3-pabsb.c: Add -fno-strict-aliasing. ++ * gcc.target/i386/ssse3-pabsd.c: Likewise. ++ * gcc.target/i386/ssse3-pabsw.c: Likewise. ++ * gcc.target/i386/ssse3-palignr.c: Likewise. ++ * gcc.target/i386/ssse3-phaddd.c: Likewise. ++ * gcc.target/i386/ssse3-phaddsw.c: Likewise. ++ * gcc.target/i386/ssse3-phaddw.c: Likewise. ++ * gcc.target/i386/ssse3-phsubd.c: Likewise. ++ * gcc.target/i386/ssse3-phsubsw.c: Likewise. ++ * gcc.target/i386/ssse3-phsubw.c: Likewise. ++ * gcc.target/i386/ssse3-pmaddubsw.c: Likewise. ++ * gcc.target/i386/ssse3-pmulhrsw.c: Likewise. ++ * gcc.target/i386/ssse3-pshufb.c: Likewise. ++ * gcc.target/i386/ssse3-psignb.c: Likewise. ++ * gcc.target/i386/ssse3-psignd.c: Likewise. ++ * gcc.target/i386/ssse3-psignw.c: Likewise. ++ ++2008-03-19 Michael Matz ++ ++ Backport from mainline: ++ 2008-03-19 Michael Matz ++ ++ PR middle-end/35616 ++ * gcc.dg/pr35616.c: New test. ++ ++2008-03-19 Andreas Krebbel ++ ++ * gcc.dg/pr35258.c: New testcase. ++ ++2008-03-18 Mikulas Patocka ++ ++ PR target/35504 ++ * g++.dg/other/pr35504.C: New test. ++ ++2008-03-18 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-15 Richard Guenther ++ ++ PR middle-end/35593 ++ * g++.dg/warn/Warray-bounds-3.C: New testcase. ++ ++2008-03-17 Jason Merrill ++ ++ PR c++/35548 ++ * g++.dg/init/ref16.C: New testcase. ++ ++2008-03-14 Richard Guenther ++ ++ Backport from mainline: ++ 2008-02-19 Richard Guenther ++ ++ PR tree-optimization/34989 ++ * gcc.dg/pr34989-1.c: New testcase. ++ * gcc.dg/pr34989-2.c: Likewise. ++ ++2008-03-14 Uros Bizjak ++ ++ PR target/34000 ++ PR target/35553 ++ * g++.dg/other/i386-3.C: New test. ++ * gcc.target/i386/sse-13.c: Redefine extern instead of static. ++ * gcc.target/i386/sse-14.c: Ditto. ++ * gcc.target/i386/mmx-1.c: Ditto. ++ * gcc.target/i386/mmx-2.c: Ditto. ++ * gcc.target/i386/3dnow-1.c: Ditto. ++ * gcc.target/i386/3dnow-2.c: Ditto. ++ * gcc.target/i386/3dnowA-1.c: Ditto. ++ * gcc.target/i386/3dnowA-2.c: Ditto. ++ ++2008-03-14 Paul Thomas ++ ++ PR fortran/35474 ++ * gfortran.dg/module_commons_2.f90 : New test. ++ ++2008-03-12 Uros Bizjak ++ ++ PR target/35540 ++ * gcc.target/i386/pr35540.c: New test. ++ ++2008-03-11 Uros Bizjak ++ ++ * g++.dg/inherit/override-attribs.C: Require ilp32 x86 target. ++ ++2008-03-11 Uros Bizjak ++ ++ PR middle-end/35526 ++ * g++.dg/torture/pr35526.C: New test. ++ ++2008-03-10 Jakub Jelinek ++ ++ PR c++/35328 ++ * g++.dg/gomp/pr35328.C: New test. ++ ++ PR c++/35337 ++ * g++.dg/gomp/pr35337.C: New test. ++ ++ PR c/35438 ++ PR c/35439 ++ * gcc.dg/gomp/pr35438.c: New test. ++ * gcc.dg/gomp/pr35439.c: New test. ++ ++ PR middle-end/35099 ++ * g++.dg/gomp/pr35099.C: New test. ++ ++2008-03-10 Uros Bizjak ++ ++ Backport from mainline: ++ 2008-03-04 Uros Bizjak ++ ++ PR middle-end/35456 ++ * gcc.c-torture/execute/pr35456.c: New test. ++ ++2008-03-09 Eric Botcazou ++ ++ * gnat.dg/frame_overflow.adb: Improve portability. ++ ++2008-03-08 H.J. Lu ++ ++ Backport from mainline: ++ 2008-03-08 H.J. Lu ++ ++ PR target/35350 ++ * gcc.target/i386/isa-1.c: Add -march=x86-64. ++ * gcc.target/i386/isa-2.c: Likewise. ++ * gcc.target/i386/isa-3.c: Likewise. ++ * gcc.target/i386/isa-10.c: Likewise. ++ * gcc.target/i386/isa-11.c: Likewise. ++ * gcc.target/i386/isa-12.c: Likewise. ++ * gcc.target/i386/isa-13.c: Likewise. ++ * gcc.target/i386/isa-14.c: Likewise. ++ ++2008-03-07 Richard Guenther ++ ++ Backport from mainline: ++ 2008-03-05 Richard Guenther ++ ++ PR tree-optimization/35472 ++ * gcc.c-torture/execute/pr35472.c: New testcase. ++ ++2008-03-06 H.J. Lu ++ ++ Backport from mainline: ++ 2008-02-18 H.J. Lu ++ ++ PR target/35189 ++ * gcc.target/i386/isa-1.c: New. ++ * gcc.target/i386/isa-2.c: Likewise. ++ * gcc.target/i386/isa-3.c: Likewise. ++ * gcc.target/i386/isa-4.c: Likewise. ++ * gcc.target/i386/isa-5.c: Likewise. ++ * gcc.target/i386/isa-6.c: Likewise. ++ * gcc.target/i386/isa-7.c: Likewise. ++ * gcc.target/i386/isa-8.c: Likewise. ++ * gcc.target/i386/isa-9.c: Likewise. ++ * gcc.target/i386/isa-10.c: Likewise. ++ * gcc.target/i386/isa-11.c: Likewise. ++ * gcc.target/i386/isa-12.c: Likewise. ++ * gcc.target/i386/isa-13.c: Likewise. ++ * gcc.target/i386/isa-14.c: Likewise. ++ ++2008-03-06 Jakub Jelinek ++ ++ PR c++/35028 ++ * g++.dg/gomp/pr35028.C: New test. ++ ++ PR c++/34964 ++ PR c++/35244 ++ * gcc.dg/gomp/pr34964.c: New test. ++ * g++.dg/gomp/pr34964.C: New test. ++ * gcc.dg/gomp/pr35244.c: New test. ++ * g++.dg/gomp/pr35244.C: New test. ++ ++ PR c++/35078 ++ * g++.dg/gomp/pr35078.C: New test. ++ ++2008-03-06 Daniel Jacobowitz ++ ++ * gcc.c-torture/execute/20080222-1.c: New test. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35323 ++ * g++.dg/lookup/crash7.C: New. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35333 ++ * g++.dg/other/error26.C: New. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35338 ++ * g++.dg/other/error25.C: New. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: gcc/testsuite/g++.dg/other/i386-3.C +=================================================================== +--- gcc/testsuite/g++.dg/other/i386-3.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/other/i386-3.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,8 @@ ++/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are ++ usable with -O -fkeep-inline-functions. */ ++/* { dg-do compile { target i?86-*-* x86_64-*-* } } */ ++/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -msse4 -msse5" } */ ++ ++#include ++#include ++#include +Index: gcc/testsuite/g++.dg/other/error25.C +=================================================================== +--- gcc/testsuite/g++.dg/other/error25.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/other/error25.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,5 @@ ++// PR c++/35338 ++// { dg-options "" } ++ ++int i = 0r; // { dg-error "unnamed-fixed" } ++bool b = !0r; // { dg-error "0.0|argument" } +Index: gcc/testsuite/g++.dg/other/anon5.C +=================================================================== +--- gcc/testsuite/g++.dg/other/anon5.C (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/g++.dg/other/anon5.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -4,7 +4,7 @@ + // problem is that mips*-elf tests run from KSEG0 (which is in the upper + // half of the address range), and the linker compares sign-extended + // addresses from .debug_aranges with unextended addresses. +-// { dg-do link { target { ! mips*-*-elf* } } } ++// { dg-do link { target { ! { hppa*-*-hpux* mips*-*-elf* } } } } + // { dg-options "-g" } + + namespace { +Index: gcc/testsuite/g++.dg/other/error26.C +=================================================================== +--- gcc/testsuite/g++.dg/other/error26.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/other/error26.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,6 @@ ++// PR c++/35333 ++ ++void foo(__complex__ double x) ++{ ++ __builtin_conj(x)(); // { dg-error "~x" } ++} +Index: gcc/testsuite/g++.dg/other/pr35504.C +=================================================================== +--- gcc/testsuite/g++.dg/other/pr35504.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/other/pr35504.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,147 @@ ++// { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } ++ ++#define ATTR0 __attribute__((__regparm__(0))) ++#define ATTR1 __attribute__((__regparm__(1))) ++#define ATTR2 __attribute__((__regparm__(2))) ++#define ATTR3 __attribute__((__regparm__(3))) ++#define ATTR4 __attribute__((__fastcall__)) ++#define ATTR5 __attribute__((__stdcall__)) ++#define ATTR6 __attribute__((__cdecl__)) ++#define ATTR7 ++ ++extern "C" void abort (void); ++ ++struct long_struct ++{ ++ int a[3]; ++}; ++ ++struct long_struct ret; ++ ++class c3 *this3; ++ ++class c1 ++{ ++ int val1; ++public: ++ virtual void foo () { } ++}; ++ ++class c2 ++{ ++public: ++ virtual ATTR0 struct long_struct method0 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR1 struct long_struct method1 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR2 struct long_struct method2 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR3 struct long_struct method3 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR4 struct long_struct method4 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR5 struct long_struct method5 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR6 struct long_struct method6 () ++ { ++ return ret; ++ } ++ ++ virtual ATTR7 struct long_struct method7 () ++ { ++ return ret; ++ } ++}; ++ ++class c3:c1, public c2 ++{ ++public: ++ c3 () ++ { ++ this3 = this; ++ } ++ ++ struct long_struct check_this (int a) ++ { ++ if (this3 != this) ++ abort (); ++ ++ return ret; ++ } ++ ++ virtual ATTR0 struct long_struct method0 () ++ { ++ return check_this (0); ++ } ++ ++ virtual ATTR1 struct long_struct method1 () ++ { ++ return check_this (1); ++ } ++ ++ virtual ATTR2 struct long_struct method2 () ++ { ++ return check_this (2); ++ } ++ ++ virtual ATTR3 struct long_struct method3 () ++ { ++ return check_this (3); ++ } ++ ++ virtual ATTR4 struct long_struct method4 () ++ { ++ return check_this (4); ++ } ++ ++ virtual ATTR5 struct long_struct method5 () ++ { ++ return check_this (5); ++ } ++ ++ virtual ATTR6 struct long_struct method6 () ++ { ++ return check_this (6); ++ } ++ ++ virtual ATTR7 struct long_struct method7 () ++ { ++ return check_this (7); ++ } ++}; ++ ++class c3 c3_instance; ++class c2 *c2_ptr = &c3_instance; ++ ++int ++main () ++{ ++ c2_ptr->method0 (); ++ c2_ptr->method1 (); ++ c2_ptr->method2 (); ++ c2_ptr->method3 (); ++ c2_ptr->method4 (); ++ c2_ptr->method5 (); ++ c2_ptr->method6 (); ++ c2_ptr->method7 (); ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/other/error27.C +=================================================================== +--- gcc/testsuite/g++.dg/other/error27.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/other/error27.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,12 @@ ++// PR c++/35332 ++// { dg-do compile } ++ ++void foo (double x, double y) ++{ ++ __builtin_isgreater(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++ __builtin_isless(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++ __builtin_isgreaterequal(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++ __builtin_islessequal(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++ __builtin_isunordered(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++ __builtin_islessgreater(x, y)(); // { dg-error "__builtin_\[^\n\]*cannot be used as a function" } ++} +Index: gcc/testsuite/g++.dg/ext/attrib33.C +=================================================================== +--- gcc/testsuite/g++.dg/ext/attrib33.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/ext/attrib33.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++// PR c++/35546 ++// { dg-do compile } ++ ++template ++struct T ++{ ++ void foo (char const * ...) __attribute__ ((format (printf,2,3))); ++}; ++ ++template struct T<3>; ++ ++template ++struct U ++{ ++ typedef T __attribute__((mode (SI))) V; ++}; ++ ++U::V v; +Index: gcc/testsuite/g++.dg/vect/vect.exp +=================================================================== +--- gcc/testsuite/g++.dg/vect/vect.exp (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/g++.dg/vect/vect.exp (.../branches/gcc-4_3-branch) (revision 133808) +@@ -45,7 +45,14 @@ + # Skip these tests for targets that do not support generating vector + # code. Set additional target-dependent vector flags, which can be + # overridden by using dg-options in individual tests. +-if [istarget "powerpc*-*-*"] { ++if [istarget "powerpc-*paired*"] { ++ lappend DEFAULT_VECTCFLAGS "-mpaired" ++ if [check_750cl_hw_available] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } ++} elseif [istarget "powerpc*-*-*"] { + # Skip targets not supporting -maltivec. + if ![is-effective-target powerpc_altivec_ok] { + return +@@ -53,19 +60,23 @@ + + lappend DEFAULT_VECTCFLAGS "-maltivec" + if [check_vmx_hw_available] { +- set dg-do-what-default run ++ set dg-do-what-default run + } else { +- if [is-effective-target ilp32] { +- # Specify a cpu that supports VMX for compile-only tests. +- lappend DEFAULT_VECTCFLAGS "-mcpu=7400" +- } +- set dg-do-what-default compile ++ if [is-effective-target ilp32] { ++ # Specify a cpu that supports VMX for compile-only tests. ++ lappend DEFAULT_VECTCFLAGS "-mcpu=970" ++ } ++ set dg-do-what-default compile + } + } elseif { [istarget "spu-*-*"] } { + set dg-do-what-default run + } elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } { + lappend DEFAULT_VECTCFLAGS "-msse2" +- set dg-do-what-default run ++ if [check_sse2_hw_available] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } elseif { [istarget "mips*-*-*"] + && [check_effective_target_mpaired_single] + && [check_effective_target_nomips16] } { +@@ -73,21 +84,37 @@ + set dg-do-what-default run + } elseif [istarget "sparc*-*-*"] { + lappend DEFAULT_VECTCFLAGS "-mcpu=ultrasparc" "-mvis" +- set dg-do-what-default run ++ if [check_effective_target_ultrasparc_hw] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } elseif [istarget "alpha*-*-*"] { ++ # Alpha's vectorization capabilities are extremely limited. ++ # It's more effort than its worth disabling all of the tests ++ # that it cannot pass. But if you actually want to see what ++ # does work, command out the return. ++ return ++ + lappend DEFAULT_VECTCFLAGS "-mmax" + if [check_alpha_max_hw_available] { +- set dg-do-what-default run ++ set dg-do-what-default run + } else { +- set dg-do-what-default compile ++ set dg-do-what-default compile + } + } elseif [istarget "ia64-*-*"] { + set dg-do-what-default run ++} elseif [is-effective-target arm_neon_ok] { ++ lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp" ++ if [is-effective-target arm_neon_hw] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } else { + return + } + +- + # Initialize `dg'. + dg-init + +Index: gcc/testsuite/g++.dg/warn/Warray-bounds-3.C +=================================================================== +--- gcc/testsuite/g++.dg/warn/Warray-bounds-3.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/warn/Warray-bounds-3.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wall" } */ ++ ++extern void function(void * x); ++ ++struct A { ++ long x; ++ char d[0]; ++}; ++ ++ ++void test(A * a) { ++ function((char *)a - 4); /* { dg-bogus "below array bounds" } */ ++} ++ +Index: gcc/testsuite/g++.dg/lookup/crash7.C +=================================================================== +--- gcc/testsuite/g++.dg/lookup/crash7.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/lookup/crash7.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,9 @@ ++// PR c++/35323 ++// { dg-options "" } ++ ++void foo(int); ++ ++void bar() ++{ ++ foo(1r); // { dg-error "unnamed-fixed" } ++} +Index: gcc/testsuite/g++.dg/gomp/pr34964.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr34964.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr34964.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,6 @@ ++// PR c++/34964 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++char x[] = 0; // { dg-error "initializer fails to determine size" } ++#pragma omp threadprivate (x) +Index: gcc/testsuite/g++.dg/gomp/pr35328.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35328.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35328.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,31 @@ ++// PR c++/35328 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++struct A ++{ ++ ~A ()(); // { dg-error "declared as function returning a function" } ++}; ++struct B ++{ ++ B ()(); // { dg-error "declared as function returning a function" } ++}; ++struct C ++{ ++ C (); ++ C (const C &)(); // { dg-error "declared as function returning a function" } ++}; ++ ++void ++foo () ++{ ++ A a; ++ B b; ++ C c; ++ #pragma omp parallel firstprivate (a) ++ ; ++ #pragma omp parallel private (b) ++ ; ++ #pragma omp parallel firstprivate (c) ++ ; ++} +Index: gcc/testsuite/g++.dg/gomp/pr35337.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35337.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35337.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,20 @@ ++// PR c++/35337 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++struct A { }; ++ ++void ++foo () ++{ ++#pragma omp parallel firstprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" } ++ ; ++} ++ ++void ++bar () ++{ ++#pragma omp for lastprivate(A) // { dg-error "struct A\[^\n\]*is not a variable" } ++ for (int i = 0; i < 10; i++) ++ ; ++} +Index: gcc/testsuite/g++.dg/gomp/pr35244.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35244.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35244.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,30 @@ ++// PR c++/35244 ++// { dg-do compile } ++// { dg-require-effective-target tls_native } ++// { dg-options "-fopenmp" } ++ ++int v1; ++namespace N1 ++{ ++ int v2; ++} ++namespace N2 ++{ ++ int v3; ++} ++using N1::v2; ++using namespace N2; ++struct A; ++typedef int i; ++#pragma omp threadprivate (i) // { dg-error "is not file, namespace or block scope variable" } ++#pragma omp threadprivate (A) // { dg-error "is not file, namespace or block scope variable" } ++#pragma omp threadprivate (v1, v2, v3) ++ ++void foo () ++{ ++ static int v4; ++ { ++ static int v5; ++#pragma omp threadprivate (v4, v5) ++ } ++} +Index: gcc/testsuite/g++.dg/gomp/pr35078.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35078.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35078.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,20 @@ ++// PR c++/35078 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++template void ++foo () ++{ ++#pragma omp parallel for ++ for (int& i = 0; i < 10; ++i) // { dg-error "invalid type for iteration variable" } ++ ; ++} ++ ++void ++bar () ++{ ++ int j = 0; ++#pragma omp parallel for ++ for (int& i = j; i < 10; ++i) // { dg-error "invalid type for iteration variable" } ++ ; ++} +Index: gcc/testsuite/g++.dg/gomp/pr35099.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35099.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35099.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,39 @@ ++// PR middle-end/35099 ++// { dg-do compile } ++// { dg-options "-O2 -fopenmp" } ++ ++struct A ++{ ++ ~A () throw (); ++ void foo (); ++}; ++ ++struct B ++{ ++ B () { A ().foo (); } ++}; ++ ++void ++bar () ++{ ++#pragma omp parallel ++ { ++ #pragma omp single ++ B (); ++ #pragma omp for ++ for (int i = 0; i < 2; ++i) ++ B (); ++ } ++} ++ ++void ++baz () ++{ ++#pragma omp parallel ++ { ++ #pragma omp single ++ B (); ++ #pragma omp single ++ B (); ++ } ++} +Index: gcc/testsuite/g++.dg/gomp/pr35028.C +=================================================================== +--- gcc/testsuite/g++.dg/gomp/pr35028.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/gomp/pr35028.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,19 @@ ++// PR c++/35028 ++// { dg-do compile } ++// { dg-options "-fopenmp" } ++ ++struct A ++{ ++ A (); ++ A (const A &, ...); ++ ~A (); ++ A operator++ (int); ++}; ++ ++void ++foo () ++{ ++ A a; ++ #pragma omp parallel firstprivate (a) ++ a++; ++} +Index: gcc/testsuite/g++.dg/inherit/override-attribs.C +=================================================================== +--- gcc/testsuite/g++.dg/inherit/override-attribs.C (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/g++.dg/inherit/override-attribs.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,5 +1,7 @@ + // PR c++/14688 +-// { dg-do compile { target i?86-*-* } } ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-require-effective-target ilp32 } ++ + class one + { + public: +Index: gcc/testsuite/g++.dg/init/ref16.C +=================================================================== +--- gcc/testsuite/g++.dg/init/ref16.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/init/ref16.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,23 @@ ++// PR c++/35548 ++// { dg-do run } ++ ++int c; ++struct A ++{ ++ A() { ++c; } ++ A(const A&) { ++c; } ++ ~A() { --c; } ++}; ++ ++A f() ++{ ++ return A(); ++} ++ ++int i; ++const A* ap; ++int main() ++{ ++ const A& ar = i ? *ap : f(); ++ return (c == 0); ++} +Index: gcc/testsuite/g++.dg/torture/pr35526.C +=================================================================== +--- gcc/testsuite/g++.dg/torture/pr35526.C (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/g++.dg/torture/pr35526.C (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++ ++extern void *memcpy (void *__dest, __const void *__src, __SIZE_TYPE__ __n); ++ ++char internal_crash_read_ip[] = { 0xb8 }; ++ ++struct u_internal_crash_read_t ++{ ++ char ip[sizeof (internal_crash_read_ip)]; ++} ++u_internal_crash_read; ++ ++void ++gSignalHandler (int psignalNr, int pinfo, int pctx) ++{ ++ memcpy (u_internal_crash_read.ip, internal_crash_read_ip, ++ sizeof (internal_crash_read_ip)); ++} +Index: gcc/testsuite/lib/target-supports.exp +=================================================================== +--- gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_3-branch) (revision 133808) +@@ -764,6 +764,29 @@ + }] + } + ++# Return 1 if the target supports executing SSE2 instructions, 0 ++# otherwise. Cache the result. ++ ++proc check_sse2_hw_available { } { ++ return [check_cached_effective_target sse2_hw_available { ++ # If this is not the right target then we can skip the test. ++ if { !([istarget x86_64-*-*] || [istarget i?86-*-*]) } { ++ expr 0 ++ } else { ++ check_runtime_nocache sse2_hw_available { ++ #include "cpuid.h" ++ int main () ++ { ++ unsigned int eax, ebx, ecx, edx = 0; ++ if (__get_cpuid (1, &eax, &ebx, &ecx, &edx)) ++ return !(edx & bit_SSE2); ++ return 1; ++ } ++ } "" ++ } ++ }] ++} ++ + # Return 1 if the target supports executing AltiVec instructions, 0 + # otherwise. Cache the result. + +Index: gcc/testsuite/gfortran.dg/allocate_zerosize_3.f +=================================================================== +--- gcc/testsuite/gfortran.dg/allocate_zerosize_3.f (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/allocate_zerosize_3.f (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,40 @@ ++C { dg-do run } ++C Test the fix for PR35698, in which the negative size dimension would ++C throw out the subsequent bounds. ++C ++C Contributed by Dick Hendrickson ++C ++ program try_lf0030 ++ call LF0030(10) ++ end ++ ++ SUBROUTINE LF0030(nf10) ++ INTEGER ILA1(7) ++ INTEGER ILA2(7) ++ LOGICAL LLA(:,:,:,:,:,:,:) ++ INTEGER ICA(7) ++ ALLOCATABLE LLA ++ ++ ++ ALLOCATE (LLA(2:3, 4, 0:5, ++ $ NF10:1, -2:7, -3:8, ++ $ -4:9)) ++ ++ ILA1 = LBOUND(LLA) ++ ILA2 = UBOUND(LLA) ++C CORRECT FOR THE ZERO DIMENSIONED TERM TO ALLOW AN EASIER VERIFY ++ ILA1(4) = ILA1(4) - 2 ! 1 - 2 = -1 ++ ILA2(4) = ILA2(4) + 6 ! 0 + 6 = 6 ++ ++ DO J1 = 1,7 ++ IVAL = 3-J1 ++ IF (ILA1(J1) .NE. IVAL) call abort () ++ 100 ENDDO ++ ++ DO J1 = 1,7 ++ IVAL = 2+J1 ++ IF (ILA2(J1) .NE. IVAL) call abort () ++ 101 ENDDO ++ ++ END SUBROUTINE ++ +\ No newline at end of file +Index: gcc/testsuite/gfortran.dg/null_3.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/null_3.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/null_3.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! This checks the fix for PR34813 in which the error at line 17 ++! was not detected. ++! ++! Contributed by Daniel Franke ++! ++SUBROUTINE kd_tree_init_default() ++ TYPE :: kd_tree_node ++ INTEGER :: dummy ++ END TYPE ++ ++ TYPE :: kd_tree ++ TYPE(kd_tree_node) :: root ++ END TYPE ++ ++ TYPE(kd_tree) :: tree ++ tree = kd_tree(null()) ! { dg-error "neither a POINTER nor ALLOCATABLE" } ++END SUBROUTINE +Index: gcc/testsuite/gfortran.dg/character_assign_1.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/character_assign_1.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/character_assign_1.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! Tests the fix for PR35702, which caused an ICE because the types in the assignment ++! were not translated to be the same. ++! ++! Contributed by Dick Hendrickson ++! ++MODULE TESTS ++ TYPE UNSEQ ++ CHARACTER(1) :: C ++ END TYPE UNSEQ ++CONTAINS ++ SUBROUTINE CG0028 (TDA1L, TDA1R, nf0, nf1, nf2, nf3) ++ TYPE(UNSEQ) TDA1L(NF3) ++ TDA1L(NF1:NF2:NF1)%C = TDA1L(NF0+2:NF3:NF2/2)%C ++ END SUBROUTINE ++END MODULE TESTS ++! { dg-final { cleanup-modules "tests" } } +Index: gcc/testsuite/gfortran.dg/cshift_shift_real_2.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/cshift_shift_real_2.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/cshift_shift_real_2.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR35724 Compile time segmentation fault for CSHIFT with negative third arg ++ SUBROUTINE RA0072(DDA,LDA,nf10,nf1,mf1,nf2) ++ REAL DDA(10,10) ++ LOGICAL LDA(10,10) ++ WHERE (LDA) DDA = CSHIFT(DDA,1,-MF1) ! MF1 works, -1 works ++ END SUBROUTINE ++ +Index: gcc/testsuite/gfortran.dg/namelist_45.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/namelist_45.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/namelist_45.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,18 @@ ++! { dg-do run } ++! PR35617 read namelist error with '!' ++program test ++ character(len=128) :: mhdpath ++ namelist /nbdrive_naml/ mhdpath ++ open(10, file='test.nml') ++ ++ write(10,'(a)') "&nbdrive_naml" ++ write(10,'(a)') ++ write(10,'(a)') "!nstep_stop = 2 ! uncomment to bar" ++ write(10,'(a)') "!nstep_start = 2 ! uncomment to foo" ++ write(10,'(a)') " mhdpath = 'mypath.dat'" ++ write(10,'(a)') "/" ++ ++ rewind(10) ++ read(10, nbdrive_naml) ++ close(10,status="delete") ++end program test +Index: gcc/testsuite/gfortran.dg/namelist_46.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/namelist_46.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/namelist_46.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! PR35627 Namelist read problem with short logical followed by read real ++program test ++ implicit none ++ LOGICAL :: nlco(200) ! (1:nbeam) ++ REAL(kind=8):: xlbtna(200) ! (1:nbeam) ++ NAMELIST/nbdrive_naml/ nlco, xlbtna ++ INTEGER :: nbshapa(200) ! (1:nbeam) ++ NAMELIST/nbdrive_naml/ nbshapa ++ nlco = .false. ++ xlbtna = 0.0_8 ++ nbshapa = 0 ++ open(10, file='t.nml') ++ write(10,'(a)') "&nbdrive_naml" ++ write(10,'(a)') "nlco = 4*T," ++ write(10,'(a)') "xlbtna = 802.8, 802.8, 802.8, 802.8" ++ write(10,'(a)') "nbshapa = 4*1" ++ write(10,'(a)') "/" ++ rewind(10) ++ read(10, nbdrive_naml) ++ !write(*,nbdrive_naml) ++ close(10, status="delete") ++end program test +Index: gcc/testsuite/gfortran.dg/module_commons_2.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/module_commons_2.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/module_commons_2.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,21 @@ ++! { dg-do compile } ++! Tests the fix for PR35474, in which the PRIVATE statement would ++! cause the error Internal Error at (1): free_pi_tree(): Unresolved fixup ++! This arose because the symbol for 'i' emanating from the COMMON was ++! not being fixed-up as the EQUIVALENCE was built. ++! ++! Contributed by FX Coudert ++! ++module h5global ++ integer i ++ integer j ++ common /c/ i ++ equivalence (i, j) ++ private ++end module h5global ++ ++program bug ++ use h5global ++end ++ ++! { dg-final { cleanup-modules "h5global" } } +Index: gcc/testsuite/gfortran.dg/transpose_conjg_1.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/transpose_conjg_1.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/transpose_conjg_1.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,37 @@ ++! { dg-do run } ++! Tests the fix for PR35740, where the trick of interchanging the descriptor ++! dimensions to implement TRANSPOSE did not work if it is an argument of ++! an elemental function - eg. CONJG. The fix forces a library call for such ++! cases. During the diagnosis of the PR, it was found that the scalarizer was ++! completely thrown if the argument of TRANSPOSE was a non-variable ++! expression; eg a + c below. This is also fixed by the library call. ++! ++! Contributed by Dominik Muth ++! ++program main ++ implicit none ++ complex, dimension(2,2) :: a,b,c,d ++ a(1,1) = (1.,1.) ++ a(2,1) = (2.,2.) ++ a(1,2) = (3.,3.) ++ a(2,2) = (4.,4.) ++! ++ b = a ++ b = conjg(transpose(b)) ++ d = a ++ d = transpose(conjg(d)) ++ if (any (b /= d)) call abort () ++! ++ d = matmul (b, a ) ++ if (any (d /= matmul (transpose(conjg(a)), a))) call abort () ++ if (any (d /= matmul (conjg(transpose(a)), a))) call abort () ++! ++ c = (0.0,1.0) ++ b = conjg(transpose(a + c)) ++ d = transpose(conjg(a + c)) ++ if (any (b /= d)) call abort () ++! ++ d = matmul (b, a + c) ++ if (any (d /= matmul (transpose(conjg(a + c)), a + c))) call abort () ++ if (any (d /= matmul (conjg(transpose(a + c)), a + c))) call abort () ++ END program main +Index: gcc/testsuite/gfortran.dg/direct_io_10.f +=================================================================== +--- gcc/testsuite/gfortran.dg/direct_io_10.f (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/direct_io_10.f (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,46 @@ ++! { dg-do run } ++! pr35699 run-time abort writing zero sized section to direct access file ++ program directio ++ call qi0010 ( 10, 1, 2, 3, 4, 9, 2) ++ end ++ ++ subroutine qi0010 (nf10, nf1, nf2, nf3, nf4,nf9, np2) ++ character(10) bda(nf10) ++ character(10) bda1(nf10), bval ++ ++ integer j_len ++ bda1(1) = 'x' ++ do i = 2,10 ++ bda1(i) = 'x'//bda1(i-1) ++ enddo ++ bda = 'unread' ++ ++ inquire(iolength = j_len) bda1(nf1:nf10:nf2), bda1(nf4:nf3), ++ $ bda1(nf2:nf10:nf2) ++ ++ open (unit=48, ++ $ access='direct', ++ $ status='scratch', ++ $ recl = j_len, ++ $ iostat = istat, ++ $ form='unformatted', ++ $ action='readwrite') ++ ++ write (48,iostat = istat, rec = 3) bda1(nf1:nf10:nf2), ++ $ bda1(nf4:nf3), bda1(nf2:nf10:nf2) ++ if ( istat .ne. 0) then ++ call abort ++ endif ++ istat = -314 ++ ++ read (48,iostat = istat, rec = np2+1) bda(nf1:nf9:nf2), ++ $ bda(nf4:nf3), bda(nf2:nf10:nf2) ++ if ( istat .ne. 0) then ++ call abort ++ endif ++ ++ do j1 = 1,10 ++ bval = bda1(j1) ++ if (bda(j1) .ne. bval) call abort ++ enddo ++ end subroutine +Index: gcc/testsuite/gfortran.dg/module_function_type_1.f90 +=================================================================== +--- gcc/testsuite/gfortran.dg/module_function_type_1.f90 (.../tags/gcc_4_3_0_release) (revision 0) ++++ gcc/testsuite/gfortran.dg/module_function_type_1.f90 (.../branches/gcc-4_3-branch) (revision 133808) +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! This checks the fix for PR33295 in which the A_type in initA was ++! not promoted to module level and so not recognised as being the ++! same as that emanating directly from module a. ++! ++! Contributed by Janus Weil ++! ++module A ++ type A_type ++ real comp ++ end type ++end module A ++ ++module B ++contains ++ function initA() ++ use A ++ implicit none ++ type(A_type):: initA ++ initA%comp=1.0 ++ end function ++end module B ++ ++program C ++ use B ++ use A ++ implicit none ++ type(A_type):: A_var ++ A_var = initA() ++end program C ++ ++! { dg-final { cleanup-modules "A B" } } ++ +Index: gcc/testsuite/gfortran.dg/vect/vect.exp +=================================================================== +--- gcc/testsuite/gfortran.dg/vect/vect.exp (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/testsuite/gfortran.dg/vect/vect.exp (.../branches/gcc-4_3-branch) (revision 133808) +@@ -38,8 +38,18 @@ + # Skip these tests for targets that do not support generating vector + # code. Set additional target-dependent vector flags, which can be + # overridden by using dg-options in individual tests. +-if [istarget "powerpc*-*-*"] { +- # If there are powerpc targets to skip, do it here. ++if [istarget "powerpc-*paired*"] { ++ lappend DEFAULT_VECTCFLAGS "-mpaired" ++ if [check_750cl_hw_available] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } ++} elseif [istarget "powerpc*-*-*"] { ++ # Skip targets not supporting -maltivec. ++ if ![is-effective-target powerpc_altivec_ok] { ++ return ++ } + + lappend DEFAULT_VECTCFLAGS "-maltivec" + if [check_vmx_hw_available] { +@@ -47,20 +57,38 @@ + } else { + if [is-effective-target ilp32] { + # Specify a cpu that supports VMX for compile-only tests. +- lappend DEFAULT_VECTCFLAGS "-mcpu=7400" ++ lappend DEFAULT_VECTCFLAGS "-mcpu=970" + } + set dg-do-what-default compile + } ++} elseif { [istarget "spu-*-*"] } { ++ set dg-do-what-default run + } elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } { + lappend DEFAULT_VECTCFLAGS "-msse2" +- set dg-do-what-default run +-} elseif [istarget "mipsisa64*-*-*"] { ++ if [check_sse2_hw_available] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } ++} elseif { [istarget "mips*-*-*"] ++ && [check_effective_target_mpaired_single] ++ && [check_effective_target_nomips16] } { + lappend DEFAULT_VECTCFLAGS "-mpaired-single" + set dg-do-what-default run + } elseif [istarget "sparc*-*-*"] { + lappend DEFAULT_VECTCFLAGS "-mcpu=ultrasparc" "-mvis" +- set dg-do-what-default run ++ if [check_effective_target_ultrasparc_hw] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } elseif [istarget "alpha*-*-*"] { ++ # Alpha's vectorization capabilities are extremely limited. ++ # It's more effort than its worth disabling all of the tests ++ # that it cannot pass. But if you actually want to see what ++ # does work, command out the return. ++ return ++ + lappend DEFAULT_VECTCFLAGS "-mmax" + if [check_alpha_max_hw_available] { + set dg-do-what-default run +@@ -69,23 +97,17 @@ + } + } elseif [istarget "ia64-*-*"] { + set dg-do-what-default run ++} elseif [is-effective-target arm_neon_ok] { ++ lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp" ++ if [is-effective-target arm_neon_hw] { ++ set dg-do-what-default run ++ } else { ++ set dg-do-what-default compile ++ } + } else { + return + } + +-# Return 1 if the effective target is LP64 or if the effective target +-# does not support a vector alignment mechanism. +- +-proc check_effective_target_lp64_or_vect_no_align { } { +- if { [is-effective-target lp64] +- || [is-effective-target vect_no_align] } { +- set answer 1 +- } else { +- set answer 0 +- } +- return $answer +-} +- + # Initialize `dg'. + dg-init + +Index: gcc/cp/typeck.c +=================================================================== +--- gcc/cp/typeck.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/typeck.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -962,6 +962,8 @@ + if (TREE_CODE (t1) != ARRAY_TYPE + && TYPE_QUALS (t1) != TYPE_QUALS (t2)) + return false; ++ if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2)) ++ return false; + + /* Allow for two different type nodes which have essentially the same + definition. Note that we already checked for equality of the type +@@ -971,9 +973,6 @@ + && TYPE_MAIN_VARIANT (t1) == TYPE_MAIN_VARIANT (t2)) + return true; + +- if (TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2)) +- return false; +- + /* Compare the types. Break out if they could be the same. */ + switch (TREE_CODE (t1)) + { +Index: gcc/cp/decl.c +=================================================================== +--- gcc/cp/decl.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/decl.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3164,19 +3164,10 @@ + tree type, decl; + if (size > 0) + type = make_signed_type (size); +- else if (size == -1) +- { /* "__java_boolean". */ +- if ((TYPE_MODE (boolean_type_node) +- == smallest_mode_for_size (1, MODE_INT))) +- type = build_variant_type_copy (boolean_type_node); +- else +- /* ppc-darwin has SImode bool, make jboolean a 1-bit +- integer type without boolean semantics there. */ +- type = make_unsigned_type (1); +- } + else if (size > -32) +- { /* "__java_char". */ ++ { /* "__java_char" or ""__java_boolean". */ + type = make_unsigned_type (-size); ++ /*if (size == -1) TREE_SET_CODE (type, BOOLEAN_TYPE);*/ + } + else + { /* "__java_float" or ""__java_double". */ +Index: gcc/cp/call.c +=================================================================== +--- gcc/cp/call.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/call.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1145,7 +1145,8 @@ + const and rvalue references to rvalues of compatible class type. */ + if (compatible_p + && (lvalue_p +- || ((CP_TYPE_CONST_NON_VOLATILE_P(to) || TYPE_REF_IS_RVALUE (rto)) ++ || (!(flags & LOOKUP_NO_TEMP_BIND) ++ && (CP_TYPE_CONST_NON_VOLATILE_P(to) || TYPE_REF_IS_RVALUE (rto)) + && CLASS_TYPE_P (from)))) + { + /* [dcl.init.ref] +Index: gcc/cp/error.c +=================================================================== +--- gcc/cp/error.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/error.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -326,6 +326,7 @@ + case BOOLEAN_TYPE: + case COMPLEX_TYPE: + case VECTOR_TYPE: ++ case FIXED_POINT_TYPE: + pp_type_specifier_seq (cxx_pp, t); + break; + +@@ -2079,7 +2080,17 @@ + case VEC_DELETE_EXPR: + case MODOP_EXPR: + case ABS_EXPR: ++ case CONJ_EXPR: + case VECTOR_CST: ++ case FIXED_CST: ++ case UNORDERED_EXPR: ++ case ORDERED_EXPR: ++ case UNLT_EXPR: ++ case UNLE_EXPR: ++ case UNGT_EXPR: ++ case UNGE_EXPR: ++ case UNEQ_EXPR: ++ case LTGT_EXPR: + pp_expression (cxx_pp, t); + break; + +Index: gcc/cp/ChangeLog +=================================================================== +--- gcc/cp/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,79 @@ ++2008-03-26 Jakub Jelinek ++ ++ PR c++/35546 ++ * pt.c (apply_late_template_attributes): Don't call tsubst on ++ first attribute argument if it is IDENTIFIER_NODE. ++ ++ PR c++/35332 ++ * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR ++ and LTGT_EXPR to pp_expression. ++ ++2008-03-17 Jason Merrill ++ ++ PR c++/35548 ++ * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding ++ a temp directly to a reference as per DR391. ++ ++2008-03-12 Richard Guenther ++ ++ PR c++/35469 ++ Revert: ++ 2008-02-04 Richard Guenther ++ ++ PR java/35035 ++ * decl.c (record_builtin_java_type): Make jboolean a ++ integer type again where its mode doesn't match that of bool. ++ ++ 2008-01-25 Richard Guenther ++ ++ PR c++/33887 ++ * decl.c (record_builtin_java_type): Make __java_boolean ++ a variant of bool. ++ * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check ++ after TYPE_MAIN_VARIANT check. ++ ++2008-03-10 Jakub Jelinek ++ ++ PR c++/35328 ++ * semantics.c (finish_omp_clauses): Look through NOP_EXPR even ++ if errorcount. ++ ++ PR c++/35337 ++ * semantics.c (finish_omp_clauses): Use %qD instead of %qE for ++ DECL_P in not a variable and appears more than once error messages. ++ ++2008-03-06 Jakub Jelinek ++ ++ PR c++/35028 ++ * cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors. ++ ++ PR c++/34964 ++ PR c++/35244 ++ * semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p ++ vars. Afterwards ensure v is VAR_DECL. ++ ++ PR c++/35078 ++ * parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't ++ call cp_finish_decl. ++ * semantics.c (finish_omp_for): Fail if DECL doesn't have integral type ++ early. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35323 ++ * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35333 ++ * error.c (dump_expr): Handle CONJ_EXPR. ++ ++2008-03-06 Paolo Carlini ++ ++ PR c++/35338 ++ * error.c (dump_type): Handle FIXED_POINT_TYPE. ++ (dump_expr): Handle FIXED_CST. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: gcc/cp/cp-gimplify.c +=================================================================== +--- gcc/cp/cp-gimplify.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/cp-gimplify.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -844,7 +844,8 @@ + if (arg2) + argarray[i++] = p2; + /* Handle default arguments. */ +- for (parm = defparm; parm != void_list_node; parm = TREE_CHAIN (parm), i++) ++ for (parm = defparm; parm && parm != void_list_node; ++ parm = TREE_CHAIN (parm), i++) + argarray[i] = convert_default_arg (TREE_VALUE (parm), + TREE_PURPOSE (parm), fn, i); + t = build_call_a (fn, i, argarray); +@@ -875,7 +876,7 @@ + if (arg2) + argarray[i++] = build_fold_addr_expr (arg2); + /* Handle default arguments. */ +- for (parm = defparm; parm != void_list_node; ++ for (parm = defparm; parm && parm != void_list_node; + parm = TREE_CHAIN (parm), i++) + argarray[i] = convert_default_arg (TREE_VALUE (parm), + TREE_PURPOSE (parm), +Index: gcc/cp/pt.c +=================================================================== +--- gcc/cp/pt.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/pt.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -6717,9 +6717,29 @@ + { + *p = TREE_CHAIN (t); + TREE_CHAIN (t) = NULL_TREE; +- TREE_VALUE (t) +- = tsubst_expr (TREE_VALUE (t), args, complain, in_decl, +- /*integral_constant_expression_p=*/false); ++ /* If the first attribute argument is an identifier, don't ++ pass it through tsubst. Attributes like mode, format, ++ cleanup and several target specific attributes expect it ++ unmodified. */ ++ if (TREE_VALUE (t) ++ && TREE_CODE (TREE_VALUE (t)) == TREE_LIST ++ && TREE_VALUE (TREE_VALUE (t)) ++ && (TREE_CODE (TREE_VALUE (TREE_VALUE (t))) ++ == IDENTIFIER_NODE)) ++ { ++ tree chain ++ = tsubst_expr (TREE_CHAIN (TREE_VALUE (t)), args, complain, ++ in_decl, ++ /*integral_constant_expression_p=*/false); ++ if (chain != TREE_CHAIN (TREE_VALUE (t))) ++ TREE_VALUE (t) ++ = tree_cons (NULL_TREE, TREE_VALUE (TREE_VALUE (t)), ++ chain); ++ } ++ else ++ TREE_VALUE (t) ++ = tsubst_expr (TREE_VALUE (t), args, complain, in_decl, ++ /*integral_constant_expression_p=*/false); + *q = t; + q = &TREE_CHAIN (t); + } +Index: gcc/cp/semantics.c +=================================================================== +--- gcc/cp/semantics.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/semantics.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3400,13 +3400,16 @@ + { + if (processing_template_decl) + break; +- error ("%qE is not a variable in clause %", t); ++ if (DECL_P (t)) ++ error ("%qD is not a variable in clause %", t); ++ else ++ error ("%qE is not a variable in clause %", t); + remove = true; + } + else if (bitmap_bit_p (&generic_head, DECL_UID (t)) + || bitmap_bit_p (&firstprivate_head, DECL_UID (t))) + { +- error ("%qE appears more than once in data clauses", t); ++ error ("%qD appears more than once in data clauses", t); + remove = true; + } + else +@@ -3419,13 +3422,16 @@ + { + if (processing_template_decl) + break; +- error ("%qE is not a variable in clause %", t); ++ if (DECL_P (t)) ++ error ("%qD is not a variable in clause %", t); ++ else ++ error ("%qE is not a variable in clause %", t); + remove = true; + } + else if (bitmap_bit_p (&generic_head, DECL_UID (t)) + || bitmap_bit_p (&lastprivate_head, DECL_UID (t))) + { +- error ("%qE appears more than once in data clauses", t); ++ error ("%qD appears more than once in data clauses", t); + remove = true; + } + else +@@ -3661,7 +3667,7 @@ + complete_ctor_identifier, + t, inner_type, LOOKUP_NORMAL); + +- if (targetm.cxx.cdtor_returns_this ()) ++ if (targetm.cxx.cdtor_returns_this () || errorcount) + /* Because constructors and destructors return this, + the call will have been cast to "void". Remove the + cast here. We would like to use STRIP_NOPS, but it +@@ -3683,7 +3689,7 @@ + t = build_special_member_call (t, complete_dtor_identifier, + NULL, inner_type, LOOKUP_NORMAL); + +- if (targetm.cxx.cdtor_returns_this ()) ++ if (targetm.cxx.cdtor_returns_this () || errorcount) + /* Because constructors and destructors return this, + the call will have been cast to "void". Remove the + cast here. We would like to use STRIP_NOPS, but it +@@ -3742,9 +3748,14 @@ + { + tree v = TREE_PURPOSE (t); + ++ if (error_operand_p (v)) ++ ; ++ else if (TREE_CODE (v) != VAR_DECL) ++ error ("% %qD is not file, namespace " ++ "or block scope variable", v); + /* If V had already been marked threadprivate, it doesn't matter + whether it had been used prior to this point. */ +- if (TREE_USED (v) ++ else if (TREE_USED (v) + && (DECL_LANG_SPECIFIC (v) == NULL + || !CP_DECL_THREADPRIVATE_P (v))) + error ("%qE declared % after first use", v); +@@ -3903,6 +3914,16 @@ + return NULL; + } + ++ if (!INTEGRAL_TYPE_P (TREE_TYPE (decl))) ++ { ++ location_t elocus = locus; ++ ++ if (EXPR_HAS_LOCATION (init)) ++ elocus = EXPR_LOCATION (init); ++ error ("%Hinvalid type for iteration variable %qE", &elocus, decl); ++ return NULL; ++ } ++ + if (pre_body == NULL || IS_EMPTY_STMT (pre_body)) + pre_body = NULL; + else if (! processing_template_decl) +Index: gcc/cp/name-lookup.c +=================================================================== +--- gcc/cp/name-lookup.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/name-lookup.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,5 +1,5 @@ + /* Definitions for C++ name lookup routines. +- Copyright (C) 2003, 2004, 2005, 2006, 2007 ++ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 + Free Software Foundation, Inc. + Contributed by Gabriel Dos Reis + +@@ -4594,6 +4594,7 @@ + case COMPLEX_TYPE: + case VECTOR_TYPE: + case BOOLEAN_TYPE: ++ case FIXED_POINT_TYPE: + return false; + case RECORD_TYPE: + if (TYPE_PTRMEMFUNC_P (type)) +Index: gcc/cp/parser.c +=================================================================== +--- gcc/cp/parser.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cp/parser.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -20074,8 +20074,11 @@ + + init = cp_parser_assignment_expression (parser, false); + +- cp_finish_decl (decl, NULL_TREE, /*init_const_expr_p=*/false, +- asm_specification, LOOKUP_ONLYCONVERTING); ++ if (TREE_CODE (TREE_TYPE (decl)) == REFERENCE_TYPE) ++ init = error_mark_node; ++ else ++ cp_finish_decl (decl, NULL_TREE, /*init_const_expr_p=*/false, ++ asm_specification, LOOKUP_ONLYCONVERTING); + + if (pushed_scope) + pop_scope (pushed_scope); +Index: gcc/tree-ssa-ccp.c +=================================================================== +--- gcc/tree-ssa-ccp.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/tree-ssa-ccp.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1584,7 +1584,8 @@ + is the desired result type. */ + + static tree +-maybe_fold_offset_to_array_ref (tree base, tree offset, tree orig_type) ++maybe_fold_offset_to_array_ref (tree base, tree offset, tree orig_type, ++ bool allow_negative_idx) + { + tree min_idx, idx, idx_type, elt_offset = integer_zero_node; + tree array_type, elt_type, elt_size; +@@ -1684,11 +1685,15 @@ + idx = fold_convert (idx_type, idx); + + /* We don't want to construct access past array bounds. For example +- char *(c[4]); +- +- c[3][2]; should not be simplified into (*c)[14] or tree-vrp will give false +- warning. */ +- if (domain_type && TYPE_MAX_VALUE (domain_type) ++ char *(c[4]); ++ c[3][2]; ++ should not be simplified into (*c)[14] or tree-vrp will ++ give false warnings. The same is true for ++ struct A { long x; char d[0]; } *a; ++ (char *)a - 4; ++ which should be not folded to &a->d[-8]. */ ++ if (domain_type ++ && TYPE_MAX_VALUE (domain_type) + && TREE_CODE (TYPE_MAX_VALUE (domain_type)) == INTEGER_CST) + { + tree up_bound = TYPE_MAX_VALUE (domain_type); +@@ -1700,6 +1705,17 @@ + && compare_tree_int (up_bound, 1) > 0) + return NULL_TREE; + } ++ if (domain_type ++ && TYPE_MIN_VALUE (domain_type)) ++ { ++ if (!allow_negative_idx ++ && TREE_CODE (TYPE_MIN_VALUE (domain_type)) == INTEGER_CST ++ && tree_int_cst_lt (idx, TYPE_MIN_VALUE (domain_type))) ++ return NULL_TREE; ++ } ++ else if (!allow_negative_idx ++ && compare_tree_int (idx, 0) < 0) ++ return NULL_TREE; + + return build4 (ARRAY_REF, elt_type, base, idx, NULL_TREE, NULL_TREE); + } +@@ -1796,7 +1812,8 @@ + new_base = build3 (COMPONENT_REF, field_type, new_base, f, NULL_TREE); + + /* Recurse to possibly find the match. */ +- ret = maybe_fold_offset_to_array_ref (new_base, t, orig_type); ++ ret = maybe_fold_offset_to_array_ref (new_base, t, orig_type, ++ f == TYPE_FIELDS (record_type)); + if (ret) + return ret; + ret = maybe_fold_offset_to_component_ref (field_type, new_base, t, +@@ -1818,7 +1835,8 @@ + base = build1 (INDIRECT_REF, record_type, base); + base = build3 (COMPONENT_REF, field_type, base, f, NULL_TREE); + +- t = maybe_fold_offset_to_array_ref (base, offset, orig_type); ++ t = maybe_fold_offset_to_array_ref (base, offset, orig_type, ++ f == TYPE_FIELDS (record_type)); + if (t) + return t; + return maybe_fold_offset_to_component_ref (field_type, base, offset, +@@ -1884,7 +1902,7 @@ + { + if (base_is_ptr) + base = build1 (INDIRECT_REF, type, base); +- ret = maybe_fold_offset_to_array_ref (base, offset, orig_type); ++ ret = maybe_fold_offset_to_array_ref (base, offset, orig_type, true); + } + return ret; + } +@@ -2061,7 +2079,7 @@ + ptd_type = TREE_TYPE (ptr_type); + + /* At which point we can try some of the same things as for indirects. */ +- t = maybe_fold_offset_to_array_ref (op0, op1, ptd_type); ++ t = maybe_fold_offset_to_array_ref (op0, op1, ptd_type, true); + if (!t) + t = maybe_fold_offset_to_component_ref (TREE_TYPE (op0), op0, op1, + ptd_type, false); +Index: gcc/dbxout.c +=================================================================== +--- gcc/dbxout.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/dbxout.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -2332,6 +2332,15 @@ + switch (TREE_CODE (expr)) + { + case VAR_DECL: ++ /* We can't handle emulated tls variables, because the address is an ++ offset to the return value of __emutls_get_address, and there is no ++ way to express that in stabs. Also, there are name mangling issues ++ here. We end up with references to undefined symbols if we don't ++ disable debug info for these variables. */ ++ if (!targetm.have_tls && DECL_THREAD_LOCAL_P (expr)) ++ return NULL; ++ /* FALLTHRU */ ++ + case PARM_DECL: + if (DECL_HAS_VALUE_EXPR_P (expr)) + return dbxout_expand_expr (DECL_VALUE_EXPR (expr)); +Index: gcc/gcov-io.h +=================================================================== +--- gcc/gcov-io.h (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/gcov-io.h (.../branches/gcc-4_3-branch) (revision 133808) +@@ -467,6 +467,9 @@ + consecutive values. */ + extern void __gcov_merge_delta (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; + ++/* The merge function that just ors the counters together. */ ++extern void __gcov_merge_ior (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; ++ + /* The profiler functions. */ + extern void __gcov_interval_profiler (gcov_type *, gcov_type, int, unsigned); + extern void __gcov_pow2_profiler (gcov_type *, gcov_type); +@@ -474,11 +477,10 @@ + extern void __gcov_indirect_call_profiler (gcov_type *, gcov_type, void *, void *); + extern void __gcov_average_profiler (gcov_type *, gcov_type); + extern void __gcov_ior_profiler (gcov_type *, gcov_type); +-extern void __gcov_merge_ior (gcov_type *, unsigned); + + #ifndef inhibit_libc + /* The wrappers around some library functions.. */ +-extern pid_t __gcov_fork (void); ++extern pid_t __gcov_fork (void) ATTRIBUTE_HIDDEN; + extern int __gcov_execl (const char *, const char *, ...) ATTRIBUTE_HIDDEN; + extern int __gcov_execlp (const char *, const char *, ...) ATTRIBUTE_HIDDEN; + extern int __gcov_execle (const char *, const char *, ...) ATTRIBUTE_HIDDEN; +Index: gcc/cse.c +=================================================================== +--- gcc/cse.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/cse.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -4753,6 +4753,23 @@ + src_elt_cost = MAX_COST; + } + ++ /* Avoid creation of overlapping memory moves. */ ++ if (MEM_P (trial) && MEM_P (SET_DEST (sets[i].rtl))) ++ { ++ rtx src, dest; ++ ++ /* BLKmode moves are not handled by cse anyway. */ ++ if (GET_MODE (trial) == BLKmode) ++ break; ++ ++ src = canon_rtx (trial); ++ dest = canon_rtx (SET_DEST (sets[i].rtl)); ++ ++ if (!MEM_P (src) || !MEM_P (dest) ++ || !nonoverlapping_memrefs_p (src, dest)) ++ break; ++ } ++ + /* We don't normally have an insn matching (set (pc) (pc)), so + check for this separately here. We will delete such an + insn below. +@@ -5975,6 +5992,21 @@ + int no_conflict = 0; + + bb = ebb_data->path[path_entry].bb; ++ ++ /* Invalidate recorded information for eh regs if there is an EH ++ edge pointing to that bb. */ ++ if (bb_has_eh_pred (bb)) ++ { ++ struct df_ref **def_rec; ++ ++ for (def_rec = df_get_artificial_defs (bb->index); *def_rec; def_rec++) ++ { ++ struct df_ref *def = *def_rec; ++ if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) ++ invalidate (DF_REF_REG (def), GET_MODE (DF_REF_REG (def))); ++ } ++ } ++ + FOR_BB_INSNS (bb, insn) + { + /* If we have processed 1,000 insns, flush the hash table to +Index: gcc/ifcvt.c +=================================================================== +--- gcc/ifcvt.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/ifcvt.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1737,6 +1737,10 @@ + rtx cond, earliest, target, seq, a, b, c; + int negate; + ++ /* Reject modes with signed zeros. */ ++ if (HONOR_SIGNED_ZEROS (GET_MODE (if_info->x))) ++ return FALSE; ++ + /* Recognize A and B as constituting an ABS or NABS. The canonical + form is a branch around the negation, taken when the object is the + first operand of a comparison against 0 that evaluates to true. */ +Index: gcc/expr.c +=================================================================== +--- gcc/expr.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/expr.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -4654,7 +4654,8 @@ + temp = convert_to_mode (GET_MODE (target), temp, unsignedp); + emit_move_insn (target, temp); + } +- else if (GET_MODE (target) == BLKmode) ++ else if (GET_MODE (target) == BLKmode ++ || GET_MODE (temp) == BLKmode) + emit_block_move (target, temp, expr_size (exp), + (call_param_p + ? BLOCK_OP_CALL_PARM +Index: gcc/ada/env.c +=================================================================== +--- gcc/ada/env.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/ada/env.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -41,10 +41,6 @@ + #include + #endif + +-#if defined (__APPLE__) +-#include +-#endif +- + #if defined (__MINGW32__) + #include + #endif +@@ -61,6 +57,10 @@ + #include "system.h" + #endif /* IN_RTS */ + ++#if defined (__APPLE__) ++#include ++#endif ++ + #include "env.h" + + void +@@ -166,7 +166,7 @@ + LIB$SIGNAL (status); + } + +-#elif defined (__vxworks) && defined (__RTP__) ++#elif (defined (__vxworks) && defined (__RTP__)) || defined (__APPLE__) + setenv (name, value, 1); + + #else +@@ -178,7 +178,7 @@ + sprintf (expression, "%s=%s", name, value); + putenv (expression); + #if (defined (__FreeBSD__) && (__FreeBSD__ < 7)) \ +- || defined (__APPLE__) || defined (__MINGW32__) \ ++ || defined (__MINGW32__) \ + ||(defined (__vxworks) && ! defined (__RTP__)) + /* On some systems like FreeBSD 6.x and earlier, MacOS X and Windows, + putenv is making a copy of the expression string so we can free +Index: gcc/ada/ChangeLog +=================================================================== +--- gcc/ada/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/ada/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,14 @@ ++2008-04-01 John David Anglin ++ ++ PR ada/33857 ++ * env.c: Always include crt_externs.h if __APPLE__ is defined. ++ (__gnat_setenv): Use setenv instead of putenv if __APPLE__ is defined. ++ ++2008-03-31 Eric Botcazou ++ ++ * decl.c (gnat_to_gnu_entity) : Do not force a non-null ++ size if it has overflowed. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: gcc/ada/decl.c +=================================================================== +--- gcc/ada/decl.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/ada/decl.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -636,8 +636,12 @@ + clause, as we would lose useful information on the view size + (e.g. for null array slices) and we are not allocating the object + here anyway. */ +- if (((gnu_size && integer_zerop (gnu_size)) +- || (TYPE_SIZE (gnu_type) && integer_zerop (TYPE_SIZE (gnu_type)))) ++ if (((gnu_size ++ && integer_zerop (gnu_size) ++ && !TREE_OVERFLOW (gnu_size)) ++ || (TYPE_SIZE (gnu_type) ++ && integer_zerop (TYPE_SIZE (gnu_type)) ++ && !TREE_OVERFLOW (TYPE_SIZE (gnu_type)))) + && (!Is_Constr_Subt_For_UN_Aliased (Etype (gnat_entity)) + || !Is_Array_Type (Etype (gnat_entity))) + && !Present (Renamed_Object (gnat_entity)) +Index: gcc/fortran/trans-array.c +=================================================================== +--- gcc/fortran/trans-array.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/trans-array.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -3490,7 +3490,7 @@ + size = 1 - lbound; + a.ubound[n] = specified_upper_bound; + a.stride[n] = stride; +- size = ubound + size; //size = ubound + 1 - lbound ++ size = siz >= 0 ? ubound + size : 0; //size = ubound + 1 - lbound + stride = stride * size; + } + return (stride); +@@ -3590,6 +3590,9 @@ + else + or_expr = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, or_expr, cond); + ++ size = fold_build3 (COND_EXPR, gfc_array_index_type, cond, ++ gfc_index_zero_node, size); ++ + /* Multiply the stride by the number of elements in this dimension. */ + stride = fold_build2 (MULT_EXPR, gfc_array_index_type, stride, size); + stride = gfc_evaluate_now (stride, pblock); +Index: gcc/fortran/trans-expr.c +=================================================================== +--- gcc/fortran/trans-expr.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/trans-expr.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -2844,7 +2844,9 @@ + dsc = gfc_to_single_character (dlen, dest); + + +- if (dsc != NULL_TREE && ssc != NULL_TREE) ++ /* Assign directly if the types are compatible. */ ++ if (dsc != NULL_TREE && ssc != NULL_TREE ++ && TREE_TYPE (dsc) == TREE_TYPE (ssc)) + { + gfc_add_modify_expr (block, dsc, ssc); + return; +Index: gcc/fortran/Make-lang.in +=================================================================== +--- gcc/fortran/Make-lang.in (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/Make-lang.in (.../branches/gcc-4_3-branch) (revision 133808) +@@ -149,7 +149,7 @@ + $(srcdir)/fortran/intrinsic.texi \ + $(srcdir)/fortran/invoke.texi \ + $(srcdir)/doc/include/fdl.texi \ +- $(srcdir)/doc/include/gpl.texi \ ++ $(srcdir)/doc/include/gpl_v3.texi \ + $(srcdir)/doc/include/funding.texi \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi +Index: gcc/fortran/ChangeLog +=================================================================== +--- gcc/fortran/ChangeLog (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/ChangeLog (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,3 +1,49 @@ ++2008-04-01 Joseph Myers ++ ++ * gfortran.texi: Include gpl_v3.texi instead of gpl.texi ++ * Make-lang.in (GFORTRAN_TEXI): Include gpl_v3.texi instead of ++ gpl.texi. ++ ++2008-03-30 Paul Thomas ++ ++ PR fortran/35740 ++ * resolve.c (resolve_function, resolve_call): If the procedure ++ is elemental do not look for noncopying intrinsics. ++ ++2008-03-29 Paul Thomas ++ ++ PR fortran/35698 ++ * trans-array.c (gfc_array_init_size): Set 'size' zero if ++ negative in one dimension. ++ ++ PR fortran/35702 ++ * trans-expr.c (gfc_trans_string_copy): Only assign a char ++ directly if the lhs and rhs types are the same. ++ ++2008-03-27 Jerry DeLisle ++ ++ PR fortran/35724 ++ * iresolve.c (gfc_resolve_cshift): Check for NULL symtree in ++ test for optional argument attribute. ++ ++2008-03-24 Paul Thomas ++ ++ PR fortran/34813 ++ * resolve.c (resolve_structure_cons): It is an error to assign ++ NULL to anything other than a pointer or allocatable component. ++ ++ PR fortran/33295 ++ * resolve.c (resolve_symbol): If the symbol is a derived type, ++ resolve the derived type. If the symbol is a derived type ++ function, ensure that the derived type is visible in the same ++ namespace as the function. ++ ++2008-03-14 Paul Thomas ++ ++ PR fortran/35474 ++ * module.c (mio_symtree_ref): After providing a symbol for a ++ missing equivalence member, resolve and NULL the fixups. ++ + 2008-03-05 Release Manager + + * GCC 4.3.0 released. +Index: gcc/fortran/module.c +=================================================================== +--- gcc/fortran/module.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/module.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -2310,6 +2310,12 @@ + p->u.rsym.symtree->n.sym = p->u.rsym.sym; + p->u.rsym.symtree->n.sym->refs++; + p->u.rsym.referenced = 1; ++ ++ /* If the symbol is PRIVATE and in COMMON, load_commons will ++ generate a fixup symbol, which must be associated. */ ++ if (p->fixup) ++ resolve_fixups (p->fixup, p->u.rsym.sym); ++ p->fixup = NULL; + } + + if (p->type == P_UNKNOWN) +Index: gcc/fortran/resolve.c +=================================================================== +--- gcc/fortran/resolve.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/resolve.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -827,6 +827,16 @@ + t = gfc_convert_type (cons->expr, &comp->ts, 1); + } + ++ if (cons->expr->expr_type == EXPR_NULL ++ && !(comp->pointer || comp->allocatable)) ++ { ++ t = FAILURE; ++ gfc_error ("The NULL in the derived type constructor at %L is " ++ "being applied to component '%s', which is neither " ++ "a POINTER nor ALLOCATABLE", &cons->expr->where, ++ comp->name); ++ } ++ + if (!comp->pointer || cons->expr->expr_type == EXPR_NULL) + continue; + +@@ -2365,7 +2375,12 @@ + gfc_expr_set_symbols_referenced (expr->ts.cl->length); + } + +- if (t == SUCCESS) ++ if (t == SUCCESS ++ && !((expr->value.function.esym ++ && expr->value.function.esym->attr.elemental) ++ || ++ (expr->value.function.isym ++ && expr->value.function.isym->elemental))) + find_noncopying_intrinsics (expr->value.function.esym, + expr->value.function.actual); + +@@ -2836,7 +2851,7 @@ + if (resolve_elemental_actual (NULL, c) == FAILURE) + return FAILURE; + +- if (t == SUCCESS) ++ if (t == SUCCESS && !(c->resolved_sym && c->resolved_sym->attr.elemental)) + find_noncopying_intrinsics (c->resolved_sym, c->ext.actual); + return t; + } +@@ -7974,6 +7989,29 @@ + return; + } + ++ /* Make sure that the derived type has been resolved and that the ++ derived type is visible in the symbol's namespace, if it is a ++ module function and is not PRIVATE. */ ++ if (sym->ts.type == BT_DERIVED ++ && sym->ts.derived->attr.use_assoc ++ && sym->ns->proc_name->attr.flavor == FL_MODULE) ++ { ++ gfc_symbol *ds; ++ ++ if (resolve_fl_derived (sym->ts.derived) == FAILURE) ++ return; ++ ++ gfc_find_symbol (sym->ts.derived->name, sym->ns, 1, &ds); ++ if (!ds && sym->attr.function ++ && gfc_check_access (sym->attr.access, sym->ns->default_access)) ++ { ++ symtree = gfc_new_symtree (&sym->ns->sym_root, ++ sym->ts.derived->name); ++ symtree->n.sym = sym->ts.derived; ++ sym->ts.derived->refs++; ++ } ++ } ++ + /* Unless the derived-type declaration is use associated, Fortran 95 + does not allow public entries of private derived types. + See 4.4.1 (F95) and 4.5.1.1 (F2003); and related interpretation +Index: gcc/fortran/iresolve.c +=================================================================== +--- gcc/fortran/iresolve.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/fortran/iresolve.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -592,7 +592,8 @@ + + if (dim != NULL) + { +- if (dim->expr_type != EXPR_CONSTANT && dim->symtree->n.sym->attr.optional) ++ if (dim->expr_type != EXPR_CONSTANT && dim->symtree != NULL ++ && dim->symtree->n.sym->attr.optional) + { + /* Mark this for later setting the type in gfc_conv_missing_dummy. */ + dim->representation.length = shift->ts.kind; +Index: gcc/BASE-VER +=================================================================== +--- gcc/BASE-VER (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/BASE-VER (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1 +1 @@ +-4.3.0 ++4.3.1 +Index: gcc/alias.c +=================================================================== +--- gcc/alias.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/alias.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -164,7 +164,6 @@ + static bool nonoverlapping_component_refs_p (const_tree, const_tree); + static tree decl_for_component_ref (tree); + static rtx adjust_offset_for_component_ref (tree, rtx); +-static int nonoverlapping_memrefs_p (const_rtx, const_rtx); + static int write_dependence_p (const_rtx, const_rtx, int); + + static void memory_modified_1 (rtx, const_rtx, void *); +@@ -1976,7 +1975,7 @@ + /* Return nonzero if we can determine the exprs corresponding to memrefs + X and Y and they do not overlap. */ + +-static int ++int + nonoverlapping_memrefs_p (const_rtx x, const_rtx y) + { + tree exprx = MEM_EXPR (x), expry = MEM_EXPR (y); +Index: gcc/alias.h +=================================================================== +--- gcc/alias.h (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/alias.h (.../branches/gcc-4_3-branch) (revision 133808) +@@ -28,6 +28,7 @@ + extern alias_set_type get_frame_alias_set (void); + extern bool component_uses_parent_alias_set (const_tree); + extern bool alias_set_subset_of (alias_set_type, alias_set_type); ++extern int nonoverlapping_memrefs_p (const_rtx, const_rtx); + + /* This alias set can be used to force a memory to conflict with all + other memories, creating a barrier across which no memory reference +Index: gcc/gimplify.c +=================================================================== +--- gcc/gimplify.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/gimplify.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -5464,7 +5464,11 @@ + expr = TREE_OPERAND (expr, 0); + addr = TREE_OPERAND (addr, 0); + } +- return expr == addr; ++ if (expr == addr) ++ return true; ++ return (TREE_CODE (addr) == ADDR_EXPR ++ && TREE_CODE (expr) == ADDR_EXPR ++ && TREE_OPERAND (addr, 0) == TREE_OPERAND (expr, 0)); + } + if (TREE_CODE (addr) == ADDR_EXPR && expr == TREE_OPERAND (addr, 0)) + return true; +@@ -6018,12 +6022,18 @@ + + case OMP_RETURN: + case OMP_CONTINUE: +- case OMP_ATOMIC_LOAD: +- case OMP_ATOMIC_STORE: +- ++ case OMP_ATOMIC_STORE: + ret = GS_ALL_DONE; + break; + ++ case OMP_ATOMIC_LOAD: ++ if (gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, NULL, ++ is_gimple_val, fb_rvalue) != GS_ALL_DONE) ++ ret = GS_ERROR; ++ else ++ ret = GS_ALL_DONE; ++ break; ++ + case POINTER_PLUS_EXPR: + /* Convert ((type *)A)+offset into &A->field_of_type_and_offset. + The second is gimple immediate saving a need for extra statement. +Index: gcc/calls.c +=================================================================== +--- gcc/calls.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/calls.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -2326,7 +2326,7 @@ + int save_pending_stack_adjust = 0; + int save_stack_pointer_delta = 0; + rtx insns; +- rtx before_call, next_arg_reg; ++ rtx before_call, next_arg_reg, after_args; + + if (pass == 0) + { +@@ -2756,6 +2756,7 @@ + use_reg (&call_fusage, struct_value); + } + ++ after_args = get_last_insn (); + funexp = prepare_call_address (funexp, static_chain_value, + &call_fusage, reg_parm_seen, pass == 0); + +@@ -2790,6 +2791,13 @@ + next_arg_reg, valreg, old_inhibit_defer_pop, call_fusage, + flags, & args_so_far); + ++ /* If the call setup or the call itself overlaps with anything ++ of the argument setup we probably clobbered our call address. ++ In that case we can't do sibcalls. */ ++ if (pass == 0 ++ && check_sibcall_argument_overlap (after_args, 0, 0)) ++ sibcall_failure = 1; ++ + /* If a non-BLKmode value is returned at the most significant end + of a register, shift the register right by the appropriate amount + and update VALREG accordingly. BLKmode values are handled by the +Index: gcc/expmed.c +=================================================================== +--- gcc/expmed.c (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/expmed.c (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1339,18 +1339,15 @@ + || (offset * BITS_PER_UNIT % bitsize == 0 + && MEM_ALIGN (op0) % bitsize == 0))))) + { +- if (mode1 != GET_MODE (op0)) ++ if (MEM_P (op0)) ++ op0 = adjust_address (op0, mode1, offset); ++ else if (mode1 != GET_MODE (op0)) + { +- if (MEM_P (op0)) +- op0 = adjust_address (op0, mode1, offset); +- else +- { +- rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0), +- byte_offset); +- if (sub == NULL) +- goto no_subreg_mode_swap; +- op0 = sub; +- } ++ rtx sub = simplify_gen_subreg (mode1, op0, GET_MODE (op0), ++ byte_offset); ++ if (sub == NULL) ++ goto no_subreg_mode_swap; ++ op0 = sub; + } + if (mode1 != mode) + return convert_to_mode (tmode, op0, unsignedp); +Index: gcc/po/ca.po +=================================================================== +--- gcc/po/ca.po (.../tags/gcc_4_3_0_release) (revision 133808) ++++ gcc/po/ca.po (.../branches/gcc-4_3-branch) (revision 133808) +@@ -1,37932 +0,0 @@ +-# translation of gcc-3.4.3-ca.po to Catalan +-# Catalan translation of gcc. +-# Copyright (C) 2004 Free Software Foundation, Inc. +-# This file is distributed under the same license as the gcc package. +-# Gilles MATEU , 2002. +-# Gilles MATEU , 2003. +-# Gilles MATEU , 2004. +-# Jordi Mas i Hernandez , 2004 +-# Antoni Bella Pérez , 2004 +-# Gilles MATEU , 2004 +-# David Poblador , 2004 +-# +-# +-# Aquest fitxer té errades ortogràfiques, sintàtiques, i de traducció greus. +-# A 31/10/2004 vaig aplicar correccions importants, però s'hauria de revisar +-# el fitxer completament. +-# +-# - Proposo a més no traduir les ordres de llenguatge C. Per exemple, no traduir +-# 'case' per 'cas' ni cap altre ordre del llenguatge C. +-# +-# - Proposo escriure els mots que sigui ordre del llenguatge entre de la següent manera: +-# «case» (per indicar que es textual) +-# +-# Cal molta feina en aquest fitxer. Jordi 05/11/2004 +-# +-# +-msgid "" +-msgstr "" +-"Project-Id-Version: gcc 3.4.3\n" +-"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" +-"POT-Creation-Date: 2007-11-08 21:09+0000\n" +-"PO-Revision-Date: 2004-11-10 00:42+0000\n" +-"Last-Translator: Mateu Gilles \n" +-"Language-Team: Catalan \n" +-"MIME-Version: 1.0\n" +-"Content-Type: text/plain; charset=iso-8859-1\n" +-"Content-Transfer-Encoding: 8bit\n" +- +-#: c-decl.c:3814 +-msgid "" +-msgstr "" +- +-#: c-format.c:357 c-format.c:381 +-#, fuzzy +-msgid "' ' flag" +-msgstr "opció \" \"" +- +-#: c-format.c:357 c-format.c:381 +-#, fuzzy +-msgid "the ' ' printf flag" +-msgstr "l'opció \" \" de printf" +- +-#: c-format.c:358 c-format.c:382 c-format.c:416 c-format.c:428 c-format.c:487 +-#, fuzzy +-msgid "'+' flag" +-msgstr "opció \"+\"" +- +-#: c-format.c:358 c-format.c:382 c-format.c:416 c-format.c:428 +-#, fuzzy +-msgid "the '+' printf flag" +-msgstr "l'opció \"+\" de printf" +- +-#: c-format.c:359 c-format.c:383 c-format.c:429 c-format.c:463 +-#, fuzzy +-msgid "'#' flag" +-msgstr "opció \"#\"" +- +-#: c-format.c:359 c-format.c:383 c-format.c:429 +-#, fuzzy +-msgid "the '#' printf flag" +-msgstr "l'opció \"#\" de printf" +- +-#: c-format.c:360 c-format.c:384 c-format.c:461 +-#, fuzzy +-msgid "'0' flag" +-msgstr "opció \"0\"" +- +-#: c-format.c:360 c-format.c:384 +-#, fuzzy +-msgid "the '0' printf flag" +-msgstr "l'opció \"0\" de printf" +- +-#: c-format.c:361 c-format.c:385 c-format.c:460 c-format.c:490 +-#, fuzzy +-msgid "'-' flag" +-msgstr "opció \"-\"" +- +-#: c-format.c:361 c-format.c:385 +-#, fuzzy +-msgid "the '-' printf flag" +-msgstr "l'opció \"-\" de printf" +- +-#: c-format.c:362 c-format.c:443 +-#, fuzzy +-msgid "''' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:362 +-#, fuzzy +-msgid "the ''' printf flag" +-msgstr "l'opció \"'\" de printf" +- +-#: c-format.c:363 c-format.c:444 +-#, fuzzy +-msgid "'I' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:363 +-#, fuzzy +-msgid "the 'I' printf flag" +-msgstr "l'opció \"'\" de printf" +- +-#: c-format.c:364 c-format.c:386 c-format.c:441 c-format.c:464 c-format.c:491 +-#: c-format.c:1623 config/sol2-c.c:45 +-msgid "field width" +-msgstr "amplària de camp" +- +-#: c-format.c:364 c-format.c:386 config/sol2-c.c:45 +-msgid "field width in printf format" +-msgstr "amplària de camp en format printf" +- +-#: c-format.c:365 c-format.c:387 c-format.c:418 c-format.c:431 +-msgid "precision" +-msgstr "precisió" +- +-#: c-format.c:365 c-format.c:387 c-format.c:418 c-format.c:431 +-msgid "precision in printf format" +-msgstr "precisió en format printf" +- +-#: c-format.c:366 c-format.c:388 c-format.c:419 c-format.c:432 c-format.c:442 +-#: c-format.c:494 config/sol2-c.c:46 +-msgid "length modifier" +-msgstr "modificador de longitud" +- +-#: c-format.c:366 c-format.c:388 c-format.c:419 c-format.c:432 +-#: config/sol2-c.c:46 +-msgid "length modifier in printf format" +-msgstr "modificador de longitud en format printf" +- +-#: c-format.c:417 c-format.c:430 +-#, fuzzy +-msgid "'q' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:417 c-format.c:430 +-#, fuzzy +-msgid "the 'q' diagnostic flag" +-msgstr "l'opció \"'\" de printf" +- +-#: c-format.c:438 +-msgid "assignment suppression" +-msgstr "supressió de l'assignació" +- +-#: c-format.c:438 +-msgid "the assignment suppression scanf feature" +-msgstr "la supressió de l'assignació és una característica de scanf" +- +-#: c-format.c:439 +-#, fuzzy +-msgid "'a' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:439 +-#, fuzzy +-msgid "the 'a' scanf flag" +-msgstr "l'opció \"a\" de scanf" +- +-#: c-format.c:440 +-#, fuzzy +-msgid "'m' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:440 +-#, fuzzy +-msgid "the 'm' scanf flag" +-msgstr "l'opció \"'\" de scanf" +- +-#: c-format.c:441 +-msgid "field width in scanf format" +-msgstr "amplària de camp en format scanf" +- +-#: c-format.c:442 +-msgid "length modifier in scanf format" +-msgstr "modificador de longitud en format scanf" +- +-#: c-format.c:443 +-#, fuzzy +-msgid "the ''' scanf flag" +-msgstr "l'opció \"'\" de scanf" +- +-#: c-format.c:444 +-#, fuzzy +-msgid "the 'I' scanf flag" +-msgstr "l'opció \"'\" de scanf" +- +-#: c-format.c:459 +-#, fuzzy +-msgid "'_' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:459 +-#, fuzzy +-msgid "the '_' strftime flag" +-msgstr "l'opció \"_\" de strftime" +- +-#: c-format.c:460 +-#, fuzzy +-msgid "the '-' strftime flag" +-msgstr "l'opció \"-\" de strftime" +- +-#: c-format.c:461 +-#, fuzzy +-msgid "the '0' strftime flag" +-msgstr "l'opció \"0\" de strftime" +- +-#: c-format.c:462 c-format.c:486 +-#, fuzzy +-msgid "'^' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:462 +-#, fuzzy +-msgid "the '^' strftime flag" +-msgstr "l'opció \"^\" de strftime" +- +-#: c-format.c:463 +-#, fuzzy +-msgid "the '#' strftime flag" +-msgstr "l'opció \"#\" de strftime" +- +-#: c-format.c:464 +-msgid "field width in strftime format" +-msgstr "amplària de camp en format strftime" +- +-#: c-format.c:465 +-#, fuzzy +-msgid "'E' modifier" +-msgstr "modificador \"E\"" +- +-#: c-format.c:465 +-#, fuzzy +-msgid "the 'E' strftime modifier" +-msgstr "el modificador \"E\" de strftime" +- +-#: c-format.c:466 +-#, fuzzy +-msgid "'O' modifier" +-msgstr "modificador \"O\"" +- +-#: c-format.c:466 +-#, fuzzy +-msgid "the 'O' strftime modifier" +-msgstr "el modificador \"O\" de strftime" +- +-#: c-format.c:467 +-#, fuzzy +-msgid "the 'O' modifier" +-msgstr "el modificador \"O\"" +- +-#: c-format.c:485 +-msgid "fill character" +-msgstr "caràcter de farciment" +- +-#: c-format.c:485 +-msgid "fill character in strfmon format" +-msgstr "caràcter de farciment en format strfmon" +- +-#: c-format.c:486 +-#, fuzzy +-msgid "the '^' strfmon flag" +-msgstr "l'opció \"^\" de strfmon" +- +-#: c-format.c:487 +-#, fuzzy +-msgid "the '+' strfmon flag" +-msgstr "l'opció \"+\" de strfmon" +- +-#: c-format.c:488 +-#, fuzzy +-msgid "'(' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:488 +-#, fuzzy +-msgid "the '(' strfmon flag" +-msgstr "l'opció \"(\" de strfmon" +- +-#: c-format.c:489 +-#, fuzzy +-msgid "'!' flag" +-msgstr "opció \"'\"" +- +-#: c-format.c:489 +-#, fuzzy +-msgid "the '!' strfmon flag" +-msgstr "l'opció \"!\" de strfmon" +- +-#: c-format.c:490 +-#, fuzzy +-msgid "the '-' strfmon flag" +-msgstr "l'opció \"-\" de strfmon" +- +-#: c-format.c:491 +-msgid "field width in strfmon format" +-msgstr "amplària de camp en format strfmon" +- +-#: c-format.c:492 +-msgid "left precision" +-msgstr "precisió esquerra" +- +-#: c-format.c:492 +-msgid "left precision in strfmon format" +-msgstr "precisió esquerra en format strfmon" +- +-#: c-format.c:493 +-msgid "right precision" +-msgstr "precisió de dreta" +- +-#: c-format.c:493 +-msgid "right precision in strfmon format" +-msgstr "precisió de dreta en format strfmon" +- +-#: c-format.c:494 +-msgid "length modifier in strfmon format" +-msgstr "modificador de longitud en format strfmon" +- +-#: c-format.c:1725 +-msgid "field precision" +-msgstr "precisió del camp" +- +-#: c-incpath.c:74 +-#, c-format +-msgid "ignoring duplicate directory \"%s\"\n" +-msgstr "ignorant el directori duplicat \"%s\"\n" +- +-#: c-incpath.c:77 +-#, c-format +-msgid " as it is a non-system directory that duplicates a system directory\n" +-msgstr " com és un directori que no és del sistema que duplica un directori del sistema\n" +- +-#: c-incpath.c:81 +-#, c-format +-msgid "ignoring nonexistent directory \"%s\"\n" +-msgstr "ignorant el directori inexistent \"%s\"\n" +- +-#: c-incpath.c:344 +-#, c-format +-msgid "#include \"...\" search starts here:\n" +-msgstr "la recerca de #include \"...\" s'inicia aquí:\n" +- +-#: c-incpath.c:348 +-#, c-format +-msgid "#include <...> search starts here:\n" +-msgstr "la recerca de #include <...> s'inicia aquí:\n" +- +-#: c-incpath.c:353 +-#, c-format +-msgid "End of search list.\n" +-msgstr "Fi de la llista de recerca.\n" +- +-#: c-opts.c:1484 +-msgid "" +-msgstr "" +- +-#: c-opts.c:1502 +-#, fuzzy +-msgid "" +-msgstr "" +- +-#: c-typeck.c:2448 c-typeck.c:4851 c-typeck.c:4853 c-typeck.c:4861 +-#: c-typeck.c:4891 c-typeck.c:6267 +-msgid "initializer element is not constant" +-msgstr "l'element de valor inicial no és constant" +- +-#: c-typeck.c:4654 +-#, fuzzy +-msgid "array initialized from parenthesized string constant" +-msgstr "matriu de caràcters amb valors inicials assignats d'una cadena ampla" +- +-#: c-typeck.c:4715 cp/typeck2.c:677 +-#, gcc-internal-format +-msgid "char-array initialized from wide string" +-msgstr "matriu de caràcters amb valors inicials assignats d'una cadena ampla" +- +-#: c-typeck.c:4720 +-#, fuzzy +-msgid "wchar_t-array initialized from non-wide string" +-msgstr "matriu de caràcters amb valors inicials assignats d'una cadena ampla" +- +-#: c-typeck.c:4738 cp/typeck2.c:697 +-#, gcc-internal-format +-msgid "initializer-string for array of chars is too long" +-msgstr "la cadena de valors inicials per a la matriu de caràcters és massa llarga" +- +-#: c-typeck.c:4744 +-#, fuzzy +-msgid "array of inappropriate type initialized from string constant" +-msgstr "matriu de caràcters amb valors inicials assignats d'una cadena ampla" +- +-#. ??? This should not be an error when inlining calls to +-#. unprototyped functions. +-#: c-typeck.c:4808 c-typeck.c:4333 cp/typeck.c:1528 +-#, gcc-internal-format +-msgid "invalid use of non-lvalue array" +-msgstr "ús no vàlid de matriu no evaluada" +- +-#: c-typeck.c:4834 +-msgid "array initialized from non-constant array expression" +-msgstr "matriu amb valors inicials assignats d'una expressió matricial que no és constant" +- +-#: c-typeck.c:4898 c-typeck.c:6271 +-#, gcc-internal-format +-msgid "initializer element is not computable at load time" +-msgstr "l'element de valor inicial no és calculable al moment de la càrrega" +- +-#. Although C99 is unclear about whether incomplete arrays +-#. of VLAs themselves count as VLAs, it does not make +-#. sense to permit them to be initialized given that +-#. ordinary VLAs may not be initialized. +-#: c-typeck.c:4909 c-decl.c:3222 c-decl.c:3237 +-#, gcc-internal-format +-msgid "variable-sized object may not be initialized" +-msgstr "un objecte de grandària variable no pot tenir valor inicial" +- +-#: c-typeck.c:4913 +-msgid "invalid initializer" +-msgstr "valor inicial no vàlid" +- +-#: c-typeck.c:5387 +-msgid "extra brace group at end of initializer" +-msgstr "grup extra de claus al final dels valors inicials" +- +-#: c-typeck.c:5407 +-msgid "missing braces around initializer" +-msgstr "falten claus al voltant dels valors inicials" +- +-#: c-typeck.c:5468 +-msgid "braces around scalar initializer" +-msgstr "claus al voltant del valor inicial escalar" +- +-#: c-typeck.c:5525 +-msgid "initialization of flexible array member in a nested context" +-msgstr "iniciació d'un membre de matriu flexible en un context niat" +- +-#: c-typeck.c:5527 +-msgid "initialization of a flexible array member" +-msgstr "iniciació d'un membre de matriu flexible" +- +-#: c-typeck.c:5554 +-msgid "missing initializer" +-msgstr "falta valor inicial" +- +-#: c-typeck.c:5576 +-msgid "empty scalar initializer" +-msgstr "valor inicial escalar buidor" +- +-#: c-typeck.c:5581 +-msgid "extra elements in scalar initializer" +-msgstr "elements extres en valor inicial escalar" +- +-#: c-typeck.c:5678 c-typeck.c:5738 +-msgid "array index in non-array initializer" +-msgstr "índex de matriu en valor inicial que no és de matriu" +- +-#: c-typeck.c:5683 c-typeck.c:5791 +-msgid "field name not in record or union initializer" +-msgstr "el nom del camp no està en e l'inicialitzador de record o union" +- +-#: c-typeck.c:5729 +-#, fuzzy +-msgid "array index in initializer not of integer type" +-msgstr "l'índex de matriu en el valor inicial excedeix els límits de la matriu" +- +-#: c-typeck.c:5734 c-typeck.c:5736 +-msgid "nonconstant array index in initializer" +-msgstr "índex de matriu no constant en valor inicial" +- +-#: c-typeck.c:5740 c-typeck.c:5743 +-msgid "array index in initializer exceeds array bounds" +-msgstr "l'índex de matriu en el valor inicial excedeix els límits de la matriu" +- +-#: c-typeck.c:5754 +-msgid "empty index range in initializer" +-msgstr "límits d'índexs buits en valor inicial" +- +-#: c-typeck.c:5763 +-msgid "array index range in initializer exceeds array bounds" +-msgstr "els límits d'índexs de la matriu en el valor inicial excedeixen els límits de la matriu" +- +-#: c-typeck.c:5838 c-typeck.c:5861 c-typeck.c:6335 +-msgid "initialized field with side-effects overwritten" +-msgstr "camp iniciat amb efectes laterals sobreescrits" +- +-#: c-typeck.c:5840 c-typeck.c:5863 c-typeck.c:6337 +-#, fuzzy +-msgid "initialized field overwritten" +-msgstr "camp iniciat amb efectes laterals sobreescrits" +- +-#: c-typeck.c:6545 +-msgid "excess elements in char array initializer" +-msgstr "excés d'elements en valors inicials de matriu de caràcters" +- +-#: c-typeck.c:6552 c-typeck.c:6598 +-msgid "excess elements in struct initializer" +-msgstr "excés d'elements en valors inicials de struct" +- +-#: c-typeck.c:6613 +-msgid "non-static initialization of a flexible array member" +-msgstr "iniciació no estàtica d'un membre de matriu flexible" +- +-#: c-typeck.c:6681 +-msgid "excess elements in union initializer" +-msgstr "excés d'elements en valors inicials d'union" +- +-#: c-typeck.c:6768 +-msgid "excess elements in array initializer" +-msgstr "excés d'elements en valors inicials de matriu" +- +-#: c-typeck.c:6798 +-msgid "excess elements in vector initializer" +-msgstr "excés d'elements en valor inicial vectorial" +- +-#: c-typeck.c:6822 +-msgid "excess elements in scalar initializer" +-msgstr "excés d'elements en valor inicial escalar" +- +-#: cfgrtl.c:1925 +-msgid "flow control insn inside a basic block" +-msgstr "control de fluix insn dintre el bloc bàsic" +- +-#: cfgrtl.c:2054 +-msgid "wrong insn in the fallthru edge" +-msgstr "insn erroni en la vora del respatller" +- +-#: cfgrtl.c:2110 +-msgid "insn outside basic block" +-msgstr "insn fora del bloc bàsic" +- +-#: cfgrtl.c:2117 +-msgid "return not followed by barrier" +-msgstr "return no és seguit per una barrera" +- +-#: cgraph.c:339 ipa-inline.c:417 +-msgid "function body not available" +-msgstr "la funció cso no és disponible" +- +-#: cgraph.c:341 cgraphbuild.c:96 +-msgid "redefined extern inline functions are not considered for inlining" +-msgstr "" +- +-#: cgraph.c:344 cgraphbuild.c:103 +-msgid "function not considered for inlining" +-msgstr "" +- +-#: cgraph.c:346 cgraphbuild.c:99 +-msgid "function not inlinable" +-msgstr "la funció no pot ser «inline»" +- +-#: cgraphbuild.c:101 +-#, fuzzy +-msgid "mismatched arguments" +-msgstr "claus sense coincidència en especificacions" +- +-#: collect2.c:378 gcc.c:6897 +-#, fuzzy, c-format +-msgid "internal gcc abort in %s, at %s:%d" +-msgstr "abandó en %s, en %s:%d" +- +-#: collect2.c:889 +-#, c-format +-msgid "no arguments" +-msgstr "sense arguments" +- +-#: collect2.c:1263 collect2.c:1411 collect2.c:1446 +-#, c-format +-msgid "fopen %s" +-msgstr "fopen %s" +- +-#: collect2.c:1266 collect2.c:1416 collect2.c:1449 +-#, c-format +-msgid "fclose %s" +-msgstr "fclose %s" +- +-#: collect2.c:1275 +-#, c-format +-msgid "collect2 version %s" +-msgstr "collect2 versió %s" +- +-#: collect2.c:1365 +-#, c-format +-msgid "%d constructor(s) found\n" +-msgstr "es troba(en) %d constructor(s)\n" +- +-#: collect2.c:1366 +-#, c-format +-msgid "%d destructor(s) found\n" +-msgstr "es troba(en) %d destructor(s)\n" +- +-#: collect2.c:1367 +-#, c-format +-msgid "%d frame table(s) found\n" +-msgstr "es troba(en) %d marcs de matriu(es)\n" +- +-#: collect2.c:1504 +-#, fuzzy, c-format +-msgid "can't get program status" +-msgstr "%s: %s: no es pot obtenir l'estat: %s\n" +- +-#: collect2.c:1573 +-#, fuzzy, c-format +-msgid "could not open response file %s" +-msgstr "No es pot obrir el fitxer de codi font %s.\n" +- +-#: collect2.c:1578 +-#, fuzzy, c-format +-msgid "could not write to response file %s" +-msgstr "No es pot trobar el fitxer d'especificacions %s\n" +- +-#: collect2.c:1583 +-#, fuzzy, c-format +-msgid "could not close response file %s" +-msgstr "No es pot obrir el fitxer de codi font %s.\n" +- +-#: collect2.c:1601 +-#, c-format +-msgid "[cannot find %s]" +-msgstr "[no es pot trobar %s]" +- +-#: collect2.c:1616 +-#, fuzzy, c-format +-msgid "cannot find '%s'" +-msgstr "no es pot trobar \"%s\"" +- +-#: collect2.c:1620 collect2.c:2112 collect2.c:2267 gcc.c:2978 +-#, c-format +-msgid "pex_init failed" +-msgstr "" +- +-#: collect2.c:1658 +-#, c-format +-msgid "[Leaving %s]\n" +-msgstr "[Deixant %s]\n" +- +-#: collect2.c:1878 +-#, c-format +-msgid "" +-"\n" +-"write_c_file - output name is %s, prefix is %s\n" +-msgstr "" +-"\n" +-"write_c_file - el nom de sortida és %s, el prefix és %s\n" +- +-#: collect2.c:2086 +-#, fuzzy, c-format +-msgid "cannot find 'nm'" +-msgstr "no es pot trobar \"nm\"" +- +-#: collect2.c:2133 +-#, fuzzy, c-format +-msgid "can't open nm output" +-msgstr "no es pot obrir %s" +- +-#: collect2.c:2177 +-#, c-format +-msgid "init function found in object %s" +-msgstr "es va trobar la funció init en l'objecte %s" +- +-#: collect2.c:2185 +-#, c-format +-msgid "fini function found in object %s" +-msgstr "es va trobar la funció fini en l'objecte %s" +- +-#: collect2.c:2288 +-#, fuzzy, c-format +-msgid "can't open ldd output" +-msgstr "no es pot obrir %s" +- +-#: collect2.c:2291 +-#, c-format +-msgid "" +-"\n" +-"ldd output with constructors/destructors.\n" +-msgstr "" +-"\n" +-"sortida de ldd amb constructors/destructors.\n" +- +-#: collect2.c:2306 +-#, c-format +-msgid "dynamic dependency %s not found" +-msgstr "no es troba la dependència dinàmica %s" +- +-#: collect2.c:2318 +-#, c-format +-msgid "unable to open dynamic dependency '%s'" +-msgstr "no es pot obrir la dependència dinàmica \"%s\"" +- +-#: collect2.c:2474 +-#, c-format +-msgid "%s: not a COFF file" +-msgstr "%s: no és un fitxer COFF" +- +-#: collect2.c:2594 +-#, c-format +-msgid "%s: cannot open as COFF file" +-msgstr "%s: no es pot obrir com un fitxer COFF" +- +-#: collect2.c:2652 +-#, c-format +-msgid "library lib%s not found" +-msgstr "no es troba la biblioteca lib%s" +- +-#: cppspec.c:106 +-#, c-format +-msgid "\"%s\" is not a valid option to the preprocessor" +-msgstr "\"%s\" no es una opció vàlida per el preprocessador" +- +-#: cppspec.c:128 +-#, c-format +-msgid "too many input files" +-msgstr "massa fitxers d'entrada" +- +-#: diagnostic.c:188 +-#, c-format +-msgid "%s:%d: confused by earlier errors, bailing out\n" +-msgstr "%s:%d: confusió per errors precedentes, abandó\n" +- +-#: diagnostic.c:235 +-#, fuzzy, c-format +-msgid "compilation terminated due to -Wfatal-errors.\n" +-msgstr "compilació acabada.\n" +- +-#: diagnostic.c:244 +-#, c-format +-msgid "" +-"Please submit a full bug report,\n" +-"with preprocessed source if appropriate.\n" +-"See %s for instructions.\n" +-msgstr "" +-"Si us plau, envieu un informe d'error complet,\n" +-"amb la font preprocessada si és oportú.\n" +-"Consulta %s per a les instruccions.\n" +- +-#: diagnostic.c:253 +-#, c-format +-msgid "compilation terminated.\n" +-msgstr "compilació acabada.\n" +- +-#: diagnostic.c:641 +-#, c-format +-msgid "Internal compiler error: Error reporting routines re-entered.\n" +-msgstr "Error intern del compilador: Error al reportar rutines reentrades.\n" +- +-#: final.c:1136 +-msgid "negative insn length" +-msgstr "longitud insn negativa" +- +-#: final.c:2609 +-msgid "could not split insn" +-msgstr "no es pot separar insn" +- +-#: final.c:2979 +-#, fuzzy +-msgid "invalid 'asm': " +-msgstr "\"asm\" no vàlid: " +- +-#: final.c:3162 +-#, c-format +-msgid "nested assembly dialect alternatives" +-msgstr "alternatives de dialecte d'ensamblador imbricades" +- +-#: final.c:3179 final.c:3191 +-#, c-format +-msgid "unterminated assembly dialect alternative" +-msgstr "alternativa de dialecte d'ensamblador no terminada" +- +-#: final.c:3238 +-#, c-format +-msgid "operand number missing after %%-letter" +-msgstr "falta nombre operand després de %%-letter" +- +-#: final.c:3241 final.c:3282 +-#, c-format +-msgid "operand number out of range" +-msgstr "nombre operador fora de límits" +- +-#: final.c:3301 +-#, c-format +-msgid "invalid %%-code" +-msgstr "%%-codi no vàlid" +- +-#: final.c:3331 +-#, fuzzy, c-format +-msgid "'%%l' operand isn't a label" +-msgstr "l'operand \"%%l\" no és una etiqueta" +- +-#. We can't handle floating point constants; +-#. PRINT_OPERAND must handle them. +-#. We can't handle floating point constants; PRINT_OPERAND must +-#. handle them. +-#. We can't handle floating point constants; +-#. PRINT_OPERAND must handle them. +-#: final.c:3433 vmsdbgout.c:487 config/i386/i386.c:8143 +-#: config/pdp11/pdp11.c:1704 +-#, c-format +-msgid "floating constant misused" +-msgstr "constant de coma flotant mal usada" +- +-#: final.c:3493 vmsdbgout.c:544 config/i386/i386.c:8224 +-#: config/pdp11/pdp11.c:1751 +-#, c-format +-msgid "invalid expression as operand" +-msgstr "expressió no vàlida com a operand" +- +-#: gcc.c:1704 +-#, c-format +-msgid "Using built-in specs.\n" +-msgstr "Usant especificacions internes.\n" +- +-#: gcc.c:1887 +-#, c-format +-msgid "" +-"Setting spec %s to '%s'\n" +-"\n" +-msgstr "" +-"Canviant l'especificació de %s a \"%s\"\n" +-"\n" +- +-#: gcc.c:2002 +-#, c-format +-msgid "Reading specs from %s\n" +-msgstr "Llegint especificacions de %s\n" +- +-#: gcc.c:2098 gcc.c:2117 +-#, c-format +-msgid "specs %%include syntax malformed after %ld characters" +-msgstr "specs sintaxi mal formada de %%include després de %ld caràcters" +- +-#: gcc.c:2125 +-#, c-format +-msgid "could not find specs file %s\n" +-msgstr "No es pot trobar el fitxer d'especificacions %s\n" +- +-#: gcc.c:2142 gcc.c:2150 gcc.c:2159 gcc.c:2168 +-#, c-format +-msgid "specs %%rename syntax malformed after %ld characters" +-msgstr "specs sintaxi mal formada de %%rename després de %ld caràcters" +- +-#: gcc.c:2177 +-#, c-format +-msgid "specs %s spec was not found to be renamed" +-msgstr "specs l'especificació %s no es va trobar per a ser re-nomenada" +- +-#: gcc.c:2184 +-#, c-format +-msgid "%s: attempt to rename spec '%s' to already defined spec '%s'" +-msgstr "" +- +-#: gcc.c:2189 +-#, c-format +-msgid "rename spec %s to %s\n" +-msgstr "re-nomenada especificació %s a %s\n" +- +-#: gcc.c:2191 +-#, c-format +-msgid "" +-"spec is '%s'\n" +-"\n" +-msgstr "" +-"la especificació és \"%s\"\n" +-"\n" +- +-#: gcc.c:2204 +-#, c-format +-msgid "specs unknown %% command after %ld characters" +-msgstr "specs ordre %% desconegut després de %ld caràcters" +- +-#: gcc.c:2215 gcc.c:2228 +-#, c-format +-msgid "specs file malformed after %ld characters" +-msgstr "specs fitxer mal format després de %ld caràcters" +- +-#: gcc.c:2281 +-#, c-format +-msgid "spec file has no spec for linking" +-msgstr "el fitxer d'especificacions no té especificacions per a enllaçar" +- +-#: gcc.c:2609 gcc.c:4751 +-#, c-format +-msgid "%s\n" +-msgstr "%s\n" +- +-#: gcc.c:2809 +-#, fuzzy, c-format +-msgid "system path '%s' is not absolute" +-msgstr "la reservació \"%s\" no s'utilitza" +- +-#: gcc.c:2872 +-#, c-format +-msgid "-pipe not supported" +-msgstr "-pipe no té suport" +- +-#: gcc.c:2934 +-#, c-format +-msgid "" +-"\n" +-"Go ahead? (y or n) " +-msgstr "" +-"\n" +-"Continuar? (s o n) " +- +-#: gcc.c:3017 +-#, fuzzy +-msgid "failed to get exit status" +-msgstr "ld va retornar l'estat de sortida %d" +- +-#: gcc.c:3023 +-msgid "failed to get process times" +-msgstr "" +- +-#: gcc.c:3049 +-#, c-format +-msgid "" +-"Internal error: %s (program %s)\n" +-"Please submit a full bug report.\n" +-"See %s for instructions." +-msgstr "" +-"Error intern: %s (programa %s)\n" +-"Per favor envieu un informe complet d'error.\n" +-"Consulta %s per a més instruccions." +- +-#: gcc.c:3075 +-#, c-format +-msgid "# %s %.2f %.2f\n" +-msgstr "# %s %.2f %.2f\n" +- +-#: gcc.c:3211 +-#, c-format +-msgid "Usage: %s [options] file...\n" +-msgstr "Utilització: %s [opcions] fitxer...\n" +- +-#: gcc.c:3212 +-msgid "Options:\n" +-msgstr "Opcions:\n" +- +-#: gcc.c:3214 +-msgid " -pass-exit-codes Exit with highest error code from a phase\n" +-msgstr " -pass-exit-codes Sortir amb el codi d'error més alt d'una fase\n" +- +-#: gcc.c:3215 +-msgid " --help Display this information\n" +-msgstr " --help Mostra aquesta informació\n" +- +-#: gcc.c:3216 +-msgid " --target-help Display target specific command line options\n" +-msgstr "" +-" --target-help Mostra opcions de línia d'ordres específiques de\n" +-" l'objectiu\n" +- +-#: gcc.c:3217 +-msgid " --help={target|optimizers|warnings|undocumented|params}[,{[^]joined|[^]separate}]\n" +-msgstr "" +- +-#: gcc.c:3218 +-#, fuzzy +-msgid " Display specific types of command line options\n" +-msgstr "" +-" --target-help Mostra opcions de línia d'ordres específiques de\n" +-" l'objectiu\n" +- +-#: gcc.c:3220 +-msgid " (Use '-v --help' to display command line options of sub-processes)\n" +-msgstr " (Usi \"-v --help\" per a mostrar les opcions de línia d'ordres dels subprocès)\n" +- +-#: gcc.c:3221 +-msgid " -dumpspecs Display all of the built in spec strings\n" +-msgstr " -dumpspecs Mostra totes les cadenes internes d'especificació\n" +- +-#: gcc.c:3222 +-msgid " -dumpversion Display the version of the compiler\n" +-msgstr " -dumpversion Mostra la versió del compilador\n" +- +-#: gcc.c:3223 +-msgid " -dumpmachine Display the compiler's target processor\n" +-msgstr " -dumpmachine Mostra el processador objectiu del compilador\n" +- +-#: gcc.c:3224 +-msgid " -print-search-dirs Display the directories in the compiler's search path\n" +-msgstr "" +-" -print-search-dirs Mostra els directoris en la ruta de recerca del\n" +-" compilador\n" +- +-#: gcc.c:3225 +-msgid " -print-libgcc-file-name Display the name of the compiler's companion library\n" +-msgstr "" +-" -print-libgcc-file-name Mostra el nom de la biblioteca que acompanya el\n" +-" compilador\n" +- +-#: gcc.c:3226 +-msgid " -print-file-name= Display the full path to library \n" +-msgstr " -print-file-name= Mostra la ruta completa a la biblioteca \n" +- +-#: gcc.c:3227 +-msgid " -print-prog-name= Display the full path to compiler component \n" +-msgstr "" +-" -print-prog-name= Mostra la ruta completa del programa component del\n" +-" compilador \n" +- +-#: gcc.c:3228 +-msgid " -print-multi-directory Display the root directory for versions of libgcc\n" +-msgstr " -print-multi-directory Mostra el directori arrel per a versoins de libgcc\n" +- +-#: gcc.c:3229 +-msgid "" +-" -print-multi-lib Display the mapping between command line options and\n" +-" multiple library search directories\n" +-msgstr "" +-" -print-multi-lib Mostra el mapatge entre les opcions de línia\n" +-" d'ordres i els múltiples directoris de la recerca\n" +-" de biblioteques\n" +- +-#: gcc.c:3232 +-msgid " -print-multi-os-directory Display the relative path to OS libraries\n" +-msgstr " -print-multi-os-directory Mostra la ruta relativa per a les biblioteques del SO\n" +- +-#: gcc.c:3233 +-msgid " -print-sysroot-headers-suffix Display the sysroot suffix used to find headers\n" +-msgstr "" +- +-#: gcc.c:3234 +-msgid " -Wa, Pass comma-separated on to the assembler\n" +-msgstr " -Wa, Passa separades per coma al ensamblador\n" +- +-#: gcc.c:3235 +-msgid " -Wp, Pass comma-separated on to the preprocessor\n" +-msgstr " -Wp, Passa separades per coma al preprocesador\n" +- +-#: gcc.c:3236 +-msgid " -Wl, Pass comma-separated on to the linker\n" +-msgstr " -Wl, Passa separades per coma al enllaçador\n" +- +-#: gcc.c:3237 +-msgid " -Xassembler Pass on to the assembler\n" +-msgstr " -Xassembler Passa al ensamblador\n" +- +-#: gcc.c:3238 +-msgid " -Xpreprocessor Pass on to the preprocessor\n" +-msgstr " -Xpreprocessor Passa el al preprocesador\n" +- +-#: gcc.c:3239 +-msgid " -Xlinker Pass on to the linker\n" +-msgstr " -Xlinker Passa el al enllaçador\n" +- +-#: gcc.c:3240 +-#, fuzzy +-msgid " -combine Pass multiple source files to compiler at once\n" +-msgstr " -o Col·loca la sortida en el \n" +- +-#: gcc.c:3241 +-msgid " -save-temps Do not delete intermediate files\n" +-msgstr " -save-temps No esborra els fitxers intermedis\n" +- +-#: gcc.c:3242 +-msgid " -pipe Use pipes rather than intermediate files\n" +-msgstr " -pipe Usa canonades en lloc de fitxers intermedis\n" +- +-#: gcc.c:3243 +-msgid " -time Time the execution of each subprocess\n" +-msgstr " -time Obté el temps d'execució de cada subprocès\n" +- +-#: gcc.c:3244 +-msgid " -specs= Override built-in specs with the contents of \n" +-msgstr "" +-" -specs= Sobreposa les especificacions internes amb el\n" +-" contingut de \n" +- +-#: gcc.c:3245 +-msgid " -std= Assume that the input sources are for \n" +-msgstr "" +-" -std= Assumeix qu'els fitxers d'entrada són per a el\n" +-" \n" +- +-#: gcc.c:3246 +-msgid "" +-" --sysroot= Use as the root directory for headers\n" +-" and libraries\n" +-msgstr "" +- +-#: gcc.c:3249 +-msgid " -B Add to the compiler's search paths\n" +-msgstr "" +-" -B Agrega el a les rutes de recerca del\n" +-" compilador\n" +- +-#: gcc.c:3250 +-msgid " -b Run gcc for target , if installed\n" +-msgstr "" +-" -b Executa gcc per a l'objectiu ,\n" +-" si va ser instal·lat\n" +- +-#: gcc.c:3251 +-msgid " -V Run gcc version number , if installed\n" +-msgstr "" +-" -V Executa el gcc amb nombre de versió ,\n" +-" si va ser instal·lat\n" +- +-#: gcc.c:3252 +-msgid " -v Display the programs invoked by the compiler\n" +-msgstr " -v Mostra els programes invocats pel compilador\n" +- +-#: gcc.c:3253 +-msgid " -### Like -v but options quoted and commands not executed\n" +-msgstr "" +-" -### Com -v però les opcions i ordres entr \"\" no estan\n" +-" executades\n" +- +-#: gcc.c:3254 +-msgid " -E Preprocess only; do not compile, assemble or link\n" +-msgstr " -E Solament preprocessa; no compila, ensambla o enllaça\n" +- +-#: gcc.c:3255 +-msgid " -S Compile only; do not assemble or link\n" +-msgstr " -S Solament compila; no ensambla o enllaça\n" +- +-#: gcc.c:3256 +-msgid " -c Compile and assemble, but do not link\n" +-msgstr " -c Compila i ensambla, però no enllaça\n" +- +-#: gcc.c:3257 +-msgid " -o Place the output into \n" +-msgstr " -o Col·loca la sortida en el \n" +- +-#: gcc.c:3258 +-msgid "" +-" -x Specify the language of the following input files\n" +-" Permissible languages include: c c++ assembler none\n" +-" 'none' means revert to the default behavior of\n" +-" guessing the language based on the file's extension\n" +-msgstr "" +-" -x Especifica el llenguatge dels següents fitxers d''\n" +-" entrada. Els llenguatges permesos inclouen: c c++\n" +-" assembler none. \"none\" significa revertir a la\n" +-" conducta habitual de endevinar el llenguatge basat\n" +-" en l'extensió del fitxer\n" +- +-#: gcc.c:3265 +-#, c-format +-msgid "" +-"\n" +-"Options starting with -g, -f, -m, -O, -W, or --param are automatically\n" +-" passed on to the various sub-processes invoked by %s. In order to pass\n" +-" other options on to these processes the -W options must be used.\n" +-msgstr "" +-"\n" +-"Les opcions que comencen amb -g, -f, -m, -O, -W, o --param es passen\n" +-" automàticament als varis subprocesos invocats per %s. Per passar altres\n" +-" opcions a aquests processos es deuen usar les opcions -W\n" +- +-#: gcc.c:3389 +-#, fuzzy, c-format +-msgid "'-%c' option must have argument" +-msgstr "l'opció \"-%c\" ha de tenir arguments" +- +-#: gcc.c:3411 +-#, fuzzy, c-format +-msgid "couldn't run '%s': %s" +-msgstr "no és pot obrir %s" +- +-#. translate_options () has turned --version into -fversion. +-#: gcc.c:3612 +-#, fuzzy, c-format +-msgid "%s %s%s\n" +-msgstr "%s \"%s\"\n" +- +-#: gcc.c:3615 gcov.c:426 fortran/gfortranspec.c:380 java/jcf-dump.c:1168 +-msgid "(C)" +-msgstr "" +- +-#: gcc.c:3616 java/jcf-dump.c:1169 +-#, c-format +-msgid "" +-"This is free software; see the source for copying conditions. There is NO\n" +-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" +-"\n" +-msgstr "" +-"Això és programari lliure; vegi el codi font per a les condicions de còpia.\n" +-"No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n" +-"ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n" +- +-#: gcc.c:3728 +-#, fuzzy, c-format +-msgid "argument to '-Xlinker' is missing" +-msgstr "falta l'argument per a \"-Xlinker\"" +- +-#: gcc.c:3736 +-#, fuzzy, c-format +-msgid "argument to '-Xpreprocessor' is missing" +-msgstr "falta l'argument per a \"-Xpreprocessor\"" +- +-#: gcc.c:3743 +-#, fuzzy, c-format +-msgid "argument to '-Xassembler' is missing" +-msgstr "falta l'argument per a \"-Xassembler\"" +- +-#: gcc.c:3750 +-#, fuzzy, c-format +-msgid "argument to '-l' is missing" +-msgstr "falta l'argument per a \"-I\"" +- +-#: gcc.c:3771 +-#, fuzzy, c-format +-msgid "argument to '-specs' is missing" +-msgstr "falta l'argument per a \"-specs\"" +- +-#: gcc.c:3785 +-#, fuzzy, c-format +-msgid "argument to '-specs=' is missing" +-msgstr "falta l'argument per a \"-specs=\"" +- +-#: gcc.c:3826 +-#, c-format +-msgid "'-%c' must come at the start of the command line" +-msgstr "" +- +-#: gcc.c:3835 +-#, fuzzy, c-format +-msgid "argument to '-B' is missing" +-msgstr "falta l'argument per a \"-B\"" +- +-#: gcc.c:4185 +-#, fuzzy, c-format +-msgid "argument to '-x' is missing" +-msgstr "falta l'argument per a \"-x\"" +- +-#: gcc.c:4213 +-#, fuzzy, c-format +-msgid "argument to '-%s' is missing" +-msgstr "falta l'argument per a \"-%s\"" +- +-#: gcc.c:4541 +-#, c-format +-msgid "switch '%s' does not start with '-'" +-msgstr "" +- +-#: gcc.c:4685 +-#, c-format +-msgid "spec '%s' invalid" +-msgstr "" +- +-#: gcc.c:4824 +-#, fuzzy, c-format +-msgid "spec '%s' has invalid '%%0%c'" +-msgstr "el camp de bits \"%s\" té un tipus no vàlid" +- +-#: gcc.c:5053 +-#, fuzzy, c-format +-msgid "could not open temporary response file %s" +-msgstr "no es pot obrir el fitxer de dump \"%s\"" +- +-#: gcc.c:5059 +-#, fuzzy, c-format +-msgid "could not write to temporary response file %s" +-msgstr "No es pot trobar el fitxer d'especificacions %s\n" +- +-#: gcc.c:5065 +-#, fuzzy, c-format +-msgid "could not close temporary response file %s" +-msgstr "no es pot obrir el fitxer de dump \"%s\"" +- +-#: gcc.c:5099 +-#, fuzzy, c-format +-msgid "spec '%s' has invalid '%%W%c" +-msgstr "el camp de bits \"%s\" té un tipus no vàlid" +- +-#: gcc.c:5119 +-#, fuzzy, c-format +-msgid "spec '%s' has invalid '%%x%c'" +-msgstr "el camp de bits \"%s\" té un tipus no vàlid" +- +-#: gcc.c:5341 +-#, c-format +-msgid "Processing spec %c%s%c, which is '%s'\n" +-msgstr "Processant l'especificació %c%s%c, el qual és \"%s\"\n" +- +-#: gcc.c:5465 +-#, fuzzy, c-format +-msgid "unknown spec function '%s'" +-msgstr "funció d'especificació \"%s\" desconeguda" +- +-#: gcc.c:5484 +-#, fuzzy, c-format +-msgid "error in args to spec function '%s'" +-msgstr "error en els arguments per a la funció d'especificació \"%s\"" +- +-#: gcc.c:5532 +-#, c-format +-msgid "malformed spec function name" +-msgstr "nom de la funció d'especificació malformat" +- +-#. ) +-#: gcc.c:5535 +-#, c-format +-msgid "no arguments for spec function" +-msgstr "molt pocs arguments per a la funció spec" +- +-#: gcc.c:5554 +-#, c-format +-msgid "malformed spec function arguments" +-msgstr "" +- +-#: gcc.c:5800 +-#, c-format +-msgid "braced spec '%s' is invalid at '%c'" +-msgstr "" +- +-#: gcc.c:5888 +-#, c-format +-msgid "braced spec body '%s' is invalid" +-msgstr "" +- +-#: gcc.c:6421 +-#, c-format +-msgid "install: %s%s\n" +-msgstr "instal·lar: %s%s\n" +- +-#: gcc.c:6424 +-#, c-format +-msgid "programs: %s\n" +-msgstr "programes: %s\n" +- +-#: gcc.c:6426 +-#, c-format +-msgid "libraries: %s\n" +-msgstr "biblioteques: %s\n" +- +-#. The error status indicates that only one set of fixed +-#. headers should be built. +-#: gcc.c:6480 +-#, c-format +-msgid "not configured with sysroot headers suffix" +-msgstr "" +- +-#: gcc.c:6489 +-#, c-format +-msgid "" +-"\n" +-"For bug reporting instructions, please see:\n" +-msgstr "" +-"\n" +-"Per a instruccions de report de bug, si us plau per favor vegi:\n" +- +-#: gcc.c:6505 +-#, fuzzy, c-format +-msgid "Target: %s\n" +-msgstr "biblioteques: %s\n" +- +-#: gcc.c:6506 +-#, c-format +-msgid "Configured with: %s\n" +-msgstr "Configurat amb: %s\n" +- +-#: gcc.c:6520 +-#, c-format +-msgid "Thread model: %s\n" +-msgstr "Model de fils: %s\n" +- +-#: gcc.c:6531 +-#, fuzzy, c-format +-msgid "gcc version %s %s\n" +-msgstr "gcc versió %s\n" +- +-#: gcc.c:6533 +-#, fuzzy, c-format +-msgid "gcc driver version %s %sexecuting gcc version %s\n" +-msgstr "controlador gcc versió %s executant gcc versió %s\n" +- +-#: gcc.c:6541 +-#, c-format +-msgid "no input files" +-msgstr "no hi ha fitxers d'entrada" +- +-#: gcc.c:6590 +-#, fuzzy, c-format +-msgid "cannot specify -o with -c or -S with multiple files" +-msgstr "no es pot especificar -o amb -c o -S i múltiples llenguatges" +- +-#: gcc.c:6624 +-#, fuzzy, c-format +-msgid "spec '%s' is invalid" +-msgstr "el paràmetre \"%s\" té valor inicial" +- +-#: gcc.c:6760 +-#, c-format +-msgid "" +-"\n" +-"Linker options\n" +-"==============\n" +-"\n" +-msgstr "" +- +-#: gcc.c:6761 +-#, c-format +-msgid "" +-"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" +-"\n" +-msgstr "" +- +-#: gcc.c:7112 +-#, fuzzy, c-format +-msgid "multilib spec '%s' is invalid" +-msgstr "l'argument de patró %d no és vàlid" +- +-#: gcc.c:7303 +-#, fuzzy, c-format +-msgid "multilib exclusions '%s' is invalid" +-msgstr "múltiples camps inicialitzats en la unió \"%#T\"" +- +-#: gcc.c:7361 gcc.c:7502 +-#, fuzzy, c-format +-msgid "multilib select '%s' is invalid" +-msgstr "l'argument de patró %d no és vàlid" +- +-#: gcc.c:7540 +-#, fuzzy, c-format +-msgid "multilib exclusion '%s' is invalid" +-msgstr "múltiples camps inicialitzats en la unió \"%#T\"" +- +-#: gcc.c:7746 +-#, fuzzy, c-format +-msgid "environment variable \"%s\" not defined" +-msgstr "no es va definir la variable d'ambient DJGPP" +- +-#: gcc.c:7837 gcc.c:7842 +-#, fuzzy, c-format +-msgid "invalid version number `%s'" +-msgstr "opció \"%s\" no vàlida" +- +-#: gcc.c:7885 +-#, fuzzy, c-format +-msgid "too few arguments to %%:version-compare" +-msgstr "molt pocs arguments per a la funció" +- +-#: gcc.c:7891 +-#, fuzzy, c-format +-msgid "too many arguments to %%:version-compare" +-msgstr "massa arguments per a la funció" +- +-#: gcc.c:7932 +-#, c-format +-msgid "unknown operator '%s' in %%:version-compare" +-msgstr "" +- +-#: gcc.c:7966 +-#, c-format +-msgid "" +-"Assembler options\n" +-"=================\n" +-"\n" +-msgstr "" +- +-#: gcc.c:7967 +-#, c-format +-msgid "" +-"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" +-"\n" +-msgstr "" +- +-#: gcov.c:399 +-#, fuzzy, c-format +-msgid "" +-"Usage: gcov [OPTION]... SOURCEFILE...\n" +-"\n" +-msgstr "" +-"Us: gcov [OPCIO]... FITXERFONT\n" +-"\n" +- +-#: gcov.c:400 +-#, c-format +-msgid "" +-"Print code coverage information.\n" +-"\n" +-msgstr "" +-"Escriure les informacions de la covertura del codi.\n" +-"\n" +- +-#: gcov.c:401 +-#, c-format +-msgid " -h, --help Print this help, then exit\n" +-msgstr " -h, --help Mostra aquesta informació, i surt\n" +- +-#: gcov.c:402 +-#, c-format +-msgid " -v, --version Print version number, then exit\n" +-msgstr " -v, --version Mostra el numero de versió, i surt\n" +- +-#: gcov.c:403 +-#, c-format +-msgid " -a, --all-blocks Show information for every basic block\n" +-msgstr "" +- +-#: gcov.c:404 +-#, c-format +-msgid " -b, --branch-probabilities Include branch probabilities in output\n" +-msgstr " -b, --branch-probabilities Incloure les probabilitats de brancament en la sortida\n" +- +-#: gcov.c:405 +-#, c-format +-msgid "" +-" -c, --branch-counts Given counts of branches taken\n" +-" rather than percentages\n" +-msgstr "" +-" -c, --branch-counts Dóna el compte de branques preses\n" +-" enlloc de percentatges\n" +- +-#: gcov.c:407 +-#, c-format +-msgid " -n, --no-output Do not create an output file\n" +-msgstr " -n, --no-output No crea un fitxer de sortida\n" +- +-#: gcov.c:408 +-#, c-format +-msgid "" +-" -l, --long-file-names Use long output file names for included\n" +-" source files\n" +-msgstr "" +-" -l, --long-file-names Usar nom de fitxers de sortida llargs pels\n" +-" fitxers font inclòs\n" +- +-#: gcov.c:410 +-#, c-format +-msgid " -f, --function-summaries Output summaries for each function\n" +-msgstr " -f, --function-summaries Fer un resum per a cada funció\n" +- +-#: gcov.c:411 +-#, c-format +-msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n" +-msgstr " -o, --object-directory DIR|FIT Cerca els fitxers objectes en DIR o el FITxer\n" +- +-#: gcov.c:412 +-#, c-format +-msgid " -p, --preserve-paths Preserve all pathname components\n" +-msgstr "" +- +-#: gcov.c:413 +-#, c-format +-msgid " -u, --unconditional-branches Show unconditional branch counts too\n" +-msgstr "" +- +-#: gcov.c:414 +-#, c-format +-msgid "" +-"\n" +-"For bug reporting instructions, please see:\n" +-"%s.\n" +-msgstr "" +-"\n" +-"Per a instrucions d'informe de bug, si us plau consulta:\n" +-"%s.\n" +- +-#: gcov.c:424 +-#, fuzzy, c-format +-msgid "gcov %s%s\n" +-msgstr "gcov (GCC) %s\n" +- +-#: gcov.c:428 +-#, c-format +-msgid "" +-"This is free software; see the source for copying conditions.\n" +-"There is NO warranty; not even for MERCHANTABILITY or \n" +-"FITNESS FOR A PARTICULAR PURPOSE.\n" +-"\n" +-msgstr "" +-"Això és programari lliure; vegi el codi font per a les condicions de còpia.\n" +-"No hi ha CAP garantia; ni tan sols de COMERCIABILITAT o\n" +-"ADEQUACIÓ A UN PROPÒSIT PARTICULAR.\n" +- +-#: gcov.c:524 +-#, c-format +-msgid "%s:no functions found\n" +-msgstr "%s:no es troben funcions\n" +- +-#: gcov.c:556 gcov.c:584 fortran/dump-parse-tree.c:63 +-#, c-format +-msgid "\n" +-msgstr "\n" +- +-#: gcov.c:571 +-#, fuzzy, c-format +-msgid "%s:creating '%s'\n" +-msgstr "%s:creant \"%s\"\n" +- +-#: gcov.c:575 +-#, fuzzy, c-format +-msgid "%s:error writing output file '%s'\n" +-msgstr "%s:error escrivint al fitxer de sortida \"%s\"\n" +- +-#: gcov.c:580 +-#, fuzzy, c-format +-msgid "%s:could not open output file '%s'\n" +-msgstr "%s:no es pot obrir el fitxer de sortida \"%s\"\n" +- +-#: gcov.c:729 +-#, fuzzy, c-format +-msgid "%s:source file is newer than graph file '%s'\n" +-msgstr "%s:el fitxer font és més nou qu'el fitxer graf \"%s\"\n" +- +-#: gcov.c:734 +-#, c-format +-msgid "(the message is only displayed one per source file)\n" +-msgstr "" +- +-#: gcov.c:758 +-#, c-format +-msgid "%s:cannot open graph file\n" +-msgstr "%s:no es pot obrir el fitxer de graf\n" +- +-#: gcov.c:764 +-#, c-format +-msgid "%s:not a gcov graph file\n" +-msgstr "%s:no és un fitxer de graf gcov\n" +- +-#: gcov.c:777 +-#, fuzzy, c-format +-msgid "%s:version '%.4s', prefer '%.4s'\n" +-msgstr "%s:versió \"%.4s\", prefereix \"%.4s\"\n" +- +-#: gcov.c:829 +-#, fuzzy, c-format +-msgid "%s:already seen blocks for '%s'\n" +-msgstr "%s:no línies per a \"%s\"\n" +- +-#: gcov.c:947 +-#, c-format +-msgid "%s:corrupted\n" +-msgstr "%s:corromput\n" +- +-#: gcov.c:1023 +-#, fuzzy, c-format +-msgid "%s:cannot open data file, assuming not executed\n" +-msgstr "%s:no es pot obrir el fitxer de dades\n" +- +-#: gcov.c:1030 +-#, c-format +-msgid "%s:not a gcov data file\n" +-msgstr "%s:no és un fitxer de dades gcov\n" +- +-#: gcov.c:1043 +-#, fuzzy, c-format +-msgid "%s:version '%.4s', prefer version '%.4s'\n" +-msgstr "%s:versió \"%.4s\", prefereix \"%.4s\"\n" +- +-#: gcov.c:1049 +-#, c-format +-msgid "%s:stamp mismatch with graph file\n" +-msgstr "" +- +-#: gcov.c:1078 +-#, fuzzy, c-format +-msgid "%s:unknown function '%u'\n" +-msgstr "%s:funció \"%u\" desconeguda\n" +- +-#: gcov.c:1091 +-#, fuzzy, c-format +-msgid "%s:profile mismatch for '%s'\n" +-msgstr "%s:no línies per a \"%s\"\n" +- +-#: gcov.c:1110 +-#, c-format +-msgid "%s:overflowed\n" +-msgstr "%s:sobreeixit\n" +- +-#: gcov.c:1134 +-#, c-format +-msgid "%s:'%s' lacks entry and/or exit blocks\n" +-msgstr "" +- +-#: gcov.c:1139 +-#, c-format +-msgid "%s:'%s' has arcs to entry block\n" +-msgstr "" +- +-#: gcov.c:1147 +-#, c-format +-msgid "%s:'%s' has arcs from exit block\n" +-msgstr "" +- +-#: gcov.c:1355 +-#, fuzzy, c-format +-msgid "%s:graph is unsolvable for '%s'\n" +-msgstr "%s:no línies per a \"%s\"\n" +- +-#: gcov.c:1435 +-#, fuzzy, c-format +-msgid "%s '%s'\n" +-msgstr "%s \"%s\"\n" +- +-#: gcov.c:1438 +-#, c-format +-msgid "Lines executed:%s of %d\n" +-msgstr "Es van executar %s de %d línies\n" +- +-#: gcov.c:1442 +-#, fuzzy, c-format +-msgid "No executable lines\n" +-msgstr "No hi ha línies de codi font executable" +- +-#: gcov.c:1448 +-#, c-format +-msgid "Branches executed:%s of %d\n" +-msgstr "%s de %d ramificacions executades\n" +- +-#: gcov.c:1452 +-#, c-format +-msgid "Taken at least once:%s of %d\n" +-msgstr "%s de %d ramificacions visitades almenys una vegada\n" +- +-#: gcov.c:1458 +-#, c-format +-msgid "No branches\n" +-msgstr "No hi ha ramificacions\n" +- +-#: gcov.c:1460 +-#, c-format +-msgid "Calls executed:%s of %d\n" +-msgstr "%s de %d crides executades\n" +- +-#: gcov.c:1464 +-#, c-format +-msgid "No calls\n" +-msgstr "No hi ha crides\n" +- +-#: gcov.c:1611 +-#, fuzzy, c-format +-msgid "%s:no lines for '%s'\n" +-msgstr "%s:no línies per a \"%s\"\n" +- +-#: gcov.c:1806 +-#, c-format +-msgid "call %2d returned %s\n" +-msgstr "la crida %2d retorna %s\n" +- +-#: gcov.c:1811 +-#, c-format +-msgid "call %2d never executed\n" +-msgstr "la crida %2d mai s'executa\n" +- +-#: gcov.c:1816 +-#, c-format +-msgid "branch %2d taken %s%s\n" +-msgstr "ramificació %2d presa %s%s\n" +- +-#: gcov.c:1820 +-#, c-format +-msgid "branch %2d never executed\n" +-msgstr "la ramificació %2d mai s'executa\n" +- +-#: gcov.c:1825 +-#, c-format +-msgid "unconditional %2d taken %s\n" +-msgstr "incondicional %2d va prendre %s\n" +- +-#: gcov.c:1828 +-#, c-format +-msgid "unconditional %2d never executed\n" +-msgstr "l'incondicional %2d mai s'executa\n" +- +-#: gcov.c:1864 +-#, c-format +-msgid "%s:cannot open source file\n" +-msgstr "%s:no es pot obrir el fitxer font\n" +- +-#: gcse.c:685 +-msgid "GCSE disabled" +-msgstr "GCSE desactivat" +- +-#: gcse.c:6600 +-msgid "jump bypassing disabled" +-msgstr "evitació de salts desactivada" +- +-#. Opening quotation mark. +-#: intl.c:57 +-msgid "`" +-msgstr "" +- +-#. Closing quotation mark. +-#: intl.c:60 +-msgid "'" +-msgstr "" +- +-#: ipa-inline.c:377 +-msgid "--param large-function-growth limit reached" +-msgstr "" +- +-#: ipa-inline.c:392 +-msgid "--param large-stack-frame-growth limit reached" +-msgstr "" +- +-#: ipa-inline.c:410 +-#, fuzzy +-msgid "function not inline candidate" +-msgstr "la funció no pot ser «inline»" +- +-#: ipa-inline.c:426 +-msgid "--param max-inline-insns-single limit reached" +-msgstr "" +- +-#: ipa-inline.c:435 +-msgid "--param max-inline-insns-auto limit reached" +-msgstr "" +- +-#: ipa-inline.c:461 ipa-inline.c:914 ipa-inline.c:1105 ipa-inline.c:1225 +-msgid "recursive inlining" +-msgstr "" +- +-#: ipa-inline.c:922 +-msgid "call is unlikely and code size would grow" +-msgstr "" +- +-#: ipa-inline.c:925 +-msgid "function not declared inline and code size would grow" +-msgstr "" +- +-#: ipa-inline.c:927 +-msgid "optimizing for size and code size would grow" +-msgstr "" +- +-#: ipa-inline.c:1013 +-msgid "--param inline-unit-growth limit reached" +-msgstr "" +- +-#: langhooks.c:389 +-msgid "At top level:" +-msgstr "En el nivell principal:" +- +-#: langhooks.c:407 +-#, fuzzy, c-format +-msgid "In member function %qs" +-msgstr "en la funció membre \"%s\":" +- +-#: langhooks.c:411 +-#, fuzzy, c-format +-msgid "In function %qs" +-msgstr "En la funció \"%s\":" +- +-#: langhooks.c:461 +-#, fuzzy, c-format +-msgid " inlined from %qs at %s:%d:%d" +-msgstr "En el fitxer inclòs de %s:%d" +- +-#: langhooks.c:467 +-#, fuzzy, c-format +-msgid " inlined from %qs at %s:%d" +-msgstr "En el fitxer inclòs de %s:%d" +- +-#: langhooks.c:473 +-#, fuzzy, c-format +-msgid " inlined from %qs" +-msgstr "En el fitxer inclòs des de %s:%u" +- +-#: loop-iv.c:2805 tree-ssa-loop-niter.c:1818 +-msgid "assuming that the loop is not infinite" +-msgstr "" +- +-#: loop-iv.c:2806 tree-ssa-loop-niter.c:1819 +-msgid "cannot optimize possibly infinite loops" +-msgstr "" +- +-#: loop-iv.c:2814 tree-ssa-loop-niter.c:1823 +-msgid "assuming that the loop counter does not overflow" +-msgstr "" +- +-#: loop-iv.c:2815 tree-ssa-loop-niter.c:1824 +-msgid "cannot optimize loop, the loop counter may overflow" +-msgstr "" +- +-#. What to print when a switch has no documentation. +-#: opts.c:348 +-msgid "This switch lacks documentation" +-msgstr "" +- +-#: opts.c:1159 +-msgid "[enabled]" +-msgstr "" +- +-#: opts.c:1159 +-#, fuzzy +-msgid "[disabled]" +-msgstr "GCSE desactivat" +- +-#: opts.c:1170 +-#, c-format +-msgid " No options with the desired characteristics were found\n" +-msgstr "" +- +-#: opts.c:1172 +-#, c-format +-msgid " All options with the desired characteristics have already been displayed\n" +-msgstr "" +- +-#: opts.c:1226 +-msgid "The following options are target specific" +-msgstr "" +- +-#: opts.c:1229 +-msgid "The following options control compiler warning messages" +-msgstr "" +- +-#: opts.c:1232 +-#, fuzzy +-msgid "The following options control optimizations" +-msgstr "Realitzar les optimitzacions de cicle" +- +-#: opts.c:1235 opts.c:1273 +-msgid "The following options are language-independent" +-msgstr "" +- +-#: opts.c:1238 +-msgid "The --param option recognizes the following as parameters" +-msgstr "" +- +-#: opts.c:1245 +-msgid "The following options are specific to the language " +-msgstr "" +- +-#: opts.c:1249 +-msgid "The following options are supported by the language " +-msgstr "" +- +-#: opts.c:1260 +-#, fuzzy +-msgid "The following options are not documented" +-msgstr " Existeixen, però no estan documentades.\n" +- +-#: opts.c:1271 +-msgid "The following options are language-related" +-msgstr "" +- +-#: opts.c:1403 +-#, c-format +-msgid "warning: unrecognized argument to --help= switch: %.*s\n" +-msgstr "" +- +-#: protoize.c:582 +-#, fuzzy, c-format +-msgid "%s: error writing file '%s': %s\n" +-msgstr "%s: error escrivint el fitxer \"%s\": %s\n" +- +-#: protoize.c:626 +-#, c-format +-msgid "%s: usage '%s [ -VqfnkN ] [ -i ] [ filename ... ]'\n" +-msgstr "%s: ùs \"%s [ -VqfnkN ] [ -i ] [ nom_fitxer ... ]\"\n" +- +-#: protoize.c:629 +-#, c-format +-msgid "%s: usage '%s [ -VqfnkNlgC ] [ -B ] [ filename ... ]'\n" +-msgstr "%s: ùs \"%s [ -VqfnkNlgC ] [ -B ] [ nom_fitxer ... ]\"\n" +- +-#: protoize.c:730 +-#, fuzzy, c-format +-msgid "%s: warning: no read access for file '%s'\n" +-msgstr "%s: avís: no hi ha accés de lectura pel fitxer \"%s\"\n" +- +-#: protoize.c:738 +-#, fuzzy, c-format +-msgid "%s: warning: no write access for file '%s'\n" +-msgstr "%s: avís: no hi ha accés d'escriptura pel fitxer \"%s\"\n" +- +-#: protoize.c:746 +-#, fuzzy, c-format +-msgid "%s: warning: no write access for dir containing '%s'\n" +-msgstr "%s: avís: no hi ha accés d'escriptura pel directori que conté \"%s\"\n" +- +-#. Catch cases like /.. where we try to backup to a +-#. point above the absolute root of the logical file +-#. system. +-#: protoize.c:1133 +-#, c-format +-msgid "%s: invalid file name: %s\n" +-msgstr "%s: nom de fitxer no vàlid: %s\n" +- +-#: protoize.c:1281 +-#, c-format +-msgid "%s: %s: can't get status: %s\n" +-msgstr "%s: %s: no es pot obtenir l'estat: %s\n" +- +-#: protoize.c:1302 +-#, c-format +-msgid "" +-"\n" +-"%s: fatal error: aux info file corrupted at line %d\n" +-msgstr "" +-"\n" +-"%s: error fatal: fitxer d'informació auxiliar corrupte a la línia %d\n" +- +-#: protoize.c:1631 +-#, fuzzy, c-format +-msgid "%s:%d: declaration of function '%s' takes different forms\n" +-msgstr "%s:%d: la declaració de la funció `%s' pren formes diferents\n" +- +-#: protoize.c:1886 +-#, fuzzy, c-format +-msgid "%s: compiling '%s'\n" +-msgstr "%s: compilant `%s'\n" +- +-#: protoize.c:1909 +-#, c-format +-msgid "%s: wait: %s\n" +-msgstr "%s: esperar: %s\n" +- +-#: protoize.c:1914 +-#, c-format +-msgid "%s: subprocess got fatal signal %d\n" +-msgstr "%s: el subproces va rebre el senyal fatal %d\n" +- +-#: protoize.c:1922 +-#, c-format +-msgid "%s: %s exited with status %d\n" +-msgstr "%s: %s va acabar amb estat %d\n" +- +-#: protoize.c:1971 +-#, fuzzy, c-format +-msgid "%s: warning: missing SYSCALLS file '%s'\n" +-msgstr "%s: avís: falta el fitxer SYSCALLS \"%s\"\n" +- +-#: protoize.c:1980 protoize.c:2009 +-#, fuzzy, c-format +-msgid "%s: can't read aux info file '%s': %s\n" +-msgstr "%s: no es pot llegir el fitxer d'informació auxiliar \"%s\": %s\n" +- +-#: protoize.c:2025 protoize.c:2053 +-#, fuzzy, c-format +-msgid "%s: can't get status of aux info file '%s': %s\n" +-msgstr "%s: no es pot obtenir l'estat del fitxer d'informació auxiliar \"%s\": %s\n" +- +-#: protoize.c:2081 +-#, fuzzy, c-format +-msgid "%s: can't open aux info file '%s' for reading: %s\n" +-msgstr "%s: no es pot obrir el fitxer d'informació auxiliar \"%s\" per a lectura: %s\n" +- +-#: protoize.c:2099 +-#, fuzzy, c-format +-msgid "%s: error reading aux info file '%s': %s\n" +-msgstr "%s: error llegint el fitxer d'informació auxiliar \"%s\": %s\n" +- +-#: protoize.c:2112 +-#, fuzzy, c-format +-msgid "%s: error closing aux info file '%s': %s\n" +-msgstr "%s: error tancant el fitxer d'informació auxiliar \"%s\": %s\n" +- +-#: protoize.c:2128 +-#, fuzzy, c-format +-msgid "%s: can't delete aux info file '%s': %s\n" +-msgstr "%s: no es pot esborrar el fitxer d'informació auxiliar \"%s\": %s\n" +- +-#: protoize.c:2210 protoize.c:4180 +-#, fuzzy, c-format +-msgid "%s: can't delete file '%s': %s\n" +-msgstr "%s: no es pot esborrar el fitxer \"%s\": %s\n" +- +-#: protoize.c:2288 +-#, fuzzy, c-format +-msgid "%s: warning: can't rename file '%s' to '%s': %s\n" +-msgstr "%s: avís: no es pot renomenar el fitxer \"%s\" a \"%s\": %s\n" +- +-#: protoize.c:2410 +-#, c-format +-msgid "%s: conflicting extern definitions of '%s'\n" +-msgstr "%s: definicions externes de \"%s\" en conflicte\n" +- +-#: protoize.c:2414 +-#, c-format +-msgid "%s: declarations of '%s' will not be converted\n" +-msgstr "%s: les declaracions de \"%s\" no es convertiran\n" +- +-#: protoize.c:2416 +-#, c-format +-msgid "%s: conflict list for '%s' follows:\n" +-msgstr "%s: llistes de conflictes per a \"%s\" a continuació:\n" +- +-#: protoize.c:2449 +-#, fuzzy, c-format +-msgid "%s: warning: using formals list from %s(%d) for function '%s'\n" +-msgstr "%s: avís: usant llistes formals de %s(%d) per a la funció \"%s\"\n" +- +-#: protoize.c:2489 +-#, fuzzy, c-format +-msgid "%s: %d: '%s' used but missing from SYSCALLS\n" +-msgstr "%s: %d: s'usa \"%s\" però falta en SYSCALLS\n" +- +-#: protoize.c:2495 +-#, fuzzy, c-format +-msgid "%s: %d: warning: no extern definition for '%s'\n" +-msgstr "%s: %d: avís: no hi ha definició extern per a \"%s\"\n" +- +-#: protoize.c:2525 +-#, fuzzy, c-format +-msgid "%s: warning: no static definition for '%s' in file '%s'\n" +-msgstr "%s: avís: no hi ha definició static per a \"%s\" en el fitxer \"%s\"\n" +- +-#: protoize.c:2531 +-#, fuzzy, c-format +-msgid "%s: multiple static defs of '%s' in file '%s'\n" +-msgstr "%s: definicions static múltiples de \"%s\" en el fitxer \"%s\"\n" +- +-#: protoize.c:2701 protoize.c:2704 +-#, c-format +-msgid "%s: %d: warning: source too confusing\n" +-msgstr "%s: %d: avís: codi font massa confús\n" +- +-#: protoize.c:2899 +-#, c-format +-msgid "%s: %d: warning: varargs function declaration not converted\n" +-msgstr "%s: %d: avís: no es va convertir la declaració de la funció varargs\n" +- +-#: protoize.c:2914 +-#, fuzzy, c-format +-msgid "%s: declaration of function '%s' not converted\n" +-msgstr "%s: no es va convertir la declaració de la funció \"%s\"\n" +- +-#: protoize.c:3037 +-#, fuzzy, c-format +-msgid "%s: warning: too many parameter lists in declaration of '%s'\n" +-msgstr "%s: avís: massa llistes de paràmetres en la declaració de \"%s\"\n" +- +-#: protoize.c:3058 +-#, fuzzy, c-format +-msgid "" +-"\n" +-"%s: warning: too few parameter lists in declaration of '%s'\n" +-msgstr "" +-"\n" +-"%s: avís: molt poques llistes de paràmetres en la declaració de \"%s\"\n" +- +-#: protoize.c:3154 +-#, fuzzy, c-format +-msgid "%s: %d: warning: found '%s' but expected '%s'\n" +-msgstr "%s: %d: avís: es va trobar \"%s\" però s'esperava \"%s\"\n" +- +-#: protoize.c:3329 +-#, fuzzy, c-format +-msgid "%s: local declaration for function '%s' not inserted\n" +-msgstr "%s: no es va inserir la declaració local per a la funció \"%s\"\n" +- +-#: protoize.c:3356 +-#, fuzzy, c-format +-msgid "" +-"\n" +-"%s: %d: warning: can't add declaration of '%s' into macro call\n" +-msgstr "" +-"\n" +-"%s: %d: avís: no es pot afegir la declaració per a\"%s\" en la crida de macro\n" +- +-#: protoize.c:3428 +-#, fuzzy, c-format +-msgid "%s: global declarations for file '%s' not inserted\n" +-msgstr "%s: no es van inserir les declaracions globals pel fitxer \"%s\"\n" +- +-#: protoize.c:3518 protoize.c:3548 +-#, fuzzy, c-format +-msgid "%s: definition of function '%s' not converted\n" +-msgstr "%s: no es va convertir la definició de la funció \"%s\"\n" +- +-#: protoize.c:3537 +-#, c-format +-msgid "%s: %d: warning: definition of %s not converted\n" +-msgstr "%s: %d: avís: no es va convertir la definició de %s\n" +- +-#: protoize.c:3863 +-#, fuzzy, c-format +-msgid "%s: found definition of '%s' at %s(%d)\n" +-msgstr "%s: es va trobar la definició de \"%s\" en %s(%d)\n" +- +-#. If we make it here, then we did not know about this +-#. function definition. +-#: protoize.c:3879 +-#, fuzzy, c-format +-msgid "%s: %d: warning: '%s' excluded by preprocessing\n" +-msgstr "%s: %d: avís: \"%s\" va ser exclòs pel preprocessament\n" +- +-#: protoize.c:3882 +-#, c-format +-msgid "%s: function definition not converted\n" +-msgstr "%s: no es va convertir la definició de la funció\n" +- +-#: protoize.c:3940 +-#, fuzzy, c-format +-msgid "%s: '%s' not converted\n" +-msgstr "%s: no es va convertir \"%s\"\n" +- +-#: protoize.c:3948 +-#, fuzzy, c-format +-msgid "%s: would convert file '%s'\n" +-msgstr "%s: es podria convertir el fitxer \"%s\"\n" +- +-#: protoize.c:3951 +-#, fuzzy, c-format +-msgid "%s: converting file '%s'\n" +-msgstr "%s: convertint el fitxer \"%s\"\n" +- +-#: protoize.c:3961 +-#, fuzzy, c-format +-msgid "%s: can't get status for file '%s': %s\n" +-msgstr "%s: no es pot obtenir l'estat del fitxer \"%s\": %s\n" +- +-#: protoize.c:4003 +-#, fuzzy, c-format +-msgid "%s: can't open file '%s' for reading: %s\n" +-msgstr "%s: no es pot obrir el fitxer \"%s\" per a lectura: %s\n" +- +-#: protoize.c:4018 +-#, fuzzy, c-format +-msgid "" +-"\n" +-"%s: error reading input file '%s': %s\n" +-msgstr "" +-"\n" +-"%s: error al llegint el fitxer d'entrada \"%s\": %s\n" +- +-#: protoize.c:4052 +-#, fuzzy, c-format +-msgid "%s: can't create/open clean file '%s': %s\n" +-msgstr "%s: no es pot crear/obrir el fitxer net \"%s\": %s\n" +- +-#: protoize.c:4157 +-#, fuzzy, c-format +-msgid "%s: warning: file '%s' already saved in '%s'\n" +-msgstr "%s: avís: el fitxer \"%s\" ja havia estat guardat en \"%s\"\n" +- +-#: protoize.c:4165 +-#, fuzzy, c-format +-msgid "%s: can't link file '%s' to '%s': %s\n" +-msgstr "%s: no es pot enllaçar el fitxer \"%s\" a \"%s\": %s\n" +- +-#: protoize.c:4195 +-#, fuzzy, c-format +-msgid "%s: can't create/open output file '%s': %s\n" +-msgstr "%s: no es pot crear/obrir el fitxer de sortida \"%s\": %s\n" +- +-#: protoize.c:4228 +-#, fuzzy, c-format +-msgid "%s: can't change mode of file '%s': %s\n" +-msgstr "%s: no es pot canviar el mode del fitxer \"%s\": %s\n" +- +-#: protoize.c:4404 +-#, c-format +-msgid "%s: cannot get working directory: %s\n" +-msgstr "%s: no es pot obtenir el directori de treball: %s\n" +- +-#: protoize.c:4502 +-#, c-format +-msgid "%s: input file names must have .c suffixes: %s\n" +-msgstr "%s: els noms de fitxer d'entrada deuen tenir sufixos .c: %s\n" +- +-#: reload.c:3734 +-msgid "unable to generate reloads for:" +-msgstr "no es poden generar recarregues per a:" +- +-#: reload1.c:2000 +-msgid "this is the insn:" +-msgstr "això és el insn:" +- +-#. It's the compiler's fault. +-#: reload1.c:5363 +-msgid "could not find a spill register" +-msgstr "no es pot trobar un registre de buidat " +- +-#. It's the compiler's fault. +-#: reload1.c:7038 +-msgid "VOIDmode on an output" +-msgstr "VOIDmode en una sortida" +- +-#: reload1.c:8043 +-msgid "Failure trying to reload:" +-msgstr "" +- +-#: rtl-error.c:127 +-msgid "unrecognizable insn:" +-msgstr "insn no recognoscible:" +- +-#: rtl-error.c:129 +-msgid "insn does not satisfy its constraints:" +-msgstr "insn no satisfà les seves restriccions:" +- +-#: timevar.c:411 +-msgid "" +-"\n" +-"Execution times (seconds)\n" +-msgstr "" +-"\n" +-"Temps d'execució (segons)\n" +- +-#. Print total time. +-#: timevar.c:469 +-msgid " TOTAL :" +-msgstr " TOTAL :" +- +-#: timevar.c:502 +-#, c-format +-msgid "time in %s: %ld.%06ld (%ld%%)\n" +-msgstr "temps en %s: %ld.%06ld (%ld%%)\n" +- +-#: tlink.c:383 +-#, c-format +-msgid "collect: reading %s\n" +-msgstr "collect: llegint %s\n" +- +-#: tlink.c:477 +-#, c-format +-msgid "removing .rpo file" +-msgstr "" +- +-#: tlink.c:479 +-#, c-format +-msgid "renaming .rpo file" +-msgstr "" +- +-#: tlink.c:533 +-#, c-format +-msgid "collect: recompiling %s\n" +-msgstr "collect: recompilant %s\n" +- +-#: tlink.c:737 +-#, c-format +-msgid "collect: tweaking %s in %s\n" +-msgstr "collect: alterant %s en %s\n" +- +-#: tlink.c:787 +-#, c-format +-msgid "collect: relinking\n" +-msgstr "collect: reenllaçant\n" +- +-#: toplev.c:606 +-#, fuzzy, c-format +-msgid "unrecoverable error" +-msgstr "error intern" +- +-#: toplev.c:1180 +-#, fuzzy, c-format +-msgid "" +-"%s%s%s %sversion %s (%s)\n" +-"%s\tcompiled by GNU C version %s, " +-msgstr "" +-"%s%s%s versió %s (%s)\n" +-"%s\tcompilat amb GNU C versió %s.\n" +-"%s%s%s versió %s (%s) compilada per a CC.\n" +- +-#: toplev.c:1182 +-#, c-format +-msgid "%s%s%s %sversion %s (%s) compiled by CC, " +-msgstr "" +- +-#: toplev.c:1186 +-#, fuzzy, c-format +-msgid "GMP version %s, MPFR version %s.\n" +-msgstr "\"%s\" en versió \"%.4s\", s'espera la versió \"%.4s\"" +- +-#: toplev.c:1188 +-#, c-format +-msgid "warning: %s header version %s differs from library version %s.\n" +-msgstr "" +- +-#: toplev.c:1190 +-#, c-format +-msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n" +-msgstr "" +- +-#: toplev.c:1340 +-msgid "options passed: " +-msgstr "opcions passades: " +- +-#: toplev.c:1374 +-msgid "options enabled: " +-msgstr "opcions activades: " +- +-#: toplev.c:1509 +-#, c-format +-msgid "created and used with differing settings of '%s'" +-msgstr "" +- +-#: toplev.c:1511 +-msgid "out of memory" +-msgstr "" +- +-#: toplev.c:1526 +-msgid "created and used with different settings of -fpic" +-msgstr "" +- +-#: toplev.c:1528 +-msgid "created and used with different settings of -fpie" +-msgstr "" +- +-#: tree-inline.c:2571 +-msgid "originally indirect function call not considered for inlining" +-msgstr "" +- +-#. The remainder are real diagnostic types. +-#: diagnostic.def:15 +-#, fuzzy +-msgid "fatal error: " +-msgstr "error intern: " +- +-#: diagnostic.def:16 +-#, fuzzy +-msgid "internal compiler error: " +-msgstr "error intern: " +- +-#: diagnostic.def:17 +-#, fuzzy +-msgid "error: " +-msgstr "error intern: " +- +-#: diagnostic.def:18 +-#, fuzzy +-msgid "sorry, unimplemented: " +-msgstr "disculpi, no s'ha implementat: #pragma noalign NAME" +- +-#: diagnostic.def:19 +-msgid "warning: " +-msgstr "avís: " +- +-#: diagnostic.def:20 +-msgid "anachronism: " +-msgstr "" +- +-#: diagnostic.def:21 +-#, fuzzy +-msgid "note: " +-msgstr "nota:" +- +-#: diagnostic.def:22 +-msgid "debug: " +-msgstr "" +- +-#: params.def:46 +-msgid "The maximum number of fields in a structure variable without direct structure accesses that GCC will attempt to track separately" +-msgstr "" +- +-#: params.def:53 +-#, fuzzy +-msgid "The maximum number of elements in an array for wich we track its elements separately" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining" +- +-#: params.def:62 +-msgid "The maximum structure size (in bytes) for which GCC will use by-element copies" +-msgstr "" +- +-#: params.def:71 +-#, fuzzy +-msgid "The maximum number of structure fields for which GCC will use by-element copies" +-msgstr "El nombre màxim d'instruccions pel inliner RTL" +- +-#: params.def:83 +-msgid "The threshold ratio between instantiated fields and the total structure size" +-msgstr "" +- +-#: params.def:93 +-msgid "The threshold ratio between current and hotest structure counts" +-msgstr "" +- +-#: params.def:110 +-msgid "The maximum number of instructions in a single function eligible for inlining" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining" +- +-#: params.def:122 +-msgid "The maximum number of instructions when automatically inlining" +-msgstr "El nombre màxim d'instruccions quan es fa inlining automàticament" +- +-#: params.def:127 +-#, fuzzy +-msgid "The maximum number of instructions inline function can grow to via recursive inlining" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining" +- +-#: params.def:132 +-#, fuzzy +-msgid "The maximum number of instructions non-inline function can grow to via recursive inlining" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining" +- +-#: params.def:137 +-msgid "The maximum depth of recursive inlining for inline functions" +-msgstr "" +- +-#: params.def:142 +-msgid "The maximum depth of recursive inlining for non-inline functions" +-msgstr "" +- +-#: params.def:147 +-msgid "Inline recursively only when the probability of call being executed exceeds the parameter" +-msgstr "" +- +-#: params.def:154 +-msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling" +-msgstr "" +- +-#: params.def:160 +-msgid "If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization" +-msgstr "" +- +-#: params.def:171 +-msgid "The maximum number of instructions to consider to fill a delay slot" +-msgstr "El nombre màxim d'instruccions per a considerar l'omplert d'una ranura de retard" +- +-#: params.def:182 +-msgid "The maximum number of instructions to consider to find accurate live register information" +-msgstr "El nombre màxim d'instruccions per a considerar la recerca d'informació de registres en viu exacta" +- +-#: params.def:192 +-msgid "The maximum length of scheduling's pending operations list" +-msgstr "La longitud màxima de la llista d'operacions pendents del planificador de tasques" +- +-#: params.def:197 +-msgid "The size of function body to be considered large" +-msgstr "" +- +-#: params.def:201 +-msgid "Maximal growth due to inlining of large function (in percent)" +-msgstr "" +- +-#: params.def:205 +-msgid "The size of translation unit to be considered large" +-msgstr "" +- +-#: params.def:209 +-msgid "how much can given compilation unit grow because of the inlining (in percent)" +-msgstr "" +- +-#: params.def:213 +-msgid "expense of call operation relative to ordinary arithmetic operations" +-msgstr "" +- +-#: params.def:217 +-msgid "The size of stack frame to be considered large" +-msgstr "" +- +-#: params.def:221 +-msgid "Maximal stack frame growth due to inlining (in percent)" +-msgstr "" +- +-#: params.def:228 +-msgid "The maximum amount of memory to be allocated by GCSE" +-msgstr "La quantitat màxima de memòria a ser assignada per GCSE" +- +-#: params.def:233 +-msgid "The maximum number of passes to make when doing GCSE" +-msgstr "El nombre màxim de passos a realitzar quan es fa GCSE" +- +-#: params.def:243 +-msgid "The threshold ratio for performing partial redundancy elimination after reload" +-msgstr "" +- +-#: params.def:250 +-msgid "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload" +-msgstr "" +- +-#: params.def:261 +-msgid "The maximum number of instructions to consider to unroll in a loop" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:267 +-#, fuzzy +-msgid "The maximum number of instructions to consider to unroll in a loop on average" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:272 +-msgid "The maximum number of unrollings of a single loop" +-msgstr "" +- +-#: params.def:277 +-#, fuzzy +-msgid "The maximum number of insns of a peeled loop" +-msgstr "El nombre màxim d'instruccions per a considerar l'omplert d'una ranura de retard" +- +-#: params.def:282 +-#, fuzzy +-msgid "The maximum number of peelings of a single loop" +-msgstr "El nombre màxim de passos a realitzar quan es fa GCSE" +- +-#: params.def:287 +-#, fuzzy +-msgid "The maximum number of insns of a completely peeled loop" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:292 +-#, fuzzy +-msgid "The maximum number of peelings of a single loop that is peeled completely" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a inlining" +- +-#: params.def:297 +-#, fuzzy +-msgid "The maximum number of insns of a peeled loop that rolls only once" +-msgstr "El nombre màxim d'instruccions per al inliner de RTL" +- +-#: params.def:303 +-#, fuzzy +-msgid "The maximum number of insns of an unswitched loop" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:308 +-#, fuzzy +-msgid "The maximum number of unswitchings in a single loop" +-msgstr "El nombre màxim d'instruccions en una sola funció elegible per a un sol cicle" +- +-#: params.def:315 +-msgid "Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates" +-msgstr "" +- +-#: params.def:321 +-msgid "Bound on the cost of an expression to compute the number of iterations" +-msgstr "" +- +-#: params.def:327 +-msgid "A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop" +-msgstr "" +- +-#: params.def:331 +-msgid "The number of cycles the swing modulo scheduler considers when checking conflicts using DFA" +-msgstr "" +- +-#: params.def:335 +-msgid "A threshold on the average loop count considered by the swing modulo scheduler" +-msgstr "" +- +-#: params.def:340 +-msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot" +-msgstr "" +- +-#: params.def:344 +-msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot" +-msgstr "" +- +-#: params.def:349 +-msgid "Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment" +-msgstr "" +- +-#: params.def:354 +-msgid "Loops iterating at least selected number of iterations will get loop alignement." +-msgstr "" +- +-#: params.def:370 +-#, fuzzy +-msgid "The maximum number of loop iterations we predict statically" +-msgstr "El nombre màxim d'instruccions quan es fa inlining automàticament" +- +-#: params.def:374 +-msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available" +-msgstr "" +- +-#: params.def:378 +-msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available" +-msgstr "" +- +-#: params.def:382 +-msgid "Maximal code growth caused by tail duplication (in percent)" +-msgstr "" +- +-#: params.def:386 +-msgid "Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)" +-msgstr "" +- +-#: params.def:390 +-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available" +-msgstr "" +- +-#: params.def:394 +-msgid "Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available" +-msgstr "" +- +-#: params.def:400 +-msgid "The maximum number of incoming edges to consider for crossjumping" +-msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat" +- +-#: params.def:406 +-#, fuzzy +-msgid "The minimum number of matching instructions to consider for crossjumping" +-msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat" +- +-#: params.def:412 +-msgid "The maximum expansion factor when copying basic blocks" +-msgstr "" +- +-#: params.def:418 +-#, fuzzy +-msgid "The maximum number of insns to duplicate when unfactoring computed gotos" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:424 +-#, fuzzy +-msgid "The maximum length of path considered in cse" +-msgstr "La longitud màxima de la llista d'operacions pendents del planificador de tasques" +- +-#: params.def:428 +-#, fuzzy +-msgid "The maximum instructions CSE process before flushing" +-msgstr "El nombre màxim d'instruccions pel inliner RTL" +- +-#: params.def:435 +-msgid "The minimum cost of an expensive expression in the loop invariant motion" +-msgstr "" +- +-#: params.def:444 +-msgid "Bound on number of candidates below that all candidates are considered in iv optimizations" +-msgstr "" +- +-#: params.def:452 +-#, fuzzy +-msgid "Bound on number of iv uses in loop optimized in iv optimizations" +-msgstr "Realitzar un nombre menor d'optimitzacions costoses" +- +-#: params.def:460 +-msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization" +-msgstr "" +- +-#: params.def:465 +-msgid "Bound on size of expressions used in the scalar evolutions analyzer" +-msgstr "" +- +-#: params.def:470 +-msgid "Bound on the number of variables in Omega constraint systems" +-msgstr "" +- +-#: params.def:475 +-msgid "Bound on the number of inequalities in Omega constraint systems" +-msgstr "" +- +-#: params.def:480 +-msgid "Bound on the number of equalities in Omega constraint systems" +-msgstr "" +- +-#: params.def:485 +-msgid "Bound on the number of wild cards in Omega constraint systems" +-msgstr "" +- +-#: params.def:490 +-msgid "Bound on the size of the hash table in Omega constraint systems" +-msgstr "" +- +-#: params.def:495 +-msgid "Bound on the number of keys in Omega constraint systems" +-msgstr "" +- +-#: params.def:500 +-msgid "When set to 1, use expensive methods to eliminate all redundant constraints" +-msgstr "" +- +-#: params.def:505 +-msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check" +-msgstr "" +- +-#: params.def:510 +-msgid "Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check" +-msgstr "" +- +-#: params.def:515 +-#, fuzzy +-msgid "The maximum memory locations recorded by cselib" +-msgstr "El nombre màxim d'instruccions per al inliner de RTL" +- +-#: params.def:519 +-#, fuzzy +-msgid "The maximum memory locations recorded by flow" +-msgstr "El nombre màxim d'instruccions per al inliner de RTL" +- +-#: params.def:532 +-msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap" +-msgstr "" +- +-#: params.def:537 +-msgid "Minimum heap size before we start collecting garbage, in kilobytes" +-msgstr "" +- +-#: params.def:545 +-#, fuzzy +-msgid "The maximum number of instructions to search backward when looking for equivalent reload" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:550 +-msgid "The maximum number of virtual operators that a function is allowed to have before triggering memory partitioning heuristics" +-msgstr "" +- +-#: params.def:555 +-msgid "The average number of virtual operators that memory statements are allowed to have before triggering memory partitioning heuristics" +-msgstr "" +- +-#: params.def:560 +-#, fuzzy +-msgid "The maximum number of blocks in a region to be considered for interblock scheduling" +-msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat" +- +-#: params.def:565 +-#, fuzzy +-msgid "The maximum number of insns in a region to be considered for interblock scheduling" +-msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat" +- +-#: params.def:570 +-msgid "The minimum probability of reaching a source block for interblock speculative scheduling" +-msgstr "" +- +-#: params.def:575 +-#, fuzzy +-msgid "The maximum number of iterations through CFG to extend regions" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:580 +-#, fuzzy +-msgid "The maximum conflict delay for an insn to be considered for speculative motion" +-msgstr "El nombre màxim de vores d'entrada per a considerar el salt creuat" +- +-#: params.def:585 +-msgid "The minimal probability of speculation success (in percents), so that speculative insn will be scheduled." +-msgstr "" +- +-#: params.def:590 +-msgid "The maximum number of RTL nodes that can be recorded as combiner's last value" +-msgstr "" +- +-#: params.def:598 +-#, fuzzy +-msgid "The upper bound for sharing integer constants" +-msgstr "el valor de enumerator per a \"%s\" no és una constant entera" +- +-#: params.def:617 +-#, fuzzy +-msgid "Minimum number of virtual mappings to consider switching to full virtual renames" +-msgstr "El nombre màxim d'instruccions per a considerar l'omplert d'una ranura de retard" +- +-#: params.def:622 +-msgid "Ratio between virtual mappings and virtual symbols to do full virtual renames" +-msgstr "" +- +-#: params.def:627 +-msgid "The lower bound for a buffer to be considered for stack smashing protection" +-msgstr "" +- +-#: params.def:645 +-msgid "Maximum number of statements allowed in a block that needs to be duplicated when threading jumps" +-msgstr "" +- +-#: params.def:654 +-msgid "Maximum number of fields in a structure before pointer analysis treats the structure as a single variable" +-msgstr "" +- +-#: params.def:659 +-#, fuzzy +-msgid "The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass" +-msgstr "El nombre màxim d'instruccions per a considerar el desenrotllo en un cicle" +- +-#: params.def:669 +-msgid "The number of insns executed before prefetch is completed" +-msgstr "" +- +-#: params.def:676 +-msgid "The number of prefetches that can run at the same time" +-msgstr "" +- +-#: params.def:683 +-msgid "The size of L1 cache" +-msgstr "" +- +-#: params.def:690 +-msgid "The size of L1 cache line" +-msgstr "" +- +-#: params.def:697 +-msgid "The size of L2 cache" +-msgstr "" +- +-#: params.def:708 +-msgid "Whether to use canonical types" +-msgstr "" +- +-#: params.def:713 +-msgid "Maximum length of partial antic set when performing tree pre optimization" +-msgstr "" +- +-#: config/alpha/alpha.c:5015 +-#, c-format +-msgid "invalid %%H value" +-msgstr "valor %%H no vàlid" +- +-#: config/alpha/alpha.c:5036 config/bfin/bfin.c:1423 +-#, c-format +-msgid "invalid %%J value" +-msgstr "valor %%J no vàlid" +- +-#: config/alpha/alpha.c:5066 config/ia64/ia64.c:4718 +-#, c-format +-msgid "invalid %%r value" +-msgstr "valor %%r no vàlid" +- +-#: config/alpha/alpha.c:5076 config/ia64/ia64.c:4672 +-#: config/rs6000/rs6000.c:11670 config/xtensa/xtensa.c:2036 +-#, c-format +-msgid "invalid %%R value" +-msgstr "valor %%R no vàlid" +- +-#: config/alpha/alpha.c:5082 config/rs6000/rs6000.c:11589 +-#: config/xtensa/xtensa.c:2003 +-#, c-format +-msgid "invalid %%N value" +-msgstr "valor %%N no vàlid" +- +-#: config/alpha/alpha.c:5090 config/rs6000/rs6000.c:11617 +-#, c-format +-msgid "invalid %%P value" +-msgstr "valor %%P no vàlid" +- +-#: config/alpha/alpha.c:5098 +-#, c-format +-msgid "invalid %%h value" +-msgstr "valor %%h no vàlid" +- +-#: config/alpha/alpha.c:5106 config/xtensa/xtensa.c:2029 +-#, c-format +-msgid "invalid %%L value" +-msgstr "valor %%L no vàlid" +- +-#: config/alpha/alpha.c:5145 config/rs6000/rs6000.c:11571 +-#, c-format +-msgid "invalid %%m value" +-msgstr "valor %%m no vàlid" +- +-#: config/alpha/alpha.c:5153 config/rs6000/rs6000.c:11579 +-#, c-format +-msgid "invalid %%M value" +-msgstr "valor %%M no vàlid" +- +-#: config/alpha/alpha.c:5197 +-#, c-format +-msgid "invalid %%U value" +-msgstr "valor %%U no vàlid" +- +-#: config/alpha/alpha.c:5209 config/alpha/alpha.c:5223 +-#: config/rs6000/rs6000.c:11678 +-#, c-format +-msgid "invalid %%s value" +-msgstr "valor %%s no vàlid" +- +-#: config/alpha/alpha.c:5246 +-#, c-format +-msgid "invalid %%C value" +-msgstr "valor %%C no vàlid" +- +-#: config/alpha/alpha.c:5283 config/rs6000/rs6000.c:11406 +-#: config/rs6000/rs6000.c:11425 +-#, c-format +-msgid "invalid %%E value" +-msgstr "valor %%E no vàlid" +- +-#: config/alpha/alpha.c:5308 config/alpha/alpha.c:5356 +-#, c-format +-msgid "unknown relocation unspec" +-msgstr "reubicació unspec desconeguda" +- +-#: config/alpha/alpha.c:5317 config/crx/crx.c:1081 +-#: config/rs6000/rs6000.c:12005 config/spu/spu.c:1492 +-#, c-format +-msgid "invalid %%xn code" +-msgstr "codi %%xn no vàlid" +- +-#: config/arc/arc.c:1724 config/m32r/m32r.c:1805 +-#, c-format +-msgid "invalid operand to %%R code" +-msgstr "operand no vàlid per al codi %%R" +- +-#: config/arc/arc.c:1756 config/m32r/m32r.c:1828 +-#, c-format +-msgid "invalid operand to %%H/%%L code" +-msgstr "operand no vàlid per al codi %%H/%%L" +- +-#: config/arc/arc.c:1778 config/m32r/m32r.c:1899 +-#, c-format +-msgid "invalid operand to %%U code" +-msgstr "operand no vàlid per al codi %%U" +- +-#: config/arc/arc.c:1789 +-#, c-format +-msgid "invalid operand to %%V code" +-msgstr "operand no vàlid per al codi %%V" +- +-#. Unknown flag. +-#. Undocumented flag. +-#: config/arc/arc.c:1796 config/m32r/m32r.c:1926 config/sparc/sparc.c:6995 +-#, c-format +-msgid "invalid operand output code" +-msgstr "operand no vàlid per al codi de sortida" +- +-#: config/arm/arm.c:12521 config/arm/arm.c:12539 +-#, fuzzy, c-format +-msgid "predicated Thumb instruction" +-msgstr "Generar instruccions char" +- +-#: config/arm/arm.c:12527 +-#, fuzzy, c-format +-msgid "predicated instruction in conditional sequence" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: config/arm/arm.c:12686 +-#, fuzzy, c-format +-msgid "invalid shift operand" +-msgstr "operand %%f no vàlid" +- +-#: config/arm/arm.c:12733 config/arm/arm.c:12743 config/arm/arm.c:12753 +-#: config/arm/arm.c:12763 config/arm/arm.c:12773 config/arm/arm.c:12812 +-#: config/arm/arm.c:12830 config/arm/arm.c:12865 config/arm/arm.c:12884 +-#: config/arm/arm.c:12899 config/arm/arm.c:12927 config/arm/arm.c:12934 +-#: config/arm/arm.c:12942 config/arm/arm.c:12963 config/arm/arm.c:12970 +-#: config/bfin/bfin.c:1436 config/bfin/bfin.c:1443 config/bfin/bfin.c:1450 +-#: config/bfin/bfin.c:1457 config/bfin/bfin.c:1466 config/bfin/bfin.c:1473 +-#: config/bfin/bfin.c:1480 config/bfin/bfin.c:1487 +-#, fuzzy, c-format +-msgid "invalid operand for code '%c'" +-msgstr "codi d'operand \"%c\" no vàlid" +- +-#: config/arm/arm.c:12825 +-#, fuzzy, c-format +-msgid "instruction never executed" +-msgstr "l'incondicional %2d mai s'executa\n" +- +-#: config/arm/arm.c:13037 +-#, fuzzy, c-format +-msgid "missing operand" +-msgstr "\"(\" faltant" +- +-#: config/avr/avr.c:1022 +-#, c-format +-msgid "address operand requires constraint for X, Y, or Z register" +-msgstr "" +- +-#: config/avr/avr.c:1129 +-msgid "bad address, not (reg+disp):" +-msgstr "adreça errònia, no (reg+disp)" +- +-#: config/avr/avr.c:1136 +-#, fuzzy +-msgid "bad address, not post_inc or pre_dec:" +-msgstr "adreça errònia, no (reg+disp)" +- +-#: config/avr/avr.c:1147 +-msgid "internal compiler error. Bad address:" +-msgstr "error intern del compilador. Direcció errònia:" +- +-#: config/avr/avr.c:1160 +-msgid "internal compiler error. Unknown mode:" +-msgstr "error intern del compilador. Mode desconegut:" +- +-#: config/avr/avr.c:1775 config/avr/avr.c:2463 +-msgid "invalid insn:" +-msgstr "insn no vàlid:" +- +-#: config/avr/avr.c:1814 config/avr/avr.c:1900 config/avr/avr.c:1949 +-#: config/avr/avr.c:1977 config/avr/avr.c:2072 config/avr/avr.c:2241 +-#: config/avr/avr.c:2502 config/avr/avr.c:2614 +-msgid "incorrect insn:" +-msgstr "insn incorrecte:" +- +-#: config/avr/avr.c:1996 config/avr/avr.c:2157 config/avr/avr.c:2312 +-#: config/avr/avr.c:2680 +-msgid "unknown move insn:" +-msgstr "desplaçament insn desconegut:" +- +-#: config/avr/avr.c:2910 +-msgid "bad shift insn:" +-msgstr "desplaçament insn erròni:" +- +-#: config/avr/avr.c:3026 config/avr/avr.c:3446 config/avr/avr.c:3804 +-msgid "internal compiler error. Incorrect shift:" +-msgstr "error intern del compilador. Direcció errònia:" +- +-#: config/bfin/bfin.c:1385 +-#, c-format +-msgid "invalid %%j value" +-msgstr "valor %%j no vàlid" +- +-#: config/bfin/bfin.c:1578 +-#, fuzzy, c-format +-msgid "invalid const_double operand" +-msgstr "restriccions no vàlides per a l'operand" +- +-#: config/c4x/c4x.c:1583 +-msgid "using CONST_DOUBLE for address" +-msgstr "ùs de CONST_DOUBLE per a l'adreça" +- +-#: config/c4x/c4x.c:1721 +-msgid "c4x_address_cost: Invalid addressing mode" +-msgstr "c4x_address_cost: Moda d'adreçament no vàlid" +- +-#: config/c4x/c4x.c:1856 +-#, c-format +-msgid "c4x_print_operand: %%L inconsistency" +-msgstr "c4x_print_operand: inconsistència %%L" +- +-#: config/c4x/c4x.c:1862 +-#, c-format +-msgid "c4x_print_operand: %%N inconsistency" +-msgstr "c4x_print_operand: inconsistència %%N" +- +-#: config/c4x/c4x.c:1903 +-#, c-format +-msgid "c4x_print_operand: %%O inconsistency" +-msgstr "c4x_print_operand: inconsistència %%O" +- +-#: config/c4x/c4x.c:1998 +-msgid "c4x_print_operand: Bad operand case" +-msgstr "c4x_print_operand: Operand «case» erroni" +- +-#: config/c4x/c4x.c:2039 +-msgid "c4x_print_operand_address: Bad post_modify" +-msgstr "c4x_print_operand_address: post_modify erroni" +- +-#: config/c4x/c4x.c:2061 +-msgid "c4x_print_operand_address: Bad pre_modify" +-msgstr "c4x_print_operand_address: pre_modify erroni" +- +-#: config/c4x/c4x.c:2109 config/c4x/c4x.c:2121 config/c4x/c4x.c:2136 +-msgid "c4x_print_operand_address: Bad operand case" +-msgstr "c4x_print_operand_address: Operand «case» erroni" +- +-#: config/c4x/c4x.c:2387 +-msgid "c4x_rptb_insert: Cannot find start label" +-msgstr "c4x_rptb_insert: No es pot trobar l'etiqueta d'inici" +- +-#: config/c4x/c4x.c:2985 +-msgid "invalid indirect memory address" +-msgstr "adreça indirecta de memòria no vàlida" +- +-#: config/c4x/c4x.c:3074 +-msgid "invalid indirect (S) memory address" +-msgstr "adreça indirecta de memòria (S) no vàlida" +- +-#: config/c4x/c4x.c:3409 +-msgid "c4x_valid_operands: Internal error" +-msgstr "c4x_valid_operands: error intern" +- +-#: config/c4x/c4x.c:3848 +-msgid "c4x_operand_subword: invalid mode" +-msgstr "c4x_operand_subword: mode no vàlid" +- +-#: config/c4x/c4x.c:3851 +-msgid "c4x_operand_subword: invalid operand" +-msgstr "c4x_operand_subword: operand no vàlid" +- +-#. We could handle these with some difficulty. +-#. e.g., *p-- => *(p-=2); *(p+1). +-#: config/c4x/c4x.c:3877 +-msgid "c4x_operand_subword: invalid autoincrement" +-msgstr "c4x_operand_subword: autoincrement no vàlid" +- +-#: config/c4x/c4x.c:3883 +-msgid "c4x_operand_subword: invalid address" +-msgstr "c4x_operand_subword: adreça no vàlid" +- +-#: config/c4x/c4x.c:3894 +-msgid "c4x_operand_subword: address not offsettable" +-msgstr "c4x_operand_subword: adreça no desplaçada" +- +-#: config/c4x/c4x.c:4096 +-#, fuzzy +-msgid "c4x_rptb_rpts_p: Repeat block top label moved" +-msgstr "c4x_rptb_rpts_p: etiqueta superior de bloc de repetició desplaçada\n" +- +-#. Use `%s' to print the string in case there are any escape +-#. characters in the message. +-#: config/cris/cris.c:491 fortran/dump-parse-tree.c:78 +-#: fortran/dump-parse-tree.c:430 fortran/dump-parse-tree.c:776 +-#: fortran/dump-parse-tree.c:821 c-typeck.c:4607 c-typeck.c:4622 +-#: c-typeck.c:4637 final.c:2984 final.c:2986 gcc.c:4737 loop-iv.c:2807 +-#: loop-iv.c:2816 rtl-error.c:112 toplev.c:610 tree-ssa-loop-niter.c:1829 +-#: cp/parser.c:2188 cp/typeck.c:4559 java/expr.c:409 +-#, gcc-internal-format +-msgid "%s" +-msgstr "%s" +- +-#: config/cris/cris.c:542 +-msgid "unexpected index-type in cris_print_index" +-msgstr "index-type inesperat en cris_print_index" +- +-#: config/cris/cris.c:556 +-msgid "unexpected base-type in cris_print_base" +-msgstr "base-type inesperat en cris_print_base" +- +-#: config/cris/cris.c:672 +-msgid "invalid operand for 'b' modifier" +-msgstr "operand no vàlid per al modificador \"b\"" +- +-#: config/cris/cris.c:689 +-#, fuzzy +-msgid "invalid operand for 'o' modifier" +-msgstr "operand no vàlid per al modificador \"b\"" +- +-#: config/cris/cris.c:708 +-#, fuzzy +-msgid "invalid operand for 'O' modifier" +-msgstr "operand no vàlid per al modificador \"b\"" +- +-#: config/cris/cris.c:741 +-msgid "invalid operand for 'p' modifier" +-msgstr "operand no vàlid per al modificador \"p\"" +- +-#: config/cris/cris.c:780 +-msgid "invalid operand for 'z' modifier" +-msgstr "operand no vàlid per al modificador \"z\"" +- +-#: config/cris/cris.c:834 config/cris/cris.c:864 +-msgid "invalid operand for 'H' modifier" +-msgstr "operand no vàlid per al modificador \"H\"" +- +-#: config/cris/cris.c:840 +-msgid "bad register" +-msgstr "registre erroni" +- +-#: config/cris/cris.c:884 +-msgid "invalid operand for 'e' modifier" +-msgstr "operand no vàlid per al modificador \"e\"" +- +-#: config/cris/cris.c:901 +-msgid "invalid operand for 'm' modifier" +-msgstr "operand no vàlid per al modificador \"m\"" +- +-#: config/cris/cris.c:926 +-msgid "invalid operand for 'A' modifier" +-msgstr "operand no vàlid per al modificador \"A\"" +- +-#: config/cris/cris.c:949 +-msgid "invalid operand for 'D' modifier" +-msgstr "operand no vàlid per al modificador \"D\"" +- +-#: config/cris/cris.c:963 +-msgid "invalid operand for 'T' modifier" +-msgstr "operand no vàlid per al modificador \"T\"" +- +-#: config/cris/cris.c:972 +-msgid "invalid operand modifier letter" +-msgstr "lletra de modificador d'operand no vàlid" +- +-#: config/cris/cris.c:1029 +-msgid "unexpected multiplicative operand" +-msgstr "operand multiplicatiu inesperat" +- +-#: config/cris/cris.c:1049 +-msgid "unexpected operand" +-msgstr "operand inesperat" +- +-#: config/cris/cris.c:1082 config/cris/cris.c:1092 +-msgid "unrecognized address" +-msgstr "adreça no reconeguda" +- +-#: config/cris/cris.c:2019 +-msgid "unrecognized supposed constant" +-msgstr "suposada constant no reconeguda" +- +-#: config/cris/cris.c:2394 config/cris/cris.c:2458 +-msgid "unexpected side-effects in address" +-msgstr "effecte de vora inesperat en l'adreça" +- +-#. Can't possibly get a GOT-needing-fixup for a function-call, +-#. right? +-#: config/cris/cris.c:3253 +-msgid "Unidentifiable call op" +-msgstr "" +- +-#: config/cris/cris.c:3304 +-#, c-format +-msgid "PIC register isn't set up" +-msgstr "el registre PIC no està preparat" +- +-#: config/fr30/fr30.c:464 +-#, c-format +-msgid "fr30_print_operand_address: unhandled address" +-msgstr "fr30_print_operand_address: adreça sense manejar" +- +-#: config/fr30/fr30.c:488 +-#, c-format +-msgid "fr30_print_operand: unrecognized %%p code" +-msgstr "fr30_print_operand_address: no es reconeix el codi %%p" +- +-#: config/fr30/fr30.c:508 +-#, c-format +-msgid "fr30_print_operand: unrecognized %%b code" +-msgstr "fr30_print_operand_address: no es reconeix el codi %%b" +- +-#: config/fr30/fr30.c:529 +-#, c-format +-msgid "fr30_print_operand: unrecognized %%B code" +-msgstr "fr30_print_operand_address: no es reconeix el codi %%B" +- +-#: config/fr30/fr30.c:537 +-#, c-format +-msgid "fr30_print_operand: invalid operand to %%A code" +-msgstr "fr30_print_operand: operand no vàlid per al codi %%A" +- +-#: config/fr30/fr30.c:554 +-#, c-format +-msgid "fr30_print_operand: invalid %%x code" +-msgstr "fr30_print_operand: codi %%x no vàlid" +- +-#: config/fr30/fr30.c:561 +-#, c-format +-msgid "fr30_print_operand: invalid %%F code" +-msgstr "fr30_print_operand: codi %%F no vàlid" +- +-#: config/fr30/fr30.c:578 +-#, c-format +-msgid "fr30_print_operand: unknown code" +-msgstr "fr30_print_operand: codi desconegut" +- +-#: config/fr30/fr30.c:606 config/fr30/fr30.c:615 config/fr30/fr30.c:626 +-#: config/fr30/fr30.c:639 +-#, c-format +-msgid "fr30_print_operand: unhandled MEM" +-msgstr "fr30_print_operand: MEM sense manejar" +- +-#: config/frv/frv.c:2542 +-#, fuzzy +-msgid "bad insn to frv_print_operand_address:" +-msgstr "insn erroni per a frv_print_operand_address:" +- +-#: config/frv/frv.c:2553 +-#, fuzzy +-msgid "bad register to frv_print_operand_memory_reference_reg:" +-msgstr "insn erroni per a frv_print_operand_memory_reference_reg:" +- +-#: config/frv/frv.c:2592 config/frv/frv.c:2602 config/frv/frv.c:2611 +-#: config/frv/frv.c:2632 config/frv/frv.c:2637 +-#, fuzzy +-msgid "bad insn to frv_print_operand_memory_reference:" +-msgstr "insn erroni per a frv_print_operand_memory_reference:" +- +-#: config/frv/frv.c:2723 +-#, fuzzy, c-format +-msgid "bad condition code" +-msgstr "codi d'extensió de registre erroni" +- +-#: config/frv/frv.c:2798 +-#, fuzzy +-msgid "bad insn in frv_print_operand, bad const_double" +-msgstr "insn erroni per a frv_print_operand,·bad·const_double" +- +-#: config/frv/frv.c:2859 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'e' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"e\":" +- +-#: config/frv/frv.c:2867 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'F' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"F\":" +- +-#: config/frv/frv.c:2883 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'f' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"f\":" +- +-#: config/frv/frv.c:2897 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'g' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"C\":" +- +-#: config/frv/frv.c:2945 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'L' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"L\":" +- +-#: config/frv/frv.c:2958 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'M/N' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"M/N\":" +- +-#: config/frv/frv.c:2979 +-#, fuzzy +-msgid "bad insn to frv_print_operand, 'O' modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"O\":" +- +-#: config/frv/frv.c:2997 +-#, fuzzy +-msgid "bad insn to frv_print_operand, P modifier:" +-msgstr "insn erroni per a frv_print_operand, modificador \"P\":" +- +-#: config/frv/frv.c:3017 +-#, fuzzy +-msgid "bad insn in frv_print_operand, z case" +-msgstr "insn erroni per a frv_print_operand, «case» z" +- +-#: config/frv/frv.c:3048 +-#, fuzzy +-msgid "bad insn in frv_print_operand, 0 case" +-msgstr "insn erroni per a frv_print_operand, «case» 0" +- +-#: config/frv/frv.c:3053 +-msgid "frv_print_operand: unknown code" +-msgstr "frv_print_operand: codi desconegut" +- +-#: config/frv/frv.c:4422 +-#, fuzzy +-msgid "bad output_move_single operand" +-msgstr "Operand output_move_single erroni" +- +-#: config/frv/frv.c:4549 +-#, fuzzy +-msgid "bad output_move_double operand" +-msgstr "Operand output_move_single erroni" +- +-#: config/frv/frv.c:4691 +-#, fuzzy +-msgid "bad output_condmove_single operand" +-msgstr "Operand output_condmove_single erroni" +- +-#. This macro is a C statement to print on `stderr' a string describing the +-#. particular machine description choice. Every machine description should +-#. define `TARGET_VERSION'. For example: +-#. +-#. #ifdef MOTOROLA +-#. #define TARGET_VERSION fprintf (stderr, " (68k, Motorola syntax)"); +-#. #else +-#. #define TARGET_VERSION fprintf (stderr, " (68k, MIT syntax)"); +-#. #endif +-#: config/frv/frv.h:328 +-#, c-format +-msgid " (frv)" +-msgstr "" +- +-#: config/i386/i386.c:8218 +-#, c-format +-msgid "invalid UNSPEC as operand" +-msgstr "UNSPEC no vàlid com a operand" +- +-#: config/i386/i386.c:8924 +-#, c-format +-msgid "operand is neither a constant nor a condition code, invalid operand code 'c'" +-msgstr "l'operand no és una constant ni un codi de condició, codi d'operand \"c\" no vàlid" +- +-#: config/i386/i386.c:9040 +-#, fuzzy, c-format +-msgid "invalid operand code '%c'" +-msgstr "codi d'operand \"%c\" no vàlid" +- +-#: config/i386/i386.c:9089 +-#, c-format +-msgid "invalid constraints for operand" +-msgstr "restriccions no vàlides per a l'operand" +- +-#: config/i386/i386.c:16348 +-msgid "unknown insn mode" +-msgstr "mode insn desconegut" +- +-#. If the environment variable DJDIR is not defined, then DJGPP is not installed correctly and GCC will quickly become confused with the default prefix settings. Report the problem now so the user doesn't receive deceptive "file not found" error messages later. +-#. DJDIR is automatically defined by the DJGPP environment config file pointed to by the environment variable DJGPP. Examine DJGPP to try and figure out what's wrong. +-#: config/i386/xm-djgpp.h:61 +-#, c-format +-msgid "environment variable DJGPP not defined" +-msgstr "no es va definir la variable d'ambient DJGPP" +- +-#: config/i386/xm-djgpp.h:63 +-#, c-format +-msgid "environment variable DJGPP points to missing file '%s'" +-msgstr "la variable d'ambient DJGPP punta al fitxer faltant\"%s\"" +- +-#: config/i386/xm-djgpp.h:66 +-#, c-format +-msgid "environment variable DJGPP points to corrupt file '%s'" +-msgstr "la variable d'ambient DJGPP punta al fitxer corrupte \"%s\"" +- +-#: config/ia64/ia64.c:4770 +-#, c-format +-msgid "ia64_print_operand: unknown code" +-msgstr "ia64_print_operand: codi desconegut" +- +-#: config/ia64/ia64.c:9889 +-#, fuzzy +-msgid "invalid conversion from %<__fpreg%>" +-msgstr "conversió no vàlida de \"%T\" a \"%T\"" +- +-#: config/ia64/ia64.c:9892 +-#, fuzzy +-msgid "invalid conversion to %<__fpreg%>" +-msgstr "conversió no vàlida del tipus \"%T\" a partir del tipus \"%T\"" +- +-#: config/ia64/ia64.c:9905 config/ia64/ia64.c:9916 +-#, fuzzy +-msgid "invalid operation on %<__fpreg%>" +-msgstr "no vàlid operand per al codi %%p" +- +-#: config/iq2000/iq2000.c:3118 +-#, c-format +-msgid "invalid %%P operand" +-msgstr "operand no vàlid per a %%P" +- +-#: config/iq2000/iq2000.c:3126 config/rs6000/rs6000.c:11607 +-#, c-format +-msgid "invalid %%p value" +-msgstr "valor no vàlid per a %%p" +- +-#: config/iq2000/iq2000.c:3182 +-#, c-format +-msgid "invalid use of %%d, %%x, or %%X" +-msgstr "ùs no vàlid de %%d, %%x, o %%X" +- +-#: config/m32r/m32r.c:1775 +-#, c-format +-msgid "invalid operand to %%s code" +-msgstr "no vàlid operand per al codi %%s" +- +-#: config/m32r/m32r.c:1782 +-#, c-format +-msgid "invalid operand to %%p code" +-msgstr "no vàlid operand per al codi %%p" +- +-#: config/m32r/m32r.c:1837 +-msgid "bad insn for 'A'" +-msgstr "insn erroni per a \"A\"" +- +-#: config/m32r/m32r.c:1884 +-#, c-format +-msgid "invalid operand to %%T/%%B code" +-msgstr "no vàlid operand per al codi %%T/%%B" +- +-#: config/m32r/m32r.c:1907 +-#, c-format +-msgid "invalid operand to %%N code" +-msgstr "no vàlid operand per al codi %%N" +- +-#: config/m32r/m32r.c:1940 +-msgid "pre-increment address is not a register" +-msgstr "l'adreça de pre-increment no és un registre" +- +-#: config/m32r/m32r.c:1947 +-msgid "pre-decrement address is not a register" +-msgstr "l'adreça de pre-decrement no és un registre" +- +-#: config/m32r/m32r.c:1954 +-msgid "post-increment address is not a register" +-msgstr "l'adreça de post-increment no és un registre" +- +-#: config/m32r/m32r.c:2030 config/m32r/m32r.c:2044 +-#: config/rs6000/rs6000.c:19870 +-msgid "bad address" +-msgstr "adreça erroni" +- +-#: config/m32r/m32r.c:2049 +-msgid "lo_sum not of register" +-msgstr "lo_sum no és un registre" +- +-#. !!!! SCz wrong here. +-#: config/m68hc11/m68hc11.c:3189 config/m68hc11/m68hc11.c:3567 +-msgid "move insn not handled" +-msgstr "no es maneja move insn" +- +-#: config/m68hc11/m68hc11.c:3413 config/m68hc11/m68hc11.c:3497 +-#: config/m68hc11/m68hc11.c:3770 +-msgid "invalid register in the move instruction" +-msgstr "registre no vàlid en la instrucció move" +- +-#: config/m68hc11/m68hc11.c:3447 +-msgid "invalid operand in the instruction" +-msgstr "operand no vàlid en la instrucció" +- +-#: config/m68hc11/m68hc11.c:3744 +-msgid "invalid register in the instruction" +-msgstr "registre no vàlid en la instrucció" +- +-#: config/m68hc11/m68hc11.c:3777 +-msgid "operand 1 must be a hard register" +-msgstr "l'operand 1 ha de ser un registre fix" +- +-#: config/m68hc11/m68hc11.c:3791 +-msgid "invalid rotate insn" +-msgstr "rotació de insn no vàlida" +- +-#: config/m68hc11/m68hc11.c:4215 +-msgid "registers IX, IY and Z used in the same INSN" +-msgstr "es van usar els registres IX, IY i Z en el mateix INSN" +- +-#: config/m68hc11/m68hc11.c:4548 config/m68hc11/m68hc11.c:4848 +-msgid "cannot do z-register replacement" +-msgstr "no es pot reemplaçar el registre-z" +- +-#: config/m68hc11/m68hc11.c:4911 +-msgid "invalid Z register replacement for insn" +-msgstr "reemplaçament de registre Z no vàlid per al insn" +- +-#: config/mips/mips.c:6313 config/mips/mips.c:6334 config/mips/mips.c:6438 +-#, fuzzy, c-format +-msgid "'%%%c' is not a valid operand prefix" +-msgstr "\"%T\" no és una expressió vàlida" +- +-#: config/mips/mips.c:6382 config/mips/mips.c:6389 config/mips/mips.c:6396 +-#: config/mips/mips.c:6456 +-#, fuzzy, c-format +-msgid "invalid use of '%%%c'" +-msgstr "ús no vàlid de \"%D\"" +- +-#: config/mips/mips.c:6701 +-msgid "mips_debugger_offset called with non stack/frame/arg pointer" +-msgstr "" +- +-#: config/mmix/mmix.c:1487 config/mmix/mmix.c:1617 +-msgid "MMIX Internal: Expected a CONST_INT, not this" +-msgstr "MMIX intern: Esperant un CONS_INT, no això" +- +-#: config/mmix/mmix.c:1566 +-msgid "MMIX Internal: Bad value for 'm', not a CONST_INT" +-msgstr "MMIX intern: valor erroni per a \"m\", no és un CONST_INT" +- +-#: config/mmix/mmix.c:1585 +-msgid "MMIX Internal: Expected a register, not this" +-msgstr "MMIX intern: Esperant un registre, no això" +- +-#: config/mmix/mmix.c:1595 +-msgid "MMIX Internal: Expected a constant, not this" +-msgstr "MMIX intern: Esperant una constant, no això" +- +-#. We need the original here. +-#: config/mmix/mmix.c:1679 +-msgid "MMIX Internal: Cannot decode this operand" +-msgstr "MMIX intern: aquest operand no es pot dexifrar" +- +-#: config/mmix/mmix.c:1736 +-msgid "MMIX Internal: This is not a recognized address" +-msgstr "MMIX intern: adreça no reconeguda" +- +-#: config/mmix/mmix.c:2669 +-msgid "MMIX Internal: Trying to output invalidly reversed condition:" +-msgstr "MMIX intern: Intentant de mostrar una condició invertida de forma no vàlida:" +- +-#: config/mmix/mmix.c:2676 +-msgid "MMIX Internal: What's the CC of this?" +-msgstr "MMIX Internal: Quin és el CC per això" +- +-#: config/mmix/mmix.c:2680 +-msgid "MMIX Internal: What is the CC of this?" +-msgstr "MMIX Internal: Quin és el CC per això" +- +-#: config/mmix/mmix.c:2744 +-msgid "MMIX Internal: This is not a constant:" +-msgstr "MMIX Internal: Això no és una constant:" +- +-#: config/mt/mt.c:299 +-msgid "mt_final_prescan_insn, invalid insn #1" +-msgstr "" +- +-#: config/mt/mt.c:370 +-#, fuzzy +-msgid "PRINT_OPERAND_ADDRESS, 2 regs" +-msgstr "PRINT_OPERAND_ADDRESS, punter nul" +- +-#: config/mt/mt.c:394 +-#, fuzzy +-msgid "PRINT_OPERAND_ADDRESS, invalid insn #1" +-msgstr "PRINT_OPERAND_ADDRESS, punter nul" +- +-#: config/rs6000/host-darwin.c:96 +-#, c-format +-msgid "Out of stack space.\n" +-msgstr "" +- +-#: config/rs6000/host-darwin.c:117 +-#, c-format +-msgid "Try running '%s' in the shell to raise its limit.\n" +-msgstr "" +- +-#: config/rs6000/rs6000.c:11434 +-#, c-format +-msgid "invalid %%f value" +-msgstr "valor %%f no vàlid" +- +-#: config/rs6000/rs6000.c:11443 +-#, c-format +-msgid "invalid %%F value" +-msgstr "valor %%F no vàlid" +- +-#: config/rs6000/rs6000.c:11452 +-#, c-format +-msgid "invalid %%G value" +-msgstr "valor %%G no vàlid" +- +-#: config/rs6000/rs6000.c:11487 +-#, c-format +-msgid "invalid %%j code" +-msgstr "valor %%j no vàlid" +- +-#: config/rs6000/rs6000.c:11497 +-#, c-format +-msgid "invalid %%J code" +-msgstr "valor %%J no vàlid" +- +-#: config/rs6000/rs6000.c:11507 +-#, c-format +-msgid "invalid %%k value" +-msgstr "valor %%k no vàlid" +- +-#: config/rs6000/rs6000.c:11527 config/xtensa/xtensa.c:2022 +-#, c-format +-msgid "invalid %%K value" +-msgstr "valor %%K no vàlid" +- +-#: config/rs6000/rs6000.c:11597 +-#, c-format +-msgid "invalid %%O value" +-msgstr "valor %%O no vàlid" +- +-#: config/rs6000/rs6000.c:11644 +-#, c-format +-msgid "invalid %%q value" +-msgstr "valor no vàlid per a %%q" +- +-#: config/rs6000/rs6000.c:11688 +-#, c-format +-msgid "invalid %%S value" +-msgstr "valor %%S no vàlid" +- +-#: config/rs6000/rs6000.c:11728 +-#, c-format +-msgid "invalid %%T value" +-msgstr "valor %%T no vàlid" +- +-#: config/rs6000/rs6000.c:11738 +-#, c-format +-msgid "invalid %%u value" +-msgstr "valor %%u no vàlid" +- +-#: config/rs6000/rs6000.c:11747 config/xtensa/xtensa.c:1992 +-#, c-format +-msgid "invalid %%v value" +-msgstr "valor %%v no vàlid" +- +-#: config/rs6000/rs6000.c:21768 +-#, fuzzy +-msgid "AltiVec argument passed to unprototyped function" +-msgstr "molt pocs arguments per a la funció" +- +-#: config/s390/s390.c:4561 +-#, fuzzy, c-format +-msgid "cannot decompose address" +-msgstr "No es pot descompondre l'adreça." +- +-#: config/s390/s390.c:4771 +-msgid "UNKNOWN in print_operand !?" +-msgstr "UNKNOWN en print_operand !?" +- +-#: config/score/score3.c:1262 config/score/score3.c:1282 +-#: config/score/score7.c:1253 +-#, fuzzy, c-format +-msgid "invalid operand for code: '%c'" +-msgstr "codi d'operand \"%c\" no vàlid" +- +-#: config/sh/sh.c:746 +-#, fuzzy, c-format +-msgid "invalid operand to %%R" +-msgstr "operand no vàlid per al codi %%R" +- +-#: config/sh/sh.c:773 +-#, fuzzy, c-format +-msgid "invalid operand to %%S" +-msgstr "operand no vàlid per al codi %%R" +- +-#: config/sh/sh.c:8095 +-#, fuzzy +-msgid "created and used with different architectures / ABIs" +-msgstr "\"%#D\" redeclarat com un tipus diferent de símbol" +- +-#: config/sh/sh.c:8097 +-#, fuzzy +-msgid "created and used with different ABIs" +-msgstr "\"%#D\" redeclarat com un tipus diferent de símbol" +- +-#: config/sh/sh.c:8099 +-#, fuzzy +-msgid "created and used with different endianness" +-msgstr "inicialitzador de dades en l'ordinador amb \"endianness\" diferent" +- +-#: config/sparc/sparc.c:6803 config/sparc/sparc.c:6809 +-#, c-format +-msgid "invalid %%Y operand" +-msgstr "operand %%Y no vàlid" +- +-#: config/sparc/sparc.c:6879 +-#, c-format +-msgid "invalid %%A operand" +-msgstr "operand %%A no vàlid" +- +-#: config/sparc/sparc.c:6889 +-#, c-format +-msgid "invalid %%B operand" +-msgstr "operand %%B no vàlid" +- +-#: config/sparc/sparc.c:6928 +-#, c-format +-msgid "invalid %%c operand" +-msgstr "operand %%c no vàlid" +- +-#: config/sparc/sparc.c:6950 +-#, c-format +-msgid "invalid %%d operand" +-msgstr "operand %%d no vàlid" +- +-#: config/sparc/sparc.c:6967 +-#, c-format +-msgid "invalid %%f operand" +-msgstr "operand %%f no vàlid" +- +-#: config/sparc/sparc.c:6981 +-#, c-format +-msgid "invalid %%s operand" +-msgstr "operand %%s no vàlid" +- +-#: config/sparc/sparc.c:7035 +-#, c-format +-msgid "long long constant not a valid immediate operand" +-msgstr "la constant long long no és un operand immediat vàlid" +- +-#: config/sparc/sparc.c:7038 +-#, c-format +-msgid "floating point constant not a valid immediate operand" +-msgstr "la constant de coma flotant no és un operand immediat vàlid" +- +-#: config/stormy16/stormy16.c:1775 config/stormy16/stormy16.c:1846 +-#, fuzzy, c-format +-msgid "'B' operand is not constant" +-msgstr "l'operand \"B\" no és una constant" +- +-#: config/stormy16/stormy16.c:1802 +-#, fuzzy, c-format +-msgid "'B' operand has multiple bits set" +-msgstr "l'operand \"B\" té establerts múltiples bits" +- +-#: config/stormy16/stormy16.c:1828 +-#, fuzzy, c-format +-msgid "'o' operand is not constant" +-msgstr "l'operand \"o\" no és una constant" +- +-#: config/stormy16/stormy16.c:1860 +-#, c-format +-msgid "xstormy16_print_operand: unknown code" +-msgstr "xstormy16_print_operand: codi desconegut" +- +-#: config/v850/v850.c:372 +-msgid "const_double_split got a bad insn:" +-msgstr "const_double_split va rebre un insn erroni:" +- +-#: config/v850/v850.c:936 +-msgid "output_move_single:" +-msgstr "output_move_single:" +- +-#: config/xtensa/xtensa.c:652 config/xtensa/xtensa.c:684 +-#: config/xtensa/xtensa.c:693 +-msgid "bad test" +-msgstr "prova errònia" +- +-#: config/xtensa/xtensa.c:1980 +-#, c-format +-msgid "invalid %%D value" +-msgstr "valor no vàlid per a %%D" +- +-#: config/xtensa/xtensa.c:2017 +-msgid "invalid mask" +-msgstr "màscara no vàlida" +- +-#: config/xtensa/xtensa.c:2043 +-#, fuzzy, c-format +-msgid "invalid %%x value" +-msgstr "valor no vàlid per a %%x/X" +- +-#: config/xtensa/xtensa.c:2050 +-#, fuzzy, c-format +-msgid "invalid %%d value" +-msgstr "valor %%v no vàlid" +- +-#: config/xtensa/xtensa.c:2071 config/xtensa/xtensa.c:2081 +-#, fuzzy, c-format +-msgid "invalid %%t/%%b value" +-msgstr "valor %%b no vàlid" +- +-#: config/xtensa/xtensa.c:2123 +-msgid "invalid address" +-msgstr "adreça no vàlida" +- +-#: config/xtensa/xtensa.c:2148 +-msgid "no register in address" +-msgstr "no hi ha registre en l'adreça" +- +-#: config/xtensa/xtensa.c:2156 +-msgid "address offset not a constant" +-msgstr "el desplaçament d'adreça no és una constant" +- +-#: cp/call.c:2514 +-msgid "candidates are:" +-msgstr "" +- +-#: cp/call.c:6463 +-msgid "candidate 1:" +-msgstr "" +- +-#: cp/call.c:6464 +-msgid "candidate 2:" +-msgstr "" +- +-#: cp/decl2.c:668 +-msgid "candidates are: %+#D" +-msgstr "" +- +-#: cp/decl2.c:670 +-#, fuzzy +-msgid "candidate is: %+#D" +-msgstr "no es pot escriure %s: %m" +- +-#: cp/g++spec.c:251 java/jvspec.c:406 +-#, fuzzy, c-format +-msgid "argument to '%s' missing\n" +-msgstr "falta l'argument per a `%s'\n" +- +-#: fortran/arith.c:90 +-msgid "Arithmetic OK at %L" +-msgstr "" +- +-#: fortran/arith.c:93 +-msgid "Arithmetic overflow at %L" +-msgstr "" +- +-#: fortran/arith.c:96 +-msgid "Arithmetic underflow at %L" +-msgstr "" +- +-#: fortran/arith.c:99 +-msgid "Arithmetic NaN at %L" +-msgstr "" +- +-#: fortran/arith.c:102 +-#, fuzzy +-msgid "Division by zero at %L" +-msgstr "divisió per zero" +- +-#: fortran/arith.c:105 +-msgid "Array operands are incommensurate at %L" +-msgstr "" +- +-#: fortran/arith.c:109 +-msgid "Integer outside symmetric range implied by Standard Fortran at %L" +-msgstr "" +- +-#: fortran/arith.c:1425 +-msgid "elemental binary operation" +-msgstr "" +- +-#: fortran/arith.c:1997 +-#, fuzzy, no-c-format +-msgid "Arithmetic OK converting %s to %s at %L" +-msgstr "la conversion de %s a %s ha fallat" +- +-#: fortran/arith.c:2001 +-#, no-c-format +-msgid "Arithmetic overflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check" +-msgstr "" +- +-#: fortran/arith.c:2006 +-#, no-c-format +-msgid "Arithmetic underflow converting %s to %s at %L" +-msgstr "" +- +-#: fortran/arith.c:2010 +-#, no-c-format +-msgid "Arithmetic NaN converting %s to %s at %L" +-msgstr "" +- +-#: fortran/arith.c:2014 +-#, fuzzy, no-c-format +-msgid "Division by zero converting %s to %s at %L" +-msgstr "divisió per zero en \"%E %% 0\"" +- +-#: fortran/arith.c:2018 +-#, no-c-format +-msgid "Array operands are incommensurate converting %s to %s at %L" +-msgstr "" +- +-#: fortran/arith.c:2022 +-#, no-c-format +-msgid "Integer outside symmetric range implied by Standard Fortran converting %s to %s at %L" +-msgstr "" +- +-#: fortran/arith.c:2355 +-#, fuzzy, no-c-format +-msgid "The Hollerith constant at %L is too long to convert to %s" +-msgstr "La constant de caràcter en %0 no té l'apòstrofe que tanca en %1" +- +-#: fortran/arith.c:2513 +-#, no-c-format +-msgid "Enumerator exceeds the C integer type at %C" +-msgstr "" +- +-#: fortran/array.c:97 +-#, fuzzy, no-c-format +-msgid "Expected array subscript at %C" +-msgstr "el subindici de matriu té un tipus \"char\"" +- +-#: fortran/array.c:124 +-#, fuzzy, no-c-format +-msgid "Expected array subscript stride at %C" +-msgstr "el subindici de matriu té un tipus \"char\"" +- +-#: fortran/array.c:167 +-#, fuzzy, no-c-format +-msgid "Invalid form of array reference at %C" +-msgstr "Element null en %0 per a la referència de matriu en %1" +- +-#: fortran/array.c:172 +-#, no-c-format +-msgid "Array reference at %C cannot have more than %d dimensions" +-msgstr "" +- +-#: fortran/array.c:223 +-#, no-c-format +-msgid "Variable '%s' at %L in this context must be constant" +-msgstr "" +- +-#: fortran/array.c:299 +-#, no-c-format +-msgid "Expected expression in array specification at %C" +-msgstr "" +- +-#: fortran/array.c:386 +-#, no-c-format +-msgid "Bad array specification for an explicitly shaped array at %C" +-msgstr "" +- +-#: fortran/array.c:396 +-#, no-c-format +-msgid "Bad array specification for assumed shape array at %C" +-msgstr "" +- +-#: fortran/array.c:410 +-#, fuzzy, no-c-format +-msgid "Bad specification for deferred shape array at %C" +-msgstr "No hi ha especificació per al iterador del DO implícit `%A' en %0" +- +-#: fortran/array.c:414 +-#, fuzzy, no-c-format +-msgid "Bad specification for assumed size array at %C" +-msgstr "No hi ha especificació per al iterador del DO implícit `%A' en %0" +- +-#: fortran/array.c:423 +-#, no-c-format +-msgid "Expected another dimension in array declaration at %C" +-msgstr "" +- +-#: fortran/array.c:429 +-#, no-c-format +-msgid "Array specification at %C has more than %d dimensions" +-msgstr "" +- +-#: fortran/array.c:635 +-#, fuzzy, no-c-format +-msgid "duplicated initializer" +-msgstr "valor inicial no vàlid" +- +-#: fortran/array.c:727 +-#, no-c-format +-msgid "DO-iterator '%s' at %L is inside iterator of the same name" +-msgstr "" +- +-#: fortran/array.c:829 fortran/array.c:938 +-#, fuzzy, no-c-format +-msgid "Syntax error in array constructor at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/array.c:884 +-#, no-c-format +-msgid "Fortran 2003: [...] style array constructors at %C" +-msgstr "" +- +-#: fortran/array.c:898 +-#, fuzzy, no-c-format +-msgid "Empty array constructor at %C is not allowed" +-msgstr "l'argument per a l'atribut \"%s\" és més gran que %d" +- +-#: fortran/array.c:982 +-#, no-c-format +-msgid "Element in %s array constructor at %L is %s" +-msgstr "" +- +-#: fortran/array.c:1309 +-#, no-c-format +-msgid "Iterator step at %L cannot be zero" +-msgstr "" +- +-#: fortran/check.c:44 +-#, fuzzy, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a scalar" +-msgstr "l'argument 1 de __builtin__spe_predicate ha de ser una constant" +- +-#: fortran/check.c:59 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be %s" +-msgstr "" +- +-#: fortran/check.c:87 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a numeric type" +-msgstr "" +- +-#: fortran/check.c:101 fortran/check.c:817 fortran/check.c:827 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or REAL" +-msgstr "" +- +-#: fortran/check.c:118 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be REAL or COMPLEX" +-msgstr "" +- +-#: fortran/check.c:147 +-#, fuzzy, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a constant" +-msgstr "l'argument 1 de __builtin__spe_predicate ha de ser una constant" +- +-#: fortran/check.c:156 +-#, fuzzy, no-c-format +-msgid "Invalid kind for %s at %L" +-msgstr "constant de cadena no vàlida \"%E\"" +- +-#: fortran/check.c:175 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be double precision" +-msgstr "" +- +-#: fortran/check.c:192 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a logical array" +-msgstr "" +- +-#: fortran/check.c:210 +-#, fuzzy, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be an array" +-msgstr "l'argument 1 de __builtin__spe_predicate ha de ser una constant" +- +-#: fortran/check.c:225 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be the same type and kind as '%s'" +-msgstr "" +- +-#: fortran/check.c:241 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of rank %d" +-msgstr "" +- +-#: fortran/check.c:256 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL" +-msgstr "" +- +-#: fortran/check.c:275 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of kind %d" +-msgstr "" +- +-#: fortran/check.c:297 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)" +-msgstr "" +- +-#: fortran/check.c:303 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a variable" +-msgstr "" +- +-#: fortran/check.c:320 +-#, no-c-format +-msgid "Missing DIM parameter in intrinsic '%s' at %L" +-msgstr "" +- +-#: fortran/check.c:363 +-#, no-c-format +-msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index" +-msgstr "" +- +-#: fortran/check.c:433 +-#, no-c-format +-msgid "Unequal character lengths (%ld and %ld) in %s intrinsic at %L" +-msgstr "" +- +-#: fortran/check.c:535 fortran/check.c:1938 fortran/check.c:1953 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE" +-msgstr "" +- +-#: fortran/check.c:559 fortran/check.c:3703 +-#, no-c-format +-msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type" +-msgstr "" +- +-#: fortran/check.c:568 fortran/check.c:1143 fortran/check.c:1286 +-#: fortran/check.c:1360 fortran/check.c:1616 +-#, no-c-format +-msgid "Extension: Different type kinds at %L" +-msgstr "" +- +-#: fortran/check.c:608 fortran/check.c:2022 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER" +-msgstr "" +- +-#: fortran/check.c:628 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a pointer or target VARIABLE or FUNCTION" +-msgstr "" +- +-#: fortran/check.c:636 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER or a TARGET" +-msgstr "" +- +-#: fortran/check.c:652 +-#, no-c-format +-msgid "Array section with a vector subscript at %L shall not be the target of a pointer" +-msgstr "" +- +-#: fortran/check.c:663 +-#, no-c-format +-msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function" +-msgstr "" +- +-#: fortran/check.c:798 fortran/check.c:915 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPLEX" +-msgstr "" +- +-#: fortran/check.c:848 fortran/check.c:1205 fortran/check.c:1308 +-#: fortran/check.c:1467 fortran/check.c:1484 fortran/check.c:2318 +-#: fortran/check.c:2444 fortran/check.c:2779 fortran/check.c:2821 +-#, no-c-format +-msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L" +-msgstr "" +- +-#: fortran/check.c:964 fortran/check.c:1712 fortran/check.c:1720 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be numeric or LOGICAL" +-msgstr "" +- +-#: fortran/check.c:978 +-#, no-c-format +-msgid "Different shape for arguments '%s' and '%s' at %L for intrinsic 'dot_product'" +-msgstr "" +- +-#: fortran/check.c:997 fortran/check.c:1005 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be default real" +-msgstr "" +- +-#: fortran/check.c:1256 +-#, no-c-format +-msgid "Argument of %s at %L must be of length one" +-msgstr "" +- +-#: fortran/check.c:1315 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'" +-msgstr "" +- +-#: fortran/check.c:1440 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type" +-msgstr "" +- +-#: fortran/check.c:1589 +-#, fuzzy, no-c-format +-msgid "Intrinsic '%s' at %L must have at least two arguments" +-msgstr "\"%D\" ha de prendre dos arguments exactament" +- +-#: fortran/check.c:1622 +-#, no-c-format +-msgid "'a%d' argument of '%s' intrinsic at %L must be %s(%d)" +-msgstr "" +- +-#: fortran/check.c:1655 +-#, no-c-format +-msgid "Fortran 2003: '%s' intrinsic with CHARACTER argument at %L" +-msgstr "" +- +-#: fortran/check.c:1662 +-#, no-c-format +-msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER" +-msgstr "" +- +-#: fortran/check.c:1734 +-#, no-c-format +-msgid "Different shape on dimension 1 for arguments '%s' and '%s' at %L for intrinsic matmul" +-msgstr "" +- +-#: fortran/check.c:1753 +-#, no-c-format +-msgid "Different shape on dimension 2 for argument '%s' and dimension 1 for argument '%s' at %L for intrinsic matmul" +-msgstr "" +- +-#: fortran/check.c:1762 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of rank 1 or 2" +-msgstr "" +- +-#: fortran/check.c:1964 +-#, no-c-format +-msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %d/%d" +-msgstr "" +- +-#: fortran/check.c:1973 +-#, no-c-format +-msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same kind %d/%d" +-msgstr "" +- +-#: fortran/check.c:2069 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of type REAL or COMPLEX" +-msgstr "" +- +-#: fortran/check.c:2090 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of a dummy variable" +-msgstr "" +- +-#: fortran/check.c:2098 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable" +-msgstr "" +- +-#: fortran/check.c:2114 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must not be a subobject of '%s'" +-msgstr "" +- +-#: fortran/check.c:2231 +-#, no-c-format +-msgid "'shape' argument of 'reshape' intrinsic at %L must be an array of constant size" +-msgstr "" +- +-#: fortran/check.c:2241 +-#, no-c-format +-msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements" +-msgstr "" +- +-#: fortran/check.c:2279 +-#, no-c-format +-msgid "Without padding, there are not enough elements in the intrinsic RESHAPE source at %L to match the shape" +-msgstr "" +- +-#: fortran/check.c:2364 +-#, fuzzy, no-c-format +-msgid "Missing arguments to %s intrinsic at %L" +-msgstr "Falten arguments per a l'opció \"%s\"" +- +-#: fortran/check.c:2405 +-#, no-c-format +-msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array" +-msgstr "" +- +-#: fortran/check.c:2479 +-#, fuzzy, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d" +-msgstr "l'argument per a l'atribut \"%s\" és més gran que %d" +- +-#: fortran/check.c:2731 +-#, no-c-format +-msgid "'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s" +-msgstr "" +- +-#: fortran/check.c:3050 +-#, fuzzy, no-c-format +-msgid "Too many arguments to %s at %L" +-msgstr "massa arguments per a %s \"%+#D\"" +- +-#: fortran/check.c:3162 fortran/check.c:3616 fortran/check.c:3640 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or PROCEDURE" +-msgstr "" +- +-#: fortran/check.c:3338 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be of a kind not wider than the default kind (%d)" +-msgstr "" +- +-#: fortran/check.c:3687 fortran/check.c:3695 +-#, no-c-format +-msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL" +-msgstr "" +- +-#: fortran/data.c:64 +-#, fuzzy, no-c-format +-msgid "non-constant array in DATA statement %L" +-msgstr "índex de matriu no constant en valor inicial" +- +-#: fortran/data.c:193 +-#, no-c-format +-msgid "failure to simplify substring reference in DATA statement at %L" +-msgstr "" +- +-#: fortran/data.c:224 +-#, fuzzy, no-c-format +-msgid "initialization string truncated to match variable at %L" +-msgstr "no es poden niuar els designadors d'iniciació" +- +-#: fortran/data.c:293 +-#, no-c-format +-msgid "'%s' at %L already is initialized at %L" +-msgstr "" +- +-#: fortran/data.c:412 +-#, fuzzy, no-c-format +-msgid "Extension: re-initialization of '%s' at %L" +-msgstr " salta la inicialización de \"%#D\"" +- +-#: fortran/decl.c:254 +-#, no-c-format +-msgid "Host associated variable '%s' may not be in the DATA statement at %C" +-msgstr "" +- +-#: fortran/decl.c:261 +-#, no-c-format +-msgid "Extension: initialization of common block variable '%s' in DATA statement at %C" +-msgstr "" +- +-#: fortran/decl.c:366 +-#, no-c-format +-msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C" +-msgstr "" +- +-#: fortran/decl.c:470 +-#, no-c-format +-msgid "Initialization at %C is not allowed in a PURE procedure" +-msgstr "" +- +-#: fortran/decl.c:529 +-#, no-c-format +-msgid "DATA statement at %C is not allowed in a PURE procedure" +-msgstr "" +- +-#: fortran/decl.c:558 +-#, no-c-format +-msgid "Bad INTENT specification at %C" +-msgstr "" +- +-#: fortran/decl.c:600 +-#, no-c-format +-msgid "Conflict in attributes of function argument at %C" +-msgstr "" +- +-#: fortran/decl.c:647 +-#, fuzzy, no-c-format +-msgid "Syntax error in character length specification at %C" +-msgstr "error de decodificació en l'especificació del mètode" +- +-#: fortran/decl.c:757 +-#, fuzzy, no-c-format +-msgid "Procedure '%s' at %C is already defined at %L" +-msgstr "\"%D\" ja està definit en \"%T\"" +- +-#: fortran/decl.c:765 +-#, fuzzy, no-c-format +-msgid "Name '%s' at %C is already defined as a generic interface at %L" +-msgstr "L'etiqueta %A ja es va definir en %1 quan es va redefinir en %0" +- +-#: fortran/decl.c:778 +-#, no-c-format +-msgid "Procedure '%s' at %C has an explicit interface and must not have attributes declared at %L" +-msgstr "" +- +-#: fortran/decl.c:850 +-#, no-c-format +-msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperable" +-msgstr "" +- +-#: fortran/decl.c:880 +-#, no-c-format +-msgid "Type '%s' at %L is a parameter to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable" +-msgstr "" +- +-#: fortran/decl.c:887 +-#, no-c-format +-msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable" +-msgstr "" +- +-#: fortran/decl.c:902 +-#, no-c-format +-msgid "Character argument '%s' at %L must be length 1 because procedure '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:916 +-#, no-c-format +-msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:925 +-#, no-c-format +-msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:934 +-#, no-c-format +-msgid "Variable '%s' at %L cannot have the OPTIONAL attribute because procedure '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:947 +-#, no-c-format +-msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:957 +-#, no-c-format +-msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:1033 +-#, no-c-format +-msgid "Variable '%s' in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:1069 +-#, no-c-format +-msgid "CHARACTER expression at %L is being truncated (%d/%d)" +-msgstr "" +- +-#: fortran/decl.c:1075 +-#, no-c-format +-msgid "The CHARACTER elements of the array constructor at %L must have the same length (%d/%d)" +-msgstr "" +- +-#: fortran/decl.c:1165 +-#, no-c-format +-msgid "Initializer not allowed for PARAMETER '%s' at %C" +-msgstr "" +- +-#: fortran/decl.c:1174 +-#, no-c-format +-msgid "Initializer not allowed for COMMON variable '%s' at %C" +-msgstr "" +- +-#: fortran/decl.c:1184 +-#, fuzzy, no-c-format +-msgid "PARAMETER at %L is missing an initializer" +-msgstr "falta valor inicial" +- +-#: fortran/decl.c:1194 +-#, no-c-format +-msgid "Variable '%s' at %C with an initializer already appears in a DATA statement" +-msgstr "" +- +-#: fortran/decl.c:1344 +-#, no-c-format +-msgid "Component at %C must have the POINTER attribute" +-msgstr "" +- +-#: fortran/decl.c:1352 +-#, no-c-format +-msgid "Array component of structure at %C must have explicit or deferred shape" +-msgstr "" +- +-#: fortran/decl.c:1378 +-#, no-c-format +-msgid "Allocatable component at %C must be an array" +-msgstr "" +- +-#: fortran/decl.c:1389 +-#, no-c-format +-msgid "Pointer array component of structure at %C must have a deferred shape" +-msgstr "" +- +-#: fortran/decl.c:1398 +-#, no-c-format +-msgid "Allocatable component of structure at %C must have a deferred shape" +-msgstr "" +- +-#: fortran/decl.c:1407 +-#, no-c-format +-msgid "Array component of structure at %C must have an explicit shape" +-msgstr "" +- +-#: fortran/decl.c:1433 +-#, no-c-format +-msgid "NULL() initialization at %C is ambiguous" +-msgstr "" +- +-#: fortran/decl.c:1556 fortran/decl.c:5197 +-#, no-c-format +-msgid "Duplicate array spec for Cray pointee at %C" +-msgstr "" +- +-#: fortran/decl.c:1616 +-#, no-c-format +-msgid "the type of '%s' at %C has not been declared within the interface" +-msgstr "" +- +-#: fortran/decl.c:1632 +-#, fuzzy, no-c-format +-msgid "Function name '%s' not allowed at %C" +-msgstr "%Jno es permet un atribut de secció per a \"%D\"" +- +-#: fortran/decl.c:1648 +-#, no-c-format +-msgid "Extension: Old-style initialization at %C" +-msgstr "" +- +-#: fortran/decl.c:1663 +-#, no-c-format +-msgid "Initialization at %C isn't for a pointer variable" +-msgstr "" +- +-#: fortran/decl.c:1671 +-#, no-c-format +-msgid "Pointer initialization requires a NULL() at %C" +-msgstr "" +- +-#: fortran/decl.c:1677 +-#, no-c-format +-msgid "Initialization of pointer at %C is not allowed in a PURE procedure" +-msgstr "" +- +-#: fortran/decl.c:1690 +-#, no-c-format +-msgid "Pointer initialization at %C requires '=>', not '='" +-msgstr "" +- +-#: fortran/decl.c:1699 fortran/decl.c:6129 +-#, fuzzy, no-c-format +-msgid "Expected an initialization expression at %C" +-msgstr "inicialització de l'expressió new amb \"=\"" +- +-#: fortran/decl.c:1705 +-#, no-c-format +-msgid "Initialization of variable at %C is not allowed in a PURE procedure" +-msgstr "" +- +-#: fortran/decl.c:1718 +-#, no-c-format +-msgid "Initialization of allocatable component at %C is not allowed" +-msgstr "" +- +-#: fortran/decl.c:1772 fortran/decl.c:1781 +-#, fuzzy, no-c-format +-msgid "Old-style type declaration %s*%d not supported at %C" +-msgstr "no es dóna suport a la declaració feble de \"%s\"" +- +-#: fortran/decl.c:1786 +-#, fuzzy, no-c-format +-msgid "Nonstandard type declaration %s*%d at %C" +-msgstr "declaració extern niada de \"%s\"" +- +-#: fortran/decl.c:1838 fortran/decl.c:1897 +-#, no-c-format +-msgid "Missing right parenthesis at %C" +-msgstr "" +- +-#: fortran/decl.c:1853 fortran/decl.c:1931 +-#, fuzzy, no-c-format +-msgid "Expected initialization expression at %C" +-msgstr "inicialització de l'expressió new amb \"=\"" +- +-#: fortran/decl.c:1861 fortran/decl.c:1937 +-#, fuzzy, no-c-format +-msgid "Expected scalar initialization expression at %C" +-msgstr "inicialització de l'expressió new amb \"=\"" +- +-#: fortran/decl.c:1891 +-#, fuzzy, no-c-format +-msgid "Kind %d not supported for type %s at %C" +-msgstr "el mode d'arrodoniment no té suport per a floats de VAX" +- +-#: fortran/decl.c:1957 +-#, fuzzy, no-c-format +-msgid "Kind %d is not supported for CHARACTER at %C" +-msgstr "el mode d'arrodoniment no té suport per a floats de VAX" +- +-#: fortran/decl.c:2086 +-#, no-c-format +-msgid "Syntax error in CHARACTER declaration at %C" +-msgstr "" +- +-#: fortran/decl.c:2156 +-#, no-c-format +-msgid "Extension: BYTE type at %C" +-msgstr "" +- +-#: fortran/decl.c:2162 +-#, no-c-format +-msgid "BYTE type used at %C is not available on the target machine" +-msgstr "" +- +-#: fortran/decl.c:2211 +-#, no-c-format +-msgid "DOUBLE COMPLEX at %C does not conform to the Fortran 95 standard" +-msgstr "" +- +-#: fortran/decl.c:2245 fortran/decl.c:2252 fortran/decl.c:2558 +-#: fortran/decl.c:2566 +-#, fuzzy, no-c-format +-msgid "Type name '%s' at %C is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: fortran/decl.c:2321 +-#, no-c-format +-msgid "Missing character range in IMPLICIT at %C" +-msgstr "" +- +-#: fortran/decl.c:2367 +-#, no-c-format +-msgid "Letters must be in alphabetic order in IMPLICIT statement at %C" +-msgstr "" +- +-#: fortran/decl.c:2421 +-#, no-c-format +-msgid "Empty IMPLICIT statement at %C" +-msgstr "" +- +-#: fortran/decl.c:2524 +-#, no-c-format +-msgid "IMPORT statement at %C only permitted in an INTERFACE body" +-msgstr "" +- +-#: fortran/decl.c:2529 +-#, fuzzy, no-c-format +-msgid "Fortran 2003: IMPORT statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/decl.c:2544 +-#, no-c-format +-msgid "Expecting list of named entities at %C" +-msgstr "" +- +-#: fortran/decl.c:2572 +-#, no-c-format +-msgid "Cannot IMPORT '%s' from host scoping unit at %C - does not exist." +-msgstr "" +- +-#: fortran/decl.c:2579 +-#, no-c-format +-msgid "'%s' is already IMPORTed from host scoping unit at %C." +-msgstr "" +- +-#: fortran/decl.c:2608 +-#, fuzzy, no-c-format +-msgid "Syntax error in IMPORT statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:2850 +-#, fuzzy, no-c-format +-msgid "Missing dimension specification at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/decl.c:2924 +-#, no-c-format +-msgid "Duplicate %s attribute at %L" +-msgstr "" +- +-#: fortran/decl.c:2943 +-#, no-c-format +-msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition" +-msgstr "" +- +-#: fortran/decl.c:2953 +-#, fuzzy, no-c-format +-msgid "Attribute at %L is not allowed in a TYPE definition" +-msgstr "la variable de registre global segueix a una definició de funció" +- +-#: fortran/decl.c:2971 +-#, no-c-format +-msgid "Fortran 2003: Attribute %s at %L in a TYPE definition" +-msgstr "" +- +-#: fortran/decl.c:2982 +-#, no-c-format +-msgid "%s attribute at %L is not allowed outside of the specification part of a module" +-msgstr "" +- +-#: fortran/decl.c:3034 fortran/decl.c:5437 +-#, no-c-format +-msgid "PROTECTED at %C only allowed in specification part of a module" +-msgstr "" +- +-#: fortran/decl.c:3040 +-#, no-c-format +-msgid "Fortran 2003: PROTECTED attribute at %C" +-msgstr "" +- +-#: fortran/decl.c:3071 +-#, no-c-format +-msgid "Fortran 2003: VALUE attribute at %C" +-msgstr "" +- +-#: fortran/decl.c:3081 +-#, no-c-format +-msgid "Fortran 2003: VOLATILE attribute at %C" +-msgstr "" +- +-#: fortran/decl.c:3121 +-#, no-c-format +-msgid "Multiple identifiers provided with single NAME= specifier at %C" +-msgstr "" +- +-#. Print an error, but continue parsing line. +-#: fortran/decl.c:3171 +-#, no-c-format +-msgid "C kind parameter is for type %s but symbol '%s' at %L is of type %s" +-msgstr "" +- +-#: fortran/decl.c:3235 +-#, no-c-format +-msgid "Implicitly declared BIND(C) function '%s' at %L may not be C interoperable" +-msgstr "" +- +-#: fortran/decl.c:3257 +-#, no-c-format +-msgid "Variable '%s' in common block '%s' at %L may not be a C interoperable kind though common block '%s' is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:3266 +-#, no-c-format +-msgid "Type declaration '%s' at %L is not C interoperable but it is BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:3270 +-#, no-c-format +-msgid "Variable '%s' at %L may not be a C interoperable kind but it is bind(c)" +-msgstr "" +- +-#: fortran/decl.c:3282 +-#, no-c-format +-msgid "Variable '%s' in common block '%s' at %L cannot be declared with BIND(C) since it is not a global" +-msgstr "" +- +-#: fortran/decl.c:3296 +-#, no-c-format +-msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes" +-msgstr "" +- +-#: fortran/decl.c:3304 +-#, no-c-format +-msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes" +-msgstr "" +- +-#: fortran/decl.c:3314 +-#, no-c-format +-msgid "Return type of BIND(C) function '%s' at %L cannot be an array" +-msgstr "" +- +-#: fortran/decl.c:3322 +-#, no-c-format +-msgid "Return type of BIND(C) function '%s' at %L cannot be a character string" +-msgstr "" +- +-#. Use gfc_warning_now because we won't say that the symbol fails +-#. just because of this. +-#: fortran/decl.c:3334 +-#, no-c-format +-msgid "Symbol '%s' at %L is marked PRIVATE but has been given the binding label '%s'" +-msgstr "" +- +-#: fortran/decl.c:3409 +-#, no-c-format +-msgid "Need either entity or common block name for attribute specification statement at %C" +-msgstr "" +- +-#: fortran/decl.c:3456 +-#, no-c-format +-msgid "Missing entity or common block name for attribute specification statement at %C" +-msgstr "" +- +-#. Now we have an error, which we signal, and then fix up +-#. because the knock-on is plain and simple confusing. +-#: fortran/decl.c:3563 +-#, no-c-format +-msgid "Derived type at %C has not been previously defined and so cannot appear in a derived type definition" +-msgstr "" +- +-#: fortran/decl.c:3595 +-#, fuzzy, no-c-format +-msgid "Syntax error in data declaration at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/decl.c:3742 +-#, no-c-format +-msgid "Name '%s' at %C is the name of the procedure" +-msgstr "" +- +-#: fortran/decl.c:3754 +-#, no-c-format +-msgid "Unexpected junk in formal argument list at %C" +-msgstr "" +- +-#: fortran/decl.c:3771 +-#, no-c-format +-msgid "Duplicate symbol '%s' in formal argument list at %C" +-msgstr "" +- +-#: fortran/decl.c:3822 +-#, no-c-format +-msgid "RESULT variable at %C must be different than function name" +-msgstr "" +- +-#: fortran/decl.c:3892 +-#, fuzzy, no-c-format +-msgid "Unexpected junk after function declaration at %C" +-msgstr "causa conflicte amb la declaració de la funció \"%#D\"" +- +-#: fortran/decl.c:3951 +-#, no-c-format +-msgid "Interface '%s' at %C may not be generic" +-msgstr "" +- +-#: fortran/decl.c:3956 +-#, fuzzy, no-c-format +-msgid "Interface '%s' at %C may not be a statement function" +-msgstr "el constructor no pot ser una funció membre de tipus static" +- +-#: fortran/decl.c:3967 +-#, no-c-format +-msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C" +-msgstr "" +- +-#: fortran/decl.c:3975 +-#, no-c-format +-msgid "Fortran 2003: Support for intrinsic procedure '%s' in PROCEDURE statement at %C not yet implemented in gfortran" +-msgstr "" +- +-#: fortran/decl.c:4014 +-#, no-c-format +-msgid "BIND(C) attribute at %C requires an interface with BIND(C)" +-msgstr "" +- +-#: fortran/decl.c:4021 +-#, no-c-format +-msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" +-msgstr "" +- +-#: fortran/decl.c:4027 +-#, no-c-format +-msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" +-msgstr "" +- +-#: fortran/decl.c:4060 fortran/decl.c:4103 +-#, fuzzy, no-c-format +-msgid "Syntax error in PROCEDURE statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:4077 +-#, no-c-format +-msgid "PROCEDURE at %C must be in a generic interface" +-msgstr "" +- +-#: fortran/decl.c:4128 +-#, no-c-format +-msgid "Fortran 2003: Procedure components at %C are not yet implemented in gfortran" +-msgstr "" +- +-#: fortran/decl.c:4138 +-#, no-c-format +-msgid "Fortran 2003: PROCEDURE statement at %C" +-msgstr "" +- +-#: fortran/decl.c:4186 +-#, no-c-format +-msgid "Expected formal argument list in function definition at %C" +-msgstr "" +- +-#: fortran/decl.c:4210 fortran/decl.c:4214 fortran/decl.c:4536 +-#: fortran/decl.c:4540 fortran/symbol.c:1402 +-#, no-c-format +-msgid "BIND(C) attribute at %L can only be used for variables or common blocks" +-msgstr "" +- +-#: fortran/decl.c:4246 +-#, fuzzy, no-c-format +-msgid "Function '%s' at %C already has a type of %s" +-msgstr "Els inicis de les funcions són alineats a aquesta potència de 2" +- +-#: fortran/decl.c:4322 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a PROGRAM" +-msgstr "" +- +-#: fortran/decl.c:4325 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a MODULE" +-msgstr "" +- +-#: fortran/decl.c:4328 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" +-msgstr "" +- +-#: fortran/decl.c:4332 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within an INTERFACE" +-msgstr "" +- +-#: fortran/decl.c:4336 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" +-msgstr "" +- +-#: fortran/decl.c:4340 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within an IF-THEN block" +-msgstr "" +- +-#: fortran/decl.c:4344 +-#, fuzzy, no-c-format +-msgid "ENTRY statement at %C cannot appear within a DO block" +-msgstr "La declaració RETURN en %0 no és vàlida dintre d'una unitat de programa principal" +- +-#: fortran/decl.c:4348 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a SELECT block" +-msgstr "" +- +-#: fortran/decl.c:4352 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a FORALL block" +-msgstr "" +- +-#: fortran/decl.c:4356 +-#, no-c-format +-msgid "ENTRY statement at %C cannot appear within a WHERE block" +-msgstr "" +- +-#: fortran/decl.c:4360 +-#, fuzzy, no-c-format +-msgid "ENTRY statement at %C cannot appear within a contained subprogram" +-msgstr "La declaració RETURN en %0 no és vàlida dintre d'una unitat de programa principal" +- +-#: fortran/decl.c:4378 +-#, fuzzy, no-c-format +-msgid "ENTRY statement at %C cannot appear in a contained procedure" +-msgstr "desbordament en la constant implícita" +- +-#: fortran/decl.c:4560 +-#, no-c-format +-msgid "Missing required parentheses before BIND(C) at %C" +-msgstr "" +- +-#: fortran/decl.c:4618 fortran/decl.c:4634 +-#, no-c-format +-msgid "Syntax error in NAME= specifier for binding label at %C" +-msgstr "" +- +-#: fortran/decl.c:4649 +-#, no-c-format +-msgid "Missing closing quote '\"' for binding label at %C" +-msgstr "" +- +-#: fortran/decl.c:4658 +-#, no-c-format +-msgid "Missing closing quote ''' for binding label at %C" +-msgstr "" +- +-#: fortran/decl.c:4668 +-#, fuzzy, no-c-format +-msgid "Missing closing paren for binding label at %C" +-msgstr "Falta el primer operand binari per a l'operador binari en %0" +- +-#: fortran/decl.c:4703 +-#, no-c-format +-msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" +-msgstr "" +- +-#: fortran/decl.c:4876 +-#, fuzzy, no-c-format +-msgid "Unexpected END statement at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#. We would have required END [something]. +-#: fortran/decl.c:4885 +-#, no-c-format +-msgid "%s statement expected at %L" +-msgstr "" +- +-#: fortran/decl.c:4896 +-#, fuzzy, no-c-format +-msgid "Expecting %s statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/decl.c:4911 +-#, no-c-format +-msgid "Expected block name of '%s' in %s statement at %C" +-msgstr "" +- +-#: fortran/decl.c:4928 +-#, no-c-format +-msgid "Expected terminating name at %C" +-msgstr "" +- +-#: fortran/decl.c:4937 +-#, fuzzy, no-c-format +-msgid "Expected label '%s' for %s statement at %C" +-msgstr "No hi ha definició d'etiqueta per a la declaració FORMAT en %0" +- +-#: fortran/decl.c:4991 +-#, fuzzy, no-c-format +-msgid "Missing array specification at %L in DIMENSION statement" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/decl.c:5000 +-#, no-c-format +-msgid "Array specification must be deferred at %L" +-msgstr "" +- +-#: fortran/decl.c:5077 +-#, no-c-format +-msgid "Unexpected character in variable list at %C" +-msgstr "" +- +-#: fortran/decl.c:5114 +-#, no-c-format +-msgid "Expected '(' at %C" +-msgstr "" +- +-#: fortran/decl.c:5128 fortran/decl.c:5168 +-#, no-c-format +-msgid "Expected variable name at %C" +-msgstr "" +- +-#: fortran/decl.c:5144 +-#, fuzzy, no-c-format +-msgid "Cray pointer at %C must be an integer" +-msgstr "el predicat ha de ser un identificador" +- +-#: fortran/decl.c:5148 +-#, no-c-format +-msgid "Cray pointer at %C has %d bytes of precision; memory addresses require %d bytes" +-msgstr "" +- +-#: fortran/decl.c:5154 +-#, no-c-format +-msgid "Expected \",\" at %C" +-msgstr "" +- +-#: fortran/decl.c:5217 +-#, no-c-format +-msgid "Expected \")\" at %C" +-msgstr "" +- +-#: fortran/decl.c:5229 +-#, fuzzy, no-c-format +-msgid "Expected \",\" or end of statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5293 +-#, no-c-format +-msgid "Cray pointer declaration at %C requires -fcray-pointer flag" +-msgstr "" +- +-#: fortran/decl.c:5388 +-#, no-c-format +-msgid "Access specification of the %s operator at %C has already been specified" +-msgstr "" +- +-#: fortran/decl.c:5405 +-#, no-c-format +-msgid "Access specification of the .%s. operator at %C has already been specified" +-msgstr "" +- +-#: fortran/decl.c:5443 +-#, no-c-format +-msgid "Fortran 2003: PROTECTED statement at %C" +-msgstr "" +- +-#: fortran/decl.c:5483 +-#, fuzzy, no-c-format +-msgid "Syntax error in PROTECTED statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5504 +-#, fuzzy, no-c-format +-msgid "PRIVATE statement at %C is only allowed in the specification part of a module" +-msgstr "L'especificador d'accés o la declaració PRIVATE en %0 no és vàlid per a la definició de tipus derivat dintre d'un altre que la part d'especificació d'un mòdul" +- +-#: fortran/decl.c:5541 +-#, fuzzy, no-c-format +-msgid "PUBLIC statement at %C is only allowed in the specification part of a module" +-msgstr "L'especificador d'accés o la declaració PRIVATE en %0 no és vàlid per a la definició de tipus derivat dintre d'un altre que la part d'especificació d'un mòdul" +- +-#: fortran/decl.c:5568 +-#, no-c-format +-msgid "Expected variable name at %C in PARAMETER statement" +-msgstr "" +- +-#: fortran/decl.c:5575 +-#, fuzzy, no-c-format +-msgid "Expected = sign in PARAMETER statement at %C" +-msgstr "Signe espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5581 +-#, no-c-format +-msgid "Expected expression at %C in PARAMETER statement" +-msgstr "" +- +-#: fortran/decl.c:5639 +-#, fuzzy, no-c-format +-msgid "Unexpected characters in PARAMETER statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5663 +-#, no-c-format +-msgid "Blanket SAVE statement at %C follows previous SAVE statement" +-msgstr "" +- +-#: fortran/decl.c:5675 +-#, no-c-format +-msgid "SAVE statement at %C follows blanket SAVE statement" +-msgstr "" +- +-#: fortran/decl.c:5722 +-#, fuzzy, no-c-format +-msgid "Syntax error in SAVE statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5733 +-#, no-c-format +-msgid "Fortran 2003: VALUE statement at %C" +-msgstr "" +- +-#: fortran/decl.c:5773 +-#, fuzzy, no-c-format +-msgid "Syntax error in VALUE statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5784 +-#, fuzzy, no-c-format +-msgid "Fortran 2003: VOLATILE statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5826 +-#, fuzzy, no-c-format +-msgid "Syntax error in VOLATILE statement at %C" +-msgstr "Nombre espuri en la declaració FORMAT en %0" +- +-#: fortran/decl.c:5848 +-#, no-c-format +-msgid "MODULE PROCEDURE at %C must be in a generic module interface" +-msgstr "" +- +-#: fortran/decl.c:5910 +-#, no-c-format +-msgid "Derived type at %C can only be PRIVATE in the specification part of a module" +-msgstr "" +- +-#: fortran/decl.c:5922 +-#, no-c-format +-msgid "Derived type at %C can only be PUBLIC in the specification part of a module" +-msgstr "" +- +-#: fortran/decl.c:5979 +-#, no-c-format +-msgid "Expected :: in TYPE definition at %C" +-msgstr "" +- +-#: fortran/decl.c:5990 +-#, fuzzy, no-c-format +-msgid "Type name '%s' at %C cannot be the same as an intrinsic type" +-msgstr "El nom de tipus en %0 no és el mateix que el nom en %1" +- +-#: fortran/decl.c:6000 +-#, no-c-format +-msgid "Derived type name '%s' at %C already has a basic type of %s" +-msgstr "" +- +-#: fortran/decl.c:6016 +-#, no-c-format +-msgid "Derived type definition of '%s' at %C has already been defined" +-msgstr "" +- +-#: fortran/decl.c:6054 +-#, no-c-format +-msgid "Cray Pointee at %C cannot be assumed shape array" +-msgstr "" +- +-#: fortran/decl.c:6074 +-#, no-c-format +-msgid "Fortran 2003: ENUM and ENUMERATOR at %C" +-msgstr "" +- +-#: fortran/decl.c:6146 +-#, no-c-format +-msgid "ENUMERATOR %L not initialized with integer expression" +-msgstr "" +- +-#: fortran/decl.c:6195 +-#, fuzzy, no-c-format +-msgid "ENUM definition statement expected before %C" +-msgstr "s'esperava nom de tipus abans de \"*\"" +- +-#: fortran/decl.c:6228 +-#, no-c-format +-msgid "Syntax error in ENUMERATOR definition at %C" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:48 +-#, c-format +-msgid "%-5d " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:50 +-#, fuzzy, c-format +-msgid " " +-msgstr " \"%D\"" +- +-#: fortran/dump-parse-tree.c:73 fortran/dump-parse-tree.c:626 +-#, fuzzy, c-format +-msgid "(%s " +-msgstr "%s " +- +-#: fortran/dump-parse-tree.c:86 fortran/dump-parse-tree.c:1069 +-#: fortran/dump-parse-tree.c:1113 fortran/dump-parse-tree.c:1123 +-#, c-format +-msgid "%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:90 fortran/dump-parse-tree.c:116 +-#: fortran/dump-parse-tree.c:159 fortran/dump-parse-tree.c:395 +-#: fortran/dump-parse-tree.c:518 fortran/dump-parse-tree.c:613 +-#: fortran/dump-parse-tree.c:636 +-#, c-format +-msgid ")" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:99 fortran/dump-parse-tree.c:435 +-#, c-format +-msgid "(" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:105 +-#, fuzzy, c-format +-msgid "%s = " +-msgstr "%s " +- +-#: fortran/dump-parse-tree.c:109 +-#, c-format +-msgid "(arg not-present)" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:113 fortran/dump-parse-tree.c:389 +-#: fortran/dump-parse-tree.c:514 +-#, c-format +-msgid " " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:130 fortran/dump-parse-tree.c:325 +-#, c-format +-msgid "()" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:134 +-#, c-format +-msgid "(%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:148 +-#, fuzzy, c-format +-msgid " %s " +-msgstr "%s " +- +-#: fortran/dump-parse-tree.c:175 +-#, c-format +-msgid "FULL" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:206 fortran/dump-parse-tree.c:215 +-#: fortran/dump-parse-tree.c:288 +-#, c-format +-msgid " , " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:220 +-#, c-format +-msgid "UNKNOWN" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:244 +-#, fuzzy, c-format +-msgid " %% %s" +-msgstr "%s: %s" +- +-#: fortran/dump-parse-tree.c:302 +-#, c-format +-msgid "''" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:307 +-#, c-format +-msgid "' // ACHAR(" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:309 +-#, c-format +-msgid ") // '" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:337 +-#, fuzzy, c-format +-msgid "%s(" +-msgstr "%s" +- +-#: fortran/dump-parse-tree.c:343 +-#, c-format +-msgid "(/ " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:345 +-#, c-format +-msgid " /)" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:351 +-#, c-format +-msgid "NULL()" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:361 fortran/dump-parse-tree.c:374 +-#: fortran/dump-parse-tree.c:387 fortran/dump-parse-tree.c:393 +-#, c-format +-msgid "_%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:366 +-#, c-format +-msgid ".true." +-msgstr "" +- +-#: fortran/dump-parse-tree.c:368 +-#, fuzzy, c-format +-msgid ".false." +-msgstr "fclose" +- +-#: fortran/dump-parse-tree.c:383 +-#, c-format +-msgid "(complex " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:399 +-#, c-format +-msgid "%dH" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:408 +-#, c-format +-msgid "???" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:414 +-#, c-format +-msgid " {" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:418 +-#, c-format +-msgid "%.2x" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:429 fortran/dump-parse-tree.c:732 +-#, fuzzy, c-format +-msgid "%s:" +-msgstr "%s" +- +-#: fortran/dump-parse-tree.c:439 +-#, c-format +-msgid "U+ " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:442 +-#, c-format +-msgid "U- " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:445 +-#, c-format +-msgid "+ " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:448 +-#, c-format +-msgid "- " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:451 +-#, c-format +-msgid "* " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:454 +-#, c-format +-msgid "/ " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:457 +-#, c-format +-msgid "** " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:460 +-#, c-format +-msgid "// " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:463 +-#, c-format +-msgid "AND " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:466 +-#, c-format +-msgid "OR " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:469 +-#, c-format +-msgid "EQV " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:472 +-#, c-format +-msgid "NEQV " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:476 +-#, c-format +-msgid "= " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:480 +-#, c-format +-msgid "/= " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:484 +-#, c-format +-msgid "> " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:488 +-#, c-format +-msgid ">= " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:492 +-#, c-format +-msgid "< " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:496 +-#, c-format +-msgid "<= " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:499 +-#, c-format +-msgid "NOT " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:502 +-#, fuzzy, c-format +-msgid "parens" +-msgstr "obrir %s" +- +-#: fortran/dump-parse-tree.c:524 +-#, fuzzy, c-format +-msgid "%s[" +-msgstr "%s" +- +-#: fortran/dump-parse-tree.c:530 +-#, fuzzy, c-format +-msgid "%s[[" +-msgstr "%s" +- +-#: fortran/dump-parse-tree.c:551 +-#, fuzzy, c-format +-msgid "(%s %s %s %s %s" +-msgstr "%s: %s: " +- +-#: fortran/dump-parse-tree.c:558 +-#, c-format +-msgid " ALLOCATABLE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:560 fortran/dump-parse-tree.c:631 +-#, c-format +-msgid " DIMENSION" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:562 +-#, c-format +-msgid " EXTERNAL" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:564 +-#, c-format +-msgid " INTRINSIC" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:566 +-#, c-format +-msgid " OPTIONAL" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:568 fortran/dump-parse-tree.c:629 +-#, c-format +-msgid " POINTER" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:570 +-#, c-format +-msgid " PROTECTED" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:572 +-#, c-format +-msgid " VALUE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:574 +-#, c-format +-msgid " VOLATILE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:576 +-#, c-format +-msgid " THREADPRIVATE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:578 +-#, c-format +-msgid " TARGET" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:580 +-#, c-format +-msgid " DUMMY" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:582 +-#, c-format +-msgid " RESULT" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:584 +-#, c-format +-msgid " ENTRY" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:587 +-#, c-format +-msgid " DATA" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:589 +-#, c-format +-msgid " USE-ASSOC" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:591 +-#, c-format +-msgid " IN-NAMELIST" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:593 +-#, c-format +-msgid " IN-COMMON" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:596 +-#, c-format +-msgid " ABSTRACT INTERFACE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:598 +-#, c-format +-msgid " FUNCTION" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:600 +-#, c-format +-msgid " SUBROUTINE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:602 +-#, c-format +-msgid " IMPLICIT-TYPE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:605 +-#, c-format +-msgid " SEQUENCE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:607 +-#, c-format +-msgid " ELEMENTAL" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:609 +-#, c-format +-msgid " PURE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:611 +-#, c-format +-msgid " RECURSIVE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:635 fortran/dump-parse-tree.c:682 +-#: fortran/dump-parse-tree.c:706 fortran/dump-parse-tree.c:735 +-#: fortran/dump-parse-tree.c:1276 fortran/dump-parse-tree.c:1282 +-#: fortran/dump-parse-tree.c:1784 +-#, c-format +-msgid " %s" +-msgstr " %s" +- +-#: fortran/dump-parse-tree.c:659 +-#, c-format +-msgid "symbol %s " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:666 +-#, c-format +-msgid "value: " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:673 +-#, c-format +-msgid "Array spec:" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:680 +-#, fuzzy, c-format +-msgid "Generic interfaces:" +-msgstr "Usar la interfície Cygwin" +- +-#: fortran/dump-parse-tree.c:688 +-#, fuzzy, c-format +-msgid "result: %s" +-msgstr "%s: %s" +- +-#: fortran/dump-parse-tree.c:694 +-#, c-format +-msgid "components: " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:701 +-#, c-format +-msgid "Formal arglist:" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:708 +-#, c-format +-msgid " [Alt Return]" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:715 +-#, fuzzy, c-format +-msgid "Formal namespace" +-msgstr "\"%D\" és un nom d'espai" +- +-#: fortran/dump-parse-tree.c:771 +-#, c-format +-msgid "common: /%s/ " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:779 fortran/dump-parse-tree.c:1720 +-#, c-format +-msgid ", " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:791 +-#, c-format +-msgid "symtree: %s Ambig %d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:794 +-#, fuzzy, c-format +-msgid " from namespace %s" +-msgstr "espai de noms \"%D\" desconegut" +- +-#: fortran/dump-parse-tree.c:820 +-#, fuzzy, c-format +-msgid "%s," +-msgstr "%s" +- +-#: fortran/dump-parse-tree.c:852 +-#, c-format +-msgid "!$OMP %s" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:867 fortran/dump-parse-tree.c:1010 +-#, fuzzy, c-format +-msgid " (%s)" +-msgstr " %s" +- +-#: fortran/dump-parse-tree.c:872 +-#, c-format +-msgid " (" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:888 +-#, c-format +-msgid " IF(" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:894 +-#, c-format +-msgid " NUM_THREADS(" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:910 +-#, c-format +-msgid " SCHEDULE (%s" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:930 +-#, c-format +-msgid " DEFAULT(%s)" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:933 +-#, c-format +-msgid " ORDERED" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:958 +-#, c-format +-msgid " REDUCTION(%s:" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:972 +-#, fuzzy, c-format +-msgid " %s(" +-msgstr " %s" +- +-#: fortran/dump-parse-tree.c:988 +-#, c-format +-msgid "!$OMP SECTION\n" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:997 +-#, c-format +-msgid "!$OMP END %s" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1002 +-#, c-format +-msgid " COPYPRIVATE(" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1007 +-#, c-format +-msgid " NOWAIT" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1034 +-#, c-format +-msgid "NOP" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1038 +-#, c-format +-msgid "CONTINUE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1042 +-#, c-format +-msgid "ENTRY %s" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1047 +-#, c-format +-msgid "ASSIGN " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1054 +-#, c-format +-msgid "LABEL ASSIGN " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1056 +-#, fuzzy, c-format +-msgid " %d" +-msgstr " %s" +- +-#: fortran/dump-parse-tree.c:1060 +-#, c-format +-msgid "POINTER ASSIGN " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1067 +-#, c-format +-msgid "GOTO " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1076 +-#, c-format +-msgid ", (" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1092 fortran/dump-parse-tree.c:1094 +-#, c-format +-msgid "CALL %s " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1096 +-#, c-format +-msgid "CALL ?? " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1102 +-#, c-format +-msgid "RETURN " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1108 +-#, c-format +-msgid "PAUSE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1118 +-#, c-format +-msgid "STOP " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1128 fortran/dump-parse-tree.c:1136 +-#, c-format +-msgid "IF " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1130 +-#, fuzzy, c-format +-msgid " %d, %d, %d" +-msgstr "%s: %s: " +- +-#: fortran/dump-parse-tree.c:1147 +-#, c-format +-msgid "ELSE\n" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1150 +-#, c-format +-msgid "ELSE IF " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1160 +-#, c-format +-msgid "ENDIF" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1165 +-#, c-format +-msgid "SELECT CASE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1173 +-#, c-format +-msgid "CASE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1189 +-#, c-format +-msgid "END SELECT" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1193 +-#, c-format +-msgid "WHERE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1204 +-#, c-format +-msgid "ELSE WHERE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1211 +-#, c-format +-msgid "END WHERE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1216 +-#, c-format +-msgid "FORALL " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1241 +-#, c-format +-msgid "END FORALL" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1245 +-#, c-format +-msgid "DO " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1259 fortran/dump-parse-tree.c:1270 +-#, c-format +-msgid "END DO" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1263 +-#, c-format +-msgid "DO WHILE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1274 +-#, c-format +-msgid "CYCLE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1280 +-#, c-format +-msgid "EXIT" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1286 +-#, c-format +-msgid "ALLOCATE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1289 fortran/dump-parse-tree.c:1305 +-#, c-format +-msgid " STAT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1302 +-#, c-format +-msgid "DEALLOCATE " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1318 +-#, c-format +-msgid "OPEN" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1323 fortran/dump-parse-tree.c:1402 +-#: fortran/dump-parse-tree.c:1444 fortran/dump-parse-tree.c:1467 +-#: fortran/dump-parse-tree.c:1619 +-#, c-format +-msgid " UNIT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1328 fortran/dump-parse-tree.c:1407 +-#: fortran/dump-parse-tree.c:1449 fortran/dump-parse-tree.c:1478 +-#: fortran/dump-parse-tree.c:1636 +-#, c-format +-msgid " IOMSG=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1333 fortran/dump-parse-tree.c:1412 +-#: fortran/dump-parse-tree.c:1454 fortran/dump-parse-tree.c:1483 +-#: fortran/dump-parse-tree.c:1641 +-#, c-format +-msgid " IOSTAT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1338 fortran/dump-parse-tree.c:1472 +-#, c-format +-msgid " FILE=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1343 fortran/dump-parse-tree.c:1417 +-#, c-format +-msgid " STATUS=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1348 fortran/dump-parse-tree.c:1513 +-#, c-format +-msgid " ACCESS=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1353 fortran/dump-parse-tree.c:1529 +-#, c-format +-msgid " FORM=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1358 fortran/dump-parse-tree.c:1544 +-#, c-format +-msgid " RECL=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1363 fortran/dump-parse-tree.c:1554 +-#, c-format +-msgid " BLANK=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1368 fortran/dump-parse-tree.c:1559 +-#, c-format +-msgid " POSITION=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1373 fortran/dump-parse-tree.c:1564 +-#, c-format +-msgid " ACTION=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1378 fortran/dump-parse-tree.c:1584 +-#, c-format +-msgid " DELIM=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1383 fortran/dump-parse-tree.c:1589 +-#, c-format +-msgid " PAD=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1388 fortran/dump-parse-tree.c:1594 +-#, c-format +-msgid " CONVERT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1392 fortran/dump-parse-tree.c:1421 +-#: fortran/dump-parse-tree.c:1458 fortran/dump-parse-tree.c:1599 +-#: fortran/dump-parse-tree.c:1676 +-#, c-format +-msgid " ERR=%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1397 +-#, c-format +-msgid "CLOSE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1425 +-#, c-format +-msgid "BACKSPACE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1429 +-#, c-format +-msgid "ENDFILE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1433 +-#, c-format +-msgid "REWIND" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1437 +-#, c-format +-msgid "FLUSH" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1462 +-#, c-format +-msgid "INQUIRE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1488 +-#, c-format +-msgid " EXIST=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1493 +-#, c-format +-msgid " OPENED=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1498 +-#, c-format +-msgid " NUMBER=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1503 +-#, c-format +-msgid " NAMED=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1508 +-#, c-format +-msgid " NAME=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1518 +-#, c-format +-msgid " SEQUENTIAL=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1524 +-#, c-format +-msgid " DIRECT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1534 +-#, c-format +-msgid " FORMATTED" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1539 +-#, c-format +-msgid " UNFORMATTED=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1549 +-#, c-format +-msgid " NEXTREC=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1569 +-#, c-format +-msgid " READ=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1574 +-#, c-format +-msgid " WRITE=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1579 +-#, c-format +-msgid " READWRITE=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1603 +-#, c-format +-msgid "IOLENGTH " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1609 +-#, c-format +-msgid "READ" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1613 +-#, c-format +-msgid "WRITE" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1625 +-#, c-format +-msgid " FMT=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1630 +-#, c-format +-msgid " FMT=%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1632 +-#, fuzzy, c-format +-msgid " NML=%s" +-msgstr " %s" +- +-#: fortran/dump-parse-tree.c:1646 +-#, c-format +-msgid " SIZE=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1651 +-#, c-format +-msgid " REC=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1656 +-#, c-format +-msgid " ADVANCE=" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1667 +-#, c-format +-msgid "TRANSFER " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1672 +-#, c-format +-msgid "DT_END" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1678 +-#, c-format +-msgid " END=%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1680 +-#, c-format +-msgid " EOR=%d" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1714 +-#, c-format +-msgid "Equivalence: " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1740 +-#, c-format +-msgid "Namespace:" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1754 +-#, c-format +-msgid " %c-%c: " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1756 +-#, c-format +-msgid " %c: " +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1765 +-#, c-format +-msgid "procedure name = %s" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1781 +-#, fuzzy, c-format +-msgid "Operator interfaces for %s:" +-msgstr "" +-"\n" +-" Opcions per a %s:\n" +- +-#: fortran/dump-parse-tree.c:1790 +-#, c-format +-msgid "User operators:\n" +-msgstr "" +- +-#: fortran/dump-parse-tree.c:1806 +-#, c-format +-msgid "CONTAINS\n" +-msgstr "" +- +-#: fortran/error.c:213 +-#, fuzzy, no-c-format +-msgid " Included at %s:%d:" +-msgstr "En el fitxer inclòs de %s:%d" +- +-#: fortran/error.c:318 +-#, fuzzy, no-c-format +-msgid "\n" +-msgstr "assignació de valors inicials" +- +-#: fortran/error.c:651 +-#, no-c-format +-msgid "Error count reached limit of %d." +-msgstr "" +- +-#: fortran/error.c:670 fortran/error.c:725 fortran/error.c:762 +-#, fuzzy +-msgid "Warning:" +-msgstr "avís:" +- +-#: fortran/error.c:727 fortran/error.c:810 fortran/error.c:836 +-#, fuzzy +-msgid "Error:" +-msgstr "error intern: " +- +-#: fortran/error.c:860 +-#, fuzzy +-msgid "Fatal Error:" +-msgstr "error intern: " +- +-#: fortran/error.c:879 +-#, fuzzy, no-c-format +-msgid "Internal Error at (1):" +-msgstr "error intern: " +- +-#: fortran/expr.c:252 +-#, c-format +-msgid "Constant expression required at %C" +-msgstr "" +- +-#: fortran/expr.c:255 +-#, c-format +-msgid "Integer expression required at %C" +-msgstr "" +- +-#: fortran/expr.c:260 +-#, fuzzy, c-format +-msgid "Integer value too large in expression at %C" +-msgstr "desbordament enter en l'expressió" +- +-#: fortran/expr.c:1018 fortran/expr.c:1189 fortran/expr.c:1240 +-#, no-c-format +-msgid "index in dimension %d is out of bounds at %L" +-msgstr "" +- +-#: fortran/expr.c:1789 +-#, no-c-format +-msgid "elemental function arguments at %C are not compliant" +-msgstr "" +- +-#: fortran/expr.c:1833 +-#, no-c-format +-msgid "Numeric or CHARACTER operands are required in expression at %L" +-msgstr "" +- +-#: fortran/expr.c:1853 +-#, no-c-format +-msgid "Fortran 2003: Noninteger exponent in an initialization expression at %L" +-msgstr "" +- +-#: fortran/expr.c:1868 +-#, no-c-format +-msgid "Concatenation operator in expression at %L must have two CHARACTER operands" +-msgstr "" +- +-#: fortran/expr.c:1875 +-#, no-c-format +-msgid "Concat operator at %L must concatenate strings of the same kind" +-msgstr "" +- +-#: fortran/expr.c:1885 +-#, no-c-format +-msgid ".NOT. operator in expression at %L must have a LOGICAL operand" +-msgstr "" +- +-#: fortran/expr.c:1901 +-#, no-c-format +-msgid "LOGICAL operands are required in expression at %L" +-msgstr "" +- +-#: fortran/expr.c:1912 +-#, fuzzy, no-c-format +-msgid "Only intrinsic operators can be used in expression at %L" +-msgstr "Falta un operand per a l'operador en %1 al final de l'expressió en %0" +- +-#: fortran/expr.c:1920 +-#, fuzzy, no-c-format +-msgid "Numeric operands are required in expression at %L" +-msgstr "Falta un operand per a l'operador en %1 al final de l'expressió en %0" +- +-#: fortran/expr.c:1985 +-#, no-c-format +-msgid "Inquiry function '%s' at %L is not permitted in an initialization expression" +-msgstr "" +- +-#: fortran/expr.c:2015 +-#, no-c-format +-msgid "Assumed character length variable '%s' in constant expression at %L" +-msgstr "" +- +-#: fortran/expr.c:2061 fortran/expr.c:2067 +-#, no-c-format +-msgid "transformational intrinsic '%s' at %L is not permitted in an initialization expression" +-msgstr "" +- +-#: fortran/expr.c:2098 +-#, no-c-format +-msgid "Extension: Evaluation of nonstandard initialization expression at %L" +-msgstr "" +- +-#: fortran/expr.c:2151 +-#, no-c-format +-msgid "Function '%s' in initialization expression at %L must be an intrinsic or a specification function" +-msgstr "" +- +-#: fortran/expr.c:2163 +-#, no-c-format +-msgid "Intrinsic function '%s' at %L is not permitted in an initialization expression" +-msgstr "" +- +-#: fortran/expr.c:2207 +-#, fuzzy, no-c-format +-msgid "Assumed size array '%s' at %L is not permitted in an initialization expression" +-msgstr "la grandària de la matriu \"%D\" no és una expressió constant integral" +- +-#: fortran/expr.c:2213 +-#, no-c-format +-msgid "Assumed shape array '%s' at %L is not permitted in an initialization expression" +-msgstr "" +- +-#: fortran/expr.c:2219 +-#, no-c-format +-msgid "Deferred array '%s' at %L is not permitted in an initialization expression" +-msgstr "" +- +-#: fortran/expr.c:2229 +-#, no-c-format +-msgid "Parameter '%s' at %L has not been declared or is a variable, which does not reduce to a constant expression" +-msgstr "" +- +-#: fortran/expr.c:2317 +-#, fuzzy, no-c-format +-msgid "Initialization expression didn't reduce %C" +-msgstr "inicialització de l'expressió new amb \"=\"" +- +-#: fortran/expr.c:2360 +-#, fuzzy, no-c-format +-msgid "Specification function '%s' at %L cannot be a statement function" +-msgstr "el constructor no pot ser una funció membre de tipus static" +- +-#: fortran/expr.c:2367 +-#, fuzzy, no-c-format +-msgid "Specification function '%s' at %L cannot be an internal function" +-msgstr "%Jla funció interna \"%D\" no és declarada com funció" +- +-#: fortran/expr.c:2374 +-#, no-c-format +-msgid "Specification function '%s' at %L must be PURE" +-msgstr "" +- +-#: fortran/expr.c:2381 +-#, no-c-format +-msgid "Specification function '%s' at %L cannot be RECURSIVE" +-msgstr "" +- +-#: fortran/expr.c:2443 +-#, no-c-format +-msgid "Dummy argument '%s' not allowed in expression at %L" +-msgstr "" +- +-#: fortran/expr.c:2450 +-#, no-c-format +-msgid "Dummy argument '%s' at %L cannot be OPTIONAL" +-msgstr "" +- +-#: fortran/expr.c:2457 +-#, no-c-format +-msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)" +-msgstr "" +- +-#: fortran/expr.c:2479 +-#, fuzzy, no-c-format +-msgid "Variable '%s' cannot appear in the expression at %L" +-msgstr "desbordament en la constant implícita" +- +-#: fortran/expr.c:2528 +-#, no-c-format +-msgid "Expression at %L must be of INTEGER type" +-msgstr "" +- +-#: fortran/expr.c:2537 +-#, no-c-format +-msgid "Function '%s' at %L must be PURE" +-msgstr "" +- +-#: fortran/expr.c:2546 +-#, no-c-format +-msgid "Expression at %L must be scalar" +-msgstr "" +- +-#: fortran/expr.c:2573 +-#, no-c-format +-msgid "Incompatible ranks in %s (%d and %d) at %L" +-msgstr "" +- +-#: fortran/expr.c:2587 +-#, no-c-format +-msgid "Different shape for %s at %L on dimension %d (%d and %d)" +-msgstr "" +- +-#: fortran/expr.c:2633 fortran/expr.c:2800 +-#, no-c-format +-msgid "Cannot assign to INTENT(IN) variable '%s' at %L" +-msgstr "" +- +-#: fortran/expr.c:2676 +-#, no-c-format +-msgid "'%s' at %L is not a VALUE" +-msgstr "" +- +-#: fortran/expr.c:2683 +-#, fuzzy, no-c-format +-msgid "Incompatible ranks %d and %d in assignment at %L" +-msgstr "tipus incompatible en l'assignació de \"%T\" a \"%T\"" +- +-#: fortran/expr.c:2690 +-#, fuzzy, no-c-format +-msgid "Variable type is UNKNOWN in assignment at %L" +-msgstr "tipus incompatible en l'assignació de \"%T\" a \"%T\"" +- +-#: fortran/expr.c:2702 +-#, no-c-format +-msgid "NULL appears on right-hand side in assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2713 +-#, no-c-format +-msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal" +-msgstr "" +- +-#: fortran/expr.c:2722 +-#, no-c-format +-msgid "POINTER valued function appears on right-hand side of assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2727 +-#, fuzzy +-msgid "array assignment" +-msgstr "assignació" +- +-#: fortran/expr.c:2744 +-#, fuzzy, no-c-format +-msgid "Incompatible types in assignment at %L, %s to %s" +-msgstr "tipus incompatible en l'assignació de \"%T\" a \"%T\"" +- +-#: fortran/expr.c:2769 +-#, no-c-format +-msgid "Pointer assignment target is not a POINTER at %L" +-msgstr "" +- +-#: fortran/expr.c:2777 +-#, no-c-format +-msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a procedure" +-msgstr "" +- +-#: fortran/expr.c:2807 +-#, no-c-format +-msgid "Pointer assignment to non-POINTER at %L" +-msgstr "" +- +-#: fortran/expr.c:2816 +-#, no-c-format +-msgid "Bad pointer object in PURE procedure at %L" +-msgstr "" +- +-#: fortran/expr.c:2828 +-#, no-c-format +-msgid "Different types in pointer assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2835 +-#, no-c-format +-msgid "Different kind type parameters in pointer assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2842 +-#, no-c-format +-msgid "Different ranks in pointer assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2857 +-#, no-c-format +-msgid "Different character lengths in pointer assignment at %L" +-msgstr "" +- +-#: fortran/expr.c:2868 +-#, no-c-format +-msgid "Pointer assignment target is neither TARGET nor POINTER at %L" +-msgstr "" +- +-#: fortran/expr.c:2875 +-#, no-c-format +-msgid "Bad target in pointer assignment in PURE procedure at %L" +-msgstr "" +- +-#: fortran/expr.c:2881 +-#, no-c-format +-msgid "Pointer assignment with vector subscript on rhs at %L" +-msgstr "" +- +-#: fortran/expr.c:2888 +-#, no-c-format +-msgid "Pointer assigment target has PROTECTED attribute at %L" +-msgstr "" +- +-#: fortran/gfortranspec.c:248 +-#, fuzzy, c-format +-msgid "overflowed output arg list for '%s'" +-msgstr "llista d'arguments de sortida desbordada per a \"%s\"" +- +-#: fortran/gfortranspec.c:381 +-#, c-format +-msgid "" +-"GNU Fortran comes with NO WARRANTY, to the extent permitted by law.\n" +-"You may redistribute copies of GNU Fortran\n" +-"under the terms of the GNU General Public License.\n" +-"For more information about these matters, see the file named COPYING\n" +-"\n" +-msgstr "" +- +-#: fortran/gfortranspec.c:403 +-#, fuzzy, c-format +-msgid "argument to '%s' missing" +-msgstr "falta l'argument per a \"%s\"" +- +-#: fortran/gfortranspec.c:407 +-#, c-format +-msgid "no input files; unwilling to write output files" +-msgstr "no hi ha fitxers d'entrada; incapaç d'escriure fitxers de sortida" +- +-#: fortran/gfortranspec.c:566 +-#, fuzzy, c-format +-msgid "Driving:" +-msgstr "avís:" +- +-#: fortran/interface.c:173 +-#, fuzzy, no-c-format +-msgid "Syntax error in generic specification at %C" +-msgstr "error de decodificació en l'especificació del mètode" +- +-#: fortran/interface.c:200 +-#, fuzzy, no-c-format +-msgid "Syntax error: Trailing garbage in INTERFACE statement at %C" +-msgstr "Text espuri addicional al nombre en la declaració FORMAT en %0" +- +-#: fortran/interface.c:219 +-#, no-c-format +-msgid "Dummy procedure '%s' at %C cannot have a generic interface" +-msgstr "" +- +-#: fortran/interface.c:252 +-#, no-c-format +-msgid "Fortran 2003: ABSTRACT INTERFACE at %C" +-msgstr "" +- +-#: fortran/interface.c:260 +-#, no-c-format +-msgid "Syntax error in ABSTRACT INTERFACE statement at %C" +-msgstr "" +- +-#: fortran/interface.c:291 +-#, no-c-format +-msgid "Syntax error: Trailing garbage in END INTERFACE statement at %C" +-msgstr "" +- +-#: fortran/interface.c:304 +-#, fuzzy, no-c-format +-msgid "Expected a nameless interface at %C" +-msgstr " s'esperava un patró de classe, es va obtenir \"%T\"" +- +-#: fortran/interface.c:315 +-#, no-c-format +-msgid "Expected 'END INTERFACE ASSIGNMENT (=)' at %C" +-msgstr "" +- +-#: fortran/interface.c:317 +-#, no-c-format +-msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C" +-msgstr "" +- +-#: fortran/interface.c:331 +-#, no-c-format +-msgid "Expecting 'END INTERFACE OPERATOR (.%s.)' at %C" +-msgstr "" +- +-#: fortran/interface.c:342 +-#, no-c-format +-msgid "Expecting 'END INTERFACE %s' at %C" +-msgstr "" +- +-#: fortran/interface.c:551 +-#, no-c-format +-msgid "Alternate return cannot appear in operator interface at %L" +-msgstr "" +- +-#: fortran/interface.c:581 +-#, no-c-format +-msgid "Operator interface at %L has the wrong number of arguments" +-msgstr "" +- +-#: fortran/interface.c:592 +-#, no-c-format +-msgid "Assignment operator interface at %L must be a SUBROUTINE" +-msgstr "" +- +-#: fortran/interface.c:598 +-#, no-c-format +-msgid "Assignment operator interface at %L must have two arguments" +-msgstr "" +- +-#: fortran/interface.c:608 +-#, no-c-format +-msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment" +-msgstr "" +- +-#: fortran/interface.c:617 +-#, no-c-format +-msgid "Intrinsic operator interface at %L must be a FUNCTION" +-msgstr "" +- +-#: fortran/interface.c:627 +-#, no-c-format +-msgid "First argument of defined assignment at %L must be INTENT(IN) or INTENT(INOUT)" +-msgstr "" +- +-#: fortran/interface.c:631 +-#, no-c-format +-msgid "Second argument of defined assignment at %L must be INTENT(IN)" +-msgstr "" +- +-#: fortran/interface.c:637 fortran/resolve.c:8807 +-#, no-c-format +-msgid "First argument of operator interface at %L must be INTENT(IN)" +-msgstr "" +- +-#: fortran/interface.c:641 fortran/resolve.c:8819 +-#, no-c-format +-msgid "Second argument of operator interface at %L must be INTENT(IN)" +-msgstr "" +- +-#: fortran/interface.c:744 +-#, no-c-format +-msgid "Operator interface at %L conflicts with intrinsic interface" +-msgstr "" +- +-#: fortran/interface.c:1044 +-#, no-c-format +-msgid "Procedure '%s' in %s at %L has no explicit interface" +-msgstr "" +- +-#: fortran/interface.c:1047 +-#, no-c-format +-msgid "Procedure '%s' in %s at %L is neither function nor subroutine" +-msgstr "" +- +-#: fortran/interface.c:1102 fortran/interface.c:1108 +-#, no-c-format +-msgid "Ambiguous interfaces '%s' and '%s' in %s at %L" +-msgstr "" +- +-#: fortran/interface.c:1144 +-#, no-c-format +-msgid "'%s' at %L is not a module procedure" +-msgstr "" +- +-#: fortran/interface.c:1676 +-#, no-c-format +-msgid "Keyword argument '%s' at %L is not in the procedure" +-msgstr "" +- +-#: fortran/interface.c:1684 +-#, no-c-format +-msgid "Keyword argument '%s' at %L is already associated with another actual argument" +-msgstr "" +- +-#: fortran/interface.c:1694 +-#, no-c-format +-msgid "More actual than formal arguments in procedure call at %L" +-msgstr "" +- +-#: fortran/interface.c:1706 fortran/interface.c:1935 +-#, no-c-format +-msgid "Missing alternate return spec in subroutine call at %L" +-msgstr "" +- +-#: fortran/interface.c:1714 +-#, no-c-format +-msgid "Unexpected alternate return spec in subroutine call at %L" +-msgstr "" +- +-#: fortran/interface.c:1729 +-#, no-c-format +-msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:1742 +-#, no-c-format +-msgid "Type/rank mismatch in argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:1758 +-#, no-c-format +-msgid "Character length mismatch between actual argument and pointer or allocatable dummy argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:1771 +-#, no-c-format +-msgid "Character length of actual argument shorter than of dummy argument '%s' (%lu/%lu) at %L" +-msgstr "" +- +-#: fortran/interface.c:1776 +-#, no-c-format +-msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) at %L" +-msgstr "" +- +-#: fortran/interface.c:1790 +-#, no-c-format +-msgid "Expected a procedure for argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:1800 +-#, no-c-format +-msgid "Expected a PURE procedure for argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:1814 +-#, no-c-format +-msgid "Actual argument for '%s' cannot be an assumed-size array at %L" +-msgstr "" +- +-#: fortran/interface.c:1823 +-#, fuzzy, no-c-format +-msgid "Actual argument for '%s' must be a pointer at %L" +-msgstr "l'argument per a \"%s\" ha de ser una literal sense signe de 2-bit" +- +-#: fortran/interface.c:1832 +-#, no-c-format +-msgid "Actual argument for '%s' must be ALLOCATABLE at %L" +-msgstr "" +- +-#: fortran/interface.c:1843 +-#, no-c-format +-msgid "Actual argument at %L must be definable to match dummy INTENT = OUT/INOUT" +-msgstr "" +- +-#: fortran/interface.c:1851 +-#, no-c-format +-msgid "Actual argument at %L is use-associated with PROTECTED attribute and dummy argument '%s' is INTENT = OUT/INOUT" +-msgstr "" +- +-#: fortran/interface.c:1864 +-#, no-c-format +-msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(IN), INTENT(INOUT) or VOLATILE attribute of the dummy argument '%s'" +-msgstr "" +- +-#: fortran/interface.c:1881 +-#, no-c-format +-msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" +-msgstr "" +- +-#: fortran/interface.c:1893 +-#, no-c-format +-msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" +-msgstr "" +- +-#: fortran/interface.c:1912 +-#, no-c-format +-msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument '%s' due to VOLATILE attribute" +-msgstr "" +- +-#: fortran/interface.c:1942 +-#, no-c-format +-msgid "Missing actual argument for argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:2128 +-#, no-c-format +-msgid "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) argument '%s' at %L" +-msgstr "" +- +-#: fortran/interface.c:2184 +-#, no-c-format +-msgid "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)" +-msgstr "" +- +-#: fortran/interface.c:2194 +-#, no-c-format +-msgid "Procedure argument at %L is local to a PURE procedure and is passed to an INTENT(%s) argument" +-msgstr "" +- +-#: fortran/interface.c:2202 +-#, no-c-format +-msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute" +-msgstr "" +- +-#: fortran/interface.c:2225 +-#, no-c-format +-msgid "Procedure '%s' called with an implicit interface at %L" +-msgstr "" +- +-#: fortran/interface.c:2440 +-#, no-c-format +-msgid "Function '%s' called in lieu of an operator at %L must be PURE" +-msgstr "" +- +-#: fortran/interface.c:2519 +-#, no-c-format +-msgid "Entity '%s' at %C is already present in the interface" +-msgstr "" +- +-#: fortran/intrinsic.c:2918 +-#, fuzzy, no-c-format +-msgid "Too many arguments in call to '%s' at %L" +-msgstr "massa arguments per a %s \"%+#D\"" +- +-#: fortran/intrinsic.c:2933 +-#, no-c-format +-msgid "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:2936 +-#, no-c-format +-msgid "Can't find keyword named '%s' in call to '%s' at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:2943 +-#, no-c-format +-msgid "Argument '%s' is appears twice in call to '%s' at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:2957 +-#, no-c-format +-msgid "Missing actual argument '%s' in call to '%s' at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:2972 +-#, no-c-format +-msgid "ALTERNATE RETURN not permitted at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:3021 +-#, no-c-format +-msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s" +-msgstr "" +- +-#: fortran/intrinsic.c:3337 +-#, no-c-format +-msgid "Intrinsic '%s' at %L is not included in the selected standard" +-msgstr "" +- +-#: fortran/intrinsic.c:3450 +-#, no-c-format +-msgid "Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments at %L" +-msgstr "" +- +-#: fortran/intrinsic.c:3508 +-#, no-c-format +-msgid "Subroutine call to intrinsic '%s' at %L is not PURE" +-msgstr "" +- +-#: fortran/intrinsic.c:3579 +-#, fuzzy, no-c-format +-msgid "Extension: Conversion from %s to %s at %L" +-msgstr "conversió no vàlida de \"%T\" a \"%T\"" +- +-#: fortran/intrinsic.c:3582 +-#, fuzzy, no-c-format +-msgid "Conversion from %s to %s at %L" +-msgstr "conversió de \"%#T\" a \"%#T\"" +- +-#: fortran/intrinsic.c:3629 +-#, fuzzy, no-c-format +-msgid "Can't convert %s to %s at %L" +-msgstr "la conversion de %s a %s ha fallat" +- +-#: fortran/io.c:156 fortran/primary.c:738 +-#, no-c-format +-msgid "Extension: backslash character at %C" +-msgstr "" +- +-#: fortran/io.c:187 fortran/io.c:190 +-#, no-c-format +-msgid "Extension: Tab character in format at %C" +-msgstr "" +- +-#: fortran/io.c:450 +-#, fuzzy +-msgid "Positive width required" +-msgstr " però es requereixen %d" +- +-#: fortran/io.c:451 +-#, fuzzy +-msgid "Nonnegative width required" +-msgstr "amplària negativa en el camp de bit \"%s\"" +- +-#: fortran/io.c:452 +-#, fuzzy +-msgid "Unexpected element" +-msgstr "operand inesperat" +- +-#: fortran/io.c:453 +-#, fuzzy +-msgid "Unexpected end of format string" +-msgstr "constant de format sense acabar" +- +-#: fortran/io.c:472 +-#, fuzzy +-msgid "Missing leading left parenthesis" +-msgstr "\"(\" faltant" +- +-#: fortran/io.c:519 +-msgid "Expected P edit descriptor" +-msgstr "" +- +-#. P requires a prior number. +-#: fortran/io.c:527 +-msgid "P descriptor requires leading scale factor" +-msgstr "" +- +-#. X requires a prior number if we're being pedantic. +-#: fortran/io.c:532 +-#, no-c-format +-msgid "Extension: X descriptor requires leading space count at %C" +-msgstr "" +- +-#: fortran/io.c:554 +-#, no-c-format +-msgid "Extension: $ descriptor at %C" +-msgstr "" +- +-#: fortran/io.c:559 +-#, no-c-format +-msgid "$ should be the last specifier in format at %C" +-msgstr "" +- +-#: fortran/io.c:604 +-msgid "Repeat count cannot follow P descriptor" +-msgstr "" +- +-#: fortran/io.c:624 +-#, no-c-format +-msgid "Extension: Missing positive width after L descriptor at %C" +-msgstr "" +- +-#: fortran/io.c:670 fortran/io.c:672 fortran/io.c:733 fortran/io.c:735 +-#, fuzzy, no-c-format +-msgid "Period required in format specifier at %C" +-msgstr "no es reconeix l'especificador de format" +- +-#: fortran/io.c:704 +-msgid "Positive exponent width required" +-msgstr "" +- +-#: fortran/io.c:753 +-#, no-c-format +-msgid "The H format specifier at %C is a Fortran 95 deleted feature" +-msgstr "" +- +-#: fortran/io.c:838 fortran/io.c:895 +-#, no-c-format +-msgid "Extension: Missing comma at %C" +-msgstr "" +- +-#: fortran/io.c:905 +-#, fuzzy, no-c-format +-msgid "%s in format string at %C" +-msgstr "format %s, argument %s (argument %d)" +- +-#: fortran/io.c:946 +-#, no-c-format +-msgid "Format statement in module main block at %C" +-msgstr "" +- +-#: fortran/io.c:952 +-#, fuzzy, no-c-format +-msgid "Missing format label at %C" +-msgstr "nom de fitxer faltant deprés de \"%s\"" +- +-#: fortran/io.c:1010 fortran/io.c:1034 +-#, fuzzy, no-c-format +-msgid "Duplicate %s specification at %C" +-msgstr "després de l'especificació prèvia en \"%#D\"" +- +-#: fortran/io.c:1041 +-#, no-c-format +-msgid "Variable tag cannot be INTENT(IN) at %C" +-msgstr "" +- +-#: fortran/io.c:1048 +-#, no-c-format +-msgid "Variable tag cannot be assigned in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:1085 +-#, fuzzy, no-c-format +-msgid "Duplicate %s label specification at %C" +-msgstr "declaració de l'etiqueta \"%s\" duplicada" +- +-#: fortran/io.c:1106 +-#, no-c-format +-msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER" +-msgstr "" +- +-#: fortran/io.c:1119 +-#, no-c-format +-msgid "FORMAT tag at %L must be of type CHARACTER or INTEGER" +-msgstr "" +- +-#: fortran/io.c:1125 +-#, no-c-format +-msgid "Deleted feature: ASSIGNED variable in FORMAT tag at %L" +-msgstr "" +- +-#: fortran/io.c:1131 +-#, no-c-format +-msgid "Variable '%s' at %L has not been assigned a format label" +-msgstr "" +- +-#: fortran/io.c:1138 +-#, no-c-format +-msgid "Scalar '%s' in FORMAT tag at %L is not an ASSIGNED variable" +-msgstr "" +- +-#: fortran/io.c:1151 +-#, no-c-format +-msgid "Extension: Character array in FORMAT tag at %L" +-msgstr "" +- +-#: fortran/io.c:1157 +-#, fuzzy, no-c-format +-msgid "Extension: Non-character in FORMAT tag at %L" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/io.c:1182 +-#, fuzzy, no-c-format +-msgid "%s tag at %L must be of type %s" +-msgstr "\"%D\" no és un membre de tipus \"%T\"" +- +-#: fortran/io.c:1189 +-#, no-c-format +-msgid "%s tag at %L must be scalar" +-msgstr "" +- +-#: fortran/io.c:1195 +-#, no-c-format +-msgid "Fortran 2003: IOMSG tag at %L" +-msgstr "" +- +-#: fortran/io.c:1203 +-#, no-c-format +-msgid "Fortran 95 requires default INTEGER in %s tag at %L" +-msgstr "" +- +-#: fortran/io.c:1211 +-#, no-c-format +-msgid "Extension: CONVERT tag at %L" +-msgstr "" +- +-#: fortran/io.c:1367 fortran/io.c:1375 +-#, fuzzy, no-c-format +-msgid "Fortran 2003: %s specifier in %s statement at %C has value '%s'" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/io.c:1393 fortran/io.c:1401 +-#, fuzzy, no-c-format +-msgid "Extension: %s specifier in %s statement at %C has value '%s'" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/io.c:1413 fortran/io.c:1419 +-#, fuzzy, no-c-format +-msgid "%s specifier in %s statement at %C has invalid value '%s'" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/io.c:1473 +-#, no-c-format +-msgid "OPEN statement not allowed in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:1818 +-#, no-c-format +-msgid "CLOSE statement not allowed in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:1955 fortran/match.c:1841 +-#, no-c-format +-msgid "%s statement not allowed in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:2011 +-#, no-c-format +-msgid "Fortran 2003: FLUSH statement at %C" +-msgstr "" +- +-#: fortran/io.c:2072 +-#, no-c-format +-msgid "Duplicate UNIT specification at %C" +-msgstr "" +- +-#: fortran/io.c:2128 +-#, fuzzy, no-c-format +-msgid "Duplicate format specification at %C" +-msgstr "error de decodificació en l'especificació del mètode" +- +-#: fortran/io.c:2145 +-#, no-c-format +-msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C" +-msgstr "" +- +-#: fortran/io.c:2181 +-#, fuzzy, no-c-format +-msgid "Duplicate NML specification at %C" +-msgstr "inicialització duplicada de %D" +- +-#: fortran/io.c:2190 +-#, no-c-format +-msgid "Symbol '%s' at %C must be a NAMELIST group name" +-msgstr "" +- +-#: fortran/io.c:2231 +-#, no-c-format +-msgid "END tag at %C not allowed in output statement" +-msgstr "" +- +-#: fortran/io.c:2288 +-#, no-c-format +-msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable" +-msgstr "" +- +-#: fortran/io.c:2297 +-#, no-c-format +-msgid "Internal unit with vector subscript at %L" +-msgstr "" +- +-#: fortran/io.c:2304 +-#, no-c-format +-msgid "External IO UNIT cannot be an array at %L" +-msgstr "" +- +-#: fortran/io.c:2314 +-#, fuzzy, no-c-format +-msgid "ERR tag label %d at %L not defined" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/io.c:2326 +-#, fuzzy, no-c-format +-msgid "END tag label %d at %L not defined" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/io.c:2338 +-#, fuzzy, no-c-format +-msgid "EOR tag label %d at %L not defined" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/io.c:2348 +-#, fuzzy, no-c-format +-msgid "FORMAT label %d at %L not defined" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/io.c:2469 +-#, fuzzy, no-c-format +-msgid "Syntax error in I/O iterator at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/io.c:2500 +-#, fuzzy, no-c-format +-msgid "Expected variable in READ statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/io.c:2506 +-#, fuzzy, no-c-format +-msgid "Expected expression in %s statement at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/io.c:2516 +-#, no-c-format +-msgid "Variable '%s' in input list at %C cannot be INTENT(IN)" +-msgstr "" +- +-#: fortran/io.c:2525 +-#, no-c-format +-msgid "Cannot read to variable '%s' in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:2541 +-#, no-c-format +-msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure" +-msgstr "" +- +-#. A general purpose syntax error. +-#: fortran/io.c:2602 fortran/io.c:3004 fortran/gfortran.h:1998 +-#, fuzzy, no-c-format +-msgid "Syntax error in %s statement at %C" +-msgstr "error sintàctic en l'element \"%s\"" +- +-#: fortran/io.c:2670 +-#, no-c-format +-msgid "Fortran 2003: Internal file at %L with namelist" +-msgstr "" +- +-#: fortran/io.c:2833 +-#, no-c-format +-msgid "PRINT namelist at %C is an extension" +-msgstr "" +- +-#: fortran/io.c:2965 +-#, no-c-format +-msgid "Extension: Comma before i/o item list at %C" +-msgstr "" +- +-#: fortran/io.c:2974 +-#, fuzzy, no-c-format +-msgid "Expected comma in I/O list at %C" +-msgstr "Coma sobrant en la declaració FORMAT en %0" +- +-#: fortran/io.c:3036 +-#, fuzzy, no-c-format +-msgid "PRINT statement at %C not allowed within PURE procedure" +-msgstr "La declaració RETURN en %0 no és vàlida dintre d'una unitat de programa principal" +- +-#: fortran/io.c:3176 fortran/io.c:3227 +-#, no-c-format +-msgid "INQUIRE statement not allowed in PURE procedure at %C" +-msgstr "" +- +-#: fortran/io.c:3203 +-#, no-c-format +-msgid "IOLENGTH tag invalid in INQUIRE statement at %C" +-msgstr "" +- +-#: fortran/io.c:3213 fortran/trans-io.c:1144 +-#, no-c-format +-msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers" +-msgstr "" +- +-#: fortran/io.c:3220 +-#, no-c-format +-msgid "INQUIRE statement at %L requires either FILE or UNIT specifier" +-msgstr "" +- +-#: fortran/match.c:270 +-#, fuzzy, no-c-format +-msgid "Integer too large at %C" +-msgstr "Enter en %0 massa gran" +- +-#: fortran/match.c:363 fortran/parse.c:442 +-#, no-c-format +-msgid "Too many digits in statement label at %C" +-msgstr "" +- +-#: fortran/match.c:369 +-#, no-c-format +-msgid "Statement label at %C is zero" +-msgstr "" +- +-#: fortran/match.c:402 +-#, fuzzy, no-c-format +-msgid "Label name '%s' at %C is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: fortran/match.c:408 +-#, fuzzy, no-c-format +-msgid "Duplicate construct label '%s' at %C" +-msgstr "etiqueta duplicada \"%D\"" +- +-#: fortran/match.c:438 +-#, fuzzy, no-c-format +-msgid "Invalid character in name at %C" +-msgstr "caracter no vàlid \"%c\" en #if" +- +-#: fortran/match.c:451 fortran/match.c:523 +-#, no-c-format +-msgid "Name at %C is too long" +-msgstr "" +- +-#: fortran/match.c:506 fortran/match.c:552 +-#, no-c-format +-msgid "Invalid C name in NAME= specifier at %C" +-msgstr "" +- +-#: fortran/match.c:543 +-#, no-c-format +-msgid "Embedded space in NAME= specifier at %C" +-msgstr "" +- +-#: fortran/match.c:868 +-#, no-c-format +-msgid "Loop variable at %C cannot be a sub-component" +-msgstr "" +- +-#: fortran/match.c:874 +-#, no-c-format +-msgid "Loop variable '%s' at %C cannot be INTENT(IN)" +-msgstr "" +- +-#: fortran/match.c:907 +-#, no-c-format +-msgid "Expected a step value in iterator at %C" +-msgstr "" +- +-#: fortran/match.c:919 +-#, fuzzy, no-c-format +-msgid "Syntax error in iterator at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/match.c:1155 +-#, fuzzy, no-c-format +-msgid "Invalid form of PROGRAM statement at %C" +-msgstr "Coma faltant en la declaració FORMAT en %0" +- +-#: fortran/match.c:1196 +-#, no-c-format +-msgid "Setting value of PROTECTED variable at %C" +-msgstr "" +- +-#: fortran/match.c:1249 +-#, no-c-format +-msgid "Assigning to a PROTECTED pointer at %C" +-msgstr "" +- +-#: fortran/match.c:1292 fortran/match.c:1365 +-#, no-c-format +-msgid "Obsolescent: arithmetic IF statement at %C" +-msgstr "" +- +-#: fortran/match.c:1340 +-#, fuzzy, no-c-format +-msgid "Syntax error in IF-expression at %C" +-msgstr "desbordament enter en l'expressió" +- +-#: fortran/match.c:1351 +-#, no-c-format +-msgid "Block label not appropriate for arithmetic IF statement at %C" +-msgstr "" +- +-#: fortran/match.c:1389 +-#, fuzzy, no-c-format +-msgid "Block label is not appropriate IF statement at %C" +-msgstr "No hi ha definició d'etiqueta per a la declaració FORMAT en %0" +- +-#: fortran/match.c:1468 fortran/primary.c:2522 +-#, no-c-format +-msgid "Cannot assign to a named constant at %C" +-msgstr "" +- +-#: fortran/match.c:1478 +-#, no-c-format +-msgid "Unclassifiable statement in IF-clause at %C" +-msgstr "" +- +-#: fortran/match.c:1485 +-#, no-c-format +-msgid "Syntax error in IF-clause at %C" +-msgstr "" +- +-#: fortran/match.c:1529 +-#, no-c-format +-msgid "Unexpected junk after ELSE statement at %C" +-msgstr "" +- +-#: fortran/match.c:1535 fortran/match.c:1570 +-#, no-c-format +-msgid "Label '%s' at %C doesn't match IF label '%s'" +-msgstr "" +- +-#: fortran/match.c:1564 +-#, no-c-format +-msgid "Unexpected junk after ELSE IF statement at %C" +-msgstr "" +- +-#: fortran/match.c:1727 +-#, no-c-format +-msgid "Name '%s' in %s statement at %C is not a loop name" +-msgstr "" +- +-#: fortran/match.c:1743 +-#, fuzzy, no-c-format +-msgid "%s statement at %C is not within a loop" +-msgstr "la declaració continue no està dintre dintre d'un cicle" +- +-#: fortran/match.c:1746 +-#, fuzzy, no-c-format +-msgid "%s statement at %C is not within loop '%s'" +-msgstr "la declaració break no està dintre d'un cicle o «switch»" +- +-#: fortran/match.c:1754 +-#, no-c-format +-msgid "%s statement at %C leaving OpenMP structured block" +-msgstr "" +- +-#: fortran/match.c:1767 +-#, no-c-format +-msgid "EXIT statement at %C terminating !$OMP DO loop" +-msgstr "" +- +-#: fortran/match.c:1819 +-#, no-c-format +-msgid "Too many digits in STOP code at %C" +-msgstr "" +- +-#: fortran/match.c:1872 +-#, no-c-format +-msgid "Deleted feature: PAUSE statement at %C" +-msgstr "" +- +-#: fortran/match.c:1920 +-#, no-c-format +-msgid "Deleted feature: ASSIGN statement at %C" +-msgstr "" +- +-#: fortran/match.c:1966 +-#, no-c-format +-msgid "Deleted feature: Assigned GOTO statement at %C" +-msgstr "" +- +-#: fortran/match.c:2013 fortran/match.c:2065 +-#, no-c-format +-msgid "Statement label list in GOTO at %C cannot be empty" +-msgstr "" +- +-#: fortran/match.c:2149 +-#, no-c-format +-msgid "Bad allocate-object in ALLOCATE statement at %C for a PURE procedure" +-msgstr "" +- +-#: fortran/match.c:2173 +-#, no-c-format +-msgid "STAT variable '%s' of ALLOCATE statement at %C cannot be INTENT(IN)" +-msgstr "" +- +-#: fortran/match.c:2180 +-#, no-c-format +-msgid "Illegal STAT variable in ALLOCATE statement at %C for a PURE procedure" +-msgstr "" +- +-#: fortran/match.c:2218 fortran/match.c:2382 +-#, no-c-format +-msgid "STAT expression at %C must be a variable" +-msgstr "" +- +-#: fortran/match.c:2272 +-#, no-c-format +-msgid "Illegal variable in NULLIFY at %C for a PURE procedure" +-msgstr "" +- +-#: fortran/match.c:2349 +-#, no-c-format +-msgid "Illegal deallocate-expression in DEALLOCATE at %C for a PURE procedure" +-msgstr "" +- +-#: fortran/match.c:2368 +-#, no-c-format +-msgid "STAT variable '%s' of DEALLOCATE statement at %C cannot be INTENT(IN)" +-msgstr "" +- +-#: fortran/match.c:2375 +-#, no-c-format +-msgid "Illegal STAT variable in DEALLOCATE statement at %C for a PURE procedure" +-msgstr "" +- +-#: fortran/match.c:2424 +-#, no-c-format +-msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE" +-msgstr "" +- +-#: fortran/match.c:2455 +-#, fuzzy, no-c-format +-msgid "Extension: RETURN statement in main program at %C" +-msgstr "La declaració RETURN en %0 no és vàlida dintre d'una unitat de programa principal" +- +-#: fortran/match.c:2665 +-#, fuzzy, no-c-format +-msgid "Syntax error in common block name at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/match.c:2701 +-#, no-c-format +-msgid "Symbol '%s' at %C is already an external symbol that is not COMMON" +-msgstr "" +- +-#: fortran/match.c:2719 +-#, no-c-format +-msgid "BLOCK DATA unit cannot contain blank COMMON at %C" +-msgstr "" +- +-#. If we find an error, just print it and continue, +-#. cause it's just semantic, and we can see if there +-#. are more errors. +-#: fortran/match.c:2765 +-#, no-c-format +-msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)" +-msgstr "" +- +-#: fortran/match.c:2774 +-#, no-c-format +-msgid "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not global" +-msgstr "" +- +-#: fortran/match.c:2781 +-#, no-c-format +-msgid "Symbol '%s' at %C is already in a COMMON block" +-msgstr "" +- +-#: fortran/match.c:2793 +-#, no-c-format +-msgid "Previously initialized symbol '%s' in blank COMMON block at %C" +-msgstr "" +- +-#: fortran/match.c:2796 +-#, no-c-format +-msgid "Previously initialized symbol '%s' in COMMON block '%s' at %C" +-msgstr "" +- +-#: fortran/match.c:2821 +-#, no-c-format +-msgid "Array specification for symbol '%s' in COMMON at %C must be explicit" +-msgstr "" +- +-#: fortran/match.c:2831 +-#, no-c-format +-msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array" +-msgstr "" +- +-#: fortran/match.c:2863 +-#, no-c-format +-msgid "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to another COMMON block '%s'" +-msgstr "" +- +-#: fortran/match.c:2971 +-#, no-c-format +-msgid "Namelist group name '%s' at %C already has a basic type of %s" +-msgstr "" +- +-#: fortran/match.c:2979 +-#, no-c-format +-msgid "Namelist group name '%s' at %C already is USE associated and cannot be respecified." +-msgstr "" +- +-#: fortran/match.c:3006 +-#, no-c-format +-msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed" +-msgstr "" +- +-#: fortran/match.c:3013 +-#, no-c-format +-msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed" +-msgstr "" +- +-#: fortran/match.c:3140 +-#, no-c-format +-msgid "Derived type component %C is not a permitted EQUIVALENCE member" +-msgstr "" +- +-#: fortran/match.c:3148 +-#, no-c-format +-msgid "Array reference in EQUIVALENCE at %C cannot be an array section" +-msgstr "" +- +-#: fortran/match.c:3176 +-#, no-c-format +-msgid "EQUIVALENCE at %C requires two or more objects" +-msgstr "" +- +-#: fortran/match.c:3190 +-#, no-c-format +-msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C" +-msgstr "" +- +-#: fortran/match.c:3351 +-#, no-c-format +-msgid "Statement function at %L is recursive" +-msgstr "" +- +-#: fortran/match.c:3439 +-#, fuzzy, no-c-format +-msgid "Expected initialization expression in CASE at %C" +-msgstr "inicialització de l'expressió new amb \"=\"" +- +-#: fortran/match.c:3462 +-#, no-c-format +-msgid "Expected the name of the SELECT CASE construct at %C" +-msgstr "" +- +-#: fortran/match.c:3474 +-#, no-c-format +-msgid "Expected case name of '%s' at %C" +-msgstr "" +- +-#: fortran/match.c:3518 +-#, fuzzy, no-c-format +-msgid "Unexpected CASE statement at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/match.c:3570 +-#, fuzzy, no-c-format +-msgid "Syntax error in CASE-specification at %C" +-msgstr "error de decodificació en l'especificació del mètode" +- +-#: fortran/match.c:3690 +-#, no-c-format +-msgid "ELSEWHERE statement at %C not enclosed in WHERE block" +-msgstr "" +- +-#: fortran/match.c:3728 +-#, no-c-format +-msgid "Label '%s' at %C doesn't match WHERE label '%s'" +-msgstr "" +- +-#: fortran/match.c:3828 +-#, fuzzy, no-c-format +-msgid "Syntax error in FORALL iterator at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/matchexp.c:28 +-#, fuzzy, c-format +-msgid "Syntax error in expression at %C" +-msgstr "desbordament enter en l'expressió" +- +-#: fortran/matchexp.c:72 +-#, fuzzy, no-c-format +-msgid "Bad character '%c' in OPERATOR name at %C" +-msgstr "caracter no vàlid \"%c\" en #if" +- +-#: fortran/matchexp.c:80 +-#, fuzzy, no-c-format +-msgid "The name '%s' cannot be used as a defined operator at %C" +-msgstr "no es pot usar \"%s\" com un nom de macro perquè és un operador en C++" +- +-#: fortran/matchexp.c:187 +-#, fuzzy, no-c-format +-msgid "Expected a right parenthesis in expression at %C" +-msgstr "S'esperava un operador binari entre les expressions en %0 i en %1" +- +-#: fortran/matchexp.c:312 +-#, fuzzy, no-c-format +-msgid "Expected exponent in expression at %C" +-msgstr "S'esperava un operador binari entre les expressions en %0 i en %1" +- +-#: fortran/matchexp.c:348 fortran/matchexp.c:452 +-#, no-c-format +-msgid "Extension: Unary operator following arithmetic operator (use parentheses) at %C" +-msgstr "" +- +-#: fortran/misc.c:39 +-#, no-c-format +-msgid "Out of memory-- malloc() failed" +-msgstr "" +- +-#: fortran/module.c:516 +-#, no-c-format +-msgid "Fortran 2003: module nature in USE statement at %C" +-msgstr "" +- +-#: fortran/module.c:528 +-#, no-c-format +-msgid "Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSIC" +-msgstr "" +- +-#: fortran/module.c:541 +-#, no-c-format +-msgid "\"::\" was expected after module nature at %C but was not found" +-msgstr "" +- +-#: fortran/module.c:550 +-#, no-c-format +-msgid "Fortran 2003: \"USE :: module\" at %C" +-msgstr "" +- +-#: fortran/module.c:602 +-#, fuzzy, no-c-format +-msgid "Missing generic specification in USE statement at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/module.c:610 +-#, no-c-format +-msgid "Fortran 2003: Renaming operators in USE statements at %C" +-msgstr "" +- +-#: fortran/module.c:652 +-#, no-c-format +-msgid "The name '%s' at %C has already been used as an external module name." +-msgstr "" +- +-#: fortran/module.c:930 +-#, no-c-format +-msgid "Reading module %s at line %d column %d: %s" +-msgstr "" +- +-#: fortran/module.c:934 +-#, no-c-format +-msgid "Writing module %s at line %d column %d: %s" +-msgstr "" +- +-#: fortran/module.c:938 +-#, no-c-format +-msgid "Module %s at line %d column %d: %s" +-msgstr "" +- +-#: fortran/module.c:978 +-#, fuzzy +-msgid "Unexpected EOF" +-msgstr "operand inesperat" +- +-#: fortran/module.c:1010 +-#, fuzzy +-msgid "Unexpected end of module in string constant" +-msgstr "conversió obsoleta d'una constant de cadena a \"%T\"" +- +-#: fortran/module.c:1064 +-#, fuzzy +-msgid "Integer overflow" +-msgstr "desbordament enter en l'expressió" +- +-#: fortran/module.c:1095 +-msgid "Name too long" +-msgstr "" +- +-#: fortran/module.c:1202 +-msgid "Bad name" +-msgstr "" +- +-#: fortran/module.c:1246 +-#, fuzzy +-msgid "Expected name" +-msgstr "operand inesperat" +- +-#: fortran/module.c:1249 +-#, fuzzy +-msgid "Expected left parenthesis" +-msgstr "operand inesperat" +- +-#: fortran/module.c:1252 +-msgid "Expected right parenthesis" +-msgstr "" +- +-#: fortran/module.c:1255 +-#, fuzzy +-msgid "Expected integer" +-msgstr "operand inesperat" +- +-#: fortran/module.c:1258 +-#, fuzzy +-msgid "Expected string" +-msgstr "operand inesperat" +- +-#: fortran/module.c:1282 +-msgid "find_enum(): Enum not found" +-msgstr "" +- +-#: fortran/module.c:1296 +-#, fuzzy, no-c-format +-msgid "Error writing modules file: %s" +-msgstr "%s:error escrivint al fitxer de sortida \"%s\"\n" +- +-#: fortran/module.c:1691 +-#, fuzzy +-msgid "Expected attribute bit name" +-msgstr "no és necessari l'atribut packed" +- +-#: fortran/module.c:2503 +-#, fuzzy +-msgid "Expected integer string" +-msgstr "falta la secció de punters" +- +-#: fortran/module.c:2507 +-msgid "Error converting integer" +-msgstr "" +- +-#: fortran/module.c:2529 +-#, fuzzy +-msgid "Expected real string" +-msgstr "constant de format sense acabar" +- +-#: fortran/module.c:2722 +-#, fuzzy +-msgid "Expected expression type" +-msgstr "expressió d'adreça inesperada" +- +-#: fortran/module.c:2776 +-#, fuzzy +-msgid "Bad operator" +-msgstr "operand no vàlid" +- +-#: fortran/module.c:2861 +-#, fuzzy +-msgid "Bad type in constant expression" +-msgstr "desbordament en la constant implícita" +- +-#: fortran/module.c:2898 +-#, no-c-format +-msgid "Namelist %s cannot be renamed by USE association to %s" +-msgstr "" +- +-#: fortran/module.c:3723 +-#, no-c-format +-msgid "Symbol '%s' referenced at %L not found in module '%s'" +-msgstr "" +- +-#: fortran/module.c:3730 +-#, no-c-format +-msgid "User operator '%s' referenced at %L not found in module '%s'" +-msgstr "" +- +-#: fortran/module.c:3735 +-#, no-c-format +-msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'" +-msgstr "" +- +-#: fortran/module.c:4213 +-#, fuzzy, no-c-format +-msgid "Can't open module file '%s' for writing at %C: %s" +-msgstr "no es pot obrir %s per a escriptura" +- +-#: fortran/module.c:4251 +-#, fuzzy, no-c-format +-msgid "Error writing module file '%s' for writing: %s" +-msgstr "%s: error escrivint el fitxer \"%s\": %s\n" +- +-#: fortran/module.c:4281 fortran/module.c:4363 +-#, no-c-format +-msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_C_BINDING." +-msgstr "" +- +-#: fortran/module.c:4394 +-#, no-c-format +-msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING" +-msgstr "" +- +-#: fortran/module.c:4416 +-#, no-c-format +-msgid "Symbol '%s' already declared" +-msgstr "" +- +-#: fortran/module.c:4471 +-#, no-c-format +-msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously" +-msgstr "" +- +-#: fortran/module.c:4484 +-#, no-c-format +-msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_FORTRAN_ENV" +-msgstr "" +- +-#: fortran/module.c:4492 +-#, no-c-format +-msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s" +-msgstr "" +- +-#: fortran/module.c:4520 +-#, no-c-format +-msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s" +-msgstr "" +- +-#: fortran/module.c:4536 +-#, no-c-format +-msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV" +-msgstr "" +- +-#: fortran/module.c:4569 +-#, no-c-format +-msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C" +-msgstr "" +- +-#: fortran/module.c:4577 +-#, no-c-format +-msgid "Fortran 2003: ISO_C_BINDING module at %C" +-msgstr "" +- +-#: fortran/module.c:4587 +-#, no-c-format +-msgid "Can't find an intrinsic module named '%s' at %C" +-msgstr "" +- +-#: fortran/module.c:4592 +-#, fuzzy, no-c-format +-msgid "Can't open module file '%s' for reading at %C: %s" +-msgstr "%s: no es pot obrir el fitxer \"%s\" per a lectura: %s\n" +- +-#: fortran/module.c:4600 +-#, no-c-format +-msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously" +-msgstr "" +- +-#: fortran/module.c:4615 +-#, fuzzy +-msgid "Unexpected end of module" +-msgstr "símbol PIC inesperat" +- +-#: fortran/module.c:4620 +-#, no-c-format +-msgid "File '%s' opened at %C is not a GFORTRAN module file" +-msgstr "" +- +-#: fortran/module.c:4630 +-#, no-c-format +-msgid "Can't USE the same module we're building!" +-msgstr "" +- +-#: fortran/openmp.c:134 fortran/openmp.c:499 +-#, no-c-format +-msgid "COMMON block /%s/ not found at %C" +-msgstr "" +- +-#: fortran/openmp.c:165 +-#, fuzzy, no-c-format +-msgid "Syntax error in OpenMP variable list at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/openmp.c:291 +-#, no-c-format +-msgid "%s is not INTRINSIC procedure name at %C" +-msgstr "" +- +-#: fortran/openmp.c:478 +-#, no-c-format +-msgid "Threadprivate variable at %C is an element of a COMMON block" +-msgstr "" +- +-#: fortran/openmp.c:518 +-#, no-c-format +-msgid "Syntax error in !$OMP THREADPRIVATE list at %C" +-msgstr "" +- +-#: fortran/openmp.c:696 fortran/resolve.c:5822 fortran/resolve.c:6133 +-#, no-c-format +-msgid "IF clause at %L requires a scalar LOGICAL expression" +-msgstr "" +- +-#: fortran/openmp.c:704 +-#, no-c-format +-msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression" +-msgstr "" +- +-#: fortran/openmp.c:712 +-#, no-c-format +-msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" +-msgstr "" +- +-#: fortran/openmp.c:726 fortran/openmp.c:736 fortran/openmp.c:743 +-#: fortran/openmp.c:753 +-#, no-c-format +-msgid "Symbol '%s' present on multiple clauses at %L" +-msgstr "" +- +-#: fortran/openmp.c:776 +-#, no-c-format +-msgid "Non-THREADPRIVATE object '%s' in COPYIN clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:779 +-#, no-c-format +-msgid "COPYIN clause object '%s' is ALLOCATABLE at %L" +-msgstr "" +- +-#: fortran/openmp.c:782 +-#, no-c-format +-msgid "COPYIN clause object '%s' at %L has ALLOCATABLE components" +-msgstr "" +- +-#: fortran/openmp.c:790 +-#, no-c-format +-msgid "Assumed size array '%s' in COPYPRIVATE clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:793 +-#, no-c-format +-msgid "COPYPRIVATE clause object '%s' is ALLOCATABLE at %L" +-msgstr "" +- +-#: fortran/openmp.c:796 +-#, no-c-format +-msgid "COPYPRIVATE clause object '%s' at %L has ALLOCATABLE components" +-msgstr "" +- +-#: fortran/openmp.c:804 +-#, no-c-format +-msgid "THREADPRIVATE object '%s' in SHARED clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:807 +-#, no-c-format +-msgid "Cray pointee '%s' in SHARED clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:815 +-#, no-c-format +-msgid "THREADPRIVATE object '%s' in %s clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:818 +-#, no-c-format +-msgid "Cray pointee '%s' in %s clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:823 +-#, no-c-format +-msgid "POINTER object '%s' in %s clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:826 +-#, no-c-format +-msgid "%s clause object '%s' is ALLOCATABLE at %L" +-msgstr "" +- +-#: fortran/openmp.c:831 +-#, no-c-format +-msgid "%s clause object '%s' has ALLOCATABLE components at %L" +-msgstr "" +- +-#: fortran/openmp.c:834 +-#, no-c-format +-msgid "Cray pointer '%s' in %s clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:838 +-#, no-c-format +-msgid "Assumed size array '%s' in %s clause at %L" +-msgstr "" +- +-#: fortran/openmp.c:843 +-#, no-c-format +-msgid "Variable '%s' in %s clause is used in NAMELIST statement at %L" +-msgstr "" +- +-#: fortran/openmp.c:852 +-#, no-c-format +-msgid "%c REDUCTION variable '%s' at %L must be of numeric type, got %s" +-msgstr "" +- +-#: fortran/openmp.c:863 +-#, no-c-format +-msgid "%s REDUCTION variable '%s' must be LOGICAL at %L" +-msgstr "" +- +-#: fortran/openmp.c:874 +-#, no-c-format +-msgid "%s REDUCTION variable '%s' must be INTEGER or REAL at %L" +-msgstr "" +- +-#: fortran/openmp.c:883 +-#, no-c-format +-msgid "%s REDUCTION variable '%s' must be INTEGER at %L" +-msgstr "" +- +-#: fortran/openmp.c:995 +-#, no-c-format +-msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L" +-msgstr "" +- +-#: fortran/openmp.c:1035 +-#, no-c-format +-msgid "!$OMP ATOMIC assignment operator must be +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L" +-msgstr "" +- +-#: fortran/openmp.c:1083 +-#, no-c-format +-msgid "!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L" +-msgstr "" +- +-#: fortran/openmp.c:1097 +-#, no-c-format +-msgid "!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op (expr) at %L" +-msgstr "" +- +-#: fortran/openmp.c:1129 +-#, no-c-format +-msgid "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %L" +-msgstr "" +- +-#: fortran/openmp.c:1153 +-#, no-c-format +-msgid "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments at %L" +-msgstr "" +- +-#: fortran/openmp.c:1160 +-#, no-c-format +-msgid "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L" +-msgstr "" +- +-#: fortran/openmp.c:1176 +-#, no-c-format +-msgid "!$OMP ATOMIC intrinsic arguments except one must not reference '%s' at %L" +-msgstr "" +- +-#: fortran/openmp.c:1179 +-#, no-c-format +-msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L" +-msgstr "" +- +-#: fortran/openmp.c:1185 +-#, no-c-format +-msgid "First or last !$OMP ATOMIC intrinsic argument must be '%s' at %L" +-msgstr "" +- +-#: fortran/openmp.c:1203 +-#, no-c-format +-msgid "!$OMP ATOMIC assignment must have an operator or intrinsic on right hand side at %L" +-msgstr "" +- +-#: fortran/openmp.c:1305 +-#, no-c-format +-msgid "!$OMP DO cannot be a DO WHILE or DO without loop control at %L" +-msgstr "" +- +-#: fortran/openmp.c:1311 +-#, no-c-format +-msgid "!$OMP DO iteration variable must be of type integer at %L" +-msgstr "" +- +-#: fortran/openmp.c:1315 +-#, no-c-format +-msgid "!$OMP DO iteration variable must not be THREADPRIVATE at %L" +-msgstr "" +- +-#: fortran/openmp.c:1323 +-#, no-c-format +-msgid "!$OMP DO iteration variable present on clause other than PRIVATE or LASTPRIVATE at %L" +-msgstr "" +- +-#: fortran/options.c:219 +-#, no-c-format +-msgid "Option -fwhole-program is not supported for Fortran" +-msgstr "" +- +-#: fortran/options.c:273 +-#, no-c-format +-msgid "Reading file '%s' as free form" +-msgstr "" +- +-#: fortran/options.c:283 +-#, no-c-format +-msgid "'-fd-lines-as-comments' has no effect in free form" +-msgstr "" +- +-#: fortran/options.c:286 +-#, no-c-format +-msgid "'-fd-lines-as-code' has no effect in free form" +-msgstr "" +- +-#: fortran/options.c:312 +-#, no-c-format +-msgid "Flag -fno-automatic overwrites -fmax-stack-var-size=%d" +-msgstr "" +- +-#: fortran/options.c:315 +-#, no-c-format +-msgid "Flag -fno-automatic overwrites -frecursive" +-msgstr "" +- +-#: fortran/options.c:317 +-#, no-c-format +-msgid "Flag -fno-automatic overwrites -frecursive implied by -fopenmp" +-msgstr "" +- +-#: fortran/options.c:321 +-#, no-c-format +-msgid "Flag -frecursive overwrites -fmax-stack-var-size=%d" +-msgstr "" +- +-#: fortran/options.c:325 +-#, no-c-format +-msgid "Flag -fmax-stack-var-size=%d overwrites -frecursive implied by -fopenmp" +-msgstr "" +- +-#: fortran/options.c:392 +-#, c-format +-msgid "gfortran: Only one -M option allowed\n" +-msgstr "" +- +-#: fortran/options.c:398 +-#, c-format +-msgid "gfortran: Directory required after -M\n" +-msgstr "" +- +-#: fortran/options.c:443 +-#, no-c-format +-msgid "Argument to -ffpe-trap is not valid: %s" +-msgstr "" +- +-#: fortran/options.c:573 +-#, no-c-format +-msgid "Fixed line length must be at least seven." +-msgstr "" +- +-#: fortran/options.c:591 +-#, no-c-format +-msgid "Free line length must be at least three." +-msgstr "" +- +-#: fortran/options.c:605 +-#, fuzzy, no-c-format +-msgid "-static-libgfortran is not supported in this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: fortran/options.c:649 +-#, no-c-format +-msgid "Maximum supported identifier length is %d" +-msgstr "" +- +-#: fortran/options.c:681 +-#, fuzzy, no-c-format +-msgid "Unrecognized option to -finit-logical: %s" +-msgstr "opció \"-%s\" no reconeguda" +- +-#: fortran/options.c:695 +-#, fuzzy, no-c-format +-msgid "Unrecognized option to -finit-real: %s" +-msgstr "opció \"-%s\" no reconeguda" +- +-#: fortran/options.c:711 +-#, no-c-format +-msgid "The value of n in -finit-character=n must be between 0 and 127" +-msgstr "" +- +-#: fortran/options.c:794 +-#, no-c-format +-msgid "Maximum subrecord length cannot exceed %d" +-msgstr "" +- +-#: fortran/parse.c:304 +-#, fuzzy, no-c-format +-msgid "Unclassifiable statement at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/parse.c:328 +-#, no-c-format +-msgid "OpenMP directives at %C may not appear in PURE or ELEMENTAL procedures" +-msgstr "" +- +-#: fortran/parse.c:406 +-#, no-c-format +-msgid "Unclassifiable OpenMP directive at %C" +-msgstr "" +- +-#: fortran/parse.c:445 fortran/parse.c:586 +-#, fuzzy, no-c-format +-msgid "Zero is not a valid statement label at %C" +-msgstr "\"%E\" no és un argument de patró vàlid" +- +-#: fortran/parse.c:452 fortran/parse.c:578 +-#, fuzzy, no-c-format +-msgid "Non-numeric character in statement label at %C" +-msgstr "Caràcter no numèric en %0 en el camp d'etiqueta [info -f g77 M LEX]" +- +-#: fortran/parse.c:464 fortran/parse.c:500 fortran/parse.c:626 +-#, no-c-format +-msgid "Semicolon at %C needs to be preceded by statement" +-msgstr "" +- +-#: fortran/parse.c:472 fortran/parse.c:638 +-#, no-c-format +-msgid "Ignoring statement label in empty statement at %C" +-msgstr "" +- +-#: fortran/parse.c:565 fortran/parse.c:605 +-#, no-c-format +-msgid "Bad continuation line at %C" +-msgstr "" +- +-#: fortran/parse.c:664 +-#, no-c-format +-msgid "Line truncated at %C" +-msgstr "" +- +-#: fortran/parse.c:841 +-#, no-c-format +-msgid "FORMAT statement at %L does not have a statement label" +-msgstr "" +- +-#: fortran/parse.c:913 +-msgid "arithmetic IF" +-msgstr "" +- +-#: fortran/parse.c:919 +-#, fuzzy +-msgid "attribute declaration" +-msgstr "declaració buida" +- +-#: fortran/parse.c:949 +-#, fuzzy +-msgid "data declaration" +-msgstr "declaració buida" +- +-#: fortran/parse.c:958 +-#, fuzzy +-msgid "derived type declaration" +-msgstr "declaració buida" +- +-#: fortran/parse.c:1037 +-msgid "block IF" +-msgstr "" +- +-#: fortran/parse.c:1046 +-msgid "implied END DO" +-msgstr "" +- +-#: fortran/parse.c:1119 +-msgid "assignment" +-msgstr "assignació" +- +-#: fortran/parse.c:1122 +-#, fuzzy +-msgid "pointer assignment" +-msgstr "assignació" +- +-#: fortran/parse.c:1131 +-msgid "simple IF" +-msgstr "" +- +-#: fortran/parse.c:1347 +-#, fuzzy, no-c-format +-msgid "Unexpected %s statement at %C" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/parse.c:1486 +-#, fuzzy, no-c-format +-msgid "%s statement at %C cannot follow %s statement at %L" +-msgstr "La declaració en %0 no és vàlida en el context establert per la declaració en %1" +- +-#: fortran/parse.c:1503 +-#, fuzzy, no-c-format +-msgid "Unexpected end of file in '%s'" +-msgstr "EOF inesperat mentre es llegia el fitxer de codi font %s.\n" +- +-#: fortran/parse.c:1558 +-#, no-c-format +-msgid "Fortran 2003: Derived type definition at %C without components" +-msgstr "" +- +-#: fortran/parse.c:1569 +-#, no-c-format +-msgid "PRIVATE statement in TYPE at %C must be inside a MODULE" +-msgstr "" +- +-#: fortran/parse.c:1577 +-#, no-c-format +-msgid "PRIVATE statement at %C must precede structure components" +-msgstr "" +- +-#: fortran/parse.c:1585 +-#, fuzzy, no-c-format +-msgid "Duplicate PRIVATE statement at %C" +-msgstr "Coma faltant en la declaració FORMAT en %0" +- +-#: fortran/parse.c:1597 +-#, no-c-format +-msgid "SEQUENCE statement at %C must precede structure components" +-msgstr "" +- +-#: fortran/parse.c:1604 +-#, no-c-format +-msgid "SEQUENCE attribute at %C already specified in TYPE statement" +-msgstr "" +- +-#: fortran/parse.c:1609 +-#, no-c-format +-msgid "Duplicate SEQUENCE statement at %C" +-msgstr "" +- +-#: fortran/parse.c:1700 +-#, no-c-format +-msgid "ENUM declaration at %C has no ENUMERATORS" +-msgstr "" +- +-#: fortran/parse.c:1778 +-#, no-c-format +-msgid "Unexpected %s statement in INTERFACE block at %C" +-msgstr "" +- +-#: fortran/parse.c:1804 +-#, no-c-format +-msgid "SUBROUTINE at %C does not belong in a generic function interface" +-msgstr "" +- +-#: fortran/parse.c:1808 +-#, no-c-format +-msgid "FUNCTION at %C does not belong in a generic subroutine interface" +-msgstr "" +- +-#: fortran/parse.c:1818 +-#, no-c-format +-msgid "Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type" +-msgstr "" +- +-#: fortran/parse.c:1849 +-#, no-c-format +-msgid "Unexpected %s statement at %C in INTERFACE body" +-msgstr "" +- +-#: fortran/parse.c:1863 +-#, no-c-format +-msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure" +-msgstr "" +- +-#: fortran/parse.c:1958 +-#, no-c-format +-msgid "%s statement must appear in a MODULE" +-msgstr "" +- +-#: fortran/parse.c:1965 +-#, no-c-format +-msgid "%s statement at %C follows another accessibility specification" +-msgstr "" +- +-#: fortran/parse.c:2015 +-#, fuzzy, no-c-format +-msgid "Bad kind expression for function '%s' at %L" +-msgstr "classe d'emmagatzematge no vàlida per a la funció \"%s\"" +- +-#: fortran/parse.c:2018 +-#, no-c-format +-msgid "The type for function '%s' at %L is not accessible" +-msgstr "" +- +-#: fortran/parse.c:2070 +-#, no-c-format +-msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE" +-msgstr "" +- +-#: fortran/parse.c:2091 +-#, no-c-format +-msgid "Unexpected %s statement in WHERE block at %C" +-msgstr "" +- +-#: fortran/parse.c:2150 +-#, no-c-format +-msgid "Unexpected %s statement in FORALL block at %C" +-msgstr "" +- +-#: fortran/parse.c:2201 +-#, fuzzy, no-c-format +-msgid "ELSE IF statement at %C cannot follow ELSE statement at %L" +-msgstr "La declaració PUBLIC o PRIVATE en %1 no es pot especificar juntament amb la declaració PUBLIC o PRIVATE en %0" +- +-#: fortran/parse.c:2219 +-#, no-c-format +-msgid "Duplicate ELSE statements at %L and %C" +-msgstr "" +- +-#: fortran/parse.c:2280 +-#, no-c-format +-msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C" +-msgstr "" +- +-#: fortran/parse.c:2338 +-#, no-c-format +-msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L" +-msgstr "" +- +-#: fortran/parse.c:2372 +-#, no-c-format +-msgid "End of nonblock DO statement at %C is within another block" +-msgstr "" +- +-#: fortran/parse.c:2381 +-#, no-c-format +-msgid "End of nonblock DO statement at %C is interwoven with another DO loop" +-msgstr "" +- +-#: fortran/parse.c:2430 +-#, no-c-format +-msgid "Statement label in ENDDO at %C doesn't match DO label" +-msgstr "" +- +-#: fortran/parse.c:2446 +-#, no-c-format +-msgid "named block DO at %L requires matching ENDDO name" +-msgstr "" +- +-#: fortran/parse.c:2702 +-#, no-c-format +-msgid "Name after !$omp critical and !$omp end critical does not match at %C" +-msgstr "" +- +-#: fortran/parse.c:2758 +-#, no-c-format +-msgid "%s statement at %C cannot terminate a non-block DO loop" +-msgstr "" +- +-#: fortran/parse.c:2943 +-#, no-c-format +-msgid "Contained procedure '%s' at %C is already ambiguous" +-msgstr "" +- +-#: fortran/parse.c:2993 +-#, no-c-format +-msgid "Unexpected %s statement in CONTAINS section at %C" +-msgstr "" +- +-#. This is valid in Fortran 2008. +-#: fortran/parse.c:3018 +-#, no-c-format +-msgid "Extension: CONTAINS statement without FUNCTION or SUBROUTINE statement at %C" +-msgstr "" +- +-#: fortran/parse.c:3089 +-#, fuzzy, no-c-format +-msgid "CONTAINS statement at %C is already in a contained program unit" +-msgstr "La declaració RETURN en %0 no és vàlida dintre d'una unitat de programa principal" +- +-#: fortran/parse.c:3138 +-#, no-c-format +-msgid "Global name '%s' at %L is already being used as a %s at %L" +-msgstr "" +- +-#: fortran/parse.c:3159 +-#, no-c-format +-msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L" +-msgstr "" +- +-#: fortran/parse.c:3185 +-#, no-c-format +-msgid "Unexpected %s statement in BLOCK DATA at %C" +-msgstr "" +- +-#: fortran/parse.c:3228 +-#, no-c-format +-msgid "Unexpected %s statement in MODULE at %C" +-msgstr "" +- +-#. If we see a duplicate main program, shut down. If the second +-#. instance is an implied main program, ie data decls or executable +-#. statements, we're in for lots of errors. +-#: fortran/parse.c:3416 +-#, no-c-format +-msgid "Two main PROGRAMs at %L and %C" +-msgstr "" +- +-#: fortran/primary.c:87 +-#, fuzzy, no-c-format +-msgid "Missing kind-parameter at %C" +-msgstr "falta parèntesi dret en la llista de paràmetres de macro" +- +-#: fortran/primary.c:210 +-#, fuzzy, no-c-format +-msgid "Integer kind %d at %C not available" +-msgstr "la funció cso no és disponible" +- +-#: fortran/primary.c:218 +-#, no-c-format +-msgid "Integer too big for its kind at %C. This check can be disabled with the option -fno-range-check" +-msgstr "" +- +-#: fortran/primary.c:247 +-#, no-c-format +-msgid "Extension: Hollerith constant at %C" +-msgstr "" +- +-#: fortran/primary.c:259 +-#, no-c-format +-msgid "Invalid Hollerith constant: %L must contain at least one character" +-msgstr "" +- +-#: fortran/primary.c:265 +-#, no-c-format +-msgid "Invalid Hollerith constant: Integer kind at %L should be default" +-msgstr "" +- +-#: fortran/primary.c:353 +-#, no-c-format +-msgid "Extension: Hexadecimal constant at %C uses non-standard syntax." +-msgstr "" +- +-#: fortran/primary.c:363 +-#, no-c-format +-msgid "Empty set of digits in BOZ constant at %C" +-msgstr "" +- +-#: fortran/primary.c:369 +-#, fuzzy, no-c-format +-msgid "Illegal character in BOZ constant at %C" +-msgstr "Constant de caràcter de longitud zero en %0" +- +-#: fortran/primary.c:391 +-#, no-c-format +-msgid "Extension: BOZ constant at %C uses non-standard postfix syntax." +-msgstr "" +- +-#: fortran/primary.c:417 +-#, no-c-format +-msgid "Integer too big for integer kind %i at %C" +-msgstr "" +- +-#: fortran/primary.c:517 +-#, fuzzy, no-c-format +-msgid "Missing exponent in real number at %C" +-msgstr "Falta un valor en %1 per a l'exponent de nombre real en %0" +- +-#: fortran/primary.c:573 +-#, no-c-format +-msgid "Real number at %C has a 'd' exponent and an explicit kind" +-msgstr "" +- +-#: fortran/primary.c:586 +-#, no-c-format +-msgid "Invalid real kind %d at %C" +-msgstr "" +- +-#: fortran/primary.c:600 +-#, no-c-format +-msgid "Real constant overflows its kind at %C" +-msgstr "" +- +-#: fortran/primary.c:605 +-#, no-c-format +-msgid "Real constant underflows its kind at %C" +-msgstr "" +- +-#: fortran/primary.c:697 +-#, fuzzy, no-c-format +-msgid "Syntax error in SUBSTRING specification at %C" +-msgstr "error de decodificació en l'especificació del mètode" +- +-#: fortran/primary.c:902 +-#, no-c-format +-msgid "Invalid kind %d for CHARACTER constant at %C" +-msgstr "" +- +-#: fortran/primary.c:923 +-#, fuzzy, no-c-format +-msgid "Unterminated character constant beginning at %C" +-msgstr "Constant de caràcter de longitud zero en %0" +- +-#: fortran/primary.c:1035 +-#, no-c-format +-msgid "Bad kind for logical constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1074 +-#, no-c-format +-msgid "Expected PARAMETER symbol in complex constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1080 +-#, no-c-format +-msgid "Numeric PARAMETER required in complex constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1086 +-#, no-c-format +-msgid "Scalar PARAMETER required in complex constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1090 +-#, no-c-format +-msgid "Fortran 2003: PARAMETER symbol in complex constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1120 +-#, no-c-format +-msgid "Error converting PARAMETER constant in complex constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1249 +-#, no-c-format +-msgid "Syntax error in COMPLEX constant at %C" +-msgstr "" +- +-#: fortran/primary.c:1430 +-#, no-c-format +-msgid "Keyword '%s' at %C has already appeared in the current argument list" +-msgstr "" +- +-#: fortran/primary.c:1494 +-#, fuzzy, no-c-format +-msgid "Extension: argument list function at %C" +-msgstr "massa arguments per a la funció \"%s\"" +- +-#: fortran/primary.c:1561 +-#, no-c-format +-msgid "Expected alternate return label at %C" +-msgstr "" +- +-#: fortran/primary.c:1579 +-#, no-c-format +-msgid "Missing keyword name in actual argument list at %C" +-msgstr "" +- +-#: fortran/primary.c:1624 +-#, fuzzy, no-c-format +-msgid "Syntax error in argument list at %C" +-msgstr "errore sintàctic en la llista de paràmetre de macro" +- +-#: fortran/primary.c:1708 +-#, no-c-format +-msgid "Expected structure component name at %C" +-msgstr "" +- +-#: fortran/primary.c:1961 +-#, no-c-format +-msgid "Too many components in structure constructor at %C" +-msgstr "" +- +-#: fortran/primary.c:1974 +-#, no-c-format +-msgid "Structure constructor for '%s' at %C has PRIVATE components" +-msgstr "" +- +-#: fortran/primary.c:1984 +-#, no-c-format +-msgid "Too few components in structure constructor at %C" +-msgstr "" +- +-#: fortran/primary.c:2002 +-#, no-c-format +-msgid "Syntax error in structure constructor at %C" +-msgstr "" +- +-#: fortran/primary.c:2086 +-#, no-c-format +-msgid "'%s' at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)" +-msgstr "" +- +-#: fortran/primary.c:2188 +-#, no-c-format +-msgid "Unexpected use of subroutine name '%s' at %C" +-msgstr "" +- +-#: fortran/primary.c:2219 +-#, no-c-format +-msgid "Statement function '%s' requires argument list at %C" +-msgstr "" +- +-#: fortran/primary.c:2222 +-#, fuzzy, no-c-format +-msgid "Function '%s' requires an argument list at %C" +-msgstr "\"union %s\" declarat dintre d'una llista de paràmetres" +- +-#: fortran/primary.c:2267 +-#, fuzzy, no-c-format +-msgid "Missing argument to '%s' at %C" +-msgstr "Falten arguments per a l'opció \"%s\"" +- +-#: fortran/primary.c:2408 +-#, fuzzy, no-c-format +-msgid "Missing argument list in function '%s' at %C" +-msgstr "Falten arguments per a l'opció \"%s\"" +- +-#: fortran/primary.c:2436 +-#, fuzzy, no-c-format +-msgid "Symbol at %C is not appropriate for an expression" +-msgstr "desbordament de coma flotant en l'expressió" +- +-#: fortran/primary.c:2504 +-#, no-c-format +-msgid "Assigning to PROTECTED variable at %C" +-msgstr "" +- +-#: fortran/primary.c:2520 +-#, no-c-format +-msgid "Named constant at %C in an EQUIVALENCE" +-msgstr "" +- +-#: fortran/primary.c:2543 +-#, no-c-format +-msgid "Expected VARIABLE at %C" +-msgstr "" +- +-#: fortran/resolve.c:120 +-#, fuzzy, no-c-format +-msgid "Alternate return specifier in elemental subroutine '%s' at %L is not allowed" +-msgstr "L'especificador de retorn alternatiu en %0 no és vàlid dintre d'una funció" +- +-#: fortran/resolve.c:124 +-#, fuzzy, no-c-format +-msgid "Alternate return specifier in function '%s' at %L is not allowed" +-msgstr "L'especificador de retorn alternatiu en %0 no és vàlid dintre d'una funció" +- +-#: fortran/resolve.c:137 +-#, no-c-format +-msgid "Dummy procedure '%s' of PURE procedure at %L must also be PURE" +-msgstr "" +- +-#: fortran/resolve.c:144 +-#, no-c-format +-msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure" +-msgstr "" +- +-#: fortran/resolve.c:157 fortran/resolve.c:1080 +-#, no-c-format +-msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:201 +-#, no-c-format +-msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)" +-msgstr "" +- +-#: fortran/resolve.c:206 +-#, no-c-format +-msgid "Argument '%s' of pure subroutine '%s' at %L must have its INTENT specified" +-msgstr "" +- +-#: fortran/resolve.c:215 +-#, no-c-format +-msgid "Argument '%s' of elemental procedure at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:222 +-#, no-c-format +-msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute" +-msgstr "" +- +-#: fortran/resolve.c:234 +-#, no-c-format +-msgid "Argument '%s' of statement function at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:244 +-#, no-c-format +-msgid "Character-valued argument '%s' of statement function at %L must have constant length" +-msgstr "" +- +-#: fortran/resolve.c:299 +-#, no-c-format +-msgid "Contained function '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#: fortran/resolve.c:302 +-#, no-c-format +-msgid "Result '%s' of contained function '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#: fortran/resolve.c:319 +-#, no-c-format +-msgid "Character-valued internal function '%s' at %L must not be assumed length" +-msgstr "" +- +-#: fortran/resolve.c:490 +-#, no-c-format +-msgid "Procedure %s at %L has entries with mismatched array specifications" +-msgstr "" +- +-#: fortran/resolve.c:516 +-#, no-c-format +-msgid "FUNCTION result %s can't be an array in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:520 +-#, no-c-format +-msgid "ENTRY result %s can't be an array in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:527 +-#, no-c-format +-msgid "FUNCTION result %s can't be a POINTER in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:531 +-#, no-c-format +-msgid "ENTRY result %s can't be a POINTER in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:569 +-#, no-c-format +-msgid "FUNCTION result %s can't be of type %s in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:574 +-#, no-c-format +-msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:643 +-#, no-c-format +-msgid "Derived type variable '%s' in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute" +-msgstr "" +- +-#: fortran/resolve.c:647 +-#, no-c-format +-msgid "Derived type variable '%s' in COMMON at %L has an ultimate component that is allocatable" +-msgstr "" +- +-#: fortran/resolve.c:651 +-#, no-c-format +-msgid "Derived type variable '%s' in COMMON at %L may not have default initializer" +-msgstr "" +- +-#: fortran/resolve.c:661 +-#, no-c-format +-msgid "COMMON block '%s' at %L is used as PARAMETER at %L" +-msgstr "" +- +-#: fortran/resolve.c:665 +-#, no-c-format +-msgid "COMMON block '%s' at %L is also an intrinsic procedure" +-msgstr "" +- +-#: fortran/resolve.c:669 +-#, no-c-format +-msgid "Fortran 2003: COMMON block '%s' at %L that is also a function result" +-msgstr "" +- +-#: fortran/resolve.c:674 +-#, no-c-format +-msgid "Fortran 2003: COMMON block '%s' at %L that is also a global procedure" +-msgstr "" +- +-#: fortran/resolve.c:736 +-#, no-c-format +-msgid "Components of structure constructor '%s' at %L are PRIVATE" +-msgstr "" +- +-#: fortran/resolve.c:756 +-#, no-c-format +-msgid "The rank of the element in the derived type constructor at %L does not match that of the component (%d/%d)" +-msgstr "" +- +-#: fortran/resolve.c:769 +-#, no-c-format +-msgid "The element in the derived type constructor at %L, for pointer component '%s', is %s but should be %s" +-msgstr "" +- +-#: fortran/resolve.c:786 +-#, no-c-format +-msgid "The element in the derived type constructor at %L, for pointer component '%s' should be a POINTER or a TARGET" +-msgstr "" +- +-#: fortran/resolve.c:913 +-#, no-c-format +-msgid "The upper bound in the last dimension must appear in the reference to the assumed size array '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:976 fortran/resolve.c:5434 fortran/resolve.c:6098 +-#, fuzzy, no-c-format +-msgid "Label %d referenced at %L is never defined" +-msgstr "L'etiqueta %A ja es va definir en %1 quan es va redefinir en %0" +- +-#: fortran/resolve.c:986 +-#, fuzzy, no-c-format +-msgid "'%s' at %L is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: fortran/resolve.c:1018 +-#, no-c-format +-msgid "Statement function '%s' at %L is not allowed as an actual argument" +-msgstr "" +- +-#: fortran/resolve.c:1026 +-#, no-c-format +-msgid "Intrinsic '%s' at %L is not allowed as an actual argument" +-msgstr "" +- +-#: fortran/resolve.c:1033 +-#, no-c-format +-msgid "Internal procedure '%s' is not allowed as an actual argument at %L" +-msgstr "" +- +-#: fortran/resolve.c:1039 +-#, no-c-format +-msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument at %L" +-msgstr "" +- +-#: fortran/resolve.c:1059 +-#, no-c-format +-msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L" +-msgstr "" +- +-#: fortran/resolve.c:1098 +-#, fuzzy, no-c-format +-msgid "Symbol '%s' at %L is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: fortran/resolve.c:1143 +-#, no-c-format +-msgid "By-value argument at %L is not of numeric type" +-msgstr "" +- +-#: fortran/resolve.c:1150 +-#, no-c-format +-msgid "By-value argument at %L cannot be an array or an array section" +-msgstr "" +- +-#: fortran/resolve.c:1164 +-#, fuzzy, no-c-format +-msgid "By-value argument at %L is not allowed in this context" +-msgstr "La declaració en %0 no és vàlida en aquest context" +- +-#: fortran/resolve.c:1176 +-#, no-c-format +-msgid "Passing internal procedure at %L by location not allowed" +-msgstr "" +- +-#: fortran/resolve.c:1293 +-#, no-c-format +-msgid "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (12.4.1.5)" +-msgstr "" +- +-#: fortran/resolve.c:1315 +-msgid "elemental procedure" +-msgstr "" +- +-#: fortran/resolve.c:1332 +-#, no-c-format +-msgid "Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' is a scalar, but another actual argument is an array" +-msgstr "" +- +-#: fortran/resolve.c:1466 +-#, no-c-format +-msgid "There is no specific function for the generic '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:1475 +-#, no-c-format +-msgid "Generic function '%s' at %L is not consistent with a specific intrinsic interface" +-msgstr "" +- +-#: fortran/resolve.c:1513 +-#, no-c-format +-msgid "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic" +-msgstr "" +- +-#: fortran/resolve.c:1559 +-#, no-c-format +-msgid "Unable to resolve the specific function '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:1615 fortran/resolve.c:8740 +-#, no-c-format +-msgid "Function '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#: fortran/resolve.c:1799 +-#, fuzzy, no-c-format +-msgid "Argument to '%s' at %L is not a variable" +-msgstr "l'argument de l'atribut \"%s\" no es una cadena constant" +- +-#: fortran/resolve.c:1871 +-#, no-c-format +-msgid "More actual than formal arguments in '%s' call at %L" +-msgstr "" +- +-#: fortran/resolve.c:1883 +-#, no-c-format +-msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer" +-msgstr "" +- +-#: fortran/resolve.c:1909 +-#, no-c-format +-msgid "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an array of zero size" +-msgstr "" +- +-#: fortran/resolve.c:1926 +-#, no-c-format +-msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" +-msgstr "" +- +-#: fortran/resolve.c:1936 +-#, no-c-format +-msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" +-msgstr "" +- +-#: fortran/resolve.c:1959 fortran/resolve.c:1998 +-#, no-c-format +-msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1" +-msgstr "" +- +-#. Case 1c, section 15.1.2.5, J3/04-007: an associated +-#. scalar pointer. +-#: fortran/resolve.c:1974 +-#, no-c-format +-msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER" +-msgstr "" +- +-#: fortran/resolve.c:1990 +-#, no-c-format +-msgid "Parameter '%s' to '%s' at %L must be a scalar" +-msgstr "" +- +-#. TODO: Update this error message to allow for procedure +-#. pointers once they are implemented. +-#: fortran/resolve.c:2012 +-#, no-c-format +-msgid "Parameter '%s' to '%s' at %L must be a procedure" +-msgstr "" +- +-#: fortran/resolve.c:2020 +-#, no-c-format +-msgid "Parameter '%s' to '%s' at %L must be BIND(C)" +-msgstr "" +- +-#: fortran/resolve.c:2062 +-#, fuzzy, no-c-format +-msgid "'%s' at %L is not a function" +-msgstr "\"%D\" no és una funció," +- +-#: fortran/resolve.c:2068 +-#, no-c-format +-msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L" +-msgstr "" +- +-#. Internal procedures are taken care of in resolve_contained_fntype. +-#: fortran/resolve.c:2111 +-#, no-c-format +-msgid "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument" +-msgstr "" +- +-#: fortran/resolve.c:2164 +-#, no-c-format +-msgid "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE construct" +-msgstr "" +- +-#: fortran/resolve.c:2213 +-#, no-c-format +-msgid "reference to non-PURE function '%s' at %L inside a FORALL %s" +-msgstr "" +- +-#: fortran/resolve.c:2220 +-#, no-c-format +-msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE procedure" +-msgstr "" +- +-#: fortran/resolve.c:2235 +-#, no-c-format +-msgid "Function '%s' at %L cannot call itself, as it is not RECURSIVE" +-msgstr "" +- +-#: fortran/resolve.c:2243 +-#, no-c-format +-msgid "Call to ENTRY '%s' at %L is recursive, but function '%s' is not declared as RECURSIVE" +-msgstr "" +- +-#: fortran/resolve.c:2285 +-#, no-c-format +-msgid "Subroutine call to '%s' in FORALL block at %L is not PURE" +-msgstr "" +- +-#: fortran/resolve.c:2288 +-#, no-c-format +-msgid "Subroutine call to '%s' at %L is not PURE" +-msgstr "" +- +-#: fortran/resolve.c:2351 +-#, no-c-format +-msgid "There is no specific subroutine for the generic '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:2360 +-#, no-c-format +-msgid "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine interface" +-msgstr "" +- +-#: fortran/resolve.c:2468 +-#, no-c-format +-msgid "Missing SHAPE parameter for call to %s at %L" +-msgstr "" +- +-#: fortran/resolve.c:2476 +-#, no-c-format +-msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array" +-msgstr "" +- +-#: fortran/resolve.c:2543 +-#, no-c-format +-msgid "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic" +-msgstr "" +- +-#: fortran/resolve.c:2587 +-#, no-c-format +-msgid "Unable to resolve the specific subroutine '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:2644 +-#, no-c-format +-msgid "'%s' at %L has a type, which is not consistent with the CALL at %L" +-msgstr "" +- +-#: fortran/resolve.c:2663 +-#, no-c-format +-msgid "SUBROUTINE '%s' at %L cannot call itself, as it is not RECURSIVE" +-msgstr "" +- +-#: fortran/resolve.c:2671 +-#, no-c-format +-msgid "Call to ENTRY '%s' at %L is recursive, but subroutine '%s' is not declared as RECURSIVE" +-msgstr "" +- +-#: fortran/resolve.c:2741 +-#, no-c-format +-msgid "Shapes for operands at %L and %L are not conformable" +-msgstr "" +- +-#: fortran/resolve.c:2792 +-#, c-format +-msgid "Invalid context for NULL() pointer at %%L" +-msgstr "" +- +-#: fortran/resolve.c:2808 +-#, c-format +-msgid "Operand of unary numeric operator '%s' at %%L is %s" +-msgstr "" +- +-#: fortran/resolve.c:2824 +-#, c-format +-msgid "Operands of binary numeric operator '%s' at %%L are %s/%s" +-msgstr "" +- +-#: fortran/resolve.c:2838 +-#, c-format +-msgid "Operands of string concatenation operator at %%L are %s/%s" +-msgstr "" +- +-#: fortran/resolve.c:2857 +-#, c-format +-msgid "Operands of logical operator '%s' at %%L are %s/%s" +-msgstr "" +- +-#: fortran/resolve.c:2871 +-#, c-format +-msgid "Operand of .not. operator at %%L is %s" +-msgstr "" +- +-#: fortran/resolve.c:2885 +-#, fuzzy +-msgid "COMPLEX quantities cannot be compared at %L" +-msgstr "els qualificadors \"%V\" no es poden aplicar a \"%T\"" +- +-#: fortran/resolve.c:2913 +-#, c-format +-msgid "Logicals at %%L must be compared with %s instead of %s" +-msgstr "" +- +-#: fortran/resolve.c:2919 +-#, c-format +-msgid "Operands of comparison operator '%s' at %%L are %s/%s" +-msgstr "" +- +-#: fortran/resolve.c:2927 +-#, c-format +-msgid "Unknown operator '%s' at %%L" +-msgstr "" +- +-#: fortran/resolve.c:2929 +-#, c-format +-msgid "Operand of user operator '%s' at %%L is %s" +-msgstr "" +- +-#: fortran/resolve.c:2932 +-#, c-format +-msgid "Operands of user operator '%s' at %%L are %s/%s" +-msgstr "" +- +-#: fortran/resolve.c:3018 +-#, c-format +-msgid "Inconsistent ranks for operator at %%L and %%L" +-msgstr "" +- +-#: fortran/resolve.c:3212 +-#, no-c-format +-msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3220 +-#, no-c-format +-msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3239 +-#, no-c-format +-msgid "Illegal stride of zero at %L" +-msgstr "" +- +-#: fortran/resolve.c:3256 +-#, no-c-format +-msgid "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3264 +-#, no-c-format +-msgid "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3280 +-#, no-c-format +-msgid "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3289 +-#, no-c-format +-msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d" +-msgstr "" +- +-#: fortran/resolve.c:3328 +-#, no-c-format +-msgid "Rightmost upper bound of assumed size array section not specified at %L" +-msgstr "" +- +-#: fortran/resolve.c:3338 +-#, no-c-format +-msgid "Rank mismatch in array reference at %L (%d/%d)" +-msgstr "" +- +-#: fortran/resolve.c:3366 +-#, no-c-format +-msgid "Array index at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:3372 +-#, no-c-format +-msgid "Array index at %L must be of INTEGER type" +-msgstr "" +- +-#: fortran/resolve.c:3378 +-#, no-c-format +-msgid "Extension: REAL array index at %L" +-msgstr "" +- +-#: fortran/resolve.c:3408 +-#, no-c-format +-msgid "Argument dim at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:3414 +-#, no-c-format +-msgid "Argument dim at %L must be of INTEGER type" +-msgstr "" +- +-#: fortran/resolve.c:3534 +-#, no-c-format +-msgid "Array index at %L is an array of rank %d" +-msgstr "" +- +-#: fortran/resolve.c:3571 +-#, no-c-format +-msgid "Substring start index at %L must be of type INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:3578 +-#, no-c-format +-msgid "Substring start index at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:3587 +-#, no-c-format +-msgid "Substring start index at %L is less than one" +-msgstr "" +- +-#: fortran/resolve.c:3600 +-#, no-c-format +-msgid "Substring end index at %L must be of type INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:3607 +-#, fuzzy, no-c-format +-msgid "Substring end index at %L must be scalar" +-msgstr "El punt d'inici/fi de la subcadena en %0 està fora del rang definit" +- +-#: fortran/resolve.c:3617 +-#, no-c-format +-msgid "Substring end index at %L exceeds the string length" +-msgstr "" +- +-#: fortran/resolve.c:3755 +-#, no-c-format +-msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L" +-msgstr "" +- +-#: fortran/resolve.c:3762 +-#, no-c-format +-msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L" +-msgstr "" +- +-#: fortran/resolve.c:3781 +-#, no-c-format +-msgid "Two or more part references with nonzero rank must not be specified at %L" +-msgstr "" +- +-#: fortran/resolve.c:3956 +-#, no-c-format +-msgid "Variable '%s', used in a specification expression, is referenced at %L before the ENTRY statement in which it is a parameter" +-msgstr "" +- +-#: fortran/resolve.c:3961 +-#, no-c-format +-msgid "Variable '%s' is used at %L before the ENTRY statement in which it is a parameter" +-msgstr "" +- +-#: fortran/resolve.c:4238 +-#, no-c-format +-msgid "%s at %L must be a scalar" +-msgstr "" +- +-#: fortran/resolve.c:4248 +-#, no-c-format +-msgid "Deleted feature: %s at %L must be integer" +-msgstr "" +- +-#: fortran/resolve.c:4252 fortran/resolve.c:4259 +-#, no-c-format +-msgid "%s at %L must be INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:4279 +-#, no-c-format +-msgid "Cannot assign to loop variable in PURE procedure at %L" +-msgstr "" +- +-#: fortran/resolve.c:4303 +-#, no-c-format +-msgid "Step expression in DO loop at %L cannot be zero" +-msgstr "" +- +-#: fortran/resolve.c:4378 +-#, no-c-format +-msgid "FORALL index-name at %L must be a scalar INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:4383 +-#, no-c-format +-msgid "FORALL start expression at %L must be a scalar INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:4390 +-#, no-c-format +-msgid "FORALL end expression at %L must be a scalar INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:4398 +-#, no-c-format +-msgid "FORALL stride expression at %L must be a scalar %s" +-msgstr "" +- +-#: fortran/resolve.c:4403 +-#, no-c-format +-msgid "FORALL stride expression at %L cannot be zero" +-msgstr "" +- +-#: fortran/resolve.c:4419 +-#, no-c-format +-msgid "FORALL index '%s' may not appear in triplet specification at %L" +-msgstr "" +- +-#: fortran/resolve.c:4499 +-#, no-c-format +-msgid "Expression in DEALLOCATE statement at %L must be ALLOCATABLE or a POINTER" +-msgstr "" +- +-#: fortran/resolve.c:4506 +-#, no-c-format +-msgid "Cannot deallocate INTENT(IN) variable '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:4675 +-#, no-c-format +-msgid "The STAT variable '%s' in an ALLOCATE statement must not be allocated in the same statement at %L" +-msgstr "" +- +-#: fortran/resolve.c:4711 +-#, no-c-format +-msgid "Expression in ALLOCATE statement at %L must be ALLOCATABLE or a POINTER" +-msgstr "" +- +-#: fortran/resolve.c:4719 +-#, no-c-format +-msgid "Cannot allocate INTENT(IN) variable '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:4743 +-#, fuzzy, no-c-format +-msgid "Array specification required in ALLOCATE statement at %L" +-msgstr "Falta l'especificador %A en la declaració en %0" +- +-#: fortran/resolve.c:4773 +-#, fuzzy, no-c-format +-msgid "Bad array specification in ALLOCATE statement at %L" +-msgstr "No hi ha definició d'etiqueta per a la declaració FORMAT en %0" +- +-#: fortran/resolve.c:4791 +-#, no-c-format +-msgid "'%s' must not appear an the array specification at %L in the same ALLOCATE statement where it is itself allocated" +-msgstr "" +- +-#. The cases overlap, or they are the same +-#. element in the list. Either way, we must +-#. issue an error and get the next case from P. +-#. FIXME: Sort P and Q by line number. +-#: fortran/resolve.c:4949 +-#, no-c-format +-msgid "CASE label at %L overlaps with CASE label at %L" +-msgstr "" +- +-#: fortran/resolve.c:5000 +-#, fuzzy, no-c-format +-msgid "Expression in CASE statement at %L must be of type %s" +-msgstr "la declaració de l'expressió té tipus de dada incompleta" +- +-#: fortran/resolve.c:5011 +-#, no-c-format +-msgid "Expression in CASE statement at %L must be kind %d" +-msgstr "" +- +-#: fortran/resolve.c:5023 +-#, no-c-format +-msgid "Expression in CASE statement at %L must be scalar" +-msgstr "" +- +-#: fortran/resolve.c:5069 +-#, no-c-format +-msgid "Selection expression in computed GOTO statement at %L must be a scalar integer expression" +-msgstr "" +- +-#: fortran/resolve.c:5087 +-#, no-c-format +-msgid "Argument of SELECT statement at %L cannot be %s" +-msgstr "" +- +-#: fortran/resolve.c:5096 +-#, no-c-format +-msgid "Argument of SELECT statement at %L must be a scalar expression" +-msgstr "" +- +-#: fortran/resolve.c:5161 +-#, no-c-format +-msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L" +-msgstr "" +- +-#: fortran/resolve.c:5187 +-#, no-c-format +-msgid "Logical range in CASE statement at %L is not allowed" +-msgstr "" +- +-#: fortran/resolve.c:5199 +-#, no-c-format +-msgid "constant logical value in CASE statement is repeated at %L" +-msgstr "" +- +-#: fortran/resolve.c:5213 +-#, no-c-format +-msgid "Range specification at %L can never be matched" +-msgstr "" +- +-#: fortran/resolve.c:5316 +-#, no-c-format +-msgid "Logical SELECT CASE block at %L has more that two cases" +-msgstr "" +- +-#: fortran/resolve.c:5354 +-#, no-c-format +-msgid "Data transfer element at %L cannot have POINTER components" +-msgstr "" +- +-#: fortran/resolve.c:5361 +-#, no-c-format +-msgid "Data transfer element at %L cannot have ALLOCATABLE components" +-msgstr "" +- +-#: fortran/resolve.c:5368 +-#, no-c-format +-msgid "Data transfer element at %L cannot have PRIVATE components" +-msgstr "" +- +-#: fortran/resolve.c:5377 +-#, no-c-format +-msgid "Data transfer element at %L cannot be a full reference to an assumed-size array" +-msgstr "" +- +-#: fortran/resolve.c:5441 +-#, fuzzy, no-c-format +-msgid "Statement at %L is not a valid branch target statement for the branch statement at %L" +-msgstr "La declaració en %0 no és vàlida en el context establert per la declaració en %1" +- +-#: fortran/resolve.c:5450 +-#, no-c-format +-msgid "Branch at %L causes an infinite loop" +-msgstr "" +- +-#. The label is not in an enclosing block, so illegal. This was +-#. allowed in Fortran 66, so we allow it as extension. No +-#. further checks are necessary in this case. +-#: fortran/resolve.c:5463 +-#, fuzzy, no-c-format +-msgid "Label at %L is not in the same block as the GOTO statement at %L" +-msgstr "La declaració en %0 no és vàlida en el context establert per la declaració en %1" +- +-#: fortran/resolve.c:5478 fortran/resolve.c:5492 +-#, no-c-format +-msgid "Deleted feature: GOTO at %L jumps to END of construct at %L" +-msgstr "" +- +-#: fortran/resolve.c:5569 +-#, no-c-format +-msgid "WHERE mask at %L has inconsistent shape" +-msgstr "" +- +-#: fortran/resolve.c:5585 +-#, no-c-format +-msgid "WHERE assignment target at %L has inconsistent shape" +-msgstr "" +- +-#: fortran/resolve.c:5600 fortran/resolve.c:5682 +-#, no-c-format +-msgid "Unsupported statement inside WHERE at %L" +-msgstr "" +- +-#: fortran/resolve.c:5631 +-#, no-c-format +-msgid "Assignment to a FORALL index variable at %L" +-msgstr "" +- +-#: fortran/resolve.c:5639 +-#, no-c-format +-msgid "The FORALL with index '%s' cause more than one assignment to this object at %L" +-msgstr "" +- +-#: fortran/resolve.c:5774 +-#, no-c-format +-msgid "An outer FORALL construct already has an index with this name %L" +-msgstr "" +- +-#: fortran/resolve.c:5830 +-#, no-c-format +-msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array" +-msgstr "" +- +-#: fortran/resolve.c:5890 +-#, no-c-format +-msgid "Subroutine '%s' called instead of assignment at %L must be PURE" +-msgstr "" +- +-#: fortran/resolve.c:5927 +-#, no-c-format +-msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L" +-msgstr "" +- +-#: fortran/resolve.c:5950 +-#, no-c-format +-msgid "Cannot assign to variable '%s' in PURE procedure at %L" +-msgstr "" +- +-#: fortran/resolve.c:5962 +-#, no-c-format +-msgid "The impure variable at %L is assigned to a derived type variable with a POINTER component in a PURE procedure (12.6)" +-msgstr "" +- +-#: fortran/resolve.c:6066 +-#, no-c-format +-msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable" +-msgstr "" +- +-#: fortran/resolve.c:6069 +-#, no-c-format +-msgid "Variable '%s' has not been assigned a target label at %L" +-msgstr "" +- +-#: fortran/resolve.c:6080 +-#, no-c-format +-msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier" +-msgstr "" +- +-#: fortran/resolve.c:6106 +-#, no-c-format +-msgid "ASSIGN statement at %L requires a scalar default INTEGER variable" +-msgstr "" +- +-#: fortran/resolve.c:6121 +-#, no-c-format +-msgid "Arithmetic IF statement at %L requires a numeric expression" +-msgstr "" +- +-#: fortran/resolve.c:6163 +-#, no-c-format +-msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression" +-msgstr "" +- +-#: fortran/resolve.c:6170 +-#, no-c-format +-msgid "STAT tag in ALLOCATE statement at %L must be of type INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:6182 +-#, no-c-format +-msgid "STAT tag in DEALLOCATE statement at %L must be of type INTEGER" +-msgstr "" +- +-#: fortran/resolve.c:6247 +-#, no-c-format +-msgid "FORALL mask clause at %L requires a LOGICAL expression" +-msgstr "" +- +-#: fortran/resolve.c:6317 fortran/resolve.c:6373 +-#, no-c-format +-msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L" +-msgstr "" +- +-#. Common block names match but binding labels do not. +-#: fortran/resolve.c:6338 +-#, no-c-format +-msgid "Binding label '%s' for common block '%s' at %L does not match the binding label '%s' for common block '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:6385 +-#, no-c-format +-msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L" +-msgstr "" +- +-#. Make sure global procedures don't collide with anything. +-#: fortran/resolve.c:6437 +-#, no-c-format +-msgid "Binding label '%s' at %L collides with the global entity '%s' at %L" +-msgstr "" +- +-#. Make sure procedures in interface bodies don't collide. +-#: fortran/resolve.c:6450 +-#, no-c-format +-msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:6463 +-#, no-c-format +-msgid "Binding label '%s' at %L collides with global entity '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:6540 +-#, no-c-format +-msgid "CHARACTER variable has zero length at %L" +-msgstr "" +- +-#: fortran/resolve.c:6828 +-#, no-c-format +-msgid "Allocatable array '%s' at %L must have a deferred shape" +-msgstr "" +- +-#: fortran/resolve.c:6831 +-#, no-c-format +-msgid "Scalar object '%s' at %L may not be ALLOCATABLE" +-msgstr "" +- +-#: fortran/resolve.c:6838 +-#, no-c-format +-msgid "Array pointer '%s' at %L must have a deferred shape" +-msgstr "" +- +-#: fortran/resolve.c:6849 +-#, no-c-format +-msgid "Array '%s' at %L cannot have a deferred shape" +-msgstr "" +- +-#: fortran/resolve.c:6878 +-#, no-c-format +-msgid "The type '%s' cannot be host associated at %L because it is blocked by an incompatible object of the same name declared at %L" +-msgstr "" +- +-#: fortran/resolve.c:6901 +-#, no-c-format +-msgid "Object '%s' at %L must have the SAVE attribute for default initialization of a component" +-msgstr "" +- +-#. The shape of a main program or module array needs to be +-#. constant. +-#: fortran/resolve.c:6948 +-#, no-c-format +-msgid "The module or main program array '%s' at %L must have constant shape" +-msgstr "" +- +-#: fortran/resolve.c:6961 +-#, no-c-format +-msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER" +-msgstr "" +- +-#: fortran/resolve.c:6980 +-#, no-c-format +-msgid "'%s' at %L must have constant character length in this context" +-msgstr "" +- +-#: fortran/resolve.c:7012 +-#, fuzzy, no-c-format +-msgid "Allocatable '%s' at %L cannot have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7015 +-#, fuzzy, no-c-format +-msgid "External '%s' at %L cannot have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7019 +-#, fuzzy, no-c-format +-msgid "Dummy '%s' at %L cannot have an initializer" +-msgstr "\"%s\" té \"extern\" i assignador de valor inicial al mateix temps" +- +-#: fortran/resolve.c:7022 +-#, fuzzy, no-c-format +-msgid "Intrinsic '%s' at %L cannot have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7025 +-#, fuzzy, no-c-format +-msgid "Function result '%s' at %L cannot have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7028 +-#, no-c-format +-msgid "Automatic array '%s' at %L cannot have an initializer" +-msgstr "" +- +-#: fortran/resolve.c:7051 +-#, no-c-format +-msgid "Although not referenced, '%s' at %L has ambiguous interfaces" +-msgstr "" +- +-#: fortran/resolve.c:7070 +-#, no-c-format +-msgid "Character-valued statement function '%s' at %L must have constant length" +-msgstr "" +- +-#: fortran/resolve.c:7078 +-#, no-c-format +-msgid "Automatic character length function '%s' at %L must have an explicit interface" +-msgstr "" +- +-#: fortran/resolve.c:7103 +-#, no-c-format +-msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L" +-msgstr "" +- +-#: fortran/resolve.c:7126 fortran/resolve.c:7151 +-#, no-c-format +-msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE" +-msgstr "" +- +-#: fortran/resolve.c:7168 +-#, fuzzy, no-c-format +-msgid "Function '%s' at %L cannot have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7177 +-#, fuzzy, no-c-format +-msgid "External object '%s' at %L may not have an initializer" +-msgstr "no existeix el camp \"%D\" en el union que s'està inicialitzant" +- +-#: fortran/resolve.c:7185 +-#, no-c-format +-msgid "ELEMENTAL function '%s' at %L must have a scalar result" +-msgstr "" +- +-#: fortran/resolve.c:7206 +-#, no-c-format +-msgid "CHARACTER(*) function '%s' at %L cannot be array-valued" +-msgstr "" +- +-#: fortran/resolve.c:7210 +-#, no-c-format +-msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued" +-msgstr "" +- +-#: fortran/resolve.c:7214 +-#, no-c-format +-msgid "CHARACTER(*) function '%s' at %L cannot be pure" +-msgstr "" +- +-#: fortran/resolve.c:7218 +-#, no-c-format +-msgid "CHARACTER(*) function '%s' at %L cannot be recursive" +-msgstr "" +- +-#: fortran/resolve.c:7227 +-#, no-c-format +-msgid "CHARACTER(*) function '%s' at %L is obsolescent in fortran 95" +-msgstr "" +- +-#: fortran/resolve.c:7299 +-#, no-c-format +-msgid "Character length of component '%s' needs to be a constant specification expression at %L" +-msgstr "" +- +-#: fortran/resolve.c:7314 +-#, no-c-format +-msgid "The component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L" +-msgstr "" +- +-#: fortran/resolve.c:7324 +-#, no-c-format +-msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute" +-msgstr "" +- +-#: fortran/resolve.c:7334 +-#, no-c-format +-msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared" +-msgstr "" +- +-#: fortran/resolve.c:7352 +-#, no-c-format +-msgid "Component '%s' of '%s' at %L must have constant array bounds" +-msgstr "" +- +-#: fortran/resolve.c:7395 +-#, no-c-format +-msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7405 +-#, no-c-format +-msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7418 +-#, no-c-format +-msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7430 +-#, no-c-format +-msgid "NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7439 +-#, no-c-format +-msgid "NAMELIST array object '%s' must have constant shape in namelist '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7451 +-#, no-c-format +-msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE components" +-msgstr "" +- +-#: fortran/resolve.c:7459 +-#, no-c-format +-msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components" +-msgstr "" +- +-#: fortran/resolve.c:7485 +-#, no-c-format +-msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L" +-msgstr "" +- +-#: fortran/resolve.c:7504 +-#, no-c-format +-msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape" +-msgstr "" +- +-#: fortran/resolve.c:7515 +-#, no-c-format +-msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type" +-msgstr "" +- +-#: fortran/resolve.c:7526 +-#, fuzzy, no-c-format +-msgid "Incompatible derived type in PARAMETER at %L" +-msgstr "tipus incompatibles en %s" +- +-#: fortran/resolve.c:7597 +-#, no-c-format +-msgid "Interface '%s' of procedure '%s' at %L must be explicit" +-msgstr "" +- +-#: fortran/resolve.c:7622 +-#, no-c-format +-msgid "Type specified for intrinsic function '%s' at %L is ignored" +-msgstr "" +- +-#: fortran/resolve.c:7629 +-#, no-c-format +-msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier" +-msgstr "" +- +-#: fortran/resolve.c:7636 +-#, no-c-format +-msgid "Intrinsic '%s' at %L does not exist" +-msgstr "" +- +-#: fortran/resolve.c:7676 +-#, no-c-format +-msgid "Assumed size array at %L must be a dummy argument" +-msgstr "" +- +-#: fortran/resolve.c:7679 +-#, no-c-format +-msgid "Assumed shape array at %L must be a dummy argument" +-msgstr "" +- +-#: fortran/resolve.c:7691 +-#, no-c-format +-msgid "Symbol at %L is not a DUMMY variable" +-msgstr "" +- +-#: fortran/resolve.c:7697 +-#, no-c-format +-msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument" +-msgstr "" +- +-#: fortran/resolve.c:7707 +-#, no-c-format +-msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length" +-msgstr "" +- +-#: fortran/resolve.c:7716 +-#, no-c-format +-msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one" +-msgstr "" +- +-#: fortran/resolve.c:7742 +-#, no-c-format +-msgid "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block nor declared at the module level scope" +-msgstr "" +- +-#: fortran/resolve.c:7795 +-#, no-c-format +-msgid "The derived type '%s' at %L is of type '%s', which has not been defined" +-msgstr "" +- +-#: fortran/resolve.c:7811 +-#, no-c-format +-msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'" +-msgstr "" +- +-#: fortran/resolve.c:7830 +-#, no-c-format +-msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer" +-msgstr "" +- +-#: fortran/resolve.c:7889 +-#, no-c-format +-msgid "Threadprivate at %L isn't SAVEd" +-msgstr "" +- +-#: fortran/resolve.c:7967 +-#, no-c-format +-msgid "BLOCK DATA element '%s' at %L must be in COMMON" +-msgstr "" +- +-#: fortran/resolve.c:8011 +-#, no-c-format +-msgid "Nonconstant array section at %L in DATA statement" +-msgstr "" +- +-#: fortran/resolve.c:8024 +-#, no-c-format +-msgid "DATA statement at %L has more variables than values" +-msgstr "" +- +-#: fortran/resolve.c:8118 +-#, no-c-format +-msgid "iterator start at %L does not simplify" +-msgstr "" +- +-#: fortran/resolve.c:8125 +-#, no-c-format +-msgid "iterator end at %L does not simplify" +-msgstr "" +- +-#: fortran/resolve.c:8132 +-#, no-c-format +-msgid "iterator step at %L does not simplify" +-msgstr "" +- +-#: fortran/resolve.c:8258 +-#, no-c-format +-msgid "DATA statement at %L has more values than variables" +-msgstr "" +- +-#: fortran/resolve.c:8349 +-#, fuzzy, no-c-format +-msgid "Label %d at %L defined but not used" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/resolve.c:8354 +-#, fuzzy, no-c-format +-msgid "Label %d at %L defined but cannot be used" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: fortran/resolve.c:8439 +-#, no-c-format +-msgid "Derived type variable '%s' at %L must have SEQUENCE attribute to be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8448 +-#, no-c-format +-msgid "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8465 +-#, no-c-format +-msgid "Derived type variable '%s' at %L with pointer component(s) cannot be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8570 +-#, no-c-format +-msgid "Syntax error in EQUIVALENCE statement at %L" +-msgstr "" +- +-#: fortran/resolve.c:8585 +-#, no-c-format +-msgid "Either all or none of the objects in the EQUIVALENCE set at %L shall have the PROTECTED attribute" +-msgstr "" +- +-#: fortran/resolve.c:8597 +-#, no-c-format +-msgid "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure procedure '%s'" +-msgstr "" +- +-#: fortran/resolve.c:8606 +-#, no-c-format +-msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8685 +-#, no-c-format +-msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8696 +-#, no-c-format +-msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object" +-msgstr "" +- +-#: fortran/resolve.c:8707 +-#, no-c-format +-msgid "Substring at %L has length zero" +-msgstr "" +- +-#: fortran/resolve.c:8750 +-#, no-c-format +-msgid "PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'" +-msgstr "" +- +-#: fortran/resolve.c:8762 +-#, no-c-format +-msgid "ENTRY '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#: fortran/resolve.c:8788 +-#, no-c-format +-msgid "User operator procedure '%s' at %L must be a FUNCTION" +-msgstr "" +- +-#: fortran/resolve.c:8795 +-#, no-c-format +-msgid "User operator procedure '%s' at %L cannot be assumed character length" +-msgstr "" +- +-#: fortran/resolve.c:8801 +-#, no-c-format +-msgid "User operator procedure '%s' at %L must have at least one argument" +-msgstr "" +- +-#: fortran/resolve.c:8811 +-#, no-c-format +-msgid "First argument of operator interface at %L cannot be optional" +-msgstr "" +- +-#: fortran/resolve.c:8823 +-#, no-c-format +-msgid "Second argument of operator interface at %L cannot be optional" +-msgstr "" +- +-#: fortran/resolve.c:8827 +-#, no-c-format +-msgid "Operator interface at %L must have, at most, two arguments" +-msgstr "" +- +-#: fortran/resolve.c:8867 +-#, no-c-format +-msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE" +-msgstr "" +- +-#: fortran/scanner.c:526 +-#, no-c-format +-msgid "!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line" +-msgstr "" +- +-#: fortran/scanner.c:816 fortran/scanner.c:937 +-#, no-c-format +-msgid "Limit of %d continuations exceeded in statement at %C" +-msgstr "" +- +-#: fortran/scanner.c:861 +-#, fuzzy, no-c-format +-msgid "Missing '&' in continued character constant at %C" +-msgstr "Constant de caràcter de longitud zero en %0" +- +-#: fortran/scanner.c:1071 +-#, no-c-format +-msgid "Nonconforming tab character at %C" +-msgstr "" +- +-#: fortran/scanner.c:1153 fortran/scanner.c:1156 +-#, no-c-format +-msgid "'&' not allowed by itself in line %d" +-msgstr "" +- +-#: fortran/scanner.c:1189 +-#, no-c-format +-msgid "Nonconforming tab character in column 1 of line %d" +-msgstr "" +- +-#: fortran/scanner.c:1387 +-#, no-c-format +-msgid "%s:%d: file %s left but not entered" +-msgstr "" +- +-#: fortran/scanner.c:1419 +-#, fuzzy, no-c-format +-msgid "%s:%d: Illegal preprocessor directive" +-msgstr "%s en directiva de preprocessament" +- +-#: fortran/scanner.c:1514 +-#, no-c-format +-msgid "File '%s' is being included recursively" +-msgstr "" +- +-#: fortran/scanner.c:1529 +-#, fuzzy, no-c-format +-msgid "Can't open file '%s'" +-msgstr "no es pot obrir el fitxer \"%s\"" +- +-#: fortran/scanner.c:1538 +-#, fuzzy, no-c-format +-msgid "Can't open included file '%s'" +-msgstr "no es pot tancar el fitxer temporal" +- +-#: fortran/scanner.c:1676 +-#, fuzzy, c-format +-msgid "%s:%3d %s\n" +-msgstr "%s: %s" +- +-#: fortran/simplify.c:82 +-#, no-c-format +-msgid "Result of %s overflows its kind at %L" +-msgstr "" +- +-#: fortran/simplify.c:87 +-#, no-c-format +-msgid "Result of %s underflows its kind at %L" +-msgstr "" +- +-#: fortran/simplify.c:92 +-#, no-c-format +-msgid "Result of %s is NaN at %L" +-msgstr "" +- +-#: fortran/simplify.c:96 +-#, no-c-format +-msgid "Result of %s gives range error for its kind at %L" +-msgstr "" +- +-#: fortran/simplify.c:119 +-#, no-c-format +-msgid "KIND parameter of %s at %L must be an initialization expression" +-msgstr "" +- +-#: fortran/simplify.c:127 +-#, fuzzy, no-c-format +-msgid "Invalid KIND parameter of %s at %L" +-msgstr "el paràmetre \"%s\" no és vàlid" +- +-#: fortran/simplify.c:282 +-#, no-c-format +-msgid "Argument of ACHAR function at %L outside of range [0,127]" +-msgstr "" +- +-#: fortran/simplify.c:307 +-#, no-c-format +-msgid "Argument of ACOS at %L must be between -1 and 1" +-msgstr "" +- +-#: fortran/simplify.c:329 +-#, no-c-format +-msgid "Argument of ACOSH at %L must not be less than 1" +-msgstr "" +- +-#: fortran/simplify.c:546 +-#, no-c-format +-msgid "Argument of ASIN at %L must be between -1 and 1" +-msgstr "" +- +-#: fortran/simplify.c:602 +-#, no-c-format +-msgid "Argument of ATANH at %L must be inside the range -1 to 1" +-msgstr "" +- +-#: fortran/simplify.c:627 +-#, no-c-format +-msgid "If first argument of ATAN2 %L is zero, then the second argument must not be zero" +-msgstr "" +- +-#: fortran/simplify.c:714 +-#, no-c-format +-msgid "Argument of CHAR function at %L outside of range [0,255]" +-msgstr "" +- +-#: fortran/simplify.c:1247 +-#, no-c-format +-msgid "Argument of IACHAR at %L must be of length one" +-msgstr "" +- +-#: fortran/simplify.c:1254 +-#, no-c-format +-msgid "Argument of IACHAR function at %L outside of range 0..127" +-msgstr "" +- +-#: fortran/simplify.c:1293 +-#, fuzzy, no-c-format +-msgid "Invalid second argument of IBCLR at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1301 +-#, no-c-format +-msgid "Second argument of IBCLR exceeds bit size at %L" +-msgstr "" +- +-#: fortran/simplify.c:1335 +-#, fuzzy, no-c-format +-msgid "Invalid second argument of IBITS at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1341 +-#, fuzzy, no-c-format +-msgid "Invalid third argument of IBITS at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1351 +-#, no-c-format +-msgid "Sum of second and third arguments of IBITS exceeds bit size at %L" +-msgstr "" +- +-#: fortran/simplify.c:1393 +-#, fuzzy, no-c-format +-msgid "Invalid second argument of IBSET at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1401 +-#, no-c-format +-msgid "Second argument of IBSET exceeds bit size at %L" +-msgstr "" +- +-#: fortran/simplify.c:1431 +-#, no-c-format +-msgid "Argument of ICHAR at %L must be of length one" +-msgstr "" +- +-#: fortran/simplify.c:1646 +-#, fuzzy, no-c-format +-msgid "Argument of INT at %L is not a valid type" +-msgstr "l'argument de \"asm\" no és una cadena constant" +- +-#: fortran/simplify.c:1688 +-#, fuzzy, no-c-format +-msgid "Argument of %s at %L is not a valid type" +-msgstr "l'argument de l'atribut \"%s\" no es una cadena constant" +- +-#: fortran/simplify.c:1786 +-#, fuzzy, no-c-format +-msgid "Invalid second argument of ISHFT at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1801 +-#, no-c-format +-msgid "Magnitude of second argument of ISHFT exceeds bit size at %L" +-msgstr "" +- +-#: fortran/simplify.c:1865 +-#, fuzzy, no-c-format +-msgid "Invalid second argument of ISHFTC at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1879 +-#, fuzzy, no-c-format +-msgid "Invalid third argument of ISHFTC at %L" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: fortran/simplify.c:1885 +-#, no-c-format +-msgid "Magnitude of third argument of ISHFTC exceeds BIT_SIZE of first argument at %L" +-msgstr "" +- +-#: fortran/simplify.c:1901 +-#, no-c-format +-msgid "Magnitude of second argument of ISHFTC exceeds third argument at %L" +-msgstr "" +- +-#: fortran/simplify.c:1904 +-#, no-c-format +-msgid "Magnitude of second argument of ISHFTC exceeds BIT_SIZE of first argument at %L" +-msgstr "" +- +-#: fortran/simplify.c:1975 +-#, no-c-format +-msgid "Argument of KIND at %L is a DERIVED type" +-msgstr "" +- +-#: fortran/simplify.c:2163 +-#, fuzzy, no-c-format +-msgid "DIM argument at %L is out of bounds" +-msgstr "l'argument \"%d\" no és una constant" +- +-#: fortran/simplify.c:2318 +-#, no-c-format +-msgid "Argument of LOG at %L cannot be less than or equal to zero" +-msgstr "" +- +-#: fortran/simplify.c:2331 +-#, no-c-format +-msgid "Complex argument of LOG at %L cannot be zero" +-msgstr "" +- +-#: fortran/simplify.c:2374 +-#, no-c-format +-msgid "Argument of LOG10 at %L cannot be less than or equal to zero" +-msgstr "" +- +-#. Result is processor-dependent. +-#: fortran/simplify.c:2579 +-#, no-c-format +-msgid "Second argument MOD at %L is zero" +-msgstr "" +- +-#. Result is processor-dependent. +-#: fortran/simplify.c:2590 +-#, no-c-format +-msgid "Second argument of MOD at %L is zero" +-msgstr "" +- +-#. Result is processor-dependent. This processor just opts +-#. to not handle it at all. +-#. Result is processor-dependent. +-#: fortran/simplify.c:2638 fortran/simplify.c:2650 +-#, no-c-format +-msgid "Second argument of MODULO at %L is zero" +-msgstr "" +- +-#: fortran/simplify.c:2702 +-#, no-c-format +-msgid "Second argument of NEAREST at %L shall not be zero" +-msgstr "" +- +-#: fortran/simplify.c:2977 +-#, no-c-format +-msgid "Argument NCOPIES of REPEAT intrinsic is negative at %L" +-msgstr "" +- +-#: fortran/simplify.c:3032 +-#, no-c-format +-msgid "Argument NCOPIES of REPEAT intrinsic is too large at %L" +-msgstr "" +- +-#: fortran/simplify.c:3122 +-#, fuzzy, no-c-format +-msgid "Integer too large in shape specification at %L" +-msgstr "després de l'especificació prèvia en \"%#D\"" +- +-#: fortran/simplify.c:3132 +-#, no-c-format +-msgid "Too many dimensions in shape specification for RESHAPE at %L" +-msgstr "" +- +-#: fortran/simplify.c:3140 +-#, no-c-format +-msgid "Shape specification at %L cannot be negative" +-msgstr "" +- +-#: fortran/simplify.c:3150 +-#, no-c-format +-msgid "Shape specification at %L cannot be the null array" +-msgstr "" +- +-#: fortran/simplify.c:3171 +-#, no-c-format +-msgid "ORDER parameter of RESHAPE at %L is not the same size as SHAPE parameter" +-msgstr "" +- +-#: fortran/simplify.c:3178 +-#, no-c-format +-msgid "Error in ORDER parameter of RESHAPE at %L" +-msgstr "" +- +-#: fortran/simplify.c:3188 +-#, no-c-format +-msgid "ORDER parameter of RESHAPE at %L is out of range" +-msgstr "" +- +-#: fortran/simplify.c:3197 +-#, no-c-format +-msgid "Invalid permutation in ORDER parameter at %L" +-msgstr "" +- +-#: fortran/simplify.c:3253 +-#, no-c-format +-msgid "PAD parameter required for short SOURCE parameter at %L" +-msgstr "" +- +-#: fortran/simplify.c:3372 +-#, no-c-format +-msgid "Result of SCALE overflows its kind at %L" +-msgstr "" +- +-#: fortran/simplify.c:3942 +-#, fuzzy, no-c-format +-msgid "Argument of SQRT at %L has a negative value" +-msgstr "la crida a la funció té valor agregat" +- +-#: fortran/simplify.c:4069 +-#, no-c-format +-msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < result size %ld" +-msgstr "" +- +-#: fortran/symbol.c:120 +-#, no-c-format +-msgid "Duplicate IMPLICIT NONE statement at %C" +-msgstr "" +- +-#: fortran/symbol.c:160 +-#, no-c-format +-msgid "Letter '%c' already set in IMPLICIT statement at %C" +-msgstr "" +- +-#: fortran/symbol.c:182 +-#, no-c-format +-msgid "Cannot specify IMPLICIT at %C after IMPLICIT NONE" +-msgstr "" +- +-#: fortran/symbol.c:193 +-#, no-c-format +-msgid "Letter %c already has an IMPLICIT type at %C" +-msgstr "" +- +-#: fortran/symbol.c:247 +-#, no-c-format +-msgid "Symbol '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#. BIND(C) variables should not be implicitly declared. +-#: fortran/symbol.c:261 +-#, no-c-format +-msgid "Implicitly declared BIND(C) variable '%s' at %L may not be C interoperable" +-msgstr "" +- +-#. Dummy args to a BIND(C) routine may not be interoperable if +-#. they are implicitly typed. +-#: fortran/symbol.c:275 +-#, no-c-format +-msgid "Implicity declared variable '%s' at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure '%s' at %L" +-msgstr "" +- +-#: fortran/symbol.c:316 +-#, no-c-format +-msgid "Function result '%s' at %L has no IMPLICIT type" +-msgstr "" +- +-#: fortran/symbol.c:395 +-#, no-c-format +-msgid "%s attribute not allowed in BLOCK DATA program unit at %L" +-msgstr "" +- +-#: fortran/symbol.c:561 +-#, no-c-format +-msgid "Fortran 2003: Procedure pointers at %L are not yet implemented in gfortran" +-msgstr "" +- +-#: fortran/symbol.c:690 fortran/symbol.c:1300 +-#, fuzzy, no-c-format +-msgid "%s attribute conflicts with %s attribute at %L" +-msgstr "l'atribut \"%s\" solament aplica a variables" +- +-#: fortran/symbol.c:693 +-#, no-c-format +-msgid "%s attribute conflicts with %s attribute in '%s' at %L" +-msgstr "" +- +-#: fortran/symbol.c:701 +-#, no-c-format +-msgid "Fortran 2003: %s attribute with %s attribute at %L" +-msgstr "" +- +-#: fortran/symbol.c:707 +-#, no-c-format +-msgid "Fortran 2003: %s attribute with %s attribute in '%s' at %L" +-msgstr "" +- +-#: fortran/symbol.c:751 +-#, no-c-format +-msgid "Cannot change attributes of USE-associated symbol at %L" +-msgstr "" +- +-#: fortran/symbol.c:754 +-#, no-c-format +-msgid "Cannot change attributes of USE-associated symbol %s at %L" +-msgstr "" +- +-#: fortran/symbol.c:770 +-#, no-c-format +-msgid "Duplicate %s attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:912 +-#, no-c-format +-msgid "Cray Pointee at %L appears in multiple pointer() statements" +-msgstr "" +- +-#: fortran/symbol.c:931 +-#, no-c-format +-msgid "Duplicate PROTECTED attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:964 +-#, fuzzy, no-c-format +-msgid "SAVE attribute at %L cannot be specified in a PURE procedure" +-msgstr "La declaració o atribut SAVE en %1 no es pot especificar juntament amb la declaració o atribut SAVE en %0" +- +-#: fortran/symbol.c:972 +-#, no-c-format +-msgid "Duplicate SAVE attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:993 +-#, no-c-format +-msgid "Duplicate VALUE attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:1013 +-#, no-c-format +-msgid "Duplicate VOLATILE attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:1296 +-#, fuzzy, no-c-format +-msgid "%s attribute of '%s' conflicts with %s attribute at %L" +-msgstr "%Jl'àrea d'adreça de \"%s\" és en conflicte amb una declaració prèvia" +- +-#: fortran/symbol.c:1330 +-#, no-c-format +-msgid "%s procedure at %L is already declared as %s procedure" +-msgstr "" +- +-#: fortran/symbol.c:1365 +-#, no-c-format +-msgid "INTENT (%s) conflicts with INTENT(%s) at %L" +-msgstr "" +- +-#: fortran/symbol.c:1388 +-#, no-c-format +-msgid "ACCESS specification at %L was already specified" +-msgstr "" +- +-#: fortran/symbol.c:1405 +-#, no-c-format +-msgid "Duplicate BIND attribute specified at %L" +-msgstr "" +- +-#: fortran/symbol.c:1412 +-#, no-c-format +-msgid "Fortran 2003: BIND(C) at %L" +-msgstr "" +- +-#: fortran/symbol.c:1434 +-#, no-c-format +-msgid "Symbol '%s' at %L already has an explicit interface" +-msgstr "" +- +-#: fortran/symbol.c:1479 +-#, no-c-format +-msgid "Symbol '%s' at %L cannot have a type" +-msgstr "" +- +-#: fortran/symbol.c:1636 +-#, no-c-format +-msgid "Component '%s' at %C already declared at %L" +-msgstr "" +- +-#: fortran/symbol.c:1714 +-#, fuzzy, no-c-format +-msgid "Symbol '%s' at %C is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: fortran/symbol.c:1746 +-#, no-c-format +-msgid "Derived type '%s' at %C is being used before it is defined" +-msgstr "" +- +-#: fortran/symbol.c:1774 +-#, fuzzy, no-c-format +-msgid "'%s' at %C is not a member of the '%s' structure" +-msgstr "\"%D\" no és un membre de tipus \"%T\"" +- +-#: fortran/symbol.c:1781 +-#, no-c-format +-msgid "Component '%s' at %C is a PRIVATE component of '%s'" +-msgstr "" +- +-#: fortran/symbol.c:1938 +-#, no-c-format +-msgid "Duplicate statement label %d at %L and %L" +-msgstr "" +- +-#: fortran/symbol.c:1948 +-#, no-c-format +-msgid "Label %d at %C already referenced as branch target" +-msgstr "" +- +-#: fortran/symbol.c:1957 +-#, no-c-format +-msgid "Label %d at %C already referenced as a format label" +-msgstr "" +- +-#: fortran/symbol.c:1999 +-#, no-c-format +-msgid "Label %d at %C previously used as a FORMAT label" +-msgstr "" +- +-#: fortran/symbol.c:2007 +-#, no-c-format +-msgid "Label %d at %C previously used as branch target" +-msgstr "" +- +-#: fortran/symbol.c:2314 +-#, no-c-format +-msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'" +-msgstr "" +- +-#: fortran/symbol.c:2317 +-#, no-c-format +-msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit" +-msgstr "" +- +-#. Symbol is from another namespace. +-#: fortran/symbol.c:2461 +-#, no-c-format +-msgid "Symbol '%s' at %C has already been host associated" +-msgstr "" +- +-#: fortran/symbol.c:3162 +-#, no-c-format +-msgid "Derived type '%s' declared at %L must have the BIND attribute to be C interoperable" +-msgstr "" +- +-#: fortran/symbol.c:3173 +-#, fuzzy, no-c-format +-msgid "Derived type '%s' at %L is empty" +-msgstr "el predicat de la resposta està buidor" +- +-#: fortran/symbol.c:3190 +-#, no-c-format +-msgid "Component '%s' at %L cannot have the POINTER attribute because it is a member of the BIND(C) derived type '%s' at %L" +-msgstr "" +- +-#: fortran/symbol.c:3202 +-#, no-c-format +-msgid "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type '%s' at %L" +-msgstr "" +- +-#. If the derived type is bind(c), all fields must be +-#. interop. +-#: fortran/symbol.c:3241 +-#, no-c-format +-msgid "Component '%s' in derived type '%s' at %L may not be C interoperable, even though derived type '%s' is BIND(C)" +-msgstr "" +- +-#. If derived type is param to bind(c) routine, or to one +-#. of the iso_c_binding procs, it must be interoperable, so +-#. all fields must interop too. +-#: fortran/symbol.c:3250 +-#, no-c-format +-msgid "Component '%s' in derived type '%s' at %L may not be C interoperable" +-msgstr "" +- +-#: fortran/symbol.c:3264 +-#, no-c-format +-msgid "Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) attributes" +-msgstr "" +- +-#: fortran/symbol.c:3272 +-#, no-c-format +-msgid "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND(C)" +-msgstr "" +- +-#: fortran/target-memory.c:548 +-#, no-c-format +-msgid "Overlapping unequal initializers in EQUIVALENCE at %L" +-msgstr "" +- +-#: fortran/trans-common.c:396 +-#, no-c-format +-msgid "Named COMMON block '%s' at %L shall be of the same size" +-msgstr "" +- +-#: fortran/trans-common.c:817 +-#, fuzzy, no-c-format +-msgid "Bad array reference at %L" +-msgstr "Element null en %0 per a la referència de matriu en %1" +- +-#: fortran/trans-common.c:825 +-#, no-c-format +-msgid "Illegal reference type at %L as EQUIVALENCE object" +-msgstr "" +- +-#: fortran/trans-common.c:865 +-#, no-c-format +-msgid "Inconsistent equivalence rules involving '%s' at %L and '%s' at %L" +-msgstr "" +- +-#. Aligning this field would misalign a previous field. +-#: fortran/trans-common.c:998 +-#, no-c-format +-msgid "The equivalence set for variable '%s' declared at %L violates alignment requirements" +-msgstr "" +- +-#: fortran/trans-common.c:1063 +-#, no-c-format +-msgid "Equivalence for '%s' does not match ordering of COMMON '%s' at %L" +-msgstr "" +- +-#: fortran/trans-common.c:1078 +-#, no-c-format +-msgid "The equivalence set for '%s' cause an invalid extension to COMMON '%s' at %L" +-msgstr "" +- +-#. The required offset conflicts with previous alignment +-#. requirements. Insert padding immediately before this +-#. segment. +-#: fortran/trans-common.c:1089 +-#, no-c-format +-msgid "Padding of %d bytes required before '%s' in COMMON '%s' at %L" +-msgstr "" +- +-#: fortran/trans-common.c:1115 +-#, no-c-format +-msgid "COMMON '%s' at %L does not exist" +-msgstr "" +- +-#: fortran/trans-common.c:1122 +-#, no-c-format +-msgid "COMMON '%s' at %L requires %d bytes of padding at start" +-msgstr "" +- +-#: fortran/trans-decl.c:3016 +-#, no-c-format +-msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set" +-msgstr "" +- +-#: fortran/trans-decl.c:3020 +-#, no-c-format +-msgid "Unused dummy argument '%s' at %L" +-msgstr "" +- +-#: fortran/trans-decl.c:3026 +-#, fuzzy, no-c-format +-msgid "Unused variable '%s' declared at %L" +-msgstr "%Jla variable \"%D\" és declarada com \"inline\"" +- +-#: fortran/trans-decl.c:3052 +-#, fuzzy, no-c-format +-msgid "Unused parameter '%s' declared at %L" +-msgstr "el paràmetre \"%s\" es va declarar void" +- +-#: fortran/trans-expr.c:2036 +-#, fuzzy, no-c-format +-msgid "Unknown argument list function at %L" +-msgstr "massa pocs arguments per a la funció \"%s\"" +- +-#: fortran/trans-intrinsic.c:829 +-#, no-c-format +-msgid "'dim' argument of %s intrinsic at %L is not a valid dimension index" +-msgstr "" +- +-#: fortran/trans-io.c:1850 +-#, no-c-format +-msgid "Derived type '%s' at %L has PRIVATE components" +-msgstr "" +- +-#: fortran/trans-stmt.c:438 +-#, fuzzy, no-c-format +-msgid "An alternate return at %L without a * dummy argument" +-msgstr "L'especificador de retorn alternatiu en %0 no és vàlid dintre d'una unitat de programa principal" +- +-#: fortran/trans.c:49 +-msgid "Array bound mismatch" +-msgstr "" +- +-#: fortran/trans.c:50 +-#, fuzzy +-msgid "Array reference out of bounds" +-msgstr "formant la referència a void" +- +-#: fortran/trans.c:51 +-#, fuzzy +-msgid "Incorrect function return value" +-msgstr "la funció \"no return\" retorna un valor que no és \"void\"" +- +-#: fortran/trans.c:465 fortran/trans.c:859 +-msgid "Attempt to allocate a negative amount of memory." +-msgstr "" +- +-#: fortran/trans.c:479 +-msgid "Memory allocation failed" +-msgstr "" +- +-#: fortran/trans.c:567 +-msgid "Attempt to allocate negative amount of memory. Possible integer overflow" +-msgstr "" +- +-#: fortran/trans.c:598 fortran/trans.c:876 +-msgid "Out of memory" +-msgstr "" +- +-#: fortran/trans.c:678 +-msgid "Attempting to allocate already allocated array" +-msgstr "" +- +-#: fortran/trans.c:776 +-msgid "Attempt to DEALLOCATE unallocated memory." +-msgstr "" +- +-#: java/jcf-dump.c:1066 +-#, c-format +-msgid "Not a valid Java .class file.\n" +-msgstr "" +- +-#: java/jcf-dump.c:1072 +-#, fuzzy, c-format +-msgid "error while parsing constant pool\n" +-msgstr "%s abans d'una constant de cadena" +- +-#: java/jcf-dump.c:1078 java/jcf-parse.c:1458 +-#, gcc-internal-format +-msgid "error in constant pool entry #%d\n" +-msgstr "" +- +-#: java/jcf-dump.c:1088 +-#, c-format +-msgid "error while parsing fields\n" +-msgstr "" +- +-#: java/jcf-dump.c:1094 +-#, c-format +-msgid "error while parsing methods\n" +-msgstr "" +- +-#: java/jcf-dump.c:1100 +-#, c-format +-msgid "error while parsing final attributes\n" +-msgstr "" +- +-#: java/jcf-dump.c:1137 +-#, c-format +-msgid "Try 'jcf-dump --help' for more information.\n" +-msgstr "" +- +-#: java/jcf-dump.c:1144 +-#, fuzzy, c-format +-msgid "" +-"Usage: jcf-dump [OPTION]... CLASS...\n" +-"\n" +-msgstr "" +-"Us: gcov [OPCIO]... FITXERFONT\n" +-"\n" +- +-#: java/jcf-dump.c:1145 +-#, c-format +-msgid "" +-"Display contents of a class file in readable form.\n" +-"\n" +-msgstr "" +- +-#: java/jcf-dump.c:1146 +-#, fuzzy, c-format +-msgid " -c Disassemble method bodies\n" +-msgstr " -W Activar avisos extra\n" +- +-#: java/jcf-dump.c:1147 +-#, fuzzy, c-format +-msgid " --javap Generate output in 'javap' format\n" +-msgstr " --help Mostra aquesta informació\n" +- +-#: java/jcf-dump.c:1149 +-#, c-format +-msgid " --classpath PATH Set path to find .class files\n" +-msgstr "" +- +-#: java/jcf-dump.c:1150 +-#, fuzzy, c-format +-msgid " -IDIR Append directory to class path\n" +-msgstr "" +-" -B Agrega el a les rutes de recerca del\n" +-" compilador\n" +- +-#: java/jcf-dump.c:1151 +-#, c-format +-msgid " --bootclasspath PATH Override built-in class path\n" +-msgstr "" +- +-#: java/jcf-dump.c:1152 +-#, c-format +-msgid " --extdirs PATH Set extensions directory path\n" +-msgstr "" +- +-#: java/jcf-dump.c:1153 +-#, fuzzy, c-format +-msgid " -o FILE Set output file name\n" +-msgstr " -o Col·loca la sortida en el \n" +- +-#: java/jcf-dump.c:1155 +-#, fuzzy, c-format +-msgid " --help Print this help, then exit\n" +-msgstr " -h, --help Mostra aquesta informació, i surt\n" +- +-#: java/jcf-dump.c:1156 +-#, fuzzy, c-format +-msgid " --version Print version number, then exit\n" +-msgstr " -v, --version Mostra el numero de versió, i surt\n" +- +-#: java/jcf-dump.c:1157 +-#, fuzzy, c-format +-msgid " -v, --verbose Print extra information while running\n" +-msgstr " -v, --version Mostra el numero de versió, i surt\n" +- +-#: java/jcf-dump.c:1159 +-#, fuzzy, c-format +-msgid "" +-"For bug reporting instructions, please see:\n" +-"%s.\n" +-msgstr "" +-"\n" +-"Per a instrucions d'informe de bug, si us plau consulta:\n" +-"%s.\n" +- +-#: java/jcf-dump.c:1187 java/jcf-dump.c:1255 +-#, c-format +-msgid "jcf-dump: no classes specified\n" +-msgstr "" +- +-#: java/jcf-dump.c:1275 +-#, fuzzy, c-format +-msgid "Cannot open '%s' for output.\n" +-msgstr "no es pot obrir %s" +- +-#: java/jcf-dump.c:1321 +-#, c-format +-msgid "bad format of .zip/.jar archive\n" +-msgstr "" +- +-#: java/jcf-dump.c:1439 +-#, c-format +-msgid "Bad byte codes.\n" +-msgstr "" +- +-#: java/jvgenmain.c:47 +-#, fuzzy, c-format +-msgid "Usage: %s [OPTIONS]... CLASSNAMEmain [OUTFILE]\n" +-msgstr "" +-"Us: gcov [OPCIO]... FITXERFONT\n" +-"\n" +- +-#: java/jvgenmain.c:109 +-#, fuzzy, c-format +-msgid "%s: Cannot open output file: %s\n" +-msgstr "%s:no es pot obrir el fitxer de sortida \"%s\"\n" +- +-#: java/jvgenmain.c:151 +-#, fuzzy, c-format +-msgid "%s: Failed to close output file %s\n" +-msgstr "%s:no es pot obrir el fitxer de sortida \"%s\"\n" +- +-#: java/jvspec.c:409 +-#, c-format +-msgid "can't specify '-D' without '--main'\n" +-msgstr "" +- +-#: java/jvspec.c:412 +-#, fuzzy, c-format +-msgid "'%s' is not a valid class name" +-msgstr "\"%s\" no és un nom de fitxer vàlid" +- +-#: java/jvspec.c:418 +-#, c-format +-msgid "--resource requires -o" +-msgstr "" +- +-#: java/jvspec.c:432 +-#, c-format +-msgid "cannot specify both -C and -o" +-msgstr "" +- +-#: java/jvspec.c:444 +-#, c-format +-msgid "cannot create temporary file" +-msgstr "" +- +-#: java/jvspec.c:466 +-#, c-format +-msgid "using both @FILE with multiple files not implemented" +-msgstr "" +- +-#: java/jvspec.c:588 +-#, c-format +-msgid "cannot specify 'main' class when not linking" +-msgstr "" +- +-#: config/i386/nwld.h:34 +-#, fuzzy +-msgid "Static linking is not supported.\n" +-msgstr "no es dóna suport a l'expressió del límit de la pila" +- +-#: java/jvspec.c:80 gcc.c:820 ada/lang-specs.h:33 +-msgid "-pg and -fomit-frame-pointer are incompatible" +-msgstr "" +- +-#: config/vax/netbsd-elf.h:41 +-#, fuzzy +-msgid "the -shared option is not currently supported for VAX ELF" +-msgstr "L'opció -shared no se suporta actualment per a ELF de VAX." +- +-#: config/sparc/sol2-gld-bi.h:17 config/sparc/sol2-gld-bi.h:22 +-#: config/sparc/sol2-bi.h:189 config/sparc/sol2-bi.h:194 +-msgid "does not support multilib" +-msgstr "no es dóna suport a multilib" +- +-#: config/vax/vax.h:49 config/vax/vax.h:50 +-msgid "profiling not supported with -mg\n" +-msgstr "" +- +-#: config/rs6000/linux64.h:347 config/rs6000/linux64.h:349 config/linux.h:106 +-#: config/linux.h:108 config/rs6000/sysv4.h:897 config/rs6000/sysv4.h:899 +-#: config/alpha/linux-elf.h:33 config/alpha/linux-elf.h:35 +-#: config/sparc/linux.h:126 config/sparc/linux.h:128 +-#: config/sparc/linux64.h:152 config/sparc/linux64.h:154 +-msgid "-mglibc and -muclibc used together" +-msgstr "" +- +-#: config/i386/cygwin.h:28 +-msgid "mno-cygwin and mno-win32 are not compatible" +-msgstr "" +- +-#: config/i386/cygwin.h:74 config/i386/mingw32.h:74 +-msgid "shared and mdll are not compatible" +-msgstr "" +- +-#: config/i386/sco5.h:188 +-msgid "-pg not supported on this platform" +-msgstr "-pg no té suport en aquesta plataforma" +- +-#: config/i386/sco5.h:189 +-msgid "-p and -pp specified - pick one" +-msgstr "-p i -pp especificats - tria un" +- +-#: config/i386/sco5.h:258 +-msgid "-G and -static are mutually exclusive" +-msgstr "-G·i·-static són mútuament exclusius" +- +-#: gcc.c:792 +-msgid "GCC does not support -C or -CC without -E" +-msgstr "GCC no dóna suport a -C o -CC sense usar -E" +- +-#: gcc.c:1002 +-msgid "-E or -x required when input is from standard input" +-msgstr "" +- +-#: java/lang-specs.h:33 +-msgid "-fjni and -femit-class-files are incompatible" +-msgstr "" +- +-#: java/lang-specs.h:34 +-msgid "-fjni and -femit-class-file are incompatible" +-msgstr "" +- +-#: java/lang-specs.h:35 java/lang-specs.h:36 +-msgid "-femit-class-file should used along with -fsyntax-only" +-msgstr "" +- +-#: config/mcore/mcore.h:56 +-msgid "the m210 does not have little endian support" +-msgstr "" +- +-#: config/lynx.h:70 +-msgid "cannot use mthreads and mlegacy-threads together" +-msgstr "" +- +-#: config/lynx.h:95 +-msgid "cannot use mshared and static together" +-msgstr "" +- +-#: config/sh/sh.h:461 +-#, fuzzy +-msgid "SH2a does not support little-endian" +-msgstr "no es dóna suport a multilib" +- +-#: config/mips/mips.h:1042 config/arc/arc.h:61 +-msgid "may not use both -EB and -EL" +-msgstr "" +- +-#: config/s390/tpf.h:119 +-#, fuzzy +-msgid "static is not supported on TPF-OS" +-msgstr "no es dóna suport a límits de pila en aquest objectiu" +- +-#: config/rs6000/darwin.h:95 +-msgid " conflicting code gen style switches are used" +-msgstr "" +- +-#: ada/lang-specs.h:34 +-msgid "-c or -S required for Ada" +-msgstr "" +- +-#: config/mips/r3900.h:34 +-msgid "-mhard-float not supported" +-msgstr "" +- +-#: config/mips/r3900.h:36 +-msgid "-msingle-float and -msoft-float cannot both be specified" +-msgstr "" +- +-#: config/vxworks.h:71 +-#, fuzzy +-msgid "-Xbind-now and -Xbind-lazy are incompatible" +-msgstr "-membedded-pic i -mabicalls són incompatibles" +- +-#: config/darwin.h:269 +-msgid "-current_version only allowed with -dynamiclib" +-msgstr "" +- +-#: config/darwin.h:271 +-msgid "-install_name only allowed with -dynamiclib" +-msgstr "" +- +-#: config/darwin.h:276 +-msgid "-bundle not allowed with -dynamiclib" +-msgstr "no es permet -bundle amb -dynamiclib" +- +-#: config/darwin.h:277 +-msgid "-bundle_loader not allowed with -dynamiclib" +-msgstr "no es permet -bundle_loader amb -dynamiclib" +- +-#: config/darwin.h:278 +-msgid "-client_name not allowed with -dynamiclib" +-msgstr "no es permet -client_name amb -dynamiclib" +- +-#: config/darwin.h:283 +-msgid "-force_flat_namespace not allowed with -dynamiclib" +-msgstr "" +- +-#: config/darwin.h:285 +-msgid "-keep_private_externs not allowed with -dynamiclib" +-msgstr "" +- +-#: config/darwin.h:286 +-msgid "-private_bundle not allowed with -dynamiclib" +-msgstr "no es permet -private_bundle amb -dynamiclib" +- +-#: config/sparc/linux64.h:211 config/sparc/linux64.h:222 +-#: config/sparc/netbsd-elf.h:125 config/sparc/netbsd-elf.h:144 +-#: config/sparc/sol2-bi.h:217 config/sparc/sol2-bi.h:227 +-msgid "may not use both -m32 and -m64" +-msgstr "" +- +-#: config/arm/arm.h:147 +-msgid "-msoft-float and -mhard_float may not be used together" +-msgstr "" +- +-#: config/arm/arm.h:149 +-msgid "-mbig-endian and -mlittle-endian may not be used together" +-msgstr "" +- +-#: java/lang.opt:65 +-#, fuzzy +-msgid "Warn if a deprecated compiler feature, class, method, or field is used" +-msgstr "No anunciar característiques obsoletes del compilador" +- +-#: java/lang.opt:69 +-msgid "Warn if deprecated empty statements are found" +-msgstr "" +- +-#: java/lang.opt:73 +-msgid "Warn if .class files are out of date" +-msgstr "" +- +-#: java/lang.opt:77 +-msgid "Warn if modifiers are specified when not necessary" +-msgstr "" +- +-#: java/lang.opt:81 +-msgid "Deprecated; use --classpath instead" +-msgstr "" +- +-#: java/lang.opt:88 +-msgid "Permit the use of the assert keyword" +-msgstr "" +- +-#: java/lang.opt:110 +-msgid "Replace system path" +-msgstr "" +- +-#: java/lang.opt:114 +-#, fuzzy +-msgid "Generate checks for references to NULL" +-msgstr "Generar codi per a una DLL" +- +-#: java/lang.opt:118 +-msgid "Set class path" +-msgstr "" +- +-#: java/lang.opt:125 +-msgid "Output a class file" +-msgstr "" +- +-#: java/lang.opt:129 +-msgid "Alias for -femit-class-file" +-msgstr "" +- +-#: java/lang.opt:133 +-msgid "Choose input encoding (defaults from your locale)" +-msgstr "" +- +-#: java/lang.opt:137 +-msgid "Set the extension directory path" +-msgstr "" +- +-#: java/lang.opt:144 +-msgid "Input file is a file with a list of filenames to compile" +-msgstr "" +- +-#: java/lang.opt:151 +-msgid "Always check for non gcj generated classes archives" +-msgstr "" +- +-#: java/lang.opt:155 +-msgid "Assume the runtime uses a hash table to map an object to its synchronization structure" +-msgstr "" +- +-#: java/lang.opt:159 +-msgid "Generate instances of Class at runtime" +-msgstr "" +- +-#: java/lang.opt:163 +-msgid "Use offset tables for virtual method calls" +-msgstr "" +- +-#: java/lang.opt:170 +-msgid "Assume native functions are implemented using JNI" +-msgstr "" +- +-#: java/lang.opt:174 +-#, fuzzy +-msgid "Enable optimization of static class initialization code" +-msgstr "(es requereix una inicialització fora de la classe)" +- +-#: java/lang.opt:181 +-msgid "Reduce the amount of reflection meta-data generated" +-msgstr "" +- +-#: java/lang.opt:185 +-msgid "Enable assignability checks for stores into object arrays" +-msgstr "" +- +-#: java/lang.opt:189 +-#, fuzzy +-msgid "Generate code for the Boehm GC" +-msgstr "Generar codi per a M*Core M340" +- +-#: java/lang.opt:193 +-msgid "Call a library routine to do integer divisions" +-msgstr "" +- +-#: java/lang.opt:197 +-msgid "Generated should be loaded by bootstrap loader" +-msgstr "" +- +-#: java/lang.opt:201 +-msgid "Set the source language version" +-msgstr "" +- +-#: java/lang.opt:205 +-#, fuzzy +-msgid "Set the target VM version" +-msgstr "versió d'encapçalat errònia" +- +-#: ada/lang.opt:96 +-msgid "Specify options to GNAT" +-msgstr "" +- +-#: fortran/lang.opt:29 +-#, fuzzy +-msgid "Add a directory for INCLUDE and MODULE searching" +-msgstr "Agregar un directori per a la recerca de INCLUDE" +- +-#: fortran/lang.opt:33 +-msgid "Put MODULE files in 'directory'" +-msgstr "" +- +-#: fortran/lang.opt:41 +-#, fuzzy +-msgid "Warn about possible aliasing of dummy arguments" +-msgstr "Avisar sobre possibles parèntesis faltantes" +- +-#: fortran/lang.opt:45 +-#, fuzzy +-msgid "Warn about missing ampersand in continued character constants" +-msgstr "Avisar sobre l'ús de literals multicaràcters" +- +-#: fortran/lang.opt:49 +-#, fuzzy +-msgid "Warn about truncated character expressions" +-msgstr "No anunciar característiques obsoletes del compilador" +- +-#: fortran/lang.opt:53 +-#, fuzzy +-msgid "Warn about implicit conversion" +-msgstr "Avisar sobre la declaració implícita de funcions" +- +-#: fortran/lang.opt:57 +-#, fuzzy +-msgid "Warn about calls with implicit interface" +-msgstr "Avisar sobre conversions que descarten calificators" +- +-#: fortran/lang.opt:61 +-#, fuzzy +-msgid "Warn about truncated source lines" +-msgstr "No anunciar característiques obsoletes del compilador" +- +-#: fortran/lang.opt:65 +-#, fuzzy +-msgid "Warn about usage of non-standard intrinsics" +-msgstr "Avisar sobre l'ús d' (només algunes per ara) extensions Fortran" +- +-#: fortran/lang.opt:69 +-#, fuzzy +-msgid "Warn about \"suspicious\" constructs" +-msgstr "Avisar sobre declaracions sospitoses de main" +- +-#: fortran/lang.opt:73 +-msgid "Permit nonconforming uses of the tab character" +-msgstr "" +- +-#: fortran/lang.opt:77 +-#, fuzzy +-msgid "Warn about underflow of numerical constant expressions" +-msgstr "desbordament en la constant implícita" +- +-#: fortran/lang.opt:81 +-msgid "All intrinsics procedures are available regardless of selected standard" +-msgstr "" +- +-#: fortran/lang.opt:89 +-#, fuzzy +-msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements" +-msgstr "Tractar les variables locals i els blocs COMMON com si fossin nomenats en declaracions SAVE" +- +-#: fortran/lang.opt:93 +-msgid "Specify that backslash in string introduces an escape character" +-msgstr "" +- +-#: fortran/lang.opt:97 +-msgid "Produce a backtrace when a runtime error is encountered" +-msgstr "" +- +-#: fortran/lang.opt:101 +-msgid "-fblas-matmul-limit= Size of the smallest matrix for which matmul will use BLAS" +-msgstr "" +- +-#: fortran/lang.opt:105 +-#, fuzzy +-msgid "Use big-endian format for unformatted files" +-msgstr "Usar ordre de bit big-endian" +- +-#: fortran/lang.opt:109 +-#, fuzzy +-msgid "Use little-endian format for unformatted files" +-msgstr "Usar l'ordre d'octet little-endian per a les dades" +- +-#: fortran/lang.opt:113 +-msgid "Use native format for unformatted files" +-msgstr "" +- +-#: fortran/lang.opt:117 +-msgid "Swap endianness for unformatted files" +-msgstr "" +- +-#: fortran/lang.opt:121 +-#, fuzzy +-msgid "Use the Cray Pointer extension" +-msgstr "Usar la interfície Cygwin" +- +-#: fortran/lang.opt:125 +-msgid "Ignore 'D' in column one in fixed form" +-msgstr "" +- +-#: fortran/lang.opt:129 +-msgid "Treat lines with 'D' in column one as comments" +-msgstr "" +- +-#: fortran/lang.opt:133 +-msgid "Set the default double precision kind to an 8 byte wide type" +-msgstr "" +- +-#: fortran/lang.opt:137 +-msgid "Set the default integer kind to an 8 byte wide type" +-msgstr "" +- +-#: fortran/lang.opt:141 +-msgid "Set the default real kind to an 8 byte wide type" +-msgstr "" +- +-#: fortran/lang.opt:145 +-msgid "Allow dollar signs in entity names" +-msgstr "" +- +-#: fortran/lang.opt:149 +-msgid "Dump a core file when a runtime error occurs" +-msgstr "" +- +-#: fortran/lang.opt:153 +-#, fuzzy +-msgid "Display the code tree after parsing" +-msgstr "Mostra la versió del compilador" +- +-#: fortran/lang.opt:157 +-msgid "Specify that an external BLAS library should be used for matmul calls on large-size arrays" +-msgstr "" +- +-#: fortran/lang.opt:161 +-#, fuzzy +-msgid "Use f2c calling convention" +-msgstr "Usar convenció de cridada normal" +- +-#: fortran/lang.opt:165 +-#, fuzzy +-msgid "Assume that the source file is fixed form" +-msgstr "Assumir que els punters no tenen alies" +- +-#: fortran/lang.opt:169 +-msgid "Specify where to find the compiled intrinsic modules" +-msgstr "" +- +-#: fortran/lang.opt:173 +-msgid "Allow arbitrary character line width in fixed mode" +-msgstr "" +- +-#: fortran/lang.opt:177 +-msgid "Use n as character line width in fixed mode" +-msgstr "" +- +-#: fortran/lang.opt:181 +-#, fuzzy +-msgid "Stop on following floating point exceptions" +-msgstr "Especifica la versió de l'emulador de nombre de coma flotant" +- +-#: fortran/lang.opt:185 +-msgid "Assume that the source file is free form" +-msgstr "" +- +-#: fortran/lang.opt:189 +-msgid "Allow arbitrary character line width in free mode" +-msgstr "" +- +-#: fortran/lang.opt:193 +-msgid "Use n as character line width in free mode" +-msgstr "" +- +-#: fortran/lang.opt:197 +-msgid "Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements" +-msgstr "" +- +-#: fortran/lang.opt:201 +-msgid "-finit-character= Initialize local character variables to ASCII value n" +-msgstr "" +- +-#: fortran/lang.opt:205 +-msgid "-finit-integer= Initialize local integer variables to n" +-msgstr "" +- +-#: fortran/lang.opt:209 +-#, fuzzy +-msgid "Initialize local variables to zero (from g77)" +-msgstr "Inicialitza les variables locals i matrius a zero" +- +-#: fortran/lang.opt:213 +-msgid "-finit-logical= Initialize local logical variables" +-msgstr "" +- +-#: fortran/lang.opt:217 +-msgid "-finit-real= Initialize local real variables" +-msgstr "" +- +-#: fortran/lang.opt:221 +-#, fuzzy +-msgid "Maximum number of errors to report" +-msgstr "Especificar el nombre màxim d'iteracions per a RPTS" +- +-#: fortran/lang.opt:225 +-#, fuzzy +-msgid "Maximum identifier length" +-msgstr "Establir la longitud màxima de línia" +- +-#: fortran/lang.opt:229 +-msgid "Maximum length for subrecords" +-msgstr "" +- +-#: fortran/lang.opt:233 +-msgid "Size in bytes of the largest array that will be put on the stack" +-msgstr "" +- +-#: fortran/lang.opt:237 +-msgid "Set default accessibility of module entities to PRIVATE." +-msgstr "" +- +-#: fortran/lang.opt:241 +-msgid "Enable OpenMP (also sets frecursive)" +-msgstr "" +- +-#: fortran/lang.opt:245 +-msgid "Try to lay out derived types as compactly as possible" +-msgstr "" +- +-#: fortran/lang.opt:249 +-msgid "Treat the input file as preprocessed" +-msgstr "" +- +-#: fortran/lang.opt:253 +-msgid "Enable range checking during compilation" +-msgstr "" +- +-#: fortran/lang.opt:257 +-msgid "Use a 4-byte record marker for unformatted files" +-msgstr "" +- +-#: fortran/lang.opt:261 +-msgid "Use an 8-byte record marker for unformatted files" +-msgstr "" +- +-#: fortran/lang.opt:265 +-msgid "Allocate local variables on the stack to allow indirect recursion" +-msgstr "" +- +-#: fortran/lang.opt:269 +-msgid "Copy array sections into a contiguous block on procedure entry" +-msgstr "" +- +-#: fortran/lang.opt:273 +-msgid "Append a second underscore if the name already contains an underscore" +-msgstr "" +- +-#: fortran/lang.opt:277 c.opt:714 +-msgid "Use the narrowest integer type possible for enumeration types" +-msgstr "" +- +-#: fortran/lang.opt:281 +-msgid "Apply negative sign to zero values" +-msgstr "" +- +-#: fortran/lang.opt:285 +-#, fuzzy +-msgid "Append underscores to externally visible names" +-msgstr "Mai agregar un segon subratllat als externs" +- +-#: fortran/lang.opt:289 +-msgid "Statically link the GNU Fortran helper library (libgfortran)" +-msgstr "" +- +-#: fortran/lang.opt:293 +-msgid "Conform to the ISO Fortran 2003 standard" +-msgstr "" +- +-#: fortran/lang.opt:297 +-msgid "Conform to the ISO Fortran 95 standard" +-msgstr "" +- +-#: fortran/lang.opt:301 +-msgid "Conform to nothing in particular" +-msgstr "" +- +-#: fortran/lang.opt:305 +-msgid "Accept extensions to support legacy code" +-msgstr "" +- +-#: treelang/lang.opt:30 +-msgid "Trace lexical analysis" +-msgstr "" +- +-#: treelang/lang.opt:34 +-#, fuzzy +-msgid "Trace the parsing process" +-msgstr "Apuntar al processador AM33" +- +-#: config/alpha/alpha.opt:23 config/i386/i386.opt:155 +-msgid "Do not use hardware fp" +-msgstr "No usar fp de maquinari" +- +-#: config/alpha/alpha.opt:27 +-msgid "Use fp registers" +-msgstr "Usar registres fp" +- +-#: config/alpha/alpha.opt:31 +-msgid "Assume GAS" +-msgstr "Assumir GAS" +- +-#: config/alpha/alpha.opt:35 +-msgid "Do not assume GAS" +-msgstr "No assumir GAS" +- +-#: config/alpha/alpha.opt:39 +-msgid "Request IEEE-conformant math library routines (OSF/1)" +-msgstr "Requerir rutines de biblioteca matemàtica que compleixin amb IEEE (OSF/1)" +- +-#: config/alpha/alpha.opt:43 +-msgid "Emit IEEE-conformant code, without inexact exceptions" +-msgstr "Emetre codi que compleixi amb IEEE, sense excepcions inexactes" +- +-#: config/alpha/alpha.opt:50 +-msgid "Do not emit complex integer constants to read-only memory" +-msgstr "No emetre constants enteres complexes a memòria de només lectura" +- +-#: config/alpha/alpha.opt:54 +-msgid "Use VAX fp" +-msgstr "Usar fp VAX" +- +-#: config/alpha/alpha.opt:58 +-msgid "Do not use VAX fp" +-msgstr "No usar fp VAX" +- +-#: config/alpha/alpha.opt:62 +-msgid "Emit code for the byte/word ISA extension" +-msgstr "Emetre codi per a l'extensió ISA octet/word" +- +-#: config/alpha/alpha.opt:66 +-msgid "Emit code for the motion video ISA extension" +-msgstr "Emetre codi per a l'extensió ISA de vídeo en moviment" +- +-#: config/alpha/alpha.opt:70 +-msgid "Emit code for the fp move and sqrt ISA extension" +-msgstr "Emetre codi per a l'extensió ISA de move i sqrt de fp" +- +-#: config/alpha/alpha.opt:74 +-msgid "Emit code for the counting ISA extension" +-msgstr "Emetre codi per a l'extensió ISA de compte" +- +-#: config/alpha/alpha.opt:78 +-msgid "Emit code using explicit relocation directives" +-msgstr "Emetre codi utilitzant directives explícites de reassignació" +- +-#: config/alpha/alpha.opt:82 +-msgid "Emit 16-bit relocations to the small data areas" +-msgstr "Emetre reassignació de 16 bits per a les àrees de dades petites" +- +-#: config/alpha/alpha.opt:86 +-msgid "Emit 32-bit relocations to the small data areas" +-msgstr "Emetre reassignació de 32 bits per a les àrees de dades petites" +- +-#: config/alpha/alpha.opt:90 +-#, fuzzy +-msgid "Emit direct branches to local functions" +-msgstr "Ometre el marc de referència per a les funcions fulles" +- +-#: config/alpha/alpha.opt:94 +-#, fuzzy +-msgid "Emit indirect branches to local functions" +-msgstr "Ometre el marc de referència per a les funcions fulles" +- +-#: config/alpha/alpha.opt:98 +-msgid "Emit rdval instead of rduniq for thread pointer" +-msgstr "" +- +-#: config/alpha/alpha.opt:102 config/s390/s390.opt:59 +-#: config/sparc/long-double-switch.opt:23 +-#, fuzzy +-msgid "Use 128-bit long double" +-msgstr "Usar long doubles de 128 bits" +- +-#: config/alpha/alpha.opt:106 config/s390/s390.opt:63 +-#: config/sparc/long-double-switch.opt:27 +-#, fuzzy +-msgid "Use 64-bit long double" +-msgstr "Usar long doubles de 64 bit" +- +-#: config/alpha/alpha.opt:110 +-msgid "Use features of and schedule given CPU" +-msgstr "Usar les característiques d'el i el planificador del CPU donat" +- +-#: config/alpha/alpha.opt:114 +-msgid "Schedule given CPU" +-msgstr "planificat per al CPU donat" +- +-#: config/alpha/alpha.opt:118 +-msgid "Control the generated fp rounding mode" +-msgstr "Controlar el mode d'arrodoniment generat de fp" +- +-#: config/alpha/alpha.opt:122 +-msgid "Control the IEEE trap mode" +-msgstr "Controlar el mode de captura IEEE" +- +-#: config/alpha/alpha.opt:126 +-msgid "Control the precision given to fp exceptions" +-msgstr "Controlar la precisió donada a les excepcions de fp" +- +-#: config/alpha/alpha.opt:130 +-msgid "Tune expected memory latency" +-msgstr "Ajustar la latència esperada de memòria" +- +-#: config/alpha/alpha.opt:134 config/ia64/ia64.opt:93 +-#: config/rs6000/sysv4.opt:32 +-msgid "Specify bit size of immediate TLS offsets" +-msgstr "" +- +-#: config/frv/frv.opt:23 +-#, fuzzy +-msgid "Use 4 media accumulators" +-msgstr "Usar el acumulador de multiplicació" +- +-#: config/frv/frv.opt:27 +-#, fuzzy +-msgid "Use 8 media accumulators" +-msgstr "Usar el acumulador de multiplicació" +- +-#: config/frv/frv.opt:31 +-#, fuzzy +-msgid "Enable label alignment optimizations" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: config/frv/frv.opt:35 +-#, fuzzy +-msgid "Dynamically allocate cc registers" +-msgstr "No assignar el registre BK" +- +-#: config/frv/frv.opt:42 +-msgid "Set the cost of branches" +-msgstr "" +- +-#: config/frv/frv.opt:46 +-msgid "Enable conditional execution other than moves/scc" +-msgstr "" +- +-#: config/frv/frv.opt:50 +-#, fuzzy +-msgid "Change the maximum length of conditionally-executed sequences" +-msgstr "La longitud màxima de la llista d'operacions pendents del planificador de tasques" +- +-#: config/frv/frv.opt:54 +-msgid "Change the number of temporary registers that are available to conditionally-executed sequences" +-msgstr "" +- +-#: config/frv/frv.opt:58 +-#, fuzzy +-msgid "Enable conditional moves" +-msgstr "Activar l'ús de les instruccions condicionals move" +- +-#: config/frv/frv.opt:62 +-#, fuzzy +-msgid "Set the target CPU type" +-msgstr "Especificar el nom del CPU destinació" +- +-#: config/frv/frv.opt:84 +-#, fuzzy +-msgid "Use fp double instructions" +-msgstr "Usar instruccions AltiVec" +- +-#: config/frv/frv.opt:88 +-msgid "Change the ABI to allow double word insns" +-msgstr "" +- +-#: config/frv/frv.opt:92 config/bfin/bfin.opt:73 +-#, fuzzy +-msgid "Enable Function Descriptor PIC mode" +-msgstr "Habilitar l'anàlisi de perfil de les funcions" +- +-#: config/frv/frv.opt:96 +-msgid "Just use icc0/fcc0" +-msgstr "" +- +-#: config/frv/frv.opt:100 +-msgid "Only use 32 FPRs" +-msgstr "" +- +-#: config/frv/frv.opt:104 +-msgid "Use 64 FPRs" +-msgstr "" +- +-#: config/frv/frv.opt:108 +-msgid "Only use 32 GPRs" +-msgstr "" +- +-#: config/frv/frv.opt:112 +-msgid "Use 64 GPRs" +-msgstr "" +- +-#: config/frv/frv.opt:116 +-msgid "Enable use of GPREL for read-only data in FDPIC" +-msgstr "" +- +-#: config/frv/frv.opt:120 config/rs6000/rs6000.opt:112 +-#: config/pdp11/pdp11.opt:71 +-msgid "Use hardware floating point" +-msgstr "Usar coma flotant de maquinari" +- +-#: config/frv/frv.opt:124 config/bfin/bfin.opt:77 +-#, fuzzy +-msgid "Enable inlining of PLT in function calls" +-msgstr "Activar l'ús de la instrucció RTPS" +- +-#: config/frv/frv.opt:128 +-#, fuzzy +-msgid "Enable PIC support for building libraries" +-msgstr "Activar el suport per a objectes enormes" +- +-#: config/frv/frv.opt:132 +-msgid "Follow the EABI linkage requirements" +-msgstr "" +- +-#: config/frv/frv.opt:136 +-#, fuzzy +-msgid "Disallow direct calls to global functions" +-msgstr "Ometre el marc de referència per a les funcions fulles" +- +-#: config/frv/frv.opt:140 +-#, fuzzy +-msgid "Use media instructions" +-msgstr "Usar instruccions de camps de bit" +- +-#: config/frv/frv.opt:144 +-#, fuzzy +-msgid "Use multiply add/subtract instructions" +-msgstr "Usar instruccions de fp per a multiplicar-acumular" +- +-#: config/frv/frv.opt:148 +-msgid "Enable optimizing &&/|| in conditional execution" +-msgstr "" +- +-#: config/frv/frv.opt:152 +-#, fuzzy +-msgid "Enable nested conditional execution optimizations" +-msgstr "Activar l'ús de les instruccions condicionals move" +- +-#: config/frv/frv.opt:157 +-msgid "Do not mark ABI switches in e_flags" +-msgstr "" +- +-#: config/frv/frv.opt:161 +-msgid "Remove redundant membars" +-msgstr "" +- +-#: config/frv/frv.opt:165 +-#, fuzzy +-msgid "Pack VLIW instructions" +-msgstr "Usar instruccions AltiVec" +- +-#: config/frv/frv.opt:169 +-msgid "Enable setting GPRs to the result of comparisons" +-msgstr "" +- +-#: config/frv/frv.opt:173 +-msgid "Change the amount of scheduler lookahead" +-msgstr "" +- +-#: config/frv/frv.opt:177 config/pa/pa.opt:104 +-msgid "Use software floating point" +-msgstr "Usar coma flotant de programari" +- +-#: config/frv/frv.opt:181 +-msgid "Assume a large TLS segment" +-msgstr "" +- +-#: config/frv/frv.opt:185 +-#, fuzzy +-msgid "Do not assume a large TLS segment" +-msgstr "No assumir GAS" +- +-#: config/frv/frv.opt:190 +-msgid "Cause gas to print tomcat statistics" +-msgstr "" +- +-#: config/frv/frv.opt:195 +-msgid "Link with the library-pic libraries" +-msgstr "" +- +-#: config/frv/frv.opt:199 +-msgid "Allow branches to be packed with other instructions" +-msgstr "" +- +-#: config/mn10300/mn10300.opt:23 +-msgid "Target the AM33 processor" +-msgstr "Apuntar al processador AM33" +- +-#: config/mn10300/mn10300.opt:27 +-#, fuzzy +-msgid "Target the AM33/2.0 processor" +-msgstr "Apuntar al processador AM33" +- +-#: config/mn10300/mn10300.opt:31 +-msgid "Work around hardware multiply bug" +-msgstr "Evitar el error de multiplicació de maquinari" +- +-#: config/mn10300/mn10300.opt:36 +-msgid "Enable linker relaxations" +-msgstr "Activar la relaxació del enllaçador" +- +-#: config/mn10300/mn10300.opt:40 +-msgid "Return pointers in both a0 and d0" +-msgstr "" +- +-#: config/s390/tpf.opt:23 +-msgid "Enable TPF-OS tracing code" +-msgstr "" +- +-#: config/s390/tpf.opt:27 +-#, fuzzy +-msgid "Specify main object for TPF-OS" +-msgstr "Especificar el nombre màxim d'iteracions per a RPTS" +- +-#: config/s390/s390.opt:23 +-#, fuzzy +-msgid "31 bit ABI" +-msgstr "Usar el ABI 64 bits" +- +-#: config/s390/s390.opt:27 +-#, fuzzy +-msgid "64 bit ABI" +-msgstr "Usar el ABI 64 bits" +- +-#: config/s390/s390.opt:31 config/i386/i386.opt:59 config/spu/spu.opt:60 +-msgid "Generate code for given CPU" +-msgstr "Generar codi per al CPU donat" +- +-#: config/s390/s390.opt:35 +-msgid "Maintain backchain pointer" +-msgstr "" +- +-#: config/s390/s390.opt:39 +-msgid "Additional debug prints" +-msgstr "Impressions addicionals de depuració" +- +-#: config/s390/s390.opt:43 +-msgid "ESA/390 architecture" +-msgstr "" +- +-#: config/s390/s390.opt:47 +-#, fuzzy +-msgid "Enable fused multiply/add instructions" +-msgstr "Generar instruccions multiply/add de curt circuit" +- +-#: config/s390/s390.opt:51 +-#, fuzzy +-msgid "Enable decimal floating point hardware support" +-msgstr "la constant de coma flotant hexadecimal requereixe un exponent" +- +-#: config/s390/s390.opt:55 +-#, fuzzy +-msgid "Enable hardware floating point" +-msgstr "Usar coma flotant de maquinari" +- +-#: config/s390/s390.opt:67 +-msgid "Use packed stack layout" +-msgstr "" +- +-#: config/s390/s390.opt:71 +-msgid "Use bras for executable < 64k" +-msgstr "Usar bras per a executable < 64k" +- +-#: config/s390/s390.opt:75 +-#, fuzzy +-msgid "Disable hardware floating point" +-msgstr "Usar coma flotant de maquinari" +- +-#: config/s390/s390.opt:79 +-msgid "Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered" +-msgstr "" +- +-#: config/s390/s390.opt:83 +-msgid "Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit" +-msgstr "" +- +-#: config/s390/s390.opt:87 config/ia64/ia64.opt:97 config/sparc/sparc.opt:95 +-#: config/i386/i386.opt:183 config/rs6000/rs6000.opt:226 config/spu/spu.opt:64 +-msgid "Schedule code for given CPU" +-msgstr "Codi de planificador per al CPU donat" +- +-#: config/s390/s390.opt:91 +-msgid "mvcle use" +-msgstr "ùs de mvcle" +- +-#: config/s390/s390.opt:95 +-msgid "Warn if a function uses alloca or creates an array with dynamic size" +-msgstr "" +- +-#: config/s390/s390.opt:99 +-msgid "Warn if a single function's framesize exceeds the given framesize" +-msgstr "" +- +-#: config/s390/s390.opt:103 +-msgid "z/Architecture" +-msgstr "" +- +-#: config/ia64/ilp32.opt:3 +-#, fuzzy +-msgid "Generate ILP32 code" +-msgstr "Generar codi 32 bit per a i386" +- +-#: config/ia64/ilp32.opt:7 +-#, fuzzy +-msgid "Generate LP64 code" +-msgstr "Generar codi 64 bit per a x86-64" +- +-#: config/ia64/ia64.opt:3 +-msgid "Generate big endian code" +-msgstr "Generar codi big endian" +- +-#: config/ia64/ia64.opt:7 +-msgid "Generate little endian code" +-msgstr "Generar codi little endian" +- +-#: config/ia64/ia64.opt:11 +-msgid "Generate code for GNU as" +-msgstr "Generar codi per a GNU as" +- +-#: config/ia64/ia64.opt:15 +-msgid "Generate code for GNU ld" +-msgstr "Generar codi per a GNU ld" +- +-#: config/ia64/ia64.opt:19 +-msgid "Emit stop bits before and after volatile extended asms" +-msgstr "Emetre bits de desocupada abans i després de asms estesos amb volatile" +- +-#: config/ia64/ia64.opt:23 +-msgid "Use in/loc/out register names" +-msgstr "Usar noms de registre in/loc/out" +- +-#: config/ia64/ia64.opt:30 +-msgid "Enable use of sdata/scommon/sbss" +-msgstr "Activar l'ús de sdata/scommon/sbss" +- +-#: config/ia64/ia64.opt:34 +-msgid "Generate code without GP reg" +-msgstr "Generar codi sense registre GP" +- +-#: config/ia64/ia64.opt:38 +-msgid "gp is constant (but save/restore gp on indirect calls)" +-msgstr "gp és constant (però hi ha save/restore de gp en crides indirectes)" +- +-#: config/ia64/ia64.opt:42 +-msgid "Generate self-relocatable code" +-msgstr "Generar codi self-relocatable" +- +-#: config/ia64/ia64.opt:46 +-msgid "Generate inline floating point division, optimize for latency" +-msgstr "Generar divisió de coma flotant «inline», optimitzar per a latència" +- +-#: config/ia64/ia64.opt:50 +-msgid "Generate inline floating point division, optimize for throughput" +-msgstr "Generar divisió de coma flotant «inline», optimitzar per a sortida" +- +-#: config/ia64/ia64.opt:57 +-msgid "Generate inline integer division, optimize for latency" +-msgstr "Generar divisió entera «inline», optimitzar per a latència" +- +-#: config/ia64/ia64.opt:61 +-msgid "Generate inline integer division, optimize for throughput" +-msgstr "Generar divisió entera «inline», optimitzar per a sortida" +- +-#: config/ia64/ia64.opt:65 +-#, fuzzy +-msgid "Do not inline integer division" +-msgstr "No avisar sobre la divisió entera per zero en temps de compilació" +- +-#: config/ia64/ia64.opt:69 +-msgid "Generate inline square root, optimize for latency" +-msgstr "Generar arrel quadrada «inline», optimitzar per a latència" +- +-#: config/ia64/ia64.opt:73 +-msgid "Generate inline square root, optimize for throughput" +-msgstr "Generar arrel quadrada «inline», optimitzar per a sortida" +- +-#: config/ia64/ia64.opt:77 +-#, fuzzy +-msgid "Do not inline square root" +-msgstr "No desactivar registres d'espai" +- +-#: config/ia64/ia64.opt:81 +-msgid "Enable Dwarf 2 line debug info via GNU as" +-msgstr "Activar la informació de la línia de depuració Dwarf2 a través com de GNU" +- +-#: config/ia64/ia64.opt:85 +-msgid "Enable earlier placing stop bits for better scheduling" +-msgstr "" +- +-#: config/ia64/ia64.opt:89 config/spu/spu.opt:56 config/pa/pa.opt:51 +-msgid "Specify range of registers to make fixed" +-msgstr "Especifica el rang de registres a convertir en fixos" +- +-#: config/ia64/ia64.opt:101 +-#, fuzzy +-msgid "Use data speculation before reload" +-msgstr "Permetre el moviment especulatiu de més càrregues" +- +-#: config/ia64/ia64.opt:105 +-msgid "Use data speculation after reload" +-msgstr "" +- +-#: config/ia64/ia64.opt:109 +-#, fuzzy +-msgid "Use control speculation" +-msgstr "Crear una aplicació de consola" +- +-#: config/ia64/ia64.opt:113 +-msgid "Use in block data speculation before reload" +-msgstr "" +- +-#: config/ia64/ia64.opt:117 +-msgid "Use in block data speculation after reload" +-msgstr "" +- +-#: config/ia64/ia64.opt:121 +-msgid "Use in block control speculation" +-msgstr "" +- +-#: config/ia64/ia64.opt:125 +-msgid "Use simple data speculation check" +-msgstr "" +- +-#: config/ia64/ia64.opt:129 +-msgid "Use simple data speculation check for control speculation" +-msgstr "" +- +-#: config/ia64/ia64.opt:133 +-msgid "Print information about speculative motions." +-msgstr "" +- +-#: config/ia64/ia64.opt:137 +-msgid "If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment " +-msgstr "" +- +-#: config/ia64/ia64.opt:141 +-msgid "If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment " +-msgstr "" +- +-#: config/ia64/ia64.opt:145 +-msgid "Count speculative dependencies while calculating priority of instructions" +-msgstr "" +- +-#: config/m32c/m32c.opt:24 config/bfin/bfin.opt:23 config/mt/mt.opt:27 +-msgid "Use simulator runtime" +-msgstr "" +- +-#: config/m32c/m32c.opt:28 +-#, fuzzy +-msgid "Compile code for R8C variants" +-msgstr "Compilar per a punters de 64-bit" +- +-#: config/m32c/m32c.opt:32 +-#, fuzzy +-msgid "Compile code for M16C variants" +-msgstr "Compilar per a punters de 64-bit" +- +-#: config/m32c/m32c.opt:36 +-#, fuzzy +-msgid "Compile code for M32CM variants" +-msgstr "Compilar per a punters de 32-bit" +- +-#: config/m32c/m32c.opt:40 +-#, fuzzy +-msgid "Compile code for M32C variants" +-msgstr "Compilar per a punters de 32-bit" +- +-#: config/m32c/m32c.opt:44 +-msgid "Number of memreg bytes (default: 16, range: 0..16)" +-msgstr "" +- +-#: config/sparc/little-endian.opt:23 +-#, fuzzy +-msgid "Generate code for little-endian" +-msgstr "Generar codi per a little endian" +- +-#: config/sparc/little-endian.opt:27 +-#, fuzzy +-msgid "Generate code for big-endian" +-msgstr "Generar codi per a big endian" +- +-#: config/sparc/sparc.opt:23 config/sparc/sparc.opt:27 +-#, fuzzy +-msgid "Use hardware FP" +-msgstr "Usar fp de maquinari" +- +-#: config/sparc/sparc.opt:31 +-#, fuzzy +-msgid "Do not use hardware FP" +-msgstr "No usar fp de maquinari" +- +-#: config/sparc/sparc.opt:35 +-msgid "Assume possible double misalignment" +-msgstr "Assumir desalineació de double possible" +- +-#: config/sparc/sparc.opt:39 +-msgid "Pass -assert pure-text to linker" +-msgstr "Passar el text pur de -assert al enllaçador" +- +-#: config/sparc/sparc.opt:43 +-msgid "Use ABI reserved registers" +-msgstr "Usar els registres ABI reservats" +- +-#: config/sparc/sparc.opt:47 +-#, fuzzy +-msgid "Use hardware quad FP instructions" +-msgstr "Usar instruccions de fp quad de maquinari" +- +-#: config/sparc/sparc.opt:51 +-msgid "Do not use hardware quad fp instructions" +-msgstr "No usar instruccions de fp quad de maquinari" +- +-#: config/sparc/sparc.opt:55 +-#, fuzzy +-msgid "Compile for V8+ ABI" +-msgstr "Compilar per a el ABI de v8plus" +- +-#: config/sparc/sparc.opt:59 +-#, fuzzy +-msgid "Use UltraSPARC Visual Instruction Set extensions" +-msgstr "Utilitzar el Conjunt d'Instruccions Visuals" +- +-#: config/sparc/sparc.opt:63 +-msgid "Pointers are 64-bit" +-msgstr "El punters són de 64 bits" +- +-#: config/sparc/sparc.opt:67 +-msgid "Pointers are 32-bit" +-msgstr "El punters són de 32 bits" +- +-#: config/sparc/sparc.opt:71 +-msgid "Use 64-bit ABI" +-msgstr "Usar el ABI 64 bits" +- +-#: config/sparc/sparc.opt:75 +-msgid "Use 32-bit ABI" +-msgstr "Usar el ABI 32 bits" +- +-#: config/sparc/sparc.opt:79 +-msgid "Use stack bias" +-msgstr "Usar tendència de la pila" +- +-#: config/sparc/sparc.opt:83 +-msgid "Use structs on stronger alignment for double-word copies" +-msgstr "Usar structs en alineació més forta per a còpies double-word" +- +-#: config/sparc/sparc.opt:87 +-msgid "Optimize tail call instructions in assembler and linker" +-msgstr "Optimitzar les instruccions de la crida extrem en l'ensamblador i l'enllaçador" +- +-#: config/sparc/sparc.opt:91 config/rs6000/rs6000.opt:222 +-msgid "Use features of and schedule code for given CPU" +-msgstr "Usar característiques i calendaritzar el codi per al CPU donat" +- +-#: config/sparc/sparc.opt:99 +-#, fuzzy +-msgid "Use given SPARC-V9 code model" +-msgstr "Usar el model de codi del SPARC donat" +- +-#: config/sparc/sparc.opt:103 +-msgid "Enable strict 32-bit psABI struct return checking." +-msgstr "" +- +-#: config/m32r/m32r.opt:23 +-#, fuzzy +-msgid "Compile for the m32rx" +-msgstr "Compilar per a un 68HC12" +- +-#: config/m32r/m32r.opt:27 +-#, fuzzy +-msgid "Compile for the m32r2" +-msgstr "Compilar per a un 68HC12" +- +-#: config/m32r/m32r.opt:31 +-#, fuzzy +-msgid "Compile for the m32r" +-msgstr "Compilar per a un 68HC12" +- +-#: config/m32r/m32r.opt:35 +-msgid "Align all loops to 32 byte boundary" +-msgstr "Alinear tots els cicles al límit de 32 octet" +- +-#: config/m32r/m32r.opt:39 +-msgid "Prefer branches over conditional execution" +-msgstr "Preferir les branques sobre l'execució condicional" +- +-#: config/m32r/m32r.opt:43 +-msgid "Give branches their default cost" +-msgstr "" +- +-#: config/m32r/m32r.opt:47 +-msgid "Display compile time statistics" +-msgstr "Mostrar estadístiques de tepms de compilació" +- +-#: config/m32r/m32r.opt:51 +-msgid "Specify cache flush function" +-msgstr "Especificar una funció de neteja de memòria cau" +- +-#: config/m32r/m32r.opt:55 +-#, fuzzy +-msgid "Specify cache flush trap number" +-msgstr "Especificar una funció de neteja de memòria cau" +- +-#: config/m32r/m32r.opt:59 +-msgid "Only issue one instruction per cycle" +-msgstr "Només executar una instrucció per cicle" +- +-#: config/m32r/m32r.opt:63 +-#, fuzzy +-msgid "Allow two instructions to be issued per cycle" +-msgstr "Només executar una instrucció per cicle" +- +-#: config/m32r/m32r.opt:67 +-msgid "Code size: small, medium or large" +-msgstr "Grandària del codi: small, medium o large" +- +-#: config/m32r/m32r.opt:71 +-msgid "Don't call any cache flush functions" +-msgstr "No cridar cap funció de neteja de memòria cau" +- +-#: config/m32r/m32r.opt:75 +-#, fuzzy +-msgid "Don't call any cache flush trap" +-msgstr "No cridar cap funció de neteja de memòria cau" +- +-#: config/m32r/m32r.opt:82 +-msgid "Small data area: none, sdata, use" +-msgstr " Àrea de dades small: none, sdata, use" +- +-#: config/m68k/m68k.opt:23 +-msgid "Generate code for a 520X" +-msgstr "Generar codi per a un 520X" +- +-#: config/m68k/m68k.opt:27 +-#, fuzzy +-msgid "Generate code for a 5206e" +-msgstr "Generar codi per a un 520X" +- +-#: config/m68k/m68k.opt:31 +-#, fuzzy +-msgid "Generate code for a 528x" +-msgstr "Generar codi per a un 520X" +- +-#: config/m68k/m68k.opt:35 +-#, fuzzy +-msgid "Generate code for a 5307" +-msgstr "Generar codi per a un 520X" +- +-#: config/m68k/m68k.opt:39 +-#, fuzzy +-msgid "Generate code for a 5407" +-msgstr "Generar codi per a un 520X" +- +-#: config/m68k/m68k.opt:43 config/m68k/m68k.opt:104 +-msgid "Generate code for a 68000" +-msgstr "Generar codi per a un 68000" +- +-#: config/m68k/m68k.opt:47 +-#, fuzzy +-msgid "Generate code for a 68010" +-msgstr "Generar codi per a un 68020" +- +-#: config/m68k/m68k.opt:51 config/m68k/m68k.opt:108 +-msgid "Generate code for a 68020" +-msgstr "Generar codi per a un 68020" +- +-#: config/m68k/m68k.opt:55 +-msgid "Generate code for a 68040, without any new instructions" +-msgstr "Generar codi per a un 68040, sense cap instrucció nova" +- +-#: config/m68k/m68k.opt:59 +-msgid "Generate code for a 68060, without any new instructions" +-msgstr "Generar codi per a un 68060, sense cap instrucció nova" +- +-#: config/m68k/m68k.opt:63 +-msgid "Generate code for a 68030" +-msgstr "Generar codi per a un 68030" +- +-#: config/m68k/m68k.opt:67 +-msgid "Generate code for a 68040" +-msgstr "Generar codi per a un 68040" +- +-#: config/m68k/m68k.opt:71 +-msgid "Generate code for a 68060" +-msgstr "Generar codi per a un 68060" +- +-#: config/m68k/m68k.opt:75 +-msgid "Generate code for a 68302" +-msgstr "Generar codi per a un 68302" +- +-#: config/m68k/m68k.opt:79 +-msgid "Generate code for a 68332" +-msgstr "Generar codi per a un 68332" +- +-#: config/m68k/m68k.opt:84 +-msgid "Generate code for a 68851" +-msgstr "Generar codi per a un 68851" +- +-#: config/m68k/m68k.opt:88 +-#, fuzzy +-msgid "Generate code that uses 68881 floating-point instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/m68k/m68k.opt:92 +-msgid "Align variables on a 32-bit boundary" +-msgstr "Alinear les variables en un límit de 32-bit" +- +-#: config/m68k/m68k.opt:96 config/arm/arm.opt:49 config/score/score.opt:63 +-msgid "Specify the name of the target architecture" +-msgstr "Especificar el nom de l'arquitectura destinació" +- +-#: config/m68k/m68k.opt:100 +-msgid "Use the bit-field instructions" +-msgstr "Usar instruccions de camps de bit" +- +-#: config/m68k/m68k.opt:112 +-#, fuzzy +-msgid "Generate code for a ColdFire v4e" +-msgstr "Generar codi per a M*Core M340" +- +-#: config/m68k/m68k.opt:116 +-#, fuzzy +-msgid "Specify the target CPU" +-msgstr "Especificar el nom del CPU destinació" +- +-#: config/m68k/m68k.opt:120 +-msgid "Generate code for a cpu32" +-msgstr "Generar codi per a un cpu32" +- +-#: config/m68k/m68k.opt:124 +-#, fuzzy +-msgid "Use hardware division instructions on ColdFire" +-msgstr "Usar instruccions de fp quad de maquinari" +- +-#: config/m68k/m68k.opt:128 +-#, fuzzy +-msgid "Generate code for a Fido A" +-msgstr "Generar codi per a un Sun FPA" +- +-#: config/m68k/m68k.opt:132 +-#, fuzzy +-msgid "Generate code which uses hardware floating point instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/m68k/m68k.opt:136 +-msgid "Enable ID based shared library" +-msgstr "" +- +-#: config/m68k/m68k.opt:140 +-msgid "Do not use the bit-field instructions" +-msgstr "No usar instruccions de camps de bit" +- +-#: config/m68k/m68k.opt:144 +-msgid "Use normal calling convention" +-msgstr "Usar convenció de cridada normal" +- +-#: config/m68k/m68k.opt:148 +-#, fuzzy +-msgid "Consider type 'int' to be 32 bits wide" +-msgstr "Considerar que el tipus \"int\" és de 32 bits d'amplària" +- +-#: config/m68k/m68k.opt:152 +-msgid "Generate pc-relative code" +-msgstr "Generar codi relatiu al pc" +- +-#: config/m68k/m68k.opt:156 +-msgid "Use different calling convention using 'rtd'" +-msgstr "Usar la convenció de cridada diferent usant 'rtd'" +- +-#: config/m68k/m68k.opt:160 config/bfin/bfin.opt:61 +-msgid "Enable separate data segment" +-msgstr "" +- +-#: config/m68k/m68k.opt:164 config/bfin/bfin.opt:57 +-msgid "ID of shared library to build" +-msgstr "" +- +-#: config/m68k/m68k.opt:168 +-#, fuzzy +-msgid "Consider type 'int' to be 16 bits wide" +-msgstr "Considerar que el tipus \"int\" és de 16 bits d'amplària" +- +-#: config/m68k/m68k.opt:172 +-msgid "Generate code with library calls for floating point" +-msgstr "Generar codi amb crides a biblioteques per a coma flotant" +- +-#: config/m68k/m68k.opt:176 +-msgid "Do not use unaligned memory references" +-msgstr "No permetre referències a memòria sense alinear" +- +-#: config/m68k/m68k.opt:180 +-#, fuzzy +-msgid "Tune for the specified target CPU or architecture" +-msgstr "Especificar el nom de l'arquitectura destinació" +- +-#: config/m68k/ieee.opt:24 config/i386/i386.opt:95 +-msgid "Use IEEE math for fp comparisons" +-msgstr "Usar matemàtica IEEE per a comparances fp" +- +-#: config/i386/djgpp.opt:25 +-msgid "Ignored (obsolete)" +-msgstr "" +- +-#: config/i386/i386.opt:23 +-msgid "sizeof(long double) is 16" +-msgstr "sizeof(long double) és 16." +- +-#: config/i386/i386.opt:27 config/i386/i386.opt:91 +-msgid "Use hardware fp" +-msgstr "Usar fp de maquinari" +- +-#: config/i386/i386.opt:31 +-msgid "sizeof(long double) is 12" +-msgstr "sizeof(long double) és 12." +- +-#: config/i386/i386.opt:35 +-msgid "Reserve space for outgoing arguments in the function prologue" +-msgstr "" +- +-#: config/i386/i386.opt:39 +-msgid "Align some doubles on dword boundary" +-msgstr "Alinear alguns dobles en límits de dword" +- +-#: config/i386/i386.opt:43 +-msgid "Function starts are aligned to this power of 2" +-msgstr "Els inicis de les funcions són alineats a aquesta potència de 2" +- +-#: config/i386/i386.opt:47 +-msgid "Jump targets are aligned to this power of 2" +-msgstr "Els objectius de salt són alineats a aquesta potència de 2" +- +-#: config/i386/i386.opt:51 +-msgid "Loop code aligned to this power of 2" +-msgstr "El codi de cicle és alineat a aquesta potència de 2" +- +-#: config/i386/i386.opt:55 +-msgid "Align destination of the string operations" +-msgstr "Alinear destinació de les operacions de cadenes" +- +-#: config/i386/i386.opt:63 +-msgid "Use given assembler dialect" +-msgstr "Usar el dialecte de l'ensamblador donat" +- +-#: config/i386/i386.opt:67 +-msgid "Branches are this expensive (1-5, arbitrary units)" +-msgstr "Les ramificacions són així de cares (1-5, unitats arbitràries)" +- +-#: config/i386/i386.opt:71 +-msgid "Data greater than given threshold will go into .ldata section in x86-64 medium model" +-msgstr "" +- +-#: config/i386/i386.opt:75 +-msgid "Use given x86-64 code model" +-msgstr "Usar el mpdel de codi x86-64 donat" +- +-#: config/i386/i386.opt:79 +-msgid "Generate sin, cos, sqrt for FPU" +-msgstr "Generar sin, cos, sqrt per a FPU" +- +-#: config/i386/i386.opt:83 +-msgid "Return values of functions in FPU registers" +-msgstr "Retornar valors de funcions en registres FPU" +- +-#: config/i386/i386.opt:87 +-msgid "Generate floating point mathematics using given instruction set" +-msgstr "Generar matemàtiques de coma flotant usant el conjunt d'instruccions donat" +- +-#: config/i386/i386.opt:99 +-msgid "Inline all known string operations" +-msgstr "Convertir a «inline» totes les operacions de cadenes conegudes" +- +-#: config/i386/i386.opt:103 +-msgid "Inline memset/memcpy string operations, but perform inline version only for small blocks" +-msgstr "" +- +-#: config/i386/i386.opt:111 +-msgid "Use native (MS) bitfield layout" +-msgstr "" +- +-#: config/i386/i386.opt:127 +-msgid "Omit the frame pointer in leaf functions" +-msgstr "Ometre el marc de referència per a les funcions fulles" +- +-#: config/i386/i386.opt:131 +-msgid "Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)" +-msgstr "" +- +-#: config/i386/i386.opt:135 +-msgid "Attempt to keep stack aligned to this power of 2" +-msgstr "Es tracta de mantenir la pila alineada a aquesta potència de 2" +- +-#: config/i386/i386.opt:139 +-msgid "Use push instructions to save outgoing arguments" +-msgstr "Usar instruccions push per a guardar els arguments de sortida" +- +-#: config/i386/i386.opt:143 +-msgid "Use red-zone in the x86-64 code" +-msgstr "Usar red-zone en el codi x86-64" +- +-#: config/i386/i386.opt:147 +-msgid "Number of registers used to pass integer arguments" +-msgstr "Nombre de registres usats per a passar arguments enters" +- +-#: config/i386/i386.opt:151 +-msgid "Alternate calling convention" +-msgstr "Convenció de cridada alternativa" +- +-#: config/i386/i386.opt:159 +-msgid "Use SSE register passing conventions for SF and DF mode" +-msgstr "" +- +-#: config/i386/i386.opt:163 +-msgid "Realign stack in prologue" +-msgstr "" +- +-#: config/i386/i386.opt:167 +-msgid "Enable stack probing" +-msgstr "Habilitar la prova de la pila" +- +-#: config/i386/i386.opt:171 +-msgid "Chose strategy to generate stringop using" +-msgstr "" +- +-#: config/i386/i386.opt:175 +-msgid "Use given thread-local storage dialect" +-msgstr "Usar el dialecte d'emmagatzematge thread-local donat" +- +-#: config/i386/i386.opt:179 +-#, c-format +-msgid "Use direct references against %gs when accessing tls data" +-msgstr "" +- +-#: config/i386/i386.opt:187 +-#, fuzzy +-msgid "Vector library ABI to use" +-msgstr "Especificar el ABI a utilitzar" +- +-#: config/i386/i386.opt:193 +-msgid "Generate 32bit i386 code" +-msgstr "Generar codi 32 bit per a i386" +- +-#: config/i386/i386.opt:197 +-msgid "Generate 64bit x86-64 code" +-msgstr "Generar codi 64 bit per a x86-64" +- +-#: config/i386/i386.opt:201 +-msgid "Support MMX built-in functions" +-msgstr "Donar suport per a funcions internes MMX" +- +-#: config/i386/i386.opt:205 +-msgid "Support 3DNow! built-in functions" +-msgstr "Donar suport per a funcions internes 3DNow!" +- +-#: config/i386/i386.opt:209 +-#, fuzzy +-msgid "Support Athlon 3Dnow! built-in functions" +-msgstr "Donar suport per a funcions internes 3DNow!" +- +-#: config/i386/i386.opt:213 +-msgid "Support MMX and SSE built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX i SSE i generació de codi" +- +-#: config/i386/i386.opt:217 +-msgid "Support MMX, SSE and SSE2 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE i SSE2 i generació de codi" +- +-#: config/i386/i386.opt:221 +-msgid "Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE, SSE2 i SSE3 i generació de codi" +- +-#: config/i386/i386.opt:225 +-#, fuzzy +-msgid "Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE, SSE2 i SSE3 i generació de codi" +- +-#: config/i386/i386.opt:229 +-#, fuzzy +-msgid "Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE, SSE2 i SSE3 i generació de codi" +- +-#: config/i386/i386.opt:233 config/i386/i386.opt:237 +-#, fuzzy +-msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE, SSE2 i SSE3 i generació de codi" +- +-#: config/i386/i386.opt:241 +-#, fuzzy +-msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation" +-msgstr "No donar suport per a funcions internes MMX, SSE i SSE2 i generació de codi" +- +-#: config/i386/i386.opt:245 +-#, fuzzy +-msgid "Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX, SSE, SSE2 i SSE3 i generació de codi" +- +-#: config/i386/i386.opt:249 +-#, fuzzy +-msgid "Support SSE5 built-in functions and code generation" +-msgstr "Donar suport per a funcions internes MMX i SSE i generació de codi" +- +-#: config/i386/i386.opt:255 +-msgid "Support code generation of Advanced Bit Manipulation (ABM) instructions." +-msgstr "" +- +-#: config/i386/i386.opt:259 +-#, fuzzy +-msgid "Support code generation of cmpxchg16b instruction." +-msgstr "No generar instruccions char" +- +-#: config/i386/i386.opt:263 +-#, fuzzy +-msgid "Support code generation of popcnt instruction." +-msgstr "No generar instruccions char" +- +-#: config/i386/i386.opt:267 +-msgid "Support code generation of sahf instruction in 64bit x86-64 code." +-msgstr "" +- +-#: config/i386/i386.opt:271 +-msgid "Generate reciprocals instead of divss and sqrtss." +-msgstr "" +- +-#: config/i386/i386.opt:275 +-#, fuzzy +-msgid "Enable automatic generation of fused floating point multiply-add instructions" +-msgstr "No generar instruccions multiply/add de curt circuit" +- +-#: config/i386/cygming.opt:23 +-msgid "Create console application" +-msgstr "Crear una aplicació de consola" +- +-#: config/i386/cygming.opt:27 +-msgid "Use the Cygwin interface" +-msgstr "Usar la interfície Cygwin" +- +-#: config/i386/cygming.opt:31 +-msgid "Generate code for a DLL" +-msgstr "Generar codi per a una DLL" +- +-#: config/i386/cygming.opt:35 +-msgid "Ignore dllimport for functions" +-msgstr "Ignorar dllimport per a funcions" +- +-#: config/i386/cygming.opt:39 +-msgid "Use Mingw-specific thread support" +-msgstr "Usar suport de fils específic de Mingw" +- +-#: config/i386/cygming.opt:43 +-msgid "Set Windows defines" +-msgstr "Establir les definicions de Windows" +- +-#: config/i386/cygming.opt:47 +-msgid "Create GUI application" +-msgstr "Crear una aplicació amb interfície gràfica d'usuari (GUI)" +- +-#: config/i386/sco5.opt:24 +-msgid "Generate ELF output" +-msgstr "Generar sortida ELF" +- +-#: config/rs6000/aix41.opt:24 config/rs6000/aix64.opt:32 +-msgid "Support message passing with the Parallel Environment" +-msgstr "Suport per al pas de missatges amb l'Ambient Paral·lel" +- +-#: config/rs6000/aix.opt:24 config/rs6000/rs6000.opt:147 +-msgid "Conform more closely to IBM XLC semantics" +-msgstr "" +- +-#: config/rs6000/darwin.opt:24 config/rs6000/sysv4.opt:132 +-#, fuzzy +-msgid "Generate 64-bit code" +-msgstr "Generar codi 64 bit per a x86-64" +- +-#: config/rs6000/darwin.opt:28 config/rs6000/sysv4.opt:136 +-#, fuzzy +-msgid "Generate 32-bit code" +-msgstr "Generar codi 32 bit per a i386" +- +-#: config/rs6000/darwin.opt:32 +-msgid "Generate code suitable for executables (NOT shared libs)" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:24 +-msgid "Use POWER instruction set" +-msgstr "Usar el conjunt d'instruccions POWER" +- +-#: config/rs6000/rs6000.opt:28 +-msgid "Do not use POWER instruction set" +-msgstr "No usar el conjunt d'instruccions POWER" +- +-#: config/rs6000/rs6000.opt:32 +-msgid "Use POWER2 instruction set" +-msgstr "Usar el conjunt d'instruccions POWER2" +- +-#: config/rs6000/rs6000.opt:36 +-msgid "Use PowerPC instruction set" +-msgstr "Usar el conjunt d'instruccions PowerPC" +- +-#: config/rs6000/rs6000.opt:40 +-msgid "Do not use PowerPC instruction set" +-msgstr "No usar el conjunt d'instruccions PowerPC" +- +-#: config/rs6000/rs6000.opt:44 +-msgid "Use PowerPC-64 instruction set" +-msgstr "Usar el conjunt d'instruccions PowerPC-64" +- +-#: config/rs6000/rs6000.opt:48 +-msgid "Use PowerPC General Purpose group optional instructions" +-msgstr "Usar el grup opcional d'instruccions PowerPC de Propòsit General" +- +-#: config/rs6000/rs6000.opt:52 +-msgid "Use PowerPC Graphics group optional instructions" +-msgstr "Usar el grup opcional d'instruccions PowerPC de Gràfiques" +- +-#: config/rs6000/rs6000.opt:56 +-#, fuzzy +-msgid "Use PowerPC V2.01 single field mfcr instruction" +-msgstr "Generar instruccions char" +- +-#: config/rs6000/rs6000.opt:60 +-#, fuzzy +-msgid "Use PowerPC V2.02 popcntb instruction" +-msgstr "Usar el conjunt d'instruccions PowerPC" +- +-#: config/rs6000/rs6000.opt:64 +-#, fuzzy +-msgid "Use PowerPC V2.02 floating point rounding instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/rs6000/rs6000.opt:68 +-#, fuzzy +-msgid "Use PowerPC V2.05 compare bytes instruction" +-msgstr "Usar el conjunt d'instruccions PowerPC" +- +-#: config/rs6000/rs6000.opt:72 +-#, fuzzy +-msgid "Use extended PowerPC V2.05 move floating point to/from GPR instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/rs6000/rs6000.opt:76 +-msgid "Use AltiVec instructions" +-msgstr "Usar instruccions AltiVec" +- +-#: config/rs6000/rs6000.opt:80 +-#, fuzzy +-msgid "Use decimal floating point instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/rs6000/rs6000.opt:84 +-#, fuzzy +-msgid "Use 4xx half-word multiply instructions" +-msgstr "Generar instruccions multiply/add de curt circuit" +- +-#: config/rs6000/rs6000.opt:88 +-#, fuzzy +-msgid "Use 4xx string-search dlmzb instruction" +-msgstr "Usar instruccions AltiVec" +- +-#: config/rs6000/rs6000.opt:92 +-msgid "Generate load/store multiple instructions" +-msgstr "Generar múltiples instruccions load/store" +- +-#: config/rs6000/rs6000.opt:96 +-msgid "Generate string instructions for block moves" +-msgstr "Generar instruccions de cadena per a moviment de blocs" +- +-#: config/rs6000/rs6000.opt:100 +-msgid "Use new mnemonics for PowerPC architecture" +-msgstr "Usar els mnemònics nous per a l'arquitectura PowerPC" +- +-#: config/rs6000/rs6000.opt:104 +-msgid "Use old mnemonics for PowerPC architecture" +-msgstr "Usar els mnemònics vells per a l'arquitectura PowerPC" +- +-#: config/rs6000/rs6000.opt:108 config/pdp11/pdp11.opt:83 +-msgid "Do not use hardware floating point" +-msgstr "No usa coma flotant de maquinari" +- +-#: config/rs6000/rs6000.opt:116 +-msgid "Do not generate load/store with update instructions" +-msgstr "No generar load/store amb instruccions d'actualització" +- +-#: config/rs6000/rs6000.opt:120 +-msgid "Generate load/store with update instructions" +-msgstr "Generar load/store amb instruccions d'actualització" +- +-#: config/rs6000/rs6000.opt:124 +-#, fuzzy +-msgid "Do not generate fused multiply/add instructions" +-msgstr "No generar instruccions multiply/add de curt circuit" +- +-#: config/rs6000/rs6000.opt:128 +-msgid "Generate fused multiply/add instructions" +-msgstr "Generar instruccions multiply/add de curt circuit" +- +-#: config/rs6000/rs6000.opt:132 +-#, fuzzy +-msgid "Schedule the start and end of the procedure" +-msgstr "No calendaritzar l'inici i el final del procediment" +- +-#: config/rs6000/rs6000.opt:139 +-msgid "Return all structures in memory (AIX default)" +-msgstr "Regressar totes les estructures en memòria (per omissió en AIX)" +- +-#: config/rs6000/rs6000.opt:143 +-msgid "Return small structures in registers (SVR4 default)" +-msgstr "Regressar les petites estructures en registres (per omissió en SVR4)" +- +-#: config/rs6000/rs6000.opt:151 +-#, fuzzy +-msgid "Generate software reciprocal sqrt for better throughput" +-msgstr "Generar arrel quadrada «inline», optimitzar per a sortida" +- +-#: config/rs6000/rs6000.opt:155 +-#, fuzzy +-msgid "Do not place floating point constants in TOC" +-msgstr "No col·locar les constants de coma flotant en TOC" +- +-#: config/rs6000/rs6000.opt:159 +-msgid "Place floating point constants in TOC" +-msgstr "Col·locar les constants de coma flotant en TOC" +- +-#: config/rs6000/rs6000.opt:163 +-#, fuzzy +-msgid "Do not place symbol+offset constants in TOC" +-msgstr "No col·locar les constants símbol+desplaçament en TOC" +- +-#: config/rs6000/rs6000.opt:167 +-msgid "Place symbol+offset constants in TOC" +-msgstr "Col·locar les constants símbol+desplaçament en TOC" +- +-#: config/rs6000/rs6000.opt:178 +-msgid "Use only one TOC entry per procedure" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:182 +-msgid "Put everything in the regular TOC" +-msgstr "Col·locar tot en el TOC normal" +- +-#: config/rs6000/rs6000.opt:186 +-msgid "Generate VRSAVE instructions when generating AltiVec code" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:190 +-msgid "Deprecated option. Use -mvrsave/-mno-vrsave instead" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:194 +-#, fuzzy +-msgid "Generate isel instructions" +-msgstr "Generar instruccions char" +- +-#: config/rs6000/rs6000.opt:198 +-msgid "Deprecated option. Use -misel/-mno-isel instead" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:202 +-#, fuzzy +-msgid "Generate SPE SIMD instructions on E500" +-msgstr "Generar instruccions char" +- +-#: config/rs6000/rs6000.opt:206 +-#, fuzzy +-msgid "Generate PPC750CL paired-single instructions" +-msgstr "Generar instruccions char" +- +-#: config/rs6000/rs6000.opt:210 +-msgid "Deprecated option. Use -mspe/-mno-spe instead" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:214 +-msgid "Enable debug output" +-msgstr "Activar la sortida de depuració" +- +-#: config/rs6000/rs6000.opt:218 +-msgid "Specify ABI to use" +-msgstr "Especificar el ABI a utilitzar" +- +-#: config/rs6000/rs6000.opt:230 +-msgid "Select full, part, or no traceback table" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:234 +-#, fuzzy +-msgid "Avoid all range limits on call instructions" +-msgstr "Evitar tots els límits de rang en les instruccions de crides" +- +-#: config/rs6000/rs6000.opt:238 +-msgid "Warn about deprecated 'vector long ...' AltiVec type usage" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:242 +-msgid "Select GPR floating point method" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:246 +-msgid "Specify size of long double (64 or 128 bits)" +-msgstr "Especificar la grandària de long double (64 o 128 bits)" +- +-#: config/rs6000/rs6000.opt:250 +-msgid "Determine which dependences between insns are considered costly" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:254 +-msgid "Specify which post scheduling nop insertion scheme to apply" +-msgstr "" +- +-#: config/rs6000/rs6000.opt:258 +-#, fuzzy +-msgid "Specify alignment of structure fields default/natural" +-msgstr "Especificar l'alineació mínima de bit de les estructures" +- +-#: config/rs6000/rs6000.opt:262 +-msgid "Specify scheduling priority for dispatch slot restricted insns" +-msgstr "" +- +-#: config/rs6000/aix64.opt:24 +-msgid "Compile for 64-bit pointers" +-msgstr "Compilar per a punters de 64-bit" +- +-#: config/rs6000/aix64.opt:28 +-msgid "Compile for 32-bit pointers" +-msgstr "Compilar per a punters de 32-bit" +- +-#: config/rs6000/linux64.opt:24 +-#, fuzzy +-msgid "Call mcount for profiling before a function prologue" +-msgstr "No moure les instruccions al pròleg d'una funció" +- +-#: config/rs6000/sysv4.opt:24 +-msgid "Select ABI calling convention" +-msgstr "Seleccionar la convenció de cridada ABI" +- +-#: config/rs6000/sysv4.opt:28 +-msgid "Select method for sdata handling" +-msgstr "Seleccionar el mètode per al maneig de sdata" +- +-#: config/rs6000/sysv4.opt:36 config/rs6000/sysv4.opt:40 +-msgid "Align to the base type of the bit-field" +-msgstr "Alinear al tipus base del camp de bit" +- +-#: config/rs6000/sysv4.opt:45 config/rs6000/sysv4.opt:49 +-msgid "Produce code relocatable at runtime" +-msgstr "Produir codi re-ubicable en el moment d'execució" +- +-#: config/rs6000/sysv4.opt:53 config/rs6000/sysv4.opt:57 +-msgid "Produce little endian code" +-msgstr "Produir codi little endian" +- +-#: config/rs6000/sysv4.opt:61 config/rs6000/sysv4.opt:65 +-msgid "Produce big endian code" +-msgstr "Produir codi big endian" +- +-#: config/rs6000/sysv4.opt:70 config/rs6000/sysv4.opt:74 +-#: config/rs6000/sysv4.opt:83 config/rs6000/sysv4.opt:100 +-#: config/rs6000/sysv4.opt:128 config/rs6000/sysv4.opt:140 +-msgid "no description yet" +-msgstr "sense descripció encara" +- +-#: config/rs6000/sysv4.opt:78 +-msgid "Assume all variable arg functions are prototyped" +-msgstr "" +- +-#: config/rs6000/sysv4.opt:87 +-msgid "Use EABI" +-msgstr "Usar EABI" +- +-#: config/rs6000/sysv4.opt:91 +-#, fuzzy +-msgid "Allow bit-fields to cross word boundaries" +-msgstr "No permetre que els camps de bits creuin els límits de word" +- +-#: config/rs6000/sysv4.opt:95 +-msgid "Use alternate register names" +-msgstr "Usar noms de registre alternats" +- +-#: config/rs6000/sysv4.opt:104 +-msgid "Link with libsim.a, libc.a and sim-crt0.o" +-msgstr "Enllaçar amb libsim.a, libc.a i sim-crt0.o" +- +-#: config/rs6000/sysv4.opt:108 +-msgid "Link with libads.a, libc.a and crt0.o" +-msgstr "Enllaçar amb libads.a, libc.a i crt0.o" +- +-#: config/rs6000/sysv4.opt:112 +-msgid "Link with libyk.a, libc.a and crt0.o" +-msgstr "Enllaçar amb libyk.a, libc.a i crt0.o" +- +-#: config/rs6000/sysv4.opt:116 +-msgid "Link with libmvme.a, libc.a and crt0.o" +-msgstr "Enllaçar amb libmvme.a, libc.a i crt0.o" +- +-#: config/rs6000/sysv4.opt:120 +-msgid "Set the PPC_EMB bit in the ELF flags header" +-msgstr "Activar el bit PPC_EMB en els interruptors de l'encapçalat ELF" +- +-#: config/rs6000/sysv4.opt:124 +-msgid "Use the WindISS simulator" +-msgstr "" +- +-#: config/rs6000/sysv4.opt:144 +-#, fuzzy +-msgid "Generate code to use a non-exec PLT and GOT" +-msgstr "Generar codi per a un Sun Sky board" +- +-#: config/rs6000/sysv4.opt:148 +-#, fuzzy +-msgid "Generate code for old exec BSS PLT" +-msgstr "Generar codi per a un Sun FPA" +- +-#: config/spu/spu.opt:20 +-msgid "Emit warnings when run-time relocations are generated" +-msgstr "" +- +-#: config/spu/spu.opt:24 +-msgid "Emit errors when run-time relocations are generated" +-msgstr "" +- +-#: config/spu/spu.opt:28 +-msgid "Specify cost of branches (Default 20)" +-msgstr "" +- +-#: config/spu/spu.opt:32 +-#, fuzzy +-msgid "Make sure loads and stores are not moved past DMA instructions" +-msgstr "Generar load/store amb instruccions d'actualització" +- +-#: config/spu/spu.opt:36 +-msgid "volatile must be specified on any memory that is effected by DMA" +-msgstr "" +- +-#: config/spu/spu.opt:40 +-#, fuzzy +-msgid "Use standard main function as entry for startup" +-msgstr "Usar jsr i rts per a crides i retorns de funció" +- +-#: config/spu/spu.opt:44 +-#, fuzzy +-msgid "Generate branch hints for branches" +-msgstr "Generar instruccions de cadena per a moviment de blocs" +- +-#: config/spu/spu.opt:48 +-#, fuzzy +-msgid "Generate code for 18 bit addressing" +-msgstr "Generar codi per a big endian" +- +-#: config/spu/spu.opt:52 +-#, fuzzy +-msgid "Generate code for 32 bit addressing" +-msgstr "Generar codi per a big endian" +- +-#: config/mcore/mcore.opt:23 +-#, fuzzy +-msgid "Generate code for the M*Core M210" +-msgstr "Generar codi per a M*Core M340" +- +-#: config/mcore/mcore.opt:27 +-msgid "Generate code for the M*Core M340" +-msgstr "Generar codi per a M*Core M340" +- +-#: config/mcore/mcore.opt:31 +-msgid "Set maximum alignment to 4" +-msgstr "Establir l'alineació màxima a 4" +- +-#: config/mcore/mcore.opt:35 +-msgid "Force functions to be aligned to a 4 byte boundary" +-msgstr "Forçar que les funcions s'alineïn a un límit de 4 octet" +- +-#: config/mcore/mcore.opt:39 +-msgid "Set maximum alignment to 8" +-msgstr "Establir l'alineació màxima a 8" +- +-#: config/mcore/mcore.opt:43 config/score/score.opt:23 +-#, fuzzy +-msgid "Generate big-endian code" +-msgstr "Generar codi big endian" +- +-#: config/mcore/mcore.opt:47 +-msgid "Emit call graph information" +-msgstr "Emetre informació de graf de crides" +- +-#: config/mcore/mcore.opt:51 +-#, fuzzy +-msgid "Use the divide instruction" +-msgstr "No usar la instrucció divideix" +- +-#: config/mcore/mcore.opt:55 +-msgid "Inline constants if it can be done in 2 insns or less" +-msgstr "«inline» constants si pot ser fet en 2 insns o menys" +- +-#: config/mcore/mcore.opt:59 config/score/score.opt:27 +-#, fuzzy +-msgid "Generate little-endian code" +-msgstr "Generar codi little endian" +- +-#: config/mcore/mcore.opt:67 +-#, fuzzy +-msgid "Use arbitrary sized immediates in bit operations" +-msgstr "No intervenir en immediats de grandàries arbitràries en operacions de bit" +- +-#: config/mcore/mcore.opt:71 +-msgid "Prefer word accesses over byte accesses" +-msgstr "Preferir accessos word sobre accés octet" +- +-#: config/mcore/mcore.opt:75 +-#, fuzzy +-msgid "Set the maximum amount for a single stack increment operation" +-msgstr "Quantitat màxima per a una sola operació d'increment de pila" +- +-#: config/mcore/mcore.opt:79 +-#, fuzzy +-msgid "Always treat bitfields as int-sized" +-msgstr "Tractar sempre als camps de bit com de grandària int" +- +-#: config/arc/arc.opt:32 +-msgid "Prepend the name of the cpu to all public symbol names" +-msgstr "" +- +-#: config/arc/arc.opt:42 +-#, fuzzy +-msgid "Compile code for ARC variant CPU" +-msgstr "Codi de planificador per al CPU donat" +- +-#: config/arc/arc.opt:46 +-msgid "Put functions in SECTION" +-msgstr "" +- +-#: config/arc/arc.opt:50 +-msgid "Put data in SECTION" +-msgstr "" +- +-#: config/arc/arc.opt:54 +-msgid "Put read-only data in SECTION" +-msgstr "" +- +-#: config/sh/sh.opt:44 +-#, fuzzy +-msgid "Generate SH1 code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:48 +-#, fuzzy +-msgid "Generate SH2 code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:52 +-#, fuzzy +-msgid "Generate SH2a code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:56 +-#, fuzzy +-msgid "Generate SH2a FPU-less code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:60 +-#, fuzzy +-msgid "Generate default single-precision SH2a code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:64 +-#, fuzzy +-msgid "Generate only single-precision SH2a code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:68 +-#, fuzzy +-msgid "Generate SH2e code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:72 +-#, fuzzy +-msgid "Generate SH3 code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:76 +-#, fuzzy +-msgid "Generate SH3e code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:80 +-#, fuzzy +-msgid "Generate SH4 code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:84 +-#, fuzzy +-msgid "Generate SH4-100 code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:88 +-#, fuzzy +-msgid "Generate SH4-200 code" +-msgstr "Generar codi H8S/2600" +- +-#: config/sh/sh.opt:94 +-#, fuzzy +-msgid "Generate SH4-300 code" +-msgstr "Generar codi H8/300H" +- +-#: config/sh/sh.opt:98 +-#, fuzzy +-msgid "Generate SH4 FPU-less code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:102 +-#, fuzzy +-msgid "Generate SH4-100 FPU-less code" +-msgstr "Generar codi H8/300H" +- +-#: config/sh/sh.opt:106 +-#, fuzzy +-msgid "Generate SH4-200 FPU-less code" +-msgstr "Generar codi H8S/2600" +- +-#: config/sh/sh.opt:110 +-#, fuzzy +-msgid "Generate SH4-300 FPU-less code" +-msgstr "Generar codi H8/300H" +- +-#: config/sh/sh.opt:114 +-#, fuzzy +-msgid "Generate code for SH4 340 series (MMU/FPU-less)" +-msgstr "Generar codi per al CPU C30" +- +-#: config/sh/sh.opt:119 +-#, fuzzy +-msgid "Generate code for SH4 400 series (MMU/FPU-less)" +-msgstr "Generar codi per al CPU C40" +- +-#: config/sh/sh.opt:124 +-#, fuzzy +-msgid "Generate code for SH4 500 series (FPU-less)." +-msgstr "Generar codi per al CPU C40" +- +-#: config/sh/sh.opt:129 +-#, fuzzy +-msgid "Generate default single-precision SH4 code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:133 +-msgid "Generate default single-precision SH4-100 code" +-msgstr "" +- +-#: config/sh/sh.opt:137 +-msgid "Generate default single-precision SH4-200 code" +-msgstr "" +- +-#: config/sh/sh.opt:141 +-msgid "Generate default single-precision SH4-300 code" +-msgstr "" +- +-#: config/sh/sh.opt:145 +-#, fuzzy +-msgid "Generate only single-precision SH4 code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:149 +-#, fuzzy +-msgid "Generate only single-precision SH4-100 code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:153 +-#, fuzzy +-msgid "Generate only single-precision SH4-200 code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:157 +-#, fuzzy +-msgid "Generate only single-precision SH4-300 code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:161 +-#, fuzzy +-msgid "Generate SH4a code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:165 +-#, fuzzy +-msgid "Generate SH4a FPU-less code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:169 +-#, fuzzy +-msgid "Generate default single-precision SH4a code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:173 +-#, fuzzy +-msgid "Generate only single-precision SH4a code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:177 +-#, fuzzy +-msgid "Generate SH4al-dsp code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:181 +-#, fuzzy +-msgid "Generate 32-bit SHmedia code" +-msgstr "Generar codi 32 bit per a i386" +- +-#: config/sh/sh.opt:185 +-#, fuzzy +-msgid "Generate 32-bit FPU-less SHmedia code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:189 +-#, fuzzy +-msgid "Generate 64-bit SHmedia code" +-msgstr "Generar codi 64 bit per a x86-64" +- +-#: config/sh/sh.opt:193 +-#, fuzzy +-msgid "Generate 64-bit FPU-less SHmedia code" +-msgstr "Generar codi little endian" +- +-#: config/sh/sh.opt:197 +-#, fuzzy +-msgid "Generate SHcompact code" +-msgstr "Generar codi SA" +- +-#: config/sh/sh.opt:201 +-#, fuzzy +-msgid "Generate FPU-less SHcompact code" +-msgstr "Generar codi relatiu al pc" +- +-#: config/sh/sh.opt:205 +-msgid "Throttle unrolling to avoid thrashing target registers unless the unroll benefit outweighs this" +-msgstr "" +- +-#: config/sh/sh.opt:209 +-#, fuzzy +-msgid "Generate code in big endian mode" +-msgstr "Generar codi per a big endian" +- +-#: config/sh/sh.opt:213 +-#, fuzzy +-msgid "Generate 32-bit offsets in switch tables" +-msgstr "Usar entrades de 4 octet en les matrius de «switch»" +- +-#: config/sh/sh.opt:217 +-msgid "Cost to assume for a branch insn" +-msgstr "" +- +-#: config/sh/sh.opt:221 +-msgid "Enable cbranchdi4 pattern" +-msgstr "" +- +-#: config/sh/sh.opt:225 +-msgid "Expand cbranchdi4 pattern early into separate comparisons and branches." +-msgstr "" +- +-#: config/sh/sh.opt:229 +-msgid "Emit cmpeqdi_t pattern even when -mcbranchdi and -mexpand-cbranchdi are in effect." +-msgstr "" +- +-#: config/sh/sh.opt:233 +-msgid "Enable SH5 cut2 workaround" +-msgstr "" +- +-#: config/sh/sh.opt:237 +-#, fuzzy +-msgid "Align doubles at 64-bit boundaries" +-msgstr "Alinear les variables en un límit de 16-bit" +- +-#: config/sh/sh.opt:241 +-msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table" +-msgstr "" +- +-#: config/sh/sh.opt:245 +-#, fuzzy +-msgid "Specify name for 32 bit signed division function" +-msgstr "Especificar un nom alternatiu per a la secció bss" +- +-#: config/sh/sh.opt:252 +-#, fuzzy +-msgid "Enable the use of the fused floating point multiply-accumulate operation" +-msgstr "Activar l'ús de les instruccions short load" +- +-#: config/sh/sh.opt:256 +-msgid "Cost to assume for gettr insn" +-msgstr "" +- +-#: config/sh/sh.opt:260 config/sh/sh.opt:310 +-msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions" +-msgstr "" +- +-#: config/sh/sh.opt:264 +-msgid "Increase the IEEE compliance for floating-point code" +-msgstr "" +- +-#: config/sh/sh.opt:268 +-msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact" +-msgstr "" +- +-#: config/sh/sh.opt:272 +-msgid "inline code to invalidate instruction cache entries after setting up nested function trampolines" +-msgstr "" +- +-#: config/sh/sh.opt:276 +-msgid "Assume symbols might be invalid" +-msgstr "" +- +-#: config/sh/sh.opt:280 +-msgid "Annotate assembler instructions with estimated addresses" +-msgstr "" +- +-#: config/sh/sh.opt:284 +-#, fuzzy +-msgid "Generate code in little endian mode" +-msgstr "Generar codi per a little endian" +- +-#: config/sh/sh.opt:288 +-#, fuzzy +-msgid "Mark MAC register as call-clobbered" +-msgstr "nom de registre desconegut \"%s\" en \"asm\"" +- +-#: config/sh/sh.opt:294 +-msgid "Make structs a multiple of 4 bytes (warning: ABI altered)" +-msgstr "" +- +-#: config/sh/sh.opt:298 +-msgid "Emit function-calls using global offset table when generating PIC" +-msgstr "" +- +-#: config/sh/sh.opt:302 +-#, fuzzy +-msgid "Assume pt* instructions won't trap" +-msgstr "Les operacions de coma flotant poden capturar" +- +-#: config/sh/sh.opt:306 +-msgid "Shorten address references during linking" +-msgstr "" +- +-#: config/sh/sh.opt:314 +-msgid "Deprecated. Use -Os instead" +-msgstr "" +- +-#: config/sh/sh.opt:318 +-msgid "Cost to assume for a multiply insn" +-msgstr "" +- +-#: config/sh/sh.opt:322 +-msgid "Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode." +-msgstr "" +- +-#: config/sh/sh.opt:328 +-msgid "Pretend a branch-around-a-move is a conditional move." +-msgstr "" +- +-#: config/sh/superh.opt:6 +-msgid "Board name [and memory region]." +-msgstr "" +- +-#: config/sh/superh.opt:10 +-#, fuzzy +-msgid "Runtime name." +-msgstr "No hi ha fitxers d'entrada" +- +-#: config/arm/arm.opt:23 +-msgid "Specify an ABI" +-msgstr "Especificar un ABI" +- +-#: config/arm/arm.opt:27 +-msgid "Generate a call to abort if a noreturn function returns" +-msgstr "Generar una cridada a avortar si una funció \"noreturn\" retorna" +- +-#: config/arm/arm.opt:34 +-msgid "Pass FP arguments in FP registers" +-msgstr "Passar els arguments FP en els registres FP" +- +-#: config/arm/arm.opt:38 +-msgid "Generate APCS conformant stack frames" +-msgstr "Generar marcs de pila que compleixin amb APCS" +- +-#: config/arm/arm.opt:42 +-msgid "Generate re-entrant, PIC code" +-msgstr "Generar codi PIC que es torna a introduir" +- +-#: config/arm/arm.opt:56 +-msgid "Assume target CPU is configured as big endian" +-msgstr "Assumir que el CPU destinació està configurat com big endian" +- +-#: config/arm/arm.opt:60 +-msgid "Thumb: Assume non-static functions may be called from ARM code" +-msgstr "Thumb: Assumir que les funcions no static poden ser crides des de codi ARM" +- +-#: config/arm/arm.opt:64 +-msgid "Thumb: Assume function pointers may go to non-Thumb aware code" +-msgstr "Thumb: Assumir que els punters de funció poden anar a codi no informat sobre Thumb" +- +-#: config/arm/arm.opt:68 +-msgid "Cirrus: Place NOPs to avoid invalid instruction combinations" +-msgstr "" +- +-#: config/arm/arm.opt:72 config/bfin/bfin.opt:27 +-msgid "Specify the name of the target CPU" +-msgstr "Especificar el nom del CPU destinació" +- +-#: config/arm/arm.opt:76 +-#, fuzzy +-msgid "Specify if floating point hardware should be used" +-msgstr "Especifica la versió de l'emulador de nombre de coma flotant" +- +-#: config/arm/arm.opt:90 +-#, fuzzy +-msgid "Specify the name of the target floating point hardware/format" +-msgstr "Especifica la versió de l'emulador de nombre de coma flotant" +- +-#: config/arm/arm.opt:94 +-msgid "Alias for -mfloat-abi=hard" +-msgstr "" +- +-#: config/arm/arm.opt:98 +-msgid "Assume target CPU is configured as little endian" +-msgstr "Assumir que el CPU destinació està configurat com little endian" +- +-#: config/arm/arm.opt:102 +-msgid "Generate call insns as indirect calls, if necessary" +-msgstr "Generar les crides insns com crides indirectes, si és necessari" +- +-#: config/arm/arm.opt:106 +-msgid "Specify the register to be used for PIC addressing" +-msgstr "Especificar el registre a usar per l'adreçament PIC" +- +-#: config/arm/arm.opt:110 +-msgid "Store function names in object code" +-msgstr "Emmagatzemar noms de funció en el codi objecte" +- +-#: config/arm/arm.opt:114 +-#, fuzzy +-msgid "Permit scheduling of a function's prologue sequence" +-msgstr "Usar caps per als pròlegs de funció" +- +-#: config/arm/arm.opt:118 +-msgid "Do not load the PIC register in function prologues" +-msgstr "No carregar el registre PIC en els pròlegs de funció" +- +-#: config/arm/arm.opt:122 +-msgid "Alias for -mfloat-abi=soft" +-msgstr "" +- +-#: config/arm/arm.opt:126 +-msgid "Specify the minimum bit alignment of structures" +-msgstr "Especificar l'alineació mínima de bit de les estructures" +- +-#: config/arm/arm.opt:130 +-msgid "Compile for the Thumb not the ARM" +-msgstr "Compilar per al Thumb on per al ARM" +- +-#: config/arm/arm.opt:134 +-msgid "Support calls between Thumb and ARM instruction sets" +-msgstr "Suport a crides entre els conjunts d'instruccions Thumb i ARM" +- +-#: config/arm/arm.opt:138 +-#, fuzzy +-msgid "Specify how to access the thread pointer" +-msgstr "Especificar el nom de l'arquitectura destinació" +- +-#: config/arm/arm.opt:142 +-msgid "Thumb: Generate (non-leaf) stack frames even if not needed" +-msgstr "Thumb: Generar marcs de pila (no-fulles) encara si no és necessari" +- +-#: config/arm/arm.opt:146 +-msgid "Thumb: Generate (leaf) stack frames even if not needed" +-msgstr "Thumb: Generar marcs de pila (fulles) encara si no és necessari" +- +-#: config/arm/arm.opt:150 +-#, fuzzy +-msgid "Tune code for the given processor" +-msgstr "Compilar per al processador v850" +- +-#: config/arm/arm.opt:154 +-msgid "Assume big endian bytes, little endian words" +-msgstr "Assumir octets big endian ,mots little endian" +- +-#: config/arm/arm.opt:158 +-msgid "Use Neon quad-word (rather than double-word) registers for vectorization" +-msgstr "" +- +-#: config/arm/pe.opt:23 +-msgid "Ignore dllimport attribute for functions" +-msgstr "Ignorar l'atribut dllimport per a les funcions" +- +-#: config/pdp11/pdp11.opt:23 +-msgid "Generate code for an 11/10" +-msgstr "Generar codi per a un 11/10" +- +-#: config/pdp11/pdp11.opt:27 +-msgid "Generate code for an 11/40" +-msgstr "Generar codi per a un 11/40" +- +-#: config/pdp11/pdp11.opt:31 +-msgid "Generate code for an 11/45" +-msgstr "5Generar codi per a un 11/45" +- +-#: config/pdp11/pdp11.opt:35 +-#, fuzzy +-msgid "Use 16-bit abs patterns" +-msgstr "Usar registres FP de 64 bits" +- +-#: config/pdp11/pdp11.opt:39 +-#, fuzzy +-msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)" +-msgstr "Retorna els resultats en coma flotant en ac0" +- +-#: config/pdp11/pdp11.opt:43 +-msgid "Do not use inline patterns for copying memory" +-msgstr "" +- +-#: config/pdp11/pdp11.opt:47 +-msgid "Use inline patterns for copying memory" +-msgstr "" +- +-#: config/pdp11/pdp11.opt:51 +-msgid "Do not pretend that branches are expensive" +-msgstr "" +- +-#: config/pdp11/pdp11.opt:55 +-msgid "Pretend that branches are expensive" +-msgstr "" +- +-#: config/pdp11/pdp11.opt:59 +-#, fuzzy +-msgid "Use the DEC assembler syntax" +-msgstr "Usar sintaxi de l'ensamblador DEC" +- +-#: config/pdp11/pdp11.opt:63 +-msgid "Use 32 bit float" +-msgstr "Usar float de 32 bits" +- +-#: config/pdp11/pdp11.opt:67 +-msgid "Use 64 bit float" +-msgstr "Usar float de 64 bits" +- +-#: config/pdp11/pdp11.opt:75 +-msgid "Use 16 bit int" +-msgstr "Usar int de 16 bits" +- +-#: config/pdp11/pdp11.opt:79 +-msgid "Use 32 bit int" +-msgstr "Usar int de 32 bits" +- +-#: config/pdp11/pdp11.opt:87 +-msgid "Target has split I&D" +-msgstr "L'objectiu té un I&D dividit" +- +-#: config/pdp11/pdp11.opt:91 +-msgid "Use UNIX assembler syntax" +-msgstr "Usar sintaxi de l'ensamblador UNIX" +- +-#: config/avr/avr.opt:23 +-#, fuzzy +-msgid "Use subroutines for function prologues and epilogues" +-msgstr "Usar subrutines per al pròleg/epíleg de funció" +- +-#: config/avr/avr.opt:27 +-#, fuzzy +-msgid "Select the target MCU" +-msgstr "Especificar el nom del CPU destinació" +- +-#: config/avr/avr.opt:34 +-#, fuzzy +-msgid "Use an 8-bit 'int' type" +-msgstr "Usar tipus int de 64 bits" +- +-#: config/avr/avr.opt:38 +-msgid "Change the stack pointer without disabling interrupts" +-msgstr "Canviar el punter de la pila sense desactivar les interrupcions" +- +-#: config/avr/avr.opt:42 +-msgid "Do not generate tablejump insns" +-msgstr "No generar insns de salt de matriu" +- +-#: config/avr/avr.opt:52 +-msgid "Use rjmp/rcall (limited range) on >8K devices" +-msgstr "" +- +-#: config/avr/avr.opt:56 +-msgid "Output instruction sizes to the asm file" +-msgstr "Grandàries d'instrucció de sortida al fitxer asm" +- +-#: config/avr/avr.opt:60 +-msgid "Change only the low 8 bits of the stack pointer" +-msgstr "Canviar només els 8 bits baixos del punter de pila" +- +-#: config/crx/crx.opt:23 +-#, fuzzy +-msgid "Support multiply accumulate instructions" +-msgstr "Usar instruccions de fp per a multiplicar-acumular" +- +-#: config/crx/crx.opt:27 +-#, fuzzy +-msgid "Do not use push to store function arguments" +-msgstr "No usar instruccions push per a guardar els arguments de sortida" +- +-#: config/crx/crx.opt:31 +-msgid "Restrict doloop to the given nesting level" +-msgstr "" +- +-#: config/c4x/c4x.opt:23 +-msgid "Generate code for C30 CPU" +-msgstr "Generar codi per al CPU C30" +- +-#: config/c4x/c4x.opt:27 +-msgid "Generate code for C31 CPU" +-msgstr "Generar codi per al CPU C31" +- +-#: config/c4x/c4x.opt:31 +-msgid "Generate code for C32 CPU" +-msgstr "Generar codi per al CPU C32" +- +-#: config/c4x/c4x.opt:35 +-msgid "Generate code for C33 CPU" +-msgstr "Generar codi per al CPU C33" +- +-#: config/c4x/c4x.opt:39 +-msgid "Generate code for C40 CPU" +-msgstr "Generar codi per al CPU C40" +- +-#: config/c4x/c4x.opt:43 +-msgid "Generate code for C44 CPU" +-msgstr "Generar codi per al CPU C44" +- +-#: config/c4x/c4x.opt:47 +-msgid "Assume that pointers may be aliased" +-msgstr "Assumir que es poden fer alies dels punters" +- +-#: config/c4x/c4x.opt:51 +-msgid "Big memory model" +-msgstr "Model de memòria big" +- +-#: config/c4x/c4x.opt:55 +-msgid "Use the BK register as a general purpose register" +-msgstr "Usar el registre BK com un registre de propòsit general" +- +-#: config/c4x/c4x.opt:59 +-#, fuzzy +-msgid "Generate code for CPU" +-msgstr "Generar codi per al CPU C30" +- +-#: config/c4x/c4x.opt:63 +-msgid "Enable use of DB instruction" +-msgstr "Activar l'ús de la instrucció DB" +- +-#: config/c4x/c4x.opt:67 +-msgid "Enable debugging" +-msgstr "Activar la depuració" +- +-#: config/c4x/c4x.opt:71 +-msgid "Enable new features under development" +-msgstr "Activar noves característiques en desenvolupament" +- +-#: config/c4x/c4x.opt:75 +-msgid "Use fast but approximate float to integer conversion" +-msgstr "Usar conversió de coma flotant a enter ràpida però aproximada" +- +-#: config/c4x/c4x.opt:79 +-msgid "Force RTL generation to emit valid 3 operand insns" +-msgstr "Forçar que la generació de RTL emeti 3 operandes insns vàlids" +- +-#: config/c4x/c4x.opt:83 +-msgid "Force constants into registers to improve hoisting" +-msgstr "Forçar les constants dintre de registres per a millorar l'aixecament" +- +-#: config/c4x/c4x.opt:87 config/c4x/c4x.opt:111 +-msgid "Save DP across ISR in small memory model" +-msgstr "Guardar DP entre ISR en el model de memòria small" +- +-#: config/c4x/c4x.opt:91 +-msgid "Allow unsigned iteration counts for RPTB/DB" +-msgstr "Permetre comptes d'iteracions unsigned per a RPTB/DB" +- +-#: config/c4x/c4x.opt:95 +-msgid "Pass arguments on the stack" +-msgstr "Passar els arguments en la pila" +- +-#: config/c4x/c4x.opt:99 +-msgid "Use MPYI instruction for C3x" +-msgstr "Usar instrucció MPYI per a C3x" +- +-#: config/c4x/c4x.opt:103 +-msgid "Enable parallel instructions" +-msgstr "Activar les funcions paral·leles" +- +-#: config/c4x/c4x.opt:107 +-msgid "Enable MPY||ADD and MPY||SUB instructions" +-msgstr "Activar les instruccions MPY||ADD i MPY||SUB" +- +-#: config/c4x/c4x.opt:115 +-msgid "Preserve all 40 bits of FP reg across call" +-msgstr "Preservar els 40 bits del registre FP entre crides" +- +-#: config/c4x/c4x.opt:119 +-msgid "Pass arguments in registers" +-msgstr "Passar els arguments en els registres" +- +-#: config/c4x/c4x.opt:123 +-msgid "Enable use of RTPB instruction" +-msgstr "Activar l'ús de la instrucció RTPB" +- +-#: config/c4x/c4x.opt:127 +-msgid "Enable use of RTPS instruction" +-msgstr "Activar l'ús de la instrucció RTPS" +- +-#: config/c4x/c4x.opt:131 +-#, fuzzy +-msgid "Set the maximum number of iterations for RPTS to N" +-msgstr "Especificar el nombre màxim d'iteracions per a RPTS" +- +-#: config/c4x/c4x.opt:135 +-msgid "Small memory model" +-msgstr "Model de memòria small" +- +-#: config/c4x/c4x.opt:139 +-msgid "Emit code compatible with TI tools" +-msgstr "Emetre codi compatible amb les eines TI" +- +-#: config/pa/pa-hpux.opt:23 +-msgid "Generate cpp defines for server IO" +-msgstr "Generar definicions cpp per a IO de servidor" +- +-#: config/pa/pa-hpux.opt:27 config/pa/pa-hpux1010.opt:23 +-#: config/pa/pa-hpux1111.opt:23 +-msgid "Specify UNIX standard for predefines and linking" +-msgstr "" +- +-#: config/pa/pa-hpux.opt:31 +-msgid "Generate cpp defines for workstation IO" +-msgstr "Generar definicions cpp per a IO d'estació de treball" +- +-#: config/pa/pa.opt:23 config/pa/pa.opt:76 config/pa/pa.opt:84 +-msgid "Generate PA1.0 code" +-msgstr "Generar codi PA1.0" +- +-#: config/pa/pa.opt:27 config/pa/pa.opt:88 config/pa/pa.opt:108 +-msgid "Generate PA1.1 code" +-msgstr "Generar codi PA1.1" +- +-#: config/pa/pa.opt:31 config/pa/pa.opt:92 +-msgid "Generate PA2.0 code (requires binutils 2.10 or later)" +-msgstr "" +- +-#: config/pa/pa.opt:35 +-msgid "Generate code for huge switch statements" +-msgstr "Generar codi per a declaracions «switch» llargues" +- +-#: config/pa/pa.opt:39 +-msgid "Disable FP regs" +-msgstr "Desactivar els registres FP" +- +-#: config/pa/pa.opt:43 +-msgid "Disable indexed addressing" +-msgstr "Desactivar adreçament d'index" +- +-#: config/pa/pa.opt:47 +-msgid "Generate fast indirect calls" +-msgstr "Generar crides indirectes ràpides" +- +-#: config/pa/pa.opt:55 +-msgid "Assume code will be assembled by GAS" +-msgstr "" +- +-#: config/pa/pa.opt:59 +-msgid "Put jumps in call delay slots" +-msgstr "" +- +-#: config/pa/pa.opt:64 +-msgid "Enable linker optimizations" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: config/pa/pa.opt:68 +-msgid "Always generate long calls" +-msgstr "Generar sempre crides llargues" +- +-#: config/pa/pa.opt:72 +-msgid "Emit long load/store sequences" +-msgstr "" +- +-#: config/pa/pa.opt:80 +-msgid "Disable space regs" +-msgstr "" +- +-#: config/pa/pa.opt:96 +-msgid "Use portable calling conventions" +-msgstr "Usar convencions de cridada portable" +- +-#: config/pa/pa.opt:100 +-#, fuzzy +-msgid "Specify CPU for scheduling purposes. Valid arguments are 700, 7100, 7100LC, 7200, 7300, and 8000" +-msgstr "" +-"opció -mschedule= desconeguda (%s).\n" +-"Les opcions vàlides són 700, 7100, 7100LC, 7200, 7300, i 8000\n" +- +-#: config/pa/pa.opt:112 +-msgid "Do not disable space regs" +-msgstr "No desactivar registres d'espai" +- +-#: config/pa/pa64-hpux.opt:23 +-msgid "Assume code will be linked by GNU ld" +-msgstr "" +- +-#: config/pa/pa64-hpux.opt:27 +-msgid "Assume code will be linked by HP ld" +-msgstr "" +- +-#: config/xtensa/xtensa.opt:23 +-#, fuzzy +-msgid "Use CONST16 instruction to load constants" +-msgstr "Usar instruccions push per a guardar els arguments de sortida" +- +-#: config/xtensa/xtensa.opt:27 +-msgid "Enable fused multiply/add and multiply/subtract FP instructions" +-msgstr "Activar les instruccions FP multiply/add i multiply/substract de curt circuit" +- +-#: config/xtensa/xtensa.opt:31 +-msgid "Use indirect CALLXn instructions for large programs" +-msgstr "Usar instruccions CALLXn indirectes per a programes grans" +- +-#: config/xtensa/xtensa.opt:35 +-msgid "Automatically align branch targets to reduce branch penalties" +-msgstr "Alinear automàticament els objectius de les ramificacions per a reduir les faltes de ramificació" +- +-#: config/xtensa/xtensa.opt:39 +-msgid "Intersperse literal pools with code in the text section" +-msgstr "Entremesclar els conjunts de literals amb codi en la secció de text" +- +-#: config/stormy16/stormy16.opt:24 +-msgid "Provide libraries for the simulator" +-msgstr "" +- +-#: config/mips/mips.opt:23 +-#, fuzzy +-msgid "Generate code that conforms to the given ABI" +-msgstr "Generar codi per al CPU donat" +- +-#: config/mips/mips.opt:27 +-msgid "Generate code that can be used in SVR4-style dynamic objects" +-msgstr "" +- +-#: config/mips/mips.opt:31 +-#, fuzzy +-msgid "Use PMC-style 'mad' instructions" +-msgstr "Usar instruccions de camps de bit" +- +-#: config/mips/mips.opt:35 +-#, fuzzy +-msgid "Generate code for the given ISA" +-msgstr "Generar codi per al CPU donat" +- +-#: config/mips/mips.opt:39 +-#, fuzzy +-msgid "Set the cost of branches to roughly COST instructions" +-msgstr "Activar l'ús de les instruccions short load" +- +-#: config/mips/mips.opt:43 +-msgid "Use Branch Likely instructions, overriding the architecture default" +-msgstr "" +- +-#: config/mips/mips.opt:47 +-msgid "Switch on/off MIPS16 ASE on alternating functions for compiler testing" +-msgstr "" +- +-#: config/mips/mips.opt:51 +-msgid "Trap on integer divide by zero" +-msgstr "Atrapar la divisió entera per zero" +- +-#: config/mips/mips.opt:55 +-msgid "Specify when instructions are allowed to access code" +-msgstr "" +- +-#: config/mips/mips.opt:59 +-msgid "Use branch-and-break sequences to check for integer divide by zero" +-msgstr "" +- +-#: config/mips/mips.opt:63 +-#, fuzzy +-msgid "Use trap instructions to check for integer divide by zero" +-msgstr "Atrapar la divisió entera per zero" +- +-#: config/mips/mips.opt:67 +-#, fuzzy +-msgid "Allow the use of MDMX instructions" +-msgstr "Activar l'ús de la instrucció DB" +- +-#: config/mips/mips.opt:71 +-msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations" +-msgstr "" +- +-#: config/mips/mips.opt:75 +-#, fuzzy +-msgid "Use MIPS-DSP instructions" +-msgstr "No usar instruccions MIPS16" +- +-#: config/mips/mips.opt:79 +-#, fuzzy +-msgid "Use MIPS-DSP REV 2 instructions" +-msgstr "Usar el conjunt d'instruccions POWER2" +- +-#: config/mips/mips.opt:89 +-msgid "Use big-endian byte order" +-msgstr "Usar ordre de bit big-endian" +- +-#: config/mips/mips.opt:93 +-msgid "Use little-endian byte order" +-msgstr "Usar ordre de bit little-endian" +- +-#: config/mips/mips.opt:97 config/iq2000/iq2000.opt:31 +-msgid "Use ROM instead of RAM" +-msgstr "Usar ROM enlloc de RAM" +- +-#: config/mips/mips.opt:101 +-msgid "Use NewABI-style %reloc() assembly operators" +-msgstr "" +- +-#: config/mips/mips.opt:105 +-msgid "Use -G for data that is not defined by the current object" +-msgstr "" +- +-#: config/mips/mips.opt:109 +-#, fuzzy +-msgid "Work around certain R4000 errata" +-msgstr "Evitar el bug del primer maquinari 4300" +- +-#: config/mips/mips.opt:113 +-#, fuzzy +-msgid "Work around certain R4400 errata" +-msgstr "Evitar el bug del primer maquinari 4300" +- +-#: config/mips/mips.opt:117 +-msgid "Work around errata for early SB-1 revision 2 cores" +-msgstr "" +- +-#: config/mips/mips.opt:121 +-msgid "Work around certain VR4120 errata" +-msgstr "" +- +-#: config/mips/mips.opt:125 +-msgid "Work around VR4130 mflo/mfhi errata" +-msgstr "" +- +-#: config/mips/mips.opt:129 +-#, fuzzy +-msgid "Work around an early 4300 hardware bug" +-msgstr "Evitar el bug del primer maquinari 4300" +- +-#: config/mips/mips.opt:133 +-#, fuzzy +-msgid "FP exceptions are enabled" +-msgstr "opcions activades: " +- +-#: config/mips/mips.opt:137 +-#, fuzzy +-msgid "Use 32-bit floating-point registers" +-msgstr "Usar registres generals de 32 bits" +- +-#: config/mips/mips.opt:141 +-#, fuzzy +-msgid "Use 64-bit floating-point registers" +-msgstr "Usar registres generals de 64 bits" +- +-#: config/mips/mips.opt:145 +-msgid "Use FUNC to flush the cache before calling stack trampolines" +-msgstr "" +- +-#: config/mips/mips.opt:149 +-#, fuzzy +-msgid "Generate floating-point multiply-add instructions" +-msgstr "Generar instruccions multiply/add de curt circuit" +- +-#: config/mips/mips.opt:153 +-msgid "Use 32-bit general registers" +-msgstr "Usar registres generals de 32 bits" +- +-#: config/mips/mips.opt:157 +-msgid "Use 64-bit general registers" +-msgstr "Usar registres generals de 64 bits" +- +-#: config/mips/mips.opt:161 +-msgid "Use GP-relative addressing to access small data" +-msgstr "" +- +-#: config/mips/mips.opt:165 +-#, fuzzy +-msgid "Allow the use of hardware floating-point ABI and instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/mips/mips.opt:169 +-msgid "Generate code that can be safely linked with MIPS16 code." +-msgstr "" +- +-#: config/mips/mips.opt:173 +-#, fuzzy +-msgid "Generate code for ISA level N" +-msgstr "Generar codi per a Intel as" +- +-#: config/mips/mips.opt:177 +-#, fuzzy +-msgid "Generate MIPS16 code" +-msgstr "Generar codi SA" +- +-#: config/mips/mips.opt:181 +-#, fuzzy +-msgid "Use MIPS-3D instructions" +-msgstr "No usar instruccions MIPS16" +- +-#: config/mips/mips.opt:185 +-#, fuzzy +-msgid "Use ll, sc and sync instructions" +-msgstr "Usar instruccions AltiVec" +- +-#: config/mips/mips.opt:189 +-msgid "Use -G for object-local data" +-msgstr "" +- +-#: config/mips/mips.opt:193 +-msgid "Use indirect calls" +-msgstr "Usar crides indirectes" +- +-#: config/mips/mips.opt:197 +-#, fuzzy +-msgid "Use a 32-bit long type" +-msgstr "Usar tipus long de 32 bits" +- +-#: config/mips/mips.opt:201 +-#, fuzzy +-msgid "Use a 64-bit long type" +-msgstr "Usar tipus long de 64 bits" +- +-#: config/mips/mips.opt:205 +-msgid "Don't optimize block moves" +-msgstr "No optimitzar els moviments de blocs" +- +-#: config/mips/mips.opt:209 +-#, fuzzy +-msgid "Use the mips-tfile postpass" +-msgstr "Usar mips-tfile asm postpass" +- +-#: config/mips/mips.opt:213 +-#, fuzzy +-msgid "Allow the use of MT instructions" +-msgstr "Activar l'ús de la instrucció RTPS" +- +-#: config/mips/mips.opt:217 +-msgid "Do not use a cache-flushing function before calling stack trampolines" +-msgstr "" +- +-#: config/mips/mips.opt:221 +-#, fuzzy +-msgid "Do not use MDMX instructions" +-msgstr "No usar instruccions AltiVec" +- +-#: config/mips/mips.opt:225 +-#, fuzzy +-msgid "Generate normal-mode code" +-msgstr "Generar codi SA" +- +-#: config/mips/mips.opt:229 +-#, fuzzy +-msgid "Do not use MIPS-3D instructions" +-msgstr "No usar instruccions MIPS16" +- +-#: config/mips/mips.opt:233 +-#, fuzzy +-msgid "Use paired-single floating-point instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/mips/mips.opt:237 +-msgid "When generating -mabicalls code, make the code suitable for use in shared libraries" +-msgstr "" +- +-#: config/mips/mips.opt:241 +-#, fuzzy +-msgid "Restrict the use of hardware floating-point instructions to 32-bit operations" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/mips/mips.opt:245 +-#, fuzzy +-msgid "Use SmartMIPS instructions" +-msgstr "No usar instruccions MIPS16" +- +-#: config/mips/mips.opt:249 +-#, fuzzy +-msgid "Prevent the use of all hardware floating-point instructions" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/mips/mips.opt:253 +-msgid "Optimize lui/addiu address loads" +-msgstr "Optimitzar les càrregues de les adreces lui/addiu" +- +-#: config/mips/mips.opt:257 +-#, fuzzy +-msgid "Assume all symbols have 32-bit values" +-msgstr "Assumir que tots els doubles estan alineats" +- +-#: config/mips/mips.opt:261 +-msgid "Optimize the output for PROCESSOR" +-msgstr "" +- +-#: config/mips/mips.opt:265 config/iq2000/iq2000.opt:44 +-msgid "Put uninitialized constants in ROM (needs -membedded-data)" +-msgstr "Posar les constants sense inicialitzar en ROM (necessita -membedded-data)" +- +-#: config/mips/mips.opt:269 +-#, fuzzy +-msgid "Perform VR4130-specific alignment optimizations" +-msgstr "Realitzar optimitzacions de filat de salts" +- +-#: config/mips/mips.opt:273 +-msgid "Lift restrictions on GOT size" +-msgstr "" +- +-#: config/mips/sdemtk.opt:23 +-#, fuzzy +-msgid "Prevent the use of all floating-point operations" +-msgstr "es requereixen registres booleans per a l'opció de coma flotant" +- +-#: config/fr30/fr30.opt:23 +-msgid "Assume small address space" +-msgstr "Assumint espai d'adreces petit" +- +-#: config/m68hc11/m68hc11.opt:23 config/m68hc11/m68hc11.opt:31 +-msgid "Compile for a 68HC11" +-msgstr "Compilar per a un 68HC11" +- +-#: config/m68hc11/m68hc11.opt:27 config/m68hc11/m68hc11.opt:35 +-msgid "Compile for a 68HC12" +-msgstr "Compilar per a un 68HC12" +- +-#: config/m68hc11/m68hc11.opt:41 config/m68hc11/m68hc11.opt:45 +-msgid "Compile for a 68HCS12" +-msgstr "Compilar per a un 68HCS12" +- +-#: config/m68hc11/m68hc11.opt:49 +-msgid "Auto pre/post decrement increment allowed" +-msgstr "Es permet el pre/post decrement increment automàtic" +- +-#: config/m68hc11/m68hc11.opt:53 +-msgid "Min/max instructions allowed" +-msgstr "" +- +-#: config/m68hc11/m68hc11.opt:57 +-msgid "Use call and rtc for function calls and returns" +-msgstr "Usar call i rtc per a crides i retorns de funció" +- +-#: config/m68hc11/m68hc11.opt:61 +-msgid "Auto pre/post decrement increment not allowed" +-msgstr "No es permet el pre/post decrement increment automàtic" +- +-#: config/m68hc11/m68hc11.opt:65 +-msgid "Use jsr and rts for function calls and returns" +-msgstr "Usar jsr i rts per a crides i retorns de funció" +- +-#: config/m68hc11/m68hc11.opt:69 +-msgid "Min/max instructions not allowed" +-msgstr "" +- +-#: config/m68hc11/m68hc11.opt:73 +-msgid "Use direct addressing mode for soft registers" +-msgstr "Usar el mode d'adreçament direct per a registres soft" +- +-#: config/m68hc11/m68hc11.opt:77 +-msgid "Compile with 32-bit integer mode" +-msgstr "Compilar amb el mode enter de 32-bit" +- +-#: config/m68hc11/m68hc11.opt:82 +-msgid "Specify the register allocation order" +-msgstr "Especificar l'ordre d'assignació de registres" +- +-#: config/m68hc11/m68hc11.opt:86 +-msgid "Do not use direct addressing mode for soft registers" +-msgstr "No usar el mode d'adreçament direct per a registres soft" +- +-#: config/m68hc11/m68hc11.opt:90 +-msgid "Compile with 16-bit integer mode" +-msgstr "Compilar amb el mode enter de 16-bit" +- +-#: config/m68hc11/m68hc11.opt:94 +-msgid "Indicate the number of soft registers available" +-msgstr "Indicar el nombre de registres suaus disponibles" +- +-#: config/vax/vax.opt:23 config/vax/vax.opt:27 +-msgid "Target DFLOAT double precision code" +-msgstr "" +- +-#: config/vax/vax.opt:31 config/vax/vax.opt:35 +-#, fuzzy +-msgid "Generate GFLOAT double precision code" +-msgstr "Generar codi little endian" +- +-#: config/vax/vax.opt:39 +-#, fuzzy +-msgid "Generate code for GNU assembler (gas)" +-msgstr "Generar codi per a GNU as" +- +-#: config/vax/vax.opt:43 +-#, fuzzy +-msgid "Generate code for UNIX assembler" +-msgstr "Generar codi per a GNU as" +- +-#: config/vax/vax.opt:47 +-#, fuzzy +-msgid "Use VAXC structure conventions" +-msgstr "Usar convencions de cridada portable" +- +-#: config/cris/linux.opt:27 +-msgid "Together with -fpic and -fPIC, do not use GOTPLT references" +-msgstr "Juntament amb -fpic i -fPIC, no utilitzar referències GOTPLT" +- +-#: config/cris/cris.opt:45 +-#, fuzzy +-msgid "Work around bug in multiplication instruction" +-msgstr "No usar instruccions de fp per a multiplicar-acumular" +- +-#: config/cris/cris.opt:51 +-msgid "Compile for ETRAX 4 (CRIS v3)" +-msgstr "Compilar per a ETRAX 4 (CRIS v3)" +- +-#: config/cris/cris.opt:56 +-msgid "Compile for ETRAX 100 (CRIS v8)" +-msgstr "Compilar per a ETRAX 100 (CRIS v8)" +- +-#: config/cris/cris.opt:64 +-msgid "Emit verbose debug information in assembly code" +-msgstr "Emetre informació de depuració detallada en el codi ensamblador" +- +-#: config/cris/cris.opt:71 +-msgid "Do not use condition codes from normal instructions" +-msgstr "No usar codis de condició per a les instruccions normals" +- +-#: config/cris/cris.opt:80 +-msgid "Do not emit addressing modes with side-effect assignment" +-msgstr "No emetre modes d'adreçament amb assignacions col·laterals" +- +-#: config/cris/cris.opt:89 +-msgid "Do not tune stack alignment" +-msgstr "No ajustar l'alineació de la pila" +- +-#: config/cris/cris.opt:98 +-msgid "Do not tune writable data alignment" +-msgstr "No ajustar l'alineació de les dades modificables" +- +-#: config/cris/cris.opt:107 +-msgid "Do not tune code and read-only data alignment" +-msgstr "No ajustar l'alineació del codi i de dades només de lectura" +- +-#: config/cris/cris.opt:116 +-msgid "Align code and data to 32 bits" +-msgstr "Alinear codi i dades a 32 bits" +- +-#: config/cris/cris.opt:133 +-msgid "Don't align items in code or data" +-msgstr "No alinear elements en el codi o les dades" +- +-#: config/cris/cris.opt:142 +-msgid "Do not emit function prologue or epilogue" +-msgstr "No emetre pròleg o epíleg de funcions" +- +-#: config/cris/cris.opt:149 +-msgid "Use the most feature-enabling options allowed by other options" +-msgstr "Usar la major quantitat de característiques permeses per altres opcions" +- +-#: config/cris/cris.opt:158 +-msgid "Override -mbest-lib-options" +-msgstr "Anular -mbest-lib-options" +- +-#: config/cris/cris.opt:165 +-msgid "Generate code for the specified chip or CPU version" +-msgstr "Generar codi per al xip especificat o la versió de CPU" +- +-#: config/cris/cris.opt:169 +-msgid "Tune alignment for the specified chip or CPU version" +-msgstr "Ajustar alineació per al xip especificat o la versió de CPU" +- +-#: config/cris/cris.opt:173 +-msgid "Warn when a stackframe is larger than the specified size" +-msgstr "Avisar quan un marc de pila sigui més gran que la grandària especificada" +- +-#: config/cris/aout.opt:27 +-msgid "Compile for the MMU-less Etrax 100-based elinux system" +-msgstr "Compilar per al sistema elinux Etrax basat en 100 sense MMU" +- +-#: config/cris/aout.opt:33 +-msgid "For elinux, request a specified stack-size for this program" +-msgstr "Per a elinux, sol·licitar una grandària de pila especificada per a aquest programa" +- +-#: config/h8300/h8300.opt:23 +-msgid "Generate H8S code" +-msgstr "Generar codi H8S" +- +-#: config/h8300/h8300.opt:27 +-#, fuzzy +-msgid "Generate H8SX code" +-msgstr "Generar codi H8S" +- +-#: config/h8300/h8300.opt:31 +-msgid "Generate H8S/2600 code" +-msgstr "Generar codi H8S/2600" +- +-#: config/h8300/h8300.opt:35 +-msgid "Make integers 32 bits wide" +-msgstr "Fer enters de 32 bits d'amplària" +- +-#: config/h8300/h8300.opt:42 +-msgid "Use registers for argument passing" +-msgstr "Usar registres per a pas de paràmetres" +- +-#: config/h8300/h8300.opt:46 +-msgid "Consider access to byte sized memory slow" +-msgstr "Considerar lent l'accés a la memòria de grandària octet" +- +-#: config/h8300/h8300.opt:50 +-msgid "Enable linker relaxing" +-msgstr "Activar la relaxació del enllaçador" +- +-#: config/h8300/h8300.opt:54 +-msgid "Generate H8/300H code" +-msgstr "Generar codi H8/300H" +- +-#: config/h8300/h8300.opt:58 +-msgid "Enable the normal mode" +-msgstr "" +- +-#: config/h8300/h8300.opt:62 +-msgid "Use H8/300 alignment rules" +-msgstr "Usar regles d'alineació H8/300" +- +-#: config/v850/v850.opt:23 +-#, fuzzy +-msgid "Use registers r2 and r5" +-msgstr "No usar els registres r2 i r5" +- +-#: config/v850/v850.opt:27 +-msgid "Use 4 byte entries in switch tables" +-msgstr "Usar entrades de 4 octet en les matrius de «switch»" +- +-#: config/v850/v850.opt:31 +-msgid "Enable backend debugging" +-msgstr "Habilitar la depuració per la fi" +- +-#: config/v850/v850.opt:35 +-msgid "Do not use the callt instruction" +-msgstr "No usar la instrucció callt" +- +-#: config/v850/v850.opt:39 +-msgid "Reuse r30 on a per function basis" +-msgstr "Reusar r30 basat per funció" +- +-#: config/v850/v850.opt:43 +-msgid "Support Green Hills ABI" +-msgstr "Dóna suport a l'ABI Green Hills" +- +-#: config/v850/v850.opt:47 +-msgid "Prohibit PC relative function calls" +-msgstr "Prohibir la crida a funcions relatives al PC" +- +-#: config/v850/v850.opt:51 +-msgid "Use stubs for function prologues" +-msgstr "Usar caps per als pròlegs de funció" +- +-#: config/v850/v850.opt:55 +-msgid "Set the max size of data eligible for the SDA area" +-msgstr "Establir la grandària màxima de dades elegibles per a l'àrea SDA" +- +-#: config/v850/v850.opt:59 +-msgid "Enable the use of the short load instructions" +-msgstr "Activar l'ús de les instruccions short load" +- +-#: config/v850/v850.opt:63 +-msgid "Same as: -mep -mprolog-function" +-msgstr "Igual que: -mep -mprolog-function" +- +-#: config/v850/v850.opt:67 +-msgid "Set the max size of data eligible for the TDA area" +-msgstr "Establir la grandària màxima de dades elegibles per a l'àrea TDA" +- +-#: config/v850/v850.opt:71 +-msgid "Enforce strict alignment" +-msgstr "Reforçar l'alineació estricta" +- +-#: config/v850/v850.opt:78 +-msgid "Compile for the v850 processor" +-msgstr "Compilar per al processador v850" +- +-#: config/v850/v850.opt:82 +-#, fuzzy +-msgid "Compile for the v850e processor" +-msgstr "Compilar per al processador v850" +- +-#: config/v850/v850.opt:86 +-#, fuzzy +-msgid "Compile for the v850e1 processor" +-msgstr "Compilar per al processador v850" +- +-#: config/v850/v850.opt:90 +-msgid "Set the max size of data eligible for the ZDA area" +-msgstr "Establir la grandària màxima de dades elegibles per a l'àrea ZDA" +- +-#: config/mmix/mmix.opt:24 +-msgid "For intrinsics library: pass all parameters in registers" +-msgstr "Per a biblioteques intrínsiques: passar els paràmetres en registres" +- +-#: config/mmix/mmix.opt:28 +-msgid "Use register stack for parameters and return value" +-msgstr "Usar registres de pila per a paràmetres i valors de retorn" +- +-#: config/mmix/mmix.opt:32 +-msgid "Use call-clobbered registers for parameters and return value" +-msgstr "Usar registres maltractats per a paràmetres i valors de retorn" +- +-#: config/mmix/mmix.opt:37 +-msgid "Use epsilon-respecting floating point compare instructions" +-msgstr "Usar instuccions de comparança en coma flotant que respectent epsilon" +- +-#: config/mmix/mmix.opt:41 +-msgid "Use zero-extending memory loads, not sign-extending ones" +-msgstr "Usar càrregues de memòria d'extensió zero, no les d'extensió amb signe" +- +-#: config/mmix/mmix.opt:45 +-msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)" +-msgstr "Generar resultats de divisió amb residu que tingui el mateix signe que el divisor (no el del dividend)" +- +-#: config/mmix/mmix.opt:49 +-msgid "Prepend global symbols with \":\" (for use with PREFIX)" +-msgstr "Precedir als símbols globals amb \":\" (per a usar-se amb PREFIX)" +- +-#: config/mmix/mmix.opt:53 +-msgid "Do not provide a default start-address 0x100 of the program" +-msgstr "No proveir una adreça d'inici per omissió 0x100 del programa" +- +-#: config/mmix/mmix.opt:57 +-msgid "Link to emit program in ELF format (rather than mmo)" +-msgstr "Enllaçar per a emetre el programa en format ELF (en lloc de mmo)" +- +-#: config/mmix/mmix.opt:61 +-msgid "Use P-mnemonics for branches statically predicted as taken" +-msgstr "Usar Mnemónicos-P per a ramificacions predites estàticament com preses" +- +-#: config/mmix/mmix.opt:65 +-msgid "Don't use P-mnemonics for branches" +-msgstr "No usar Mnemónicos-P per a ramificacions" +- +-#: config/mmix/mmix.opt:79 +-msgid "Use addresses that allocate global registers" +-msgstr "Usar adreces que reservin registres globals" +- +-#: config/mmix/mmix.opt:83 +-msgid "Do not use addresses that allocate global registers" +-msgstr "No usar adreces que reservin registres globals" +- +-#: config/mmix/mmix.opt:87 +-msgid "Generate a single exit point for each function" +-msgstr "Generar només un punt de sortida per a cada funció" +- +-#: config/mmix/mmix.opt:91 +-msgid "Do not generate a single exit point for each function" +-msgstr "No generar només un punt de sortida per a cada funció" +- +-#: config/mmix/mmix.opt:95 +-msgid "Set start-address of the program" +-msgstr "Definir l'adreça d'inici del programa" +- +-#: config/mmix/mmix.opt:99 +-msgid "Set start-address of data" +-msgstr "Definir l'adreça d'inici de les dades" +- +-#: config/iq2000/iq2000.opt:23 config/mt/mt.opt:55 +-msgid "Specify CPU for code generation purposes" +-msgstr "Especificar el CPU per a propòsits de generació de codi" +- +-#: config/iq2000/iq2000.opt:27 +-msgid "Specify CPU for scheduling purposes" +-msgstr "Especificar el CPU per a propòsits de calendarització" +- +-#: config/iq2000/iq2000.opt:35 +-msgid "Use GP relative sdata/sbss sections" +-msgstr "Usar seccions sdata/sbss relatives a GP" +- +-#: config/iq2000/iq2000.opt:40 +-msgid "No default crt0.o" +-msgstr "No està el crt0.o per omissió" +- +-#: config/bfin/bfin.opt:31 +-#, fuzzy +-msgid "Omit frame pointer for leaf functions" +-msgstr "Ometre el marc de referència per a les funcions fulles" +- +-#: config/bfin/bfin.opt:35 +-msgid "Program is entirely located in low 64k of memory" +-msgstr "" +- +-#: config/bfin/bfin.opt:39 +-msgid "Work around a hardware anomaly by adding a number of NOPs before a" +-msgstr "" +- +-#: config/bfin/bfin.opt:44 +-msgid "Avoid speculative loads to work around a hardware anomaly." +-msgstr "" +- +-#: config/bfin/bfin.opt:48 +-msgid "Enabled ID based shared library" +-msgstr "" +- +-#: config/bfin/bfin.opt:52 +-msgid "Generate code that won't be linked against any other ID shared libraries," +-msgstr "" +- +-#: config/bfin/bfin.opt:65 +-msgid "Avoid generating pc-relative calls; use indirection" +-msgstr "" +- +-#: config/bfin/bfin.opt:69 +-#, fuzzy +-msgid "Link with the fast floating-point library" +-msgstr "Usar la unitat de coma flotant de Xtensa" +- +-#: config/bfin/bfin.opt:81 +-msgid "Do stack checking using bounds in L1 scratch memory" +-msgstr "" +- +-#: config/mt/mt.opt:23 +-msgid "Use byte loads and stores when generating code." +-msgstr "" +- +-#: config/mt/mt.opt:31 +-msgid "Do not include crt0.o in the startup files" +-msgstr "" +- +-#: config/mt/mt.opt:35 config/mt/mt.opt:39 config/mt/mt.opt:43 +-#: config/mt/mt.opt:47 config/mt/mt.opt:51 +-#, fuzzy +-msgid "Internal debug switch" +-msgstr "interruptor -mdebug-%s desconegut" +- +-#: config/vxworks.opt:24 +-#, fuzzy +-msgid "Assume the VxWorks RTP environment" +-msgstr "Assumir l'ambient normal d'execució C" +- +-#: config/vxworks.opt:31 +-#, fuzzy +-msgid "Assume the VxWorks vThreads environment" +-msgstr "Assumir l'ambient normal d'execució C" +- +-#: config/darwin.opt:23 +-#, fuzzy +-msgid "Generate code suitable for fast turn around debugging" +-msgstr "Generar codi per a un Sun Sky board" +- +-#: config/darwin.opt:31 +-msgid "The earliest MacOS X version on which this program will run" +-msgstr "" +- +-#: config/darwin.opt:35 +-#, fuzzy +-msgid "Set sizeof(bool) to 1" +-msgstr "sizeof(long double) és 16." +- +-#: config/darwin.opt:39 +-#, fuzzy +-msgid "Generate code for darwin loadable kernel extensions" +-msgstr "Generar codi per a little endian" +- +-#: config/darwin.opt:43 +-#, fuzzy +-msgid "Generate code for the kernel or loadable kernel extensions" +-msgstr "Generar codi per al xip especificat o la versió de CPU" +- +-#: config/darwin.opt:47 +-msgid "Add to the end of the system framework include path" +-msgstr "" +- +-#: config/lynx.opt:23 +-msgid "Support legacy multi-threading" +-msgstr "" +- +-#: config/lynx.opt:27 +-#, fuzzy +-msgid "Use shared libraries" +-msgstr "Usar fp de maquinari" +- +-#: config/lynx.opt:31 +-msgid "Support multi-threading" +-msgstr "" +- +-#: config/score/score.opt:31 +-#, fuzzy +-msgid "Disable bcnz instruction" +-msgstr "Desactivar l'ús de la instrucció DB" +- +-#: config/score/score.opt:35 +-#, fuzzy +-msgid "Enable unaligned load/store instruction" +-msgstr "Activar l'ús de la instrucció DB" +- +-#: config/score/score.opt:39 +-msgid "Support SCORE 5 ISA" +-msgstr "" +- +-#: config/score/score.opt:43 +-msgid "Support SCORE 5U ISA" +-msgstr "" +- +-#: config/score/score.opt:47 +-msgid "Support SCORE 7 ISA" +-msgstr "" +- +-#: config/score/score.opt:51 +-msgid "Support SCORE 7D ISA" +-msgstr "" +- +-#: config/score/score.opt:55 +-msgid "Support SCORE 3 ISA" +-msgstr "" +- +-#: config/score/score.opt:59 +-msgid "Support SCORE 3d ISA" +-msgstr "" +- +-#: config/linux.opt:24 +-#, fuzzy +-msgid "Use uClibc instead of GNU libc" +-msgstr "Usar ROM enlloc de RAM" +- +-#: config/linux.opt:28 +-#, fuzzy +-msgid "Use GNU libc instead of uClibc" +-msgstr "Usar ROM enlloc de RAM" +- +-#: c.opt:41 +-msgid "Assert the to . Putting '-' before disables the to " +-msgstr "" +- +-#: c.opt:45 +-#, fuzzy +-msgid "Do not discard comments" +-msgstr "No desactivar registres d'espai" +- +-#: c.opt:49 +-msgid "Do not discard comments in macro expansions" +-msgstr "" +- +-#: c.opt:53 +-msgid "Define a with as its value. If just is given, is taken to be 1" +-msgstr "" +- +-#: c.opt:60 +-msgid "Add to the end of the main framework include path" +-msgstr "" +- +-#: c.opt:64 +-#, fuzzy +-msgid "Print the name of header files as they are used" +-msgstr "Mostrar els noms de les unitats de programa mentre són compilades" +- +-#: c.opt:68 c.opt:859 +-msgid "Add to the end of the main include path" +-msgstr "" +- +-#: c.opt:72 +-#, fuzzy +-msgid "Generate make dependencies" +-msgstr "Generar codi little endian" +- +-#: c.opt:76 +-#, fuzzy +-msgid "Generate make dependencies and compile" +-msgstr "Generar codi little endian" +- +-#: c.opt:80 +-msgid "Write dependency output to the given file" +-msgstr "" +- +-#: c.opt:84 +-msgid "Treat missing header files as generated files" +-msgstr "" +- +-#: c.opt:88 +-msgid "Like -M but ignore system header files" +-msgstr "" +- +-#: c.opt:92 +-msgid "Like -MD but ignore system header files" +-msgstr "" +- +-#: c.opt:96 +-#, fuzzy +-msgid "Generate phony targets for all headers" +-msgstr "Generar codi com de Intel" +- +-#: c.opt:100 +-msgid "Add a MAKE-quoted target" +-msgstr "" +- +-#: c.opt:104 +-msgid "Add an unquoted target" +-msgstr "" +- +-#: c.opt:108 +-#, fuzzy +-msgid "Do not generate #line directives" +-msgstr "No generar directives .size" +- +-#: c.opt:112 +-msgid "Undefine " +-msgstr "" +- +-#: c.opt:116 +-msgid "Warn about things that will change when compiling with an ABI-compliant compiler" +-msgstr "" +- +-#: c.opt:120 +-#, fuzzy +-msgid "Warn about suspicious uses of memory addresses" +-msgstr "Avisar sobre declaracions sospitoses de main" +- +-#: c.opt:124 +-msgid "Enable most warning messages" +-msgstr "Activar gairebé tots els missatges d'avís" +- +-#: c.opt:128 +-#, fuzzy +-msgid "Warn if a comparison is always true or always false due to the limited range of the data type" +-msgstr "la comparança sempre és falsa a causa dels límits limitats del tipus de dades" +- +-#: c.opt:132 +-msgid "Warn whenever an Objective-C assignment is being intercepted by the garbage collector" +-msgstr "" +- +-#: c.opt:136 +-msgid "Warn about casting functions to incompatible types" +-msgstr "Avisar per funcions de conversió a tipus incompatibles" +- +-#: c.opt:140 +-msgid "Warn about C constructs that are not in the common subset of C and C++" +-msgstr "" +- +-#: c.opt:144 +-#, fuzzy +-msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x" +-msgstr "Avisar sobre construccions el significat de les quals canvia en ISO C" +- +-#: c.opt:148 +-msgid "Warn about casts which discard qualifiers" +-msgstr "Avisar sobre conversions que descarten calificators" +- +-#: c.opt:152 +-#, fuzzy +-msgid "Warn about subscripts whose type is \"char\"" +-msgstr "Avisar sobre subindicis el tipus del qual és \"char\"" +- +-#: c.opt:156 +-#, fuzzy +-msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"" +-msgstr "%Jla variable \"%D\" podria ser apallissada per \"longjmp\" o \"vfork\"" +- +-#: c.opt:160 +-msgid "Warn about possibly nested block comments, and C++ comments spanning more than one physical line" +-msgstr "" +- +-#: c.opt:164 +-msgid "Synonym for -Wcomment" +-msgstr "" +- +-#: c.opt:168 +-msgid "Warn for implicit type conversions that may change a value" +-msgstr "" +- +-#: c.opt:172 +-#, fuzzy +-msgid "Warn for implicit type conversions between signed and unsigned integers" +-msgstr "comparança entre expressions enteres signed i unsigned" +- +-#: c.opt:176 +-#, fuzzy +-msgid "Warn when all constructors and destructors are private" +-msgstr "No avisar quan tots els ctors/dtors són privats" +- +-#: c.opt:180 +-#, fuzzy +-msgid "Warn when a declaration is found after a statement" +-msgstr "Avisar quan una declaració no especifiqui un tipus" +- +-#: c.opt:184 +-#, fuzzy +-msgid "Warn about deprecated compiler features" +-msgstr "No anunciar característiques obsoletes del compilador" +- +-#: c.opt:188 +-#, fuzzy +-msgid "Warn about compile-time integer division by zero" +-msgstr "No avisar sobre la divisió entera per zero en temps de compilació" +- +-#: c.opt:192 +-msgid "Warn about violations of Effective C++ style rules" +-msgstr "Avisar violacions de regles d'estil de Effective C++" +- +-#: c.opt:196 +-#, fuzzy +-msgid "Warn about an empty body in an if or else statement" +-msgstr "cos buit en una declaració else" +- +-#: c.opt:200 +-msgid "Warn about stray tokens after #elif and #endif" +-msgstr "" +- +-#: c.opt:208 +-msgid "This switch is deprecated; use -Werror=implicit-function-declaration instead" +-msgstr "" +- +-#: c.opt:212 +-#, fuzzy +-msgid "Warn if testing floating point numbers for equality" +-msgstr "Avisar sobre l'equitat de proves de nombres de coma flotant" +- +-#: c.opt:216 +-#, fuzzy +-msgid "Warn about printf/scanf/strftime/strfmon format string anomalies" +-msgstr "Avisar sobre anomalies amb format de printf/scanf/strftime/strfmon" +- +-#: c.opt:220 +-#, fuzzy +-msgid "Warn if passing too many arguments to a function for its format string" +-msgstr "massa arguments per a la funció \"va_start\"" +- +-#: c.opt:224 +-#, fuzzy +-msgid "Warn about format strings that are not literals" +-msgstr "Avisar sobre l'ús de literals multicaràcters" +- +-#: c.opt:228 +-#, fuzzy +-msgid "Warn about format strings that contain NUL bytes" +-msgstr "Avisar sobre l'ús de literals multicaràcters" +- +-#: c.opt:232 +-msgid "Warn about possible security problems with format functions" +-msgstr "Avisar sobre possibles problemes de seguretat amb funcions de format" +- +-#: c.opt:236 +-#, fuzzy +-msgid "Warn about strftime formats yielding 2-digit years" +-msgstr "No avisar sobre formats de strftime que produeixen dos dígits per a l'any" +- +-#: c.opt:240 +-#, fuzzy +-msgid "Warn about zero-length formats" +-msgstr "cadena de format %s de longitud zero" +- +-#: c.opt:247 +-msgid "Warn about variables which are initialized to themselves" +-msgstr "" +- +-#: c.opt:254 +-msgid "Warn about implicit function declarations" +-msgstr "Avisar sobre la declaració implícita de funcions" +- +-#: c.opt:258 +-msgid "Warn when a declaration does not specify a type" +-msgstr "Avisar quan una declaració no especifiqui un tipus" +- +-#: c.opt:262 +-msgid "Deprecated. This switch has no effect" +-msgstr "" +- +-#: c.opt:266 +-#, fuzzy +-msgid "Warn when there is a cast to a pointer from an integer of a different size" +-msgstr "conversió a punter des d'un enter de grandària diferent" +- +-#: c.opt:270 +-#, fuzzy +-msgid "Warn about invalid uses of the \"offsetof\" macro" +-msgstr "Avisar sobre l'ús de la directiva #import" +- +-#: c.opt:274 +-msgid "Warn about PCH files that are found but not used" +-msgstr "" +- +-#: c.opt:278 +-#, fuzzy +-msgid "Do not warn about using \"long long\" when -pedantic" +-msgstr "No avisar sobre l'ús de \"long long\" quan s'usi -pedantic" +- +-#: c.opt:282 +-#, fuzzy +-msgid "Warn about suspicious declarations of \"main\"" +-msgstr "Avisar sobre declaracions sospitoses de main" +- +-#: c.opt:286 +-msgid "Warn about possibly missing braces around initializers" +-msgstr "Avisar sobre possibles claus faltantes al voltant d'assignadorsº" +- +-#: c.opt:290 +-#, fuzzy +-msgid "Warn about global functions without previous declarations" +-msgstr "Avisar sobre funcions globals sense declaracions prèvies" +- +-#: c.opt:294 +-#, fuzzy +-msgid "Warn about missing fields in struct initializers" +-msgstr "Avisar sobre possibles claus faltantes al voltant d'assignadorsº" +- +-#: c.opt:298 +-msgid "Warn about functions which might be candidates for format attributes" +-msgstr "Avisar per funcions que podrien ser candidates per a atributs de format" +- +-#: c.opt:302 +-msgid "Warn about user-specified include directories that do not exist" +-msgstr "" +- +-#: c.opt:306 +-msgid "Warn about function parameters declared without a type specifier in K&R-style functions" +-msgstr "" +- +-#: c.opt:310 +-#, fuzzy +-msgid "Warn about global functions without prototypes" +-msgstr "Avisar sobre funcions globals sense prototips" +- +-#: c.opt:314 +-#, fuzzy +-msgid "Warn about use of multi-character character constants" +-msgstr "Avisar sobre l'ús de literals multicaràcters" +- +-#: c.opt:318 +-#, fuzzy +-msgid "Warn about \"extern\" declarations not at file scope" +-msgstr "Avisar sobre externs que no estan en el nivell de l'abast del fitxer" +- +-#: c.opt:322 +-#, fuzzy +-msgid "Warn when non-templatized friend functions are declared within a template" +-msgstr "No avisar quan les funcions friend sense patró són declarades dintre d'un patró" +- +-#: c.opt:326 +-#, fuzzy +-msgid "Warn about non-virtual destructors" +-msgstr "Avisar sobre destructors no virtuals" +- +-#: c.opt:330 +-msgid "Warn about NULL being passed to argument slots marked as requiring non-NULL" +-msgstr "" +- +-#: c.opt:334 +-#, fuzzy +-msgid "Warn about non-normalised Unicode strings" +-msgstr "Avisar sobre cadenes de format que no són cadenes literals" +- +-#: c.opt:338 +-#, fuzzy +-msgid "Warn if a C-style cast is used in a program" +-msgstr "Avisar quan s'usi una conversió d'estil C en un programa" +- +-#: c.opt:342 +-#, fuzzy +-msgid "Warn for obsolescent usage in a declaration" +-msgstr "Avisar sobre la declaració implícita de funcions" +- +-#: c.opt:346 +-#, fuzzy +-msgid "Warn if an old-style parameter definition is used" +-msgstr "Avisar quan no s'usi un paràmetre d'una funció" +- +-#: c.opt:350 +-msgid "Warn if a string is longer than the maximum portable length specified by the standard" +-msgstr "" +- +-#: c.opt:354 +-msgid "Warn about overloaded virtual function names" +-msgstr "Avisar sobre noms de funcions virtual sobrecarregades" +- +-#: c.opt:358 +-#, fuzzy +-msgid "Warn about overriding initializers without side effects" +-msgstr "Avisar sobre variables automàtiques sense iniciar" +- +-#: c.opt:362 +-#, fuzzy +-msgid "Warn about possibly missing parentheses" +-msgstr "Avisar sobre possibles parèntesis faltantes" +- +-#: c.opt:366 +-#, fuzzy +-msgid "Warn when converting the type of pointers to member functions" +-msgstr "avisar quan el tipus converteix punters a funcions membre" +- +-#: c.opt:370 +-msgid "Warn about function pointer arithmetic" +-msgstr "Avisar sobre l'aritmètica de punters de funcions" +- +-#: c.opt:374 +-#, fuzzy +-msgid "Warn when a pointer is cast to an integer of a different size" +-msgstr "conversió de punter a enter de grandària diferent" +- +-#: c.opt:378 +-#, fuzzy +-msgid "Warn about misuses of pragmas" +-msgstr "Avisar sobre pragmas no reconeguts" +- +-#: c.opt:382 +-#, fuzzy +-msgid "Warn if inherited methods are unimplemented" +-msgstr "Avisar si es detecten comentaris niats" +- +-#: c.opt:386 +-msgid "Warn about multiple declarations of the same object" +-msgstr "Avisar sobre declaracions múltiples del mateix objecte" +- +-#: c.opt:390 +-msgid "Warn when the compiler reorders code" +-msgstr "Avisar quan el compilador reordeni codi" +- +-#: c.opt:394 +-#, fuzzy +-msgid "Warn whenever a function's return type defaults to \"int\" (C), or about inconsistent return types (C++)" +-msgstr "Avisar quan el tipus de retorn per defecte d'una funció canvia a int" +- +-#: c.opt:398 +-msgid "Warn if a selector has multiple methods" +-msgstr "" +- +-#: c.opt:402 +-msgid "Warn about possible violations of sequence point rules" +-msgstr "Avisar sobre possibles violacions a les regles de seqüència de punt" +- +-#: c.opt:406 +-#, fuzzy +-msgid "Warn about signed-unsigned comparisons" +-msgstr "Avisar sobre comparances signed/unsigned" +- +-#: c.opt:410 +-msgid "Warn when overload promotes from unsigned to signed" +-msgstr "Avisar quan la sobrecàrrega promogui de unsigned a signed" +- +-#: c.opt:414 +-msgid "Warn about uncasted NULL used as sentinel" +-msgstr "" +- +-#: c.opt:418 +-#, fuzzy +-msgid "Warn about unprototyped function declarations" +-msgstr "Avisar sobre declaracions de funció sense prototip" +- +-#: c.opt:422 +-msgid "Warn if type signatures of candidate methods do not match exactly" +-msgstr "" +- +-#: c.opt:426 +-msgid "Warn when synthesis behavior differs from Cfront" +-msgstr "Avisar quan el comportament de síntesi difereixi de Cfront" +- +-#: c.opt:430 common.opt:182 +-msgid "Do not suppress warnings from system headers" +-msgstr "No suprimir els avisos dels encapçalats del sistema" +- +-#: c.opt:434 +-#, fuzzy +-msgid "Warn about features not present in traditional C" +-msgstr "es suggereix no usar #elif en C tradicional" +- +-#: c.opt:438 +-msgid "Warn of prototypes causing type conversions different from what would happen in the absence of prototype" +-msgstr "" +- +-#: c.opt:442 +-msgid "Warn if trigraphs are encountered that might affect the meaning of the program" +-msgstr "" +- +-#: c.opt:446 +-#, fuzzy +-msgid "Warn about @selector()s without previously declared methods" +-msgstr "Avisar sobre funcions globals sense declaracions prèvies" +- +-#: c.opt:450 +-#, fuzzy +-msgid "Warn if an undefined macro is used in an #if directive" +-msgstr "directiva # no definida o no vàlida" +- +-#: c.opt:454 +-msgid "Warn about unrecognized pragmas" +-msgstr "Avisar sobre pragmas no reconeguts" +- +-#: c.opt:458 +-msgid "Warn about macros defined in the main file that are not used" +-msgstr "" +- +-#: c.opt:462 +-#, fuzzy +-msgid "Do not warn about using variadic macros when -pedantic" +-msgstr "No avisar sobre l'ús de \"long long\" quan s'usi -pedantic" +- +-#: c.opt:466 +-#, fuzzy +-msgid "Warn if a variable length array is used" +-msgstr "Avisar quan no s'usi una variable" +- +-#: c.opt:470 +-msgid "In C++, nonzero means warn about deprecated conversion from string literals to `char *'. In C, similar warning, except that the conversion is of course not deprecated by the ISO C standard." +-msgstr "" +- +-#: c.opt:474 +-#, fuzzy +-msgid "Warn when a pointer differs in signedness in an assignment" +-msgstr "Avisar quan la sobrecàrrega promogui de unsigned a signed" +- +-#: c.opt:478 +-msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)" +-msgstr "" +- +-#: c.opt:486 +-#, fuzzy +-msgid "Enforce class member access control semantics" +-msgstr "No obeir les semàntiques de control d'accés" +- +-#: c.opt:493 +-msgid "Change when template instances are emitted" +-msgstr "Canviar quan s'emetin les instàncies del patró" +- +-#: c.opt:497 +-#, fuzzy +-msgid "Recognize the \"asm\" keyword" +-msgstr "No reconèixer la paraula clau \"asm\"" +- +-#: c.opt:501 +-#, fuzzy +-msgid "Recognize built-in functions" +-msgstr "No reconèixer cap funció interna" +- +-#: c.opt:508 +-msgid "Check the return value of new" +-msgstr "Revisar el valor de retorn de new" +- +-#: c.opt:512 +-#, fuzzy +-msgid "Allow the arguments of the '?' operator to have different types" +-msgstr "els operands de ?: tenen tipus diferents" +- +-#: c.opt:516 +-#, fuzzy +-msgid "Reduce the size of object files" +-msgstr "Reduir la grandària dels fitxers objecte" +- +-#: c.opt:520 +-#, fuzzy +-msgid "Use class for constant strings" +-msgstr "Especificar un nom alternatiu per a la secció constant" +- +-#: c.opt:524 +-msgid "Inline member functions by default" +-msgstr "Fer que les funcions membre siguin «inline» per omissió" +- +-#: c.opt:528 +-#, fuzzy +-msgid "Preprocess directives only." +-msgstr "Processar directives #ident" +- +-#: c.opt:532 +-#, fuzzy +-msgid "Permit '$' as an identifier character" +-msgstr "el format és una cadena de caràcter ampla" +- +-#: c.opt:539 +-#, fuzzy +-msgid "Generate code to check exception specifications" +-msgstr "No generar codi per a revisar excepcions d'especificacions" +- +-#: c.opt:546 +-msgid "Convert all strings and character constants to character set " +-msgstr "" +- +-#: c.opt:550 +-#, fuzzy +-msgid "Permit universal character names (\\u and \\U) in identifiers" +-msgstr "universal-character-name \"\\u%04x\" no és vàlid en l'identificador" +- +-#: c.opt:554 +-msgid "Specify the default character set for source files" +-msgstr "" +- +-#: c.opt:562 +-#, fuzzy +-msgid "Scope of for-init-statement variables is local to the loop" +-msgstr "L'àmbit de les variables de la declaració d'inici de for s'estén cap a fora" +- +-#: c.opt:566 +-#, fuzzy +-msgid "Do not assume that standard C libraries and \"main\" exist" +-msgstr "Assumir que podrien no existir les biblioteques estàndard i main" +- +-#: c.opt:570 +-#, fuzzy +-msgid "Recognize GNU-defined keywords" +-msgstr "No reconèixer les paraules claus definides per GNU" +- +-#: c.opt:574 +-msgid "Generate code for GNU runtime environment" +-msgstr "" +- +-#: c.opt:578 +-#, fuzzy +-msgid "Use traditional GNU semantics for inline functions" +-msgstr "C tradicional rebutja els valors inicials d'unions" +- +-#: c.opt:591 +-msgid "Assume normal C execution environment" +-msgstr "Assumir l'ambient normal d'execució C" +- +-#: c.opt:595 +-msgid "Enable support for huge objects" +-msgstr "Activar el suport per a objectes enormes" +- +-#: c.opt:599 +-msgid "Export functions even if they can be inlined" +-msgstr "Exportar funcions encara si poden ser «inline»" +- +-#: c.opt:603 +-#, fuzzy +-msgid "Emit implicit instantiations of inline templates" +-msgstr "Emetre solament instanciacions explícites de patrons «inline»" +- +-#: c.opt:607 +-#, fuzzy +-msgid "Emit implicit instantiations of templates" +-msgstr "Emetre solament instanciacions explícites de patrons «inline»" +- +-#: c.opt:611 +-#, fuzzy +-msgid "Inject friend functions into enclosing namespace" +-msgstr "Integrar les funcions simples en els seus invocators" +- +-#: c.opt:618 +-msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types." +-msgstr "" +- +-#: c.opt:622 +-#, fuzzy +-msgid "Don't warn about uses of Microsoft extensions" +-msgstr "No avisar pedantment sobre els usos d'extensions Microsoft" +- +-#: c.opt:632 +-msgid "Generate code for NeXT (Apple Mac OS X) runtime environment" +-msgstr "" +- +-#: c.opt:636 +-msgid "Assume that receivers of Objective-C messages may be nil" +-msgstr "" +- +-#: c.opt:648 +-msgid "Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed" +-msgstr "" +- +-#: c.opt:652 +-msgid "Allow fast jumps to the message dispatcher" +-msgstr "" +- +-#: c.opt:658 +-msgid "Enable Objective-C exception and synchronization syntax" +-msgstr "" +- +-#: c.opt:662 +-msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs" +-msgstr "" +- +-#: c.opt:667 +-#, fuzzy +-msgid "Enable Objective-C setjmp exception handling runtime" +-msgstr "Activar el maneig d'excepcions" +- +-#: c.opt:671 +-#, fuzzy +-msgid "Enable OpenMP" +-msgstr "Activar la depuració" +- +-#: c.opt:675 +-msgid "Recognize C++ kewords like \"compl\" and \"xor\"" +-msgstr "" +- +-#: c.opt:679 +-#, fuzzy +-msgid "Enable optional diagnostics" +-msgstr "Desactivar els diagnòstics opcionals" +- +-#: c.opt:686 +-msgid "Look for and use PCH files even when preprocessing" +-msgstr "" +- +-#: c.opt:690 +-msgid "Downgrade conformance errors to warnings" +-msgstr "Degradar els errors de concordança a advertiments" +- +-#: c.opt:694 +-msgid "Treat the input file as already preprocessed" +-msgstr "" +- +-#: c.opt:698 +-msgid "Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime" +-msgstr "" +- +-#: c.opt:702 +-msgid "Enable automatic template instantiation" +-msgstr "Activar l'instanciació automàtica de patrons" +- +-#: c.opt:706 +-#, fuzzy +-msgid "Generate run time type descriptor information" +-msgstr "No generar informació del tipus de descriptor en temps d'execució" +- +-#: c.opt:710 +-msgid "Use the same size for double as for float" +-msgstr "Usar la mateixa grandària per a double que per a float" +- +-#: c.opt:718 +-#, fuzzy +-msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"" +-msgstr "Fer de costat el tipus sota wchar_t per \"unsigned short\"" +- +-#: c.opt:722 +-msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed" +-msgstr "" +- +-#: c.opt:726 +-#, fuzzy +-msgid "Make \"char\" signed by default" +-msgstr "Fer que \"char\" sigui signed per omissió" +- +-#: c.opt:733 +-msgid "Display statistics accumulated during compilation" +-msgstr "Mostrar les estadístiques acumulades durant la compilació" +- +-#: c.opt:740 +-msgid "Distance between tab stops for column reporting" +-msgstr "" +- +-#: c.opt:744 +-#, fuzzy +-msgid "Specify maximum template instantiation depth" +-msgstr "Especificar la profunditat màxima d'instanciació de patrons" +- +-#: c.opt:751 +-#, fuzzy +-msgid "Do not generate thread-safe code for initializing local statics" +-msgstr "No generis codi per a crides near" +- +-#: c.opt:755 +-msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned" +-msgstr "" +- +-#: c.opt:759 +-msgid "Make \"char\" unsigned by default" +-msgstr "Fer que \"char\" sigui unsigned per omissió" +- +-#: c.opt:763 +-msgid "Use __cxa_atexit to register destructors" +-msgstr "Usar __cxa_atexit per a registrar destructors" +- +-#: c.opt:767 +-msgid "Use __cxa_get_exception_ptr in exception handling" +-msgstr "" +- +-#: c.opt:771 +-msgid "Marks all inlined methods as having hidden visibility" +-msgstr "" +- +-#: c.opt:775 +-msgid "Changes visibility to match Microsoft Visual Studio by default" +-msgstr "" +- +-#: c.opt:779 +-msgid "Discard unused virtual functions" +-msgstr "Descartar funcions virtual sense usar" +- +-#: c.opt:783 +-msgid "Implement vtables using thunks" +-msgstr "Implementar vtables usant thunks" +- +-#: c.opt:787 +-msgid "Emit common-like symbols as weak symbols" +-msgstr "Emetre símbols comuns com símbols febles" +- +-#: c.opt:791 +-msgid "Convert all wide strings and character constants to character set " +-msgstr "" +- +-#: c.opt:795 +-msgid "Generate a #line directive pointing at the current working directory" +-msgstr "" +- +-#: c.opt:799 +-msgid "Emit cross referencing information" +-msgstr "Emetre informació de referència creuada" +- +-#: c.opt:803 +-msgid "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode" +-msgstr "" +- +-#: c.opt:807 +-msgid "Dump declarations to a .decl file" +-msgstr "" +- +-#: c.opt:811 +-msgid "Aggressive reduced debug info for structs" +-msgstr "" +- +-#: c.opt:815 +-msgid "Conservative reduced debug info for structs" +-msgstr "" +- +-#: c.opt:819 +-msgid "Detailed reduced debug info for structs" +-msgstr "" +- +-#: c.opt:823 c.opt:855 +-msgid "Add to the end of the system include path" +-msgstr "" +- +-#: c.opt:827 +-#, fuzzy +-msgid "Accept definition of macros in " +-msgstr "cicle en la definició de la reservació \"%s\"" +- +-#: c.opt:831 +-msgid "-imultilib Set to be the multilib include subdirectory" +-msgstr "" +- +-#: c.opt:835 +-msgid "Include the contents of before other files" +-msgstr "" +- +-#: c.opt:839 +-#, fuzzy +-msgid "Specify as a prefix for next two options" +-msgstr "Especificar un nom alternatiu per a la secció de text" +- +-#: c.opt:843 +-msgid "Set to be the system root directory" +-msgstr "" +- +-#: c.opt:847 +-msgid "Add to the start of the system include path" +-msgstr "" +- +-#: c.opt:851 +-msgid "Add to the end of the quote include path" +-msgstr "" +- +-#: c.opt:872 +-msgid "Do not search standard system include directories (those specified with -isystem will still be used)" +-msgstr "" +- +-#: c.opt:876 +-msgid "Do not search standard system include directories for C++" +-msgstr "" +- +-#: c.opt:892 +-msgid "Generate C header of platform-specific features" +-msgstr "" +- +-#: c.opt:896 +-msgid "Print a checksum of the executable for PCH validity checking, and stop" +-msgstr "" +- +-#: c.opt:900 +-msgid "Remap file names when including files" +-msgstr "" +- +-#: c.opt:904 +-msgid "Conform to the ISO 1998 C++ standard" +-msgstr "" +- +-#: c.opt:908 +-msgid "Conform to the ISO 1998 C++ standard, with extensions that are likely to" +-msgstr "" +- +-#: c.opt:915 c.opt:950 +-msgid "Conform to the ISO 1990 C standard" +-msgstr "" +- +-#: c.opt:919 c.opt:958 +-msgid "Conform to the ISO 1999 C standard" +-msgstr "" +- +-#: c.opt:923 +-msgid "Deprecated in favor of -std=c99" +-msgstr "" +- +-#: c.opt:927 +-msgid "Conform to the ISO 1998 C++ standard with GNU extensions" +-msgstr "" +- +-#: c.opt:931 +-msgid "Conform to the ISO 1998 C++ standard, with GNU extensions and" +-msgstr "" +- +-#: c.opt:938 +-msgid "Conform to the ISO 1990 C standard with GNU extensions" +-msgstr "" +- +-#: c.opt:942 +-msgid "Conform to the ISO 1999 C standard with GNU extensions" +-msgstr "" +- +-#: c.opt:946 +-msgid "Deprecated in favor of -std=gnu99" +-msgstr "" +- +-#: c.opt:954 +-msgid "Conform to the ISO 1990 C standard as amended in 1994" +-msgstr "" +- +-#: c.opt:962 +-msgid "Deprecated in favor of -std=iso9899:1999" +-msgstr "" +- +-#: c.opt:966 +-msgid "Enable traditional preprocessing" +-msgstr "" +- +-#: c.opt:970 +-msgid "Support ISO C trigraphs" +-msgstr "" +- +-#: c.opt:974 +-msgid "Do not predefine system-specific and GCC-specific macros" +-msgstr "" +- +-#: c.opt:978 +-msgid "Enable verbose output" +-msgstr "Activar la sortida de depuració verbosa" +- +-#: common.opt:27 +-#, fuzzy +-msgid "Display this information" +-msgstr " --help Mostra aquesta informació\n" +- +-#: common.opt:31 +-msgid "Display descriptions of a specific class of options. is one or more of optimizers, target, warnings, undocumented, params" +-msgstr "" +- +-#: common.opt:35 +-msgid "Alias for --help=target" +-msgstr "" +- +-#: common.opt:51 +-msgid "Set parameter to value. See below for a complete list of parameters" +-msgstr "" +- +-#: common.opt:58 +-#, fuzzy +-msgid "Put global and static data smaller than bytes into a special section (on some targets)" +-msgstr "" +-" -G Col·locar les dades globals i estàtics més petits que \n" +-" octets en una secció especial (en alguns objectius)\n" +- +-#: common.opt:62 +-#, fuzzy +-msgid "Set optimization level to " +-msgstr " -O[nombre] Establir el nivell d'optimització a [nombre]\n" +- +-#: common.opt:66 +-#, fuzzy +-msgid "Optimize for space rather than speed" +-msgstr " -Os Optimitzar per a espai en lloc de velocitat\n" +- +-#: common.opt:70 +-msgid "This switch is deprecated; use -Wextra instead" +-msgstr "" +- +-#: common.opt:74 +-msgid "Warn about returning structures, unions or arrays" +-msgstr "Avisar sobre la retorn d'estructures, unions o matrius" +- +-#: common.opt:78 +-msgid "Warn if an array is accessed out of bounds" +-msgstr "" +- +-#: common.opt:82 +-#, fuzzy +-msgid "Warn about inappropriate attribute usage" +-msgstr "Avisar sobre l'aritmètica de punters de funcions" +- +-#: common.opt:86 +-msgid "Warn about pointer casts which increase alignment" +-msgstr "Avisar sobre conversió de punters que incrementi l'alineació" +- +-#: common.opt:90 +-msgid "Warn about uses of __attribute__((deprecated)) declarations" +-msgstr "Avisar sobre el ùs de declaracions __attribute__((deprecated))" +- +-#: common.opt:94 +-msgid "Warn when an optimization pass is disabled" +-msgstr "Avisar quan es va desactivar un pas d'optimització" +- +-#: common.opt:98 +-msgid "Treat all warnings as errors" +-msgstr "Tractar tots els avisos com errors" +- +-#: common.opt:102 +-#, fuzzy +-msgid "Treat specified warning as error" +-msgstr "Tractar tots els avisos com errors" +- +-#: common.opt:106 +-msgid "Print extra (possibly unwanted) warnings" +-msgstr "" +- +-#: common.opt:110 +-msgid "Exit on the first error occurred" +-msgstr "" +- +-#: common.opt:114 +-msgid "Warn when an inlined function cannot be inlined" +-msgstr "Avisar quan una funció «inline» no pot ser «inline»" +- +-#: common.opt:118 +-#, fuzzy +-msgid "Warn if an object is larger than bytes" +-msgstr " -Wlarger-than- Avisar si un objecte és més gran que octets\n" +- +-#: common.opt:122 +-msgid "Warn when a logical operator is suspicously always evaluating to true or false" +-msgstr "" +- +-#: common.opt:126 +-msgid "Warn if the loop cannot be optimized due to nontrivial assumptions." +-msgstr "" +- +-#: common.opt:130 +-#, fuzzy +-msgid "Warn about functions which might be candidates for __attribute__((noreturn))" +-msgstr "Avisar sobre funcions que podrien ser candidates per a l'atribut noreturn" +- +-#: common.opt:134 +-#, fuzzy +-msgid "Warn about overflow in arithmetic expressions" +-msgstr "desbordament de coma flotant en l'expressió" +- +-#: common.opt:138 +-msgid "Warn when the packed attribute has no effect on struct layout" +-msgstr "Avisar quan l'atribut packed no té efecte en la disposició d'un struct" +- +-#: common.opt:142 +-#, fuzzy +-msgid "Warn when padding is required to align structure members" +-msgstr "Avisar quan es requereix farcit per a alinear als membres d'un struct" +- +-#: common.opt:146 +-msgid "Warn when one local variable shadows another" +-msgstr "Avisar quan una variable local enfosque una altra" +- +-#: common.opt:150 +-msgid "Warn when not issuing stack smashing protection for some reason" +-msgstr "" +- +-#: common.opt:154 common.opt:158 +-#, fuzzy +-msgid "Warn about code which might break strict aliasing rules" +-msgstr "Avisar sobre codi que pugui trencar les regles estrictes d'aliessis" +- +-#: common.opt:162 common.opt:166 +-msgid "Warn about optimizations that assume that signed overflow is undefined" +-msgstr "" +- +-#: common.opt:170 +-msgid "Warn about enumerated switches, with no default, missing a case" +-msgstr "Avisar sobre «switch» enumerats, sense valor per defecte, que manquin d'un «case»" +- +-#: common.opt:174 +-#, fuzzy +-msgid "Warn about enumerated switches missing a \"default:\" statement" +-msgstr "Avisar sobre «switch» enumerats que manquin d'un \"default:\"" +- +-#: common.opt:178 +-msgid "Warn about all enumerated switches missing a specific case" +-msgstr "Avisar sobre tots els «switch» enumerats que manquin d'un «case» específic" +- +-#: common.opt:186 +-msgid "Warn about uninitialized automatic variables" +-msgstr "Avisar sobre variables automàtiques sense iniciar" +- +-#: common.opt:190 +-msgid "Warn about code that will never be executed" +-msgstr "Avisar sobre codi que mai s'executarà" +- +-#: common.opt:194 +-msgid "Enable all -Wunused- warnings" +-msgstr "" +- +-#: common.opt:198 +-msgid "Warn when a function is unused" +-msgstr "Avisar quan no s'usi una funció" +- +-#: common.opt:202 +-msgid "Warn when a label is unused" +-msgstr "Avisar quan no s'usi una etiqueta" +- +-#: common.opt:206 +-msgid "Warn when a function parameter is unused" +-msgstr "Avisar quan no s'usi un paràmetre d'una funció" +- +-#: common.opt:210 +-msgid "Warn when an expression value is unused" +-msgstr "Avisar quan no s'usi un valor d'una expressió" +- +-#: common.opt:214 +-msgid "Warn when a variable is unused" +-msgstr "Avisar quan no s'usi una variable" +- +-#: common.opt:218 +-#, fuzzy +-msgid "Warn when a register variable is declared volatile" +-msgstr "Avisar quan no s'usi una variable" +- +-#: common.opt:222 +-msgid "Warn instead of error in case profiles in -fprofile-use do not match" +-msgstr "" +- +-#: common.opt:226 +-#, fuzzy +-msgid "Emit declaration information into " +-msgstr " -aux-info Emetre la informació de declaracions en el \n" +- +-#: common.opt:239 +-#, fuzzy +-msgid "Enable dumps from specific passes of the compiler" +-msgstr " -d[lletres] Activa els bolcats des de passos específics del compilador\n" +- +-#: common.opt:243 +-#, fuzzy +-msgid "Set the file basename to be used for dumps" +-msgstr " -dumpbase Nom base a usar per als bolcats des de passos específics\n" +- +-#: common.opt:263 +-msgid "Align the start of functions" +-msgstr "Alinear l'inici de les funcions" +- +-#: common.opt:270 +-msgid "Align labels which are only reached by jumping" +-msgstr "Alinear les etiquetes que solament s'arriben a saltant" +- +-#: common.opt:277 +-msgid "Align all labels" +-msgstr "Alinear totes les etiquetes" +- +-#: common.opt:284 +-msgid "Align the start of loops" +-msgstr "Alinear l'inici dels cicles" +- +-#: common.opt:299 +-#, fuzzy +-msgid "Specify that arguments may alias each other and globals" +-msgstr "Especifica que els arguments poden ser alies de cada altre i dels globals" +- +-#: common.opt:303 +-msgid "Assume arguments may alias globals but not each other" +-msgstr "Assumir que els arguments poden ser alies de globals però no de cada altre" +- +-#: common.opt:307 +-#, fuzzy +-msgid "Assume arguments alias neither each other nor globals" +-msgstr "Assumir que els arguments no poden ser alies de globals o de cada altre" +- +-#: common.opt:311 +-#, fuzzy +-msgid "Assume arguments alias no other storage" +-msgstr "Assumir que els arguments no poden ser alies de globals o de cada altre" +- +-#: common.opt:315 +-#, fuzzy +-msgid "Generate unwind tables that are exact at each instruction boundary" +-msgstr "Generar matrius de desembolico exactament en cada límit d'instrucció" +- +-#: common.opt:319 +-#, fuzzy +-msgid "Generate auto-inc/dec instructions" +-msgstr "Generar instruccions char" +- +-#: common.opt:327 +-msgid "Generate code to check bounds before indexing arrays" +-msgstr "Generar codi per a revisar els límits abans de matrius" +- +-#: common.opt:331 +-#, fuzzy +-msgid "Replace add, compare, branch with branch on count register" +-msgstr "Reemplaçar add,compare,branch per branch en el compte de registres" +- +-#: common.opt:335 +-msgid "Use profiling information for branch probabilities" +-msgstr "Usar la informació d'anàlisi de perfil per a les probabilitats de ramificació" +- +-#: common.opt:339 +-msgid "Perform branch target load optimization before prologue / epilogue threading" +-msgstr "" +- +-#: common.opt:343 +-msgid "Perform branch target load optimization after prologue / epilogue threading" +-msgstr "" +- +-#: common.opt:347 +-msgid "Restrict target load migration not to re-use registers in any basic block" +-msgstr "" +- +-#: common.opt:351 +-#, fuzzy +-msgid "Mark as being preserved across functions" +-msgstr " -fcall-saved- Marca el com preservat entre funcions\n" +- +-#: common.opt:355 +-#, fuzzy +-msgid "Mark as being corrupted by function calls" +-msgstr " -fcall-used- Marca el com corrupte per a crides de funció\n" +- +-#: common.opt:362 +-#, fuzzy +-msgid "Save registers around function calls" +-msgstr "Permetre guardar registres al voltant de crides de funció" +- +-#: common.opt:366 +-msgid "Compare the results of several data dependence analyzers." +-msgstr "" +- +-#: common.opt:370 +-msgid "Do not put uninitialized globals in the common section" +-msgstr "No posar globals sense iniciar en la secció comuna" +- +-#: common.opt:374 +-#, fuzzy +-msgid "Perform a register copy-propagation optimization pass" +-msgstr "Fer el pas d'optimització de còpia-propagació de registres" +- +-#: common.opt:378 +-msgid "Perform cross-jumping optimization" +-msgstr "Realitzar optimitzacions de salts creuats" +- +-#: common.opt:382 +-msgid "When running CSE, follow jumps to their targets" +-msgstr "Quan s'estigui executant CSE, seguir als salts als seus objectius" +- +-#: common.opt:386 +-msgid "When running CSE, follow conditional jumps" +-msgstr "Quan s'estigui executant CSE, seguir als salts condicionals" +- +-#: common.opt:390 +-msgid "Omit range reduction step when performing complex division" +-msgstr "" +- +-#: common.opt:394 +-#, fuzzy +-msgid "Place data items into their own section" +-msgstr "col·locar els elements de dades en la seva pròpia secció" +- +-#: common.opt:398 +-msgid "List all available debugging counters with their limits and counts." +-msgstr "" +- +-#: common.opt:402 +-msgid "-fdbg-cnt=:[,:,...] Set the debug counter limit. " +-msgstr "" +- +-#: common.opt:406 +-msgid "Map one directory name to another in debug information" +-msgstr "" +- +-#: common.opt:412 +-msgid "Defer popping functions args from stack until later" +-msgstr "Diferir l'extracció d'arguments de funcions de la pila fins més tard" +- +-#: common.opt:416 +-msgid "Attempt to fill delay slots of branch instructions" +-msgstr "Intentar emplenar les ranures de retard de les instruccions de ramificació" +- +-#: common.opt:420 +-msgid "Delete useless null pointer checks" +-msgstr "Esborrar les revisions de punters nuls sense ús" +- +-#: common.opt:424 +-#, fuzzy +-msgid "How often to emit source location at the beginning of line-wrapped diagnostics" +-msgstr " -fdiagnostics-show-location=[once | every-line] Indica que tan seguit es ha d'emetre la informació d'ubicació del codi, com prefix, a l'inici dels diagnòstics quan està activat el cort de línia\n" +- +-#: common.opt:428 +-msgid "Amend appropriate diagnostic messages with the command line option that controls them" +-msgstr "" +- +-#: common.opt:432 +-msgid "Dump various compiler internals to a file" +-msgstr "" +- +-#: common.opt:436 +-#, fuzzy +-msgid "Suppress output of addresses in debugging dumps" +-msgstr "Suprimir la sortida de notes de nombres d'instrucció i nombres de línia en els bolcats de depuració" +- +-#: common.opt:440 +-#, fuzzy +-msgid "Suppress output of instruction numbers, line number notes and addresses in debugging dumps" +-msgstr "Suprimir la sortida de notes de nombres d'instrucció i nombres de línia en els bolcats de depuració" +- +-#: common.opt:444 +-#, fuzzy +-msgid "Perform early inlining" +-msgstr "Realitzar les optimitzacions de cicle" +- +-#: common.opt:448 +-msgid "Perform DWARF2 duplicate elimination" +-msgstr "Realitzar l'eliminació de DWARF2 duplicats" +- +-#: common.opt:452 common.opt:456 +-msgid "Perform unused type elimination in debug info" +-msgstr "" +- +-#: common.opt:460 +-msgid "Do not suppress C++ class debug information." +-msgstr "" +- +-#: common.opt:464 +-msgid "Enable exception handling" +-msgstr "Activar el maneig d'excepcions" +- +-#: common.opt:468 +-msgid "Perform a number of minor, expensive optimizations" +-msgstr "Realitzar un nombre menor d'optimitzacions costoses" +- +-#: common.opt:475 +-msgid "Assume no NaNs or infinities are generated" +-msgstr "" +- +-#: common.opt:479 +-#, fuzzy +-msgid "Mark as being unavailable to the compiler" +-msgstr " -ffixed- Marca el com no disponible per al compilador\n" +- +-#: common.opt:483 +-msgid "Don't allocate floats and doubles in extended-precision registers" +-msgstr "" +- +-#: common.opt:489 +-#, fuzzy +-msgid "Copy memory address constants into registers before use" +-msgstr "Copiar les constants d'adreces de memòria en registres abans d'usar-los" +- +-#: common.opt:493 +-#, fuzzy +-msgid "Perform a forward propagation pass on RTL" +-msgstr "Fer el pas d'optimització de còpia-propagació de registres" +- +-#: common.opt:500 +-msgid "Allow function addresses to be held in registers" +-msgstr "Permetre que les adreces de les funcions es conserven en registres" +- +-#: common.opt:504 +-#, fuzzy +-msgid "Place each function into its own section" +-msgstr "col·locar cada funció en la seva pròpia secció" +- +-#: common.opt:508 +-#, fuzzy +-msgid "Perform global common subexpression elimination" +-msgstr "Realitzar l'eliminació de subexpressions comuns globals" +- +-#: common.opt:512 +-#, fuzzy +-msgid "Perform enhanced load motion during global common subexpression elimination" +-msgstr "Realitzar el moviment de càrrega millorada durant l'eliminació de subexpressions globals" +- +-#: common.opt:516 +-#, fuzzy +-msgid "Perform store motion after global common subexpression elimination" +-msgstr "Realitzar el moviment de guardat després de l'eliminació de subexpressions globals" +- +-#: common.opt:520 +-#, fuzzy +-msgid "Perform redundant load after store elimination in global common subexpression" +-msgstr "Realitzar el moviment de càrrega millorada durant l'eliminació de subexpressions globals" +- +-#: common.opt:525 +-#, fuzzy +-msgid "Perform global common subexpression elimination after register allocation" +-msgstr "Realitzar l'eliminació de subexpressions comuns globals" +- +-#: common.opt:530 +-#, fuzzy +-msgid "Enable guessing of branch probabilities" +-msgstr "Activar la predicció de probabilitats de ramificació" +- +-#: common.opt:538 +-msgid "Process #ident directives" +-msgstr "Processar directives #ident" +- +-#: common.opt:542 +-msgid "Perform conversion of conditional jumps to branchless equivalents" +-msgstr "" +- +-#: common.opt:546 +-msgid "Perform conversion of conditional jumps to conditional execution" +-msgstr "Realitzar la conversió de salts condicionals a execució condicional" +- +-#: common.opt:554 +-msgid "Do not generate .size directives" +-msgstr "No generar directives .size" +- +-#: common.opt:563 +-#, fuzzy +-msgid "Pay attention to the \"inline\" keyword" +-msgstr "Fer atenció a la paraula clau \"inline\"" +- +-#: common.opt:567 +-#, fuzzy +-msgid "Integrate simple functions into their callers when code size is known to not growth" +-msgstr "Integrar les funcions simples en els seus invocators" +- +-#: common.opt:571 +-msgid "Integrate simple functions into their callers" +-msgstr "Integrar les funcions simples en els seus invocators" +- +-#: common.opt:575 +-#, fuzzy +-msgid "Integrate functions called once into their callers" +-msgstr "Integrar les funcions simples en els seus invocators" +- +-#: common.opt:582 +-#, fuzzy +-msgid "Limit the size of inlined functions to " +-msgstr "-finline-limit=\tLimita la grandària de funcions «inline» a \n" +- +-#: common.opt:586 +-#, fuzzy +-msgid "Instrument function entry and exit with profiling calls" +-msgstr "Instrumentar funcions entrada/sortida amb crides d'anàlisi de perfil" +- +-#: common.opt:590 +-msgid "-finstrument-functions-exclude-function-list=name,... Do not instrument listed functions" +-msgstr "" +- +-#: common.opt:594 +-msgid "-finstrument-functions-exclude-file-list=filename,... Do not instrument functions listed in files" +-msgstr "" +- +-#: common.opt:598 +-#, fuzzy +-msgid "Perform Interprocedural constant propagation" +-msgstr "Activar la propagació de les constants condicionals SSA" +- +-#: common.opt:602 +-#, fuzzy +-msgid "Discover pure and const functions" +-msgstr "Descartar funcions virtual sense usar" +- +-#: common.opt:606 +-msgid "Perform interprocedural points-to analysis" +-msgstr "" +- +-#: common.opt:610 +-msgid "Discover readonly and non addressable static variables" +-msgstr "" +- +-#: common.opt:614 +-msgid "Type based escape and alias analysis" +-msgstr "" +- +-#: common.opt:618 +-msgid "Perform matrix layout flattening and transposing based" +-msgstr "" +- +-#: common.opt:623 +-#, fuzzy +-msgid "Perform structure layout optimizations based" +-msgstr "Realitzar optimitzacions de reducció de força" +- +-#: common.opt:628 +-msgid "Optimize induction variables on trees" +-msgstr "" +- +-#: common.opt:632 +-#, fuzzy +-msgid "Use jump tables for sufficiently large switch statements" +-msgstr "l'etiqueta «case» no es troba dintre d'una declaració «switch»" +- +-#: common.opt:636 +-#, fuzzy +-msgid "Generate code for functions even if they are fully inlined" +-msgstr "Generar codi per a les funcions encara si estan completament «inline»" +- +-#: common.opt:640 +-msgid "Emit static const variables even if they are not used" +-msgstr "Emetre variables static const encara si no s'usen" +- +-#: common.opt:644 +-#, fuzzy +-msgid "Give external symbols a leading underscore" +-msgstr "Els símbols externs tenen un subratllat inicial" +- +-#: common.opt:648 common.opt:852 common.opt:983 +-msgid "Does nothing. Preserved for backward compatibility." +-msgstr "" +- +-#: common.opt:652 +-msgid "Set errno after built-in math functions" +-msgstr "Establir errno després de les funcions matemàtiques internes" +- +-#: common.opt:656 +-#, fuzzy +-msgid "Report on permanent memory allocation" +-msgstr "Reportar l'allotjament en memòria permanent al final de l'execució" +- +-#: common.opt:663 +-msgid "Attempt to merge identical constants and constant variables" +-msgstr "Intentar barrejar constants idèntiques i variables constants" +- +-#: common.opt:667 +-msgid "Attempt to merge identical constants across compilation units" +-msgstr "Intentar barrejar constants idèntiques a través de les unitats de compilació" +- +-#: common.opt:671 +-#, fuzzy +-msgid "Limit diagnostics to characters per line. 0 suppresses line-wrapping" +-msgstr " -fmessage-length= Limita la longitud dels missatges de diagnòstic a caràcters per línia. 0 suprimeix el cort de línia\n" +- +-#: common.opt:675 +-msgid "Perform SMS based modulo scheduling before the first scheduling pass" +-msgstr "" +- +-#: common.opt:679 +-msgid "Perform SMS based modulo scheduling with register moves allowed" +-msgstr "" +- +-#: common.opt:683 +-#, fuzzy +-msgid "Move loop invariant computations out of loops" +-msgstr "Forçar que totes les computacions invariantes del cicle siguin fora del cicle" +- +-#: common.opt:687 +-msgid "Add mudflap bounds-checking instrumentation for single-threaded program" +-msgstr "" +- +-#: common.opt:691 +-msgid "Add mudflap bounds-checking instrumentation for multi-threaded program" +-msgstr "" +- +-#: common.opt:695 +-msgid "Ignore read operations when inserting mudflap instrumentation" +-msgstr "" +- +-#: common.opt:699 +-#, fuzzy +-msgid "Use the RTL dead code elimination pass" +-msgstr "Activar l'eliminació agressiva de codi mort SSA" +- +-#: common.opt:703 +-#, fuzzy +-msgid "Use the RTL dead store elimination pass" +-msgstr "Fa el pas complet d'optimització de moviment de registres" +- +-#: common.opt:707 +-msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling" +-msgstr "" +- +-#: common.opt:711 +-msgid "Support synchronous non-call exceptions" +-msgstr "Suport per a excepcions síncrones no de crides" +- +-#: common.opt:715 +-msgid "When possible do not generate stack frames" +-msgstr "Quan sigui possible no generar marcs de pila" +- +-#: common.opt:719 +-msgid "Expand OpenMP operations on SSA form" +-msgstr "" +- +-#: common.opt:723 +-#, fuzzy +-msgid "Do the full register move optimization pass" +-msgstr "Fa el pas complet d'optimització de moviment de registres" +- +-#: common.opt:727 +-msgid "Optimize sibling and tail recursive calls" +-msgstr "Optimitzar les crides recursives germanades i d'extrem" +- +-#: common.opt:731 common.opt:735 +-msgid "Report on memory allocation before interprocedural optimization" +-msgstr "" +- +-#: common.opt:739 +-msgid "Pack structure members together without holes" +-msgstr "Empaqueta junts als membres de l'estructura sense forats" +- +-#: common.opt:743 +-msgid "Set initial maximum structure member alignment" +-msgstr "" +- +-#: common.opt:747 +-#, fuzzy +-msgid "Return small aggregates in memory, not registers" +-msgstr "Retornar els agregats \"short\" en memòria, no en registres" +- +-#: common.opt:751 +-#, fuzzy +-msgid "Perform loop peeling" +-msgstr "Realitzar les optimitzacions de cicle" +- +-#: common.opt:755 +-msgid "Enable machine specific peephole optimizations" +-msgstr "Activar les optimitzacions de forats específiques de la màquina" +- +-#: common.opt:759 +-#, fuzzy +-msgid "Enable an RTL peephole pass before sched2" +-msgstr "Activa una execució de passada de forats rtl abans de sched2" +- +-#: common.opt:763 +-#, fuzzy +-msgid "Generate position-independent code if possible (large mode)" +-msgstr "Generar codi independent de posició, si és possible" +- +-#: common.opt:767 +-#, fuzzy +-msgid "Generate position-independent code for executables if possible (large mode)" +-msgstr "Generar codi independent de posició, si és possible" +- +-#: common.opt:771 +-#, fuzzy +-msgid "Generate position-independent code if possible (small mode)" +-msgstr "Generar codi independent de posició, si és possible" +- +-#: common.opt:775 +-#, fuzzy +-msgid "Generate position-independent code for executables if possible (small mode)" +-msgstr "Generar codi independent de posició, si és possible" +- +-#: common.opt:779 +-#, fuzzy +-msgid "Run predictive commoning optimization." +-msgstr "Permet una optimització de moviment de registres" +- +-#: common.opt:783 +-msgid "Generate prefetch instructions, if available, for arrays in loops" +-msgstr "Generar instruccions de precarregament, si estan disponibles, per a matrius en cicles" +- +-#: common.opt:787 +-msgid "Enable basic program profiling code" +-msgstr "Activar el codi bàsic d'anàlisi de perfil del programa" +- +-#: common.opt:791 +-#, fuzzy +-msgid "Insert arc-based program profiling code" +-msgstr "Inserir codi d'anàlisi de perfil basat en el programa arc" +- +-#: common.opt:795 +-msgid "Enable common options for generating profile info for profile feedback directed optimizations" +-msgstr "" +- +-#: common.opt:799 +-msgid "Enable common options for performing profile feedback directed optimizations" +-msgstr "" +- +-#: common.opt:803 +-msgid "Insert code to profile values of expressions" +-msgstr "" +- +-#: common.opt:810 +-msgid "Make compile reproducible using " +-msgstr "" +- +-#: common.opt:820 +-msgid "Record gcc command line switches in the object file." +-msgstr "" +- +-#: common.opt:824 +-#, fuzzy +-msgid "Return small aggregates in registers" +-msgstr "Retornar els agregats \"short\" en registres" +- +-#: common.opt:828 +-msgid "Enables a register move optimization" +-msgstr "Permet una optimització de moviment de registres" +- +-#: common.opt:832 +-#, fuzzy +-msgid "Perform a register renaming optimization pass" +-msgstr "Fer el pas d'optimització de renomenació de registres" +- +-#: common.opt:836 +-msgid "Reorder basic blocks to improve code placement" +-msgstr "Reordenar els blocs bàsics per a millorar la ubicació del codi" +- +-#: common.opt:840 +-#, fuzzy +-msgid "Reorder basic blocks and partition into hot and cold sections" +-msgstr "Reordenar els blocs bàsics per a millorar la ubicació del codi" +- +-#: common.opt:844 +-msgid "Reorder functions to improve code placement" +-msgstr "Reordenar les funcions per a millorar la ubicació del codi" +- +-#: common.opt:848 +-#, fuzzy +-msgid "Add a common subexpression elimination pass after loop optimizations" +-msgstr "Executar un pas CSE abans de les optimitzacions de cicles" +- +-#: common.opt:856 +-msgid "Disable optimizations that assume default FP rounding behavior" +-msgstr "" +- +-#: common.opt:860 +-msgid "Enable scheduling across basic blocks" +-msgstr "Activar la calendarització entre blocs bàsics" +- +-#: common.opt:864 +-msgid "Allow speculative motion of non-loads" +-msgstr "Permetre el moviment especulatiu de cap càrrega" +- +-#: common.opt:868 +-msgid "Allow speculative motion of some loads" +-msgstr "Permetre el moviment especulatiu d'unes càrregues" +- +-#: common.opt:872 +-msgid "Allow speculative motion of more loads" +-msgstr "Permetre el moviment especulatiu de més càrregues" +- +-#: common.opt:876 +-#, fuzzy +-msgid "Set the verbosity level of the scheduler" +-msgstr " -fsched-verbose= Estableix el nivell de detall del calendaritzador\n" +- +-#: common.opt:880 +-msgid "If scheduling post reload, do superblock scheduling" +-msgstr "" +- +-#: common.opt:884 +-msgid "If scheduling post reload, do trace scheduling" +-msgstr "" +- +-#: common.opt:888 +-msgid "Reschedule instructions before register allocation" +-msgstr "Recalendaritzar les instruccions abans de l'allotjament de registres" +- +-#: common.opt:892 +-msgid "Reschedule instructions after register allocation" +-msgstr "Recalendaritzar les instruccions després de l'allotjament de registres" +- +-#: common.opt:898 +-msgid "Allow premature scheduling of queued insns" +-msgstr "" +- +-#: common.opt:902 +-msgid "Set number of queued insns that can be prematurely scheduled" +-msgstr "" +- +-#: common.opt:910 common.opt:914 +-msgid "Set dependence distance checking in premature scheduling of queued insns" +-msgstr "" +- +-#: common.opt:918 +-msgid "Access data in the same section from shared anchor points" +-msgstr "" +- +-#: common.opt:922 +-#, fuzzy +-msgid "Perform sequence abstraction optimization on RTL" +-msgstr "Realitzar optimitzacions de reducció de força" +- +-#: common.opt:926 +-msgid "Eliminate redundant sign extensions using LCM." +-msgstr "" +- +-#: common.opt:930 +-msgid "Show column numbers in diagnostics, when available. Default off" +-msgstr "" +- +-#: common.opt:934 +-msgid "Disable optimizations observable by IEEE signaling NaNs" +-msgstr "" +- +-#: common.opt:938 +-msgid "Disable floating point optimizations that ignore the IEEE signedness of zero" +-msgstr "" +- +-#: common.opt:942 +-#, fuzzy +-msgid "Convert floating point constants to single precision constants" +-msgstr "Convertir constants de coma flotant a constants de precisió simple" +- +-#: common.opt:946 +-msgid "Split lifetimes of induction variables when loops are unrolled" +-msgstr "" +- +-#: common.opt:950 +-msgid "Split wide types into independent registers" +-msgstr "" +- +-#: common.opt:954 +-msgid "Apply variable expansion when loops are unrolled" +-msgstr "" +- +-#: common.opt:960 +-msgid "Insert stack checking code into the program" +-msgstr "Insereix codi de revisió de la pila en el programa" +- +-#: common.opt:967 +-msgid "Trap if the stack goes past " +-msgstr "" +- +-#: common.opt:971 +-msgid "Trap if the stack goes past symbol " +-msgstr "" +- +-#: common.opt:975 +-msgid "Use propolice as a stack protection method" +-msgstr "" +- +-#: common.opt:979 +-msgid "Use a stack protection method for every function" +-msgstr "" +- +-#: common.opt:991 +-msgid "Assume strict aliasing rules apply" +-msgstr "Assumir que s'apliquen les regles estrictes d'alies" +- +-#: common.opt:995 +-#, fuzzy +-msgid "Treat signed overflow as undefined" +-msgstr "Establir les definicions de Windows" +- +-#: common.opt:999 +-msgid "Check for syntax errors, then stop" +-msgstr "Buscar errors de sintaxi, i aleshores detenir-se" +- +-#: common.opt:1003 +-#, fuzzy +-msgid "Create data files needed by \"gcov\"" +-msgstr "Crear fitxers de dades necessàries per a gcov" +- +-#: common.opt:1007 +-msgid "Perform jump threading optimizations" +-msgstr "Realitzar optimitzacions de filat de salts" +- +-#: common.opt:1011 +-#, fuzzy +-msgid "Report the time taken by each compiler pass" +-msgstr "Reportar el temps pres per cada pas del compilador al final de l'execució" +- +-#: common.opt:1015 +-msgid "Set the default thread-local storage code generation model" +-msgstr "" +- +-#: common.opt:1019 +-msgid "Reorder top level functions, variables, and asms" +-msgstr "" +- +-#: common.opt:1023 +-msgid "Perform superblock formation via tail duplication" +-msgstr "" +- +-#: common.opt:1030 +-#, fuzzy +-msgid "Assume floating-point operations can trap" +-msgstr "Les operacions de coma flotant poden capturar" +- +-#: common.opt:1034 +-#, fuzzy +-msgid "Trap for signed overflow in addition, subtraction and multiplication" +-msgstr "Atrapar desbordaments signed en addició / substracció / multiplicació" +- +-#: common.opt:1038 +-#, fuzzy +-msgid "Enable SSA-CCP optimization on trees" +-msgstr "Activar les optimitzacions SSA" +- +-#: common.opt:1042 +-#, fuzzy +-msgid "Enable SSA-CCP optimization for stores and loads" +-msgstr "Activar les optimitzacions SSA" +- +-#: common.opt:1046 +-msgid "Enable loop header copying on trees" +-msgstr "" +- +-#: common.opt:1050 +-msgid "Replace SSA temporaries with better names in copies" +-msgstr "" +- +-#: common.opt:1054 +-msgid "Enable copy propagation on trees" +-msgstr "" +- +-#: common.opt:1058 +-msgid "This switch is obsolete" +-msgstr "" +- +-#: common.opt:1062 +-#, fuzzy +-msgid "Transform condition stores into unconditional ones" +-msgstr "Realitzar la conversió de salts condicionals a execució condicional" +- +-#: common.opt:1066 +-#, fuzzy +-msgid "Enable SSA dead code elimination optimization on trees" +-msgstr "Activar l'eliminació agressiva de codi mort SSA" +- +-#: common.opt:1070 +-#, fuzzy +-msgid "Enable dominator optimizations" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: common.opt:1074 +-#, fuzzy +-msgid "Enable dead store elimination" +-msgstr "Activar l'eliminació agressiva de codi mort SSA" +- +-#: common.opt:1078 +-msgid "Enable Full Redundancy Elimination (FRE) on trees" +-msgstr "" +- +-#: common.opt:1082 +-#, fuzzy +-msgid "Enable loop invariant motion on trees" +-msgstr "Forçar que totes les computacions invariantes del cicle siguin fora del cicle" +- +-#: common.opt:1086 +-#, fuzzy +-msgid "Enable linear loop transforms on trees" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: common.opt:1090 +-#, fuzzy +-msgid "Create canonical induction variables in loops" +-msgstr "Enfortir la reducció de totes les variables generals d'inducció de cicle" +- +-#: common.opt:1094 +-#, fuzzy +-msgid "Enable loop optimizations on tree level" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: common.opt:1098 +-#, fuzzy +-msgid "Enable automatic parallelization of loops" +-msgstr "Activar l'instanciació automàtica de patrons" +- +-#: common.opt:1102 +-#, fuzzy +-msgid "Enable SSA-PRE optimization on trees" +-msgstr "Activar les optimitzacions SSA" +- +-#: common.opt:1106 +-msgid "Enable reassociation on tree level" +-msgstr "" +- +-#: common.opt:1110 +-msgid "Perform structural alias analysis" +-msgstr "" +- +-#: common.opt:1114 +-#, fuzzy +-msgid "Enable SSA code sinking on trees" +-msgstr "Activar les optimitzacions SSA" +- +-#: common.opt:1118 +-msgid "Perform scalar replacement of aggregates" +-msgstr "" +- +-#: common.opt:1122 +-msgid "Replace temporary expressions in the SSA->normal pass" +-msgstr "" +- +-#: common.opt:1126 +-msgid "Perform live range splitting during the SSA->normal pass" +-msgstr "" +- +-#: common.opt:1130 +-#, fuzzy +-msgid "Perform Value Range Propagation on trees" +-msgstr "Fer el pas d'optimització de còpia-propagació de registres" +- +-#: common.opt:1134 +-#, fuzzy +-msgid "Compile whole compilation unit at a time" +-msgstr "Buidar la unitat de traducció completa a un fitxer" +- +-#: common.opt:1138 +-msgid "Perform loop unrolling when iteration count is known" +-msgstr "Realitzar el desenrollament del cicle quan es coneix el compte d'iteració" +- +-#: common.opt:1142 +-msgid "Perform loop unrolling for all loops" +-msgstr "Realitzar el desenrollament del cicle per a tots els cicles" +- +-#: common.opt:1149 +-msgid "Allow loop optimizations to assume that the loops behave in normal way" +-msgstr "" +- +-#: common.opt:1153 +-msgid "Allow optimization for floating-point arithmetic which may change the" +-msgstr "" +- +-#: common.opt:1158 +-msgid "Same as -fassociative-math for expressions which include division." +-msgstr "" +- +-#: common.opt:1166 +-#, fuzzy +-msgid "Allow math optimizations that may violate IEEE or ISO standards" +-msgstr "Permetre optimitzacions matemàtiques que poden violar els estàndards IEEE o ANSI" +- +-#: common.opt:1170 +-#, fuzzy +-msgid "Perform loop unswitching" +-msgstr "Realitzar les optimitzacions de cicle" +- +-#: common.opt:1174 +-msgid "Just generate unwind tables for exception handling" +-msgstr "Només generar matrius de desembolico per a maneig d'excepcions" +- +-#: common.opt:1178 +-#, fuzzy +-msgid "Perform variable tracking" +-msgstr "Realitzar optimització de la crida de l'extrem" +- +-#: common.opt:1182 +-msgid "Perform variable tracking and also tag variables that are uninitialized" +-msgstr "" +- +-#: common.opt:1186 +-#, fuzzy +-msgid "Enable loop vectorization on trees" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: common.opt:1190 +-#, fuzzy +-msgid "Enable use of cost model in vectorization" +-msgstr "Activar l'ús de les instruccions condicionals move" +- +-#: common.opt:1194 +-msgid "Enable loop versioning when doing loop vectorization on trees" +-msgstr "" +- +-#: common.opt:1198 +-#, fuzzy +-msgid "Set the verbosity level of the vectorizer" +-msgstr " -fsched-verbose= Estableix el nivell de detall del calendaritzador\n" +- +-#: common.opt:1202 +-msgid "Enable copy propagation of scalar-evolution information." +-msgstr "" +- +-#: common.opt:1212 +-msgid "Add extra commentary to assembler output" +-msgstr "Agregar comentaris extra a la sortida de l'ensamblador" +- +-#: common.opt:1216 +-msgid "Set the default symbol visibility" +-msgstr "" +- +-#: common.opt:1221 +-#, fuzzy +-msgid "Use expression value profiles in optimizations" +-msgstr "Activar les optimitzacions del enllaçador" +- +-#: common.opt:1225 +-msgid "Construct webs and split unrelated uses of single variable" +-msgstr "" +- +-#: common.opt:1229 +-#, fuzzy +-msgid "Perform whole program optimizations" +-msgstr "Realitzar les optimitzacions de cicle" +- +-#: common.opt:1233 +-msgid "Assume signed arithmetic overflow wraps around" +-msgstr "" +- +-#: common.opt:1237 +-msgid "Put zero initialized data in the bss section" +-msgstr "Posar dades inicialitzades a zero en la secció bss" +- +-#: common.opt:1241 +-msgid "Generate debug information in default format" +-msgstr "Generar informació de depuració en el format per omissió" +- +-#: common.opt:1245 +-msgid "Generate debug information in COFF format" +-msgstr "Generar informació de depuració en el format COFF" +- +-#: common.opt:1249 +-msgid "Generate debug information in DWARF v2 format" +-msgstr "Generar informació de depuració en el format DWARF v2" +- +-#: common.opt:1253 +-msgid "Generate debug information in default extended format" +-msgstr "Generar informació de depuració en el format estès per omissió" +- +-#: common.opt:1257 +-msgid "Generate debug information in STABS format" +-msgstr "Generar informació de depuració en el format STABS" +- +-#: common.opt:1261 +-msgid "Generate debug information in extended STABS format" +-msgstr "Generar informació de depuració en el format STABS estès" +- +-#: common.opt:1265 +-msgid "Generate debug information in VMS format" +-msgstr "Generar informació de depuració en el format VMS" +- +-#: common.opt:1269 +-msgid "Generate debug information in XCOFF format" +-msgstr "Generar informació de depuració en el format XCOFF" +- +-#: common.opt:1273 +-msgid "Generate debug information in extended XCOFF format" +-msgstr "Generar informació de depuració en el format XCOFF estès" +- +-#: common.opt:1277 +-#, fuzzy +-msgid "Place output into " +-msgstr "-o \tSituar la sortida en el " +- +-#: common.opt:1281 +-msgid "Enable function profiling" +-msgstr "Habilitar l'anàlisi de perfil de les funcions" +- +-#: common.opt:1285 +-msgid "Issue warnings needed for strict compliance to the standard" +-msgstr "Activar els avisos necessaris per a complir strictament amb ISO C" +- +-#: common.opt:1289 +-msgid "Like -pedantic but issue them as errors" +-msgstr "" +- +-#: common.opt:1293 +-msgid "Do not display functions compiled or elapsed time" +-msgstr "No mostrar les funcions compilades o el temps transcorregut" +- +-#: common.opt:1297 +-msgid "Display the compiler's version" +-msgstr "Mostra la versió del compilador" +- +-#: common.opt:1301 +-msgid "Suppress warnings" +-msgstr "" +- +-#: common.opt:1305 +-msgid "Create a shared library" +-msgstr "" +- +-#: common.opt:1309 +-#, fuzzy +-msgid "Create a position independent executable" +-msgstr "Generar codi independent de posició, si és possible" +- +-#: attribs.c:244 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute directive ignored" +-msgstr "s'ignora la directiva d'atribut \"%s\"" +- +-#: attribs.c:252 +-#, fuzzy, gcc-internal-format +-msgid "wrong number of arguments specified for %qs attribute" +-msgstr "es va especificar un nombre equivocat d'arguments per a l'atribut \"%s\"" +- +-#: attribs.c:270 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute does not apply to types" +-msgstr "l'atribut \"%s\" no s'aplica a tipus" +- +-#: attribs.c:317 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute only applies to function types" +-msgstr "l'atribut \"%s\" només s'aplica a tipus de funcions" +- +-#: attribs.c:327 +-#, fuzzy, gcc-internal-format +-msgid "type attributes ignored after type is already defined" +-msgstr "l'atribut \"%s\" sol es pot aplicar a definicions de classe" +- +-#: bb-reorder.c:1860 +-#, gcc-internal-format +-msgid "multiple hot/cold transitions found (bb %i)" +-msgstr "" +- +-#: bt-load.c:1546 +-#, gcc-internal-format +-msgid "branch target register load optimization is not intended to be run twice" +-msgstr "" +- +-#: builtins.c:451 +-#, gcc-internal-format +-msgid "offset outside bounds of constant string" +-msgstr "desplaçament fora dels límits de la constant de cadena" +- +-#: builtins.c:1001 +-#, fuzzy, gcc-internal-format +-msgid "second argument to %<__builtin_prefetch%> must be a constant" +-msgstr "el segon argument de \"__builtin_prefetch\" ha de ser una constant" +- +-#: builtins.c:1008 +-#, fuzzy, gcc-internal-format +-msgid "invalid second argument to %<__builtin_prefetch%>; using zero" +-msgstr "el segon argument de __builtin_prefetch no és vàlid; s'utilitzarà zero" +- +-#: builtins.c:1016 +-#, fuzzy, gcc-internal-format +-msgid "third argument to %<__builtin_prefetch%> must be a constant" +-msgstr "el tercer argument de \"__builtin_prefetch\" ha de ser una constant" +- +-#: builtins.c:1023 +-#, fuzzy, gcc-internal-format +-msgid "invalid third argument to %<__builtin_prefetch%>; using zero" +-msgstr "el tercer argument de __builtin_prefetch no és vàlid; s'utilitzarà zero" +- +-#: builtins.c:4592 +-#, fuzzy, gcc-internal-format +-msgid "argument of %<__builtin_args_info%> must be constant" +-msgstr "l'argument de \"__builtin_args_info\" ha de ser constant" +- +-#: builtins.c:4598 +-#, fuzzy, gcc-internal-format +-msgid "argument of %<__builtin_args_info%> out of range" +-msgstr "l'argument de \"__builtin_args_info\" està fora de límits" +- +-#: builtins.c:4604 +-#, fuzzy, gcc-internal-format +-msgid "missing argument in %<__builtin_args_info%>" +-msgstr "falta un argument en \"__builtin_args_info\"" +- +-#: builtins.c:4693 gimplify.c:2117 +-#, fuzzy, gcc-internal-format +-msgid "too few arguments to function %" +-msgstr "massa arguments per a la funció \"va_start\"" +- +-#: builtins.c:4857 +-#, fuzzy, gcc-internal-format +-msgid "first argument to % not of type %" +-msgstr "el primer argument per a \"va_arg\" no és del tipus \"va_list\"" +- +-#. Unfortunately, this is merely undefined, rather than a constraint +-#. violation, so we cannot make this an error. If this call is never +-#. executed, the program is still strictly conforming. +-#: builtins.c:4871 +-#, fuzzy, gcc-internal-format +-msgid "%qT is promoted to %qT when passed through %<...%>" +-msgstr "\"%s\" es promou a \"%s\" quan passa a través de \"...\"" +- +-#: builtins.c:4876 +-#, fuzzy, gcc-internal-format +-msgid "(so you should pass %qT not %qT to %)" +-msgstr "(així que ha de passar \"%s\" i no \"%s\" a \"va_arg\")" +- +-#. We can, however, treat "undefined" any way we please. +-#. Call abort to encourage the user to fix the program. +-#: builtins.c:4882 c-typeck.c:2408 +-#, gcc-internal-format +-msgid "if this code is reached, the program will abort" +-msgstr "si s'arriba a aquest codi, el programa avortarà" +- +-#: builtins.c:5000 +-#, fuzzy, gcc-internal-format +-msgid "invalid argument to %<__builtin_frame_address%>" +-msgstr "argument no vàlid per a \"__builtin_frame_address\"" +- +-#: builtins.c:5002 +-#, fuzzy, gcc-internal-format +-msgid "invalid argument to %<__builtin_return_address%>" +-msgstr "argument no vàlid per a \"__builtin_return_address\"" +- +-#: builtins.c:5015 +-#, fuzzy, gcc-internal-format +-msgid "unsupported argument to %<__builtin_frame_address%>" +-msgstr "argument sense suport per a \"__builtin_frame_address\"" +- +-#: builtins.c:5017 +-#, fuzzy, gcc-internal-format +-msgid "unsupported argument to %<__builtin_return_address%>" +-msgstr "argument sense suport per a \"__builtin_return_address\"" +- +-#: builtins.c:5564 +-#, fuzzy, gcc-internal-format +-msgid "both arguments to %<__builtin___clear_cache%> must be pointers" +-msgstr "l'argument de \"__builtin_eh_return_regno\" ha de ser constant" +- +-#. All valid uses of __builtin_va_arg_pack () are removed during +-#. inlining. +-#: builtins.c:6276 expr.c:8024 +-msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" +-msgstr "" +- +-#. All valid uses of __builtin_va_arg_pack_len () are removed during +-#. inlining. +-#: builtins.c:6282 +-msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>" +-msgstr "" +- +-#: builtins.c:6578 +-#, fuzzy, gcc-internal-format +-msgid "%<__builtin_longjmp%> second argument must be 1" +-msgstr "el segon argument de _builtin_longjump ha de ser 1" +- +-#: builtins.c:7209 +-#, gcc-internal-format +-msgid "target format does not support infinity" +-msgstr "el format objectiu no té suport per a infinit" +- +-#: builtins.c:9623 builtins.c:9712 +-#, fuzzy, gcc-internal-format +-msgid "non-floating-point argument to function %qs" +-msgstr "arguments que no són de coma flotant per a la funció \"%s\"" +- +-#: builtins.c:11303 +-#, fuzzy, gcc-internal-format +-msgid "% used in function with fixed args" +-msgstr "es va usar \"va_start\" en una funció amb arguments fixos" +- +-#: builtins.c:11311 +-#, fuzzy, gcc-internal-format +-msgid "wrong number of arguments to function %" +-msgstr "massa arguments per a la funció \"va_start\"" +- +-#. Evidently an out of date version of ; can't validate +-#. va_start's second argument, but can still work as intended. +-#: builtins.c:11324 +-#, fuzzy, gcc-internal-format +-msgid "%<__builtin_next_arg%> called without an argument" +-msgstr "es va cridar a \"__builtin_next_arg\" sense argument" +- +-#: builtins.c:11329 +-#, fuzzy, gcc-internal-format +-msgid "wrong number of arguments to function %<__builtin_next_arg%>" +-msgstr "es va especificar un nombre equivocat d'arguments per a l'atribut \"%s\"" +- +-#. FIXME: Sometimes with the tree optimizers we can get the +-#. not the last argument even though the user used the last +-#. argument. We just warn and set the arg to be the last +-#. argument so that we will get wrong-code because of +-#. it. +-#: builtins.c:11358 +-#, fuzzy, gcc-internal-format +-msgid "second parameter of % not last named argument" +-msgstr "el segon paràmetre de \"va_start\" no és l'últim argument nomenat" +- +-#: builtins.c:11472 +-#, fuzzy +-msgid "%Kfirst argument of %D must be a pointer, second integer constant" +-msgstr "l'argument de l'atribut \"%s\" no és una cadena entera" +- +-#: builtins.c:11485 +-#, fuzzy +-msgid "%Klast argument of %D is not integer constant between 0 and 3" +-msgstr "l'argument de \"asm\" no és una cadena constant" +- +-#: builtins.c:11529 builtins.c:11693 builtins.c:11752 +-msgid "%Kcall to %D will always overflow destination buffer" +-msgstr "" +- +-#: builtins.c:11683 +-msgid "%Kcall to %D might overflow destination buffer" +-msgstr "" +- +-#: c-common.c:859 +-#, fuzzy, gcc-internal-format +-msgid "%qD is not defined outside of function scope" +-msgstr "%Jno es defineix \"%D\" fora de l'àmbit de la funció" +- +-#. Translators: The %d after 'ISO C' will be 90 or 99. Do not +-#. separate the %d from the 'C'. 'ISO' should not be +-#. translated, but it may be moved after 'C%d' in languages +-#. where modifiers follow nouns. +-#: c-common.c:891 +-#, fuzzy, gcc-internal-format +-msgid "string length %qd is greater than the length %qd ISO C%d compilers are required to support" +-msgstr "la longitud de la cadena \"%d\" és major que la longitud `%d\" que es requereix que els compiladors ISO C %d donin suport" +- +-#: c-common.c:941 +-#, gcc-internal-format +-msgid "overflow in constant expression" +-msgstr "desbordament en la constant implícita" +- +-#: c-common.c:963 +-#, gcc-internal-format +-msgid "integer overflow in expression" +-msgstr "desbordament enter en l'expressió" +- +-#: c-common.c:967 +-#, gcc-internal-format +-msgid "floating point overflow in expression" +-msgstr "desbordament de coma flotant en l'expressió" +- +-#: c-common.c:971 +-#, fuzzy, gcc-internal-format +-msgid "fixed-point overflow in expression" +-msgstr "desbordament de coma flotant en l'expressió" +- +-#: c-common.c:975 +-#, gcc-internal-format +-msgid "vector overflow in expression" +-msgstr "desbordament de vector flotant en l'expressió" +- +-#: c-common.c:980 +-#, fuzzy, gcc-internal-format +-msgid "complex integer overflow in expression" +-msgstr "desbordament enter en l'expressió" +- +-#: c-common.c:982 +-#, fuzzy, gcc-internal-format +-msgid "complex floating point overflow in expression" +-msgstr "desbordament de coma flotant en l'expressió" +- +-#: c-common.c:1013 +-#, gcc-internal-format +-msgid "logical %<%s%> with non-zero constant will always evaluate as true" +-msgstr "" +- +-#: c-common.c:1046 +-#, gcc-internal-format +-msgid "type-punning to incomplete type might break strict-aliasing rules" +-msgstr "el càstig de tipus a tipus incomplet pot trencar les regles d'alies estricte" +- +-#: c-common.c:1060 +-#, gcc-internal-format +-msgid "dereferencing type-punned pointer will break strict-aliasing rules" +-msgstr "el retorn de punters de tipus castigat trencarà les regles d'alies estricte" +- +-#: c-common.c:1067 c-common.c:1085 +-#, fuzzy, gcc-internal-format +-msgid "dereferencing type-punned pointer might break strict-aliasing rules" +-msgstr "el retorn de punters de tipus castigat trencarà les regles d'alies estricte" +- +-#: c-common.c:1111 +-#, fuzzy, gcc-internal-format +-msgid "%Hsuggest braces around empty body in an % statement" +-msgstr "%Hcos buit en una declaració «if»" +- +-#: c-common.c:1115 +-#, fuzzy, gcc-internal-format +-msgid "%Hsuggest braces around empty body in an % statement" +-msgstr "cos buit en una declaració else" +- +-#: c-common.c:1141 +-#, fuzzy, gcc-internal-format +-msgid "first argument of %q+D should be %" +-msgstr "%Jel primer argument de \"%D\" ha de ser \"int\"" +- +-#: c-common.c:1149 +-#, fuzzy, gcc-internal-format +-msgid "second argument of %q+D should be %" +-msgstr "%Jel segon argument de \"%D\" ha de ser \"char **\"" +- +-#: c-common.c:1158 +-#, fuzzy, gcc-internal-format +-msgid "third argument of %q+D should probably be %" +-msgstr "%Jel tercer argument de \"%D\" ha de ser \"char **\"" +- +-#: c-common.c:1168 +-#, fuzzy, gcc-internal-format +-msgid "%q+D takes only zero or two arguments" +-msgstr "%J\"%D\" només pren zero o dos arguments" +- +-#: c-common.c:1203 +-#, gcc-internal-format +-msgid "use -flax-vector-conversions to permit conversions between vectors with differing element types or numbers of subparts" +-msgstr "" +- +-#: c-common.c:1241 +-#, gcc-internal-format +-msgid "negative integer implicitly converted to unsigned type" +-msgstr "enter negatiu truncat implícitament al tipus unsigned" +- +-#: c-common.c:1244 +-#, gcc-internal-format +-msgid "conversion of unsigned constant value to negative integer" +-msgstr "" +- +-#: c-common.c:1270 +-#, gcc-internal-format +-msgid "conversion to %qT alters %qT constant value" +-msgstr "" +- +-#: c-common.c:1296 +-#, gcc-internal-format +-msgid "conversion to %qT from %qT may change the sign of the result" +-msgstr "" +- +-#: c-common.c:1325 +-#, fuzzy, gcc-internal-format +-msgid "conversion to %qT from %qT may alter its value" +-msgstr "la conversió de \"%E\" des de \"%T\" a \"%T\" és ambigua" +- +-#: c-common.c:1353 +-#, gcc-internal-format +-msgid "large integer implicitly truncated to unsigned type" +-msgstr "enter gran truncat implícitament al tipus unsigned" +- +-#: c-common.c:1359 c-common.c:1366 c-common.c:1374 +-#, gcc-internal-format +-msgid "overflow in implicit constant conversion" +-msgstr "desbordament en la conversió implícita de constant" +- +-#: c-common.c:1528 +-#, fuzzy, gcc-internal-format +-msgid "operation on %qE may be undefined" +-msgstr "l'operació sobre \"%s\" pot estar indefinida" +- +-#: c-common.c:1821 +-#, gcc-internal-format +-msgid "case label does not reduce to an integer constant" +-msgstr "l'etiqueta d'un «case» no es redueix a una constant entera" +- +-#: c-common.c:1861 +-#, gcc-internal-format +-msgid "case label value is less than minimum value for type" +-msgstr "" +- +-#: c-common.c:1869 +-#, gcc-internal-format +-msgid "case label value exceeds maximum value for type" +-msgstr "" +- +-#: c-common.c:1877 +-#, gcc-internal-format +-msgid "lower value in case label range less than minimum value for type" +-msgstr "" +- +-#: c-common.c:1886 +-#, gcc-internal-format +-msgid "upper value in case label range exceeds maximum value for type" +-msgstr "" +- +-#: c-common.c:1960 +-#, gcc-internal-format +-msgid "GCC cannot support operators with integer types and fixed-point types that have too many integral and fractional bits together" +-msgstr "" +- +-#: c-common.c:2450 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands to binary %s (have %qT and %qT)" +-msgstr "operadors no vàlids per al binari %s" +- +-#: c-common.c:2686 +-#, gcc-internal-format +-msgid "comparison is always false due to limited range of data type" +-msgstr "la comparança sempre és falsa a causa dels límits limitats del tipus de dades" +- +-#: c-common.c:2688 +-#, gcc-internal-format +-msgid "comparison is always true due to limited range of data type" +-msgstr "la comparança sempre és certa a causa dels límits limitat del tipus de dades" +- +-#: c-common.c:2767 +-#, gcc-internal-format +-msgid "comparison of unsigned expression >= 0 is always true" +-msgstr "la comparança d'una expressió unsigned >= 0 sempre és certa" +- +-#: c-common.c:2777 +-#, gcc-internal-format +-msgid "comparison of unsigned expression < 0 is always false" +-msgstr "la comparança d'una expressió unsigned < 0 sempre és falsa" +- +-#: c-common.c:2818 +-#, fuzzy, gcc-internal-format +-msgid "pointer of type % used in arithmetic" +-msgstr "es va usar un punter de tipus \"void *\" en l'aritmètica" +- +-#: c-common.c:2824 +-#, gcc-internal-format +-msgid "pointer to a function used in arithmetic" +-msgstr "es va usar un punter a una funció en l'aritmètica" +- +-#: c-common.c:2830 +-#, gcc-internal-format +-msgid "pointer to member function used in arithmetic" +-msgstr "es va usar un punter a una funció membre en l'aritmètica" +- +-#: c-common.c:2982 +-#, fuzzy, gcc-internal-format +-msgid "the address of %qD will always evaluate as %" +-msgstr "l'adreça de \"%D\", sempre serà \"true\"" +- +-#: c-common.c:3051 cp/semantics.c:596 cp/typeck.c:6411 +-#, gcc-internal-format +-msgid "suggest parentheses around assignment used as truth value" +-msgstr "es suggereixen parèntesi al voltant de l'assignació usada com valor veritable" +- +-#: c-common.c:3123 c-typeck.c:8958 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of %" +-msgstr "ús no vàlid de \"restrict\"" +- +-#: c-common.c:3339 +-#, fuzzy, gcc-internal-format +-msgid "invalid application of % to a function type" +-msgstr "aplicació invalida de \"sizeof\" a una expressió de tipus de funció" +- +-#: c-common.c:3349 +-#, fuzzy, gcc-internal-format +-msgid "invalid application of %qs to a void type" +-msgstr "applicació no vàlida de \"%s\" a un tipus void" +- +-#: c-common.c:3355 +-#, fuzzy, gcc-internal-format +-msgid "invalid application of %qs to incomplete type %qT " +-msgstr "aplicació no vàlida de \"%s\" a un tipus incomplet \"T\" " +- +-#: c-common.c:3396 +-#, fuzzy, gcc-internal-format +-msgid "%<__alignof%> applied to a bit-field" +-msgstr "\"__alignof\" aplicat a un camp de bits" +- +-#: c-common.c:3969 +-#, fuzzy, gcc-internal-format +-msgid "cannot disable built-in function %qs" +-msgstr "no es pot desactivar la funció interna \"%s\"" +- +-#: c-common.c:4172 +-#, gcc-internal-format +-msgid "pointers are not permitted as case values" +-msgstr "els punters no són permesos com valors d'un «case»" +- +-#: c-common.c:4178 +-#, gcc-internal-format +-msgid "range expressions in switch statements are non-standard" +-msgstr "les expressions de límits en les declaracions «switch» no són estàndard" +- +-#: c-common.c:4204 +-#, gcc-internal-format +-msgid "empty range specified" +-msgstr "es va especificar uns límits buides" +- +-#: c-common.c:4264 +-#, gcc-internal-format +-msgid "duplicate (or overlapping) case value" +-msgstr "valor d'un «case» duplicat (o sobreposat)" +- +-# +-#: c-common.c:4265 +-#, gcc-internal-format +-msgid "%Jthis is the first entry overlapping that value" +-msgstr "%Jaquesta és la primera entrada que sobreposa aquest valor" +- +-#: c-common.c:4269 +-#, gcc-internal-format +-msgid "duplicate case value" +-msgstr "valor d'un «case» duplicat" +- +-#: c-common.c:4270 +-#, gcc-internal-format +-msgid "%Jpreviously used here" +-msgstr "%Jes va usar prèviament aquí" +- +-#: c-common.c:4274 +-#, gcc-internal-format +-msgid "multiple default labels in one switch" +-msgstr "múltiples etiquetes per omissió en un sol «switch»" +- +-#: c-common.c:4275 +-#, gcc-internal-format +-msgid "%Jthis is the first default label" +-msgstr "%Jaquesta és la primera etiqueta per omissió" +- +-#: c-common.c:4324 +-#, fuzzy, gcc-internal-format +-msgid "%Jcase value %qs not in enumerated type" +-msgstr "el valor de «case» \"%ld\" no és un tipus enumerat" +- +-#: c-common.c:4327 +-#, fuzzy, gcc-internal-format +-msgid "%Jcase value %qs not in enumerated type %qT" +-msgstr "el valor de «case» \"%ld\" no és un tipus enumerat" +- +-#: c-common.c:4385 +-#, fuzzy, gcc-internal-format +-msgid "%Hswitch missing default case" +-msgstr "manca el «case» per defecte per a un «switch»" +- +-#: c-common.c:4448 +-#, fuzzy, gcc-internal-format +-msgid "%Henumeration value %qE not handled in switch" +-msgstr "el valor d'enumeració \"%s\" no es gestiona en un «switch»" +- +-#: c-common.c:4472 +-#, gcc-internal-format +-msgid "taking the address of a label is non-standard" +-msgstr "prendre l'adreça d'una etiqueta no és estàndard" +- +-#: c-common.c:4622 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored for field of type %qT" +-msgstr "atribut \"%s\" ignorat per a \"%s\"" +- +-#: c-common.c:4633 c-common.c:4652 c-common.c:4670 c-common.c:4697 +-#: c-common.c:4724 c-common.c:4750 c-common.c:4769 c-common.c:4793 +-#: c-common.c:4816 c-common.c:4839 c-common.c:4860 c-common.c:4881 +-#: c-common.c:4905 c-common.c:4931 c-common.c:4968 c-common.c:4995 +-#: c-common.c:5046 c-common.c:5130 c-common.c:5160 c-common.c:5179 +-#: c-common.c:5499 c-common.c:5559 c-common.c:5580 c-common.c:5644 +-#: c-common.c:5762 c-common.c:5828 c-common.c:5877 c-common.c:5923 +-#: c-common.c:5993 c-common.c:6017 c-common.c:6301 c-common.c:6324 +-#: c-common.c:6363 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored" +-msgstr "s'ignora l'atribut \"%s\"" +- +-#: c-common.c:4715 c-common.c:4741 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute conflicts with attribute %s" +-msgstr "l'atribut \"%s\" solament aplica a variables" +- +-#: c-common.c:4962 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute have effect only on public objects" +-msgstr "%Jl'atribut \"%E\" s'aplica solament a funcions" +- +-#: c-common.c:5067 +-#, fuzzy, gcc-internal-format +-msgid "destructor priorities are not supported" +-msgstr "els trampolins no tenen suport" +- +-#: c-common.c:5069 +-#, fuzzy, gcc-internal-format +-msgid "constructor priorities are not supported" +-msgstr "els trampolins no tenen suport" +- +-#: c-common.c:5086 +-#, gcc-internal-format +-msgid "destructor priorities from 0 to %d are reserved for the implementation" +-msgstr "" +- +-#: c-common.c:5091 +-#, gcc-internal-format +-msgid "constructor priorities from 0 to %d are reserved for the implementation" +-msgstr "" +- +-#: c-common.c:5099 +-#, gcc-internal-format +-msgid "destructor priorities must be integers from 0 to %d inclusive" +-msgstr "" +- +-#: c-common.c:5102 +-#, gcc-internal-format +-msgid "constructor priorities must be integers from 0 to %d inclusive" +-msgstr "" +- +-#: c-common.c:5221 +-#, fuzzy, gcc-internal-format +-msgid "unknown machine mode %qs" +-msgstr "es desconeix el mode de màquina \"%s\"" +- +-#: c-common.c:5250 +-#, gcc-internal-format +-msgid "specifying vector types with __attribute__ ((mode)) is deprecated" +-msgstr "" +- +-#: c-common.c:5253 +-#, fuzzy, gcc-internal-format +-msgid "use __attribute__ ((vector_size)) instead" +-msgstr "s'ignora la directiva d'atribut \"%s\"" +- +-#: c-common.c:5262 +-#, fuzzy, gcc-internal-format +-msgid "unable to emulate %qs" +-msgstr "no es pot emular \"%s\"" +- +-#: c-common.c:5272 +-#, fuzzy, gcc-internal-format +-msgid "invalid pointer mode %qs" +-msgstr "mode de punter \"%s\" no vàlid" +- +-#: c-common.c:5289 +-#, fuzzy, gcc-internal-format +-msgid "signness of type and machine mode %qs don't match" +-msgstr "el nombre de #-lines per a entrar i sortir dels fitxers no coincideixen" +- +-#: c-common.c:5300 +-#, fuzzy, gcc-internal-format +-msgid "no data type for mode %qs" +-msgstr "no hi ha tipus de dades pel mode \"%s\"" +- +-#: c-common.c:5310 +-#, fuzzy, gcc-internal-format +-msgid "cannot use mode %qs for enumeral types" +-msgstr "no es pot convertir a un tipus punter" +- +-#: c-common.c:5337 +-#, fuzzy, gcc-internal-format +-msgid "mode %qs applied to inappropriate type" +-msgstr "mode \"%s\" aplicat a un tipus no inadequat" +- +-#: c-common.c:5368 +-#, gcc-internal-format +-msgid "%Jsection attribute cannot be specified for local variables" +-msgstr "%Jl'atribut de secció no pot ser especificat per a les variables locals" +- +-#: c-common.c:5379 config/bfin/bfin.c:4879 config/bfin/bfin.c:4930 +-#, fuzzy, gcc-internal-format +-msgid "section of %q+D conflicts with previous declaration" +-msgstr "%Jla secció de \"%D\" causa conflictes amb la declaració prèvia" +- +-#: c-common.c:5388 +-#, fuzzy, gcc-internal-format +-msgid "section attribute not allowed for %q+D" +-msgstr "%Jno es permet un atribut de secció per a \"%D\"" +- +-#: c-common.c:5394 +-#, gcc-internal-format +-msgid "%Jsection attributes are not supported for this target" +-msgstr "%Jatributs de secció no suportats per aquest objectiu" +- +-#: c-common.c:5426 +-#, gcc-internal-format +-msgid "requested alignment is not a constant" +-msgstr "l'alineació sol·licitada no és una constant" +- +-#: c-common.c:5431 +-#, gcc-internal-format +-msgid "requested alignment is not a power of 2" +-msgstr "l'alineació sol·licitada no és una potència de 2" +- +-#: c-common.c:5436 +-#, gcc-internal-format +-msgid "requested alignment is too large" +-msgstr "l'alineació sol·licitada és massa gran" +- +-#: c-common.c:5462 +-#, fuzzy, gcc-internal-format +-msgid "alignment may not be specified for %q+D" +-msgstr "%Jl'alineació no pot ser especificada per a \"%D\"" +- +-#: c-common.c:5469 +-#, gcc-internal-format +-msgid "alignment for %q+D was previously specified as %d and may not be decreased" +-msgstr "" +- +-#: c-common.c:5473 +-#, fuzzy, gcc-internal-format +-msgid "alignment for %q+D must be at least %d" +-msgstr "l'alineació ha de ser una potència petita de dos, no %d" +- +-#: c-common.c:5522 +-#, fuzzy, gcc-internal-format +-msgid "%q+D defined both normally and as an alias" +-msgstr "%J\"%D\" definit normalment i com un alies" +- +-#: c-common.c:5538 +-#, fuzzy, gcc-internal-format +-msgid "alias argument not a string" +-msgstr "l'argument d'alies no és una cadena" +- +-#: c-common.c:5601 +-#, gcc-internal-format +-msgid "%Jweakref attribute must appear before alias attribute" +-msgstr "" +- +-#: c-common.c:5631 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored on non-class types" +-msgstr "atribut \"%s\" ignorat per a \"%s\"" +- +-#: c-common.c:5637 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored because %qT is already defined" +-msgstr "el mateix bypass \"%s - %s\" ja està definit" +- +-#: c-common.c:5650 +-#, fuzzy, gcc-internal-format +-msgid "visibility argument not a string" +-msgstr "l'argument de visibilitat no és una cadena" +- +-#: c-common.c:5662 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored on types" +-msgstr "atribut \"%s\" ignorat per a \"%s\"" +- +-#: c-common.c:5678 +-#, fuzzy, gcc-internal-format +-msgid "visibility argument must be one of \"default\", \"hidden\", \"protected\" or \"internal\"" +-msgstr "l'argument de visibilitat ha de ser \"default\", \"hidden\", \"protected\" o \"internal\"" +- +-#: c-common.c:5689 +-#, fuzzy, gcc-internal-format +-msgid "%qD redeclared with different visibility" +-msgstr "\"%#D\" redeclarat com un tipus diferent de símbol" +- +-#: c-common.c:5692 c-common.c:5696 +-#, gcc-internal-format +-msgid "%qD was declared %qs which implies default visibility" +-msgstr "" +- +-#: c-common.c:5770 +-#, fuzzy, gcc-internal-format +-msgid "tls_model argument not a string" +-msgstr "l'argument tls_model no és una cadena" +- +-#: c-common.c:5783 +-#, fuzzy, gcc-internal-format +-msgid "tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\"" +-msgstr "l'argument de tls_model ha de ser \"local-exec\", \"initial-exec\", \"local-dynamic\" or \"global-dynamic\"" +- +-#: c-common.c:5802 c-common.c:5897 +-#, fuzzy, gcc-internal-format +-msgid "%J%qE attribute applies only to functions" +-msgstr "%Jl'atribut \"%E\" s'aplica solament a funcions" +- +-#: c-common.c:5807 c-common.c:5902 +-#, fuzzy, gcc-internal-format +-msgid "%Jcan%'t set %qE attribute after definition" +-msgstr "%Jno es pot establir l'atribut \"%E\" després de la definició" +- +-#: c-common.c:5858 +-#, gcc-internal-format +-msgid "alloc_size parameter outside range" +-msgstr "" +- +-#: c-common.c:5991 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute ignored for %qE" +-msgstr "atribut \"%s\" ignorat per a \"%s\"" +- +-#: c-common.c:6049 +-#, fuzzy, gcc-internal-format +-msgid "invalid vector type for attribute %qE" +-msgstr "tipus de vector no vàlid per a l'atribut \"%s\"" +- +-#: c-common.c:6055 +-#, gcc-internal-format +-msgid "vector size not an integral multiple of component size" +-msgstr "" +- +-#: c-common.c:6061 +-#, gcc-internal-format +-msgid "zero vector size" +-msgstr "" +- +-#: c-common.c:6069 +-#, gcc-internal-format +-msgid "number of components of the vector not a power of two" +-msgstr "" +- +-#: c-common.c:6097 +-#, gcc-internal-format +-msgid "nonnull attribute without arguments on a non-prototype" +-msgstr "un atribut nonnull sense arguments en un que no és prototip" +- +-#: c-common.c:6112 +-#, fuzzy, gcc-internal-format +-msgid "nonnull argument has invalid operand number (argument %lu)" +-msgstr "un argument no null té un nombre d'operadors no vàlid (arg %lu)" +- +-#: c-common.c:6131 +-#, fuzzy, gcc-internal-format +-msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)" +-msgstr "argument no \"null\" amb un nombre d'operadors fora de límits (arg %lu, operand %lu)" +- +-#: c-common.c:6139 +-#, fuzzy, gcc-internal-format +-msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)" +-msgstr "un argument no null fa referència a un operand que no és un punter (arg %lu, operand %lu)" +- +-#: c-common.c:6215 +-#, fuzzy, gcc-internal-format +-msgid "not enough variable arguments to fit a sentinel" +-msgstr "molt pocs arguments per a la funció" +- +-#: c-common.c:6229 +-#, fuzzy, gcc-internal-format +-msgid "missing sentinel in function call" +-msgstr "Prohibir la crida a funcions relatives al PC" +- +-#: c-common.c:6270 +-#, fuzzy, gcc-internal-format +-msgid "null argument where non-null required (argument %lu)" +-msgstr "argument null on es requereix un que no sigui null (arg %lu)" +- +-#: c-common.c:6335 +-#, fuzzy, gcc-internal-format +-msgid "cleanup argument not an identifier" +-msgstr "l'objecte cridat no és un identificador" +- +-#: c-common.c:6342 +-#, fuzzy, gcc-internal-format +-msgid "cleanup argument not a function" +-msgstr "l'objecte cridat no és una funció" +- +-#: c-common.c:6381 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute requires prototypes with named arguments" +-msgstr "l'atribut \"%s\" requereix una constant entera com argument" +- +-#: c-common.c:6392 +-#, fuzzy, gcc-internal-format +-msgid "%qE attribute only applies to variadic functions" +-msgstr "l'atribut \"%s\" nomès s'aplica a funcions" +- +-#: c-common.c:6404 +-#, fuzzy, gcc-internal-format +-msgid "requested position is not an integer constant" +-msgstr "la init_priority sol·licitada no és una constant entera" +- +-#: c-common.c:6412 +-#, gcc-internal-format +-msgid "requested position is less than zero" +-msgstr "" +- +-#: c-common.c:6736 +-#, fuzzy, gcc-internal-format +-msgid "%Hignoring return value of %qD, declared with attribute warn_unused_result" +-msgstr "%Hignorant el valor de retorn de \"%D\", declarat amb atributs \"warn_unused_result\"" +- +-#: c-common.c:6740 +-#, gcc-internal-format +-msgid "%Hignoring return value of function declared with attribute warn_unused_result" +-msgstr "" +- +-#: c-common.c:6793 +-#, fuzzy, gcc-internal-format +-msgid "cannot apply % to static data member %qD" +-msgstr "ús no vàlid del camp no static \"%D\"" +- +-#: c-common.c:6797 +-#, gcc-internal-format +-msgid "cannot apply % when % is overloaded" +-msgstr "" +- +-#: c-common.c:6818 cp/typeck.c:4525 +-#, fuzzy, gcc-internal-format +-msgid "attempt to take address of bit-field structure member %qD" +-msgstr "es va intentar prendre l'adreça del membre de l'estructura de camps de bits \"%s\"" +- +-#: c-common.c:6871 +-#, fuzzy, gcc-internal-format +-msgid "lvalue required as left operand of assignment" +-msgstr "l-value no vàlid en l'assignació" +- +-#: c-common.c:6874 +-#, gcc-internal-format +-msgid "lvalue required as increment operand" +-msgstr "" +- +-#: c-common.c:6877 +-#, gcc-internal-format +-msgid "lvalue required as decrement operand" +-msgstr "" +- +-#: c-common.c:6880 +-#, gcc-internal-format +-msgid "lvalue required as unary %<&%> operand" +-msgstr "" +- +-#: c-common.c:6883 +-#, fuzzy, gcc-internal-format +-msgid "lvalue required in asm statement" +-msgstr "lvalue no vàlid en declaració asm" +- +-#: c-common.c:7005 +-#, fuzzy, gcc-internal-format +-msgid "size of array is too large" +-msgstr "la grandària de la matriu \"%s\" és massa gran" +- +-#: c-common.c:7041 c-common.c:7090 c-typeck.c:2705 +-#, fuzzy, gcc-internal-format +-msgid "too few arguments to function %qE" +-msgstr "molt pocs arguments per a la funció" +- +-#. ??? This should not be an error when inlining calls to +-#. unprototyped functions. +-#: c-common.c:7058 c-typeck.c:4374 +-#, fuzzy, gcc-internal-format +-msgid "incompatible type for argument %d of %qE" +-msgstr "tipus incompatible per a l'argument %d de \"%s\"" +- +-#: c-common.c:7250 +-#, fuzzy, gcc-internal-format +-msgid "array subscript has type %" +-msgstr "el subindici de matriu té un tipus \"char\"" +- +-#: c-common.c:7273 +-#, gcc-internal-format +-msgid "suggest parentheses around + or - inside shift" +-msgstr "es suggereixen parèntesi al voltant de + o - dintre d'un desplaçament" +- +-#: c-common.c:7281 +-#, gcc-internal-format +-msgid "suggest parentheses around && within ||" +-msgstr "es suggereixen parèntesi al voltant de && dintre de ||" +- +-#: c-common.c:7291 +-#, gcc-internal-format +-msgid "suggest parentheses around arithmetic in operand of |" +-msgstr "es suggereixen parèntesi al voltant de l'aritmètica per a operada de |" +- +-#: c-common.c:7296 +-#, gcc-internal-format +-msgid "suggest parentheses around comparison in operand of |" +-msgstr "es suggereixen parèntesi al voltant de les comparances per a operada de |" +- +-#: c-common.c:7306 +-#, gcc-internal-format +-msgid "suggest parentheses around arithmetic in operand of ^" +-msgstr "es suggereixen parèntesi al voltant de l'aritmètica per a operada de ^" +- +-#: c-common.c:7311 +-#, gcc-internal-format +-msgid "suggest parentheses around comparison in operand of ^" +-msgstr "es suggereixen parèntesi al voltant de les comparances per a operada de ^" +- +-#: c-common.c:7319 +-#, gcc-internal-format +-msgid "suggest parentheses around + or - in operand of &" +-msgstr "es suggereixen parèntesi al voltant de + o - per a operada de &" +- +-#: c-common.c:7324 +-#, gcc-internal-format +-msgid "suggest parentheses around comparison in operand of &" +-msgstr "es suggereixen parèntesi al voltant de les comparances per a operada de &" +- +-#: c-common.c:7332 +-#, fuzzy, gcc-internal-format +-msgid "suggest parentheses around comparison in operand of %s" +-msgstr "es suggereixen parèntesi al voltant de les comparances per a operada de |" +- +-#: c-common.c:7341 +-#, gcc-internal-format +-msgid "comparisons like X<=Y<=Z do not have their mathematical meaning" +-msgstr "les comparances com X<=Y<=Z no tenen el seu significat matemàtic" +- +-#: c-common.c:7354 +-#, fuzzy, gcc-internal-format +-msgid "label %q+D defined but not used" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: c-common.c:7356 +-#, fuzzy, gcc-internal-format +-msgid "label %q+D declared but not defined" +-msgstr "%Jl'etiqueta \"%D\" està declarada però no està definida" +- +-#: c-common.c:7375 +-#, gcc-internal-format +-msgid "division by zero" +-msgstr "divisió per zero" +- +-#. Except for passing an argument to an unprototyped function, +-#. this is a constraint violation. When passing an argument to +-#. an unprototyped function, it is compile-time undefined; +-#. making it a constraint in that case was rejected in +-#. DR#252. +-#: c-convert.c:95 c-typeck.c:1775 c-typeck.c:4012 cp/typeck.c:1502 +-#: cp/typeck.c:5717 cp/typeck.c:6325 fortran/convert.c:88 +-#: treelang/tree-convert.c:79 +-#, gcc-internal-format +-msgid "void value not ignored as it ought to be" +-msgstr "valor void no ignorat com deuria ser" +- +-#: c-convert.c:118 fortran/convert.c:121 java/typeck.c:152 +-#: treelang/tree-convert.c:105 +-#, gcc-internal-format +-msgid "conversion to non-scalar type requested" +-msgstr "es va sol·licitar conversió a tipus no escalar" +- +-#: c-decl.c:546 +-#, fuzzy, gcc-internal-format +-msgid "array %q+D assumed to have one element" +-msgstr "%Js'assumeix que la matriu \"%D\" té un element" +- +-#: c-decl.c:651 +-#, gcc-internal-format +-msgid "GCC supports only %u nested scopes" +-msgstr "" +- +-#: c-decl.c:737 cp/decl.c:358 +-#, fuzzy, gcc-internal-format +-msgid "label %q+D used but not defined" +-msgstr "s'usa l'etiqueta \"%D\" però no està definida" +- +-#: c-decl.c:778 +-#, fuzzy, gcc-internal-format +-msgid "nested function %q+D declared but never defined" +-msgstr "s'usa la funció «inline» \"%D\" però mai es va definir" +- +-#: c-decl.c:788 +-#, fuzzy, gcc-internal-format +-msgid "inline function %q+D declared but never defined" +-msgstr "s'usa la funció «inline» \"%D\" però mai es va definir" +- +-#: c-decl.c:801 cp/decl.c:608 +-#, fuzzy, gcc-internal-format +-msgid "unused variable %q+D" +-msgstr "%Jvariable \"%D\" sense ús" +- +-#: c-decl.c:805 +-#, gcc-internal-format +-msgid "type of array %q+D completed incompatibly with implicit initialization" +-msgstr "" +- +-#: c-decl.c:1039 +-#, fuzzy, gcc-internal-format +-msgid "a parameter list with an ellipsis can%'t match an empty parameter name list declaration" +-msgstr "una llista de paràmetres amb una el·lipse no pot coincidir amb una declaració de nom de llista de paràmetres buida." +- +-#: c-decl.c:1046 +-#, fuzzy, gcc-internal-format +-msgid "an argument type that has a default promotion can%'t match an empty parameter name list declaration" +-msgstr "Un tipus d'argument que té una promoció per omissió no pot coincidir amb una declaració de nom de llista de paràmetres buida." +- +-#: c-decl.c:1087 +-#, gcc-internal-format +-msgid "prototype for %q+D declares more arguments than previous old-style definition" +-msgstr "" +- +-#: c-decl.c:1093 +-#, gcc-internal-format +-msgid "prototype for %q+D declares fewer arguments than previous old-style definition" +-msgstr "" +- +-#: c-decl.c:1102 +-#, fuzzy, gcc-internal-format +-msgid "prototype for %q+D declares argument %d with incompatible type" +-msgstr "el prototip per a \"%s\" a continuació i l'argument %d no coincideixen" +- +-#. If we get here, no errors were found, but do issue a warning +-#. for this poor-style construct. +-#: c-decl.c:1115 +-#, fuzzy, gcc-internal-format +-msgid "prototype for %q+D follows non-prototype definition" +-msgstr "a continuació la definició del no prototip aquí" +- +-#: c-decl.c:1130 +-#, fuzzy, gcc-internal-format +-msgid "previous definition of %q+D was here" +-msgstr "%Jdefinició prèvia de \"%D\" aquí" +- +-#: c-decl.c:1132 +-#, fuzzy, gcc-internal-format +-msgid "previous implicit declaration of %q+D was here" +-msgstr "%Jdeclaració implícita prèvia de \"%D\" aquí" +- +-#: c-decl.c:1134 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+D was here" +-msgstr "%Jdeclaració prèvia de \"%D\" aquí" +- +-#: c-decl.c:1174 +-#, fuzzy, gcc-internal-format +-msgid "%q+D redeclared as different kind of symbol" +-msgstr "\"%#D\" redeclarat com un tipus diferent de símbol" +- +-#: c-decl.c:1178 +-#, fuzzy, gcc-internal-format +-msgid "built-in function %q+D declared as non-function" +-msgstr "%Jla funció interna \"%D\" no és declarada com funció" +- +-#: c-decl.c:1181 c-decl.c:1298 c-decl.c:1983 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D shadows a built-in function" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: c-decl.c:1190 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of enumerator %q+D" +-msgstr "redeclaració de \"enum %s\"" +- +-#. If types don't match for a built-in, throw away the +-#. built-in. No point in calling locate_old_decl here, it +-#. won't print anything. +-#: c-decl.c:1211 +-#, fuzzy, gcc-internal-format +-msgid "conflicting types for built-in function %q+D" +-msgstr "%Jtipus en conflicte per a la funció interna \"%D\"" +- +-#: c-decl.c:1235 c-decl.c:1248 c-decl.c:1258 +-#, fuzzy, gcc-internal-format +-msgid "conflicting types for %q+D" +-msgstr "%Jtipus en conflicte per a \"%D\"" +- +-#: c-decl.c:1256 +-#, fuzzy, gcc-internal-format +-msgid "conflicting type qualifiers for %q+D" +-msgstr "%Jtipus en conflicte per a \"%D\"" +- +-#. Allow OLDDECL to continue in use. +-#: c-decl.c:1273 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of typedef %q+D" +-msgstr "%Jredefinició de typedef \"%D\"" +- +-#: c-decl.c:1324 c-decl.c:1426 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of %q+D" +-msgstr "%Jredefinició de \"%D\"" +- +-#: c-decl.c:1359 c-decl.c:1464 +-#, fuzzy, gcc-internal-format +-msgid "static declaration of %q+D follows non-static declaration" +-msgstr "%Jdeclaració \"static\" de \"%D\" a continuació d'una declaració \"non-static\"" +- +-#: c-decl.c:1369 c-decl.c:1376 c-decl.c:1453 c-decl.c:1461 +-#, fuzzy, gcc-internal-format +-msgid "non-static declaration of %q+D follows static declaration" +-msgstr "%Jdeclaració \"non-static\" de \"%D\" a continuació d'una declaració \"static\"" +- +-#: c-decl.c:1393 +-#, gcc-internal-format +-msgid "% attribute present on %q+D" +-msgstr "" +- +-#: c-decl.c:1395 +-#, fuzzy, gcc-internal-format +-msgid "%Jbut not here" +-msgstr " primer tipus aquí" +- +-#: c-decl.c:1413 +-#, fuzzy, gcc-internal-format +-msgid "thread-local declaration of %q+D follows non-thread-local declaration" +-msgstr "%Jdeclaració \"thread-local\" de \"%D\" a continuació d'una declaració \"non-thread-local\"" +- +-#: c-decl.c:1416 +-#, fuzzy, gcc-internal-format +-msgid "non-thread-local declaration of %q+D follows thread-local declaration" +-msgstr "%Jdeclaració \"non-thread-local\" de \"%D\" a continuació d'una declaració \"thread-local\"" +- +-#: c-decl.c:1446 +-#, fuzzy, gcc-internal-format +-msgid "extern declaration of %q+D follows declaration with no linkage" +-msgstr "%Jla declaració externa de \"%D\" no coincideix amb la declaració sense \"linkage\"" +- +-#: c-decl.c:1482 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D with no linkage follows extern declaration" +-msgstr "%Jla declaració de \"%D\" sense \"linkage\" segueix una declaració \"extern\"" +- +-#: c-decl.c:1488 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of %q+D with no linkage" +-msgstr "%Jredeclaració de \"%D\" sense \"linkage\"" +- +-#: c-decl.c:1502 +-#, gcc-internal-format +-msgid "redeclaration of %q+D with different visibility (old visibility preserved)" +-msgstr "" +- +-#: c-decl.c:1513 +-#, fuzzy, gcc-internal-format +-msgid "inline declaration of %qD follows declaration with attribute noinline" +-msgstr "%Jla declaració externa de \"%D\" no coincideix amb la declaració sense \"linkage\"" +- +-#: c-decl.c:1520 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D with attribute noinline follows inline declaration " +-msgstr "%Jla declaració de \"%D\" sense \"linkage\" segueix una declaració \"extern\"" +- +-#: c-decl.c:1539 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared inline after being called" +-msgstr "%J\"%D\" declarat «inline» abans de ser cridat" +- +-#: c-decl.c:1544 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared inline after its definition" +-msgstr "%J\"%D\" declarat «inline» després de la seva definició" +- +-#: c-decl.c:1563 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of parameter %q+D" +-msgstr "%Jredefinició de typedef \"%D\"" +- +-#: c-decl.c:1590 +-#, fuzzy, gcc-internal-format +-msgid "redundant redeclaration of %q+D" +-msgstr "%Jdeclaració redundant de \"%D\"" +- +-#: c-decl.c:1970 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D shadows previous non-variable" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: c-decl.c:1975 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D shadows a parameter" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: c-decl.c:1978 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D shadows a global declaration" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: c-decl.c:1988 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q+D shadows a previous local" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: c-decl.c:1991 cp/name-lookup.c:988 cp/name-lookup.c:1019 +-#: cp/name-lookup.c:1027 +-#, gcc-internal-format +-msgid "%Jshadowed declaration is here" +-msgstr "%Jla declaració enfosquit és aquí" +- +-#: c-decl.c:2183 +-#, fuzzy, gcc-internal-format +-msgid "nested extern declaration of %qD" +-msgstr "declaració extern niada de \"%s\"" +- +-#: c-decl.c:2346 c-decl.c:2349 +-#, fuzzy, gcc-internal-format +-msgid "implicit declaration of function %qE" +-msgstr "declaració implícita de la funció \"%s\"" +- +-#: c-decl.c:2411 +-#, fuzzy, gcc-internal-format +-msgid "incompatible implicit declaration of built-in function %qD" +-msgstr "declaració implícita de la funció \"%#D\"" +- +-#: c-decl.c:2420 +-#, fuzzy, gcc-internal-format +-msgid "incompatible implicit declaration of function %qD" +-msgstr "declaració implícita de la funció \"%#D\"" +- +-#: c-decl.c:2473 +-#, fuzzy, gcc-internal-format +-msgid "%H%qE undeclared here (not in a function)" +-msgstr "\"%s\" no ha estat declarat aquí (no en una funció)" +- +-#: c-decl.c:2478 +-#, fuzzy, gcc-internal-format +-msgid "%H%qE undeclared (first use in this function)" +-msgstr "\"%s\" no ha estat declarat aquí (primer us en aquesta funció)" +- +-#: c-decl.c:2482 +-#, fuzzy, gcc-internal-format +-msgid "%H(Each undeclared identifier is reported only once" +-msgstr "(Cada identificador no declarat solament es reporta una vegada" +- +-#: c-decl.c:2483 +-#, fuzzy, gcc-internal-format +-msgid "%Hfor each function it appears in.)" +-msgstr "per a cada funció en la qual apareix.)" +- +-#: c-decl.c:2521 cp/decl.c:2397 +-#, fuzzy, gcc-internal-format +-msgid "label %qE referenced outside of any function" +-msgstr "l'etiqueta %s es referenciada fora de qualsevol funció" +- +-#: c-decl.c:2563 +-#, fuzzy, gcc-internal-format +-msgid "duplicate label declaration %qE" +-msgstr "declaració de l'etiqueta \"%s\" duplicada" +- +-#: c-decl.c:2599 +-#, fuzzy, gcc-internal-format +-msgid "%Hduplicate label %qD" +-msgstr "%Hetiqueta duplicada \"%D\"" +- +-#: c-decl.c:2609 +-#, fuzzy, gcc-internal-format +-msgid "%Jjump into statement expression" +-msgstr "desbordament en la constant implícita" +- +-#: c-decl.c:2611 +-#, fuzzy, gcc-internal-format +-msgid "%Jjump into scope of identifier with variably modified type" +-msgstr "l'argument de patró \"%T\" és un tipus modificat variablement" +- +-#: c-decl.c:2626 +-#, gcc-internal-format +-msgid "%Htraditional C lacks a separate namespace for labels, identifier %qE conflicts" +-msgstr "" +- +-#: c-decl.c:2701 +-#, gcc-internal-format +-msgid "%H%qE defined as wrong kind of tag" +-msgstr "" +- +-#: c-decl.c:2903 +-#, gcc-internal-format +-msgid "unnamed struct/union that defines no instances" +-msgstr "struct/union sense nom que no defineix cap instància" +- +-#: c-decl.c:2911 +-#, gcc-internal-format +-msgid "empty declaration with storage class specifier does not redeclare tag" +-msgstr "" +- +-#: c-decl.c:2922 +-#, fuzzy, gcc-internal-format +-msgid "empty declaration with type qualifier does not redeclare tag" +-msgstr "la declaració no declara res" +- +-#: c-decl.c:2943 c-decl.c:2950 +-#, fuzzy, gcc-internal-format +-msgid "useless type name in empty declaration" +-msgstr "paraules claus inútils o noms de tipus en una declaració buida" +- +-#: c-decl.c:2958 +-#, fuzzy, gcc-internal-format +-msgid "% in empty declaration" +-msgstr "declaració buida" +- +-#: c-decl.c:2964 +-#, fuzzy, gcc-internal-format +-msgid "% in file-scope empty declaration" +-msgstr "es van especificar dos tipus en una declaració buida" +- +-#: c-decl.c:2970 +-#, fuzzy, gcc-internal-format +-msgid "% in file-scope empty declaration" +-msgstr "es van especificar dos tipus en una declaració buida" +- +-#: c-decl.c:2976 +-#, fuzzy, gcc-internal-format +-msgid "useless storage class specifier in empty declaration" +-msgstr "especificadors de classe d'emmagatzematge no vàlids en les declaracions de paràmetres" +- +-#: c-decl.c:2982 +-#, fuzzy, gcc-internal-format +-msgid "useless %<__thread%> in empty declaration" +-msgstr "paraules claus inútils o noms de tipus en una declaració buida" +- +-#: c-decl.c:2990 +-#, fuzzy, gcc-internal-format +-msgid "useless type qualifier in empty declaration" +-msgstr "qualificadors de tipus duplicats en la declaració %s" +- +-#: c-decl.c:2997 +-#, gcc-internal-format +-msgid "empty declaration" +-msgstr "declaració buida" +- +-#: c-decl.c:3063 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 does not support % or type qualifiers in parameter array declarators" +-msgstr "ISO C90 no dóna suport a \"static\" o qualificadors de tipus dins matrius de declaradors de paràmetres" +- +-#: c-decl.c:3066 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 does not support %<[*]%> array declarators" +-msgstr "ISO C90 no dóna suport a declaradors de paràmetres \"[*]\"" +- +-#. C99 6.7.5.2p4 +-#. A function definition isn't function prototype scope C99 6.2.1p4. +-#. C99 6.7.5.2p4 +-#: c-decl.c:3073 c-decl.c:5015 +-#, gcc-internal-format +-msgid "%<[*]%> not allowed in other than function prototype scope" +-msgstr "" +- +-#: c-decl.c:3097 +-#, gcc-internal-format +-msgid "static or type qualifiers in abstract declarator" +-msgstr "static o qualificador de tipus en un declarador abstracte" +- +-#: c-decl.c:3183 +-#, fuzzy, gcc-internal-format +-msgid "%q+D is usually a function" +-msgstr "%J\"%D\" és generalment una funció" +- +-#: c-decl.c:3192 cp/decl.c:3983 cp/decl2.c:773 +-#, fuzzy, gcc-internal-format +-msgid "typedef %qD is initialized (use __typeof__ instead)" +-msgstr "typedef \"%D\" està inicialitzat (utilitzi __typeof__ en el seu lloc)" +- +-#: c-decl.c:3197 +-#, fuzzy, gcc-internal-format +-msgid "function %qD is initialized like a variable" +-msgstr "la funció \"%#D\" està inicialitzada com una variable" +- +-#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE. +-#: c-decl.c:3203 +-#, fuzzy, gcc-internal-format +-msgid "parameter %qD is initialized" +-msgstr "el paràmetre \"%s\" té valor inicial" +- +-#: c-decl.c:3228 +-#, fuzzy, gcc-internal-format +-msgid "variable %qD has initializer but incomplete type" +-msgstr "la variable \"%#D\" té inicializador però de tipus de dada incompleta" +- +-#: c-decl.c:3316 c-decl.c:6108 cp/decl.c:4025 cp/decl.c:10985 +-#, fuzzy, gcc-internal-format +-msgid "inline function %q+D given attribute noinline" +-msgstr "%Jha donat un atribut «noinline» a la funció «inline» \"%D\"" +- +-#: c-decl.c:3327 +-#, gcc-internal-format +-msgid "%q+D is static but declared in inline function %qD which is not static" +-msgstr "" +- +-#: c-decl.c:3418 +-#, fuzzy, gcc-internal-format +-msgid "initializer fails to determine size of %q+D" +-msgstr "l'inicializador no pot determinar la grandària de \"%D\"" +- +-#: c-decl.c:3423 +-#, fuzzy, gcc-internal-format +-msgid "array size missing in %q+D" +-msgstr "falta la grandària de la matriu en \"%D\"" +- +-#: c-decl.c:3435 +-#, fuzzy, gcc-internal-format +-msgid "zero or negative size array %q+D" +-msgstr "%Jmatriu \"%D\" de grandària zero o negatiu" +- +-#: c-decl.c:3490 varasm.c:2067 +-#, fuzzy, gcc-internal-format +-msgid "storage size of %q+D isn%'t known" +-msgstr "no es coneix la grandària d'emmagatzematge de \"%D\"" +- +-#: c-decl.c:3500 +-#, fuzzy, gcc-internal-format +-msgid "storage size of %q+D isn%'t constant" +-msgstr "la grandària d'emmagatzematge de \"%D\" no és constant" +- +-#: c-decl.c:3545 +-#, fuzzy, gcc-internal-format +-msgid "ignoring asm-specifier for non-static local variable %q+D" +-msgstr "%Js'ignora l'especificador \"asm\" per a la variable local \"non-static\" \"%D\"" +- +-#: c-decl.c:3573 fortran/f95-lang.c:653 +-#, gcc-internal-format +-msgid "cannot put object with volatile field into register" +-msgstr "no es pot posar objecte amb camp volatile en register" +- +-#: c-decl.c:3702 +-#, gcc-internal-format +-msgid "ISO C forbids forward parameter declarations" +-msgstr "ISO C prohibeix declaracions avançades de paràmetres" +- +-#: c-decl.c:3821 +-#, fuzzy, gcc-internal-format +-msgid "bit-field %qs width not an integer constant" +-msgstr "l'amplària del camp de bits \"%s\" no és una constant entera" +- +-#: c-decl.c:3829 +-#, fuzzy, gcc-internal-format +-msgid "negative width in bit-field %qs" +-msgstr "amplària negativa en el camp de bit \"%s\"" +- +-#: c-decl.c:3834 +-#, fuzzy, gcc-internal-format +-msgid "zero width for bit-field %qs" +-msgstr "amplària zero per al camp de bits \"%s\"" +- +-#: c-decl.c:3844 +-#, fuzzy, gcc-internal-format +-msgid "bit-field %qs has invalid type" +-msgstr "el camp de bits \"%s\" té un tipus no vàlid" +- +-#: c-decl.c:3854 +-#, fuzzy, gcc-internal-format +-msgid "type of bit-field %qs is a GCC extension" +-msgstr "el tipus de camp de bits \"%s\" és una extensió del GCC" +- +-#: c-decl.c:3860 +-#, fuzzy, gcc-internal-format +-msgid "width of %qs exceeds its type" +-msgstr "l'amplària de \"%s\" excedeix el seu tipus" +- +-#: c-decl.c:3873 +-#, fuzzy, gcc-internal-format +-msgid "%qs is narrower than values of its type" +-msgstr "\"%s\" és més estret que els valors del seu tipus" +- +-#: c-decl.c:3892 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 forbids array %qs whose size can%'t be evaluated" +-msgstr "ISO C90 prohibeix matriu \"%s\" que la seua grandària no pot ser avaluada" +- +-#: c-decl.c:3896 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 forbids array whose size can%'t be evaluated" +-msgstr "ISO C90 prohibeix matriu \"%s\" que la seua grandària no pot ser avaluada" +- +-#: c-decl.c:3902 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 forbids variable length array %qs" +-msgstr "ISO C90 prohibeix la matriu \"%s\" de grandària variable" +- +-#: c-decl.c:3905 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 forbids variable length array" +-msgstr "ISO C++ prohibeix la matriu de grandària variable" +- +-#: c-decl.c:3914 +-#, fuzzy, gcc-internal-format +-msgid "the size of array %qs can%'t be evaluated" +-msgstr "la grandària del tipus no pot ser avaluat explícitament" +- +-#: c-decl.c:3918 +-#, fuzzy, gcc-internal-format +-msgid "the size of array can %'t be evaluated" +-msgstr "la grandària del tipus no pot ser avaluat explícitament" +- +-#: c-decl.c:3924 +-#, gcc-internal-format +-msgid "variable length array %qs is used" +-msgstr "" +- +-#: c-decl.c:3928 cp/decl.c:7004 +-#, gcc-internal-format +-msgid "variable length array is used" +-msgstr "" +- +-#: c-decl.c:4051 c-decl.c:4328 +-#, fuzzy, gcc-internal-format +-msgid "variably modified %qs at file scope" +-msgstr "l'argument de patró \"%T\" és un tipus modificat variablement" +- +-#: c-decl.c:4069 +-#, fuzzy, gcc-internal-format +-msgid "type defaults to % in declaration of %qs" +-msgstr "el tipus de dada per omissió és \"int\" en la declaració de \"%s\"" +- +-#: c-decl.c:4097 +-#, fuzzy, gcc-internal-format +-msgid "duplicate %" +-msgstr "\"const\" duplicat" +- +-#: c-decl.c:4099 +-#, fuzzy, gcc-internal-format +-msgid "duplicate %" +-msgstr "\"restrict\" duplicat" +- +-#: c-decl.c:4101 +-#, fuzzy, gcc-internal-format +-msgid "duplicate %" +-msgstr "\"volatile\" duplicat" +- +-#: c-decl.c:4120 +-#, fuzzy, gcc-internal-format +-msgid "function definition declared %" +-msgstr "la definició de la funció ho va declarar com \"auto\"" +- +-#: c-decl.c:4122 +-#, fuzzy, gcc-internal-format +-msgid "function definition declared %" +-msgstr "la definició de la funció ho va declarar com \"register\"" +- +-#: c-decl.c:4124 +-#, fuzzy, gcc-internal-format +-msgid "function definition declared %" +-msgstr "la definició de la funció ho va declarar com \"typedef\"" +- +-#: c-decl.c:4126 +-#, fuzzy, gcc-internal-format +-msgid "function definition declared %<__thread%>" +-msgstr "la definició de la funció ho va declarar com \"__thread\"" +- +-#: c-decl.c:4142 +-#, fuzzy, gcc-internal-format +-msgid "storage class specified for structure field %qs" +-msgstr "es va especificar una classe d'emmagatzematge per al camp de l'estructura \"%s\"" +- +-#: c-decl.c:4146 cp/decl.c:7874 +-#, fuzzy, gcc-internal-format +-msgid "storage class specified for parameter %qs" +-msgstr "es va especificar una classe d'emmagatzematge per al paràmetre \"%s\"" +- +-#: c-decl.c:4149 cp/decl.c:7876 +-#, gcc-internal-format +-msgid "storage class specified for typename" +-msgstr "es va especificar una classe d'emmagatzematge per al nom de tipus" +- +-#: c-decl.c:4166 cp/decl.c:7893 +-#, fuzzy, gcc-internal-format +-msgid "%qs initialized and declared %" +-msgstr "\"%s\" iniciat i declarat com \"extern\"" +- +-#: c-decl.c:4169 cp/decl.c:7896 +-#, fuzzy, gcc-internal-format +-msgid "%qs has both % and initializer" +-msgstr "\"%s\" té \"extern\" i assignador de valor inicial al mateix temps" +- +-#: c-decl.c:4174 +-#, fuzzy, gcc-internal-format +-msgid "file-scope declaration of %qs specifies %" +-msgstr "la declaració al nivell del fitxer de \"%s\" especifica \"auto\"" +- +-#: c-decl.c:4176 +-#, fuzzy, gcc-internal-format +-msgid "file-scope declaration of %qs specifies %" +-msgstr "la declaració al nivell del fitxer de \"%s\" especifica \"auto\"" +- +-#: c-decl.c:4181 cp/decl.c:7900 +-#, fuzzy, gcc-internal-format +-msgid "nested function %qs declared %" +-msgstr "la funció niada \"%s\" es va declarar \"extern\"" +- +-#: c-decl.c:4184 cp/decl.c:7910 +-#, fuzzy, gcc-internal-format +-msgid "function-scope %qs implicitly auto and declared %<__thread%>" +-msgstr "l'àmbit de la funció \"%s\" és implícitament acte i declarada \"__thread\"" +- +-#. Only the innermost declarator (making a parameter be of +-#. array type which is converted to pointer type) +-#. may have static or type qualifiers. +-#: c-decl.c:4231 c-decl.c:4472 +-#, gcc-internal-format +-msgid "static or type qualifiers in non-parameter array declarator" +-msgstr "static o qualificador de tipus en un declarador de matriu que no és paràmetre" +- +-#: c-decl.c:4278 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qs as array of voids" +-msgstr "declaració de \"%s\" com una matriu de voids" +- +-#: c-decl.c:4284 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qs as array of functions" +-msgstr "declaració de \"%s\" com una matriu de funcions" +- +-#: c-decl.c:4289 +-#, gcc-internal-format +-msgid "invalid use of structure with flexible array member" +-msgstr "ús no vàlid d'estructura amb membres de matriu flexible" +- +-#: c-decl.c:4309 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qs has non-integer type" +-msgstr "la grandària de la matriu \"%s\" té un tipus no enter" +- +-#: c-decl.c:4314 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids zero-size array %qs" +-msgstr "ISO C prohibeix la matriu \"%s\" de grandària zero" +- +-#: c-decl.c:4321 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qs is negative" +-msgstr "la grandària de la matriu \"%s\" és negatiu" +- +-#: c-decl.c:4375 c-decl.c:4631 cp/decl.c:8375 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qs is too large" +-msgstr "la grandària de la matriu \"%s\" és massa gran" +- +-#: c-decl.c:4386 +-#, gcc-internal-format +-msgid "ISO C90 does not support flexible array members" +-msgstr "ISO C90 no té suport per a membres de matrius flexibles" +- +-#. C99 6.7.5.2p4 +-#: c-decl.c:4399 +-#, fuzzy, gcc-internal-format +-msgid "%<[*]%> not allowed in other than a declaration" +-msgstr "no es permet l'espai de noms \"%D\" en la declaració d'ús" +- +-#: c-decl.c:4422 +-#, gcc-internal-format +-msgid "array type has incomplete element type" +-msgstr "el tipus array té tipus d'element incomplet" +- +-#: c-decl.c:4504 cp/decl.c:8001 +-#, fuzzy, gcc-internal-format +-msgid "%qs declared as function returning a function" +-msgstr "\"%s\" que és declarat com funció retorna una funció" +- +-#: c-decl.c:4509 cp/decl.c:8006 +-#, fuzzy, gcc-internal-format +-msgid "%qs declared as function returning an array" +-msgstr "\"%s\" que és declarat com funció retorna una matriu" +- +-#: c-decl.c:4531 +-#, fuzzy, gcc-internal-format +-msgid "function definition has qualified void return type" +-msgstr "definició no vàlida del tipus qualificat \"%T\"" +- +-#: c-decl.c:4534 cp/decl.c:7990 cp/pt.c:8568 +-#, gcc-internal-format +-msgid "type qualifiers ignored on function return type" +-msgstr "s'ignoren els qualificadors de tipus en el tipus de retorn de la funció" +- +-#: c-decl.c:4563 c-decl.c:4644 c-decl.c:4732 c-decl.c:4825 +-#, gcc-internal-format +-msgid "ISO C forbids qualified function types" +-msgstr "ISO C prohibeix els tipus de funció qualificats" +- +-#: c-decl.c:4652 +-#, fuzzy, gcc-internal-format +-msgid "typedef %q+D declared %" +-msgstr "%Jla variable \"%D\" és declarada com \"inline\"" +- +-#: c-decl.c:4667 +-#, gcc-internal-format +-msgid "ISO C forbids const or volatile function types" +-msgstr "ISO C prohibeix els tipus de funció const o volatile" +- +-#. C99 6.7.2.1p8 +-#: c-decl.c:4677 +-#, gcc-internal-format +-msgid "a member of a structure or union cannot have a variably modified type" +-msgstr "" +- +-#: c-decl.c:4693 +-#, fuzzy, gcc-internal-format +-msgid "variable or field %qs declared void" +-msgstr "variable o camp \"%s\" declarat void" +- +-#: c-decl.c:4725 +-#, gcc-internal-format +-msgid "attributes in parameter array declarator ignored" +-msgstr "atributs en el declarador de paràmetres de matriu ignorats" +- +-#: c-decl.c:4760 +-#, fuzzy, gcc-internal-format +-msgid "parameter %q+D declared %" +-msgstr "el paràmetre \"%D\" es va declarar void" +- +-#: c-decl.c:4773 +-#, fuzzy, gcc-internal-format +-msgid "field %qs declared as a function" +-msgstr "el camp \"%s\" es declara com una funció" +- +-#: c-decl.c:4779 +-#, fuzzy, gcc-internal-format +-msgid "field %qs has incomplete type" +-msgstr "el camp \"%s\" té tipus de dada incompleta" +- +-#: c-decl.c:4796 c-decl.c:4808 c-decl.c:4812 +-#, fuzzy, gcc-internal-format +-msgid "invalid storage class for function %qs" +-msgstr "classe d'emmagatzematge no vàlida per a la funció \"%s\"" +- +-#: c-decl.c:4831 +-#, fuzzy, gcc-internal-format +-msgid "% function returns non-void value" +-msgstr "la funció \"no return\" retorna un valor que no és \"void\"" +- +-#: c-decl.c:4867 +-#, fuzzy, gcc-internal-format +-msgid "cannot inline function %" +-msgstr "no es pot fer «inline» la funció \"main\"" +- +-#: c-decl.c:4910 +-#, gcc-internal-format +-msgid "variable previously declared % redeclared %" +-msgstr "" +- +-#: c-decl.c:4920 +-#, fuzzy, gcc-internal-format +-msgid "variable %q+D declared %" +-msgstr "%Jla variable \"%D\" és declarada com \"inline\"" +- +-#. C99 6.7.5.2p2 +-#: c-decl.c:4951 +-#, gcc-internal-format +-msgid "object with variably modified type must have no linkage" +-msgstr "" +- +-#: c-decl.c:5020 c-decl.c:6199 +-#, fuzzy, gcc-internal-format +-msgid "function declaration isn%'t a prototype" +-msgstr "la declaració de la funció no és un prototip" +- +-#: c-decl.c:5028 +-#, gcc-internal-format +-msgid "parameter names (without types) in function declaration" +-msgstr "noms de paràmetres (sense tipus) en la declaració de la funció" +- +-#: c-decl.c:5061 +-#, fuzzy, gcc-internal-format +-msgid "parameter %u (%q+D) has incomplete type" +-msgstr "%Jel paràmetre \"%D\" té un tipus incomplet" +- +-#: c-decl.c:5064 +-#, fuzzy, gcc-internal-format +-msgid "%Jparameter %u has incomplete type" +-msgstr "%Jel paràmetre \"%D\" té un tipus incomplet" +- +-#: c-decl.c:5073 +-#, fuzzy, gcc-internal-format +-msgid "parameter %u (%q+D) has void type" +-msgstr "%Jel paràmetre \"%D\" té un tipus incomplet" +- +-#: c-decl.c:5076 +-#, fuzzy, gcc-internal-format +-msgid "%Jparameter %u has void type" +-msgstr "%Jel paràmetre \"%D\" té un tipus incomplet" +- +-#: c-decl.c:5138 +-#, gcc-internal-format +-msgid "% as only parameter may not be qualified" +-msgstr "" +- +-#: c-decl.c:5142 c-decl.c:5176 +-#, gcc-internal-format +-msgid "% must be the only parameter" +-msgstr "" +- +-#: c-decl.c:5170 +-#, fuzzy, gcc-internal-format +-msgid "parameter %q+D has just a forward declaration" +-msgstr "%Jel paràmetre \"%D\" només té una declaració posterior" +- +-#. The %s will be one of 'struct', 'union', or 'enum'. +-#: c-decl.c:5215 +-#, fuzzy, gcc-internal-format +-msgid "%<%s %E%> declared inside parameter list" +-msgstr "\"%s %s\" declarat dintre d'una llista de paràmetres" +- +-#. The %s will be one of 'struct', 'union', or 'enum'. +-#: c-decl.c:5219 +-#, gcc-internal-format +-msgid "anonymous %s declared inside parameter list" +-msgstr "%s anònim declarat dintre d'una llista de paràmetres" +- +-#: c-decl.c:5224 +-#, gcc-internal-format +-msgid "its scope is only this definition or declaration, which is probably not what you want" +-msgstr "el seu àmbit és solament aquesta definició o declaració, la qual cosa probablement no sigui el que desitja." +- +-#: c-decl.c:5358 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of %" +-msgstr "redefinició de \"union %s\"" +- +-#: c-decl.c:5360 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of %" +-msgstr "redefinició de \"struct %s\"" +- +-#: c-decl.c:5365 +-#, fuzzy, gcc-internal-format +-msgid "nested redefinition of %" +-msgstr "redefinició niada de \"%s\"" +- +-#: c-decl.c:5367 +-#, fuzzy, gcc-internal-format +-msgid "nested redefinition of %" +-msgstr "redefinició niada de \"%s\"" +- +-#: c-decl.c:5442 cp/decl.c:3780 +-#, gcc-internal-format +-msgid "declaration does not declare anything" +-msgstr "la declaració no declara res" +- +-#: c-decl.c:5446 +-#, fuzzy, gcc-internal-format +-msgid "ISO C doesn%'t support unnamed structs/unions" +-msgstr "ISO C no té suport per a structs/unions sense nom" +- +-#: c-decl.c:5490 c-decl.c:5506 +-#, fuzzy, gcc-internal-format +-msgid "duplicate member %q+D" +-msgstr "%Jmembre duplicat \"%D\"" +- +-#: c-decl.c:5545 +-#, fuzzy, gcc-internal-format +-msgid "union has no named members" +-msgstr "membres nomenats" +- +-#: c-decl.c:5547 +-#, fuzzy, gcc-internal-format +-msgid "union has no members" +-msgstr "agregat anònim sense membres" +- +-#: c-decl.c:5552 +-#, fuzzy, gcc-internal-format +-msgid "struct has no named members" +-msgstr "membres nomenats" +- +-#: c-decl.c:5554 +-#, fuzzy, gcc-internal-format +-msgid "struct has no members" +-msgstr "%s no té un membre cridat \"%s\"" +- +-#: c-decl.c:5616 +-#, gcc-internal-format +-msgid "%Jflexible array member in union" +-msgstr "%Jmembre de matriu flexible en el union" +- +-#: c-decl.c:5621 +-#, gcc-internal-format +-msgid "%Jflexible array member not at end of struct" +-msgstr "%Jel membre de matriu flexible no està al final del struct" +- +-#: c-decl.c:5626 +-#, gcc-internal-format +-msgid "%Jflexible array member in otherwise empty struct" +-msgstr "%Jel membre de matriu flexible seria d'altra manera un struct buit" +- +-# +-#: c-decl.c:5633 +-#, gcc-internal-format +-msgid "%Jinvalid use of structure with flexible array member" +-msgstr "%Jús no vàlid d'estructura amb membres de matriu flexible" +- +-#: c-decl.c:5742 +-#, gcc-internal-format +-msgid "union cannot be made transparent" +-msgstr "union no es pot fer transparent" +- +-#: c-decl.c:5813 +-#, fuzzy, gcc-internal-format +-msgid "nested redefinition of %" +-msgstr "redefinició niada de \"%s\"" +- +-#. This enum is a named one that has been declared already. +-#: c-decl.c:5820 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of %" +-msgstr "redeclaració de \"enum %s\"" +- +-#: c-decl.c:5883 +-#, gcc-internal-format +-msgid "enumeration values exceed range of largest integer" +-msgstr "els valors d'enumeració excedeixen els límits de l'enter més gran" +- +-#: c-decl.c:5900 +-#, gcc-internal-format +-msgid "specified mode too small for enumeral values" +-msgstr "" +- +-#: c-decl.c:5996 +-#, fuzzy, gcc-internal-format +-msgid "enumerator value for %qE is not an integer constant" +-msgstr "el valor de enumerator per a \"%s\" no és una constant entera" +- +-#: c-decl.c:6013 +-#, gcc-internal-format +-msgid "overflow in enumeration values" +-msgstr "desbordament en valors d'enumeració" +- +-#: c-decl.c:6018 +-#, fuzzy, gcc-internal-format +-msgid "ISO C restricts enumerator values to range of %" +-msgstr "ISO C restringeix els valors d'enumeració als límits de \"int\"" +- +-#: c-decl.c:6125 +-#, gcc-internal-format +-msgid "return type is an incomplete type" +-msgstr "el tipus de retorn és un tipus incomplet" +- +-#: c-decl.c:6133 +-#, fuzzy, gcc-internal-format +-msgid "return type defaults to %" +-msgstr "el tipus de retorn per omissió és \"int\"" +- +-#: c-decl.c:6206 +-#, fuzzy, gcc-internal-format +-msgid "no previous prototype for %q+D" +-msgstr "%Jno hi ha un prototip previ per a \"%D\"" +- +-#: c-decl.c:6215 +-#, fuzzy, gcc-internal-format +-msgid "%q+D was used with no prototype before its definition" +-msgstr "%Jes va usar \"%D\" sense prototip abans de la seva definició" +- +-#: c-decl.c:6221 cp/decl.c:11126 +-#, fuzzy, gcc-internal-format +-msgid "no previous declaration for %q+D" +-msgstr "no hi ha declaració prèvia per a \"%D\"" +- +-#: c-decl.c:6231 +-#, fuzzy, gcc-internal-format +-msgid "%q+D was used with no declaration before its definition" +-msgstr "%Jes va usar \"%D\" sense declaració abans de la seva definició" +- +-#: c-decl.c:6254 c-decl.c:6723 +-#, fuzzy, gcc-internal-format +-msgid "return type of %q+D is not %" +-msgstr "el tipus de retorn de \"%D\" no és \"int\"" +- +-#: c-decl.c:6259 +-#, fuzzy, gcc-internal-format +-msgid "%q+D is normally a non-static function" +-msgstr "%J\"%D\" generalment és una funció «non-static»" +- +-#: c-decl.c:6293 +-#, gcc-internal-format +-msgid "%Jold-style parameter declarations in prototyped function definition" +-msgstr "" +- +-#: c-decl.c:6307 +-#, fuzzy, gcc-internal-format +-msgid "%Jtraditional C rejects ISO C style function definitions" +-msgstr "C tradicional rebutja la definició de funcions d'estil ISO·C" +- +-#: c-decl.c:6323 +-#, gcc-internal-format +-msgid "%Jparameter name omitted" +-msgstr "%Jes va ometre el nom del paràmetre" +- +-#: c-decl.c:6357 +-#, fuzzy, gcc-internal-format +-msgid "%Jold-style function definition" +-msgstr "%s: no es va convertir la definició de la funció\n" +- +-#: c-decl.c:6366 +-#, gcc-internal-format +-msgid "%Jparameter name missing from parameter list" +-msgstr "%Jfalta el nom del paràmetre de la llista de paràmetres" +- +-#: c-decl.c:6377 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared as a non-parameter" +-msgstr "%J\"%D\" declarat com «non-parameter»" +- +-#: c-decl.c:6382 +-#, fuzzy, gcc-internal-format +-msgid "multiple parameters named %q+D" +-msgstr "%Jmúltiples paràmetres nomenats \"%D\"" +- +-#: c-decl.c:6390 +-#, fuzzy, gcc-internal-format +-msgid "parameter %q+D declared with void type" +-msgstr "el paràmetre \"%D\" es va declarar void" +- +-#: c-decl.c:6407 c-decl.c:6409 +-#, fuzzy, gcc-internal-format +-msgid "type of %q+D defaults to %" +-msgstr "%Jel tipus de \"%D\" és \"int\" per omissió" +- +-#: c-decl.c:6428 +-#, fuzzy, gcc-internal-format +-msgid "parameter %q+D has incomplete type" +-msgstr "el paràmetre té tipus incomplet" +- +-#: c-decl.c:6434 +-#, fuzzy, gcc-internal-format +-msgid "declaration for parameter %q+D but no such parameter" +-msgstr "%Jexisteix la declaració per al paràmetre \"%D\" però no hi ha tal paràmetre" +- +-#: c-decl.c:6484 +-#, fuzzy, gcc-internal-format +-msgid "number of arguments doesn%'t match built-in prototype" +-msgstr "el nombre d'arguments no coincideixen amb el prototip" +- +-#: c-decl.c:6488 +-#, fuzzy, gcc-internal-format +-msgid "number of arguments doesn%'t match prototype" +-msgstr "el nombre d'arguments no coincideixen amb el prototip" +- +-#: c-decl.c:6489 c-decl.c:6529 c-decl.c:6542 +-#, gcc-internal-format +-msgid "%Hprototype declaration" +-msgstr "%Hdeclaració de prototip" +- +-#: c-decl.c:6523 +-#, fuzzy, gcc-internal-format +-msgid "promoted argument %qD doesn%'t match built-in prototype" +-msgstr "l'argument promogut \"%D\" no coincideix amb el prototip" +- +-#: c-decl.c:6527 +-#, fuzzy, gcc-internal-format +-msgid "promoted argument %qD doesn%'t match prototype" +-msgstr "l'argument promogut \"%D\" no coincideix amb el prototip" +- +-#: c-decl.c:6537 +-#, fuzzy, gcc-internal-format +-msgid "argument %qD doesn%'t match built-in prototype" +-msgstr "l'argument \"%D\" no coincideix amb el prototip" +- +-#: c-decl.c:6541 +-#, fuzzy, gcc-internal-format +-msgid "argument %qD doesn%'t match prototype" +-msgstr "l'argument \"%D\" no coincideix amb el prototip" +- +-#: c-decl.c:6768 cp/decl.c:11820 +-#, gcc-internal-format +-msgid "no return statement in function returning non-void" +-msgstr "no hi ha una declaració de retorn en una funció que retorna \"non-void\"" +- +-#. If we get here, declarations have been used in a for loop without +-#. the C99 for loop scope. This doesn't make much sense, so don't +-#. allow it. +-#: c-decl.c:6841 +-#, fuzzy, gcc-internal-format +-msgid "% loop initial declaration used outside C99 mode" +-msgstr "es va usar la declaració inicial del cicle \"for\" fora del mode C99" +- +-#: c-decl.c:6870 +-#, fuzzy, gcc-internal-format +-msgid "declaration of static variable %q+D in % loop initial declaration" +-msgstr "%Jdeclaració de la variable \"static\" \"%D\" en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:6873 +-#, fuzzy, gcc-internal-format +-msgid "declaration of % variable %q+D in % loop initial declaration" +-msgstr "%Jdeclaració de la variable \"extern\" \"%D\" en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:6878 +-#, fuzzy, gcc-internal-format +-msgid "% declared in % loop initial declaration" +-msgstr "\"struct %s\" declarat en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:6882 +-#, fuzzy, gcc-internal-format +-msgid "% declared in % loop initial declaration" +-msgstr "\"union %s\" declarat en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:6886 +-#, fuzzy, gcc-internal-format +-msgid "% declared in % loop initial declaration" +-msgstr "\"enum %s\" declarat en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:6890 +-#, fuzzy, gcc-internal-format +-msgid "declaration of non-variable %q+D in % loop initial declaration" +-msgstr "%Jdeclaració de \"%D\" que és \"non-variable\" en la declaració inicial del cicle \"for\"" +- +-#: c-decl.c:7178 c-decl.c:7420 c-decl.c:7716 +-#, fuzzy, gcc-internal-format +-msgid "duplicate %qE" +-msgstr "\"%s\" duplicat" +- +-#: c-decl.c:7201 c-decl.c:7430 c-decl.c:7617 +-#, fuzzy, gcc-internal-format +-msgid "two or more data types in declaration specifiers" +-msgstr "dos o més tipus de dades en la declaració de \"%s\"" +- +-#: c-decl.c:7213 cp/parser.c:2149 +-#, fuzzy, gcc-internal-format +-msgid "% is too long for GCC" +-msgstr "\"long long long\" és massa llarg per a GCC" +- +-#: c-decl.c:7220 c-decl.c:7520 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7226 +-#, fuzzy, gcc-internal-format +-msgid "ISO C90 does not support %" +-msgstr "ISO C90 no dóna suport a \"long long\"" +- +-#: c-decl.c:7231 c-decl.c:7260 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7234 c-decl.c:7437 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7237 c-decl.c:7459 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<_Bool%> in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7240 c-decl.c:7481 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7243 c-decl.c:7501 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7246 +-#, gcc-internal-format +-msgid "both % and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7249 +-#, gcc-internal-format +-msgid "both % and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7252 +-#, gcc-internal-format +-msgid "both % and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7263 c-decl.c:7440 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7266 c-decl.c:7462 +-#, gcc-internal-format +-msgid "both % and %<_Bool%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7269 c-decl.c:7484 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7272 c-decl.c:7504 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7275 c-decl.c:7523 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7278 +-#, gcc-internal-format +-msgid "both % and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7281 +-#, gcc-internal-format +-msgid "both % and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7284 +-#, gcc-internal-format +-msgid "both % and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7292 c-decl.c:7321 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7295 c-decl.c:7443 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7298 c-decl.c:7465 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<_Bool%> in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7301 c-decl.c:7507 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7304 c-decl.c:7526 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7307 +-#, gcc-internal-format +-msgid "both % and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7310 +-#, gcc-internal-format +-msgid "both % and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7313 +-#, gcc-internal-format +-msgid "both % and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7324 c-decl.c:7446 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7327 c-decl.c:7468 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<_Bool%> in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7330 c-decl.c:7510 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7333 c-decl.c:7529 +-#, fuzzy, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7336 +-#, gcc-internal-format +-msgid "both % and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7339 +-#, gcc-internal-format +-msgid "both % and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7342 +-#, gcc-internal-format +-msgid "both % and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7350 +-#, gcc-internal-format +-msgid "ISO C90 does not support complex types" +-msgstr "ISO C90 no té suport per a tipus complexos" +- +-#: c-decl.c:7352 c-decl.c:7449 +-#, gcc-internal-format +-msgid "both % and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7355 c-decl.c:7471 +-#, gcc-internal-format +-msgid "both % and %<_Bool%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7358 +-#, gcc-internal-format +-msgid "both % and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7361 +-#, gcc-internal-format +-msgid "both % and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7364 +-#, gcc-internal-format +-msgid "both % and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7367 +-#, gcc-internal-format +-msgid "both % and %<_Fract%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7370 +-#, gcc-internal-format +-msgid "both % and %<_Accum%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7373 +-#, gcc-internal-format +-msgid "both % and %<_Sat%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7381 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support saturating types" +-msgstr "ISO C no dóna suport a tipus enters complexos" +- +-#: c-decl.c:7383 c-decl.c:7452 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7386 c-decl.c:7474 +-#, gcc-internal-format +-msgid "both %<_Sat%> and %<_Bool%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7389 c-decl.c:7487 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7392 c-decl.c:7494 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7395 c-decl.c:7513 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7398 c-decl.c:7532 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7401 +-#, gcc-internal-format +-msgid "both %<_Sat%> and %<_Decimal32%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7404 +-#, gcc-internal-format +-msgid "both %<_Sat%> and %<_Decimal64%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7407 +-#, gcc-internal-format +-msgid "both %<_Sat%> and %<_Decimal128%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7410 +-#, gcc-internal-format +-msgid "both %<_Sat%> and % in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7549 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7552 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "s'especifica long i short al mateix temps per a \"%s\"" +- +-#: c-decl.c:7555 +-#, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7558 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7561 +-#, fuzzy, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "s'especifica signed i unsigned al mateix temps per a \"%s\"" +- +-#: c-decl.c:7564 c-decl.c:7590 +-#, gcc-internal-format +-msgid "both % and %<%s%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7567 +-#, gcc-internal-format +-msgid "both %<_Sat%> and %<%s%> in declaration specifiers" +-msgstr "" +- +-#: c-decl.c:7577 +-#, fuzzy, gcc-internal-format +-msgid "decimal floating point not supported for this target" +-msgstr "no es dóna suport a -fdata-sections en aquest objectiu" +- +-#: c-decl.c:7579 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support decimal floating point" +-msgstr "ISO C90 no dóna suport a \"long long\"" +- +-#: c-decl.c:7598 +-#, fuzzy, gcc-internal-format +-msgid "fixed-point types not supported for this target" +-msgstr "no es dóna suport a -fdata-sections en aquest objectiu" +- +-#: c-decl.c:7600 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support fixed-point types" +-msgstr "ISO C no dóna suport a tipus enters complexos" +- +-#: c-decl.c:7634 +-#, fuzzy, gcc-internal-format +-msgid "%qE fails to be a typedef or built in type" +-msgstr "\"%s\" falla al ser un typedef o un tipus intern del compilador" +- +-#: c-decl.c:7667 +-#, fuzzy, gcc-internal-format +-msgid "%qE is not at beginning of declaration" +-msgstr "\"%s\" no està en l'inici de la declaració" +- +-#: c-decl.c:7681 +-#, gcc-internal-format +-msgid "%<__thread%> used with %" +-msgstr "" +- +-#: c-decl.c:7683 +-#, gcc-internal-format +-msgid "%<__thread%> used with %" +-msgstr "" +- +-#: c-decl.c:7685 +-#, gcc-internal-format +-msgid "%<__thread%> used with %" +-msgstr "" +- +-#: c-decl.c:7696 +-#, fuzzy, gcc-internal-format +-msgid "%<__thread%> before %" +-msgstr "\"__thread\" abans \"extern\"" +- +-#: c-decl.c:7705 +-#, fuzzy, gcc-internal-format +-msgid "%<__thread%> before %" +-msgstr "\"__thread\" abans \"static\"" +- +-#: c-decl.c:7721 +-#, fuzzy, gcc-internal-format +-msgid "multiple storage classes in declaration specifiers" +-msgstr "múltiples classes d'emmagatzematge en la declaració de \"%s\"" +- +-#: c-decl.c:7728 +-#, gcc-internal-format +-msgid "%<__thread%> used with %qE" +-msgstr "" +- +-#: c-decl.c:7775 +-#, gcc-internal-format +-msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>" +-msgstr "" +- +-#: c-decl.c:7787 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support plain % meaning %" +-msgstr "ISO C no té suport per a \"complex\" simples que signifiquen \"double complex\"" +- +-#: c-decl.c:7832 c-decl.c:7858 +-#, gcc-internal-format +-msgid "ISO C does not support complex integer types" +-msgstr "ISO C no dóna suport a tipus enters complexos" +- +-#: c-decl.c:8008 toplev.c:847 +-#, fuzzy, gcc-internal-format +-msgid "%q+F used but never defined" +-msgstr "\"%s\" utilitzat però mai definit" +- +-#: c-format.c:98 c-format.c:207 +-#, gcc-internal-format +-msgid "format string has invalid operand number" +-msgstr "la cadena de format té un nombre d'operadors no vàlid" +- +-#: c-format.c:115 +-#, gcc-internal-format +-msgid "function does not return string type" +-msgstr "la funció no retorna un tipus string" +- +-#: c-format.c:144 +-#, fuzzy, gcc-internal-format +-msgid "format string argument not a string type" +-msgstr "l'argument de la cadena de format no és del tipus cadena de text" +- +-#: c-format.c:187 +-#, gcc-internal-format +-msgid "unrecognized format specifier" +-msgstr "no es reconeix l'especificador de format" +- +-#: c-format.c:199 +-#, fuzzy, gcc-internal-format +-msgid "%qE is an unrecognized format function type" +-msgstr "\"%s\" és un format de tipus de funció no reconegut" +- +-#: c-format.c:213 +-#, fuzzy, gcc-internal-format +-msgid "%<...%> has invalid operand number" +-msgstr "\"...\" té un nombre d'operadors no vàlid" +- +-#: c-format.c:220 +-#, fuzzy, gcc-internal-format +-msgid "format string argument follows the args to be formatted" +-msgstr "l'argument de la cadena de format segueix els arguments que rebran format" +- +-#: c-format.c:927 +-#, fuzzy, gcc-internal-format +-msgid "function might be possible candidate for %qs format attribute" +-msgstr "la funció pot ser un candidat possible per a l'atribut de format \"%s\"" +- +-#: c-format.c:1019 c-format.c:1040 c-format.c:2058 +-#, gcc-internal-format +-msgid "missing $ operand number in format" +-msgstr "falta l'operand numèric $ en el format" +- +-#: c-format.c:1049 +-#, gcc-internal-format +-msgid "%s does not support %%n$ operand number formats" +-msgstr "%s no té suport per a l'operand amb format de nombre %%n$" +- +-#: c-format.c:1056 +-#, gcc-internal-format +-msgid "operand number out of range in format" +-msgstr "operand numèric fora de límits en el format" +- +-#: c-format.c:1079 +-#, gcc-internal-format +-msgid "format argument %d used more than once in %s format" +-msgstr "s'usa més d'una vegada l'argument de format %d en el format %s" +- +-#: c-format.c:1111 +-#, fuzzy, gcc-internal-format +-msgid "$ operand number used after format without operand number" +-msgstr "el nombre de operades especificats per al format no pren arguments" +- +-#: c-format.c:1142 +-#, gcc-internal-format +-msgid "format argument %d unused before used argument %d in $-style format" +-msgstr "no s'usa l'argument de format %d abans d'usar l'argument %d en el format $-style" +- +-#: c-format.c:1237 +-#, gcc-internal-format +-msgid "format not a string literal, format string not checked" +-msgstr "el format no és una cadena literal, no es va revisar la cadena de format" +- +-#: c-format.c:1252 c-format.c:1255 +-#, gcc-internal-format +-msgid "format not a string literal and no format arguments" +-msgstr "el format no és una cadena literal i no té arguments de format" +- +-#: c-format.c:1258 +-#, gcc-internal-format +-msgid "format not a string literal, argument types not checked" +-msgstr "el format no és una cadena literal, no es van revisar els tipus d'argument" +- +-#: c-format.c:1271 +-#, gcc-internal-format +-msgid "too many arguments for format" +-msgstr "massa arguments per al format" +- +-#: c-format.c:1274 +-#, gcc-internal-format +-msgid "unused arguments in $-style format" +-msgstr "no es van usar arguments en el format d'estil-$" +- +-#: c-format.c:1277 +-#, gcc-internal-format +-msgid "zero-length %s format string" +-msgstr "cadena de format %s de longitud zero" +- +-#: c-format.c:1281 +-#, gcc-internal-format +-msgid "format is a wide character string" +-msgstr "el format és una cadena de caràcter ampla" +- +-#: c-format.c:1284 +-#, gcc-internal-format +-msgid "unterminated format string" +-msgstr "constant de format sense acabar" +- +-#: c-format.c:1492 +-#, fuzzy, gcc-internal-format +-msgid "embedded %<\\0%> in format" +-msgstr "\"\\0\" incrustat en el format" +- +-#: c-format.c:1507 +-#, fuzzy, gcc-internal-format +-msgid "spurious trailing %<%%%> in format" +-msgstr "\"%%\" final espuri en el format" +- +-#: c-format.c:1551 c-format.c:1821 +-#, gcc-internal-format +-msgid "repeated %s in format" +-msgstr "es va repetir %s en el format" +- +-#: c-format.c:1564 +-#, gcc-internal-format +-msgid "missing fill character at end of strfmon format" +-msgstr "falta el caràcter de farciment al final del format strfmon" +- +-#: c-format.c:1608 c-format.c:1710 c-format.c:2005 c-format.c:2070 +-#, gcc-internal-format +-msgid "too few arguments for format" +-msgstr "molt pocs arguments per al format" +- +-#: c-format.c:1649 +-#, gcc-internal-format +-msgid "zero width in %s format" +-msgstr "amplària zero en el format %s" +- +-#: c-format.c:1667 +-#, gcc-internal-format +-msgid "empty left precision in %s format" +-msgstr "precisió esquerra buida en el format %s" +- +-#: c-format.c:1740 +-#, gcc-internal-format +-msgid "empty precision in %s format" +-msgstr "precisió buida en el format %s" +- +-#: c-format.c:1805 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support the %qs %s length modifier" +-msgstr "%s no té suport per al modificador de longitud %s \"%s\"" +- +-#: c-format.c:1838 +-#, gcc-internal-format +-msgid "conversion lacks type at end of format" +-msgstr "la conversió manca de tipus al final del format" +- +-#: c-format.c:1849 +-#, fuzzy, gcc-internal-format +-msgid "unknown conversion type character %qc in format" +-msgstr "es desconeix el caràcter de tipus de conversió \"%c\" en el format" +- +-#: c-format.c:1852 +-#, gcc-internal-format +-msgid "unknown conversion type character 0x%x in format" +-msgstr "es desconeix el caràcter de tipus de conversió 0x%x en el format" +- +-#: c-format.c:1859 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support the %<%%%c%> %s format" +-msgstr "%s no té suport per al format \"%%%s%c\" %s" +- +-#: c-format.c:1875 +-#, fuzzy, gcc-internal-format +-msgid "%s used with %<%%%c%> %s format" +-msgstr "es va usar %s amb el format \"%%%c\" %s" +- +-#: c-format.c:1884 +-#, gcc-internal-format +-msgid "%s does not support %s" +-msgstr "%s no té suport per a %s" +- +-#: c-format.c:1894 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support %s with the %<%%%c%> %s format" +-msgstr "%s no té suport per a %s amb el format \"%%%c\" %s" +- +-#: c-format.c:1930 +-#, fuzzy, gcc-internal-format +-msgid "%s ignored with %s and %<%%%c%> %s format" +-msgstr "s'ignora %s amb %s i el format \"%%%c\" %s" +- +-#: c-format.c:1934 +-#, gcc-internal-format +-msgid "%s ignored with %s in %s format" +-msgstr "s'ignora %s amb %s en el format %s" +- +-#: c-format.c:1941 +-#, fuzzy, gcc-internal-format +-msgid "use of %s and %s together with %<%%%c%> %s format" +-msgstr "ús de %s i %s juntament amb el format \"%%%c\" %s" +- +-#: c-format.c:1945 +-#, gcc-internal-format +-msgid "use of %s and %s together in %s format" +-msgstr "ús de %s i %s junts en el format %s" +- +-#: c-format.c:1964 +-#, fuzzy, gcc-internal-format +-msgid "%<%%%c%> yields only last 2 digits of year in some locales" +-msgstr "\"%%%c\" només produeix els dos últims dígits de l'any en alguns llocs" +- +-#: c-format.c:1967 +-#, fuzzy, gcc-internal-format +-msgid "%<%%%c%> yields only last 2 digits of year" +-msgstr "\"%%%c\" només produeix els dos últims dígits de l'any" +- +-#. The end of the format string was reached. +-#: c-format.c:1984 +-#, fuzzy, gcc-internal-format +-msgid "no closing %<]%> for %<%%[%> format" +-msgstr "no hi ha un \"]\" que tancament per al format \"%%[\"" +- +-#: c-format.c:1998 +-#, fuzzy, gcc-internal-format +-msgid "use of %qs length modifier with %qc type character" +-msgstr "ús del modificador de longitud \"%s\" amb el caràcter de tipus \"%c\"" +- +-#: c-format.c:2020 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support the %<%%%s%c%> %s format" +-msgstr "%s no té suport per al format \"%%%s%c\" %s" +- +-#: c-format.c:2037 +-#, gcc-internal-format +-msgid "operand number specified with suppressed assignment" +-msgstr "nombre d'operadors especificat amb assignació suprimida" +- +-#: c-format.c:2040 +-#, gcc-internal-format +-msgid "operand number specified for format taking no argument" +-msgstr "el nombre de operades especificats per al format no pren arguments" +- +-#: c-format.c:2173 +-#, fuzzy, gcc-internal-format +-msgid "writing through null pointer (argument %d)" +-msgstr "escrivint a través d'un punter nul (argument %d)" +- +-#: c-format.c:2181 +-#, fuzzy, gcc-internal-format +-msgid "reading through null pointer (argument %d)" +-msgstr "llegint a través d'un punter nul (argument %d)" +- +-#: c-format.c:2201 +-#, fuzzy, gcc-internal-format +-msgid "writing into constant object (argument %d)" +-msgstr "escrivint en un objecte constant (argument %d)" +- +-#: c-format.c:2212 +-#, fuzzy, gcc-internal-format +-msgid "extra type qualifiers in format argument (argument %d)" +-msgstr "qualificadores de tipus extra en l'argument de format (argument %d)" +- +-#: c-format.c:2323 +-#, gcc-internal-format +-msgid "%s should have type %<%s%s%>, but argument %d has type %qT" +-msgstr "" +- +-#: c-format.c:2327 +-#, gcc-internal-format +-msgid "format %q.*s expects type %<%s%s%>, but argument %d has type %qT" +-msgstr "" +- +-#: c-format.c:2335 +-#, gcc-internal-format +-msgid "%s should have type %<%T%s%>, but argument %d has type %qT" +-msgstr "" +- +-#: c-format.c:2339 +-#, gcc-internal-format +-msgid "format %q.*s expects type %<%T%s%>, but argument %d has type %qT" +-msgstr "" +- +-#: c-format.c:2398 c-format.c:2404 c-format.c:2554 +-#, gcc-internal-format +-msgid "%<__gcc_host_wide_int__%> is not defined as a type" +-msgstr "" +- +-#: c-format.c:2411 c-format.c:2564 +-#, gcc-internal-format +-msgid "%<__gcc_host_wide_int__%> is not defined as % or %" +-msgstr "" +- +-#: c-format.c:2460 +-#, fuzzy, gcc-internal-format +-msgid "% is not defined as a type" +-msgstr "\"%s\" no és definit" +- +-#: c-format.c:2513 +-#, gcc-internal-format +-msgid "% is not defined as a type" +-msgstr "" +- +-#: c-format.c:2530 +-#, fuzzy, gcc-internal-format +-msgid "% is not defined as a type" +-msgstr "\"%s\" no és definit" +- +-#: c-format.c:2535 +-#, fuzzy, gcc-internal-format +-msgid "% is not defined as a pointer type" +-msgstr "new no pot ser aplicat a un tipus de referència" +- +-#: c-format.c:2758 +-#, fuzzy, gcc-internal-format +-msgid "args to be formatted is not %<...%>" +-msgstr "els arguments que rebran format no són \"...\"" +- +-#: c-format.c:2767 +-#, gcc-internal-format +-msgid "strftime formats cannot format arguments" +-msgstr "els formats de strftime no poden donar format als arguments" +- +-#: c-lex.c:245 +-#, gcc-internal-format +-msgid "badly nested C headers from preprocessor" +-msgstr "encapçalats C mal niats del preprocessador" +- +-#: c-lex.c:293 +-#, fuzzy, gcc-internal-format +-msgid "%Hignoring #pragma %s %s" +-msgstr "ignorant el #pragma %s %s" +- +-#. ... or not. +-#: c-lex.c:419 +-#, fuzzy, gcc-internal-format +-msgid "%Hstray %<@%> in program" +-msgstr "%H\"@\" paràsit en el programa" +- +-#: c-lex.c:436 +-#, fuzzy, gcc-internal-format +-msgid "stray %qs in program" +-msgstr "\"%c\" paràsit en el programa" +- +-#: c-lex.c:446 +-#, gcc-internal-format +-msgid "missing terminating %c character" +-msgstr "falta caràcter acabant %c" +- +-#: c-lex.c:448 +-#, fuzzy, gcc-internal-format +-msgid "stray %qc in program" +-msgstr "\"%c\" paràsit en el programa" +- +-#: c-lex.c:450 +-#, fuzzy, gcc-internal-format +-msgid "stray %<\\%o%> in program" +-msgstr "\"\\%o\" paràsit en el programa" +- +-#: c-lex.c:605 +-#, gcc-internal-format +-msgid "this decimal constant is unsigned only in ISO C90" +-msgstr "aquesta constant decimal només és unsigned en ISO C90" +- +-#: c-lex.c:609 +-#, gcc-internal-format +-msgid "this decimal constant would be unsigned in ISO C90" +-msgstr "aquesta constant decimal serà unsigned en ISO C90 " +- +-#: c-lex.c:625 +-#, fuzzy, gcc-internal-format +-msgid "integer constant is too large for %qs type" +-msgstr "la constant entera és massa gran pel tipus \"%s\"" +- +-#: c-lex.c:674 +-#, fuzzy, gcc-internal-format +-msgid "unsupported non-standard suffix on floating constant" +-msgstr "sufix \"%.*s\" no vàlid en la constant de coma flotant" +- +-#: c-lex.c:680 +-#, fuzzy, gcc-internal-format +-msgid "non-standard suffix on floating constant" +-msgstr "sufix \"%.*s\" no vàlid en la constant de coma flotant" +- +-#: c-lex.c:722 c-lex.c:724 +-#, fuzzy, gcc-internal-format +-msgid "floating constant exceeds range of %qT" +-msgstr "la constant de coma flotant excedeix els límits de \"%s\"" +- +-#: c-lex.c:732 +-#, fuzzy, gcc-internal-format +-msgid "floating constant truncated to zero" +-msgstr "constant de coma flotant mal usada" +- +-#: c-lex.c:941 +-#, gcc-internal-format +-msgid "traditional C rejects string constant concatenation" +-msgstr "C tradicional rebutja la concatenació de cadenes constantes" +- +-#: c-omp.c:106 +-#, fuzzy, gcc-internal-format +-msgid "invalid expression type for %<#pragma omp atomic%>" +-msgstr "expressió no vàlida com a operand" +- +-#: c-omp.c:218 +-#, fuzzy, gcc-internal-format +-msgid "%Hinvalid type for iteration variable %qE" +-msgstr "tipus de vector no vàlid per a l'atribut \"%s\"" +- +-#: c-omp.c:222 +-#, fuzzy, gcc-internal-format +-msgid "%Hiteration variable %qE is unsigned" +-msgstr "la variable estàtica \"%s\" està marcada com dllimport" +- +-#: c-omp.c:233 +-#, fuzzy, gcc-internal-format +-msgid "%H%qE is not initialized" +-msgstr "falta valor inicial" +- +-#: c-omp.c:246 cp/semantics.c:3840 +-#, fuzzy, gcc-internal-format +-msgid "%Hmissing controlling predicate" +-msgstr "falta \"(\" abans del predicat" +- +-#: c-omp.c:304 +-#, fuzzy, gcc-internal-format +-msgid "%Hinvalid controlling predicate" +-msgstr "restriccions no vàlides per a l'operand" +- +-#: c-omp.c:311 cp/semantics.c:3846 +-#, fuzzy, gcc-internal-format +-msgid "%Hmissing increment expression" +-msgstr "\")\" faltant en l'expressió" +- +-#: c-omp.c:361 +-#, fuzzy, gcc-internal-format +-msgid "%Hinvalid increment expression" +-msgstr "expressió de valor veritable no vàlida" +- +-#: c-opts.c:153 +-#, fuzzy, gcc-internal-format +-msgid "no class name specified with %qs" +-msgstr "no nom de «class» especificat amb \"%s\"" +- +-#: c-opts.c:157 +-#, fuzzy, gcc-internal-format +-msgid "assertion missing after %qs" +-msgstr "asserció faltant deprés de \"%s\"" +- +-#: c-opts.c:162 +-#, fuzzy, gcc-internal-format +-msgid "macro name missing after %qs" +-msgstr "nom de macro faltant deprés de \"%s\"" +- +-#: c-opts.c:171 +-#, fuzzy, gcc-internal-format +-msgid "missing path after %qs" +-msgstr "falta el camí després de \"%s\"" +- +-#: c-opts.c:180 +-#, fuzzy, gcc-internal-format +-msgid "missing filename after %qs" +-msgstr "nom de fitxer faltant deprés de \"%s\"" +- +-#: c-opts.c:185 +-#, fuzzy, gcc-internal-format +-msgid "missing makefile target after %qs" +-msgstr "falta l'objectiu del «makefile» després de \"%s\"" +- +-#: c-opts.c:337 +-#, gcc-internal-format +-msgid "-I- specified twice" +-msgstr "-I- especificat dues vegades" +- +-#: c-opts.c:340 +-#, gcc-internal-format +-msgid "obsolete option -I- used, please use -iquote instead" +-msgstr "" +- +-#: c-opts.c:508 +-#, fuzzy, gcc-internal-format +-msgid "argument %qs to %<-Wnormalized%> not recognized" +-msgstr "no es reconeix el llenguatge %s" +- +-#: c-opts.c:595 +-#, fuzzy, gcc-internal-format +-msgid "switch %qs is no longer supported" +-msgstr "el «switch» \"%s\" ja no té suport" +- +-#: c-opts.c:705 +-#, gcc-internal-format +-msgid "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)" +-msgstr "es va re-nomenar \"-fhandle-exceptions\" a \"-fexceptions\" (i ara està activat per defecte)" +- +-#: c-opts.c:911 +-#, gcc-internal-format +-msgid "output filename specified twice" +-msgstr "nom de fitxer de sortida especificat dues vegades" +- +-#: c-opts.c:1051 +-#, fuzzy, gcc-internal-format +-msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode" +-msgstr "-g només té suport quan s'usa GAS en aquest processador," +- +-#: c-opts.c:1126 +-#, gcc-internal-format +-msgid "-Wformat-y2k ignored without -Wformat" +-msgstr "s'ignora -Wformat-y2k sense -Wformat" +- +-#: c-opts.c:1128 +-#, gcc-internal-format +-msgid "-Wformat-extra-args ignored without -Wformat" +-msgstr "s'ignora -Wformat-extra-args sense -Wformat" +- +-#: c-opts.c:1130 +-#, gcc-internal-format +-msgid "-Wformat-zero-length ignored without -Wformat" +-msgstr "s'ignora -Wformat-zero-length sense -Wformat" +- +-#: c-opts.c:1132 +-#, gcc-internal-format +-msgid "-Wformat-nonliteral ignored without -Wformat" +-msgstr "s'ignora -Wformat-nonliteral sense -Wformat" +- +-#: c-opts.c:1134 +-#, fuzzy, gcc-internal-format +-msgid "-Wformat-contains-nul ignored without -Wformat" +-msgstr "s'ignora -Wformat-nonliteral sense -Wformat" +- +-#: c-opts.c:1136 +-#, gcc-internal-format +-msgid "-Wformat-security ignored without -Wformat" +-msgstr "s'ignora -Wformat-security sense -Wformat" +- +-#: c-opts.c:1160 +-#, gcc-internal-format +-msgid "opening output file %s: %m" +-msgstr "obrint el fitxer de sortida %s: %m" +- +-#: c-opts.c:1165 +-#, gcc-internal-format +-msgid "too many filenames given. Type %s --help for usage" +-msgstr "massa noms de fitxers. Teclegi %s --help per a informació d'ùs" +- +-#: c-opts.c:1249 +-#, fuzzy, gcc-internal-format +-msgid "The C parser does not support -dy, option ignored" +-msgstr "no se suporta el codi APCS que es torna a introduir.Ignorat" +- +-#: c-opts.c:1253 +-#, gcc-internal-format +-msgid "The Objective-C parser does not support -dy, option ignored" +-msgstr "" +- +-#: c-opts.c:1256 +-#, fuzzy, gcc-internal-format +-msgid "The C++ parser does not support -dy, option ignored" +-msgstr "no se suporta el codi APCS que es torna a introduir.Ignorat" +- +-#: c-opts.c:1260 +-#, gcc-internal-format +-msgid "The Objective-C++ parser does not support -dy, option ignored" +-msgstr "" +- +-#: c-opts.c:1309 +-#, gcc-internal-format +-msgid "opening dependency file %s: %m" +-msgstr "obrint el fitxer de dependències %s: %m" +- +-#: c-opts.c:1319 +-#, gcc-internal-format +-msgid "closing dependency file %s: %m" +-msgstr "tancant el fitxer de dependències %s: %m" +- +-#: c-opts.c:1322 +-#, gcc-internal-format +-msgid "when writing output to %s: %m" +-msgstr "escrivint la sortida a %s: %m" +- +-#: c-opts.c:1402 +-#, gcc-internal-format +-msgid "to generate dependencies you must specify either -M or -MM" +-msgstr "per a generar dependències s'ha d'especificar -M o -MM" +- +-#: c-opts.c:1448 +-#, gcc-internal-format +-msgid "-fdirectives-only is incompatible with -Wunused_macros" +-msgstr "" +- +-#: c-opts.c:1450 +-#, gcc-internal-format +-msgid "-fdirectives-only is incompatible with -traditional" +-msgstr "" +- +-#: c-opts.c:1588 +-#, gcc-internal-format +-msgid "too late for # directive to set debug directory" +-msgstr "" +- +-#: c-parser.c:1070 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids an empty source file" +-msgstr "ISO C prohibeix un fitxer font buit" +- +-#: c-parser.c:1156 c-parser.c:6091 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C does not allow extra %<;%> outside of a function" +-msgstr "ISO C no permet \";\" extra fora d'una funció" +- +-#: c-parser.c:1259 c-parser.c:6640 +-#, fuzzy, gcc-internal-format +-msgid "expected declaration specifiers" +-msgstr "declaració repetida de la unitat \"%s\"" +- +-#: c-parser.c:1271 +-#, fuzzy, gcc-internal-format +-msgid "%Hempty declaration" +-msgstr "declaració buida" +- +-#: c-parser.c:1307 +-#, fuzzy, gcc-internal-format +-msgid "%Hdata definition has no type or storage class" +-msgstr "la definició de dades no té tipus o classe d'emmagatzematge" +- +-#: c-parser.c:1362 +-#, gcc-internal-format +-msgid "expected %<,%> or %<;%>" +-msgstr "" +- +-#. This can appear in many cases looking nothing like a +-#. function definition, so we don't give a more specific +-#. error suggesting there was one. +-#: c-parser.c:1369 c-parser.c:1386 +-#, gcc-internal-format +-msgid "expected %<=%>, %<,%>, %<;%>, % or %<__attribute__%>" +-msgstr "" +- +-#: c-parser.c:1378 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids nested functions" +-msgstr "ISO C prohibeix les funcions niades" +- +-#: c-parser.c:1743 c-parser.c:2553 c-parser.c:3189 c-parser.c:3445 +-#: c-parser.c:4308 c-parser.c:4895 c-parser.c:5298 c-parser.c:5318 +-#: c-parser.c:5434 c-parser.c:5582 c-parser.c:5599 c-parser.c:5731 +-#: c-parser.c:5743 c-parser.c:5768 c-parser.c:5903 c-parser.c:5932 +-#: c-parser.c:5940 c-parser.c:5968 c-parser.c:5982 c-parser.c:6201 +-#: c-parser.c:6300 c-parser.c:6803 c-parser.c:7426 +-#, fuzzy, gcc-internal-format +-msgid "expected identifier" +-msgstr "operand inesperat" +- +-#: c-parser.c:1773 +-#, fuzzy, gcc-internal-format +-msgid "%Hcomma at end of enumerator list" +-msgstr "coma al final de la llista de numeradors" +- +-#: c-parser.c:1779 +-#, gcc-internal-format +-msgid "expected %<,%> or %<}%>" +-msgstr "" +- +-#: c-parser.c:1793 c-parser.c:1977 c-parser.c:6058 +-#, gcc-internal-format +-msgid "expected %<{%>" +-msgstr "" +- +-#: c-parser.c:1804 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids forward references to % types" +-msgstr "ISO C prohibeix les declaracions posteriors per a tipus \"enum\"" +- +-#: c-parser.c:1911 +-#, fuzzy, gcc-internal-format +-msgid "expected class name" +-msgstr "operand inesperat" +- +-#: c-parser.c:1930 c-parser.c:5835 +-#, fuzzy, gcc-internal-format +-msgid "%Hextra semicolon in struct or union specified" +-msgstr "es va especificar un punt i coma extra en un struct o union" +- +-#: c-parser.c:1959 +-#, fuzzy, gcc-internal-format +-msgid "%Hno semicolon at end of struct or union" +-msgstr "no hi ha punt i coma al final del struct o union" +- +-#: c-parser.c:1963 +-#, gcc-internal-format +-msgid "expected %<;%>" +-msgstr "" +- +-#: c-parser.c:2042 c-parser.c:3014 +-#, gcc-internal-format +-msgid "expected specifier-qualifier-list" +-msgstr "" +- +-#: c-parser.c:2052 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids member declarations with no members" +-msgstr "ISO C prohibeix declaracions de membres sense membres" +- +-#: c-parser.c:2126 +-#, gcc-internal-format +-msgid "expected %<,%>, %<;%> or %<}%>" +-msgstr "" +- +-#: c-parser.c:2133 +-#, gcc-internal-format +-msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>" +-msgstr "" +- +-#: c-parser.c:2184 +-#, fuzzy, gcc-internal-format +-msgid "%H% applied to a bit-field" +-msgstr "\"typeof\" aplicat a un camp de bits" +- +-#: c-parser.c:2421 +-#, gcc-internal-format +-msgid "expected identifier or %<(%>" +-msgstr "" +- +-#: c-parser.c:2622 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C requires a named argument before %<...%>" +-msgstr "ISO C requereix un argument amb nom abans de \"...\"" +- +-#: c-parser.c:2729 +-#, fuzzy, gcc-internal-format +-msgid "expected declaration specifiers or %<...%>" +-msgstr "la declaració del nivell superior de \"%s\" especifica \"auto\"" +- +-#: c-parser.c:2779 +-#, gcc-internal-format +-msgid "%Hwide string literal in %" +-msgstr "" +- +-#: c-parser.c:2786 c-parser.c:6695 cp/parser.c:20393 +-#, fuzzy, gcc-internal-format +-msgid "expected string literal" +-msgstr "_Pragma duu una cadena literal entre parèntesis" +- +-#: c-parser.c:3107 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids empty initializer braces" +-msgstr "ISO C prohibeix les claus de iniciador buides" +- +-#. Use the colon as the error location. +-#: c-parser.c:3154 +-#, fuzzy, gcc-internal-format +-msgid "%Hobsolete use of designated initializer with %<:%>" +-msgstr "ús obsolet de l'iniciador designat amb \":\"" +- +-#: c-parser.c:3285 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids specifying range of elements to initialize" +-msgstr "ISO C prohibeix l'especificació de límits d'elements a iniciar" +- +-#: c-parser.c:3298 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C90 forbids specifying subobject to initialize" +-msgstr "ISO C90 prohibeix l'especificació de «subobject» a iniciar" +- +-#: c-parser.c:3307 +-#, fuzzy, gcc-internal-format +-msgid "%Hobsolete use of designated initializer without %<=%>" +-msgstr "ús obsolet de l'iniciador designat sense \"=\"" +- +-#: c-parser.c:3316 +-#, gcc-internal-format +-msgid "expected %<=%>" +-msgstr "" +- +-#: c-parser.c:3461 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids label declarations" +-msgstr "ISO C prohibeix les declaracions etiquetades" +- +-#: c-parser.c:3466 c-parser.c:3541 +-#, fuzzy, gcc-internal-format +-msgid "expected declaration or statement" +-msgstr "declaració repetida de l'autòmat \"%s\"" +- +-#: c-parser.c:3494 c-parser.c:3522 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C90 forbids mixed declarations and code" +-msgstr "ISO C90 prohibeix les declaracions barrejades amb codi" +- +-#: c-parser.c:3555 +-#, fuzzy, gcc-internal-format +-msgid "%Hlabel at end of compound statement" +-msgstr "etiqueta al final de la declaració composta" +- +-#: c-parser.c:3598 +-#, gcc-internal-format +-msgid "expected %<:%> or %<...%>" +-msgstr "" +- +-#: c-parser.c:3779 +-#, gcc-internal-format +-msgid "expected identifier or %<*%>" +-msgstr "" +- +-#. Avoid infinite loop in error recovery: +-#. c_parser_skip_until_found stops at a closing nesting +-#. delimiter without consuming it, but here we need to consume +-#. it to proceed further. +-#: c-parser.c:3841 +-#, fuzzy, gcc-internal-format +-msgid "expected statement" +-msgstr "operand inesperat" +- +-#: c-parser.c:3851 +-#, gcc-internal-format +-msgid "%Ha label can only be part of a statement and a declaration is not a statement" +-msgstr "" +- +-#: c-parser.c:4036 +-#, fuzzy, gcc-internal-format +-msgid "%Hsuggest braces around empty body in % statement" +-msgstr "%Hcos buit en una declaració «if»" +- +-#: c-parser.c:4192 +-#, fuzzy, gcc-internal-format +-msgid "%H%E qualifier ignored on asm" +-msgstr "qualificador %s ignorat en asm" +- +-#: c-parser.c:4473 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids omitting the middle term of a ?: expression" +-msgstr "ISO C prohibeix l'omissió del terme mig d'una expressió ?:" +- +-#: c-parser.c:4863 +-#, fuzzy, gcc-internal-format +-msgid "%Htraditional C rejects the unary plus operator" +-msgstr "C tradicional rebutja l'operador unari mes" +- +-#. C99 6.7.5.2p4 +-#: c-parser.c:4974 +-#, fuzzy, gcc-internal-format +-msgid "%H%<[*]%> not allowed in other than a declaration" +-msgstr "no es permet l'espai de noms \"%D\" en la declaració d'ús" +- +-#: c-parser.c:4988 +-#, fuzzy, gcc-internal-format +-msgid "%H% applied to a bit-field" +-msgstr "sizeof aplicat a un camp de bits" +- +-#: c-parser.c:5132 c-parser.c:5476 c-parser.c:5498 +-#, fuzzy, gcc-internal-format +-msgid "expected expression" +-msgstr "expressió d'adreça inesperada" +- +-#: c-parser.c:5159 +-#, fuzzy, gcc-internal-format +-msgid "%Hbraced-group within expression allowed only inside a function" +-msgstr "un grup de claus dintre d'una expressió només es permet dintre d'una funció" +- +-#: c-parser.c:5173 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C forbids braced-groups within expressions" +-msgstr "ISO C prohibeix «braced-groups» dintre d'expressions" +- +-#: c-parser.c:5358 +-#, fuzzy, gcc-internal-format +-msgid "%Hfirst argument to %<__builtin_choose_expr%> not a constant" +-msgstr "el primer argument per a __builtin_choose_expr no és una constant" +- +-#: c-parser.c:5527 +-#, gcc-internal-format +-msgid "%Hcompound literal has variable size" +-msgstr "" +- +-#: c-parser.c:5535 +-#, fuzzy, gcc-internal-format +-msgid "%HISO C90 forbids compound literals" +-msgstr "ISO C90 prohibeix els «compound literals»" +- +-#: c-parser.c:6053 +-#, fuzzy, gcc-internal-format +-msgid "%Hextra semicolon in method definition specified" +-msgstr "es va especificar un punt i coma extra en un struct o union" +- +-#: c-parser.c:6600 cp/parser.c:20436 +-#, gcc-internal-format +-msgid "%<#pragma omp barrier%> may only be used in compound statements" +-msgstr "" +- +-#: c-parser.c:6611 cp/parser.c:20451 +-#, gcc-internal-format +-msgid "%<#pragma omp flush%> may only be used in compound statements" +-msgstr "" +- +-#: c-parser.c:6623 +-#, gcc-internal-format +-msgid "%H%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct" +-msgstr "" +- +-#: c-parser.c:6630 cp/parser.c:20426 +-#, gcc-internal-format +-msgid "%<#pragma GCC pch_preprocess%> must be first" +-msgstr "" +- +-#: c-parser.c:6781 cp/parser.c:19277 +-#, fuzzy, gcc-internal-format +-msgid "too many %qs clauses" +-msgstr "massa fitxers d'entrada" +- +-#: c-parser.c:6906 +-#, gcc-internal-format +-msgid "expected % or %" +-msgstr "" +- +-#: c-parser.c:6949 +-#, gcc-internal-format +-msgid "expected %<(%>" +-msgstr "" +- +-#: c-parser.c:6993 c-parser.c:7170 +-#, fuzzy, gcc-internal-format +-msgid "expected integer expression" +-msgstr "expressió d'adreça inesperada" +- +-#: c-parser.c:7002 +-#, gcc-internal-format +-msgid "%H% value must be positive" +-msgstr "" +- +-#: c-parser.c:7082 +-#, gcc-internal-format +-msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>" +-msgstr "" +- +-#: c-parser.c:7165 +-#, gcc-internal-format +-msgid "%Hschedule % does not take a % parameter" +-msgstr "" +- +-#: c-parser.c:7183 +-#, fuzzy, gcc-internal-format +-msgid "invalid schedule kind" +-msgstr "rotació de insn no vàlida" +- +-#: c-parser.c:7269 +-#, gcc-internal-format +-msgid "expected %<#pragma omp%> clause" +-msgstr "" +- +-#: c-parser.c:7278 +-#, fuzzy, gcc-internal-format +-msgid "%H%qs is not valid for %qs" +-msgstr "%s: no per a %s" +- +-#: c-parser.c:7378 +-#, fuzzy, gcc-internal-format +-msgid "invalid operator for %<#pragma omp atomic%>" +-msgstr "operand no vàlid per al modificador \"p\"" +- +-#: c-parser.c:7429 c-parser.c:7449 +-#, gcc-internal-format +-msgid "expected %<(%> or end of line" +-msgstr "" +- +-#: c-parser.c:7467 +-#, fuzzy, gcc-internal-format +-msgid "for statement expected" +-msgstr "%s és més curt de l'esperat" +- +-#: c-parser.c:7540 cp/semantics.c:3826 cp/semantics.c:3870 +-#, fuzzy, gcc-internal-format +-msgid "expected iteration declaration or initialization" +-msgstr "declaració repetida de l'autòmat \"%s\"" +- +-#: c-parser.c:7666 +-#, gcc-internal-format +-msgid "%Hexpected %<#pragma omp section%> or %<}%>" +-msgstr "" +- +-#: c-parser.c:7899 cp/semantics.c:3718 +-#, gcc-internal-format +-msgid "%qE declared % after first use" +-msgstr "" +- +-#: c-parser.c:7901 cp/semantics.c:3720 +-#, gcc-internal-format +-msgid "automatic variable %qE cannot be %" +-msgstr "" +- +-#: c-parser.c:7903 cp/semantics.c:3722 +-#, fuzzy, gcc-internal-format +-msgid "% %qE has incomplete type" +-msgstr "%Jel paràmetre \"%D\" té un tipus incomplet" +- +-#: c-pch.c:132 +-#, fuzzy, gcc-internal-format +-msgid "can%'t create precompiled header %s: %m" +-msgstr "no es pot obtenir el directori actual" +- +-#: c-pch.c:153 +-#, fuzzy, gcc-internal-format +-msgid "can%'t write to %s: %m" +-msgstr "no es pot escriure a %s: %m" +- +-#: c-pch.c:159 +-#, fuzzy, gcc-internal-format +-msgid "%qs is not a valid output file" +-msgstr "\"%s\" no és un nom de fitxer de sortida vàlid" +- +-#: c-pch.c:188 c-pch.c:203 c-pch.c:217 +-#, fuzzy, gcc-internal-format +-msgid "can%'t write %s: %m" +-msgstr "no es pot escriure %s: %m" +- +-#: c-pch.c:193 c-pch.c:210 +-#, fuzzy, gcc-internal-format +-msgid "can%'t seek in %s: %m" +-msgstr "no es pot cercar dintre %s: %m" +- +-#: c-pch.c:201 c-pch.c:243 c-pch.c:283 c-pch.c:334 +-#, fuzzy, gcc-internal-format +-msgid "can%'t read %s: %m" +-msgstr "no es pot llegir %s: %m" +- +-#: c-pch.c:466 +-#, gcc-internal-format +-msgid "pch_preprocess pragma should only be used with -fpreprocessed" +-msgstr "" +- +-#: c-pch.c:467 +-#, fuzzy, gcc-internal-format +-msgid "use #include instead" +-msgstr "#include niat amb massa profunditat" +- +-#: c-pch.c:473 +-#, fuzzy, gcc-internal-format +-msgid "%s: couldn%'t open PCH file: %m" +-msgstr "no es pot llegir el fitxer PCH: %m" +- +-#: c-pch.c:478 +-#, gcc-internal-format +-msgid "use -Winvalid-pch for more information" +-msgstr "" +- +-#: c-pch.c:479 +-#, gcc-internal-format +-msgid "%s: PCH file was invalid" +-msgstr "" +- +-#: c-pragma.c:102 +-#, fuzzy, gcc-internal-format +-msgid "#pragma pack (pop) encountered without matching #pragma pack (push)" +-msgstr "es va trobar un #pragma pack (pop) sense un #pragma pack (push, ) coincident" +- +-#: c-pragma.c:115 +-#, fuzzy, gcc-internal-format +-msgid "#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s)" +-msgstr "es va trobar un #pragma pack (pop, %s) sense un #pragma pack (push, %s, ) coincident" +- +-#: c-pragma.c:129 +-#, gcc-internal-format +-msgid "#pragma pack(push[, id], ) is not supported on this target" +-msgstr "no es dóna suport a #pragma pack(push[, id], ) en aquest objectiu" +- +-#: c-pragma.c:131 +-#, gcc-internal-format +-msgid "#pragma pack(pop[, id], ) is not supported on this target" +-msgstr "no es dóna suport a #pragma pack(pop[, id], ) en aquest objectiu" +- +-#: c-pragma.c:152 +-#, fuzzy, gcc-internal-format +-msgid "missing %<(%> after %<#pragma pack%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:163 c-pragma.c:195 +-#, fuzzy, gcc-internal-format +-msgid "invalid constant in %<#pragma pack%> - ignored" +-msgstr "acció \"%s\" desconeguda per a \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:167 c-pragma.c:209 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma pack%> - ignored" +-msgstr "\"#pragma pack\" malformat - ignorat" +- +-#: c-pragma.c:172 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma pack(push[, id][, ])%> - ignored" +-msgstr "\"#pragma pack(push[, id], )\" malformat - ignorat" +- +-#: c-pragma.c:174 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma pack(pop[, id])%> - ignored" +-msgstr "\"#pragma pack(pop[, id])\" malformat - ignorat" +- +-#: c-pragma.c:183 +-#, fuzzy, gcc-internal-format +-msgid "unknown action %qs for %<#pragma pack%> - ignored" +-msgstr "acció \"%s\" desconeguda per a \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:212 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma pack%>" +-msgstr "escombraries al final de \"#pragma pack\"" +- +-#: c-pragma.c:215 +-#, gcc-internal-format +-msgid "#pragma pack has no effect with -fpack-struct - ignored" +-msgstr "" +- +-#: c-pragma.c:235 +-#, gcc-internal-format +-msgid "alignment must be a small power of two, not %d" +-msgstr "l'alineació ha de ser una potència petita de dos, no %d" +- +-#: c-pragma.c:290 +-#, fuzzy, gcc-internal-format +-msgid "missing %<(%> after %<#pragma push_macro%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:298 +-#, fuzzy, gcc-internal-format +-msgid "invalid constant in %<#pragma push_macro%> - ignored" +-msgstr "nom de secció faltant en \"#pragma %s\" - ignorat" +- +-#: c-pragma.c:301 +-#, fuzzy, gcc-internal-format +-msgid "missing %<)%> after %<#pragma push_macro%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:304 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma push_macro%>" +-msgstr "escombraries al final de #pragma map" +- +-#: c-pragma.c:347 +-#, fuzzy, gcc-internal-format +-msgid "missing %<(%> after %<#pragma pop_macro%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:355 +-#, fuzzy, gcc-internal-format +-msgid "invalid constant in %<#pragma pop_macro%> - ignored" +-msgstr "nom de secció faltant en \"#pragma %s\" - ignorat" +- +-#: c-pragma.c:358 +-#, fuzzy, gcc-internal-format +-msgid "missing %<)%> after %<#pragma pop_macro%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma pack\" - ignorat" +- +-#: c-pragma.c:361 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma pop_macro%>" +-msgstr "escombraries al final de #pragma map" +- +-#: c-pragma.c:406 +-#, fuzzy, gcc-internal-format +-msgid "applying #pragma weak %q+D after first use results in unspecified behavior" +-msgstr "%Jl'aplicació del #pragma weak \"%s\" després del primer ús resulta en conducta no especificada" +- +-#: c-pragma.c:480 c-pragma.c:485 +-#, gcc-internal-format +-msgid "malformed #pragma weak, ignored" +-msgstr "#pragma weak malformat, ignorat" +- +-#: c-pragma.c:489 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma weak%>" +-msgstr "escombraries al final de \"#pragma weak\"" +- +-#: c-pragma.c:557 c-pragma.c:559 +-#, gcc-internal-format +-msgid "malformed #pragma redefine_extname, ignored" +-msgstr "#pragma redefine_extname malformat, ignorat" +- +-#: c-pragma.c:562 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma redefine_extname%>" +-msgstr "escombraries al final de #pragma redefine_extname" +- +-#: c-pragma.c:568 +-#, fuzzy, gcc-internal-format +-msgid "#pragma redefine_extname not supported on this target" +-msgstr "no es dóna suport a _builtin_eh_return en aquest objectiu" +- +-#: c-pragma.c:585 c-pragma.c:672 +-#, fuzzy, gcc-internal-format +-msgid "#pragma redefine_extname ignored due to conflict with previous rename" +-msgstr "#pragma redefine_extname té conflictes amb la declaració" +- +-#: c-pragma.c:608 +-#, fuzzy, gcc-internal-format +-msgid "#pragma redefine_extname ignored due to conflict with previous #pragma redefine_extname" +-msgstr "#pragma redefine_extname té conflictes amb la declaració" +- +-#: c-pragma.c:627 +-#, gcc-internal-format +-msgid "malformed #pragma extern_prefix, ignored" +-msgstr "#pragma extern_prefix malformat, ignorat" +- +-#: c-pragma.c:630 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma extern_prefix%>" +-msgstr "escombraries al final de #pragma extern_prefix" +- +-#: c-pragma.c:637 +-#, fuzzy, gcc-internal-format +-msgid "#pragma extern_prefix not supported on this target" +-msgstr "No es dóna suport a anàlisi de perfil en aquest objectiu." +- +-#: c-pragma.c:663 +-#, fuzzy, gcc-internal-format +-msgid "asm declaration ignored due to conflict with previous rename" +-msgstr "la declaració asm causa conflictes amb el rename previ" +- +-#: c-pragma.c:694 +-#, fuzzy, gcc-internal-format +-msgid "#pragma redefine_extname ignored due to conflict with __asm__ declaration" +-msgstr "#pragma redefine_extname té conflictes amb la declaració" +- +-#: c-pragma.c:756 +-#, gcc-internal-format +-msgid "#pragma GCC visibility push() must specify default, internal, hidden or protected" +-msgstr "" +- +-#: c-pragma.c:791 +-#, gcc-internal-format +-msgid "#pragma GCC visibility must be followed by push or pop" +-msgstr "" +- +-#: c-pragma.c:797 +-#, gcc-internal-format +-msgid "no matching push for %<#pragma GCC visibility pop%>" +-msgstr "" +- +-#: c-pragma.c:804 c-pragma.c:811 +-#, fuzzy, gcc-internal-format +-msgid "missing %<(%> after %<#pragma GCC visibility push%> - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma %s\" - ignorat" +- +-#: c-pragma.c:807 +-#, fuzzy, gcc-internal-format +-msgid "malformed #pragma GCC visibility push" +-msgstr "secció #pragma builtin malformada" +- +-#: c-pragma.c:815 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma GCC visibility%>" +-msgstr "escombraries al final de #pragma %s" +- +-#: c-pragma.c:831 +-#, fuzzy, gcc-internal-format +-msgid "#pragma GCC diagnostic not allowed inside functions" +-msgstr "ISO C no permet \";\" extra fora d'una funció" +- +-#: c-pragma.c:837 +-#, gcc-internal-format +-msgid "missing [error|warning|ignored] after %<#pragma GCC diagnostic%>" +-msgstr "" +- +-#: c-pragma.c:846 +-#, gcc-internal-format +-msgid "expected [error|warning|ignored] after %<#pragma GCC diagnostic%>" +-msgstr "" +- +-#: c-pragma.c:850 +-#, fuzzy, gcc-internal-format +-msgid "missing option after %<#pragma GCC diagnostic%> kind" +-msgstr "\"(\" faltant desprès de \"#pragma %s\" - ignorat" +- +-#: c-pragma.c:864 +-#, fuzzy, gcc-internal-format +-msgid "unknown option after %<#pragma GCC diagnostic%> kind" +-msgstr "acció \"%s\" desconeguda per a \"#pragma pack\" - ignorat" +- +-#: c-typeck.c:174 +-#, fuzzy, gcc-internal-format +-msgid "%qD has an incomplete type" +-msgstr "\"%s\" té un tipus incompleta" +- +-#: c-typeck.c:195 cp/call.c:2785 +-#, gcc-internal-format +-msgid "invalid use of void expression" +-msgstr "ús no vàlid de l'expressió void" +- +-#: c-typeck.c:203 +-#, gcc-internal-format +-msgid "invalid use of flexible array member" +-msgstr "ús no vàlid de membres de matriu flexible" +- +-#: c-typeck.c:209 +-#, gcc-internal-format +-msgid "invalid use of array with unspecified bounds" +-msgstr "ús no vàlid de matrius amb límits sense especificar" +- +-#: c-typeck.c:217 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of undefined type %<%s %E%>" +-msgstr "ús no vàlid del tipus indefinit \"%s %s\"" +- +-#. If this type has a typedef-name, the TYPE_NAME is a TYPE_DECL. +-#: c-typeck.c:221 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of incomplete typedef %qD" +-msgstr "ús no vàlid del typedef incomplet \"%s\"" +- +-#: c-typeck.c:474 c-typeck.c:499 +-#, gcc-internal-format +-msgid "function types not truly compatible in ISO C" +-msgstr "els tipus de funció no són totalment compatibles en ISO C" +- +-#: c-typeck.c:621 +-#, gcc-internal-format +-msgid "can%'t mix operands of decimal float and vector types" +-msgstr "" +- +-#: c-typeck.c:626 +-#, gcc-internal-format +-msgid "can%'t mix operands of decimal float and complex types" +-msgstr "" +- +-#: c-typeck.c:631 +-#, gcc-internal-format +-msgid "can%'t mix operands of decimal float and other float types" +-msgstr "" +- +-#: c-typeck.c:1037 +-#, gcc-internal-format +-msgid "types are not quite compatible" +-msgstr "els tipus no són totalment compatibles" +- +-#: c-typeck.c:1356 +-#, fuzzy, gcc-internal-format +-msgid "function return types not compatible due to %" +-msgstr "el tipus de retorn d'una funció no pot ser una funció" +- +-#: c-typeck.c:1515 c-typeck.c:2853 +-#, gcc-internal-format +-msgid "arithmetic on pointer to an incomplete type" +-msgstr "aritmètica en punter a un tipus incomplet" +- +-#: c-typeck.c:1912 +-#, fuzzy, gcc-internal-format +-msgid "%qT has no member named %qE" +-msgstr "\"%D\" no té un membre cridat \"%E\"" +- +-#: c-typeck.c:1953 +-#, fuzzy, gcc-internal-format +-msgid "request for member %qE in something not a structure or union" +-msgstr "petició del membre \"%s\" en alguna cosa que no és estructura o unió" +- +-#: c-typeck.c:1997 +-#, gcc-internal-format +-msgid "dereferencing pointer to incomplete type" +-msgstr "punter dereferènciat a tipus de dada incompleta" +- +-#: c-typeck.c:2001 +-#, fuzzy, gcc-internal-format +-msgid "dereferencing % pointer" +-msgstr "dereferènciant el punter \"void *\"" +- +-#: c-typeck.c:2018 +-#, fuzzy, gcc-internal-format +-msgid "invalid type argument of %qs (have %qT)" +-msgstr "argument de tipus no vàlid de \"%s\"" +- +-#: c-typeck.c:2046 cp/typeck.c:2524 +-#, gcc-internal-format +-msgid "subscripted value is neither array nor pointer" +-msgstr "el valor indicat pel subindici no és ni matriu ni punter" +- +-#: c-typeck.c:2057 cp/typeck.c:2443 cp/typeck.c:2529 +-#, gcc-internal-format +-msgid "array subscript is not an integer" +-msgstr "el subindici de la matriu no és un enter" +- +-#: c-typeck.c:2063 +-#, fuzzy, gcc-internal-format +-msgid "subscripted value is pointer to function" +-msgstr "passant l'argument del punter a la funció" +- +-#: c-typeck.c:2110 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids subscripting % array" +-msgstr "ISO C prohibeix el subindici d'una matriu \"register\"" +- +-#: c-typeck.c:2112 +-#, gcc-internal-format +-msgid "ISO C90 forbids subscripting non-lvalue array" +-msgstr "ISO C90 prohibeix el subindici d'una matriu non-lvalue" +- +-#: c-typeck.c:2228 +-#, gcc-internal-format +-msgid "%H%qD is static but used in inline function %qD which is not static" +-msgstr "" +- +-#: c-typeck.c:2376 +-#, fuzzy, gcc-internal-format +-msgid "called object %qE is not a function" +-msgstr "l'objecte cridat no és una funció" +- +-#. This situation leads to run-time undefined behavior. We can't, +-#. therefore, simply error unless we can prove that all possible +-#. executions of the program must execute the code. +-#: c-typeck.c:2404 +-#, gcc-internal-format +-msgid "function called through a non-compatible type" +-msgstr "" +- +-#: c-typeck.c:2515 +-#, fuzzy, gcc-internal-format +-msgid "too many arguments to function %qE" +-msgstr "massa arguments per a la funció" +- +-#: c-typeck.c:2536 +-#, gcc-internal-format +-msgid "type of formal parameter %d is incomplete" +-msgstr "el tipus de dada del paràmetre formal %d està incomplet" +- +-#: c-typeck.c:2549 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as integer rather than floating due to prototype" +-msgstr "%s com enter en lloc de coma flotant a causa del prototip" +- +-#: c-typeck.c:2554 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as integer rather than complex due to prototype" +-msgstr "%s com enter en lloc de complex a causa del prototip" +- +-#: c-typeck.c:2559 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as complex rather than floating due to prototype" +-msgstr "%s com complex en lloc de coma flotant a causa del prototip" +- +-#: c-typeck.c:2564 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as floating rather than integer due to prototype" +-msgstr "%s com coma flotant en lloc d'enter a causa del prototip" +- +-#: c-typeck.c:2569 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as complex rather than integer due to prototype" +-msgstr "%s com complex en lloc d'enter a causa del prototip" +- +-#: c-typeck.c:2574 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as floating rather than complex due to prototype" +-msgstr "%s com coma flotant en lloc de complex a causa del prototip" +- +-#: c-typeck.c:2587 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as % rather than % due to prototype" +-msgstr "%s com \"float\" en lloc de \"double\" a causa del prototip" +- +-#: c-typeck.c:2612 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as %qT rather than %qT due to prototype" +-msgstr "%s com enter en lloc de complex a causa del prototip" +- +-#: c-typeck.c:2633 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE with different width due to prototype" +-msgstr "%s amb amplària diferent a causa del prototip" +- +-#: c-typeck.c:2656 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as unsigned due to prototype" +-msgstr "%s com unsigned a causa del prototip" +- +-#: c-typeck.c:2660 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE as signed due to prototype" +-msgstr "%s com signed a causa del prototip" +- +-#: c-typeck.c:2766 c-typeck.c:2770 +-#, fuzzy, gcc-internal-format +-msgid "comparison with string literal results in unspecified behavior" +-msgstr "la declaració feble de \"%s\" després del primer ús resulta en una conducta no especificada" +- +-#: c-typeck.c:2795 +-#, fuzzy, gcc-internal-format +-msgid "pointer of type % used in subtraction" +-msgstr "es va usar un punter de tipus \"void *\" en la substracció" +- +-#: c-typeck.c:2797 +-#, gcc-internal-format +-msgid "pointer to a function used in subtraction" +-msgstr "es va usar un punter a una funció en la substracció" +- +-#: c-typeck.c:2908 +-#, gcc-internal-format +-msgid "wrong type argument to unary plus" +-msgstr "argument de tipus erroni per a l'increment unari" +- +-#: c-typeck.c:2921 +-#, gcc-internal-format +-msgid "wrong type argument to unary minus" +-msgstr "argument de tipus erroni per al decrement unari" +- +-#: c-typeck.c:2941 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support %<~%> for complex conjugation" +-msgstr "ISO C no té suport de \"~\" per a conjugacions complexes" +- +-#: c-typeck.c:2947 +-#, gcc-internal-format +-msgid "wrong type argument to bit-complement" +-msgstr "argument de tipus erroni per a complement de bits" +- +-#: c-typeck.c:2955 +-#, gcc-internal-format +-msgid "wrong type argument to abs" +-msgstr "argument de tipus erroni per a abs" +- +-#: c-typeck.c:2967 +-#, gcc-internal-format +-msgid "wrong type argument to conjugation" +-msgstr "argument de tipus erroni per a la conjugació" +- +-#: c-typeck.c:2979 +-#, gcc-internal-format +-msgid "wrong type argument to unary exclamation mark" +-msgstr "argument de tipus erroni per al signe d'exclamació unari" +- +-#: c-typeck.c:3013 +-#, fuzzy, gcc-internal-format +-msgid "ISO C does not support %<++%> and %<--%> on complex types" +-msgstr "ISO C no té suport per a \"++\" i \"--\" en tipus complexos" +- +-#: c-typeck.c:3032 c-typeck.c:3064 +-#, gcc-internal-format +-msgid "wrong type argument to increment" +-msgstr "argument de tipus erroni per a l'increment" +- +-#: c-typeck.c:3034 c-typeck.c:3066 +-#, gcc-internal-format +-msgid "wrong type argument to decrement" +-msgstr "argument de tipus erroni pel decrement" +- +-#: c-typeck.c:3055 +-#, gcc-internal-format +-msgid "increment of pointer to unknown structure" +-msgstr "increment de punter a estructura desconeguda" +- +-#: c-typeck.c:3057 +-#, gcc-internal-format +-msgid "decrement of pointer to unknown structure" +-msgstr "decrement de punter a estructura desconeguda" +- +-#: c-typeck.c:3258 +-#, fuzzy, gcc-internal-format +-msgid "assignment of read-only member %qD" +-msgstr "%s del membre de només lectura \"%s\"" +- +-#: c-typeck.c:3259 +-#, fuzzy, gcc-internal-format +-msgid "increment of read-only member %qD" +-msgstr "%s del membre de només lectura \"%s\"" +- +-#: c-typeck.c:3260 +-#, fuzzy, gcc-internal-format +-msgid "decrement of read-only member %qD" +-msgstr "%s del membre de només lectura \"%s\"" +- +-#: c-typeck.c:3261 +-#, gcc-internal-format +-msgid "read-only member %qD used as % output" +-msgstr "" +- +-#: c-typeck.c:3265 +-#, fuzzy, gcc-internal-format +-msgid "assignment of read-only variable %qD" +-msgstr "%s de la variable de només lectura \"%s\"" +- +-#: c-typeck.c:3266 +-#, fuzzy, gcc-internal-format +-msgid "increment of read-only variable %qD" +-msgstr "%s de la variable de només lectura \"%s\"" +- +-#: c-typeck.c:3267 +-#, fuzzy, gcc-internal-format +-msgid "decrement of read-only variable %qD" +-msgstr "%s de la variable de només lectura \"%s\"" +- +-#: c-typeck.c:3268 +-#, gcc-internal-format +-msgid "read-only variable %qD used as % output" +-msgstr "" +- +-#: c-typeck.c:3271 +-#, fuzzy, gcc-internal-format +-msgid "assignment of read-only location %qE" +-msgstr "%s de la ubicació de només lectura" +- +-#: c-typeck.c:3272 +-#, fuzzy, gcc-internal-format +-msgid "increment of read-only location %qE" +-msgstr "%s de la ubicació de només lectura" +- +-#: c-typeck.c:3273 +-#, fuzzy, gcc-internal-format +-msgid "decrement of read-only location %qE" +-msgstr "%s de la ubicació de només lectura" +- +-#: c-typeck.c:3274 +-#, gcc-internal-format +-msgid "read-only location %qE used as % output" +-msgstr "" +- +-#: c-typeck.c:3310 +-#, fuzzy, gcc-internal-format +-msgid "cannot take address of bit-field %qD" +-msgstr "no es pot adquirir l'adreça del camp de bits \"%s\"" +- +-#: c-typeck.c:3338 +-#, fuzzy, gcc-internal-format +-msgid "global register variable %qD used in nested function" +-msgstr "es va usar la variable de registre global \"%s\" en funcions niades" +- +-#: c-typeck.c:3341 +-#, fuzzy, gcc-internal-format +-msgid "register variable %qD used in nested function" +-msgstr "es va usar la va variable \"%s\" en funcions niades" +- +-#: c-typeck.c:3346 +-#, fuzzy, gcc-internal-format +-msgid "address of global register variable %qD requested" +-msgstr "es va sol·licitar l'adreça de la variable de registre global \"%s\"" +- +-#: c-typeck.c:3348 +-#, fuzzy, gcc-internal-format +-msgid "address of register variable %qD requested" +-msgstr "es va sol·licitar l'adreça de la variable register \"%s\"" +- +-#: c-typeck.c:3394 +-#, fuzzy, gcc-internal-format +-msgid "non-lvalue array in conditional expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: c-typeck.c:3442 +-#, gcc-internal-format +-msgid "signed and unsigned type in conditional expression" +-msgstr "tipus signed i unsigned en l'expressió condicional" +- +-#: c-typeck.c:3449 +-#, gcc-internal-format +-msgid "ISO C forbids conditional expr with only one void side" +-msgstr "ISO C prohibeix una expressió condicional amb només un costat void" +- +-#: c-typeck.c:3463 c-typeck.c:3471 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids conditional expr between % and function pointer" +-msgstr "ISO C prohibeix expressions condicionals entre \"void *\" i punters de funcions" +- +-#: c-typeck.c:3478 +-#, gcc-internal-format +-msgid "pointer type mismatch in conditional expression" +-msgstr "els tipus de dades punters no coincideixen en l'expressió condicional" +- +-#: c-typeck.c:3485 c-typeck.c:3495 +-#, gcc-internal-format +-msgid "pointer/integer type mismatch in conditional expression" +-msgstr "els tipus de dades punters/enters no coincideixen en l'expressió condicional" +- +-#: c-typeck.c:3509 tree-cfg.c:3783 +-#, gcc-internal-format +-msgid "type mismatch in conditional expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: c-typeck.c:3552 +-#, gcc-internal-format +-msgid "left-hand operand of comma expression has no effect" +-msgstr "l'operador del costat esquerre de l'expressió coma no té efecte" +- +-#: c-typeck.c:3589 +-#, gcc-internal-format +-msgid "cast specifies array type" +-msgstr "la conversió especifica el tipus matriu" +- +-#: c-typeck.c:3595 +-#, gcc-internal-format +-msgid "cast specifies function type" +-msgstr "la conversió especifica el tipus funció" +- +-#: c-typeck.c:3612 +-#, gcc-internal-format +-msgid "ISO C forbids casting nonscalar to the same type" +-msgstr "ISO C prohibeix la conversió d'un no escalar al mateix tipus" +- +-#: c-typeck.c:3629 +-#, gcc-internal-format +-msgid "ISO C forbids casts to union type" +-msgstr "ISO C prohibeix la conversió al tipus union" +- +-#: c-typeck.c:3637 +-#, gcc-internal-format +-msgid "cast to union type from type not present in union" +-msgstr "conversió a tipus union des d'un tipus no presenti en union" +- +-#: c-typeck.c:3683 +-#, gcc-internal-format +-msgid "cast adds new qualifiers to function type" +-msgstr "la conversió afegeix nous qualificadors del tipus de la funció" +- +-#. There are qualifiers present in IN_OTYPE that are not +-#. present in IN_TYPE. +-#: c-typeck.c:3688 +-#, gcc-internal-format +-msgid "cast discards qualifiers from pointer target type" +-msgstr "la conversió descarta els qualificadors del tipus de la destinació del punter" +- +-#: c-typeck.c:3704 +-#, gcc-internal-format +-msgid "cast increases required alignment of target type" +-msgstr "la conversió incrementa l'alineació requerida del tipus de la destinació" +- +-#: c-typeck.c:3715 +-#, gcc-internal-format +-msgid "cast from pointer to integer of different size" +-msgstr "conversió de punter a enter de grandària diferent" +- +-#: c-typeck.c:3719 +-#, gcc-internal-format +-msgid "cast from function call of type %qT to non-matching type %qT" +-msgstr "" +- +-#: c-typeck.c:3727 +-#, gcc-internal-format +-msgid "cast to pointer from integer of different size" +-msgstr "conversió a punter des d'un enter de grandària diferent" +- +-#: c-typeck.c:3741 +-#, gcc-internal-format +-msgid "ISO C forbids conversion of function pointer to object pointer type" +-msgstr "ISO C prohibeix la conversió d'un punter de funció a un tipus punter d'objecte" +- +-#: c-typeck.c:3749 +-#, gcc-internal-format +-msgid "ISO C forbids conversion of object pointer to function pointer type" +-msgstr "ISO C prohibeix la conversió d'un punter d'objecte a un tipus punter de funció" +- +-#: c-typeck.c:4026 +-#, gcc-internal-format +-msgid "cannot pass rvalue to reference parameter" +-msgstr "no es pot passar un valor-r a un paràmetre de referència" +- +-#: c-typeck.c:4139 c-typeck.c:4306 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE makes qualified function pointer from unqualified" +-msgstr "%s fa un punter de funció qualificat des d'un no qualificat" +- +-#: c-typeck.c:4142 c-typeck.c:4309 +-#, fuzzy, gcc-internal-format +-msgid "assignment makes qualified function pointer from unqualified" +-msgstr "%s fa un punter de funció qualificat des d'un no qualificat" +- +-#: c-typeck.c:4145 c-typeck.c:4311 +-#, fuzzy, gcc-internal-format +-msgid "initialization makes qualified function pointer from unqualified" +-msgstr "%s fa un punter de funció qualificat des d'un no qualificat" +- +-#: c-typeck.c:4148 c-typeck.c:4313 +-#, fuzzy, gcc-internal-format +-msgid "return makes qualified function pointer from unqualified" +-msgstr "%s fa un punter de funció qualificat des d'un no qualificat" +- +-#: c-typeck.c:4152 c-typeck.c:4273 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE discards qualifiers from pointer target type" +-msgstr "la conversió de \"%T\" a \"%T\" descarta els qualificadors del tipus de la destinació del punter" +- +-#: c-typeck.c:4154 c-typeck.c:4275 +-#, fuzzy, gcc-internal-format +-msgid "assignment discards qualifiers from pointer target type" +-msgstr "la conversió descarta els qualificadors del tipus de la destinació del punter" +- +-#: c-typeck.c:4156 c-typeck.c:4277 +-#, fuzzy, gcc-internal-format +-msgid "initialization discards qualifiers from pointer target type" +-msgstr "la conversió descarta els qualificadors del tipus de la destinació del punter" +- +-#: c-typeck.c:4158 c-typeck.c:4279 +-#, fuzzy, gcc-internal-format +-msgid "return discards qualifiers from pointer target type" +-msgstr "la conversió descarta els qualificadors del tipus de la destinació del punter" +- +-#: c-typeck.c:4165 +-#, gcc-internal-format +-msgid "ISO C prohibits argument conversion to union type" +-msgstr "ISO C prohibeix la conversió d'arguments a tipus union" +- +-#: c-typeck.c:4201 +-#, fuzzy, gcc-internal-format +-msgid "request for implicit conversion from %qT to %qT not permitted in C++" +-msgstr "iconv no dóna suport a la conversió de \"%s\" a \"%s\"" +- +-#: c-typeck.c:4214 +-#, fuzzy, gcc-internal-format +-msgid "argument %d of %qE might be a candidate for a format attribute" +-msgstr "la funció pot ser un candidat possible per a l'atribut de format \"%s\"" +- +-#: c-typeck.c:4220 +-#, fuzzy, gcc-internal-format +-msgid "assignment left-hand side might be a candidate for a format attribute" +-msgstr "Avisar per funcions que podrien ser candidates per a atributs de format" +- +-#: c-typeck.c:4225 +-#, fuzzy, gcc-internal-format +-msgid "initialization left-hand side might be a candidate for a format attribute" +-msgstr "la funció pot ser un candidat possible per a l'atribut de format \"%s\"" +- +-#: c-typeck.c:4230 +-#, fuzzy, gcc-internal-format +-msgid "return type might be a candidate for a format attribute" +-msgstr "la funció pot ser un candidat possible per a l'atribut de format \"%s\"" +- +-#: c-typeck.c:4253 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids passing argument %d of %qE between function pointer and %" +-msgstr "ISO C prohibeix %s entre punters a funció i \"void *\"" +- +-#: c-typeck.c:4256 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids assignment between function pointer and %" +-msgstr "ISO C prohibeix %s entre punters a funció i \"void *\"" +- +-#: c-typeck.c:4258 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids initialization between function pointer and %" +-msgstr "ISO C prohibeix %s entre punters a funció i \"void *\"" +- +-#: c-typeck.c:4260 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids return between function pointer and %" +-msgstr "ISO C prohibeix %s entre punters a funció i \"void *\"" +- +-#: c-typeck.c:4289 +-#, fuzzy, gcc-internal-format +-msgid "pointer targets in passing argument %d of %qE differ in signedness" +-msgstr "el punter que punta a %s difereix en signe" +- +-#: c-typeck.c:4291 +-#, fuzzy, gcc-internal-format +-msgid "pointer targets in assignment differ in signedness" +-msgstr "el punter que punta a %s difereix en signe" +- +-#: c-typeck.c:4293 +-#, fuzzy, gcc-internal-format +-msgid "pointer targets in initialization differ in signedness" +-msgstr "el punter que punta a %s difereix en signe" +- +-#: c-typeck.c:4295 +-#, fuzzy, gcc-internal-format +-msgid "pointer targets in return differ in signedness" +-msgstr "el punter que punta a %s difereix en signe" +- +-#: c-typeck.c:4320 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE from incompatible pointer type" +-msgstr "%s de tipus de punter incompatible" +- +-#: c-typeck.c:4322 +-#, fuzzy, gcc-internal-format +-msgid "assignment from incompatible pointer type" +-msgstr "%s de tipus de punter incompatible" +- +-#: c-typeck.c:4323 +-#, fuzzy, gcc-internal-format +-msgid "initialization from incompatible pointer type" +-msgstr "%s de tipus de punter incompatible" +- +-#: c-typeck.c:4325 +-#, fuzzy, gcc-internal-format +-msgid "return from incompatible pointer type" +-msgstr "%s de tipus de punter incompatible" +- +-#: c-typeck.c:4342 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE makes pointer from integer without a cast" +-msgstr "%s crea un punter des d'un enter sense una conversió" +- +-#: c-typeck.c:4344 +-#, fuzzy, gcc-internal-format +-msgid "assignment makes pointer from integer without a cast" +-msgstr "%s crea un punter des d'un enter sense una conversió" +- +-#: c-typeck.c:4346 +-#, fuzzy, gcc-internal-format +-msgid "initialization makes pointer from integer without a cast" +-msgstr "%s crea un punter des d'un enter sense una conversió" +- +-#: c-typeck.c:4348 +-#, fuzzy, gcc-internal-format +-msgid "return makes pointer from integer without a cast" +-msgstr "%s crea un punter des d'un enter sense una conversió" +- +-#: c-typeck.c:4355 +-#, fuzzy, gcc-internal-format +-msgid "passing argument %d of %qE makes integer from pointer without a cast" +-msgstr "%s crea un enter des d'un punter sense una conversió" +- +-#: c-typeck.c:4357 +-#, fuzzy, gcc-internal-format +-msgid "assignment makes integer from pointer without a cast" +-msgstr "%s crea un enter des d'un punter sense una conversió" +- +-#: c-typeck.c:4359 +-#, fuzzy, gcc-internal-format +-msgid "initialization makes integer from pointer without a cast" +-msgstr "%s crea un enter des d'un punter sense una conversió" +- +-#: c-typeck.c:4361 +-#, fuzzy, gcc-internal-format +-msgid "return makes integer from pointer without a cast" +-msgstr "%s crea un enter des d'un punter sense una conversió" +- +-#: c-typeck.c:4377 +-#, fuzzy, gcc-internal-format +-msgid "incompatible types in assignment" +-msgstr "tipus incompatibles en %s" +- +-#: c-typeck.c:4380 +-#, fuzzy, gcc-internal-format +-msgid "incompatible types in initialization" +-msgstr "tipus incompatibles en %s" +- +-#: c-typeck.c:4383 +-#, fuzzy, gcc-internal-format +-msgid "incompatible types in return" +-msgstr "tipus incompatibles en %s" +- +-#: c-typeck.c:4439 +-#, gcc-internal-format +-msgid "traditional C rejects automatic aggregate initialization" +-msgstr "C tradicional rebutja la iniciació automàtica d'agregats" +- +-#: c-typeck.c:4610 c-typeck.c:4625 c-typeck.c:4640 +-#, fuzzy, gcc-internal-format +-msgid "(near initialization for %qs)" +-msgstr "(prop de l'assignació de valors inicials per a \"%s\")" +- +-#: c-typeck.c:5180 cp/decl.c:4975 +-#, gcc-internal-format +-msgid "opaque vector types cannot be initialized" +-msgstr "" +- +-#: c-typeck.c:5803 +-#, fuzzy, gcc-internal-format +-msgid "unknown field %qE specified in initializer" +-msgstr "camp \"%s\" desconegut especificat en el valor inicial" +- +-#: c-typeck.c:6703 +-#, gcc-internal-format +-msgid "traditional C rejects initialization of unions" +-msgstr "C tradicional rebutja els valors inicials d'unions" +- +-#: c-typeck.c:7011 +-#, fuzzy, gcc-internal-format +-msgid "jump into statement expression" +-msgstr "desbordament en la constant implícita" +- +-#: c-typeck.c:7017 +-#, fuzzy, gcc-internal-format +-msgid "jump into scope of identifier with variably modified type" +-msgstr "l'argument de patró \"%T\" és un tipus modificat variablement" +- +-#: c-typeck.c:7054 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids %" +-msgstr "ISO C prohibeix \"goto *expr;\"" +- +-#: c-typeck.c:7069 cp/typeck.c:6592 +-#, fuzzy, gcc-internal-format +-msgid "function declared % has a % statement" +-msgstr "la funció declarada \"noreturn\" té una declaració \"return\"" +- +-#: c-typeck.c:7077 +-#, fuzzy, gcc-internal-format +-msgid "% with no value, in function returning non-void" +-msgstr "\"return\" sense valors, en una funció que retorna \"non-void\"" +- +-#: c-typeck.c:7086 +-#, fuzzy, gcc-internal-format +-msgid "% with a value, in function returning void" +-msgstr "\"return\" amb valor, en una funció que retorna \"void\"" +- +-#: c-typeck.c:7088 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids % with expression, in function returning void" +-msgstr "\"return\" amb valor, en una funció que retorna \"void\"" +- +-#: c-typeck.c:7145 +-#, gcc-internal-format +-msgid "function returns address of local variable" +-msgstr "la funció retorna l'adreça d'una variable local" +- +-#: c-typeck.c:7217 cp/semantics.c:949 +-#, gcc-internal-format +-msgid "switch quantity not an integer" +-msgstr "la quantitat del «switch» no és un enter" +- +-#: c-typeck.c:7229 +-#, fuzzy, gcc-internal-format +-msgid "% switch expression not converted to % in ISO C" +-msgstr "no es converteix l'expressió de «switch» \"long\" a \"int\" en ISO C" +- +-#: c-typeck.c:7269 +-#, fuzzy, gcc-internal-format +-msgid "case label in statement expression not containing enclosing switch statement" +-msgstr "l'etiqueta «case» no es troba dintre d'una declaració «switch»" +- +-#: c-typeck.c:7272 +-#, fuzzy, gcc-internal-format +-msgid "% label in statement expression not containing enclosing switch statement" +-msgstr "l'etiqueta \"default\" no està dintre d'una declaració «switch»" +- +-#: c-typeck.c:7278 +-#, gcc-internal-format +-msgid "case label in scope of identifier with variably modified type not containing enclosing switch statement" +-msgstr "" +- +-#: c-typeck.c:7281 +-#, gcc-internal-format +-msgid "% label in scope of identifier with variably modified type not containing enclosing switch statement" +-msgstr "" +- +-#: c-typeck.c:7285 cp/parser.c:6804 +-#, gcc-internal-format +-msgid "case label not within a switch statement" +-msgstr "l'etiqueta «case» no es troba dintre d'una declaració «switch»" +- +-#: c-typeck.c:7287 +-#, fuzzy, gcc-internal-format +-msgid "% label not within a switch statement" +-msgstr "l'etiqueta \"default\" no està dintre d'una declaració «switch»" +- +-#: c-typeck.c:7364 +-#, fuzzy, gcc-internal-format +-msgid "%Hsuggest explicit braces to avoid ambiguous %" +-msgstr "%Hsuggereix parèntesis explícits per evitar \"else\" ambigu" +- +-#: c-typeck.c:7475 cp/cp-gimplify.c:97 cp/parser.c:7409 +-#, gcc-internal-format +-msgid "break statement not within loop or switch" +-msgstr "la declaració break no està dintre d'un cicle o «switch»" +- +-#: c-typeck.c:7477 cp/parser.c:7430 +-#, gcc-internal-format +-msgid "continue statement not within a loop" +-msgstr "la declaració continue no està dintre dintre d'un cicle" +- +-#: c-typeck.c:7482 cp/parser.c:7420 +-#, fuzzy, gcc-internal-format +-msgid "break statement used with OpenMP for loop" +-msgstr "la declaració break no està dintre d'un cicle o «switch»" +- +-#: c-typeck.c:7505 +-#, gcc-internal-format +-msgid "%Hstatement with no effect" +-msgstr "" +- +-#: c-typeck.c:7527 +-#, gcc-internal-format +-msgid "expression statement has incomplete type" +-msgstr "la declaració de l'expressió té tipus de dada incompleta" +- +-#: c-typeck.c:8082 cp/typeck.c:3259 +-#, gcc-internal-format +-msgid "right shift count is negative" +-msgstr "el valor de desplaçament a la dreta és negatiu" +- +-#: c-typeck.c:8089 cp/typeck.c:3265 +-#, gcc-internal-format +-msgid "right shift count >= width of type" +-msgstr "valor de desplaçament a la dreta >= amplària del tipus" +- +-#: c-typeck.c:8111 cp/typeck.c:3284 +-#, gcc-internal-format +-msgid "left shift count is negative" +-msgstr "el valor de desplaçament a l'esquerra és negatiu" +- +-#: c-typeck.c:8114 cp/typeck.c:3286 +-#, gcc-internal-format +-msgid "left shift count >= width of type" +-msgstr "valor de desplaçament a l'esquerra >= amplària del tipus" +- +-#: c-typeck.c:8132 cp/typeck.c:3324 +-#, gcc-internal-format +-msgid "comparing floating point with == or != is unsafe" +-msgstr "no és segura la comparança de coma flotant amb == o !=" +- +-#: c-typeck.c:8156 c-typeck.c:8163 +-#, fuzzy, gcc-internal-format +-msgid "ISO C forbids comparison of % with function pointer" +-msgstr "ISO C prohibeix la comparança de \"void *\" amb un punter de funció" +- +-#: c-typeck.c:8169 c-typeck.c:8227 +-#, gcc-internal-format +-msgid "comparison of distinct pointer types lacks a cast" +-msgstr "la comparança de diferents tipus de punter manca d'una conversió" +- +-#: c-typeck.c:8178 c-typeck.c:8186 cp/typeck.c:3344 cp/typeck.c:3353 +-#, fuzzy, gcc-internal-format +-msgid "the address of %qD will never be NULL" +-msgstr "l'adreça de \"%D\", sempre serà \"true\"" +- +-#: c-typeck.c:8193 c-typeck.c:8198 c-typeck.c:8245 c-typeck.c:8250 +-#, gcc-internal-format +-msgid "comparison between pointer and integer" +-msgstr "comparança entre punter i enter" +- +-#: c-typeck.c:8219 +-#, gcc-internal-format +-msgid "comparison of complete and incomplete pointers" +-msgstr "comparança de punters complets i incomplets" +- +-#: c-typeck.c:8222 +-#, gcc-internal-format +-msgid "ISO C forbids ordered comparisons of pointers to functions" +-msgstr "ISO C prohibeix la comparança entre punters a funcions" +- +-#: c-typeck.c:8234 c-typeck.c:8240 +-#, gcc-internal-format +-msgid "ordered comparison of pointer with integer zero" +-msgstr "comparança ordenada de punter amb l'enter zero" +- +-#: c-typeck.c:8500 +-#, gcc-internal-format +-msgid "comparison between signed and unsigned" +-msgstr "comparança entre signed i unsigned" +- +-#: c-typeck.c:8546 cp/typeck.c:3830 +-#, gcc-internal-format +-msgid "comparison of promoted ~unsigned with constant" +-msgstr "comparança d'un ~unsigned promogut amb una constant" +- +-#: c-typeck.c:8554 cp/typeck.c:3838 +-#, gcc-internal-format +-msgid "comparison of promoted ~unsigned with unsigned" +-msgstr "comparança d'un ~unsigned promogut amb unsigned" +- +-#: c-typeck.c:8612 +-#, fuzzy, gcc-internal-format +-msgid "used array that cannot be converted to pointer where scalar is required" +-msgstr "s'usa un valor de tipus matriu quan es requereix un escalar" +- +-#: c-typeck.c:8616 +-#, fuzzy, gcc-internal-format +-msgid "used struct type value where scalar is required" +-msgstr "s'usa un valor de tipus struct quan es requereix un escalar" +- +-#: c-typeck.c:8620 +-#, fuzzy, gcc-internal-format +-msgid "used union type value where scalar is required" +-msgstr "s'usa un valor de tipus union quan es requereix un escalar" +- +-#: c-typeck.c:8725 cp/semantics.c:3523 +-#, fuzzy, gcc-internal-format +-msgid "%qE has invalid type for %" +-msgstr "tipus de retorn no vàlid per a la funció \"%#D\"" +- +-#: c-typeck.c:8759 cp/semantics.c:3536 +-#, fuzzy, gcc-internal-format +-msgid "%qE has invalid type for %" +-msgstr "tipus de retorn no vàlid per a la funció \"%#D\"" +- +-#: c-typeck.c:8775 cp/semantics.c:3546 +-#, gcc-internal-format +-msgid "%qE must be % for %" +-msgstr "" +- +-#: c-typeck.c:8784 cp/semantics.c:3351 +-#, fuzzy, gcc-internal-format +-msgid "%qE is not a variable in clause %qs" +-msgstr "\"%s\" no és un nom de fitxer vàlid" +- +-#: c-typeck.c:8791 c-typeck.c:8811 c-typeck.c:8831 cp/semantics.c:3377 +-#: cp/semantics.c:3396 +-#, gcc-internal-format +-msgid "%qE appears more than once in data clauses" +-msgstr "" +- +-#: c-typeck.c:8805 cp/semantics.c:3371 +-#, gcc-internal-format +-msgid "%qE is not a variable in clause %" +-msgstr "" +- +-#: c-typeck.c:8825 cp/semantics.c:3390 +-#, gcc-internal-format +-msgid "%qE is not a variable in clause %" +-msgstr "" +- +-#: c-typeck.c:8883 cp/semantics.c:3587 +-#, gcc-internal-format +-msgid "%qE is predetermined %qs for %qs" +-msgstr "" +- +-#: calls.c:2032 +-#, gcc-internal-format +-msgid "function call has aggregate value" +-msgstr "la crida a la funció té valor agregat" +- +-#: cfgexpand.c:1884 +-#, gcc-internal-format +-msgid "not protecting local variables: variable length buffer" +-msgstr "" +- +-#: cfgexpand.c:1887 +-#, gcc-internal-format +-msgid "not protecting function: no buffer at least %d bytes long" +-msgstr "" +- +-#: cfghooks.c:97 +-#, gcc-internal-format +-msgid "bb %d on wrong place" +-msgstr "bb %d en un lloc equivocat" +- +-#: cfghooks.c:103 +-#, gcc-internal-format +-msgid "prev_bb of %d should be %d, not %d" +-msgstr "el prev_bb de %d ha de ser %d, no %d" +- +-#: cfghooks.c:120 +-#, gcc-internal-format +-msgid "verify_flow_info: Block %i has loop_father, but there are no loops" +-msgstr "" +- +-#: cfghooks.c:126 +-#, fuzzy, gcc-internal-format +-msgid "verify_flow_info: Block %i lacks loop_father" +-msgstr "verify_flow_info: El bloc bàsic %d succ edge està corrupte" +- +-#: cfghooks.c:132 +-#, gcc-internal-format +-msgid "verify_flow_info: Wrong count of block %i %i" +-msgstr "verify_flow_info: Compte erroni del bloc %i %i" +- +-#: cfghooks.c:138 +-#, gcc-internal-format +-msgid "verify_flow_info: Wrong frequency of block %i %i" +-msgstr "verify_flow_info: Freqüència errònia del bloc %i %i" +- +-#: cfghooks.c:146 +-#, gcc-internal-format +-msgid "verify_flow_info: Duplicate edge %i->%i" +-msgstr "verify_flow_info: Vora duplicada %i->%i" +- +-#: cfghooks.c:152 +-#, gcc-internal-format +-msgid "verify_flow_info: Wrong probability of edge %i->%i %i" +-msgstr "verify_flow_info: Probabilitat errònia de la vora %i->%i %i" +- +-#: cfghooks.c:158 +-#, gcc-internal-format +-msgid "verify_flow_info: Wrong count of edge %i->%i %i" +-msgstr "verify_flow_info: Compte erroni de la vora %i->%i %i" +- +-#: cfghooks.c:170 +-#, gcc-internal-format +-msgid "verify_flow_info: Basic block %d succ edge is corrupted" +-msgstr "verify_flow_info: El bloc bàsic %d succ edge està corrupte" +- +-#: cfghooks.c:184 cfgrtl.c:1840 +-#, fuzzy, gcc-internal-format +-msgid "wrong amount of branch edges after unconditional jump %i" +-msgstr "Quantitat errònia de vores de ramificació després del salt incondicional %i" +- +-#: cfghooks.c:192 cfghooks.c:203 +-#, gcc-internal-format +-msgid "basic block %d pred edge is corrupted" +-msgstr "el bloc bàsic %d pred edge està corrupte" +- +-#: cfghooks.c:204 +-#, fuzzy, gcc-internal-format +-msgid "its dest_idx should be %d, not %d" +-msgstr "el prev_bb de %d ha de ser %d, no %d" +- +-#: cfghooks.c:233 +-#, gcc-internal-format +-msgid "basic block %i edge lists are corrupted" +-msgstr "les llistes de vora del bloc bàsic %i estan corruptes" +- +-#: cfghooks.c:246 +-#, gcc-internal-format +-msgid "verify_flow_info failed" +-msgstr "verify_flow_info fallat" +- +-#: cfghooks.c:307 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support redirect_edge_and_branch" +-msgstr "%s no té suport per a l'operand amb format de nombre %%n$" +- +-#: cfghooks.c:327 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support can_remove_branch_p" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:381 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support redirect_edge_and_branch_force" +-msgstr "%s no té suport per a l'operand amb format de nombre %%n$" +- +-#: cfghooks.c:417 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support split_block" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:460 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support move_block_after" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:473 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support delete_basic_block" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:523 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support split_edge" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:596 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support create_basic_block" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:624 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support can_merge_blocks_p" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:635 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support predict_edge" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:644 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support predicted_by_p" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:658 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support merge_blocks" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:711 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support make_forwarder_block" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:845 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support can_duplicate_block_p" +-msgstr "no es dóna suport a multilib" +- +-#: cfghooks.c:867 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support duplicate_block" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:944 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support block_ends_with_call_p" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:955 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support block_ends_with_condjump_p" +-msgstr "%s no té suport per a %s" +- +-#: cfghooks.c:973 +-#, fuzzy, gcc-internal-format +-msgid "%s does not support flow_call_edges_add" +-msgstr "%s no té suport per a %s" +- +-#: cfgloop.c:1328 +-#, fuzzy, gcc-internal-format +-msgid "size of loop %d should be %d, not %d" +-msgstr "La grandària del cicle %d ha de ser %d, no %d." +- +-#: cfgloop.c:1342 +-#, fuzzy, gcc-internal-format +-msgid "bb %d do not belong to loop %d" +-msgstr "Bb %d no pertany al cicle %d." +- +-#: cfgloop.c:1357 +-#, fuzzy, gcc-internal-format +-msgid "loop %d's header does not have exactly 2 entries" +-msgstr "L'encapçalat del cicle %d no té exactament 2 entrades." +- +-#: cfgloop.c:1364 +-#, fuzzy, gcc-internal-format +-msgid "loop %d's latch does not have exactly 1 successor" +-msgstr "El forrellat del cicle %d no té exactament 1 successor." +- +-#: cfgloop.c:1369 +-#, fuzzy, gcc-internal-format +-msgid "loop %d's latch does not have header as successor" +-msgstr "El forrellat del cicle %d no té un encapçalat com successor." +- +-#: cfgloop.c:1374 +-#, fuzzy, gcc-internal-format +-msgid "loop %d's latch does not belong directly to it" +-msgstr "El forrellat del cicle %d no pertany directament a ell." +- +-#: cfgloop.c:1380 +-#, fuzzy, gcc-internal-format +-msgid "loop %d's header does not belong directly to it" +-msgstr "L'encapçalat del cicle %d no pertany directament a ell." +- +-#: cfgloop.c:1386 +-#, gcc-internal-format +-msgid "loop %d's latch is marked as part of irreducible region" +-msgstr "" +- +-#: cfgloop.c:1419 +-#, fuzzy, gcc-internal-format +-msgid "basic block %d should be marked irreducible" +-msgstr "el bloc bàsic %d pred edge està corrupte" +- +-#: cfgloop.c:1425 +-#, fuzzy, gcc-internal-format +-msgid "basic block %d should not be marked irreducible" +-msgstr "les llistes de vora del bloc bàsic %i estan corruptes" +- +-#: cfgloop.c:1433 +-#, gcc-internal-format +-msgid "edge from %d to %d should be marked irreducible" +-msgstr "" +- +-#: cfgloop.c:1440 +-#, gcc-internal-format +-msgid "edge from %d to %d should not be marked irreducible" +-msgstr "" +- +-#: cfgloop.c:1455 +-#, gcc-internal-format +-msgid "corrupted head of the exits list of loop %d" +-msgstr "" +- +-#: cfgloop.c:1473 +-#, gcc-internal-format +-msgid "corrupted exits list of loop %d" +-msgstr "" +- +-#: cfgloop.c:1482 +-#, gcc-internal-format +-msgid "nonempty exits list of loop %d, but exits are not recorded" +-msgstr "" +- +-#: cfgloop.c:1508 +-#, gcc-internal-format +-msgid "Exit %d->%d not recorded" +-msgstr "" +- +-#: cfgloop.c:1526 +-#, gcc-internal-format +-msgid "Wrong list of exited loops for edge %d->%d" +-msgstr "" +- +-#: cfgloop.c:1535 +-#, gcc-internal-format +-msgid "Too many loop exits recorded" +-msgstr "" +- +-#: cfgloop.c:1546 +-#, gcc-internal-format +-msgid "%d exits recorded for loop %d (having %d exits)" +-msgstr "" +- +-#: cfgrtl.c:1734 +-#, gcc-internal-format +-msgid "BB_RTL flag not set for block %d" +-msgstr "" +- +-#: cfgrtl.c:1741 +-#, gcc-internal-format +-msgid "insn %d basic block pointer is %d, should be %d" +-msgstr "" +- +-#: cfgrtl.c:1752 +-#, gcc-internal-format +-msgid "insn %d in header of bb %d has non-NULL basic block" +-msgstr "" +- +-#: cfgrtl.c:1760 +-#, gcc-internal-format +-msgid "insn %d in footer of bb %d has non-NULL basic block" +-msgstr "" +- +-#: cfgrtl.c:1782 +-#, gcc-internal-format +-msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i" +-msgstr "verify_flow_info: REG_BR_PROB no coincideix amb la configuració %wi %i" +- +-#: cfgrtl.c:1797 +-#, gcc-internal-format +-msgid "fallthru edge crosses section boundary (bb %i)" +-msgstr "" +- +-#: cfgrtl.c:1822 +-#, fuzzy, gcc-internal-format +-msgid "missing REG_EH_REGION note in the end of bb %i" +-msgstr "Manca la nota REG_EH_REGION al final de bb %i" +- +-#: cfgrtl.c:1830 +-#, fuzzy, gcc-internal-format +-msgid "too many outgoing branch edges from bb %i" +-msgstr "Massa vores de ramificació de sortida de bb %i" +- +-#: cfgrtl.c:1835 +-#, fuzzy, gcc-internal-format +-msgid "fallthru edge after unconditional jump %i" +-msgstr "Vora de caiguda després del salt incondicional %i" +- +-#: cfgrtl.c:1846 +-#, fuzzy, gcc-internal-format +-msgid "wrong amount of branch edges after conditional jump %i" +-msgstr "Quantitat errònia de vores de ramificació després del salt condicional %i" +- +-#: cfgrtl.c:1852 +-#, fuzzy, gcc-internal-format +-msgid "call edges for non-call insn in bb %i" +-msgstr "Bords de cridada per a una insn que no és cridada en bb %i" +- +-#: cfgrtl.c:1861 +-#, fuzzy, gcc-internal-format +-msgid "abnormal edges for no purpose in bb %i" +-msgstr "Vores anormals sense cap propòsit en bb %i" +- +-#: cfgrtl.c:1873 +-#, gcc-internal-format +-msgid "insn %d inside basic block %d but block_for_insn is NULL" +-msgstr "insn %d està dintre del bloc bàsic %d però block_for_insn és NULL" +- +-#: cfgrtl.c:1877 +-#, gcc-internal-format +-msgid "insn %d inside basic block %d but block_for_insn is %i" +-msgstr "insn %d està dintre del bloc bàsic %d però block_for_insn és %i" +- +-#: cfgrtl.c:1891 cfgrtl.c:1901 +-#, gcc-internal-format +-msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d" +-msgstr "NOTE_INSN_BASIC_BLOCK mancada per al bloc %d" +- +-#: cfgrtl.c:1914 +-#, gcc-internal-format +-msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d" +-msgstr "NOTE_INSN_BASIC_BLOCK %d en el mitjà del bloc bàsic %d" +- +-#: cfgrtl.c:1924 +-#, gcc-internal-format +-msgid "in basic block %d:" +-msgstr "en el bloc bàsic %d:" +- +-#: cfgrtl.c:1977 cfgrtl.c:2067 +-#, fuzzy, gcc-internal-format +-msgid "insn %d outside of basic blocks has non-NULL bb field" +-msgstr "insn fora del bloc bàsic" +- +-#: cfgrtl.c:1985 +-#, gcc-internal-format +-msgid "end insn %d for block %d not found in the insn stream" +-msgstr "el insn final %d per al bloc %d no es troba en el fluix insn" +- +-#: cfgrtl.c:1998 +-#, gcc-internal-format +-msgid "insn %d is in multiple basic blocks (%d and %d)" +-msgstr "insn %d està en múltiples blocs bàsics (%d i %d)" +- +-#: cfgrtl.c:2010 +-#, gcc-internal-format +-msgid "head insn %d for block %d not found in the insn stream" +-msgstr "el cap insn %d per al bloc %d no es troba en el fluix insn" +- +-#: cfgrtl.c:2030 +-#, gcc-internal-format +-msgid "missing barrier after block %i" +-msgstr "falta una barrera després del bloc %i" +- +-#: cfgrtl.c:2043 +-#, gcc-internal-format +-msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i" +-msgstr "verify_flow_info: Blocs incorrectes per al respatller %i->%i" +- +-#: cfgrtl.c:2052 +-#, gcc-internal-format +-msgid "verify_flow_info: Incorrect fallthru %i->%i" +-msgstr "verify_flow_info: Respatller incorrecte %i->%i" +- +-#: cfgrtl.c:2085 +-#, gcc-internal-format +-msgid "basic blocks not laid down consecutively" +-msgstr "els blocs bàsics no estan col·locats consecutivament" +- +-#: cfgrtl.c:2124 +-#, gcc-internal-format +-msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" +-msgstr "el nombre de notes bb en la cadena insn (%d) != n_basic_blocks (%d)" +- +-#: cgraph.c:794 +-#, gcc-internal-format +-msgid "%D renamed after being referenced in assembly" +-msgstr "" +- +-#: cgraphunit.c:670 +-#, gcc-internal-format +-msgid "aux field set for edge %s->%s" +-msgstr "" +- +-#: cgraphunit.c:676 +-#, fuzzy, gcc-internal-format +-msgid "Execution count is negative" +-msgstr "el valor de desplaçament a l'esquerra és negatiu" +- +-#: cgraphunit.c:683 +-#, fuzzy, gcc-internal-format +-msgid "caller edge count is negative" +-msgstr "el valor de desplaçament a l'esquerra és negatiu" +- +-#: cgraphunit.c:688 +-#, gcc-internal-format +-msgid "caller edge frequency is negative" +-msgstr "" +- +-#: cgraphunit.c:693 +-#, gcc-internal-format +-msgid "caller edge frequency is too large" +-msgstr "" +- +-#: cgraphunit.c:702 +-#, fuzzy, gcc-internal-format +-msgid "inlined_to pointer is wrong" +-msgstr "falta la secció de punters" +- +-#: cgraphunit.c:707 +-#, fuzzy, gcc-internal-format +-msgid "multiple inline callers" +-msgstr "specificadors \"virtual\" múltiples" +- +-#: cgraphunit.c:714 +-#, gcc-internal-format +-msgid "inlined_to pointer set for noninline callers" +-msgstr "" +- +-#: cgraphunit.c:720 +-#, gcc-internal-format +-msgid "inlined_to pointer is set but no predecessors found" +-msgstr "" +- +-#: cgraphunit.c:725 +-#, fuzzy, gcc-internal-format +-msgid "inlined_to pointer refers to itself" +-msgstr "punter no vàlid al camp de bit \"%D\"" +- +-#: cgraphunit.c:735 +-#, gcc-internal-format +-msgid "node not found in cgraph_hash" +-msgstr "" +- +-#: cgraphunit.c:763 +-#, gcc-internal-format +-msgid "shared call_stmt:" +-msgstr "" +- +-#: cgraphunit.c:770 +-#, fuzzy, gcc-internal-format +-msgid "edge points to wrong declaration:" +-msgstr "s'usa \"%s\" previ a la declaració" +- +-#: cgraphunit.c:779 +-#, gcc-internal-format +-msgid "missing callgraph edge for call stmt:" +-msgstr "" +- +-#: cgraphunit.c:795 +-#, gcc-internal-format +-msgid "edge %s->%s has no corresponding call_stmt" +-msgstr "" +- +-#: cgraphunit.c:807 +-#, fuzzy, gcc-internal-format +-msgid "verify_cgraph_node failed" +-msgstr "verify_flow_info fallat" +- +-#: cgraphunit.c:909 cgraphunit.c:932 +-#, gcc-internal-format +-msgid "%J% attribute have effect only on public objects" +-msgstr "" +- +-#: cgraphunit.c:1122 +-#, fuzzy, gcc-internal-format +-msgid "failed to reclaim unneeded function" +-msgstr "el camp \"%s\" es declara com una funció" +- +-#: cgraphunit.c:1454 +-#, gcc-internal-format +-msgid "nodes with no released memory found" +-msgstr "" +- +-#: collect2.c:1189 +-#, fuzzy, gcc-internal-format +-msgid "unknown demangling style '%s'" +-msgstr "es desconeix el mode de màquina \"%s\"" +- +-#: collect2.c:1512 +-#, gcc-internal-format +-msgid "%s terminated with signal %d [%s]%s" +-msgstr "%s acabat amb el senyal %d [%s]%s" +- +-#: collect2.c:1530 +-#, gcc-internal-format +-msgid "%s returned %d exit status" +-msgstr "%s va retornar l'estat de sortida %d" +- +-#: collect2.c:2242 +-#, fuzzy, gcc-internal-format +-msgid "cannot find 'ldd'" +-msgstr "no es troba \"ldd\"" +- +-#: convert.c:69 +-#, gcc-internal-format +-msgid "cannot convert to a pointer type" +-msgstr "no es pot convertir a un tipus punter" +- +-#: convert.c:333 +-#, gcc-internal-format +-msgid "pointer value used where a floating point value was expected" +-msgstr "es va usar un valor de punter on s'esperava un valor de coma flotant" +- +-#: convert.c:337 +-#, gcc-internal-format +-msgid "aggregate value used where a float was expected" +-msgstr "es va usar un valor agregat on s'esperava un float" +- +-#: convert.c:362 +-#, gcc-internal-format +-msgid "conversion to incomplete type" +-msgstr "conversió a tipus de dada incompleta" +- +-#: convert.c:731 convert.c:807 +-#, gcc-internal-format +-msgid "can't convert between vector values of different size" +-msgstr "no es pot convertir entre valors vectorials de grandàries diferents" +- +-#: convert.c:737 +-#, gcc-internal-format +-msgid "aggregate value used where an integer was expected" +-msgstr "es va usar un valor agregat on s'esperava un enter" +- +-#: convert.c:787 +-#, gcc-internal-format +-msgid "pointer value used where a complex was expected" +-msgstr "es va usar un valor de punter on s'esperava un complex" +- +-#: convert.c:791 +-#, gcc-internal-format +-msgid "aggregate value used where a complex was expected" +-msgstr "es va usar un valor agregat on s'esperava un complex" +- +-#: convert.c:813 +-#, gcc-internal-format +-msgid "can't convert value to a vector" +-msgstr "no es pot convertir el valor a un vector" +- +-#: convert.c:852 +-#, fuzzy, gcc-internal-format +-msgid "aggregate value used where a fixed-point was expected" +-msgstr "es va usar un valor agregat on s'esperava un float" +- +-#: coverage.c:182 +-#, fuzzy, gcc-internal-format +-msgid "%qs is not a gcov data file" +-msgstr "\"%s\" no és fitxer de dades gcov" +- +-#: coverage.c:193 +-#, fuzzy, gcc-internal-format +-msgid "%qs is version %q.*s, expected version %q.*s" +-msgstr "\"%s\" en versió \"%.4s\", s'espera la versió \"%.4s\"" +- +-#: coverage.c:273 coverage.c:281 +-#, gcc-internal-format +-msgid "coverage mismatch for function %u while reading execution counters" +-msgstr "" +- +-#: coverage.c:275 coverage.c:370 +-#, gcc-internal-format +-msgid "checksum is %x instead of %x" +-msgstr "" +- +-#: coverage.c:283 coverage.c:372 +-#, gcc-internal-format +-msgid "number of counters is %d instead of %d" +-msgstr "" +- +-#: coverage.c:289 +-#, gcc-internal-format +-msgid "cannot merge separate %s counters for function %u" +-msgstr "" +- +-#: coverage.c:310 +-#, fuzzy, gcc-internal-format +-msgid "%qs has overflowed" +-msgstr "desbordament de la pila per a \"%s\"" +- +-#: coverage.c:347 +-#, fuzzy, gcc-internal-format +-msgid "no coverage for function %qs found" +-msgstr "%s:no es troben funcions\n" +- +-#: coverage.c:361 coverage.c:364 +-#, gcc-internal-format +-msgid "coverage mismatch for function %qs while reading counter %qs" +-msgstr "" +- +-#: coverage.c:380 +-#, gcc-internal-format +-msgid "coverage mismatch ignored due to -Wcoverage-mismatch" +-msgstr "" +- +-#: coverage.c:382 +-#, gcc-internal-format +-msgid "execution counts estimated" +-msgstr "" +- +-#: coverage.c:385 +-#, gcc-internal-format +-msgid "this can result in poorly optimized code" +-msgstr "" +- +-#: coverage.c:543 +-#, gcc-internal-format +-msgid "cannot open %s" +-msgstr "no es pot obrir %s" +- +-#: coverage.c:578 +-#, fuzzy, gcc-internal-format +-msgid "error writing %qs" +-msgstr "error a l'escriure a \"%s\"" +- +-#: dbgcnt.c:127 +-#, gcc-internal-format +-msgid "Can not find a valid counter:value pair:" +-msgstr "" +- +-#: dbgcnt.c:128 +-#, gcc-internal-format +-msgid "-fdbg-cnt=%s" +-msgstr "" +- +-#: dbgcnt.c:129 +-#, fuzzy, gcc-internal-format +-msgid " %s" +-msgstr " \"%D\"" +- +-#: diagnostic.c:660 +-#, gcc-internal-format +-msgid "in %s, at %s:%d" +-msgstr "en %s, en %s:%d" +- +-#: dominance.c:983 +-#, fuzzy, gcc-internal-format +-msgid "dominator of %d status unknown" +-msgstr "el tipus de \"%E\" és desconegut" +- +-#: dominance.c:990 +-#, gcc-internal-format +-msgid "dominator of %d should be %d, not %d" +-msgstr "" +- +-#: dwarf2out.c:3634 +-#, fuzzy, gcc-internal-format +-msgid "DW_LOC_OP %s not implemented" +-msgstr "DW_LOC_OP %s no està implementat\n" +- +-#: emit-rtl.c:2326 +-#, fuzzy, gcc-internal-format +-msgid "invalid rtl sharing found in the insn" +-msgstr "operand no vàlid en la instrucció" +- +-#: emit-rtl.c:2328 +-#, gcc-internal-format +-msgid "shared rtx" +-msgstr "" +- +-#: emit-rtl.c:2330 +-#, fuzzy, gcc-internal-format +-msgid "internal consistency failure" +-msgstr "avortament intern de gcc" +- +-#: emit-rtl.c:3417 +-#, gcc-internal-format +-msgid "ICE: emit_insn used where emit_jump_insn needed:\n" +-msgstr "ICE:s'usa emit_insn on es necessita emit_jump_insn:\n" +- +-#: errors.c:132 +-#, gcc-internal-format +-msgid "abort in %s, at %s:%d" +-msgstr "abandó en %s, en %s:%d" +- +-#: except.c:337 +-#, gcc-internal-format +-msgid "exception handling disabled, use -fexceptions to enable" +-msgstr "maneig d'excepcions desactivat, usi -fexceptions per a activar" +- +-#: except.c:2889 +-#, fuzzy, gcc-internal-format +-msgid "argument of %<__builtin_eh_return_regno%> must be constant" +-msgstr "l'argument de \"__builtin_eh_return_regno\" ha de ser constant" +- +-#: except.c:3022 +-#, gcc-internal-format +-msgid "__builtin_eh_return not supported on this target" +-msgstr "no es dóna suport a _builtin_eh_return en aquest objectiu" +- +-#: except.c:3903 except.c:3912 +-#, gcc-internal-format +-msgid "region_array is corrupted for region %i" +-msgstr "" +- +-#: except.c:3917 +-#, gcc-internal-format +-msgid "outer block of region %i is wrong" +-msgstr "" +- +-#: except.c:3922 +-#, gcc-internal-format +-msgid "region %i may contain throw and is contained in region that may not" +-msgstr "" +- +-#: except.c:3928 +-#, gcc-internal-format +-msgid "negative nesting depth of region %i" +-msgstr "" +- +-#: except.c:3948 +-#, gcc-internal-format +-msgid "tree list ends on depth %i" +-msgstr "" +- +-#: except.c:3953 +-#, fuzzy, gcc-internal-format +-msgid "array does not match the region tree" +-msgstr "la conversió no coincideix amb el tipus de la funció" +- +-#: except.c:3959 +-#, fuzzy, gcc-internal-format +-msgid "verify_eh_tree failed" +-msgstr "verify_flow_info fallat" +- +-#: explow.c:1281 +-#, gcc-internal-format +-msgid "stack limits not supported on this target" +-msgstr "no es dóna suport a límits de pila en aquest objectiu" +- +-#: expr.c:8031 +-#, fuzzy +-msgid "%Kcall to %qs declared with attribute error: %s" +-msgstr "funció \"%s\" re-declarada amb l'atribut «noinline»" +- +-#: expr.c:8037 +-#, fuzzy +-msgid "%Kcall to %qs declared with attribute warning: %s" +-msgstr "funció \"%s\" re-declarada amb l'atribut «noinline»" +- +-#: final.c:1431 +-#, fuzzy, gcc-internal-format +-msgid "invalid argument %qs to -fdebug-prefix-map" +-msgstr "no vàlid argument per a l'atribut \"%s\"" +- +-#: fixed-value.c:104 +-#, fuzzy, gcc-internal-format +-msgid "large fixed-point constant implicitly truncated to fixed-point type" +-msgstr "enter gran truncat implícitament al tipus unsigned" +- +-#: fold-const.c:992 tree-ssa-loop-niter.c:1827 tree-vrp.c:5060 +-#, fuzzy, gcc-internal-format +-msgid "%H%s" +-msgstr "%s" +- +-#: fold-const.c:1363 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when negating a division" +-msgstr "" +- +-#: fold-const.c:3989 fold-const.c:4000 +-#, gcc-internal-format +-msgid "comparison is always %d due to width of bit-field" +-msgstr "la comparança sempre és %d a causa de l'amplària del camp de bit" +- +-#: fold-const.c:5317 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when simplifying range test" +-msgstr "" +- +-#: fold-const.c:5691 fold-const.c:5706 +-#, gcc-internal-format +-msgid "comparison is always %d" +-msgstr "la comparança sempre és %d" +- +-#: fold-const.c:5835 +-#, fuzzy, gcc-internal-format +-msgid "% of unmatched not-equal tests is always 1" +-msgstr "un \"or\" de proves no equivalents sense coincidència sempre és 1" +- +-#: fold-const.c:5840 +-#, fuzzy, gcc-internal-format +-msgid "% of mutually exclusive equal-tests is always 0" +-msgstr "un \"and\" de proves equivalents mútuament exclusives sempre és 0" +- +-#: fold-const.c:8617 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when reducing constant in comparison" +-msgstr "" +- +-#: fold-const.c:8871 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when combining constants around a comparison" +-msgstr "" +- +-#: fold-const.c:13236 +-#, gcc-internal-format +-msgid "fold check: original tree changed by fold" +-msgstr "" +- +-#: function.c:377 +-#, fuzzy, gcc-internal-format +-msgid "%Jtotal size of local objects too large" +-msgstr "%Jla grandària de la variable \"%D\" és massa gran" +- +-#: function.c:837 varasm.c:2095 +-#, fuzzy, gcc-internal-format +-msgid "size of variable %q+D is too large" +-msgstr "%Jla grandària de la variable \"%D\" és massa gran" +- +-#: function.c:1554 gimplify.c:4250 +-#, fuzzy, gcc-internal-format +-msgid "impossible constraint in %" +-msgstr "restricció impossible en \"asm\"" +- +-#: function.c:3538 +-#, fuzzy, gcc-internal-format +-msgid "variable %q+D might be clobbered by % or %" +-msgstr "%Jla variable \"%D\" podria ser apallissada per \"longjmp\" o \"vfork\"" +- +-#: function.c:3559 +-#, fuzzy, gcc-internal-format +-msgid "argument %q+D might be clobbered by % or %" +-msgstr "%Jl'argument \"%D\" podria ser apallissat per \"longjmp\" o \"vfork\"" +- +-#: function.c:4004 +-#, gcc-internal-format +-msgid "function returns an aggregate" +-msgstr "la funció retorna un agregat" +- +-#: function.c:4401 +-#, fuzzy, gcc-internal-format +-msgid "unused parameter %q+D" +-msgstr "%Jparàmetre \"%D\" sense ús" +- +-#: gcc.c:1286 +-#, gcc-internal-format +-msgid "ambiguous abbreviation %s" +-msgstr "abreujament ambigu %s" +- +-#: gcc.c:1313 +-#, fuzzy, gcc-internal-format +-msgid "incomplete '%s' option" +-msgstr "Opció \"%s\" incompleta" +- +-#: gcc.c:1324 +-#, fuzzy, gcc-internal-format +-msgid "missing argument to '%s' option" +-msgstr "Falten arguments per a l'opció \"%s\"" +- +-#: gcc.c:1337 +-#, fuzzy, gcc-internal-format +-msgid "extraneous argument to '%s' option" +-msgstr "argument estrany per a l'opció \"%s\"" +- +-#: gcc.c:3987 +-#, gcc-internal-format +-msgid "warning: -pipe ignored because -save-temps specified" +-msgstr "Avís: s'ignora -pipe perquè es va especificar -save-temps" +- +-#: gcc.c:4276 +-#, fuzzy, gcc-internal-format +-msgid "warning: '-x %s' after last input file has no effect" +-msgstr "avís: \"-x %s\" després de l'últim fitxer d'entrada no té efecte" +- +-#. Catch the case where a spec string contains something like +-#. '%{foo:%*}'. i.e. there is no * in the pattern on the left +-#. hand side of the :. +-#: gcc.c:5314 +-#, gcc-internal-format +-msgid "spec failure: '%%*' has not been initialized by pattern match" +-msgstr "Falla en spec: \"%%*\" no ha estat iniciat per coincidència de patró" +- +-#: gcc.c:5323 +-#, gcc-internal-format +-msgid "warning: use of obsolete %%[ operator in specs" +-msgstr "Avís: ús de l'operador obsolet %%[ en specs" +- +-#: gcc.c:5404 +-#, gcc-internal-format +-msgid "spec failure: unrecognized spec option '%c'" +-msgstr "Falla en spec: Opció d'especificació \"%c\" no reconeguda" +- +-#: gcc.c:6305 +-#, gcc-internal-format +-msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" +-msgstr "" +- +-#: gcc.c:6328 +-#, gcc-internal-format +-msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" +-msgstr "" +- +-#: gcc.c:6415 +-#, fuzzy, gcc-internal-format +-msgid "unrecognized option '-%s'" +-msgstr "opció \"-%s\" no reconeguda" +- +-#: gcc.c:6615 gcc.c:6678 +-#, gcc-internal-format +-msgid "%s: %s compiler not installed on this system" +-msgstr "%s: el compilador %s no està instal·lat en aquest sistema" +- +-#: gcc.c:6778 +-#, gcc-internal-format +-msgid "%s: linker input file unused because linking not done" +-msgstr "%s: fitxer d'entrada de l'enllaçador sense ùs perquè no es va fer enllaç" +- +-#: gcc.c:6818 +-#, gcc-internal-format +-msgid "language %s not recognized" +-msgstr "no es reconeix el llenguatge %s" +- +-#: gcc.c:6889 +-#, gcc-internal-format +-msgid "%s: %s" +-msgstr "%s: %s" +- +-#: gcse.c:6660 +-#, fuzzy, gcc-internal-format +-msgid "%s: %d basic blocks and %d edges/basic block" +-msgstr "GCSE desactivat: %d > 1000 blocs bàsics i %d >= 20 blocs bord/bàsics" +- +-#: gcse.c:6673 +-#, fuzzy, gcc-internal-format +-msgid "%s: %d basic blocks and %d registers" +-msgstr "GCSE desactivat: %d blocs bàsics i %d registres" +- +-#: ggc-common.c:403 ggc-common.c:411 ggc-common.c:479 ggc-common.c:498 +-#: ggc-page.c:2138 ggc-page.c:2169 ggc-page.c:2176 ggc-zone.c:2290 +-#: ggc-zone.c:2305 +-#, gcc-internal-format +-msgid "can't write PCH file: %m" +-msgstr "no es pot escriure el fitxer PCH: %m" +- +-#: ggc-common.c:491 config/i386/host-cygwin.c:57 +-#, fuzzy, gcc-internal-format +-msgid "can't get position in PCH file: %m" +-msgstr "no es pot crear el fitxer d'informació de \"repository\" \"%s\"" +- +-#: ggc-common.c:501 +-#, fuzzy, gcc-internal-format +-msgid "can't write padding to PCH file: %m" +-msgstr "no es pot escriure al fitxer de sortida" +- +-#: ggc-common.c:556 ggc-common.c:564 ggc-common.c:571 ggc-common.c:574 +-#: ggc-common.c:584 ggc-common.c:587 ggc-page.c:2266 ggc-zone.c:2324 +-#, gcc-internal-format +-msgid "can't read PCH file: %m" +-msgstr "no es pot llegir el fitxer PCH: %m" +- +-#: ggc-common.c:579 +-#, gcc-internal-format +-msgid "had to relocate PCH" +-msgstr "" +- +-#: ggc-page.c:1471 +-#, gcc-internal-format +-msgid "open /dev/zero: %m" +-msgstr "open /dev/zero: %m" +- +-#: ggc-page.c:2154 ggc-page.c:2160 +-#, gcc-internal-format +-msgid "can't write PCH file" +-msgstr "no es pot escriure el fitxer PCH" +- +-#: ggc-zone.c:2287 ggc-zone.c:2298 +-#, fuzzy, gcc-internal-format +-msgid "can't seek PCH file: %m" +-msgstr "no es pot llegir el fitxer PCH: %m" +- +-#: ggc-zone.c:2301 +-#, fuzzy, gcc-internal-format +-msgid "can't write PCH fle: %m" +-msgstr "no es pot escriure el fitxer PCH: %m" +- +-#: gimplify.c:4139 +-#, fuzzy, gcc-internal-format +-msgid "invalid lvalue in asm output %d" +-msgstr "lvalue no vàlid en declaració asm" +- +-#: gimplify.c:4251 +-#, gcc-internal-format +-msgid "non-memory input %d must stay in memory" +-msgstr "" +- +-#: gimplify.c:4264 +-#, fuzzy, gcc-internal-format +-msgid "memory input %d is not directly addressable" +-msgstr "el nombre de sortida %d no és directament adreçable" +- +-#: gimplify.c:4743 +-#, gcc-internal-format +-msgid "%qs not specified in enclosing parallel" +-msgstr "" +- +-#: gimplify.c:4745 +-#, gcc-internal-format +-msgid "%Henclosing parallel" +-msgstr "" +- +-#: gimplify.c:4799 +-#, gcc-internal-format +-msgid "iteration variable %qs should be private" +-msgstr "" +- +-#: gimplify.c:4813 +-#, gcc-internal-format +-msgid "iteration variable %qs should not be firstprivate" +-msgstr "" +- +-#: gimplify.c:4816 +-#, fuzzy, gcc-internal-format +-msgid "iteration variable %qs should not be reduction" +-msgstr "es va usar la va variable \"%s\" en funcions niades" +- +-#: gimplify.c:4940 +-#, fuzzy, gcc-internal-format +-msgid "%s variable %qs is private in outer context" +-msgstr "\"%D\" no es va declarar en aquest àmbit" +- +-#: gimplify.c:6108 +-#, gcc-internal-format +-msgid "gimplification failed" +-msgstr "" +- +-#: global.c:284 global.c:297 global.c:311 +-#, fuzzy, gcc-internal-format +-msgid "%s cannot be used in asm here" +-msgstr "no es pot usar %s en ensamblador aquí" +- +-#: graph.c:401 java/jcf-parse.c:1757 java/jcf-parse.c:1897 objc/objc-act.c:500 +-#, fuzzy, gcc-internal-format +-msgid "can't open %s: %m" +-msgstr "no es pot obrir %s" +- +-#: haifa-sched.c:184 +-#, gcc-internal-format +-msgid "fix_sched_param: unknown param: %s" +-msgstr "fix_sched_param: paràmetre desconegut: %s" +- +-#: omp-low.c:1288 +-#, gcc-internal-format +-msgid "work-sharing region may not be closely nested inside of work-sharing, critical, ordered or master region" +-msgstr "" +- +-#: omp-low.c:1304 +-#, gcc-internal-format +-msgid "master region may not be closely nested inside of work-sharing region" +-msgstr "" +- +-#: omp-low.c:1318 +-#, gcc-internal-format +-msgid "ordered region may not be closely nested inside of critical region" +-msgstr "" +- +-#: omp-low.c:1324 +-#, gcc-internal-format +-msgid "ordered region must be closely nested inside a loop region with an ordered clause" +-msgstr "" +- +-#: omp-low.c:1338 +-#, gcc-internal-format +-msgid "critical region may not be nested inside a critical region with the same name" +-msgstr "" +- +-#: omp-low.c:5050 cp/decl.c:2660 cp/parser.c:7417 cp/parser.c:7437 +-#, gcc-internal-format +-msgid "invalid exit from OpenMP structured block" +-msgstr "" +- +-#: omp-low.c:5052 +-#, gcc-internal-format +-msgid "invalid entry to OpenMP structured block" +-msgstr "" +- +-#: opts.c:173 +-#, gcc-internal-format +-msgid "argument %qs to %<-femit-struct-debug-detailed%> not recognized" +-msgstr "" +- +-#: opts.c:207 +-#, gcc-internal-format +-msgid "argument %qs to %<-femit-struct-debug-detailed%> unknown" +-msgstr "" +- +-#: opts.c:213 +-#, gcc-internal-format +-msgid "%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-femit-struct-debug-detailed=ind:...%>" +-msgstr "" +- +-#. Eventually this should become a hard error IMO. +-#: opts.c:438 +-#, gcc-internal-format +-msgid "command line option \"%s\" is valid for %s but not for %s" +-msgstr "l'opció de línia d'ordres \"%s\" és vàlida per a %s però no per a %s" +- +-#: opts.c:492 +-#, fuzzy, gcc-internal-format +-msgid "command line option %qs is not supported by this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: opts.c:545 +-#, gcc-internal-format +-msgid "missing argument to \"%s\"" +-msgstr "falten arguments per a \"%s\"" +- +-#: opts.c:555 +-#, gcc-internal-format +-msgid "argument to \"%s\" should be a non-negative integer" +-msgstr "l'argument per a \"%s\" ha de ser un enter non negatiu" +- +-#: opts.c:728 +-#, gcc-internal-format +-msgid "unrecognized command line option \"%s\"" +-msgstr "opció de línia d'ordres \"%s\" desconeguda" +- +-#: opts.c:947 +-#, gcc-internal-format +-msgid "-Wuninitialized is not supported without -O" +-msgstr "no es dóna suport a -Wuninitialized sense -O" +- +-#: opts.c:962 +-#, gcc-internal-format +-msgid "-freorder-blocks-and-partition does not work with exceptions" +-msgstr "" +- +-#: opts.c:973 +-#, gcc-internal-format +-msgid "-freorder-blocks-and-partition does not support unwind info" +-msgstr "" +- +-#: opts.c:987 +-#, gcc-internal-format +-msgid "-freorder-blocks-and-partition does not work on this architecture" +-msgstr "" +- +-#: opts.c:1263 +-#, gcc-internal-format +-msgid "unrecognized include_flags 0x%x passed to print_specific_help" +-msgstr "" +- +-#: opts.c:1593 +-#, fuzzy, gcc-internal-format +-msgid "structure alignment must be a small power of two, not %d" +-msgstr "l'alineació ha de ser una potència petita de dos, no %d" +- +-#: opts.c:1656 +-#, fuzzy, gcc-internal-format +-msgid "unrecognized visibility value \"%s\"" +-msgstr "no es reconeix el nom de registre \"%s\"" +- +-#: opts.c:1704 +-#, gcc-internal-format +-msgid "unrecognized register name \"%s\"" +-msgstr "no es reconeix el nom de registre \"%s\"" +- +-#: opts.c:1728 +-#, gcc-internal-format +-msgid "unknown tls-model \"%s\"" +-msgstr "tls-model \"%s\" desconegut" +- +-#: opts.c:1803 +-#, gcc-internal-format +-msgid "%s: --param arguments should be of the form NAME=VALUE" +-msgstr "" +- +-#: opts.c:1808 +-#, fuzzy, gcc-internal-format +-msgid "invalid --param value %qs" +-msgstr "valor de --param \"%s\" no vàlid" +- +-#: opts.c:1931 +-#, gcc-internal-format +-msgid "target system does not support debug output" +-msgstr "el sistema objectiu no té suport per a sortides de depuració" +- +-#: opts.c:1938 +-#, gcc-internal-format +-msgid "debug format \"%s\" conflicts with prior selection" +-msgstr "format de depuració \"%s\" en conflicte amb una selecció prèvia" +- +-#: opts.c:1954 +-#, gcc-internal-format +-msgid "unrecognised debug output level \"%s\"" +-msgstr "no es reconeix el nivell de sortida de depuració \"%s\"" +- +-#: opts.c:1956 +-#, gcc-internal-format +-msgid "debug output level %s is too high" +-msgstr "el nivell de sortida de depuració %s és massa alt" +- +-#: opts.c:2038 +-#, gcc-internal-format +-msgid "-Werror=%s: No option -%s" +-msgstr "" +- +-#: params.c:68 +-#, fuzzy, gcc-internal-format +-msgid "minimum value of parameter %qs is %u" +-msgstr "el paràmetre \"%s\" no és vàlid" +- +-#: params.c:73 +-#, gcc-internal-format +-msgid "maximum value of parameter %qs is %u" +-msgstr "" +- +-#. If we didn't find this parameter, issue an error message. +-#: params.c:85 +-#, fuzzy, gcc-internal-format +-msgid "invalid parameter %qs" +-msgstr "el paràmetre \"%s\" no és vàlid" +- +-#: profile.c:304 +-#, gcc-internal-format +-msgid "corrupted profile info: run_max * runs < sum_max" +-msgstr "" +- +-#: profile.c:310 +-#, gcc-internal-format +-msgid "corrupted profile info: sum_all is smaller than sum_max" +-msgstr "" +- +-#: profile.c:355 +-#, gcc-internal-format +-msgid "corrupted profile info: edge from %i to %i exceeds maximal count" +-msgstr "informació de perfil corrupta: el tall des de %i fins a %i excedeix el compte màxim" +- +-#: profile.c:519 +-#, gcc-internal-format +-msgid "corrupted profile info: number of iterations for basic block %d thought to be %i" +-msgstr "informació de perfil corrupta: el nombre d'iteracions pel bloc bàsica %d hauria de ser %i" +- +-#: profile.c:540 +-#, gcc-internal-format +-msgid "corrupted profile info: number of executions for edge %d-%d thought to be %i" +-msgstr "informació de perfil corrupta: el nombre d'execicions pel tall %d-%d hauria de ser %i" +- +-#: reg-stack.c:538 +-#, gcc-internal-format +-msgid "output constraint %d must specify a single register" +-msgstr "la restricció de sortida %d s'ha d'especificar un sol registre" +- +-#: reg-stack.c:548 +-#, gcc-internal-format +-msgid "output constraint %d cannot be specified together with \"%s\" clobber" +-msgstr "la restricció de sortida %d no es pot especificar amb el clobber \"%s\"" +- +-#: reg-stack.c:571 +-#, gcc-internal-format +-msgid "output regs must be grouped at top of stack" +-msgstr "els registres de sortida deuen ser agrupats en la part superior de la pila" +- +-#: reg-stack.c:608 +-#, gcc-internal-format +-msgid "implicitly popped regs must be grouped at top of stack" +-msgstr "els registres extrets implícitament deuen ser agrupats en la part superior de la pila" +- +-#: reg-stack.c:627 +-#, fuzzy, gcc-internal-format +-msgid "output operand %d must use %<&%> constraint" +-msgstr "l'operand de sortida %d ha d'usar la restricció \"&\"" +- +-#: regclass.c:875 +-#, gcc-internal-format +-msgid "can't use '%s' as a %s register" +-msgstr "no es pot usar \"%s\" com un registre %s" +- +-#: regclass.c:890 config/ia64/ia64.c:5138 config/ia64/ia64.c:5145 +-#: config/pa/pa.c:359 config/pa/pa.c:366 config/spu/spu.c:3886 +-#: config/spu/spu.c:3893 +-#, gcc-internal-format +-msgid "unknown register name: %s" +-msgstr "nom de registre desconegut: %s" +- +-#: regclass.c:900 +-#, gcc-internal-format +-msgid "global register variable follows a function definition" +-msgstr "la variable de registre global segueix a una definició de funció" +- +-#: regclass.c:904 +-#, gcc-internal-format +-msgid "register used for two global register variables" +-msgstr "nom de registre usat per dues variables de registre globals" +- +-#: regclass.c:909 +-#, gcc-internal-format +-msgid "call-clobbered register used for global register variable" +-msgstr "registre de cridada alterada usat per a una variable de registre global" +- +-#: regrename.c:1893 +-#, gcc-internal-format +-msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)" +-msgstr "validate_value_data: [%u] next_regno erroni per a la cadena buida (%u)" +- +-#: regrename.c:1905 +-#, gcc-internal-format +-msgid "validate_value_data: Loop in regno chain (%u)" +-msgstr "validate_value_data: Cicle en la cadena regno (%u)" +- +-#: regrename.c:1908 +-#, gcc-internal-format +-msgid "validate_value_data: [%u] Bad oldest_regno (%u)" +-msgstr "validate_value_data: [%u] oldest_regno erroni (%u)" +- +-#: regrename.c:1920 +-#, gcc-internal-format +-msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" +-msgstr "validate_value_data: [%u] Registre no buit en la cadena (%s %u %i)" +- +-#: reload.c:1252 +-#, fuzzy, gcc-internal-format +-msgid "cannot reload integer constant operand in %" +-msgstr "no es pot recarregar un operador constant enter en \"asm\"" +- +-#: reload.c:1266 +-#, fuzzy, gcc-internal-format +-msgid "impossible register constraint in %" +-msgstr "restricció de registres impossible en \"asm\"" +- +-#: reload.c:3564 +-#, fuzzy, gcc-internal-format +-msgid "%<&%> constraint used with no register class" +-msgstr "es va usar la restricció \"&\" sense classe de registre" +- +-#: reload.c:3735 reload.c:3975 +-#, fuzzy, gcc-internal-format +-msgid "inconsistent operand constraints in an %" +-msgstr "restriccions d'operand inconsistents en un \"asm\"" +- +-#: reload1.c:1301 +-#, fuzzy, gcc-internal-format +-msgid "% operand has impossible constraints" +-msgstr "l'operand asm %d probablement no coincideix amb les restriccions" +- +-#: reload1.c:1321 +-#, gcc-internal-format +-msgid "frame size too large for reliable stack checking" +-msgstr "la grandària del marc és massa gran per a una revisió fiable de la pila" +- +-#: reload1.c:1324 +-#, gcc-internal-format +-msgid "try reducing the number of local variables" +-msgstr "intenti reduir el nombre de variables locals" +- +-#: reload1.c:1987 +-#, fuzzy, gcc-internal-format +-msgid "can't find a register in class %qs while reloading %" +-msgstr "no es pot trobar un registre en la classe \"%s\" mentre es recarrega \"asm\"." +- +-#: reload1.c:1992 +-#, fuzzy, gcc-internal-format +-msgid "unable to find a register to spill in class %qs" +-msgstr "no es pot trobar un registre per a buidar la classe \"%s\"." +- +-#: reload1.c:4160 +-#, fuzzy, gcc-internal-format +-msgid "% operand requires impossible reload" +-msgstr "l'operand \"asm\" requereix una recarrega impossible" +- +-#: reload1.c:5368 +-#, fuzzy, gcc-internal-format +-msgid "% operand constraint incompatible with operand size" +-msgstr "la restricció de l'operand \"asm\" és incompatible amb la grandària de l'operand" +- +-#: reload1.c:7039 +-#, fuzzy, gcc-internal-format +-msgid "output operand is constant in %" +-msgstr "l'operand de sortida és constant en \"asm\"" +- +-#: rtl.c:484 +-#, fuzzy, gcc-internal-format +-msgid "RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%d" +-msgstr "revisió RTL: accés de elt %d de \"%s\" amb l'últim elt %d en %s, en %s:%d" +- +-#: rtl.c:494 +-#, gcc-internal-format +-msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d" +-msgstr "revisió RTL: s'esperava el tipus elt %d \"%c\", es té \"%c\" (rtx %s) en %s, en %s:%d" +- +-#: rtl.c:504 +-#, gcc-internal-format +-msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d" +-msgstr "revisió RTL: s'esperava el tipus elt %d \"%c\" o \"%c\", es té \"%c\" (rtx %s) en %s, en %s:%d" +- +-#: rtl.c:513 +-#, fuzzy, gcc-internal-format +-msgid "RTL check: expected code '%s', have '%s' in %s, at %s:%d" +-msgstr "Revisió RTL: s'esperava el codi \"%s\", es té \"%s\" en %s, en %s:%d" +- +-#: rtl.c:523 +-#, fuzzy, gcc-internal-format +-msgid "RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%d" +-msgstr "Revisió RTL: s'esperava el codi \"%s\" o \"%s\", es té \"%s\" en %s, en %s:%d" +- +-#: rtl.c:550 +-#, fuzzy, gcc-internal-format +-msgid "RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%d" +-msgstr "revisió RTL: accés de elt %d de \"%s\" amb l'últim elt %d en %s, en %s:%d" +- +-#: rtl.c:560 +-#, gcc-internal-format +-msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d" +-msgstr "Revisió RTL: accés de elt %d de vector amb l'últim elt %d en %s, en %s:%d" +- +-#: rtl.c:571 +-#, fuzzy, gcc-internal-format +-msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d" +-msgstr "Revisió RTL: es va usar %s amb el codi rtx inesperat \"%s\" en %s, en %s:%d" +- +-#: stmt.c:317 +-#, fuzzy, gcc-internal-format +-msgid "output operand constraint lacks %<=%>" +-msgstr "la restricció d'operand de sortida manca de \"=\"" +- +-#: stmt.c:332 +-#, fuzzy, gcc-internal-format +-msgid "output constraint %qc for operand %d is not at the beginning" +-msgstr "la restricció de sortida \"%c\" per a l'operand %d no està al principi" +- +-#: stmt.c:355 +-#, fuzzy, gcc-internal-format +-msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>" +-msgstr "la restricció d'operand conté \"+\" o \"=\" mal posicionat" +- +-#: stmt.c:362 stmt.c:461 +-#, fuzzy, gcc-internal-format +-msgid "%<%%%> constraint used with last operand" +-msgstr "restricció \"%%\" utilitzada amb l'últim operand" +- +-#: stmt.c:381 +-#, gcc-internal-format +-msgid "matching constraint not valid in output operand" +-msgstr "la restricció coincident no és vàlida en l'operand de sortida" +- +-#: stmt.c:452 +-#, fuzzy, gcc-internal-format +-msgid "input operand constraint contains %qc" +-msgstr "la restricció d'operand d'entrada conté \"%c\"" +- +-#: stmt.c:494 +-#, gcc-internal-format +-msgid "matching constraint references invalid operand number" +-msgstr "la restricció de coincidència fa referència a un nombre d'operand no vàlid" +- +-#: stmt.c:532 +-#, fuzzy, gcc-internal-format +-msgid "invalid punctuation %qc in constraint" +-msgstr "puntuació no vàlida \"%c\" en la restricció" +- +-#: stmt.c:556 +-#, fuzzy, gcc-internal-format +-msgid "matching constraint does not allow a register" +-msgstr "la restricció coincident no és vàlida en l'operand de sortida" +- +-#: stmt.c:610 +-#, fuzzy, gcc-internal-format +-msgid "asm-specifier for variable %qs conflicts with asm clobber list" +-msgstr "els qualificadors asm per a la variable \"%s\" generen conflicte amb la lista d'agrupació asm" +- +-#: stmt.c:702 +-#, fuzzy, gcc-internal-format +-msgid "unknown register name %qs in %" +-msgstr "nom de registre \"%s\" desconegut en \"asm\"" +- +-#: stmt.c:710 +-#, fuzzy, gcc-internal-format +-msgid "PIC register %qs clobbered in %" +-msgstr "nom de registre desconegut \"%s\" en \"asm\"" +- +-#: stmt.c:757 +-#, fuzzy, gcc-internal-format +-msgid "more than %d operands in %" +-msgstr "no més de %d operands en \"asm\"" +- +-#: stmt.c:820 +-#, gcc-internal-format +-msgid "output number %d not directly addressable" +-msgstr "el nombre de sortida %d no és directament adreçable" +- +-#: stmt.c:903 +-#, fuzzy, gcc-internal-format +-msgid "asm operand %d probably doesn%'t match constraints" +-msgstr "l'operand asm %d probablement no coincideix amb les restriccions" +- +-#: stmt.c:913 +-#, gcc-internal-format +-msgid "use of memory input without lvalue in asm operand %d is deprecated" +-msgstr "" +- +-#: stmt.c:1060 +-#, gcc-internal-format +-msgid "asm clobber conflict with output operand" +-msgstr "l'agrupació asm causa conflictes amb l'operand de sortida" +- +-#: stmt.c:1065 +-#, gcc-internal-format +-msgid "asm clobber conflict with input operand" +-msgstr "l'agrupació asm causa conflictes amb l'operand d'entrada" +- +-#: stmt.c:1143 +-#, fuzzy, gcc-internal-format +-msgid "too many alternatives in %" +-msgstr "massa alternatives en \"asm\"" +- +-#: stmt.c:1155 +-#, fuzzy, gcc-internal-format +-msgid "operand constraints for % differ in number of alternatives" +-msgstr "les restriccions d'operands per a \"asm\" difereixen en el nombre d'alternatives" +- +-#: stmt.c:1208 +-#, fuzzy, gcc-internal-format +-msgid "duplicate asm operand name %qs" +-msgstr "nom d'operand asm \"%s\" duplicat" +- +-#: stmt.c:1306 +-#, gcc-internal-format +-msgid "missing close brace for named operand" +-msgstr "falta la clau final per a l'operand nomenat" +- +-#: stmt.c:1334 +-#, fuzzy, gcc-internal-format +-msgid "undefined named operand %qs" +-msgstr "operand nomenat no definit \"%s\"" +- +-#: stmt.c:1482 +-#, fuzzy, gcc-internal-format +-msgid "%Hvalue computed is not used" +-msgstr "l'autòmat \"%s\" no s'utilitza" +- +-#: stor-layout.c:149 +-#, fuzzy, gcc-internal-format +-msgid "type size can%'t be explicitly evaluated" +-msgstr "la grandària del tipus no pot ser avaluat explícitament" +- +-#: stor-layout.c:151 +-#, gcc-internal-format +-msgid "variable-size type declared outside of any function" +-msgstr "tipus de grandària variable declarat fora de qualsevol funció" +- +-#: stor-layout.c:467 +-#, fuzzy, gcc-internal-format +-msgid "size of %q+D is %d bytes" +-msgstr "la grandària de \"%s\" és de %d octets" +- +-#: stor-layout.c:469 +-#, fuzzy, gcc-internal-format +-msgid "size of %q+D is larger than %wd bytes" +-msgstr "la grandària de \"%s\" és major que %d octets" +- +-#: stor-layout.c:899 +-#, fuzzy, gcc-internal-format +-msgid "packed attribute causes inefficient alignment for %q+D" +-msgstr "l'atribut packed causa una alineació ineficient per a \"%s\"" +- +-#: stor-layout.c:902 +-#, fuzzy, gcc-internal-format +-msgid "packed attribute is unnecessary for %q+D" +-msgstr "no és necessari l'atribut packed per a \"%s\"" +- +-#. No, we need to skip space before this field. +-#. Bump the cumulative size to multiple of field alignment. +-#: stor-layout.c:919 +-#, fuzzy, gcc-internal-format +-msgid "padding struct to align %q+D" +-msgstr "estructura de farcit per a alinear \"%s\"" +- +-#: stor-layout.c:1270 +-#, gcc-internal-format +-msgid "padding struct size to alignment boundary" +-msgstr "grandària de l'estructura de farcit pels límits d'alineació" +- +-#: stor-layout.c:1300 +-#, fuzzy, gcc-internal-format +-msgid "packed attribute causes inefficient alignment for %qs" +-msgstr "l'atribut packed causa una alineació ineficient per a \"%s\"" +- +-#: stor-layout.c:1304 +-#, fuzzy, gcc-internal-format +-msgid "packed attribute is unnecessary for %qs" +-msgstr "no és necessari l'atribut packed per a \"%s\"" +- +-#: stor-layout.c:1310 +-#, gcc-internal-format +-msgid "packed attribute causes inefficient alignment" +-msgstr "l'atribut packed causa una alineació ineficient" +- +-#: stor-layout.c:1312 +-#, gcc-internal-format +-msgid "packed attribute is unnecessary" +-msgstr "no és necessari l'atribut packed" +- +-#: stor-layout.c:1842 +-#, fuzzy, gcc-internal-format +-msgid "alignment of array elements is greater than element size" +-msgstr "l'alineació de \"%s\" és massa granda que l'alineació màxima del fitxer objecte. S'usa %d." +- +-#: targhooks.c:120 +-#, gcc-internal-format +-msgid "__builtin_saveregs not supported by this target" +-msgstr "no es dóna suport a _builtin_saveregs en aquest objectiu" +- +-#: tlink.c:483 +-#, gcc-internal-format +-msgid "repository file '%s' does not contain command-line arguments" +-msgstr "" +- +-#: tlink.c:728 +-#, gcc-internal-format +-msgid "'%s' was assigned to '%s', but was not defined during recompilation, or vice versa" +-msgstr "" +- +-#: tlink.c:798 +-#, gcc-internal-format +-msgid "ld returned %d exit status" +-msgstr "ld va retornar l'estat de sortida %d" +- +-#: toplev.c:528 +-#, fuzzy, gcc-internal-format +-msgid "invalid option argument %qs" +-msgstr "opció \"%s\" no vàlida" +- +-#: toplev.c:626 +-#, gcc-internal-format +-msgid "getting core file size maximum limit: %m" +-msgstr "" +- +-#: toplev.c:629 +-#, gcc-internal-format +-msgid "setting core file size limit to maximum: %m" +-msgstr "" +- +-#: toplev.c:849 +-#, fuzzy, gcc-internal-format +-msgid "%q+F declared % but never defined" +-msgstr "\"%s\" declarat \"static\" però mai definit" +- +-#: toplev.c:877 +-#, fuzzy, gcc-internal-format +-msgid "%q+D defined but not used" +-msgstr "\"%s\" definit però no utilitzat" +- +-#: toplev.c:920 +-#, fuzzy, gcc-internal-format +-msgid "%qD is deprecated (declared at %s:%d)" +-msgstr "\"%s\" és depreciat (declarat a %s:%d)" +- +-#: toplev.c:943 +-#, fuzzy, gcc-internal-format +-msgid "%qs is deprecated (declared at %s:%d)" +-msgstr "\"%s\" és depreciat (declarat a %s:%d)" +- +-#: toplev.c:947 +-#, gcc-internal-format +-msgid "type is deprecated (declared at %s:%d)" +-msgstr "type és depreciat (declarat a %s:%d)" +- +-#: toplev.c:953 +-#, fuzzy, gcc-internal-format +-msgid "%qs is deprecated" +-msgstr "\"%s\" és depreciat" +- +-#: toplev.c:955 +-#, gcc-internal-format +-msgid "type is deprecated" +-msgstr "type és depreciat" +- +-#: toplev.c:975 toplev.c:1002 +-#, gcc-internal-format +-msgid "GCC supports only %d input file changes" +-msgstr "" +- +-#: toplev.c:1160 +-#, gcc-internal-format +-msgid "unrecognized gcc debugging option: %c" +-msgstr "opció de depuració de gcc no reconeguda: %c" +- +-#: toplev.c:1411 +-#, fuzzy, gcc-internal-format +-msgid "can%'t open %s for writing: %m" +-msgstr "no es pot obrir %s per a escriptura" +- +-#: toplev.c:1432 +-#, fuzzy, gcc-internal-format +-msgid "-frecord-gcc-switches is not supported by the current target" +-msgstr "no es dóna suport a -fdata-sections en aquest objectiu" +- +-#: toplev.c:1745 +-#, fuzzy, gcc-internal-format +-msgid "this target does not support %qs" +-msgstr "%s no té suport per a %s" +- +-#: toplev.c:1794 +-#, gcc-internal-format +-msgid "instruction scheduling not supported on this target machine" +-msgstr "no es dóna suport a la planificació d'instruccions en aquest objectiu" +- +-#: toplev.c:1798 +-#, gcc-internal-format +-msgid "this target machine does not have delayed branches" +-msgstr "aquesta màquina objectiu no té ramificacions alentides" +- +-#: toplev.c:1812 +-#, gcc-internal-format +-msgid "-f%sleading-underscore not supported on this target machine" +-msgstr "no es dóna suport a -f%sleading-underscore en aquest objectiu" +- +-#: toplev.c:1885 +-#, fuzzy, gcc-internal-format +-msgid "target system does not support the \"%s\" debug format" +-msgstr "%s no té suport per al format \"%%%s%c\" %s" +- +-#: toplev.c:1898 +-#, gcc-internal-format +-msgid "variable tracking requested, but useless unless producing debug info" +-msgstr "" +- +-#: toplev.c:1901 +-#, fuzzy, gcc-internal-format +-msgid "variable tracking requested, but not supported by this debug format" +-msgstr "%s no té suport per al format \"%%%s%c\" %s" +- +-#: toplev.c:1935 +-#, fuzzy, gcc-internal-format +-msgid "can%'t open %s: %m" +-msgstr "no es pot obrir %s" +- +-#: toplev.c:1942 +-#, gcc-internal-format +-msgid "-ffunction-sections not supported for this target" +-msgstr "no es dóna suport a -ffunction-sections en aquest objectiu" +- +-#: toplev.c:1947 +-#, gcc-internal-format +-msgid "-fdata-sections not supported for this target" +-msgstr "no es dóna suport a -fdata-sections en aquest objectiu" +- +-#: toplev.c:1954 +-#, gcc-internal-format +-msgid "-ffunction-sections disabled; it makes profiling impossible" +-msgstr "-ffunction-sections desactivat; fa impossible l'anàlisi de perfil" +- +-#: toplev.c:1961 +-#, gcc-internal-format +-msgid "-fprefetch-loop-arrays not supported for this target" +-msgstr "no es dóna suport a -fprefetch-loop-arrays en aquest objectiu" +- +-#: toplev.c:1967 +-#, gcc-internal-format +-msgid "-fprefetch-loop-arrays not supported for this target (try -march switches)" +-msgstr "no es dóna suport a -fprefetch-loop-arrays en aquest objectiu (prova opcions -march)" +- +-#: toplev.c:1976 +-#, gcc-internal-format +-msgid "-fprefetch-loop-arrays is not supported with -Os" +-msgstr "no es dóna suport a -fprefetch-loop-arrays amb -Os" +- +-#: toplev.c:1983 +-#, gcc-internal-format +-msgid "-ffunction-sections may affect debugging on some targets" +-msgstr "-ffunction-sections podria afectar la depuració en alguns objectius" +- +-#: toplev.c:1999 +-#, fuzzy, gcc-internal-format +-msgid "-fstack-protector not supported for this target" +-msgstr "no es dóna suport a -fdata-sections en aquest objectiu" +- +-#: toplev.c:2012 +-#, gcc-internal-format +-msgid "unwind tables currently requires a frame pointer for correctness" +-msgstr "" +- +-#: toplev.c:2198 +-#, fuzzy, gcc-internal-format +-msgid "error writing to %s: %m" +-msgstr "error a l'escriure a %s" +- +-#: toplev.c:2200 java/jcf-parse.c:1776 +-#, fuzzy, gcc-internal-format +-msgid "error closing %s: %m" +-msgstr "error al tancar %s" +- +-#: tree-cfg.c:1432 tree-cfg.c:2068 tree-cfg.c:2071 +-#, fuzzy, gcc-internal-format +-msgid "%Hwill never be executed" +-msgstr "la cridada %2d mai s'executa\n" +- +-#: tree-cfg.c:3134 +-#, gcc-internal-format +-msgid "SSA name in freelist but still referenced" +-msgstr "" +- +-#: tree-cfg.c:3143 +-#, gcc-internal-format +-msgid "ASSERT_EXPR with an always-false condition" +-msgstr "" +- +-#: tree-cfg.c:3156 +-#, gcc-internal-format +-msgid "GIMPLE register modified with BIT_FIELD_REF" +-msgstr "" +- +-#: tree-cfg.c:3191 +-#, gcc-internal-format +-msgid "invariant not recomputed when ADDR_EXPR changed" +-msgstr "" +- +-#: tree-cfg.c:3197 +-#, gcc-internal-format +-msgid "constant not recomputed when ADDR_EXPR changed" +-msgstr "" +- +-#: tree-cfg.c:3202 +-#, gcc-internal-format +-msgid "side effects not recomputed when ADDR_EXPR changed" +-msgstr "" +- +-#: tree-cfg.c:3218 +-#, gcc-internal-format +-msgid "address taken, but ADDRESSABLE bit not set" +-msgstr "" +- +-#: tree-cfg.c:3228 +-#, gcc-internal-format +-msgid "non-integral used in condition" +-msgstr "" +- +-#: tree-cfg.c:3233 +-#, fuzzy, gcc-internal-format +-msgid "invalid conditional operand" +-msgstr "restriccions no vàlides per a l'operand" +- +-#: tree-cfg.c:3285 +-#, fuzzy, gcc-internal-format +-msgid "invalid reference prefix" +-msgstr "membre referència \"%D\" sense inicialitzar" +- +-#: tree-cfg.c:3296 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand to plus/minus, type is a pointer" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3307 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand to pointer plus, first operand is not a pointer" +-msgstr "l'operand base de \"->\" no és un punter" +- +-#: tree-cfg.c:3315 +-#, gcc-internal-format +-msgid "invalid operand to pointer plus, second operand is not an integer with type of sizetype." +-msgstr "" +- +-#: tree-cfg.c:3382 tree-cfg.c:3798 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in unary expression" +-msgstr "operadors no vàlids per al binari %s" +- +-#: tree-cfg.c:3392 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in unary expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3413 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in binary expression" +-msgstr "operadors no vàlids per al binari %s" +- +-#: tree-cfg.c:3424 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in binary expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3449 +-#, fuzzy, gcc-internal-format +-msgid "invalid expression for min lvalue" +-msgstr "expressió no vàlida com a operand" +- +-#: tree-cfg.c:3456 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in indirect reference" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3463 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in indirect reference" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3491 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands to array reference" +-msgstr "operadors no vàlids per al binari %s" +- +-#: tree-cfg.c:3502 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in array reference" +-msgstr "falta subindici en la referència de la matriu" +- +-#: tree-cfg.c:3511 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in array range reference" +-msgstr "falta subindici en la referència de la matriu" +- +-#: tree-cfg.c:3522 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in real/imagpart reference" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3532 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in component reference" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3586 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in conversion" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3614 +-#, fuzzy, gcc-internal-format +-msgid "invalid types in nop conversion" +-msgstr "tipus \"void\" no vàlid per a new" +- +-#: tree-cfg.c:3628 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in int to float conversion" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3634 +-#, fuzzy, gcc-internal-format +-msgid "invalid types in conversion to floating point" +-msgstr "sufix \"%.*s\" no vàlid en la constant de coma flotant" +- +-#: tree-cfg.c:3647 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in float to int conversion" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3653 +-#, fuzzy, gcc-internal-format +-msgid "invalid types in conversion to integer" +-msgstr "tipus \"void\" no vàlid per a new" +- +-#: tree-cfg.c:3667 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in complex expression" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3680 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in complex expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3694 +-#, gcc-internal-format +-msgid "constructor not allowed for non-vector types" +-msgstr "" +- +-#: tree-cfg.c:3711 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in shift expression" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3717 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in shift expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3735 +-#, fuzzy, gcc-internal-format +-msgid "invalid (pointer) operands to plus/minus" +-msgstr "operadors no vàlids per al binari %s" +- +-#: tree-cfg.c:3748 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in pointer plus expression" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3755 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in pointer plus expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3774 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in conditional expression" +-msgstr "tipus signed i unsigned en l'expressió condicional" +- +-#: tree-cfg.c:3807 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in address expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3827 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in truth expression" +-msgstr "operand no vàlid en la instrucció" +- +-#: tree-cfg.c:3836 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in binary truth expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3852 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand in unary not" +-msgstr "operadors no vàlids per al binari %s" +- +-#: tree-cfg.c:3861 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in not expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3900 +-#, fuzzy, gcc-internal-format +-msgid "invalid operands in comparison expression" +-msgstr "ús no vàlid de l'expressió void" +- +-#: tree-cfg.c:3917 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch in comparison expression" +-msgstr "els tipus de dades no coincideixen en l'expressió condicional" +- +-#: tree-cfg.c:3947 +-#, fuzzy, gcc-internal-format +-msgid "non-trivial conversion at assignment" +-msgstr "l-value no vàlid en l'assignació" +- +-#: tree-cfg.c:3988 tree-cfg.c:4136 +-#, fuzzy, gcc-internal-format +-msgid "is not a valid GIMPLE statement" +-msgstr "\"%E\" no és un argument de patró vàlid" +- +-#: tree-cfg.c:4015 +-#, fuzzy, gcc-internal-format +-msgid "invalid operand to switch statement" +-msgstr "no vàlid operand per al codi %%s" +- +-#: tree-cfg.c:4026 +-#, fuzzy, gcc-internal-format +-msgid "type error in return expression" +-msgstr " en expressió thrown" +- +-#: tree-cfg.c:4104 +-#, fuzzy, gcc-internal-format +-msgid "verify_gimple failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-cfg.c:4156 +-#, gcc-internal-format +-msgid "statement marked for throw, but doesn%'t" +-msgstr "" +- +-#: tree-cfg.c:4161 +-#, gcc-internal-format +-msgid "statement marked for throw in middle of block" +-msgstr "" +- +-#: tree-cfg.c:4232 +-#, fuzzy, gcc-internal-format +-msgid "unexpected non-tuple" +-msgstr "operand inesperat" +- +-#: tree-cfg.c:4261 +-#, gcc-internal-format +-msgid "Dead STMT in EH table" +-msgstr "" +- +-#: tree-cfg.c:4295 +-#, gcc-internal-format +-msgid "bb_for_stmt (phi) is set to a wrong basic block" +-msgstr "" +- +-#: tree-cfg.c:4306 +-#, fuzzy, gcc-internal-format +-msgid "missing PHI def" +-msgstr "falta valor" +- +-#: tree-cfg.c:4317 +-#, gcc-internal-format +-msgid "PHI def is not a GIMPLE value" +-msgstr "" +- +-#: tree-cfg.c:4333 tree-cfg.c:4359 +-#, gcc-internal-format +-msgid "incorrect sharing of tree nodes" +-msgstr "" +- +-#: tree-cfg.c:4350 +-#, gcc-internal-format +-msgid "bb_for_stmt (stmt) is set to a wrong basic block" +-msgstr "" +- +-#: tree-cfg.c:4373 +-#, fuzzy, gcc-internal-format +-msgid "verify_stmts failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-cfg.c:4396 +-#, gcc-internal-format +-msgid "ENTRY_BLOCK has IL associated with it" +-msgstr "" +- +-#: tree-cfg.c:4402 +-#, gcc-internal-format +-msgid "EXIT_BLOCK has IL associated with it" +-msgstr "" +- +-#: tree-cfg.c:4409 +-#, gcc-internal-format +-msgid "fallthru to exit from bb %d" +-msgstr "" +- +-#: tree-cfg.c:4431 +-#, gcc-internal-format +-msgid "nonlocal label " +-msgstr "" +- +-#: tree-cfg.c:4440 tree-cfg.c:4450 tree-cfg.c:4475 +-#, gcc-internal-format +-msgid "label " +-msgstr "" +- +-#: tree-cfg.c:4465 +-#, fuzzy, gcc-internal-format +-msgid "control flow in the middle of basic block %d" +-msgstr "control de fluix insn dintre el bloc bàsic" +- +-#: tree-cfg.c:4495 +-#, fuzzy, gcc-internal-format +-msgid "fallthru edge after a control statement in bb %d" +-msgstr "Vora de caiguda després del salt incondicional %i" +- +-#: tree-cfg.c:4508 +-#, gcc-internal-format +-msgid "true/false edge after a non-COND_EXPR in bb %d" +-msgstr "" +- +-#: tree-cfg.c:4524 +-#, gcc-internal-format +-msgid "COND_EXPR with code in branches at the end of bb %d" +-msgstr "" +- +-#: tree-cfg.c:4538 tree-cfg.c:4560 tree-cfg.c:4573 tree-cfg.c:4644 +-#, gcc-internal-format +-msgid "wrong outgoing edge flags at end of bb %d" +-msgstr "" +- +-#: tree-cfg.c:4548 +-#, fuzzy, gcc-internal-format +-msgid "explicit goto at end of bb %d" +-msgstr "instanciació explícita de \"%#D\"" +- +-#: tree-cfg.c:4578 +-#, gcc-internal-format +-msgid "return edge does not point to exit in bb %d" +-msgstr "" +- +-#: tree-cfg.c:4611 +-#, gcc-internal-format +-msgid "found default case not at end of case vector" +-msgstr "" +- +-#: tree-cfg.c:4617 +-#, fuzzy, gcc-internal-format +-msgid "case labels not sorted: " +-msgstr "els trampolins no tenen suport" +- +-#: tree-cfg.c:4628 +-#, gcc-internal-format +-msgid "no default case found at end of case vector" +-msgstr "" +- +-#: tree-cfg.c:4636 +-#, gcc-internal-format +-msgid "extra outgoing edge %d->%d" +-msgstr "" +- +-#: tree-cfg.c:4658 +-#, gcc-internal-format +-msgid "missing edge %i->%i" +-msgstr "" +- +-#: tree-cfg.c:6941 tree-cfg.c:6945 +-#, fuzzy, gcc-internal-format +-msgid "%H% function does return" +-msgstr "la funció \"noreturn\" retorna" +- +-#: tree-cfg.c:6967 tree-cfg.c:6972 +-#, fuzzy, gcc-internal-format +-msgid "%Hcontrol reaches end of non-void function" +-msgstr "el control arriba a el final d'una funció que no és void" +- +-#: tree-cfg.c:7033 +-#, fuzzy, gcc-internal-format +-msgid "%Jfunction might be possible candidate for attribute %" +-msgstr "la funció pot ser un candidat possible per a l'atribut \"noreturn\"" +- +-#: tree-dump.c:933 +-#, fuzzy, gcc-internal-format +-msgid "could not open dump file %qs: %s" +-msgstr "no es pot obrir el fitxer de dump \"%s\"" +- +-#: tree-dump.c:1068 +-#, fuzzy, gcc-internal-format +-msgid "ignoring unknown option %q.*s in %<-fdump-%s%>" +-msgstr "ignorant l'opció desconeguda \"%.*s\" dintre \"-f%s\"" +- +-#: tree-eh.c:1788 +-#, fuzzy, gcc-internal-format +-msgid "EH edge %i->%i is missing" +-msgstr "falta l'argument per a \"-%s\"" +- +-#: tree-eh.c:1793 +-#, gcc-internal-format +-msgid "EH edge %i->%i miss EH flag" +-msgstr "" +- +-#. ??? might not be mistake. +-#: tree-eh.c:1799 +-#, gcc-internal-format +-msgid "EH edge %i->%i has duplicated regions" +-msgstr "" +- +-#: tree-eh.c:1833 +-#, gcc-internal-format +-msgid "BB %i can not throw but has EH edges" +-msgstr "" +- +-#: tree-eh.c:1840 +-#, gcc-internal-format +-msgid "BB %i last statement has incorrectly set region" +-msgstr "" +- +-#: tree-eh.c:1851 +-#, gcc-internal-format +-msgid "unnecessary EH edge %i->%i" +-msgstr "" +- +-#: tree-inline.c:1830 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses alloca (override using the always_inline attribute)" +-msgstr "" +- +-#: tree-inline.c:1842 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses setjmp" +-msgstr "" +- +-#: tree-inline.c:1856 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses variable argument lists" +-msgstr "" +- +-#: tree-inline.c:1867 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses setjmp-longjmp exception handling" +-msgstr "" +- +-#: tree-inline.c:1874 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses non-local goto" +-msgstr "" +- +-#: tree-inline.c:1885 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses __builtin_return or __builtin_apply_args" +-msgstr "" +- +-#: tree-inline.c:1904 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it contains a computed goto" +-msgstr "" +- +-#: tree-inline.c:1918 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it receives a non-local goto" +-msgstr "" +- +-#: tree-inline.c:1943 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses variable sized variables" +-msgstr "" +- +-#: tree-inline.c:2005 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it is suppressed using -fno-inline" +-msgstr "" +- +-#: tree-inline.c:2019 +-#, gcc-internal-format +-msgid "function %q+F can never be inlined because it uses attributes conflicting with inlining" +-msgstr "" +- +-#: tree-inline.c:2588 tree-inline.c:2598 +-#, fuzzy, gcc-internal-format +-msgid "inlining failed in call to %q+F: %s" +-msgstr "el \"inlining\" ha fallat en la cridada a \"%s\"" +- +-#: tree-inline.c:2589 tree-inline.c:2600 +-#, gcc-internal-format +-msgid "called from here" +-msgstr "cridat des d'aquí" +- +-#: tree-mudflap.c:860 +-#, gcc-internal-format +-msgid "mudflap checking not yet implemented for ARRAY_RANGE_REF" +-msgstr "" +- +-#: tree-mudflap.c:1044 +-#, gcc-internal-format +-msgid "mudflap cannot track %qs in stub function" +-msgstr "" +- +-#: tree-mudflap.c:1272 +-#, gcc-internal-format +-msgid "mudflap cannot track unknown size extern %qs" +-msgstr "" +- +-#: tree-nomudflap.c:50 +-#, fuzzy, gcc-internal-format +-msgid "mudflap: this language is not supported" +-msgstr "els trampolins no tenen suport" +- +-#: tree-optimize.c:430 +-#, fuzzy, gcc-internal-format +-msgid "size of return value of %q+D is %u bytes" +-msgstr "la grandària del valor de retorn de \"%s\" és de %u octets" +- +-#: tree-optimize.c:433 +-#, fuzzy, gcc-internal-format +-msgid "size of return value of %q+D is larger than %wd bytes" +-msgstr "la grandària del valor de retorn de \"%s\" és més gran que %d octets" +- +-#: tree-outof-ssa.c:637 tree-outof-ssa.c:688 tree-ssa-coalesce.c:936 +-#: tree-ssa-coalesce.c:951 tree-ssa-coalesce.c:1163 tree-ssa-live.c:1043 +-#, gcc-internal-format +-msgid "SSA corruption" +-msgstr "" +- +-#: tree-outof-ssa.c:1105 +-#, gcc-internal-format +-msgid " Pending stmts not issued on PRED edge (%d, %d)\n" +-msgstr "" +- +-#: tree-outof-ssa.c:1111 +-#, gcc-internal-format +-msgid " Pending stmts not issued on SUCC edge (%d, %d)\n" +-msgstr "" +- +-#: tree-outof-ssa.c:1118 +-#, gcc-internal-format +-msgid " Pending stmts not issued on ENTRY edge (%d, %d)\n" +-msgstr "" +- +-#: tree-outof-ssa.c:1124 +-#, gcc-internal-format +-msgid " Pending stmts not issued on EXIT edge (%d, %d)\n" +-msgstr "" +- +-#: tree-profile.c:351 +-#, fuzzy, gcc-internal-format +-msgid "unimplemented functionality" +-msgstr "En la declaració de la funció" +- +-#: tree-ssa-alias-warnings.c:814 +-#, gcc-internal-format +-msgid "%Hlikely type-punning may break strict-aliasing rules: object %<%s%s%> of main type %qT is referenced at or around %s:%d and may be aliased to object %<%s%s%> of main type %qT which is referenced at or around %s:%d." +-msgstr "" +- +-#: tree-ssa.c:110 +-#, gcc-internal-format +-msgid "expected an SSA_NAME object" +-msgstr "" +- +-#: tree-ssa.c:116 +-#, gcc-internal-format +-msgid "type mismatch between an SSA_NAME and its symbol" +-msgstr "" +- +-#: tree-ssa.c:122 +-#, gcc-internal-format +-msgid "found an SSA_NAME that had been released into the free pool" +-msgstr "" +- +-#: tree-ssa.c:128 +-#, gcc-internal-format +-msgid "found a virtual definition for a GIMPLE register" +-msgstr "" +- +-#: tree-ssa.c:134 +-#, fuzzy, gcc-internal-format +-msgid "found a real definition for a non-register" +-msgstr "la definició de la funció ho va declarar com \"register\"" +- +-#: tree-ssa.c:141 +-#, gcc-internal-format +-msgid "found real variable when subvariables should have appeared" +-msgstr "" +- +-#: tree-ssa.c:148 +-#, gcc-internal-format +-msgid "found a default name with a non-empty defining statement" +-msgstr "" +- +-#: tree-ssa.c:176 +-#, gcc-internal-format +-msgid "SSA_NAME created in two different blocks %i and %i" +-msgstr "" +- +-#: tree-ssa.c:185 +-#, gcc-internal-format +-msgid "SSA_NAME_DEF_STMT is wrong" +-msgstr "" +- +-#: tree-ssa.c:237 +-#, fuzzy, gcc-internal-format +-msgid "missing definition" +-msgstr "falta valor inicial" +- +-#: tree-ssa.c:243 +-#, gcc-internal-format +-msgid "definition in block %i does not dominate use in block %i" +-msgstr "" +- +-#: tree-ssa.c:251 +-#, gcc-internal-format +-msgid "definition in block %i follows the use" +-msgstr "" +- +-#: tree-ssa.c:258 +-#, gcc-internal-format +-msgid "SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set" +-msgstr "" +- +-#: tree-ssa.c:266 +-#, gcc-internal-format +-msgid "no immediate_use list" +-msgstr "" +- +-#: tree-ssa.c:278 +-#, gcc-internal-format +-msgid "wrong immediate use list" +-msgstr "" +- +-#: tree-ssa.c:312 +-#, gcc-internal-format +-msgid "incoming edge count does not match number of PHI arguments" +-msgstr "" +- +-#: tree-ssa.c:326 +-#, fuzzy, gcc-internal-format +-msgid "PHI argument is missing for edge %d->%d" +-msgstr "falta l'argument per omissió per al paràmetre %P de \"%+#D\"" +- +-#: tree-ssa.c:335 +-#, fuzzy, gcc-internal-format +-msgid "PHI argument is not SSA_NAME, or invariant" +-msgstr "l'argument \"%d\" no és una constant" +- +-#: tree-ssa.c:348 +-#, gcc-internal-format +-msgid "wrong edge %d->%d for PHI argument" +-msgstr "" +- +-#: tree-ssa.c:398 +-#, gcc-internal-format +-msgid "non-addressable variable inside an alias set" +-msgstr "" +- +-#: tree-ssa.c:409 +-#, fuzzy, gcc-internal-format +-msgid "verify_flow_insensitive_alias_info failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-ssa.c:451 +-#, gcc-internal-format +-msgid "dereferenced pointers should have a name or a symbol tag" +-msgstr "" +- +-#: tree-ssa.c:458 +-#, gcc-internal-format +-msgid "pointers with a memory tag, should have points-to sets" +-msgstr "" +- +-#: tree-ssa.c:470 +-#, gcc-internal-format +-msgid "pointer escapes but its name tag is not call-clobbered" +-msgstr "" +- +-#: tree-ssa.c:480 +-#, fuzzy, gcc-internal-format +-msgid "verify_flow_sensitive_alias_info failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-ssa.c:508 +-#, gcc-internal-format +-msgid "variable in call_clobbered_vars but not marked call_clobbered" +-msgstr "" +- +-#: tree-ssa.c:527 +-#, gcc-internal-format +-msgid "variable marked call_clobbered but not in call_clobbered_vars bitmap." +-msgstr "" +- +-#: tree-ssa.c:537 +-#, fuzzy, gcc-internal-format +-msgid "verify_call_clobbering failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-ssa.c:558 +-#, gcc-internal-format +-msgid "Memory partitions should have at least one symbol" +-msgstr "" +- +-#: tree-ssa.c:568 +-#, gcc-internal-format +-msgid "Partitioned symbols should belong to exactly one partition" +-msgstr "" +- +-#: tree-ssa.c:581 +-#, fuzzy, gcc-internal-format +-msgid "verify_memory_partitions failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-ssa.c:653 +-#, gcc-internal-format +-msgid "AUX pointer initialized for edge %d->%d" +-msgstr "" +- +-#: tree-ssa.c:677 +-#, gcc-internal-format +-msgid "stmt (%p) marked modified after optimization pass: " +-msgstr "" +- +-#: tree-ssa.c:697 +-#, gcc-internal-format +-msgid "statement makes a memory store, but has no VDEFS" +-msgstr "" +- +-#: tree-ssa.c:707 tree-ssa.c:717 +-#, fuzzy, gcc-internal-format +-msgid "in statement" +-msgstr "En la declaració de la funció" +- +-#: tree-ssa.c:756 +-#, fuzzy, gcc-internal-format +-msgid "verify_ssa failed" +-msgstr "verify_flow_info fallat" +- +-#: tree-ssa.c:1284 +-#, fuzzy, gcc-internal-format +-msgid "%J%qD was declared here" +-msgstr "%Jes va declarar \"%D\" prèviament aquí" +- +-#. We only do data flow with SSA_NAMEs, so that's all we +-#. can warn about. +-#: tree-ssa.c:1302 +-#, fuzzy, gcc-internal-format +-msgid "%H%qD is used uninitialized in this function" +-msgstr "%J\"%D\" podria ser usat sense iniciar en aquesta funció" +- +-#: tree-ssa.c:1340 +-#, fuzzy, gcc-internal-format +-msgid "%H%qD may be used uninitialized in this function" +-msgstr "%J\"%D\" podria ser usat sense iniciar en aquesta funció" +- +-#: tree-vrp.c:4374 +-#, fuzzy, gcc-internal-format +-msgid "%Harray subscript is outside array bounds" +-msgstr "el subindici de la matriu no és un enter" +- +-#: tree-vrp.c:4388 +-#, fuzzy, gcc-internal-format +-msgid "%Harray subscript is above array bounds" +-msgstr "el subindici de la matriu no és un enter" +- +-#: tree-vrp.c:4395 +-#, fuzzy, gcc-internal-format +-msgid "%Harray subscript is below array bounds" +-msgstr "el subindici de la matriu no és un enter" +- +-#: tree-vrp.c:5042 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when simplifying conditional to constant" +-msgstr "" +- +-#: tree-vrp.c:5048 +-#, gcc-internal-format +-msgid "assuming signed overflow does not occur when simplifying conditional" +-msgstr "" +- +-#: tree.c:3951 +-#, gcc-internal-format +-msgid "%q+D already declared with dllexport attribute: dllimport ignored" +-msgstr "" +- +-#: tree.c:3963 +-#, gcc-internal-format +-msgid "%q+D redeclared without dllimport attribute after being referenced with dll linkage" +-msgstr "" +- +-#: tree.c:3979 +-#, gcc-internal-format +-msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored" +-msgstr "" +- +-#: tree.c:4038 tree.c:4050 config/darwin.c:1458 config/arm/arm.c:3099 +-#: config/arm/arm.c:3127 config/avr/avr.c:4598 config/h8300/h8300.c:5281 +-#: config/h8300/h8300.c:5305 config/i386/i386.c:3056 config/i386/i386.c:22515 +-#: config/ia64/ia64.c:586 config/m68hc11/m68hc11.c:1118 +-#: config/rs6000/rs6000.c:19657 config/sh/symbian.c:408 +-#: config/sh/symbian.c:415 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute ignored" +-msgstr "s'ignora l'atribut \"%s\"" +- +-#: tree.c:4066 +-#, fuzzy, gcc-internal-format +-msgid "inline function %q+D declared as dllimport: attribute ignored" +-msgstr "la funció «inline» \"%s\" està declarada com dllimport: s'ignora l'atribut." +- +-#: tree.c:4074 +-#, fuzzy, gcc-internal-format +-msgid "function %q+D definition is marked dllimport" +-msgstr "la definició de la funció \"%s\" està marcada com dllimport" +- +-#: tree.c:4082 config/sh/symbian.c:430 +-#, fuzzy, gcc-internal-format +-msgid "variable %q+D definition is marked dllimport" +-msgstr "la variable \"%s\" està marcada com dllimport" +- +-#: tree.c:4105 config/sh/symbian.c:505 +-#, gcc-internal-format +-msgid "external linkage required for symbol %q+D because of %qs attribute" +-msgstr "" +- +-#: tree.c:4119 +-#, gcc-internal-format +-msgid "%qs implies default visibility, but %qD has already been declared with a different visibility" +-msgstr "" +- +-#: tree.c:5632 +-#, gcc-internal-format +-msgid "arrays of functions are not meaningful" +-msgstr "les matrius de funcions no tenen significat" +- +-#: tree.c:5785 +-#, gcc-internal-format +-msgid "function return type cannot be function" +-msgstr "el tipus de retorn d'una funció no pot ser una funció" +- +-#: tree.c:6802 tree.c:6887 tree.c:6948 +-#, fuzzy, gcc-internal-format +-msgid "tree check: %s, have %s in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava %s, es té %s en %s, en %s:%d" +- +-#: tree.c:6839 +-#, fuzzy, gcc-internal-format +-msgid "tree check: expected none of %s, have %s in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava %s, es té %s en %s, en %s:%d" +- +-#: tree.c:6852 +-#, fuzzy, gcc-internal-format +-msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava classe \"%c\", es té \"%c\" (%s) en %s, en %s:%d" +- +-#: tree.c:6901 +-#, fuzzy, gcc-internal-format +-msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava classe \"%c\", es té \"%c\" (%s) en %s, en %s:%d" +- +-#: tree.c:6914 +-#, fuzzy, gcc-internal-format +-msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava %s, es té %s en %s, en %s:%d" +- +-#: tree.c:6974 +-#, fuzzy, gcc-internal-format +-msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d" +-msgstr "revisió d'arbre: s'esperava %s, es té %s en %s, en %s:%d" +- +-#: tree.c:6988 +-#, gcc-internal-format +-msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d" +-msgstr "revisió d'arbre: accés de *elt %d de tree_vec amb %d elts en %s, en %s:%d" +- +-#: tree.c:7000 +-#, fuzzy, gcc-internal-format +-msgid "tree check: accessed elt %d of phi_node with %d elts in %s, at %s:%d" +-msgstr "revisió d'arbre: accés de *elt %d de tree_vec amb %d elts en %s, en %s:%d" +- +-#: tree.c:7013 +-#, fuzzy, gcc-internal-format +-msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d" +-msgstr "revisió d'arbre: accés de *elt %d de tree_vec amb %d elts en %s, en %s:%d" +- +-#: tree.c:7026 +-#, fuzzy, gcc-internal-format +-msgid "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %s:%d" +-msgstr "revisió d'arbre: accés de *elt %d de tree_vec amb %d elts en %s, en %s:%d" +- +-#: value-prof.c:351 +-#, gcc-internal-format +-msgid "Dead histogram" +-msgstr "" +- +-#: value-prof.c:380 +-#, gcc-internal-format +-msgid "Histogram value statement does not correspond to statement it is associated with" +-msgstr "" +- +-#: value-prof.c:393 +-#, fuzzy, gcc-internal-format +-msgid "verify_histograms failed" +-msgstr "verify_flow_info fallat" +- +-#: value-prof.c:434 +-#, gcc-internal-format +-msgid "%HCorrupted value profile: %s profiler overall count (%d) does not match BB count (%d)" +-msgstr "" +- +-#: varasm.c:546 +-#, fuzzy, gcc-internal-format +-msgid "%+D causes a section type conflict" +-msgstr "%s causa un conflicte de tipus de secció" +- +-#: varasm.c:1089 +-#, fuzzy, gcc-internal-format +-msgid "alignment of %q+D is greater than maximum object file alignment. Using %d" +-msgstr "l'alineació de \"%s\" és massa granda que l'alineació màxima del fitxer objecte. S'usa %d." +- +-#: varasm.c:1310 varasm.c:1318 +-#, fuzzy, gcc-internal-format +-msgid "register name not specified for %q+D" +-msgstr "no s'especifica nom de registre per a \"%s\"" +- +-#: varasm.c:1320 +-#, fuzzy, gcc-internal-format +-msgid "invalid register name for %q+D" +-msgstr "nom de registre no vàlid per a \"%s\"" +- +-#: varasm.c:1322 +-#, fuzzy, gcc-internal-format +-msgid "data type of %q+D isn%'t suitable for a register" +-msgstr "el tipus de dades de \"%s\" no és adequat per a un registre" +- +-#: varasm.c:1325 +-#, fuzzy, gcc-internal-format +-msgid "register specified for %q+D isn%'t suitable for data type" +-msgstr "el registre especificat per \"%s\" no és adequat per al tipus de dades" +- +-#: varasm.c:1335 +-#, gcc-internal-format +-msgid "global register variable has initial value" +-msgstr "la variable de registre global té valor inicial" +- +-#: varasm.c:1339 +-#, gcc-internal-format +-msgid "optimization may eliminate reads and/or writes to register variables" +-msgstr "" +- +-#: varasm.c:1377 +-#, fuzzy, gcc-internal-format +-msgid "register name given for non-register variable %q+D" +-msgstr "nom de registre donat per a una variable \"%s\" que no és registre" +- +-#: varasm.c:1446 +-#, fuzzy, gcc-internal-format +-msgid "global destructors not supported on this target" +-msgstr "no es dóna suport a límits de pila en aquest objectiu" +- +-#: varasm.c:1512 +-#, fuzzy, gcc-internal-format +-msgid "global constructors not supported on this target" +-msgstr "no es dóna suport a límits de pila en aquest objectiu" +- +-#: varasm.c:1898 +-#, gcc-internal-format +-msgid "thread-local COMMON data not implemented" +-msgstr "" +- +-#: varasm.c:1927 +-#, fuzzy, gcc-internal-format +-msgid "requested alignment for %q+D is greater than implemented alignment of %wu" +-msgstr "l'alineació sol·licitada per a %s és massa granda que l'alineació implementada de %d" +- +-#: varasm.c:4386 +-#, fuzzy, gcc-internal-format +-msgid "initializer for integer/fixed-point value is too complicated" +-msgstr "el assignador per a un valor enter és massa complicat" +- +-#: varasm.c:4391 +-#, gcc-internal-format +-msgid "initializer for floating value is not a floating constant" +-msgstr "el assignador per a un valor de coma flotant no és una constant de coma flotant" +- +-#: varasm.c:4664 +-#, fuzzy, gcc-internal-format +-msgid "invalid initial value for member %qs" +-msgstr "valor inicial no vàlid per al membre \"%s\"" +- +-#: varasm.c:4864 varasm.c:4908 +-#, fuzzy, gcc-internal-format +-msgid "weak declaration of %q+D must precede definition" +-msgstr "la declaració feble de \"%s\" ha de precedir la definició" +- +-#: varasm.c:4872 +-#, fuzzy, gcc-internal-format +-msgid "weak declaration of %q+D after first use results in unspecified behavior" +-msgstr "la declaració feble de \"%s\" després del primer ús resulta en una conducta no especificada" +- +-#: varasm.c:4906 +-#, fuzzy, gcc-internal-format +-msgid "weak declaration of %q+D must be public" +-msgstr "la declaració feble de \"%s\" ha de ser pública" +- +-#: varasm.c:4915 +-#, fuzzy, gcc-internal-format +-msgid "weak declaration of %q+D not supported" +-msgstr "no es dóna suport a la declaració feble de \"%s\"" +- +-#: varasm.c:4941 +-#, gcc-internal-format +-msgid "only weak aliases are supported in this configuration" +-msgstr "només els aliessis febles tenen suport en aquesta configuració" +- +-#: varasm.c:5176 +-#, fuzzy, gcc-internal-format +-msgid "%Jweakref is not supported in this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: varasm.c:5257 +-#, fuzzy, gcc-internal-format +-msgid "%q+D aliased to undefined symbol %qs" +-msgstr "ús no vàlid del tipus indefinit \"%s %s\"" +- +-#: varasm.c:5262 +-#, gcc-internal-format +-msgid "%q+D aliased to external symbol %qs" +-msgstr "" +- +-#: varasm.c:5301 +-#, gcc-internal-format +-msgid "weakref %q+D ultimately targets itself" +-msgstr "" +- +-#: varasm.c:5310 +-#, fuzzy, gcc-internal-format +-msgid "weakref %q+D must have static linkage" +-msgstr "no es pot declarar que la funció membre \"%D\" tingui enllaçat estàtic" +- +-#: varasm.c:5316 +-#, fuzzy, gcc-internal-format +-msgid "%Jalias definitions not supported in this configuration" +-msgstr "les definicions d'alies no tenen suport en aquesta configuració; ignorades" +- +-#: varasm.c:5321 +-#, fuzzy, gcc-internal-format +-msgid "%Jonly weak aliases are supported in this configuration" +-msgstr "només els aliessis febles tenen suport en aquesta configuració" +- +-#: varasm.c:5378 +-#, gcc-internal-format +-msgid "visibility attribute not supported in this configuration; ignored" +-msgstr "els atributs de visibilitat no tenen suport en aquesta configuració; ignorats" +- +-#: varray.c:195 +-#, gcc-internal-format +-msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d" +-msgstr "matriu virtual %s[%lu]: l'element %lu està fora dels límits en %s, en %s:%d" +- +-#: varray.c:205 +-#, gcc-internal-format +-msgid "underflowed virtual array %s in %s, at %s:%d" +-msgstr "" +- +-#: vec.c:233 +-#, gcc-internal-format +-msgid "vector %s %s domain error, in %s at %s:%u" +-msgstr "" +- +-#. Print an error message for unrecognized stab codes. +-#: xcoffout.c:187 +-#, fuzzy, gcc-internal-format +-msgid "no sclass for %s stab (0x%x)" +-msgstr "no hi ha sclass per al stab %s (0x%x)\n" +- +-#: config/darwin-c.c:84 +-#, gcc-internal-format +-msgid "too many #pragma options align=reset" +-msgstr "massa opcions #pragma align=reset" +- +-#: config/darwin-c.c:104 config/darwin-c.c:107 config/darwin-c.c:109 +-#: config/darwin-c.c:111 +-#, gcc-internal-format +-msgid "malformed '#pragma options', ignoring" +-msgstr "\"#pragma opcions\" malformat, ignorant" +- +-#: config/darwin-c.c:114 +-#, gcc-internal-format +-msgid "junk at end of '#pragma options'" +-msgstr "escombraries al final de \"#pragma opcions\"" +- +-#: config/darwin-c.c:124 +-#, gcc-internal-format +-msgid "malformed '#pragma options align={mac68k|power|reset}', ignoring" +-msgstr "\"#pragma opcions align={mac68k|power|reset}\" malformat, ignorant" +- +-#: config/darwin-c.c:136 +-#, gcc-internal-format +-msgid "missing '(' after '#pragma unused', ignoring" +-msgstr "\"(\" faltant després de '#pragma unused', ignorant" +- +-#: config/darwin-c.c:154 +-#, gcc-internal-format +-msgid "missing ')' after '#pragma unused', ignoring" +-msgstr "\")\" faltant després de '#pragma unused', ignorant" +- +-#: config/darwin-c.c:157 +-#, gcc-internal-format +-msgid "junk at end of '#pragma unused'" +-msgstr "escombraries al final de \"#pragma unused\"" +- +-#: config/darwin-c.c:168 +-#, fuzzy, gcc-internal-format +-msgid "malformed '#pragma ms_struct', ignoring" +-msgstr "\"#pragma opcions\" malformat, ignorant" +- +-#: config/darwin-c.c:176 +-#, fuzzy, gcc-internal-format +-msgid "malformed '#pragma ms_struct {on|off|reset}', ignoring" +-msgstr "\"#pragma opcions\" malformat, ignorant" +- +-#: config/darwin-c.c:179 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of '#pragma ms_struct'" +-msgstr "escombraries al final de \"#pragma %s\"" +- +-#: config/darwin-c.c:405 +-#, gcc-internal-format +-msgid "subframework include %s conflicts with framework include" +-msgstr "" +- +-#: config/darwin-c.c:588 +-#, gcc-internal-format +-msgid "Unknown value %qs of -mmacosx-version-min" +-msgstr "" +- +-#: config/darwin.c:1431 +-#, gcc-internal-format +-msgid "%<%s%> 2.95 vtable-compatibility attribute applies only when compiling a kext" +-msgstr "" +- +-#: config/darwin.c:1438 +-#, gcc-internal-format +-msgid "%<%s%> 2.95 vtable-compatibility attribute applies only to C++ classes" +-msgstr "" +- +-#: config/darwin.c:1563 +-#, fuzzy, gcc-internal-format +-msgid "internal and protected visibility attributes not supported in this configuration; ignored" +-msgstr "els atributs de visibilitat no tenen suport en aquesta configuració; ignorats" +- +-#: config/host-darwin.c:62 +-#, gcc-internal-format +-msgid "couldn't unmap pch_address_space: %m" +-msgstr "" +- +-#: config/sol2-c.c:93 config/sol2-c.c:109 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma align%>, ignoring" +-msgstr "#pragma align mal format - ignorat" +- +-#: config/sol2-c.c:102 +-#, fuzzy, gcc-internal-format +-msgid "invalid alignment for %<#pragma align%>, ignoring" +-msgstr "#pragma align mal format - ignorat" +- +-#: config/sol2-c.c:117 +-#, gcc-internal-format +-msgid "%<#pragma align%> must appear before the declaration of %D, ignoring" +-msgstr "" +- +-#: config/sol2-c.c:129 config/sol2-c.c:141 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma align%>" +-msgstr "secció #pragma builtin malformada" +- +-#: config/sol2-c.c:136 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma align%>" +-msgstr "escombraries al final de #pragma %s" +- +-#: config/sol2-c.c:157 config/sol2-c.c:164 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma init%>, ignoring" +-msgstr "\"#pragma opcions\" malformat, ignorant" +- +-#: config/sol2-c.c:187 config/sol2-c.c:199 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma init%>" +-msgstr "secció #pragma builtin malformada" +- +-#: config/sol2-c.c:194 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma init%>" +-msgstr "escombraries al final de #pragma %s" +- +-#: config/sol2-c.c:215 config/sol2-c.c:222 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma fini%>, ignoring" +-msgstr "\"#pragma opcions\" malformat, ignorant" +- +-#: config/sol2-c.c:245 config/sol2-c.c:257 +-#, fuzzy, gcc-internal-format +-msgid "malformed %<#pragma fini%>" +-msgstr "secció #pragma builtin malformada" +- +-#: config/sol2-c.c:252 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of %<#pragma fini%>" +-msgstr "escombraries al final de #pragma %s" +- +-#: config/sol2.c:53 +-#, gcc-internal-format +-msgid "ignoring %<#pragma align%> for explicitly aligned %q+D" +-msgstr "" +- +-#: config/vxworks.c:69 +-#, fuzzy, gcc-internal-format +-msgid "PIC is only supported for RTPs" +-msgstr "-g només té suport quan s'usa GAS en aquest processador," +- +-#. Mach-O supports 'weak imports', and 'weak definitions' in coalesced +-#. sections. machopic_select_section ensures that weak variables go in +-#. coalesced sections. Weak aliases (or any other kind of aliases) are +-#. not supported. Weak symbols that aren't visible outside the .s file +-#. are not supported. +-#: config/darwin.h:451 +-#, fuzzy, gcc-internal-format +-msgid "alias definitions not supported in Mach-O; ignored" +-msgstr "les definicions d'alies no tenen suport en aquesta configuració; ignorades" +- +-#. No profiling. +-#: config/vx-common.h:89 +-#, fuzzy, gcc-internal-format +-msgid "profiler support for VxWorks" +-msgstr "suport per a function_profiler per a MMIX" +- +-#: config/windiss.h:36 +-#, fuzzy, gcc-internal-format +-msgid "profiler support for WindISS" +-msgstr "suport per a function_profiler per a MMIX" +- +-#: config/alpha/alpha.c:232 config/rs6000/rs6000.c:1990 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mtls-size switch" +-msgstr "valor erroni \"%s\" per a l'opció -mtls-size" +- +-#: config/alpha/alpha.c:286 +-#, gcc-internal-format +-msgid "-f%s ignored for Unicos/Mk (not supported)" +-msgstr "s'ignora -f%s per a Unicos/Mk (no es dóna suport)" +- +-#: config/alpha/alpha.c:310 +-#, gcc-internal-format +-msgid "-mieee not supported on Unicos/Mk" +-msgstr "no es dóna suport a -mieee en Unicos/Mk" +- +-#: config/alpha/alpha.c:321 +-#, gcc-internal-format +-msgid "-mieee-with-inexact not supported on Unicos/Mk" +-msgstr "no es dóna suport a -mieee-with-inexact en Unicos/Mk" +- +-#: config/alpha/alpha.c:338 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mtrap-precision switch" +-msgstr "valor erroni \"%s\" per a l'opció -mtrap-precision" +- +-#: config/alpha/alpha.c:352 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mfp-rounding-mode switch" +-msgstr "valor erroni \"%s\" per a l'opció -mfp-rounding-mode" +- +-#: config/alpha/alpha.c:367 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mfp-trap-mode switch" +-msgstr "valor erroni \"%s\" per a l'opció -mfp-trap-mode" +- +-#: config/alpha/alpha.c:381 config/alpha/alpha.c:393 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mcpu switch" +-msgstr "valor erroni \"%s\" per a l'opció -mcpu" +- +-#: config/alpha/alpha.c:400 +-#, gcc-internal-format +-msgid "trap mode not supported on Unicos/Mk" +-msgstr "no es dóna suport al mode trap en Unicos/Mk" +- +-#: config/alpha/alpha.c:407 +-#, gcc-internal-format +-msgid "fp software completion requires -mtrap-precision=i" +-msgstr "el completat per programari de fp requereix una opció -mtrap-precision=i" +- +-#: config/alpha/alpha.c:423 +-#, gcc-internal-format +-msgid "rounding mode not supported for VAX floats" +-msgstr "el mode d'arrodoniment no té suport per a floats de VAX" +- +-#: config/alpha/alpha.c:428 +-#, gcc-internal-format +-msgid "trap mode not supported for VAX floats" +-msgstr "el mode de captura no té suport per a valors de coma flotant VAX" +- +-#: config/alpha/alpha.c:432 +-#, fuzzy, gcc-internal-format +-msgid "128-bit long double not supported for VAX floats" +-msgstr "el mode de captura no té suport per a valors de coma flotant VAX" +- +-#: config/alpha/alpha.c:460 +-#, gcc-internal-format +-msgid "L%d cache latency unknown for %s" +-msgstr "latència de cau L%d desconeguda per a %s" +- +-#: config/alpha/alpha.c:475 +-#, fuzzy, gcc-internal-format +-msgid "bad value %qs for -mmemory-latency" +-msgstr "valor erroni \"%s\" per a -mmemory-latency" +- +-#: config/alpha/alpha.c:6514 config/alpha/alpha.c:6517 config/s390/s390.c:8279 +-#: config/s390/s390.c:8282 +-#, gcc-internal-format +-msgid "bad builtin fcode" +-msgstr "" +- +-#: config/arc/arc.c:388 +-#, fuzzy, gcc-internal-format +-msgid "argument of %qs attribute is not a string constant" +-msgstr "l'argument de l'atribut \"%s\" no es una cadena constant" +- +-#: config/arc/arc.c:396 +-#, fuzzy, gcc-internal-format +-msgid "argument of %qs attribute is not \"ilink1\" or \"ilink2\"" +-msgstr "l'argument de l'atribut \"%s\" no es \"ilink1\" o \"ilink2\"" +- +-#: config/arm/arm.c:1050 +-#, gcc-internal-format +-msgid "switch -mcpu=%s conflicts with -march= switch" +-msgstr "l'opció -mcpu=%s genera conflictes amb l'opció -march=" +- +-#: config/arm/arm.c:1060 config/rs6000/rs6000.c:1504 config/sparc/sparc.c:761 +-#, gcc-internal-format +-msgid "bad value (%s) for %s switch" +-msgstr "valor erroni (%s) per a l'opció %s" +- +-#: config/arm/arm.c:1170 +-#, fuzzy, gcc-internal-format +-msgid "target CPU does not support ARM mode" +-msgstr "el CPU objectiu no té suport per a APCS-32" +- +-#: config/arm/arm.c:1174 +-#, gcc-internal-format +-msgid "target CPU does not support interworking" +-msgstr "el CPU objectiu no té suport per a treball intern" +- +-#: config/arm/arm.c:1180 +-#, gcc-internal-format +-msgid "target CPU does not support THUMB instructions" +-msgstr "el CPU objectiu no té suport les instruccions THUMB" +- +-#: config/arm/arm.c:1198 +-#, gcc-internal-format +-msgid "enabling backtrace support is only meaningful when compiling for the Thumb" +-msgstr "habilitar el suport de rastrejat cap a endarrere només té significat quan es compila per al Thumb" +- +-#: config/arm/arm.c:1201 +-#, gcc-internal-format +-msgid "enabling callee interworking support is only meaningful when compiling for the Thumb" +-msgstr "habilitar el suport de treball intern de crides només té significat quan es compila per al Thumb" +- +-#: config/arm/arm.c:1204 +-#, gcc-internal-format +-msgid "enabling caller interworking support is only meaningful when compiling for the Thumb" +-msgstr "habilitar el suport de treball intern de cridat només té significat quan es compila per al Thumb" +- +-#: config/arm/arm.c:1208 +-#, gcc-internal-format +-msgid "-mapcs-stack-check incompatible with -mno-apcs-frame" +-msgstr "-mapcs-stack-check és incompatible amb -mno-apcs-frame" +- +-#: config/arm/arm.c:1216 +-#, gcc-internal-format +-msgid "-fpic and -mapcs-reent are incompatible" +-msgstr "-fpic i -mapcs-reent són incompatibles" +- +-#: config/arm/arm.c:1219 +-#, gcc-internal-format +-msgid "APCS reentrant code not supported. Ignored" +-msgstr "no se suporta el codi APCS que es torna a introduir.Ignorat" +- +-#: config/arm/arm.c:1227 +-#, gcc-internal-format +-msgid "-g with -mno-apcs-frame may not give sensible debugging" +-msgstr "-g amb -mno-apcs-frame no permet una depuració sensible" +- +-#: config/arm/arm.c:1230 +-#, gcc-internal-format +-msgid "passing floating point arguments in fp regs not yet supported" +-msgstr "encara no se suporta passar arguments de nombre de coma flotant en registres fp" +- +-#: config/arm/arm.c:1275 +-#, fuzzy, gcc-internal-format +-msgid "invalid ABI option: -mabi=%s" +-msgstr "opció \"%s\" no vàlida" +- +-#: config/arm/arm.c:1281 +-#, gcc-internal-format +-msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" +-msgstr "" +- +-#: config/arm/arm.c:1284 +-#, gcc-internal-format +-msgid "iwmmxt abi requires an iwmmxt capable cpu" +-msgstr "" +- +-#: config/arm/arm.c:1294 +-#, fuzzy, gcc-internal-format +-msgid "invalid floating point emulation option: -mfpe=%s" +-msgstr "opció d'emulació de coma flotant no vàlida: -mfpe-%s" +- +-#: config/arm/arm.c:1311 +-#, fuzzy, gcc-internal-format +-msgid "invalid floating point option: -mfpu=%s" +-msgstr "opció d'emulació de coma flotant no vàlida: -mfpe-%s" +- +-#: config/arm/arm.c:1351 +-#, fuzzy, gcc-internal-format +-msgid "invalid floating point abi: -mfloat-abi=%s" +-msgstr "opció d'emulació de coma flotant no vàlida: -mfpe-%s" +- +-#: config/arm/arm.c:1358 +-#, gcc-internal-format +-msgid "-mfloat-abi=hard and VFP" +-msgstr "" +- +-#: config/arm/arm.c:1364 +-#, fuzzy, gcc-internal-format +-msgid "iWMMXt and hardware floating point" +-msgstr "Usar coma flotant de maquinari" +- +-#: config/arm/arm.c:1368 +-#, gcc-internal-format +-msgid "Thumb-2 iWMMXt" +-msgstr "" +- +-#: config/arm/arm.c:1391 +-#, fuzzy, gcc-internal-format +-msgid "invalid thread pointer option: -mtp=%s" +-msgstr "opció d'emulació de coma flotant no vàlida: -mfpe-%s" +- +-#: config/arm/arm.c:1404 +-#, gcc-internal-format +-msgid "can not use -mtp=cp15 with 16-bit Thumb" +-msgstr "" +- +-#: config/arm/arm.c:1418 +-#, fuzzy, gcc-internal-format +-msgid "structure size boundary can only be set to %s" +-msgstr "El límit de la grandària de l'estructura només pot establir-se a 8 o 32" +- +-#: config/arm/arm.c:1424 +-#, gcc-internal-format +-msgid "RTP PIC is incompatible with Thumb" +-msgstr "" +- +-#: config/arm/arm.c:1433 +-#, gcc-internal-format +-msgid "RTP PIC is incompatible with -msingle-pic-base" +-msgstr "" +- +-#: config/arm/arm.c:1445 +-#, gcc-internal-format +-msgid "-mpic-register= is useless without -fpic" +-msgstr "-mpic-register= és inútil sense -fpic" +- +-#: config/arm/arm.c:1454 +-#, gcc-internal-format +-msgid "unable to use '%s' for PIC register" +-msgstr "no es pot usar \"%s\" per a registre PIC" +- +-#: config/arm/arm.c:3067 config/arm/arm.c:3085 config/avr/avr.c:4618 +-#: config/avr/avr.c:4660 config/bfin/bfin.c:4778 config/c4x/c4x.c:4071 +-#: config/h8300/h8300.c:5257 config/i386/i386.c:3009 +-#: config/m68hc11/m68hc11.c:1155 config/m68k/m68k.c:741 +-#: config/mcore/mcore.c:3032 config/mips/mips.c:1151 config/mips/mips.c:1153 +-#: config/mt/mt.c:1275 config/rs6000/rs6000.c:19583 config/sh/sh.c:7984 +-#: config/sh/sh.c:8005 config/sh/sh.c:8028 config/stormy16/stormy16.c:2252 +-#: config/v850/v850.c:2048 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute only applies to functions" +-msgstr "l'atribut \"%s\" nomès s'aplica a funcions" +- +-#: config/arm/arm.c:14012 +-#, gcc-internal-format +-msgid "unable to compute real location of stacked parameter" +-msgstr "no es pot calcular la ubicació real del paràmetre apilat" +- +-#: config/arm/arm.c:15451 +-#, fuzzy, gcc-internal-format +-msgid "argument must be a constant" +-msgstr "l'argument \"%d\" no és una constant" +- +-#. @@@ better error message +-#: config/arm/arm.c:15759 config/arm/arm.c:15796 +-#, gcc-internal-format +-msgid "selector must be an immediate" +-msgstr "el selector ha de ser immediat" +- +-#. @@@ better error message +-#: config/arm/arm.c:15839 config/i386/i386.c:20651 config/i386/i386.c:20685 +-#, gcc-internal-format +-msgid "mask must be an immediate" +-msgstr "la màscara ha de ser immediat" +- +-#: config/arm/arm.c:16498 +-#, gcc-internal-format +-msgid "no low registers available for popping high registers" +-msgstr "no hi ha registres inferiors disponibles per a emmagatzemar registres superiors" +- +-#: config/arm/arm.c:16721 +-#, gcc-internal-format +-msgid "interrupt Service Routines cannot be coded in Thumb mode" +-msgstr "no es poden codificar les Rutines de Serveis d'Interrupció en el mode Thumb" +- +-#: config/arm/pe.c:158 config/mcore/mcore.c:2898 +-#, fuzzy, gcc-internal-format +-msgid "initialized variable %q+D is marked dllimport" +-msgstr "la variable iniciada \"%s\" està marcada com dllimport" +- +-#: config/arm/pe.c:167 +-#, fuzzy, gcc-internal-format +-msgid "static variable %q+D is marked dllimport" +-msgstr "la variable estàtica \"%s\" està marcada com dllimport" +- +-#: config/avr/avr.c:690 +-#, gcc-internal-format +-msgid "large frame pointer change (%d) with -mtiny-stack" +-msgstr "canvi de punter gran de marc (%d) amb -mtiny-stack" +- +-#: config/avr/avr.c:4591 +-#, gcc-internal-format +-msgid "only initialized variables can be placed into program memory area" +-msgstr "Només les variables iniciades es poden ubicar en l'àrea de memòria del programa." +- +-#: config/avr/avr.c:4635 +-#, gcc-internal-format +-msgid "%qs appears to be a misspelled interrupt handler" +-msgstr "" +- +-#: config/avr/avr.c:4643 +-#, gcc-internal-format +-msgid "%qs appears to be a misspelled signal handler" +-msgstr "" +- +-#: config/avr/avr.c:4751 +-#, gcc-internal-format +-msgid "only uninitialized variables can be placed in the .noinit section" +-msgstr "Només les variables sense inicialitzar es poden col·locar en la secció noinit" +- +-#: config/avr/avr.c:4765 +-#, fuzzy, gcc-internal-format +-msgid "MCU %qs supported for assembler only" +-msgstr "MCU \"%s\" només té suport per a ensamblador" +- +-#: config/avr/avr.h:692 +-#, gcc-internal-format +-msgid "trampolines not supported" +-msgstr "els trampolins no tenen suport" +- +-#: config/bfin/bfin.c:2259 config/m68k/m68k.c:488 +-#, fuzzy, gcc-internal-format +-msgid "-mshared-library-id=%s is not between 0 and %d" +-msgstr "-mregparm=%d no està entre 0 i %d" +- +-#: config/bfin/bfin.c:2279 +-#, fuzzy, gcc-internal-format +-msgid "-mcpu=%s is not valid" +-msgstr "\"%s\" no és un nom de fitxer vàlid" +- +-#: config/bfin/bfin.c:2315 +-#, gcc-internal-format +-msgid "-mcpu=%s has invalid silicon revision" +-msgstr "" +- +-#: config/bfin/bfin.c:2332 +-#, fuzzy, gcc-internal-format +-msgid "bf561 support is incomplete yet." +-msgstr "el paràmetre té tipus incomplet" +- +-#: config/bfin/bfin.c:2372 +-#, gcc-internal-format +-msgid "-mshared-library-id= specified without -mid-shared-library" +-msgstr "" +- +-#: config/bfin/bfin.c:2378 +-#, fuzzy, gcc-internal-format +-msgid "Can't use multiple stack checking methods together." +-msgstr "Insereix codi de revisió de la pila en el programa" +- +-#: config/bfin/bfin.c:2381 +-#, gcc-internal-format +-msgid "ID shared libraries and FD-PIC mode can't be used together." +-msgstr "" +- +-#: config/bfin/bfin.c:2386 config/m68k/m68k.c:582 +-#, gcc-internal-format +-msgid "cannot specify both -msep-data and -mid-shared-library" +-msgstr "" +- +-#: config/bfin/bfin.c:4783 +-#, fuzzy, gcc-internal-format +-msgid "multiple function type attributes specified" +-msgstr "%Jha donat un atribut «noinline» a la funció «inline» \"%D\"" +- +-#: config/bfin/bfin.c:4839 config/bfin/bfin.c:4868 config/spu/spu.c:2976 +-#, gcc-internal-format +-msgid "`%s' attribute only applies to functions" +-msgstr "l'atribut \"%s\" nomès s'aplica a funcions" +- +-#: config/bfin/bfin.c:4850 +-#, gcc-internal-format +-msgid "can't apply both longcall and shortcall attributes to the same function" +-msgstr "" +- +-#: config/bfin/bfin.c:4900 +-#, gcc-internal-format +-msgid "`%s' attribute only applies to variables" +-msgstr "l'atribut \"%s\" solament aplica a variables" +- +-#: config/bfin/bfin.c:4907 +-#, fuzzy, gcc-internal-format +-msgid "`%s' attribute cannot be specified for local variables" +-msgstr "%Jl'atribut de secció no pot ser especificat per a les variables locals" +- +-#: config/c4x/c4x-c.c:68 +-#, gcc-internal-format +-msgid "missing '(' after '#pragma %s' - ignored" +-msgstr "\"(\" faltant desprès de \"#pragma %s\" - ignorat" +- +-#: config/c4x/c4x-c.c:71 +-#, gcc-internal-format +-msgid "missing function name in '#pragma %s' - ignored" +-msgstr "nom de funcció faltant en \"#pragma %s\" - ignorat" +- +-#: config/c4x/c4x-c.c:76 +-#, gcc-internal-format +-msgid "malformed '#pragma %s' - ignored" +-msgstr "\"#pragma %s\" malformat - ignorat" +- +-#: config/c4x/c4x-c.c:78 +-#, gcc-internal-format +-msgid "missing section name in '#pragma %s' - ignored" +-msgstr "nom de secció faltant en \"#pragma %s\" - ignorat" +- +-#: config/c4x/c4x-c.c:83 +-#, gcc-internal-format +-msgid "missing ')' for '#pragma %s' - ignored" +-msgstr "\")\" faltant per a \"#pragma %s\" - ignorat" +- +-#: config/c4x/c4x-c.c:86 +-#, gcc-internal-format +-msgid "junk at end of '#pragma %s'" +-msgstr "escombraries al final de \"#pragma %s\"" +- +-#: config/c4x/c4x.c:859 +-#, gcc-internal-format +-msgid "ISR %s requires %d words of local vars, max is 32767" +-msgstr "El ISR %s requereix de %d words de variables locals,el màxim és 32767." +- +-#. This function is for retrieving a part of an instruction name for +-#. an operator, for immediate output. If that ever happens for +-#. MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure +-#. we notice. +-#: config/cris/cris.c:434 +-#, gcc-internal-format +-msgid "MULT case in cris_op_str" +-msgstr "" +- +-#: config/cris/cris.c:811 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of ':' modifier" +-msgstr "operand no vàlid per al modificador \"b\"" +- +-#: config/cris/cris.c:983 +-#, gcc-internal-format +-msgid "internal error: bad register: %d" +-msgstr "error intern: registre erroni: %d" +- +-#: config/cris/cris.c:1524 +-#, gcc-internal-format +-msgid "internal error: sideeffect-insn affecting main effect" +-msgstr "error intern: sideeffect-insn afectant el efecte principal" +- +-#: config/cris/cris.c:1548 +-#, fuzzy, gcc-internal-format +-msgid "unknown cc_attr value" +-msgstr "reubicació unspec desconeguda" +- +-#. If we get here, the caller got its initial tests wrong. +-#: config/cris/cris.c:1901 +-#, gcc-internal-format +-msgid "internal error: cris_side_effect_mode_ok with bad operands" +-msgstr "error intern: cris_side_effect_mode_ok amb operands erronis" +- +-#: config/cris/cris.c:2104 +-#, gcc-internal-format +-msgid "-max-stackframe=%d is not usable, not between 0 and %d" +-msgstr "no es pot usar -max-stackframe=%d, no està entre 0 i %d" +- +-#: config/cris/cris.c:2132 +-#, gcc-internal-format +-msgid "unknown CRIS version specification in -march= or -mcpu= : %s" +-msgstr "especificació de versió CRIS desconeguda en -march= o -mcpu= : %s" +- +-#: config/cris/cris.c:2168 +-#, gcc-internal-format +-msgid "unknown CRIS cpu version specification in -mtune= : %s" +-msgstr "especificació de versió de cpu de CRIS desconeguda en -mtune= : %s" +- +-#: config/cris/cris.c:2186 +-#, gcc-internal-format +-msgid "-fPIC and -fpic are not supported in this configuration" +-msgstr "no es dóna suport a -fPIC i -fpic en aquesta configuració" +- +-#: config/cris/cris.c:2201 +-#, gcc-internal-format +-msgid "that particular -g option is invalid with -maout and -melinux" +-msgstr "aquesta opció particular -g no és vàlid amb -maout i -melinux" +- +-#: config/cris/cris.c:2414 +-#, gcc-internal-format +-msgid "Unknown src" +-msgstr "" +- +-#: config/cris/cris.c:2475 +-#, fuzzy, gcc-internal-format +-msgid "Unknown dest" +-msgstr "mode insn desconegut" +- +-#: config/cris/cris.c:2760 +-#, gcc-internal-format +-msgid "stackframe too big: %d bytes" +-msgstr "marc de pila massa grand: %d bytes" +- +-#: config/cris/cris.c:3213 config/cris/cris.c:3240 +-#, gcc-internal-format +-msgid "expand_binop failed in movsi got" +-msgstr "" +- +-#: config/cris/cris.c:3321 +-#, gcc-internal-format +-msgid "emitting PIC operand, but PIC register isn't set up" +-msgstr "emetent un operand PIC, però el registre PIC no està preparat" +- +-#. Definitions for GCC. Part of the machine description for CRIS. +-#. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 +-#. Free Software Foundation, Inc. +-#. Contributed by Axis Communications. Written by Hans-Peter Nilsson. +-#. +-#. This file is part of GCC. +-#. +-#. GCC 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 3, or (at your option) +-#. any later version. +-#. +-#. GCC 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 GCC; see the file COPYING3. If not see +-#. . +-#. After the first "Node:" comment comes all preprocessor directives and +-#. attached declarations described in the info files, the "Using and +-#. Porting GCC" manual (uapgcc), in the same order as found in the "Target +-#. macros" section in the gcc-2.9x CVS edition of 2000-03-17. FIXME: Not +-#. really, but needs an update anyway. +-#. +-#. There is no generic copy-of-uapgcc comment, you'll have to see uapgcc +-#. for that. If applicable, there is a CRIS-specific comment. The order +-#. of macro definitions follow the order in the manual. Every section in +-#. the manual (node in the info pages) has an introductory `Node: +-#. ' comment. If no macros are defined for a section, only +-#. the section-comment is present. +-#. Note that other header files (e.g. config/elfos.h, config/linux.h, +-#. config/cris/linux.h and config/cris/aout.h) are responsible for lots of +-#. settings not repeated below. This file contains general CRIS +-#. definitions and definitions for the cris-*-elf subtarget. +-#. We don't want to use gcc_assert for everything, as that can be +-#. compiled out. +-#: config/cris/cris.h:43 +-#, gcc-internal-format +-msgid "CRIS-port assertion failed: " +-msgstr "" +- +-#. Node: Caller Saves +-#. (no definitions) +-#. Node: Function entry +-#. See cris.c for TARGET_ASM_FUNCTION_PROLOGUE and +-#. TARGET_ASM_FUNCTION_EPILOGUE. +-#. Node: Profiling +-#: config/cris/cris.h:868 +-#, gcc-internal-format +-msgid "no FUNCTION_PROFILER for CRIS" +-msgstr "no FUNCTION_PROFILER per a CRIS" +- +-#: config/crx/crx.h:354 +-#, fuzzy, gcc-internal-format +-msgid "Profiler support for CRX" +-msgstr "suport per a function_profiler per a MMIX" +- +-#: config/crx/crx.h:365 +-#, fuzzy, gcc-internal-format +-msgid "Trampoline support for CRX" +-msgstr "els trampolins no tenen suport" +- +-#: config/frv/frv.c:8622 +-#, gcc-internal-format +-msgid "accumulator is not a constant integer" +-msgstr "el acumulador no és una constant entera" +- +-#: config/frv/frv.c:8627 +-#, gcc-internal-format +-msgid "accumulator number is out of bounds" +-msgstr "" +- +-#: config/frv/frv.c:8638 +-#, fuzzy, gcc-internal-format +-msgid "inappropriate accumulator for %qs" +-msgstr "acumulador inadequat per a \"%s\"" +- +-#: config/frv/frv.c:8715 +-#, fuzzy, gcc-internal-format +-msgid "invalid IACC argument" +-msgstr "argument de tipus no vàlid" +- +-#: config/frv/frv.c:8738 +-#, fuzzy, gcc-internal-format +-msgid "%qs expects a constant argument" +-msgstr "l'atribut \"%s\" espera una constant com argument" +- +-#: config/frv/frv.c:8743 +-#, fuzzy, gcc-internal-format +-msgid "constant argument out of range for %qs" +-msgstr "l'argument constant està fora de límits per a \"%s\"" +- +-#: config/frv/frv.c:9224 +-#, gcc-internal-format +-msgid "media functions are not available unless -mmedia is used" +-msgstr "" +- +-#: config/frv/frv.c:9236 +-#, gcc-internal-format +-msgid "this media function is only available on the fr500" +-msgstr "" +- +-#: config/frv/frv.c:9264 +-#, gcc-internal-format +-msgid "this media function is only available on the fr400 and fr550" +-msgstr "" +- +-#: config/frv/frv.c:9283 +-#, gcc-internal-format +-msgid "this builtin function is only available on the fr405 and fr450" +-msgstr "" +- +-#: config/frv/frv.c:9292 +-#, gcc-internal-format +-msgid "this builtin function is only available on the fr500 and fr550" +-msgstr "" +- +-#: config/frv/frv.c:9304 +-#, gcc-internal-format +-msgid "this builtin function is only available on the fr450" +-msgstr "" +- +-#: config/h8300/h8300.c:330 +-#, gcc-internal-format +-msgid "-ms2600 is used without -ms" +-msgstr "es va usar -ms2600 sense -ms" +- +-#: config/h8300/h8300.c:336 +-#, gcc-internal-format +-msgid "-mn is used without -mh or -ms" +-msgstr "es va usar -mn sense -mh o -ms" +- +-#: config/i386/host-cygwin.c:64 +-#, fuzzy, gcc-internal-format +-msgid "can't extend PCH file: %m" +-msgstr "no es pot llegir el fitxer PCH: %m" +- +-#: config/i386/host-cygwin.c:75 +-#, fuzzy, gcc-internal-format +-msgid "can't set position in PCH file: %m" +-msgstr "no es pot crear el fitxer d'informació de \"repository\" \"%s\"" +- +-#: config/i386/i386.c:2133 config/i386/i386.c:2333 +-#, fuzzy, gcc-internal-format +-msgid "bad value (%s) for -mtune= switch" +-msgstr "valor erroni (%s) per a l'opció -mcpu=" +- +-#: config/i386/i386.c:2174 +-#, fuzzy, gcc-internal-format +-msgid "bad value (%s) for -mstringop-strategy= switch" +-msgstr "valor erroni (%s) per a l'opció -mcpu=" +- +-#: config/i386/i386.c:2177 +-#, gcc-internal-format +-msgid "-mtune=x86-64 is deprecated. Use -mtune=k8 or -mtune=generic instead as appropriate." +-msgstr "" +- +-#: config/i386/i386.c:2186 +-#, fuzzy, gcc-internal-format +-msgid "generic CPU can be used only for -mtune= switch" +-msgstr "valor erroni (%s) per a l'opció -mcpu=" +- +-#: config/i386/i386.c:2188 config/i386/i386.c:2297 config/mt/mt.c:804 +-#, gcc-internal-format +-msgid "bad value (%s) for -march= switch" +-msgstr "valor erroni (%s) per a l'opció -march=" +- +-#: config/i386/i386.c:2199 +-#, fuzzy, gcc-internal-format +-msgid "code model %s does not support PIC mode" +-msgstr "el model de codi %s no té suport en el mode PIC" +- +-#: config/i386/i386.c:2205 config/sparc/sparc.c:725 +-#, gcc-internal-format +-msgid "bad value (%s) for -mcmodel= switch" +-msgstr "valor erroni (%s) per a l'opció -mcmodel=" +- +-#: config/i386/i386.c:2228 +-#, gcc-internal-format +-msgid "bad value (%s) for -masm= switch" +-msgstr "valor erroni (%s) per a l'opció -masm=" +- +-#: config/i386/i386.c:2231 +-#, fuzzy, gcc-internal-format +-msgid "code model %qs not supported in the %s bit mode" +-msgstr "el model de codi %s no té suport en el mode %s bit" +- +-#: config/i386/i386.c:2234 +-#, gcc-internal-format +-msgid "%i-bit mode not compiled in" +-msgstr "no està compilat el mode %i-bit" +- +-#: config/i386/i386.c:2245 config/i386/i386.c:2319 +-#, fuzzy, gcc-internal-format +-msgid "CPU you selected does not support x86-64 instruction set" +-msgstr "el CPU objectiu no té suport les instruccions THUMB" +- +-#: config/i386/i386.c:2351 +-#, gcc-internal-format +-msgid "-mregparm is ignored in 64-bit mode" +-msgstr "" +- +-#: config/i386/i386.c:2354 +-#, gcc-internal-format +-msgid "-mregparm=%d is not between 0 and %d" +-msgstr "-mregparm=%d no està entre 0 i %d" +- +-#: config/i386/i386.c:2366 +-#, gcc-internal-format +-msgid "-malign-loops is obsolete, use -falign-loops" +-msgstr "-malign-loops és obsolet, usi -falign-loops" +- +-#: config/i386/i386.c:2371 config/i386/i386.c:2384 config/i386/i386.c:2397 +-#, gcc-internal-format +-msgid "-malign-loops=%d is not between 0 and %d" +-msgstr "-malign-loops=%d no està entre 0 i %d" +- +-#: config/i386/i386.c:2379 +-#, gcc-internal-format +-msgid "-malign-jumps is obsolete, use -falign-jumps" +-msgstr "-malign-jumps és obsolet, usi -falign-jumps" +- +-#: config/i386/i386.c:2392 +-#, gcc-internal-format +-msgid "-malign-functions is obsolete, use -falign-functions" +-msgstr "-malign-functions és obsolet, usi -falign-functions" +- +-#: config/i386/i386.c:2425 +-#, gcc-internal-format +-msgid "-mbranch-cost=%d is not between 0 and 5" +-msgstr "-mbranch-cost=%d no està entre 0 i 5" +- +-#: config/i386/i386.c:2433 +-#, gcc-internal-format +-msgid "-mlarge-data-threshold=%d is negative" +-msgstr "" +- +-#: config/i386/i386.c:2447 +-#, gcc-internal-format +-msgid "bad value (%s) for -mtls-dialect= switch" +-msgstr "valor erroni (%s) per a l'opció -mtls-dialect=" +- +-#: config/i386/i386.c:2455 +-#, gcc-internal-format +-msgid "pc%d is not valid precision setting (32, 64 or 80)" +-msgstr "" +- +-#: config/i386/i386.c:2471 +-#, fuzzy, gcc-internal-format +-msgid "-mrtd is ignored in 64bit mode" +-msgstr "la convenció de crides -mrtd no té suport en el mode 64 bit" +- +-#: config/i386/i386.c:2560 +-#, gcc-internal-format +-msgid "-mpreferred-stack-boundary=%d is not between %d and 12" +-msgstr "-mpreferred-stack-boundary=%d no està entre %d i 12" +- +-#: config/i386/i386.c:2569 +-#, gcc-internal-format +-msgid "-msseregparm used without SSE enabled" +-msgstr "" +- +-#: config/i386/i386.c:2580 config/i386/i386.c:2591 +-#, gcc-internal-format +-msgid "SSE instruction set disabled, using 387 arithmetics" +-msgstr "el conjunt d'instruccions SSE està desactivat, usant l'aritmètica 387" +- +-#: config/i386/i386.c:2596 +-#, gcc-internal-format +-msgid "387 instruction set disabled, using SSE arithmetics" +-msgstr "el conjunt d'instruccions 387 està desactivat, usant l'aritmètica SSE" +- +-#: config/i386/i386.c:2603 +-#, gcc-internal-format +-msgid "bad value (%s) for -mfpmath= switch" +-msgstr "valor erroni (%s) per a l'opció -mfpmath=" +- +-#: config/i386/i386.c:2616 +-#, gcc-internal-format +-msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch" +-msgstr "" +- +-#: config/i386/i386.c:2635 +-#, gcc-internal-format +-msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness" +-msgstr "" +- +-#: config/i386/i386.c:3022 config/i386/i386.c:3075 +-#, fuzzy, gcc-internal-format +-msgid "fastcall and regparm attributes are not compatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/i386/i386.c:3029 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute requires an integer constant argument" +-msgstr "l'atribut \"%s\" requereix una constant entera com argument" +- +-#: config/i386/i386.c:3035 +-#, fuzzy, gcc-internal-format +-msgid "argument to %qs attribute larger than %d" +-msgstr "l'argument per a l'atribut \"%s\" és més gran que %d" +- +-#: config/i386/i386.c:3045 +-#, gcc-internal-format +-msgid "%s functions limited to %d register parameters" +-msgstr "" +- +-#: config/i386/i386.c:3067 config/i386/i386.c:3102 +-#, fuzzy, gcc-internal-format +-msgid "fastcall and cdecl attributes are not compatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/i386/i386.c:3071 +-#, fuzzy, gcc-internal-format +-msgid "fastcall and stdcall attributes are not compatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/i386/i386.c:3085 config/i386/i386.c:3098 +-#, fuzzy, gcc-internal-format +-msgid "stdcall and cdecl attributes are not compatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/i386/i386.c:3089 +-#, fuzzy, gcc-internal-format +-msgid "stdcall and fastcall attributes are not compatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/i386/i386.c:3236 +-#, gcc-internal-format +-msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled" +-msgstr "" +- +-#: config/i386/i386.c:3239 +-#, gcc-internal-format +-msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled" +-msgstr "" +- +-#: config/i386/i386.c:3925 +-#, gcc-internal-format +-msgid "SSE register return with SSE disabled" +-msgstr "" +- +-#: config/i386/i386.c:3931 +-#, gcc-internal-format +-msgid "SSE register argument with SSE disabled" +-msgstr "" +- +-#: config/i386/i386.c:3947 +-#, gcc-internal-format +-msgid "x87 register return with x87 disabled" +-msgstr "" +- +-#: config/i386/i386.c:4265 +-#, gcc-internal-format +-msgid "SSE vector argument without SSE enabled changes the ABI" +-msgstr "" +- +-#: config/i386/i386.c:4283 +-#, gcc-internal-format +-msgid "MMX vector argument without MMX enabled changes the ABI" +-msgstr "" +- +-#: config/i386/i386.c:4810 +-#, gcc-internal-format +-msgid "SSE vector return without SSE enabled changes the ABI" +-msgstr "" +- +-#: config/i386/i386.c:4820 +-#, gcc-internal-format +-msgid "MMX vector return without MMX enabled changes the ABI" +-msgstr "" +- +-#: config/i386/i386.c:6171 +-#, fuzzy, gcc-internal-format +-msgid "-mstackrealign ignored for nested functions" +-msgstr "ISO C prohibeix les funcions niades" +- +-#: config/i386/i386.c:6173 +-#, fuzzy, gcc-internal-format +-msgid "%s not supported for nested functions" +-msgstr "No donar suport per a funcions internes MMX" +- +-#: config/i386/i386.c:8576 +-#, gcc-internal-format +-msgid "extended registers have no high halves" +-msgstr "els registres estesos no tenen meitats superiors" +- +-#: config/i386/i386.c:8591 +-#, gcc-internal-format +-msgid "unsupported operand size for extended register" +-msgstr "mida d'operand sense suport per al registre estès" +- +-#: config/i386/i386.c:19610 +-#, fuzzy, gcc-internal-format +-msgid "the third argument must be a 4-bit immediate" +-msgstr "l'argument 3 ha de ser una literal sense signe de 4-bit" +- +-#: config/i386/i386.c:19614 +-#, fuzzy, gcc-internal-format +-msgid "the third argument must be an 8-bit immediate" +-msgstr "l'argument 1 ha de ser una literal amb signe de 5-bit" +- +-#: config/i386/i386.c:19836 +-#, fuzzy, gcc-internal-format +-msgid "last argument must be an immediate" +-msgstr "la màscara ha de ser immediat" +- +-#: config/i386/i386.c:19963 +-#, fuzzy, gcc-internal-format +-msgid "the second argument must be a 4-bit immediate" +-msgstr "l'argument 3 ha de ser una literal sense signe de 4-bit" +- +-#: config/i386/i386.c:20209 +-#, fuzzy, gcc-internal-format +-msgid "the fifth argument must be a 8-bit immediate" +-msgstr "l'argument 1 ha de ser una literal amb signe de 5-bit" +- +-#: config/i386/i386.c:20304 +-#, fuzzy, gcc-internal-format +-msgid "the third argument must be a 8-bit immediate" +-msgstr "l'argument 1 ha de ser una literal amb signe de 5-bit" +- +-#: config/i386/i386.c:20374 config/rs6000/rs6000.c:8133 +-#, gcc-internal-format +-msgid "selector must be an integer constant in the range 0..%wi" +-msgstr "" +- +-#: config/i386/i386.c:20774 config/i386/i386.c:20970 +-#, gcc-internal-format +-msgid "shift must be an immediate" +-msgstr "el desplaçament ha de ser immediat" +- +-#: config/i386/i386.c:21033 config/i386/i386.c:21075 +-#, fuzzy, gcc-internal-format +-msgid "index mask must be an immediate" +-msgstr "la màscara ha de ser immediat" +- +-#: config/i386/i386.c:21038 config/i386/i386.c:21080 +-#, fuzzy, gcc-internal-format +-msgid "length mask must be an immediate" +-msgstr "la màscara ha de ser immediat" +- +-#: config/i386/i386.c:22525 config/rs6000/rs6000.c:19666 +-#, fuzzy, gcc-internal-format +-msgid "%qs incompatible attribute ignored" +-msgstr "s'ignora l'atribut \"%s\"" +- +-#: config/i386/winnt-cxx.c:71 config/sh/symbian.c:172 +-#, gcc-internal-format +-msgid "definition of static data member %q+D of dllimport'd class" +-msgstr "" +- +-#: config/i386/winnt.c:58 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute only applies to variables" +-msgstr "l'atribut \"%s\" solament aplica a variables" +- +-#: config/i386/winnt.c:80 +-#, gcc-internal-format +-msgid "%qs attribute applies only to initialized variables with external linkage" +-msgstr "" +- +-#: config/i386/winnt.c:297 +-#, fuzzy, gcc-internal-format +-msgid "%q+D:'selectany' attribute applies only to initialized objects" +-msgstr "%Jl'atribut \"%E\" s'aplica solament a funcions" +- +-#: config/i386/winnt.c:445 +-#, fuzzy, gcc-internal-format +-msgid "%q+D causes a section type conflict" +-msgstr "%s causa un conflicte de tipus de secció" +- +-#: config/i386/cygming.h:162 +-#, gcc-internal-format +-msgid "-f%s ignored for target (all code is position independent)" +-msgstr "s'ignora -f%s per a l'objectiu (tot el codi és independent de posició)" +- +-#: config/i386/djgpp.h:180 +-#, gcc-internal-format +-msgid "-mbnu210 is ignored (option is obsolete)" +-msgstr "s'ignora -mbnu210 (l'opció és obsoleta)." +- +-#: config/i386/i386-interix.h:256 +-#, fuzzy, gcc-internal-format +-msgid "ms-bitfields not supported for objc" +-msgstr "-f%s no té suport: ignorat" +- +-#: config/ia64/ia64-c.c:51 +-#, gcc-internal-format +-msgid "malformed #pragma builtin" +-msgstr "secció #pragma builtin malformada" +- +-#: config/ia64/ia64.c:554 config/m32r/m32r.c:373 +-#, fuzzy, gcc-internal-format +-msgid "invalid argument of %qs attribute" +-msgstr "no vàlid argument per a l'atribut \"%s\"" +- +-#: config/ia64/ia64.c:566 +-#, gcc-internal-format +-msgid "%Jan address area attribute cannot be specified for local variables" +-msgstr "%Jno es pot especificar un atribut d'àrea de dades per a variables locals" +- +-#: config/ia64/ia64.c:573 +-#, fuzzy, gcc-internal-format +-msgid "address area of %q+D conflicts with previous declaration" +-msgstr "%Jl'àrea d'adreça de \"%s\" és en conflicte amb una declaració prèvia" +- +-#: config/ia64/ia64.c:580 +-#, gcc-internal-format +-msgid "%Jaddress area attribute cannot be specified for functions" +-msgstr "%Jno es pot especificar un atribut d'àrea d'adreça per a funcions" +- +-#: config/ia64/ia64.c:5126 config/pa/pa.c:347 config/spu/spu.c:3875 +-#, gcc-internal-format +-msgid "value of -mfixed-range must have form REG1-REG2" +-msgstr "el valor de -mfixed-range ha de ser de la forma REG1-REG2" +- +-#: config/ia64/ia64.c:5153 config/pa/pa.c:374 config/spu/spu.c:3901 +-#, gcc-internal-format +-msgid "%s-%s is an empty range" +-msgstr "%s-%s és un rang buit" +- +-#: config/ia64/ia64.c:5181 +-#, fuzzy, gcc-internal-format +-msgid "bad value %<%s%> for -mtls-size= switch" +-msgstr "valor erroni (%s) per a l'opció -mtls-size=" +- +-#: config/ia64/ia64.c:5209 +-#, fuzzy, gcc-internal-format +-msgid "bad value %<%s%> for -mtune= switch" +-msgstr "valor erroni (%s) per a l'opció -mcpu=" +- +-#: config/ia64/ia64.c:5228 +-#, gcc-internal-format +-msgid "not yet implemented: latency-optimized inline square root" +-msgstr "" +- +-#: config/ia64/ia64.c:9950 +-#, fuzzy, gcc-internal-format +-msgid "version attribute is not a string" +-msgstr "l'argument de l'atribut \"%s\" no es una cadena constant" +- +-#: config/iq2000/iq2000.c:1812 +-#, fuzzy, gcc-internal-format +-msgid "gp_offset (%ld) or end_offset (%ld) is less than zero" +-msgstr "gp_offset (%ld) o end_offset (%ld) és menys de zero" +- +-#: config/iq2000/iq2000.c:2583 +-#, fuzzy, gcc-internal-format +-msgid "argument %qd is not a constant" +-msgstr "l'argument \"%d\" no és una constant" +- +-#: config/iq2000/iq2000.c:2885 config/mt/mt.c:349 config/xtensa/xtensa.c:2118 +-#, gcc-internal-format +-msgid "PRINT_OPERAND_ADDRESS, null pointer" +-msgstr "PRINT_OPERAND_ADDRESS, punter nul" +- +-#: config/iq2000/iq2000.c:3040 +-#, fuzzy, gcc-internal-format +-msgid "PRINT_OPERAND: Unknown punctuation '%c'" +-msgstr "PRINT_OPERAND: puntuació desconeguda \"%c\"" +- +-#: config/iq2000/iq2000.c:3049 config/xtensa/xtensa.c:1972 +-#, gcc-internal-format +-msgid "PRINT_OPERAND null pointer" +-msgstr "PRINT_OPERAND punter nul" +- +-#: config/m32c/m32c-pragma.c:63 +-#, fuzzy, gcc-internal-format +-msgid "junk at end of #pragma GCC memregs [0..16]" +-msgstr "escombraries al final de #pragma %s" +- +-#: config/m32c/m32c-pragma.c:70 +-#, gcc-internal-format +-msgid "#pragma GCC memregs must precede any function decls" +-msgstr "" +- +-#: config/m32c/m32c-pragma.c:81 config/m32c/m32c-pragma.c:88 +-#, gcc-internal-format +-msgid "#pragma GCC memregs takes a number [0..16]" +-msgstr "" +- +-#: config/m32c/m32c.c:416 +-#, fuzzy, gcc-internal-format +-msgid "invalid target memregs value '%d'" +-msgstr "valor de --param \"%s\" no vàlid" +- +-#: config/m32c/m32c.c:2759 +-#, fuzzy, gcc-internal-format +-msgid "`%s' attribute is not supported for R8C target" +-msgstr "l'atribut \"%s\" no té suport en aquesta plataforma" +- +-#: config/m32c/m32c.c:2767 +-#, fuzzy, gcc-internal-format +-msgid "`%s' attribute applies only to functions" +-msgstr "%Jl'atribut \"%E\" s'aplica solament a funcions" +- +-#: config/m32c/m32c.c:2775 +-#, gcc-internal-format +-msgid "`%s' attribute argument not an integer constant" +-msgstr "l'argument de l'atribut \"%s\" no és una cadena entera" +- +-#: config/m32c/m32c.c:2784 +-#, fuzzy, gcc-internal-format +-msgid "`%s' attribute argument should be between 18 to 255" +-msgstr "l'argument de l'atribut \"%s\" no és una cadena entera" +- +-#: config/m68hc11/m68hc11.c:279 +-#, gcc-internal-format +-msgid "-f%s ignored for 68HC11/68HC12 (not supported)" +-msgstr "s'ignora -f%s per a 68HC11/68HC12 (sense suport)" +- +-#: config/m68hc11/m68hc11.c:1240 +-#, fuzzy, gcc-internal-format +-msgid "% and % attributes are not compatible, ignoring %" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/m68hc11/m68hc11.c:1247 +-#, fuzzy, gcc-internal-format +-msgid "% attribute is already used" +-msgstr "l'atribut \"trap\" ja està en ús" +- +-#: config/m68k/m68k.c:533 +-#, fuzzy, gcc-internal-format +-msgid "-mcpu=%s conflicts with -march=%s" +-msgstr "l'opció -mcpu=%s genera conflictes amb l'opció -march=" +- +-#: config/m68k/m68k.c:594 +-#, fuzzy, gcc-internal-format +-msgid "-mpcrel -fPIC is not currently supported on selected cpu" +-msgstr " -fPIC actualment no té suport en el 68000 o 68010\n" +- +-#: config/m68k/m68k.c:656 +-#, fuzzy, gcc-internal-format +-msgid "-falign-labels=%d is not supported" +-msgstr "els trampolins no tenen suport" +- +-#: config/m68k/m68k.c:661 +-#, fuzzy, gcc-internal-format +-msgid "-falign-loops=%d is not supported" +-msgstr "-malign-loops=%d no està entre 0 i %d" +- +-#: config/m68k/m68k.c:748 +-#, fuzzy, gcc-internal-format +-msgid "multiple interrupt attributes not allowed" +-msgstr "%Jno es permet un atribut de secció per a \"%D\"" +- +-#: config/m68k/m68k.c:755 +-#, gcc-internal-format +-msgid "interrupt_thread is available only on fido" +-msgstr "" +- +-#: config/m68k/m68k.c:1072 config/rs6000/rs6000.c:15014 +-#, fuzzy, gcc-internal-format +-msgid "stack limit expression is not supported" +-msgstr "no es dóna suport a l'expressió del límit de la pila" +- +-#: config/mips/mips.c:1163 +-#, gcc-internal-format +-msgid "%qs cannot have both % and % attributes" +-msgstr "" +- +-#: config/mips/mips.c:1185 config/mips/mips.c:1188 +-#, gcc-internal-format +-msgid "%qs redeclared with conflicting %qs attributes" +-msgstr "" +- +-#: config/mips/mips.c:2348 +-#, gcc-internal-format +-msgid "MIPS16 TLS" +-msgstr "" +- +-#: config/mips/mips.c:5439 +-#, fuzzy, gcc-internal-format +-msgid "cannot handle inconsistent calls to %qs" +-msgstr "no es poden manejar les crides inconsistents a \"%s\"" +- +-#: config/mips/mips.c:10258 +-#, fuzzy, gcc-internal-format +-msgid "invalid argument to built-in function" +-msgstr "massa arguments per a la funció" +- +-#: config/mips/mips.c:10530 +-#, fuzzy, gcc-internal-format +-msgid "built-in function %qs not supported for MIPS16" +-msgstr "no se suporta actualment la funció interna \"%s\"" +- +-#: config/mips/mips.c:11679 config/mips/mips.c:12065 +-#, gcc-internal-format +-msgid "MIPS16 PIC" +-msgstr "" +- +-#: config/mips/mips.c:11682 +-#, gcc-internal-format +-msgid "hard-float MIPS16 code for ABIs other than o32 and o64" +-msgstr "" +- +-#: config/mips/mips.c:11810 +-#, fuzzy, gcc-internal-format +-msgid "CPU names must be lower case" +-msgstr "el nom de cpu ha de estar en minúscules" +- +-#: config/mips/mips.c:11938 +-#, gcc-internal-format +-msgid "%<-%s%> conflicts with the other architecture options, which specify a %s processor" +-msgstr "" +- +-#: config/mips/mips.c:11954 +-#, gcc-internal-format +-msgid "%<-march=%s%> is not compatible with the selected ABI" +-msgstr "" +- +-#: config/mips/mips.c:11969 +-#, fuzzy, gcc-internal-format +-msgid "%<-mgp64%> used with a 32-bit processor" +-msgstr "s'utilitza -mgp64 amb una ABI de 32-bit" +- +-#: config/mips/mips.c:11971 +-#, fuzzy, gcc-internal-format +-msgid "%<-mgp32%> used with a 64-bit ABI" +-msgstr "s'utilitza -mgp32 amb una ABI de 64-bit" +- +-#: config/mips/mips.c:11973 +-#, fuzzy, gcc-internal-format +-msgid "%<-mgp64%> used with a 32-bit ABI" +-msgstr "s'utilitza -mgp64 amb una ABI de 32-bit" +- +-#: config/mips/mips.c:11989 config/mips/mips.c:11991 config/mips/mips.c:12058 +-#, gcc-internal-format +-msgid "unsupported combination: %s" +-msgstr "combinació sense suport: %s" +- +-#: config/mips/mips.c:11995 +-#, gcc-internal-format +-msgid "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the mfhc1 and mthc1 instructions" +-msgstr "" +- +-#: config/mips/mips.c:11998 +-#, gcc-internal-format +-msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" +-msgstr "" +- +-#: config/mips/mips.c:12052 +-#, fuzzy, gcc-internal-format +-msgid "the %qs architecture does not support branch-likely instructions" +-msgstr "el CPU objectiu no té suport les instruccions THUMB" +- +-#: config/mips/mips.c:12098 +-#, gcc-internal-format +-msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" +-msgstr "" +- +-#: config/mips/mips.c:12106 config/mips/mips.c:12109 +-#, gcc-internal-format +-msgid "cannot use small-data accesses for %qs" +-msgstr "" +- +-#: config/mips/mips.c:12123 +-#, gcc-internal-format +-msgid "%<-mips3d%> requires %<-mpaired-single%>" +-msgstr "" +- +-#: config/mips/mips.c:12132 +-#, fuzzy, gcc-internal-format +-msgid "%qs must be used with %qs" +-msgstr "-frepo ha de ser usat amb -c" +- +-#: config/mips/mips.c:12139 +-#, fuzzy, gcc-internal-format +-msgid "the %qs architecture does not support paired-single instructions" +-msgstr "el CPU objectiu no té suport les instruccions THUMB" +- +-#. Output assembler code to FILE to increment profiler label # LABELNO +-#. for profiling a function entry. +-#: config/mips/mips.h:2110 +-#, gcc-internal-format +-msgid "mips16 function profiling" +-msgstr "anàlisi de perfil de les funcions mips16" +- +-#: config/mmix/mmix.c:226 +-#, gcc-internal-format +-msgid "-f%s not supported: ignored" +-msgstr "-f%s no té suport: ignorat" +- +-#: config/mmix/mmix.c:674 +-#, fuzzy, gcc-internal-format +-msgid "support for mode %qs" +-msgstr "no hi ha tipus de dades pel mode \"%s\"" +- +-#: config/mmix/mmix.c:688 +-#, gcc-internal-format +-msgid "too large function value type, needs %d registers, have only %d registers for this" +-msgstr "el valor del tipus de la funció és massa gran, necessita %d registres, només es tenen %d registres per a això" +- +-#: config/mmix/mmix.c:858 +-#, gcc-internal-format +-msgid "function_profiler support for MMIX" +-msgstr "suport per a function_profiler per a MMIX" +- +-#: config/mmix/mmix.c:880 +-#, gcc-internal-format +-msgid "MMIX Internal: Last named vararg would not fit in a register" +-msgstr "MMIX intern: L'últim vararg nomenat no conté en un registre" +- +-#: config/mmix/mmix.c:1495 config/mmix/mmix.c:1519 config/mmix/mmix.c:1635 +-#, gcc-internal-format +-msgid "MMIX Internal: Bad register: %d" +-msgstr "MMIX intern: registre erroni: %d" +- +-#. Presumably there's a missing case above if we get here. +-#: config/mmix/mmix.c:1627 +-#, fuzzy, gcc-internal-format +-msgid "MMIX Internal: Missing %qc case in mmix_print_operand" +-msgstr "MMIX intern: «case» \"%c\" faltant en mmix_print_operand" +- +-#: config/mmix/mmix.c:1913 +-#, fuzzy, gcc-internal-format +-msgid "stack frame not a multiple of 8 bytes: %wd" +-msgstr "el marc de pila no és un múltiple de 8 octets: %d" +- +-#: config/mmix/mmix.c:2149 +-#, fuzzy, gcc-internal-format +-msgid "stack frame not a multiple of octabyte: %wd" +-msgstr "el marc de pila no és un múltiple de octabyte: %d" +- +-#: config/mmix/mmix.c:2489 config/mmix/mmix.c:2553 +-#, gcc-internal-format +-msgid "MMIX Internal: %s is not a shiftable int" +-msgstr "MMIX intern: %s no és un enter desplaçable" +- +-#: config/mt/mt.c:312 +-#, gcc-internal-format +-msgid "info pointer NULL" +-msgstr "" +- +-#: config/pa/pa.c:479 +-#, fuzzy, gcc-internal-format +-msgid "PIC code generation is not supported in the portable runtime model" +-msgstr "La generació de codi PIC no té suport en el model portable de temps d'execució\n" +- +-#: config/pa/pa.c:484 +-#, fuzzy, gcc-internal-format +-msgid "PIC code generation is not compatible with fast indirect calls" +-msgstr "La generació de codi PIC no és compatible amb les crides ràpides indirectes\n" +- +-#: config/pa/pa.c:489 +-#, gcc-internal-format +-msgid "-g is only supported when using GAS on this processor," +-msgstr "-g només té suport quan s'usa GAS en aquest processador," +- +-#: config/pa/pa.c:490 +-#, gcc-internal-format +-msgid "-g option disabled" +-msgstr "opció -g desactivada" +- +-#: config/pa/pa.c:8285 +-#, gcc-internal-format +-msgid "alignment (%u) for %s exceeds maximum alignment for global common data. Using %u" +-msgstr "" +- +-#: config/pa/pa-hpux11.h:84 +-#, gcc-internal-format +-msgid "-munix=98 option required for C89 Amendment 1 features.\n" +-msgstr "" +- +-#: config/rs6000/host-darwin.c:61 +-#, gcc-internal-format +-msgid "Segmentation Fault (code)" +-msgstr "" +- +-#: config/rs6000/host-darwin.c:131 +-#, gcc-internal-format +-msgid "Segmentation Fault" +-msgstr "" +- +-#: config/rs6000/host-darwin.c:145 +-#, gcc-internal-format +-msgid "While setting up signal stack: %m" +-msgstr "" +- +-#: config/rs6000/host-darwin.c:151 +-#, gcc-internal-format +-msgid "While setting up signal handler: %m" +-msgstr "" +- +-#. Handle the machine specific pragma longcall. Its syntax is +-#. +-#. # pragma longcall ( TOGGLE ) +-#. +-#. where TOGGLE is either 0 or 1. +-#. +-#. rs6000_default_long_calls is set to the value of TOGGLE, changing +-#. whether or not new function declarations receive a longcall +-#. attribute by default. +-#: config/rs6000/rs6000-c.c:52 +-#, gcc-internal-format +-msgid "ignoring malformed #pragma longcall" +-msgstr "ignorant el #pragma longcall malformats" +- +-#: config/rs6000/rs6000-c.c:65 +-#, gcc-internal-format +-msgid "missing open paren" +-msgstr "\"(\" faltant" +- +-#: config/rs6000/rs6000-c.c:67 +-#, gcc-internal-format +-msgid "missing number" +-msgstr "falta valor" +- +-#: config/rs6000/rs6000-c.c:69 +-#, gcc-internal-format +-msgid "missing close paren" +-msgstr "\")\" faltant" +- +-#: config/rs6000/rs6000-c.c:72 +-#, gcc-internal-format +-msgid "number must be 0 or 1" +-msgstr "" +- +-#: config/rs6000/rs6000-c.c:75 +-#, gcc-internal-format +-msgid "junk at end of #pragma longcall" +-msgstr "escombraries al final de #pragma longcall" +- +-#: config/rs6000/rs6000-c.c:2550 +-#, fuzzy, gcc-internal-format +-msgid "passing arg %d of %qE discards qualifiers frompointer target type" +-msgstr "la conversió de \"%T\" a \"%T\" descarta els qualificadors del tipus de la destinació del punter" +- +-#: config/rs6000/rs6000-c.c:2593 +-#, fuzzy, gcc-internal-format +-msgid "invalid parameter combination for AltiVec intrinsic" +-msgstr "registre no vàlid en la instrucció" +- +-#: config/rs6000/rs6000.c:1294 +-#, gcc-internal-format +-msgid "-mdynamic-no-pic overrides -fpic or -fPIC" +-msgstr "" +- +-#: config/rs6000/rs6000.c:1305 +-#, fuzzy, gcc-internal-format +-msgid "-m64 requires PowerPC64 architecture, enabling" +-msgstr "-maix64 requereix que l'arquitectura PowerPC64 romangui activada" +- +-#: config/rs6000/rs6000.c:1528 +-#, gcc-internal-format +-msgid "-mmultiple is not supported on little endian systems" +-msgstr "-mmultiple no té suport en sistemes little endian" +- +-#: config/rs6000/rs6000.c:1535 +-#, gcc-internal-format +-msgid "-mstring is not supported on little endian systems" +-msgstr "-mstringe no té suport en sistemes little endian" +- +-#: config/rs6000/rs6000.c:1549 +-#, gcc-internal-format +-msgid "unknown -mdebug-%s switch" +-msgstr "interruptor -mdebug-%s desconegut" +- +-#: config/rs6000/rs6000.c:1561 +-#, gcc-internal-format +-msgid "unknown -mtraceback arg %qs; expecting %, % or %" +-msgstr "" +- +-#: config/rs6000/rs6000.c:1973 +-#, fuzzy, gcc-internal-format +-msgid "unknown -m%s= option specified: '%s'" +-msgstr "opció -misel= especificada desconeguda: \"%s\"" +- +-#: config/rs6000/rs6000.c:2186 +-#, gcc-internal-format +-msgid "not configured for ABI: '%s'" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2199 +-#, gcc-internal-format +-msgid "Using darwin64 ABI" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2204 +-#, gcc-internal-format +-msgid "Using old darwin ABI" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2211 +-#, gcc-internal-format +-msgid "Using IBM extended precision long double" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2217 +-#, gcc-internal-format +-msgid "Using IEEE extended precision long double" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2222 +-#, gcc-internal-format +-msgid "unknown ABI specified: '%s'" +-msgstr "ABI especificada desconeguda: \"%s\"" +- +-#: config/rs6000/rs6000.c:2249 +-#, fuzzy, gcc-internal-format +-msgid "invalid option for -mfloat-gprs: '%s'" +-msgstr "opció no vàlida \"-mshort-data-%s\"" +- +-#: config/rs6000/rs6000.c:2259 +-#, gcc-internal-format +-msgid "Unknown switch -mlong-double-%s" +-msgstr "Opció -mlong-double-%s desconegut" +- +-#: config/rs6000/rs6000.c:2280 +-#, gcc-internal-format +-msgid "-malign-power is not supported for 64-bit Darwin; it is incompatible with the installed C and C++ libraries" +-msgstr "" +- +-#: config/rs6000/rs6000.c:2288 +-#, fuzzy, gcc-internal-format +-msgid "unknown -malign-XXXXX option specified: '%s'" +-msgstr "opció -misel= especificada desconeguda: \"%s\"" +- +-#: config/rs6000/rs6000.c:4989 +-#, gcc-internal-format +-msgid "GCC vector returned by reference: non-standard ABI extension with no compatibility guarantee" +-msgstr "" +- +-#: config/rs6000/rs6000.c:5062 +-#, gcc-internal-format +-msgid "cannot return value in vector register because altivec instructions are disabled, use -maltivec to enable them" +-msgstr "" +- +-#: config/rs6000/rs6000.c:5320 +-#, gcc-internal-format +-msgid "cannot pass argument in vector register because altivec instructions are disabled, use -maltivec to enable them" +-msgstr "" +- +-#: config/rs6000/rs6000.c:6221 +-#, gcc-internal-format +-msgid "GCC vector passed by reference: non-standard ABI extension with no compatibility guarantee" +-msgstr "" +- +-#: config/rs6000/rs6000.c:7461 +-#, gcc-internal-format +-msgid "argument 1 must be a 5-bit signed literal" +-msgstr "l'argument 1 ha de ser una literal amb signe de 5-bit" +- +-#: config/rs6000/rs6000.c:7564 config/rs6000/rs6000.c:8475 +-#, gcc-internal-format +-msgid "argument 2 must be a 5-bit unsigned literal" +-msgstr "l'argument 2 ha de ser una literal sense signe de 5-bit" +- +-#: config/rs6000/rs6000.c:7604 +-#, gcc-internal-format +-msgid "argument 1 of __builtin_altivec_predicate must be a constant" +-msgstr "l'argument 1 de _builtin_altivec_predicate ha de ser una constant" +- +-#: config/rs6000/rs6000.c:7657 +-#, gcc-internal-format +-msgid "argument 1 of __builtin_altivec_predicate is out of range" +-msgstr "l'argument 1 de _builtin_altivec_predicate es fora de límits" +- +-#: config/rs6000/rs6000.c:7906 +-#, gcc-internal-format +-msgid "argument 3 must be a 4-bit unsigned literal" +-msgstr "l'argument 3 ha de ser una literal sense signe de 4-bit" +- +-#: config/rs6000/rs6000.c:8078 +-#, fuzzy, gcc-internal-format +-msgid "argument to %qs must be a 2-bit unsigned literal" +-msgstr "l'argument per a \"%s\" ha de ser una literal sense signe de 2-bit" +- +-#: config/rs6000/rs6000.c:8220 +-#, gcc-internal-format +-msgid "unresolved overload for Altivec builtin %qF" +-msgstr "" +- +-#: config/rs6000/rs6000.c:8302 +-#, gcc-internal-format +-msgid "argument to dss must be a 2-bit unsigned literal" +-msgstr "l'argument per a dss ha de ser una literal sense signe de 2-bit" +- +-#: config/rs6000/rs6000.c:8595 +-#, fuzzy, gcc-internal-format +-msgid "argument 1 of __builtin_paired_predicate must be a constant" +-msgstr "l'argument 1 de __builtin__spe_predicate ha de ser una constant" +- +-#: config/rs6000/rs6000.c:8642 +-#, fuzzy, gcc-internal-format +-msgid "argument 1 of __builtin_paired_predicate is out of range" +-msgstr "l'argument 1 de __builtin_spe_predicate està fora de límits" +- +-#: config/rs6000/rs6000.c:8667 +-#, gcc-internal-format +-msgid "argument 1 of __builtin_spe_predicate must be a constant" +-msgstr "l'argument 1 de __builtin__spe_predicate ha de ser una constant" +- +-#: config/rs6000/rs6000.c:8739 +-#, gcc-internal-format +-msgid "argument 1 of __builtin_spe_predicate is out of range" +-msgstr "l'argument 1 de __builtin_spe_predicate està fora de límits" +- +-#: config/rs6000/rs6000.c:14977 +-#, fuzzy, gcc-internal-format +-msgid "stack frame too large" +-msgstr "marc de pila massa grand: %d bytes" +- +-#: config/rs6000/rs6000.c:17598 +-#, gcc-internal-format +-msgid "no profiling of 64-bit code for this ABI" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19470 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is invalid for 64-bit code" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19472 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is deprecated; use %" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19476 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19478 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19480 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19482 +-#, gcc-internal-format +-msgid "use of boolean types in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19484 +-#, gcc-internal-format +-msgid "use of % in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/rs6000.c:19486 +-#, gcc-internal-format +-msgid "use of decimal floating point types in AltiVec types is invalid" +-msgstr "" +- +-#: config/rs6000/aix43.h:38 config/rs6000/aix51.h:37 config/rs6000/aix52.h:38 +-#: config/rs6000/aix53.h:38 +-#, gcc-internal-format +-msgid "-maix64 and POWER architecture are incompatible" +-msgstr "-maix64 i l'arquitectura POWER són incompatibles" +- +-#: config/rs6000/aix43.h:43 config/rs6000/aix51.h:42 config/rs6000/aix52.h:43 +-#: config/rs6000/aix53.h:43 +-#, gcc-internal-format +-msgid "-maix64 requires PowerPC64 architecture remain enabled" +-msgstr "-maix64 requereix que l'arquitectura PowerPC64 romangui activada" +- +-#: config/rs6000/aix43.h:49 config/rs6000/aix52.h:49 config/rs6000/aix53.h:49 +-#, fuzzy, gcc-internal-format +-msgid "soft-float and long-double-128 are incompatible" +-msgstr "-mrelocatable i -mcall-%s són incompatibles" +- +-#: config/rs6000/aix43.h:53 config/rs6000/aix51.h:46 config/rs6000/aix52.h:53 +-#: config/rs6000/aix53.h:53 +-#, gcc-internal-format +-msgid "-maix64 required: 64-bit computation with 32-bit addressing not yet supported" +-msgstr "es requereix -maix64: càlcul de 64 bits amb adreçament de 32 bits no té suport encara" +- +-#: config/rs6000/e500.h:41 +-#, gcc-internal-format +-msgid "AltiVec and E500 instructions cannot coexist" +-msgstr "" +- +-#: config/rs6000/e500.h:43 +-#, fuzzy, gcc-internal-format +-msgid "64-bit E500 not supported" +-msgstr "-pipe no té suport" +- +-#: config/rs6000/e500.h:45 +-#, fuzzy, gcc-internal-format +-msgid "E500 and FPRs not supported" +-msgstr "els trampolins no tenen suport" +- +-#: config/rs6000/eabispe.h:43 config/rs6000/linuxspe.h:42 +-#, fuzzy, gcc-internal-format +-msgid "-m64 not supported in this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: config/rs6000/linux64.h:108 +-#, fuzzy, gcc-internal-format +-msgid "-m64 requires a PowerPC64 cpu" +-msgstr "-maix64 requereix que l'arquitectura PowerPC64 romangui activada" +- +-#. Definitions for __builtin_return_address and __builtin_frame_address. +-#. __builtin_return_address (0) should give link register (65), enable +-#. this. +-#. This should be uncommented, so that the link register is used, but +-#. currently this would result in unmatched insns and spilling fixed +-#. registers so we'll leave it for another day. When these problems are +-#. taken care of one additional fetch will be necessary in RETURN_ADDR_RTX. +-#. (mrs) +-#. #define RETURN_ADDR_IN_PREVIOUS_FRAME +-#. Number of bytes into the frame return addresses can be found. See +-#. rs6000_stack_info in rs6000.c for more information on how the different +-#. abi's store the return address. +-#: config/rs6000/rs6000.h:1560 +-#, gcc-internal-format +-msgid "RETURN_ADDRESS_OFFSET not supported" +-msgstr "No es dóna suport a RETURN_ADDRESS_OFFSET" +- +-#. Sometimes certain combinations of command options do not make sense +-#. on a particular target machine. You can define a macro +-#. `OVERRIDE_OPTIONS' to take account of this. This macro, if +-#. defined, is executed once just after all the command options have +-#. been parsed. +-#. +-#. The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to +-#. get control. +-#: config/rs6000/sysv4.h:129 +-#, gcc-internal-format +-msgid "bad value for -mcall-%s" +-msgstr "valor erroni per a -mcall-%s" +- +-#: config/rs6000/sysv4.h:145 +-#, gcc-internal-format +-msgid "bad value for -msdata=%s" +-msgstr "valor erroni per a -msdata=%s" +- +-#: config/rs6000/sysv4.h:162 +-#, gcc-internal-format +-msgid "-mrelocatable and -msdata=%s are incompatible" +-msgstr "-mrelocatable and i -msdata=%s són incompatibles" +- +-#: config/rs6000/sysv4.h:171 +-#, gcc-internal-format +-msgid "-f%s and -msdata=%s are incompatible" +-msgstr "-f%s i -msdata=%s són incompatibles" +- +-#: config/rs6000/sysv4.h:180 +-#, gcc-internal-format +-msgid "-msdata=%s and -mcall-%s are incompatible" +-msgstr "-msdata=%s i -mcall-%s són incompatibles" +- +-#: config/rs6000/sysv4.h:189 +-#, gcc-internal-format +-msgid "-mrelocatable and -mno-minimal-toc are incompatible" +-msgstr "-mrelocatable i -mno-minimal-toc són incompatibles" +- +-#: config/rs6000/sysv4.h:195 +-#, gcc-internal-format +-msgid "-mrelocatable and -mcall-%s are incompatible" +-msgstr "-mrelocatable i -mcall-%s són incompatibles" +- +-#: config/rs6000/sysv4.h:202 +-#, gcc-internal-format +-msgid "-fPIC and -mcall-%s are incompatible" +-msgstr "-fPIC i -mcall-%s són incompatibles" +- +-#: config/rs6000/sysv4.h:209 +-#, gcc-internal-format +-msgid "-mcall-aixdesc must be big endian" +-msgstr "-mcall-aixdesc ha de ser big endian" +- +-#: config/rs6000/sysv4.h:214 +-#, gcc-internal-format +-msgid "-msecure-plt not supported by your assembler" +-msgstr "" +- +-#: config/rs6000/sysv4.h:232 +-#, fuzzy, gcc-internal-format +-msgid "-m%s not supported in this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: config/s390/s390.c:1395 +-#, gcc-internal-format +-msgid "stack guard value must be an exact power of 2" +-msgstr "" +- +-#: config/s390/s390.c:1402 +-#, gcc-internal-format +-msgid "stack size must be an exact power of 2" +-msgstr "" +- +-#: config/s390/s390.c:1447 +-#, fuzzy, gcc-internal-format +-msgid "z/Architecture mode not supported on %s" +-msgstr "no es dóna suport al mode trap en Unicos/Mk" +- +-#: config/s390/s390.c:1449 +-#, fuzzy, gcc-internal-format +-msgid "64-bit ABI not supported in ESA/390 mode" +-msgstr "el model de codi %s no té suport en el mode PIC" +- +-#: config/s390/s390.c:1456 +-#, fuzzy, gcc-internal-format +-msgid "Hardware decimal floating point instructions not available on %s" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/s390/s390.c:1459 +-#, fuzzy, gcc-internal-format +-msgid "Hardware decimal floating point instructions not available in ESA/390 mode" +-msgstr "Usar instruccions de maquinari per a coma flotant" +- +-#: config/s390/s390.c:1469 +-#, gcc-internal-format +-msgid "-mhard-dfp can't be used in conjunction with -msoft-float" +-msgstr "" +- +-#: config/s390/s390.c:1483 +-#, gcc-internal-format +-msgid "-mbackchain -mpacked-stack -mhard-float are not supported in combination" +-msgstr "" +- +-#: config/s390/s390.c:1489 +-#, gcc-internal-format +-msgid "stack size must be greater than the stack guard value" +-msgstr "" +- +-#: config/s390/s390.c:1491 +-#, gcc-internal-format +-msgid "stack size must not be greater than 64k" +-msgstr "" +- +-#: config/s390/s390.c:1494 +-#, gcc-internal-format +-msgid "-mstack-guard implies use of -mstack-size" +-msgstr "" +- +-#: config/s390/s390.c:6640 +-#, fuzzy, gcc-internal-format +-msgid "total size of local variables exceeds architecture limit" +-msgstr "La grandària total de les variables locals excedeix els límits de l'arquitectura." +- +-#: config/s390/s390.c:7298 +-#, gcc-internal-format +-msgid "frame size of function %qs is " +-msgstr "" +- +-#: config/s390/s390.c:7328 +-#, fuzzy, gcc-internal-format +-msgid "frame size of %qs is " +-msgstr "no es coneix la grandària d'emmagatzematge de \"%s\"" +- +-#: config/s390/s390.c:7332 +-#, gcc-internal-format +-msgid "%qs uses dynamic stack allocation" +-msgstr "" +- +-#: config/score/score3.c:654 config/score/score7.c:653 +-#, fuzzy, gcc-internal-format +-msgid "-fPIC and -G are incompatible" +-msgstr "-fPIC i -mcall-%s són incompatibles" +- +-#: config/sh/sh.c:6894 +-#, gcc-internal-format +-msgid "__builtin_saveregs not supported by this subtarget" +-msgstr "no es dóna suport a _builtin_saveregs en aquest subobjectiu" +- +-#: config/sh/sh.c:7904 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute only applies to interrupt functions" +-msgstr "l'atribut \"%s\" aplica solament a funcions d'interrupció" +- +-#: config/sh/sh.c:7990 +-#, gcc-internal-format +-msgid "attribute interrupt_handler is not compatible with -m5-compact" +-msgstr "" +- +-#. The argument must be a constant string. +-#: config/sh/sh.c:8012 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute argument not a string constant" +-msgstr "l'argument de l'atribut \"%s\" no és una cadena constant" +- +-#. The argument must be a constant integer. +-#: config/sh/sh.c:8037 +-#, fuzzy, gcc-internal-format +-msgid "%qs attribute argument not an integer constant" +-msgstr "l'argument de l'atribut \"%s\" no és una cadena entera" +- +-#: config/sh/sh.c:10085 +-#, gcc-internal-format +-msgid "r0 needs to be available as a call-clobbered register" +-msgstr "" +- +-#: config/sh/sh.c:10106 +-#, fuzzy, gcc-internal-format +-msgid "Need a second call-clobbered general purpose register" +-msgstr "Usar el registre BK com un registre de propòsit general" +- +-#: config/sh/sh.c:10114 +-#, gcc-internal-format +-msgid "Need a call-clobbered target register" +-msgstr "" +- +-#: config/sh/symbian.c:146 +-#, fuzzy, gcc-internal-format +-msgid "function %q+D is defined after prior declaration as dllimport: attribute ignored" +-msgstr "la funció inline \"%s\" està declarada com dllimport: s'ignora l'atribut." +- +-#: config/sh/symbian.c:158 +-#, fuzzy, gcc-internal-format +-msgid "inline function %q+D is declared as dllimport: attribute ignored" +-msgstr "la funció «inline» \"%s\" està declarada com dllimport: s'ignora l'atribut." +- +-#: config/sh/symbian.c:272 +-#, fuzzy, gcc-internal-format +-msgid "%qs declared as both exported to and imported from a DLL" +-msgstr "\"%s\" és declarat com exportat a i importat d'una DLL al mateix temps" +- +-#: config/sh/symbian.c:279 +-#, gcc-internal-format +-msgid "failure in redeclaration of %q+D: dllimport'd symbol lacks external linkage" +-msgstr "" +- +-#: config/sh/symbian.c:325 +-#, gcc-internal-format +-msgid "%s %q+D %s after being referenced with dllimport linkage" +-msgstr "" +- +-#: config/sh/symbian.c:891 cp/tree.c:2737 +-#, gcc-internal-format +-msgid "lang_* check: failed in %s, at %s:%d" +-msgstr "revisió lang_*: ha fallat en %s, en %s:%d" +- +-#. FIXME +-#: config/sh/netbsd-elf.h:94 +-#, gcc-internal-format +-msgid "unimplemented-shmedia profiling" +-msgstr "" +- +-#. There are no delay slots on SHmedia. +-#. Relaxation isn't yet supported for SHmedia +-#. After reload, if conversion does little good but can cause ICEs: - find_if_block doesn't do anything for SH because we don't have conditional execution patterns. (We use conditional move patterns, which are handled differently, and only before reload). - find_cond_trap doesn't do anything for the SH because we #. don't have conditional traps. - find_if_case_1 uses redirect_edge_and_branch_force in the only path that does an optimization, and this causes an ICE when branch targets are in registers. - find_if_case_2 doesn't do anything for the SHmedia after reload except when it can redirect a tablejump - and that's rather rare. +-#. -fprofile-arcs needs a working libgcov . In unified tree configurations with newlib, this requires to configure with --with-newlib --with-headers. But there is no way to check here we have a working libgcov, so just assume that we have. +-#: config/sh/sh.h:631 +-#, fuzzy, gcc-internal-format +-msgid "profiling is still experimental for this target" +-msgstr "No es dóna suport a anàlisi de perfil en aquest objectiu." +- +-#. Only the sh64-elf assembler fully supports .quad properly. +-#. Pick one that makes most sense for the target in general. It is not much good to use different functions depending on -Os, since then we'll end up with two different functions when some of the code is compiled for size, and some for speed. +-#. SH4 tends to emphasize speed. +-#. These have their own way of doing things. +-#. ??? Should we use the integer SHmedia function instead? +-#. SH1 .. SH3 cores often go into small-footprint systems, so default to the smallest implementation available. +-#. ??? EXPERIMENTAL +-#. User supplied - leave it alone. +-#. The debugging information is sufficient, but gdb doesn't implement this yet +-#. Never run scheduling before reload, since that can break global alloc, and generates slower code anyway due to the pressure on R0. +-#. Enable sched1 for SH4; ready queue will be reordered by the target hooks when pressure is high. We can not do this for SH3 and lower as they give spill failures for R0. +-#. ??? Current exception handling places basic block boundaries after call_insns. It causes the high pressure on R0 and gives spill failures for R0 in reload. See PR 22553 and the thread on gcc-patches . +-#: config/sh/sh.h:730 +-#, gcc-internal-format +-msgid "ignoring -fschedule-insns because of exception handling bug" +-msgstr "" +- +-#. The kernel loader cannot handle the relaxation relocations, so it cannot load kernel modules (which are ET_REL) or RTP executables (which are linked with --emit-relocs). No relaxation relocations appear in shared libraries, so relaxation is OK for RTP PIC. +-#: config/sh/vxworks.h:43 +-#, fuzzy, gcc-internal-format +-msgid "-mrelax is only supported for RTP PIC" +-msgstr "-g només té suport quan s'usa GAS en aquest processador," +- +-#: config/sparc/sparc.c:698 +-#, gcc-internal-format +-msgid "%s is not supported by this configuration" +-msgstr "%s no té suport en aquesta configuració" +- +-#: config/sparc/sparc.c:705 +-#, gcc-internal-format +-msgid "-mlong-double-64 not allowed with -m64" +-msgstr "no es permet -mlong-double-64 amb -m64" +- +-#: config/sparc/sparc.c:730 +-#, gcc-internal-format +-msgid "-mcmodel= is not supported on 32 bit systems" +-msgstr "-mcmodel= no té suport en sistemes de 32 bit" +- +-#: config/spu/spu-c.c:77 +-#, fuzzy, gcc-internal-format +-msgid "insufficient arguments to overloaded function %s" +-msgstr "massa pocs arguments per a la funció \"%s\"" +- +-#: config/spu/spu-c.c:112 +-#, fuzzy, gcc-internal-format +-msgid "too many arguments to overloaded function %s" +-msgstr "massa arguments per a la funció \"%s\"" +- +-#: config/spu/spu-c.c:124 +-#, gcc-internal-format +-msgid "parameter list does not match a valid signature for %s()" +-msgstr "" +- +-#: config/spu/spu.c:337 config/spu/spu.c:348 +-#, fuzzy, gcc-internal-format +-msgid "Unknown architecture '%s'" +-msgstr "es desconeix el mode de màquina \"%s\"" +- +-#: config/spu/spu.c:3034 +-#, gcc-internal-format +-msgid "`%s' attribute ignored" +-msgstr "s'ignora l'atribut \"%s\"" +- +-#: config/spu/spu.c:5218 +-#, gcc-internal-format +-msgid "%s expects an integer literal in the range [%d, %d]." +-msgstr "" +- +-#: config/spu/spu.c:5238 +-#, gcc-internal-format +-msgid "%s expects an integer literal in the range [%d, %d]. (" +-msgstr "" +- +-#: config/spu/spu.c:5268 +-#, gcc-internal-format +-msgid "%d least significant bits of %s are ignored." +-msgstr "" +- +-#: config/stormy16/stormy16.c:499 +-#, fuzzy, gcc-internal-format +-msgid "constant halfword load operand out of range" +-msgstr "l'argument constant està fora de límits per a \"%s\"" +- +-#: config/stormy16/stormy16.c:509 +-#, fuzzy, gcc-internal-format +-msgid "constant arithmetic operand out of range" +-msgstr "l'argument constant està fora de límits per a \"%s\"" +- +-#: config/stormy16/stormy16.c:1108 +-#, gcc-internal-format +-msgid "local variable memory requirements exceed capacity" +-msgstr "" +- +-#: config/stormy16/stormy16.c:1274 +-#, fuzzy, gcc-internal-format +-msgid "function_profiler support" +-msgstr "suport per a function_profiler per a MMIX" +- +-#: config/stormy16/stormy16.c:1363 +-#, gcc-internal-format +-msgid "cannot use va_start in interrupt function" +-msgstr "no es pot usar va_start en una funció d'interrupció" +- +-#: config/stormy16/stormy16.c:1906 +-#, gcc-internal-format +-msgid "switch statement of size %lu entries too large" +-msgstr "la declaració «switch» de grandària %lu entrades és massa gran" +- +-#: config/stormy16/stormy16.c:2274 +-#, fuzzy, gcc-internal-format +-msgid "%<__BELOW100__%> attribute only applies to variables" +-msgstr "l'atribut \"%s\" solament aplica a variables" +- +-#: config/stormy16/stormy16.c:2281 +-#, gcc-internal-format +-msgid "__BELOW100__ attribute not allowed with auto storage class" +-msgstr "" +- +-#: config/v850/v850-c.c:66 +-#, gcc-internal-format +-msgid "#pragma GHS endXXXX found without previous startXXX" +-msgstr "es va trobar un #pragma GHS endXXXX sense un startXXX previ" +- +-#: config/v850/v850-c.c:69 +-#, gcc-internal-format +-msgid "#pragma GHS endXXX does not match previous startXXX" +-msgstr "el #pragma GHS endXXXX no coincideix amb el startXXX previ" +- +-#: config/v850/v850-c.c:95 +-#, gcc-internal-format +-msgid "cannot set interrupt attribute: no current function" +-msgstr "no es pot establir l'atribut d'interrupció: no hi ha funció actual" +- +-#: config/v850/v850-c.c:103 +-#, gcc-internal-format +-msgid "cannot set interrupt attribute: no such identifier" +-msgstr "no es pot establir l'atribut d'interrupció: no hi ha tal identificador" +- +-#: config/v850/v850-c.c:148 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs section" +-msgstr "escombraries al final de la secció #pragma ghs" +- +-#: config/v850/v850-c.c:165 +-#, gcc-internal-format +-msgid "unrecognized section name \"%s\"" +-msgstr "no es reconeix el nom de secció \"%s\"" +- +-#: config/v850/v850-c.c:180 +-#, gcc-internal-format +-msgid "malformed #pragma ghs section" +-msgstr "secció #pragma ghs malformada" +- +-#: config/v850/v850-c.c:199 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs interrupt" +-msgstr "escombraries al final del #pragma ghs interrupt" +- +-#: config/v850/v850-c.c:210 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs starttda" +-msgstr "escombraries al final del #pragma ghs starttda" +- +-#: config/v850/v850-c.c:221 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs startsda" +-msgstr "escombraries al final del #pragma ghs startsda" +- +-#: config/v850/v850-c.c:232 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs startzda" +-msgstr "escombraries al final del #pragma ghs startzda" +- +-#: config/v850/v850-c.c:243 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs endtda" +-msgstr "escombraries al final del #pragma ghs endtda" +- +-#: config/v850/v850-c.c:254 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs endsda" +-msgstr "escombraries al final del #pragma ghs endsda" +- +-#: config/v850/v850-c.c:265 +-#, gcc-internal-format +-msgid "junk at end of #pragma ghs endzda" +-msgstr "escombraries al final del #pragma ghs endzda" +- +-#: config/v850/v850.c:184 +-#, gcc-internal-format +-msgid "value passed to %<-m%s%> is too large" +-msgstr "" +- +-#: config/v850/v850.c:2084 +-#, fuzzy, gcc-internal-format +-msgid "%Jdata area attributes cannot be specified for local variables" +-msgstr "no es pot especificar un atribut d'àrea de dades per a variables locals" +- +-#: config/v850/v850.c:2095 +-#, fuzzy, gcc-internal-format +-msgid "data area of %q+D conflicts with previous declaration" +-msgstr "l'àrea de dades de \"%s\" en conflicte amb una declaració prèvia" +- +-#: config/v850/v850.c:2225 +-#, fuzzy, gcc-internal-format +-msgid "bogus JR construction: %d" +-msgstr "construcció JR ambigua: %d\n" +- +-#: config/v850/v850.c:2243 config/v850/v850.c:2352 +-#, gcc-internal-format +-msgid "bad amount of stack space removal: %d" +-msgstr "quantitat errònia d'eliminació d'espai de pila: %d" +- +-#: config/v850/v850.c:2332 +-#, gcc-internal-format +-msgid "bogus JARL construction: %d\n" +-msgstr "construcció JARL ambigua: %d\n" +- +-#: config/v850/v850.c:2631 +-#, fuzzy, gcc-internal-format +-msgid "bogus DISPOSE construction: %d" +-msgstr "construcció DISPOSE ambigua: %d\n" +- +-#: config/v850/v850.c:2650 +-#, fuzzy, gcc-internal-format +-msgid "too much stack space to dispose of: %d" +-msgstr "Massa espai de pila per a preparar: %d" +- +-#: config/v850/v850.c:2752 +-#, fuzzy, gcc-internal-format +-msgid "bogus PREPEARE construction: %d" +-msgstr "construcció PREPEARE ambigua: %d\n" +- +-#: config/v850/v850.c:2771 +-#, fuzzy, gcc-internal-format +-msgid "too much stack space to prepare: %d" +-msgstr "Massa espai de pila per a preparar: %d" +- +-#: config/xtensa/xtensa.c:1861 +-#, gcc-internal-format +-msgid "boolean registers required for the floating-point option" +-msgstr "es requereixen registres booleans per a l'opció de coma flotant" +- +-#: config/xtensa/xtensa.c:1896 +-#, fuzzy, gcc-internal-format +-msgid "-f%s is not supported with CONST16 instructions" +-msgstr "%s no té suport en aquesta configuració" +- +-#: config/xtensa/xtensa.c:1901 +-#, gcc-internal-format +-msgid "PIC is required but not supported with CONST16 instructions" +-msgstr "" +- +-#: config/xtensa/xtensa.c:2745 config/xtensa/xtensa.c:2765 +-#, fuzzy, gcc-internal-format +-msgid "bad builtin code" +-msgstr "macro interna \"%s\" no vàlida" +- +-#: config/xtensa/xtensa.c:2873 +-#, gcc-internal-format +-msgid "only uninitialized variables can be placed in a .bss section" +-msgstr "només les variables sense inicialitzar es poden col·locar en una secció .bss" +- +-#: ada/misc.c:261 +-#, gcc-internal-format +-msgid "missing argument to \"-%s\"" +-msgstr "Falten arguments per a \"-%s\"" +- +-#: ada/misc.c:311 +-#, fuzzy, gcc-internal-format +-msgid "%<-gnat%> misspelled as %<-gant%>" +-msgstr "\"-gnat\" mal lletrejat com \"-gant\"" +- +-#: cp/call.c:2462 +-#, gcc-internal-format +-msgid "%s %D(%T, %T, %T) " +-msgstr "%s %D(%T, %T, %T) " +- +-#: cp/call.c:2467 +-#, gcc-internal-format +-msgid "%s %D(%T, %T) " +-msgstr "%s %D(%T, %T) " +- +-#: cp/call.c:2471 +-#, gcc-internal-format +-msgid "%s %D(%T) " +-msgstr "%s %D(%T) " +- +-#: cp/call.c:2475 +-#, gcc-internal-format +-msgid "%s %T " +-msgstr "%s %T " +- +-#: cp/call.c:2477 +-#, gcc-internal-format +-msgid "%s %+#D " +-msgstr "" +- +-#: cp/call.c:2479 cp/pt.c:1397 +-#, gcc-internal-format +-msgid "%s %+#D" +-msgstr "%s %+#D" +- +-#: cp/call.c:2720 +-#, fuzzy, gcc-internal-format +-msgid "conversion from %qT to %qT is ambiguous" +-msgstr "la conversió de \"%T\" a \"%T\" és ambigua" +- +-#: cp/call.c:2873 cp/call.c:2891 cp/call.c:2954 +-#, fuzzy, gcc-internal-format +-msgid "no matching function for call to %<%D(%A)%>" +-msgstr "no hi ha una funció coincident per a la crida a \"%D(%A)\"" +- +-#: cp/call.c:2894 cp/call.c:2957 +-#, fuzzy, gcc-internal-format +-msgid "call of overloaded %<%D(%A)%> is ambiguous" +-msgstr "la crida del \"%D(%A)\" sobrecarregat és ambigua" +- +-#. It's no good looking for an overloaded operator() on a +-#. pointer-to-member-function. +-#: cp/call.c:3029 +-#, gcc-internal-format +-msgid "pointer-to-member function %E cannot be called without an object; consider using .* or ->*" +-msgstr "la funció punter-a-membre %E no es pot cridar dintre d'un objecte; consideri utilitzar .* o ->*" +- +-#: cp/call.c:3103 +-#, fuzzy, gcc-internal-format +-msgid "no match for call to %<(%T) (%A)%>" +-msgstr "no hi ha coincidència per a la crida a \"(%T) (%A)\"" +- +-#: cp/call.c:3112 +-#, fuzzy, gcc-internal-format +-msgid "call of %<(%T) (%A)%> is ambiguous" +-msgstr "la crida de \"(%T) (%A)\" és ambigua" +- +-#: cp/call.c:3150 +-#, gcc-internal-format +-msgid "%s for ternary % in %<%E ? %E : %E%>" +-msgstr "" +- +-#: cp/call.c:3156 +-#, fuzzy, gcc-internal-format +-msgid "%s for % in %<%E%s%>" +-msgstr "%s per a \"operator%s\" en \"%E%s\"" +- +-#: cp/call.c:3160 +-#, fuzzy, gcc-internal-format +-msgid "%s for % in %<%E[%E]%>" +-msgstr "%s per a \"operator%s\" en \"%E%s\"" +- +-#: cp/call.c:3165 +-#, fuzzy, gcc-internal-format +-msgid "%s for %qs in %<%s %E%>" +-msgstr "%s per a \"operador%s\" en \"%s%E\"" +- +-#: cp/call.c:3170 +-#, fuzzy, gcc-internal-format +-msgid "%s for % in %<%E %s %E%>" +-msgstr "%s per a \"operator%s\" en \"%E%s\"" +- +-#: cp/call.c:3173 +-#, fuzzy, gcc-internal-format +-msgid "%s for % in %<%s%E%>" +-msgstr "%s per a \"operador%s\" en \"%s%E\"" +- +-#: cp/call.c:3265 +-#, gcc-internal-format +-msgid "ISO C++ forbids omitting the middle term of a ?: expression" +-msgstr "ISO C++ prohibeix l'omissió del terme mig d'una expressió ?:" +- +-#: cp/call.c:3343 +-#, gcc-internal-format +-msgid "second operand to the conditional operator is of type %, but the third operand is neither a throw-expression nor of type %" +-msgstr "" +- +-#: cp/call.c:3348 +-#, gcc-internal-format +-msgid "third operand to the conditional operator is of type %, but the second operand is neither a throw-expression nor of type %" +-msgstr "" +- +-#: cp/call.c:3389 cp/call.c:3609 +-#, fuzzy, gcc-internal-format +-msgid "operands to ?: have different types %qT and %qT" +-msgstr "els operands de ?: tenen tipus diferents" +- +-#: cp/call.c:3563 +-#, fuzzy, gcc-internal-format +-msgid "enumeral mismatch in conditional expression: %qT vs %qT" +-msgstr "no coincideix el enumeral en l'expressió condicional: \"%T\" vs \"%T\"" +- +-#: cp/call.c:3570 +-#, gcc-internal-format +-msgid "enumeral and non-enumeral type in conditional expression" +-msgstr "tipus enumeral i no enumeral en l'expressió condicional" +- +-#: cp/call.c:3874 +-#, fuzzy, gcc-internal-format +-msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead" +-msgstr "no es va declarar \"%D(int)\" per al \"%s\" postfix, intentant en el seu lloc l'operador prefix" +- +-#: cp/call.c:3947 +-#, fuzzy, gcc-internal-format +-msgid "comparison between %q#T and %q#T" +-msgstr "comparança entre \"%#T\" i \"%#T\"" +- +-#: cp/call.c:4229 +-#, gcc-internal-format +-msgid "no corresponding deallocation function for `%D'" +-msgstr "" +- +-#: cp/call.c:4234 +-#, fuzzy, gcc-internal-format +-msgid "no suitable % for %qT" +-msgstr "no hi ha un operador \"operator delete\" adequat per a \"%T\"" +- +-#: cp/call.c:4252 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D is private" +-msgstr "\"%+#D\" és privat" +- +-#: cp/call.c:4254 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D is protected" +-msgstr "\"%+#D\" està protegit" +- +-#: cp/call.c:4256 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D is inaccessible" +-msgstr "\"%+#D\" és inaccessible" +- +-#: cp/call.c:4257 +-#, gcc-internal-format +-msgid "within this context" +-msgstr "des d'aquest context" +- +-#: cp/call.c:4303 +-#, fuzzy, gcc-internal-format +-msgid "passing NULL to non-pointer argument %P of %qD" +-msgstr "passant NULL usat per al no punter %s %P de \"%D\"" +- +-#: cp/call.c:4306 +-#, fuzzy, gcc-internal-format +-msgid "converting to non-pointer type %qT from NULL" +-msgstr "%s al tipus \"%T\" que no és un punter des de NULL" +- +-#: cp/call.c:4312 +-#, fuzzy, gcc-internal-format +-msgid "converting % to pointer type for argument %P of %qD" +-msgstr "tipus incompatible per a l'argument %d de \"%s\"" +- +-#: cp/call.c:4356 cp/cvt.c:217 +-#, fuzzy, gcc-internal-format +-msgid "invalid conversion from %qT to %qT" +-msgstr "conversió no vàlida de \"%T\" a \"%T\"" +- +-#: cp/call.c:4358 +-#, fuzzy, gcc-internal-format +-msgid " initializing argument %P of %qD" +-msgstr " inicialitzant l'argument %P de \"%D\"" +- +-#: cp/call.c:4491 +-#, fuzzy, gcc-internal-format +-msgid "cannot bind bitfield %qE to %qT" +-msgstr "no es pot inicialitzar \"%T\" des de \"%T\"" +- +-#: cp/call.c:4494 cp/call.c:4510 +-#, fuzzy, gcc-internal-format +-msgid "cannot bind packed field %qE to %qT" +-msgstr "no es pot declarar que el camp \"%D\" sigui de tipus \"%T\"" +- +-#: cp/call.c:4497 +-#, fuzzy, gcc-internal-format +-msgid "cannot bind rvalue %qE to %qT" +-msgstr "no es pot inicialitzar \"%T\" des de \"%T\"" +- +-#: cp/call.c:4611 +-#, fuzzy, gcc-internal-format +-msgid "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at runtime" +-msgstr "no es pot passar objectes de tipus \"%#T\" que no és POD a través de \"...\"; la cridada avortarà en temps d'execució" +- +-#. Undefined behavior [expr.call] 5.2.2/7. +-#: cp/call.c:4639 +-#, fuzzy, gcc-internal-format +-msgid "cannot receive objects of non-POD type %q#T through %<...%>; call will abort at runtime" +-msgstr "no es pot passar objectes de tipus \"%#T\" que no és POD a través de \"...\"; la cridada avortarà en temps d'execució" +- +-#: cp/call.c:4687 +-#, fuzzy, gcc-internal-format +-msgid "the default argument for parameter %d of %qD has not yet been parsed" +-msgstr "l'argument per omissió per al paràmetre del tipus \"%T\" té el tipus \"%T\"" +- +-#: cp/call.c:4697 +-#, fuzzy, gcc-internal-format +-msgid "recursive evaluation of default argument for %q#D" +-msgstr "redefinició de l'argument per omissió per a \"%#D\"" +- +-#: cp/call.c:4802 +-#, fuzzy, gcc-internal-format +-msgid "argument of function call might be a candidate for a format attribute" +-msgstr "Avisar per funcions que podrien ser candidates per a atributs de format" +- +-#: cp/call.c:4950 +-#, fuzzy, gcc-internal-format +-msgid "passing %qT as % argument of %q#D discards qualifiers" +-msgstr "passar \"%T\" com l'argument \"this\" de \"%#D\" descarta als qualificadors" +- +-#: cp/call.c:4969 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not an accessible base of %qT" +-msgstr "\"%T\" no és una base inaccessible de \"%T\"" +- +-#: cp/call.c:5229 +-#, fuzzy, gcc-internal-format +-msgid "could not find class$ field in java interface type %qT" +-msgstr "no es va poder trobar un camp class$ en el tipus d'interfície java \"%T\"" +- +-#: cp/call.c:5470 +-#, fuzzy, gcc-internal-format +-msgid "call to non-function %qD" +-msgstr "cridada a \"%D\" que no és funció" +- +-#: cp/call.c:5595 +-#, fuzzy, gcc-internal-format +-msgid "no matching function for call to %<%T::%s(%A)%#V%>" +-msgstr "no es troba una funció coincident per a la cridada a \"%T::%D(%A)%#V\"" +- +-#: cp/call.c:5613 +-#, fuzzy, gcc-internal-format +-msgid "call of overloaded %<%s(%A)%> is ambiguous" +-msgstr "la cridada del \"%D(%A)\" sobrecarregat és ambigua" +- +-#: cp/call.c:5639 +-#, fuzzy, gcc-internal-format +-msgid "cannot call member function %qD without object" +-msgstr "no es pot cridar a la funció membre \"%D\" sense un objecte" +- +-#: cp/call.c:6283 +-#, fuzzy, gcc-internal-format +-msgid "passing %qT chooses %qT over %qT" +-msgstr "passar \"%T\" escull \"%T\" sobre \"%T\"" +- +-#: cp/call.c:6285 cp/name-lookup.c:4320 cp/name-lookup.c:4753 +-#, fuzzy, gcc-internal-format +-msgid " in call to %qD" +-msgstr " en la crida a \"%D\"" +- +-#: cp/call.c:6342 +-#, fuzzy, gcc-internal-format +-msgid "choosing %qD over %qD" +-msgstr "escollint \"%D\" sobre \"%D\"" +- +-#: cp/call.c:6343 +-#, fuzzy, gcc-internal-format +-msgid " for conversion from %qT to %qT" +-msgstr " per a la conversió de \"%T\" a \"%T\"" +- +-#: cp/call.c:6345 +-#, gcc-internal-format +-msgid " because conversion sequence for the argument is better" +-msgstr " perquè la seqüència de conversió per a l'argument és millor" +- +-#: cp/call.c:6459 +-#, gcc-internal-format +-msgid "ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:" +-msgstr "" +- +-#: cp/call.c:6603 +-#, fuzzy, gcc-internal-format +-msgid "could not convert %qE to %qT" +-msgstr "no es pot convertir \"%E\" a \"%T\"" +- +-#: cp/call.c:6737 +-#, fuzzy, gcc-internal-format +-msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT" +-msgstr "const_cast no vàlid d'un rvalue de tipus \"%T\" al tipus \"%T\"" +- +-#: cp/call.c:6741 +-#, fuzzy, gcc-internal-format +-msgid "invalid initialization of reference of type %qT from expression of type %qT" +-msgstr "initialització no vàlida de reference de tipus \"%T\" a partir d'una expressió de tipus \"%T\"" +- +-#: cp/class.c:280 +-#, fuzzy, gcc-internal-format +-msgid "cannot convert from base %qT to derived type %qT via virtual base %qT" +-msgstr "no es pot convertir de la base \"%T\" al tipus derivat \"%T\" a través de la base virtual \"%T\"" +- +-#: cp/class.c:961 +-#, fuzzy, gcc-internal-format +-msgid "Java class %qT cannot have a destructor" +-msgstr "la classe base \"%#T\" té un destructor no virtual" +- +-#: cp/class.c:963 +-#, fuzzy, gcc-internal-format +-msgid "Java class %qT cannot have an implicit non-trivial destructor" +-msgstr "la classe base \"%#T\" té un destructor no virtual" +- +-#: cp/class.c:1062 +-#, fuzzy, gcc-internal-format +-msgid "repeated using declaration %q+D" +-msgstr "per a la declaració de patró \"%D\"" +- +-#: cp/class.c:1064 +-#, fuzzy, gcc-internal-format +-msgid "using declaration %q+D conflicts with a previous using declaration" +-msgstr "%Jla secció de \"%D\" causa conflictes amb la declaració prèvia" +- +-#: cp/class.c:1069 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D cannot be overloaded" +-msgstr "no es poden sobrecarregar \"%#D\" i \"%#D\"" +- +-#: cp/class.c:1070 +-#, gcc-internal-format +-msgid "with %q+#D" +-msgstr "" +- +-#: cp/class.c:1137 +-#, fuzzy, gcc-internal-format +-msgid "conflicting access specifications for method %q+D, ignored" +-msgstr "especificacions d'accés en conflicte per al mètode \"%D\", ignorat" +- +-#: cp/class.c:1140 +-#, fuzzy, gcc-internal-format +-msgid "conflicting access specifications for field %qE, ignored" +-msgstr "especificacions d'accés en conflicte per al camp \"%s\", ignorat" +- +-#: cp/class.c:1201 cp/class.c:1209 +-#, fuzzy, gcc-internal-format +-msgid "%q+D invalid in %q#T" +-msgstr "\"%D\" no vàlid en \"%#T\"" +- +-#: cp/class.c:1202 +-#, fuzzy, gcc-internal-format +-msgid " because of local method %q+#D with same name" +-msgstr " a causa del mètode local \"%D\" amb el mateix nom" +- +-#: cp/class.c:1210 +-#, fuzzy, gcc-internal-format +-msgid " because of local member %q+#D with same name" +-msgstr " a causa del membre local \"%D\" amb el mateix nom" +- +-#: cp/class.c:1253 +-#, fuzzy, gcc-internal-format +-msgid "base class %q#T has a non-virtual destructor" +-msgstr "la classe base \"%#T\" té un destructor no virtual" +- +-#: cp/class.c:1570 +-#, fuzzy, gcc-internal-format +-msgid "all member functions in class %qT are private" +-msgstr "tots les funcions membres en la classe \"%#T\" són privades" +- +-#: cp/class.c:1582 +-#, fuzzy, gcc-internal-format +-msgid "%q#T only defines a private destructor and has no friends" +-msgstr "\"%#T\" solament defineix un destructor privat i no té friends" +- +-#: cp/class.c:1626 +-#, fuzzy, gcc-internal-format +-msgid "%q#T only defines private constructors and has no friends" +-msgstr "\"%#T\" solament defineix constructors privats i no té friends" +- +-#: cp/class.c:2019 +-#, fuzzy, gcc-internal-format +-msgid "no unique final overrider for %qD in %qT" +-msgstr "no hi ha un eixafador únic final per a \"%D\" en \"%#T\"" +- +-#. Here we know it is a hider, and no overrider exists. +-#: cp/class.c:2439 +-#, fuzzy, gcc-internal-format +-msgid "%q+D was hidden" +-msgstr "\"%D\" estava amagat" +- +-#: cp/class.c:2440 +-#, fuzzy, gcc-internal-format +-msgid " by %q+D" +-msgstr " per \"%D\"" +- +-#: cp/class.c:2483 cp/decl2.c:1135 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D invalid; an anonymous union can only have non-static data members" +-msgstr "\"%D\" no vàlid; un union anònim només pot tenir membres amb dades no estàtiques" +- +-#: cp/class.c:2486 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D invalid; an anonymous struct can only have non-static data members" +-msgstr "\"%D\" no vàlid; un union anònim només pot tenir membres amb dades no estàtiques" +- +-#: cp/class.c:2494 cp/decl2.c:1141 +-#, fuzzy, gcc-internal-format +-msgid "private member %q+#D in anonymous union" +-msgstr "membre privat \"%D\" en union anònima" +- +-#: cp/class.c:2496 +-#, fuzzy, gcc-internal-format +-msgid "private member %q+#D in anonymous struct" +-msgstr "membre privat \"%D\" en union anònima" +- +-#: cp/class.c:2501 cp/decl2.c:1143 +-#, fuzzy, gcc-internal-format +-msgid "protected member %q+#D in anonymous union" +-msgstr "membre protegit \"%D\" en union anònima" +- +-#: cp/class.c:2503 +-#, fuzzy, gcc-internal-format +-msgid "protected member %q+#D in anonymous struct" +-msgstr "membre protegit \"%D\" en union anònima" +- +-#: cp/class.c:2677 +-#, fuzzy, gcc-internal-format +-msgid "bit-field %q+#D with non-integral type" +-msgstr "camp de bits \"%D\" amb tipus no enter" +- +-#: cp/class.c:2690 +-#, fuzzy, gcc-internal-format +-msgid "bit-field %q+D width not an integer constant" +-msgstr "l'amplària del camp de bits \"%D\" no és una constant entera" +- +-#: cp/class.c:2695 +-#, fuzzy, gcc-internal-format +-msgid "negative width in bit-field %q+D" +-msgstr "amplària negativa en el camp de bit \"%D\"" +- +-#: cp/class.c:2700 +-#, fuzzy, gcc-internal-format +-msgid "zero width for bit-field %q+D" +-msgstr "amplària zero per al camp de bits \"%D\"" +- +-#: cp/class.c:2706 +-#, fuzzy, gcc-internal-format +-msgid "width of %q+D exceeds its type" +-msgstr "l'amplària de \"%D\" excedeix el seu tipus" +- +-#: cp/class.c:2715 +-#, fuzzy, gcc-internal-format +-msgid "%q+D is too small to hold all values of %q#T" +-msgstr "\"%D\" és massa petit per a guardar tots els valors de \"%#T\"" +- +-#: cp/class.c:2772 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with constructor not allowed in union" +-msgstr "no es permet el membre \"%D\" amb constructor en la union" +- +-#: cp/class.c:2775 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with destructor not allowed in union" +-msgstr "no es permet el membre \"%D\" amb destructor en la union" +- +-#: cp/class.c:2777 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with copy assignment operator not allowed in union" +-msgstr "no es permet el membre \"%D\" amb operador d'assignació de còpia en la union" +- +-#: cp/class.c:2801 +-#, fuzzy, gcc-internal-format +-msgid "multiple fields in union %qT initialized" +-msgstr "múltiples camps inicialitzats en la unió \"%#T\"" +- +-#: cp/class.c:2890 +-#, fuzzy, gcc-internal-format +-msgid "%q+D may not be static because it is a member of a union" +-msgstr "\"%D\" ha de ser una funció membre que no sigui static" +- +-#: cp/class.c:2895 +-#, fuzzy, gcc-internal-format +-msgid "%q+D may not have reference type %qT because it is a member of a union" +-msgstr "\"%D\" ha de ser una funció membre que no sigui static" +- +-#: cp/class.c:2906 +-#, fuzzy, gcc-internal-format +-msgid "field %q+D invalidly declared function type" +-msgstr "el camp \"%D\" és declarat no vàlidament com un tipus de funció" +- +-#: cp/class.c:2912 +-#, fuzzy, gcc-internal-format +-msgid "field %q+D invalidly declared method type" +-msgstr "el camp \"%D\" és declarat no vàlidament com un tipus de mètode" +- +-#: cp/class.c:2944 +-#, fuzzy, gcc-internal-format +-msgid "non-static reference %q+#D in class without a constructor" +-msgstr "referència \"%D\" que no és static en una classe sense un constructor" +- +-#: cp/class.c:2955 +-#, gcc-internal-format +-msgid "ignoring packed attribute because of unpacked non-POD field %q+#D" +-msgstr "" +- +-#: cp/class.c:3022 +-#, fuzzy, gcc-internal-format +-msgid "non-static const member %q+#D in class without a constructor" +-msgstr "membre const \"%D\" que no és static en una classe sense un constructor" +- +-#: cp/class.c:3037 +-#, fuzzy, gcc-internal-format +-msgid "field %q+#D with same name as class" +-msgstr "camp \"%D\" amb el mateix nom que la classe" +- +-#: cp/class.c:3068 +-#, fuzzy, gcc-internal-format +-msgid "%q#T has pointer data members" +-msgstr "\"%#T\" té membres punters a dades" +- +-#: cp/class.c:3073 +-#, fuzzy, gcc-internal-format +-msgid " but does not override %<%T(const %T&)%>" +-msgstr " però no s'imposa a \"%T(const %T&)\"" +- +-#: cp/class.c:3075 +-#, fuzzy, gcc-internal-format +-msgid " or %" +-msgstr " o a \"operator=(cont %T&)\"" +- +-#: cp/class.c:3079 +-#, fuzzy, gcc-internal-format +-msgid " but does not override %" +-msgstr " però no s'imposa a \"operator=(const %T&)\"" +- +-#: cp/class.c:3540 +-#, gcc-internal-format +-msgid "offset of empty base %qT may not be ABI-compliant and maychange in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:3665 +-#, gcc-internal-format +-msgid "class %qT will be considered nearly empty in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:3747 +-#, fuzzy, gcc-internal-format +-msgid "initializer specified for non-virtual method %q+D" +-msgstr "es va especificar un inicialitzador per al mètode no virtual \"%D\"" +- +-#: cp/class.c:4412 +-#, gcc-internal-format +-msgid "offset of virtual base %qT is not ABI-compliant and may change in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:4513 +-#, fuzzy, gcc-internal-format +-msgid "direct base %qT inaccessible in %qT due to ambiguity" +-msgstr "base directa \"%T\" inaccessible en \"%T\" a causa d'ambigüitat" +- +-#: cp/class.c:4525 +-#, fuzzy, gcc-internal-format +-msgid "virtual base %qT inaccessible in %qT due to ambiguity" +-msgstr "base virtual \"%T\" inaccessible en \"%T\" a causa d'ambigüitat" +- +-#: cp/class.c:4704 +-#, gcc-internal-format +-msgid "size assigned to %qT may not be ABI-compliant and may change in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:4744 +-#, gcc-internal-format +-msgid "the offset of %qD may not be ABI-compliant and may change in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:4772 +-#, gcc-internal-format +-msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:4781 +-#, gcc-internal-format +-msgid "%q+D contains empty classes which may cause base classes to be placed at different locations in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:4864 +-#, gcc-internal-format +-msgid "layout of classes derived from empty class %qT may change in a future version of GCC" +-msgstr "" +- +-#: cp/class.c:5010 cp/parser.c:14608 +-#, fuzzy, gcc-internal-format +-msgid "redefinition of %q#T" +-msgstr "redefinició de \"%#T\"" +- +-#: cp/class.c:5166 +-#, fuzzy, gcc-internal-format +-msgid "%q#T has virtual functions and accessible non-virtual destructor" +-msgstr "\"%#T\" té funcions virtuals però destructors no virtuals" +- +-#: cp/class.c:5268 +-#, gcc-internal-format +-msgid "trying to finish struct, but kicked out due to previous parse errors" +-msgstr "es va tractar d'acabar struct, però va ser tret a causa d'errors previs de decodificació" +- +-#: cp/class.c:5728 +-#, fuzzy, gcc-internal-format +-msgid "language string %<\"%E\"%> not recognized" +-msgstr "cadena de llenguatge \"\"%s\"\" no reconeguda" +- +-#: cp/class.c:5817 +-#, fuzzy, gcc-internal-format +-msgid "cannot resolve overloaded function %qD based on conversion to type %qT" +-msgstr "no es pot resoldre la funció sobrecarregada \"%D\" basant-se en la conversió al tipus \"%T\"" +- +-#: cp/class.c:5946 +-#, fuzzy, gcc-internal-format +-msgid "no matches converting function %qD to type %q#T" +-msgstr "no hi ha coincidències al convertir la funció \"%D\" al tipus \"%#T\"" +- +-#: cp/class.c:5969 +-#, fuzzy, gcc-internal-format +-msgid "converting overloaded function %qD to type %q#T is ambiguous" +-msgstr "la conversió de la funció sobrecarregada \"%D\" al tipus \"%#T\" és ambigua" +- +-#: cp/class.c:5995 +-#, fuzzy, gcc-internal-format +-msgid "assuming pointer to member %qD" +-msgstr "assumint el punter a membre \"%D\"" +- +-#: cp/class.c:5998 +-#, fuzzy, gcc-internal-format +-msgid "(a pointer to member can only be formed with %<&%E%>)" +-msgstr "(un punter a membre solament es pot formar amb \"&%E\")" +- +-#: cp/class.c:6054 cp/class.c:6088 +-#, gcc-internal-format +-msgid "not enough type information" +-msgstr "no hi ha suficient informació de tipus" +- +-#: cp/class.c:6071 +-#, fuzzy, gcc-internal-format +-msgid "argument of type %qT does not match %qT" +-msgstr "l'argument de tipus \"%T\" no coincideix amb \"%T\"" +- +-#. [basic.scope.class] +-#. +-#. A name N used in a class S shall refer to the same declaration +-#. in its context and when re-evaluated in the completed scope of +-#. S. +-#: cp/class.c:6358 cp/decl.c:1199 cp/name-lookup.c:526 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q#D" +-msgstr "la declaració de \"%#D\"" +- +-#: cp/class.c:6359 +-#, fuzzy, gcc-internal-format +-msgid "changes meaning of %qD from %q+#D" +-msgstr "canvia el significat de \"%D\" a partir de \"%+#D\"" +- +-#: cp/cp-gimplify.c:99 +-#, fuzzy, gcc-internal-format +-msgid "continue statement not within loop or switch" +-msgstr "la declaració break no està dintre d'un cicle o «switch»" +- +-#: cp/cp-gimplify.c:371 +-#, fuzzy, gcc-internal-format +-msgid "statement with no effect" +-msgstr "%s no té %s" +- +-#: cp/cvt.c:90 +-#, fuzzy, gcc-internal-format +-msgid "can't convert from incomplete type %qT to %qT" +-msgstr "no es pot convertir des del tipus de dada incompleta \"%T\" a \"%T\"" +- +-#: cp/cvt.c:99 +-#, fuzzy, gcc-internal-format +-msgid "conversion of %qE from %qT to %qT is ambiguous" +-msgstr "la conversió de \"%E\" des de \"%T\" a \"%T\" és ambigua" +- +-#: cp/cvt.c:168 cp/cvt.c:193 cp/cvt.c:238 +-#, fuzzy, gcc-internal-format +-msgid "cannot convert %qE from type %qT to type %qT" +-msgstr "no es pot convertir \"%E\" des del tipus \"%T\" al tipus \"%T\"" +- +-#: cp/cvt.c:452 +-#, fuzzy, gcc-internal-format +-msgid "conversion from %qT to %qT discards qualifiers" +-msgstr "la conversió de \"%T\" a \"%T\" descarta els qualificadors" +- +-#: cp/cvt.c:470 cp/typeck.c:5257 +-#, fuzzy, gcc-internal-format +-msgid "casting %qT to %qT does not dereference pointer" +-msgstr "la conversió de \"%T\" a \"%T\" no dereferencia els punters" +- +-#: cp/cvt.c:497 +-#, fuzzy, gcc-internal-format +-msgid "cannot convert type %qT to type %qT" +-msgstr "no es pot convertir del tipus \"%T\" al tipus \"%T\"" +- +-#: cp/cvt.c:656 +-#, fuzzy, gcc-internal-format +-msgid "conversion from %q#T to %q#T" +-msgstr "conversió de \"%#T\" a \"%#T\"" +- +-#: cp/cvt.c:668 cp/cvt.c:688 +-#, fuzzy, gcc-internal-format +-msgid "%q#T used where a %qT was expected" +-msgstr "es va usar un \"%#T\" on s'esperava un \"%T\"" +- +-#: cp/cvt.c:703 +-#, fuzzy, gcc-internal-format +-msgid "%q#T used where a floating point value was expected" +-msgstr "es va usar un \"%#T\" on s'esperava un valor de coma flotant" +- +-#: cp/cvt.c:750 +-#, fuzzy, gcc-internal-format +-msgid "conversion from %qT to non-scalar type %qT requested" +-msgstr "es va sol·licitar la conversió des de \"%T\" al tipus no escalar \"%T\"" +- +-#: cp/cvt.c:784 +-#, fuzzy, gcc-internal-format +-msgid "pseudo-destructor is not called" +-msgstr "l'argument per a l'atribut \"%s\" és més gran que %d" +- +-#: cp/cvt.c:844 +-#, fuzzy, gcc-internal-format +-msgid "object of incomplete type %qT will not be accessed in %s" +-msgstr "l'objecte de tipus incomplet \"%T\" no es accesará en %s" +- +-#: cp/cvt.c:849 +-#, fuzzy, gcc-internal-format +-msgid "object of type %qT will not be accessed in %s" +-msgstr "l'objecte de tipus \"%T\" no es accesará en %s" +- +-#: cp/cvt.c:865 +-#, fuzzy, gcc-internal-format +-msgid "object %qE of incomplete type %qT will not be accessed in %s" +-msgstr "l'objecte \"%E\" de tipus incomplet \"%T\" no es accesará en %s" +- +-#. [over.over] enumerates the places where we can take the address +-#. of an overloaded function, and this is not one of them. +-#: cp/cvt.c:902 +-#, gcc-internal-format +-msgid "%s cannot resolve address of overloaded function" +-msgstr "%s no es pot resoldre l'adreça de la funció sobrecarregada" +- +-#. Only warn when there is no &. +-#: cp/cvt.c:909 +-#, fuzzy, gcc-internal-format +-msgid "%s is a reference, not call, to function %qE" +-msgstr "%s és una referència, no una cridada, a la funció \"%E\"" +- +-#: cp/cvt.c:926 +-#, fuzzy, gcc-internal-format +-msgid "%s has no effect" +-msgstr "%s no té %s" +- +-#: cp/cvt.c:958 +-#, fuzzy, gcc-internal-format +-msgid "value computed is not used" +-msgstr "l'autòmat \"%s\" no s'utilitza" +- +-#: cp/cvt.c:1068 +-#, gcc-internal-format +-msgid "converting NULL to non-pointer type" +-msgstr "convertint NULL a un tipus que no és punter" +- +-#: cp/cvt.c:1174 +-#, fuzzy, gcc-internal-format +-msgid "ambiguous default type conversion from %qT" +-msgstr "conversió de tipus per omissió ambigua des de \"%T\"" +- +-#: cp/cvt.c:1176 +-#, fuzzy, gcc-internal-format +-msgid " candidate conversions include %qD and %qD" +-msgstr " les conversions candidates inclouen \"%D\" i \"%D\"" +- +-#: cp/decl.c:1062 +-#, fuzzy, gcc-internal-format +-msgid "%qD was declared % and later %" +-msgstr "\"%s\" va ser declarat \"extern\" i després \"static\"" +- +-#: cp/decl.c:1063 cp/decl.c:1618 objc/objc-act.c:2931 objc/objc-act.c:7503 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+D" +-msgstr "declaració prèvia de \"%D\"" +- +-#: cp/decl.c:1096 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qF throws different exceptions" +-msgstr "la declaració de \"%F\" llança excepcions diferents" +- +-#: cp/decl.c:1097 +-#, fuzzy, gcc-internal-format +-msgid "from previous declaration %q+F" +-msgstr "que la declaració prèvia \"%F\"" +- +-#: cp/decl.c:1153 +-#, fuzzy, gcc-internal-format +-msgid "function %q+D redeclared as inline" +-msgstr "funció \"%s\" re declarada com «inline»" +- +-#: cp/decl.c:1155 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+D with attribute noinline" +-msgstr "declaració prèvia de la funció \"%s\" amb l'atribut «noinline»" +- +-#: cp/decl.c:1162 +-#, fuzzy, gcc-internal-format +-msgid "function %q+D redeclared with attribute noinline" +-msgstr "funció \"%s\" re-declarada amb l'atribut «noinline»" +- +-#: cp/decl.c:1164 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+D was inline" +-msgstr "la declaració prèvia de la funció \"%s\" va ser «inline»" +- +-#: cp/decl.c:1186 cp/decl.c:1259 +-#, fuzzy, gcc-internal-format +-msgid "shadowing %s function %q#D" +-msgstr "enfosquint la funció de biblioteca \"%#D\"" +- +-#: cp/decl.c:1195 +-#, fuzzy, gcc-internal-format +-msgid "library function %q#D redeclared as non-function %q#D" +-msgstr "la funció de biblioteca \"%#D\" és redeclarada com \"%#D\" que no és funció" +- +-#: cp/decl.c:1200 +-#, fuzzy, gcc-internal-format +-msgid "conflicts with built-in declaration %q#D" +-msgstr "causa conflicte amb la declaració interna \"%#D\"" +- +-#: cp/decl.c:1254 cp/decl.c:1380 cp/decl.c:1396 +-#, fuzzy, gcc-internal-format +-msgid "new declaration %q#D" +-msgstr "declaració nova \"%#D\"" +- +-#: cp/decl.c:1255 +-#, fuzzy, gcc-internal-format +-msgid "ambiguates built-in declaration %q#D" +-msgstr "fa ambigua la declaració interna \"%#D\"" +- +-#: cp/decl.c:1344 +-#, fuzzy, gcc-internal-format +-msgid "%q#D redeclared as different kind of symbol" +-msgstr "\"%#D\" redeclarat com un tipus diferent de símbol" +- +-#: cp/decl.c:1347 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+#D" +-msgstr "declaració prèvia de \"%#D\"" +- +-#: cp/decl.c:1366 +-#, fuzzy, gcc-internal-format +-msgid "declaration of template %q#D" +-msgstr "declaració del patró \"%#D\"" +- +-#: cp/decl.c:1367 cp/name-lookup.c:527 +-#, fuzzy, gcc-internal-format +-msgid "conflicts with previous declaration %q+#D" +-msgstr "causa conflictes amb la declaració prèvia \"%#D\"" +- +-#: cp/decl.c:1381 cp/decl.c:1397 +-#, fuzzy, gcc-internal-format +-msgid "ambiguates old declaration %q+#D" +-msgstr "fa ambigua la declaració antiga \"%#D\"" +- +-#: cp/decl.c:1389 +-#, fuzzy, gcc-internal-format +-msgid "declaration of C function %q#D conflicts with" +-msgstr "la declaració de la funció C \"%#D\" té conflictes amb" +- +-#: cp/decl.c:1391 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration %q+#D here" +-msgstr "declaració prèvia de \"%#D\" aquí" +- +-#: cp/decl.c:1405 +-#, fuzzy, gcc-internal-format +-msgid "conflicting declaration %q#D" +-msgstr "declaracions de \"%s\" en conflicte" +- +-#: cp/decl.c:1406 +-#, fuzzy, gcc-internal-format +-msgid "%q+D has a previous declaration as %q#D" +-msgstr "declaració prèvia com \"%#D\"" +- +-#. [namespace.alias] +-#. +-#. A namespace-name or namespace-alias shall not be declared as +-#. the name of any other entity in the same declarative region. +-#. A namespace-name defined at global scope shall not be +-#. declared as the name of any other entity in any global scope +-#. of the program. +-#: cp/decl.c:1458 +-#, fuzzy, gcc-internal-format +-msgid "declaration of namespace %qD conflicts with" +-msgstr "la declaració de la funció C \"%#D\" té conflictes amb" +- +-#: cp/decl.c:1459 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of namespace %q+D here" +-msgstr "declaració prèvia de \"%#D\" aquí" +- +-#: cp/decl.c:1470 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D previously defined here" +-msgstr "es va definir \"%#D\" prèviament aquí" +- +-#. Prototype decl follows defn w/o prototype. +-#: cp/decl.c:1480 +-#, fuzzy, gcc-internal-format +-msgid "prototype for %q+#D" +-msgstr "el prototip per a \"%#D\"" +- +-#: cp/decl.c:1481 +-#, fuzzy, gcc-internal-format +-msgid "%Jfollows non-prototype definition here" +-msgstr "a continuació la definició del no prototip aquí" +- +-#: cp/decl.c:1521 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration of %q+#D with %qL linkage" +-msgstr "declaració prèvia de \"%#D\" amb l'enllaç %L" +- +-#: cp/decl.c:1523 +-#, fuzzy, gcc-internal-format +-msgid "conflicts with new declaration with %qL linkage" +-msgstr "té conflictes amb la declaració nova amb l'enllaç %L" +- +-#: cp/decl.c:1546 cp/decl.c:1552 +-#, fuzzy, gcc-internal-format +-msgid "default argument given for parameter %d of %q#D" +-msgstr "argument per omissió donat per al paràmetre %d de \"%#D\"" +- +-#: cp/decl.c:1548 cp/decl.c:1554 +-#, fuzzy, gcc-internal-format +-msgid "after previous specification in %q+#D" +-msgstr "després de l'especificació prèvia en \"%#D\"" +- +-#: cp/decl.c:1563 +-#, fuzzy, gcc-internal-format +-msgid "%q#D was used before it was declared inline" +-msgstr "es va usar \"%#D\" abans que sigui declarat «inline»" +- +-#: cp/decl.c:1564 +-#, fuzzy, gcc-internal-format +-msgid "%Jprevious non-inline declaration here" +-msgstr "declaració prèvia no «inline» aquí" +- +-#: cp/decl.c:1617 +-#, fuzzy, gcc-internal-format +-msgid "redundant redeclaration of %qD in same scope" +-msgstr "declaració redundant de \"%D\" en el mateix àmbit" +- +-#. From [temp.expl.spec]: +-#. +-#. If a template, a member template or the member of a class +-#. template is explicitly specialized then that +-#. specialization shall be declared before the first use of +-#. that specialization that would cause an implicit +-#. instantiation to take place, in every translation unit in +-#. which such a use occurs. +-#: cp/decl.c:1932 +-#, fuzzy, gcc-internal-format +-msgid "explicit specialization of %qD after first use" +-msgstr "especialització explícita de %D després del primer ús" +- +-#: cp/decl.c:2028 +-#, fuzzy, gcc-internal-format +-msgid "%q+D: visibility attribute ignored because it" +-msgstr "s'ignora l'atribut \"%s\"" +- +-#: cp/decl.c:2030 +-#, fuzzy, gcc-internal-format +-msgid "%Jconflicts with previous declaration here" +-msgstr "causa conflictes amb la declaració prèvia \"%#D\"" +- +-#: cp/decl.c:2457 +-#, fuzzy, gcc-internal-format +-msgid "jump to label %qD" +-msgstr "salt a l'etiqueta \"%D\"" +- +-#: cp/decl.c:2459 +-#, gcc-internal-format +-msgid "jump to case label" +-msgstr "salt a l'etiqueta «case»" +- +-#: cp/decl.c:2461 +-#, fuzzy, gcc-internal-format +-msgid "%H from here" +-msgstr " des d'aquí" +- +-#: cp/decl.c:2480 cp/decl.c:2643 +-#, gcc-internal-format +-msgid " exits OpenMP structured block" +-msgstr "" +- +-#: cp/decl.c:2501 +-#, fuzzy, gcc-internal-format +-msgid " crosses initialization of %q+#D" +-msgstr " creua la inicialització de \"%#D\"" +- +-#: cp/decl.c:2503 cp/decl.c:2618 +-#, fuzzy, gcc-internal-format +-msgid " enters scope of non-POD %q+#D" +-msgstr " entra en l'àmbit de \"%#D\" que no és POD" +- +-#: cp/decl.c:2516 cp/decl.c:2622 +-#, gcc-internal-format +-msgid " enters try block" +-msgstr " entra intent de bloc" +- +-#: cp/decl.c:2518 cp/decl.c:2624 +-#, gcc-internal-format +-msgid " enters catch block" +-msgstr " entra captura de bloc" +- +-#: cp/decl.c:2528 cp/decl.c:2627 +-#, fuzzy, gcc-internal-format +-msgid " enters OpenMP structured block" +-msgstr " entra intent de bloc" +- +-#: cp/decl.c:2599 cp/decl.c:2639 +-#, fuzzy, gcc-internal-format +-msgid "jump to label %q+D" +-msgstr "salt a l'etiqueta \"%D\"" +- +-#: cp/decl.c:2600 cp/decl.c:2640 +-#, gcc-internal-format +-msgid " from here" +-msgstr " des d'aquí" +- +-#. Can't skip init of __exception_info. +-#: cp/decl.c:2612 +-#, fuzzy, gcc-internal-format +-msgid "%J enters catch block" +-msgstr " entra captura de bloc" +- +-#: cp/decl.c:2616 +-#, fuzzy, gcc-internal-format +-msgid " skips initialization of %q+#D" +-msgstr " salta la inicialización de \"%#D\"" +- +-#: cp/decl.c:2692 +-#, gcc-internal-format +-msgid "label named wchar_t" +-msgstr "etiqueta nomenada wchar_t" +- +-#: cp/decl.c:2696 +-#, fuzzy, gcc-internal-format +-msgid "duplicate label %qD" +-msgstr "etiqueta duplicada \"%D\"" +- +-#: cp/decl.c:2962 +-#, fuzzy, gcc-internal-format +-msgid "%qD is not a type" +-msgstr "\"%D::%D\" no és un patró" +- +-#: cp/decl.c:2968 cp/parser.c:4033 +-#, fuzzy, gcc-internal-format +-msgid "%qD used without template parameters" +-msgstr "s'usa \"%D\" sense paràmetres de patró" +- +-#: cp/decl.c:2983 +-#, fuzzy, gcc-internal-format +-msgid "%q#T is not a class" +-msgstr "\"%#T\" no és un patró" +- +-#: cp/decl.c:2995 cp/decl.c:3063 +-#, fuzzy, gcc-internal-format +-msgid "no class template named %q#T in %q#T" +-msgstr "no hi ha una patró de classe cridada \"%#T\" en \"%#T\"" +- +-#: cp/decl.c:3003 +-#, gcc-internal-format +-msgid "% names %q#T, which is not a class template" +-msgstr "" +- +-#: cp/decl.c:3010 +-#, gcc-internal-format +-msgid "% names %q#T, which is not a type" +-msgstr "" +- +-#: cp/decl.c:3072 +-#, fuzzy, gcc-internal-format +-msgid "template parameters do not match template" +-msgstr "els paràmetres del patró no poden ser friends" +- +-#: cp/decl.c:3073 cp/friend.c:321 cp/friend.c:329 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared here" +-msgstr " \"%#D\" declarat aquí" +- +-#: cp/decl.c:3711 +-#, fuzzy, gcc-internal-format +-msgid "%Jan anonymous struct cannot have function members" +-msgstr "un union anònim no pot tenir funcions membre" +- +-#: cp/decl.c:3713 +-#, fuzzy, gcc-internal-format +-msgid "%Jan anonymous union cannot have function members" +-msgstr "un union anònim no pot tenir funcions membre" +- +-#: cp/decl.c:3731 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with constructor not allowed in anonymous aggregate" +-msgstr "no es permet el membre \"%#D\" amb constructor en un agregat anònim" +- +-#: cp/decl.c:3734 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with destructor not allowed in anonymous aggregate" +-msgstr "no es permet el membre \"%#D\" amb destructor en un agregat anònim" +- +-#: cp/decl.c:3737 +-#, fuzzy, gcc-internal-format +-msgid "member %q+#D with copy assignment operator not allowed in anonymous aggregate" +-msgstr "no es permet el membre \"%#D\" amb operador d'assignació de còpia en un agregat anònim" +- +-#: cp/decl.c:3762 +-#, gcc-internal-format +-msgid "multiple types in one declaration" +-msgstr "tipus múltiples en una declaració" +- +-#: cp/decl.c:3766 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of C++ built-in type %qT" +-msgstr "redeclaració del tipus intern de C++ \"%T\"" +- +-#: cp/decl.c:3803 +-#, gcc-internal-format +-msgid "missing type-name in typedef-declaration" +-msgstr "falta el nom del tipus en la declaració typedef" +- +-#: cp/decl.c:3811 +-#, gcc-internal-format +-msgid "ISO C++ prohibits anonymous structs" +-msgstr "ISO C++ prohibeix structs anònims" +- +-#: cp/decl.c:3818 +-#, fuzzy, gcc-internal-format +-msgid "%qs can only be specified for functions" +-msgstr "\"%D\" només pot ser especificat per a funcions" +- +-#: cp/decl.c:3824 +-#, fuzzy, gcc-internal-format +-msgid "% can only be specified inside a class" +-msgstr "\"%D\" només pot ser especificat dintre d'una classe" +- +-#: cp/decl.c:3826 +-#, fuzzy, gcc-internal-format +-msgid "% can only be specified for constructors" +-msgstr "\"%D\" només pot ser especificat per a constructors" +- +-#: cp/decl.c:3828 +-#, fuzzy, gcc-internal-format +-msgid "a storage class can only be specified for objects and functions" +-msgstr "\"%D\" només pot ser especificat per a objectes i funcions" +- +-#: cp/decl.c:3834 +-#, fuzzy, gcc-internal-format +-msgid "qualifiers can only be specified for objects and functions" +-msgstr "\"%D\" només pot ser especificat per a objectes i funcions" +- +-#: cp/decl.c:3837 +-#, fuzzy, gcc-internal-format +-msgid "% was ignored in this declaration" +-msgstr "el tipus de dada per omissió és \"int\" en la declaració de \"%s\"" +- +-#: cp/decl.c:3866 +-#, fuzzy, gcc-internal-format +-msgid "attribute ignored in declaration of %q+#T" +-msgstr "declaració friend prèvia de \"%D\"" +- +-#: cp/decl.c:3867 +-#, gcc-internal-format +-msgid "attribute for %q+#T must follow the %qs keyword" +-msgstr "" +- +-#: cp/decl.c:3909 +-#, fuzzy, gcc-internal-format +-msgid "ignoring attributes applied to class type outside of definition" +-msgstr "l'atribut \"%s\" sol es pot aplicar a definicions de classe" +- +-#: cp/decl.c:3987 +-#, fuzzy, gcc-internal-format +-msgid "function %q#D is initialized like a variable" +-msgstr "la funció \"%#D\" està inicialitzada com una variable" +- +-#: cp/decl.c:3998 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q#D has % and is initialized" +-msgstr "la declaració de \"%#D\" té \"extern\" i està inicialitzada" +- +-#: cp/decl.c:4014 +-#, fuzzy, gcc-internal-format +-msgid "definition of %q#D is marked %" +-msgstr "la definició de la funció \"%s\" està marcada com dllimport" +- +-#: cp/decl.c:4033 +-#, fuzzy, gcc-internal-format +-msgid "%q#D is not a static member of %q#T" +-msgstr "\"%#D\" no és un membre static de \"%#T\"" +- +-#: cp/decl.c:4039 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>" +-msgstr "ISO C++ no permet que \"%T::%D\" es defineixi com \"%T::%D\"" +- +-#: cp/decl.c:4048 +-#, gcc-internal-format +-msgid "template header not allowed in member definition of explicitly specialized class" +-msgstr "" +- +-#: cp/decl.c:4056 +-#, fuzzy, gcc-internal-format +-msgid "duplicate initialization of %qD" +-msgstr "inicialització duplicada de %D" +- +-#: cp/decl.c:4095 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q#D outside of class is not definition" +-msgstr "la declaració de \"%#D\" fora de la classe no és una definició" +- +-#: cp/decl.c:4188 +-#, fuzzy, gcc-internal-format +-msgid "variable %q#D has initializer but incomplete type" +-msgstr "la variable \"%#D\" té inicializador però de tipus de dada incompleta" +- +-#: cp/decl.c:4194 cp/decl.c:4906 +-#, fuzzy, gcc-internal-format +-msgid "elements of array %q#D have incomplete type" +-msgstr "alguns elements de la matriu \"%#D\" tenen tipus de dada incompleta" +- +-#: cp/decl.c:4200 +-#, fuzzy, gcc-internal-format +-msgid "aggregate %q#D has incomplete type and cannot be defined" +-msgstr "l'agregat \"%#D\" té un tipus incomplet i no es pot definir" +- +-#: cp/decl.c:4236 +-#, fuzzy, gcc-internal-format +-msgid "%qD declared as reference but not initialized" +-msgstr "\"%D\" declarat com referència però no està inicialitzat" +- +-#: cp/decl.c:4242 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids use of initializer list to initialize reference %qD" +-msgstr "ISO C++ prohibeix l'ús d'una llista de inicialitzadors per a inicialitzar la referència \"%D\"" +- +-#: cp/decl.c:4268 +-#, fuzzy, gcc-internal-format +-msgid "cannot initialize %qT from %qT" +-msgstr "no es pot inicialitzar \"%T\" des de \"%T\"" +- +-#: cp/decl.c:4296 +-#, gcc-internal-format +-msgid "name %qD used in a GNU-style designated initializer for an array" +-msgstr "" +- +-#: cp/decl.c:4345 +-#, fuzzy, gcc-internal-format +-msgid "initializer fails to determine size of %qD" +-msgstr "l'inicializador no pot determinar la grandària de \"%D\"" +- +-#: cp/decl.c:4352 +-#, fuzzy, gcc-internal-format +-msgid "array size missing in %qD" +-msgstr "falta la grandària de la matriu en \"%D\"" +- +-#: cp/decl.c:4364 +-#, fuzzy, gcc-internal-format +-msgid "zero-size array %qD" +-msgstr "matriu \"%D\" de grandària zero" +- +-#. An automatic variable with an incomplete type: that is an error. +-#. Don't talk about array types here, since we took care of that +-#. message in grokdeclarator. +-#: cp/decl.c:4407 +-#, fuzzy, gcc-internal-format +-msgid "storage size of %qD isn't known" +-msgstr "no es coneix la grandària d'emmagatzematge de \"%D\"" +- +-#: cp/decl.c:4429 +-#, fuzzy, gcc-internal-format +-msgid "storage size of %qD isn't constant" +-msgstr "la grandària d'emmagatzematge de \"%D\" no és constant" +- +-#: cp/decl.c:4478 +-#, fuzzy, gcc-internal-format +-msgid "sorry: semantics of inline function static data %q+#D are wrong (you'll wind up with multiple copies)" +-msgstr "perdó: la semàntica de les dades static de la funció «inline» \"%#D\" és errònia (acabarà amb múltiples còpies)" +- +-#: cp/decl.c:4481 +-#, fuzzy, gcc-internal-format +-msgid "%J you can work around this by removing the initializer" +-msgstr " pot evitar això eliminant l'inicializador" +- +-#: cp/decl.c:4508 +-#, fuzzy, gcc-internal-format +-msgid "uninitialized const %qD" +-msgstr "const \"%D\" sense inicialitzar" +- +-#: cp/decl.c:4620 +-#, fuzzy, gcc-internal-format +-msgid "invalid type %qT as initializer for a vector of type %qT" +-msgstr "inicialitzador no vàlid per al mètode virtual \"%D\"" +- +-#: cp/decl.c:4662 +-#, fuzzy, gcc-internal-format +-msgid "initializer for %qT must be brace-enclosed" +-msgstr "l'inicialitzador per a \"%T\" ha d'estar tancat entre parèntesis" +- +-#: cp/decl.c:4680 +-#, fuzzy, gcc-internal-format +-msgid "%qT has no non-static data member named %qD" +-msgstr "\"%T\" té una dada membre que no és non-static cridada \"%D\"" +- +-#: cp/decl.c:4731 +-#, fuzzy, gcc-internal-format +-msgid "braces around scalar initializer for type %qT" +-msgstr "parèntesis al voltant de l'inicialitzador per a \"%T\"" +- +-#: cp/decl.c:4814 +-#, fuzzy, gcc-internal-format +-msgid "missing braces around initializer for %qT" +-msgstr "falten claus al voltant dels valors inicials" +- +-#: cp/decl.c:4871 +-#, fuzzy, gcc-internal-format +-msgid "too many initializers for %qT" +-msgstr "massa inicialitzadors per a \"%T\"" +- +-#: cp/decl.c:4914 +-#, fuzzy, gcc-internal-format +-msgid "variable-sized object %qD may not be initialized" +-msgstr "l'objecte de grandària variable \"%D\" no pot ser inicialitzat" +- +-#: cp/decl.c:4920 +-#, fuzzy, gcc-internal-format +-msgid "%qD has incomplete type" +-msgstr "\"%D\" té un tipus de dada incompleta" +- +-#: cp/decl.c:4935 +-#, fuzzy, gcc-internal-format +-msgid "scalar object %qD requires one element in initializer" +-msgstr "excés d'elements en valors inicials d'union" +- +-#. A non-aggregate that is not a scalar cannot be initialized +-#. via an initializer-list in C++98. +-#: cp/decl.c:4945 +-#, fuzzy, gcc-internal-format +-msgid "braces around initializer for non-aggregate type %qT" +-msgstr "parèntesis al voltant de l'inicialitzador per a \"%T\"" +- +-#: cp/decl.c:4995 +-#, fuzzy, gcc-internal-format +-msgid "%qD must be initialized by constructor, not by %<{...}%>" +-msgstr "\"%D\" ha de ser inicialitzat per un constructor, no per \"{...}\"" +- +-#: cp/decl.c:5031 +-#, fuzzy, gcc-internal-format +-msgid "array %qD initialized by parenthesized string literal %qE" +-msgstr "_Pragma duu una cadena literal entre parèntesis" +- +-#: cp/decl.c:5046 +-#, fuzzy, gcc-internal-format +-msgid "structure %qD with uninitialized const members" +-msgstr "estructura \"%D\" amb membres const sense inicialitzar" +- +-#: cp/decl.c:5048 +-#, fuzzy, gcc-internal-format +-msgid "structure %qD with uninitialized reference members" +-msgstr "estructura \"%D\" amb membres de referència sense inicialitzar" +- +-#: cp/decl.c:5330 +-#, gcc-internal-format +-msgid "assignment (not initialization) in declaration" +-msgstr "assignació (no inicialització) en la declaració" +- +-#: cp/decl.c:5420 +-#, fuzzy, gcc-internal-format +-msgid "shadowing previous type declaration of %q#D" +-msgstr "enfosquint la declaració de tipus prèvia de \"%#D\"" +- +-#: cp/decl.c:5450 +-#, fuzzy, gcc-internal-format +-msgid "%qD cannot be thread-local because it has non-POD type %qT" +-msgstr "\"%D\" no pot ser thread-local perquè és de tipus \"%T\" que no és POD" +- +-#: cp/decl.c:5485 +-#, fuzzy, gcc-internal-format +-msgid "%qD is thread-local and so cannot be dynamically initialized" +-msgstr "\"%D\" és thread-local i per tant no es pot inicialitzar dinàmicament" +- +-#: cp/decl.c:5503 +-#, fuzzy, gcc-internal-format +-msgid "%qD cannot be initialized by a non-constant expression when being declared" +-msgstr "matriu amb valors inicials assignats d'una expressió matricial que no és constant" +- +-#: cp/decl.c:6160 +-#, fuzzy, gcc-internal-format +-msgid "destructor for alien class %qT cannot be a member" +-msgstr "el destructor per a la classe estrangera \"%T\" no pot ser un membre" +- +-#: cp/decl.c:6162 +-#, fuzzy, gcc-internal-format +-msgid "constructor for alien class %qT cannot be a member" +-msgstr "el constructor per a la classe estrangera \"%T\" no pot ser un membre" +- +-#: cp/decl.c:6183 +-#, fuzzy, gcc-internal-format +-msgid "%qD declared as a % %s" +-msgstr "\"%D\" va ser declarat com un %s \"virtual\"" +- +-#: cp/decl.c:6185 +-#, fuzzy, gcc-internal-format +-msgid "%qD declared as an % %s" +-msgstr "\"%D\" va ser declarat com un %s \"inline\"" +- +-#: cp/decl.c:6187 +-#, fuzzy, gcc-internal-format +-msgid "% and % function specifiers on %qD invalid in %s declaration" +-msgstr "especificadors de funció \"const\" i \"volatile\" en \"%D\" no vàlids en la declaració %s" +- +-#: cp/decl.c:6191 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared as a friend" +-msgstr "\"%D\" declarat com un friend" +- +-#: cp/decl.c:6197 +-#, fuzzy, gcc-internal-format +-msgid "%q+D declared with an exception specification" +-msgstr "\"%D\" declarat amb una excepció d'especificació" +- +-#: cp/decl.c:6231 +-#, fuzzy, gcc-internal-format +-msgid "definition of %qD is not in namespace enclosing %qT" +-msgstr "la declaració de \"%D\" no està en un espai de noms al voltant de \"%D\"" +- +-#: cp/decl.c:6342 +-#, fuzzy, gcc-internal-format +-msgid "defining explicit specialization %qD in friend declaration" +-msgstr "definint l'especialització explícita \"%D\" en la declaració friend" +- +-#. Something like `template friend void f()'. +-#: cp/decl.c:6352 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of template-id %qD in declaration of primary template" +-msgstr "ús no vàlid de l'aneu de patró \"%D\" en la declaració del patró primàri" +- +-#: cp/decl.c:6382 +-#, fuzzy, gcc-internal-format +-msgid "default arguments are not allowed in declaration of friend template specialization %qD" +-msgstr "no es permeten els argument per omissió en la declaració de l'especialització friend del patró \"%D\"" +- +-#: cp/decl.c:6390 +-#, fuzzy, gcc-internal-format +-msgid "% is not allowed in declaration of friend template specialization %qD" +-msgstr "no es permet \"inline\" en la declaració de l'especialització friend del patró \"%D\"" +- +-#: cp/decl.c:6433 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare %<::main%> to be a template" +-msgstr "no es pot declarar \"::main\" com template" +- +-#: cp/decl.c:6435 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare %<::main%> to be inline" +-msgstr "no es pot declarar \"::main\" com «inline»" +- +-#: cp/decl.c:6437 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare %<::main%> to be static" +-msgstr "no es pot declarar \"::main\" com static" +- +-#: cp/decl.c:6465 +-#, fuzzy, gcc-internal-format +-msgid "non-local function %q#D uses anonymous type" +-msgstr "la funció \"%#D\" que no és local usa un tipus anònim" +- +-#: cp/decl.c:6468 cp/decl.c:6748 +-#, fuzzy, gcc-internal-format +-msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage" +-msgstr "\"%#D\" no es refereix al tipus sense qualificar, així que no s'usa per a l'enllaçat" +- +-#: cp/decl.c:6474 +-#, fuzzy, gcc-internal-format +-msgid "non-local function %q#D uses local type %qT" +-msgstr "la funció \"%#D\" que no és local utilitza el tipus local \"%T\"" +- +-#: cp/decl.c:6498 +-#, fuzzy, gcc-internal-format +-msgid "static member function %qD cannot have cv-qualifier" +-msgstr "%sfunció membre \"%D\" no pot tenir el qualificador de mètode \"%T\"" +- +-#: cp/decl.c:6499 +-#, fuzzy, gcc-internal-format +-msgid "non-member function %qD cannot have cv-qualifier" +-msgstr "%sfunció membre \"%D\" no pot tenir el qualificador de mètode \"%T\"" +- +-#: cp/decl.c:6547 +-#, fuzzy, gcc-internal-format +-msgid "%<::main%> must return %" +-msgstr "\"main\" ha de retornar \"int\"" +- +-#: cp/decl.c:6586 +-#, fuzzy, gcc-internal-format +-msgid "definition of implicitly-declared %qD" +-msgstr "la definició de \"%D\" declarat implícitament" +- +-#: cp/decl.c:6603 cp/decl2.c:677 +-#, fuzzy, gcc-internal-format +-msgid "no %q#D member function declared in class %qT" +-msgstr "no hi ha una funció membre \"%#D\" declarada en la classe \"%T\"" +- +-#. DRs 132, 319 and 389 seem to indicate types with +-#. no linkage can only be used to declare extern "C" +-#. entities. Since it's not always an error in the +-#. ISO C++ 90 Standard, we only issue a warning. +-#: cp/decl.c:6745 +-#, fuzzy, gcc-internal-format +-msgid "non-local variable %q#D uses anonymous type" +-msgstr "la funció \"%#D\" que no és local usa un tipus anònim" +- +-#: cp/decl.c:6754 +-#, fuzzy, gcc-internal-format +-msgid "non-local variable %q#D uses local type %qT" +-msgstr "la funció \"%#D\" que no és local utilitza el tipus local \"%T\"" +- +-#: cp/decl.c:6876 +-#, fuzzy, gcc-internal-format +-msgid "invalid in-class initialization of static data member of non-integral type %qT" +-msgstr "ISO C++ prohibeix la inicialització del membre constant \"%D\" del tipus \"%T\" que no és enter" +- +-#: cp/decl.c:6886 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids in-class initialization of non-const static member %qD" +-msgstr "ISO C++ prohibeix la inicialización en la classe del membre static \"%D\" que no és constant" +- +-#: cp/decl.c:6890 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids initialization of member constant %qD of non-integral type %qT" +-msgstr "ISO C++ prohibeix la inicialització del membre constant \"%D\" del tipus \"%T\" que no és enter" +- +-#: cp/decl.c:6915 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qD has non-integral type %qT" +-msgstr "la grandària de la matriu \"%D\" té un tipus no enter" +- +-#: cp/decl.c:6917 +-#, fuzzy, gcc-internal-format +-msgid "size of array has non-integral type %qT" +-msgstr "la grandària de la matriu té un tipus no enter" +- +-#: cp/decl.c:6965 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qD is negative" +-msgstr "la grandària de la matriu \"%D\" és negatiu" +- +-#: cp/decl.c:6967 +-#, gcc-internal-format +-msgid "size of array is negative" +-msgstr "la grandària de la matriu és negatiu" +- +-#: cp/decl.c:6975 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids zero-size array %qD" +-msgstr "ISO C++ prohibeix la matriu \"%D\" de grandària zero" +- +-#: cp/decl.c:6977 +-#, gcc-internal-format +-msgid "ISO C++ forbids zero-size array" +-msgstr "ISO C++ prohibeix la matriu de grandària zero" +- +-#: cp/decl.c:6984 +-#, fuzzy, gcc-internal-format +-msgid "size of array %qD is not an integral constant-expression" +-msgstr "la grandària de la matriu \"%D\" no és una expressió constant integral" +- +-#: cp/decl.c:6987 +-#, gcc-internal-format +-msgid "size of array is not an integral constant-expression" +-msgstr "la grandària de la matriu no és una expressió constant integral" +- +-#: cp/decl.c:6993 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids variable length array %qD" +-msgstr "ISO C++ prohibeix la matriu \"%D\" de grandària variable" +- +-#: cp/decl.c:6995 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids variable length array" +-msgstr "ISO C++ prohibeix la matriu de grandària variable" +- +-#: cp/decl.c:7001 +-#, gcc-internal-format +-msgid "variable length array %qD is used" +-msgstr "" +- +-#: cp/decl.c:7035 +-#, gcc-internal-format +-msgid "overflow in array dimension" +-msgstr "desbordament en la dimensió de la matriu" +- +-#: cp/decl.c:7116 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD as %s" +-msgstr "declaración de \"%D\" com %s" +- +-#: cp/decl.c:7118 +-#, gcc-internal-format +-msgid "creating %s" +-msgstr "creant %s" +- +-#: cp/decl.c:7130 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first" +-msgstr "la declaració de \"%D\" com una matriu multidimensional ha de tenir límits per a totes les dimensions excepte la primera" +- +-#: cp/decl.c:7134 +-#, gcc-internal-format +-msgid "multidimensional array must have bounds for all dimensions except the first" +-msgstr "una matriu multidimensional ha de tenir límits per a totes les dimensions excepte per a la primera" +- +-#: cp/decl.c:7169 +-#, gcc-internal-format +-msgid "return type specification for constructor invalid" +-msgstr "l'especificació del tipus de retorn per al constructor no és vàlid" +- +-#: cp/decl.c:7179 +-#, gcc-internal-format +-msgid "return type specification for destructor invalid" +-msgstr "l'especificació del tipus de retorn per al destructor no és vàlid" +- +-#: cp/decl.c:7192 +-#, fuzzy, gcc-internal-format +-msgid "return type specified for %" +-msgstr "es va especificar un tipus de retorn per a \"operator %T\"" +- +-#: cp/decl.c:7214 +-#, gcc-internal-format +-msgid "unnamed variable or field declared void" +-msgstr "variable sense nom o camp declarat void" +- +-#: cp/decl.c:7218 +-#, fuzzy, gcc-internal-format +-msgid "variable or field %qE declared void" +-msgstr "variable o camp \"%s\" declarat void" +- +-#: cp/decl.c:7221 +-#, gcc-internal-format +-msgid "variable or field declared void" +-msgstr "variable o camp declarat void" +- +-#: cp/decl.c:7388 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of qualified-name %<::%D%>" +-msgstr "ús no vàlid del membre \"%D\"" +- +-#: cp/decl.c:7391 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of qualified-name %<%T::%D%>" +-msgstr "definició no vàlida del tipus qualificat \"%T\"" +- +-#: cp/decl.c:7394 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of qualified-name %<%D::%D%>" +-msgstr "ús no vàlid del membre \"%D\"" +- +-#: cp/decl.c:7406 +-#, fuzzy, gcc-internal-format +-msgid "type %qT is not derived from type %qT" +-msgstr "el tipus \"%T\" no és derivat del tipus \"%T\"" +- +-#: cp/decl.c:7422 cp/decl.c:7512 cp/decl.c:8660 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD as non-function" +-msgstr "la declaració de \"%D\" com una no funció" +- +-#: cp/decl.c:7428 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD as non-member" +-msgstr "la declaració de \"%D\" com una no funció" +- +-#: cp/decl.c:7457 +-#, fuzzy, gcc-internal-format +-msgid "declarator-id missing; using reserved word %qD" +-msgstr "falta l'identificador del declarador; utilitzant la paraula reservada \"%D\"" +- +-#: cp/decl.c:7504 +-#, fuzzy, gcc-internal-format +-msgid "function definition does not declare parameters" +-msgstr "la definició de la funció ho va declarar com \"register\"" +- +-#: cp/decl.c:7546 +-#, fuzzy, gcc-internal-format +-msgid "two or more data types in declaration of %qs" +-msgstr "dos o més tipus de dades en la declaració de \"%s\"" +- +-#: cp/decl.c:7552 +-#, fuzzy, gcc-internal-format +-msgid "conflicting specifiers in declaration of %qs" +-msgstr "declaracions de \"%s\" en conflicte" +- +-#: cp/decl.c:7623 cp/decl.c:7626 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids declaration of %qs with no type" +-msgstr "ISO C++ prohibeix la declaració de \"%s\" sense tipus" +- +-#: cp/decl.c:7651 +-#, fuzzy, gcc-internal-format +-msgid "% or % invalid for %qs" +-msgstr "short, signed o unsigned no vàlid per a \"%s\"" +- +-#: cp/decl.c:7653 +-#, fuzzy, gcc-internal-format +-msgid "% and % specified together for %qs" +-msgstr "es van donar junts signed i unsigned per a \"%s\"" +- +-#: cp/decl.c:7655 +-#, fuzzy, gcc-internal-format +-msgid "% invalid for %qs" +-msgstr "complex no vàlid per a \"%s\"" +- +-#: cp/decl.c:7657 +-#, fuzzy, gcc-internal-format +-msgid "% invalid for %qs" +-msgstr "complex no vàlid per a \"%s\"" +- +-#: cp/decl.c:7659 +-#, fuzzy, gcc-internal-format +-msgid "% invalid for %qs" +-msgstr "complex no vàlid per a \"%s\"" +- +-#: cp/decl.c:7661 +-#, fuzzy, gcc-internal-format +-msgid "% or % invalid for %qs" +-msgstr "long, short, signed o unsigned no vàlids per a \"%s\"" +- +-#: cp/decl.c:7663 +-#, fuzzy, gcc-internal-format +-msgid "% or % specified with char for %qs" +-msgstr "s'especifica long o short amb char per a \"%s\"" +- +-#: cp/decl.c:7665 +-#, fuzzy, gcc-internal-format +-msgid "% and % specified together for %qs" +-msgstr "long i short especificats junts per a \"%s\"" +- +-#: cp/decl.c:7671 +-#, fuzzy, gcc-internal-format +-msgid "long, short, signed or unsigned used invalidly for %qs" +-msgstr "ús no vàlid de long, short, signed o unsigned per a \"%s\"" +- +-#: cp/decl.c:7735 +-#, fuzzy, gcc-internal-format +-msgid "complex invalid for %qs" +-msgstr "complex no vàlid per a \"%s\"" +- +-#: cp/decl.c:7764 +-#, fuzzy, gcc-internal-format +-msgid "qualifiers are not allowed on declaration of %" +-msgstr "no es permeten qualificadors en la declaració de \"operator %T\"" +- +-#: cp/decl.c:7776 cp/typeck.c:7011 +-#, fuzzy, gcc-internal-format +-msgid "ignoring %qV qualifiers added to function type %qT" +-msgstr "qualificadors no vàlids en el tipus de funció no membre" +- +-#: cp/decl.c:7799 +-#, fuzzy, gcc-internal-format +-msgid "member %qD cannot be declared both virtual and static" +-msgstr "\"%D\" no es pot declarar virtual, ja que sempre és static" +- +-#: cp/decl.c:7807 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%D%> is not a valid declarator" +-msgstr "\"%T::%D\" no és una declaració vàlida" +- +-#: cp/decl.c:7816 +-#, gcc-internal-format +-msgid "typedef declaration invalid in parameter declaration" +-msgstr "declaració typedef no vàlida en la declaració de paràmetres" +- +-#: cp/decl.c:7822 +-#, gcc-internal-format +-msgid "storage class specifiers invalid in parameter declarations" +-msgstr "especificadors de classe d'emmagatzematge no vàlids en les declaracions de paràmetres" +- +-#: cp/decl.c:7829 +-#, gcc-internal-format +-msgid "virtual outside class declaration" +-msgstr "declaració de virtual fora de class" +- +-#: cp/decl.c:7847 +-#, fuzzy, gcc-internal-format +-msgid "multiple storage classes in declaration of %qs" +-msgstr "múltiples classes d'emmagatzematge en la declaració de \"%s\"" +- +-#: cp/decl.c:7870 +-#, fuzzy, gcc-internal-format +-msgid "storage class specified for %qs" +-msgstr "classe d'emmagatzematge especificada per %s \"%s\"" +- +-#: cp/decl.c:7904 +-#, fuzzy, gcc-internal-format +-msgid "top-level declaration of %qs specifies %" +-msgstr "la declaració del nivell superior de \"%s\" especifica \"auto\"" +- +-#: cp/decl.c:7916 +-#, gcc-internal-format +-msgid "storage class specifiers invalid in friend function declarations" +-msgstr "especificadors de classe d'emmagatzematge no vàlids en les declaracions de funcions friend" +- +-#: cp/decl.c:8043 +-#, gcc-internal-format +-msgid "destructor cannot be static member function" +-msgstr "el destructor no pot ser una funció membre de tipus static" +- +-#: cp/decl.c:8048 +-#, fuzzy, gcc-internal-format +-msgid "destructors may not be cv-qualified" +-msgstr "els destructors no poden ser \"%s\"" +- +-#: cp/decl.c:8066 +-#, gcc-internal-format +-msgid "constructors cannot be declared virtual" +-msgstr "els constructors no poden ser declarats virtual" +- +-#: cp/decl.c:8079 +-#, fuzzy, gcc-internal-format +-msgid "can't initialize friend function %qs" +-msgstr "no es pot inicialitzar la funció friend \"%s\"" +- +-#. Cannot be both friend and virtual. +-#: cp/decl.c:8083 +-#, gcc-internal-format +-msgid "virtual functions cannot be friends" +-msgstr "les funcions virtuals no poden ser friend" +- +-#: cp/decl.c:8087 +-#, gcc-internal-format +-msgid "friend declaration not in class definition" +-msgstr "la declaració friend no està en una definició de classe" +- +-#: cp/decl.c:8089 +-#, fuzzy, gcc-internal-format +-msgid "can't define friend function %qs in a local class definition" +-msgstr "no es pot definir la funció friend \"%s\" en una definició de classe local" +- +-#: cp/decl.c:8102 +-#, gcc-internal-format +-msgid "destructors may not have parameters" +-msgstr "els destructors no poden tenir paràmetres" +- +-#: cp/decl.c:8121 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare pointer to %q#T" +-msgstr "no es pot declarar un punter a \"%#T\"" +- +-#: cp/decl.c:8134 cp/decl.c:8141 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare reference to %q#T" +-msgstr "no es poden declarar referències a \"%#T\"" +- +-#: cp/decl.c:8143 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare pointer to %q#T member" +-msgstr "no es pot declarar un punter al membre \"%#T\"" +- +-#: cp/decl.c:8194 +-#, gcc-internal-format +-msgid "cannot declare reference to %q#T, which is not a typedef or a template type argument" +-msgstr "" +- +-#: cp/decl.c:8238 +-#, fuzzy, gcc-internal-format +-msgid "template-id %qD used as a declarator" +-msgstr "l'identificador de patró \"%D\" s'usa com un declarador" +- +-#: cp/decl.c:8289 +-#, gcc-internal-format +-msgid "member functions are implicitly friends of their class" +-msgstr "les funcions membres són implícitament friends de la seva classe" +- +-#: cp/decl.c:8293 +-#, fuzzy, gcc-internal-format +-msgid "extra qualification %<%T::%> on member %qs" +-msgstr "s'ignora la qualificació extra `%T::' en el membre \"%s\"" +- +-#: cp/decl.c:8325 +-#, fuzzy, gcc-internal-format +-msgid "cannot define member function %<%T::%s%> within %<%T%>" +-msgstr "no es pot declarar la funció membre \"%T::%s\" dintre de \"%T\"" +- +-#: cp/decl.c:8342 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare member %<%T::%s%> within %qT" +-msgstr "no es pot declarar el membre \"%T::%s\" dintre de \"%T\"" +- +-#: cp/decl.c:8365 +-#, fuzzy, gcc-internal-format +-msgid "non-parameter %qs cannot be a parameter pack" +-msgstr "les dades membres \"%D\" no poden ser un patró membre" +- +-#: cp/decl.c:8386 +-#, fuzzy, gcc-internal-format +-msgid "data member may not have variably modified type %qT" +-msgstr "l'argument de patró \"%T\" és un tipus modificat variablement" +- +-#: cp/decl.c:8388 +-#, fuzzy, gcc-internal-format +-msgid "parameter may not have variably modified type %qT" +-msgstr "l'argument de patró \"%T\" és un tipus modificat variablement" +- +-#. [dcl.fct.spec] The explicit specifier shall only be used in +-#. declarations of constructors within a class definition. +-#: cp/decl.c:8396 +-#, fuzzy, gcc-internal-format +-msgid "only declarations of constructors can be %" +-msgstr "solament les declaracions de constructors poden ser \"explicit\"" +- +-#: cp/decl.c:8404 +-#, fuzzy, gcc-internal-format +-msgid "non-member %qs cannot be declared %" +-msgstr "el no-membre \"%s\" no pot ser declarat \"mutable\"" +- +-#: cp/decl.c:8409 +-#, fuzzy, gcc-internal-format +-msgid "non-object member %qs cannot be declared %" +-msgstr "el membre non-objecte \"%s\" no pot ser declarat \"mutable\"" +- +-#: cp/decl.c:8415 +-#, fuzzy, gcc-internal-format +-msgid "function %qs cannot be declared %" +-msgstr "la funció \"%s\" no pot ser declarada \"mutable\"" +- +-#: cp/decl.c:8420 +-#, fuzzy, gcc-internal-format +-msgid "static %qs cannot be declared %" +-msgstr "static \"%s\" no pot ser declarat \"mutable\"" +- +-#: cp/decl.c:8425 +-#, fuzzy, gcc-internal-format +-msgid "const %qs cannot be declared %" +-msgstr "const \"%s\" no pot ser declarat \"mutable\"" +- +-#: cp/decl.c:8462 +-#, fuzzy, gcc-internal-format +-msgid "%Jtypedef name may not be a nested-name-specifier" +-msgstr "el nom de la definició de tipus pot no ser qualificada per a la classe" +- +-#: cp/decl.c:8478 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids nested type %qD with same name as enclosing class" +-msgstr "ISO C++ prohibeix el tipus niat \"%D\" amb el mateix nom que la classe que ho conté" +- +-#: cp/decl.c:8564 +-#, fuzzy, gcc-internal-format +-msgid "qualified function types cannot be used to declare static member functions" +-msgstr "el destructor no pot ser una funció membre de tipus static" +- +-#: cp/decl.c:8566 +-#, fuzzy, gcc-internal-format +-msgid "qualified function types cannot be used to declare free functions" +-msgstr "el tipus de retorn d'una funció no pot ser una funció" +- +-#: cp/decl.c:8592 +-#, gcc-internal-format +-msgid "type qualifiers specified for friend class declaration" +-msgstr "es van especificar qualificadors de tipus en una declaració de classe friend" +- +-#: cp/decl.c:8597 +-#, fuzzy, gcc-internal-format +-msgid "% specified for friend class declaration" +-msgstr "es va especificar \"inline\" per a la declaració de classe friend" +- +-#: cp/decl.c:8605 +-#, gcc-internal-format +-msgid "template parameters cannot be friends" +-msgstr "els paràmetres del patró no poden ser friends" +- +-#: cp/decl.c:8607 +-#, fuzzy, gcc-internal-format +-msgid "friend declaration requires class-key, i.e. %" +-msgstr "la declaració friend requereix una clau de classe, ex. \"friend class %T::%D\"" +- +-#: cp/decl.c:8611 +-#, fuzzy, gcc-internal-format +-msgid "friend declaration requires class-key, i.e. %" +-msgstr "la declaració friend requereix una clau de classe, ex. \"friend %#T\"" +- +-#: cp/decl.c:8624 +-#, fuzzy, gcc-internal-format +-msgid "trying to make class %qT a friend of global scope" +-msgstr "tractant fer que la classe \"%T\" sigui un friend d'àmbit global" +- +-#: cp/decl.c:8635 +-#, gcc-internal-format +-msgid "invalid qualifiers on non-member function type" +-msgstr "qualificadors no vàlids en el tipus de funció no membre" +- +-#: cp/decl.c:8650 +-#, fuzzy, gcc-internal-format +-msgid "abstract declarator %qT used as declaration" +-msgstr "el declarador abstracte \"%T\" es va utilitzar com una declaració" +- +-#: cp/decl.c:8679 +-#, fuzzy, gcc-internal-format +-msgid "cannot use %<::%> in parameter declaration" +-msgstr "no es pot usar \"::\" en la declaració de paràmetres" +- +-#. Something like struct S { int N::j; }; +-#: cp/decl.c:8725 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of %<::%>" +-msgstr "ús no vàlid de \"::\"" +- +-#: cp/decl.c:8740 +-#, fuzzy, gcc-internal-format +-msgid "can't make %qD into a method -- not in a class" +-msgstr "no es pot fer \"%D\" en un mètode -- no està en una classe" +- +-#: cp/decl.c:8749 +-#, fuzzy, gcc-internal-format +-msgid "function %qD declared virtual inside a union" +-msgstr "la funció \"%s\" es va declarar virtual dintre d'un union" +- +-#: cp/decl.c:8758 +-#, fuzzy, gcc-internal-format +-msgid "%qD cannot be declared virtual, since it is always static" +-msgstr "\"%D\" no es pot declarar virtual, ja que sempre és static" +- +-#: cp/decl.c:8774 +-#, fuzzy, gcc-internal-format +-msgid "expected qualified name in friend declaration for destructor %qD" +-msgstr "no es permeten qualificadors en la declaració de \"operator %T\"" +- +-#: cp/decl.c:8784 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD as member of %qT" +-msgstr "la declaració de \"%s\" obscurece a un membre de \"this\"" +- +-#: cp/decl.c:8860 +-#, fuzzy, gcc-internal-format +-msgid "field %qD has incomplete type" +-msgstr "el camp \"%D\" té tipus de dada incompleta" +- +-#: cp/decl.c:8862 +-#, fuzzy, gcc-internal-format +-msgid "name %qT has incomplete type" +-msgstr "el nom \"%T\" té tipus de dada incompleta" +- +-#: cp/decl.c:8871 +-#, fuzzy, gcc-internal-format +-msgid " in instantiation of template %qT" +-msgstr " en la instanciació det patró \"%T\"" +- +-#: cp/decl.c:8880 +-#, fuzzy, gcc-internal-format +-msgid "%qE is neither function nor member function; cannot be declared friend" +-msgstr "\"%s\" no és ni funció ni funció membre; no pot ser declarat friend" +- +-#. An attempt is being made to initialize a non-static +-#. member. But, from [class.mem]: +-#. +-#. 4 A member-declarator can contain a +-#. constant-initializer only if it declares a static +-#. member (_class.static_) of integral or enumeration +-#. type, see _class.static.data_. +-#. +-#. This used to be relatively common practice, but +-#. the rest of the compiler does not correctly +-#. handle the initialization unless the member is +-#. static so we make it static below. +-#: cp/decl.c:8932 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids initialization of member %qD" +-msgstr "ISO C++ prohibeix la inicialización del membre \"%D\"" +- +-#: cp/decl.c:8934 +-#, fuzzy, gcc-internal-format +-msgid "making %qD static" +-msgstr "fent a \"%D\" static" +- +-#: cp/decl.c:8999 +-#, fuzzy, gcc-internal-format +-msgid "storage class % invalid for function %qs" +-msgstr "la classe d'emmagatzematge \"auto\" no és vàlida per a la funció \"%s\"" +- +-#: cp/decl.c:9001 +-#, fuzzy, gcc-internal-format +-msgid "storage class % invalid for function %qs" +-msgstr "la classe d'emmagatzematge \"register\" no és vàlida per a la funció \"%s\"" +- +-#: cp/decl.c:9003 +-#, fuzzy, gcc-internal-format +-msgid "storage class %<__thread%> invalid for function %qs" +-msgstr "la classe d'emmagatzematge \"__thread\" no és vàlida per a la funció \"%s\"" +- +-#: cp/decl.c:9014 +-#, fuzzy, gcc-internal-format +-msgid "% specified invalid for function %qs declared out of global scope" +-msgstr "la classe d'emmagatzematge \"inline\" no és vàlida per a la funció \"%s\" declarada fora de l'àmbit global" +- +-#: cp/decl.c:9017 +-#, fuzzy, gcc-internal-format +-msgid "% specifier invalid for function %qs declared out of global scope" +-msgstr "la classe d'emmagatzematge \"inline\" no és vàlida per a la funció \"%s\" declarada fora de l'àmbit global" +- +-#: cp/decl.c:9025 +-#, fuzzy, gcc-internal-format +-msgid "virtual non-class function %qs" +-msgstr "la funció virtual \"%s\" no és classe" +- +-#: cp/decl.c:9056 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare member function %qD to have static linkage" +-msgstr "no es pot declarar que la funció membre \"%D\" tingui enllaçat estàtic" +- +-#. FIXME need arm citation +-#: cp/decl.c:9063 +-#, gcc-internal-format +-msgid "cannot declare static function inside another function" +-msgstr "no es pot declarar una funció static dintre d'altra funció" +- +-#: cp/decl.c:9093 +-#, fuzzy, gcc-internal-format +-msgid "% may not be used when defining (as opposed to declaring) a static data member" +-msgstr "\"static\" pot no ser utilitzat quan es defineix (oposat a la declaració) una dada membre static" +- +-#: cp/decl.c:9100 +-#, fuzzy, gcc-internal-format +-msgid "static member %qD declared %" +-msgstr "es va declarar el membre static \"%D\" com \"register\"" +- +-#: cp/decl.c:9105 +-#, fuzzy, gcc-internal-format +-msgid "cannot explicitly declare member %q#D to have extern linkage" +-msgstr "no es pot declarar explícitament que el membre \"%#D\" tingui un enllaçat extern" +- +-#: cp/decl.c:9234 +-#, fuzzy, gcc-internal-format +-msgid "default argument for %q#D has type %qT" +-msgstr "l'argument per omissió de \"%#D\" té tipus \"%T\"" +- +-#: cp/decl.c:9237 +-#, fuzzy, gcc-internal-format +-msgid "default argument for parameter of type %qT has type %qT" +-msgstr "l'argument per omissió per al paràmetre del tipus \"%T\" té el tipus \"%T\"" +- +-#: cp/decl.c:9253 +-#, fuzzy, gcc-internal-format +-msgid "default argument %qE uses local variable %qD" +-msgstr "l'argument per omissió \"%E\" usa la variable local \"%D\"" +- +-#: cp/decl.c:9323 +-#, fuzzy, gcc-internal-format +-msgid "parameter %qD invalidly declared method type" +-msgstr "el paràmetre \"%D\" es va declarar no vàlidament com tipus de mètode" +- +-#: cp/decl.c:9347 +-#, fuzzy, gcc-internal-format +-msgid "parameter %qD includes %s to array of unknown bound %qT" +-msgstr "el paràmetre \"%D\" inclou %s per a la matriu \"%T\" de límit desconegut" +- +-#: cp/decl.c:9361 +-#, fuzzy, gcc-internal-format +-msgid "parameter packs must be at the end of the parameter list" +-msgstr "\"void\" en la llista de paràmetres ha de ser la llista completa" +- +-#: cp/decl.c:9366 +-#, fuzzy, gcc-internal-format +-msgid "multiple parameters named %qE" +-msgstr "%Jmúltiples paràmetres nomenats \"%D\"" +- +-#. [class.copy] +-#. +-#. A declaration of a constructor for a class X is ill-formed if +-#. its first parameter is of type (optionally cv-qualified) X +-#. and either there are no other parameters or else all other +-#. parameters have default arguments. +-#. +-#. We *don't* complain about member template instantiations that +-#. have this form, though; they can occur as we try to decide +-#. what constructor to use during overload resolution. Since +-#. overload resolution will never prefer such a constructor to +-#. the non-template copy constructor (which is either explicitly +-#. or implicitly defined), there's no need to worry about their +-#. existence. Theoretically, they should never even be +-#. instantiated, but that's hard to forestall. +-#: cp/decl.c:9581 +-#, fuzzy, gcc-internal-format +-msgid "invalid constructor; you probably meant %<%T (const %T&)%>" +-msgstr "constructor no vàlid; tal vegada va voler dir \"%T (const %T&)\"" +- +-#: cp/decl.c:9703 +-#, fuzzy, gcc-internal-format +-msgid "%qD may not be declared within a namespace" +-msgstr "\"%D\" no es va declarar en aquest àmbit" +- +-#: cp/decl.c:9708 +-#, fuzzy, gcc-internal-format +-msgid "%qD may not be declared as static" +-msgstr "\"%#D\" no pot ser declarat" +- +-#: cp/decl.c:9731 +-#, fuzzy, gcc-internal-format +-msgid "%qD must be a nonstatic member function" +-msgstr "\"%D\" ha de ser una funció membre que no sigui static" +- +-#: cp/decl.c:9740 +-#, fuzzy, gcc-internal-format +-msgid "%qD must be either a non-static member function or a non-member function" +-msgstr "\"%D\" ha de ser una funció membre no estàtic o una funció no membre" +- +-#: cp/decl.c:9761 +-#, fuzzy, gcc-internal-format +-msgid "%qD must have an argument of class or enumerated type" +-msgstr "\"%D\" ha de tenir un argument de tipus classe o enumerat" +- +-#: cp/decl.c:9802 +-#, gcc-internal-format +-msgid "conversion to %s%s will never use a type conversion operator" +-msgstr "la conversió a %s%s mai usarà un operador de conversió de tipus" +- +-#. 13.4.0.3 +-#: cp/decl.c:9810 +-#, gcc-internal-format +-msgid "ISO C++ prohibits overloading operator ?:" +-msgstr "ISO C++ prohibeix la sobrecàrrega de l'operador ?:" +- +-#: cp/decl.c:9815 +-#, fuzzy, gcc-internal-format +-msgid "%qD must not have variable number of arguments" +-msgstr "\"%D\" ha de prendre un o dos arguments" +- +-#: cp/decl.c:9866 +-#, fuzzy, gcc-internal-format +-msgid "postfix %qD must take % as its argument" +-msgstr "el postfix \"%D\" ha de prendre \"int\" com el seu argument" +- +-#: cp/decl.c:9869 +-#, fuzzy, gcc-internal-format +-msgid "postfix %qD must take % as its second argument" +-msgstr "el postfix \"%D\" ha de prendre \"int\" com el seu segon argument" +- +-#: cp/decl.c:9877 +-#, fuzzy, gcc-internal-format +-msgid "%qD must take either zero or one argument" +-msgstr "\"%D\" ha de prendre zero o un argument" +- +-#: cp/decl.c:9879 +-#, fuzzy, gcc-internal-format +-msgid "%qD must take either one or two arguments" +-msgstr "\"%D\" ha de prendre un o dos arguments" +- +-#: cp/decl.c:9901 +-#, fuzzy, gcc-internal-format +-msgid "prefix %qD should return %qT" +-msgstr "el prefix \"%D\" ha de regressar \"%T\"" +- +-#: cp/decl.c:9907 +-#, fuzzy, gcc-internal-format +-msgid "postfix %qD should return %qT" +-msgstr "el postfix \"%D\" ha de regressar \"%T\"" +- +-#: cp/decl.c:9916 +-#, fuzzy, gcc-internal-format +-msgid "%qD must take %" +-msgstr "\"%D\" ha de prendre \"void\"" +- +-#: cp/decl.c:9918 cp/decl.c:9927 +-#, fuzzy, gcc-internal-format +-msgid "%qD must take exactly one argument" +-msgstr "\"%D\" ha de prendre un argument exactament" +- +-#: cp/decl.c:9929 +-#, fuzzy, gcc-internal-format +-msgid "%qD must take exactly two arguments" +-msgstr "\"%D\" ha de prendre dos arguments exactament" +- +-#: cp/decl.c:9938 +-#, fuzzy, gcc-internal-format +-msgid "user-defined %qD always evaluates both arguments" +-msgstr "el \"%D\" definit per l'usuari sempre avalua ambdós arguments" +- +-#: cp/decl.c:9952 +-#, fuzzy, gcc-internal-format +-msgid "%qD should return by value" +-msgstr "\"%D\" ha de regressar per valor" +- +-#: cp/decl.c:9964 cp/decl.c:9968 +-#, fuzzy, gcc-internal-format +-msgid "%qD cannot have default arguments" +-msgstr "\"%D\" no pot tenir arguments per omissió" +- +-#: cp/decl.c:10026 +-#, fuzzy, gcc-internal-format +-msgid "using template type parameter %qT after %qs" +-msgstr "usant el paràmetre de tipus patró \"%T\" després de \"%s\"" +- +-#: cp/decl.c:10041 +-#, fuzzy, gcc-internal-format +-msgid "using typedef-name %qD after %qs" +-msgstr "usant el nom de definició de tipus \"%D\" després de \"%s\"" +- +-#: cp/decl.c:10042 +-#, fuzzy, gcc-internal-format +-msgid "%q+D has a previous declaration here" +-msgstr "declaració prèvia com \"%#D\"" +- +-#: cp/decl.c:10050 +-#, fuzzy, gcc-internal-format +-msgid "%qT referred to as %qs" +-msgstr "\"%#D\" redeclarat com %C" +- +-#: cp/decl.c:10051 cp/decl.c:10058 +-#, fuzzy, gcc-internal-format +-msgid "%q+T has a previous declaration here" +-msgstr "%Jaixò és una declaració prèvia" +- +-#: cp/decl.c:10057 +-#, fuzzy, gcc-internal-format +-msgid "%qT referred to as enum" +-msgstr "\"%#D\" redeclarat com %C" +- +-#. If a class template appears as elaborated type specifier +-#. without a template header such as: +-#. +-#. template class C {}; +-#. void f(class C); // No template header here +-#. +-#. then the required template argument is missing. +-#: cp/decl.c:10072 +-#, fuzzy, gcc-internal-format +-msgid "template argument required for %<%s %T%>" +-msgstr "es requereix un argument de patró per a \"%T\"" +- +-#: cp/decl.c:10120 cp/name-lookup.c:2698 +-#, gcc-internal-format +-msgid "%qD has the same name as the class in which it is declared" +-msgstr "" +- +-#: cp/decl.c:10150 cp/name-lookup.c:2207 cp/parser.c:4036 cp/parser.c:14029 +-#: cp/parser.c:16234 +-#, fuzzy, gcc-internal-format +-msgid "reference to %qD is ambiguous" +-msgstr "l'ús de \"%D\" és ambigu" +- +-#: cp/decl.c:10264 +-#, fuzzy, gcc-internal-format +-msgid "use of enum %q#D without previous declaration" +-msgstr "ús del enum \"%#D\" sense declaració prèvia" +- +-#: cp/decl.c:10285 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of %qT as a non-template" +-msgstr "la declaració de \"%D\" com una no funció" +- +-#: cp/decl.c:10286 cp/pt.c:4154 +-#, fuzzy, gcc-internal-format +-msgid "previous declaration %q+D" +-msgstr "declaració prèvia de \"%D\"" +- +-#: cp/decl.c:10397 +-#, fuzzy, gcc-internal-format +-msgid "derived union %qT invalid" +-msgstr "union derivada \"%T\" no vàlida" +- +-#: cp/decl.c:10406 +-#, fuzzy, gcc-internal-format +-msgid "Java class %qT cannot have multiple bases" +-msgstr "la classe base \"%#T\" té un destructor no virtual" +- +-#: cp/decl.c:10417 +-#, fuzzy, gcc-internal-format +-msgid "Java class %qT cannot have virtual bases" +-msgstr "la classe base \"%#T\" té un destructor no virtual" +- +-#: cp/decl.c:10440 +-#, fuzzy, gcc-internal-format +-msgid "base type %qT fails to be a struct or class type" +-msgstr "el tipus base \"%T\" falla a ser un tipus struct o classe" +- +-#: cp/decl.c:10473 +-#, fuzzy, gcc-internal-format +-msgid "recursive type %qT undefined" +-msgstr "tipus recursivo \"%T\" sense definir" +- +-#: cp/decl.c:10475 +-#, fuzzy, gcc-internal-format +-msgid "duplicate base type %qT invalid" +-msgstr "tipus base duplicat \"%T\" no vàlid" +- +-#: cp/decl.c:10552 +-#, fuzzy, gcc-internal-format +-msgid "multiple definition of %q#T" +-msgstr "definició múltiple de \"%#T\"" +- +-#: cp/decl.c:10553 +-#, fuzzy, gcc-internal-format +-msgid "%Jprevious definition here" +-msgstr "definició prèvia aquí" +- +-#. DR 377 +-#. +-#. IF no integral type can represent all the enumerator values, the +-#. enumeration is ill-formed. +-#: cp/decl.c:10692 +-#, gcc-internal-format +-msgid "no integral type can represent all of the enumerator values for %qT" +-msgstr "" +- +-#: cp/decl.c:10803 +-#, fuzzy, gcc-internal-format +-msgid "enumerator value for %qD is not an integer constant" +-msgstr "el valor de enumerator per a \"%s\" no és una constant entera" +- +-#: cp/decl.c:10831 +-#, fuzzy, gcc-internal-format +-msgid "overflow in enumeration values at %qD" +-msgstr "desbordament en valors d'enumeració en \"%D\"" +- +-#: cp/decl.c:10906 +-#, fuzzy, gcc-internal-format +-msgid "return type %q#T is incomplete" +-msgstr "el tipus de retorn \"%#T\" és un tipus de dada incompleta" +- +-#: cp/decl.c:11031 cp/typeck.c:6711 +-#, fuzzy, gcc-internal-format +-msgid "% should return a reference to %<*this%>" +-msgstr "\"operator=\" ha de retornar una referència a \"*this\"" +- +-#: cp/decl.c:11420 +-#, fuzzy, gcc-internal-format +-msgid "parameter %qD declared void" +-msgstr "el paràmetre \"%D\" es va declarar void" +- +-#: cp/decl.c:11908 +-#, fuzzy, gcc-internal-format +-msgid "invalid member function declaration" +-msgstr "declaració del patró membre \"%D\" no vàlida" +- +-#: cp/decl.c:11923 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already defined in class %qT" +-msgstr "\"%D\" ja es va definir en la classe \"%T\"" +- +-#: cp/decl.c:12170 +-#, fuzzy, gcc-internal-format +-msgid "static member function %q#D declared with type qualifiers" +-msgstr "la funció membre static \"%#D\" és declarada amb qualificadors de tipus" +- +-#: cp/decl2.c:268 +-#, gcc-internal-format +-msgid "name missing for member function" +-msgstr "falta el nom per a la funció membre" +- +-#: cp/decl2.c:339 cp/decl2.c:353 +-#, gcc-internal-format +-msgid "ambiguous conversion for array subscript" +-msgstr "conversió ambigua per a índex de matriu" +- +-#: cp/decl2.c:347 +-#, fuzzy, gcc-internal-format +-msgid "invalid types %<%T[%T]%> for array subscript" +-msgstr "tipus no vàlids \"%T[%T]\" per a índex de matriu" +- +-#: cp/decl2.c:390 +-#, fuzzy, gcc-internal-format +-msgid "deleting array %q#D" +-msgstr "esborrant la matriu \"%#D\"" +- +-#: cp/decl2.c:396 +-#, fuzzy, gcc-internal-format +-msgid "type %q#T argument given to %, expected pointer" +-msgstr "es va donar un argument de tipus \"%#T\" a \"delete\", s'esperava un punter" +- +-#: cp/decl2.c:408 +-#, fuzzy, gcc-internal-format +-msgid "cannot delete a function. Only pointer-to-objects are valid arguments to %" +-msgstr "no es pot esborrar una funció. Solament els punters a objectes són arguments vàlids per a \"delete\"" +- +-#: cp/decl2.c:416 +-#, fuzzy, gcc-internal-format +-msgid "deleting %qT is undefined" +-msgstr "esborrar \"%T\" està indefinit" +- +-#: cp/decl2.c:459 cp/pt.c:3828 +-#, fuzzy, gcc-internal-format +-msgid "template declaration of %q#D" +-msgstr "declaració en patró de \"%#D\"" +- +-#: cp/decl2.c:511 +-#, fuzzy, gcc-internal-format +-msgid "Java method %qD has non-Java return type %qT" +-msgstr "el mètode Java \"%D\" té un tipus de retorn \"%T\" que no és de Java" +- +-#: cp/decl2.c:528 +-#, fuzzy, gcc-internal-format +-msgid "Java method %qD has non-Java parameter type %qT" +-msgstr "el mètode Java \"%D\" té un tipus de paràmetre \"%T\" que no és de Java" +- +-#: cp/decl2.c:639 +-#, fuzzy, gcc-internal-format +-msgid "prototype for %q#D does not match any in class %qT" +-msgstr "el prototip per a \"%#D\" no coincideix amb cap altre en la classe \"%T\"" +- +-#: cp/decl2.c:719 +-#, fuzzy, gcc-internal-format +-msgid "local class %q#T shall not have static data member %q#D" +-msgstr "la classe local \"%#T\" no ha de tenir el membre static \"%#D\"" +- +-#: cp/decl2.c:727 +-#, gcc-internal-format +-msgid "initializer invalid for static member with constructor" +-msgstr "inicializador no vàlid per al membre static amb constructor" +- +-#: cp/decl2.c:730 +-#, gcc-internal-format +-msgid "(an out of class initialization is required)" +-msgstr "(es requereix una inicialització fora de la classe)" +- +-#: cp/decl2.c:790 +-#, fuzzy, gcc-internal-format +-msgid "member %qD conflicts with virtual function table field name" +-msgstr "el membre \"%D\" té conflictes amb el nom de camp de la matriu de funcions virtuals" +- +-#: cp/decl2.c:810 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already defined in %qT" +-msgstr "\"%D\" ja està definit en \"%T\"" +- +-#: cp/decl2.c:831 +-#, fuzzy, gcc-internal-format +-msgid "initializer specified for static member function %qD" +-msgstr "es va especificar un inicialitzador per a la funció no-membre \"%D\"" +- +-#: cp/decl2.c:854 +-#, gcc-internal-format +-msgid "field initializer is not constant" +-msgstr "l'inicializador del camp no és constant" +- +-#: cp/decl2.c:881 +-#, fuzzy, gcc-internal-format +-msgid "% specifiers are not permitted on non-static data members" +-msgstr "no es permeten els especificadores \"asm\" en membres de dades no estàtiques" +- +-#: cp/decl2.c:932 +-#, fuzzy, gcc-internal-format +-msgid "bit-field %qD with non-integral type" +-msgstr "camp de bits \"%D\" amb tipus no enter" +- +-#: cp/decl2.c:938 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare %qD to be a bit-field type" +-msgstr "no es pot declarar \"%D\" que sigui un tipus de camp de bits" +- +-#: cp/decl2.c:948 +-#, fuzzy, gcc-internal-format +-msgid "cannot declare bit-field %qD with function type" +-msgstr "no es pot declarar el camp de bits \"%D\" amb un tipus de funció" +- +-#: cp/decl2.c:955 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already defined in the class %qT" +-msgstr "\"%D\" ja està definit en la classe %T" +- +-#: cp/decl2.c:962 +-#, fuzzy, gcc-internal-format +-msgid "static member %qD cannot be a bit-field" +-msgstr "el membre static \"%D\" no pot ser un camp de bits" +- +-#: cp/decl2.c:1122 +-#, gcc-internal-format +-msgid "anonymous struct not inside named type" +-msgstr "struct anònim no es troba dintre d'un tipus nomenat" +- +-#: cp/decl2.c:1206 +-#, gcc-internal-format +-msgid "namespace-scope anonymous aggregates must be static" +-msgstr "els agregats anònims d'abast de nom d'espai deuen ser static" +- +-#: cp/decl2.c:1215 +-#, fuzzy, gcc-internal-format +-msgid "anonymous union with no members" +-msgstr "agregat anònim sense membres" +- +-#: cp/decl2.c:1251 +-#, fuzzy, gcc-internal-format +-msgid "% must return type %qT" +-msgstr "\"operator new\" ha de retornar el tipus \"%T\"" +- +-#. [basic.stc.dynamic.allocation] +-#. +-#. The first parameter shall not have an associated default +-#. argument. +-#: cp/decl2.c:1262 +-#, gcc-internal-format +-msgid "the first parameter of % cannot have a default argument" +-msgstr "" +- +-#: cp/decl2.c:1278 +-#, fuzzy, gcc-internal-format +-msgid "% takes type % (%qT) as first parameter" +-msgstr "\"operator new\" pren el tipus \"size_t\" (\"%T\") com primer argument" +- +-#: cp/decl2.c:1307 +-#, fuzzy, gcc-internal-format +-msgid "% must return type %qT" +-msgstr "\"operator delete\" ha de retornar el tipus \"%T\"" +- +-#: cp/decl2.c:1316 +-#, fuzzy, gcc-internal-format +-msgid "% takes type %qT as first parameter" +-msgstr "\"operator delete\" pren el tipus \"%T\" com primer argument" +- +-#: cp/decl2.c:1985 +-#, gcc-internal-format +-msgid "%qT has a field %qD whose type uses the anonymous namespace" +-msgstr "" +- +-#: cp/decl2.c:1992 +-#, gcc-internal-format +-msgid "%qT declared with greater visibility than the type of its field %qD" +-msgstr "" +- +-#: cp/decl2.c:2005 +-#, gcc-internal-format +-msgid "%qT has a base %qT whose type uses the anonymous namespace" +-msgstr "" +- +-#: cp/decl2.c:2011 +-#, gcc-internal-format +-msgid "%qT declared with greater visibility than its base %qT" +-msgstr "" +- +-#: cp/decl2.c:3395 +-#, fuzzy, gcc-internal-format +-msgid "inline function %q+D used but never defined" +-msgstr "s'usa la funció «inline» \"%D\" però mai es va definir" +- +-#: cp/decl2.c:3543 +-#, fuzzy, gcc-internal-format +-msgid "default argument missing for parameter %P of %q+#D" +-msgstr "falta l'argument per omissió per al paràmetre %P de \"%+#D\"" +- +-#. We really want to suppress this warning in system headers, +-#. because libstdc++ uses variadic templates even when we aren't +-#. in C++0x mode. +-#: cp/error.c:2669 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ does not include variadic templates" +-msgstr "ISO C no permet macros variadic nomenats" +- +-#. Can't throw a reference. +-#: cp/except.c:269 +-#, fuzzy, gcc-internal-format +-msgid "type %qT is disallowed in Java % or %" +-msgstr "el tipus \"%T\" no està permès en \"throw\" o \"catch\" de Java" +- +-#: cp/except.c:280 +-#, fuzzy, gcc-internal-format +-msgid "call to Java % or % with % undefined" +-msgstr "cridada a \"catch\" o \"throw\" de Java amb \"jthrowable\" sense definir" +- +-#. Thrown object must be a Throwable. +-#: cp/except.c:287 +-#, fuzzy, gcc-internal-format +-msgid "type %qT is not derived from %" +-msgstr "el tipus \"%T\" no és derivat de \"java::lang::Throwable\"" +- +-#: cp/except.c:350 +-#, gcc-internal-format +-msgid "mixing C++ and Java catches in a single translation unit" +-msgstr "barrejant \"catches\" de C++ i Java en una sola unitat de traducció" +- +-#: cp/except.c:620 +-#, gcc-internal-format +-msgid "throwing NULL, which has integral, not pointer type" +-msgstr "llançant NULL, que té un tipus integral, no un tipus punter" +- +-#: cp/except.c:643 cp/init.c:1780 +-#, fuzzy, gcc-internal-format +-msgid "%qD should never be overloaded" +-msgstr "\"%D\" ha de regressar per valor" +- +-#: cp/except.c:739 +-#, gcc-internal-format +-msgid " in thrown expression" +-msgstr " en expressió thrown" +- +-#: cp/except.c:895 +-#, fuzzy, gcc-internal-format +-msgid "expression %qE of abstract class type %qT cannot be used in throw-expression" +-msgstr "no es pot usar l'expressió \"%E\" del tipus de classe abstracta \"%T\" en les expressions thrown" +- +-#: cp/except.c:980 +-#, fuzzy, gcc-internal-format +-msgid "%Hexception of type %qT will be caught" +-msgstr "l'excepció del tipus \"%T\" serà atrapada" +- +-#: cp/except.c:982 +-#, fuzzy, gcc-internal-format +-msgid "%H by earlier handler for %qT" +-msgstr " per un gestor anterior per a \"%T\"" +- +-#: cp/except.c:1012 +-#, fuzzy, gcc-internal-format +-msgid "%H%<...%> handler must be the last handler for its try block" +-msgstr "el gestor \"...\" ha de ser l'últim gestor per al seu bloc try" +- +-#: cp/friend.c:156 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already a friend of class %qT" +-msgstr "\"%D\" ja és un friend de la classe \"%T\"" +- +-#: cp/friend.c:232 +-#, fuzzy, gcc-internal-format +-msgid "invalid type %qT declared %" +-msgstr "el tipus no vàlid \"%T\" va ser declarat \"friend\"" +- +-#. [temp.friend] +-#. Friend declarations shall not declare partial +-#. specializations. +-#. template friend class T::X; +-#. [temp.friend] +-#. Friend declarations shall not declare partial +-#. specializations. +-#: cp/friend.c:248 cp/friend.c:278 +-#, fuzzy, gcc-internal-format +-msgid "partial specialization %qT declared %" +-msgstr "l'especialització parcial \"%T\" es va declarar \"friend\"" +- +-#: cp/friend.c:256 +-#, fuzzy, gcc-internal-format +-msgid "class %qT is implicitly friends with itself" +-msgstr "la classe \"%T\" és implícitament friend amb si mateixa" +- +-#: cp/friend.c:314 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not a member of %qT" +-msgstr "\"%D\" no és un membre de \"%T\"" +- +-#: cp/friend.c:319 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not a member class template of %qT" +-msgstr "\"%D\" no és una funció patró membre" +- +-#: cp/friend.c:327 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not a nested class of %qT" +-msgstr "\"%T\" no és una base de \"%T\"" +- +-#. template friend class T; +-#: cp/friend.c:340 +-#, fuzzy, gcc-internal-format +-msgid "template parameter type %qT declared %" +-msgstr "el tipus de paràmetre de patró \"%T\" es va declarar \"friend\"" +- +-#. template friend class A; where A is not a template +-#: cp/friend.c:346 +-#, fuzzy, gcc-internal-format +-msgid "%q#T is not a template" +-msgstr "\"%#T\" no és un patró" +- +-#: cp/friend.c:368 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already a friend of %qT" +-msgstr "\"%T\" ja és un friend de \"%T\"" +- +-#: cp/friend.c:377 +-#, fuzzy, gcc-internal-format +-msgid "%qT is already a friend of %qT" +-msgstr "\"%T\" ja és un friend de \"%T\"" +- +-#: cp/friend.c:494 +-#, fuzzy, gcc-internal-format +-msgid "member %qD declared as friend before type %qT defined" +-msgstr "el membre \"%D\" és declarat friend abans que es defineixi el tipus \"%T\"" +- +-#: cp/friend.c:550 +-#, fuzzy, gcc-internal-format +-msgid "friend declaration %q#D declares a non-template function" +-msgstr "la declaració friend \"%#D\" declara una funció que no és patró" +- +-#: cp/friend.c:554 +-#, fuzzy, gcc-internal-format +-msgid "(if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) " +-msgstr "(si aquesta no és la seva intenció, asseguri's qu'el patró de la funció ja ha estat declarada i agregui <> aquí després del nom de la funció) -Wno-non-template-friend desactiva aquest avís" +- +-#: cp/init.c:334 +-#, fuzzy, gcc-internal-format +-msgid "%J%qD should be initialized in the member initialization list" +-msgstr "inicialització de la dada membre no vàlida" +- +-#: cp/init.c:382 +-#, fuzzy, gcc-internal-format +-msgid "%Jdefault-initialization of %q#D, which has reference type" +-msgstr "l'inicialització per omissió de \"%#D\", el qual té el tipus de referència" +- +-#: cp/init.c:388 +-#, fuzzy, gcc-internal-format +-msgid "%Juninitialized reference member %qD" +-msgstr "membre referència \"%D\" sense inicialitzar" +- +-#: cp/init.c:391 +-#, fuzzy, gcc-internal-format +-msgid "%Juninitialized member %qD with % type %qT" +-msgstr "const \"%D\" sense inicialitzar" +- +-#: cp/init.c:534 +-#, fuzzy, gcc-internal-format +-msgid "%q+D will be initialized after" +-msgstr "\"%D\" s'inicialitzarà després" +- +-#: cp/init.c:537 +-#, fuzzy, gcc-internal-format +-msgid "base %qT will be initialized after" +-msgstr "la base \"%T\" s'inicialitzarà després" +- +-#: cp/init.c:540 +-#, fuzzy, gcc-internal-format +-msgid " %q+#D" +-msgstr " \"#%D\"" +- +-#: cp/init.c:542 +-#, fuzzy, gcc-internal-format +-msgid " base %qT" +-msgstr " base \"%T\"" +- +-#: cp/init.c:543 +-#, fuzzy, gcc-internal-format +-msgid "%J when initialized here" +-msgstr "\"%D\" s'inicialitzarà després" +- +-#: cp/init.c:559 +-#, fuzzy, gcc-internal-format +-msgid "%Jmultiple initializations given for %qD" +-msgstr "es van donar inicialitzacions múltiples per a \"%D\"" +- +-#: cp/init.c:562 +-#, fuzzy, gcc-internal-format +-msgid "%Jmultiple initializations given for base %qT" +-msgstr "es van donar inicialitzacions múltiples per a la base \"%T\"" +- +-#: cp/init.c:629 +-#, fuzzy, gcc-internal-format +-msgid "%Jinitializations for multiple members of %qT" +-msgstr "inicialitzacions per a múltiples membres de \"%T\"" +- +-#: cp/init.c:691 +-#, fuzzy, gcc-internal-format +-msgid "%Jbase class %q#T should be explicitly initialized in the copy constructor" +-msgstr "la classe base \"%#T\" ha de ser inicialitzada explícitament en la còpia del constructor" +- +-#: cp/init.c:915 cp/init.c:934 +-#, fuzzy, gcc-internal-format +-msgid "class %qT does not have any field named %qD" +-msgstr "la classe \"%T\" no té cap camp cridat \"%D\"" +- +-#: cp/init.c:921 +-#, fuzzy, gcc-internal-format +-msgid "%q#D is a static data member; it can only be initialized at its definition" +-msgstr "el camp \"%#D\" és static; l'únic punt d'inicialització és la seva definició" +- +-#: cp/init.c:928 +-#, fuzzy, gcc-internal-format +-msgid "%q#D is not a non-static data member of %qT" +-msgstr "\"%#D\" no és un membre static de \"%#T\"" +- +-#: cp/init.c:967 +-#, fuzzy, gcc-internal-format +-msgid "unnamed initializer for %qT, which has no base classes" +-msgstr "inicialitzador sense nom per a \"%T\", el qual no té una classe base" +- +-#: cp/init.c:975 +-#, fuzzy, gcc-internal-format +-msgid "unnamed initializer for %qT, which uses multiple inheritance" +-msgstr "inicialitzador sense nom per a \"%T\", el qual usa herència múltiple" +- +-#: cp/init.c:1021 +-#, fuzzy, gcc-internal-format +-msgid "%qD is both a direct base and an indirect virtual base" +-msgstr "el tipus \"%D\" no és una base directa o virtual de \"%T\"" +- +-#: cp/init.c:1029 +-#, fuzzy, gcc-internal-format +-msgid "type %qT is not a direct or virtual base of %qT" +-msgstr "el tipus \"%D\" no és una base directa o virtual de \"%T\"" +- +-#: cp/init.c:1032 +-#, fuzzy, gcc-internal-format +-msgid "type %qT is not a direct base of %qT" +-msgstr "el tipus \"%D\" no és una base directa de \"%T\"" +- +-#: cp/init.c:1112 +-#, gcc-internal-format +-msgid "bad array initializer" +-msgstr "inicialitzador de matriu erroni" +- +-#: cp/init.c:1287 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not an aggregate type" +-msgstr "\"%T\" no és un tipus agregat" +- +-#: cp/init.c:1341 +-#, fuzzy, gcc-internal-format +-msgid "incomplete type %qT does not have member %qD" +-msgstr "el tipus incomplet \"%T\" no té al membre \"%D\"" +- +-#: cp/init.c:1354 +-#, fuzzy, gcc-internal-format +-msgid "invalid pointer to bit-field %qD" +-msgstr "punter no vàlid al camp de bit \"%D\"" +- +-#: cp/init.c:1431 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of non-static member function %qD" +-msgstr "ús no vàlid del camp no static \"%D\"" +- +-#: cp/init.c:1437 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of non-static data member %qD" +-msgstr "ús no vàlid del camp no static \"%D\"" +- +-#: cp/init.c:1714 +-#, fuzzy, gcc-internal-format +-msgid "invalid type % for new" +-msgstr "tipus \"void\" no vàlid per a new" +- +-#: cp/init.c:1724 +-#, fuzzy, gcc-internal-format +-msgid "uninitialized const in % of %q#T" +-msgstr "const sense inicialitzar en \"new\" de \"%#T\"" +- +-#: cp/init.c:1775 +-#, fuzzy, gcc-internal-format +-msgid "call to Java constructor with %qs undefined" +-msgstr "cridada a constructor Java amb \"%s\" sense definir" +- +-#: cp/init.c:1815 +-#, gcc-internal-format +-msgid "no suitable %qD found in class %qT" +-msgstr "" +- +-#: cp/init.c:1820 +-#, fuzzy, gcc-internal-format +-msgid "request for member %qD is ambiguous" +-msgstr "a petició per al membre \"%D\" és ambigua" +- +-#: cp/init.c:1972 +-#, gcc-internal-format +-msgid "ISO C++ forbids initialization in array new" +-msgstr "ISO C++ prohibeix la inicialització en la matriu new" +- +-#: cp/init.c:2174 +-#, gcc-internal-format +-msgid "size in array new must have integral type" +-msgstr "la grandària de la matriu nova ha de tenir un tipus integral" +- +-#: cp/init.c:2183 +-#, gcc-internal-format +-msgid "new cannot be applied to a reference type" +-msgstr "new no pot ser aplicat a un tipus de referència" +- +-#: cp/init.c:2189 +-#, gcc-internal-format +-msgid "new cannot be applied to a function type" +-msgstr "new no pot ser aplicat a una funcció de referència" +- +-#: cp/init.c:2228 +-#, fuzzy, gcc-internal-format +-msgid "call to Java constructor, while % undefined" +-msgstr "cridada a constructor Java, mentre \"jclass\" està indefinit" +- +-#: cp/init.c:2246 +-#, fuzzy, gcc-internal-format +-msgid "can't find % in %qT" +-msgstr "no es pot trobar class$" +- +-#: cp/init.c:2607 +-#, gcc-internal-format +-msgid "initializer ends prematurely" +-msgstr "l'inicialitzador acaba prematurament" +- +-#: cp/init.c:2662 +-#, gcc-internal-format +-msgid "cannot initialize multi-dimensional array with initializer" +-msgstr "no es poden inicialitzar matrius multidimensionals amb l'inicialitzador" +- +-#: cp/init.c:2799 +-#, gcc-internal-format +-msgid "possible problem detected in invocation of delete operator:" +-msgstr "" +- +-#: cp/init.c:2802 +-#, gcc-internal-format +-msgid "neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined." +-msgstr "" +- +-#: cp/init.c:2823 +-#, gcc-internal-format +-msgid "unknown array size in delete" +-msgstr "grandària de matriu desconeguda en delete" +- +-#: cp/init.c:3070 +-#, gcc-internal-format +-msgid "type to vector delete is neither pointer or array type" +-msgstr "el tipus de vector delete no és del tipus punter ni matriu" +- +-#: cp/lex.c:489 +-#, gcc-internal-format +-msgid "junk at end of #pragma %s" +-msgstr "escombraries al final de #pragma %s" +- +-#: cp/lex.c:496 +-#, gcc-internal-format +-msgid "invalid #pragma %s" +-msgstr "#pragma %s no vàlid" +- +-#: cp/lex.c:504 +-#, gcc-internal-format +-msgid "#pragma vtable no longer supported" +-msgstr "#pragma vtable ja no té suport" +- +-#: cp/lex.c:583 +-#, fuzzy, gcc-internal-format +-msgid "#pragma implementation for %qs appears after file is included" +-msgstr "implementació de #pragma per a %s apareix després que el fitxer és inclòs" +- +-#: cp/lex.c:608 +-#, gcc-internal-format +-msgid "junk at end of #pragma GCC java_exceptions" +-msgstr "escombraries al final del #pragma GCC java_exceptions" +- +-#: cp/lex.c:622 +-#, fuzzy, gcc-internal-format +-msgid "%qD not defined" +-msgstr "\"%D\" no està definit" +- +-#: cp/lex.c:626 +-#, fuzzy, gcc-internal-format +-msgid "%qD was not declared in this scope" +-msgstr "\"%D\" no es va declarar en aquest àmbit" +- +-#. In a template, it is invalid to write "f()" or "f(3)" if no +-#. declaration of "f" is available. Historically, G++ and most +-#. other compilers accepted that usage since they deferred all name +-#. lookup until instantiation time rather than doing unqualified +-#. name lookup at template definition time; explain to the user what +-#. is going wrong. +-#. +-#. Note that we have the exact wording of the following message in +-#. the manual (trouble.texi, node "Name lookup"), so they need to +-#. be kept in synch. +-#: cp/lex.c:663 +-#, gcc-internal-format +-msgid "there are no arguments to %qD that depend on a template parameter, so a declaration of %qD must be available" +-msgstr "" +- +-#: cp/lex.c:672 +-#, gcc-internal-format +-msgid "(if you use %<-fpermissive%>, G++ will accept your code, but allowing the use of an undeclared name is deprecated)" +-msgstr "" +- +-#: cp/mangle.c:1691 +-#, gcc-internal-format +-msgid "mangling typeof, use decltype instead" +-msgstr "" +- +-#: cp/mangle.c:2208 +-#, gcc-internal-format +-msgid "call_expr cannot be mangled due to a defect in the C++ ABI" +-msgstr "" +- +-#: cp/mangle.c:2216 +-#, gcc-internal-format +-msgid "zero-operand casts cannot be mangled due to a defect in the C++ ABI" +-msgstr "" +- +-#: cp/mangle.c:2266 +-#, gcc-internal-format +-msgid "omitted middle operand to % operand cannot be mangled" +-msgstr "" +- +-#: cp/mangle.c:2584 +-#, gcc-internal-format +-msgid "the mangled name of %qD will change in a future version of GCC" +-msgstr "" +- +-#: cp/method.c:462 +-#, fuzzy, gcc-internal-format +-msgid "generic thunk code fails for method %q#D which uses %<...%>" +-msgstr "el codi de thunk genèric ha fallat per al mètode \"%#D\" que utilitza \"...\"" +- +-#: cp/method.c:697 +-#, fuzzy, gcc-internal-format +-msgid "non-static const member %q#D, can't use default assignment operator" +-msgstr "el membre const \"%#D\" que no és static, no pot usar l'operador d'assignació per omissió" +- +-#: cp/method.c:703 +-#, fuzzy, gcc-internal-format +-msgid "non-static reference member %q#D, can't use default assignment operator" +-msgstr "el membre de referència \"%#D\" que no és static, no pot usar l'operador d'assignació per omissió" +- +-#: cp/method.c:815 +-#, gcc-internal-format +-msgid "%Hsynthesized method %qD first required here " +-msgstr "" +- +-#: cp/method.c:1158 +-#, gcc-internal-format +-msgid "vtable layout for class %qT may not be ABI-compliantand may change in a future version of GCC due to implicit virtual destructor" +-msgstr "" +- +-#: cp/name-lookup.c:728 +-#, fuzzy, gcc-internal-format +-msgid "redeclaration of % as %qT" +-msgstr "redeclaración de \"wchar_t\" com \"%T\"" +- +-#. A redeclaration of main, but not a duplicate of the +-#. previous one. +-#. +-#. [basic.start.main] +-#. +-#. This function shall not be overloaded. +-#: cp/name-lookup.c:758 +-#, fuzzy, gcc-internal-format +-msgid "invalid redeclaration of %q+D" +-msgstr "redeclaración no vàlida de \"%D\"" +- +-#: cp/name-lookup.c:759 +-#, fuzzy, gcc-internal-format +-msgid "as %qD" +-msgstr "com \"%D\"" +- +-#: cp/name-lookup.c:850 +-#, fuzzy, gcc-internal-format +-msgid "type mismatch with previous external decl of %q#D" +-msgstr "no coincideixen els tipus amb la declaració externa prèvia" +- +-#: cp/name-lookup.c:851 +-#, fuzzy, gcc-internal-format +-msgid "previous external decl of %q+#D" +-msgstr "declaració externa prèvia de \"%#D\"" +- +-#: cp/name-lookup.c:942 +-#, fuzzy, gcc-internal-format +-msgid "extern declaration of %q#D doesn't match" +-msgstr "la declaració externa de \"%#D\" no coincideix" +- +-#: cp/name-lookup.c:943 +-#, fuzzy, gcc-internal-format +-msgid "global declaration %q+#D" +-msgstr "amb la declaració global \"%#D\"" +- +-#: cp/name-lookup.c:980 cp/name-lookup.c:987 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %q#D shadows a parameter" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#. Location of previous decl is not useful in this case. +-#: cp/name-lookup.c:1012 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD shadows a member of 'this'" +-msgstr "la declaració de \"%s\" obscurece a un membre de \"this\"" +- +-#: cp/name-lookup.c:1018 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD shadows a previous local" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: cp/name-lookup.c:1025 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD shadows a global declaration" +-msgstr "la declaració de \"%#D\" enfosqueix un paràmetre" +- +-#: cp/name-lookup.c:1148 +-#, fuzzy, gcc-internal-format +-msgid "name lookup of %qD changed" +-msgstr "la recerca de nom de \"%D\" va canviar" +- +-#: cp/name-lookup.c:1149 +-#, gcc-internal-format +-msgid " matches this %q+D under ISO standard rules" +-msgstr "" +- +-#: cp/name-lookup.c:1151 +-#, gcc-internal-format +-msgid " matches this %q+D under old rules" +-msgstr "" +- +-#: cp/name-lookup.c:1169 cp/name-lookup.c:1177 +-#, fuzzy, gcc-internal-format +-msgid "name lookup of %qD changed for new ISO % scoping" +-msgstr "la recerca de nom de \"%D\" va canviar" +- +-#: cp/name-lookup.c:1171 +-#, gcc-internal-format +-msgid " cannot use obsolete binding at %q+D because it has a destructor" +-msgstr "" +- +-#: cp/name-lookup.c:1179 +-#, gcc-internal-format +-msgid " using obsolete binding at %q+D" +-msgstr "" +- +-#: cp/name-lookup.c:1232 +-#, gcc-internal-format +-msgid "%s %s(%E) %p %d\n" +-msgstr "" +- +-#: cp/name-lookup.c:1235 +-#, fuzzy, gcc-internal-format +-msgid "%s %s %p %d\n" +-msgstr "%s: %s: " +- +-#: cp/name-lookup.c:1362 +-#, gcc-internal-format +-msgid "XXX is_class_level != (current_scope == class_scope)\n" +-msgstr "" +- +-#: cp/name-lookup.c:1920 +-#, fuzzy, gcc-internal-format +-msgid "%q#D hides constructor for %q#T" +-msgstr "\"%#D\" amaga el destructor per a \"%#T\"" +- +-#: cp/name-lookup.c:1937 +-#, fuzzy, gcc-internal-format +-msgid "%q#D conflicts with previous using declaration %q#D" +-msgstr "\"%#D\" causa conflicte amb la declaració prèvia en ús \"%#D\"" +- +-#: cp/name-lookup.c:1960 +-#, fuzzy, gcc-internal-format +-msgid "previous non-function declaration %q+#D" +-msgstr "la declaració prèvia \"%#D\" que no és funció" +- +-#: cp/name-lookup.c:1961 +-#, fuzzy, gcc-internal-format +-msgid "conflicts with function declaration %q#D" +-msgstr "causa conflicte amb la declaració de la funció \"%#D\"" +- +-#. It's a nested name with template parameter dependent scope. +-#. This can only be using-declaration for class member. +-#: cp/name-lookup.c:2039 cp/name-lookup.c:2064 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not a namespace" +-msgstr "\"%T\" no és un nom d'espai" +- +-#. 7.3.3/5 +-#. A using-declaration shall not name a template-id. +-#: cp/name-lookup.c:2049 +-#, fuzzy, gcc-internal-format +-msgid "a using-declaration cannot specify a template-id. Try %" +-msgstr "una declaració d'ús no pot especificar un identificador de patró. Intenti \"using %D\"" +- +-#: cp/name-lookup.c:2056 +-#, fuzzy, gcc-internal-format +-msgid "namespace %qD not allowed in using-declaration" +-msgstr "no es permet l'espai de noms \"%D\" en la declaració d'ús" +- +-#: cp/name-lookup.c:2092 +-#, fuzzy, gcc-internal-format +-msgid "%qD not declared" +-msgstr "no es va declarar \"%D\"" +- +-#: cp/name-lookup.c:2128 cp/name-lookup.c:2165 cp/name-lookup.c:2199 +-#: cp/name-lookup.c:2214 +-#, fuzzy, gcc-internal-format +-msgid "%qD is already declared in this scope" +-msgstr "\"%D\" ja es va declarar en aquest àmbit" +- +-#: cp/name-lookup.c:2817 +-#, gcc-internal-format +-msgid "using-declaration for non-member at class scope" +-msgstr "declaració d'ús per a un no membre en l'àmbit de la classe" +- +-#: cp/name-lookup.c:2824 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%D%> names destructor" +-msgstr "\"%D\" nomena al constructor" +- +-#: cp/name-lookup.c:2829 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%D%> names constructor" +-msgstr "\"%D\" nomena al constructor" +- +-#: cp/name-lookup.c:2834 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%D%> names constructor in %qT" +-msgstr "\"%D\" nomena al constructor" +- +-#: cp/name-lookup.c:2884 +-#, fuzzy, gcc-internal-format +-msgid "no members matching %<%T::%D%> in %q#T" +-msgstr "no hi ha membres que coincideixin amb \"%D\" en \"%#T\"" +- +-#: cp/name-lookup.c:2952 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD not in a namespace surrounding %qD" +-msgstr "la declaració de \"%D\" no està en un espai de noms al voltant de \"%D\"" +- +-#: cp/name-lookup.c:2960 +-#, fuzzy, gcc-internal-format +-msgid "explicit qualification in declaration of %qD" +-msgstr "qualificadors de tipus duplicats en la declaració %s" +- +-#: cp/name-lookup.c:3003 +-#, fuzzy, gcc-internal-format +-msgid "%qD should have been declared inside %qD" +-msgstr "\"%D\" deuria ser declarat dintre de \"%D\"" +- +-#: cp/name-lookup.c:3048 +-#, fuzzy, gcc-internal-format +-msgid "%qD attribute requires a single NTBS argument" +-msgstr "l'atribut \"%s\" requereix una constant entera com argument" +- +-#: cp/name-lookup.c:3055 +-#, gcc-internal-format +-msgid "%qD attribute is meaningless since members of the anonymous namespace get local symbols" +-msgstr "" +- +-#: cp/name-lookup.c:3064 cp/name-lookup.c:3433 +-#, fuzzy, gcc-internal-format +-msgid "%qD attribute directive ignored" +-msgstr "s'ignora la directiva d'atribut \"%s\"" +- +-#: cp/name-lookup.c:3109 +-#, fuzzy, gcc-internal-format +-msgid "namespace alias %qD not allowed here, assuming %qD" +-msgstr "no es permet aquí l'alies de l'espai de noms \"%D\", assumint que és \"%D\"" +- +-#: cp/name-lookup.c:3421 +-#, gcc-internal-format +-msgid "strong using only meaningful at namespace scope" +-msgstr "" +- +-#: cp/name-lookup.c:3425 +-#, gcc-internal-format +-msgid "current namespace %qD does not enclose strongly used namespace %qD" +-msgstr "" +- +-#: cp/name-lookup.c:4318 +-#, fuzzy, gcc-internal-format +-msgid "%q+D is not a function," +-msgstr "\"%D\" no és una funció," +- +-#: cp/name-lookup.c:4319 +-#, fuzzy, gcc-internal-format +-msgid " conflict with %q+D" +-msgstr " té conflicte amb \"%D\"" +- +-#: cp/name-lookup.c:4752 +-#, gcc-internal-format +-msgid "argument dependent lookup finds %q+D" +-msgstr "" +- +-#: cp/name-lookup.c:5184 +-#, gcc-internal-format +-msgid "XXX entering pop_everything ()\n" +-msgstr "" +- +-#: cp/name-lookup.c:5193 +-#, gcc-internal-format +-msgid "XXX leaving pop_everything ()\n" +-msgstr "" +- +-#: cp/parser.c:451 +-#, gcc-internal-format +-msgid "identifier %<%s%> will become a keyword in C++0x" +-msgstr "" +- +-#: cp/parser.c:2066 +-#, fuzzy, gcc-internal-format +-msgid "%<#pragma%> is not allowed here" +-msgstr "ja s'ha desat #pragma %s" +- +-#: cp/parser.c:2096 +-#, fuzzy, gcc-internal-format +-msgid "%<%E::%E%> has not been declared" +-msgstr "\"%#D\" no pot ser declarat" +- +-#: cp/parser.c:2099 +-#, fuzzy, gcc-internal-format +-msgid "%<::%E%> has not been declared" +-msgstr "\"%#D\" no pot ser declarat" +- +-#: cp/parser.c:2102 +-#, fuzzy, gcc-internal-format +-msgid "request for member %qE in non-class type %qT" +-msgstr "sol·licitud pel membre \"%D\" en \"%E\", el qual és del tipus no agregat \"%T\"" +- +-#: cp/parser.c:2105 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%E%> has not been declared" +-msgstr "\"%#D\" no pot ser declarat" +- +-#: cp/parser.c:2108 +-#, fuzzy, gcc-internal-format +-msgid "%qE has not been declared" +-msgstr "\"%#D\" no pot ser declarat" +- +-#: cp/parser.c:2111 +-#, gcc-internal-format +-msgid "%<%E::%E%> %s" +-msgstr "" +- +-#: cp/parser.c:2113 +-#, fuzzy, gcc-internal-format +-msgid "%<::%E%> %s" +-msgstr "accés \"%D\"" +- +-#: cp/parser.c:2115 +-#, fuzzy, gcc-internal-format +-msgid "%qE %s" +-msgstr "%s: %s" +- +-#: cp/parser.c:2151 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ does not support %" +-msgstr "ISO C++ no dóna suport a \"long long\"" +- +-#: cp/parser.c:2171 +-#, fuzzy, gcc-internal-format +-msgid "duplicate %qs" +-msgstr "\"%s\" duplicat" +- +-#: cp/parser.c:2214 +-#, fuzzy, gcc-internal-format +-msgid "new types may not be defined in a return type" +-msgstr "new no pot ser aplicat a un tipus de referència" +- +-#: cp/parser.c:2215 +-#, fuzzy, gcc-internal-format +-msgid "(perhaps a semicolon is missing after the definition of %qT)" +-msgstr "manca punt i coma després de la declaració de \"%T\"" +- +-#: cp/parser.c:2234 cp/parser.c:4077 cp/pt.c:5443 +-#, fuzzy, gcc-internal-format +-msgid "%qT is not a template" +-msgstr "\"%T\" no és un patró" +- +-#: cp/parser.c:2236 +-#, fuzzy, gcc-internal-format +-msgid "%qE is not a template" +-msgstr "\"%T\" no és un patró" +- +-#: cp/parser.c:2238 +-#, fuzzy, gcc-internal-format +-msgid "invalid template-id" +-msgstr "rotació de insn no vàlida" +- +-#: cp/parser.c:2267 +-#, fuzzy, gcc-internal-format +-msgid "%s cannot appear in a constant-expression" +-msgstr "desbordament en la constant implícita" +- +-#: cp/parser.c:2292 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of template-name %qE without an argument list" +-msgstr "ús no vàlid del nom de patró \"%E\" en un declarador" +- +-#: cp/parser.c:2294 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of destructor %qD as a type" +-msgstr "ús no vàlid de \"restrict\"" +- +-#. Something like 'unsigned A a;' +-#: cp/parser.c:2297 +-#, fuzzy, gcc-internal-format +-msgid "invalid combination of multiple type-specifiers" +-msgstr "definició no vàlida del tipus qualificat \"%T\"" +- +-#. Issue an error message. +-#: cp/parser.c:2301 +-#, fuzzy, gcc-internal-format +-msgid "%qE does not name a type" +-msgstr "\"%T\" no és un tipus de classe" +- +-#: cp/parser.c:2333 +-#, fuzzy, gcc-internal-format +-msgid "(perhaps % was intended)" +-msgstr " (usi \"typename %T::%D\" si això és el que volia)" +- +-#: cp/parser.c:2348 +-#, fuzzy, gcc-internal-format +-msgid "%qE in namespace %qE does not name a type" +-msgstr "\"%T\" no és un tipus de classe" +- +-#: cp/parser.c:2351 +-#, fuzzy, gcc-internal-format +-msgid "%qE in class %qT does not name a type" +-msgstr "\"%T\" no és un tipus de classe" +- +-#: cp/parser.c:3160 +-#, gcc-internal-format +-msgid "ISO C++ forbids braced-groups within expressions" +-msgstr "ISO C++ prohibeix grups de parèntesis dintre de les expressions" +- +-#: cp/parser.c:3171 +-#, fuzzy, gcc-internal-format +-msgid "statement-expressions are not allowed outside functions nor in template-argument lists" +-msgstr "un grup de claus dintre d'una expressió només es permet dintre d'una funció" +- +-#: cp/parser.c:3229 +-#, fuzzy, gcc-internal-format +-msgid "% may not be used in this context" +-msgstr "\"%D\" no es va declarar en aquest àmbit" +- +-#: cp/parser.c:3412 +-#, fuzzy, gcc-internal-format +-msgid "local variable %qD may not appear in this context" +-msgstr "\"%D\" no es va declarar en aquest àmbit" +- +-#: cp/parser.c:3711 +-#, gcc-internal-format +-msgid "scope %qT before %<~%> is not a class-name" +-msgstr "" +- +-#: cp/parser.c:3812 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %<~%T%> as member of %qT" +-msgstr "la declaració de \"%s\" obscurece a un membre de \"this\"" +- +-#: cp/parser.c:3826 +-#, fuzzy, gcc-internal-format +-msgid "typedef-name %qD used as destructor declarator" +-msgstr "l'identificador de patró \"%D\" s'usa com un declarador" +- +-#: cp/parser.c:4480 +-#, fuzzy, gcc-internal-format +-msgid "ISO C++ forbids compound-literals" +-msgstr "ISO C++ prohibeix literals composats" +- +-#: cp/parser.c:4837 +-#, fuzzy, gcc-internal-format +-msgid "%qE does not have class type" +-msgstr "\"%T\" no és un tipus de classe" +- +-#: cp/parser.c:4920 cp/typeck.c:1978 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of %qD" +-msgstr "ús no vàlid de \"%D\"" +- +-#: cp/parser.c:5480 +-#, gcc-internal-format +-msgid "array bound forbidden after parenthesized type-id" +-msgstr "" +- +-#: cp/parser.c:5481 +-#, gcc-internal-format +-msgid "try removing the parentheses around the type-id" +-msgstr "" +- +-#: cp/parser.c:5671 +-#, fuzzy, gcc-internal-format +-msgid "expression in new-declarator must have integral or enumeration type" +-msgstr "la grandària de la matriu nova ha de tenir un tipus integral" +- +-#: cp/parser.c:5860 +-#, gcc-internal-format +-msgid "use of old-style cast" +-msgstr "ús de la conversió d'estil antic" +- +-#: cp/parser.c:5986 +-#, gcc-internal-format +-msgid "%H%<>>%> operator will be treated as two right angle brackets in C++0x" +-msgstr "" +- +-#: cp/parser.c:5989 +-#, fuzzy, gcc-internal-format +-msgid "suggest parentheses around %<>>%> expression" +-msgstr "es suggereixen parèntesi al voltant de && dintre de ||" +- +-#: cp/parser.c:6793 +-#, fuzzy, gcc-internal-format +-msgid "case label %qE not within a switch statement" +-msgstr "l'etiqueta «case» \"%E\" no es troba dintre d'una declaració «switch»" +- +-#: cp/parser.c:6922 +-#, gcc-internal-format +-msgid "% without a previous %" +-msgstr "" +- +-#: cp/parser.c:7208 +-#, gcc-internal-format +-msgid "suggest a space before %<;%> or explicit braces around empty body in %<%s%> statement" +-msgstr "" +- +-#: cp/parser.c:7468 +-#, gcc-internal-format +-msgid "ISO C++ forbids computed gotos" +-msgstr "ISO C++ prohibeix gotos calculats" +- +-#: cp/parser.c:7608 +-#, gcc-internal-format +-msgid "extra %<;%>" +-msgstr "" +- +-#: cp/parser.c:7825 +-#, gcc-internal-format +-msgid "%<__label__%> not at the beginning of a block" +-msgstr "" +- +-#: cp/parser.c:7958 +-#, gcc-internal-format +-msgid "mixing declarations and function-definitions is forbidden" +-msgstr "" +- +-#: cp/parser.c:8090 +-#, gcc-internal-format +-msgid "% used outside of class" +-msgstr "" +- +-#: cp/parser.c:8244 +-#, fuzzy, gcc-internal-format +-msgid "class definition may not be declared a friend" +-msgstr "la funció \"%D\" no pot ser declarada friend" +- +-#: cp/parser.c:8308 cp/parser.c:15155 +-#, gcc-internal-format +-msgid "templates may not be %" +-msgstr "" +- +-#: cp/parser.c:8775 +-#, gcc-internal-format +-msgid "only constructors take base initializers" +-msgstr "" +- +-#: cp/parser.c:8795 +-#, fuzzy, gcc-internal-format +-msgid "cannot expand initializer for member %<%D%>" +-msgstr "falta e l'inicialitzador pel membre \"%D\"" +- +-#: cp/parser.c:8847 +-#, fuzzy, gcc-internal-format +-msgid "anachronistic old-style base class initializer" +-msgstr "inicialitzador de classe base d'estil antic anacrònic" +- +-#: cp/parser.c:8892 +-#, gcc-internal-format +-msgid "keyword % not allowed in this context (a qualified member initializer is implicitly a type)" +-msgstr "" +- +-#. Warn that we do not support `export'. +-#: cp/parser.c:9237 +-#, fuzzy, gcc-internal-format +-msgid "keyword % not implemented, and will be ignored" +-msgstr "la paraula clau \"export\" no està implementada, i serà ignorada" +- +-#: cp/parser.c:9482 cp/parser.c:9583 +-#, fuzzy, gcc-internal-format +-msgid "template parameter pack %qD cannot have a default argument" +-msgstr "\"%D\" no pot tenir arguments per omissió" +- +-#: cp/parser.c:9485 cp/parser.c:9586 +-#, fuzzy, gcc-internal-format +-msgid "template parameter packs cannot have default arguments" +-msgstr "els paràmetres del patró no poden ser friends" +- +-#. Otherwise, emit an error about the invalid digraph, but continue +-#. parsing because we got our argument list. +-#: cp/parser.c:9723 +-#, fuzzy, gcc-internal-format +-msgid "%<<::%> cannot begin a template-argument list" +-msgstr "l'objecte \"%E\" no es pot usar com un argument de patró" +- +-#: cp/parser.c:9724 +-#, gcc-internal-format +-msgid "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> and %<::%>" +-msgstr "" +- +-#: cp/parser.c:9731 +-#, gcc-internal-format +-msgid "(if you use -fpermissive G++ will accept your code)" +-msgstr "" +- +-#: cp/parser.c:9804 +-#, fuzzy, gcc-internal-format +-msgid "parse error in template argument list" +-msgstr "l'objecte \"%E\" no es pot usar com un argument de patró" +- +-#. Explain what went wrong. +-#: cp/parser.c:9917 +-#, fuzzy, gcc-internal-format +-msgid "non-template %qD used as template" +-msgstr "s'usa un no-patró com patró" +- +-#: cp/parser.c:9918 +-#, fuzzy, gcc-internal-format +-msgid "use %<%T::template %D%> to indicate that it is a template" +-msgstr "identificador de patró \"%D\" en la declaració del patró primari" +- +-#: cp/parser.c:10441 +-#, gcc-internal-format +-msgid "template specialization with C linkage" +-msgstr "especialització de patró amb enllaç C" +- +-#: cp/parser.c:11032 +-#, fuzzy, gcc-internal-format +-msgid "using % outside of template" +-msgstr "usant \"typename\" fora de la plantilla" +- +-#: cp/parser.c:11191 +-#, fuzzy, gcc-internal-format +-msgid "declaration %qD does not declare anything" +-msgstr "la declaració no declara res" +- +-#: cp/parser.c:11275 +-#, fuzzy, gcc-internal-format +-msgid "attributes ignored on uninstantiated type" +-msgstr "operació no vàlida en tipus no instanciat" +- +-#: cp/parser.c:11279 +-#, fuzzy, gcc-internal-format +-msgid "attributes ignored on template instantiation" +-msgstr "classe d'emmagatzematge \"%D\" aplicada a la instanciació d'un patró" +- +-#: cp/parser.c:11284 +-#, gcc-internal-format +-msgid "attributes ignored on elaborated-type-specifier that is not a forward declaration" +-msgstr "" +- +-#: cp/parser.c:11406 +-#, gcc-internal-format +-msgid "comma at end of enumerator list" +-msgstr "coma al final de la llista de numeradors" +- +-#: cp/parser.c:11498 +-#, fuzzy, gcc-internal-format +-msgid "%qD is not a namespace-name" +-msgstr "\"%D\" no és un nom d'espai" +- +-#: cp/parser.c:11599 +-#, fuzzy, gcc-internal-format +-msgid "% definition is not allowed here" +-msgstr "no es permet aquí l'alies de l'espai de noms \"%D\", assumint que és \"%D\"" +- +-#. [namespace.udecl] +-#. +-#. A using declaration shall not name a template-id. +-#: cp/parser.c:11738 +-#, fuzzy, gcc-internal-format +-msgid "a template-id may not appear in a using-declaration" +-msgstr "no es permet l'espai de noms \"%D\" en la declaració d'ús" +- +-#: cp/parser.c:12094 +-#, gcc-internal-format +-msgid "an asm-specification is not allowed on a function-definition" +-msgstr "" +- +-#: cp/parser.c:12096 +-#, fuzzy, gcc-internal-format +-msgid "attributes are not allowed on a function-definition" +-msgstr "la variable de registre global segueix a una definició de funció" +- +-#: cp/parser.c:12229 +-#, fuzzy, gcc-internal-format +-msgid "initializer provided for function" +-msgstr "es va especificar un inicialitzador per a la funció no-membre \"%D\"" +- +-#: cp/parser.c:12249 +-#, fuzzy, gcc-internal-format +-msgid "attributes after parenthesized initializer ignored" +-msgstr "atributs en el declarador de paràmetres de matriu ignorats" +- +-#: cp/parser.c:12630 cp/pt.c:8772 +-#, fuzzy, gcc-internal-format +-msgid "array bound is not an integer constant" +-msgstr "el subindici de la matriu no és un enter" +- +-#: cp/parser.c:12739 +-#, fuzzy, gcc-internal-format +-msgid "%<%T::%E%> is not a type" +-msgstr "\"%D::%D\" no és un patró" +- +-#: cp/parser.c:12765 +-#, fuzzy, gcc-internal-format +-msgid "invalid use of constructor as a template" +-msgstr "ús no vàlid del patró \"%D\"" +- +-#: cp/parser.c:12766 +-#, gcc-internal-format +-msgid "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified name" +-msgstr "" +- +-#: cp/parser.c:12938 +-#, fuzzy, gcc-internal-format +-msgid "%qD is a namespace" +-msgstr "\"%D\" és un nom d'espai" +- +-#: cp/parser.c:13013 +-#, fuzzy, gcc-internal-format +-msgid "duplicate cv-qualifier" +-msgstr "valor d'un «case» duplicat" +- +-#: cp/parser.c:13600 +-#, fuzzy, gcc-internal-format +-msgid "file ends in default argument" +-msgstr "%Hlectura de final de fitxer dintre de l'argument per defecte" +- +-#: cp/parser.c:13673 +-#, fuzzy, gcc-internal-format +-msgid "deprecated use of default argument for parameter of non-function" +-msgstr "argument per omissió donat per al paràmetre %d de \"%#D\"" +- +-#: cp/parser.c:13676 +-#, fuzzy, gcc-internal-format +-msgid "default arguments are only permitted for function parameters" +-msgstr "argument per omissió donat per al paràmetre %d de \"%#D\"" +- +-#: cp/parser.c:13877 +-#, gcc-internal-format +-msgid "ISO C++ does not allow designated initializers" +-msgstr "ISO C++ no permet inicialitzadors designats" +- +-#: cp/parser.c:14477 +-#, fuzzy, gcc-internal-format +-msgid "invalid class name in declaration of %qD" +-msgstr "declaració del patró membre \"%D\" no vàlida" +- +-#: cp/parser.c:14489 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD in namespace %qD which does not enclose %qD" +-msgstr "declaració de \"%D\" en \"%D\" la qual no inclou a \"%D\"" +- +-#: cp/parser.c:14492 +-#, fuzzy, gcc-internal-format +-msgid "declaration of %qD in %qD which does not enclose %qD" +-msgstr "declaració de \"%D\" en \"%D\" la qual no inclou a \"%D\"" +- +-#: cp/parser.c:14505 +-#, fuzzy, gcc-internal-format +-msgid "extra qualification ignored" +-msgstr "s'ignora la qualificació extra \"%T::\" en el membre \"%D\"" +- +-#: cp/parser.c:14516 +-#, fuzzy, gcc-internal-format +-msgid "an explicit specialization must be preceded by %