diff options
author | Iain <qt-info@nokia.com> | 2011-02-09 17:34:27 (GMT) |
---|---|---|
committer | Jason McDonald <jason.mcdonald@nokia.com> | 2011-02-11 13:23:01 (GMT) |
commit | d116612d7447900733ee7c4c193e4c83f76cd8ff (patch) | |
tree | 0883e7756e5f23d8a6009be48e323c7fa9501f69 | |
parent | ac7c40a963f31282dfd4d2a77808f494ee5e2db0 (diff) | |
download | Qt-d116612d7447900733ee7c4c193e4c83f76cd8ff.zip Qt-d116612d7447900733ee7c4c193e4c83f76cd8ff.tar.gz Qt-d116612d7447900733ee7c4c193e4c83f76cd8ff.tar.bz2 |
Change paging attributes for Symbian binaries
Removed UNPAGED workaround from QtCore and QtSql on OS releases where
data paging is supported. Depends on new macro being defined in the OS
builds (SYMBIAN_DLL_DATA_EXPORTS_SUPPORTED) to allow us to detect this.
Data exports are supported in all S^3 builds after early 2009, however,
this macro is only added recently (and thus isn't defined in, eg.
Symbian Foundation PDKs (v3.0.4), or current releases (v0.9) of the S^3
SDK from Nokia). Thus building Qt against these older S^3 builds will
still result in QtCore and QtSql being unpaged.
Also, remove PAGED keyword from all Qt-based software. This changes the
code paging field in the Symbian (E32Image) header from "paged" to
"default". Thus it is left to the configuration of the particular
device whether paging is used for the binary or not. All devices that
support code paging should have it turned on (the value is stored in
the HAL, so can be checked using eg. fshell); data paging may or may
not be turned on depending on the device characteristics. Leaving both
code and data paging as "default" means that any limitations in the
device (eg. around flash wear) can be controlled by that device by
disabling the appropriate types of paging.
This change also leaves the way open to deprecated PAGED as a keyword
in the Symbian build systems, so you can only opt out of paging. This
makes more sense, as the default for code paging will be on, the
default for data paging will be on if the device can handle it, and
binaries should only be opting out of paging if they have some specific
real-time requirements that paging inhibits.
Task-number: QT-3503
Task-number: QTBUG-13931
Reviewed-by: Shane Kearns
(cherry picked from commit 34aca9f03e25e94b4ca730ddd3c88aa95653a0b5)
-rw-r--r-- | mkspecs/common/symbian/symbian-mmp.conf | 5 | ||||
-rw-r--r-- | src/corelib/corelib.pro | 9 | ||||
-rw-r--r-- | src/sql/sql.pro | 9 |
3 files changed, 15 insertions, 8 deletions
diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf index 4d554bd..8ed326a 100644 --- a/mkspecs/common/symbian/symbian-mmp.conf +++ b/mkspecs/common/symbian/symbian-mmp.conf @@ -13,7 +13,7 @@ symbian-abld { } else { MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA = "OPTION_REPLACE ARMCC --export_all_vtbl // don't use --export_all_vtbl" } -MMP_RULES += PAGED BYTEPAIRCOMPRESSTARGET +MMP_RULES += BYTEPAIRCOMPRESSTARGET MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6 @@ -28,7 +28,8 @@ INCLUDEPATH = \ # RVCT seems to do this automatically, but WINSCW compiler does not, so add it here. MMP_RULES += "USERINCLUDE ." -contains(S60_VERSION, 3.1):MMP_RULES -= PAGED BYTEPAIRCOMPRESSTARGET +# S60 3.1 devices don't support paging for non-ROM components, so no point in using the less efficient compression mechanism +contains(S60_VERSION, 3.1):MMP_RULES -= BYTEPAIRCOMPRESSTARGET QMAKE_CXXFLAGS_FAST_VFP.ARMCC = --fpmode fast # [TODO] QMAKE_CXXFLAGS_FAST_VFP.GCCE = diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro index a001940..06aa191 100644 --- a/src/corelib/corelib.pro +++ b/src/corelib/corelib.pro @@ -33,7 +33,10 @@ contains(DEFINES,QT_EVAL):include(eval.pri) symbian: { TARGET.UID3=0x2001B2DC - # Workaroud for problems with paging this dll - MMP_RULES -= PAGED - MMP_RULES *= UNPAGED + # Problems using data exports from this DLL mean that we can't page it on releases that don't support + # data exports (currently that's any release before Symbian^3) + pagingBlock = "$${LITERAL_HASH}ifndef SYMBIAN_DLL_DATA_EXPORTS_SUPPORTED" \ + "UNPAGED" \ + "$${LITERAL_HASH}endif" + MMP_RULES += pagingBlock } diff --git a/src/sql/sql.pro b/src/sql/sql.pro index b8f819d..a02b0f4 100644 --- a/src/sql/sql.pro +++ b/src/sql/sql.pro @@ -20,7 +20,10 @@ include(models/models.pri) symbian: { TARGET.UID3=0x2001E61D - # Workaroud for problems with paging this dll - MMP_RULES -= PAGED - MMP_RULES *= UNPAGED + # Problems using data exports from this DLL mean that we can't page it on releases that don't support + # data exports (currently that's any release before Symbian^3) + pagingBlock = "$${LITERAL_HASH}ifndef SYMBIAN_DLL_DATA_EXPORTS_SUPPORTED" \ + "UNPAGED" \ + "$${LITERAL_HASH}endif" + MMP_RULES += pagingBlock } |