From MAILER-DAEMON Tue Feb 02 05:57:31 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcGRn-0000hc-CB for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 05:57:31 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcGRj-0000es-ON for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 05:57:27 -0500 Received: from [199.232.76.173] (port=59976 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcGRi-0000dy-NX for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 05:57:27 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcGRe-0004lv-Cu for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 05:57:26 -0500 Received: from mx20.gnu.org ([199.232.41.8]:29834) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NcGRd-0004jK-Ge for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 05:57:22 -0500 Received: from tfcoev.han-solo.net ([83.138.67.47]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcGRV-00056C-ST for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 05:57:14 -0500 X-KSD: Received: from pcd080702 (a80-126-132-138.adsl.xs4all.nl [80.126.132.138]) by tfcoev.han-solo.net (8.13.6/8.13.6) with ESMTP id o12AYU1b023828 for ; Tue, 2 Feb 2010 11:34:41 +0100 From: "Han Hoekstra" To: Date: Tue, 2 Feb 2010 11:35:35 +0100 Message-ID: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_00FD_01CAA3FB.DBF5FA90" X-Mailer: Microsoft Office Outlook 11 Thread-Index: Acqj83PqhjVmUvuHTBao4jnLCDxh6Q== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-detected-operating-system: by mx20.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Subject: [avr-gcc-list] Strange compile behaviour X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 10:57:28 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_00FD_01CAA3FB.DBF5FA90 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello all, I hope someone can help me with a strange problem I have. What I see is that there is a problem with my stack, I check if the 2 bytes at __bss_end and __bss_end + 1 have a specific value, which I put in them, so I can detect stack overflows in my application. I have a piece of code that will generate a stack problem depending on if I enable or disable a while loop in that piece of code. The code is : while (app_TXIncomming != 0) { } /* while */ configMsg = &app_RS232_TX_Buffers [app_TXIncomming]; if (!configMsg->BufferFull) { /* There is free space, so create the message */ /* We will send NoConfig_ind messages to the base CPU and the * base Extender, because we don't know what is in the * basestation */ app_GenAddress.NetworkID = NETWORK_ID_BROADCAST; app_GenAddress.DeviceID = DEVICE_ID_BROADCAST; switch (stepStateNoConfig) { case app_NOCONFIGSTEP_BASECPU: app_GenAddress.DeviceType = DEVTYPE_WS_BASE_CPU; stepStateNoConfig = app_NOCONFIGSTEP_EXTENDER; break; case app_NOCONFIGSTEP_EXTENDER: app_GenAddress.DeviceType = DEVTYPE_WS_EXTENDER; stepStateNoConfig = app_NOCONFIGSTEP_BASECPU; break; } /* switch */ //WISP_Put_Flags (configMsg, 0); WISP_Put_Flags (configMsg, 0); This code is part of a larger function. A little explanation of the code: configMsg pointer to the same type as the array app_RS232_TX_Buffers app_TXIncomming the index of the next buffer that I can use to create a message that must be transmitted via the RS-232 port. app_GenAddress a structure that can contain an address as we use it What I see no is that when the while loop at the beginning is compiled into the code, everything is running OK, but when I comment it out, so it is not in de code, the stack check fails, indicating that __bss_end and __bss_end + 1 no longer have the specific test values. Below is the part of the .lst file for both cases. With commented out while loop: -------------------------------------- 585 lds r24,app_TXIncomming 586 mul r24,r16 587 012a 84E0 movw r30,r0 588 012c 0E94 0000 clr r1 589 0130 00C0 subi r30,lo8(-(app_RS232_TX_Buffers)) 590 sbci r31,hi8(-(app_RS232_TX_Buffers)) 592 .LM51: 593 0132 8091 0000 ldd r24,Z+1 594 0136 809F tst r24 595 0138 F001 brne .L20 597 013c E050 .LM52: 598 013e F040 sts app_GenAddress,__zero_reg__ 600 .LM53: 601 0140 8181 sts (app_GenAddress+2)+1,__zero_reg__ 602 0142 8823 sts app_GenAddress+2,__zero_reg__ 604 .LM54: 605 tst r17 606 0146 1092 0000 brne .L45 608 .LM55: 609 014a 1092 0000 sts app_GenAddress+1,r15 610 014e 1092 0000 ldi r17,lo8(1) 611 .L21: 613 0152 1123 .LM56: 614 0154 01F4 movw r24,r30 615 ldi r22,lo8(0) 616 call WISP_Put_Flags With while loop in place: ----------------------------- 583 0126 0E94 0000 .LM50: 584 012a 00C0 lds r24,app_RS232_TX_Buffers+1 585 tst r24 586 012c 8091 0000 brne .L21 588 .LM51: 589 sts app_GenAddress,__zero_reg__ 591 0132 01F4 .LM52: 592 sts (app_GenAddress+2)+1,__zero_reg__ 593 sts app_GenAddress+2,__zero_reg__ 595 0138 8823 .LM53: 596 013a 01F4 tst r17 597 brne .L47 599 013c 1092 0000 .LM54: 600 sts app_GenAddress+1,r16 601 ldi r17,lo8(1) 602 0140 1092 0000 .L22: 604 .LM55: 605 ldi r24,lo8(app_RS232_TX_Buffers) 606 0148 1123 ldi r25,hi8(app_RS232_TX_Buffers) 607 014a 01F4 ldi r22,lo8(0) 608 call WISP_Put_Flags When I leave the while loop in the code, the code is smaller than without the while loop, which seems strange, because the while loop has no effect on the actual code. I am using the latest WinAVR with AVR-GCC 4.3.3 at the moment, but I started with the previous version AVR-GCC 4.3.2, which did the exact same thing. Optimisation is set to size, I am using an ATMega168. Optimisations that I use are : -mcall-prologues, -ffunction-sections, -fdata-sections, -fno-free-loop-optimize, -fno-inline, -fno-tree-scev-cprop, -fpack-struct This seems to give me the smallest code, which is what I need, because I am almost at the limit of code space. The most simple solution would be to just keep the while loop in the code, but since it does nothing, it is a strange piece of code to keep in my application and what other parts of the code would have similar problems and would also require something like this ?! Does anyone know what is going wrong here ? Greetings, Han --- Han Hoekstra Software Engineer Wireless Value B.V. Waanderweg 30a 7812 HZ Emmen Tel: +31-591-633200 Fax: +31-591-631197 Web: www.wirelessvalue.nl ------=_NextPart_000_00FD_01CAA3FB.DBF5FA90 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hello all,

 

I hope someone can help me with a strange problem I = have.

 

What I see is that there is a problem with my stack, = I check if the 2 bytes at __bss_end and __bss_end + 1 have a specific value, = which I put in them, so I can detect stack overflows in my application. I have a = piece of code that will generate a stack problem depending on if I enable or = disable a while loop in that piece of code.

 

The code is :

 

while (app_TXIncomming !=3D 0) {

}     /* = while */

          =             &= nbsp; configMsg =3D &app_RS232_TX_Buffers [app_TXIncomming];

          =             &= nbsp; if (!configMsg->BufferFull) {

          =             &= nbsp;       /* There is free space, so create the = message */

          =             &= nbsp;       /* We will send NoConfig_ind messages to = the base CPU and the

         &nbs= p;            = ;         * base Extender, = because we don't know what is in the

         &nbs= p;            = ;         * basestation = */

          =             &= nbsp;       = app_GenAddress.NetworkID =3D NETWORK_ID_BROADCAST;

          =             &= nbsp;       = app_GenAddress.DeviceID  =3D DEVICE_ID_BROADCAST;

          =             &= nbsp;       switch (stepStateNoConfig) {

          =             &= nbsp;           &n= bsp; case app_NOCONFIGSTEP_BASECPU:

          =             &= nbsp;           &n= bsp;       = app_GenAddress.DeviceType =3D DEVTYPE_WS_BASE_CPU;

          =             &= nbsp;           &n= bsp;       = stepStateNoConfig         =3D app_NOCONFIGSTEP_EXTENDER;

          =             &= nbsp;           &n= bsp;       break;

          =             &= nbsp;           &n= bsp; case app_NOCONFIGSTEP_EXTENDER<= /i>:

          =             &= nbsp;           &n= bsp;       = app_GenAddress.DeviceType =3D DEVTYPE_WS_EXTENDER;

          =             &= nbsp;           &n= bsp;       = stepStateNoConfig         =3D app_NOCONFIGSTEP_BASECPU;

          =             &= nbsp;           &n= bsp;       break;

          =             &= nbsp;       }     = /* switch */

 

          =             &= nbsp;       //WISP_Put_Flags (configMsg, = 0);

         &= nbsp;           &n= bsp;        WISP_Put_Flags (configMsg, 0);

 

This code is part of a larger = function.

A little explanation of the = code:

configMsg       &nb= sp;           &nbs= p; pointer to the same type as the array app_RS232_TX_Buffers

app_TXIncomming      &nb= sp;   the index of the next buffer that I can use to create a message that must be transmitted via the RS-232 = port.

app_GenAddress      &nbs= p;    a structure that can contain an address as we  use it

 

What I see no is that when the while loop at the = beginning is compiled into the code, everything is running OK, but when I comment = it out, so it is not in de code, the stack check fails, indicating that = __bss_end and __bss_end + 1 no longer have the specific test = values.

 

Below is the part of the .lst file for both = cases.

 

With commented out while = loop:

--------------------------------------

585        &nb= sp;      =             &= nbsp;   =             lds r24,app_TXIncomming

 586       &nb= sp;       =             &= nbsp;  =             mul = r24,r16

 587 012a 84E0      =        =             movw = r30,r0

 588 012c 0E94 0000     =             clr = r1

 589 0130 00C0      =        =             subi r30,lo8(-(app_RS232_TX_Buffers))

 590       &nb= sp;       =             &= nbsp;  =             sbci r31,hi8(-(app_RS232_TX_Buffers))

 592       &nb= sp;          = .LM51:

 593 0132 8091 0000      =             ldd = r24,Z+1

 594 0136 809F      =         =             tst = r24

 595 0138 F001      =         =             brne = .L20

 597 013c E050      =        .LM52:

 598 013e F040      =             &= nbsp;       sts = app_GenAddress,__zero_reg__

 600       &nb= sp;          = .LM53:

 601 0140 8181      =             &= nbsp;       sts (app_GenAddress+2)+1,__zero_reg__

 602 0142 8823      =             &= nbsp;       sts app_GenAddress+2,__zero_reg__

 604       &nb= sp;          = .LM54:

 605       &nb= sp;       =             &= nbsp;  =             tst = r17

 606 0146 1092 0000 =             &= nbsp;    brne .L45

 608       &nb= sp;          = .LM55:

 609 014a 1092 0000 =             &= nbsp;    sts app_GenAddress+1,r15

 610 014e 1092 0000 =             &= nbsp;    ldi r17,lo8(1)

 611       &nb= sp;          = .L21:

 613 0152 1123      =         = .LM56:

 614 0154 01F4      =             &= nbsp;       movw = r24,r30

 615       &nb= sp;       =             &= nbsp;  =             ldi = r22,lo8(0)

 616       &nb= sp;       =             &= nbsp;  =             call WISP_Put_Flags

 

With while loop in = place:

-----------------------------=

 583 0126 0E94 0000     = .LM50:

 584 012a 00C0      =             &= nbsp;      lds r24,app_RS232_TX_Buffers+1

 585       &nb= sp;       =             &= nbsp;  =             tst = r24

 586 012c 8091 0000 =             &= nbsp;    brne .L21

 588       &nb= sp;          = .LM51:

 589       &nb= sp;       =             &= nbsp;  =             sts app_GenAddress,__zero_reg__

 591 0132 01F4      =         = .LM52:

 592       &nb= sp;       =             &= nbsp;  =             sts (app_GenAddress+2)+1,__zero_reg__

 593       &nb= sp;       =             &= nbsp;  =             sts app_GenAddress+2,__zero_reg__

 595 0138 8823      =         = .LM53:

 596 013a 01F4      =             &= nbsp;       tst = r17

 597       &nb= sp;       =             &= nbsp;  =             brne = .L47

 599 013c 1092 0000      = .LM54:

 600       &nb= sp;       =             &= nbsp;  =             sts app_GenAddress+1,r16

 601       &nb= sp;       =             &= nbsp;  =             ldi = r17,lo8(1)

 602 0140 1092 0000      = .L22:

 604       &nb= sp;          = .LM55:

 605       &nb= sp;       =             &= nbsp;  =             ldi r24,lo8(app_RS232_TX_Buffers)

 606 0148 1123      =             &= nbsp;       ldi r25,hi8(app_RS232_TX_Buffers)

 607 014a 01F4      =             &= nbsp;       ldi = r22,lo8(0)

 608       &nb= sp;          =             =             call WISP_Put_Flags

 

When I leave the while loop in the code, the code is = smaller than without the while loop, which seems strange, because the while loop = has no effect on the actual code.

 

I am using the latest WinAVR with AVR-GCC 4.3.3 at = the moment, but I started with the previous version AVR-GCC 4.3.2, which did = the exact same thing.

Optimisation is set to size, I am using an ATMega168. = Optimisations that I use are :

-mcall-prologues, -ffunction-sections, = -fdata-sections, -fno-free-loop-optimize, -fno-inline, -fno-tree-scev-cprop, = -fpack-struct

This seems to give me the smallest code, which is = what I need, because I am almost at the limit of code = space.

 

The most simple solution would be to just keep the = while loop in the code, but since it does nothing, it is a strange piece of = code to keep in my application and what other parts of the code would have = similar problems and would also require something like this = ?!

 

Does anyone know what is going wrong here = ?

 

Greetings,

   Han

 

---

Han Hoekstra

Software Engineer

Wireless Value B.V.
Waanderweg 30a
7812 HZ  Emmen
Tel: +31-591-633200
Fax: +31-591-631197
Web:
www.wirelessvalue.nl

 



__________ Information from ESET NOD32 Antivirus, version of = virus signature database 4827 (20100202) __________

The message = was checked by ESET NOD32 Antivirus.

http://www.eset.com
------=_NextPart_000_00FD_01CAA3FB.DBF5FA90-- From MAILER-DAEMON Tue Feb 02 07:06:49 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcHWr-0007bE-NW for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 07:06:49 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcHWp-0007aq-5s for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:06:47 -0500 Received: from [199.232.76.173] (port=51371 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcHWn-0007ab-S7 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:06:45 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcHWl-0001VO-98 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:06:45 -0500 Received: from smtp-vbr6.xs4all.nl ([194.109.24.26]:4475) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcHWk-0001Tg-Ft for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:06:42 -0500 Received: from [192.168.108.86] (ip4daa055d.direct-adsl.nl [77.170.5.93]) (authenticated bits=0) by smtp-vbr6.xs4all.nl (8.13.8/8.13.8) with ESMTP id o12C6aeC095118 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 2 Feb 2010 13:06:37 +0100 (CET) (envelope-from avrmail@xs4all.nl) Message-ID: <4B68154A.9000003@xs4all.nl> Date: Tue, 02 Feb 2010 13:06:34 +0100 From: Wouter van Gulik User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Han Hoekstra Subject: Re: [avr-gcc-list] Strange compile behaviour References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> In-Reply-To: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by XS4ALL Virus Scanner X-detected-operating-system: by monty-python.gnu.org: FreeBSD 4.6-4.9 Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 12:06:47 -0000 > What I see no is that when the while loop at the beginning is compiled > into the code, everything is running OK, but when I comment it out, so > it is not in de code, the stack check fails, indicating that __bss_end > and __bss_end + 1 no longer have the specific test values. > If you are using interrupts than you might (by accident) be waiting for the moment that no interrupts are being executed. And thus no extra stack usage during your function execution. The code size increment is due to a smart optimization. You force app_TXIncomming to be zero before continuing, gcc notes it and does not do a multiply that saves some pointer calculation and therefore space. So your loop is doing something after all ;) This also indicates app_TXIncomming as not being volatile? Or a gcc optimizer bug. HTH, Wouter > > Below is the part of the .lst file for both cases. > > > > With commented out while loop: > > -------------------------------------- > > 585 lds r24,app_TXIncomming > > 586 mul r24,r16 > > 587 012a 84E0 movw r30,r0 > > 588 012c 0E94 0000 clr r1 > > 589 0130 00C0 subi r30,lo8(-(app_RS232_TX_Buffers)) > > 590 sbci > r31,hi8(-(app_RS232_TX_Buffers)) > > 592 .LM51: > > 593 0132 8091 0000 ldd r24,Z+1 > > 594 0136 809F tst r24 > > 595 0138 F001 brne .L20 > > 597 013c E050 .LM52: > > 598 013e F040 sts app_GenAddress,__zero_reg__ > > 600 .LM53: > > 601 0140 8181 sts > (app_GenAddress+2)+1,__zero_reg__ > > 602 0142 8823 sts app_GenAddress+2,__zero_reg__ > > 604 .LM54: > > 605 tst r17 > > 606 0146 1092 0000 brne .L45 > > 608 .LM55: > > 609 014a 1092 0000 sts app_GenAddress+1,r15 > > 610 014e 1092 0000 ldi r17,lo8(1) > > 611 .L21: > > 613 0152 1123 .LM56: > > 614 0154 01F4 movw r24,r30 > > 615 ldi r22,lo8(0) > > 616 call WISP_Put_Flags > > > > With while loop in place: > > ----------------------------- > > 583 0126 0E94 0000 .LM50: > > 584 012a 00C0 lds r24,app_RS232_TX_Buffers+1 > > 585 tst r24 > > 586 012c 8091 0000 brne .L21 > > 588 .LM51: > > 589 sts > app_GenAddress,__zero_reg__ > > 591 0132 01F4 .LM52: > > 592 sts > (app_GenAddress+2)+1,__zero_reg__ > > 593 sts > app_GenAddress+2,__zero_reg__ > > 595 0138 8823 .LM53: > > 596 013a 01F4 tst r17 > > 597 brne .L47 > > 599 013c 1092 0000 .LM54: > > 600 sts app_GenAddress+1,r16 > > 601 ldi r17,lo8(1) > > 602 0140 1092 0000 .L22: > > 604 .LM55: > > 605 ldi > r24,lo8(app_RS232_TX_Buffers) > > 606 0148 1123 ldi r25,hi8(app_RS232_TX_Buffers) > > 607 014a 01F4 ldi r22,lo8(0) > > 608 call WISP_Put_Flags > > > > When I leave the while loop in the code, the code is smaller than > without the while loop, which seems strange, because the while loop has > no effect on the actual code. > > > > I am using the latest WinAVR with AVR-GCC 4.3.3 at the moment, but I > started with the previous version AVR-GCC 4.3.2, which did the exact > same thing. > > Optimisation is set to size, I am using an ATMega168. Optimisations that > I use are : > > -mcall-prologues, -ffunction-sections, -fdata-sections, > -fno-free-loop-optimize, -fno-inline, -fno-tree-scev-cprop, -fpack-struct > > This seems to give me the smallest code, which is what I need, because I > am almost at the limit of code space. > > > > The most simple solution would be to just keep the while loop in the > code, but since it does nothing, it is a strange piece of code to keep > in my application and what other parts of the code would have similar > problems and would also require something like this ?! > > > > Does anyone know what is going wrong here ? > > > > Greetings, > > Han > > > > --- > > Han Hoekstra > > Software Engineer > > Wireless Value B.V. > Waanderweg 30a > 7812 HZ Emmen > Tel: +31-591-633200 > Fax: +31-591-631197 > Web: www.wirelessvalue.nl > > > > > > __________ Information from ESET NOD32 Antivirus, version of virus > signature database 4827 (20100202) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > ------------------------------------------------------------------------ > > _______________________________________________ > AVR-GCC-list mailing list > AVR-GCC-list@nongnu.org > http://lists.nongnu.org/mailman/listinfo/avr-gcc-list From MAILER-DAEMON Tue Feb 02 07:09:11 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcHZ8-0008T6-Ud for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 07:09:10 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcHZ6-0008SE-I7 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:09:08 -0500 Received: from [199.232.76.173] (port=36123 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcHZ5-0008Rh-Q3 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:09:07 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcHZ2-0002Dl-PQ for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:09:07 -0500 Received: from lo.gmane.org ([80.91.229.12]:59064) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcHZ2-0002CV-44 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 07:09:04 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NcHYv-0004dr-9P for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:08:57 +0100 Received: from 81-29-46-32.ipc21.adsl.hesbynett.no ([81.29.46.32]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Feb 2010 13:08:57 +0100 Received: from david by 81-29-46-32.ipc21.adsl.hesbynett.no with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Feb 2010 13:08:57 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: avr-gcc-list@nongnu.org From: David Brown Date: Tue, 02 Feb 2010 13:08:14 +0100 Lines: 252 Message-ID: References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 81-29-46-32.ipc21.adsl.hesbynett.no User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100111 Lightning/1.0b1 Thunderbird/3.0.1 In-Reply-To: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> Sender: news X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: [avr-gcc-list] Re: Strange compile behaviour X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 12:09:09 -0000 When you have the compile loop enabled, the code will wait until app_TXIncomming is zero before moving on. The reason the generated code is smaller with the loop enabled is that the optimiser knows that app_TXIncomming must be zero from then on, thus it can figure out the address of configMsg->BufferFull at compile time and save some code. Other than that, my guess would be that you are running the code with app_TXIncomming with some non-zero, invalid value. When the loop is there, the body of the code won't be run until app_TXIncomming is zero. Without the loop, it will be run and something goes wrong (in WISP_Put_Flags, I expect). mvh., David On 02/02/2010 11:35, Han Hoekstra wrote: > Hello all, > > I hope someone can help me with a strange problem I have. > > What I see is that there is a problem with my stack, I check if the 2 > bytes at __bss_end and __bss_end + 1 have a specific value, which I put > in them, so I can detect stack overflows in my application. I have a > piece of code that will generate a stack problem depending on if I > enable or disable a while loop in that piece of code. > > The code is : > > *while* (app_TXIncomming != 0) { > > } /* while */ > > configMsg = &app_RS232_TX_Buffers [app_TXIncomming]; > > *if* (!configMsg->BufferFull) { > > /* There is free space, so create the message */ > > /* We will send NoConfig_ind messages to the base CPU and the > > * base Extender, because we don't know what is in the > > * _basestation_ */ > > app_GenAddress.NetworkID = NETWORK_ID_BROADCAST; > > app_GenAddress.DeviceID = DEVICE_ID_BROADCAST; > > *switch* (stepStateNoConfig) { > > *case* /app_NOCONFIGSTEP_BASECPU/: > > app_GenAddress.DeviceType = DEVTYPE_WS_BASE_CPU; > > stepStateNoConfig = /app_NOCONFIGSTEP_EXTENDER/; > > *break*; > > *case* /app_NOCONFIGSTEP_EXTENDER/: > > app_GenAddress.DeviceType = DEVTYPE_WS_EXTENDER; > > stepStateNoConfig = /app_NOCONFIGSTEP_BASECPU/; > > *break*; > > } /* switch */ > > //WISP_Put_Flags (configMsg, 0); > > WISP_Put_Flags (configMsg, 0); > > This code is part of a larger function. > > A little explanation of the code: > > configMsg pointer to the same type as the array app_RS232_TX_Buffers > > app_TXIncomming the index of the next buffer that I can use to create a > message that must be transmitted via the RS-232 port. > > app_GenAddress a structure that can contain an address as we use it > > What I see no is that when the while loop at the beginning is compiled > into the code, everything is running OK, but when I comment it out, so > it is not in de code, the stack check fails, indicating that __bss_end > and __bss_end + 1 no longer have the specific test values. > > Below is the part of the .lst file for both cases. > > With commented out while loop: > > -------------------------------------- > > 585 lds r24,app_TXIncomming > > 586 mul r24,r16 > > 587 012a 84E0 movw r30,r0 > > 588 012c 0E94 0000 clr r1 > > 589 0130 00C0 subi r30,lo8(-(app_RS232_TX_Buffers)) > > 590 sbci r31,hi8(-(app_RS232_TX_Buffers)) > > 592 .LM51: > > 593 0132 8091 0000 ldd r24,Z+1 > > 594 0136 809F tst r24 > > 595 0138 F001 brne .L20 > > 597 013c E050 .LM52: > > 598 013e F040 sts app_GenAddress,__zero_reg__ > > 600 .LM53: > > 601 0140 8181 sts (app_GenAddress+2)+1,__zero_reg__ > > 602 0142 8823 sts app_GenAddress+2,__zero_reg__ > > 604 .LM54: > > 605 tst r17 > > 606 0146 1092 0000 brne .L45 > > 608 .LM55: > > 609 014a 1092 0000 sts app_GenAddress+1,r15 > > 610 014e 1092 0000 ldi r17,lo8(1) > > 611 .L21: > > 613 0152 1123 .LM56: > > 614 0154 01F4 movw r24,r30 > > 615 ldi r22,lo8(0) > > 616 call WISP_Put_Flags > > With while loop in place: > > ----------------------------- > > 583 0126 0E94 0000 .LM50: > > 584 012a 00C0 lds r24,app_RS232_TX_Buffers+1 > > 585 tst r24 > > 586 012c 8091 0000 brne .L21 > > 588 .LM51: > > 589 sts app_GenAddress,__zero_reg__ > > 591 0132 01F4 .LM52: > > 592 sts (app_GenAddress+2)+1,__zero_reg__ > > 593 sts app_GenAddress+2,__zero_reg__ > > 595 0138 8823 .LM53: > > 596 013a 01F4 tst r17 > > 597 brne .L47 > > 599 013c 1092 0000 .LM54: > > 600 sts app_GenAddress+1,r16 > > 601 ldi r17,lo8(1) > > 602 0140 1092 0000 .L22: > > 604 .LM55: > > 605 ldi r24,lo8(app_RS232_TX_Buffers) > > 606 0148 1123 ldi r25,hi8(app_RS232_TX_Buffers) > > 607 014a 01F4 ldi r22,lo8(0) > > 608 call WISP_Put_Flags > > When I leave the while loop in the code, the code is smaller than > without the while loop, which seems strange, because the while loop has > no effect on the actual code. > > I am using the latest WinAVR with AVR-GCC 4.3.3 at the moment, but I > started with the previous version AVR-GCC 4.3.2, which did the exact > same thing. > > Optimisation is set to size, I am using an ATMega168. Optimisations that > I use are : > > -mcall-prologues, -ffunction-sections, -fdata-sections, > -fno-free-loop-optimize, -fno-inline, -fno-tree-scev-cprop, -fpack-struct > > This seems to give me the smallest code, which is what I need, because I > am almost at the limit of code space. > > The most simple solution would be to just keep the while loop in the > code, but since it does nothing, it is a strange piece of code to keep > in my application and what other parts of the code would have similar > problems and would also require something like this ?! > > Does anyone know what is going wrong here ? > > Greetings, > > Han > > --- > > Han Hoekstra > > Software Engineer > > Wireless Value B.V. > Waanderweg 30a > 7812 HZ Emmen > Tel: +31-591-633200 > Fax: +31-591-631197 > Web: www.wirelessvalue.nl > > > > __________ Information from ESET NOD32 Antivirus, version of virus > signature database 4827 (20100202) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.eset.com > > > > _______________________________________________ > AVR-GCC-list mailing list > AVR-GCC-list@nongnu.org > http://lists.nongnu.org/mailman/listinfo/avr-gcc-list From MAILER-DAEMON Tue Feb 02 08:08:52 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcIUu-0003Bh-1N for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 08:08:52 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcIUs-0003B7-75 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 08:08:50 -0500 Received: from [199.232.76.173] (port=46922 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcIUr-0003Ak-Ot for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 08:08:49 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcIUp-0006DT-Qx for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 08:08:49 -0500 Received: from mx20.gnu.org ([199.232.41.8]:31882) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NcIUk-00062P-SU for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 08:08:47 -0500 Received: from tfcoev.han-solo.net ([83.138.67.47]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcITj-0008FU-UH for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 08:07:40 -0500 Received: from pcd080702 (a80-126-132-138.adsl.xs4all.nl [80.126.132.138]) by tfcoev.han-solo.net (8.13.6/8.13.6) with ESMTP id o12Cultw014032; Tue, 2 Feb 2010 13:56:55 +0100 From: "Han Hoekstra" To: "'Wouter van Gulik'" References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> <4B68154A.9000003@xs4all.nl> Subject: RE: [avr-gcc-list] Strange compile behaviour Date: Tue, 2 Feb 2010 13:57:52 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcqkADDZINSIjzvpQpqGryWVBMKvSAABfYNg In-Reply-To: <4B68154A.9000003@xs4all.nl> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-detected-operating-system: by mx20.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 13:08:50 -0000 > > What I see no is that when the while loop at the beginning is compiled > > into the code, everything is running OK, but when I comment it out, so > > it is not in de code, the stack check fails, indicating that __bss_end > > and __bss_end + 1 no longer have the specific test values. > > > > If you are using interrupts than you might (by accident) be waiting for > the moment that no interrupts are being executed. And thus no extra > stack usage during your function execution. > > The code size increment is due to a smart optimization. You force > app_TXIncomming to be zero before continuing, gcc notes it and does not > do a multiply that saves some pointer calculation and therefore space. > So your loop is doing something after all ;) > > This also indicates app_TXIncomming as not being volatile? Or a gcc > optimizer bug. > > HTH, > > Wouter Ok, I did not expect AVR-GCC to be so smart that it would omit the pointer calculations, because the while loop would cause app_TXIncomming to be 0, that is nice optimizing. However, what I don't understand is that the while loop does not cause some stack overflow, because I have decreased the array to be only a single element, so app_TXIncomming is always 0, so the while loop should therefore never loop. It is true that there are a number of interrupts running in the background, but they run in both cases, so that should not make a difference. Oh and yes, app_TXIncomming is not volatile, making it volatile does not change the behavior, the code always sees a stack overflow when the while loop is commented out and no stack overflow when the while loop is included. I will continue to trace my problem, the issue with the difference in generated assembly is now clear to me, I can cross that of my list of things to look at. Thanks for the explanation. Greetings, Han __________ Information from ESET NOD32 Antivirus, version of virus signature database 4827 (20100202) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com From MAILER-DAEMON Tue Feb 02 10:08:15 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcKMQ-0002pa-HZ for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 10:08:14 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcKMN-0002nh-F3 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 10:08:11 -0500 Received: from [199.232.76.173] (port=59837 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcKMM-0002mw-6U for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 10:08:10 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcKMI-0005e9-8z for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 10:08:09 -0500 Received: from lo.gmane.org ([80.91.229.12]:44139) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcKMH-0005dz-Q7 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 10:08:06 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NcKMG-0006jJ-7x for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 16:08:04 +0100 Received: from 81-29-46-32.ipc21.adsl.hesbynett.no ([81.29.46.32]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Feb 2010 16:08:04 +0100 Received: from david by 81-29-46-32.ipc21.adsl.hesbynett.no with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 02 Feb 2010 16:08:04 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: avr-gcc-list@nongnu.org From: David Brown Date: Tue, 02 Feb 2010 16:07:13 +0100 Lines: 58 Message-ID: References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> <4B68154A.9000003@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 81-29-46-32.ipc21.adsl.hesbynett.no User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100111 Lightning/1.0b1 Thunderbird/3.0.1 In-Reply-To: Sender: news X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: [avr-gcc-list] Re: Strange compile behaviour X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 15:08:12 -0000 On 02/02/2010 13:57, Han Hoekstra wrote: >>> What I see no is that when the while loop at the beginning is compiled >>> into the code, everything is running OK, but when I comment it out, so >>> it is not in de code, the stack check fails, indicating that __bss_end >>> and __bss_end + 1 no longer have the specific test values. >>> >> >> If you are using interrupts than you might (by accident) be waiting for >> the moment that no interrupts are being executed. And thus no extra >> stack usage during your function execution. >> >> The code size increment is due to a smart optimization. You force >> app_TXIncomming to be zero before continuing, gcc notes it and does not >> do a multiply that saves some pointer calculation and therefore space. >> So your loop is doing something after all ;) >> >> This also indicates app_TXIncomming as not being volatile? Or a gcc >> optimizer bug. >> >> HTH, >> >> Wouter > > Ok, I did not expect AVR-GCC to be so smart that it would omit the pointer > calculations, because the while loop would cause app_TXIncomming to be 0, > that is nice optimizing. > avr-gcc is often surprisingly smart! > However, what I don't understand is that the while loop does not cause some > stack overflow, because I have decreased the array to be only a single > element, so app_TXIncomming is always 0, so the while loop should therefore > never loop. > Are you absolutely sure that app_TXIncomming is always 0? Perhaps you have a bug in the code that sets it or that calls this code. mvh., David > It is true that there are a number of interrupts running in the background, > but they run in both cases, so that should not make a difference. > Oh and yes, app_TXIncomming is not volatile, making it volatile does not > change the behavior, the code always sees a stack overflow when the while > loop is commented out and no stack overflow when the while loop is included. > > I will continue to trace my problem, the issue with the difference in > generated assembly is now clear to me, I can cross that of my list of things > to look at. Thanks for the explanation. > > Greetings, > Han > > From MAILER-DAEMON Tue Feb 02 12:41:27 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcMkh-0006Zg-MP for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 12:41:27 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcMkg-0006Z8-7M for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 12:41:26 -0500 Received: from [199.232.76.173] (port=37346 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcMkf-0006Yr-I6 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 12:41:25 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcMke-0006zu-1e for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 12:41:25 -0500 Received: from mail-vw0-f45.google.com ([209.85.212.45]:54635) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcMkd-0006zF-KN for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 12:41:23 -0500 Received: by vws15 with SMTP id 15so104758vws.4 for ; Tue, 02 Feb 2010 09:41:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=Bu6hS9aC4jtgL2fbgnFCE8Ux3yQ1Tt3L/PloDTISpjQ=; b=NYx3Ktorq3RiOngCWCfuJuxcibw7pZi5tcBDX1HFnrrwrxaV0blas2e5rWK3Ibaoey SbppJH4Hg7BgXk+UWG4EG3Ifok8FcI5rR+TlcF9/KwL4AO62m5I5SmlNpvHevUC9MEoi HYwNEsYfTPnP3uyk0gENS7q9gw2YxM1dOJ/xQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=hOPSPHqAEt5NtwL6bYCSHLNeZOJFJDyrCx3dpuU6C76WRrruHAtkhcLhCPHMSQV8rr Yq9MLi/+vOFscB97kVXmfMdrJHJkS70BfFXTT8utIyW4nnuw6XG+s8fdscPbjKlxJvqu cPwrcL6TlZ68BZKgRfYinlezlTj9ByDxKGYn0= MIME-Version: 1.0 Received: by 10.220.122.88 with SMTP id k24mr8351268vcr.19.1265132481541; Tue, 02 Feb 2010 09:41:21 -0800 (PST) In-Reply-To: References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> <4B68154A.9000003@xs4all.nl> Date: Tue, 2 Feb 2010 09:41:21 -0800 Message-ID: Subject: Re: [avr-gcc-list] Strange compile behaviour From: Dave Hylands To: Han Hoekstra Content-Type: text/plain; charset=ISO-8859-1 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 17:41:26 -0000 Hi Han, On Tue, Feb 2, 2010 at 4:57 AM, Han Hoekstra wrote: > However, what I don't understand is that the while loop does not cause some > stack overflow, because I have decreased the array to be only a single > element, so app_TXIncomming is always 0, so the while loop should therefore > never loop. Since the code size changes, lots of things that are stored on the stack will also change (i.e. return addresses, addresses of global variables etc). So the content of uninitialized variable may change as well. It's also possible to have a stack overwrite which doesn't affect all bytes of the stack. For example, let's suppose I declared a local (i.e. stack variable) char buf[20]; And the last two bytes happened to line up with your 2 checker bytes. If you never actually wrote to those bytes (maybe you only use the first 10 bytes of buf), you still have a stack overflow, but not one that is detected. Changing the code size will cause the location of your checker bytes to also change, and that may be enough to have it now collide. You may wish to try filling all of the stack space with a fill byte, and then checking to see how many fill bytes are untouched. It still suffers from the problem I mentioned above, but it can often tell you if you're getting close to filling the stack. -- Dave Hylands Shuswap, BC, Canada http://www.DaveHylands.com/ From MAILER-DAEMON Tue Feb 02 13:18:45 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NcNKn-0002jp-Lg for mharc-avr-gcc-list@gnu.org; Tue, 02 Feb 2010 13:18:45 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NcNKk-0002ii-0a for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:18:42 -0500 Received: from [199.232.76.173] (port=36299 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NcNKj-0002iP-JL for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:18:41 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NcNKh-0006P0-3r for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:18:41 -0500 Received: from mx20.gnu.org ([199.232.41.8]:36047) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NcNKg-0006Kq-N6 for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:18:38 -0500 Received: from gw.kuantic.com ([213.244.28.44]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NcNKa-0007G7-HR for avr-gcc-list@nongnu.org; Tue, 02 Feb 2010 13:18:33 -0500 Received: from [10.0.0.4] (pcbernard.kuantic.com [10.0.0.4]) by gw.kuantic.com (8.14.3/8.14.3) with ESMTP id o12IHV4P013217; Tue, 2 Feb 2010 19:17:31 +0100 Message-ID: <4B686C74.207@kuantic.com> Date: Tue, 02 Feb 2010 19:18:28 +0100 From: =?ISO-8859-1?Q?Bernard_Fouch=E9?= Organization: Kuantic User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) MIME-Version: 1.0 To: Dave Hylands Subject: Re: [avr-gcc-list] Strange compile behaviour References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> <4B68154A.9000003@xs4all.nl> In-Reply-To: Content-Type: multipart/alternative; boundary="------------080606060704080609010501" X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (gw.kuantic.com [213.244.28.44]); Tue, 02 Feb 2010 19:17:32 +0100 (CET) X-detected-operating-system: by mx20.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2010 18:18:42 -0000 This is a multi-part message in MIME format. --------------080606060704080609010501 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi All. I still have at hand that nice perl script from John Regher and revised by Xuejun Yang (stack.pl) that I hacked a bit to have it working correctly for GCC 4.3.0. It takes a .elf file as input and explores all the possible execution paths to return the maximum stack usage, taking into account stack usage by all routines running under interrupts. It also finds recursion (yet another fun way to break the stack). It needs some tweaking from a compiler version to another since it locates stack usage by looking at patterns in the (dis)assembly code: if the generated code changes regarding stack usage, the script must be fixed. Since I stick with 4.3.0 at the moment, that's why the script is said to work with this version of avr-gcc. Current targets are atmega64/1280/1281 & at90can128 and it's easy to add new ones (a target only defines memory & vector sizes). When I'm about to release some software, I now always check the elf file with this script, it has already helped me find & kill nasty bugs. I periodically write about this tool here, and usually nobody cares about it. So I try one more time, maybe I'll get more luck in 2010 ;-) Next try in 2011 if I see again people running after stack overflow bugs... I can send the script to whoever wants it! Bernard Dave Hylands wrote: > Hi Han, > > On Tue, Feb 2, 2010 at 4:57 AM, Han Hoekstra > wrote: > >> However, what I don't understand is that the while loop does not cause some >> stack overflow, because I have decreased the array to be only a single >> element, so app_TXIncomming is always 0, so the while loop should therefore >> never loop. >> > > Since the code size changes, lots of things that are stored on the > stack will also change (i.e. return addresses, addresses of global > variables etc). So the content of uninitialized variable may change as > well. > > It's also possible to have a stack overwrite which doesn't affect all > bytes of the stack. > > For example, let's suppose I declared a local (i.e. stack variable) > > char buf[20]; > > And the last two bytes happened to line up with your 2 checker bytes. > If you never actually wrote to those bytes (maybe you only use the > first 10 bytes of buf), you still have a stack overflow, but not one > that is detected. > > Changing the code size will cause the location of your checker bytes > to also change, and that may be enough to have it now collide. > > You may wish to try filling all of the stack space with a fill byte, > and then checking to see how many fill bytes are untouched. It still > suffers from the problem I mentioned above, but it can often tell you > if you're getting close to filling the stack. > > --------------080606060704080609010501 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi All.

I still have at hand that nice perl script from John Regher and revised by Xuejun Yang (stack.pl) that I hacked a bit to have it working correctly for GCC 4.3.0. It takes a .elf file as input and explores all the possible execution paths to return the maximum stack usage, taking into account stack usage by all routines running under interrupts. It also finds recursion (yet another fun way to break the stack).

It needs some tweaking from a compiler version to another since it locates stack usage by looking at patterns in the (dis)assembly code: if the generated code changes regarding stack usage, the script must be fixed. Since I stick with 4.3.0 at the moment, that's why the script is said to work with this version of avr-gcc.

Current targets are atmega64/1280/1281 & at90can128 and it's easy to add new ones (a target only defines memory & vector sizes). When I'm about to release some software, I now always check the elf file with this script, it has already helped me find & kill nasty bugs.

I periodically write about this tool here, and usually nobody cares about it.  So I try one more time, maybe I'll get more luck in 2010 ;-) Next try in 2011 if I see again people running after stack overflow bugs...

I can send the script to whoever wants it!

    Bernard

Dave Hylands wrote:
Hi Han,

On Tue, Feb 2, 2010 at 4:57 AM, Han Hoekstra
<Han.Hoekstra@wirelessvalue.nl> wrote:
  
However, what I don't understand is that the while loop does not cause some
stack overflow, because I have decreased the array to be only a single
element, so app_TXIncomming is always 0, so the while loop should therefore
never loop.
    

Since the code size changes, lots of things that are stored on the
stack will also change (i.e. return addresses, addresses of global
variables etc). So the content of uninitialized variable may change as
well.

It's also possible to have a stack overwrite which doesn't affect all
bytes of the stack.

For example, let's suppose I declared a local (i.e. stack variable)

char buf[20];

And the last two bytes happened to line up with your 2 checker bytes.
If you never actually wrote to those bytes (maybe you only use the
first 10 bytes of buf), you still have a stack overflow, but not one
that is detected.

Changing the code size will cause the location of your checker bytes
to also change, and that may be enough to have it now collide.

You may wish to try filling all of the stack space with a fill byte,
and then checking to see how many fill bytes are untouched. It still
suffers from the problem I mentioned above, but it can often tell you
if you're getting close to filling the stack.

  
--------------080606060704080609010501-- From MAILER-DAEMON Wed Feb 03 10:41:46 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NchMQ-0005qA-OM for mharc-avr-gcc-list@gnu.org; Wed, 03 Feb 2010 10:41:46 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NchMO-0005pD-Nj for avr-gcc-list@nongnu.org; Wed, 03 Feb 2010 10:41:44 -0500 Received: from [199.232.76.173] (port=55008 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NchMO-0005oq-7c for avr-gcc-list@nongnu.org; Wed, 03 Feb 2010 10:41:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NchMM-0005j0-Gt for avr-gcc-list@nongnu.org; Wed, 03 Feb 2010 10:41:43 -0500 Received: from tfcoev.han-solo.net ([83.138.67.47]:53263) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NchML-0005hu-Um for avr-gcc-list@nongnu.org; Wed, 03 Feb 2010 10:41:42 -0500 X-KSD: Received: from pcd080702 (static.kpn.net [188.202.102.17] (may be forged)) by tfcoev.han-solo.net (8.13.6/8.13.6) with ESMTP id o13FfVbL022596 for ; Wed, 3 Feb 2010 16:41:31 +0100 From: "Han Hoekstra" To: References: <4BD4476E9CA54BF3A66FC3D37E3310F8@pcd080702> <4B68154A.9000003@xs4all.nl> Subject: RE: [avr-gcc-list] Re: Strange compile behaviour Date: Wed, 3 Feb 2010 16:42:35 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcqkGornRBk64QYDQKu6W2JzzJcKmgAy0jfA In-Reply-To: X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Feb 2010 15:41:45 -0000 I want to thank everyone that helped me with my problem. I finally found what the problem was and of course it was my own doing. The piece of code causing the problem is the following: void main_MyInit (void) __attribute__((naked)) __attribute__ ((section (".init1"))); void main_MyInit (void) { uint8_t *p; for (p = &__data_start; p < &__heap_end; p++) { *p = GLOBAL_RAM_FILL_BYTE; } /* for */ } /* main_MyInit */ This code I have taken from another project we have here which uses an ATMega128 with external RAM. And for the external RAM to be used we specified this '-Wl,--defsym=__heap_end=0x808fff' in the linker settings, which causes the __heap_end to have a location in memory. But __heap_end does not point to the end of RAM in the ATMega168 project, it has the value 00000000, so the loop should not do anything. Changing the function to : void main_MyInit (void) __attribute__((naked)) __attribute__ ((section (".init1"))); void main_MyInit (void) { uint8_t *p; for (p = &__data_start; p < (uint8_t *) RAMEND; p++) { *p = GLOBAL_RAM_FILL_BYTE; } /* for */ } /* main_MyInit */ made everything work. I have no idea why it is ok now, since I explicitly set __bss_end [0] and __bss_end [1] to GLOBAL_RAM_FILL_BYTE before ever checking it and why the loop : while (app_TXIncomming != 0) { } /* while */ Seemed to fix the problem is also not clear to me, because in the test situation app_TXIncomming would never be anything else than 0. But my code works again now, so I am happy for the moment, I can continue with my project and maybe later check out what was going on with the wrong code, if I have the time. Again, thanx all. Greetings, Han __________ Information from ESET NOD32 Antivirus, version of virus signature database 4831 (20100203) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com From MAILER-DAEMON Fri Feb 05 01:44:43 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NdHvm-000774-UZ for mharc-avr-gcc-list@gnu.org; Fri, 05 Feb 2010 01:44:43 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NdHvj-00076Y-Qx for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 01:44:39 -0500 Received: from [199.232.76.173] (port=48123 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NdHvj-00076L-4B for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 01:44:39 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NdHvh-0005kY-Ex for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 01:44:38 -0500 Received: from mail.gmx.net ([213.165.64.20]:54406) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1NdHvg-0005kJ-VB for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 01:44:37 -0500 Received: (qmail invoked by alias); 05 Feb 2010 06:44:34 -0000 Received: from p5B2E20BC.dip0.t-ipconnect.de (EHLO [192.168.1.206]) [91.46.32.188] by mail.gmx.net (mp011) with SMTP; 05 Feb 2010 07:44:34 +0100 X-Authenticated: #59792452 X-Provags-ID: V01U2FsdGVkX1//u51k2e//Bx6u0JfrJish7ZgSSwNTywWqNRrORw bmkm7dNznMYdiI Message-ID: <4B6BBE51.6000608@gmx.de> Date: Fri, 05 Feb 2010 07:44:33 +0100 From: Johannes Bauer User-Agent: Thunderbird 2.0.0.23 (X11/20090817) MIME-Version: 1.0 To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.58999999999999997 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: [avr-gcc-list] Rounded integral division in preprocessor X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Johannes.Bauer@innovations.de List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2010 06:44:40 -0000 Dear list, I'm trying to do rounded (opposed to truncated) integer division with avr-gcc with using only preprocessor magic. This proves to be difficult: The current code I'm using is #define __IDIV(x, y) (long)(((long)x + ((long)y / 2L)) / (long)y) #define IDIV(x, y) (__IDIV((x), (y))) While this works like a charm inside the actual program: void foo(void) { unsigned char x = IDIV(100, 3); PORTA = x; } It will not when used in preprocessor context: #if IDIV(100, 3) #warning "Moo" #endif Because it chokes on the casts: RS232.h:40:16: error: missing binary operator before token "(" Is there another way to do it? Kind regards, Johannes From MAILER-DAEMON Fri Feb 05 05:54:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NdLpm-0007jQ-BS for mharc-avr-gcc-list@gnu.org; Fri, 05 Feb 2010 05:54:46 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NdLpj-0007hS-Rn for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 05:54:43 -0500 Received: from [199.232.76.173] (port=36258 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NdLpj-0007gs-6q for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 05:54:43 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NdLpi-0002Jf-BO for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 05:54:42 -0500 Received: from mail-bw0-f225.google.com ([209.85.218.225]:48389) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NdLph-0002JP-FU for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 05:54:42 -0500 Received: by bwz25 with SMTP id 25so1636734bwz.17 for ; Fri, 05 Feb 2010 02:54:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=5Og3m0Sindra0A0W16KGoX/6OU3TlAI0qgdW1ejgrWI=; b=tqukc05tunvOpTwANiKnGS5ZSKlIGaThECe6NEEJBkH07Qod5hKCQx++a6qWTb+53q FA1dbVJq9NtVitGzF6roh/neJ9AbgOIkz43rYxNRAGrqB0phx1NWADHe0TQ1HxagTpX/ /lmIZKz3Cez7Cor2oVM3890VEfTOtf46G/Cck= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=BGMoECUm6Jtyh4P0FG1UTAlEzaMaAV4O/WupKPQ8ZgyHDMzW/ygq2PSQJQGaFPwmy3 mCitOQEHRyRPuIAOVZyrfnM5hpthCq0V0mtjbPMvUzKu4YuwV2b3buFeJ+dBzldCOseD OT+OUw5EzwERcDtYLg84ogxzQ82mt6tynq0Gc= MIME-Version: 1.0 Received: by 10.204.32.196 with SMTP id e4mr1559838bkd.131.1265367279125; Fri, 05 Feb 2010 02:54:39 -0800 (PST) In-Reply-To: <4B6BBE51.6000608@gmx.de> References: <4B6BBE51.6000608@gmx.de> Date: Fri, 5 Feb 2010 05:54:39 -0500 Message-ID: Subject: Re: [avr-gcc-list] Rounded integral division in preprocessor From: Bob Paddock To: Johannes.Bauer@innovations.de Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2010 10:54:44 -0000 On Fri, Feb 5, 2010 at 1:44 AM, Johannes Bauer wrote: > Dear list, > > I'm trying to do rounded (opposed to truncated) integer division with > avr-gcc with using only preprocessor magic. This proves to be difficult: = The > current code I'm using is > > #define __IDIV(x, y) =A0 =A0(long)(((long)x + ((long)y / 2L)) / (long)y) > #define IDIV(x, y) =A0 =A0 =A0(__IDIV((x), (y))) > Is there another way to do it? /* * #define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16L)-1) * * When doing integer divide it is usually better to round to the nearest * integer, rather than to the lowest (which the above expression does). * * Add 0.5 (i.e. half the value of the denominator) * to the numerator before the division. This can be achieved in the * following way: * * #define UART_BAUD_SELECT ((F_CPU + UART_BAUD_RATE * 8L) /\ * (UART_BAUD_RATE * 16L) - 1) * - Neil Johnson AVR-GCC List */ #define UART_BAUD_CALCULATE(UART_BAUD_RATE) ((F_CPU + UART_BAUD_RATE * 8L) / (UART_BAUD_RATE * 16L) - 1) --=20 http://www.wearablesmartsensors.com/ http://www.softwaresafety.net/ http://www.designer-iii.com/ http://www.unusualresearch.com/ From MAILER-DAEMON Fri Feb 05 10:13:48 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NdPsS-0000dG-8n for mharc-avr-gcc-list@gnu.org; Fri, 05 Feb 2010 10:13:48 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NdPsP-0000cQ-Jb for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 10:13:45 -0500 Received: from [199.232.76.173] (port=39523 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NdPsO-0000cC-J9 for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 10:13:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NdPsN-00070u-E5 for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 10:13:44 -0500 Received: from col0-omc2-s13.col0.hotmail.com ([65.55.34.87]:45086) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NdPsN-00070i-6a for avr-gcc-list@nongnu.org; Fri, 05 Feb 2010 10:13:43 -0500 Received: from COL103-W65 ([65.55.34.73]) by col0-omc2-s13.col0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 5 Feb 2010 07:13:41 -0800 Message-ID: X-Originating-IP: [204.54.36.245] From: Dave Hansen To: , Subject: RE: [avr-gcc-list] Rounded integral division in preprocessor Date: Fri, 5 Feb 2010 10:13:41 -0500 Importance: Normal In-Reply-To: <4B6BBE51.6000608@gmx.de> References: <4B6BBE51.6000608@gmx.de> Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginalArrivalTime: 05 Feb 2010 15:13:41.0480 (UTC) FILETIME=[CD093E80:01CAA675] X-detected-operating-system: by monty-python.gnu.org: Windows 2000 SP4, XP SP1+ Cc: X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Feb 2010 15:13:45 -0000 From: JB.Imm@gmx.de: > I'm trying to do rounded (opposed to truncated) integer division with > avr-gcc with using only preprocessor magic. This proves to be difficult: > The current code I'm using is > > #define __IDIV(x=2C y) (long)(((long)x + ((long)y / 2L)) / (long)y) > #define IDIV(x=2C y) (__IDIV((x)=2C (y))) =20 I'm not sure why you're getting the error message=2C but the above seems un= necessarily complex. For what it's worth=2C the following should have equi= valent functionality=2C and does not generate the error: =20 #define IDIV(x=2Cy) ( ((x)+(y)/2L)/(y) ) =20 Regards=2C =20 -=3DDave =20 _________________________________________________________________ Your E-mail and More On-the-Go. Get Windows Live Hotmail Free. http://clk.atdmt.com/GBL/go/201469229/direct/01/= From MAILER-DAEMON Sat Feb 13 12:35:58 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NgLuQ-0007js-Kw for mharc-avr-gcc-list@gnu.org; Sat, 13 Feb 2010 12:35:58 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NgLuO-0007ia-4z for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 12:35:56 -0500 Received: from [199.232.76.173] (port=45759 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NgLuN-0007iP-NN for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 12:35:55 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NgLuL-0007DN-WD for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 12:35:55 -0500 Received: from relay.eltel.net ([81.9.0.130]:33844) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NgLuL-0007DD-CS for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 12:35:53 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NgLuF-00074Y-VH for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 20:35:47 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 73845504 for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 20:35:47 +0300 Date: Sat, 13 Feb 2010 20:35:44 +0300 From: Andrew Zabolotny To: Message-ID: <20100213203544.521b8480@zap.home.lan> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Feb 2010 17:35:56 -0000 --Sig_/Rfo49G=/0R0oUkrUtSYxzWi Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hello! I'm trying to implement some mumbo-jumbo technique, which in the end involves emitting asm() instructions like these: .byte 2f-1f 1: .ascii "somestring" 2: As you may understand, it's not something extra-complex, I just want to put a counted string in the .text section. However, avr-as will barf at the above expression like this: Error: illegal relocation size: 1 Well, a relocation is not really needed here, because it gets optimized out somehow in the internals of gas. But I can understand that at some early stage gas allocates a relocation item, and that's where the error pops up. I understand that avr-as could be patched to support 8-bit relocations (I even found where - gas/config/tc-avr.c, function avr_cons_fix_new()). But since I want others to be able to use my code as well, and taking into account the longetivity of a typical biggy-opensource patch walkthrough it's not a practical solution. So, is there any other way to do what I want? --=20 Andrew --Sig_/Rfo49G=/0R0oUkrUtSYxzWi Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt24vEACgkQ6/fZ6v/j5ffK9QCcDfa6+MHZarQOTLZxCuim6sEt WiwAniDzsK8CGbRQkW+vm2KRu+foghQ1 =dAJ8 -----END PGP SIGNATURE----- --Sig_/Rfo49G=/0R0oUkrUtSYxzWi-- From MAILER-DAEMON Sat Feb 13 19:12:15 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NgS5v-0007U1-HF for mharc-avr-gcc-list@gnu.org; Sat, 13 Feb 2010 19:12:15 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NgS5t-0007TT-SD for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 19:12:13 -0500 Received: from [199.232.76.173] (port=33567 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NgS5t-0007TH-FI for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 19:12:13 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NgS5s-0001uD-7B for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 19:12:13 -0500 Received: from ipmail05.adl6.internode.on.net ([150.101.137.143]:15888) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NgS5r-0001u7-Oz for avr-gcc-list@nongnu.org; Sat, 13 Feb 2010 19:12:12 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvsEAJ7Odkt20TMQ/2dsb2JhbACbH3W7KYRbBA Received: from ppp118-209-51-16.lns20.mel4.internode.on.net (HELO ratatosk) ([118.209.51.16]) by ipmail05.adl6.internode.on.net with ESMTP; 14 Feb 2010 10:42:04 +1030 Received: by ratatosk (Postfix, from userid 1000) id 7FEBB41C97A; Sun, 14 Feb 2010 11:12:03 +1100 (EST) Date: Sun, 14 Feb 2010 11:12:03 +1100 From: Erik Christiansen To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100214001203.GA5473@ratatosk> References: <20100213203544.521b8480@zap.home.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100213203544.521b8480@zap.home.lan> User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: dvalin@internode.on.net List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Feb 2010 00:12:14 -0000 On Sat, Feb 13, 2010 at 08:35:44PM +0300, Andrew Zabolotny wrote: > > .byte 2f-1f > 1: .ascii "somestring" > 2: This has been a source of occasional irritation for more than half a decade now. Klaus Rudolph fixed a couple of cases in a patch, back in 2004, but this one remains. > I understand that avr-as could be patched to support 8-bit relocations > (I even found where - gas/config/tc-avr.c, function > avr_cons_fix_new()). Yes, that file rings bells. > So, is there any other way to do what I want? If you have no objection to each message having global labels, it is not only achievable (via the ldi or ldd relocations), but the need to store the string length is avoided: .section .text ; In the code somewhere, we compute the length when it's needed: ldi r16,(end_msg1 - msg1) ; or, depending on needs: ldd r20,Y+(end_msg1 - msg1) msg1: .ascii "somestring" end_msg1: Does that come close enough to meeting your needs? Erik -- "There is nothing new under the sun, but there are lots of old things we don't know yet." -Ambrose Bierce From MAILER-DAEMON Sun Feb 14 05:13:21 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NgbTd-0004hJ-E7 for mharc-avr-gcc-list@gnu.org; Sun, 14 Feb 2010 05:13:21 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NgbTb-0004gB-2C for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:13:19 -0500 Received: from [199.232.76.173] (port=58465 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NgbTa-0004fi-G8 for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:13:18 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NgbTZ-0008JU-MB for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:13:18 -0500 Received: from relay.eltel.net ([81.9.0.130]:51704) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NgbTZ-0008JA-5E for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:13:17 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NgbTW-0006XU-B4; Sun, 14 Feb 2010 13:13:14 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 73916283; Sun, 14 Feb 2010 13:13:14 +0300 Date: Sun, 14 Feb 2010 13:13:13 +0300 From: Andrew Zabolotny To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100214131313.0a8b8f26@zap.home.lan> In-Reply-To: <20100214001203.GA5473@ratatosk> References: <20100213203544.521b8480@zap.home.lan> <20100214001203.GA5473@ratatosk> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Feb 2010 10:13:19 -0000 --Sig_/tovqKiUoGBbHzlE3=.PYiCo Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Sun, 14 Feb 2010 11:12:03 +1100 Erik Christiansen wrote: > If you have no objection to each message having global labels, it is > not only achievable (via the ldi or ldd relocations), but the need to > store the string length is avoided: >=20 > .section .text > =20 > ; In the code somewhere, we compute the length when it's needed: > ldi r16,(end_msg1 - msg1) > ; or, depending on needs: > ldd r20,Y+(end_msg1 - msg1) > =20 > msg1: .ascii "somestring" > end_msg1: >=20 > Does that come close enough to meeting your needs? Unfortunately, I can't imagine how this would help me. Well, to be concrete, I'm implementing a simple FORTH virtual machine. A FORTH "word" (it's what we call subroutines in other programming languages) begins with a header, and this header contains the length of the name (in fact, the length is contained in lower 5 bits, upper 3 bits are reserved for various flags) before the name itself. This all works on x86 and x86_64 just fine, problem arised when I've tried to port it to avr. I can try to make a binutils patch, but I'm not even sure whom I need to contact to push the patch upstream. --=20 Andrew --Sig_/tovqKiUoGBbHzlE3=.PYiCo Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt3zLkACgkQ6/fZ6v/j5fednQCeLZOGaUGAPxtS3POJFI2FdDDh BuwAnRa0lXtxiOJDTMe8hz2ihcL+cKUg =r3H/ -----END PGP SIGNATURE----- --Sig_/tovqKiUoGBbHzlE3=.PYiCo-- From MAILER-DAEMON Sun Feb 14 05:48:40 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Ngc1n-0004du-Vh for mharc-avr-gcc-list@gnu.org; Sun, 14 Feb 2010 05:48:40 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ngc1l-0004d5-Jl for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:48:37 -0500 Received: from [199.232.76.173] (port=44295 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ngc1k-0004cn-Qf for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:48:36 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Ngc1j-0001Lu-DK for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:48:36 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:22201 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ngc1j-0001Lp-13 for avr-gcc-list@nongnu.org; Sun, 14 Feb 2010 05:48:35 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1EAkJAd009851; Sun, 14 Feb 2010 02:46:19 -0800 (PST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] 8-bit relocations on AVR X-MimeOLE: Produced By Microsoft Exchange V6.5 Date: Sun, 14 Feb 2010 03:47:52 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> In-Reply-To: <20100214131313.0a8b8f26@zap.home.lan> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] 8-bit relocations on AVR Thread-Index: AcqtXwIx/6rFTWVnQVSvb1UlfuW4MwAA+PGA References: <20100213203544.521b8480@zap.home.lan><20100214001203.GA5473@ratatosk> <20100214131313.0a8b8f26@zap.home.lan> From: "Weddington, Eric" To: "Andrew Zabolotny" , X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Feb 2010 10:48:38 -0000 =20 > -----Original Message----- > From:=20 > avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu.org=20 > [mailto:avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu. > org] On Behalf Of Andrew Zabolotny > Sent: Sunday, February 14, 2010 3:43 PM > To: avr-gcc-list@nongnu.org > Subject: Re: [avr-gcc-list] 8-bit relocations on AVR >=20 > I can try to make a binutils patch, but I'm not even sure whom I need > to contact to push the patch upstream. Me. It depends on if this patch fixes a known bug, or if this is specific to = your Forth implementation. If it is for a bug, then a bug report needs = to be filled out on the Binutils bug database, along with a test case to = show the bug. You can put me into the CC list of the bug report. It also depends on the type of fix and how obvious it is. From MAILER-DAEMON Mon Feb 15 01:13:27 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NguD1-0000RX-9Z for mharc-avr-gcc-list@gnu.org; Mon, 15 Feb 2010 01:13:27 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NguCy-0000Qi-Hn for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 01:13:24 -0500 Received: from [199.232.76.173] (port=56950 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NguCx-0000Q8-Kb for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 01:13:23 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NguCw-0002pI-Mt for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 01:13:23 -0500 Received: from ipmail06.adl6.internode.on.net ([150.101.137.145]:61549) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NguCw-0002p4-8a for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 01:13:22 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvsEAEN0eEt20eWc/2dsb2JhbACbGnW7XIRbBA Received: from ppp118-209-229-156.lns20.mel6.internode.on.net (HELO ratatosk) ([118.209.229.156]) by ipmail06.adl6.internode.on.net with ESMTP; 15 Feb 2010 16:43:15 +1030 Received: by ratatosk (Postfix, from userid 1000) id AF2B120C001; Mon, 15 Feb 2010 17:13:13 +1100 (EST) Date: Mon, 15 Feb 2010 17:13:13 +1100 From: Erik Christiansen To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100215061313.GA5665@ratatosk> References: <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: dvalin@internode.on.net List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Feb 2010 06:13:25 -0000 On Sun, Feb 14, 2010 at 03:47:52AM -0700, Weddington, Eric wrote: > It depends on if this patch fixes a known bug, or if this is specific > to your Forth implementation. AIUI, Andrew's observed failure of avr-as to handle: .byte 2f-1f 1: .ascii "somestring" 2: is a well known bug, even if not recorded. Giving .byte the same address computing ability as ldi has long had, and Klaus Rudolph gave to ldd back in 2004, is rectification of a long-standing generic defect. Erik -- Due to circumstances beyond our control, we regret to inform you that circumstances are beyond our control. --Paul Benoit From MAILER-DAEMON Mon Feb 15 02:27:35 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NgvMk-0002ev-Tj for mharc-avr-gcc-list@gnu.org; Mon, 15 Feb 2010 02:27:35 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NgvMi-0002eo-Gr for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 02:27:32 -0500 Received: from [199.232.76.173] (port=49572 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NgvMh-0002eg-Uz for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 02:27:32 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NgvMg-0003yt-6b for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 02:27:31 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:58511) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NgvMf-0003yR-Ja for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 02:27:30 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id 6770C25; Mon, 15 Feb 2010 08:27:25 +0100 (MET) Mime-Version: 1.0 X-Newsreader: knews 1.0b.1 Organization: Private BSD site, Dresden X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E References: <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> <20100215061313.GA5665@ratatosk> In-Reply-To: <20100215061313.GA5665@ratatosk> From: j@uriah.heep.sax.de (Joerg Wunsch) Subject: Re: [avr-gcc-list] 8-bit relocations on AVR X-Original-Newsgroups: local.avr.gcc To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=us-ascii Message-Id: <20100215072725.6770C25@uriah.heep.sax.de> Date: Mon, 15 Feb 2010 08:27:25 +0100 (MET) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Feb 2010 07:27:32 -0000 Erik Christiansen wrote: > [...] is a well known bug, even if not recorded. It might make Eric's work easier to at least file a bug report for it. Btw., to prove this is really a deficiency, it might suffice to demonstrate that the very same GNU assembler can handle this situation for other architectures pretty well: j@uriah 1836% cat foo.s ..byte 2f - 1f 1: .ascii "Hello, world!" 2: j@uriah 1837% as -o foo.o foo.s j@uriah 1838% objdump -s foo.o foo.o: file format elf32-i386-freebsd Contents of section .text: 0000 0d48656c 6c6f2c20 776f726c 6421 .Hello, world! j@uriah 1839% avr-as -o foo.o foo.s foo.s: Assembler messages: foo.s:1: Error: illegal relocation size: 1 -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) From MAILER-DAEMON Mon Feb 15 16:42:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Nh8iM-0007rP-P0 for mharc-avr-gcc-list@gnu.org; Mon, 15 Feb 2010 16:42:46 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nh8iK-0007q4-R1 for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 16:42:44 -0500 Received: from [199.232.76.173] (port=55556 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nh8iK-0007pr-F0 for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 16:42:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nh8iJ-0003nT-Nz for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 16:42:44 -0500 Received: from relay.eltel.net ([81.9.0.130]:34086) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Nh8iJ-0003nF-8c for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 16:42:43 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1Nh8iF-0007OP-0M; Tue, 16 Feb 2010 00:42:39 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 74289898; Tue, 16 Feb 2010 00:42:38 +0300 Date: Tue, 16 Feb 2010 00:42:37 +0300 From: Andrew Zabolotny To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100216004237.28825b68@zap.home.lan> In-Reply-To: <20100215072725.6770C25@uriah.heep.sax.de> References: <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> <20100215061313.GA5665@ratatosk> <20100215072725.6770C25@uriah.heep.sax.de> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Feb 2010 21:42:45 -0000 --Sig_/S1/Kw0mIPqAcqsNiMLU29br Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Mon, 15 Feb 2010 08:27:25 +0100 (MET) j@uriah.heep.sax.de (Joerg Wunsch) wrote: > Btw., to prove this is really a deficiency, it might suffice to > demonstrate that the very same GNU assembler can handle this situation > for other architectures pretty well: Well, I wouldn't call this a bug, it's rather a enhancement or missing feature. In the case with ldi it was solved with a quick'n'dirty hack (I mean lo8/hi8) I'll see if I can afford a patch. And of course, it won't have anything to do with the FORTH kernel I'm doing, it's just a particular application that hit this problem. --=20 Andrew --Sig_/S1/Kw0mIPqAcqsNiMLU29br Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt5v80ACgkQ6/fZ6v/j5ffRPQCfRzhM4/p0s1Qkx2Mq5B44zuvI fZEAoKcg4c9mfTkAIccr9zx/lXtB2s2R =kQJn -----END PGP SIGNATURE----- --Sig_/S1/Kw0mIPqAcqsNiMLU29br-- From MAILER-DAEMON Mon Feb 15 20:42:02 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhCRu-0001Ln-Gl for mharc-avr-gcc-list@gnu.org; Mon, 15 Feb 2010 20:42:02 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhCRs-0001Lb-1a for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 20:42:00 -0500 Received: from [199.232.76.173] (port=60497 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhCRq-0001LT-LH for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 20:41:58 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhCRo-0001OU-IN for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 20:41:58 -0500 Received: from dpc6682208002.direcpc.com ([66.82.208.2]:55381 helo=anvil.third-harmonic.com) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NhCRm-0001OC-PZ for avr-gcc-list@nongnu.org; Mon, 15 Feb 2010 20:41:56 -0500 Received: from anvil.naka.net (localhost.localdomain [127.0.0.1]) by anvil.third-harmonic.com (8.14.1/8.14.1) with ESMTP id o1G17gMc028059; Mon, 15 Feb 2010 20:07:43 -0500 Message-ID: <4B79EFDE.4050303@third-harmonic.com> Date: Mon, 15 Feb 2010 20:07:42 -0500 From: uhmgawa User-Agent: Thunderbird 2.0.0.9 (X11/20071115) MIME-Version: 1.0 To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-Greylist: delayed 1416 seconds by postgrey-1.27 at monty-python; Mon, 15 Feb 2010 20:41:50 EST Cc: Subject: [avr-gcc-list] Suspect optimizer missed code in avr-gcc 4.4.3.. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: avr@third-harmonic.com List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 01:42:00 -0000 I just built a recent toolchain (avr-gcc 4.4.3, binutils 2.20) in hopes of eliminating what appeared to be a few artifacts apparently escaping optimization even with -Os relative to a 4.0.2 version. Referencing the dump below, use of r25 is superfluous as it is cleared at 0x14c, ANDed with zero at 0x150, and then participates in an additionally unneeded word wide test operation at 0x152: 00000142 : void foo(void) { static unsigned char count; if (++count & 0x3f) 142: 80 91 01 01 lds r24, 0x0101 146: 8f 5f subi r24, 0xFF ; 255 148: 80 93 01 01 sts 0x0101, r24 14c: 90 e0 ldi r25, 0x00 ; 0 14e: 8f 73 andi r24, 0x3F ; 63 150: 90 70 andi r25, 0x00 ; 0 150: 90 70 andi r25, 0x00 ; 0 152: 00 97 sbiw r24, 0x00 ; 0 154: 11 f0 breq .+4 ; 0x15a PORTC &= ~0x1; 156: 40 98 cbi 0x08, 0 ; 8 158: 08 95 ret else PORTC |= 0x1; 15a: 40 9a sbi 0x08, 0 ; 8 15c: 08 95 ret } This is slightly different (although appearing to derive from the same code generation logic) than I'd seen with a 4.0.2 toolchain where the first two operations above are followed by an OR of r25 into r24 as a word width test: 0000013c : void foo(void) { static unsigned char count; if (++count & 0x3f) 13c: 80 91 00 01 lds r24, 0x0100 140: 8f 5f subi r24, 0xFF ; 255 142: 80 93 00 01 sts 0x0100, r24 146: 99 27 eor r25, r25 148: 8f 73 andi r24, 0x3F ; 63 14a: 90 70 andi r25, 0x00 ; 0 14c: 89 2b or r24, r25 14e: 11 f0 breq .+4 ; 0x154 PORTC &= ~0x1; 150: 40 98 cbi 0x08, 0 ; 8 152: 08 95 ret else PORTC |= 0x1; 154: 40 9a sbi 0x08, 0 ; 8 156: 08 95 ret } Both examples above were compiled with: "-mmcu=atmega48 -nostdlib -Os -funsigned-char" FWIW -O2 and -O3 give the same results. It seems to be an artifact of a scalar widening operation during code generation although can be quietly eliminated post-code generation given the char width type. I've seen some similar bug reports but not specifically related to a bitwise-and operation where more than one set bit exists in the constant operand. Note if the constant '3' is replaced with an 'unsigned char' variable of the same value, the expected minimal code sequence results (sans the fetch of the added variable from memory). -john -- avr@third-harmonic.com From MAILER-DAEMON Tue Feb 16 00:10:55 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhFi3-0006x5-Ip for mharc-avr-gcc-list@gnu.org; Tue, 16 Feb 2010 00:10:55 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhFi2-0006wd-AS for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 00:10:54 -0500 Received: from [199.232.76.173] (port=35134 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhFi1-0006vz-0f for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 00:10:53 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhFhz-0000qR-JR for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 00:10:52 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:65301 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NhFhz-0000pm-5d for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 00:10:51 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1G58iFa012765; Mon, 15 Feb 2010 21:08:44 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] Suspect optimizer missed code in avr-gcc 4.4.3.. Date: Mon, 15 Feb 2010 22:10:16 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509EB0F22@csomb01.corp.atmel.com> In-Reply-To: <4B79EFDE.4050303@third-harmonic.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] Suspect optimizer missed code in avr-gcc 4.4.3.. Thread-Index: AcquqX//RPwIlSwmRZm+UuCYhTQxEwAHJ59Q References: <4B79EFDE.4050303@third-harmonic.com> From: "Weddington, Eric" To: , X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 05:10:54 -0000 =20 > -----Original Message----- > From:=20 > avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu.org=20 > [mailto:avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu. > org] On Behalf Of uhmgawa > Sent: Tuesday, February 16, 2010 6:38 AM > To: avr-gcc-list@nongnu.org > Subject: [avr-gcc-list] Suspect optimizer missed code in=20 > avr-gcc 4.4.3.. >=20 > I've seen some similar bug reports but not specifically > related to a bitwise-and operation where more than one > set bit exists in the constant operand. Note if the > constant '3' is replaced with an 'unsigned char' > variable of the same value, the expected minimal > code sequence results (sans the fetch of the added > variable from memory). Here is a list of known AVR GCC bug reports: Please note the ones marked as "missed optimization". See if your bug = fits one of those. If not, then please submit a bug report to the GCC = project. From MAILER-DAEMON Tue Feb 16 05:47:29 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhKxk-00041E-PM for mharc-avr-gcc-list@gnu.org; Tue, 16 Feb 2010 05:47:29 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhKxi-00040F-Oh for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 05:47:26 -0500 Received: from [199.232.76.173] (port=43703 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhKxh-0003zt-Ld for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 05:47:25 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhKxf-0005A8-Pr for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 05:47:25 -0500 Received: from lo.gmane.org ([80.91.229.12]:53221) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NhKxf-0005A2-7Y for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 05:47:23 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1NhKxc-0008TQ-0k for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 11:47:20 +0100 Received: from 81-29-46-32.ipc21.adsl.hesbynett.no ([81.29.46.32]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 16 Feb 2010 11:47:20 +0100 Received: from david by 81-29-46-32.ipc21.adsl.hesbynett.no with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 16 Feb 2010 11:47:20 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: avr-gcc-list@nongnu.org From: David Brown Date: Tue, 16 Feb 2010 11:46:58 +0100 Lines: 100 Message-ID: References: <4B79EFDE.4050303@third-harmonic.com> <258DDD1F44B6ED4AAFD4370847CF58D509EB0F22@csomb01.corp.atmel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 81-29-46-32.ipc21.adsl.hesbynett.no User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20100111 Lightning/1.0b1 Thunderbird/3.0.1 In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509EB0F22@csomb01.corp.atmel.com> Sender: news X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: [avr-gcc-list] Re: Suspect optimizer missed code in avr-gcc 4.4.3.. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 10:47:27 -0000 On 16/02/2010 06:10, Weddington, Eric wrote: > > >> -----Original Message----- >> From: >> avr-gcc-list-bounces+eric.weddington=atmel.com@nongnu.org >> [mailto:avr-gcc-list-bounces+eric.weddington=atmel.com@nongnu. >> org] On Behalf Of uhmgawa >> Sent: Tuesday, February 16, 2010 6:38 AM >> To: avr-gcc-list@nongnu.org >> Subject: [avr-gcc-list] Suspect optimizer missed code in >> avr-gcc 4.4.3.. >> >> I've seen some similar bug reports but not specifically >> related to a bitwise-and operation where more than one >> set bit exists in the constant operand. Note if the >> constant '3' is replaced with an 'unsigned char' >> variable of the same value, the expected minimal >> code sequence results (sans the fetch of the added >> variable from memory). > > Here is a list of known AVR GCC bug reports: > > Please note the ones marked as "missed optimization". See if your bug fits one of those. If not, then please submit a bug report to the GCC project. I've had a quick check on this one - I can confirm the O/P's results using a number of different WinAVR releases, including the latest. It is a similar case to I've added the OP's example code, and some more comments (copied below for convenience). mvh., David There are many other cases where 8-bit optimisation is missing - C's integer promotion gets in the way. This is particularly common when dealing with a compile-time constant - there is no way in C to say that "0x3f" is 8-bit rather than a 16-bit int. Another example of code with this problem is: void foo(void) { static unsigned char count; if (++count & 0x3f) { PORTC &= ~0x01; } else { PORTC |= 0x01; } } Both the "&" and the comparison with zero are done as 16-bit. One work-around is to use this macro: #define const_byte(x) ({ static const __attribute__((__progmem__)) \ unsigned char v = x; v; }) Then we can write: #define const_byte(x) ({ static const __attribute__((__progmem__)) \ unsigned char v = x; v; }) uint8_t bar3(uint8_t x, uint8_t y) { return data[y ^ (x & const_byte(0x0f))]; } 147 bar3: 148 /* prologue: function */ 149 /* frame size = 0 */ 150 008c 8F70 andi r24,lo8(15) ; tmp45, 151 008e 8627 eor r24,r22 ; tmp45, y 152 0090 E0E0 ldi r30,lo8(data) ; tmp48, 153 0092 F0E0 ldi r31,hi8(data) ; tmp48, 154 0094 E80F add r30,r24 ; tmp48, tmp45 155 0096 F11D adc r31,__zero_reg__ ; tmp48 156 0098 8081 ld r24,Z ; , data 157 /* epilogue start */ 158 009a 0895 ret 160 As far as I can see, this generated code is optimal. The macro works because it forces the value to be 8-bit, rather than a 16-bit compile-time constant. However, the compiler is still smart enough to see that since it's a "const" with known value, it's value can be used directly. As a side effect, the static "variable" must be created somewhere - by using __progmen__, we create it in flash rather than wasting ram. Even that waste could be spared by garbage-collection linking, or by using a dedicated segment rather than .progmem.data. From MAILER-DAEMON Tue Feb 16 14:29:00 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhT6S-0006Du-5b for mharc-avr-gcc-list@gnu.org; Tue, 16 Feb 2010 14:29:00 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhT6P-0006D2-Sr for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 14:28:57 -0500 Received: from [199.232.76.173] (port=52419 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhT6O-0006CF-V9 for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 14:28:57 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhT6N-0003XH-DC for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 14:28:56 -0500 Received: from relay.eltel.net ([81.9.0.130]:35052) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NhT6M-0003X5-TM for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 14:28:55 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NhT6H-0006OG-2K; Tue, 16 Feb 2010 22:28:49 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 74609880; Tue, 16 Feb 2010 22:28:48 +0300 Date: Tue, 16 Feb 2010 22:28:47 +0300 From: Andrew Zabolotny To: "Weddington, Eric" Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100216222847.3d29f566@zap.home.lan> In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> References: <20100213203544.521b8480@zap.home.lan> <20100214001203.GA5473@ratatosk> <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 19:28:58 -0000 --Sig_/4KMNeEr2WQpt/mY7Ht=BB=5 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Sun, 14 Feb 2010 03:47:52 -0700 "Weddington, Eric" wrote: > > I can try to make a binutils patch, but I'm not even sure whom I > > need to contact to push the patch upstream. > Me. Okay, it turned out to be pretty easy. Attached is a patch that implements the new relocation type R_AVR_8 in ELF. It works either if the relocation is not optimized out (and, thus, written to the ELF file) as well as for the case when no relocation is emited (or, rather, it's applied directly in gas). I tested it on my code and it works. Will be grateful if somebody will take a look at this. --=20 Andrew --Sig_/4KMNeEr2WQpt/mY7Ht=BB=5 Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt68e8ACgkQ6/fZ6v/j5feBMACfSHdWU/zZJZFsxmIs0dORjU6y Un8AoIA7aIX90gC0pT0MUwFE7T8WIsSt =0akR -----END PGP SIGNATURE----- --Sig_/4KMNeEr2WQpt/mY7Ht=BB=5-- From MAILER-DAEMON Tue Feb 16 16:08:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhUf0-0001mW-Rv for mharc-avr-gcc-list@gnu.org; Tue, 16 Feb 2010 16:08:46 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhUey-0001lB-TP for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 16:08:44 -0500 Received: from [199.232.76.173] (port=39764 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhUey-0001kk-J4 for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 16:08:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhUex-0000NC-By for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 16:08:44 -0500 Received: from relay.eltel.net ([81.9.0.130]:54125) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NhUew-0000N4-Q5 for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 16:08:43 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NhUeu-0002kI-56; Wed, 17 Feb 2010 00:08:40 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 74626930; Wed, 17 Feb 2010 00:08:40 +0300 Date: Wed, 17 Feb 2010 00:08:38 +0300 From: Andrew Zabolotny To: "Weddington, Eric" Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100217000838.785c3de5@zap.home.lan> In-Reply-To: <20100216222847.3d29f566@zap.home.lan> References: <20100213203544.521b8480@zap.home.lan> <20100214001203.GA5473@ratatosk> <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> <20100216222847.3d29f566@zap.home.lan> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Feb 2010 21:08:45 -0000 --Sig_/ApnTbJf0EBb9.PagoNE6Jyy Content-Type: multipart/mixed; boundary="MP_/QLrtX3FVqWPt8goW5taVCo1" --MP_/QLrtX3FVqWPt8goW5taVCo1 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =46rom Tue, 16 Feb 2010 22:28:47 +0300 Andrew Zabolotny wrote: > Attached is a patch Ooops, it seems I moved the patch to a different directory before I've sent the message... Here goes take two. --=20 Andrew --MP_/QLrtX3FVqWPt8goW5taVCo1 Content-Type: text/x-patch Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename=binutils-2.18-avr-reloc8.patch diff -ur binutils-2.18.orig/bfd/elf32-avr.c binutils-2.18/bfd/elf32-avr.c --- binutils-2.18.orig/bfd/elf32-avr.c 2007-08-06 23:59:24.000000000 +0400 +++ binutils-2.18/bfd/elf32-avr.c 2010-02-16 21:54:40.000000000 +0300 @@ -501,7 +501,21 @@ FALSE, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ - FALSE) /* pcrel_offset */ + FALSE), /* pcrel_offset */ + /* 8 bit offset */ + HOWTO (R_AVR_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 =3D byte, 1 =3D short, 2 =3D long) */ + 8, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield,/* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_AVR_8", /* name */ + FALSE, /* partial_inplace */ + 0x000000ff, /* src_mask */ + 0x000000ff, /* dst_mask */ + FALSE), /* pcrel_offset */ }; =20 /* Map BFD reloc types to AVR ELF reloc types. */ @@ -539,7 +553,8 @@ { BFD_RELOC_AVR_CALL, R_AVR_CALL }, { BFD_RELOC_AVR_LDI, R_AVR_LDI }, { BFD_RELOC_AVR_6, R_AVR_6 }, - { BFD_RELOC_AVR_6_ADIW, R_AVR_6_ADIW } + { BFD_RELOC_AVR_6_ADIW, R_AVR_6_ADIW }, + { BFD_RELOC_8, R_AVR_8 } }; =20 /* Meant to be filled one day with the wrap around address for the diff -ur binutils-2.18.orig/gas/config/tc-avr.c binutils-2.18/gas/config/tc= -avr.c --- binutils-2.18.orig/gas/config/tc-avr.c 2010-02-16 21:19:16.000000000 +0= 300 +++ binutils-2.18/gas/config/tc-avr.c 2010-02-16 21:17:43.000000000 +0300 @@ -1131,6 +1131,13 @@ bfd_putl16 ((bfd_vma) value, where); break; =20 + case BFD_RELOC_8: + if (value > 255 || value < -128) + as_warn_where (fixP->fx_file, fixP->fx_line, + _("operand out of range: %ld"), value); + *where =3D value; + break; + case BFD_RELOC_AVR_16_PM: bfd_putl16 ((bfd_vma) (value >> 1), where); break; @@ -1418,7 +1425,9 @@ { if (exp_mod_pm =3D=3D 0) { - if (nbytes =3D=3D 2) + if (nbytes =3D=3D 1) + fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_8); + else if (nbytes =3D=3D 2) fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_16); else if (nbytes =3D=3D 4) fix_new_exp (frag, where, nbytes, exp, FALSE, BFD_RELOC_32); diff -ur binutils-2.18.orig/include/elf/avr.h binutils-2.18/include/elf/avr= .h --- binutils-2.18.orig/include/elf/avr.h 2006-05-24 11:36:11.000000000 +0400 +++ binutils-2.18/include/elf/avr.h 2010-02-16 21:28:28.000000000 +0300 @@ -65,6 +65,7 @@ RELOC_NUMBER (R_AVR_MS8_LDI_NEG, 23) RELOC_NUMBER (R_AVR_LO8_LDI_GS, 24) RELOC_NUMBER (R_AVR_HI8_LDI_GS, 25) + RELOC_NUMBER (R_AVR_8, 26) END_RELOC_NUMBERS (R_AVR_max) =20 #endif /* _ELF_AVR_H */ --MP_/QLrtX3FVqWPt8goW5taVCo1-- --Sig_/ApnTbJf0EBb9.PagoNE6Jyy Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt7CVYACgkQ6/fZ6v/j5fdLkQCgrQtI29cKM5USEja6u5926T8R 7L0AoK4+hsaQUwhcAwu1nZ/4gH8vgvem =BO96 -----END PGP SIGNATURE----- --Sig_/ApnTbJf0EBb9.PagoNE6Jyy-- From MAILER-DAEMON Tue Feb 16 22:28:52 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Nhaaq-0002RV-IX for mharc-avr-gcc-list@gnu.org; Tue, 16 Feb 2010 22:28:52 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nhaao-0002Pc-4z for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 22:28:50 -0500 Received: from [199.232.76.173] (port=34030 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nhaan-0002PD-JO for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 22:28:49 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nhaal-0007oy-CO for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 22:28:49 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:41979 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Nhaak-0007ob-Tl for avr-gcc-list@nongnu.org; Tue, 16 Feb 2010 22:28:47 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1H3QjSl006285; Tue, 16 Feb 2010 19:26:45 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] 8-bit relocations on AVR Date: Tue, 16 Feb 2010 20:28:16 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509EB162C@csomb01.corp.atmel.com> In-Reply-To: <20100217000838.785c3de5@zap.home.lan> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] 8-bit relocations on AVR Thread-Index: AcqvTEDTKtbbBjq4SaKi9ZNZUJFeIAANNBiQ References: <20100213203544.521b8480@zap.home.lan><20100214001203.GA5473@ratatosk><20100214131313.0a8b8f26@zap.home.lan><258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com><20100216222847.3d29f566@zap.home.lan> <20100217000838.785c3de5@zap.home.lan> From: "Weddington, Eric" To: "Andrew Zabolotny" X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2010 03:28:50 -0000 =20 > -----Original Message----- > From: Andrew Zabolotny [mailto:zap@homelink.ru]=20 > Sent: Wednesday, February 17, 2010 2:39 AM > To: Weddington, Eric > Cc: avr-gcc-list@nongnu.org > Subject: Re: [avr-gcc-list] 8-bit relocations on AVR >=20 > From Tue, 16 Feb 2010 22:28:47 +0300 > Andrew Zabolotny wrote: >=20 > > Attached is a patch > Ooops, it seems I moved the patch to a different directory before I've > sent the message... >=20 > Here goes take two. Could you also fill out a bug report on the binutils project? And please = attach a test case showing the issue that you're trying to solve. It = helps for completeness to have everything in one place: bug report, test = case, patch. From MAILER-DAEMON Wed Feb 17 04:31:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhgG3-00079I-Oq for mharc-avr-gcc-list@gnu.org; Wed, 17 Feb 2010 04:31:47 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhgG1-00078v-AY for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 04:31:45 -0500 Received: from [199.232.76.173] (port=46716 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhgG0-00078j-M3 for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 04:31:44 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhgFz-0006Wc-4c for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 04:31:44 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:65138) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NhgFu-0006W0-Rl; Wed, 17 Feb 2010 04:31:43 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id A52AC26; Wed, 17 Feb 2010 10:31:34 +0100 (MET) Date: Wed, 17 Feb 2010 10:31:34 +0100 From: Joerg Wunsch To: avr-libc-dev@nongnu.org, avr-gcc-list@nongnu.org Message-ID: <20100217093134.GC1886@uriah.heep.sax.de> References: <1265306434.2368.7.camel@revo> <20100205102807.GI49006@uriah.heep.sax.de> <1266396788.2318.7.camel@vaio> <258DDD1F44B6ED4AAFD4370847CF58D509EB165E@csomb01.corp.atmel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="3V7upXqbjpZ4EhLz" Content-Disposition: inline In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509EB165E@csomb01.corp.atmel.com> X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E X-GPG-Fingerprint: 5E84 F980 C3CA FD4B B584 1070 F48C A81B 69A8 5873 User-Agent: Mutt/1.5.20 (2009-06-14) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: Subject: [avr-gcc-list] Re: [avr-libc-dev] ATMEGA16U2 support X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2010 09:31:45 -0000 --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline As Weddington, Eric wrote: > I just tried to send patches to the avr-gcc-list ML for binutils > 2.20, but my corp email server was having some difficulty. I'll try > again later. Forwarded on Eric's behalf, Cc goes to avr-gcc-list, as the question came up there recently as well. Eric wrote: Special thanks to Anitha Boyapati for doing the porting work. -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) --3V7upXqbjpZ4EhLz Content-Type: application/zip Content-Disposition: attachment; filename="binutils-2.20.patches.zip" Content-Transfer-Encoding: base64 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 BQ36wXNHRDx4qp9F2T6/xb9V9amDeB3kCAuEu2fO/1BLAQIXAxQAAAAIAKFTUTy5O/K1sg4A AIQ/AAAfAA0AAAAAAAEAAACAgQAAAAAzMC1iaW51dGlscy0yLjIwLWF2ci1zaXplLnBhdGNo VVQFAAPdtntLVXgAAFBLAQIXAxQAAAAIAKFTUTyyUhJxPI8AACiFAgAfAA0AAAAAAAEAAACA gQQPAAAzMS1iaW51dGlscy0yLjIwLWF2ci1jb2ZmLnBhdGNoVVQFAAPetntLVXgAAFBLAQIX AxQAAAAIAKFTUTwauepepQEAABIEAAAjAA0AAAAAAAEAAACAgZKeAAAzMi1iaW51dGlscy0y LjIwLW5ldy1zZWN0aW9ucy5wYXRjaFVUBQAD3rZ7S1V4AABQSwECFwMUAAAACACiU1E81xde uEsCAABZBAAAHwANAAAAAAABAAAAgIGNoAAAMzQtYmludXRpbHMtMi4yMC1hcy1kd2FyZi5w YXRjaFVUBQAD37Z7S1V4AABQSwECFwMUAAAACACiU1E85Nvj/fIBAADWAwAAMgANAAAAAAAB AAAAgIEqowAAMzUtYmludXRpbHMtMi4yMC1kd2FyZjItQVZSU3R1ZGlvLXdvcmthcm91bmQu cGF0Y2hVVAUAA+C2e0tVeAAAUEsBAhcDFAAAAAgAolNRPPSH4lknEwAAkVYAABwADQAAAAAA AQAAAICBgaUAADUwLWJpbnV0aWxzLTIuMjAteG1lZ2EucGF0Y2hVVAUAA+C2e0tVeAAAUEsB AhcDFAAAAAgAo1NRPEfR+QjhBAAA9hwAACIADQAAAAAAAQAAAICB97gAADUxLWJpbnV0aWxz LTIuMjAtbmV3LWRldmljZXMucGF0Y2hVVAUAA+G2e0tVeAAAUEsFBgAAAAAHAAcAjQIAAC2+ AAAAAA== --3V7upXqbjpZ4EhLz-- From MAILER-DAEMON Wed Feb 17 05:41:20 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhhLM-0004Iu-5V for mharc-avr-gcc-list@gnu.org; Wed, 17 Feb 2010 05:41:20 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhhLK-0004Ik-2x for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:41:18 -0500 Received: from [199.232.76.173] (port=36404 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhhLH-0004Ic-4N for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:41:15 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhhLF-00020F-8B for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:41:14 -0500 Received: from ctb-mesg5.saix.net ([196.25.240.75]:48678) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NhhLC-0001zZ-Um for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:41:13 -0500 Received: from dale.4dllc.com (dsl-245-118-165.telkomadsl.co.za [41.245.118.165]) by ctb-mesg5.saix.net (Postfix) with SMTP id A2B191D22 for ; Wed, 17 Feb 2010 12:40:32 +0200 (SAST) Received: (qmail 22274 invoked by uid 1000); 17 Feb 2010 12:40:32 +0200 Date: Wed, 17 Feb 2010 12:40:32 +0200 From: Dale To: "Weddington, Eric" Subject: Re: [avr-gcc-list] patches for binutils 2.20 Message-ID: <20100217104032.GA22893@dale.4dllc.com.4dllc.com> References: <20100126150705.GA3037@dale.4dllc.com.4dllc.com> <258DDD1F44B6ED4AAFD4370847CF58D509EB165B@csomb01.corp.atmel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="a8Wt8u1KmwUX3Y2C" Content-Disposition: inline In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509EB165B@csomb01.corp.atmel.com> X-Operating-System: Debian GNU/Linux dale.4dllc.com 2.6.32.3 (i686) User-Agent: Mutt/1.5.20 (2009-06-14) X-detected-operating-system: by monty-python.gnu.org: Solaris 9 Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2010 10:41:18 -0000 --a8Wt8u1KmwUX3Y2C Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Eric, >@2010.02.17_10:35:26_+0200 > > See attached. > > Special thanks to Anitha Boyapati who did the porting effort. > > Let us know of any issues. > There were a couple of patches that didn't apply cleanly. I see they were generated against 2.19, which may account for it. I've attached a monolithic patch, which includes all patches and does apply cleanly to my Debian version of 2.20. Initial testing with the Debian package / tools built with it seems to be ok. Recompiled and running code for mega2560 and at90usb. > Eric Weddington > > > -----Original Message----- > > From: > > avr-gcc-list-bounces+eric.weddington=atmel.com@nongnu.org > > [mailto:avr-gcc-list-bounces+eric.weddington=atmel.com@nongnu. > > org] On Behalf Of Dale > > Sent: Tuesday, January 26, 2010 8:37 PM > > To: avr-gcc-list@nongnu.org > > Subject: [avr-gcc-list] patches for binutils 2.20 > > > > Hi > > > > Where can I find the above patches? > > > > Only 2 of 34 avr patches from 2.18 apply to binutils-2.20. Have they > > been ported? > > > > The debian package for 2.20 is currently usable but missing > > most patches > > and I'd like to help rectify this. > > > > -- > > > > Regards, > > > > Dale. > > > > > > _______________________________________________ > > AVR-GCC-list mailing list > > AVR-GCC-list@nongnu.org > > http://lists.nongnu.org/mailman/listinfo/avr-gcc-list > > --a8Wt8u1KmwUX3Y2C Content-Type: application/octet-stream Content-Disposition: attachment; filename="00-binutils-2.20-avr.patch.gz" Content-Transfer-Encoding: base64 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 NdinLUqY+QtWag5WakWhPuYF/x9dtQWeaz8DAA== --a8Wt8u1KmwUX3Y2C-- From MAILER-DAEMON Wed Feb 17 05:49:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NhhTX-0006zi-5D for mharc-avr-gcc-list@gnu.org; Wed, 17 Feb 2010 05:49:47 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NhhTV-0006zK-Re for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:49:45 -0500 Received: from [199.232.76.173] (port=45042 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NhhTV-0006z0-0q for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:49:45 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NhhTU-0002Ue-3t for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:49:44 -0500 Received: from [89.16.176.26] (port=44668 helo=open5.hosting-ha.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NhhTS-0002UZ-Vq for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 05:49:43 -0500 Received: from localhost (localhost [127.0.0.1]) by open5.hosting-ha.com (Postfix) with ESMTP id 15F8830005D; Wed, 17 Feb 2010 11:10:55 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at open5 Received: from open5.hosting-ha.com ([127.0.0.1]) by localhost (open5.integer.be [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id s8xRliYC30fr; Wed, 17 Feb 2010 11:10:51 +0100 (CET) Received: from [192.168.1.235] (unknown [193.190.210.85]) (Authenticated sender: paul.rathgeb@kysoh.com) by open5.hosting-ha.com (Postfix) with ESMTPA id 8555F300059; Wed, 17 Feb 2010 11:10:51 +0100 (CET) From: Paul Rathgeb To: Joerg Wunsch In-Reply-To: <20100217093134.GC1886@uriah.heep.sax.de> References: <1265306434.2368.7.camel@revo> <20100205102807.GI49006@uriah.heep.sax.de> <1266396788.2318.7.camel@vaio> <258DDD1F44B6ED4AAFD4370847CF58D509EB165E@csomb01.corp.atmel.com> <20100217093134.GC1886@uriah.heep.sax.de> Content-Type: text/plain; charset="UTF-8" Date: Wed, 17 Feb 2010 11:10:51 +0100 Message-ID: <1266401451.2318.11.camel@vaio> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-Greylist: delayed 2327 seconds by postgrey-1.27 at monty-python; Wed, 17 Feb 2010 05:49:42 EST Cc: avr-libc-dev@nongnu.org, avr-gcc-list@nongnu.org Subject: [avr-gcc-list] Re: [avr-libc-dev] ATMEGA16U2 support X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Feb 2010 10:49:46 -0000 Thank you for the patches. I'll try to recompile the toolchain. Is there some patches I must apply to GCC for the megaXXu2 MCUs ? Regards, Paul Rathgeb On Wed, 2010-02-17 at 10:31 +0100, Joerg Wunsch wrote: > As Weddington, Eric wrote: > > > I just tried to send patches to the avr-gcc-list ML for binutils > > 2.20, but my corp email server was having some difficulty. I'll try > > again later. > > Forwarded on Eric's behalf, Cc goes to avr-gcc-list, as the question > came up there recently as well. > > Eric wrote: Special thanks to Anitha Boyapati for doing the porting > work. > From MAILER-DAEMON Wed Feb 17 21:15:05 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Nhvuy-0004Zp-WC for mharc-avr-gcc-list@gnu.org; Wed, 17 Feb 2010 21:15:05 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nhvux-0004YZ-F4 for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 21:15:03 -0500 Received: from [199.232.76.173] (port=54596 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nhvuw-0004YE-Rn for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 21:15:02 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nhvuu-000553-OO for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 21:15:02 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:57145 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Nhvuu-00054z-Bj for avr-gcc-list@nongnu.org; Wed, 17 Feb 2010 21:15:00 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1I2D04L005788; Wed, 17 Feb 2010 18:13:07 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] patches for binutils 2.20 Date: Wed, 17 Feb 2010 19:14:33 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509EB1D4C@csomb01.corp.atmel.com> In-Reply-To: <20100217104032.GA22893@dale.4dllc.com.4dllc.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] patches for binutils 2.20 Thread-Index: AcqvvarFULdIK9PcQBqdKgTTEUeJaQAgijbQ References: <20100126150705.GA3037@dale.4dllc.com.4dllc.com> <258DDD1F44B6ED4AAFD4370847CF58D509EB165B@csomb01.corp.atmel.com> <20100217104032.GA22893@dale.4dllc.com.4dllc.com> From: "Weddington, Eric" To: "Dale" X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2010 02:15:03 -0000 =20 > -----Original Message----- > From: Dale [mailto:dale@4drealtime.co.za]=20 > Sent: Wednesday, February 17, 2010 4:11 PM > To: Weddington, Eric > Cc: avr-gcc-list@nongnu.org > Subject: Re: [avr-gcc-list] patches for binutils 2.20 >=20 > Hi Eric, >@2010.02.17_10:35:26_+0200 >=20 > >=20 > > See attached. > >=20 > > Special thanks to Anitha Boyapati who did the porting effort. > >=20 > > Let us know of any issues. > >=20 >=20 > There were a couple of patches that didn't apply cleanly. I see they > were generated against 2.19, which may account for it. Did they not apply at all? Or did they apply, but with a fuzz? Which = patches? =20 > I've attached a monolithic patch, which includes all patches and does > apply cleanly to my Debian version of 2.20. I can't deal with a monolithic patch. There are certain patches, like = the avr-size patch, that will never be committed upstream and must be = separate. Other patches, like device support, will be committed = upstream. So there are reasons why these are separate patches. Eric From MAILER-DAEMON Thu Feb 18 02:35:31 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Ni0v5-0004uZ-5w for mharc-avr-gcc-list@gnu.org; Thu, 18 Feb 2010 02:35:31 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ni0v2-0004uU-Jb for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 02:35:28 -0500 Received: from [199.232.76.173] (port=38881 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ni0v1-0004uM-21 for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 02:35:27 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Ni0uy-0006Iq-0F for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 02:35:26 -0500 Received: from mx20.gnu.org ([199.232.41.8]:12401) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Ni0ux-0006Ik-EE for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 02:35:23 -0500 Received: from [89.16.176.26] (helo=open5.hosting-ha.com) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ni0uw-00023Y-N1 for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 02:35:23 -0500 Received: from localhost (localhost [127.0.0.1]) by open5.hosting-ha.com (Postfix) with ESMTP id 5BCA830003A; Thu, 18 Feb 2010 08:35:20 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at open5 Received: from open5.hosting-ha.com ([127.0.0.1]) by localhost (open5.integer.be [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wq6HN1911q7Z; Thu, 18 Feb 2010 08:35:17 +0100 (CET) Received: from [192.168.1.202] (unknown [193.190.210.85]) (Authenticated sender: paul.rathgeb@kysoh.com) by open5.hosting-ha.com (Postfix) with ESMTPA id E91F3300058; Thu, 18 Feb 2010 08:35:16 +0100 (CET) From: Paul Rathgeb To: Joerg Wunsch In-Reply-To: <20100217093134.GC1886@uriah.heep.sax.de> References: <1265306434.2368.7.camel@revo> <20100205102807.GI49006@uriah.heep.sax.de> <1266396788.2318.7.camel@vaio> <258DDD1F44B6ED4AAFD4370847CF58D509EB165E@csomb01.corp.atmel.com> <20100217093134.GC1886@uriah.heep.sax.de> Content-Type: multipart/mixed; boundary="=-Fc05S9fAKZQfPxKFPsju" Date: Thu, 18 Feb 2010 08:35:16 +0100 Message-ID: <1266478517.2038.23.camel@vaio> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 X-detected-operating-system: by mx20.gnu.org: GNU/Linux 2.6 (newer, 3) X-Greylist: delayed 77065 seconds by postgrey-1.27 at nadesico; Thu, 18 Feb 2010 02:35:21 EST X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: avr-libc-dev@nongnu.org, avr-gcc-list@nongnu.org Subject: [avr-gcc-list] Re: [avr-libc-dev] ATMEGA16U2 support X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2010 07:35:29 -0000 --=-Fc05S9fAKZQfPxKFPsju Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit I've tried to recompile the toolchain (binutils 2.20 (patched); GCC 4.4.3; avr-libc 1.6.8). I noticed that gcc 4.4.3 doesn't include the support for atmegaXXu2 MCUs. Due to this lack of support in GCC, avr-libc compiles without the atmegaxxU2 serie. Then, I've tried to add the support in gcc 4.4.3. You'll find the patch in attachment. I should have missed something, because I have this kind of errors when I compile my firmware /usr/local/avr-4.4.3/lib/gcc/avr/4.4.3/../../../../avr/bin/ld: avr:35 architecture of input file `output/main.o' is incompatible with avr:5 output I didn't find what's wrong in the patch I made. It's the first time I try to patch something like that. The problem comes probably from my inexperience... So, I decided to test the toolchain with GCC 4.5. (binutils 2.20 (patched); GCC 4.5 (from SVN at rev 156830); avr-libc 1.6.8). I had some problems to compile avr-libc (many devices were not supported, especially the atxmega series. As I just need the atmegaxxU2 support, I've bypassed almost all the other MCUs during the compilation. Now, I'm able to compile my firmware. I didn't tested my code. I'll do it soon. Using the unstable version of GCC for this firmware is too critical. I don't like the idea to produce a device in which the firmware is compiled with an unstable / untested version of GCC. So, I really want to find a way to add the support to GCC 4.3.x. Is there some patches for this somewhere ? Or can someone have a look at my patch, and see what I've done wrong ? Thanks in advance, Paul Rathgeb On Wed, 2010-02-17 at 10:31 +0100, Joerg Wunsch wrote: > As Weddington, Eric wrote: > > > I just tried to send patches to the avr-gcc-list ML for binutils > > 2.20, but my corp email server was having some difficulty. I'll try > > again later. > > Forwarded on Eric's behalf, Cc goes to avr-gcc-list, as the question > came up there recently as well. > > Eric wrote: Special thanks to Anitha Boyapati for doing the porting > work. > --=-Fc05S9fAKZQfPxKFPsju Content-Disposition: attachment; filename="atmegaXXu2.patch" Content-Type: text/x-patch; name="atmegaXXu2.patch"; charset="UTF-8" Content-Transfer-Encoding: 7bit --- gcc/config/avr/avr.c 2009-08-25 21:03:53.000000000 +0200 +++ gcc/config/avr__/avr.c 2010-02-18 07:48:16.969805018 +0100 @@ -205,6 +205,9 @@ { "avr35", ARCH_AVR35, NULL }, { "at90usb82", ARCH_AVR35, "__AVR_AT90USB82__" }, { "at90usb162", ARCH_AVR35, "__AVR_AT90USB162__" }, + { "atmega8u2", ARCH_AVR35, "__AVR_ATmega8U2__" }, + { "atmega16u2", ARCH_AVR35, "__AVR_ATmega16U2__" }, + { "atmega32u2", ARCH_AVR35, "__AVR_ATmega32U2__" }, { "attiny167", ARCH_AVR35, "__AVR_ATtiny167__" }, { "attiny327", ARCH_AVR35, "__AVR_ATtiny327__" }, /* Enhanced, <= 8K. */ --- gcc/config/avr/avr.h 2009-03-28 22:09:50.000000000 +0100 +++ gcc/config/avr__/avr.h 2010-02-18 07:48:16.921804849 +0100 @@ -836,6 +836,9 @@ mmcu=at76*|\ mmcu=at90usb82|\ mmcu=at90usb162|\ + mmcu=atmega8u2|\ + mmcu=atmega16u2|\ + mmcu=atmega32u2|\ mmcu=attiny16*|\ mmcu=attiny32*: -m avr3}\ %{mmcu=atmega8*|\ @@ -965,6 +968,9 @@ %{mmcu=atmega103|mmcu=avr31:crtm103.o%s} \ %{mmcu=at43usb320:crt43320.o%s} \ %{mmcu=at90usb162|mmcu=avr35:crtusb162.o%s} \ +%{mmcu=atmega8u2|mmcu=avr35:crtm8u2.o%s} \ +%{mmcu=atmega16u2|mmcu=avr35:crtm16u2.o%s} \ +%{mmcu=atmega32u2|mmcu=avr35:crtm32u2.o%s} \ %{mmcu=at90usb82:crtusb82.o%s} \ %{mmcu=attiny167:crttn167.o%s} \ %{mmcu=attiny327:crttn327.o%s} \ --- gcc/config/avr/t-avr 2009-03-28 22:09:50.000000000 +0100 +++ gcc/config/avr__/t-avr 2010-02-18 07:48:16.909816384 +0100 @@ -67,6 +67,9 @@ mmcu?avr31=mmcu?at43usb320 \ mmcu?avr35=mmcu?at90usb82 \ mmcu?avr35=mmcu?at90usb162 \ + mmcu?avr35=mmcu?atmega8u2 \ + mmcu?avr35=mmcu?atmega16u2 \ + mmcu?avr35=mmcu?atmega32u2 \ mmcu?avr35=mmcu?attiny167 \ mmcu?avr35=mmcu?attiny327 \ mmcu?avr4=mmcu?atmega48 \ --=-Fc05S9fAKZQfPxKFPsju-- From MAILER-DAEMON Thu Feb 18 16:04:01 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NiDXU-0000nM-UJ for mharc-avr-gcc-list@gnu.org; Thu, 18 Feb 2010 16:04:00 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NiDXT-0000lI-L3 for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 16:03:59 -0500 Received: from [199.232.76.173] (port=56451 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NiDXT-0000jw-07 for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 16:03:59 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NiDXS-0003tW-0b for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 16:03:58 -0500 Received: from relay.eltel.net ([81.9.0.130]:42232) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NiDXR-0003tO-GQ for avr-gcc-list@nongnu.org; Thu, 18 Feb 2010 16:03:57 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NiDXN-0002jv-E8; Fri, 19 Feb 2010 00:03:53 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 75268285; Fri, 19 Feb 2010 00:03:53 +0300 Date: Fri, 19 Feb 2010 00:03:52 +0300 From: Andrew Zabolotny To: "Weddington, Eric" Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100219000352.71b6a2d6@zap.home.lan> In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509EB162C@csomb01.corp.atmel.com> References: <20100213203544.521b8480@zap.home.lan> <20100214001203.GA5473@ratatosk> <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> <20100216222847.3d29f566@zap.home.lan> <20100217000838.785c3de5@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509EB162C@csomb01.corp.atmel.com> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Feb 2010 21:03:59 -0000 --Sig_/15no5G7j0YQMvddr9.i6FTO Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Tue, 16 Feb 2010 20:28:16 -0700 "Weddington, Eric" wrote: > Could you also fill out a bug report on the binutils project? And > please attach a test case showing the issue that you're trying to > solve. It helps for completeness to have everything in one place: bug > report, test case, patch. Okay, here is it: http://sourceware.org/bugzilla/show_bug.cgi?id=3D11297 --=20 Andrew --Sig_/15no5G7j0YQMvddr9.i6FTO Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkt9qzgACgkQ6/fZ6v/j5ff92wCgqacm7fRFA479tPglEWtuQfFj c8EAniNn6u/JZS8BY2XJ2SBCZMAEs8qS =8EqU -----END PGP SIGNATURE----- --Sig_/15no5G7j0YQMvddr9.i6FTO-- From MAILER-DAEMON Fri Feb 19 07:01:02 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NiRXZ-0003IU-KZ for mharc-avr-gcc-list@gnu.org; Fri, 19 Feb 2010 07:01:01 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NiRXW-0003IK-1K for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 07:00:58 -0500 Received: from [199.232.76.173] (port=36884 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NiRXU-0003IA-CR for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 07:00:56 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NiRXT-0004M2-Gn for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 07:00:56 -0500 Received: from mx20.gnu.org ([199.232.41.8]:35629) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NiRXT-0004Lx-8z for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 07:00:55 -0500 Received: from mail-bw0-f218.google.com ([209.85.218.218]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NiRXR-0001Li-P2 for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 07:00:53 -0500 Received: by bwz10 with SMTP id 10so1241337bwz.2 for ; Fri, 19 Feb 2010 04:00:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:content-type:to:subject:date :mime-version:content-transfer-encoding:from:message-id:user-agent; bh=+CTsBy6NQApeihpOQN0IJgQFjr7XBRgRIPjSf6PHoCM=; b=S5bfrC0kIbx9CjLJYbfWqSLY/kMvr6Fwq9MJXqpmZzdy4/s8qIIITJmzzq954YsuXH mdw9oqVAQX0yRm5dNtRt6PgCgUoldwb2XrJajw0ASv8pNmlVGgjdfRqwYRSXAEMzWI6y ba5oI/9jJDJXJiG3ArJF0NbkqcZpbWh7hboug= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:to:subject:date:mime-version:content-transfer-encoding :from:message-id:user-agent; b=lXBUH37ia35cg8YA2cLJbXGN6QXEU+wymg84bcu3NHcV1BXQ5lMqUe8f/AVcsZZGbc 44EvWmUCyX9ZOYke0wZkjzGYQR2EjwP0fnq19lKdCjMiOhyMScCj/SS/jkGmfmvWlWBw hS0aW9C71rOZQisDGYIx1ch7JMPZZUpVtColE= Received: by 10.87.61.5 with SMTP id o5mr7357915fgk.79.1266579301378; Fri, 19 Feb 2010 03:35:01 -0800 (PST) Received: from localhost (f052237013.adsl.alicedsl.de [78.52.237.13]) by mx.google.com with ESMTPS id d6sm2544779fga.9.2010.02.19.03.35.00 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 19 Feb 2010 03:35:00 -0800 (PST) Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes To: avr-gcc-list@nongnu.org Date: Fri, 19 Feb 2010 12:34:59 +0100 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: "Christopher Hrabia" Message-ID: User-Agent: Opera Mail/10.10 (Linux) X-detected-operating-system: by mx20.gnu.org: GNU/Linux 2.6 (newer, 2) X-Greylist: delayed 1548 seconds by postgrey-1.27 at nadesico; Fri, 19 Feb 2010 07:00:52 EST X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Subject: [avr-gcc-list] Missing vprintf_P in avr-libc X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Feb 2010 12:00:58 -0000 Hello, I am new to this mailing list. I recognized that for mostly all print functions a _P version exists, besides of vprintf. In a current project I need this one and I wondered why it is not in th avr-libc. I tried to at this function to the avr-libc and compile it on my own, but it seems not to work, no error during compilation, but later I can`t use it. After replacing my old library installation with the selfcompiled one I still have undefined reference to `vprintf_P'. My changes: I added the file avr-libc-1.6.8/libc/stdio/vprint_p.c content of the file: #include #include #include "sectionname.h" ATTRIBUTE_CLIB_SECTION int vprintf_P(const char *fmt, va_list ap) { return vfprintf_P(stdout, fmt, ap); } And after that I edited the header avr-libc-1.6.8/include/stdio.h Added this: /** Variant of \c vprintf() that uses a \c fmt string that resides in program memory. */ extern int vprintf_P(const char *__fmt, va_list __ap); Is something more to do? What I must do to add these changes(if they are really working) to your project? Thank you for your help Christopher From MAILER-DAEMON Fri Feb 19 16:04:06 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Nia18-0000vP-KX for mharc-avr-gcc-list@gnu.org; Fri, 19 Feb 2010 16:04:06 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nia15-0000tI-48 for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 16:04:03 -0500 Received: from [199.232.76.173] (port=41350 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nia13-0000sL-HI for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 16:04:01 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nia11-000591-U8 for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 16:04:01 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:63303) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Nia11-00058K-DK for avr-gcc-list@nongnu.org; Fri, 19 Feb 2010 16:03:59 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id E408929; Fri, 19 Feb 2010 22:03:56 +0100 (MET) Mime-Version: 1.0 X-Newsreader: knews 1.0b.1 Organization: Private BSD site, Dresden X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E References: In-Reply-To: From: j@uriah.heep.sax.de (Joerg Wunsch) Subject: Re: [avr-gcc-list] Missing vprintf_P in avr-libc X-Original-Newsgroups: local.avr.gcc To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=us-ascii Message-Id: <20100219210356.E408929@uriah.heep.sax.de> Date: Fri, 19 Feb 2010 22:03:56 +0100 (MET) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Feb 2010 21:04:03 -0000 "Christopher Hrabia" wrote: > I am new to this mailing list. Duplicate post. Answered on avr-libc-dev. -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) From MAILER-DAEMON Sun Feb 21 08:49:47 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NjCBv-0005Vq-2F for mharc-avr-gcc-list@gnu.org; Sun, 21 Feb 2010 08:49:47 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NjCBt-0005Ve-Hk for avr-gcc-list@nongnu.org; Sun, 21 Feb 2010 08:49:45 -0500 Received: from [199.232.76.173] (port=35135 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NjCBt-0005VS-34 for avr-gcc-list@nongnu.org; Sun, 21 Feb 2010 08:49:45 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NjCBr-00015b-5I for avr-gcc-list@nongnu.org; Sun, 21 Feb 2010 08:49:44 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:27677 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NjCBp-00013Z-7m for avr-gcc-list@nongnu.org; Sun, 21 Feb 2010 08:49:43 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1LDlO4G022541; Sun, 21 Feb 2010 05:47:24 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] 8-bit relocations on AVR Date: Sun, 21 Feb 2010 06:48:57 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> In-Reply-To: <20100219000352.71b6a2d6@zap.home.lan> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] 8-bit relocations on AVR Thread-Index: Acqw3ekYkn+ZmRZdTTWtmmFxrt4bOwCHpLoA References: <20100213203544.521b8480@zap.home.lan><20100214001203.GA5473@ratatosk><20100214131313.0a8b8f26@zap.home.lan><258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com><20100216222847.3d29f566@zap.home.lan><20100217000838.785c3de5@zap.home.lan><258DDD1F44B6ED4AAFD4370847CF58D509EB162C@csomb01.corp.atmel.com> <20100219000352.71b6a2d6@zap.home.lan> From: "Weddington, Eric" To: "Andrew Zabolotny" X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: avr-gcc-list@nongnu.org X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Feb 2010 13:49:45 -0000 =20 > -----Original Message----- > From: Andrew Zabolotny [mailto:zap@homelink.ru]=20 > Sent: Friday, February 19, 2010 2:34 AM > To: Weddington, Eric > Cc: avr-gcc-list@nongnu.org > Subject: Re: [avr-gcc-list] 8-bit relocations on AVR >=20 > From Tue, 16 Feb 2010 20:28:16 -0700 > "Weddington, Eric" wrote: >=20 > > Could you also fill out a bug report on the binutils project? And > > please attach a test case showing the issue that you're trying to > > solve. It helps for completeness to have everything in one=20 > place: bug > > report, test case, patch. > Okay, here is it: >=20 > http://sourceware.org/bugzilla/show_bug.cgi?id=3D11297 >=20 Hi Andrew, Thanks for providing this. Do you have a copyright assignment on file = with the FSF? That way we can commit your patch into binutils. Eric Weddington From MAILER-DAEMON Mon Feb 22 03:00:14 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NjTDB-0003Dr-0W for mharc-avr-gcc-list@gnu.org; Mon, 22 Feb 2010 03:00:13 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NjTD2-0003DK-Ua for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 03:00:05 -0500 Received: from [199.232.76.173] (port=60473 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NjTD0-0003Cu-Ns for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 03:00:03 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NjTCy-0003lf-8C for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 03:00:02 -0500 Received: from mx20.gnu.org ([199.232.41.8]:18890) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NjTCx-0003WS-J6 for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 02:59:59 -0500 Received: from relay.eltel.net ([81.9.0.130]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NjT8s-0002oa-Cd for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 02:55:46 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NjT8j-0001z9-AY; Mon, 22 Feb 2010 10:55:37 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 75749434; Mon, 22 Feb 2010 10:55:37 +0300 Date: Mon, 22 Feb 2010 10:55:36 +0300 From: Andrew Zabolotny To: "Weddington, Eric" Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100222105536.2cb4aeb8@zap.home.lan> In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> References: <20100213203544.521b8480@zap.home.lan> <20100214001203.GA5473@ratatosk> <20100214131313.0a8b8f26@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509E12146@csomb01.corp.atmel.com> <20100216222847.3d29f566@zap.home.lan> <20100217000838.785c3de5@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509EB162C@csomb01.corp.atmel.com> <20100219000352.71b6a2d6@zap.home.lan> <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2010 08:00:07 -0000 --Sig_/a=tFTd7VHbKZz=4s5vMnPMW Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Sun, 21 Feb 2010 06:48:57 -0700 "Weddington, Eric" wrote: > Thanks for providing this. Do you have a copyright assignment on file > with the FSF? That way we can commit your patch into binutils. No :-( What do I do? --=20 Andrew --Sig_/a=tFTd7VHbKZz=4s5vMnPMW Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkuCOHgACgkQ6/fZ6v/j5fdhcgCguosWzUbEpjw9Zr38GARj4jzB /CMAnj0mmW31RQj3Dq/vISfW9GK3YwPY =GrK7 -----END PGP SIGNATURE----- --Sig_/a=tFTd7VHbKZz=4s5vMnPMW-- From MAILER-DAEMON Mon Feb 22 13:39:50 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NjdCA-0006St-91 for mharc-avr-gcc-list@gnu.org; Mon, 22 Feb 2010 13:39:50 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NjdC8-0006S8-Aw for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 13:39:48 -0500 Received: from [199.232.76.173] (port=36056 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NjdC7-0006Rj-KC for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 13:39:47 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NjdC4-0000QV-Gn for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 13:39:47 -0500 Received: from smtp-68.nebula.fi ([83.145.220.68]:42156) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NjdC4-0000QJ-6s for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 13:39:44 -0500 Received: from webmail3.nebula.fi (webmail3.nebula.fi [83.145.246.137]) by smtp-68.nebula.fi (Postfix) with ESMTP id 00E8332B0320 for ; Mon, 22 Feb 2010 20:39:41 +0200 (EET) Received: from 62.142.192.111 (SquirrelMail authenticated user tcg-aicom2) by webmail3.nebula.fi with HTTP; Mon, 22 Feb 2010 20:39:41 +0200 (EET) Message-ID: <61611.62.142.192.111.1266863981.squirrel@webmail3.nebula.fi> Date: Mon, 22 Feb 2010 20:39:41 +0200 (EET) From: "Waleed Ahmed" To: avr-gcc-list@nongnu.org User-Agent: SquirrelMail/1.4.10a MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 X-Priority: 3 (Normal) Importance: Normal Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Subject: [avr-gcc-list] Atmel AVR unit-tests and continuous integration servers? X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2010 18:39:48 -0000 Hi avr experts! I am setting up development environment for atmel avrs on linux debian. I need some information about the continuous integration server that i can use for atmel avr unit-tests verifications. I want to develop a professional unit-testing scheme for AVR on linux.. The system would be something like: 1) coding, coding and coding... 2) check-in into SVN...and.. 3) .. a continous integration server starts a full unit testing cycle wit= h all unit-tests performed 4) if all unit tests are ok, the integration server creates "a binary blob" for the AVR and informs by email that the blob can be "burned" into real hardware How I can write unit-tests and which continuous integration servers are available for atmel avrs? Regards --=20 Waleed Ahmed, R&D-Embedded Systems Engineer in ubiquitous computing TCG Software LP Snellmaninkatu 21 C 3, FIN-00170, Helsinki, Finland e-mail: ahmed.waleed@tcg-ai.com tel: +358 40 961 3370 From MAILER-DAEMON Mon Feb 22 14:18:50 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Njdnu-0002Jg-6K for mharc-avr-gcc-list@gnu.org; Mon, 22 Feb 2010 14:18:50 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Njdns-0002Iw-7Z for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 14:18:48 -0500 Received: from [199.232.76.173] (port=60863 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Njdnr-0002Ig-Sa for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 14:18:47 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Njdno-0004Zq-6b for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 14:18:47 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:60936) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Njdnn-0004Ze-Nf for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 14:18:44 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id B235A27; Mon, 22 Feb 2010 20:18:40 +0100 (MET) Mime-Version: 1.0 X-Newsreader: knews 1.0b.1 Organization: Private BSD site, Dresden X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E References: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> <20100222105536.2cb4aeb8@zap.home.lan> In-Reply-To: <20100222105536.2cb4aeb8@zap.home.lan> From: j@uriah.heep.sax.de (Joerg Wunsch) Subject: Re: [avr-gcc-list] 8-bit relocations on AVR X-Original-Newsgroups: local.avr.gcc To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=us-ascii Message-Id: <20100222191840.B235A27@uriah.heep.sax.de> Date: Mon, 22 Feb 2010 20:18:40 +0100 (MET) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2010 19:18:48 -0000 Andrew Zabolotny wrote: >> Thanks for providing this. Do you have a copyright assignment on file >> with the FSF? That way we can commit your patch into binutils. > No :-( > > What do I do? I think your contribution could still qualify as a "medium to small" change (given the number of lines of code changed, in comparison with the complexity of the entire binutils package), so you could get away with just a "personal disclaimer": http://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html There, you can also find the references for the copyright assignment procedure, which might be useful to have anyway in case you intend to further contribute to FSF-maintained software (binutils, GCC, GDB). Note that you need to sign a separate assignment for each of these. (The article referenced is meant to instruct FSF package maintainers, so it's not directly targetted to contributors.) -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) From MAILER-DAEMON Mon Feb 22 22:19:44 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NjlJI-0006WG-Kt for mharc-avr-gcc-list@gnu.org; Mon, 22 Feb 2010 22:19:44 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NjlJG-0006Uu-7G for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 22:19:42 -0500 Received: from [199.232.76.173] (port=49945 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NjlJF-0006Uh-DN for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 22:19:41 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NjlJD-0002jd-Ut for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 22:19:41 -0500 Received: from newsmtp5.atmel.com ([204.2.163.5]:23321 helo=sjogate2.atmel.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NjlJD-0002jL-JB for avr-gcc-list@nongnu.org; Mon, 22 Feb 2010 22:19:39 -0500 Received: from csomb01.corp.atmel.com ([10.95.30.150]) by sjogate2.atmel.com (8.13.6/8.13.6) with ESMTP id o1N3HjPE018552; Mon, 22 Feb 2010 19:17:45 -0800 (PST) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Subject: RE: [avr-gcc-list] 8-bit relocations on AVR Date: Mon, 22 Feb 2010 20:19:17 -0700 Message-ID: <258DDD1F44B6ED4AAFD4370847CF58D509F94F41@csomb01.corp.atmel.com> In-Reply-To: <20100222191840.B235A27@uriah.heep.sax.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [avr-gcc-list] 8-bit relocations on AVR Thread-Index: Acqz9E+UKiArkBiDSHq0Vzs7slmCnAAQi3DA References: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com><20100222105536.2cb4aeb8@zap.home.lan> <20100222191840.B235A27@uriah.heep.sax.de> From: "Weddington, Eric" To: "Joerg Wunsch" , X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Feb 2010 03:19:42 -0000 =20 > -----Original Message----- > From:=20 > avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu.org=20 > [mailto:avr-gcc-list-bounces+eric.weddington=3Datmel.com@nongnu. > org] On Behalf Of Joerg Wunsch > Sent: Tuesday, February 23, 2010 12:49 AM > To: avr-gcc-list@nongnu.org > Subject: Re: [avr-gcc-list] 8-bit relocations on AVR >=20 > Andrew Zabolotny wrote: >=20 > >> Thanks for providing this. Do you have a copyright=20 > assignment on file > >> with the FSF? That way we can commit your patch into binutils. >=20 > > No :-( > >=20 > > What do I do? >=20 > I think your contribution could still qualify as a "medium to small" > change (given the number of lines of code changed, in comparison with > the complexity of the entire binutils package), so you could get away > with just a "personal disclaimer": >=20 > http://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html >=20 > There, you can also find the references for the copyright assignment > procedure, which might be useful to have anyway in case you intend to > further contribute to FSF-maintained software (binutils, GCC, GDB). > Note that you need to sign a separate assignment for each of these. >=20 > (The article referenced is meant to instruct FSF package maintainers, > so it's not directly targetted to contributors.) Note that FSF's standard for a small change is 10 lines or less that are = changed. Or typically something that is obvious. Andrew's patch seems to = be a bit more than 10 lines, and is not necessarily an obvious change. = However, it is not that big of a patch either. I think you're right that = a personal disclaimer might be best. Eric From MAILER-DAEMON Tue Feb 23 00:11:00 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Njn2y-0000Mu-7X for mharc-avr-gcc-list@gnu.org; Tue, 23 Feb 2010 00:11:00 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Njn2w-0000LM-5o for avr-gcc-list@nongnu.org; Tue, 23 Feb 2010 00:10:58 -0500 Received: from [199.232.76.173] (port=59197 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Njn2v-0000LD-Gq for avr-gcc-list@nongnu.org; Tue, 23 Feb 2010 00:10:57 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Njn2s-0007dZ-6Z for avr-gcc-list@nongnu.org; Tue, 23 Feb 2010 00:10:57 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:54410) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Njn2r-0007dS-OB for avr-gcc-list@nongnu.org; Tue, 23 Feb 2010 00:10:54 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id 81B8725; Tue, 23 Feb 2010 06:10:50 +0100 (MET) Date: Tue, 23 Feb 2010 06:10:50 +0100 From: Joerg Wunsch To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100223051050.GA1659@uriah.heep.sax.de> References: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> <20100222105536.2cb4aeb8@zap.home.lan> <20100222191840.B235A27@uriah.heep.sax.de> <258DDD1F44B6ED4AAFD4370847CF58D509F94F41@csomb01.corp.atmel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <258DDD1F44B6ED4AAFD4370847CF58D509F94F41@csomb01.corp.atmel.com> X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E X-GPG-Fingerprint: 5E84 F980 C3CA FD4B B584 1070 F48C A81B 69A8 5873 User-Agent: Mutt/1.5.20 (2009-06-14) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. Cc: "Weddington, Eric" X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Feb 2010 05:10:58 -0000 As Weddington, Eric wrote: > Note that FSF's standard for a small change is 10 lines or less that > are changed. Or typically something that is obvious. Andrew's patch > seems to be a bit more than 10 lines, and is not necessarily an > obvious change. However, it is not that big of a patch either. I > think you're right that a personal disclaimer might be best. I also had that number in mind, and wanted to find a reference for it. Note that the article I've been referring to talks about "small to medium changes", without mentioning any figure for it. Maybe they realized that demanding the "full procedure" from virtually everybody except those fixing just a typo costs them valuable contributions. -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) From MAILER-DAEMON Sat Feb 27 09:00:51 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlNDv-0008UM-13 for mharc-avr-gcc-list@gnu.org; Sat, 27 Feb 2010 09:00:51 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NktDn-0001Jk-8B for avr-gcc-list@nongnu.org; Fri, 26 Feb 2010 00:58:43 -0500 Received: from [199.232.76.173] (port=57271 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NktDm-0001Jc-Jc for avr-gcc-list@nongnu.org; Fri, 26 Feb 2010 00:58:42 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NktDl-0003kS-FX for avr-gcc-list@nongnu.org; Fri, 26 Feb 2010 00:58:42 -0500 Received: from mail-gw0-f45.google.com ([74.125.83.45]:52850) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NktDl-0003kH-6G for avr-gcc-list@nongnu.org; Fri, 26 Feb 2010 00:58:41 -0500 Received: by gwj17 with SMTP id 17so2639856gwj.4 for ; Thu, 25 Feb 2010 21:58:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to:subject :date:mime-version:content-type:x-priority:x-msmail-priority :x-mailer:x-mimeole; bh=QchhFCFaqXlRJkg1gIfI8yEETWx6THNLC5si6O+JBVA=; b=HBR+beucoc59VF4hUnYcl0web8Yn4r9MtxqB/q5t+y8Jo0tZ0e2cZoQ8hGI36pE0al 8wrcXBso69uTzsCZCdl1vZoxLcJQZM169oaKQbJVepqNt9oHRNJg92h2kjkBJV+6ydkq F1g5BMBjmPv2hLMvp0Py8CiDJWVHNYuMM0qGg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:subject:date:mime-version:content-type :x-priority:x-msmail-priority:x-mailer:x-mimeole; b=e8FnWBD8poxD1/M8m1MQxq4dSlozRV6jMqEY5zMOPJEZIBPFt3DXEzXZGGK4kJWz15 fT24o0TBKs215uJF4Y3r7HQOy75m0tfQGCF3VTighdv2BtKYeNz16recvj8wq8EemgTq MvmykIXmlkSltalSBebUp8kL6LZpZ/Fhf03io= Received: by 10.150.127.25 with SMTP id z25mr19682ybc.11.1267163918394; Thu, 25 Feb 2010 21:58:38 -0800 (PST) Received: from christianmiku (125-238-19-59.jetstream.xtra.co.nz [125.238.19.59]) by mx.google.com with ESMTPS id 5sm2919302ywd.14.2010.02.25.21.58.35 (version=SSLv3 cipher=RC4-MD5); Thu, 25 Feb 2010 21:58:37 -0800 (PST) Message-ID: <000a01cab6a8$bf998230$4001a8c0@christianmiku> From: "Christopher Christian" To: Date: Fri, 26 Feb 2010 18:58:37 +1300 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0007_01CAB715.B41FA750" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-Mailman-Approved-At: Sat, 27 Feb 2010 09:00:49 -0500 Subject: [avr-gcc-list] Does anyone know how to write avrdude configuration file effectively ? X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Feb 2010 05:58:43 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0007_01CAB715.B41FA750 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi All, I have experience of MCU programming with M16 and PICs and now swithing = to AVRs, I decided to use avrdude and usbasp, I am trying to program = ATmega8U2, but as this is not supported by avrdude, I have to change its = configuration file, I refered the help file on doing this from avrdude = and I refered other device configurations on the config file, I saw that = the there is much more info required than actually provided in the = official help file of avrdude, there is no explanation about many things = that are actually used in Atmega8 configuration which I have decided to = use as reference..... here are some excerpt from the ATmega8 config, ( for FLASH memory) mode =3D 0x21; delay =3D 6; blocksize =3D 64; readsize =3D 256; and some other things ........ timeout =3D 200; stabdelay =3D 100; cmdexedelay =3D 25; synchloops =3D 32; bytedelay =3D 0; pollindex =3D 3; pollvalue =3D 0x53; predelay =3D 1; postdelay =3D 1; pollmethod =3D 0; pp_controlstack =3D 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay =3D 100; progmodedelay =3D 0; latchcycles =3D 5; togglevtg =3D 1; poweroffdelay =3D 15; resetdelayms =3D 2; resetdelayus =3D 0; hvleavestabdelay =3D 15; resetdelay =3D 15; can any one expalin to me what are these ? and why it is not explained = in avrdude configuration file template ? I will be very gratefull for any help. Please reply ASAP so that I can = move on with AVR programming. Thanks, Chris ------=_NextPart_000_0007_01CAB715.B41FA750 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi All,
 
I have experience of MCU programming = with M16 and=20 PICs and now swithing to AVRs, I decided to use avrdude and usbasp, I am = trying=20 to program ATmega8U2, but as this is not supported by avrdude, I have to = change=20 its configuration file, I refered  the help file on doing this from = avrdude=20 and I refered other device configurations on the config file, I saw that = the=20 there is much more info required than actually provided in the official = help=20 file of avrdude, there is no explanation about many things that are = actually=20 used in Atmega8 configuration which I have decided to use as = reference..... here=20 are some excerpt from the ATmega8 config,
 
 
( for FLASH memory)
 
mode  =3D = 0x21;
 delay  =3D=20 6;
 blocksize =3D 64;
 readsize =3D = 256;
 
 
and some other things = ........
 
 

    timeout  =3D = 200;
   =20 stabdelay  =3D 100;
    = cmdexedelay  =3D=20 25;
    synchloops  =3D = 32;
   =20 bytedelay  =3D 0;
    = pollindex  =3D=20 3;
    pollvalue  =3D = 0x53;
   =20 predelay  =3D 1;
    = postdelay  =3D=20 1;
    pollmethod  =3D 0;
 
    pp_controlstack     = =3D
 0x0E,=20 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
 0x4E, 0x5E, 0x4F, = 0x5F, 0x6E,=20 0x7E, 0x6F, 0x7F,
 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B,=20 0x7B,
 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00,=20 0x00;
    hventerstabdelay    =3D=20 100;
    = progmodedelay       =3D=20 0;
   =20 latchcycles         =3D=20 5;
   =20 togglevtg           = =3D=20 1;
    = poweroffdelay       =3D=20 15;
    = resetdelayms       =20 =3D 2;
   =20 resetdelayus        =3D=20 0;
    hvleavestabdelay    =3D=20 15;
   =20 resetdelay          =3D = 15;
 
 
 
can any one expalin to me what are these ? and why it is not = explained in=20 avrdude configuration file template ?
 
 
I will be very gratefull for any help. Please reply ASAP so that I = can move=20 on with AVR programming.
 
 
 
Thanks,
Chris
------=_NextPart_000_0007_01CAB715.B41FA750-- From MAILER-DAEMON Sat Feb 27 14:49:25 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlSfF-00042Z-9u for mharc-avr-gcc-list@gnu.org; Sat, 27 Feb 2010 14:49:25 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlSfD-000420-Sg for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 14:49:23 -0500 Received: from [199.232.76.173] (port=55022 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlSfD-00041S-9a for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 14:49:23 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NlSfB-0007V0-W4 for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 14:49:23 -0500 Received: from relay.eltel.net ([81.9.0.130]:41730) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NlSfB-0007Uc-D0 for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 14:49:21 -0500 Received: from mail.homelink.ru ([81.9.33.123] helo=eltel.net) by relay.eltel.net with esmtp (Exim 4.63) (envelope-from ) id 1NlSf7-00072Q-Sm for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 22:49:17 +0300 Received: from [85.249.169.28] (account zap@homelink.ru HELO zap.home.lan) by eltel.net (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 76980888 for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 22:49:17 +0300 Date: Sat, 27 Feb 2010 22:49:16 +0300 From: Andrew Zabolotny To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] 8-bit relocations on AVR Message-ID: <20100227224916.1020d097@zap.home.lan> In-Reply-To: <20100222191840.B235A27@uriah.heep.sax.de> References: <258DDD1F44B6ED4AAFD4370847CF58D509F1C6A6@csomb01.corp.atmel.com> <20100222105536.2cb4aeb8@zap.home.lan> <20100222191840.B235A27@uriah.heep.sax.de> Organization: home X-Mailer: Claws Mail 3.7.4 (GTK+ 2.16.6; x86_64-redhat-linux-gnu) X-Face: #%`a@cSvZ:n@M%n/to$C^!{JE%'%7_0xb("Hr%7Z0LDKO7?w=m~CU#d@-.2yO9 epB|2@pe{%4[Q3pw""FeqiT6rOc>+8|ED/6=Eh/4l3Ru>qRC]ef%ojRz; GQb=uqI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Feb 2010 19:49:24 -0000 --Sig_/e4ky=xFCsvWlHLDX6R2YmFf Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable =46rom Mon, 22 Feb 2010 20:18:40 +0100 (MET) j@uriah.heep.sax.de (Joerg Wunsch) wrote: > I think your contribution could still qualify as a "medium to small" > change (given the number of lines of code changed, in comparison with > the complexity of the entire binutils package), so you could get away > with just a "personal disclaimer": >=20 > http://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html While I was waiting for the papers (they told me it was sent with snail mail, so that's a few months to wait), a guy from Red Hat have committed the patch to trunk: http://sourceware.org/bugzilla/show_bug.cgi?id=3D11297 Hurray. --=20 Andrew --Sig_/e4ky=xFCsvWlHLDX6R2YmFf Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iEYEARECAAYFAkuJdzwACgkQ6/fZ6v/j5ffggACfUA+AhDoLump17dCGOwCJOqkU JNIAn2b8IHK6tt5aNSV6VAHE/1WsrS9u =l/p8 -----END PGP SIGNATURE----- --Sig_/e4ky=xFCsvWlHLDX6R2YmFf-- From MAILER-DAEMON Sat Feb 27 16:07:53 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlTtB-0003Jb-5d for mharc-avr-gcc-list@gnu.org; Sat, 27 Feb 2010 16:07:53 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlTt9-0003JD-8x for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 16:07:51 -0500 Received: from [199.232.76.173] (port=41141 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlTt8-0003J5-Sc for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 16:07:50 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NlTt7-0008Cq-HI for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 16:07:50 -0500 Received: from uriah.heep.sax.de ([213.240.137.9]:51778) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NlTt7-0008Ca-4W for avr-gcc-list@nongnu.org; Sat, 27 Feb 2010 16:07:49 -0500 Received: by uriah.heep.sax.de (Postfix, from userid 107) id 419863F; Sat, 27 Feb 2010 22:07:46 +0100 (MET) Mime-Version: 1.0 X-Newsreader: knews 1.0b.1 Organization: Private BSD site, Dresden X-Phone: +49-351-2012 669 X-PGP-Fingerprint: DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E References: <20100222191840.B235A27@uriah.heep.sax.de> <20100227224916.1020d097@zap.home.lan> From: j@uriah.heep.sax.de (Joerg Wunsch) Subject: Re: [avr-gcc-list] 8-bit relocations on AVR X-Original-Newsgroups: local.avr.gcc To: avr-gcc-list@nongnu.org Content-Type: text/plain; charset=us-ascii Message-Id: <20100227210746.419863F@uriah.heep.sax.de> Date: Sat, 27 Feb 2010 22:07:46 +0100 (MET) X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Joerg Wunsch List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Feb 2010 21:07:51 -0000 Andrew Zabolotny wrote: > While I was waiting for the papers (they told me it was sent with > snail mail, so that's a few months to wait), Well, when I signed mine, I think it took me about a month in total to do it. Funny enough, the original reason was the addition of the AVR-COFF file format to binutils, which never really got committed to the tree (because I realized the implementation was still quite faulty, and because eventually AVR Studio caught up, implememnting ELF+DWARF-2 support so the major reason for having AVR-COFF in the first place vanished). Instead, I filed the papers for GDB and GCC by the same time, and could at least get one larger patch into GCC later on. > a guy from Red Hat have committed > the patch to trunk: Otlichno, bol'shoye spasibo! -- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) From MAILER-DAEMON Sun Feb 28 11:55:46 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlmQk-0001ql-Jo for mharc-avr-gcc-list@gnu.org; Sun, 28 Feb 2010 11:55:46 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlmQh-0001p9-Cf for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 11:55:43 -0500 Received: from [199.232.76.173] (port=38678 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlmQg-0001ol-Tc for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 11:55:42 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NlmQe-0005if-Ou for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 11:55:43 -0500 Received: from n21.bullet.mail.ukl.yahoo.com ([87.248.110.138]:31348) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1NlmQd-0005hz-DD for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 11:55:40 -0500 Received: from [217.146.182.177] by n21.bullet.mail.ukl.yahoo.com with NNFMP; 28 Feb 2010 16:55:36 -0000 Received: from [87.248.110.54] by t3.bullet.ukl.yahoo.com with NNFMP; 28 Feb 2010 16:55:36 -0000 Received: from [127.0.0.1] by omp106.mail.ukl.yahoo.com with NNFMP; 28 Feb 2010 16:55:36 -0000 X-Yahoo-Newman-Property: ymail-3 X-Yahoo-Newman-Id: 322578.52382.bm@omp106.mail.ukl.yahoo.com Received: (qmail 17541 invoked by uid 60001); 28 Feb 2010 16:55:36 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.fr; s=s1024; t=1267376135; bh=fKWp8m/6IfEAaxDEpkdB/6eyGJGfWqDZ33a9veEtx8o=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=t1qH34gTy7w+gI3vZYhCmA+S0X+ANo9M7a4NqUSXghSYNzShXpQ3W2Z5YuuQFYIuxx3q3gX+mzj46BO7/UrCIOo9ORDVQJMBiCnBgwa/tPiUKhvA9x9kiDT85McWoE1JYzk6Eu+NjB9VARVDnYGlRm3co1NlT+cD/5OYqt8X0n4= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.fr; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type; b=b1AkxFH63IkEnZufHY7LLlAiJEB55zvUdXcMgHFPY8fP+QBIBI847uB45d6kO8YmeIKQOTPHntr4w2ia8gaf+5J0LXqe5wHDzTAVOLi0Q9pBsJ9G4z3Fv6fLC3t8agxy+bElE2zA3TBfG4KRCnxLu144pgy093h/wysiG5PCPpQ=; Message-ID: <984335.16915.qm@web23504.mail.ird.yahoo.com> X-YMail-OSG: .w7Sq9EVM1kIUiVAVYzn3P7jAMXJnoseG86WzM0P6BbzaEKRzSKyBZr9txo9NckYZXpHQJtJjGV0ZEixTZxXkG3heTseKv0TAF9Z6BV0Er4p4f5IHwDkOw5.mlZL4PKci4xx3RNVH8qkk1bp0aiCJ9r2pUlRpz3NAO0gkObrQDc713pi11q7ZFjJZk1rDfVS8t..yU9Y9ZQZ Received: from [83.108.62.242] by web23504.mail.ird.yahoo.com via HTTP; Sun, 28 Feb 2010 16:55:35 GMT X-Mailer: YahooMailClassic/9.2.12 YahooMailWebService/0.8.100.260964 Date: Sun, 28 Feb 2010 16:55:35 +0000 (GMT) From: Jeano Kalawa To: AVR-GCC-list@nongnu.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-54677085-1267376135=:16915" X-detected-operating-system: by monty-python.gnu.org: FreeBSD 6.x (1) Cc: Subject: [avr-gcc-list] PLease help wtih a correct code X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Feb 2010 16:55:43 -0000 --0-54677085-1267376135=:16915 Content-Type: multipart/alternative; boundary="0-845646972-1267376135=:16915" --0-845646972-1267376135=:16915 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hallo everbody. =A0 I am working with my final prosject at University. I work with a=A0SHT =A07= 5 sensirion sensor to measure temperature and humidity. I use an ATmega 32 = controller and have to send data to a PC-skjerme via UART. I do try to use = the sample code from sensirion ,but it does not work. Please help me with with a correct and complete code for programming. Attached is the code from sensirion. =A0 =A0 Thank you for your time and help. =A0 Jeano.=0A=0A=0A --0-845646972-1267376135=:16915 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable
Hallo everbody.
 
I am working with my final prosject at University. I work with a = SHT  75 sensirion sensor to measure temperature and humidity. I use an= ATmega 32 controller and have to send data to a PC-skjerme via UART. I do = try to use the sample code from sensirion ,but it does not work.
Please help me with with a correct and complete code for programming.<= /DIV>
Attached is the code from sensirion.
 
 
Thank you for your time and help.
 
Jeano.

=0A=0A=0A=0A=0A --0-845646972-1267376135=:16915-- --0-54677085-1267376135=:16915 Content-Type: application/pdf; name="Sample_Code_humidity_sensor_SHTxx.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Sample_Code_humidity_sensor_SHTxx.pdf" JVBERi0xLjQNJeLjz9MNCjQ4OSAwIG9iaiA8PC9MaW5lYXJpemVkIDEvTCA2 Njk1MC9PIDQ5MS9FIDIxNDcyL04gNS9UIDU3MTIyL0ggWyA4NzIgMzQyXT4+ DWVuZG9iag0gICAgICAgICAgICAgICAgDQp4cmVmDQo0ODkgMjgNCjAwMDAw MDAwMTYgMDAwMDAgbg0KMDAwMDAwMTQwMiAwMDAwMCBuDQowMDAwMDAxNjc2 IDAwMDAwIG4NCjAwMDAwMDIwMjUgMDAwMDAgbg0KMDAwMDAwMjA2MSAwMDAw MCBuDQowMDAwMDAyOTA5IDAwMDAwIG4NCjAwMDAwMDM2ODQgMDAwMDAgbg0K MDAwMDAwNDQ4NCAwMDAwMCBuDQowMDAwMDA1MjE5IDAwMDAwIG4NCjAwMDAw MDU2MjUgMDAwMDAgbg0KMDAwMDAwNTc1OCAwMDAwMCBuDQowMDAwMDA1OTk0 IDAwMDAwIG4NCjAwMDAwMDYyMzYgMDAwMDAgbg0KMDAwMDAwNjMxOCAwMDAw MCBuDQowMDAwMDA3MjA2IDAwMDAwIG4NCjAwMDAwMDc4NDAgMDAwMDAgbg0K MDAwMDAwODA3NCAwMDAwMCBuDQowMDAwMDA5MDA2IDAwMDAwIG4NCjAwMDAw MDk2ODUgMDAwMDAgbg0KMDAwMDAxMDI3MSAwMDAwMCBuDQowMDAwMDEwOTMw IDAwMDAwIG4NCjAwMDAwMTM2MDAgMDAwMDAgbg0KMDAwMDAyMDY3NSAwMDAw MCBuDQowMDAwMDIwOTA2IDAwMDAwIG4NCjAwMDAwMjEwOTggMDAwMDAgbg0K MDAwMDAyMTM5NiAwMDAwMCBuDQowMDAwMDAxMjE0IDAwMDAwIG4NCjAwMDAw MDA4NzIgMDAwMDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSA1MTcvUHJldiA1NzEx MC9YUmVmU3RtIDEyMTQvUm9vdCA0OTAgMCBSL0luZm8gNDIgMCBSL0lEWzwy OTZBQjQ1QzMwMkQ1MzI3OTMzRDU0MTIzNDREQTJGQz48QTM0MzhENTQwRkNC MkM0RUJGOTAyQUJFQTQzQzVCNTc+XT4+DQpzdGFydHhyZWYNCjANCiUlRU9G DQogICAgICAgICAgICAgDQo1MTYgMCBvYmo8PC9MZW5ndGggMjQyL0MgMjUx L0ZpbHRlci9GbGF0ZURlY29kZS9JIDI4MS9MIDIzNS9PIDIxOS9TIDEyOT4+ c3RyZWFtDQp42mJgYGBiYGA1Y2BlYBDSYOBjQAA+oBgbAwsDxwYGRoY3G+QS rjgwqIkECXQ2wFR4iE7jNVRAJiNyl88taPSUWCnUJXG/gdnY2MSDgYHZAoJZ gGwGJiUlj46OBrh5QCFuBoaVz4C0BBCrgg1WYeDlPMHAFqFnWMf1Rs8hkc3B uCHG1FGbWaKAqVnQYPaVqds/JDYVKBzQYEzgYnjCrmDReILPQZThBXuDFmNA ItwLQBPXNwNpTqC9h4G0GgPDqW8MYC8zWAOxIgPDJjcgDfS8xAYgzcXAlqe2 sMo8vgikW4uB4c4eIM0IRCwAAQYADGY25g0KZW5kc3RyZWFtDWVuZG9iag01 MTUgMCBvYmo8PC9MZW5ndGggMzgvRmlsdGVyL0ZsYXRlRGVjb2RlL1dbMSAx IDFdL0luZGV4WzQzIDQ0Nl0vRGVjb2RlUGFybXM8PC9Db2x1bW5zIDMvUHJl ZGljdG9yIDEyPj4vU2l6ZSA0ODkvVHlwZS9YUmVmPj5zdHJlYW0NCnjaYmJS ZGBiYGAcxYMFM84dDYPR+BjFo/ExGh+0wwABBgCsZwfRDQplbmRzdHJlYW0N ZW5kb2JqDTQ5MCAwIG9iajw8L01hcmtJbmZvPDwvTGV0dGVyc3BhY2VGbGFn cyAwL01hcmtlZCB0cnVlPj4vT3V0bGluZXMgMjQgMCBSL01ldGFkYXRhIDQx IDAgUi9QaWVjZUluZm88PC9NYXJrZWRQREY8PC9MYXN0TW9kaWZpZWQoRDoy MDA2MTAwMzE0NDUzOCk+Pj4+L1BhZ2VzIDQwIDAgUi9QYWdlTGF5b3V0L09u ZUNvbHVtbi9TdHJ1Y3RUcmVlUm9vdCA0MyAwIFIvVHlwZS9DYXRhbG9nL0xh c3RNb2RpZmllZChEOjIwMDYxMDAzMTQ0NTM4KS9QYWdlTGFiZWxzIDM4IDAg Uj4+DWVuZG9iag00OTEgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUuMjIgODQy XS9QYXJlbnQgNDAgMCBSL1N0cnVjdFBhcmVudHMgMC9Db250ZW50c1s0OTMg MCBSIDQ5NCAwIFIgNDk1IDAgUiA1MDIgMCBSIDUwNSAwIFIgNTA2IDAgUiA1 MDcgMCBSIDUwOCAwIFJdL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUuMjIg ODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQ5MiAwIFI+Pi9G b250PDwvVFQwIDQ5NiAwIFIvVFQxIDQ5NyAwIFIvVFQyIDUwMyAwIFIvQzJf MCA0OTggMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8L0dT MCA1MTQgMCBSL0dTMSA1MDEgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoN NDkyIDAgb2JqWy9JQ0NCYXNlZCA1MDkgMCBSXQ1lbmRvYmoNNDkzIDAgb2Jq PDwvTGVuZ3RoIDc3OC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSIls VkuS3CAM3fcpfIFoEBIg1lnkADmCK5VJlSeLzP2r8gAb5J5e9Oe9RkLf5377 /jNs++cWSLTiPVfFOytv2+f+98Gklrc/2+PtB879/nyoZkq5bKUWipa2DzCJ gshkVJWEFTiTFY8T1WDb/vAMa+4nqmRgpZKbRSZOdWJYpEBBdTIHGMGZuGyS ktYWhVC16jATXt3HyVilZDgQqcLejDKyVa2UuUzcomQyxHsxx2JqoISzjamI whMItITFaEIFo3aMdB1GWEF7WBcTRyDNQ5aOK9cemGiaeO8FN7PJtDAivLGz YYq9XEIWzWG0QMqZ3GCMYpSteTBuPpFQ5tECnXDv9TaWyRyOGX0/vszG8XjH KZyX1PtkFtu8ZPyaFnM4Riik4RtWnJ+Z7odxf9w0Y0pj7oXVggRyJBWbeHde B+PuWR2FlYR4Y7ADzGsucK8MWLT1r1BNY4bOyUTOvQq4Jba5Q3N4NNhCdlio 8KjkxRREzN2ltUm8St9iKtXXfmYyaz+ZQhLrmcnIfzHY6TiJlkjsC4OAxbbn xuytWUXw27wHvSowGsnk0C8GwUF9KBYp1PyKWUUt+FbLjYldano0ODsYk1sn KupUXzHrqnvAfeDQGi03gTL0TJ1AAcfoBGriKVCO6QIFbOoECneEfBOotnnn UJ8CBe+h7/Fp09odnEBNPAXqYk6BwuUWV/7tihRvCmVwzTeFupglSLAKmW+M YMKdRCFAEVkSNfGUqMmcEtU8FCdR+Iwpe4lq61JvEmVp7NVlg0g5OYmaeErU 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 eXBlL1RydWVUeXBlL0ZvbnREZXNjcmlwdG9yIDQ5OSAwIFIvTGFzdENoYXIg MjUyL1dpZHRoc1syMjggMCAwIDAgMCA3MjkgNTQ3IDAgMjczIDI3MyAwIDQ3 OSAyMjggMjczIDIyOCAyMjggNDU2IDQ1NiA0NTYgNDU2IDQ1NiA0NTYgNDU2 IDQ1NiA0NTYgNDU2IDIyOCAwIDQ3OSAwIDQ3OSAwIDgzMiA1NDcgMCA1OTIg NTkyIDU0NyA1MDEgNjM4IDU5MiAyMjggNDEwIDAgNDU2IDY4MyA1OTIgNjM4 IDU0NyAwIDU5MiA1NDcgNTAxIDU5MiA1NDcgNzc0IDAgMCA1MDEgMCAwIDAg MCAwIDAgNDU2IDQ1NiA0MTAgNDU2IDQ1NiAyMjggNDU2IDQ1NiAxODIgMCA0 MTAgMTgyIDY4MyA0NTYgNDU2IDQ1NiAwIDI3MyA0MTAgMjI4IDQ1NiA0MTAg NTkyIDQxMCA0MTAgNDEwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDQ1NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgNDU2XS9CYXNlRm9udC9BcmlhbE5hcnJvdy9GaXJzdENoYXIgMzIv RW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL1R5cGUvRm9udD4+DWVuZG9iag00 OTcgMCBvYmo8PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnREZXNjcmlwdG9yIDUw MCAwIFIvTGFzdENoYXIgMTIxL1dpZHRoc1syMjggMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCA0NTYgNDU2IDQ1NiAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDU5MiAwIDU5MiA1OTIgMCAwIDAgNTkyIDIyOCAwIDAgMCAw IDU5MiA2MzggMCAwIDU5MiA1NDcgNTAxIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDQ1NiAwIDQ1NiA1MDEgNDU2IDI3MyA1MDEgNTAxIDIyOCAwIDAgMjI4 IDcyOSA1MDEgNTAxIDUwMSA1MDEgMzE5IDQ1NiAyNzMgNTAxIDQ1NiAwIDQ1 NiA0NTZdL0Jhc2VGb250L0FyaWFsTmFycm93LUJvbGQvRmlyc3RDaGFyIDMy L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoN NDk4IDAgb2JqPDwvU3VidHlwZS9UeXBlMC9EZXNjZW5kYW50Rm9udHNbNTEy IDAgUl0vQmFzZUZvbnQvTEVISEJCK1N5bWJvbE1UL1RvVW5pY29kZSA1MTMg MCBSL0VuY29kaW5nL0lkZW50aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTQ5 OSAwIG9iajw8L1N0ZW1WIDcyL0ZvbnROYW1lL0FyaWFsTmFycm93L0ZvbnRT dHJldGNoL0NvbmRlbnNlZC9Gb250V2VpZ2h0IDQwMC9GbGFncyAzMi9EZXNj ZW50IC0yMTEvRm9udEJCb3hbLTE4MiAtMzA3IDEwMDAgMTA4Nl0vQXNjZW50 IDkzNS9Gb250RmFtaWx5KEFyaWFsIE5hcnJvdykvQ2FwSGVpZ2h0IDcxOC9Y SGVpZ2h0IDUxNS9UeXBlL0ZvbnREZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIDA+ Pg1lbmRvYmoNNTAwIDAgb2JqPDwvU3RlbVYgMTEyL0ZvbnROYW1lL0FyaWFs TmFycm93LUJvbGQvRm9udFN0cmV0Y2gvQ29uZGVuc2VkL0ZvbnRXZWlnaHQg NzAwL0ZsYWdzIDMyL0Rlc2NlbnQgLTIxMS9Gb250QkJveFstMTM3IC0zMDcg MTAwMCAxMTA5XS9Bc2NlbnQgOTM1L0ZvbnRGYW1pbHkoQXJpYWwgTmFycm93 KS9DYXBIZWlnaHQgNzE4L1hIZWlnaHQgNTE1L1R5cGUvRm9udERlc2NyaXB0 b3IvSXRhbGljQW5nbGUgMD4+DWVuZG9iag01MDEgMCBvYmo8PC9PUE0gMS9P UCBmYWxzZS9vcCBmYWxzZS9UeXBlL0V4dEdTdGF0ZS9TQSBmYWxzZS9TTSAw LjAyMDAwNDM+Pg1lbmRvYmoNNTAyIDAgb2JqPDwvTGVuZ3RoIDgxOC9GaWx0 ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSIlsVclu3DAMvfsrdGwLhCNKohYg CNA0QU89xT9QTLMVkwRIAgTo1/dpsS3N5DJjPnN5j6Tkh0nYk2YVoiUXg3oC EMhoWZFsBzHF1kY625D2Vu2nDWFitcVr8japtUA1s7ujkGLn4MiEsIYvFtIn 3/wrshBwFJ3tCA4K9tMDQgxK1CSsTVG1ICjKOYmFjSQhUbJmTdLMXDVCBncO iYxxXYLF3tqwIJYkC2kJoiPuaVYz+1vo8J3DQrHFjxqKLoNnZ2qIjlmXgY5Y aSWf1AGIkDNx9clIIMfmU0SDU0XALtojhFPtq0H9jDgSN7jYQq1HmGzTYKxv iFgefDREpE+RjeAo9JDFWybvY8ltQ8rirSHxsiLZTr4V581EI4Pkjm+ARdgW jmIh+zMFF1Y7B4Bi2pBDh9SShxNahaqJyDSMqQGr5DXPKcLkXGyZg00DAsZl ZSoiFgMIzS6KsA3GFjvoctgsDo+RgiSLJYPtCltDJspgL01aEHQxmuLBUtfa +1RqSEjFTrosfmYRpcjV3nR9rfJLh6Jf7f1xf+p0A1lbrxmDg5mnG8kyVzGm LKD11PqxAGNQTeTbPNbmg1+yw8JZwazkCEltKVOqkwZH4QFJZN1wRpymKMMB QBRr6aQd8ykcHa4ylp6jE/JS58S+5haSxH0m5ykF+RTZGOH065GjIW/qvJh5 QdLA2uHYfmJvdUa+VQP6E1KvQTTOVd0lwTlCnGDrYj9oEWyP+AFhbE2dasT1 2SMbn0RhvK9WZI1y+O7IyHpkeJjupt331/fHu9/7d3V+fnFxefVDTVrdT7uf N6zu36bLedrNs1as5ju8mPcKPx/4UfObYp3//2XoFQaU4VG3pywMu58/Fy5i APPT9EV9nf9OZ5hRPrNncHNq/tNgrc4waXRpvmrI/G14BSnrq1NnZNNa+8Iw P3GmCSa4jRsnPLk8B4WNXBl9fHzQ2+3z2+Pr48sz7V+eVMmGO9pj1XWhd7O8 7wrJ2ooT3TgCWlIayvBOKm1EHZMSOWFVCl3P0/UvjAOrp53K4/XlK41xa7iq 11uMD0OacLvgWgr5S4M0mDocfcCNk13UfwEGADyUwokNCmVuZHN0cmVhbQ1l bmRvYmoNNTAzIDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3Jp cHRvciA1MDQgMCBSL0xhc3RDaGFyIDE1MC9XaWR0aHNbNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDBdL0Jhc2VGb250L0NvdXJpZXJOZXdQU01UL0Zp cnN0Q2hhciAzMS9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250 Pj4NZW5kb2JqDTUwNCAwIG9iajw8L1N0ZW1WIDQyL0ZvbnROYW1lL0NvdXJp ZXJOZXdQU01UL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0IDQwMC9G bGFncyAzNC9EZXNjZW50IC0zMDAvRm9udEJCb3hbLTIxIC02ODAgNjM4IDEw MjFdL0FzY2VudCA4MzIvRm9udEZhbWlseShDb3VyaWVyIE5ldykvQ2FwSGVp Z2h0IDU3OC9YSGVpZ2h0IC01NzgvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFs aWNBbmdsZSAwPj4NZW5kb2JqDTUwNSAwIG9iajw8L0xlbmd0aCA4NjIvRmls dGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFVtb5swEP6eX3GfJpAW1zZg YKoqdemkdNKmKWOftmnygKRMECJw1na/fncHS9/C+qGKFJ/Rvfh5/Nx5PTs5 71y1trmD09Ozs7cXC5hJ2MzeZrOTLFOgIFvPpJBShpDloBKQ+MMlxI8aYpOI MJQBZM3M+7zMbm7Az35RqBxC5xwbU+zBvAZlKJgzsTUmC1MR6yHZV2+5b6qi crf+XHvwCrKy2ZWddfuuBP979h5PiYkkzJVQoYHsAuuX276pnCs7PsS7bPbu A8I5+YTQTj4sLi/QfYT4FF5wd0TFR0xFOoJlSwdaRGDSWJh/eM93u7rKrava LXxsXTlVVR2t+qRAGIlYygRMHApj1MipbXZ1CYu2mEyvJ0AlRg1kB4dCbIUI JASD5YJkRKLgcuu6ttjnDGaiUPCwkLxjT0XEHt+Ikodq8l41nQp1uNrsyg+9 qge726FBHOJClXGBbUubksxN9ZtWdNwCGTe+9si18eehx6EkDnZdU1QHTZV3 ZOXkwfkc79mxRmEsIKd9QUECLh1U5JTX+2KolLfFvXxvBqkd4SK8z8VC/3gg 95Rb5RERRoooSFFCKhKJlBFRcYr9kJD4zo40TcKcoqUDJlaYICWOC2RwVRJA WzBM+tsjNQ7aNSz3tMXWoaXyledu4Zu3Wn7zwZ9HXtvxQt1EDmXnz41HXUVr iZ4ZOq67toGxm9H5unJXbPy0FNNXOXD5rms5DK74+5ZL1hXbm0nmomeZO6qj A31Si1DjtHiGvlGSgjv7EXsLWxMcFInymK4am5jZ4bMTjbRbLYH9UCJElUWw sVf9oX9q+sF3hA6OKbljNfaGWZWT2eI9NGTs0GDHLRo9e9EV+fPEGxPidpI6 8zLqoiQVNMaf0Z36R5wyT5g7z/OyJ056cC30zjrCsO+hKzdVz5N34uzxC88e R8JE+OElXXPB1F/zHbWDTh3kfIN1PggB6Wct0PTAPiB5Yy+sCPKSrsayFgrI JoEmLwRqtNBxav4DlO/m3pOqnwD9cr7KsCtptBU1T7gNtrajmQY9zTfsVTTd 1TDr2MMyoOMSwOTJIXkNhXUW7LW9fQ2l2AiSguWO+bSgMTNBTHr8nRpKJUar 6ccqCkKamePzoWF8Ff3EBN6ipcr0PH6HvwIMAPSgD0wNCmVuZHN0cmVhbQ1l bmRvYmoNNTA2IDAgb2JqPDwvTGVuZ3RoIDYwOS9GaWx0ZXIvRmxhdGVEZWNv ZGU+PnN0cmVhbQ0KSImslF1r2zAYhe8D+Q8v7CYZQ5Yl+asLgTTtPgkUKnpl KJ4jJyq2ZWSHke3PT0lM2mZSm43qynHgfY7Oe3z4t8E1H1wv5jDwbmAy8Rbz r1fgY5hOL6/My0s+8Dgn4AMvBhhh7DPgOWDgPyFCSWye8OGBERQwCAhBJMQU eDUYee/f5qTDp79gzB+son2raKtKn6IwxmSv8karB5F3F3A8t1+4GbYUlYJG q5XOKkhHdwThdOyEk/PhOECY9RZ9kqWos0pcPIejfP/sglH7enabsRFZEiIW 9td1DmWv7Nw6OY5QTB6N/CXaVunjZWI8D3woskqWWyc3ONs5FiWIMOzvaXNV Nca8Rxh8F7KEO6FbqWoIkVHtQob/6F+EUYhf8y/6H/9CkyrS32i26Z54tzuL W+7ExefbFlBE46NtzVbLVbc+gtJRbnJ9K+pW6p1zs8/9Hy5ycj6ZMRTvsW/U BM+rwHNJJI7+cq6BmriEvUPOofZ+eWXBJELBwYJ3ss7LzVLAZMbjpDVLWU/B 8xYy1ypXdadVaeIMbSNyWcgcSvlDZ3r7AQRaIWiU7kwlFbJOh7Ize2qdOs+v IubHKGEn6qSRIuv2oG7/TfVKTFJkC5tWLKFQGu5r1aSjdHwPqhE622kyOUqH zuAQe23ZhWFEwxNhVdatd6rMORHmRtpLzYrEPorICbLtllIdmCdIF9DeZs7k 0YQinybJy8lz9NWLyaMxQ0GQHLLXbRthwgObeveFOzn2CrNOjwKU+L3u32Zu K1e1CYYJD8iPTsD5pUXDCFHaywcoSpV1UPw1Gf4IMAATd/ZQDQplbmRzdHJl YW0NZW5kb2JqDTUwNyAwIG9iajw8L0xlbmd0aCA1MTYvRmlsdGVyL0ZsYXRl RGVjb2RlPj5zdHJlYW0NCkiJvJVPa9tAEMXvgn6HgV5sqEez/7RaagKKLdqk CIy1Joe2GBMr0BLZYHAaKPnulVSpxGbXVkqb1UHay/vNvJ19Go/DbHI1BW7g 4uJyOoHg0gahtRwY2LtAo4mBqqf5kByVBKFijEy1tWUweIKH1f2+eA9D+z1I bZBmlUQ4g3GrK8ipS2BvwS1OyJjRjbhXlLlFkYhJr7JkKHVbdhiO/sn68ub5 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 yMkoxyhZ1GjUN9HO0YrondH3YjxiKmL2xTyO9YvVx34U+0wSJlkmOR6HxCXG dcdNxHPic+OH479OcEpQJexNmEkMSmxOPJ5ESEpJ2pB0Q2onlUt3S2eSQ5KX JZ9OoadkpwynfJPqmapPPZYGpyWnbUy7vdB1oXbheDpIl6ZvTL+TIcioyfhD JjEzI3Mk8y9ZoqyWrLPZ3Ozi7D3ZT3Nic/pybuW65xpzT+Yx84ryduc9y4/L 78+fXOS7aNmi8wXWBeqCI4WkwrzCnYWzi+MXb1o8XRRU1FV0fYlgScOSc0ut l1Yt/aSYWSwrPlRCKMkv2VPygyxdNiqbLZWWvlc6I5fIN8sfKqIVA4oHyghl v/JeWURZf9l9VYRqo+pBeVT5YPkjtUQ9rP62Iqlie8WzyvTKDyt/rMqvOqAh a0o0R7UcbaX2dLV9dUP1JZ2Xrks3WRNWs6lmRp+i31kL1S6pPWLg4T9TF4zu xpXGqbrIupG65/V59Yca2A3ahguNno1rGu81JTT9phltljefbHFsaW+ZWhaz bEcr1FraerLNua2zbXp54vJd7dT2yvY/dfh19Hd8vyJ/xbFOu87lnXdXJq7c 22XWpe+6sSp81fbV6Gr16ok1AWu2rHndrej+osevZ7Dnh1557xdrRWuH1v64 rmzdRF9w37b1xPXa9dc3RG3Y1c/ub+q/uzFt4+EBbKB74PtNxZvODQYObt9M 3WzcPDmU+k8ApAFb/pi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8d n4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4 s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++ Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8 yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v 4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr ++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ +Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//wIMAPeE8/sKDQplbmRzdHJl YW0NZW5kb2JqDTUxMCAwIG9iajw8L0xlbmd0aCA2OTkwL0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGgxIDExMDQwPj5zdHJlYW0NCkiJ3FcLVBNnFp48gURe TVDXpfoDRQWSMAGD8tAaQsBxIcEkRLTWNQkDGc2LzABSVEhUBK2WKuKTitqK itRH8bE9WxePrg8qFF8VXV8r61bro1pfVUD3H6iCtu6es+fsnj07c/4zc+// 3ft//3/vzZ0gDARB+iElCAsZm6TFUi4WNk+CmuMIIhSqtZFR8+5fd8L3K1Cn N+VTIPxQx3wECRiFIBx2tiPH+hA9lIsggxKg7JtjKczeOr/+AIKE0vhdZtyQ 9ef6KTiChF+HcowZKnzFLBeCDEmF8jtmKzWzIB0bA2UHgjA7LXaTYWDCQOhr aCWCMNxWw0wHk8WphfZHIR7YDFb88RQNF0GGD4T4zx1O3DHH9wD0H2xBEBbk gTC6b/qJCLrgU4h0X4KHqFtwj+sVXjqu9LE3w4NZ4xZchapLTAZD6oP243r2 zDA5HASdxuVFcBlshnskk8Gu0aDpqKiPJnDD4JJAJKH7ViNGhETsiAXBEQqO MfSNglf9sf2W1i241szrXJZwLqXuWYL8UI3b913UzWyEI4wpFJQ3nFh4vfbQ V7IjaxaXNQ1p0uo/Rr1fcmWwISXXJ9Ih6NtcVgabJ+ivx52ElsixAZ0zj6SA CqcK7M4Z0gFoAA3gC3xeAEQAs5kkUhEa3jMR0mtJWHGgpQxWB2HLAVrcmU+Y cKCx2ynpCDSqBx2hUoNUTJ6IpWK6SUCuUCjTdcokERhuCosdCV5dAx08wDt2 JCqTRqEjUXhNhmKsNCpa+rP4v78B17q+Z87gICzXYnju5UyXCzklAXfNs0Ri iStwJ3dXLX+vv/fE89q2vPZj0eG7Tj/yem/E/RsVz7z6tf7lt5P/0Pzdo7Kd 1Y0LQm/OzvQjp8/8Ojeg63Dmo7C6zKlV7C6x0T/TFdiUW3kmODPyzHEhZ17M l5VbG9LG37gTH1yvXzUnaK2ltHF8yorpDZtiznR6iU81xK5hsmBSv5YSLMgr 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 YW1lL0xFSEhCQitTeW1ib2xNVC9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udEZp bGUyIDUxMCAwIFIvRm9udFdlaWdodCA0MDAvRmxhZ3MgNC9EZXNjZW50IC0y MTkvRm9udEJCb3hbMCAtMjIwIDExMTMgMTAwNV0vQXNjZW50IDEwMDUvRm9u dEZhbWlseShTeW1ib2wpL0NhcEhlaWdodCAwL1R5cGUvRm9udERlc2NyaXB0 b3IvSXRhbGljQW5nbGUgMD4+DWVuZG9iag01MTIgMCBvYmo8PC9TdWJ0eXBl L0NJREZvbnRUeXBlMi9Gb250RGVzY3JpcHRvciA1MTEgMCBSL0Jhc2VGb250 L0xFSEhCQitTeW1ib2xNVC9XWzNbMjUwXTEyMFs0NTldXS9DSURTeXN0ZW1J bmZvPDwvU3VwcGxlbWVudCAwL09yZGVyaW5nKElkZW50aXR5KS9SZWdpc3Ry eShBZG9iZSk+Pi9EVyAxMDAwL1R5cGUvRm9udD4+DWVuZG9iag01MTMgMCBv Ymo8PC9MZW5ndGggMjI4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpI iVSQsW7DIBCGd57ixkYZIDRVO1gs6eIhbVW73QmcHaQa0BkPfvsCtRJ1AHT/ 3Xf3c/zUvrbeJeAfFEyHCQbnLeEcFjIIFxydh4ME60zaonqbSUfgGe7WOeHU +iFA0zD+mZNzohUe+v5pL3bA38kiOT9m5Si/vrPSLTH+4IQ+gQClwOLA+Oms 45ueEHgF72K/RgRZ48M2O1icozZI2o8IjRDiUZXn+UUBevs/z+QfdRnMVRO7 V0uh2AY1UkipWGa3qtKl/PDmyixE2XBdQ7VVDDmPt03FEMvsctivAAMAGddt KAoNCmVuZHN0cmVhbQ1lbmRvYmoNNTE0IDAgb2JqPDwvT1BNIDEvT1AgZmFs c2Uvb3AgZmFsc2UvVHlwZS9FeHRHU3RhdGUvU0EgdHJ1ZS9TTSAwLjAyPj4N ZW5kb2JqDTEgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUuMjIgODQyXS9QYXJl bnQgNDAgMCBSL1N0cnVjdFBhcmVudHMgMS9Db250ZW50cyAyIDAgUi9Sb3Rh dGUgMC9NZWRpYUJveFswIDAgNTk1LjIyIDg0Ml0vUmVzb3VyY2VzPDwvQ29s b3JTcGFjZTw8L0NTMCA0OTIgMCBSPj4vRm9udDw8L1RUMCA0OTYgMCBSL1RU MSA1MDMgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8L0dT MCAxMiAwIFIvR1MxIDExIDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTIg MCBvYmo8PC9MZW5ndGggNDgwNC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVh bQ0KSIl0V8muXMcN3fdX3KW0UKnmATAM2IqRIECy8dsFWRgdORbQzzYkATHy 9Tkk65JV3Z2Fn5tHlyyOp1jvv/v89dPPP12/Ht988+233//pw3Hxx78v4fh0 XN7/+Uf8/nL5/uXy/uXFH+F4+fnyzjvvfT9ergf9iul4+c/hj+PlyxE8/f+/ kF4+Q3Cj46efv3J0JR+tDZe7h9Lr5R9vfvzLyx9/HMd3v799l9/8fqO/n65v 39U3P3399BtJvx5/f/uuvPntbXzz9ePxI/8T4a/y8Ufgx4fzi38JhD/H23++ /PXyw8vlh78hnvcfEMb1C9xNeeBvHRl/Qw7H8eX66yXAoTrDDRRuzs013442 mou9HK9AqgstKZJzcZmiGdX1tsrFDeTmelmRkOtBFnyrkLNrlTRgaQyVoVGC Cz0rcgOS8U00nVJcTeRFQkLHIgeH/9jGRPpwBSmHAY8ze3cV0ebiXStNZfIy upG7IjdDhnclNPbCw4sNCK7nokguqGzNLCPcRYZbPrNbJxKnIwFpSiyPMNix 3IvKVy6Bj10Rcizh1GA6cDRxuoDjS5NRgtRmcIJ0F9GmZGEUsjlcqEFKYOKV 8z1KUuS2IFL320Nv3C6/XHJFhlrhOvUeqV9qd2kYcluQ5Hxh26RV6j3CdtAJ NR65Bhdr5cRmdF+uyZXWVb4uVgVZzrGKQgup2BAUBidqX+DcLCotU/2G80N6 aHZmc5WzgO8ilasiK1Lgjv4yObkWJJMn0lxOQUymaKmnSMJYc6+RaO4VaS7F MSOR+A3B8FYFKJDEA1NdSf24L8yVitWyq9WORrE6tDpHUz2fDCDmvPrSk4up PkMsq2C2ntqGoDWTsEQZdSJj/wTcWMYzxI6685hbDqWoYaMolMv3aBQFi6ku FKWyUtSCMEVBHn2hKJwR/UZR+OVnW0+KotN4kk+dDpZfKEplpagTmRQF90a1 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 efLmDZhrj4g9JzFpsDdfwpRm1kbC4xFgEvZ+CYChkXXLGC0GGAa2tzhCMeCq 2o5s3PSFvSkRQjSmNiMW086SayrqW4fqO6ukKLT9H7RvYW9CBDPA1yY2c2T9 3mHEGeJxza4HaUb0t/thmoGDFHBrI/fr7tzC3kuwUoC7jcrKQIppkc1LK44R 9oaCpQ/kq9RrZMPedLDEjofbNavJpUDlTYyKOC2yHF0/oBC1CTJarbA3GSwI 8HSTmUfjiNLeXTCnjvSbEZ/vD3GeZ/nBI6y0txvMOLCwkq05vADhFw7hunXm 9hHRJMXepjAVDpdt0FWYby6K6SZPynh6/VDGwejXy6vLSafIdWFRZ6i6O9Z6 NJWW2XapTZrsHQsTeOO36cnjcp2ntbTeXRQU1cuDUZKiKCxilM1Rmuk6vMtS eKu3weFqtyBNKu0RCnZZh/JGpdFXpcEDjfaHPWDZbeymQQ1nz8PG6hEH02bk r2sl0t7wfApcqsSur+ZxOJtqPloXebwIRvuN+f3d9D5cruMf0Iv70U0c3Rbr VTA0e7G0dznFHB+/Tv7sbVEKYNwmf5UTh7PGiKsEwo1FUpRxjjZJeYO2GULB SI2vk9KcJ2Xvo0I6wm8kmI1Z2dsl9wFpFT/sy7vT/G8AAbmGdQ0KZW5kc3Ry ZWFtDWVuZG9iag0zIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1LjIyIDg0Ml0v UGFyZW50IDQwIDAgUi9TdHJ1Y3RQYXJlbnRzIDIvQ29udGVudHMgNCAwIFIv Um90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NS4yMiA4NDJdL1Jlc291cmNlczw8 L0NvbG9yU3BhY2U8PC9DUzAgNDkyIDAgUj4+L0ZvbnQ8PC9UVDAgNDk2IDAg Ui9UVDEgNTAzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9FeHRHU3RhdGU8 PC9HUzAgMTIgMCBSL0dTMSAxMSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9i ag00IDAgb2JqPDwvTGVuZ3RoIDUxNjcvRmlsdGVyL0ZsYXRlRGVjb2RlPj5z dHJlYW0NCkiJdFfJrlzHDd33V9yltFCp5gEwDNiKkSBAsvHbBVkYHTkW0M82 JAEx8vU5JOuSVd2dhZ+bR5csjqdY77/7/PXTzz9dvx7ffPPtt9//6cNx8ce/ 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 E+2I45hPloxTkKWeX8nSDgAGpG3ZwpbnewMwl1iMMRSuKvt8cIq0Cj/mne9n 35zuGIUg+8oABHQA9rdnvBqAWAP4ich/aVHsQXW2RDlcdeYuCjYoo+CptqGN 4pTBEj1tB3fUbKZthzBcgvitI6PzUc1Ou9sh9TwQvU3MSz+z2aDVVs63Y57N zsrzq4Y2K3KpUkEvJx1zNqOuD0LX8zrIikG3uW3tQ1EBI0Gb6GtwsEHh4Y5M Nec96oKipc+iNpony60UbUcNH5+1ogaXcZRp4ZgTJHUYKOKtUIG9IlvFSjwl HHx81gnVOIXzZQ69cgKb2HRFDULXnFup5Jbrb2/maKiOVrWZoyGcnG1t5m66 d/fUmVRI0OGeu7Ow3D+iMyl3LOk2HoMzg+IYOYyEjDlEbHeT0mnUKlbH4WmW LkiBGQzDGhTWSwEwp1vK4MKvfa/yczDkx9kM/pMT6DrVseLdGl6TwB1sZbvX l75rTsEgKSwu28gwVQdhD6J4ymR4dBz2AnoSIL7w6GRTeKoA1jkdHmJWbyk9 HVZztUmpDfNEgzWZhr0K7xtq2+FRDR4uzjfbDFowmZJiFpMv0XwVkyRH7ZQn k5ikUy0qc/lJbWZRrkL1GkaKDSq42KBCOI+zr3kCQSSPaZ4n9/OYZNHyIdZC UvO5tt58DmOE5+wuNzUP7y43T1h+U8dbE9BAQTT9fhbDs6VyJNABM2dk1wH1 X/vZntEGalpu4NTv7UxPz5x4Hddy/ArI79r19mRN6YPq9+TzXfz/ACTPtPUN CmVuZHN0cmVhbQ1lbmRvYmoNNSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NS4y MiA4NDJdL1BhcmVudCA0MCAwIFIvU3RydWN0UGFyZW50cyAzL0NvbnRlbnRz IDYgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUuMjIgODQyXS9SZXNv dXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQ5MiAwIFI+Pi9Gb250PDwvVFQw IDQ5NiAwIFIvVFQxIDUwMyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vRXh0 R1N0YXRlPDwvR1MwIDEyIDAgUi9HUzEgMTEgMCBSPj4+Pi9UeXBlL1BhZ2U+ Pg1lbmRvYmoNNiAwIG9iajw8L0xlbmd0aCA0MzE4L0ZpbHRlci9GbGF0ZURl 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 cdAWBD5RBmkAPtw/tAzdor8jg9T3wbFXwd2ju2i9U3s5h8uxjFBeaBsENpcy SmGsJRUSqlr8r1sQNtczORlNDvYUoR2Y/ZuEL9FiFWWIZ1majRcrDgdjt9HD mQsTBGN5uA6ohpM7L/QA/ZKj33rPtQJyCEq3aL/A/GLrYfZxnZq/SEQx30VZ IbuLnr65XFCXWBTX25HPG70s5fJxnBMEwQFfF9Y4+5VYc1A+veR55mefTALL c2rPeK/KaOpoeXvm0xQJYXxsyhWptS+m+bxSfEjQqFPEzyCmp4fDaYnx00M5 j999vn5fWkU2tO2jhqHjaj6EkdCRBtI7ketBPzpcZ2+vPxxxbfcKHV1zrSGB axHSoitiNiopP5k6QExTiw9fti0SaC7gJ9IYRWyYqLCfH3d+HWVz8SI+lk4X Nxle5/pUmKsUocTCuJWK+1rerXjKRqUOs/Omqo7TIBMBEd/xrMiluvEbNuSZ tFpKxHUkzc0VIVTa3CZ4hOrSaZFsyunPkTS3ZsQLQE9bmUSl8Zjnxcp12ag5 mPG4Kfz4QV0ByY5lYkNlGkzq31x6CQ6lZ27ns+6005I0fCw/sVGLdpd1m6r0 NGyoXI2OnrliE3diBWGHnm3nHCxjLJJojZZREcmdy3km4KPczSyOFhyx0edX H2d6ZScnKLvrSqPttjiUrg6EgmHsyVQ8P6OWG1+V+6Suz84ad1c9ZSyB7xOV OzZUiWzltM77I82OnNA0HHhry8RP7aLm6u5NPGmpm1y0h8F9JAoUbWHe+m4h xwpzuTNROYuueFSI5AbttnLg+v79kUFQTYPqpSNsru9eSC2PtAjHaQbFIaAx ixfg1R14v7g4HD3bZqNvHKk+I8fFYsVBwjdbMAoZWqY8l1uI2bAA0RUbKMFC flHkaC0S/uSRcjOXdy/wwcH3Jvh3X/oEH710/M3biOeHlovrjOurzlz0PTqR b3LB7nL/DgALTpGCDQplbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmo8PC9Dcm9w Qm94WzAgMCA1OTUuMjIgODQyXS9Bbm5vdHMgOCAwIFIvUGFyZW50IDQwIDAg Ui9TdHJ1Y3RQYXJlbnRzIDQvQ29udGVudHMgOSAwIFIvUm90YXRlIDAvTWVk aWFCb3hbMCAwIDU5NS4yMiA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8 PC9DUzAgNDkyIDAgUj4+L0ZvbnQ8PC9UVDAgNDk2IDAgUi9UVDEgNDk3IDAg Ui9UVDIgMjMgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL0V4dEdTdGF0ZTw8 L0dTMCAxMSAwIFIvR1MxIDUwMSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9i ag04IDAgb2JqWzE1IDAgUiAxNiAwIFIgMTcgMCBSIDEzIDAgUiAxNCAwIFJd DWVuZG9iag05IDAgb2JqPDwvTGVuZ3RoIDY0MzEvRmlsdGVyL0ZsYXRlRGVj b2RlPj5zdHJlYW0NCkiJdFdZrmS3Df2vVdwNWK15AAwDsQN4AX4bCArptoF6 /nAbCJDV55CUSKmq8tGviwdXFMcj8ssvv/nr/v3yLuWBv3Vk/A05XNf3+5+3 4HKv1x/X7cuv+O7b91vOzTXfrjaai71cn0CqCy0pknNxuWTI1fW2y8UN36/7 bUdCrhdp8K1Czq5VOgFNY6iMEyW40LMiDyAZ30Q7U4qriaxIbvSxycHhH+uY SB+u9IsUeNzZu6vwNhfvWmkqk5XRjdwVeRgyvCuhsRUeVhxAcD0XRXKJrtTM MtzdZJjlM5u1kDgNCQhTYnmEwYblXlS+cwp87IqQYQm3BjsDQxOHCzi+NBkp SG06J0h3MaaLNIxCOocLNUgKTLxzvEdJijw2RPL+eKmNx+33W66IUCucp94j 1UvtLg1DHhuSnC+sm06V+oywHlRCjVeuwcVaObAZ1ZdrcqV1le+bVkG2eyyj OIVQHAgSgxu1LnBvliMtU/6G80NqaFZmc5WjgO8ipasiKpLgjvoyObkWJJIL aS6nICpTtNCTJ2HssVdPNPaKNJfimJ6I/4ageasC5EjihqmupH49J+ZOyWrZ 1WpXI1kdpzp7Uz3fDCDmvNvSk4upvkMsqm24ntqBoDSTsEQZdSLj/MQjUOMd Ylc9Wcwlh1TUcFAU0uV7NIqCxlQ3ilJZKWpDmKIgj75RFO6I/qAo/PKzrCdF 0W3cyetMdyVvFKWyUtRCJkXBvFEtABkHaz04qhfXy8FRCzFKwqnow4HAoLKR FJzMLRlJqawkpcgkKSqasJEU7kij7iQFF0Y6SKpX6ax1BpbGsZGUykpSikyS goZeN5KCvWejIOK9HiSliJLUU3VQxRRP5G9h/ARCRhlV/AAeQuSD59b8699v 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 KpEzO/DEPdsdL84iE/gpuvOBznLJDR7yTHItKuI1Ta0QtII0j6rrQeDjgi8f fGyy+qljZRmj/kYhdX1bX9MDO2kLdkikdrzDuluMNH0YL9Foigk3tQWvoXtP bY+RKBN4mhjbuimydukrR21uHMpBCk3lCyXkmg/KzHIv0Ej82Ocl2rsFmu4S TQ0kGD1d1j8pK6YEa2AgzxS/qUFlU9Xj1HOrJ26/f4rHQtgDjd00Z1fEp4FU z8H9bXGd5YgYj6uuJ47dx6525zS/6GgKJUYdKjPqLqkzSnyVLRSKVkIM2EQB 6FcUgFIO4vwhjDTzuXFF/dRBBQehhp0Y6uufk/q1adv6MqMN03yHHR4wRoUD kqB2Mpn2/1JhjPIFTDi8p8LNNMVN7jWXkofe11tRpVMzLvtjalyS+bAnThVS xKuIf5kdJD8w7gLSLI+lrSi0Xi+9tS6uWW9Zw95oyHTNcANBsRpZwt5g//R6 //4KMAA5Tux5DQplbmRzdHJlYW0NZW5kb2JqDTEwIDAgb2JqPDwvU3RlbVYg NzEuMzg5L0ZvbnROYW1lL0FyaWFsTmFycm93LUl0YWxpYy9Gb250U3RyZXRj aC9Db25kZW5zZWQvRm9udFdlaWdodCA0MDAvRmxhZ3MgOTYvRGVzY2VudCAt MjExL0ZvbnRCQm94Wy0yMTQgLTMwNyAxMDAwIDEwNDhdL0FzY2VudCA5MzUv Rm9udEZhbWlseShBcmlhbCBOYXJyb3cpL0NhcEhlaWdodCA3MTgvWEhlaWdo dCA1MTUvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAtMTU+Pg1l bmRvYmoNMTEgMCBvYmo8PC9PUE0gMS9PUCBmYWxzZS9vcCBmYWxzZS9UeXBl L0V4dEdTdGF0ZS9TQSB0cnVlL1NNIDAuMDIwMDA0Mz4+DWVuZG9iag0xMiAw IG9iajw8L09QTSAxL09QIGZhbHNlL29wIGZhbHNlL1R5cGUvRXh0R1N0YXRl L1NBIGZhbHNlL1NNIDAuMDI+Pg1lbmRvYmoNMTMgMCBvYmo8PC9SZWN0WzIx OS43OCA5NC45Mjk0IDMzNy43MDIgMTEwLjIyNV0vU3VidHlwZS9MaW5rL0JT PDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjAgMCBSL0gvSS9TdHJ1Y3RQ YXJlbnQgOC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMTQg MCBvYmo8PC9SZWN0WzE4NS41MiA4Mi4zMjk0IDI4OC4yMzMgOTcuNjI0Nl0v U3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjEg MCBSL0gvSS9TdHJ1Y3RQYXJlbnQgOS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5u b3Q+Pg1lbmRvYmoNMTUgMCBvYmo8PC9SZWN0WzQ1LjA2IDUxNy4yNjkgMTU4 Ljc2MiA1MzIuNTY1XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUv Qm9yZGVyPj4vQSAxOSAwIFIvSC9JL1N0cnVjdFBhcmVudCA1L0JvcmRlclsw IDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0xNiAwIG9iajw8L1JlY3RbMjE5 Ljc4IDE1OC4wNDkgMjk5LjA4MSAxNzMuMzQ1XS9TdWJ0eXBlL0xpbmsvQlM8 PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAxOCAwIFIvSC9JL1N0cnVjdFBh cmVudCA2L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0xNyAw IG9iajw8L1JlY3RbMTg1LjUyIDE0NS40NDkgMjg4LjIzMyAxNjAuNzQ1XS9T dWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyMiAw IFIvSC9JL1N0cnVjdFBhcmVudCA3L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5v dD4+DWVuZG9iag0xOCAwIG9iajw8L1VSSShtYWlsdG86aW5mb0BzZW5zaXJp b24uY29tKS9TL1VSST4+DWVuZG9iag0xOSAwIG9iajw8L1VSSShodHRwOi8v d3d3LnNlbnNpcmlvbi5jb20vaHVtaWRpdHkpL1MvVVJJPj4NZW5kb2JqDTIw IDAgb2JqPDwvVVJJKG1haWx0bzptaWNoYWVsLmthcnN0QHNlbnNpcmlvbi5j b20pL1MvVVJJPj4NZW5kb2JqDTIxIDAgb2JqPDwvVVJJKGh0dHA6Ly93d3cu c2Vuc2lyaW9uLmNvbS8pL1MvVVJJPj4NZW5kb2JqDTIyIDAgb2JqPDwvVVJJ KGh0dHA6Ly93d3cuc2Vuc2lyaW9uLmNvbS8pL1MvVVJJPj4NZW5kb2JqDTIz IDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3JpcHRvciAxMCAw IFIvTGFzdENoYXIgMTE5L1dpZHRoc1s0NTYgMCA0NTYgMCA0MTAgNDU2IDQ1 NiAwIDAgMCAxODIgMCAwIDE4MiAwIDQ1NiA0NTYgNDU2IDAgMCAwIDIyOCAw IDAgNTkyXS9CYXNlRm9udC9BcmlhbE5hcnJvdy1JdGFsaWMvRmlyc3RDaGFy IDk1L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRv YmoNMjQgMCBvYmo8PC9GaXJzdCAyNSAwIFIvQ291bnQgNC9MYXN0IDI2IDAg Ui9UeXBlL091dGxpbmVzPj4NZW5kb2JqDTI1IDAgb2JqPDwvUGFyZW50IDI0 IDAgUi9BIDMyIDAgUi9OZXh0IDMwIDAgUi9UaXRsZSj+/wAxACAASQBuAHQA cgBvAGQAdQBjAHQAaQBvAG4pPj4NZW5kb2JqDTI2IDAgb2JqPDwvUGFyZW50 IDI0IDAgUi9BIDI3IDAgUi9QcmV2IDI4IDAgUi9UaXRsZSj+/wBIAGUAYQBk AHEAdQBhAHIAdABlAHIAcwAgAGEAbgBkACAAUwBhAGwAZQBzACAATwBmAGYA aQBjAGUpPj4NZW5kb2JqDTI3IDAgb2JqPDwvRFs3IDAgUi9YWVogMCAyMTUg bnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTI4IDAgb2JqPDwvUGFyZW50IDI0IDAg Ui9BIDI5IDAgUi9OZXh0IDI2IDAgUi9QcmV2IDMwIDAgUi9UaXRsZSj+/wAz ACAAUgBlAHYAaQBzAGkAbwBuACAASABpAHMAdABvAHIAeSk+Pg1lbmRvYmoN MjkgMCBvYmo8PC9EWzcgMCBSL1hZWiAwIDc0MyBudWxsXS9TL0dvVG8+Pg1l bmRvYmoNMzAgMCBvYmo8PC9QYXJlbnQgMjQgMCBSL0EgMzEgMCBSL05leHQg MjggMCBSL1ByZXYgMjUgMCBSL1RpdGxlKP7/ADIAIABTAGEAbQBwAGwAZQAg AEMAbwBkAGUpPj4NZW5kb2JqDTMxIDAgb2JqPDwvRFs0OTEgMCBSL1hZWiAw IDU0NyBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzIgMCBvYmo8PC9EWzQ5MSAw IFIvWFlaIDAgNjU3IG51bGxdL1MvR29Ubz4+DWVuZG9iag0zMyAwIG9iajw8 L0ZpcnN0IDg0NC9MZW5ndGggMjI4OC9GaWx0ZXIvRmxhdGVEZWNvZGUvTiAx MDAvVHlwZS9PYmpTdG0+PnN0cmVhbQ0KeNrsmVtvFEkShf9KSvs+XRGRlypp ZInLomVgYIRZ7YPlh8YU4B3TbTXt1bC/fiOrvrIxlu2ql2V2ZQnIruzIU3nO ichLEy00IcbQlhBT0Cw5xBy01LYEaySG2AZLlkLsQpROQ/IBrT8kCUk1+z8h tbEJyULqmhiS/+lyG1IKuTH/MnvbeVwJDu9xbcjq+KkL2Xycd2Ur0b8MOar6 l952HmwhJwfN/lXy+WXHy1b/CbmID/KuUoMcr9R4x2udRPGvOm1Ccbyu5FDU uzy+mLf+cn9VEfMHD5XW+2tIjS/eOljxPxb9+85bf28Nic6jFW89qHU8Jx7a CuGTaB0viz87XnaSreOVRqukxQeE1vGK69Y6Xmtt6Byv9UGd43XWBP+q1Hl2 5q9y3M7daHweXfJXuv4uXVt16+qrG49rvXXRu85bf5Cm8bm4h9KIf3B4qW+P lv2DY0afsLgvbdIa7Kip1GCHzVqD65RzDXbgIjXYkYsrJa5a2/pQEUdu3Xip PFufkYgjd1FCnWHbtbUnOTWrPT7HptSe4iS19jgbqa+Qzuk6mGjl7ZlRv3YR ao8zslh7zD90tce5DyzUkWNbexw5ae1x5FRqjyPXpBV15OwpJFXR4uTEp9KV VHscudQ5u+ldW+dsjtzWOXs6dV2ds7+mqyaIlSponbQN0nr2iHVVW2cjseol nqFSYRptal9VrBry88+rF7WWmvBm9dt612/2b3d9X+vqes+r/o/9i/6rj1q9 2Z71v67Pa83VmLdfz/vV4X53cTIEvtlu9wcHFfYouvAe4RVoY+vZNT4nnmVs PXuHVolX4jXSEq+ZFhydxnVj6zKOLbgGnoFn4Bl4Bp6BZ+AZeBG8CF4EL4IX wYvgRfAieBG8CF4CL4GXwEvgJfASeAm8BF4CL4GXwcvgZfAyeBm8DF4GL4OX wcvgFfDK5At4BbwCXgGvjHiG7obuhu6G7obuhu5m07hC29KO8zB0N3Q3dDd0 N3Q3dDd0N3Q3dDd0N3Q3dDd0N3Q3dDd0N3Q3dDd0N3Q3dDd0N3Q3dDd0N3Q3 dDd0N3Q3dDd0N3Q3dDd0N3Q3dLdJ9wIe9WMFvBY86sta8FrwWvBa8FrwqE9r wWvB68DrwOvA68DrwOvA68DrwOvA68izhjxryLOGPGvIs4Y8a8izhrxtyNuG vG3AE/BkxFP8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8 V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8V/xX /Ff8V/xX/Ff8V/xX/Ff8V/xX/Ff8N/w3/Df8N/w3/Df8N/w3/Df8N/w3/Df8 N/YdY98xAY99xwQ8AU/AE/AUPAWPfcnYl4x9ydiXjH3J2JeMfcnYlxS+Cl+F r8JX4avwVfgqfBW+Cl+Fr075Dl+Fr8JX4avwVfgqfBW+Cl+Fr8JX4avwVfgq fBW+Cl+d+LIfKPuBsh8o+4GyHyj7gbIfKPuBsh8o+4GyH2ic6hs89gNlP1D2 A2U/oCyEtBPKXmRqx+FUlaCayPScaQstcKgmqCaoJqgmqCaoJqgmqCaoJqgm qCaoJqgmqCaoJqgmqCaoJqgmqCaoxqLC2iNoKGgoaMjSxUonKCooKqOix6vf wvjN6nB12J+MB7xXF5+/HDWBTVfCtOqGadsN03knsPCmgAU5sPSWwNo7XL3q hy6Mq+/x8I5P/fp9v1v9tnq+OTvd9Ief1n7YfHb68WLXr57utudP1ufT42F/ uu83/15/Olsdnq83q9cX+zpkfDi8ePflZHd6vp8ez/vdtx1vXz/yv0/877Oh 9fPs6e/99mL62k+/j7d/rJ6e/muY0unm41+8mn1er7a7z+sz//DXzfvNdt97 h//zzA/BV09/3ziHq7n8zQ/M9fH38fFx/+Xi5NO+333X71N5XufyfPVst/7c D+++xt/nPAYcHNw8apPMl0dtkjnKdARnCyWZI8kcSeaHo/j/5FH8+OjhLP5w Fv8TncWPjx4O4w+H8T/RYdwT8uE0/iNO48dHFAZ1QVlQFRQFNUFJUBEUBPVA OVANFAO1QClQCRQCdUAZUAUUwXQzICWElBBSQkgJISWElBBSQkgJISWElBBS QkiJGzeOEa7k/+eLB+vm9WsIi+09txGW7Ot3E9b5e24qww/Po7D+8fW7fwbh p+yPoVz9Xv368S9vDg7qvWb0wu81L/3kzQ/X49I/jc93j29ujh+3lml8uXP8 KMx34+3b8Xb3eL05ftwap/HxzvGjnt+OfxTGLbYKkbiNhVKGS+Ak1nTtAXQY 57eWk/7RB7/JhOanZrgzPTo7/bhZ/XLxZX/64evq9erl+mu9U/1jd7r3K9Sv 2/f96uXu7btx6OP+w3bXX4597remzX549LvVN0+H+/Xum29HzqRHJTQJenmf gtV4QPDQkmtYR9jV7ewamzqFp/3Jdrfen243g2hXkZdMrkc92Z5td0c+pzqv ID81xzcE1emeW+K9gr6gEOps022k0kTKajLYjyCVp1v8HEbtxCjexqiDUW4r o/JDGMXpB4qcZ5Aal7pKym4hNR4eK6lU1wz5r5F6cWSZX12G1epGHl1/85UG 08J4g/zEqBBnpRLXH2BTaO6z5lGQbpqneLCM+35d7R5v33+9lbvW2La7E/ky 2AbgZl5wHIJlXnAapjGtZ9NvYbcE5yG4zEMuQ3A7L7gdgm3eNLohOM5DlmaI TjOjBwvbmUrLaKLMm7YMLrY6Ezsuik6Logcjy0wjZXCytDNZDlaWmYktg5eX B6R7sHXwssz0UgcvS54ZPXhZZnqpg5dlpt46eFlsZvTgZZ6ptw5e5pl66+jl zPzWwcs8syx18DLPrEsbvMwzvbRxaU3zZmKDl91M523wMs5cqSzevyNcBacl we2S4G5BcGyWBMuSYF0SbEuCl+gcl+gc85LgsiR4iYNxiYNpiYNpiYNpiYNp iYNpiYNpiYNpiYNpiYNpiYNpiYN5zkkyTifJfM3Ca/8feBu+fj/iroPcEh/z EpplSaKWuxP1PwIMAGA4d9MNCmVuZHN0cmVhbQ1lbmRvYmoNMzQgMCBvYmo8 PC9GaXJzdCA4ODEvTGVuZ3RoIDEzMzAvRmlsdGVyL0ZsYXRlRGVjb2RlL04g MTAwL1R5cGUvT2JqU3RtL0V4dGVuZHMgMzMgMCBSPj5zdHJlYW0NCnjazFdN bxs3EP0rPCaHaMnhNxAEsJoeUrutERnoQdBBsWRHsKINFBmI/33fcLkrybFo E22AHGwOZx9nHudxuCtltJBCGSOMxWBF5JkTSvPUCyKPMQhtCWMUOiqhrBSW DEYlrAcez5wH3mrhFfDWiKACRiuCY5wTUTHOiwhbWTyTEgFthIHoyuGpjIA6 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 i7Uv2vHu9Pv17sPz0/m4vz5crsf3x5uHP15+ux4/Xp6vz+enb18eT8eby7uf Pp745en9y+X095lfnx9P5+tt+tX58V+zW9g/809rts+3zM/dkgveELwpeEvw dsE7BO8UvEvwboWFBE4h5wo6V9i5As8Veq7gc4WfKwBdIRgKwZA+ewrBUAiG QjAUgqEQDIVgKARDIZgKwVQIpvT1qRBMhWAqBFMhmArBVAimQrAUgqUQLIVg Sf8BFYKlECyFYCkESyFYCsGuEOwKwa4Q7ArBLv2IUQh2hWBXCHaFYFcIDoXg UAgOheBQCA6F4JB+hyoEh0JwKASHQnAqBKdCcCoEp0JwKgSnQnBKWwmF4FQI ToXgUgguheB/BLuwv3Rhf+nC/tKF/aUL+0sX9pcu7C9d2F+6sL90ZX/pyv7S lf3lX+Y/BRgAE0/dkQ0KZW5kc3RyZWFtDWVuZG9iag0zNiAwIG9iajw8L0Zp cnN0IDg3My9MZW5ndGggNzg3L0ZpbHRlci9GbGF0ZURlY29kZS9OIDEwMC9U eXBlL09ialN0bS9FeHRlbmRzIDMzIDAgUj4+c3RyZWFtDQp42pSX3YoVQQyE X6Xf4Ewn6SQNy4LeKrLoEwiCN8qCd769VePKgj/r1MVhO5namur+MpwzHj6O 4REjFv6ssVnlmM6yxmzWPcxY72GFeuEzUa85PFnbiIO1w4U13DbrNVawzrGa dY101j2yWO9Rdpwelahzjp6sbfRi7YjDOsZmPGg28yXyHQyYCHgwYfaYkxFz Y8GM+ExjyJpYMGUZdsWY5dweO4EFgyLMDCYtOAejFpwXsxacF8MWnJNpcb+Z jNtwLuZtOBcDt/PA2IFzMzK8ZjNzw3kzc8N5M3PjVA9mbhzrwczQ2WTmPbFg 5m04eWbeTgTsBBbMjI85M+/Egpl3DQtm3nAOZt5wXsgcyGQLmeOAc0524JyL HSdUduBcsU6UVpsdOLezA+duduC8jR04b2QO7v9A5pgYhiPZMUzHwY5zTDAb M7BAluDeDNMVM7HYvFTD3XmpsWhe2hg0xyTZOXkwtMkRKyyMM4ThMueQTCyC 09BYnKRxU0tShDP+AajgbE0McLbNI4bzeUY4zPDJM4Kzc4L5EPDGB44/PLgB OHP/E8cbTgsKnVEwDnFexg2DG+BYcYaCwSNgERhPVHgmcAB3d7dXeArwsL2/ vcHY3R5w7aw+3N49fvv68cvt4fOY7Nzf/yYORbwUcSriUsStiLcgtkMRT0Vs ilghaApBUwiaQtAUgqYQNIWgKwRdIegKQVcIukLQFYKuEHSFoCsEXSEYCsFQ CIZCMBSCoRAMhWAoBEMhGArBUAguheBSCC6F4FIILoXgUgguheBSCC6F4FII pkIwFYKpEEyFYCoEUyGYCsFUCKZCMBWCpRAshWApBEshWArBUgiWQrAUgqUQ LIVgKwT7AsHoX+p/OMf+u3xekU+86jz9XqMcb1s/9W9fP376/qf8+bfBpSx4 I3r6IjrN7WXzZ/k5JO1X5eeYdFyVn4OC17eL8nNU8NL5ovz5HM9hqbp4jvMS 1Gf51OSmyV2ThyZfmjw1eWny1uRbkptG1TSqplE1jappVE2jahpV06iaRtU0 qv4/qj8EGACZcs0GDQplbmRzdHJlYW0NZW5kb2JqDTM3IDAgb2JqPDwvRmly c3QgMzg4L0xlbmd0aCA1NDMvRmlsdGVyL0ZsYXRlRGVjb2RlL04gNDYvVHlw ZS9PYmpTdG0vRXh0ZW5kcyAzMyAwIFI+PnN0cmVhbQ0KeNqcld1uE0EMhV/F L0B3fmyPR6oqBcRFIUBFKvUCcRHIJopUErRsJfr2nNkmuWhFhLnYeGZ85lvb R8oyZwrEzMQFQahixUqRI2KhaIZolLIgVkqWiCVQThUxUi6KiLOUEfEU0IRJ InAiJAqeKGkETwqpgIenBPCkUml3NVCp4Gkkw7tZE1kFSzPKAQ+MauCpUAwZ QEWBwUBUVBgTkGpYFDC1UkwpTYXEhB2XSDFHYEvCQluNufUHcGEsUBXjZpTQ hgCyoC8uIEsFuYCsqWlAVrTGBnJpb8cTrXEwlGitcwPZWisGcm2FGci1vcJA rvhhdJJCRKkYbQqc6PKymxFmEuhz955y7G4w6mm36D7uhx/L++5mQ1xjO7u6 eiZPPnn2ydknF59cffLik5tPXl1yDj65z1X2uco+V9nnKvtcZZ+r7HOVfa6y z1XxuSo+V8XnqvhcFZ+r4nNVfK6Kz1XxuSo+V9XnqvpcVZ+r6nNV/8HV9n8x 7Zq02EE7vz4m8S07JI+c+ZRa/Fx+72frsR8oXITutv89zu63m1337uHXuF0/ dp+6+fJx/zB2d8N23O42H/arvpsPt9+err7u1/uhP9293q363UivouHg7W51 2Lf0YlwOx3zWi3AqOxwrs/is7C/tq4qj6aP6FPkQ5RCny19f9tX+bvWvYCTL uaSdS9ZzST4ly4ukqdODN5hVP/yfBeGsAaHN/48AAwC7P1RjDQplbmRzdHJl YW0NZW5kb2JqDTM4IDAgb2JqPDwvTnVtc1swIDM5IDAgUl0+Pg1lbmRvYmoN MzkgMCBvYmo8PC9TL0Q+Pg1lbmRvYmoNNDAgMCBvYmo8PC9Db3VudCA1L1R5 cGUvUGFnZXMvS2lkc1s0OTEgMCBSIDEgMCBSIDMgMCBSIDUgMCBSIDcgMCBS XT4+DWVuZG9iag00MSAwIG9iajw8L1N1YnR5cGUvWE1ML0xlbmd0aCA0MzM3 L1R5cGUvTWV0YWRhdGE+PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4 bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcwMSI+CiAg IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8w Mi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24g cmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25z LmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+ QWNyb2JhdCBEaXN0aWxsZXIgNy4wLjUgKFdpbmRvd3MpPC9wZGY6UHJvZHVj ZXI+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwZGZ4PSJo dHRwOi8vbnMuYWRvYmUuY29tL3BkZngvMS4zLyI+CiAgICAgICAgIDxwZGZ4 OkNvbXBhbnk+U0VOU0lSSU9OPC9wZGZ4OkNvbXBhbnk+CiAgICAgICAgIDxw ZGZ4OlNvdXJjZU1vZGlmaWVkPkQ6MjAwNjEwMDMxMTU0NDU8L3BkZng6U291 cmNlTW9kaWZpZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxu czp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAg ICA8eGFwOkNyZWF0b3JUb29sPkFjcm9iYXQgUERGTWFrZXIgNy4wLjcgZm9y IFdvcmQ8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpNb2RpZnlE YXRlPjIwMDYtMTAtMDNUMTQ6NDU6MzgrMDI6MDA8L3hhcDpNb2RpZnlEYXRl PgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU+MjAwNi0xMC0wM1QxNDo0NToz MyswMjowMDwveGFwOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4YXA6TWV0YWRh dGFEYXRlPjIwMDYtMTAtMDNUMTQ6NDU6MzgrMDI6MDA8L3hhcDpNZXRhZGF0 YURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRl c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBN TT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+CiAgICAgICAg IDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6MjBmODcxNGYtNWZiNS00Y2FjLWFm NGQtMTM1NjM2OWRmZDVjPC94YXBNTTpEb2N1bWVudElEPgogICAgICAgICA8 eGFwTU06SW5zdGFuY2VJRD51dWlkOmM5ZDcxNTIzLWFjYTktNGIwOC1hMTMw LTMyZmQyNTNkMWI3NTwveGFwTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhh cE1NOlZlcnNpb25JRD4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAg ICAgICAgIDxyZGY6bGk+OTwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpT ZXE+CiAgICAgICAgIDwveGFwTU06VmVyc2lvbklEPgogICAgICA8L3JkZjpE ZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9l bGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlv bi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOnRpdGxlPgogICAgICAg ICAgICA8cmRmOkFsdD4KICAgICAgICAgICAgICAgPHJkZjpsaSB4bWw6bGFu Zz0ieC1kZWZhdWx0Ij5Wb3JsYWdlPC9yZGY6bGk+CiAgICAgICAgICAgIDwv cmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNy ZWF0b3I+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8 cmRmOmxpPk1Nb3NlcjwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+ CiAgICAgICAgIDwvZGM6Y3JlYXRvcj4KICAgICAgICAgPGRjOnN1YmplY3Q+ CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxp Lz4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOnN1Ympl Y3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2Ny aXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3No b3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAg ICAgICA8cGhvdG9zaG9wOmhlYWRsaW5lPgogICAgICAgICAgICA8cmRmOlNl cT4KICAgICAgICAgICAgICAgPHJkZjpsaS8+CiAgICAgICAgICAgIDwvcmRm OlNlcT4KICAgICAgICAgPC9waG90b3Nob3A6aGVhZGxpbmU+CiAgICAgIDwv cmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4NCmVu ZHN0cmVhbQ1lbmRvYmoNNDIgMCBvYmo8PC9DcmVhdGlvbkRhdGUoRDoyMDA2 MTAwMzE0NDUzMyswMicwMCcpL0F1dGhvcihNTW9zZXIpL0NyZWF0b3IoQWNy b2JhdCBQREZNYWtlciA3LjAuNyBmb3IgV29yZCkvUHJvZHVjZXIoQWNyb2Jh dCBEaXN0aWxsZXIgNy4wLjUgXChXaW5kb3dzXCkpL01vZERhdGUoRDoyMDA2 MTAwMzE0NDUzOCswMicwMCcpL0NvbXBhbnkoU0VOU0lSSU9OKS9Tb3VyY2VN b2RpZmllZChEOjIwMDYxMDAzMTE1NDQ1KS9UaXRsZShWb3JsYWdlKT4+DWVu ZG9iag14cmVmDQowIDQ4OQ0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDIx NDcyIDAwMDAwIG4NCjAwMDAwMjE3MzMgMDAwMDAgbg0KMDAwMDAyNjYwNiAw MDAwMCBuDQowMDAwMDI2ODY3IDAwMDAwIG4NCjAwMDAwMzIxMDMgMDAwMDAg bg0KMDAwMDAzMjM2NCAwMDAwMCBuDQowMDAwMDM2NzUxIDAwMDAwIG4NCjAw MDAwMzcwMzcgMDAwMDAgbg0KMDAwMDAzNzA4OCAwMDAwMCBuDQowMDAwMDQz NTg4IDAwMDAwIG4NCjAwMDAwNDM4MzYgMDAwMDAgbg0KMDAwMDA0MzkxNiAw MDAwMCBuDQowMDAwMDQzOTkyIDAwMDAwIG4NCjAwMDAwNDQxNDIgMDAwMDAg bg0KMDAwMDA0NDI5MiAwMDAwMCBuDQowMDAwMDQ0NDQxIDAwMDAwIG4NCjAw MDAwNDQ1OTEgMDAwMDAgbg0KMDAwMDA0NDc0MSAwMDAwMCBuDQowMDAwMDQ0 Nzk4IDAwMDAwIG4NCjAwMDAwNDQ4NjMgMDAwMDAgbg0KMDAwMDA0NDkyOSAw MDAwMCBuDQowMDAwMDQ0OTg2IDAwMDAwIG4NCjAwMDAwNDUwNDMgMDAwMDAg bg0KMDAwMDA0NTI3MyAwMDAwMCBuDQowMDAwMDQ1MzQwIDAwMDAwIG4NCjAw MDAwNDU0MzMgMDAwMDAgbg0KMDAwMDA0NTU1NiAwMDAwMCBuDQowMDAwMDQ1 NjA3IDAwMDAwIG4NCjAwMDAwNDU3MjAgMDAwMDAgbg0KMDAwMDA0NTc3MSAw MDAwMCBuDQowMDAwMDQ1ODc0IDAwMDAwIG4NCjAwMDAwNDU5MjcgMDAwMDAg bg0KMDAwMDA0NTk4MCAwMDAwMCBuDQowMDAwMDQ4MzY2IDAwMDAwIG4NCjAw MDAwNDk4MDkgMDAwMDAgbg0KMDAwMDA1MDc0NyAwMDAwMCBuDQowMDAwMDUx NjQ2IDAwMDAwIG4NCjAwMDAwNTIzMDAgMDAwMDAgbg0KMDAwMDA1MjMzNSAw MDAwMCBuDQowMDAwMDUyMzU5IDAwMDAwIG4NCjAwMDAwNTI0MzYgMDAwMDAg bg0KMDAwMDA1Njg1MCAwMDAwMCBuDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KdHJhaWxlcg0KPDwv U2l6ZSA0ODk+Pg0Kc3RhcnR4cmVmDQoxMTYNCiUlRU9GDQo= --0-54677085-1267376135=:16915-- From MAILER-DAEMON Sun Feb 28 12:42:36 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlnA4-0008CE-6W for mharc-avr-gcc-list@gnu.org; Sun, 28 Feb 2010 12:42:36 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlnA2-0008C9-8r for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 12:42:34 -0500 Received: from [199.232.76.173] (port=60869 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlnA1-0008C1-Ak for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 12:42:33 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nln9x-0003W8-O4 for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 12:42:33 -0500 Received: from 109-70-0-249.fxw.nl ([109.70.0.249]:45247 helo=oakenfold.firstbase.nl) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Nln9x-0003Vk-D2 for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 12:42:29 -0500 Received: from octy.betaresearch.nl (212-127-153-50.cable.quicknet.nl [212.127.153.50]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by oakenfold.firstbase.nl (Postfix) with ESMTPSA id 536901933AD for ; Sun, 28 Feb 2010 18:03:56 +0100 (CET) From: Ruud Vlaming Organization: Beta Research To: avr-gcc-list@nongnu.org Subject: Re: [avr-gcc-list] PLease help wtih a correct code Date: Sun, 28 Feb 2010 18:03:51 +0100 User-Agent: KMail/1.9.10 References: <984335.16915.qm@web23504.mail.ird.yahoo.com> In-Reply-To: <984335.16915.qm@web23504.mail.ird.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <201002281803.51428.ruud@betaresearch.nl> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-Greylist: delayed 2308 seconds by postgrey-1.27 at monty-python; Sun, 28 Feb 2010 12:42:28 EST X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Feb 2010 17:42:34 -0000 Shall I write your thesis too? Ruud On Sunday 28 February 2010, Jeano Kalawa wrote: > Hallo everbody. > =A0 > I am working with my final prosject at University. I work with a=A0SHT = =A075 sensirion sensor to measure temperature and humidity. I use an ATmega= 32 controller and have to send data to a PC-skjerme via UART. I do try to = use the sample code from sensirion ,but it does not work. > Please help me with with a correct and complete code for programming. > Attached is the code from sensirion. > =A0 > =A0 > Thank you for your time and help. > =A0 > Jeano. >=20 >=20 > =20 From MAILER-DAEMON Sun Feb 28 13:02:01 2010 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1NlnSq-0000qp-Sm for mharc-avr-gcc-list@gnu.org; Sun, 28 Feb 2010 13:02:00 -0500 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NlnSp-0000qk-3O for avr-gcc-list@nongnu.org; Sun, 28 Feb 2010 13:01:59 -0500 Received: from [199.232.76.173] (port=55223 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NlnSo-0000qX-JJ for AVR-GCC-list@nongnu.org; Sun, 28 Feb 2010 13:01:58 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NlnSk-0006JR-Of for AVR-GCC-list@nongnu.org; Sun, 28 Feb 2010 13:01:58 -0500 Received: from web33404.mail.mud.yahoo.com ([68.142.206.136]:33756) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1NlnSk-0006Gd-BT for AVR-GCC-list@nongnu.org; Sun, 28 Feb 2010 13:01:54 -0500 Received: (qmail 45417 invoked by uid 60001); 28 Feb 2010 18:01:49 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1267380108; bh=XrLlgVH9GUxQy89bNSSk7mA1kGvmHYFfSEkB1uDclH8=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type; b=kB7FYEo4d9iviGei99ZyRY/BGnkD6PrtRohGhT7fHzlfNEikoPrUqySco/gnZgS8aXnGNr4lPiLb4Q42yy2ry2fUdE80NYb4oZqgyg2I7uCmk4/4TslSWCbz/xxsJeKUUGb7i09m8yn/YPB1+9zmyqXLLLN1lUNcq1D/faI6xa4= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:In-Reply-To:MIME-Version:Content-Type; b=uTTYjIE6E1LQ5TjyRfLqVPGq3OvX7bW+E0MMODInBSilwn2Zrsp0PMA2CEN+DpQ060Qtz9KzFToZ1W6wBetdsbdWoHRz93gdDkJb4rx4Pcj1U+BcQ3z2A3p1/1BY3DDzFPWbAaGDcYTDb4w2aqKmZnKJHxybUJ8pj2pf+rB2xR8=; Message-ID: <968917.45125.qm@web33404.mail.mud.yahoo.com> X-YMail-OSG: AGGWbU4VM1lKNxAivtYptYhhY4doQXZj4DZKqfVaP7V3uUjpci4rFXo_6blPyYt8RyDRDaaDRFG_jdclSClkr5F5a.d74zhmLi34ELLZpP7NHCVzmyIl8bRbi6Qk8ZIb8v53ZfjH5ewFdaeleCyYOGQVhdjqNAtqtxQ.sGHrO3Yi.m08.NSnzin3RlNGR.5s4rdFVNOArhFhUq5yYeU1HJg1dVg6ROy0.C8YXV3zmR1PoeDjdSScJT_hhirCt8j6PH1j4BK_R9EzWECeKDovLrdVj6EqOVmJkOvGMMvQNWzKj7dH2c9h4eSWHAlDFovfN5_ZDODOkScTn5oP93LDTYGwA.uZxcyehY5I Received: from [123.176.32.114] by web33404.mail.mud.yahoo.com via HTTP; Sun, 28 Feb 2010 10:01:48 PST X-Mailer: YahooMailClassic/9.2.12 YahooMailWebService/0.8.100.260964 Date: Sun, 28 Feb 2010 10:01:48 -0800 (PST) From: Parthasaradhi Nayani Subject: Re: [avr-gcc-list] PLease help wtih a correct code To: AVR-GCC-list@nongnu.org, Jeano Kalawa In-Reply-To: <984335.16915.qm@web23504.mail.ird.yahoo.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-830788974-1267380108=:45125" X-detected-operating-system: by monty-python.gnu.org: FreeBSD 6.x (1) Cc: X-BeenThere: avr-gcc-list@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the AVR-GCC toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Feb 2010 18:01:59 -0000 --0-830788974-1267380108=:45125 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable --- On Sun, 2/28/10, Jeano Kalawa wrote: From: Jeano Kalawa =A0=0AI am working with my final prosject at University. I work with a=A0SH= T =A075 sensirion sensor to measure temperature and humidity. I use an ATme= ga 32 controller and have to send data to a PC-skjerme via UART. I do try t= o use the sample code from sensirion ,but it does not work. Hello Jeano, Seen the PDF. The code looks mangled!!! Initial comment says the code is fo= r 8051 but includes show at89s53.h. Again intrins.h is not part of GCC. Nayani =0A=0A=0A --0-830788974-1267380108=:45125 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable

--- On Sun, 2/28/10, Jeano Kalawa &= lt;dokina2@yahoo.fr> wrote:
From: Je= ano Kalawa <dokina2@yahoo.fr>

 
=0A
I am working with my fina= l prosject at University. I work with a SHT  75 sensirion sensor = to measure temperature and humidity. I use an ATmega 32 controller and have= to send data to a PC-skjerme via UART. I do try to use the sample code fro= m sensirion ,but it does not work.


H= ello Jeano,
Seen the PDF. The code looks mangled!!! Initial comment says= the code is for 8051 but includes show at89s53.h. Again intrins.h is not p= art of GCC.

Nayani


= =0A=0A --0-830788974-1267380108=:45125--