This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/13428] gcc-avr doesn't work properly with PGM string


------- Additional Comments From ken at realtronix dot net  2003-12-20 02:53 -------
(In reply to comment #2)
> Can you provide the preprocessed source?

# 1 "pgmbug.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "pgmbug.c"
# 1 "C:/WinAVR/avr/include/avr/io.h" 1 3
# 81 "C:/WinAVR/avr/include/avr/io.h" 3
# 1 "C:/WinAVR/avr/include/avr/sfr_defs.h" 1 3
# 82 "C:/WinAVR/avr/include/avr/io.h" 2 3
# 167 "C:/WinAVR/avr/include/avr/io.h" 3
# 1 "C:/WinAVR/avr/include/avr/iom103.h" 1 3
# 168 "C:/WinAVR/avr/include/avr/io.h" 2 3
# 2 "pgmbug.c" 2
# 1 "C:/WinAVR/avr/include/avr/pgmspace.h" 1 3
# 67 "C:/WinAVR/avr/include/avr/pgmspace.h" 3
# 1 "C:/WinAVR/avr/include/inttypes.h" 1 3
# 60 "C:/WinAVR/avr/include/inttypes.h" 3
typedef signed char int8_t;




typedef unsigned char uint8_t;
# 83 "C:/WinAVR/avr/include/inttypes.h" 3
typedef int int16_t;




typedef unsigned int uint16_t;
# 99 "C:/WinAVR/avr/include/inttypes.h" 3
typedef long int32_t;




typedef unsigned long uint32_t;
# 117 "C:/WinAVR/avr/include/inttypes.h" 3
typedef long long int64_t;




typedef unsigned long long uint64_t;
# 134 "C:/WinAVR/avr/include/inttypes.h" 3
typedef int16_t intptr_t;




typedef uint16_t uintptr_t;
# 68 "C:/WinAVR/avr/include/avr/pgmspace.h" 2 3
# 1 "C:/WinAVR/lib/gcc-lib/avr/3.3.1/include/stddef.h" 1 3 4
# 213 "C:/WinAVR/lib/gcc-lib/avr/3.3.1/include/stddef.h" 3 4
typedef unsigned int size_t;
# 69 "C:/WinAVR/avr/include/avr/pgmspace.h" 2 3
# 89 "C:/WinAVR/avr/include/avr/pgmspace.h" 3
typedef void prog_void __attribute__((__progmem__));
typedef char prog_char __attribute__((__progmem__));
typedef unsigned char prog_uchar __attribute__((__progmem__));
typedef int prog_int __attribute__((__progmem__));
typedef long prog_long __attribute__((__progmem__));
typedef long long prog_long_long __attribute__((__progmem__));
# 347 "C:/WinAVR/avr/include/avr/pgmspace.h" 3
extern void *memcpy_P(void *, const prog_void *, size_t);
extern char *strcat_P(char *, const prog_char *);
extern int strcmp_P(const char *, const prog_char *) __attribute__((__pure__));
extern char *strcpy_P(char *, const prog_char *);
extern int strcasecmp_P(const char *, const prog_char *) __attribute__
((__pure__));
extern size_t strlcat_P (char *, const prog_char *, size_t );
extern size_t strlcpy_P (char *, const prog_char *, size_t );
extern size_t strlen_P(const prog_char *) __attribute__((__const__));
extern int strncmp_P(const char *, const prog_char *, size_t) __attribute__
((__pure__));
extern int strncasecmp_P(const char *, const prog_char *, size_t) __attribute__
((__pure__));
extern char *strncat_P(char *, const prog_char *, size_t);
extern char *strncpy_P(char *, const prog_char *, size_t);
# 3 "pgmbug.c" 2
# 1 "C:/WinAVR/avr/include/string.h" 1 3
# 40 "C:/WinAVR/avr/include/string.h" 3
# 1 "C:/WinAVR/lib/gcc-lib/avr/3.3.1/include/stddef.h" 1 3 4
# 41 "C:/WinAVR/avr/include/string.h" 2 3
# 59 "C:/WinAVR/avr/include/string.h" 3
extern void *memccpy(void *, const void *, int, size_t);
extern void *memchr(const void *, int, size_t) __attribute__((__pure__));
extern int memcmp(const void *, const void *, size_t) __attribute__
((__pure__));
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern char *strchr(const char *, int) __attribute__((__pure__));
extern int strcmp(const char *, const char *) __attribute__((__pure__));
extern char *strcpy(char *, const char *);
extern int strcasecmp(const char *, const char *) __attribute__((__pure__));
extern size_t strlcat(char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlen(const char *) __attribute__((__pure__));
extern char *strlwr(char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern int strncasecmp(const char *, const char *, size_t) __attribute__
((__pure__));
extern size_t strnlen(const char *, size_t) __attribute__((__pure__));
extern char *strrchr(const char *, int) __attribute__((__pure__));
extern char *strrev(char *);
extern char *strsep(char **, const char *) __attribute__((__pure__));
extern char *strstr(const char *, const char *) __attribute__((__pure__));
extern char *strtok_r(char *, const char *, char **) __attribute__((__pure__));
extern char *strupr(char *);
# 4 "pgmbug.c" 2

const char foo[] __attribute__((__progmem__)) = "foo";
const char bar[] __attribute__((__progmem__)) = "bar";

const prog_char * Langs[2] __attribute__((__progmem__)) = {foo, bar};

int main(void)
{
  unsigned char i;
  char buf[2][5];


  strcpy_P(buf[0], Langs[0]);
  strcpy_P(buf[1], Langs[1]);


  for (i=0; i<2; i++)
    strcpy_P(buf[i], Langs[i]);

  return 1;
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13428


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]