Skip to contentSkip to conversation

um: WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

PATCH New Boaz Harrosh 2 participants 9 messages Mar 5, 2009 – Mar 10, 2009 User-mode Linux (UML)

lore
Share & tools
lore
#0 lore raw

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Boaz

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#1 lore raw
Quoted 5 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

Quoted 7 lines

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

Signature · 13 lines
Do what you love, f**k the rest! F**k the regulations!
 

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
#2 lore raw
Quoted 14 lines · Américo Wang
Quoted 5 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

Quoted 7 lines

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Quoted 7 lines

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

Thanks

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#3 lore raw
Quoted 23 lines · Boaz Harrosh
Quoted 14 lines · Américo Wang
Quoted 5 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

Quoted 7 lines

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Quoted 7 lines

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

Quoted 7 lines
$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

I am using the same thing, but on i386. I still can't reproduce it. :(

Signature · 13 lines
Do what you love, f**k the rest! F**k the regulations!
 

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
#4 lore raw
Quoted 25 lines · Américo Wang
Quoted 24 lines · Boaz Harrosh
Quoted 11 lines · Américo Wang
Quoted 10 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Quoted 9 lines
Quoted 2 lines

Sorry if this is a duplicate report

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)
Quoted 7 lines
Quoted 4 lines

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

I am using the same thing, but on i386. I still can't reproduce it. :(

What can I say I just did it again from scratch

$ mkdir .build_um
$ make ARCH=um KBUILD_OUTPUT=.build_um defconfig
$ make ARCH=um KBUILD_OUTPUT=.build_um

(I'm using KBUILD_OUTPUT= because O= does not work when also using M= with
external modules, so it's a habit)

Thanks for your help. I will try to bisect it on Sunday Boaz

#5 lore raw
Quoted 36 lines · Boaz Harrosh
Quoted 25 lines · Américo Wang
Quoted 24 lines · Boaz Harrosh
Quoted 11 lines · Américo Wang
Quoted 10 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Quoted 9 lines
Quoted 2 lines

Sorry if this is a duplicate report

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)
Quoted 7 lines
Quoted 4 lines

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

I am using the same thing, but on i386. I still can't reproduce it. :(

What can I say I just did it again from scratch

Quoted 8 lines
$ mkdir .build_um
$ make ARCH=um KBUILD_OUTPUT=.build_um defconfig
$ make ARCH=um KBUILD_OUTPUT=.build_um

(I'm using KBUILD_OUTPUT= because O= does not work when also using M= with external modules, so it's a habit)

Thanks for your help. I will try to bisect it on Sunday

Hi, Boaz.

I am sorry that I don't have an x86_64 machine to use, but I know why this happens now. :)

Would you like to try the following patch? Thanks!

-------------->

---

arch/um/os-Linux/user_syms.c +4 -1
index 74f49bb..89b48a1 100644
@@ -14,7 +14,6 @@
 #undef memset
 
 extern size_t strlen(const char *);
-extern void *memcpy(void *, const void *, size_t);
 extern void *memmove(void *, const void *, size_t);
 extern void *memset(void *, int, size_t);
 extern int printf(const char *, ...);
@@ -24,7 +23,11 @@ extern int printf(const char *, ...);
 EXPORT_SYMBOL(strstr);
 #endif
 
+#ifndef __x86_64__
+extern void *memcpy(void *, const void *, size_t);
 EXPORT_SYMBOL(memcpy);
+#endif
+
 EXPORT_SYMBOL(memmove);
 EXPORT_SYMBOL(memset);
 EXPORT_SYMBOL(printf);

------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

author Tested-by
#6 lore raw
Quoted 46 lines · Américo Wang
Quoted 34 lines · Boaz Harrosh
Quoted 22 lines · Américo Wang
Quoted 21 lines · Boaz Harrosh
Quoted 20 lines · Américo Wang
Quoted 5 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

Quoted 7 lines

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

Quoted 9 lines
Quoted 7 lines
$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

I am using the same thing, but on i386. I still can't reproduce it. :(

What can I say I just did it again from scratch

Quoted 8 lines
$ mkdir .build_um
$ make ARCH=um KBUILD_OUTPUT=.build_um defconfig
$ make ARCH=um KBUILD_OUTPUT=.build_um

(I'm using KBUILD_OUTPUT= because O= does not work when also using M= with external modules, so it's a habit)

Thanks for your help. I will try to bisect it on Sunday

Hi, Boaz.

Quoted 9 lines

I am sorry that I don't have an x86_64 machine to use, but I know why this happens now. :)

Would you like to try the following patch? Thanks!

-------------->

Quoted 16 lines

---

arch/um/os-Linux/user_syms.c +0 -1
index 74f49bb..89b48a1 100644
@@ -14,7 +14,6 @@
 #undef memset
 
 extern size_t strlen(const char *);
-extern void *memcpy(void *, const void *, size_t);
 extern void *memmove(void *, const void *, size_t);
 extern void *memset(void *, int, size_t);
 extern int printf(const char *, ...);
@@ -24,7 +23,11 @@ extern int printf(const char *, ...);
 EXPORT_SYMBOL(strstr);

arch/um/os-Linux/user_syms.c extern int printf(const char *, ...); · line 33

Quoted 10 lines
arch/um/os-Linux/user_syms.c +4 -0
 #endif
 
+#ifndef __x86_64__
+extern void *memcpy(void *, const void *, size_t);
 EXPORT_SYMBOL(memcpy);
+#endif
+
 EXPORT_SYMBOL(memmove);
 EXPORT_SYMBOL(memset);
 EXPORT_SYMBOL(printf);

Yes this works. But it is weird, what is the difference between __x86_64__ and any other platform?

Thanks
Boaz

#7 lore raw
Quoted 50 lines · Boaz Harrosh
Quoted 49 lines · Américo Wang
Quoted 34 lines · Boaz Harrosh
Quoted 22 lines · Américo Wang
Quoted 21 lines · Boaz Harrosh
Quoted 20 lines · Américo Wang
Quoted 5 lines · Boaz Harrosh

On today's linus v2.6.29-rc7-3-g559595a

Doing make ARCH=um defconfig & make ARCH=um
give's me:

Quoted 7 lines

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

Sorry if this is a duplicate report

Weird...
I tried to compile like what you said, I can't reproduce it.

Which gcc are you using?

Thanks.

Quoted 9 lines
Quoted 7 lines
$ gcc --version
gcc (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)

I'm running on an x86_64 Fedora10 system (updated recently)

$ uname -o -s -r -m -p -i
Linux 2.6.27.15-170.2.24.fc10.x86_64 x86_64 x86_64 x86_64 GNU/Linux

I am using the same thing, but on i386. I still can't reproduce it. :(

What can I say I just did it again from scratch

Quoted 8 lines
$ mkdir .build_um
$ make ARCH=um KBUILD_OUTPUT=.build_um defconfig
$ make ARCH=um KBUILD_OUTPUT=.build_um

(I'm using KBUILD_OUTPUT= because O= does not work when also using M= with external modules, so it's a habit)

Thanks for your help. I will try to bisect it on Sunday

Hi, Boaz.

I am sorry that I don't have an x86_64 machine to use, but I know why this happens now. :)

Quoted 9 lines
Quoted 6 lines

Would you like to try the following patch? Thanks!

-------------->

Thank you.

I will resend that patch with your Tested-by. :)

Quoted 17 lines
Quoted 17 lines

---

arch/um/os-Linux/user_syms.c +0 -1
index 74f49bb..89b48a1 100644
@@ -14,7 +14,6 @@
 #undef memset
 
 extern size_t strlen(const char *);
-extern void *memcpy(void *, const void *, size_t);
 extern void *memmove(void *, const void *, size_t);
 extern void *memset(void *, int, size_t);
 extern int printf(const char *, ...);
@@ -24,7 +23,11 @@ extern int printf(const char *, ...);
 EXPORT_SYMBOL(strstr);
 #endif
 
Quoted 12 lines

arch/um/os-Linux/user_syms.c extern int printf(const char *, ...); · line 33

Quoted 9 lines
arch/um/os-Linux/user_syms.c +4 -0
+#ifndef __x86_64__
+extern void *memcpy(void *, const void *, size_t);
 EXPORT_SYMBOL(memcpy);
+#endif
+
 EXPORT_SYMBOL(memmove);
 EXPORT_SYMBOL(memset);
 EXPORT_SYMBOL(printf);

Yes this works. But it is weird, what is the difference between __x86_64__ and any other platform?

I just saw the comments in arch/um/sys-x86_64/ksyms.c.

Signature · 8 lines
Do what you love, f**k the rest! F**k the regulations!
 

------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
#8 lore raw

PATCH 1/1 uml: fix WARNING: vmlinux: 'memcpy' exported twice.

In reply to Boaz Harrosh

This patch fixes the following warning on x86_64:

LD vmlinux.o
MODPOST vmlinux.o
WARNING: vmlinux: 'memcpy' exported twice. Previous export was in vmlinux

---

arch/um/os-Linux/user_syms.c +4 -1
index 74f49bb..89b48a1 100644
@@ -14,7 +14,6 @@
 #undef memset
 
 extern size_t strlen(const char *);
-extern void *memcpy(void *, const void *, size_t);
 extern void *memmove(void *, const void *, size_t);
 extern void *memset(void *, int, size_t);
 extern int printf(const char *, ...);
@@ -24,7 +23,11 @@ extern int printf(const char *, ...);
 EXPORT_SYMBOL(strstr);
 #endif
 
+#ifndef __x86_64__
+extern void *memcpy(void *, const void *, size_t);
 EXPORT_SYMBOL(memcpy);
+#endif
+
 EXPORT_SYMBOL(memmove);
 EXPORT_SYMBOL(memset);
 EXPORT_SYMBOL(printf);