1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-04-25 13:08:55 +00:00
Files
meta-arm/meta-arm-toolchain/recipes-devtools/gcc/gcc-arm-12.2/prefix-map-realpath.patch
Jon Mason cf43a3c398 arm-toolchain: update Arm GCC to 12.2
Update the Arm GCC source to the latest version.  Also, update the GCC
patches to apply cleanly, removing those that are no longer relevant.

Signed-off-by: Jon Mason <jon.mason@arm.com>
2023-01-20 10:00:09 -05:00

64 lines
2.1 KiB
Diff

Relative paths don't work with -fdebug-prefix-map and friends. This
can lead to paths which the user wanted to be remapped being missed.
Setting -fdebug-prefix-map to work with a relative path isn't practical
either.
Instead, call gcc's realpath function on the incomming path name before
comparing it with the remapping. This means other issues like symlinks
are also accounted for and leads to a more consistent remapping experience.
Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599885.html]
[Also https://gcc.gnu.org/pipermail/gcc-patches/2022-August/599884.html]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Index: gcc-12.1.0/gcc/file-prefix-map.cc
===================================================================
--- gcc-12.1.0.orig/gcc/file-prefix-map.cc
+++ gcc-12.1.0/gcc/file-prefix-map.cc
@@ -70,19 +70,28 @@ remap_filename (file_prefix_map *maps, c
file_prefix_map *map;
char *s;
const char *name;
+ char *realname;
size_t name_len;
+ if (lbasename (filename) == filename)
+ return filename;
+
+ realname = lrealpath (filename);
+
for (map = maps; map; map = map->next)
- if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
+ if (filename_ncmp (realname, map->old_prefix, map->old_len) == 0)
break;
- if (!map)
+ if (!map) {
+ free (realname);
return filename;
- name = filename + map->old_len;
+ }
+ name = realname + map->old_len;
name_len = strlen (name) + 1;
s = (char *) ggc_alloc_atomic (name_len + map->new_len);
memcpy (s, map->new_prefix, map->new_len);
memcpy (s + map->new_len, name, name_len);
+ free (realname);
return s;
}
Index: gcc-12.1.0/libcpp/macro.cc
===================================================================
--- gcc-12.1.0.orig/libcpp/macro.cc
+++ gcc-12.1.0/libcpp/macro.cc
@@ -563,7 +563,7 @@ _cpp_builtin_macro_text (cpp_reader *pfi
if (!name)
abort ();
}
- if (pfile->cb.remap_filename)
+ if (pfile->cb.remap_filename && !pfile->state.in_directive)
name = pfile->cb.remap_filename (name);
len = strlen (name);
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);