rohc team mailing list archive
-
rohc team
-
Mailing list archive
-
Message #01826
Re: 32-bit Compatibility?
Hello,
Thanks for the response!
>> I have been integrating the RoHC library into a project and it appears
>> to be working in most cases. However, in order to get it to compile,
>> we've had to patch several files to replace 64-bit variables with
>> 32-bit variables. If I do not make this patch, the following routines
>> come up as "undefined":
>> __aeabi_ul2d
>> __aeabi_d2ulz
>> __aeabi_dmul
>> __aeabi_ddiv
>> __aeabi_uldivmod
> I'm surprised because the 1.7.0 release was tested on an ARM platform.
> Maybe due to differences between the 2 ARM cores, or maybe the build chain.
It very well may be an issue with the toolchain. I am building RoHC into a
Linux Kernel Module and calling it from another LKM. Toolchain does not appear to
Support 64-bit division in the kernel so I get the above "undefined" errors.
For version 1.7.0 I applied a patch to replace all uint64_t with long and time_t
data types. The TCP profile actually worked fairly well. I was able to get
SCP, FTP, and serial-over-TCP running, albeit in light traffic. This worked
in the short term for some preliminary testing.
I have since switched to using the master branch for the long term.
When I build it, only __aeabi_uldivmod appears to be undefined.
> What patch? I see no attachment. Maybe the mailing list drops it if it
> is too large.
Apologies for the missing file! :-)
I have attached the patch I applied to the master branch. Just like the 1.7.0 patch,
it replaces all uint64_t variables with type long, to prevent undefined routines.
This builds (with several warnings), but unfortunately crashes during
rohc_decompress3() when a TCP session is opened. ICMP traffic passes without
issue.
Are the timer structures in the library required to be uint64_t?
Is it possible my patch is causing the crash? I've turned tracing on but kernel
panics usually prevent me from figuring out the exact point of the crash.
> The problems with TCP (and by the way HTTP) are well-known. The TCP
> profile for the 1.7.x releases is not mature. If you want to test the
> TCP profile, prefer using the master branch on github (I've yet to
> push a lot of new fixes) :
> https://github.com/didier-barvaux/rohc
I also get the following warnings when building from master:
src/decomp/d_tcp.c:880:1: warning: the frame size of 16376 bytes is larger than 1024 bytes [-Wframe-larger-than=]
src/decomp/rohc_decomp_rfc3095.c:1671:1: warning: the frame size of 1096 bytes is larger than 1024 bytes [-Wframe-larger-than=]
My apologies for the long-winded e-mail. :-)
Regards,
-Alex
===========================================================
Alexandros Charissis email: alex.charissis@xxxxxx
GE Digital Energy GE MDS, L.L.C
175 Science Parkway Phone - (585) 242-8402
Rochester, New York 14620, USA Fax - (585) 241-5590
===========================================================
Attachment:
rohc-aeabi-patch-master.patch
Description: rohc-aeabi-patch-master.patch
Follow ups
References