Hi, first thank you for this extensive review.
I think that currently we always use i18n macro _("xx") for all our strings - or we are supposed to. As you have noticed, this is sometimes useless, particularly when the string is not subject to translation. Maintainers, must we not use _() macro for non-translatable string ? I don't know if there was such a rule, but this is not clear at least to me. Tristan. On Sep 24, 2011, at 9:08 PM, Jorma Karvonen wrote: > Hi, > > I have picked some errors from the source code or from the > binutils.pot file. I'm sure there will be more bugs, if I have browsed > the whole source code for binutils (missing translations). > > Best regards, > > Jorma Karvonen > > #: addr2line.c:271 > #, c-format > msgid " at " > > Is this "at" an address or a function or something? It is difficult to > translate due to missing context. > > #: addr2line.c:296 > #, c-format > msgid " (inlined by) " > > by who ? Missing context here too. > > ar.c:1024 > bfd_fatal ("could not create temporary file whilst writing archive"); > > should be: > bfd_fatal (_("could not create temporary file whilst writing archive")); > > , I think. > > The following three should be: > > bucomm.c:228 > case BFD_ENDIAN_BIG: return _("big endian"); > bucomm.c:229 > case BFD_ENDIAN_LITTLE: return _("little endian"); > bucomm.c:230 > default: return _("endianness unknown"); > > , I think. > > The following should be: > > bucomm.c:251 > printf (_("%s\n (header %s, data %s)\n"), p->name, > > , I think. > > I wonder, if setlocale could be used here: > > bucomm.c:430 > const char *ctime_result = (const char *) ctime (&when); > > /* POSIX format: skip weekday and seconds from ctime output. */ > sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20); > > The following shoud maybe be: > > coffdump.c:130 > printf (_("size %d "), p->size); > coffdump.c:135 > printf (_("section definition at %x size %x\n"), > coffdump.c:141 > /* Pointer is pointing to coff_pointer_type */ > printf (_("pointer to")); > coffdump.c:146 > /* a coff_type array */ > printf (_("array [%d] of"), p->u.array.dim); > coffdump.c:151 > printf (_("function returning")); > coffdump.c:155 > printf (_("arguments")); > coffdump.c:159 > printf (_("code")); > coffdump.c:165 > printf (_("structure definition")); > coffdump.c:171 > printf (_("structure ref to UNKNOWN struct")); > coffdump.c:173 > printf (_("structure ref to %s"), p->u.aenumref.ref->name); > coffdump.c:176 > printf (_("enum ref to %s"), p->u.astructref.ref->name); > coffdump.c:179 > printf (_("enum definition")); > coffdump.c:252 > printf (_("Stack offset %x"), p->offset); > coffdump.c:255 > printf (_("Memory section %s+%x"), p->section->name, p->offset); > coffdump.c:258 > printf (_("Register %d"), p->offset); > coffdump.c:261 > printf (_("Struct Member offset %x"), p->offset); > coffdump.c:264 > printf (_("Enum Member offset %x"), p->offset); > coffdump.c:267 > printf (_("Undefined symbol")); > coffdump.c:334 > printf (_("List of symbols")); > coffdump.c:341 > printf (_("Symbol %s, tag %d, number %d"), p->name, p->tag, p->number); > coffdump.c:345 > printf (_("Type")); > coffdump.c:350 > printf (_("Where")); > coffdump.c:354 > printf (_("Visible")); > coffdump.c:369 > printf (_("List of blocks")); > printf (" %" BFD_VMA_FMT "x ",(bfd_vma) (uintptr_t) p); > coffdump.c:384 > /* number of symbols */ > printf (_("vars %d"), p->nvars); > coffdump.c:385 > printf (_("blocks")); > coffdump.c:403 > printf (_("List of source files")); > coffdump.c:409 > printf (_("Source file %s"), p->name); > coffdump.c:423 > /* nrelocs is the number of the coff_reloc structs in a coff_section */ > printf (_("section %s %d %d address %x size %x number %d nrelocs %d"), > coffdump.c:446 > printf (_("Coff dump")); > coffdump.c:448 > printf (_("#sources %d"), ptr->nsources); > > sysdump.c:66 > return _("*undefined*"); > sysdump.c:503 > printf (_("GOT A %x\n"), c); > sysdump.c:503 > printf (_("WANTED %x!!\n"), x); > sysdump.c:539 > tab (1, _("SYMBOL INFO")); > sysdump.c:557 > tab (1, _("DERIVED TYPE")); > sysdump.c:614 > tab (1, _("MODULE***\n")); > > dlltool.c:1266 > printf (_("VERSION %d.%d\n"), major, minor); > dlltool.c:1314 > inform (_("run: %s %s"), what, args); > > dllwrap.c:417 > warn (_("wait: %s"), strerror (errno)); > > dwarf.c:132 > error (_("Wrong size in print_dwarf_vma")); > dwarf.c:356,360,364 > printf (_("(%s"), <-- PLS, REMOVE THIS > > In the following should be "UNKNOWN", not "UNKNOW": > dwarf.c:370 > printf (_(" UNKNOW DW_LNE_HP_SFC opcode (%u)\n"), opc); > dwarf.c:1075 > printf (_("size: %s "), > dwarf.c:1098 > printf ("DW_OP_GNU_push_tls_address "); > printf (_("or")); > printf ( " DW_OP_HP_unknown"); > dwarf.c:1608 > printf (_("(implementation defined: %s)"), > dwarf.c:1611 > printf (_("(Unknown: %s)"), dwarf_vmatoa ("x", uvalue)); > dwarf.c:1649 > printf (_("(user defined type)")); > dwarf.c:1651 > printf (_("(unknown type)")); > dwarf.c:1663 > printf (_("(unknown accessibility)")); > dwarf.c:1674 > default: printf (_("(unknown visibility)")); break; > dwarf.c:1684 > default: printf (_("(unknown virtuality)")); break; > dwarf.c:1695 > default: printf (_("(unknown case)")); break; > dwarf.c:1708 > printf (_("(user defined)")); > dwarf.c:1710 > printf (_("(unknown convention)")); > dwarf.c:1717 > case -1: printf (_("(undefined)")); break; > dwarf.c:1718 > case 0: printf (_("(row major)")); break; > dwarf.c:1719 > case 1: printf (_("(column major)")); break; > dwarf.c:1786 > printf (_("[Abbrev Number: %ld"), abbrev_number); > dwarf.c:2175 > printf (" "); > printf (_("Compilation Unit @ offset")); > printf (" 0x%s:\n", > dwarf_vmatoa ("x", cu_offset)); > printf (" "); > printf (_("Length:")); > printf (" 0x%s (%s)\n", > dwarf_vmatoa ("x", compunit.cu_length), > offset_size == 8 ? _("64-bit") : _("32-bit")); > printf (" "); > printf (_("Version:")); > printf (" %d\n", compunit.cu_version); > printf (" "); > /* abbreviation offset */ > printf (_("Abbrev Offset:")); > printf (" %s\n", > dwarf_vmatoa ("d", compunit.cu_abbrev_offset)); > printf (" "); > printf (_("Pointer Size:")); > printf (" %d\n", compunit.cu_pointer_size); > if (do_types) > { > int i; > printf (" "); > printf (_("Signature:")); > printf (" ")); > for (i = 0; i < 8; i++) > printf ("%02x", signature[i]); > printf ("\n"); > printf (" "); > printf (_("Type Offset:")); > printf (" 0x%s\n", > dwarf_vmatoa ("x", type_offset)); > dwarf.c:2310 > printf (" <%d><%lx>: "); > /* Abbreviation number */ > printf (_("Abbrev Number:")); > printf (" %lu", > dwarf.c:2569 > /* Entry means here a line of the table */ > printf (_(" Entry\tDir\tTime\tSize\tName\n")); > dwarf.c:2973 > /* Compilation Unit */ > printf (_("CU: %s:\n"), file_table[0].name); > dwarf.c:5563 > printf (_("[%3u] 0x%lx - 0x%lx\n"), i / 2, <-- PLS, REMOVE THIS _(ONE) > dwarf.c:5568 > /* Translation Unit table */ > printf (_("\nTU table:\n")); > dwarf.c:5575 > printf (_("[%3u] 0x%lx 0x%lx "), i / 3, <-- PLS, REMOVE THIS _(ONE) > dwarf.c:5591 > printf (_("%lu\n"), (unsigned long) cu_index); <-- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:462 > printf (_(" o_mflag (magic): 0x%04x 0%04o\n"), magic, magic); > printf (_(" o_vstamp: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned short)bfd_h_get_16 (abfd, auxhdr.vstamp)); > printf (_(" o_tsize: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.tsize)); > printf (_(" o_dsize: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.dsize)); > printf (_(" o_entry: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.entry)); > printf (_(" o_text_start: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.text_start)); > printf (_(" o_data_start: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.data_start)); > if (sz == offsetof (AOUTHDR, o_toc)) <-- PLS, REMOVE THIS _(ONE) > return; > printf (_(" o_toc: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_toc)); > printf (_(" o_snentry: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snentry)); > printf (_(" o_sntext: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sntext)); > printf (_(" o_sndata: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sndata)); > printf (_(" o_sntoc: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sntoc)); > printf (_(" o_snloader: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snloader)); > printf (_(" o_snbss: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snbss)); > printf (_(" o_algntext: %u\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_algntext)); > printf (_(" o_algndata: %u\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_algndata)); > printf (_(" o_modtype: 0x%04x"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_modtype)); > if (ISPRINT (auxhdr.o_modtype[0]) && ISPRINT (auxhdr.o_modtype[1])) > printf (" (%c%c)", auxhdr.o_modtype[0], auxhdr.o_modtype[1]); > putchar ('\n'); > printf (_(" o_cputype: 0x%04x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_cputype)); > printf (_(" o_maxstack: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_maxstack)); > printf (_(" o_maxdata: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_maxdata)); > #if 0 > printf (_(" o_debugger: 0x%08x\n"), <-- PLS, REMOVE THIS _(ONE) > (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_debugger)); > #endif > > od-xcoff.c:534 > /* Add a comment for TRANSLATORS: what are paddr, vaddr, scnptr, > relptr, lnnoptr, nrel nlnno ? */ > printf (_(" # Name paddr vaddr size scnptr relptr > lnnoptr nrel nlnno\n")); > > od-xcoff.c:546 > printf (_("%2d %-8.8s %08x %08x %08x %08x %08x %08x " > "%-5d %-5d\n"), <-- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:754 > printf (_(" (strings size: %08x):\n"), data->strings_size); <-- A > QUESTION: Several strings ? > > od-xcoff.c:767 > /* Add a comment for TRANSLATORS: what is "sc" ? What about "off" > ? Offset or ON/OFF ? */ > printf (_(" # sc value section type aux name/off\n")); > > od-xcoff.c:818 > /* Add a comment for TRANSLATORS: what is "scnlen" ? What about > "nreloc" and "nlinno" ?*/ > printf (_(" scnlen: %08x nreloc: %-6u nlinno: %-6u\n"), > (unsigned)bfd_h_get_32 (abfd, aux->x_scn.x_scnlen), > (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nreloc), > (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nlinno)); > break; > case C_DWARF: > printf (_(" scnlen: %08x nreloc: %-6u\n"), > (unsigned)bfd_h_get_32 (abfd, aux->x_scn.x_scnlen), > (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nreloc)); > break; > case C_EXT: > case C_WEAKEXT: > case C_HIDEXT: > if (j == 0 && s->sym.numaux > 1) > { > /* Function aux entry. */ > /* Add a comment for TRANSLATORS: what is "exptr","fsize", > "lnnoptr", "endndx" ?*/ > printf (_(" exptr: %08x fsize: %08x lnnoptr: %08x > endndx: %u\n"), > (unsigned)bfd_h_get_32 (abfd, aux->x_sym.x_tagndx), > (unsigned)bfd_h_get_32 > (abfd, aux->x_sym.x_misc.x_fsize), > (unsigned)bfd_h_get_32 > (abfd, aux->x_sym.x_fcnary.x_fcn.x_lnnoptr), > (unsigned)bfd_h_get_32 > (abfd, aux->x_sym.x_fcnary.x_fcn.x_endndx)); > } > else if (j == 1 || (j == 0 && s->sym.numaux == 1)) > { > /* csect aux entry. */ > unsigned char smtyp; > unsigned int scnlen; > > smtyp = bfd_h_get_8 (abfd, aux->x_csect.x_smtyp); > scnlen = bfd_h_get_32 (abfd, aux->x_csect.x_scnlen); > > if (smtyp == XTY_LD) > printf (_(" scnsym: %-8u"), scnlen); <-- WHAT IS "scnsym" > ? > else > printf (_(" scnlen: %08x"), scnlen); > printf (_(" h: parm=%08x sn=%04x al: 2**%u"), <--- > IS THIS NEEDED ? > (unsigned)bfd_h_get_32 (abfd, > aux->x_csect.x_parmhash), > (unsigned)bfd_h_get_16 (abfd, aux->x_csect.x_snhash), > SMTYP_ALIGN (smtyp)); > printf (_(" typ: ")); > dump_value (smtyp_xlat, SMTYP_SMTYP (smtyp), 2); > printf (_(" cl: ")); <-- WHAT IS "cl" ? > dump_value > (smclas_xlat, > (unsigned)bfd_h_get_8 (abfd, aux->x_csect.x_smclas), 6); > putchar ('\n'); > } > else > printf ("aux\n"); <--- SHOULD THIS BE printf (_("aux\n")); ? > break; > case C_FILE: > { > unsigned int off; > > printf (_(" ftype: %02x "), <--- WHAT IS "ftype" ? IS > THIS NEEDED ? > (unsigned)bfd_h_get_8 (abfd, aux->x_file.x_ftype)); > if (aux->x_file.x_n.x_fname[0] != 0) > printf (_("fname: %.14s"), aux->x_file.x_n.x_fname); > <-- IS THIS NEEDED ? > else > { > off = (unsigned)bfd_h_get_32 > (abfd, aux->x_file.x_n.x_n.x_offset); > if (data->strings != NULL && off < data->strings_size) > printf (_(" %s"), data->strings + off); <-- PLS, > REMOVE THIS _(ONE) > else > printf (_("offset: %08x"), off); > } > putchar ('\n'); > } > break; > case C_BLOCK: > case C_FCN: > printf (_(" lnno: %u\n"), <-- IS THIS SOME NEW ONE ? > (unsigned)bfd_h_get_16 > (abfd, aux->x_sym.x_misc.x_lnsz.x_lnno)); > break; > default: > printf ("aux\n"); <--- SHOULD THIS BE printf (_("aux\n")); ? > > od-xcoff.c:934 > printf (_("vaddr sgn mod sz type symndx symbol\n")); <--- OOPS ! > > od-xcoff.c:947 > printf (_("%08x %c %c %-2u "), <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1001 > printf (_(" %-6u "), no); <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1066 > printf (_(" import strtab len: %u\n"), <--- WHAT IS "strtab" ? > > od-xcoff.c:1079 > /* WHAT IS "sc IFEW ty" ? WHAT ABOUT "pa name" ? */ > printf (_(" # value sc IFEW ty class file pa name\n")); > > od-xcoff.c:1084 > printf (_(" %4u %08x %3u "), i, <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1087 > printf (_(" %3u %3u "), <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1114 > /* "vaddr" IS STILL THE SAME AS PREVIOUSLY ? IS "sec" sector OR > second(s) ? IS "sz" same as "size" ? */ > printf (_(" vaddr sec sz typ sym\n")); > > od-xcoff.c:1126 > printf (_(" %08x %3u %c%c %2u "), <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1137 > case 0: > printf (_(".text")); <--- PLS, REMOVE THIS _(ONE) > break; > case 1: > printf (_(".data")); <--- PLS, REMOVE THIS _(ONE) > break; > case 2: > printf (_(".bss")); <--- PLS, REMOVE THIS _(ONE) > break; > default: > printf (_("%u"), symndx - 3); <--- PLS, REMOVE THIS _(ONE) > > od-xcoff.c:1201 > printf (_(" %02x %02x "), <--- PLS, REMOVE THIS _(ONE) > (unsigned) bfd_get_8 (abfd, exceptab->e_lang), reason); > if (reason == 0) > xcoff32_print_symbol (data, addr); > else > printf (_("@%08x"), addr); <--- PLS, REMOVE THIS _(ONE) > > The following msgids need some comments for TRANSLATORS: > > #: od-xcoff.c:1299 > #, c-format > msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, > has_tboff: %u, int_proc: %u\n" > > #: od-xcoff.c:1306 > #, c-format > msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, > int_hndl: %u\n" <--- PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1312 > #, c-format > msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, > saves_lr: %u\n" <--- PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1318 > #, c-format > msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, > gpr_saved: %-2u\n" <--- PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1324 > #, c-format > msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n" <--- > PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1337 > #, c-format > msgid " parminfo: 0x%08x\n" <--- PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1348 > #, c-format > msgid " tb_offset: 0x%08x (start=0x%08x)\n" <--- OK, "start" > > #: od-xcoff.c:1359 > #, c-format > msgid " hand_mask_offset: 0x%08x\n" <--- PLS, REMOVE THIS _(ONE) > > #: od-xcoff.c:1370 > #, c-format > msgid " number of CTL anchors: %u\n" <--- WHAT IS "CTL" ? > > #: od-xcoff.c:1375 > #, c-format > msgid " CTL[%u]: %08x\n" <-- REMOVED OR TRANSLATED ? > > #: od-xcoff.c:1407 > #, c-format > msgid " alloca reg: %u\n" <-- "alloca" ? > > #: readelf.c:4057 readelf.c:4132 > msgid "symtab shndx" <--- PLS, REMOVE THIS _(ONE) ?? > > #: readelf.c:5193 > msgid "dynamic section image relas" <--- WHAT IS "relas" ?? > > #: readelf.c:5399 readelf.c:5815 readelf.c:5830 readelf.c:6167 > #, c-format > msgid "'%s'" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:6666 > #, c-format > msgid " 0x%02x " <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:6763 > #, c-format > msgid "sp = sp + %ld" <--- PLS, REMOVE THIS _(ONE) ?? > > #: readelf.c:8200 > msgid "version need section" <-- SHOULD THIS ONE BE "version needs section" ?? > > #: readelf.c:8278 > #, c-format > msgid " Version need aux past end of section\n" <-- WHAT ABOUT THIS ONE ? > > #: readelf.c:8283 > #, c-format > msgid " Version need past end of section\n" <-- AND THIS ONE ? > > WHAT IS "GOT" IN THE FOLLOWING CONTEXT: > > #: readelf.c:11936 > msgid "GOT" > > #: readelf.c:11937 > #, c-format > msgid "" > "\n" > "Primary GOT:\n" > #: readelf.c:11979 readelf.c:12047 > msgid "Ndx" <-- WHAT IS THIS ? Index ? > > # the Global Offset Table (GOT) ja the Procedure Linkage Table (PLT) > <-- I HAVE GUESSED > #: readelf.c:12032 > msgid "PLT GOT" <-- IS THIS NEEDED ? > > #: readelf.c:12033 > #, c-format > msgid "" > "\n" > "PLT GOT:\n" <-- IS THIS NEEDED ? > "\n" > > #: readelf.c:12269 readelf.c:12425 > #, c-format > msgid "\n" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12371 > #, c-format > msgid "PT_FIRSTMACH+%d" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12445 > msgid "NT_VMS_TITLE" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12451 > msgid "NT_VMS_LINKTIME" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12463 > msgid "NT_VMS_ORIG_DYN" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12465 > msgid "NT_VMS_PATCHTIME" <--- PLS, REMOVE THIS _(ONE) > > #: readelf.c:12494 > msgid " FP mode: 0x%016" <--- WHAT IS "FP" IN THIS CONTEXT ? > > #: readelf.c:12513 > #, c-format > msgid " Manip date : " <--- WHAT IS "Manip" ? > > _______________________________________________ > bug-binutils mailing list > bug-binutils@gnu.org > https://lists.gnu.org/mailman/listinfo/bug-binutils _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils