All of lore.kernel.org
 help / color / mirror / Atom feed
* Cisco VPN back to work after 2.6.5-bk1 breakage - needs kbuild syntax
@ 2004-04-22 21:25 Alessandro Suardi
  0 siblings, 0 replies; only message in thread
From: Alessandro Suardi @ 2004-04-22 21:25 UTC (permalink / raw)
  To: linux-kernel; +Cc: Eugene Teo

Seeing not much noise about the thing I decided to try fixing
  it myself... turns out that 2.6.5-bk1 introduces some new rules
  for out-of-tree kernel builds, and that causes the Cisco VPN
  kernel module to be missing a section in its headers.

Specifically, this is the 2.6.5-bk1 and later top of the output
  from objdump -x cisco_ipsec built with driver_build.sh:

cisco_ipsec
architecture: i386, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
   0 .text         0001a3d9  00000000  00000000  00000040  2**4
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
   1 .init.text    00000078  00000000  00000000  0001a41c  2**2
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
   2 .rodata       00001e3c  00000000  00000000  0001a4a0  2**5
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
   3 .rodata.str1.32 0000034a  00000000  00000000  0001c2e0  2**5
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   4 .rodata.str1.1 00000133  00000000  00000000  0001c62a  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   5 .modinfo      00000014  00000000  00000000  0001c75d  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   6 .data         0002d950  00000000  00000000  0001c780  2**5
                   CONTENTS, ALLOC, LOAD, RELOC, DATA
   7 .bss          0000ec2c  00000000  00000000  0004a0e0  2**5
                   ALLOC
   8 .comment      000007c2  00000000  00000000  0004a0e0  2**0
                   CONTENTS, READONLY


When I use kbuild to build it, the same command yields on top

cisco_ipsec.ko:     file format elf32-i386
cisco_ipsec.ko
architecture: i386, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
   0 .text         0001a6ac  00000000  00000000  00000040  2**4
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
   1 .init.text    00000073  00000000  00000000  0001a6ec  2**0
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
   2 .rodata       00001dfc  00000000  00000000  0001a760  2**5
                   CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
   3 .rodata.str1.4 00000216  00000000  00000000  0001c55c  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   4 .rodata.str1.1 0000014a  00000000  00000000  0001c772  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   5 .modinfo      0000005b  00000000  00000000  0001c8c0  2**5
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   6 __versions    00000740  00000000  00000000  0001c920  2**5
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
   7 .data         0002d950  00000000  00000000  0001d060  2**5
                   CONTENTS, ALLOC, LOAD, RELOC, DATA
   8 .gnu.linkonce.this_module 00000200  00000000  00000000  0004aa00  2**7
                   CONTENTS, ALLOC, LOAD, RELOC, DATA, LINK_ONCE_DISCARD
   9 .bss          0000ec4c  00000000  00000000  0004ac00  2**5
                   ALLOC
  10 .comment      00000750  00000000  00000000  0004ac00  2**0
                   CONTENTS, READONLY
  11 .note.GNU-stack 00000000  00000000  00000000  0004b350  2**0
                   CONTENTS, READONLY, CODE


There may be extra sections in this latter since it's built
  with GCC 3.4.0 instead of RedHat 9's 3.2.2, but I think the
  .gnu.linkonce.this_module section is the one actually making
  the difference.

Net result, I can now use Cisco VPN even under 2.6.6-rc2 :)

What I did: added a Makefile in the vpnclient/ directory and
  another in its parent directory. To build the VPN client I
  now go to the parent directory and type 'make'.

Parent Makefile:

-----------------------
CC=/usr/local/bin/gcc
LD=ld

ifndef KERNELRELEASE
LINUX ?= /usr/src/linux
PWD := $(shell pwd)

all:
	$(MAKE) CC=$(CC) -C $(LINUX) SUBDIRS=$(PWD) modules

clean:
	cd vpnclient && rm -f *.o *.ko *~ core .depend *.mod.c *.cmd

else
	obj-m += vpnclient/
endif
-----------------------

vpnclient dir Makefile:

-----------------------
INCLUDES += -I. -I${LINUX}/include -I${LINUX}/include/asm-i386/mach-default
CFLAGS += -O2 -DCNI_LINUX_INTERFACE -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DHAVE_CONFIG_H -fno-common -DKBUILD_BASENAME=cisco_ipsec -DKBUILD_MODNAME=cisco_ipsec

cisco_ipsec-objs := frag.o linuxcniapi.o IPSecDrvOS_linux.o interceptor.o libdriver.so

obj-m += cisco_ipsec.o
------------------------


It's probably not elegant, since I didn't have time to dive in
  the kbuild system details - but it Works For Me (TM). Clearly
  if someone has a cleaner solution I'll take that over mine any
  time ;)

--alessandro

  "Once you've seen the light, you suddenly
    realize it might end up all right
    it might end up all right now"
       (Husker Du, "These Important Years")


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-04-22 21:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-22 21:25 Cisco VPN back to work after 2.6.5-bk1 breakage - needs kbuild syntax Alessandro Suardi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.