gcc/libcpp
Boris Kolpackov 7365279fca Add ability to remap file names in __FILE__, etc (PR other/70268)
This commit adds the -fmacro-prefix-map option that allows remapping of file
names in __FILE__, __BASE_FILE__, and __builtin_FILE(), similar to how
-fdebug-prefix-map allows to do the same for debug information.

Additionally, it adds -ffile-prefix-map which can be used to specify both
mappings with a single option (and, should we need to add more -f*-prefix-map
options in the future, those as well).

libcpp/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * include/cpplib.h (cpp_callbacks::remap_filename): New callback.
        * libcpp/macro.c (_cpp_builtin_macro_text): Call remap_filename for
        __FILE__ and __BASE_FILE__.


gcc/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * common.opt: (-ffile-prefix-map): New option.
        * opts.c (common_handle_option): Defer it.
        * opts-global.c (handle_common_deferred_options): Handle it.
        * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
        * file-prefix-map.h: New file.
        (remap_debug_filename, add_debug_prefix_map): ...here.
        (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
        * final.c (debug_prefix_map, add_debug_prefix_map
        remap_debug_filename): Move to...
        * file-prefix-map.c: New file.
        (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
        generalize, get rid of alloca(), use strrchr() instead of strchr().
        (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
        Implement in terms of add_prefix_map().
        (remap_macro_filename, remap_debug_filename): Implement in term of
        remap_filename().
        * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
        * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
        * dbxout.c: Include file-prefix-map.h.
        * varasm.c: Likewise.
        * vmsdbgout.c: Likewise.
        * xcoffout.c: Likewise.
        * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
        * doc/cppopts.texi (-fmacro-prefix-map): Document.
        * doc/invoke.texi (-ffile-prefix-map): Document.
	(-fdebug-prefix-map): Update description.


gcc/c-family/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * c-family/c.opt (-fmacro-prefix-map): New option.
        * c-family/c-opts.c (c_common_handle_option): Handle it.
        * c-family/c-lex.c (init_c_lex): Set remap_filename cpp callback.
        * c-family/c-ppoutput.c (init_pp_output): Likewise.


gcc/testsuite/ChangeLog:

2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>

        PR other/70268
        * c-c++-common/ffile-prefix-map.c: New test.
        * c-c++-common/fmacro-prefix-map.c: New test.
        * c-c++-common/cpp/ffile-prefix-map.c: New test.
        * c-c++-common/cpp/fmacro-prefix-map.c: New test.

From-SVN: r256847
2018-01-18 13:17:37 +00:00
..
include Add ability to remap file names in __FILE__, etc (PR other/70268) 2018-01-18 13:17:37 +00:00
po Regenerate .pot files. 2017-08-04 23:21:23 +01:00
aclocal.m4 libcpp: Bump to automake 1.11.6 2015-05-13 11:02:17 +00:00
ChangeLog Add ability to remap file names in __FILE__, etc (PR other/70268) 2018-01-18 13:17:37 +00:00
ChangeLog.jit Merger of dmalcolm/jit branch from git 2014-11-11 21:55:52 +00:00
charset.c Update copyright years. 2018-01-03 11:03:58 +01:00
config.in re PR bootstrap/72823 (r239175 causes build failure) 2016-11-16 21:10:27 +01:00
configure re PR bootstrap/72823 (r239175 causes build failure) 2016-11-16 21:10:27 +01:00
configure.ac re PR bootstrap/72823 (r239175 causes build failure) 2016-11-16 21:10:27 +01:00
directives-only.c Update copyright years. 2018-01-03 11:03:58 +01:00
directives.c Update copyright years. 2018-01-03 11:03:58 +01:00
errors.c Update copyright years. 2018-01-03 11:03:58 +01:00
expr.c Update copyright years. 2018-01-03 11:03:58 +01:00
files.c Update copyright years. 2018-01-03 11:03:58 +01:00
identifiers.c Update copyright years. 2018-01-03 11:03:58 +01:00
init.c Update copyright years. 2018-01-03 11:03:58 +01:00
internal.h Update copyright years. 2018-01-03 11:03:58 +01:00
lex.c rs6000-p8swap.c (rs6000_sum_of_two_registers_p): New function. 2018-01-14 05:19:29 +00:00
line-map.c Update copyright years. 2018-01-03 11:03:58 +01:00
location-example.txt Source range tracking in libcpp and C FE, with bit-packing optimization 2015-11-13 16:29:59 +00:00
macro.c Add ability to remap file names in __FILE__, etc (PR other/70268) 2018-01-18 13:17:37 +00:00
Makefile.in Update copyright years. 2018-01-03 11:03:58 +01:00
makeucnid.c Update copyright years. 2018-01-03 11:03:58 +01:00
mkdeps.c Update copyright years. 2018-01-03 11:03:58 +01:00
pch.c Update copyright years. 2018-01-03 11:03:58 +01:00
symtab.c Update copyright years. 2018-01-03 11:03:58 +01:00
system.h Update copyright years. 2018-01-03 11:03:58 +01:00
traditional.c Update copyright years. 2018-01-03 11:03:58 +01:00
ucnid.h Update copyright years. 2018-01-03 11:03:58 +01:00
ucnid.tab Update copyright years. 2018-01-03 11:03:58 +01:00