)]}'
{
  "commit": "968898af59c871e8badfc47c1a03b4fb6026bec3",
  "tree": "d5b3cab6bfbb763abc43bb81231a9d71d6222a52",
  "parents": [
    "9f6bef7e244e20bc855d13383fe615fb9caa3416",
    "8639b1fb66e546194dfa0e57304f99e00fda5d35"
  ],
  "author": {
    "name": "Jacob Pratt",
    "email": "jacob@jhpratt.dev",
    "time": "Tue Aug 25 04:53:50 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Aug 25 04:53:50 2026 -0400"
  },
  "message": "Rollup merge of #161484 - ItsNoHax:psp-discard-pdr, r\u003dnnethercote\n\nDiscard `.pdr` in the PSP linker script\n\nThe `mipsel-sony-psp` target passes `--emit-relocs` and relies on `--gc-sections`. `.pdr` (MIPS procedure-descriptor debug data) is not allocated, so it survives collection, but the relocations kept for it still point at the functions that *were* collected. rust-lld reports every one of those:\n\n```\nrust-lld: relocation refers to a discarded section: .text._RNvNtNtCs1mwba6qCgei_4libm4math3log3log\n\u003e\u003e\u003e referenced by libm-...-cgu.3.rcgu.o:(.rel.pdr+0xbfa0) in archive .../liblibm-....rlib\n```\n\nA hello-world picks up **70** of these. They were always emitted; they only became visible when cargo stopped suppressing linker output, and are now reported by the `linker_messages` lint. Reported downstream as overdrivenpotato/rust-psp#203.\n\nNothing on the PSP reads `.pdr`, so this discards it alongside the non-loadable sections the script already drops (`.MIPS.abiflags`, `.reginfo`). Discarding `.pdr` also removes `.rel.pdr`, since `--emit-relocs` only emits relocations for sections that survive.\n\n### Verification\n\nBuilding `rust-psp`\u0027s `ci/tests` suite and running it on PPSSPP:\n\n|                        | before      | after       |\n| ---------------------- | ----------- | ----------- |\n| discarded-section warnings | 70      | **0**       |\n| `EBOOT.PBP` size       | 1,395,948 B | 1,264,396 B (−9.4%) |\n| test suite             | 47 pass / 0 fail | 47 pass / 0 fail (`FINAL_SUCCESS`) |\n\nSince the linker script lives in the target spec, I validated the exact change by building against a patched `--print target-spec-json` copy of the target, and cross-checked it by passing an equivalent `/DISCARD/` fragment as an extra `--script` to a normal `cargo psp` build. Both give the same result.\n\nThis is the target\u0027s own linker script and affects no other target. The remaining warnings in that issue have a separate cause (`EF_MIPS_CPIC`) and are handled in a follow-up PR.\n",
  "tree_diff": []
}
