Skip to contentSkip to conversation

linker error: section __modver vma 0x6028c000 overlaps previous

PATCH michi1 at michaelblizek.twilightparadox.com 2 participants 7 messages May 9, 2012 – May 11, 2012 Networking

lore
Share & tools
lore
#0 lore raw

Hi!

I am facing a weird problem:

$ ARCH=um make linux
make[1]: `arch/um/sys-x86_64/user-offsets.s' is up to date.
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  QUOTE   arch/um/kernel/config.tmp
  QUOTE   arch/um/kernel/config.c
  CC      arch/um/kernel/config.o
  LD      arch/um/kernel/built-in.o
  VDSOSYM arch/um/sys-x86_64/vdso/vdso-syms.lds
  LD      arch/um/sys-x86_64/vdso/built-in.o
  LD      arch/um/sys-x86_64/built-in.o
  CHK     kernel/config_data.h
  LD      vmlinux.o
  MODPOST vmlinux.o
  GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
  KSYM    .tmp_kallsyms1.S
  AS      .tmp_kallsyms1.o
  LD      .tmp_vmlinux2
/usr/bin/ld: .tmp_vmlinux2: section __modver vma 0x6028c000 overlaps previous sections
  KSYM    .tmp_kallsyms2.S
  AS      .tmp_kallsyms2.o
  LD      vmlinux
/usr/bin/ld: vmlinux: section __modver vma 0x6028c000 overlaps previous sections
  SYSMAP  System.map
  SYSMAP  .tmp_System.map
  LINK linux

This is triggered by changing files in my network protocol code for no apparent reason. My code is at available at http://repo.or.cz/w/cor.git?a=tree

This change triggers it:

net/cor/credits.c +30 -4
index e0fb39a..776d197 100644
@@ -556,7 +556,14 @@ void connreset_credits(struct conn *cn)
 {
 	unsigned long iflags;
 
-	__u32 unlockhints = credits_lock_conn(cn);
+	if (cn->is_client) {
+		spin_lock_bh(&(cn->rcv_lock));
+		spin_lock_bh(&(cn->reversedir->rcv_lock));
+	} else {
+		spin_lock_bh(&(cn->reversedir->rcv_lock));
+		spin_lock_bh(&(cn->rcv_lock));
+	}
+
 	if (cn->in_credit_list) {
 		spin_lock_irqsave(&credits_list_lock, iflags);
 		list_del(&(cn->credit_list));
@@ -582,13 +589,26 @@ void connreset_credits(struct conn *cn)
 				cn->crate_out, 0);
 		spin_unlock_irqrestore(&(nb->credits_lock), iflags);
 	}
-	credits_unlock_conn(cn, unlockhints);
+
+	if (cn->is_client) {
+		spin_unlock_bh(&(cn->rcv_lock));
+		spin_unlock_bh(&(cn->reversedir->rcv_lock));
+	} else {
+		spin_unlock_bh(&(cn->reversedir->rcv_lock));
+		spin_unlock_bh(&(cn->rcv_lock));
+	}
 }
 
 void set_conn_in_decaytime(struct neighbor *nb, __u32 conn_id,
 		struct conn *src_in, __u8 decaytime_seqno, __u16 decaytime)
 {
-	__u32 unlockhints = credits_lock_conn(src_in);
+	if (src_in->is_client) {
+		spin_lock_bh(&(src_in->rcv_lock));
+		spin_lock_bh(&(src_in->reversedir->rcv_lock));
+	} else {
+		spin_lock_bh(&(src_in->reversedir->rcv_lock));
+		spin_lock_bh(&(src_in->rcv_lock));
+	}
 
 	if (unlikely(is_conn_in(src_in, nb, conn_id) == 0))
 		goto out;
@@ -608,7 +628,13 @@ set:
 	refresh_conn_credits(src_in, 0, 1);
 
 out:
-	credits_unlock_conn(src_in, unlockhints);
+	if (src_in->is_client) {
+		spin_unlock_bh(&(src_in->rcv_lock));
+		spin_unlock_bh(&(src_in->reversedir->rcv_lock));
+	} else {
+		spin_unlock_bh(&(src_in->reversedir->rcv_lock));
+		spin_unlock_bh(&(src_in->rcv_lock));
+	}
 }
 
 static void background_refresh_credits(struct work_struct *work)

However, if only one instead of both credits_(un)lock_conn changes are made, the error/warning is gone. By searching on the internet it looks like the linker runs out of ressources, maybe because of certain properties of the build environment. However, I did not find a solution yet. Any ideas?

My system is debian stable/squeeze.

-Michi

#1 lore raw

Hi...

Quoted 8 lines · On Wed, May 9, 2012 at 11:41 AM, <[email protected]>…

/usr/bin/ld: .tmp_vmlinux2: section __modver vma 0x6028c000 overlaps previous sections ?KSYM ? ?.tmp_kallsyms2.S
?AS ? ? ?.tmp_kallsyms2.o
?LD ? ? ?vmlinux
/usr/bin/ld: vmlinux: section __modver vma 0x6028c000 overlaps previous sections ?SYSMAP ?System.map
?SYSMAP ?.tmp_System.map
?LINK linux

modver.... hmmm, raw guess, what happen if you turn off module versioning in kernel config?

And, does this happen if you build standard (non UML) kernel?

Signature · 7 lines
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
#2 lore raw

Hi!

Quoted 13 lines · Mulyadi Santosa

Hi...

Quoted 8 lines · On Wed, May 9, 2012 at 11:41 AM, <[email protected]>…

/usr/bin/ld: .tmp_vmlinux2: section __modver vma 0x6028c000 overlaps previous sections ?KSYM ? ?.tmp_kallsyms2.S
?AS ? ? ?.tmp_kallsyms2.o
?LD ? ? ?vmlinux
/usr/bin/ld: vmlinux: section __modver vma 0x6028c000 overlaps previous sections ?SYSMAP ?System.map
?SYSMAP ?.tmp_System.map
?LINK linux

Quoted 2 lines

modver.... hmmm, raw guess, what happen if you turn off module versioning in kernel config?

Module versioning was turned off. If I turn it on, the error disappears.

Quoted 1 line

And, does this happen if you build standard (non UML) kernel?

I do not have a non-uml config ready for this kernel. "make oldconfig" asks for almost every option which exists.

-Michi

#3 lore raw

Hi again... :)

Quoted 16 lines · On Thu, May 10, 2012 at 1:49 AM, <[email protected]>…

Hi!

Quoted 13 lines · Mulyadi Santosa

Hi...

Quoted 8 lines · On Wed, May 9, 2012 at 11:41 AM, <[email protected]>…

/usr/bin/ld: .tmp_vmlinux2: section __modver vma 0x6028c000 overlaps previous sections ?KSYM ? ?.tmp_kallsyms2.S
?AS ? ? ?.tmp_kallsyms2.o
?LD ? ? ?vmlinux
/usr/bin/ld: vmlinux: section __modver vma 0x6028c000 overlaps previous sections ?SYSMAP ?System.map
?SYSMAP ?.tmp_System.map
?LINK linux

Quoted 4 lines
Quoted 2 lines

modver.... hmmm, raw guess, what happen if you turn off module versioning in kernel config?

Module versioning was turned off. If I turn it on, the error disappears.

Hm....not sure about you, but I find it weird.

Anyway, are you sure you have done make mrproper or make clean before building the kernel? Just to make sure it starts from clean state.

Quoted 4 lines
Quoted 1 line

And, does this happen if you build standard (non UML) kernel?

I do not have a non-uml config ready for this kernel. "make oldconfig" asks for almost every option which exists.

What if you just use make defconfig....then tweaking it a bit here and there using make menuconfig? That way, you don't have to answer bunch of questions... just my 2 cents idea....

Signature · 7 lines
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
#4 lore raw

Hi!

Quoted 20 lines · Mulyadi Santosa

Hi again... :)

Quoted 16 lines · On Thu, May 10, 2012 at 1:49 AM, <[email protected]>…

Hi!

Quoted 13 lines · Mulyadi Santosa

Hi...

Quoted 8 lines · On Wed, May 9, 2012 at 11:41 AM, <[email protected]>…

/usr/bin/ld: .tmp_vmlinux2: section __modver vma 0x6028c000 overlaps previous sections ?KSYM ? ?.tmp_kallsyms2.S
?AS ? ? ?.tmp_kallsyms2.o
?LD ? ? ?vmlinux
/usr/bin/ld: vmlinux: section __modver vma 0x6028c000 overlaps previous sections ?SYSMAP ?System.map
?SYSMAP ?.tmp_System.map
?LINK linux

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines

modver.... hmmm, raw guess, what happen if you turn off module versioning in kernel config?

Module versioning was turned off. If I turn it on, the error disappears.

Hm....not sure about you, but I find it weird.

Me, too.

Quoted 2 lines

Anyway, are you sure you have done make mrproper or make clean before building the kernel? Just to make sure it starts from clean state.

make clean/mrproper does not change anything.

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

And, does this happen if you build standard (non UML) kernel?

I do not have a non-uml config ready for this kernel. "make oldconfig" asks for almost every option which exists.

What if you just use make defconfig....then tweaking it a bit here and there using make menuconfig? That way, you don't have to answer bunch of questions... just my 2 cents idea....

I just tried narrowing it down. Doing either allnoconfig or allyesconfig, then setting the loadable module setting and enabling by code means that the error is gone, too. I will try to find out what it is...

-Michi

#6 lore raw

Hi again :)

Quoted 3 lines · On Thu, May 10, 2012 at 10:41 PM, <[email protected]>…

Hi!

The bug seems fixed somewhere in mainline between 3.1.0-rc1 and 3.4-rc6.

Glad you can narrow the problem. Good luck then! :)

Signature · 7 lines
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com