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: big endian i86


Hi Nathan,

ping?

Approved in principle, but I am not especially taken with the way that you have coded the tests:


 +   /* Ignore generic big and little endian elf vectors.  */
+   if ((!memcmp (target->name, "elf32", 5)
+        || !memcmp (target->name, "elf64", 5))
+       && (!strcmp (target->name + 5, "-big")
+ 	  || !strcmp (target->name + 5, "-little")))
+     return 0;

Switching between memcmp and strcmp, using "!" which (to me anyway) implies "not" rather than (in this case) meaning "is the same as" and testing different parts of the same name is all very confusing. I appreciate the attempt at optimizing the tests in order to reduce the computation overhead, but in this case I think that clarity is better than complexity. ie I would recommend:

  /* Ignore generic big and little endian elf vectors.  */
  if (   strcmp (target->name, "elf32-big") == 0
      || strcmp (target->name, "elf64-big") == 0
      || strcmp (target->name, "elf32-little") == 0
      || strcmp (target->name, "elf64-little") == 0)
    return 0;

I would also suggest that you turn this issue into a PR and then include the PR number in the comment. That way if we have cause to revisit this code in the future we will have a PR to look up to see why the change was made.

Cheers
  Nick


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