Fix IrDA build failure
Subsystems (2)
PATCH 1/1 Fix IrDA build failure
Hi Dave,
When having built-in IrDA, we hit the following error:
irda_sysctl_unregister' referenced in section .init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.oirda_proc_unregister' referenced in section .init.text' of net/built-in.o: defined in discarded section `.exit.text' of net/built-in.oirsock_cleanup' referenced in section .init.text' of net/built-in.o:
defined in discarded section .exit.text' of net/built-in.o irttp_cleanup' referenced in section `.init.text' of net/built-in.o:
defined in discarded section .exit.text' of net/built-in.o iriap_cleanup' referenced in section `.init.text' of net/built-in.o:
defined in discarded section .exit.text' of net/built-in.o irda_device_cleanup' referenced in section .init.text' of net/built-in.o: defined in discarded section .exit.text' of net/built-in.oirlap_cleanup' referenced in section .init.text' of net/built-in.o:
defined in discarded section .exit.text' of net/built-in.o irlmp_cleanup' referenced in section `.init.text' of net/built-in.o:
defined in discarded section `.exit.text' of net/built-in.o make[1]: *** [.tmp_vmlinux1] Error 1
make: *** [_all] Error 2
This is due to the irda_init fix recently added, where we call __exit
routines from an __init one. It is a build failure that I didn't catch
because it doesn't show up when building IrDA as a module. My apologies
for that.
The following patch fixes that failure and is against your net-2.6
tree. I hope it can make it to the merge window, and [email protected] is CCed on this mail.
net/irda/af_irda.c +1 -1
@@ -2567,7 +2567,7 @@ int __init irsock_init(void)* Remove IrDA protocol * */ -void __exit irsock_cleanup(void) +void irsock_cleanup (void ) {sock_unregister (PF_IRDA );proto_unregister (&irda_proto);
net/irda/irda_device.c +2 -2
@@ -95,14 +95,14 @@ int __init irda_device_init( void)return 0 ; } -static void __exit leftover_dongle(void *arg) +static void leftover_dongle (void *arg) {struct dongle_reg *reg = arg;IRDA_WARNING ("IrDA: Dongle type %x not unregistered\n" , reg->type); } -void __exit irda_device_cleanup(void) +void irda_device_cleanup (void ) {IRDA_DEBUG (4 ,"%s()\n" , __FUNCTION__);
net/irda/iriap.c +1 -1
@@ -153,7 +153,7 @@ int __init iriap_init(void)* Initializes the IrIAP layer, called by the module cleanup code in * irmod.c */ -void __exit iriap_cleanup(void) +void iriap_cleanup (void ) {irlmp_unregister_service (service_handle);
net/irda/irlap.c +1 -1
@@ -95,7 +95,7 @@ int __init irlap_init(void)return 0 ; } -void __exit irlap_cleanup(void) +void irlap_cleanup (void ) { IRDA_ASSERT(irlap != NULL, return;);
net/irda/irlmp.c +1 -1
@@ -116,7 +116,7 @@ int __init irlmp_init(void)* Remove IrLMP layer * */ -void __exit irlmp_cleanup(void) +void irlmp_cleanup (void ) {/* Check for main structure */ IRDA_ASSERT(irlmp != NULL, return;);
net/irda/irproc.c +1 -1
@@ -84,7 +84,7 @@ void __init irda_proc_register(void)* Unregister irda entry in /proc file system * */ -void __exit irda_proc_unregister(void) +void irda_proc_unregister (void ) {int i;
net/irda/irsysctl.c +1 -1
@@ -287,7 +287,7 @@ int __init irda_sysctl_register(void)* Unregister our sysctl interface * */ -void __exit irda_sysctl_unregister(void) +void irda_sysctl_unregister (void ) {unregister_sysctl_table (irda_table_header); }
net/irda/irttp.c +1 -1
@@ -109,7 +109,7 @@ int __init irttp_init(void)* Called by module destruction/cleanup code * */ -void __exit irttp_cleanup(void) +void irttp_cleanup (void ) {/* Check for main structure */ IRDA_ASSERT(irttp->magic == TTP_MAGIC, return;);
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
Hi Samuel.
Quoted 4 lines · Samuel Ortiz
This is due to the
irda_initfix recently added, where we call__exitroutines from an__initone. It is a build failure that I didn't catch because it doesn't show up when building IrDA as a module. My apologies for that.
What about having all of them __devinit/__devexit?
Signature · 1 line
Evgeniy Polyakov
Quoted 9 lines · Evgeniy Polyakov
Hi Samuel.
Quoted 4 lines · Samuel Ortiz
This is due to the
irda_initfix recently added, where we call__exitroutines from an__initone. It is a build failure that I didn't catch because it doesn't show up when building IrDA as a module. My apologies for that.What about having all of them __devinit/__devexit?
That would be completely wrong.
Quoted 1 line
Evgeniy Polyakov
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 3 lines · Adrian Bunk
Quoted 1 line
What about having all of them __devinit/__devexit?
That would be completely wrong.
Hi Adrian.
Then why should irda have __init/__exit at first point - replacing that with appropriate 'dev' prefix I suggested.
Signature · 1 line
Evgeniy Polyakov
Quoted 6 lines · Evgeniy Polyakov
Quoted 3 lines · Adrian Bunk
Quoted 1 line
What about having all of them __devinit/__devexit?
That would be completely wrong.
Hi Adrian.
Hi Evgeniy,
Quoted 1 line
Then why should irda have __init/__exit at first point
for code that only gets called during driver loading resp. driver unloading.
Quoted 2 lines
- replacing that
with appropriate 'dev' prefix I suggested.
You seem to misunderstand what the "dev" prefix is doing.
Quoted 1 line
Evgeniy Polyakov
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedQuoted 9 lines · Evgeniy Polyakov
Hi Samuel.
Quoted 4 lines · Samuel Ortiz
This is due to the
irda_initfix recently added, where we call__exitroutines from an__initone. It is a build failure that I didn't catch because it doesn't show up when building IrDA as a module. My apologies for that.What about having all of them __devinit/__devexit?
__devinit is used to say that this funtion is used for hotplug so place this in section .init.text only if !HOTPLUG.
So with __devinit/__devexit we would see exactly the same in the !HOTPLUG case but only make it harder to trigger since the normal build has HOTPLUG enabled.
New version of modpost will btw. catch these kind of errors so also in the x86 case we will be notified - but then only as a warning not as an error.
Sam
Quoted 26 lines · Samuel Ortiz
Hi Dave,
When having built-in IrDA, we hit the following error:
irda_sysctl_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirda_proc_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirsock_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirttp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oiriap_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirda_device_cleanup' referenced in section.init.text' of net/built-in.o: defined in discarded section.exit.text' ofnet/built-in.oirlap_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirlmp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section `.exit.text' ofnet/built-in.omake[1]: *** [.tmp_vmlinux1] Error 1
make: *** [_all] Error 2
Quoted 4 lines
This is due to the
irda_initfix recently added, where we call__exitroutines from an__initone. It is a build failure that I didn't catch because it doesn't show up when building IrDA as a module. My apologies for that.
I forgot to mention that the build fails on ARM but not on x86. As Sam explained to me, x86 discards exit sections at runtime only, unlike ARM. I don't know about other platforms though.
So, to hit this build failure, you need a combination of !x86 and built-in IrDA.
Cheers,
Samuel.
Quoted 128 lines
The following patch fixes that failure and is against your net-2.6 tree. I hope it can make it to the merge window, and [email protected] is CCed on this mail.
Signed-off-by Samuel Ortiz <[email protected]>net/irda/af_irda.c +1
-1@@ -2567,7 +2567,7 @@ int __init irsock_init(void)* Remove IrDA protocol * */ -void __exit irsock_cleanup(void) +void irsock_cleanup (void ) {sock_unregister (PF_IRDA );proto_unregister (&irda_proto);net/irda/irda_device.c +2
-2@@ -95,14 +95,14 @@ int __init irda_device_init( void)return 0 ; } -static void __exit leftover_dongle(void *arg) +static void leftover_dongle (void *arg) {struct dongle_reg *reg = arg;IRDA_WARNING ("IrDA: Dongle type %x not unregistered\n" , reg->type); } -void __exit irda_device_cleanup(void) +void irda_device_cleanup (void ) {IRDA_DEBUG (4 ,"%s()\n" , __FUNCTION__);net/irda/iriap.c +1
-1@@ -153,7 +153,7 @@ int __init iriap_init(void)* Initializes the IrIAP layer, called by the module cleanup code in * irmod.c */ -void __exit iriap_cleanup(void) +void iriap_cleanup (void ) {irlmp_unregister_service (service_handle);net/irda/irlap.c +1
-1@@ -95,7 +95,7 @@ int __init irlap_init(void)return 0 ; } -void __exit irlap_cleanup(void) +void irlap_cleanup (void ) { IRDA_ASSERT(irlap != NULL, return;);net/irda/irlmp.c +1
-1@@ -116,7 +116,7 @@ int __init irlmp_init(void)* Remove IrLMP layer * */ -void __exit irlmp_cleanup(void) +void irlmp_cleanup (void ) {/* Check for main structure */ IRDA_ASSERT(irlmp != NULL, return;);net/irda/irproc.c +1
-1@@ -84,7 +84,7 @@ void __init irda_proc_register(void)* Unregister irda entry in /proc file system * */ -void __exit irda_proc_unregister(void) +void irda_proc_unregister (void ) {int i;net/irda/irsysctl.c +1
-1@@ -287,7 +287,7 @@ int __init irda_sysctl_register(void)* Unregister our sysctl interface * */ -void __exit irda_sysctl_unregister(void) +void irda_sysctl_unregister (void ) {unregister_sysctl_table (irda_table_header); }net/irda/irttp.c +1
-2@@ -109,7 +109,7 @@ int __init irttp_init(void)* Called by module destruction/cleanup code * */ -void __exit irttp_cleanup(void) +void irttp_cleanup (void ) {/* Check for main structure */ IRDA_ASSERT(irttp->magic == TTP_MAGIC, return;); -------------------------------------------------------------------------This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
irda-users mailing list [email protected]
http://lists.sourceforge.net/lists/listinfo/irda-users
Quoted 31 lines · Samuel Ortiz
Quoted 26 lines · Samuel Ortiz
Hi Dave,
When having built-in IrDA, we hit the following error:
irda_sysctl_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirda_proc_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirsock_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirttp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oiriap_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirda_device_cleanup' referenced in section.init.text' of net/built-in.o: defined in discarded section.exit.text' ofnet/built-in.oirlap_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirlmp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section `.exit.text' ofnet/built-in.omake[1]: *** [.tmp_vmlinux1] Error 1
make: *** [_all] Error 2Quoted 4 lines
This is due to the
irda_initfix recently added, where we call__exitroutines from an__initone. It is a build failure that I didn't catch because it doesn't show up when building IrDA as a module. My apologies for that.
Quoted 6 lines
I forgot to mention that the build fails on ARM but not on x86. As Sam explained to me, x86 discards exit sections at runtime only, unlike ARM. I don't know about other platforms though.
So, to hit this build failure, you need a combination of !x86 and built-in IrDA.
On i386 these are runtime failures (although in unlikely error paths) which isn't better.
Quoted 2 lines
Cheers,
Samuel.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedA message that is not in the archive (sent off-list or not yet received): 20070716111715.GB22757-OPs8hQ7j6VREYlHNa9+yaNBPR1lH4CV8@public.gmane.org
From: Samuel Ortiz <[email protected]>
Date: Mon, 16 Jul 2007 14:17:15 +0300
Quoted 32 lines
When having built-in IrDA, we hit the following error:
irda_sysctl_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirda_proc_unregister' referenced in section.init.text' ofnet/built-in.o: defined in discarded section `.exit.text' ofnet/built-in.oirsock_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirttp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oiriap_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirda_device_cleanup' referenced in section.init.text' of net/built-in.o: defined in discarded section.exit.text' ofnet/built-in.oirlap_cleanup' referenced in section.init.text' ofnet/built-in.o:
defined in discarded section.exit.text' of net/built-in.oirlmp_cleanup' referenced in section `.init.text' ofnet/built-in.o:
defined in discarded section `.exit.text' ofnet/built-in.omake[1]: *** [.tmp_vmlinux1] Error 1
make: *** [_all] Error 2This is due to the
irda_initfix recently added, where we call__exit
routines from an__initone. It is a build failure that I didn't catch
because it doesn't show up when building IrDA as a module. My apologies
for that.
The following patch fixes that failure and is against your net-2.6
tree. I hope it can make it to the merge window, and [email protected] is CCed on this mail.
Quoted 1 line
Signed-off-by Samuel Ortiz <[email protected]>
I've applied this.
I realize that alternative suggestions have been made on how to fix this, and when consensus on that is reached someone can send me a follow-on patch.
Thanks!
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/