Closed
Bug 432430
Opened 16 years ago
Closed 15 years ago
[PATCH] NSPR port to Symbian OS, unit tests tested
Categories
(NSPR :: NSPR, enhancement)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: me, Assigned: me)
References
Details
(Keywords: mobile)
Attachments
(8 files, 13 obsolete files)
10.88 KB,
patch
|
Details | Diff | Splinter Review | |
2.34 KB,
patch
|
Details | Diff | Splinter Review | |
3.19 KB,
patch
|
Details | Diff | Splinter Review | |
4.22 KB,
patch
|
Details | Diff | Splinter Review | |
13.05 KB,
patch
|
Details | Diff | Splinter Review | |
13.70 KB,
patch
|
blassey
:
review-
|
Details | Diff | Splinter Review |
39.12 KB,
patch
|
nelson
:
review+
|
Details | Diff | Splinter Review |
12.13 KB,
patch
|
nelson
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 Build Identifier: This is my patch for NSPR. In this patch I added some files as Symbian OS project file (plays role of Makefile) and modified some .c files to make NSPR compiled for Symbian OS both emulator(x86 compiler instead of true ARM simulator) and target device (cross compile for ARM CPU on phones). At this moment those builds, both NSPR dynamic library(dll) and unit tests finished compiling with success but haven't been run for tests on both emulator and target device. Details of new files: // all of them are placed in mozilla/nsprpub/build/symbian bld.inf : Project file for whole NSPR, includes other single projects and tests projects. nspr.mmp : Single project file for NSPR on Symbian OS. plc.mmp : Single project file for PLC on Symbian OS. ver_bld.mk : GNU Makefile used to generate _pr_bld.h and _pl_bld.h at compile time. macro.h : Common macros used in project files. prcpucfg.h : A cpu config file copied from _linux.cfg. Because of build tool chain can not use .cfg file as header and other macro flow control problem, I place CPU config header with this name at this place. Those project files(bld.inf and .mmp) are used for building Symbian OS binaries, but the tool chain and development environment setup process will cost too many words to make it clear here. For your convenience of knowing Symbian OS development, I would give you two resources: http://www.forum.nokia.com/main/resources/technologies/symbian/documentation/getting_started.html http://wiki.forum.nokia.com/index.php/How_do_I_start_programming_for_Symbian_OS%3F At last, I have to get you know this is my first time to submit a Mozilla patch, I use my spare time to make the building works without functionality verify in 1.5 weeks. Probably there will be many to fix, so please point out anything that will help me improving at will. Reproducible: Always Steps to Reproduce: 1. 2. 3.
Attachment #319556 -
Flags: review?
Attachment #319557 -
Flags: review?
Comment 3•16 years ago
|
||
I confirm this is an enhancement request. :) Harry, per your request, here are some suggestions. 1) Make this bug be an NSPR bug. IF & when you get to NSS, create a bug for Symbian work in NSS, and make it an NSS bug. Create an "umbrella" bug for your project (which I gather is Fennec), and let all those other bugs block it. DO likewise for each piece of Mozilla code you need to touch. This strategy will lessen the chance that your projects will be ignored by the owners of the various modules. If you can't change this bug's product, let any of the NSPR module owners know, and we can do it. 2) Avoid "Monster Patches". Your second patch, above, at 483.6KB, might just be a new record for biggest patch. Nobody likes to review monster patches so Monster Patches tend to sit around for LONG periods of time (months) waiting for reviews. 10 smaller patches will get reviewed much faster than 1 big patch containing all 10 parts. A big patch gets one grade. It's all or nothing. Even if 90% of the patch is ready to go in, but 10% is not, the whole thing stops for that 10%. But if that 10% is in its own separate patch, and the other parts are in their own separate patches, then the parts that are ready (get positive reviews) can be checked in without waiting for the rest. The worst case scenario, for a reviewer, is the monster patch that gets a negative review, and then a subsequent version of the patch either includes a different set of files than the previous version, or patches a different version of some file than the previous patch. A single one of either kind of change means that the tools that compare patches won't work, and the reviewer will be faced with reviewing the entire monster patch again. Some reviewers simply say no to requests to review monster patches subsequent to the first one, unless the new patch is comparable in all respects (same exact set of files and file versions). So, once you start developing a patch, don't cvs update those files again in your workarea until your patch gets a positive review. THEN if the patch needs to be adjusted due to patch collisions, those can be resolved after the main patch gets a positive review. Monster patches that contain only entirely new files in entirely new directories might be an exception to that rule. Regarding your two patches above, I'd suggest that you obsolete the second patch, which is the first patch plus a large set of new files, and create a third patch that is ONLY the new files that were added to the second patch. That way, those two sets of patches to files can be reviewed separately.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Updated•16 years ago
|
Assignee: nobody → harry.li
Component: General → NSPR
Product: Fennec → NSPR
Version: 1.0 → 4.7.1
Comment 4•16 years ago
|
||
Regarding the huge boatload of project files: Is it possible to build this code for Symbian using only gmake and a shell (the common build environment for all unix/linux-like systems)? I think it's safe to say that the existing NSPR developers would far prefer it if the new port was built using the same basic build methods used on all the other systems. Finally (for this comment), I can't help but wonder if this port hasn't already been done. I'm pretty sure there's a browser based on gecko (the core of firefox) on Nokia's n770, n800, and n810, which (I think) are Symbian devices. I know those products use NSPR and NSS already. I'm CC'ing somebody who might know.
Updated•16 years ago
|
QA Contact: general → nspr
Thanks for your fast reply Nelson :) I am working on splitting the second patch now. For your query, the answer is that there is a way to build it under unix/linux shell but that method is very unofficial and the result is not guaranteed. More information can be get from http://www.martin.st/symbian/ . I just don't know if this way means more painful than setting up a build environment on Windows OS, ore less. I will try to keep three build configurations(Nokia Carbide.c++ IDE build for x86 emulator, Nokia Carbide.c++ IDE build for ARM target device with GCCE compiler, Unix/Linux shell build with patched tool chain for ARM target device) IF the community has a great need. Although the first two configurations are IDE based, it is also possible to make these two run under Windows shell/command prompt, actually it means nothing compared with our goal of utilizing gmake and unix shell. I use the Slackware Linux as my primary OS, fetch mozilla source from cvs with this OS. And I run a Windows in my VirtualBox machine, doing Symbian OS development (my primary work) inside the guest Windows. I am trying to adopt the way I learned from www.martin.st/symbian gradually, but I haven't put this way the first choice cause of production quality concerns. N770 to N810 are not Symbian OS based devices, they are based on Linux kernel and a distro looks like Debian.
apply this patch under mozilla/nsprpub/build/symbian/tests and use "gen_tests_mmp.py" to generate all unit test project files for Symbian OS automatically, instead of all test project files in old patch(attachment id 319557). by the way, there is a nspr_gui_test project acts as a caller to test all other unit tests, but maybe i need to replace their directory placement in future to get everything more clear.
Attachment #319557 -
Attachment is obsolete: true
Attachment #319735 -
Flags: review?
Attachment #319557 -
Flags: review?
Comment 7•16 years ago
|
||
Comment on attachment 319556 [details] [diff] [review] nspr port for Symbian OS, no tests project files Harry, I glanced through this patch quickly. Here are some comments. It seems that Symbian provides a POSIX environment because you're actually using the NSPR Unix files for Symbian. It may be good to define XP_UNIX for Symbian because this POSIX environment looks very complete. It would eliminate some of your changes. Let's just use the SYMBIAN macro and remove XP_SYMBIAN. We only need one. Ideally, you should add include/md/_symbian.cfg to the source tree, and create a symlink named prcpucfg.h to _symbian.cfg during the build. Can you do that? Some of your files are copied from Linux files. Please go through them and remove the unnecessary code. For example, I doubt Symbian supports CPU architectures such as __ia64__ and __s390__. (Your prcpucfg.h file shows Symbian only supports __arm__.) Also change references to Linux to Symbian. Why do you need to undefine _WIN32 and __i386__?
Thanks for comment, they are very nice and I will start working on them soon. About the last one, the preprocessor used in build process behaves some strangely that sometime it will expose lines in a "#ifdef _WIN32" or a "#ifdef __i386__", maybe the preprocessor which produces the emulator binary(x86,WINNT based) has some built-in MACRO. Later I will verify this guess with further tests. Now I am adding more to test cases in order to get them running on target device(I have an Nokia N82 at hand, and the ideal device is Nokia N73, it's the leading device, most typical model in the platform) and verify functionalities of this patch. With more test cases running on target device, I will fix what can be fixed and make a summary of NSPR limitations for Symbian OS.
Comment 9•16 years ago
|
||
If you really need to undefine _WIN32 and __i386__ to work around the strange preprocessor problem, please add a short comment to explain that. Thanks!
Assignee | ||
Comment 10•16 years ago
|
||
I am working on fix for the patch now. However, there is something tough with the free-software compiler and complexcity of test cases on a Nokia S60 Phone which is Symbian OS based. Because I don't know if you have a deadline or acceptable time requirement for a patch fix in Mozilla community for a part-time contributor. Here I send you my apologize for time delay. If any rules or customs you think I should learn first, please feel free to guide me. I think there are three problems I am facing now, I am working on fix them one by one, but probably you guys could give me some comments: 1) The compiler problem can be found here: http://groups.google.com/group/mozilla.dev.platforms.mobile/browse_thread/thread/2e7ef1c47d3971fe# . 2) There is a issue about build tool chain, initial discussion found here: http://wiki.mozilla.org/Mobile/Build/Symbian#Can_I_build_it_under_Linux.2FUnix_with_gmake.3F 3) Test cases are large in number and probably many of them are not applicable for a phone, like socket bind/listen. I have to find them one by one, find reason for runnable or un-runnable cases from source to behavior, this is a large amount of work which will cost time. If anyone could give me guides on efficiency, I will be glad to take. Thanks again for attention on this bug.
Comment 11•16 years ago
|
||
You only need to port the tests listed in mozilla/nsprpub/pr/tests/runtests.sh. If Symbian supports server sockets, it is still useful to port the server socket functions so that you can run our socket tests, which are standalone tests that don't require another computer acting as a server. You can take your time working on the Symbian port. We don't have a deadline for you.
Assignee | ||
Comment 12•16 years ago
|
||
I made a spreadsheet which reports the status of test cases running on NSPR for Symbian OS, at here : http://spreadsheets.google.com/pub?key=puHMGxziDYnOk8BeukovcSA . There is still a lot to test, yet the method of making a single test case and some tricks to get the case run/PASS are covered in past a few days.
Assignee | ||
Comment 13•16 years ago
|
||
Please find details about this patch at http://wiki.mozilla.org/Mobile/Symbian/NSPR and http://wiki.mozilla.org/Mobile/Build/Symbian All functionalities which are applicable on Symbian OS are done as earlier description. Most test cases for UNIX OS run well and get passed. Eight waiver candidates are : anonfm, dlltest, ioconthr, peek, pipeping, pipeping2, sema, sockping. Now those eight test cases are waiting for waiver approval, however some of them may have workaround to get run/pass or even functionality fix/recover inside NSPR in future. There are still potential changes. So just point out any comment. Thanks a lot!
Attachment #319556 -
Attachment is obsolete: true
Attachment #319735 -
Attachment is obsolete: true
Attachment #324584 -
Flags: review?(wtc)
Attachment #319556 -
Flags: review?
Attachment #319735 -
Flags: review?
Summary: [PATCH] NSPR port to Symbian OS, functionality not complete yet. → [PATCH] NSPR port to Symbian OS, unit tests tested
Assignee | ||
Comment 14•16 years ago
|
||
Comment 15•16 years ago
|
||
Comment on attachment 324584 [details] [diff] [review] nspr port for Symbian OS, with testcases run Harry, I reviewed _symbian.cfg, _symbian.h, symbian.c, and cleaned them up. I have some questions. 1. Does we need the following in both _symbian.cfg and _symbian.h? +#if defined(__WINS__) +#undef _WIN32 +#undef __i386__ +#endif It should be enough to just add that to _symbian.cfg. Another method is to do that on the compiler command line: -U_WIN32 -U__i386__ 2. Is Symbian using glibc? Since you copied the Linux code, there are a lot of #if tests for __GLIBC__ in your Symbian code. I'm not sure whether __GLIBC__ is defined on Symbian, or it's just that you didn't remove __GLIBC__ from the Linux code you copied. 3. If Symbian doesn't have AF_INET6, we need to pick a value for PR_AF_INET6 that is different from any AF_xxx defined on Symbian. Could you email me the system header file that defines AF_INET? 4. Does Symbian have the pthread library? Are you using it? 5. In _symbian.h, you have +#ifdef DYNAMIC_LIBRARY +#define HAVE_DLL +#define USE_DLFCN +#endif What is the DYNAMIC_LIBRARY macro?
Comment 16•16 years ago
|
||
Comment on attachment 324584 [details] [diff] [review] nspr port for Symbian OS, with testcases run Another question about +/* Symbian OS emulator build preprocessor has built-in _WIN32 and __i386__ macro */ +#if defined(__WINS__) +#undef _WIN32 +#undef __i386__ +#endif Does that mean in the Symbian OS emulator build, both __i386__ and __arm__ are defined? If so, that's just wrong.
Assignee | ||
Comment 17•16 years ago
|
||
1, Yes, we can remove these #undef in _symbian.h, and if we shall use command line parameters for compiler, we could addd "OPTION CW -U__i386__ -U_WIN32" under the line "LINKEROPTION GCCE --shared" in "nspr.mmp". OPTION = give command line parameter CW = Compiler for WINS(emulator) build I think this also answers your next comment: "there is __i386__ define built in the preprocessor of emulator build tool chain, so we have to undef them". 2, There is no "__GLIBC__" macro and the library in Symbian, so it's just some unreachable codes in those lines. 3, email on the way. But IPv6 is supported in a recent "Open C" plugin release, so maybe I could add this in future. 4, Yes, there is pthread library in Symbian with a plugin called "Open C" which is an official plugin from Nokia. 5, As mentioned in http://wiki.mozilla.org/Mobile/Symbian/NSPR#Notes point 1, the current open source compiler/linker--"GCCE from CodeSourcery" can not produce correct DLL binary for target device. This compiler defect can be found here http://www3.symbian.com/faq.nsf/AllByDate/B8542F039C193CCC802573DA0011DFA7 . I just missed document this in source.
Comment 18•16 years ago
|
||
More questions regarding _symbian.h: 1. Does Symbian have the poll() function? 2. Does Symbian have large file support? This is the case if the off_t type is 64-bit, or there is an off64_t type. If you don't know the answer, we can just define _PR_NO_LARGE_FILES for now. 3. If you don't plan to support IPv6, we can remove the following IPv6-related macros from _symbian.h: //#define _PR_INET6 // Symbian OS Open C does not support IPv6 #define _PR_HAVE_INET_NTOP #define _PR_HAVE_GETHOSTBYNAME2 #define _PR_HAVE_GETADDRINFO //#define _PR_INET6_PROBE // Symbian OS Open C does not support IPv6 4. Does Symbian have gethostbyname_r()? If so, what's its function prototype?
Assignee | ||
Comment 19•16 years ago
|
||
1, Symbian/Open C does not have poll(). 2, Symbian/Open C doesn't implement large file support(no open64 and others). so we have to keep _PR_NO_LARGE_FILES. 3, For simplify our initial patch, I'm OK with this. 4, Symbian/Open C does not have gethostbyname_r(), but unlike question 1 and 2, this missing function is not documented anywhere. So further limitation confirmation needs to be done.
Comment 20•16 years ago
|
||
(In reply to comment #5) I spoke to Doug Turner about your use of project files this morning. He too suggested that you should use makefiles if possible. Have you ever built Firefox on Windows? It uses a Unix-like command line environment called MSYS. MSYS has bash and GNU make. It would be nice if you can use MSYS to drive your Symbian compiler and linker on Windows.
Comment 21•16 years ago
|
||
I checked in these three files on the NSPR trunk first. RCS file: /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.cfg,v done Checking in pr/include/md/_symbian.cfg; /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.cfg,v <-- _symbian.cfg initial revision: 1.1 done RCS file: /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.h,v done Checking in pr/include/md/_symbian.h; /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.h,v <-- _symbian.h initial revision: 1.1 done RCS file: /cvsroot/mozilla/nsprpub/pr/src/md/unix/symbian.c,v done Checking in pr/src/md/unix/symbian.c; /cvsroot/mozilla/nsprpub/pr/src/md/unix/symbian.c,v <-- symbian.c initial revision: 1.1 done
Comment 22•16 years ago
|
||
Comment on attachment 324584 [details] [diff] [review] nspr port for Symbian OS, with testcases run I reviewed the changes in pr/include and pr/src/{io,linking}. 1. prtypes.h: MDCPUCFG should be defined by the build system. See configure.in and autoconf.mk.in: http://lxr.mozilla.org/nspr/search?string=MDCPUCFG I will create a new section for SYMBIAN for the __declspec(dllexport) stuff. Does Symbian OS have __declspec(dllimport), too? 2. prlink.c: In Unix, dlerror() returns char *: http://www.opengroup.org/onlinepubs/009695399/functions/dlerror.html We can assign a char * value to a const char * variable without casting. What does dlerror() return on Symbian OS? 3. _symbian.cfg: About the issue of whether we should undefine _WIN32 and __i386__ in this header or on the compiler command line: this depends on whether we need to do this for NSPR only or also for anything that uses NSPR. If we need to undefine _WIN32 and __i386__ for NSPR only, we should do this on the compiler command line. If we need to undefine _WIN32 and __i386__ for NSPR and anything that uses NSPR, we can do this in _symbian.cfg. This is because _symbian.cfg is included in every NSPR header file. Also, you should review the values of the macros defined in _symbian.cfg. Many of the macros are supposed to be generated by the file mozilla/nsprpub/pr/include/gencfg.c: http://lxr.mozilla.org/nspr/source/nsprpub/pr/include/gencfg.c I haven't run that program for a long time. You'd need to port it to Symbian OS first.
Assignee | ||
Comment 23•16 years ago
|
||
this updated patch removes all /mozilla/nsprpub/build/symbian directory cause we are preparing moving to configure/gmake build system. And also some minor fixes since last update.
Assignee | ||
Comment 24•16 years ago
|
||
1, there is no more #ifdef SYMBIAN #define MDCPUCFG "md/_symbian.cfg" #endif in prtypes.h. In Symbian headers, they define #define IMPORT_C __declspec(dllexport) for emulator builds, and #define IMPORT_C __declspec(dllimport) for device(GCCE,RVCT) builds. 2,In Symbian, dlerror() also returns char*, but the strict type checking compiler will return error without a explicit type cast. Please refer: http://www.forum.nokia.com/document/CDL_Extension_S60_3rd_Ed_FP2/GUID-719955DA-415B-420E-9F9B-F6DB37615EC5/html/s60_oss_porting_using_openc6.html#topic5.5 3,The situation is that we need to undef these __i386__ and _WIN32 anywhere when we are building for Symbian emulator with its compiler. So I suggest this deserves a hard-coded -U as compiler flags in Makefile. Further more, I will try port and run gencfg.c on a Symbian device soon. Probably the result will arrive in next 12 hours :)
Comment 25•16 years ago
|
||
The code const char *error = NULL; error = (const char*) dlerror(); should not require the (const char*) typecase if dlerror() returns char *. A compiler with strict type checking should allow an assignment of "T *" to "const T *" without a (const T *) typecast. Perhaps dlerror() is not declared, so it get the default int return type? Did you include <dlfcn.h>? If dlerror() is properly declared to return char *, and the compiler requires the (const char*) typecast, this is a compiler bug.
Assignee | ||
Comment 26•16 years ago
|
||
I just had a double check, and then found for this line in prlink.c, actually the type cast is not needed, with either compiler. So this was my lack of carefulness. We can remove this stupid "(const char*)" here.
Comment 27•16 years ago
|
||
Comment on attachment 327262 [details] [diff] [review] updated nspr for symbian [Jun 28th 2008] Glad to know the (const char*) typecast in prlink.c is not needed. In this new patch (Jun 28th 2008), you didn't change prtypes.h. So do we still need to use __declspec(dllexport)? Don't spend too much time on gencfg.c if it turns out to be a lot of work to port and run it on Symbian OS. You can just review the macro values in _symbian.cfg. The meaning of those macros should be obvious by their names.
Assignee | ||
Comment 28•16 years ago
|
||
After reviewing gencfg result, two lines found not the same as values in past _symbian.cfg: #define PR_ALIGN_OF_INT64 8 #define PR_ALIGN_OF_DOUBLE 8 But they remain the same value "4" on emulator builds (32bit x86 arch. on Windows OS). So I fixed _symbian.cfg as followings: #ifdef __WINS__ #define PR_ALIGN_OF_INT64 4 #define PR_ALIGN_OF_DOUBLE 4 #else #define PR_ALIGN_OF_INT64 8 #define PR_ALIGN_OF_DOUBLE 8 About the dllimport and dllexport, I made the fix in this submit too.
Comment 29•16 years ago
|
||
Harry, I checked in your updated _symbian.cfg and prtypes.h on the NSPR trunk (NSPR 4.7.2). The only change I made is that I gave SYMBIAN its own section in prtypes.h, rather than sharing the Unix section. You may be able to use __declspec(dllexport) in the PR_EXTERN, PR_IMPLEMENT, PR_EXTERN_DATA, and PR_IMPLEMENT_DATA macros. Please see the WIN32, XP_BEOS, and XP_OS2 sections in prtypes.h, and compare them with the SYMBIAN section. Checking in md/_symbian.cfg; /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.cfg,v <-- _symbian.cfg new revision: 1.3; previous revision: 1.2 done Checking in prtypes.h; /cvsroot/mozilla/nsprpub/pr/include/prtypes.h,v <-- prtypes.h new revision: 3.37; previous revision: 3.36 done
Attachment #327301 -
Attachment is obsolete: true
Comment 30•16 years ago
|
||
I don't know if I mentioned this before. I think we should consider the emulator builds as the x86 (i386) arch.
Assignee | ||
Comment 31•16 years ago
|
||
(In reply to comment #30) > I don't know if I mentioned this before. I think we should > consider the emulator builds as the x86 (i386) arch. > I guess you haven't mentioned this. However, I had mentioned that the emulator builds are really x86(i386) arch. binary executables.
Assignee | ||
Comment 32•16 years ago
|
||
(In reply to comment #29) > Created an attachment (id=330396) [details] > updated _symbian.cfg and prtypes.h [June 29th 2008] (as checked in) > > Harry, I checked in your updated _symbian.cfg and prtypes.h > on the NSPR trunk (NSPR 4.7.2). The only change I made is > that I gave SYMBIAN its own section in prtypes.h, rather than > sharing the Unix section. > > You may be able to use __declspec(dllexport) in the PR_EXTERN, > PR_IMPLEMENT, PR_EXTERN_DATA, and PR_IMPLEMENT_DATA macros. > Please see the WIN32, XP_BEOS, and XP_OS2 sections in prtypes.h, > and compare them with the SYMBIAN section. > > Checking in md/_symbian.cfg; > /cvsroot/mozilla/nsprpub/pr/include/md/_symbian.cfg,v <-- _symbian.cfg > new revision: 1.3; previous revision: 1.2 > done > Checking in prtypes.h; > /cvsroot/mozilla/nsprpub/pr/include/prtypes.h,v <-- prtypes.h > new revision: 3.37; previous revision: 3.36 > done > I think these changes will be OK. I will verify them with the new build tool chain updates together. Now I almost finish the build tool chain immigration to gnu make/autoconf, only final testing and compiler arguments line de-uglification works left. Before you move on with this nspr patch, I should tell you that there is a minor changes in nsprpub/pr/src/md/unix/symbian.c because of build tools change. And also there might be potential changes in nsprpub/pr/src/pthread/ptio.c because pt_Accept() function still can't take NULL as its second argument if timeout is set to unlimited. stuart in IRC channel #mobile talked with me about this issue today. Finally, there will be further fixes on the run_nspr_tests.cpp, the tests caller application who plays the role of "runtests.sh" in a Symbian OS phone, most refinements are inspired by NSS testing scripts.
Comment 33•16 years ago
|
||
I checked in the remaining header file changes on the NSPR trunk (NSPR 4.7.2). Checking in md/_pth.h; /cvsroot/mozilla/nsprpub/pr/include/md/_pth.h,v <-- _pth.h new revision: 3.34; previous revision: 3.33 done Checking in md/_unixos.h; /cvsroot/mozilla/nsprpub/pr/include/md/_unixos.h,v <-- _unixos.h new revision: 3.37; previous revision: 3.36 done Checking in md/prosdep.h; /cvsroot/mozilla/nsprpub/pr/include/md/prosdep.h,v <-- prosdep.h new revision: 3.18; previous revision: 3.17 done
Comment 34•16 years ago
|
||
Comment on attachment 327262 [details] [diff] [review] updated nspr for symbian [Jun 28th 2008] Harry, based on your comment 26, I will omit your change to prlink.c in this patch.
Comment 35•16 years ago
|
||
I checked in the straightforward porting changes in the pr/src directory on the NSPR trunk (NSPR 4.7.2). Checking in mozilla/nsprpub/pr/src/io/prmapopt.c; /cvsroot/mozilla/nsprpub/pr/src/io/prmapopt.c,v <-- prmapopt.c new revision: 3.19; previous revision: 3.18 done Checking in mozilla/nsprpub/pr/src/md/prosdep.c; /cvsroot/mozilla/nsprpub/pr/src/md/prosdep.c,v <-- prosdep.c new revision: 3.13; previous revision: 3.12 done Checking in mozilla/nsprpub/pr/src/md/unix/uxrng.c; /cvsroot/mozilla/nsprpub/pr/src/md/unix/uxrng.c,v <-- uxrng.c new revision: 1.20; previous revision: 1.19 done Checking in mozilla/nsprpub/pr/src/misc/prsystem.c; /cvsroot/mozilla/nsprpub/pr/src/misc/prsystem.c,v <-- prsystem.c new revision: 3.29; previous revision: 3.28 done Checking in mozilla/nsprpub/pr/src/misc/prtime.c; /cvsroot/mozilla/nsprpub/pr/src/misc/prtime.c,v <-- prtime.c new revision: 3.33; previous revision: 3.32 done Checking in mozilla/nsprpub/pr/src/pthreads/ptsynch.c; /cvsroot/mozilla/nsprpub/pr/src/pthreads/ptsynch.c,v <-- ptsynch.c new revision: 3.30; previous revision: 3.29 done
Attachment #324584 -
Attachment is obsolete: true
Attachment #324584 -
Flags: review?(wtc)
Assignee | ||
Comment 36•16 years ago
|
||
patch against current v4.7.2 HEAD, patch size reduced. prnetdb.c updated since last patch. PR_Accept() in ptio.c still needs further tunes.
Attachment #327262 -
Attachment is obsolete: true
Attachment #331916 -
Flags: review?(wtc)
Comment 37•16 years ago
|
||
Comment on attachment 331916 [details] [diff] [review] updated nspr for symbian [Jul 31st 2008] Harry, I reviewed the changes to pr/src (except prnetdb.c) in this patch. I have some questions. 1. pr/src/md/unix/unix.c Why can't we initialize _md_iovector with 'open'? What is the compiler error or warning message? 2. pr/src/md/unix/uxshm.c >+ /* In Symbian OS the system imposed minimum is 1 byte, instead of ZERO */ >+ id = shmget( key, 1, 0 ); >+#else > id = shmget( key, 0, 0 ); >+#endif I need to study this issue. A 'size' (second argument) of 0 may have a special meaning. What happens if you pass a 'size' of 0? If shmget fails, what's the errno? >+#ifdef SYMBIAN >+ genName = PR_smprintf( "%s\\NSPR-AFM-%d-%p.%d", >+#else > genName = PR_smprintf( "%s/.NSPR-AFM-%d-%p.%d", >+#endif Does this mean the directory separator on Symbian is '\\' rather than '/'? If so, we need to change the definition of PR_DIRECTORY_SEPARATOR and PR_DIRECTORY_SEPARATOR_STR in _unixos.h for Symbian. 3. pr/src/pthreads/ptio.c Does accept() disallow a NULL 'addr' argument? You may want to report this limitation to the Open C developers. It is common to pass NULL as the second argument to accept(). Does Symbian not have the MSG_PEEK macro defined for recv()? PR_NewTCPSocketPair: If Symbian doesn't have the socketpair() function, we need to emulate it with a pair of TCP sockets. See the implementation of PR_NewTCPSocketPair in prsocket.c. You can use the code for "WINNT" as a basis. What's the errno if we call fcntl(fd, F_SETFD, 0) or fcntl(fd, F_SETFD, FD_CLOEXEC)? So Symbian doesn't have getrlimit() and setrlimit(), but has the related struct rlimit rlim. Isn't that strange? 4. pr/src/pthreads/ptthread.c Why do we need to undefine _POSIX_THREAD_PRIORITY_SCHEDULING?
Assignee | ||
Comment 38•16 years ago
|
||
(In reply to comment #37) 1. The compiler error has gone by now, probably because of fixes from other places. 2. pr/src/md/unix/uxshm.c It really means the directory separator on Symbian is '\\' rather than '/'? Symbian uses FAT file system, and it has drive letter with ':' and '\\' separated folder name. For all phones "C:" = NAND FLASH, "E:" = Memory Card, "Z:" = ROM where the OS residents. So actually PR_DIRECTORY_SEPARATOR and PR_DIRECTORY_SEPARATOR_STR should be changed. I will investigate shmget() behavior tomorrow when I get the testing phone. 3. pr/src/pthreads/ptio.c When passing NULL as 'addr' to accept(), it just gives a crash, with error code indicating something shouldn't be NULL is NULL. The reason may be the in the Open C implementation, which is not open source. MSG_PEEK is defined. But it doesn't work as expected. Nokia internal tech support suggested workaround of making extra buffer to mark the receiving data which I suppose we could do it separately. Emulated socketpair() function will be added soon. fcntl() error code will be reported later. getrlimit() and setrlimit() are unimplemented. However, after a detail comparing between <sys/resource.h> from Linux and Symbian, I found the rlim related lines in this patch is NOT correct indeed. RLIM_NLIMITS is not the value I should return in PR_GetSysfdTableMax(). I will work on this issue at once, probably the fix is coming soon. 4. Because Open C doesn't implemented pthread_attr_* functions, there should be no "_POSIX_THREAD_PRIORITY_SCHEDULING" defined. However, in the <unistd.h> system include, there is the define line: #define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L So I undef it in source file. Harry's TODO List: a) Investigate behavior and error code from fcntl() and shmget(). b) Fix rlimit issue. c) Make a socketpair() function. d) Make workaround for NULL as 'addr' with accept(), before Open C implementation fix this.
Assignee | ||
Comment 39•16 years ago
|
||
(In reply to comment #37) for task a) Investigate behavior and error code from fcntl() and shmget(). fcntl() will return -1 on both callings: fcntl(fd, F_SETFD, 0) and fcntl(fd, F_SETFD, FD_CLOEXEC) both errnos are "78" according to errno.h defined in Symbian OS, its #define ENOSYS 78 /* Function not implemented */ when calling id = shmget( key, 0, 0 ); -1 is returned and errno is 22. it's defined as #define EINVAL 22 /* Invalid argument */
Comment 40•16 years ago
|
||
Harry, Thanks a lot for finding the answers to my question. The errno information will allow me to map it to an NSPR error code. Yes, we can emulate MSG_PEEK ourselves. There is such emulation code in prsocket.c. Search for _PR_FD_NEED_EMULATE_MSG_PEEK in the NSPR source tree: http://mxr.mozilla.org/nspr/ident?i=_PR_FD_NEED_EMULATE_MSG_PEEK If the application you want to port to Symbian OS isn't using PR_MSG_PEEK, you don't need to emulate MSG_PEEK now.
Assignee | ||
Comment 41•16 years ago
|
||
in this patch, b) and c) in todo list is done. Description: for PR_GetSysfdTableMax(), sysconf(_SC_OPEN_MAX) is used instead of getrlimit() because Symbian supports this. for PR_NewTCPSocketPair(), codes are copied from WINNT implementation, and some minor modification. The last two _PR_MD_INIT_FD_INHERITABLE() are removed. This function has been tested on test case "foreign" and "ioconthr". However, there are some test cases problem to solve. By now there is only the PR_Accept() takes NULL as 'addr' problem left. This will be by the end of this week hopefully.
Attachment #332550 -
Flags: review+
Comment 42•16 years ago
|
||
Harry, I reviewed your updated ptio.c patch (attachment 332550 [details] [diff] [review]). I made some changes and checked it in on the NSPR trunk (NSPR 4.7.3). Please verify that the comments I added about the problems with accept with addr==NULL and MSG_PEEK are accurate. Please also test the new implementation of PR_NewTCPSocketPair. (I copied the "default implementation" from prsocket.c, which uses NSPR functions to create and connect the TCP socket pairs.) Checking in include/md/_beos.h; /cvsroot/mozilla/nsprpub/pr/include/md/_beos.h,v <-- _beos.h new revision: 3.24; previous revision: 3.23 done Checking in include/md/_os2.h; /cvsroot/mozilla/nsprpub/pr/include/md/_os2.h,v <-- _os2.h new revision: 3.40; previous revision: 3.39 done Checking in include/md/_unixos.h; /cvsroot/mozilla/nsprpub/pr/include/md/_unixos.h,v <-- _unixos.h new revision: 3.38; previous revision: 3.37 done Checking in src/io/prmapopt.c; /cvsroot/mozilla/nsprpub/pr/src/io/prmapopt.c,v <-- prmapopt.c new revision: 3.20; previous revision: 3.19 done Checking in src/md/unix/unix_errors.c; /cvsroot/mozilla/nsprpub/pr/src/md/unix/unix_errors.c,v <-- unix_errors.c new revision: 3.28; previous revision: 3.27 done Checking in src/pthreads/ptio.c; /cvsroot/mozilla/nsprpub/pr/src/pthreads/ptio.c,v <-- ptio.c new revision: 3.110; previous revision: 3.109 done
Attachment #332550 -
Attachment is obsolete: true
Assignee | ||
Comment 43•16 years ago
|
||
Wan-Teh, I have built and tested these new checkins, the test result is just OK on a Nokia 6220 Navigator. But this device won't run some test cases even before these updates. I am fixing them now, and results or patches will be posted as soon as they get done.
Comment 44•16 years ago
|
||
Hi Harry Li: how can I down the build/symbian/ files? I have down the svn "revision 5"; and I build failed. this is the config.log //=========================================================================== This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. configure:632: checking host system type configure:653: checking target system type configure:671: checking build system type configure:1080: checking for whoami configure:1151: checking for i686-pc-mingw32 compiler configure:1157: checking for gcc configure:1203: checking whether the i686-pc-mingw32 compiler (gcc ) works configure:1212: gcc -c conftest.c 1>&5 configure:1241: checking for arm-none-symbianelf-gcc configure:1275: checking for gcc configure:1388: checking whether the C compiler (gcc ) works configure:1404: gcc -o conftest conftest.c 1>&5 configure:1430: checking whether the C compiler (gcc ) is a cross-compiler configure:1435: checking whether we are using GNU C configure:1463: checking whether gcc accepts -g configure:1688: checking for arm-none-symbianelf-ranlib configure:1723: checking for arm-none-symbianelf-ar configure:1758: checking for arm-none-symbianelf-as configure:1793: checking for arm-none-symbianelf-ld configure:1828: checking for arm-none-symbianelf-strip configure:1863: checking for arm-none-symbianelf-windres configure:1863: checking for arm-none-symbianelf-windres configure:2613: checking for gcc -pipe support configure:2662: checking for visibility(hidden) attribute configure:2739: checking for perl5 configure:5161: checking for dlopen in -ldl configure:5240: checking whether mwccsym2.exe needs -traditional configure:5288: checking for lchown configure:5288: checking for strerror configure:5396: checking for pthread_create in -lpthreads mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lpthreads Errors caused tool to abort. configure:5418: checking for pthread_create in -lpthread mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lpthread Errors caused tool to abort. configure:5440: checking for pthread_create in -lc_r mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc_r Errors caused tool to abort. configure:5462: checking for pthread_create in -lc mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc Errors caused tool to abort. configure:5594: checking whether mwccsym2.exe accepts -pthread configure:5617: checking whether mwccsym2.exe accepts -pthreads
Comment 45•16 years ago
|
||
hi harry, i built fault too ! config.log This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. configure:632: checking host system type configure:653: checking target system type configure:671: checking build system type configure:1080: checking for whoami configure:1151: checking for i686-pc-mingw32 compiler configure:1157: checking for gcc configure:1203: checking whether the i686-pc-mingw32 compiler (gcc ) works configure:1212: gcc -c conftest.c 1>&5 configure:1241: checking for arm-none-symbianelf-gcc configure:1275: checking for gcc configure:1388: checking whether the C compiler (arm-none-symbianelf-gcc ) works configure:1404: arm-none-symbianelf-gcc -o conftest conftest.c 1>&5 d:/Program Files/CSL Arm Toolchain/bin/../lib/gcc/arm-none-symbianelf/3.4.3/../../../../arm-none-symbianelf/bin/ld.exe: warning: cannot find entry symbol _start; defaulting to 00008000 configure:1430: checking whether the C compiler (arm-none-symbianelf-gcc ) is a cross-compiler configure:1435: checking whether we are using GNU C configure:1444: arm-none-symbianelf-gcc -E conftest.c configure:1463: checking whether arm-none-symbianelf-gcc accepts -g configure:1688: checking for arm-none-symbianelf-ranlib configure:1723: checking for arm-none-symbianelf-ar configure:1758: checking for arm-none-symbianelf-as configure:1793: checking for arm-none-symbianelf-ld configure:1828: checking for arm-none-symbianelf-strip configure:1863: checking for arm-none-symbianelf-windres configure:1863: checking for arm-none-symbianelf-windres configure:2613: checking for gcc -pipe support configure:2662: checking for visibility(hidden) attribute configure:2686: checking for visibility pragma support configure:2739: checking for perl5 configure:2739: checking for perl configure:5161: checking for dlopen in -ldl configure:5180: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh conftest.c -ldl 1>&5 mwccsym2.exe: No library file found matching 'libdl{.lib|.a}' or 'dl' Errors caused tool to abort. configure: failed program was: #line 5169 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen(); int main() { dlopen() ; return 0; } configure:5240: checking whether mwccsym2.exe needs -traditional ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory configure:5288: checking for lchown configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh conftest.c 1>&5 (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened conftest.c:5: the file 'assert.h' cannot be opened Errors caused tool to abort. configure: failed program was: #line 5293 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char lchown(); below. */ #include <assert.h> /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char lchown(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_lchown) || defined (__stub___lchown) choke me #else lchown(); #endif ; return 0; } configure:5288: checking for strerror configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh conftest.c 1>&5 (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened conftest.c:5: the file 'assert.h' cannot be opened Errors caused tool to abort. configure: failed program was: #line 5293 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char strerror(); below. */ #include <assert.h> /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char strerror(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_strerror) || defined (__stub___strerror) choke me #else strerror(); #endif ; return 0; } configure:5396: checking for pthread_create in -lpthreads mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lpthreads Errors caused tool to abort. configure:5418: checking for pthread_create in -lpthread mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lpthread Errors caused tool to abort. configure:5440: checking for pthread_create in -lc_r mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc_r Errors caused tool to abort. configure:5462: checking for pthread_create in -lc mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc Errors caused tool to abort. configure:5594: checking whether mwccsym2.exe accepts -pthread configure:5617: checking whether mwccsym2.exe accepts -pthreads
Comment 46•16 years ago
|
||
(In reply to comment #45) Hi redpanda: you must to install the 3.1 sdk the which include Symbian_OS_v9.1.hrh or it will use another version. eg: s60_3rd_fp2 use Symbian_OS_v9.3.hrh you can try rename Symbian_OS_v9.3.hrh to Symbian_OS_v9.1.hrh > hi harry, i built fault too ! > > config.log > > This file contains any messages produced by compilers while > running configure, to aid debugging if configure makes a mistake. > > configure:632: checking host system type > configure:653: checking target system type > configure:671: checking build system type > configure:1080: checking for whoami > configure:1151: checking for i686-pc-mingw32 compiler > configure:1157: checking for gcc > configure:1203: checking whether the i686-pc-mingw32 compiler (gcc ) works > configure:1212: gcc -c conftest.c 1>&5 > configure:1241: checking for arm-none-symbianelf-gcc > configure:1275: checking for gcc > configure:1388: checking whether the C compiler (arm-none-symbianelf-gcc ) > works > configure:1404: arm-none-symbianelf-gcc -o conftest conftest.c 1>&5 > d:/Program Files/CSL Arm > Toolchain/bin/../lib/gcc/arm-none-symbianelf/3.4.3/../../../../arm-none-symbianelf/bin/ld.exe: > warning: cannot find entry symbol _start; defaulting to 00008000 > configure:1430: checking whether the C compiler (arm-none-symbianelf-gcc ) is > a cross-compiler > configure:1435: checking whether we are using GNU C > configure:1444: arm-none-symbianelf-gcc -E conftest.c > configure:1463: checking whether arm-none-symbianelf-gcc accepts -g > configure:1688: checking for arm-none-symbianelf-ranlib > configure:1723: checking for arm-none-symbianelf-ar > configure:1758: checking for arm-none-symbianelf-as > configure:1793: checking for arm-none-symbianelf-ld > configure:1828: checking for arm-none-symbianelf-strip > configure:1863: checking for arm-none-symbianelf-windres > configure:1863: checking for arm-none-symbianelf-windres > configure:2613: checking for gcc -pipe support > configure:2662: checking for visibility(hidden) attribute > configure:2686: checking for visibility pragma support > configure:2739: checking for perl5 > configure:2739: checking for perl > configure:5161: checking for dlopen in -ldl > configure:5180: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > -include Symbian_OS_v9.1.hrh conftest.c -ldl 1>&5 > mwccsym2.exe: No library file found matching 'libdl{.lib|.a}' or 'dl' > > Errors caused tool to abort. > configure: failed program was: > #line 5169 "configure" > #include "confdefs.h" > /* Override any gcc2 internal prototype to avoid an error. */ > /* We use char because int might match the return type of a gcc2 > builtin and then its argument prototype would still apply. */ > char dlopen(); > > int main() { > dlopen() > ; return 0; } > configure:5240: checking whether mwccsym2.exe needs -traditional > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > configure:5288: checking for lchown > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > conftest.c:5: the file 'assert.h' cannot be opened > > Errors caused tool to abort. > configure: failed program was: > #line 5293 "configure" > #include "confdefs.h" > /* System header to define __stub macros and hopefully few prototypes, > which can conflict with char lchown(); below. */ > #include <assert.h> > /* Override any gcc2 internal prototype to avoid an error. */ > /* We use char because int might match the return type of a gcc2 > builtin and then its argument prototype would still apply. */ > char lchown(); > > int main() { > > /* The GNU C library defines this for functions which it implements > to always fail with ENOSYS. Some functions are actually named > something starting with __ and the normal name is an alias. */ > #if defined (__stub_lchown) || defined (__stub___lchown) > choke me > #else > lchown(); > #endif > > ; return 0; } > configure:5288: checking for strerror > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > conftest.c:5: the file 'assert.h' cannot be opened > > Errors caused tool to abort. > configure: failed program was: > #line 5293 "configure" > #include "confdefs.h" > /* System header to define __stub macros and hopefully few prototypes, > which can conflict with char strerror(); below. */ > #include <assert.h> > /* Override any gcc2 internal prototype to avoid an error. */ > /* We use char because int might match the return type of a gcc2 > builtin and then its argument prototype would still apply. */ > char strerror(); > > int main() { > > /* The GNU C library defines this for functions which it implements > to always fail with ENOSYS. Some functions are actually named > something starting with __ and the normal name is an alias. */ > #if defined (__stub_strerror) || defined (__stub___strerror) > choke me > #else > strerror(); > #endif > > ; return 0; } > configure:5396: checking for pthread_create in -lpthreads > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > -lpthreads > > Errors caused tool to abort. > configure:5418: checking for pthread_create in -lpthread > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > -lpthread > > Errors caused tool to abort. > configure:5440: checking for pthread_create in -lc_r > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > -lc_r > > Errors caused tool to abort. > configure:5462: checking for pthread_create in -lc > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc > > Errors caused tool to abort. > configure:5594: checking whether mwccsym2.exe accepts -pthread > configure:5617: checking whether mwccsym2.exe accepts -pthreads
Comment 47•16 years ago
|
||
hi terry, i use s60 3rd MR, symbian_os_v9.1.hrh is in D:\Symbian\9.1\S60_3rd_MR\Epoc32\include\variant\ (In reply to comment #46) > (In reply to comment #45) > Hi redpanda: > you must to install the 3.1 sdk the which include Symbian_OS_v9.1.hrh > > or it will use another version. > > eg: > > s60_3rd_fp2 use Symbian_OS_v9.3.hrh > > you can try rename Symbian_OS_v9.3.hrh to Symbian_OS_v9.1.hrh > > > > > > hi harry, i built fault too ! > > > > config.log > > > > This file contains any messages produced by compilers while > > running configure, to aid debugging if configure makes a mistake. > > > > configure:632: checking host system type > > configure:653: checking target system type > > configure:671: checking build system type > > configure:1080: checking for whoami > > configure:1151: checking for i686-pc-mingw32 compiler > > configure:1157: checking for gcc > > configure:1203: checking whether the i686-pc-mingw32 compiler (gcc ) works > > configure:1212: gcc -c conftest.c 1>&5 > > configure:1241: checking for arm-none-symbianelf-gcc > > configure:1275: checking for gcc > > configure:1388: checking whether the C compiler (arm-none-symbianelf-gcc ) > > works > > configure:1404: arm-none-symbianelf-gcc -o conftest conftest.c 1>&5 > > d:/Program Files/CSL Arm > > Toolchain/bin/../lib/gcc/arm-none-symbianelf/3.4.3/../../../../arm-none-symbianelf/bin/ld.exe: > > warning: cannot find entry symbol _start; defaulting to 00008000 > > configure:1430: checking whether the C compiler (arm-none-symbianelf-gcc ) is > > a cross-compiler > > configure:1435: checking whether we are using GNU C > > configure:1444: arm-none-symbianelf-gcc -E conftest.c > > configure:1463: checking whether arm-none-symbianelf-gcc accepts -g > > configure:1688: checking for arm-none-symbianelf-ranlib > > configure:1723: checking for arm-none-symbianelf-ar > > configure:1758: checking for arm-none-symbianelf-as > > configure:1793: checking for arm-none-symbianelf-ld > > configure:1828: checking for arm-none-symbianelf-strip > > configure:1863: checking for arm-none-symbianelf-windres > > configure:1863: checking for arm-none-symbianelf-windres > > configure:2613: checking for gcc -pipe support > > configure:2662: checking for visibility(hidden) attribute > > configure:2686: checking for visibility pragma support > > configure:2739: checking for perl5 > > configure:2739: checking for perl > > configure:5161: checking for dlopen in -ldl > > configure:5180: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > -include Symbian_OS_v9.1.hrh conftest.c -ldl 1>&5 > > mwccsym2.exe: No library file found matching 'libdl{.lib|.a}' or 'dl' > > > > Errors caused tool to abort. > > configure: failed program was: > > #line 5169 "configure" > > #include "confdefs.h" > > /* Override any gcc2 internal prototype to avoid an error. */ > > /* We use char because int might match the return type of a gcc2 > > builtin and then its argument prototype would still apply. */ > > char dlopen(); > > > > int main() { > > dlopen() > > ; return 0; } > > configure:5240: checking whether mwccsym2.exe needs -traditional > > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > > configure:5288: checking for lchown > > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > > conftest.c:5: the file 'assert.h' cannot be opened > > > > Errors caused tool to abort. > > configure: failed program was: > > #line 5293 "configure" > > #include "confdefs.h" > > /* System header to define __stub macros and hopefully few prototypes, > > which can conflict with char lchown(); below. */ > > #include <assert.h> > > /* Override any gcc2 internal prototype to avoid an error. */ > > /* We use char because int might match the return type of a gcc2 > > builtin and then its argument prototype would still apply. */ > > char lchown(); > > > > int main() { > > > > /* The GNU C library defines this for functions which it implements > > to always fail with ENOSYS. Some functions are actually named > > something starting with __ and the normal name is an alias. */ > > #if defined (__stub_lchown) || defined (__stub___lchown) > > choke me > > #else > > lchown(); > > #endif > > > > ; return 0; } > > configure:5288: checking for strerror > > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > > conftest.c:5: the file 'assert.h' cannot be opened > > > > Errors caused tool to abort. > > configure: failed program was: > > #line 5293 "configure" > > #include "confdefs.h" > > /* System header to define __stub macros and hopefully few prototypes, > > which can conflict with char strerror(); below. */ > > #include <assert.h> > > /* Override any gcc2 internal prototype to avoid an error. */ > > /* We use char because int might match the return type of a gcc2 > > builtin and then its argument prototype would still apply. */ > > char strerror(); > > > > int main() { > > > > /* The GNU C library defines this for functions which it implements > > to always fail with ENOSYS. Some functions are actually named > > something starting with __ and the normal name is an alias. */ > > #if defined (__stub_strerror) || defined (__stub___strerror) > > choke me > > #else > > strerror(); > > #endif > > > > ; return 0; } > > configure:5396: checking for pthread_create in -lpthreads > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > -lpthreads > > > > Errors caused tool to abort. > > configure:5418: checking for pthread_create in -lpthread > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > -lpthread > > > > Errors caused tool to abort. > > configure:5440: checking for pthread_create in -lc_r > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > -lc_r > > > > Errors caused tool to abort. > > configure:5462: checking for pthread_create in -lc > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc > > > > Errors caused tool to abort. > > configure:5594: checking whether mwccsym2.exe accepts -pthread > > configure:5617: checking whether mwccsym2.exe accepts -pthreads
Comment 48•16 years ago
|
||
Hi redpanda: you would to check the env variable SYMBIAN_SDK_PATH: this is my: =================================== /d/S60/devices/S60_3rd_FP2_SDK/ =================================== be care of the leader "/" and the low case "d" not the "D" good luck terry. (In reply to comment #47) > hi terry, > i use s60 3rd MR, symbian_os_v9.1.hrh is in > D:\Symbian\9.1\S60_3rd_MR\Epoc32\include\variant\ > (In reply to comment #46) > > (In reply to comment #45) > > Hi redpanda: > > you must to install the 3.1 sdk the which include Symbian_OS_v9.1.hrh > > > > or it will use another version. > > > > eg: > > > > s60_3rd_fp2 use Symbian_OS_v9.3.hrh > > > > you can try rename Symbian_OS_v9.3.hrh to Symbian_OS_v9.1.hrh > > > > > > > > > > > hi harry, i built fault too ! > > > > > > config.log > > > > > > This file contains any messages produced by compilers while > > > running configure, to aid debugging if configure makes a mistake. > > > > > > configure:632: checking host system type > > > configure:653: checking target system type > > > configure:671: checking build system type > > > configure:1080: checking for whoami > > > configure:1151: checking for i686-pc-mingw32 compiler > > > configure:1157: checking for gcc > > > configure:1203: checking whether the i686-pc-mingw32 compiler (gcc ) works > > > configure:1212: gcc -c conftest.c 1>&5 > > > configure:1241: checking for arm-none-symbianelf-gcc > > > configure:1275: checking for gcc > > > configure:1388: checking whether the C compiler (arm-none-symbianelf-gcc ) > > > works > > > configure:1404: arm-none-symbianelf-gcc -o conftest conftest.c 1>&5 > > > d:/Program Files/CSL Arm > > > Toolchain/bin/../lib/gcc/arm-none-symbianelf/3.4.3/../../../../arm-none-symbianelf/bin/ld.exe: > > > warning: cannot find entry symbol _start; defaulting to 00008000 > > > configure:1430: checking whether the C compiler (arm-none-symbianelf-gcc ) is > > > a cross-compiler > > > configure:1435: checking whether we are using GNU C > > > configure:1444: arm-none-symbianelf-gcc -E conftest.c > > > configure:1463: checking whether arm-none-symbianelf-gcc accepts -g > > > configure:1688: checking for arm-none-symbianelf-ranlib > > > configure:1723: checking for arm-none-symbianelf-ar > > > configure:1758: checking for arm-none-symbianelf-as > > > configure:1793: checking for arm-none-symbianelf-ld > > > configure:1828: checking for arm-none-symbianelf-strip > > > configure:1863: checking for arm-none-symbianelf-windres > > > configure:1863: checking for arm-none-symbianelf-windres > > > configure:2613: checking for gcc -pipe support > > > configure:2662: checking for visibility(hidden) attribute > > > configure:2686: checking for visibility pragma support > > > configure:2739: checking for perl5 > > > configure:2739: checking for perl > > > configure:5161: checking for dlopen in -ldl > > > configure:5180: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > > -include Symbian_OS_v9.1.hrh conftest.c -ldl 1>&5 > > > mwccsym2.exe: No library file found matching 'libdl{.lib|.a}' or 'dl' > > > > > > Errors caused tool to abort. > > > configure: failed program was: > > > #line 5169 "configure" > > > #include "confdefs.h" > > > /* Override any gcc2 internal prototype to avoid an error. */ > > > /* We use char because int might match the return type of a gcc2 > > > builtin and then its argument prototype would still apply. */ > > > char dlopen(); > > > > > > int main() { > > > dlopen() > > > ; return 0; } > > > configure:5240: checking whether mwccsym2.exe needs -traditional > > > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > > > ./conftest.c: /c/cygwin/bin/Autoconf: No such file or directory > > > configure:5288: checking for lchown > > > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > > > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > > > conftest.c:5: the file 'assert.h' cannot be opened > > > > > > Errors caused tool to abort. > > > configure: failed program was: > > > #line 5293 "configure" > > > #include "confdefs.h" > > > /* System header to define __stub macros and hopefully few prototypes, > > > which can conflict with char lchown(); below. */ > > > #include <assert.h> > > > /* Override any gcc2 internal prototype to avoid an error. */ > > > /* We use char because int might match the return type of a gcc2 > > > builtin and then its argument prototype would still apply. */ > > > char lchown(); > > > > > > int main() { > > > > > > /* The GNU C library defines this for functions which it implements > > > to always fail with ENOSYS. Some functions are actually named > > > something starting with __ and the normal name is an alias. */ > > > #if defined (__stub_lchown) || defined (__stub___lchown) > > > choke me > > > #else > > > lchown(); > > > #endif > > > > > > ; return 0; } > > > configure:5288: checking for strerror > > > configure:5316: mwccsym2.exe -o conftest -MD -nostdinc -O0 -inline off > > > -wchar_t off -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc > > > -enum int -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- > > > -I$(VPATH) -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis > > > -include Symbian_OS_v9.1.hrh conftest.c 1>&5 > > > (command-line defines):2: the file 'Symbian_OS_v9.1.hrh' cannot be opened > > > conftest.c:5: the file 'assert.h' cannot be opened > > > > > > Errors caused tool to abort. > > > configure: failed program was: > > > #line 5293 "configure" > > > #include "confdefs.h" > > > /* System header to define __stub macros and hopefully few prototypes, > > > which can conflict with char strerror(); below. */ > > > #include <assert.h> > > > /* Override any gcc2 internal prototype to avoid an error. */ > > > /* We use char because int might match the return type of a gcc2 > > > builtin and then its argument prototype would still apply. */ > > > char strerror(); > > > > > > int main() { > > > > > > /* The GNU C library defines this for functions which it implements > > > to always fail with ENOSYS. Some functions are actually named > > > something starting with __ and the normal name is an alias. */ > > > #if defined (__stub_strerror) || defined (__stub___strerror) > > > choke me > > > #else > > > strerror(); > > > #endif > > > > > > ; return 0; } > > > configure:5396: checking for pthread_create in -lpthreads > > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > > -lpthreads > > > > > > Errors caused tool to abort. > > > configure:5418: checking for pthread_create in -lpthread > > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > > -lpthread > > > > > > Errors caused tool to abort. > > > configure:5440: checking for pthread_create in -lc_r > > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh > > > -lc_r > > > > > > Errors caused tool to abort. > > > configure:5462: checking for pthread_create in -lc > > > mwccsym2.exe -o dummy dummy.c -MD -nostdinc -O0 -inline off -wchar_t off > > > -align 4 -warnings on -w nohidevirtual,nounusedexpr -msgstyle gcc -enum int > > > -str pool -exc ms -trigraphs on -nostderr -gccdep -cwd source -i- -I$(VPATH) > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/variant -I$(SYMBIAN_SDK_PATH)Epoc32/include > > > -I$(SYMBIAN_SDK_PATH)Epoc32/include/stdapis -include Symbian_OS_v9.1.hrh -lc > > > > > > Errors caused tool to abort. > > > configure:5594: checking whether mwccsym2.exe accepts -pthread > > > configure:5617: checking whether mwccsym2.exe accepts -pthreads
Comment 49•16 years ago
|
||
Guys, when replying to each other's comments, please don't quote more text than you really must. Thanks.
Comment 50•16 years ago
|
||
hi terry , My env variable SYMBIAN_SDK_PATH is /d/Symbian/9.1/S60_3rd_MR/ i checked it. It is ok. :-( (In reply to comment #48) > Hi redpanda: > you would to check the env variable SYMBIAN_SDK_PATH: > this is my: > =================================== > /d/S60/devices/S60_3rd_FP2_SDK/ > =================================== > be care of the leader "/" and the low case "d" not the "D" > > good luck >
Comment 51•16 years ago
|
||
I'm repeating myself in other Symbian related bugs but I do believe it is important to mention that Symbian has two mayor dialects: S60 (Nokia) and, often forgotten, UIQ (SonyEricsson, Motorola).
Assignee | ||
Comment 52•16 years ago
|
||
I'm very sorry for the delay of the porting works because of my busy Oct and Sept. In Aug and Sept I tried to verify patched ptio.c, and it was good. I also did some test cases run on more devices during last two months. This patch is made against the latest trunk (4.7.4 beta). It is tested on a N80 device. One tiny reminder, the unix.c has to remain patched as in this patch, or most of the test cases will fail with "panic" (unexpected error/exit) KERN-EXEC-3 (http://www.symbian.com/developer/techlib/v9.2docs/doc_source/reference/SystemPanics/KernExecPanics.html#Panics.kern-exec).
Attachment #324627 -
Attachment is obsolete: true
Attachment #331916 -
Attachment is obsolete: true
Attachment #349592 -
Flags: review+
Attachment #331916 -
Flags: review?(wtc)
Comment 53•16 years ago
|
||
Comment on attachment 349592 [details] [diff] [review] continue working on portings Welcome back. I will take a look at the new patch.
Attachment #349592 -
Flags: review+ → review?(wtc)
Assignee | ||
Comment 55•15 years ago
|
||
(In reply to comment #53) > (From update of attachment 349592 [details] [diff] [review]) > Welcome back. I will take a look at the new patch. Hi Wan-Teh, Would you please have a review on the patch that had been made in last November? Thanks for your response~
Comment 56•15 years ago
|
||
Hi everyone. I am currently working in a project where we port an OSS POSIX-based component to Symbian OS and thought I could share some comments with you. 1) I noticed that the patch contains some #ifdef __WINS__ and #ifdef __WINSCW__ diretives for the Symbian emulator. I think those macros might have slightly too generic names for a widely portable codebase such as this. I would put those parts within a block selected by #if defined(SYMBIAN) && defined(__WINS__) ... #endif I also noticed that both __WINSCW__ and __WINS__ macros are used. Using __WINS__ would suffice for detecting Symbian emulator build, see http://www.symbian.com/developer/techlib/v9.1docs/doc_source/N10356/BuildTools/emulator/macros.html#buildguide%2eemul%2emacros. 2) There are some #ifdefs for changing paths of test-related files to c:\data on SymbianOS. Maybe these could be handled more generically in the codebase by adding a new #ifdef called e.g. NSPR_TEST_TMP_FILES_PATH or similar to the Mozilla platform. 3) Some non-const static constants could be changeable with reasonable effort to more Symbian-friendly const static data, e.g. char *TEST_DIR = "c:\\data\\prsocket"; -> const char * const TEST_DIR = "c:\\data\\prsocket";
Comment 57•15 years ago
|
||
Harry, sorry about the lack of review. I hope to get back to this bug soon. From end of November to end of December, I worked on a JavaScript cross-compilation bug exposed by an NSPR upgrade. Recently I just finished the review of a big WinCE patch (which was submitted earlier than this bug). This weekened I'm reviewing the new random number generator in NSS. Nelson, or any other Mozilla developer interested in Symbian OS, please feel free to review Harry's patch.
Updated•15 years ago
|
Attachment #349592 -
Flags: review?(nelson)
Updated•15 years ago
|
Attachment #349592 -
Attachment description: continue woking on portings → continue working on portings
Attachment #349592 -
Flags: review?(nelson) → review-
Comment 58•15 years ago
|
||
Comment on attachment 349592 [details] [diff] [review] continue working on portings r- These review comments contain some questions for the submittor of this patch. Please answer those questions before, or when, submitting the next version of this patch. 1. I see that a copy of NSPR which already bears this patch is already committed in some Google source repository. For example, see http://code.google.com/p/mozilla-symbian/source/browse/trunk/nsprpub/pr/tests/sigpipe.c?spec=svn5&r=5 Submittor: are you actually the author of this patch? Or are you merely trying to take a patch that someone else has already been applied to another repository and "push it upstream"? The real question is: will you be able to fix the problems described below? 2. Is it correct that Symbian is a Unix-like OS that uses Windows-like file systems (e.g. drive letters, back slashes for directory separators)? Or is the use of Windows style file pathnames only necessary in WINS, the Symbian emulator that runs on Windows? Do Windows-style file pathnames work on native (not emulated) Symbian? 3. Are the NSPR test programs ever going to be run on native symbian systems? or are they only run on WINS (the emulator)? The answers to questions 2-3 have bearing on parts of the patch that conditionally compile the path names to use Windows-style path names in otherwise pure-unix source files, such as this patch to pr/src/md/unix/uxshm.c >- genName = PR_smprintf( "%s/.NSPR-AFM-%d-%p.%d", >+#ifdef SYMBIAN >+ genName = PR_smprintf( "%s\\NSPR-AFM-%d-%p.%d", >+#else >+ genName = PR_smprintf( "%s/.NSPR-AFM-%d-%p.%d", >+#endif Perhaps that should be #if defined(SYMBIAN) && defined(__WINS__) Also, all the new lines that read #if defined(__WINS__) should be changed to read #if defined(SYMBIAN) && defined(__WINS__) 4. Is the use of the drive letter "z" a standard thing on Symbian (as the use of drive letter "C" is on Windows)? Or is it merely a convention used by the author of this patch? This question has bearing on the patch to pr/tests/op_filok.c >-#elif XP_UNIX >+#elif defined(SYMBIAN) >+#define EXISTING_FILENAME "z:\\system\\install\\Series60v3.0.sis" >+#elif defined (XP_UNIX) 5. In two places in file pr/src/misc/prnetdb.c, this patch attempts to insert the same block of code, which is: > { >+#ifdef SYMBIAN >+ /* In Symbian OS, getprotobyname() give NULL in servent.s_aliases */ >+ if (NULL == staticBuf->p_aliases) >+ { >+ char* aliases[2]; >+ if (NULL == strcmp(staticBuf->p_name, "ip")) >+ aliases[0] = "IP"; >+ else if (NULL == strcmp(staticBuf->p_name, "tcp")) >+ aliases[0] = "TCP"; >+ else if (NULL == strcmp(staticBuf->p_name, "udp")) >+ aliases[0] = "UDP"; >+ else >+ aliases[0] = "UNKNOWN"; >+ aliases[1] = NULL; >+ staticBuf->p_aliases = aliases; >+ } >+#endif > rv = CopyProtoent(staticBuf, buffer, buflen, result); There are two problems with that code: 5a. The address of the array aliases is assigned to staticBuf->p_aliases but then the array aliases immediately goes out of scope, leaving staticBuf->p_aliases pointing to an array that is no longer in scope. The solution is to move the declaration of the array aliases two lines up, to just before the preceding if statement. 5b. strcmp returns an int, not a pointer, so the results should be compared to zero, not to NULL. NULL is declared on some systems as ((void *)0) and this patch would create warnings on those systems. The fixes to those problems need to be applied in both of the two places where that code is inserted. Perhaps that code should be put into a new static function in that file. 6. There is a comment about undeffing that merely states the obvious. It should tell us WHY it is being undef'ed, and not merely that we are doing so, which is obvious. >+#ifdef SYMBIAN >+/* There is a _POSIX_THREAD_PRIORITY_SCHEDULING in unixtd.h in Symbian OS >+ * include header files, so undef it here */ >+#undef _POSIX_THREAD_PRIORITY_SCHEDULING >+#endif 7. There are places in the code where the code already conditionally compiled certain file names, and there are places where this patch introduces new conditional compilation of file names where there was none before. The old code used this style: #if (condition) #define FILENAME "some name" #else #define FILENAME "some other name" #endif ... some_statement(FILENAME) The patch introduces a different style, which is: #if (condition) some_statement("some name") #else some_statement("some other name") #endif The old style should be used uniformly in all cases of conditional compilation of file names. 8. Removal of assertions! In several test files, the code prior to this patch has a _MY_Assert function, the point of which is to have an assertion that works in both DEBUG and non-DEBUG builds (unles the PR_ASSERT macro). The conditions that they are intended to detect are conditions that must cause failure, and not only in debug builds. This patch changes those functions, making them only work in DEBUG builds. It defeats the whole purpose of the _MY_Assert function. That's bad. If the _MY_Assert function is asserting then the cause of that should be fixed. 9. Was there an attempt to compile NSPR with a C++ compiler? This patch inserts a lot new conditionally compiled code that adds explicit casts between void* and pointers of other types. For example: >+#ifdef SYMBIAN >+ addr = (char*)PR_AttachSharedMemory( shm , 0 ); >+#else > addr = PR_AttachSharedMemory( shm , 0 ); >+#endif In all cases that I found of new casts in assignment statements, the cast is correct in all cases, and therefore should not be ifdeffed. IOW, the above patch should be: >- addr = PR_AttachSharedMemory( shm , 0 ); >+ addr = (char*)PR_AttachSharedMemory( shm , 0 ); Please make that change in all places where you added casts in ASSIGNMENTS (only). Having said that, this patch also adds casts for passing pointers to functions whose formal arguments are void *, e.g. >+#ifdef SYMBIAN >+ rv = PR_SetThreadPrivate(key[keys], (void*)"EXTENSION"); >+#else > rv = PR_SetThreadPrivate(key[keys], "EXTENSION"); >+#endif I object to that change. That cast is unnecessary in c. Indeed, the reason for the existence of the void * type is to avoid casts in that very situation, that is, to allow arguments to be passed to common functions, such as memcpy, without requiring casts for every invocation. If the compiler being used with Symbian is requiring that cast, then I submit that perhaps the wrong compiler is being used. NSPR is c, not c++. 10. The patch to file pr/tests/prpoll.c must be made conditional. >- rv = getsockname(sd, (struct sockaddr *) &saddr, &saddr_len); >+ rv = getsockname(sd, (struct sockaddr *) &saddr, (unsigned int*)&saddr_len); That change is wrong for most platforms. It must be ifdeffed. Also, it makes that line longer than 80 columns. It must be folded. 11. Extended comment line needs to be wrapped >-#if defined(XP_MAC) >+#if defined(XP_MAC) || defined(SYMBIAN) > /* >- * Mac does not scale well specially the requirement for thread stack >+ * Mac and Symbian does not scale well specially the requirement for thread stack > * space and buffer allocation space. It is easy to get into a fragmented > * memory and not be able to allocate thread stack or client/server data > * buffer. > */ The addition of some words to that line cause it to exceed 80 columns, so the block comment needs to be re-wrapped. While you're at it, please fix the other errors in that line. It should read: >+ * Mac and Symbian do not scale well, especially the requirement for ^ ^ ^ 12. Introduction of different platform-dependent semantics for NSPR functions. This is my single biggest problem with this patch. It changes the semantics of certain NSPR functions to be platform dependent. The whole point of NSPR is to eliminate those platform dependencies as much as possible. So, the changes to the calls to PR_Accept in pr/tests/sendzlf.c pr/tests/socket.c pr/tests/zerolen.c are all unacceptable. PR_Accept MUST be able to accept a NULL value for the second argument on ALL platforms. If the underlying OS accept function does not accept that, then that problem must be resolved inside of PR_Accept, not in any of the callers to PR_Accept. 13. Finally, this patch does not apply cleanly to the tip of the NSPR CVS trunk in Mozilla's repository. Please ensure that the next patch does. All the above issues must be addressed. The most serious of them are numbers 5, 8, 10, 12 and 13. Those affect code correctness the most.
Comment 59•15 years ago
|
||
Nelson, thanks a lot for reviewing this patch. Harry Li is the author of these patches. The code.google.com repository for "mozilla-symbian" that you found looks like a repository that he's using to check in his work before it is accepted by the Mozilla and NSPR teams. I also want a better comment that explains why we need to undefine _POSIX_THREAD_PRIORITY_SCHEDULING. The _POSIX_THREAD_PRIORITY_SCHEDULING macro is a "feature test" macro. It should only be defined if "the implementation supports the thread execution scheduling option": http://opengroup.org/onlinepubs/007908799/xsh/unistd.h.html So when Symbian OpenC defines this macro but we can't use the relevant functions, it means either 1) OpenC should not define this macro, or 2) NSPR is not using the thread execution scheduling functions correctly. A good comment will help someone resolve this problem in the future (or tell him why it's not necessary to resolve). (In reply to comment #58) > > >- addr = PR_AttachSharedMemory( shm , 0 ); > >+ addr = (char*)PR_AttachSharedMemory( shm , 0 ); I agree the change should be done this way, without #ifdef SYMBIAN. Harry, could you doublecheck if you're using the C compiler to compile NSPR? The above code is a difference between C and C++. The original code is legal in C, but in C++ it requires a typecast. I'm fine with adding the (char*) typecast to avoid #ifdef SYMBIAN. > >+#ifdef SYMBIAN > >+ rv = PR_SetThreadPrivate(key[keys], (void*)"EXTENSION"); > >+#else > > rv = PR_SetThreadPrivate(key[keys], "EXTENSION"); > >+#endif I also object to this change. The (void*) typecast should be unnecessary in both C and C++. Harry, even if you're using a C++ compiler to compile NSPR, the compiler should not require us to add the (void*) typecast. > 10. The patch to file pr/tests/prpoll.c must be made conditional. > > >- rv = getsockname(sd, (struct sockaddr *) &saddr, &saddr_len); > >+ rv = getsockname(sd, (struct sockaddr *) &saddr, (unsigned int*)&saddr_len); > > That change is wrong for most platforms. It must be ifdeffed. It's better to fix this by declaring the variable saddr_len with the right type. It's fine to use an ifdef there. Use the 'socklen_t' type, if it's available in Symbian OpenC. > >+ * Mac and Symbian do not scale well, especially the requirement for > ^ ^ ^ Harry, could you also change "Mac" to "Mac OS Classic" when you fix this comment? Even better, just remove XP_MAC from the ifdef and "Mac" from the comment (in which case the verb "does" should stay unchanged). Thanks. Re: PR_Accept: we already took care of the PR_Accept problem: http://mxr.mozilla.org/nspr/source/nsprpub/pr/src/pthreads/ptio.c#1668 So the test programs should be able to pass NULL as the second argument to PR_Accept.
Comment 60•15 years ago
|
||
Two more comments: 1) In file pr/tests/testfile.c the patch uses conditional compilation to insert some casts for function pointer types. I think those casts are always correct, and they appear to be needed, so I'd suggest just doing those without ifdefs. 2) Regarding "Use the 'socklen_t' type, if it's available", I would add, "... and if the prototype for getsockaddr declares that argument to be of that type".
Comment 61•15 years ago
|
||
Yes, getsockname takes socklen_t *address_len as the third argument: http://www.opengroup.org/onlinepubs/009695399/functions/getsockname.html
Comment 62•15 years ago
|
||
Not on Windows.
Comment 63•15 years ago
|
||
Sorry, my suggestion in comment 59 wasn't clear. Here is the precise suggestion to Harry: In pr/tests/prpoll.c, solve the getsockname problem by declaring the variable saddr_len with the right type. It is fine to use ifdef when you declare saddr_len: #ifdef SYMBIAN unsigned int saddr_len; #else PRIntn saddr_len; #endif But since the 'socklen_t' type is available in Symbian OpenC (as shown by your patch in bug 442706), it is better to use 'socklen_t' than 'unsigned int' for saddr_len: #ifdef HAVE_SOCKLEN_T socklen_t saddr_len; #else PRIntn saddr_len; #endif
Assignee | ||
Comment 64•15 years ago
|
||
I will post my commentary first and then patch file will be posted after testing on a Symbian phone. (In reply to comment #58) > (From update of attachment 349592 [details] [diff] [review]) > r- > These review comments contain some questions for the submittor of this patch. > Please answer those questions before, or when, submitting the > next version of this patch. > > 1. I see that a copy of NSPR which already bears this patch is already > committed in some Google source repository. For example, see > http://code.google.com/p/mozilla-symbian/source/browse/trunk/nsprpub/pr/tests/sigpipe.c?spec=svn5&r=5 > > Submittor: are you actually the author of this patch? Or are you merely > trying to take a patch that someone else has already been applied to another > repository and "push it upstream"? The real question is: will you be able > to fix the problems described below? > This is my working and I will correct all problems here :) > 2. Is it correct that Symbian is a Unix-like OS that uses Windows-like > file systems (e.g. drive letters, back slashes for directory separators)? > Or is the use of Windows style file pathnames only necessary in WINS, the > Symbian emulator that runs on Windows? Do Windows-style file pathnames > work on native (not emulated) Symbian? > Symbian is not a Unix-like OS. We use UNIX branch only because Symbian provides POSIX interface which reduces porting codes and increases clarity. But it uses windows-style file path names on both emulator(WINS) and target device(physical phone). > 3. Are the NSPR test programs ever going to be run on native symbian > systems? or are they only run on WINS (the emulator)? > The test cases are run on Symbian systems since last June, and my patches were submitted only after target device testing. > The answers to questions 2-3 have bearing on parts of the patch that > conditionally compile the path names to use Windows-style path names in > otherwise pure-unix source files, such as this patch to > pr/src/md/unix/uxshm.c > > >- genName = PR_smprintf( "%s/.NSPR-AFM-%d-%p.%d", > >+#ifdef SYMBIAN > >+ genName = PR_smprintf( "%s\\NSPR-AFM-%d-%p.%d", > >+#else > >+ genName = PR_smprintf( "%s/.NSPR-AFM-%d-%p.%d", > >+#endif > > Perhaps that should be > #if defined(SYMBIAN) && defined(__WINS__) > > Also, all the new lines that read > #if defined(__WINS__) > should be changed to read > #if defined(SYMBIAN) && defined(__WINS__) > In pr/src/md/unix/uxshm.c the "#ifdef SYMBIAN" case works for both emulator and target device. > 4. Is the use of the drive letter "z" a standard thing on Symbian (as the > use of drive letter "C" is on Windows)? Or is it merely a convention used > by the author of this patch? > > This question has bearing on the patch to pr/tests/op_filok.c > > >-#elif XP_UNIX > >+#elif defined(SYMBIAN) > >+#define EXISTING_FILENAME "z:\\system\\install\\Series60v3.0.sis" > >+#elif defined (XP_UNIX) > It is a standard. Z means ROM drive where the OS resident on a Symbian phone(C=onboard flash memory, E=memory card). I saw this test is going to verify a file's existence, so in this case we can probably only guarantee this file's existence because a Symbian phone's software system uses this file to identify its version. > 5. In two places in file pr/src/misc/prnetdb.c, this patch attempts to > insert the same block of code, which is: > > > { > >+#ifdef SYMBIAN > >+ /* In Symbian OS, getprotobyname() give NULL in servent.s_aliases */ > >+ if (NULL == staticBuf->p_aliases) > >+ { > >+ char* aliases[2]; > >+ if (NULL == strcmp(staticBuf->p_name, "ip")) > >+ aliases[0] = "IP"; > >+ else if (NULL == strcmp(staticBuf->p_name, "tcp")) > >+ aliases[0] = "TCP"; > >+ else if (NULL == strcmp(staticBuf->p_name, "udp")) > >+ aliases[0] = "UDP"; > >+ else > >+ aliases[0] = "UNKNOWN"; > >+ aliases[1] = NULL; > >+ staticBuf->p_aliases = aliases; > >+ } > >+#endif > > rv = CopyProtoent(staticBuf, buffer, buflen, result); > > There are two problems with that code: > 5a. The address of the array aliases is assigned to staticBuf->p_aliases > but then the array aliases immediately goes out of scope, leaving > staticBuf->p_aliases pointing to an array that is no longer in scope. > The solution is to move the declaration of the array aliases two lines > up, to just before the preceding if statement. > > 5b. strcmp returns an int, not a pointer, so the results should be compared > to zero, not to NULL. NULL is declared on some systems as ((void *)0) > and this patch would create warnings on those systems. > > The fixes to those problems need to be applied in both of the two places > where that code is inserted. Perhaps that code should be put into a new > static function in that file. > Fix will be submitted with patch file. > 6. There is a comment about undeffing that merely states the obvious. > It should tell us WHY it is being undef'ed, and not merely that we are > doing so, which is obvious. > >+#ifdef SYMBIAN > >+/* There is a _POSIX_THREAD_PRIORITY_SCHEDULING in unixtd.h in Symbian OS > >+ * include header files, so undef it here */ > >+#undef _POSIX_THREAD_PRIORITY_SCHEDULING > >+#endif > New comment will be submitted with patch file. > 7. There are places in the code where the code already conditionally > compiled certain file names, and there are places where this patch > introduces new conditional compilation of file names where there was none > before. The old code used this style: > > #if (condition) > #define FILENAME "some name" > #else > #define FILENAME "some other name" > #endif > ... > some_statement(FILENAME) > > The patch introduces a different style, which is: > > #if (condition) > some_statement("some name") > #else > some_statement("some other name") > #endif > > The old style should be used uniformly in all cases of conditional compilation > of file names. > Fix will be submitted with patch file. > 8. Removal of assertions! > In several test files, the code prior to this patch has a _MY_Assert > function, the point of which is to have an assertion that works in both > DEBUG and non-DEBUG builds (unles the PR_ASSERT macro). The conditions > that they are intended to detect are conditions that must cause failure, > and not only in debug builds. This patch changes those functions, making > them only work in DEBUG builds. It defeats the whole purpose of the > _MY_Assert function. That's bad. If the _MY_Assert function is asserting > then the cause of that should be fixed. > Fix will be submitted with patch file. > 9. Was there an attempt to compile NSPR with a C++ compiler? > This patch inserts a lot new conditionally compiled code that adds > explicit casts between void* and pointers of other types. For example: > > >+#ifdef SYMBIAN > >+ addr = (char*)PR_AttachSharedMemory( shm , 0 ); > >+#else > > addr = PR_AttachSharedMemory( shm , 0 ); > >+#endif > > In all cases that I found of new casts in assignment statements, the cast > is correct in all cases, and therefore should not be ifdeffed. IOW, the > above patch should be: > > >- addr = PR_AttachSharedMemory( shm , 0 ); > >+ addr = (char*)PR_AttachSharedMemory( shm , 0 ); > > Please make that change in all places where you added casts in ASSIGNMENTS > (only). Having said that, this patch also adds casts for passing pointers > to functions whose formal arguments are void *, e.g. > > >+#ifdef SYMBIAN > >+ rv = PR_SetThreadPrivate(key[keys], (void*)"EXTENSION"); > >+#else > > rv = PR_SetThreadPrivate(key[keys], "EXTENSION"); > >+#endif > > I object to that change. That cast is unnecessary in c. Indeed, the > reason for the existence of the void * type is to avoid casts in that > very situation, that is, to allow arguments to be passed to common > functions, such as memcpy, without requiring casts for every invocation. > If the compiler being used with Symbian is requiring that cast, then I > submit that perhaps the wrong compiler is being used. NSPR is c, not c++. > This problem has been solved by now though not submitted as patch. The reason is that I was porting NSPR with original Nokia IDE which gives me only c++ compiler. Now I am using the gnu make build system, all additional type casts are omitted. > 10. The patch to file pr/tests/prpoll.c must be made conditional. > > >- rv = getsockname(sd, (struct sockaddr *) &saddr, &saddr_len); > >+ rv = getsockname(sd, (struct sockaddr *) &saddr, (unsigned int*)&saddr_len); > > That change is wrong for most platforms. It must be ifdeffed. > Also, it makes that line longer than 80 columns. It must be folded. > According to this testing script http://mxr.mozilla.org/mozilla-central/source/nsprpub/pr/tests/runtests.pl , prpoll is never called. So I think this is probably a mistake that I made unnecessary change to an unwanted test case. If not, please inform me. > 11. Extended comment line needs to be wrapped > > >-#if defined(XP_MAC) > >+#if defined(XP_MAC) || defined(SYMBIAN) > > /* > >- * Mac does not scale well specially the requirement for thread stack > >+ * Mac and Symbian does not scale well specially the requirement for thread stack > > * space and buffer allocation space. It is easy to get into a fragmented > > * memory and not be able to allocate thread stack or client/server data > > * buffer. > > */ > > The addition of some words to that line cause it to exceed 80 columns, so > the block comment needs to be re-wrapped. While you're at it, please fix > the other errors in that line. It should read: > > >+ * Mac and Symbian do not scale well, especially the requirement for > ^ ^ ^ Fix will be submitted with patch file. > 12. Introduction of different platform-dependent semantics for NSPR functions. > This is my single biggest problem with this patch. It changes the semantics > of certain NSPR functions to be platform dependent. The whole point of NSPR > is to eliminate those platform dependencies as much as possible. So, the > changes to the calls to PR_Accept in > pr/tests/sendzlf.c > pr/tests/socket.c > pr/tests/zerolen.c > are all unacceptable. PR_Accept MUST be able to accept a NULL value for > the second argument on ALL platforms. If the underlying OS accept > function does not accept that, then that problem must be resolved inside > of PR_Accept, not in any of the callers to PR_Accept. > Fix will be submitted with patch file. If it needs more time, maybe I will split this into another submit or a new bug. > 13. Finally, this patch does not apply cleanly to the tip of the NSPR CVS > trunk in Mozilla's repository. Please ensure that the next patch does. > > All the above issues must be addressed. The most serious of them are > numbers 5, 8, 10, 12 and 13. Those affect code correctness the most. After all, thanks for reviewing this. If this commentary reply is OK with you, next time (probably with new patch), I will target on problem 5,6,7,8,9,11,12, of course against the latest CVS trunk. To Wan-Teh Chang: I think your comment will be solved when above problems are patched in next submit. However in my reply I am not so sure we could omit "prpoll" test. Please wait for my updated patch when all settled.
Comment 65•15 years ago
|
||
Thank you for your answers, Harry. I look forward to your next patch.
Assignee | ||
Comment 66•15 years ago
|
||
Here is the patch with all fixes according to last review except for test cases cause they are still under cleaning up. This latest patch, which is diffed against current HG trunk, solves problem 5,6,7,8,9,11,12 in comment #58. For 8th problem, I just passed the abort() call in PR_Assert() cause Symbian does not support signal related functions. Tomorrow I will submit a more cleaning patch which solves all problems under nsprpub/pr/tests and three new files as test script in Symbian phone. This patch has been tested working on a N73 symbian phone.
Attachment #349592 -
Attachment is obsolete: true
Attachment #364326 -
Flags: review?(ted.mielczarek)
Attachment #349592 -
Flags: review?(wtc)
Comment 67•15 years ago
|
||
Harry, please submit your patch as a CVS patch against the CVS tip. The way that this patch will get applied, when it is finally given a positive review, is that it will be applied to the CVS trunk, because the CVS repository is THE master upstream repository, and the hg repository is downstread from the CVS repositoiry. So changes are made to the master CVS repository, and then snapshots of the CVS repository are committed into the HG repository. Because changes get made to the CVS repository first, and are not always immediately applied to the hg repository, the two repositories get out of sync. That means that a patch against the Hg tip may not apply cleanly to the CVS trunk. As an NSPR module owner, I require patches to apply cleanly to the CVS trunk, regardless of who reviews them. So, please resubmit your patch as a patch against the CVS trunk. Thanks.
Assignee | ||
Comment 68•15 years ago
|
||
This is based on CVS trunk now, and content is the same as last one.
Attachment #364326 -
Attachment is obsolete: true
Attachment #364326 -
Flags: review?(ted.mielczarek)
Attachment #364463 -
Flags: review?(ted.mielczarek)
Attachment #364463 -
Attachment is patch: true
Attachment #364463 -
Attachment mime type: application/octet-stream → text/plain
Assignee | ||
Comment 69•15 years ago
|
||
this test cases caller program is written as a standard symbian console application which has an entry point on a Symbian/S60 phone's UI. it is made with the purpose of providing a generic test cases calling method. a test cases calling script file could be defined like this: 0 nspr_tests_gethost.exe -d -v 0 nspr_tests_accept.exe -d -v 0 nspr_tests_acceptread.exe 0 nspr_tests_acceptreademu.exe Format:expected return value<SPACE>executable name<SPACE>optional arguments
Attachment #364648 -
Flags: review?(ted.mielczarek)
Assignee | ||
Comment 70•15 years ago
|
||
Test cases source patch against CVS HEAD. All tested on Nokia N73 (Symbian/S60) phone. A pr/src/md/unix/unix.c patching line included here cause attachment 364463 [details] [diff] [review] missed this. see test cases result at http://spreadsheets.google.com/ccc?key=puHMGxziDYnMi1x6iShmfQw
Attachment #364649 -
Flags: review?(ted.mielczarek)
Attachment #364463 -
Flags: review?(ted.mielczarek) → review?(nelson)
Assignee | ||
Comment 71•15 years ago
|
||
Comment on attachment 364463 [details] [diff] [review] updated against CVS HEAD Hi Nelson, would you please have this patch reviewed? Thanks very much.
Attachment #364648 -
Flags: review?(ted.mielczarek) → review?(nelson)
Attachment #364649 -
Flags: review?(ted.mielczarek) → review?(nelson)
Comment 72•15 years ago
|
||
Comment on attachment 364463 [details] [diff] [review] updated against CVS HEAD Harry, Is this patch complete? Like the previous version of this patch that I reviewed, this patch tries to modify 5 files in mozilla/nsprpub/pr/src, but they're not the same 5 files. Old patch New patch -------------------- ----------------- md/unix/unix.c io/prlog.c <not same> md/unix/uxproces.c md/unix/uxproces.c md/unix/uxshm.c md/unix/uxshm.c misc/prnetdb.c misc/prnetdb.c pthreads/ptthread.c pthreads/ptthread.c Did you intend to omit the patch to unix.c ?
Assignee | ||
Comment 73•15 years ago
|
||
(In reply to comment #72) > (From update of attachment 364463 [details] [diff] [review]) > Harry, Is this patch complete? > Like the previous version of this patch that I reviewed, this patch tries to > modify 5 files in mozilla/nsprpub/pr/src, but they're not the same 5 files. > > Old patch New patch > -------------------- ----------------- > md/unix/unix.c io/prlog.c <not same> > md/unix/uxproces.c md/unix/uxproces.c > md/unix/uxshm.c md/unix/uxshm.c > misc/prnetdb.c misc/prnetdb.c > pthreads/ptthread.c pthreads/ptthread.c > > Did you intend to omit the patch to unix.c ? The patch for unix.c is missing in attachment 364463 [details] [diff] [review], and it was added in attachment 364649 [details] [diff] [review] as you could see in comment #70 . Also, the io/prlog.c is a newly added one.
Comment 74•15 years ago
|
||
Comment on attachment 364463 [details] [diff] [review] updated against CVS HEAD I am going to review this patch in pieces. Please do not submit a new version of the patch until I have reviewed all the pieces. r- for the patch to io/prlog.c It changes the functions PR_Abort and PR_Assert so that they are no-ops, and return without interrupting the flow of program execution. The purpose of these functions is to cause the program to fail, utterly. Crash, stop, write core, invoke the debugger, display an ugly dialog, or whatever is appropriate for your system, but not to simply have no effect. Changing these functions to have no effect will not be acceptable.
Comment 75•15 years ago
|
||
Comment on attachment 364463 [details] [diff] [review] updated against CVS HEAD r- for patch to file md/unix/uxproces.c - the new #endif being put into function _MD_KillUnixProcess should come at the end of the function. Otherwise, all the code in that function after that endif is dead code. r+ for the patch to md/unix/uxshm.c r+ for the patch to misc/prnetdb.c r- for the patch to pthreads/ptthread.c - In function init_pthread_gc_support(void), the declaration of PRIntn rv; should also be inside of #ifndef SYMBIAN. Otherwise, it will be an unused variable on that platform. - The patch to pt_SuspendSet will cause an assertion failure because rv is not initialized. This completes my review of this patch (Attachment 364463 [details] [diff])
Attachment #364463 -
Flags: review?(nelson) → review-
Comment 76•15 years ago
|
||
Comment on attachment 364648 [details] [diff] [review] nspr symbian test cases caller source files Harry, I gather that these last two patches, attachment 364648 [details] [diff] [review] and attachment 364649 [details] [diff] [review], are to be treated as one patch. Yes? Isn't there a change required to pr/tests/Makefile.in to add the new files to the list of CSRCS ? I don't see such a change in either of these patches. But I will continue to review these patches. Please do not submit any new patch (for these files) until I have completed the reviews of these attachments.
Updated•15 years ago
|
Attachment #364648 -
Flags: review?(nelson) → review?
Comment 77•15 years ago
|
||
Comment on attachment 364648 [details] [diff] [review] nspr symbian test cases caller source files I lack the knowledge of the Symbian programming environment to properly review the code in these new files. However, since they presumably affect only one platform, I am willing to approve and commit them once a) any Makefile.in issues are resolved, and b) if you get any other Symbian programmer whom you regard as a Symbian peer to add a comment giving a positive review tot them, and c) the following issue is resolved: Since these are brand new files, and (apparently) do not take/include any old code previously in NSPR, the license boilerplate for the file symbian_tests_uid.mk should not give copyright ownership to Netscape and should not claim that the copyright extends from 1998-2000. Please add a line listing yourself as a contributor in the contributor section of each affected file.
Comment 78•15 years ago
|
||
Comment on attachment 364648 [details] [diff] [review] nspr symbian test cases caller source files Oh, also, regarding this patch, If/when you create a new version of this patch, please make it a CVS diff against the CVS trunk of NSPR. Thanks.
Comment 79•15 years ago
|
||
Attachment 364694 [details] does not apply cleanly. In fact, it puts the patch
program on my box into an infinite loop. THe problem is that it was
created to look as if all the files being patched are in the same directory,
but they are not. One is in a different directory.
This patch is the same as the previous one except for all the Index: lines
which I have corrected. This patch applies cleanly to the CVS tip.
I will review it.
Attachment #364649 -
Attachment is obsolete: true
Attachment #367962 -
Flags: review?(nelson)
Attachment #364649 -
Flags: review?(nelson)
Comment 80•15 years ago
|
||
Comment on attachment 367962 [details] [diff] [review] nspr symbian test cases source patch (clean CVS patch) (checked in) Harry, You really cleaned up this patch a lot! Thanks! There's just one small problem with this version, a single line that I believe is wrong in this patch. It's in file >Index: pr/tests/stack.c > int main(int argc, char **argv) > { >+#if defined(SYMBIAN) && !defined(__WINS__) > PRInt32 rv, cnt, sum; > DataRecord *Item; That change will turn function main into a no-op on all platforms except Symbian non-WINS builds. I think what you wanted was #if !(defined(SYMBIAN) && defined(__WINS__)) or perhaps #if !defined(SYMBIAN) || !defined(__WINS__) Rather than have you submit another patch for that one line change, if you agree to it, I will just make that one line change, give it r+ and commit this patch. Is that OK with you?
Assignee | ||
Comment 81•15 years ago
|
||
(In reply to comment #80) > (From update of attachment 367962 [details] [diff] [review]) > Harry, You really cleaned up this patch a lot! Thanks! > There's just one small problem with this version, a single > line that I believe is wrong in this patch. It's in file > >Index: pr/tests/stack.c > > > int main(int argc, char **argv) > > { > >+#if defined(SYMBIAN) && !defined(__WINS__) > > PRInt32 rv, cnt, sum; > > DataRecord *Item; > > That change will turn function main into a no-op on all > platforms except Symbian non-WINS builds. > > I think what you wanted was > > #if !(defined(SYMBIAN) && defined(__WINS__)) > > or perhaps > > #if !defined(SYMBIAN) || !defined(__WINS__) > > Rather than have you submit another patch for that one line > change, if you agree to it, I will just make that one line > change, give it r+ and commit this patch. > > Is that OK with you? I agree with this. Thanks very much for your clean up on this patch. I believe that line in stack.c is incorrect too. Changing it to #if !(defined(SYMBIAN) && defined(__WINS__)) will be OK, though not tested at this moment. About other comments, I will modify sources to satisfy those functionality requirements.
Updated•15 years ago
|
Attachment #367962 -
Flags: review?(nelson) → review+
Comment 82•15 years ago
|
||
Comment on attachment 367962 [details] [diff] [review] nspr symbian test cases source patch (clean CVS patch) (checked in) OK, so r+ for this patch with the one-line change I proposed above. It appears to me that this patch does not depend on either of the other patches in this bug. That is, it appears to me that it can be checked in now without breaking any platform except (possibly) Symbian. Harry, do you agree with that assessment? Is there any reason for me NOT to commit this patch now?
Assignee | ||
Comment 83•15 years ago
|
||
(In reply to comment #82) > (From update of attachment 367962 [details] [diff] [review]) > OK, so r+ for this patch with the one-line change I proposed above. > > It appears to me that this patch does not depend on either of the other patches > in this bug. That is, it appears to me that it can be checked in now without > breaking any platform except (possibly) Symbian. > Harry, do you agree with that assessment? > Is there any reason for me NOT to commit this patch now? I think if these patches to pr/tests won't bother other platforms, we have no reason to wait :)
Comment 84•15 years ago
|
||
Comment on attachment 367962 [details] [diff] [review] nspr symbian test cases source patch (clean CVS patch) (checked in) accept.c; new revision: 3.14; previous revision: 3.13 acceptread.c; new revision: 1.10; previous revision: 1.9 acceptreademu.c; new revision: 3.7; previous revision: 3.6 bigfile.c; new revision: 3.11; previous revision: 3.10 foreign.c; new revision: 3.16; previous revision: 3.15 nameshm1.c; new revision: 3.7; previous revision: 3.6 nonblock.c; new revision: 3.11; previous revision: 3.10 op_filok.c; new revision: 3.13; previous revision: 3.12 pipeself.c; new revision: 3.11; previous revision: 3.10 prpollml.c; new revision: 3.10; previous revision: 3.9 sel_spd.c; new revision: 3.17; previous revision: 3.16 selintr.c; new revision: 3.8; previous revision: 3.7 semaerr.c; new revision: 3.8; previous revision: 3.7 semaerr1.c; new revision: 3.8; previous revision: 3.7 semaping.c; new revision: 3.10; previous revision: 3.9 semapong.c; new revision: 3.10; previous revision: 3.9 server_test.c; new revision: 3.13; previous revision: 3.12 servr_kk.c; new revision: 3.15; previous revision: 3.14 servr_ku.c; new revision: 3.14; previous revision: 3.13 servr_uk.c; new revision: 3.14; previous revision: 3.13 servr_uu.c; new revision: 3.14; previous revision: 3.13 sigpipe.c; new revision: 3.12; previous revision: 3.11 socket.c; new revision: 3.21; previous revision: 3.20 sockopt.c; new revision: 3.15; previous revision: 3.14 stack.c; new revision: 3.9; previous revision: 3.8 testfile.c; new revision: 3.20; previous revision: 3.19 zerolen.c; new revision: 3.8; previous revision: 3.7
Attachment #367962 -
Attachment description: nspr symbian test cases source patch (clean CVS patch) → nspr symbian test cases source patch (clean CVS patch) (checked in)
Comment 85•15 years ago
|
||
Comment on attachment 367962 [details] [diff] [review] nspr symbian test cases source patch (clean CVS patch) (checked in) Harry, I did not commit the change to pr/src/md/unix/unix.c with this patch, since it is not a change to pr/tests. Please include the patch for that file in your next revision of your patch for the rest of NSS. Thanks.
Comment 86•15 years ago
|
||
Comment on attachment 367962 [details] [diff] [review] nspr symbian test cases source patch (clean CVS patch) (checked in) If the change to unix.c is necessary for Symbian OS, we should try to make that change without #ifdef SYMBIAN because it shows the = { open } initializer in the original code is both non-portable and unnecessary.
Assignee | ||
Comment 87•15 years ago
|
||
Modified sources with guidance in comment #75 Test cases caller patches will be submitted later in another patch.
Attachment #364463 -
Attachment is obsolete: true
Attachment #368671 -
Flags: review?(nelson)
Comment 88•15 years ago
|
||
Comment on attachment 368671 [details] [diff] [review] nspr-symbian sources patch (Checked in) Harry, This version of the patch to unix.c does not include the line #undef _POSIX_THREAD_PRIORITY_SCHEDULING Is that omission intentional? Is it no longer necessary?
Assignee | ||
Comment 89•15 years ago
|
||
(In reply to comment #88) > (From update of attachment 368671 [details] [diff] [review]) > Harry, > This version of the patch to unix.c does not include the line > #undef _POSIX_THREAD_PRIORITY_SCHEDULING > > Is that omission intentional? > Is it no longer necessary? this line should be in "pthreads/ptthread.c", and it has been checked into the tree already. (http://mxr.mozilla.org/mozilla/source/nsprpub/pr/src/pthreads/ptthread.c)
Comment 90•15 years ago
|
||
Comment on attachment 368671 [details] [diff] [review] nspr-symbian sources patch (Checked in) md/unix/unix.c; new revision: 3.54; previous revision: 3.53 md/unix/uxproces.c; new revision: 3.23; previous revision: 3.22 md/unix/uxshm.c; new revision: 3.13; previous revision: 3.12 misc/prnetdb.c; new revision: 3.58; previous revision: 3.57 pthreads/ptthread.c; new revision: 3.82; previous revision: 3.81
Attachment #368671 -
Attachment description: nspr-symbian sources patch → nspr-symbian sources patch (Checked in)
Attachment #368671 -
Flags: review?(nelson) → review+
Comment 91•15 years ago
|
||
Comment on attachment 364648 [details] [diff] [review] nspr symbian test cases caller source files This patch contains 3 new files, and reviewing it seems to me to require more knowledge of Symbian than of NSPR. Brad Lassey has experience with both, and has offered to review this patch. Thanks Brad. I won't add you to the CC list, but of course, free free to add yourself.
Attachment #364648 -
Flags: review? → review?(bugmail)
Comment 92•15 years ago
|
||
Comment on attachment 364648 [details] [diff] [review] nspr symbian test cases caller source files Brad Lassey: Ping ?
Comment 93•15 years ago
|
||
Nelson, Christian told me that this wasn't a priority for the Symbian effort, so I've back burnered the review (its a big patch). I do hope to get through it soon-ish though.
Comment 94•15 years ago
|
||
A quick meta comment though.... I think it would be better to have the test harness written in python than native Symbian. That way it would be useful to more platforms that just Symbian.
Comment 95•15 years ago
|
||
please be aware that comment 86 broke NSPR_LOG_MODULES on all unix platforms.
Comment 96•15 years ago
|
||
timeless, thanks a lot for tracking down the crash. Harry, could you Symbian's compiler error messages for mozilla/nsprpub/pr/src/md/unix/unix.c if we don't have the ifdef SYMBIAN change? http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/nsprpub/pr/src/md/unix/unix.c&rev=3.56&mark=2652-2654,2656#2650 We now know why _md_iovector has to be initialized to { open }, so we need to make that work on Symbian OS.
Assignee | ||
Comment 97•15 years ago
|
||
(In reply to comment #96) > timeless, thanks a lot for tracking down the crash. > > Harry, could you Symbian's compiler error messages for > mozilla/nsprpub/pr/src/md/unix/unix.c if we don't have > the ifdef SYMBIAN change? > http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/nsprpub/pr/src/md/unix/unix.c&rev=3.56&mark=2652-2654,2656#2650 > > We now know why _md_iovector has to be initialized to > { open }, so we need to make that work on Symbian OS. The compiler will give a successful build on unix.c if we use "struct _MD_IOVector _md_iovector = { open };". But as stated in comment #52, some of result test cases will give "KERN-EXEC 3 Panic" which is explained as null pointer error. If needed, I will build all test cases later and see if the result remains same as last winter.
Comment 98•15 years ago
|
||
I see. If there is no compilation error, this is harder to deal with. You can try editing mozilla/nsprpub/pr/include/md/_unixos.h and change the _MD_Open64 typedef to match the prototype of 'open' exactly on Symbian OS: http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/nsprpub/pr/include/md/_unixos.h&rev=3.40&mark=618#618 The current definition matches the prototype specified in Single Unix Specification: http://www.opengroup.org/onlinepubs/000095399/functions/open.html But Symbian's declaration of 'open' may be slightly different or may have a calling convention specifier.
Comment 99•15 years ago
|
||
Harry, is it possible to have the test harness written in python (or use the existing perl script)?
Assignee | ||
Comment 100•15 years ago
|
||
(In reply to comment #99) > Harry, is it possible to have the test harness written in python (or use the > existing perl script)? I'm sorry for such a long silence cause. Actually writing a python script doing the test cases invoking is possible. However, this needs another runtime environment. I don't know if this brings inconvenience or not. You could find helpful information here http://wiki.opensource.nokia.com/projects/PyS60 . If a script is needed, maybe I could start it later next week.
Comment 101•15 years ago
|
||
(In reply to comment #100) as I said in comment #94, I think a script that could be used cross platform would be preferable. But, I suppose that is more a question for the nspr owners. You might want to try using the existing perl script using the s60 perl run time http://opensource.nokia.com/projects/symbian-perl/index.html
Assignee | ||
Comment 102•15 years ago
|
||
At this moment, I think this bug has almost reach its life-cycle. Only the test scripts is left. I think it's better to open that problem in a new bug to reduce the redundant information discussed in this bug. If everybody is OK with this, I will mark as resolved later today.
Comment 103•15 years ago
|
||
Harry, if you want to open a new bug for the two proposed new test files, and mark this bug resolved, that's fine with me.
Assignee | ||
Comment 104•15 years ago
|
||
bug 501172 will address the rest of this bug.
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Updated•15 years ago
|
Attachment #364648 -
Flags: review?(bugmail) → review-
You need to log in
before you can comment on or make changes to this bug.
Description
•