Thanks David. I was about to write a patch, when I found out that this issue is already fixed on mainline [1], since 2013(!). I'll have to contact package maintainers of my OS, to mark a more recent version as stable...
Cheers Ralf [1] https://github.com/vancegroup-mirrors/avr-libc/commit/6323351b344996a4a8c849ae5e2f6c2b10ae5cc0 On 01/22/2017 10:28 AM, David Brown wrote: > Hi, > > I am not involved in avr-libc development at all, but I've done my bit > of gcc inline assembly. And you are correct - you need the empty string > for the memory barrier. > > mvh., > > David > > > On 21/01/17 17:54, Ralf Ramsauer wrote: >> Hi, >> >> you define _MemoryBarrier() inside avr/cpufunc.h as follows: >> #define _MemoryBarrier() __asm__ __volatile__(:::"memory") >> which won't compile in my case: >> foo.c:33:2: error: expected string literal before ‘:’ token >> _MemoryBarrier(); >> >> Shouldn't this rather be defined as: >> #define _MemoryBarrier() __asm__ __volatile__("":::"memory") >> >> If someone could confirm this I'll send a short patch. >> >> Cheers >> Ralf >> >> PS: BTW: your project page [0] links to [1], which seems to be a dead >> link. >> [0] http://savannah.nongnu.org/cvs/?group=avr-libc >> [1] http://web.cvs.savannah.nongnu.org/viewcvs/?root=avr-libc >> -- Ralf Ramsauer GPG: 0x8F10049B _______________________________________________ AVR-libc-dev mailing list AVR-libc-dev@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-libc-dev