)]}'
{
  "commit": "af29a8abcf50ff9cb465a136c68b06bfc2ca7b75",
  "tree": "3178a2b395ebf1861809037b3bcc6e4b26113347",
  "parents": [
    "41ee6d14fd3faf486036cdb9042e432664abfe48"
  ],
  "author": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Fri Aug 13 11:50:16 2021 +0930"
  },
  "committer": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Fri Aug 13 12:32:53 2021 +0930"
  },
  "message": "PR28217, Syntax error when memory region contains a hyphen\n\nThe saga of commit 40726f16a8d7 continues.  This attacks the problem\nof switching between SCRIPT and EXPRESSION state lexing by removing\nthe need to do so for phdrs like \":text\".  Instead {WILDCHAR}*\nmatching, the reason why \":text\" lexed as one token, is restricted to\nwithin the braces of a section or overlay statement.  The new WILD\nlexer state is switched at the non-optional brace tokens, so\nldlex_backup is no longer needed.  I\u0027ve also removed the BOTH state,\nwhich doesn\u0027t seem to be needed any more.  Besides rules involving\nerror reporting, there was just one place where SCRIPT appeared\nwithout BOTH, the {WILDCHAR}* rule, three where BOTH appears without\nSCRIPT for tokens that only need EXPRESSION state, and two where BOTH\nappears alongside INPUT_LIST.  (Since I\u0027m editing the wild and\nfilename rules, removing BOTH and adding WILD can also be seen as\nrenaming the old BOTH state to SCRIPT and renaming the old SCRIPT\nstate to WILD with a reduced scope.)\n\nAs a followup, I\u0027ll look at removing EXPRESSION state from some lexer\nrules that no longer need it due to this cleanup.\n\n\tPR 28217\n\t* ldgram.y (exp \u003cORIGIN, LENGTH\u003e): Use paren_script_name.\n\t(section): Parse within braces of section in wild mode, and\n\tafter brace back in script mode.  Remove ldlex_backup call.\n\tSimilarly for OVERLAY.\n\t(overlay_section): Similarly.\n\t(script_file): Replace ldlex_both with ldlex_script.\n\t* ldlex.h (ldlex_wild): Declare.\n\t(ldlex_both): Delete.\n\t* ldlex.l (BOTH): Delete.  Remove state from all rules.\n\t(WILD): New state.  Enable many tokens in this state.\n\tEnable filename match in SCRIPT mode.  Enable WILDCHAR match\n\tin WILD state, disable in SCRIPT mode.\n\t(ldlex_wild): New function.\n\t* ldfile.c (ldfile_try_open_bfd): Replace ldlex_both call with\n\tldlex_script.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "43b1116b1d56eb0f730f441f6bd3805406a311a7",
      "old_mode": 33188,
      "old_path": "ld/ldfile.c",
      "new_id": "22271fd6810a7262ea9ec9223a990f74d223de4f",
      "new_mode": 33188,
      "new_path": "ld/ldfile.c"
    },
    {
      "type": "modify",
      "old_id": "77442818587661c9f8865106fe5ab15113f10429",
      "old_mode": 33188,
      "old_path": "ld/ldgram.y",
      "new_id": "4910e17ab4a9fabbb5b71784f327e3b7de47c4cd",
      "new_mode": 33188,
      "new_path": "ld/ldgram.y"
    },
    {
      "type": "modify",
      "old_id": "9707d57caf8cf8c2abc84c2547334065049ac577",
      "old_mode": 33188,
      "old_path": "ld/ldlex.h",
      "new_id": "04ee0e40dc1ead4aa5eda0c7453de8cdbe2ebc77",
      "new_mode": 33188,
      "new_path": "ld/ldlex.h"
    },
    {
      "type": "modify",
      "old_id": "f588bd3adc59be4ca6afffd6fe1b72e01acccb5a",
      "old_mode": 33188,
      "old_path": "ld/ldlex.l",
      "new_id": "dfe8382d0bbfbed74082ee70350b94d5dcd4ea27",
      "new_mode": 33188,
      "new_path": "ld/ldlex.l"
    }
  ]
}
