I am unable to reproduce this using g++-3.2 3.2.3-0pre1 and gcc-snapshot. Please could you recheck?
Akim Demaille writes: > Package: libstdc++5-dev > Version: 1:3.2.2-0pre8 > Severity: normal > > The following program used to display the whole range of French > characters when LC_CTYPE was properly set. Now, it merely dumps ASCII > characters. > > -------------------------------------------------- > #include <ios> > #include <iostream> > #include <string> > #include <cctype> > #include <locale> > > struct escape > { > escape (const std::string& s_, > bool print_delim_ = false) > : s (s_), print_delim (print_delim_) > {} > > const std::string& s; > bool print_delim; > }; > > std::ostream& operator<<(std::ostream& o, const escape& e) > { > static std::locale locale (""); > std::ios_base::fmtflags flags = o.flags (std::ios_base::hex); > if (e.print_delim) > o << '\"'; > for (std::string::const_iterator p = e.s.begin (); p != e.s.end (); ++p) > { > if (std::isprint (*p, locale)) > o << *p; > else > switch (*p) > { > case '\a': o << "\\a"; break; > case '\b': o << "\\b"; break; > case '\f': o << "\\f"; break; > case '\n': o << "\\n"; break; > case '\r': o << "\\r"; break; > case '\t': o << "\\t"; break; > case '\v': o << "\\v"; break; > default: > o << "\\x" << (int) (unsigned char) *p; > } > } > if (e.print_delim) > o << '\"'; > o.flags (flags); > return o; > } > > int > main () > { > std::string s; > for (unsigned int i = 0; i < 256; ++i) > s.append (1, i); > std::cout << escape (s, true) << std::endl; > } > -------------------------------------------------- > > It is worth noting that if I compare the strace on a machine before > pre8 (it was pre3 I think), I can see that: > > --- sand 2003-02-05 17:40:14.000000000 +0100 > +++ nos 2003-02-05 17:40:38.000000000 +0100 > @@ -1,47 +1,46 @@ > -execve("./escape", ["./escape"], [/* 29 vars */]) = 0 > -uname({sys="Linux", node="sandrock", ...}) = 0 > +execve("./escape", ["./escape"], [/* 54 vars */]) = 0 > +uname({sys="Linux", node="nostromo", ...}) = 0 > brk(0) = 0x8049354 > access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=56231, ...}) = 0 > -old_mmap(NULL, 56231, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40012000 > +fstat64(3, {st_mode=S_IFREG|0644, st_size=66240, ...}) = 0 > +old_mmap(NULL, 66240, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40012000 > close(3) = 0 > open("/usr/lib/libstdc++.so.5", O_RDONLY) = 3 > -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\230\252"..., 1024) > = 1024 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=668760, ...}) = 0 > -old_mmap(NULL, 692032, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40020000 > -mprotect(0x400ad000, 114496, PROT_NONE) = 0 > -old_mmap(0x400ad000, 94208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x8c000) = 0x400ad000 > -old_mmap(0x400c4000, 20288, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400c4000 > +read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\364\245"..., 1024) > = 1024 > +fstat64(3, {st_mode=S_IFREG|0644, st_size=664824, ...}) = 0 > +old_mmap(NULL, 683968, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40023000 > +mprotect(0x400af000, 110528, PROT_NONE) = 0 > +old_mmap(0x400af000, 94208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x8c000) = 0x400af000 > +old_mmap(0x400c6000, 16320, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400c6000 > close(3) = 0 > open("/lib/libm.so.6", O_RDONLY) = 3 > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2605\0"..., 1024) = > 1024 > fstat64(3, {st_mode=S_IFREG|0644, st_size=130964, ...}) = 0 > -old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x400c9000 > -old_mmap(NULL, 133536, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400ca000 > -mprotect(0x400ea000, 2464, PROT_NONE) = 0 > -old_mmap(0x400ea000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x1f000) = 0x400ea000 > +old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x400ca000 > +old_mmap(NULL, 133536, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400cb000 > +mprotect(0x400eb000, 2464, PROT_NONE) = 0 > +old_mmap(0x400eb000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x1f000) = 0x400eb000 > close(3) = 0 > open("/lib/libgcc_s.so.1", O_RDONLY) = 3 > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\23\0"..., 1024) > = 1024 > fstat64(3, {st_mode=S_IFREG|0644, st_size=29632, ...}) = 0 > -old_mmap(NULL, 32616, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400eb000 > -mprotect(0x400f2000, 3944, PROT_NONE) = 0 > -old_mmap(0x400f2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x6000) = 0x400f2000 > +old_mmap(NULL, 32616, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400ec000 > +mprotect(0x400f3000, 3944, PROT_NONE) = 0 > +old_mmap(0x400f3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x6000) = 0x400f3000 > close(3) = 0 > open("/lib/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0]Z\1\000"..., 1024) > = 1024 > fstat64(3, {st_mode=S_IFREG|0755, st_size=1102984, ...}) = 0 > -old_mmap(NULL, 1112740, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400f3000 > -mprotect(0x401fb000, 31396, PROT_NONE) = 0 > -old_mmap(0x401fb000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x107000) = 0x401fb000 > -old_mmap(0x40201000, 6820, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40201000 > +old_mmap(NULL, 1112740, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400f4000 > +mprotect(0x401fc000, 31396, PROT_NONE) = 0 > +old_mmap(0x401fc000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x107000) = 0x401fc000 > +old_mmap(0x40202000, 6820, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40202000 > close(3) = 0 > -munmap(0x40012000, 56231) = 0 > +munmap(0x40012000, 66240) = 0 > brk(0) = 0x8049354 > brk(0x804a354) = 0x804a354 > -brk(0) = 0x804a354 > brk(0x804b000) = 0x804b000 > brk(0) = 0x804b000 > brk(0x804c000) = 0x804c000 > @@ -49,152 +48,9 @@ > brk(0x804d000) = 0x804d000 > brk(0) = 0x804d000 > brk(0x804f000) = 0x804f000 > -open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=290576, ...}) = 0 > -mmap2(NULL, 290576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40203000 > -close(3) = 0 > -open("/usr/share/locale/locale.alias", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=2597, ...}) = 0 > +fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 > old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x40012000 > -read(3, "# Locale name alias data base.\n#"..., 4096) = 2597 > -brk(0) = 0x804f000 > -brk(0x8050000) = 0x8050000 > -read(3, "", 4096) = 0 > -close(3) = 0 > +write(1, "\"\\x0\\x1\\x2\\x3\\x4\\x5\\x6\\a\\b\\t\\n\\v"..., > 719"\x0\x1\x2\x3\x4\x5\x6\a\b\t\n\v\f\r\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f > !"#$%&'()*+,-./0123456789:;<=>[EMAIL > PROTECTED]|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" > +) = 719 > munmap(0x40012000, 4096) = 0 > -open("/usr/lib/locale/fr_FR/LC_CTYPE", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=201632, ...}) = 0 > -old_mmap(NULL, 201632, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4024a000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_NUMERIC", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 > -old_mmap(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40012000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_TIME", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=2352, ...}) = 0 > -old_mmap(NULL, 2352, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_COLLATE", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=21499, ...}) = 0 > -old_mmap(NULL, 21499, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_MONETARY", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=299, ...}) = 0 > -old_mmap(NULL, 299, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001a000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_MESSAGES", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 > -old_mmap(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001b000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_PAPER", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=39, ...}) = 0 > -old_mmap(NULL, 39, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001c000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_NAME", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=67, ...}) = 0 > -old_mmap(NULL, 67, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001d000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_ADDRESS", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=132, ...}) = 0 > -old_mmap(NULL, 132, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001e000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_TELEPHONE", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 > -old_mmap(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4001f000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_MEASUREMENT", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0 > -old_mmap(NULL, 28, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4027c000 > -close(3) = 0 > -open("/usr/lib/locale/fr_FR/LC_IDENTIFICATION", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=351, ...}) = 0 > -old_mmap(NULL, 351, PROT_READ, MAP_PRIVATE, 3, 0) = 0x4027d000 > -close(3) = 0 > -brk(0) = 0x8050000 > -brk(0x8051000) = 0x8051000 > -open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such > file or directory) > -open("/usr/lib/gconv/gconv-modules", O_RDONLY) = 3 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=44467, ...}) = 0 > -old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x4027e000 > -read(3, "# GNU libc iconv configuration.\n"..., 4096) = 4096 > -brk(0) = 0x8051000 > -brk(0x8052000) = 0x8052000 > -read(3, "2//\nalias\tJS//\t\t\tJUS_I.B1.002//\n"..., 4096) = 4096 > -brk(0) = 0x8052000 > -brk(0x8053000) = 0x8053000 > -brk(0) = 0x8053000 > -brk(0x8054000) = 0x8054000 > -read(3, "1\nmodule\tINTERNAL\t\tISO-8859-3//\t"..., 4096) = 4096 > -brk(0) = 0x8054000 > -brk(0x8055000) = 0x8055000 > -brk(0) = 0x8055000 > -brk(0x8056000) = 0x8056000 > -read(3, "\nalias\tLATIN8//\t\tISO-8859-14//\na"..., 4096) = 4096 > -brk(0) = 0x8056000 > -brk(0x8057000) = 0x8057000 > -brk(0) = 0x8057000 > -brk(0x8058000) = 0x8058000 > -read(3, "as\tCSEBCDICESS//\t\tEBCDIC-ES-S//\n"..., 4096) = 4096 > -brk(0) = 0x8058000 > -brk(0x8059000) = 0x8059000 > -brk(0) = 0x8059000 > -brk(0x805a000) = 0x805a000 > -read(3, "NAL\t\tIBM285\t\t1\nmodule\tINTERNAL\t\t"..., 4096) = 4096 > -brk(0) = 0x805a000 > -brk(0x805b000) = 0x805b000 > -brk(0) = 0x805b000 > -brk(0x805c000) = 0x805c000 > -read(3, "ias\tCP866//\t\t\tIBM866//\nalias\t866"..., 4096) = 4096 > -brk(0) = 0x805c000 > -brk(0x805d000) = 0x805d000 > -read(3, "1004\t\t1\nmodule\tINTERNAL\t\tIBM1004"..., 4096) = 4096 > -brk(0) = 0x805d000 > -brk(0x805e000) = 0x805e000 > -brk(0) = 0x805e000 > -brk(0x805f000) = 0x805f000 > -read(3, "//\t\tEUC-TW\t\t1\n\n#\tfrom\t\t\tto\t\t\tmod"..., 4096) = 4096 > -brk(0) = 0x805f000 > -brk(0x8060000) = 0x8060000 > -brk(0) = 0x8060000 > -brk(0x8061000) = 0x8061000 > -read(3, "03//\t\tINTERNAL\t\tCSN_369103\t1\nmod"..., 4096) = 4096 > -brk(0) = 0x8061000 > -brk(0x8062000) = 0x8062000 > -brk(0) = 0x8062000 > -brk(0x8063000) = 0x8063000 > -read(3, "SO-IR-8-1//\t\tNATS-SEFI//\nalias\tC"..., 4096) = 3507 > -brk(0) = 0x8063000 > -brk(0x8064000) = 0x8064000 > -read(3, "", 4096) = 0 > -close(3) = 0 > -munmap(0x4027e000, 4096) = 0 > -brk(0) = 0x8064000 > -brk(0x8065000) = 0x8065000 > -open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 3 > -read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\4\7\0\000"..., > 1024) = 1024 > -fstat64(3, {st_mode=S_IFREG|0644, st_size=5944, ...}) = 0 > -old_mmap(NULL, 8672, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4027e000 > -mprotect(0x40280000, 480, PROT_NONE) = 0 > -old_mmap(0x40280000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, > 0x1000) = 0x40280000 > -close(3) = 0 > -fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0 > -old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x40281000 > -munmap(0x4024a000, 201632) = 0 > -munmap(0x40012000, 59) = 0 > -munmap(0x40013000, 2352) = 0 > -munmap(0x40014000, 21499) = 0 > -munmap(0x4001a000, 299) = 0 > -munmap(0x4001b000, 59) = 0 > -munmap(0x4001c000, 39) = 0 > -munmap(0x4001d000, 67) = 0 > -munmap(0x4001e000, 132) = 0 > -munmap(0x4001f000, 59) = 0 > -munmap(0x4027c000, 28) = 0 > -munmap(0x4027d000, 351) = 0 > -write(1, "\"\\x0\\x1\\x2\\x3\\x4\\x5\\x6\\a\\b\\t\\n\\v"..., > 431"\x0\x1\x2\x3\x4\x5\x6\a\b\t\n\v\f\r\xe\xf\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f > !"#$%&'()*+,-./0123456789:;<=>[EMAIL > PROTECTED]|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" > -) = 431 > -munmap(0x40281000, 4096) = 0 > exit_group(0) = ? > > Pay special attention to the fact that the line > > -open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 > > is missing. > > -- System Information > Debian Release: testing/unstable > Kernel Version: Linux nostromo 2.4.20 #2 Tue Dec 10 14:15:31 CET 2002 i686 > unknown unknown GNU/Linux > > Versions of the packages libstdc++5-dev depends on: > ii g++-3.2 3.2.2-0pre8 The GNU C++ compiler > ii gcc-3.2-base 3.2.2-0pre8 The GNU Compiler Collection (base package) > ii libc6-dev 2.3.1-10 GNU C Library: Development Libraries and Hea > ii libstdc++5 3.2.2-0pre8 The GNU Standard C++ Library v3 > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]