diff -Nrcpad gcc-4.6.3/gcc/ada/ChangeLog gcc-4.6.4/gcc/ada/ChangeLog *** gcc-4.6.3/gcc/ada/ChangeLog Thu Mar 1 11:55:29 2012 --- gcc-4.6.4/gcc/ada/ChangeLog Fri Apr 12 09:50:25 2013 *************** *** 1,3 **** --- 1,40 ---- + 2013-04-12 Release Manager + + * GCC 4.6.4 released. + + 2013-02-21 Jakub Jelinek + + PR bootstrap/56258 + * gnat-style.texi (@title): Remove @hfill. + * projects.texi: Avoid line wrapping inside of @pxref or + @xref. + + 2013-02-07 Simon Wright + + PR target/50678 + * init.c (__darwin_major_version): New function for x86-64/Darwin. + (__gnat_adjust_context_for_raise) [Darwin]: Disable the workaround + on Darwin 12 and above. + + 2012-12-16 Eric Botcazou + + PR ada/54614 + Backport from mainline + + 2012-10-01 Vincent Pucci + + * s-gearop.adb (Vector_Matrix_Product): Fix dimension check and index + of Left in S evaluation. + + 2012-05-26 Eric Botcazou + + * gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'. + (build_variant_list): Adjust to above renaming. + (gnat_to_gnu_entity) : Likewise. Give a unique name + to the type of the variant containers. + (create_variant_part_from): Likewise. Give a unique name to the type + of the variant part. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff -Nrcpad gcc-4.6.3/gcc/ada/gcc-interface/decl.c gcc-4.6.4/gcc/ada/gcc-interface/decl.c *** gcc-4.6.3/gcc/ada/gcc-interface/decl.c Sat Jan 21 15:01:48 2012 --- gcc-4.6.4/gcc/ada/gcc-interface/decl.c Sat May 26 10:44:06 2012 *************** typedef struct variant_desc_d { *** 120,127 **** /* The value of the qualifier. */ tree qual; ! /* The record associated with this variant. */ ! tree record; } variant_desc; DEF_VEC_O(variant_desc); --- 120,127 ---- /* The value of the qualifier. */ tree qual; ! /* The type of the variant after transformation. */ ! tree new_type; } variant_desc; DEF_VEC_O(variant_desc); *************** gnat_to_gnu_entity (Entity_Id gnat_entit *** 3157,3167 **** { tree old_variant = v->type; tree new_variant = make_node (RECORD_TYPE); TYPE_NAME (new_variant) ! = DECL_NAME (TYPE_NAME (old_variant)); copy_and_substitute_in_size (new_variant, old_variant, gnu_subst_list); ! v->record = new_variant; } } else --- 3157,3172 ---- { tree old_variant = v->type; tree new_variant = make_node (RECORD_TYPE); + tree suffix + = concat_name (DECL_NAME (gnu_variant_part), + IDENTIFIER_POINTER + (DECL_NAME (v->field))); TYPE_NAME (new_variant) ! = concat_name (TYPE_NAME (gnu_type), ! IDENTIFIER_POINTER (suffix)); copy_and_substitute_in_size (new_variant, old_variant, gnu_subst_list); ! v->new_type = new_variant; } } else *************** gnat_to_gnu_entity (Entity_Id gnat_entit *** 3265,3271 **** if (selected_variant) gnu_cont_type = gnu_type; else ! gnu_cont_type = v->record; } else /* The front-end may pass us "ghost" components if --- 3270,3276 ---- if (selected_variant) gnu_cont_type = gnu_type; else ! gnu_cont_type = v->new_type; } else /* The front-end may pass us "ghost" components if *************** build_variant_list (tree qual_union_type *** 7704,7710 **** v->type = variant_type; v->field = gnu_field; v->qual = qual; ! v->record = NULL_TREE; /* Recurse on the variant subpart of the variant, if any. */ variant_subpart = get_variant_part (variant_type); --- 7709,7715 ---- v->type = variant_type; v->field = gnu_field; v->qual = qual; ! v->new_type = NULL_TREE; /* Recurse on the variant subpart of the variant, if any. */ variant_subpart = get_variant_part (variant_type); *************** create_variant_part_from (tree old_varia *** 8457,8463 **** /* First create the type of the variant part from that of the old one. */ new_union_type = make_node (QUAL_UNION_TYPE); ! TYPE_NAME (new_union_type) = DECL_NAME (TYPE_NAME (old_union_type)); /* If the position of the variant part is constant, subtract it from the size of the type of the parent to get the new size. This manual CSE --- 8462,8470 ---- /* First create the type of the variant part from that of the old one. */ new_union_type = make_node (QUAL_UNION_TYPE); ! TYPE_NAME (new_union_type) ! = concat_name (TYPE_NAME (record_type), ! IDENTIFIER_POINTER (DECL_NAME (old_variant_part))); /* If the position of the variant part is constant, subtract it from the size of the type of the parent to get the new size. This manual CSE *************** create_variant_part_from (tree old_varia *** 8491,8497 **** continue; /* Retrieve the list of fields already added to the new variant. */ ! new_variant = v->record; field_list = TYPE_FIELDS (new_variant); /* If the old variant had a variant subpart, we need to create a new --- 8498,8504 ---- continue; /* Retrieve the list of fields already added to the new variant. */ ! new_variant = v->new_type; field_list = TYPE_FIELDS (new_variant); /* If the old variant had a variant subpart, we need to create a new diff -Nrcpad gcc-4.6.3/gcc/ada/gnat-style.texi gcc-4.6.4/gcc/ada/gnat-style.texi *** gcc-4.6.3/gcc/ada/gnat-style.texi Sun Jun 13 14:36:24 2010 --- gcc-4.6.4/gcc/ada/gnat-style.texi Thu Feb 21 09:56:01 2013 *************** Texts. A copy of the license is include *** 42,48 **** @titlepage @titlefont{GNAT Coding Style:} @sp 1 ! @title @hfill A Guide for GNAT Developers @subtitle GNAT, The GNU Ada Compiler @versionsubtitle @author Ada Core Technologies, Inc. --- 42,48 ---- @titlepage @titlefont{GNAT Coding Style:} @sp 1 ! @title A Guide for GNAT Developers @subtitle GNAT, The GNU Ada Compiler @versionsubtitle @author Ada Core Technologies, Inc. diff -Nrcpad gcc-4.6.3/gcc/ada/init.c gcc-4.6.4/gcc/ada/init.c *** gcc-4.6.3/gcc/ada/init.c Mon Nov 21 09:04:08 2011 --- gcc-4.6.4/gcc/ada/init.c Thu Feb 7 18:08:41 2013 *************** __gnat_install_handler(void) *** 2179,2185 **** --- 2179,2187 ---- #elif defined(__APPLE__) #include + #include #include + #include #include #include #include *************** __gnat_is_stack_guard (mach_vm_address_t *** 2218,2237 **** #define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE void __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext ATTRIBUTE_UNUSED) { #if defined (__x86_64__) ! /* Work around radar #10302855/pr50678, where the unwinders (libunwind or ! libgcc_s depending on the system revision) and the DWARF unwind data for ! the sigtramp have different ideas about register numbering (causing rbx ! and rdx to be transposed).. */ ! ucontext_t *uc = (ucontext_t *)ucontext ; ! unsigned long t = uc->uc_mcontext->__ss.__rbx; ! uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx; ! uc->uc_mcontext->__ss.__rdx = t; #endif } --- 2220,2271 ---- #define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE + #if defined (__x86_64__) + static int + __darwin_major_version (void) + { + static int cache = -1; + if (cache < 0) + { + int mib[2] = {CTL_KERN, KERN_OSRELEASE}; + size_t len; + + /* Find out how big the buffer needs to be (and set cache to 0 + on failure). */ + if (sysctl (mib, 2, NULL, &len, NULL, 0) == 0) + { + char release[len]; + sysctl (mib, 2, release, &len, NULL, 0); + /* Darwin releases are of the form L.M.N where L is the major + version, so strtol will return L. */ + cache = (int) strtol (release, NULL, 10); + } + else + { + cache = 0; + } + } + return cache; + } + #endif + void __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext ATTRIBUTE_UNUSED) { #if defined (__x86_64__) ! if (__darwin_major_version () < 12) ! { ! /* Work around radar #10302855, where the unwinders (libunwind or ! libgcc_s depending on the system revision) and the DWARF unwind ! data for sigtramp have different ideas about register numbering, ! causing rbx and rdx to be transposed. */ ! ucontext_t *uc = (ucontext_t *)ucontext; ! unsigned long t = uc->uc_mcontext->__ss.__rbx; ! uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx; ! uc->uc_mcontext->__ss.__rdx = t; ! } #endif } diff -Nrcpad gcc-4.6.3/gcc/ada/projects.texi gcc-4.6.4/gcc/ada/projects.texi *** gcc-4.6.3/gcc/ada/projects.texi Mon Dec 20 07:26:57 2010 --- gcc-4.6.4/gcc/ada/projects.texi Thu Feb 21 09:56:01 2013 *************** project files allow you to specify: *** 45,52 **** @item Source file naming conventions; you can specify these either globally or for individual compilation units (@pxref{Naming Schemes}). @item Change any of the above settings depending on external values, thus enabling ! the reuse of the projects in various @b{scenarios} (@pxref{Scenarios ! in Projects}). @item Automatically build libraries as part of the build process (@pxref{Library Projects}). --- 45,51 ---- @item Source file naming conventions; you can specify these either globally or for individual compilation units (@pxref{Naming Schemes}). @item Change any of the above settings depending on external values, thus enabling ! the reuse of the projects in various @b{scenarios} (@pxref{Scenarios in Projects}). @item Automatically build libraries as part of the build process (@pxref{Library Projects}). *************** locating the specified source files in t *** 350,357 **** @item For various reasons, it is sometimes useful to have a project with no sources (most of the time because the attributes defined in the project ! file will be reused in other projects, as explained in @pxref{Organizing ! Projects into Subsystems}. To do this, the attribute @emph{Source_Files} is set to the empty list, i.e. @code{()}. Alternatively, @emph{Source_Dirs} can be set to the empty list, with the same result. --- 349,356 ---- @item For various reasons, it is sometimes useful to have a project with no sources (most of the time because the attributes defined in the project ! file will be reused in other projects, as explained in ! @pxref{Organizing Projects into Subsystems}. To do this, the attribute @emph{Source_Files} is set to the empty list, i.e. @code{()}. Alternatively, @emph{Source_Dirs} can be set to the empty list, with the same result. *************** locating the specified source files in t *** 378,385 **** This can be done thanks to the attribute @b{Excluded_Source_Files} (or its synonym @b{Locally_Removed_Files}). Its value is the list of file names that should not be taken into account. ! This attribute is often used when extending a project, @xref{Project ! Extension}. A similar attribute @b{Excluded_Source_List_File} plays the same role but takes the name of file containing file names similarly to @code{Source_List_File}. --- 377,385 ---- This can be done thanks to the attribute @b{Excluded_Source_Files} (or its synonym @b{Locally_Removed_Files}). Its value is the list of file names that should not be taken into account. ! This attribute is often used when extending a project, ! @xref{Project Extension}. A similar attribute ! @b{Excluded_Source_List_File} plays the same role but takes the name of file containing file names similarly to @code{Source_List_File}. diff -Nrcpad gcc-4.6.3/gcc/ada/s-gearop.adb gcc-4.6.4/gcc/ada/s-gearop.adb *** gcc-4.6.3/gcc/ada/s-gearop.adb Thu Apr 9 15:00:19 2009 --- gcc-4.6.4/gcc/ada/s-gearop.adb Sun Dec 16 10:45:12 2012 *************** package body System.Generic_Array_Operat *** 502,508 **** R : Result_Vector (Right'Range (2)); begin ! if Left'Length /= Right'Length (2) then raise Constraint_Error with "incompatible dimensions in vector-matrix multiplication"; end if; --- 502,508 ---- R : Result_Vector (Right'Range (2)); begin ! if Left'Length /= Right'Length (1) then raise Constraint_Error with "incompatible dimensions in vector-matrix multiplication"; end if; *************** package body System.Generic_Array_Operat *** 513,519 **** begin for K in Right'Range (1) loop ! S := S + Left (J - Right'First (1) + Left'First) * Right (K, J); end loop; R (J) := S; --- 513,519 ---- begin for K in Right'Range (1) loop ! S := S + Left (K - Right'First (1) + Left'First) * Right (K, J); end loop; R (J) := S; diff -Nrcpad gcc-4.6.3/gnattools/ChangeLog gcc-4.6.4/gnattools/ChangeLog *** gcc-4.6.3/gnattools/ChangeLog Thu Mar 1 11:54:40 2012 --- gcc-4.6.4/gnattools/ChangeLog Fri Apr 12 09:49:56 2013 *************** *** 1,3 **** --- 1,7 ---- + 2013-04-12 Release Manager + + * GCC 4.6.4 released. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff -Nrcpad gcc-4.6.3/libada/ChangeLog gcc-4.6.4/libada/ChangeLog *** gcc-4.6.3/libada/ChangeLog Thu Mar 1 11:52:33 2012 --- gcc-4.6.4/libada/ChangeLog Fri Apr 12 09:51:42 2013 *************** *** 1,3 **** --- 1,13 ---- + 2013-04-12 Release Manager + + * GCC 4.6.4 released. + + 2013-02-13 Kai Tietz + + PR target/52122 + * Makefile.in (LN_S_RECURSIVE): New. + (adainclude, adalib): Use LN_S_RECURSIVE for copy. + 2012-03-01 Release Manager * GCC 4.6.3 released. diff -Nrcpad gcc-4.6.3/libada/Makefile.in gcc-4.6.4/libada/Makefile.in *** gcc-4.6.3/libada/Makefile.in Sun Nov 13 14:25:58 2011 --- gcc-4.6.4/libada/Makefile.in Wed Feb 13 10:21:25 2013 *************** enable_shared = @enable_shared@ *** 43,48 **** --- 43,54 ---- LN_S=@LN_S@ AWK=@AWK@ + ifeq (cp -p,$(LN_S)) + LN_S_RECURSIVE = cp -pR + else + LN_S_RECURSIVE = $(LN_S) + endif + # Variables for the user (or the top level) to override. objext=.o GNATLIBFLAGS= -W -Wall -gnatpg *************** gnatlib-plain: osconstool $(GCC_DIR)/ada *** 106,113 **** && touch stamp-libada -rm -rf adainclude -rm -rf adalib ! $(LN_S) $(ADA_RTS_DIR) adainclude ! $(LN_S) $(ADA_RTS_DIR) adalib gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile test -f stamp-libada || \ --- 112,119 ---- && touch stamp-libada -rm -rf adainclude -rm -rf adalib ! $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ! $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile test -f stamp-libada || \ *************** gnatlib-sjlj gnatlib-zcx gnatlib-shared: *** 115,122 **** && touch stamp-libada -rm -rf adainclude -rm -rf adalib ! $(LN_S) $(ADA_RTS_DIR) adainclude ! $(LN_S) $(ADA_RTS_DIR) adalib osconstool: $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons --- 121,128 ---- && touch stamp-libada -rm -rf adainclude -rm -rf adalib ! $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ! $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib osconstool: $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons