From da5182be67bc33df9c1159856ccddeb159dc5a24 Mon Sep 17 00:00:00 2001 From: Thomas Quinot Date: Tue, 18 Sep 2012 14:26:06 +0000 Subject: [PATCH] invoke.texi: Document -fada-spec-parent. * doc/invoke.texi: Document -fada-spec-parent. c-family/ * c.opt (-fada-spec-parent): Define new command line switch. * c-ada-spec.c (get_ada_package): When -fada-spec-parent is specified, generate binding spec as a child of the specified unit. From-SVN: r191427 --- gcc/ChangeLog | 4 ++++ gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-ada-spec.c | 26 ++++++++++++++++++++------ gcc/c-family/c.opt | 4 ++++ gcc/doc/invoke.texi | 2 +- 5 files changed, 35 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73b828de03f3..951467b6c138 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-09-18 Thomas Quinot + + * doc/invoke.texi: Document -fada-spec-parent. + 2012-09-18 Jakub Jelinek PR tree-optimization/54610 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 8b3cd2ae549f..fd2bab9ef0c9 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2012-09-18 Thomas Quinot + + * c.opt (-fada-spec-parent): Define new command line switch. + * c-ada-spec.c (get_ada_package): When -fada-spec-parent + is specified, generate binding spec as a child of the specified unit. + 2012-09-13 Paolo Carlini Manuel López-Ibáñez diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c index cc6f2608d21f..435b0c99d7de 100644 --- a/gcc/c-family/c-ada-spec.c +++ b/gcc/c-family/c-ada-spec.c @@ -817,15 +817,26 @@ get_ada_package (const char *file) char *res; const char *s; int i; + size_t plen; s = strstr (file, "/include/"); if (s) base = s + 9; else base = lbasename (file); - res = XNEWVEC (char, strlen (base) + 1); - for (i = 0; *base; base++, i++) + if (ada_specs_parent == NULL) + plen = 0; + else + plen = strlen (ada_specs_parent) + 1; + + res = XNEWVEC (char, plen + strlen (base) + 1); + if (ada_specs_parent != NULL) { + strcpy (res, ada_specs_parent); + res[plen - 1] = '.'; + } + + for (i = plen; *base; base++, i++) switch (*base) { case '+': @@ -837,14 +848,14 @@ get_ada_package (const char *file) case '_': case '/': case '\\': - res [i] = (i == 0 || res [i - 1] == '_') ? 'u' : '_'; + res[i] = (i == 0 || res[i - 1] == '.' || res[i - 1] == '_') ? 'u' : '_'; break; default: - res [i] = *base; + res[i] = *base; break; } - res [i] = '\0'; + res[i] = '\0'; return res; } @@ -3250,7 +3261,10 @@ dump_ads (const char *source_file, ads_name = xstrdup (pkg_name); for (s = ads_name; *s; s++) - *s = TOLOWER (*s); + if (*s == '.') + *s = '-'; + else + *s = TOLOWER (*s); ads_name = reconcat (ads_name, ads_name, ".ads", NULL); diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 39d70ada0de9..6aa53a577441 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -729,6 +729,10 @@ faccess-control C++ ObjC++ Var(flag_access_control) Init(1) Enforce class member access control semantics +fada-spec-parent= +C ObjC C++ ObjC++ RejectNegative Joined Var(ada_specs_parent) +-fada-spec-parent=unit Dump Ada specs as child units of given parent + fall-virtual C++ ObjC++ Ignore Warn(switch %qs is no longer supported) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 5ee85d4e50c0..748e79232432 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -166,7 +166,7 @@ in the following sections. -pipe -pass-exit-codes @gol -x @var{language} -v -### --help@r{[}=@var{class}@r{[},@dots{}@r{]]} --target-help @gol --version -wrapper @@@var{file} -fplugin=@var{file} -fplugin-arg-@var{name}=@var{arg} @gol --fdump-ada-spec@r{[}-slim@r{]} -fdump-go-spec=@var{file}} +-fdump-ada-spec@r{[}-slim@r{]} -fada-spec-parent=@var{arg} -fdump-go-spec=@var{file}} @item C Language Options @xref{C Dialect Options,,Options Controlling C Dialect}.