This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: patch: Updated windres tool Part 1 of 2
- From: Nick Clifton <nickc at redhat dot com>
- To: Kai Tietz <Kai dot Tietz at onevision dot com>
- Cc: Binutils <binutils at sourceware dot org>, Danny Smith <dannysmith at clear dot net dot nz>, Dave Korn <dave dot korn at artimi dot com>
- Date: Tue, 22 May 2007 14:37:22 +0100
- Subject: Re: patch: Updated windres tool Part 1 of 2
- References: <OF9B82EF94.2F0E23F1-ONC12572E2.0038EB64-C12572E2.00390D87@onevision.de>
Hi Kai,
this is the update of the windres patch correcting the resource id writing
in resres.c writing 0xfff instead of correct 0xffff.
Great - the patch is looking very good, but unfortunately there is still
one problem - I am getting some FAIL results in the windres part of the
binutils testsuite:
FAIL: windres/capstyle (compare)
FAIL: windres/checkbox (compare)
FAIL: windres/combobox (compare)
FAIL: windres/deflang (compare)
FAIL: windres/dialog0 (compare)
FAIL: windres/dialog1 (compare)
FAIL: windres/dialogid (compare)
FAIL: windres/dialogsignature (compare)
FAIL: windres/edittext (compare)
FAIL: windres/escapex-2 (compare)
FAIL: windres/html (parse)
FAIL: windres/lang (compare)
FAIL: windres/listbox (compare)
FAIL: windres/messagetable (parse)
FAIL: windres/nocaption (compare)
FAIL: windres/printstyle (compare)
FAIL: windres/sublang (compare)
These are all happening because there are two zero-bytes missing from
the end of the objdump output in each of the tests. eg from the
capstyle test:
< 0070 4b000000 00000000 K.......
> 0070 4b000000 0000 K.....
FAIL: windres/capstyle (compare)
This is from a toolchain targeted at "i686-pc-cygwin" and built on an
x86_64 host running a 64-bit Linux OS.
Is the testsuite wrong or is the resource compiler not putting in enough
bytes ?
I also have one other comment, based on Dave Korn's observation:
I don't understand changes like this. A bfd_vma represents a
memory address. The base_style and default_style are IIUIC bitmasks
of windows style flags. It seems very wrong to use such an unrelated
type.
I used the type bfd_vma for preventing people to think that rc_res_(XXX)
structures are anyhow related to binary layout of these structures.
Because this leads in fact to problems for different architectures with
different base type sizes.
I understand that, but using bfd_vma is still very confusing. It really
is meant to be a type for handling addresses. Why not use bfd_size_type
instead ? The underlying type will be the same as bfd_vma, but its name
is more open to non-address uses.
In fact even better would be to define your own type in terms of
bfd_size_type. eg something like:
/* Use bfd_size_type to ensure a sufficient number of bits. */
typedef rc_bitfield_type bfd_size_type;
Then you can use rc_bitfield_type where you are currently using bfd_vma.
Cheers
Nick