This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

Re: patch: Updated windres tool Part 1 of 2


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


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