← Back to team overview

rohc team mailing list archive

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