and thanks for your help !
I finally found the schmurtz. It was not a misunderstanding of the sdcc
principles : the USB programmer on the host side was buggy and
replaced each 0xff by 0x00 when flashing the device !
MOVFF FSR2L,POSTDEC1 (opcode cfd9 ffe5 became cfd9 00e5)
and other MOVFF on SFR were especially impacted. That's why I had some
stack corruption : the C prologues and epilogues were damaged on the
device application side...
Now everything seems ok. USB functions and stack are shared between
bootloader and application, and the control flow goes from the
bootloader to the application (and vice versa) without any problem.
I will commit this first running version in the next few days (just the
time to get the code and comments reasonably clean) : keep an eye on
http://gforge.enseeiht.fr/projects/vasco/ if you are interested.