1 diff -Naurp libgcc/config/avr/lib1funcs.S libgcc/config/avr/lib1funcs.S
2 --- libgcc/config/avr/lib1funcs.S 2013-01-21 18:58:03.000000000 +0530
3 +++ libgcc/config/avr/lib1funcs.S 2013-01-21 19:12:51.000000000 +0530
4 @@ -2010,7 +2010,21 @@ ENDF __do_clear_bss
6 .section .init6,"ax",@progbits
7 DEFUN __do_global_ctors
8 -#if defined(__AVR_HAVE_ELPM__)
9 +#if defined(__AVR_TINY__)
10 + ldi r18, hi8(__ctors_start)
11 + ldi r28, lo8(__ctors_end)
12 + ldi r29, hi8(__ctors_end)
13 + rjmp .L__do_global_ctors_start
14 +.L__do_global_ctors_loop:
19 +.L__do_global_ctors_start:
20 + cpi r28, lo8(__ctors_start)
22 + brne .L__do_global_ctors_loop
23 +#elif defined(__AVR_HAVE_ELPM__)
24 ldi r17, hi8(__ctors_start)
25 ldi r28, lo8(__ctors_end)
26 ldi r29, hi8(__ctors_end)
27 @@ -2035,7 +2049,7 @@ DEFUN __do_global_ctors
28 ldi r29, hi8(__ctors_end)
29 rjmp .L__do_global_ctors_start
30 .L__do_global_ctors_loop:
36 @@ -2050,7 +2064,21 @@ ENDF __do_global_ctors
38 .section .fini6,"ax",@progbits
39 DEFUN __do_global_dtors
40 -#if defined(__AVR_HAVE_ELPM__)
41 +#if defined(__AVR_TINY__)
42 + ldi r18, hi8(__dtors_end)
43 + ldi r28, lo8(__dtors_start)
44 + ldi r29, hi8(__dtors_start)
45 + rjmp .L__do_global_dtors_start
46 +.L__do_global_dtors_loop:
51 +.L__do_global_dtors_start:
52 + cpi r28, lo8(__dtors_end)
54 + brne .L__do_global_dtors_loop
55 +#elif defined(__AVR_HAVE_ELPM__)
56 ldi r17, hi8(__dtors_end)
57 ldi r28, lo8(__dtors_start)
58 ldi r29, hi8(__dtors_start)
59 @@ -2079,7 +2107,7 @@ DEFUN __do_global_dtors
62 #if defined (__AVR_TINY__)