2014-04-22  Richard Henderson  <rth@redhat.com>

	* gcc-interface/Makefile.in: Support aarch64-linux.

	2014-04-22  Eric Botcazou  <ebotcazou@adacore.com>

	* fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.
	(Error_Msg_N): Likewise.
	(Error_Msg_NE): Likewise.
	(Get_External_Name_With_Suffix): Likewise.
	* types.h (Fat_Pointer): Delete.
	(String_Pointer): New type.
	(DECLARE_STRING_POINTER): New macro.
	* gcc-interface/decl.c (create_concat_name): Adjust.
	* gcc-interface/trans.c (post_error): Likewise.
	(post_error_ne): Likewise.
	* gcc-interface/misc.c (internal_error_function): Likewise.

From-SVN: r209684
This commit is contained in:
Eric Botcazou 2014-04-23 10:29:47 +00:00 committed by Eric Botcazou
parent eab264af0c
commit 8f78ecdbe0
7 changed files with 51 additions and 73 deletions

View File

@ -1,3 +1,24 @@
2014-04-23 Eric Botcazou <ebotcazou@adacore.com>
Revert
2014-04-22 Richard Henderson <rth@redhat.com>
* gcc-interface/Makefile.in: Support aarch64-linux.
2014-04-22 Eric Botcazou <ebotcazou@adacore.com>
* fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.
(Error_Msg_N): Likewise.
(Error_Msg_NE): Likewise.
(Get_External_Name_With_Suffix): Likewise.
* types.h (Fat_Pointer): Delete.
(String_Pointer): New type.
(DECLARE_STRING_POINTER): New macro.
* gcc-interface/decl.c (create_concat_name): Adjust.
* gcc-interface/trans.c (post_error): Likewise.
(post_error_ne): Likewise.
* gcc-interface/misc.c (internal_error_function): Likewise.
2014-04-22 Richard Henderson <rth@redhat.com>
* gcc-interface/Makefile.in: Support aarch64-linux.

View File

@ -39,7 +39,7 @@ extern "C" {
/* comperr: */
#define Compiler_Abort comperr__compiler_abort
extern int Compiler_Abort (String_Pointer, int, String_Pointer) ATTRIBUTE_NORETURN;
extern int Compiler_Abort (Fat_Pointer, int, Fat_Pointer) ATTRIBUTE_NORETURN;
/* csets: */
@ -90,8 +90,8 @@ extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, char);
#define Error_Msg_NE errout__error_msg_ne
#define Set_Identifier_Casing errout__set_identifier_casing
extern void Error_Msg_N (String_Pointer, Node_Id);
extern void Error_Msg_NE (String_Pointer, Node_Id, Entity_Id);
extern void Error_Msg_N (Fat_Pointer, Node_Id);
extern void Error_Msg_NE (Fat_Pointer, Node_Id, Entity_Id);
extern void Set_Identifier_Casing (Char *, const Char *);
/* err_vars: */
@ -151,7 +151,7 @@ extern void Setup_Asm_Outputs (Node_Id);
extern void Get_Encoded_Name (Entity_Id);
extern void Get_External_Name (Entity_Id, Boolean);
extern void Get_External_Name_With_Suffix (Entity_Id, String_Pointer);
extern void Get_External_Name_With_Suffix (Entity_Id, Fat_Pointer);
/* exp_util: */

View File

@ -2188,44 +2188,6 @@ ifeq ($(strip $(filter-out alpha% linux%,$(target_cpu) $(target_os))),)
LIBRARY_VERSION := $(LIB_VERSION)
endif
# AArch64 Linux
ifeq ($(strip $(filter-out aarch64% linux%,$(arch) $(osys))),)
LIBGNAT_TARGET_PAIRS = \
a-exetim.adb<a-exetim-posix.adb \
a-exetim.ads<a-exetim-default.ads \
a-intnam.ads<a-intnam-linux.ads \
a-synbar.adb<a-synbar-posix.adb \
a-synbar.ads<a-synbar-posix.ads \
s-inmaop.adb<s-inmaop-posix.adb \
s-intman.adb<s-intman-posix.adb \
s-linux.ads<s-linux.ads \
s-mudido.adb<s-mudido-affinity.adb \
s-osinte.ads<s-osinte-linux.ads \
s-osinte.adb<s-osinte-posix.adb \
s-osprim.adb<s-osprim-posix.adb \
s-taprop.adb<s-taprop-linux.adb \
s-tasinf.ads<s-tasinf-linux.ads \
s-tasinf.adb<s-tasinf-linux.adb \
s-tpopsp.adb<s-tpopsp-tls.adb \
s-taspri.ads<s-taspri-posix.ads \
g-sercom.adb<g-sercom-linux.adb \
$(ATOMICS_TARGET_PAIRS) \
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
system.ads<system-linux-x86_64.ads
## ^^ Note the above is a pretty-close placeholder.
TOOLS_TARGET_PAIRS = \
mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
indepsw.adb<indepsw-gnu.adb
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
EH_MECHANISM=-gcc
THREADSLIB=-lpthread -lrt
GNATLIB_SHARED=gnatlib-shared-dual
GMEM_LIB = gmemlib
LIBRARY_VERSION := $(LIB_VERSION)
endif
# x86-64 Linux
ifeq ($(strip $(filter-out %x86_64 linux%,$(target_cpu) $(target_os))),)
LIBGNAT_TARGET_PAIRS = \

View File

@ -8861,10 +8861,8 @@ create_concat_name (Entity_Id gnat_entity, const char *suffix)
if (suffix)
{
String_Template temp = {1, (int) strlen (suffix)};
DECLARE_STRING_POINTER (sp);
sp.Bounds = &temp;
sp.Array = suffix;
Get_External_Name_With_Suffix (gnat_entity, sp);
Fat_Pointer fp = {suffix, &temp};
Get_External_Name_With_Suffix (gnat_entity, fp);
}
else
Get_External_Name (gnat_entity, 0);

View File

@ -283,8 +283,8 @@ internal_error_function (diagnostic_context *context,
text_info tinfo;
char *buffer, *p, *loc;
String_Template temp, temp_loc;
DECLARE_STRING_POINTER (sp, sp_loc);
expanded_location xloc;
Fat_Pointer fp, fp_loc;
expanded_location s;
/* Warn if plugins present. */
warn_if_plugins ();
@ -311,21 +311,21 @@ internal_error_function (diagnostic_context *context,
temp.Low_Bound = 1;
temp.High_Bound = p - buffer;
sp.Bounds = &temp;
sp.Array = buffer;
fp.Bounds = &temp;
fp.Array = buffer;
xloc = expand_location (input_location);
if (context->show_column && xloc.column != 0)
asprintf (&loc, "%s:%d:%d", xloc.file, xloc.line, xloc.column);
s = expand_location (input_location);
if (context->show_column && s.column != 0)
asprintf (&loc, "%s:%d:%d", s.file, s.line, s.column);
else
asprintf (&loc, "%s:%d", xloc.file, xloc.line);
asprintf (&loc, "%s:%d", s.file, s.line);
temp_loc.Low_Bound = 1;
temp_loc.High_Bound = strlen (loc);
sp_loc.Bounds = &temp_loc;
sp_loc.Array = loc;
fp_loc.Bounds = &temp_loc;
fp_loc.Array = loc;
Current_Error_Node = error_gnat_node;
Compiler_Abort (sp, -1, sp_loc);
Compiler_Abort (fp, -1, fp_loc);
}
/* Perform all the initialization steps that are language-specific. */

View File

@ -9356,16 +9356,16 @@ void
post_error (const char *msg, Node_Id node)
{
String_Template temp;
DECLARE_STRING_POINTER (sp);
Fat_Pointer fp;
if (No (node))
return;
temp.Low_Bound = 1;
temp.High_Bound = strlen (msg);
sp.Bounds = &temp;
sp.Array = msg;
Error_Msg_N (sp, node);
fp.Bounds = &temp;
fp.Array = msg;
Error_Msg_N (fp, node);
}
/* Similar to post_error, but NODE is the node at which to post the error and
@ -9375,16 +9375,16 @@ void
post_error_ne (const char *msg, Node_Id node, Entity_Id ent)
{
String_Template temp;
DECLARE_STRING_POINTER (sp);
Fat_Pointer fp;
if (No (node))
return;
temp.Low_Bound = 1;
temp.High_Bound = strlen (msg);
sp.Bounds = &temp;
sp.Array = msg;
Error_Msg_NE (sp, node, ent);
fp.Bounds = &temp;
fp.Array = msg;
Error_Msg_NE (fp, node, ent);
}
/* Similar to post_error_ne, but NUM is the number to use for the '^'. */

View File

@ -76,14 +76,11 @@ typedef Char *Str;
/* Pointer to string of Chars */
typedef Char *Str_Ptr;
/* Types for the fat pointer used for strings and the template it points to.
On most platforms the fat pointer is naturally aligned but, on the rest,
it is given twice the natural alignment. For maximum portability, we do
not overalign the type but only the objects. */
typedef struct { int Low_Bound, High_Bound; } String_Template;
typedef struct { const char *Array; String_Template *Bounds; } String_Pointer;
#define DECLARE_STRING_POINTER(...) \
__attribute__ ((aligned (sizeof (char *) * 2))) String_Pointer __VA_ARGS__
/* Types for the fat pointer used for strings and the template it
points to. */
typedef struct {int Low_Bound, High_Bound; } String_Template;
typedef struct {const char *Array; String_Template *Bounds; }
__attribute ((aligned (sizeof (char *) * 2))) Fat_Pointer;
/* Types for Node/Entity Kinds: */