diff options
| author | Sergei Trofimovich <slyich@gmail.com> | 2024-02-01 22:51:41 +0000 |
|---|---|---|
| committer | Sergei Trofimovich <slyich@gmail.com> | 2024-02-02 20:59:41 +0000 |
| commit | be41f86a80f9d6e5910ce153057560cb672a2b83 (patch) | |
| tree | 6d73832de5b51db40a426e27cf1af719d2272db4 /pkgs/development/python-modules/python-openstackclient/git@git.tavy.me:nixos | |
| parent | 9312d7840b1ad1cd3e0bb49f7ae38be69b505659 (diff) | |
gcc: amend __FILE__ mangling patch to only affect `-fmacro-prefix-map=`
THe initial intent of the change was to only affect
`-fmacro-prefix-map=` option.
Due to the bug of `if (maps == macro_prefix_maps)` condition of initial
setting all three of:
static file_prefix_map *macro_prefix_maps; /* -fmacro-prefix-map */
static file_prefix_map *debug_prefix_maps; /* -fdebug-prefix-map */
static file_prefix_map *profile_prefix_maps; /* -fprofile-prefix-map */
matches the comparison and applied the mangling (as long as on options
were passed into those before).
As a result not only (intended) `__FILE__` embedding happened in `.data`
section, but also (unintended) debugging symbols (`-fdebug-prefix-map`)
and profiling data (`-fprofile-prefix-map`) were broken by mangling.
The patch update fixes it by explicitly passing a boolean that controls
the mangling in a single call site relevant to `-fmacro-prefix-map`.
While at it fixed `int / size_t` mismatch that caused build failure on
upcoming `gcc-14`.
Tested as:
- `nix` still has no `nlohmann_json` retention
- `gdb` can now resolve `stdc++` debugging symbols in templates
- `--coverage` has working source file paths
Diffstat (limited to 'pkgs/development/python-modules/python-openstackclient/git@git.tavy.me:nixos')
0 files changed, 0 insertions, 0 deletions
