[patch] libgloss/m68k/{fido,cf}*: s/__INIT_SECTION__/_init/.
Jeff Johnston
jjohnstn@redhat.com
Wed May 30 17:49:00 GMT 2007
Ok, sorry for the delay.
-- Jeff J.
Kazu Hirata wrote:
> Hi,
>
> Attached is a patch to replace __INIT_SECTION__ and __FINI_SECTION__
> with _init and _fini, respectively.
>
> newlib/libc/misc/init.c assumes that the initializer and finalizer
> functions are called _init and _fini, respectively. Without this
> patch, newlib/libc/misc/init.c is incompatible with cf.sc or fido.sc
> because cf.sc and fido.sc use different names.
>
> This patch fixes the problem by replacing __INIT_SECTION__ and
> __FINI_SECTION__ with _init and _fini, respectively.
>
> Tested by running "Hello, world". OK to apply?
>
> Kazu Hirata
>
> 2007-05-22 Kazu Hirata <kazu@codesourcery.com>
>
> * m68k/cf-crt1.C, m68k/cf.sc, m68k/fido.sc, m68k/fido-crt0.S:
> Replace __INIT_SECTION__ and __FINI_SECTION__ with _init and
> _fini, respectively.
>
> Index: libgloss/m68k/cf-crt1.c
> ===================================================================
> RCS file: /cvs/src/src/libgloss/m68k/cf-crt1.c,v
> retrieving revision 1.2
> diff -u -d -p -r1.2 cf-crt1.c
> --- libgloss/m68k/cf-crt1.c 11 Dec 2006 19:58:01 -0000 1.2
> +++ libgloss/m68k/cf-crt1.c 22 May 2007 15:57:05 -0000
> @@ -25,8 +25,8 @@ extern char __end[] __attribute__ ((alig
> void *__heap_limit;
> extern void software_init_hook (void) __attribute__ ((weak));
> extern void hardware_init_hook (void) __attribute__ ((weak));
> -extern void __INIT_SECTION__ (void);
> -extern void __FINI_SECTION__ (void);
> +extern void _init (void);
> +extern void _fini (void);
>
> extern int main (int, char **, char **);
>
> @@ -48,11 +48,11 @@ void __start1 (void *heap_limit)
> if (software_init_hook)
> software_init_hook ();
>
> - __INIT_SECTION__ ();
> + _init ();
>
> /* I'm not sure how useful it is to have a fini_section in an
> embedded system. */
> - atexit (__FINI_SECTION__);
> + atexit (_fini);
>
> ix = main (0, NULL, NULL);
> exit (ix);
> Index: libgloss/m68k/cf.sc
> ===================================================================
> RCS file: /cvs/src/src/libgloss/m68k/cf.sc,v
> retrieving revision 1.4
> diff -u -d -p -r1.4 cf.sc
> --- libgloss/m68k/cf.sc 4 Jan 2007 18:05:56 -0000 1.4
> +++ libgloss/m68k/cf.sc 22 May 2007 15:57:05 -0000
> @@ -61,14 +61,14 @@ SECTIONS
> *(.eh_frame)
>
> . = ALIGN(0x4);
> - __INIT_SECTION__ = . ;
> + _init = . ;
> LONG (0x4e560000) /* linkw %fp,#0 */
> *(.init)
> SHORT (0x4e5e) /* unlk %fp */
> SHORT (0x4e75) /* rts */
>
> . = ALIGN(0x4);
> - __FINI_SECTION__ = . ;
> + _fini = . ;
> LONG (0x4e560000) /* linkw %fp,#0 */
> *(.fini)
> SHORT (0x4e5e) /* unlk %fp */
> Index: libgloss/m68k/fido-crt0.S
> ===================================================================
> RCS file: /cvs/src/src/libgloss/m68k/fido-crt0.S,v
> retrieving revision 1.2
> diff -u -d -p -r1.2 fido-crt0.S
> --- libgloss/m68k/fido-crt0.S 18 Dec 2006 21:48:18 -0000 1.2
> +++ libgloss/m68k/fido-crt0.S 22 May 2007 15:57:05 -0000
> @@ -283,10 +283,10 @@ SYM (_start):
> movel IMM (SYM(__do_global_dtors)),(sp)
> jsr SYM (atexit)
> #endif
> - movel IMM (__FINI_SECTION__),(sp)
> + movel IMM (_fini),(sp)
> jsr SYM (atexit)
>
> - jsr __INIT_SECTION__
> + jsr _init
>
> /*
> * call the main routine from the application to get it going.
> Index: libgloss/m68k/fido.sc
> ===================================================================
> RCS file: /cvs/src/src/libgloss/m68k/fido.sc,v
> retrieving revision 1.3
> diff -u -d -p -r1.3 fido.sc
> --- libgloss/m68k/fido.sc 27 Apr 2007 16:00:45 -0000 1.3
> +++ libgloss/m68k/fido.sc 22 May 2007 15:57:05 -0000
> @@ -162,13 +162,13 @@ SECTIONS {
> *(.eh_frame)
>
> . = ALIGN(0x2);
> - __INIT_SECTION__ = . ;
> + _init = . ;
> LONG (0x4e560000) /* linkw %fp,#0 */
> *(.init)
> SHORT (0x4e5e) /* unlk %fp */
> SHORT (0x4e75) /* rts */
>
> - __FINI_SECTION__ = . ;
> + _fini = . ;
> LONG (0x4e560000) /* linkw %fp,#0 */
> *(.fini)
> SHORT (0x4e5e) /* unlk %fp */
>
More information about the Newlib
mailing list