Announcement

Collapse
No announcement yet.

Linux 5.15's New "-Werror" Behavior Is Causing A Lot Of Pain

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Originally posted by indepe View Post
    But that's what I mean. You are saying that because of the missing sentence, "someone else" got confused about the rule, someone who didn't really understand the language enough to realize it was a mistake. And that someone thought that typedef meant something else than what it really meant and changed the compiler. And also the people who wrote C11 got confused about it. They all didn't know anymore what typedef really meant. It wasn't as obvious to them as it is to me. So I figured out that can't be right, but the first C11 standards people didn't. Because they were confused. That's what you are saying, right?
    The people who made the C11 stuffed up drafts was not confused about it what they thought typedef meant. The C11 authors assumed C90 was the same as C89 of course since C89 had the typedef rule they then put in the new coding rules they assumed the rule existed. This is "Assume= Makes a Ass out of U and Me." Please remember you were making the same very dangerous assume. Yes as you also found that very dangerous assume that C89=C90 is written all over the place. From a document point of view C89>C90 as C89 is more complete.

    The people did not notice the lines missing out of C90 is again "Assume= Makes a Ass out of U and Me." people assumed the missing lines where there and did not go through C90 with a fine tooth comb looking for errors in the reformat. Remember every line that is in C90 by itself read right for the C standard its the complete document is missing pieces completely. Remember the first correction in 1994 with C90 puts back into C90 8 complete miss pages of stuff that in C89 there was not a small amount missing here lot of it is stuff that is in K&R. The level of screw up in C90 is happens to be insane that at times leaves you scratching head how in heck did that get past but we have to live with the fact it did get past. Is even more insane how does the belief that C90=C89 remain. Does no one want to admit the C90 standard is screwed up. The first release of C90 was almost missing 5% of C89 that is a lot of document not there.

    Yes a new developer adding code to a compiler may not be as versed in the language as you hope they are. Those people will depend on the standard/language define documents to be complete and correct. Bad things happen when those people pick up a defective standard/language define documents have a defect. This happened in the C90 time frame and this happened at the start of the C11 process. Yes as this is all made more likely by the incorrect assume that C89=C90.

    PS the rank rules with C11 are screwed because of the same word Assume. They assume how a person is going to read the rank rules is the same as the implementation in front of them. Not that someone is going to read the rank rules and attempt to stuff it up. Or read the rank rules and get it wrong because they don't know the C language well.

    Assume is one of the biggest causes of headaches.
    Last edited by oiaohm; 16 September 2021, 08:09 PM.

    Comment


    • Originally posted by oiaohm View Post
      The people who made the C11 stuffed up drafts was not confused about it what they thought typedef meant. The C11 authors assumed C90 was the same as C89 of course since C89 had the typedef rule they then put in the new coding rules they assumed the rule existed. This is "Assume= Makes a Ass out of U and Me." Please remember you were making the same very dangerous assume. Yes as you also found that very dangerous assume that C89=C90 is written all over the place. From a document point of view C89>C90 as C89 is more complete.
      So you are saying in both cases (C90 and early drafts C11) the standards people just didn't notice missing sentences, while it was the people modifying the compiler who eventually got confused about the meaning of typedef (although for me difficult to understand why someone would be, even if the sentences were missing).

      Originally posted by oiaohm View Post
      Remember every line that is in C90 by itself read right for the C standard its the complete document is missing pieces completely. Remember the first correction in 1994 with C90 puts back into C90 8 complete miss pages of stuff that in C89 there was not a small amount missing here lot of it is stuff that is in K&R. The level of screw up in C90 is happens to be insane that at times leaves you scratching head how in heck did that get past but we have to live with the fact it did get past. Is even more insane how does the belief that C90=C89 remain. Does no one want to admit the C90 standard is screwed up. The first release of C90 was almost missing 5% of C89 that is a lot of document not there.
      Why do you say "remember"? I don't have any knowledge of that, and you didn't provide quotes or any linked content. And it is not like I would take that as a given just because you claim it repeatedly. It is not something that I "remember" at all.

      Originally posted by oiaohm View Post
      ... This happened in the C90 time frame and this happened at the start of the C11 process. Yes as this is all made more likely by the incorrect assume that C89=C90.
      Actually for C90, even a missing sentence about typedef does not have that effect, since it does not have the same rank rules as C11.

      Your point was the C11 rule "No two signed integer types shall have the same rank, even if they have the same representation.".
      In C11, you claim, a misunderstanding of typedef would possibly cause a misinterpretation of this rule, which would possibly mess up the rank system.

      But if you look at C89: (specifically 3.2.1 including 3.2.1.5 "Usual arithmetic conversion") http://port70.net/~nsz/c/c89/c89-draft.html
      C89 does not have that rule, and therefore the misunderstanding of typedef does not cause a misinterpretation of the type ranks ("ranks" do not even exist by that name).

      So there can't be a problem because of that in C90 itself.

      That leaves only the early drafts of C11. And in the year 2021, any serious compiler that implements a C11 mode, and is used in C11 mode (and any serious distribution delivering it) should have been long ago updated to the final version of C11. Otherwise don't blame the standard and what it "defines", blame those using long outdated compilers or buggy compilers.

      So in each mode, c89, c90, ansi, C99, C11, there is no good reason for a problem that comes from any of the discussed C standard definitions. Specifically there is no reason for a problem in the c89 mode which is apparently used by the kernel. Since there never was, and there never was in c90 either, typedef or not.
      Last edited by indepe; 16 September 2021, 11:28 PM.

      Comment

      Working...
      X