Skip to contentSkip to conversation

__attribute_used__ error on 2.6.23.9

uml-devel Quantum Skyline 2 participants 5 messages Dec 26, 2007 – Jan 2, 2008 User-mode Linux (UML)

lore
Share & tools
lore
#0 lore raw

Hi,

I've been trying to modify the UML makefiles in the 2.6.23.9 kernel to compile against a different C library, but I'm running into trouble getting parts of UML to compile with GCC 4.2.1. In particular, files in os-Linux that use functions like __uml_setup are causing GCC to throw errors.

For example, when I try to compile arch/um/os-Linux/aio.c in my environment, I get the following:

gcc-4.2.1-rev -Wp,-MD,arch/um/os-Linux/.aio.o.d -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os -D__arch_um__ -DSUBARCH=\"i386\" -Dvmap=kernel_vmap -Din6addr_loopback=kernel_in6addr_loopback -Din6addr_any=kernel_in6addr_any -march=i686 -mpreferred-stack-boundary=2 -ffreestanding -D_LARGEFILE64_SOURCE -fno-unit-at-a-time -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -Iarch/um/include -I/home/tmjackso/build/orchestra/uml/linux-2.6.23.9/arch/um/include/skas -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -DHAVE_AIO_ABI -v -nostdinc -I../../dietlibc/trunk/include -isystem /usr/local/gcc-4.2.1-rev/include -c -o arch/um/os-Linux/aio.o arch/um/os-Linux/aio.c
arch/um/os-Linux/aio.c:307: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__attribute_used__’ arch/um/os-Linux/aio.c:307: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__attribute_used__’ arch/um/os-Linux/aio.c:350: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__attribute_used__’ arch/um/os-Linux/aio.c:360: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__attribute_used__’

I know that __uml_setup and friends are defined in arch/um/include/init.h and it is being included, but it seems like GCC is not using it. If I comment out __uml_setup, other files which have functions starting with two underscores like __uml_initcall also cause compilation to fail.

Can anyone give some hints to solve this problem?

Cheers,

Todd Jackson

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#1 lore raw
Quoted 23 lines · Quantum Skyline

Hi,

I've been trying to modify the UML makefiles in the 2.6.23.9 kernel to compile against a different C library, but I'm running into trouble getting parts of UML to compile with GCC 4.2.1. In particular, files in os-Linux that use functions like __uml_setup are causing GCC to throw errors.

For example, when I try to compile arch/um/os-Linux/aio.c in my environment, I get the following:

gcc-4.2.1-rev -Wp,-MD,arch/um/os-Linux/.aio.o.d -Wall -Wundef

(quoted diff) +0 -5
-Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common 
-Werror-implicit-function-declaration -Os -D__arch_um__ 
-DSUBARCH=\"i386\" -Dvmap=kernel_vmap 
-Din6addr_loopback=kernel_in6addr_loopback 
-Din6addr_any=kernel_in6addr_any -march=i686 

I know that __uml_setup and friends are defined in arch/um/include/init.h and it is being included, but it seems like GCC is not using it. If I comment out __uml_setup, other files which have functions starting with two underscores like __uml_initcall also cause compilation to fail.

Quoted 1 line

Can anyone give some hints to solve this problem?

Probably you need the patch below.

Jeff

Signature · 44 lines
Work email - jdike at linux dot intel dot com

From: Jeff Dike <[email protected]>

init.h started breaking now for some reason.  It turns out that there wasn't a
definition of __used.  Fixed this by copying the relevant stuff from
compiler.h in the userspace case, and including compiler.h in the kernel case.

Signed-off-by: Jeff Dike <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

 arch/um/include/init.h |    9 +++++++++
 1 file changed, 9 insertions(+)

diff -puN arch/um/include/init.h~uml-arch-um-include-inith-needs-a-definition-of-__used arch/um/include/init.h
--- a/arch/um/include/init.h~uml-arch-um-include-inith-needs-a-definition-of-__used
+++ a/arch/um/include/init.h
@@ -40,6 +40,15 @@
 typedef int (*initcall_t)(void);
 typedef void (*exitcall_t)(void);
 
+#ifndef __KERNEL__
+#if __GNUC_MINOR__ >= 3
+# define __used			__attribute__((__used__))
+#else
+# define __used			__attribute__((__unused__))
+#endif
+#else
+#include <linux/compiler.h>
+#endif
 /* These are for everybody (although not all archs will actually
    discard it in modules) */
 #define __init		__attribute__ ((__section__ (".init.text")))
_

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
#2 lore raw
Quoted 24 lines · Jeff Dike
Quoted 23 lines · Quantum Skyline

Hi,

I've been trying to modify the UML makefiles in the 2.6.23.9 kernel to compile against a different C library, but I'm running into trouble getting parts of UML to compile with GCC 4.2.1. In particular, files in os-Linux that use functions like __uml_setup are causing GCC to throw errors.

For example, when I try to compile arch/um/os-Linux/aio.c in my environment, I get the following:

gcc-4.2.1-rev -Wp,-MD,arch/um/os-Linux/.aio.o.d -Wall -Wundef

(quoted diff) +0 -5
-Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common 
-Werror-implicit-function-declaration -Os -D__arch_um__ 
-DSUBARCH=\"i386\" -Dvmap=kernel_vmap 
-Din6addr_loopback=kernel_in6addr_loopback 
-Din6addr_any=kernel_in6addr_any -march=i686 

I know that __uml_setup and friends are defined in arch/um/include/init.h and it is being included, but it seems like GCC is not using it. If I comment out __uml_setup, other files which have functions starting with two underscores like __uml_initcall also cause compilation to fail.

Quoted 6 lines
Quoted 1 line

Can anyone give some hints to solve this problem?

Probably you need the patch below.

Jeff

Hi Jeff,

That patch didn't work...I'm still seeing the same error with the patch applied.

Is there anything glibc-specific that UML depends on?

Cheers,

Todd

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

#3 lore raw
Quoted 2 lines · Todd Jackson

That patch didn't work...I'm still seeing the same error with the patch applied.

I would double-check that the patch is applied - I swear I saw some similar error which that fixed.

Quoted 1 line

Is there anything glibc-specific that UML depends on?

Not that I know of.

You're seeing a syntax error, so just make arch/um/os-Linux/aio.i, eyeball the result, and see what the used stuff is expanding into. That should give you an idea what needs to be done.

Jeff

Signature · 10 lines
Work email - jdike at linux dot intel dot com

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
#4 lore raw
In reply to Todd Jackson
Quoted 2 lines · Todd Jackson

That patch didn't work...I'm still seeing the same error with the patch applied.

Can you make aio.i and send it to me?

Jeff

Signature · 10 lines
Work email - jdike at linux dot intel dot com

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel