Package: cln
Severity: important
Tags: patch

Hi,

I checked the compile failure and it seems to be an assembler problem,
but the constructor/desctructor hack is not completely blameless.
It seems the assembler doesn't know how to generate the GOT entry for
the duplicated jump destination.
Luckily the problem is easily avoidable by using a pc relative jump as
done in the attached patch.

bye, Roman

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: m68k
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.4.30
Locale: LANG=de_DE.UTF-8, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
diff -ur cln-1.1.13.old/include/cln/modules.h cln-1.1.13/include/cln/modules.h
--- cln-1.1.13.old/include/cln/modules.h        2006-05-07 22:51:58.000000000 
+0200
+++ cln-1.1.13/include/cln/modules.h    2006-09-16 14:56:05.000000000 +0200
@@ -136,7 +136,7 @@
     #define CL_JUMP_TO(addr)  ASM_VOLATILE("jmp " ASM_UNDERSCORE_PREFIX #addr)
   #endif
   #if defined(__m68k__)
-    #define CL_JUMP_TO(addr)  ASM_VOLATILE("jmp %0@" : : "a" ((void*)(addr)))
+    #define CL_JUMP_TO(addr)  ASM_VOLATILE("jmp (" ASM_UNDERSCORE_PREFIX #addr 
",%pc)")
   #endif
   #if defined(__mips__) || defined(__mipsel__)
     //#define CL_JUMP_TO(addr)  ASM_VOLATILE("%*j %0" : : "d" ((void*)(addr)))

Reply via email to