4.5.0-1
This commit is contained in:
parent
4572f2db82
commit
8717b1d411
@ -1,2 +1,2 @@
|
|||||||
fastjar-0.97.tar.gz
|
fastjar-0.97.tar.gz
|
||||||
gcc-4.4.4-20100630.tar.bz2
|
gcc-4.5.0-20100707.tar.bz2
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
gcjwebplugin is a Firefox plugin for running Java applets. It is now
|
|
||||||
included in the libgcj sub-package, though it is not enabled by
|
|
||||||
default.
|
|
||||||
|
|
||||||
GNU Classpath and libgcj's security implementation is under active
|
|
||||||
development, but it is not ready to be declared secure. Specifically,
|
|
||||||
it cannot run untrusted applets safely.
|
|
||||||
|
|
||||||
When gcjwebplugin is enabled, it prompts you with a dialog before
|
|
||||||
loading an applet. The dialog tells you that a certain URL would like
|
|
||||||
to load an applet, and asks if you trust the applet. Be aware though
|
|
||||||
that this dialog is mostly informative and doesn't provide much
|
|
||||||
protection:
|
|
||||||
|
|
||||||
- http and DNS can be spoofed meaning that the URL named in the
|
|
||||||
warning dialog cannot be trusted
|
|
||||||
|
|
||||||
- someone could create a browser denial-of-service attack by creating a
|
|
||||||
page with hundreds of applet tags, causing gcjwebplugin to create
|
|
||||||
warning dialog after warning dialog. The browser would have to be
|
|
||||||
closed to eliminate the latest dialog
|
|
||||||
|
|
||||||
- the whitelist is provided as a convenience, but it is unsafe because a
|
|
||||||
domain may change hands from a trusted owner to an untrusted owner.
|
|
||||||
If that domain is in the whitelist then the warning dialog will not
|
|
||||||
appear when loading the new malicious applet.
|
|
||||||
|
|
||||||
CURRENTLY GCJWEBPLUGIN RUNS WITH NO SECURITY MANAGER. THIS MEANS THAT
|
|
||||||
APPLETS CAN DO ANYTHING A JAVA APPLICATION THAT YOU DOWNLOAD AND RUN
|
|
||||||
COULD DO. BE *VERY* CAREFUL WHICH APPLETS YOU RUN. DO NOT USE
|
|
||||||
GCJWEBPLUGIN ON YOUR SYSTEM IF YOUR SYSTEM STORES IMPORTANT DATA.
|
|
||||||
THIS DATA CAN BE DESTROYED OR STOLEN.
|
|
||||||
|
|
||||||
The same warning applies to gappletviewer, which also runs with no
|
|
||||||
security manager (in fact, gcjwebplugin spawns gappletviewer to do the
|
|
||||||
applet loading). When run on the command line, gappletviewer issues a
|
|
||||||
warning on startup and asks you if you want to continue.
|
|
||||||
|
|
||||||
Even considering the risks involved, you may still want to try
|
|
||||||
gcjwebplugin. GNU Classpath's AWT and Swing implementations are now
|
|
||||||
sufficiently mature that they're able to run many applets deployed on
|
|
||||||
the web. If you're interested in trying gcjwebplugin, you can do so
|
|
||||||
by creating a symbolic link in ~/.mozilla/plugins like so:
|
|
||||||
|
|
||||||
ln -s /usr/lib/gcj-@VERSION@/libgcjwebplugin.so ~/.mozilla/plugins/
|
|
||||||
|
|
||||||
Type about:plugins in Firefox's URL bar to confirm that the plugin has
|
|
||||||
been loaded. To see gcjwebplugin debugging output, run:
|
|
||||||
|
|
||||||
firefox -g
|
|
||||||
|
|
||||||
then at the GDB prompt, type
|
|
||||||
|
|
||||||
run
|
|
||||||
|
|
||||||
Please report bugs in Red Hat Bugzilla: http://bugzilla.redhat.com
|
|
@ -1,171 +0,0 @@
|
|||||||
2009-01-27 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* Makefile.in (BACKENDLIBS): Link against -ldl instead of -lcloog -lppl.
|
|
||||||
(graphite.o): Force -O, remove -fkeep-inline-functions.
|
|
||||||
* graphite.c: Include <dlfcn.h>. Reference libcloog and libppl symbols
|
|
||||||
through pointers in cloog_pointers variable.
|
|
||||||
(init_cloog_pointers): New function.
|
|
||||||
(gcc_type_for_iv_of_clast_loop): Rename stmt_for argument to stmt_fora.
|
|
||||||
(graphite_transform_loops): Call init_cloog_pointers.
|
|
||||||
|
|
||||||
--- gcc/Makefile.in.jj 2009-01-26 20:50:38.000000000 +0100
|
|
||||||
+++ gcc/Makefile.in 2009-01-27 14:18:10.000000000 +0100
|
|
||||||
@@ -915,7 +915,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
|
||||||
# How to link with both our special library facilities
|
|
||||||
# and the system's installed libraries.
|
|
||||||
LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER)
|
|
||||||
-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS)
|
|
||||||
+BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl)
|
|
||||||
# Any system libraries needed just for GNAT.
|
|
||||||
SYSLIBS = @GNAT_LIBEXC@
|
|
||||||
|
|
||||||
@@ -3076,6 +3076,9 @@ $(out_object_file): $(out_file) $(CONFIG
|
|
||||||
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \
|
|
||||||
$(out_file) $(OUTPUT_OPTION)
|
|
||||||
|
|
||||||
+graphite.o : \
|
|
||||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
|
||||||
+
|
|
||||||
# Build auxiliary files that support ecoff format.
|
|
||||||
mips-tfile: mips-tfile.o version.o $(LIBDEPS)
|
|
||||||
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS)
|
|
||||||
--- gcc/graphite.c.jj 2009-01-24 19:59:02.000000000 +0100
|
|
||||||
+++ gcc/graphite.c 2009-01-27 14:52:08.000000000 +0100
|
|
||||||
@@ -59,6 +59,110 @@ along with GCC; see the file COPYING3.
|
|
||||||
#include "cloog/cloog.h"
|
|
||||||
#include "graphite.h"
|
|
||||||
|
|
||||||
+#include <dlfcn.h>
|
|
||||||
+#define DYNSYMS \
|
|
||||||
+ DYNSYM (cloog_block_alloc); \
|
|
||||||
+ DYNSYM (cloog_block_list_free); \
|
|
||||||
+ DYNSYM (cloog_block_list_malloc); \
|
|
||||||
+ DYNSYM (cloog_clast_create); \
|
|
||||||
+ DYNSYM (cloog_clast_free); \
|
|
||||||
+ DYNSYM (cloog_domain_free); \
|
|
||||||
+ DYNSYM (cloog_domain_matrix2domain); \
|
|
||||||
+ DYNSYM (cloog_initialize); \
|
|
||||||
+ DYNSYM (cloog_loop_malloc); \
|
|
||||||
+ DYNSYM (cloog_matrix_alloc); \
|
|
||||||
+ DYNSYM (cloog_matrix_copy); \
|
|
||||||
+ DYNSYM (cloog_matrix_free); \
|
|
||||||
+ DYNSYM (cloog_matrix_print); \
|
|
||||||
+ DYNSYM (cloog_names_malloc); \
|
|
||||||
+ DYNSYM (cloog_names_scalarize); \
|
|
||||||
+ DYNSYM (cloog_options_free); \
|
|
||||||
+ DYNSYM (cloog_options_malloc); \
|
|
||||||
+ DYNSYM (cloog_program_dump_cloog); \
|
|
||||||
+ DYNSYM (cloog_program_extract_scalars); \
|
|
||||||
+ DYNSYM (cloog_program_free); \
|
|
||||||
+ DYNSYM (cloog_program_generate); \
|
|
||||||
+ DYNSYM (cloog_program_malloc); \
|
|
||||||
+ DYNSYM (cloog_program_print); \
|
|
||||||
+ DYNSYM (cloog_program_scatter); \
|
|
||||||
+ DYNSYM (cloog_statement_alloc); \
|
|
||||||
+ DYNSYM (ppl_finalize); \
|
|
||||||
+ DYNSYM (pprint); \
|
|
||||||
+ DYNSYM (stmt_block); \
|
|
||||||
+ DYNSYM (stmt_for); \
|
|
||||||
+ DYNSYM (stmt_guard); \
|
|
||||||
+ DYNSYM (stmt_root); \
|
|
||||||
+ DYNSYM (stmt_user);
|
|
||||||
+static struct
|
|
||||||
+{
|
|
||||||
+ bool inited;
|
|
||||||
+ void *h;
|
|
||||||
+#define DYNSYM(x) __typeof (x) *p_##x
|
|
||||||
+ DYNSYMS
|
|
||||||
+#undef DYNSYM
|
|
||||||
+} cloog_pointers;
|
|
||||||
+
|
|
||||||
+#define cloog_block_alloc (*cloog_pointers.p_cloog_block_alloc)
|
|
||||||
+#define cloog_block_list_free (*cloog_pointers.p_cloog_block_list_free)
|
|
||||||
+#define cloog_block_list_malloc (*cloog_pointers.p_cloog_block_list_malloc)
|
|
||||||
+#define cloog_clast_create (*cloog_pointers.p_cloog_clast_create)
|
|
||||||
+#define cloog_clast_free (*cloog_pointers.p_cloog_clast_free)
|
|
||||||
+#define cloog_domain_free (*cloog_pointers.p_cloog_domain_free)
|
|
||||||
+#define cloog_domain_matrix2domain (*cloog_pointers.p_cloog_domain_matrix2domain)
|
|
||||||
+#define cloog_initialize (*cloog_pointers.p_cloog_initialize)
|
|
||||||
+#define cloog_loop_malloc (*cloog_pointers.p_cloog_loop_malloc)
|
|
||||||
+#define cloog_matrix_alloc (*cloog_pointers.p_cloog_matrix_alloc)
|
|
||||||
+#define cloog_matrix_copy (*cloog_pointers.p_cloog_matrix_copy)
|
|
||||||
+#define cloog_matrix_free (*cloog_pointers.p_cloog_matrix_free)
|
|
||||||
+#define cloog_matrix_print (*cloog_pointers.p_cloog_matrix_print)
|
|
||||||
+#define cloog_names_malloc (*cloog_pointers.p_cloog_names_malloc)
|
|
||||||
+#define cloog_names_scalarize (*cloog_pointers.p_cloog_names_scalarize)
|
|
||||||
+#define cloog_options_free (*cloog_pointers.p_cloog_options_free)
|
|
||||||
+#define cloog_options_malloc (*cloog_pointers.p_cloog_options_malloc)
|
|
||||||
+#define cloog_program_dump_cloog (*cloog_pointers.p_cloog_program_dump_cloog)
|
|
||||||
+#define cloog_program_extract_scalars (*cloog_pointers.p_cloog_program_extract_scalars)
|
|
||||||
+#define cloog_program_free (*cloog_pointers.p_cloog_program_free)
|
|
||||||
+#define cloog_program_generate (*cloog_pointers.p_cloog_program_generate)
|
|
||||||
+#define cloog_program_malloc (*cloog_pointers.p_cloog_program_malloc)
|
|
||||||
+#define cloog_program_print (*cloog_pointers.p_cloog_program_print)
|
|
||||||
+#define cloog_program_scatter (*cloog_pointers.p_cloog_program_scatter)
|
|
||||||
+#define cloog_statement_alloc (*cloog_pointers.p_cloog_statement_alloc)
|
|
||||||
+#define ppl_finalize (*cloog_pointers.p_ppl_finalize)
|
|
||||||
+#define pprint (*cloog_pointers.p_pprint)
|
|
||||||
+#define stmt_block (*cloog_pointers.p_stmt_block)
|
|
||||||
+#define stmt_for (*cloog_pointers.p_stmt_for)
|
|
||||||
+#define stmt_guard (*cloog_pointers.p_stmt_guard)
|
|
||||||
+#define stmt_root (*cloog_pointers.p_stmt_root)
|
|
||||||
+#define stmt_user (*cloog_pointers.p_stmt_user)
|
|
||||||
+
|
|
||||||
+#define cloog_finalize (*cloog_pointers.p_ppl_finalize)
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+init_cloog_pointers (void)
|
|
||||||
+{
|
|
||||||
+ void *h;
|
|
||||||
+
|
|
||||||
+ if (cloog_pointers.inited)
|
|
||||||
+ return cloog_pointers.h != NULL;
|
|
||||||
+ h = dlopen ("libcloog.so.0", RTLD_LAZY);
|
|
||||||
+ cloog_pointers.h = h;
|
|
||||||
+ if (h == NULL)
|
|
||||||
+ return false;
|
|
||||||
+#define DYNSYM(x) \
|
|
||||||
+ do \
|
|
||||||
+ { \
|
|
||||||
+ union { __typeof (cloog_pointers.p_##x) p; void *q; } u; \
|
|
||||||
+ u.q = dlsym (h, #x); \
|
|
||||||
+ if (u.q == NULL) \
|
|
||||||
+ return false; \
|
|
||||||
+ cloog_pointers.p_##x = u.p; \
|
|
||||||
+ } \
|
|
||||||
+ while (0)
|
|
||||||
+ DYNSYMS
|
|
||||||
+#undef DYNSYM
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static VEC (scop_p, heap) *current_scops;
|
|
||||||
|
|
||||||
/* Converts a GMP constant V to a tree and returns it. */
|
|
||||||
@@ -4019,10 +4151,10 @@ clast_get_body_of_loop (struct clast_stm
|
|
||||||
STMT. */
|
|
||||||
|
|
||||||
static tree
|
|
||||||
-gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for)
|
|
||||||
+gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_fora)
|
|
||||||
{
|
|
||||||
- struct clast_user_stmt *stmt = clast_get_body_of_loop ((struct clast_stmt *) stmt_for);
|
|
||||||
- const char *cloog_iv = stmt_for->iterator;
|
|
||||||
+ struct clast_user_stmt *stmt = clast_get_body_of_loop ((struct clast_stmt *) stmt_fora);
|
|
||||||
+ const char *cloog_iv = stmt_fora->iterator;
|
|
||||||
CloogStatement *cs = stmt->statement;
|
|
||||||
graphite_bb_p gbb = (graphite_bb_p) cloog_statement_usr (cs);
|
|
||||||
|
|
||||||
@@ -6061,6 +6193,12 @@ graphite_transform_loops (void)
|
|
||||||
if (number_of_loops () <= 1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ if (!init_cloog_pointers ())
|
|
||||||
+ {
|
|
||||||
+ sorry ("Graphite loop optimizations cannot be used");
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
current_scops = VEC_alloc (scop_p, heap, 3);
|
|
||||||
recompute_all_dominators ();
|
|
||||||
|
|
@ -1,538 +0,0 @@
|
|||||||
2004-11-27 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* config.gcc (ia64*-*-linux*): If native and libelf is installed,
|
|
||||||
use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
|
|
||||||
fragments.
|
|
||||||
* config/ia64/t-glibc-no-libunwind: New file.
|
|
||||||
* config/ia64/change-symver.c: New file.
|
|
||||||
* config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
|
|
||||||
define _Unwind_* to __symverglobal_Unwind_*.
|
|
||||||
(alias): Undefine.
|
|
||||||
(symverglobal): Define. Use it on _Unwind_*.
|
|
||||||
* config/ia64/mkmap-symver-multi.awk: New file.
|
|
||||||
* config/ia64/libgcc-ia64-no-libunwind.ver: New file.
|
|
||||||
|
|
||||||
--- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
|
|
||||||
+++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
|
|
||||||
@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
|
|
||||||
;;
|
|
||||||
ia64*-*-linux*)
|
|
||||||
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
|
|
||||||
- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
|
|
||||||
- if test x$with_system_libunwind != xyes ; then
|
|
||||||
- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
|
|
||||||
+ tmake_file="${tmake_file} ia64/t-ia64"
|
|
||||||
+ if test x${target} = x${host} && test x${target} = x${build} \
|
|
||||||
+ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
|
|
||||||
+ && test -f /usr/lib/libelf.so; then
|
|
||||||
+ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
|
|
||||||
+ else
|
|
||||||
+ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
|
|
||||||
+ if test x$with_system_libunwind != xyes ; then
|
|
||||||
+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
|
|
||||||
+ fi
|
|
||||||
fi
|
|
||||||
target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
|
|
||||||
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
|
|
||||||
--- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
|
|
||||||
+++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
|
|
||||||
@@ -0,0 +1,30 @@
|
|
||||||
+# Don't use system libunwind library on IA-64 GLIBC based system,
|
|
||||||
+# but make _Unwind_* symbols unversioned, so that created programs
|
|
||||||
+# are usable even when libgcc_s uses libunwind.
|
|
||||||
+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
|
|
||||||
+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
|
|
||||||
+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
|
|
||||||
+
|
|
||||||
+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
|
|
||||||
+ -Wl,--soname=$(SHLIB_SONAME) \
|
|
||||||
+ -Wl,--version-script=$(SHLIB_MAP) \
|
|
||||||
+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
|
|
||||||
+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
|
|
||||||
+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
|
|
||||||
+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
|
|
||||||
+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
|
|
||||||
+ else true; fi && \
|
|
||||||
+ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
|
|
||||||
+ $$(gcc_srcdir)/config/ia64/change-symver.c -lelf && \
|
|
||||||
+ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
|
|
||||||
+ GCC_3.4.2 _GLOBAL_ \
|
|
||||||
+ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
|
|
||||||
+ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
|
|
||||||
+ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
|
|
||||||
+ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
|
|
||||||
+ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
|
|
||||||
+ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
|
|
||||||
+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
|
|
||||||
+ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
|
|
||||||
+
|
|
||||||
+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
|
|
||||||
--- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
|
|
||||||
+++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
|
|
||||||
@@ -0,0 +1,211 @@
|
|
||||||
+#define _GNU_SOURCE 1
|
|
||||||
+#define _FILE_OFFSET_BITS 64
|
|
||||||
+#include <endian.h>
|
|
||||||
+#include <errno.h>
|
|
||||||
+#include <error.h>
|
|
||||||
+#include <fcntl.h>
|
|
||||||
+#include <fnmatch.h>
|
|
||||||
+#include <gelf.h>
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <string.h>
|
|
||||||
+#include <unistd.h>
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
|
|
||||||
+{
|
|
||||||
+ if (strcmp (name, "_GLOBAL_") == 0)
|
|
||||||
+ return 1;
|
|
||||||
+
|
|
||||||
+ int cnt;
|
|
||||||
+ size_t offset = 0;
|
|
||||||
+ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
|
|
||||||
+ {
|
|
||||||
+ GElf_Verdef defmem;
|
|
||||||
+ GElf_Verdef *def;
|
|
||||||
+ GElf_Verdaux auxmem;
|
|
||||||
+ GElf_Verdaux *aux;
|
|
||||||
+ unsigned int auxoffset;
|
|
||||||
+
|
|
||||||
+ /* Get the data at the next offset. */
|
|
||||||
+ def = gelf_getverdef (verd, offset, &defmem);
|
|
||||||
+ if (def == NULL)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ auxoffset = offset + def->vd_aux;
|
|
||||||
+ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
|
|
||||||
+ if (aux == NULL)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
|
|
||||||
+ aux->vda_name)) == 0)
|
|
||||||
+ return def->vd_ndx;
|
|
||||||
+
|
|
||||||
+ /* Find the next offset. */
|
|
||||||
+ offset += def->vd_next;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return -1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main (int argc, char **argv)
|
|
||||||
+{
|
|
||||||
+ if (argc < 4)
|
|
||||||
+ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
|
|
||||||
+
|
|
||||||
+ const char *fname = argv[1];
|
|
||||||
+
|
|
||||||
+ /* Open the file. */
|
|
||||||
+ int fd;
|
|
||||||
+ fd = open (fname, O_RDWR);
|
|
||||||
+ if (fd == -1)
|
|
||||||
+ error (1, errno, fname);
|
|
||||||
+
|
|
||||||
+ elf_version (EV_CURRENT);
|
|
||||||
+
|
|
||||||
+ /* Now get the ELF descriptor. */
|
|
||||||
+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
|
|
||||||
+ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
|
|
||||||
+ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
|
|
||||||
+
|
|
||||||
+ size_t shstrndx;
|
|
||||||
+ /* Get the section header string table index. */
|
|
||||||
+ if (elf_getshstrndx (elf, &shstrndx) < 0)
|
|
||||||
+ error (1, 0, "cannot get shstrndx from %s", fname);
|
|
||||||
+
|
|
||||||
+ GElf_Ehdr ehdr_mem;
|
|
||||||
+ GElf_Ehdr *ehdr;
|
|
||||||
+
|
|
||||||
+ /* We need the ELF header in a few places. */
|
|
||||||
+ ehdr = gelf_getehdr (elf, &ehdr_mem);
|
|
||||||
+ if (ehdr == NULL)
|
|
||||||
+ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
|
|
||||||
+
|
|
||||||
+ Elf_Scn *scn = NULL;
|
|
||||||
+ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
|
|
||||||
+ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
|
|
||||||
+
|
|
||||||
+ while ((scn = elf_nextscn (elf, scn)) != NULL)
|
|
||||||
+ {
|
|
||||||
+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
|
|
||||||
+
|
|
||||||
+ if (shdr == NULL)
|
|
||||||
+ error (1, 0, "couldn't get shdr from %s", fname);
|
|
||||||
+
|
|
||||||
+ if ((shdr->sh_flags & SHF_ALLOC) != 0)
|
|
||||||
+ {
|
|
||||||
+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
|
|
||||||
+ Elf_Data **p;
|
|
||||||
+
|
|
||||||
+ if (strcmp (name, ".gnu.version") == 0)
|
|
||||||
+ {
|
|
||||||
+ p = &ver;
|
|
||||||
+ ver_shdr = *shdr;
|
|
||||||
+ }
|
|
||||||
+ else if (strcmp (name, ".gnu.version_d") == 0)
|
|
||||||
+ {
|
|
||||||
+ p = &verd;
|
|
||||||
+ verd_shdr = *shdr;
|
|
||||||
+ }
|
|
||||||
+ else if (strcmp (name, ".dynsym") == 0)
|
|
||||||
+ {
|
|
||||||
+ p = &dynsym;
|
|
||||||
+ dynsym_shdr = *shdr;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ if (*p != NULL)
|
|
||||||
+ error (1, 0, "Two %s sections in %s", name, fname);
|
|
||||||
+ *p = elf_getdata (scn, NULL);
|
|
||||||
+ if (*p == NULL || elf_getdata (scn, *p) != NULL)
|
|
||||||
+ error (1, 0, "No data or non-contiguous data in %s section in %s",
|
|
||||||
+ name, fname);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (ver == NULL || verd == NULL || dynsym == NULL)
|
|
||||||
+ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
|
|
||||||
+
|
|
||||||
+ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
|
|
||||||
+ if (from_idx == -1)
|
|
||||||
+ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
|
|
||||||
+
|
|
||||||
+ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
|
|
||||||
+ if (to_idx == -1)
|
|
||||||
+ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
|
|
||||||
+
|
|
||||||
+ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
|
|
||||||
+ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
|
|
||||||
+ || ver_shdr.sh_entsize != 2
|
|
||||||
+ || (ver_shdr.sh_size & 1)
|
|
||||||
+ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
|
|
||||||
+ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
|
|
||||||
+
|
|
||||||
+ size_t nentries = ver_shdr.sh_size / 2;
|
|
||||||
+ size_t cnt;
|
|
||||||
+ GElf_Versym array[nentries];
|
|
||||||
+ for (cnt = 0; cnt < nentries; ++cnt)
|
|
||||||
+ {
|
|
||||||
+ GElf_Versym vsymmem;
|
|
||||||
+ GElf_Versym *vsym;
|
|
||||||
+
|
|
||||||
+ vsym = gelf_getversym (ver, cnt, &vsymmem);
|
|
||||||
+ if (vsym == NULL)
|
|
||||||
+ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
|
|
||||||
+
|
|
||||||
+ array[cnt] = *vsym;
|
|
||||||
+ if (*vsym != from_idx)
|
|
||||||
+ continue;
|
|
||||||
+
|
|
||||||
+ GElf_Sym sym_mem;
|
|
||||||
+ GElf_Sym *sym;
|
|
||||||
+ sym = gelf_getsym (dynsym, cnt, &sym_mem);
|
|
||||||
+ if (sym == NULL)
|
|
||||||
+ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
|
|
||||||
+
|
|
||||||
+ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
|
|
||||||
+
|
|
||||||
+ int argn;
|
|
||||||
+ for (argn = 4; argn < argc; ++argn)
|
|
||||||
+ if (fnmatch (argv[argn], name, 0) == 0)
|
|
||||||
+ {
|
|
||||||
+ array[cnt] = to_idx;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (sizeof (array[0]) != 2)
|
|
||||||
+ abort ();
|
|
||||||
+
|
|
||||||
+#if __BYTE_ORDER == __LITTLE_ENDIAN
|
|
||||||
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
|
|
||||||
+ ;
|
|
||||||
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
|
|
||||||
+#elif __BYTE_ORDER == __BIG_ENDIAN
|
|
||||||
+ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
|
|
||||||
+ ;
|
|
||||||
+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
|
|
||||||
+#else
|
|
||||||
+# error Unsupported endianity
|
|
||||||
+#endif
|
|
||||||
+ {
|
|
||||||
+ for (cnt = 0; cnt < nentries; ++cnt)
|
|
||||||
+ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
|
|
||||||
+
|
|
||||||
+ if (elf_end (elf) != 0)
|
|
||||||
+ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
|
|
||||||
+
|
|
||||||
+ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
|
|
||||||
+ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
|
|
||||||
+ fname);
|
|
||||||
+
|
|
||||||
+ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
|
|
||||||
+ error (1, 0, "failed to write .gnu.version section into %s", fname);
|
|
||||||
+
|
|
||||||
+ close (fd);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
--- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
|
|
||||||
+++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
|
|
||||||
@@ -51,6 +51,51 @@
|
|
||||||
#define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
|
|
||||||
#define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
|
|
||||||
|
|
||||||
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
|
|
||||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
|
|
||||||
+ (_Unwind_Trace_Fn, void *);
|
|
||||||
+extern void __symverglobal_Unwind_DeleteException
|
|
||||||
+ (struct _Unwind_Exception *);
|
|
||||||
+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
|
|
||||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
|
|
||||||
+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
|
|
||||||
+extern _Unwind_Word __symverglobal_Unwind_GetCFA
|
|
||||||
+ (struct _Unwind_Context *);
|
|
||||||
+extern _Unwind_Word __symverglobal_Unwind_GetBSP
|
|
||||||
+ (struct _Unwind_Context *);
|
|
||||||
+extern _Unwind_Word __symverglobal_Unwind_GetGR
|
|
||||||
+ (struct _Unwind_Context *, int );
|
|
||||||
+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
|
|
||||||
+extern void *__symverglobal_Unwind_GetLanguageSpecificData
|
|
||||||
+ (struct _Unwind_Context *);
|
|
||||||
+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
|
|
||||||
+ (struct _Unwind_Context *);
|
|
||||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
|
|
||||||
+ (struct _Unwind_Exception *);
|
|
||||||
+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
|
|
||||||
+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
|
|
||||||
+ (struct _Unwind_Exception *);
|
|
||||||
+extern void __symverglobal_Unwind_SetGR
|
|
||||||
+ (struct _Unwind_Context *, int, _Unwind_Word);
|
|
||||||
+extern void __symverglobal_Unwind_SetIP
|
|
||||||
+ (struct _Unwind_Context *, _Unwind_Ptr);
|
|
||||||
+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
|
|
||||||
+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
|
|
||||||
+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
|
|
||||||
+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
|
|
||||||
+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
|
|
||||||
+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
|
|
||||||
+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
|
|
||||||
+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
|
|
||||||
+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
|
|
||||||
+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
|
|
||||||
+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
|
|
||||||
+#define _Unwind_Resume __symverglobal_Unwind_Resume
|
|
||||||
+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
|
|
||||||
+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
|
|
||||||
+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
enum unw_application_register
|
|
||||||
{
|
|
||||||
UNW_AR_BSP,
|
|
||||||
@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
|
|
||||||
alias (_Unwind_SetIP);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
|
|
||||||
+#undef alias
|
|
||||||
+#define symverglobal(name, version) \
|
|
||||||
+__typeof (__symverglobal##name) __symverlocal##name \
|
|
||||||
+ __attribute__ ((alias ("__symverglobal" #name))); \
|
|
||||||
+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
|
|
||||||
+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
|
|
||||||
+
|
|
||||||
+#undef _Unwind_Backtrace
|
|
||||||
+#undef _Unwind_DeleteException
|
|
||||||
+#undef _Unwind_FindEnclosingFunction
|
|
||||||
+#undef _Unwind_ForcedUnwind
|
|
||||||
+#undef _Unwind_GetBSP
|
|
||||||
+#undef _Unwind_GetCFA
|
|
||||||
+#undef _Unwind_GetGR
|
|
||||||
+#undef _Unwind_GetIP
|
|
||||||
+#undef _Unwind_GetLanguageSpecificData
|
|
||||||
+#undef _Unwind_GetRegionStart
|
|
||||||
+#undef _Unwind_RaiseException
|
|
||||||
+#undef _Unwind_Resume
|
|
||||||
+#undef _Unwind_Resume_or_Rethrow
|
|
||||||
+#undef _Unwind_SetGR
|
|
||||||
+#undef _Unwind_SetIP
|
|
||||||
+symverglobal (_Unwind_Backtrace, GCC_3.3);
|
|
||||||
+symverglobal (_Unwind_DeleteException, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
|
|
||||||
+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
|
|
||||||
+symverglobal (_Unwind_GetCFA, GCC_3.3);
|
|
||||||
+symverglobal (_Unwind_GetGR, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_GetIP, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_RaiseException, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_Resume, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
|
|
||||||
+symverglobal (_Unwind_SetGR, GCC_3.0);
|
|
||||||
+symverglobal (_Unwind_SetIP, GCC_3.0);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#endif
|
|
||||||
--- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
|
|
||||||
+++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
|
|
||||||
@@ -0,0 +1,133 @@
|
|
||||||
+# Generate an ELF symbol version map a-la Solaris and GNU ld.
|
|
||||||
+# Contributed by Richard Henderson <rth@cygnus.com>
|
|
||||||
+#
|
|
||||||
+# This file is part of GCC.
|
|
||||||
+#
|
|
||||||
+# GCC is free software; you can redistribute it and/or modify it under
|
|
||||||
+# the terms of the GNU General Public License as published by the Free
|
|
||||||
+# Software Foundation; either version 2, or (at your option) any later
|
|
||||||
+# version.
|
|
||||||
+#
|
|
||||||
+# GCC is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
||||||
+# License for more details.
|
|
||||||
+#
|
|
||||||
+# You should have received a copy of the GNU General Public License
|
|
||||||
+# along with GCC; see the file COPYING. If not, write to the Free
|
|
||||||
+# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
+# 02110-1301, USA.
|
|
||||||
+
|
|
||||||
+BEGIN {
|
|
||||||
+ state = "nm";
|
|
||||||
+ sawsymbol = 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+# Remove comment and blank lines.
|
|
||||||
+/^ *#/ || /^ *$/ {
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+# We begin with nm input. Collect the set of symbols that are present
|
|
||||||
+# so that we can not emit them into the final version script -- Solaris
|
|
||||||
+# complains at us if we do.
|
|
||||||
+
|
|
||||||
+state == "nm" && /^%%/ {
|
|
||||||
+ state = "ver";
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+state == "nm" && ($1 == "U" || $2 == "U") {
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+state == "nm" && NF == 3 {
|
|
||||||
+ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
|
|
||||||
+ def[$3] = 1
|
|
||||||
+ tl=$3
|
|
||||||
+ sub(/^.*@/,"",tl)
|
|
||||||
+ ver[$3] = tl
|
|
||||||
+ } else {
|
|
||||||
+ sub(/@@?GCC_[0-9.]*$/,"",$3)
|
|
||||||
+ def[$3] = 1;
|
|
||||||
+ }
|
|
||||||
+ sawsymbol = 1;
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+state == "nm" {
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+# Now we process a simplified variant of the Solaris symbol version
|
|
||||||
+# script. We have one symbol per line, no semicolons, simple markers
|
|
||||||
+# for beginning and ending each section, and %inherit markers for
|
|
||||||
+# describing version inheritence. A symbol may appear in more than
|
|
||||||
+# one symbol version, and the last seen takes effect.
|
|
||||||
+
|
|
||||||
+NF == 3 && $1 == "%inherit" {
|
|
||||||
+ inherit[$2] = $3;
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+NF == 2 && $2 == "{" {
|
|
||||||
+ libs[$1] = 1;
|
|
||||||
+ thislib = $1;
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+$1 == "}" {
|
|
||||||
+ thislib = "";
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+{
|
|
||||||
+ ver[$1] = thislib;
|
|
||||||
+ next;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+END {
|
|
||||||
+ if (!sawsymbol)
|
|
||||||
+ {
|
|
||||||
+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
|
|
||||||
+ exit 1;
|
|
||||||
+ }
|
|
||||||
+ for (l in libs)
|
|
||||||
+ output(l);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+function output(lib) {
|
|
||||||
+ if (done[lib])
|
|
||||||
+ return;
|
|
||||||
+ done[lib] = 1;
|
|
||||||
+ if (inherit[lib])
|
|
||||||
+ output(inherit[lib]);
|
|
||||||
+
|
|
||||||
+ empty=1
|
|
||||||
+ for (sym in ver)
|
|
||||||
+ if ((ver[sym] == lib) && (sym in def))
|
|
||||||
+ {
|
|
||||||
+ if (empty)
|
|
||||||
+ {
|
|
||||||
+ printf("%s {\n", lib);
|
|
||||||
+ printf(" global:\n");
|
|
||||||
+ empty = 0;
|
|
||||||
+ }
|
|
||||||
+ symp = sym;
|
|
||||||
+ sub(/@GCC_[0-9.]*$/,"",symp);
|
|
||||||
+ printf("\t%s;\n", symp);
|
|
||||||
+ if (dotsyms)
|
|
||||||
+ printf("\t.%s;\n", symp);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (empty)
|
|
||||||
+ {
|
|
||||||
+ for (l in libs)
|
|
||||||
+ if (inherit[l] == lib)
|
|
||||||
+ inherit[l] = inherit[lib];
|
|
||||||
+ }
|
|
||||||
+ else if (inherit[lib])
|
|
||||||
+ printf("} %s;\n", inherit[lib]);
|
|
||||||
+ else
|
|
||||||
+ printf ("\n local:\n\t*;\n};\n");
|
|
||||||
+}
|
|
||||||
--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
|
|
||||||
+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
|
|
||||||
@@ -0,0 +1,17 @@
|
|
||||||
+GCC_3.4.2 {
|
|
||||||
+ _Unwind_GetGR
|
|
||||||
+ _Unwind_RaiseException
|
|
||||||
+ _Unwind_GetRegionStart
|
|
||||||
+ _Unwind_SetIP
|
|
||||||
+ _Unwind_GetIP
|
|
||||||
+ _Unwind_GetLanguageSpecificData
|
|
||||||
+ _Unwind_Resume
|
|
||||||
+ _Unwind_DeleteException
|
|
||||||
+ _Unwind_SetGR
|
|
||||||
+ _Unwind_ForcedUnwind
|
|
||||||
+ _Unwind_Backtrace
|
|
||||||
+ _Unwind_FindEnclosingFunction
|
|
||||||
+ _Unwind_GetCFA
|
|
||||||
+ _Unwind_Resume_or_Rethrow
|
|
||||||
+ _Unwind_GetBSP
|
|
||||||
+}
|
|
@ -1,47 +0,0 @@
|
|||||||
--- libstdc++-v3/doc/html/index.html 2009-01-14 12:06:37.000000000 +0100
|
|
||||||
+++ libstdc++-v3/doc/html/index.html 2009-05-06 09:17:30.000000000 +0200
|
|
||||||
@@ -12,7 +12,8 @@
|
|
||||||
<div>
|
|
||||||
<h1>The GNU C++ Library Documentation</h1>
|
|
||||||
|
|
||||||
-<p>Copyright 2008 FSF</p>
|
|
||||||
+<p>Release 4.4.0</p>
|
|
||||||
+<p>Copyright 2008, 2009 FSF</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Permission is granted to copy, distribute and/or modify this
|
|
||||||
--- libstdc++-v3/doc/html/api.html 2009-04-20 21:21:15.000000000 +0200
|
|
||||||
+++ libstdc++-v3/doc/html/api.html 2009-05-06 09:17:24.000000000 +0200
|
|
||||||
@@ -17,27 +17,12 @@ useful for examining the signatures of p
|
|
||||||
the library classes, finding out what is in a particular include
|
|
||||||
file, looking at inheritance diagrams, etc.
|
|
||||||
</p><p>
|
|
||||||
-The source-level documentation for the most recent releases can be
|
|
||||||
-viewed online:
|
|
||||||
-</p><div class="itemizedlist"><ul type="disc"><li><p>
|
|
||||||
- <a class="ulink" href="libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
|
|
||||||
+The source-level documentation can be viewed here:
|
|
||||||
+</p>
|
|
||||||
+<div class="itemizedlist"><ul type="disc">
|
|
||||||
+ <li><p>
|
|
||||||
+ <a class="ulink" href="api/index.html" target="_top">for the 4.4 release
|
|
||||||
</a>
|
|
||||||
- </p></li><li><p>
|
|
||||||
- <a class="ulink" href="libstdc++-html-USERS-4.1/index.html" target="_top">for the 4.1 release
|
|
||||||
- </a>
|
|
||||||
- </p></li><li><p>
|
|
||||||
- <a class="ulink" href="libstdc++-html-USERS-4.2/index.html" target="_top">for the 4.2 release
|
|
||||||
- </a>
|
|
||||||
- </p></li><li><p>
|
|
||||||
- <a class="ulink" href="libstdc++-html-USERS-4.3/index.html" target="_top">for the 4.3 release
|
|
||||||
- </a>
|
|
||||||
- </p></li><li><p>
|
|
||||||
- <a class="ulink" href="libstdc++-html-USERS-4.4/index.html" target="_top">for the 4.4 release
|
|
||||||
- </a>
|
|
||||||
- </p></li><li><p>
|
|
||||||
- <a class="ulink" href="latest-doxygen/index.html" target="_top">"the latest collection"
|
|
||||||
- </a>
|
|
||||||
- (For the main development tree; see the date on the first page.)
|
|
||||||
</p></li></ul></div><p>
|
|
||||||
This generated HTML collection, as above, is also available for download in the libstdc++ snapshots directory at
|
|
||||||
<code class="literal"><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></code>.
|
|
@ -1,24 +0,0 @@
|
|||||||
2009-09-16 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* config/rs6000/sysv4.h (FP_SAVE_INLINE, GP_SAVE_INLINE): Disable
|
|
||||||
out of line gpr/fpr saving for -m64 -Os -mcall-aixdesc.
|
|
||||||
|
|
||||||
--- gcc/config/rs6000/sysv4.h.jj 2009-09-16 14:46:19.000000000 +0200
|
|
||||||
+++ gcc/config/rs6000/sysv4.h 2009-09-16 14:46:19.000000000 +0200
|
|
||||||
@@ -273,12 +273,14 @@ do { \
|
|
||||||
/* Define cutoff for using external functions to save floating point.
|
|
||||||
When optimizing for size, use external functions when profitable. */
|
|
||||||
#define FP_SAVE_INLINE(FIRST_REG) (optimize_size \
|
|
||||||
+ && (!TARGET_64BIT || !DOT_SYMBOLS) \
|
|
||||||
? ((FIRST_REG) == 62 \
|
|
||||||
|| (FIRST_REG) == 63) \
|
|
||||||
: (FIRST_REG) < 64)
|
|
||||||
/* And similarly for general purpose registers. */
|
|
||||||
-#define GP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 32 \
|
|
||||||
- && !optimize_size)
|
|
||||||
+#define GP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 32 \
|
|
||||||
+ && (!optimize_size \
|
|
||||||
+ || (TARGET_64BIT && DOT_SYMBOLS)))
|
|
||||||
|
|
||||||
/* Put jump tables in read-only memory, rather than in .text. */
|
|
||||||
#define JUMP_TABLES_IN_TEXT_SECTION 0
|
|
@ -1,34 +0,0 @@
|
|||||||
2007-10-16 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* Makefile.am (libgcj_tools_la_LIBADD): Add.
|
|
||||||
* Makefile.in: Regenerated.
|
|
||||||
|
|
||||||
--- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200
|
|
||||||
+++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200
|
|
||||||
@@ -314,6 +314,8 @@ libgcj_tools_la_SOURCES = classpath/tool
|
|
||||||
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \
|
|
||||||
-fno-bootstrap-classes -fno-indirect-classes \
|
|
||||||
-fsource-filename=$(here)/classpath/tools/all-classes.lst
|
|
||||||
+## See jv_convert_LDADD.
|
|
||||||
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
|
|
||||||
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
|
|
||||||
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
|
||||||
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
|
|
||||||
--- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200
|
|
||||||
+++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200
|
|
||||||
@@ -160,7 +160,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
|
|
||||||
am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
|
|
||||||
lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
|
|
||||||
@XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
|
|
||||||
-libgcj_tools_la_LIBADD =
|
|
||||||
am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
|
|
||||||
libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
|
|
||||||
@INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \
|
|
||||||
@@ -1041,6 +1040,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS
|
|
||||||
-fno-bootstrap-classes -fno-indirect-classes \
|
|
||||||
-fsource-filename=$(here)/classpath/tools/all-classes.lst
|
|
||||||
|
|
||||||
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
|
|
||||||
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
|
|
||||||
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
|
||||||
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
|
|
@ -1,51 +0,0 @@
|
|||||||
2010-04-27 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* unwind-dw2.c (_Unwind_DebugHook): Add used attribute.
|
|
||||||
|
|
||||||
2009-05-27 Tom Tromey <tromey@redhat.com>
|
|
||||||
|
|
||||||
* unwind-dw2.c (_Unwind_DebugHook): New function.
|
|
||||||
(uw_install_context): Call _Unwind_DebugHook.
|
|
||||||
|
|
||||||
--- gcc/unwind-dw2.c (revision 147933)
|
|
||||||
+++ gcc/unwind-dw2.c (revision 147934)
|
|
||||||
@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex
|
|
||||||
context->ra = __builtin_extract_return_addr (outer_ra);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static void _Unwind_DebugHook (void *, void *)
|
|
||||||
+ __attribute__ ((__noinline__, __used__));
|
|
||||||
+
|
|
||||||
+/* This function is called during unwinding. It is intended as a hook
|
|
||||||
+ for a debugger to intercept exceptions. CFA is the CFA of the
|
|
||||||
+ target frame. HANDLER is the PC to which control will be
|
|
||||||
+ transferred. */
|
|
||||||
+static void
|
|
||||||
+_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)),
|
|
||||||
+ void *handler __attribute__ ((__unused__)))
|
|
||||||
+{
|
|
||||||
+ asm ("");
|
|
||||||
+}
|
|
||||||
|
|
||||||
/* Install TARGET into CURRENT so that we can return to it. This is a
|
|
||||||
macro because __builtin_eh_return must be invoked in the context of
|
|
||||||
our caller. */
|
|
||||||
|
|
||||||
-#define uw_install_context(CURRENT, TARGET) \
|
|
||||||
- do \
|
|
||||||
- { \
|
|
||||||
- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
|
|
||||||
- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
|
|
||||||
- __builtin_eh_return (offset, handler); \
|
|
||||||
- } \
|
|
||||||
+#define uw_install_context(CURRENT, TARGET) \
|
|
||||||
+ do \
|
|
||||||
+ { \
|
|
||||||
+ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
|
|
||||||
+ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
|
|
||||||
+ _Unwind_DebugHook ((TARGET)->cfa, handler); \
|
|
||||||
+ __builtin_eh_return (offset, handler); \
|
|
||||||
+ } \
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
static long
|
|
350
gcc45-cloog-dl.patch
Normal file
350
gcc45-cloog-dl.patch
Normal file
@ -0,0 +1,350 @@
|
|||||||
|
2010-07-01 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.in (BACKENDLIBS): Link against -ldl instead of -lcloog -lppl.
|
||||||
|
(graphite.o, graphite%.o): Force -O, remove -fkeep-inline-functions.
|
||||||
|
(graphite-ppl.o): Depend on graphite.h.
|
||||||
|
* graphite.h: Include <dlfcn.h>. Reference libcloog and libppl symbols
|
||||||
|
through pointers in cloog_pointers__ variable.
|
||||||
|
* graphite.c (init_cloog_pointers): New function.
|
||||||
|
(graphite_transform_loops): Call init_cloog_pointers.
|
||||||
|
* graphite-clast-to-gimple.c (gcc_type_for_iv_of_clast_loop): Rename stmt_for
|
||||||
|
argument to stmt_fora.
|
||||||
|
* graphite-ppl.c: Include graphite.h.
|
||||||
|
|
||||||
|
--- gcc/graphite.c.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
|
+++ gcc/graphite.c 2010-07-01 16:57:48.248523237 +0200
|
||||||
|
@@ -67,6 +67,35 @@ along with GCC; see the file COPYING3.
|
||||||
|
#include "graphite-clast-to-gimple.h"
|
||||||
|
#include "graphite-sese-to-poly.h"
|
||||||
|
|
||||||
|
+__typeof (cloog_pointers__) cloog_pointers__;
|
||||||
|
+
|
||||||
|
+static bool
|
||||||
|
+init_cloog_pointers (void)
|
||||||
|
+{
|
||||||
|
+ void *h;
|
||||||
|
+
|
||||||
|
+ if (cloog_pointers__.inited)
|
||||||
|
+ return cloog_pointers__.h != NULL;
|
||||||
|
+ h = dlopen ("libcloog.so.0", RTLD_LAZY);
|
||||||
|
+ cloog_pointers__.h = h;
|
||||||
|
+ if (h == NULL)
|
||||||
|
+ return false;
|
||||||
|
+#define DYNSYM(x) \
|
||||||
|
+ do \
|
||||||
|
+ { \
|
||||||
|
+ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
|
||||||
|
+ u.q = dlsym (h, #x); \
|
||||||
|
+ if (u.q == NULL) \
|
||||||
|
+ return false; \
|
||||||
|
+ cloog_pointers__.p_##x = u.p; \
|
||||||
|
+ } \
|
||||||
|
+ while (0)
|
||||||
|
+ DYNSYMS
|
||||||
|
+#undef DYNSYM
|
||||||
|
+ return true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/* Print global statistics to FILE. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -210,6 +239,12 @@ graphite_initialize (void)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (!init_cloog_pointers ())
|
||||||
|
+ {
|
||||||
|
+ sorry ("Graphite loop optimizations cannot be used");
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
recompute_all_dominators ();
|
||||||
|
initialize_original_copy_tables ();
|
||||||
|
cloog_initialize ();
|
||||||
|
--- gcc/graphite.h.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
|
+++ gcc/graphite.h 2010-07-01 17:29:37.225491850 +0200
|
||||||
|
@@ -21,4 +21,224 @@ along with GCC; see the file COPYING3.
|
||||||
|
#ifndef GCC_GRAPHITE_H
|
||||||
|
#define GCC_GRAPHITE_H
|
||||||
|
|
||||||
|
+#include <dlfcn.h>
|
||||||
|
+#define DYNSYMS \
|
||||||
|
+ DYNSYM (cloog_block_alloc); \
|
||||||
|
+ DYNSYM (cloog_block_list_free); \
|
||||||
|
+ DYNSYM (cloog_block_list_malloc); \
|
||||||
|
+ DYNSYM (cloog_clast_create); \
|
||||||
|
+ DYNSYM (cloog_clast_free); \
|
||||||
|
+ DYNSYM (cloog_domain_free); \
|
||||||
|
+ DYNSYM (cloog_domain_matrix2domain); \
|
||||||
|
+ DYNSYM (cloog_initialize); \
|
||||||
|
+ DYNSYM (cloog_loop_malloc); \
|
||||||
|
+ DYNSYM (cloog_matrix_alloc); \
|
||||||
|
+ DYNSYM (cloog_matrix_copy); \
|
||||||
|
+ DYNSYM (cloog_matrix_free); \
|
||||||
|
+ DYNSYM (cloog_matrix_print); \
|
||||||
|
+ DYNSYM (cloog_names_malloc); \
|
||||||
|
+ DYNSYM (cloog_names_scalarize); \
|
||||||
|
+ DYNSYM (cloog_options_free); \
|
||||||
|
+ DYNSYM (cloog_options_malloc); \
|
||||||
|
+ DYNSYM (cloog_program_dump_cloog); \
|
||||||
|
+ DYNSYM (cloog_program_extract_scalars); \
|
||||||
|
+ DYNSYM (cloog_program_free); \
|
||||||
|
+ DYNSYM (cloog_program_generate); \
|
||||||
|
+ DYNSYM (cloog_program_malloc); \
|
||||||
|
+ DYNSYM (cloog_program_print); \
|
||||||
|
+ DYNSYM (cloog_program_scatter); \
|
||||||
|
+ DYNSYM (cloog_statement_alloc); \
|
||||||
|
+ DYNSYM (cloog_domain_union); \
|
||||||
|
+ DYNSYM (cloog_matrix_read); \
|
||||||
|
+ DYNSYM (cloog_new_pol); \
|
||||||
|
+ DYNSYM (cloog_vector_gcd); \
|
||||||
|
+ DYNSYM (ppl_finalize); \
|
||||||
|
+ DYNSYM (ppl_assign_Coefficient_from_mpz_t); \
|
||||||
|
+ DYNSYM (ppl_assign_Linear_Expression_from_Linear_Expression); \
|
||||||
|
+ DYNSYM (ppl_Coefficient_to_mpz_t); \
|
||||||
|
+ DYNSYM (ppl_Constraint_coefficient); \
|
||||||
|
+ DYNSYM (ppl_Constraint_inhomogeneous_term); \
|
||||||
|
+ DYNSYM (ppl_Constraint_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_begin); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_const_iterator_dereference); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_const_iterator_equal_test); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_const_iterator_increment); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_end); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_insert_Constraint); \
|
||||||
|
+ DYNSYM (ppl_Constraint_System_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_Constraint_type); \
|
||||||
|
+ DYNSYM (ppl_delete_Coefficient); \
|
||||||
|
+ DYNSYM (ppl_delete_Constraint); \
|
||||||
|
+ DYNSYM (ppl_delete_Constraint_System_const_iterator); \
|
||||||
|
+ DYNSYM (ppl_delete_Linear_Expression); \
|
||||||
|
+ DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron); \
|
||||||
|
+ DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron_iterator); \
|
||||||
|
+ DYNSYM (ppl_delete_Polyhedron); \
|
||||||
|
+ DYNSYM (ppl_Linear_Expression_add_to_coefficient); \
|
||||||
|
+ DYNSYM (ppl_Linear_Expression_add_to_inhomogeneous); \
|
||||||
|
+ DYNSYM (ppl_Linear_Expression_coefficient); \
|
||||||
|
+ DYNSYM (ppl_Linear_Expression_inhomogeneous_term); \
|
||||||
|
+ DYNSYM (ppl_Linear_Expression_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_new_Coefficient); \
|
||||||
|
+ DYNSYM (ppl_new_Coefficient_from_mpz_t); \
|
||||||
|
+ DYNSYM (ppl_new_Constraint); \
|
||||||
|
+ DYNSYM (ppl_new_Constraint_System); \
|
||||||
|
+ DYNSYM (ppl_new_Constraint_System_const_iterator); \
|
||||||
|
+ DYNSYM (ppl_new_C_Polyhedron_from_C_Polyhedron); \
|
||||||
|
+ DYNSYM (ppl_new_C_Polyhedron_from_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_new_C_Polyhedron_recycle_Constraint_System); \
|
||||||
|
+ DYNSYM (ppl_new_Linear_Expression); \
|
||||||
|
+ DYNSYM (ppl_new_Linear_Expression_from_Constraint); \
|
||||||
|
+ DYNSYM (ppl_new_Linear_Expression_from_Linear_Expression); \
|
||||||
|
+ DYNSYM (ppl_new_Linear_Expression_with_dimension); \
|
||||||
|
+ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron); \
|
||||||
|
+ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron); \
|
||||||
|
+ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_iterator); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_constraint); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_difference_assign); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_intersection_assign); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_is_empty); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_end); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_increment); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_maximize); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_minimize); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_size); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_add_constraint); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_add_constraints); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_add_space_dimensions_and_embed); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_get_constraints); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_map_space_dimensions); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_remove_space_dimensions); \
|
||||||
|
+ DYNSYM (ppl_Polyhedron_space_dimension); \
|
||||||
|
+ DYNSYM (ppl_subtract_Linear_Expression_from_Linear_Expression); \
|
||||||
|
+ DYNSYM (pprint); \
|
||||||
|
+ DYNSYM (stmt_block); \
|
||||||
|
+ DYNSYM (stmt_for); \
|
||||||
|
+ DYNSYM (stmt_guard); \
|
||||||
|
+ DYNSYM (stmt_root); \
|
||||||
|
+ DYNSYM (stmt_user);
|
||||||
|
+extern struct
|
||||||
|
+{
|
||||||
|
+ bool inited;
|
||||||
|
+ void *h;
|
||||||
|
+#define DYNSYM(x) __typeof (x) *p_##x
|
||||||
|
+ DYNSYMS
|
||||||
|
+#undef DYNSYM
|
||||||
|
+} cloog_pointers__;
|
||||||
|
+
|
||||||
|
+#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
|
||||||
|
+#define cloog_block_list_free (*cloog_pointers__.p_cloog_block_list_free)
|
||||||
|
+#define cloog_block_list_malloc (*cloog_pointers__.p_cloog_block_list_malloc)
|
||||||
|
+#define cloog_clast_create (*cloog_pointers__.p_cloog_clast_create)
|
||||||
|
+#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
|
||||||
|
+#define cloog_domain_free (*cloog_pointers__.p_cloog_domain_free)
|
||||||
|
+#define cloog_domain_matrix2domain (*cloog_pointers__.p_cloog_domain_matrix2domain)
|
||||||
|
+#define cloog_initialize (*cloog_pointers__.p_cloog_initialize)
|
||||||
|
+#define cloog_loop_malloc (*cloog_pointers__.p_cloog_loop_malloc)
|
||||||
|
+#define cloog_matrix_alloc (*cloog_pointers__.p_cloog_matrix_alloc)
|
||||||
|
+#define cloog_matrix_copy (*cloog_pointers__.p_cloog_matrix_copy)
|
||||||
|
+#define cloog_matrix_free (*cloog_pointers__.p_cloog_matrix_free)
|
||||||
|
+#define cloog_matrix_print (*cloog_pointers__.p_cloog_matrix_print)
|
||||||
|
+#define cloog_names_malloc (*cloog_pointers__.p_cloog_names_malloc)
|
||||||
|
+#define cloog_names_scalarize (*cloog_pointers__.p_cloog_names_scalarize)
|
||||||
|
+#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
|
||||||
|
+#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
|
||||||
|
+#define cloog_program_dump_cloog (*cloog_pointers__.p_cloog_program_dump_cloog)
|
||||||
|
+#define cloog_program_extract_scalars (*cloog_pointers__.p_cloog_program_extract_scalars)
|
||||||
|
+#define cloog_program_free (*cloog_pointers__.p_cloog_program_free)
|
||||||
|
+#define cloog_program_generate (*cloog_pointers__.p_cloog_program_generate)
|
||||||
|
+#define cloog_program_malloc (*cloog_pointers__.p_cloog_program_malloc)
|
||||||
|
+#define cloog_program_print (*cloog_pointers__.p_cloog_program_print)
|
||||||
|
+#define cloog_program_scatter (*cloog_pointers__.p_cloog_program_scatter)
|
||||||
|
+#define cloog_statement_alloc (*cloog_pointers__.p_cloog_statement_alloc)
|
||||||
|
+#define cloog_domain_union (*cloog_pointers__.p_cloog_domain_union)
|
||||||
|
+#define cloog_matrix_read (*cloog_pointers__.p_cloog_matrix_read)
|
||||||
|
+#define cloog_new_pol (*cloog_pointers__.p_cloog_new_pol)
|
||||||
|
+#define cloog_vector_gcd (*cloog_pointers__.p_cloog_vector_gcd)
|
||||||
|
+#define ppl_finalize (*cloog_pointers__.p_ppl_finalize)
|
||||||
|
+#define ppl_assign_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_assign_Coefficient_from_mpz_t)
|
||||||
|
+#define ppl_assign_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_assign_Linear_Expression_from_Linear_Expression)
|
||||||
|
+#define ppl_Coefficient_to_mpz_t (*cloog_pointers__.p_ppl_Coefficient_to_mpz_t)
|
||||||
|
+#define ppl_Constraint_coefficient (*cloog_pointers__.p_ppl_Constraint_coefficient)
|
||||||
|
+#define ppl_Constraint_inhomogeneous_term (*cloog_pointers__.p_ppl_Constraint_inhomogeneous_term)
|
||||||
|
+#define ppl_Constraint_space_dimension (*cloog_pointers__.p_ppl_Constraint_space_dimension)
|
||||||
|
+#define ppl_Constraint_System_begin (*cloog_pointers__.p_ppl_Constraint_System_begin)
|
||||||
|
+#define ppl_Constraint_System_const_iterator_dereference (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_dereference)
|
||||||
|
+#define ppl_Constraint_System_const_iterator_equal_test (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_equal_test)
|
||||||
|
+#define ppl_Constraint_System_const_iterator_increment (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_increment)
|
||||||
|
+#define ppl_Constraint_System_end (*cloog_pointers__.p_ppl_Constraint_System_end)
|
||||||
|
+#define ppl_Constraint_System_insert_Constraint (*cloog_pointers__.p_ppl_Constraint_System_insert_Constraint)
|
||||||
|
+#define ppl_Constraint_System_space_dimension (*cloog_pointers__.p_ppl_Constraint_System_space_dimension)
|
||||||
|
+#define ppl_Constraint_type (*cloog_pointers__.p_ppl_Constraint_type)
|
||||||
|
+#define ppl_delete_Coefficient (*cloog_pointers__.p_ppl_delete_Coefficient)
|
||||||
|
+#define ppl_delete_Constraint (*cloog_pointers__.p_ppl_delete_Constraint)
|
||||||
|
+#define ppl_delete_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_delete_Constraint_System_const_iterator)
|
||||||
|
+#define ppl_delete_Linear_Expression (*cloog_pointers__.p_ppl_delete_Linear_Expression)
|
||||||
|
+#define ppl_delete_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron)
|
||||||
|
+#define ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron_iterator)
|
||||||
|
+#define ppl_delete_Polyhedron (*cloog_pointers__.p_ppl_delete_Polyhedron)
|
||||||
|
+#define ppl_Linear_Expression_add_to_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_add_to_coefficient)
|
||||||
|
+#define ppl_Linear_Expression_add_to_inhomogeneous (*cloog_pointers__.p_ppl_Linear_Expression_add_to_inhomogeneous)
|
||||||
|
+#define ppl_Linear_Expression_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_coefficient)
|
||||||
|
+#define ppl_Linear_Expression_inhomogeneous_term (*cloog_pointers__.p_ppl_Linear_Expression_inhomogeneous_term)
|
||||||
|
+#define ppl_Linear_Expression_space_dimension (*cloog_pointers__.p_ppl_Linear_Expression_space_dimension)
|
||||||
|
+#define ppl_new_Coefficient (*cloog_pointers__.p_ppl_new_Coefficient)
|
||||||
|
+#define ppl_new_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_new_Coefficient_from_mpz_t)
|
||||||
|
+#define ppl_new_Constraint (*cloog_pointers__.p_ppl_new_Constraint)
|
||||||
|
+#define ppl_new_Constraint_System (*cloog_pointers__.p_ppl_new_Constraint_System)
|
||||||
|
+#define ppl_new_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_new_Constraint_System_const_iterator)
|
||||||
|
+#define ppl_new_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_C_Polyhedron)
|
||||||
|
+#define ppl_new_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_space_dimension)
|
||||||
|
+#define ppl_new_C_Polyhedron_recycle_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_recycle_Constraint_System)
|
||||||
|
+#define ppl_new_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression)
|
||||||
|
+#define ppl_new_Linear_Expression_from_Constraint (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Constraint)
|
||||||
|
+#define ppl_new_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Linear_Expression)
|
||||||
|
+#define ppl_new_Linear_Expression_with_dimension (*cloog_pointers__.p_ppl_new_Linear_Expression_with_dimension)
|
||||||
|
+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron)
|
||||||
|
+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron)
|
||||||
|
+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension)
|
||||||
|
+#define ppl_new_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_iterator)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_constraint)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_difference_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_difference_assign)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_intersection_assign)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_is_empty (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_is_empty)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_begin)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_end (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_end)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_increment)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_maximize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_maximize)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_minimize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_minimize)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_size (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_size)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_space_dimension)
|
||||||
|
+#define ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign)
|
||||||
|
+#define ppl_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Polyhedron_add_constraint)
|
||||||
|
+#define ppl_Polyhedron_add_constraints (*cloog_pointers__.p_ppl_Polyhedron_add_constraints)
|
||||||
|
+#define ppl_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Polyhedron_add_space_dimensions_and_embed)
|
||||||
|
+#define ppl_Polyhedron_get_constraints (*cloog_pointers__.p_ppl_Polyhedron_get_constraints)
|
||||||
|
+#define ppl_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_map_space_dimensions)
|
||||||
|
+#define ppl_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_remove_space_dimensions)
|
||||||
|
+#define ppl_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Polyhedron_space_dimension)
|
||||||
|
+#define ppl_subtract_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_subtract_Linear_Expression_from_Linear_Expression)
|
||||||
|
+#define pprint (*cloog_pointers__.p_pprint)
|
||||||
|
+#define stmt_block (*cloog_pointers__.p_stmt_block)
|
||||||
|
+#define stmt_for (*cloog_pointers__.p_stmt_for)
|
||||||
|
+#define stmt_guard (*cloog_pointers__.p_stmt_guard)
|
||||||
|
+#define stmt_root (*cloog_pointers__.p_stmt_root)
|
||||||
|
+#define stmt_user (*cloog_pointers__.p_stmt_user)
|
||||||
|
+
|
||||||
|
+#define cloog_finalize (*cloog_pointers__.p_ppl_finalize)
|
||||||
|
+
|
||||||
|
#endif /* GCC_GRAPHITE_H */
|
||||||
|
--- gcc/Makefile.in.jj 2010-06-30 21:23:29.000000000 +0200
|
||||||
|
+++ gcc/Makefile.in 2010-07-01 17:33:11.016479963 +0200
|
||||||
|
@@ -1011,7 +1011,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||||
|
# and the system's installed libraries.
|
||||||
|
LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) \
|
||||||
|
$(HOST_LIBS)
|
||||||
|
-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
|
+BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||||
|
$(ZLIB) $(LIBELFLIBS)
|
||||||
|
# Any system libraries needed just for GNAT.
|
||||||
|
SYSLIBS = @GNAT_LIBEXC@
|
||||||
|
@@ -2607,7 +2607,7 @@ graphite-poly.o: graphite-poly.c $(CONFI
|
||||||
|
$(TREE_DATA_REF_H) tree-pass.h domwalk.h graphite.h graphite-dependences.h \
|
||||||
|
pointer-set.h value-prof.h graphite-ppl.h sese.h output.h graphite-poly.h
|
||||||
|
graphite-ppl.o: graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||||
|
- $(GGC_H) graphite-ppl.h
|
||||||
|
+ $(GGC_H) graphite-ppl.h graphite.h
|
||||||
|
graphite-scop-detection.o: graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \
|
||||||
|
$(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TOPLEV_H) \
|
||||||
|
$(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) $(GIMPLE_H) \
|
||||||
|
@@ -3359,6 +3359,11 @@ $(out_object_file): $(out_file) $(CONFIG
|
||||||
|
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
|
||||||
|
$(out_file) $(OUTPUT_OPTION)
|
||||||
|
|
||||||
|
+graphite%.o : \
|
||||||
|
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||||
|
+graphite.o : \
|
||||||
|
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||||
|
+
|
||||||
|
# Build auxiliary files that support ecoff format.
|
||||||
|
mips-tfile: mips-tfile.o version.o $(LIBDEPS)
|
||||||
|
$(LINKER) $(LINKERFLAGS) $(LDFLAGS) -o $@ \
|
||||||
|
--- gcc/graphite-ppl.c.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
|
+++ gcc/graphite-ppl.c 2010-07-01 17:08:14.161335642 +0200
|
||||||
|
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.
|
||||||
|
#include "ppl_c.h"
|
||||||
|
#include "cloog/cloog.h"
|
||||||
|
#include "graphite-ppl.h"
|
||||||
|
+#include "graphite.h"
|
||||||
|
|
||||||
|
/* Translates row ROW of the CloogMatrix MATRIX to a PPL Constraint. */
|
||||||
|
|
||||||
|
--- gcc/graphite-clast-to-gimple.c.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
|
+++ gcc/graphite-clast-to-gimple.c 2010-07-01 16:50:15.812485671 +0200
|
||||||
|
@@ -613,11 +613,11 @@ gcc_type_for_cloog_iv (const char *cloog
|
||||||
|
STMT. */
|
||||||
|
|
||||||
|
static tree
|
||||||
|
-gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for)
|
||||||
|
+gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_fora)
|
||||||
|
{
|
||||||
|
- struct clast_stmt *stmt = (struct clast_stmt *) stmt_for;
|
||||||
|
+ struct clast_stmt *stmt = (struct clast_stmt *) stmt_fora;
|
||||||
|
struct clast_user_stmt *body = clast_get_body_of_loop (stmt);
|
||||||
|
- const char *cloog_iv = stmt_for->iterator;
|
||||||
|
+ const char *cloog_iv = stmt_fora->iterator;
|
||||||
|
CloogStatement *cs = body->statement;
|
||||||
|
poly_bb_p pbb = (poly_bb_p) cloog_statement_usr (cs);
|
||||||
|
|
@ -56,11 +56,44 @@
|
|||||||
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
|
.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
|
||||||
--- gcc/ada/make.adb 2008-11-07 23:00:32.000000000 +0100
|
--- gcc/ada/make.adb 2008-11-07 23:00:32.000000000 +0100
|
||||||
+++ gcc/ada/make.adb 2009-01-16 17:55:02.000000000 +0100
|
+++ gcc/ada/make.adb 2009-01-16 17:55:02.000000000 +0100
|
||||||
@@ -8039,6 +8039,7 @@ package body Make is
|
@@ -8007,6 +8007,7 @@ package body Make is
|
||||||
or else Argv (2 .. Argv'Last) = "pg"
|
or else Argv (2 .. Argv'Last) = "pg"
|
||||||
or else (Argv (2) = 'm' and then Argv'Last > 2)
|
or else (Argv (2) = 'm' and then Argv'Last > 2)
|
||||||
or else (Argv (2) = 'f' and then Argv'Last > 2)
|
or else (Argv (2) = 'f' and then Argv'Last > 2)
|
||||||
+ or else (Argv'Last >= 8 and then Argv (2 .. 8) = "-param=")
|
+ or else (Argv'Last >= 8 and then Argv (2 .. 8) = "-param=")
|
||||||
then
|
then
|
||||||
Add_Switch (Argv, Compiler, And_Save => And_Save);
|
Add_Switch (Argv, Compiler, And_Save => And_Save);
|
||||||
Add_Switch (Argv, Linker, And_Save => And_Save);
|
Add_Switch (Argv, Linker, And_Save => And_Save);
|
||||||
|
--- gcc/ada/sem_util.adb (revision 161677)
|
||||||
|
+++ gcc/ada/sem_util.adb (working copy)
|
||||||
|
@@ -2246,7 +2246,11 @@
|
||||||
|
end if;
|
||||||
|
|
||||||
|
elsif Is_Entity_Name (A2) then
|
||||||
|
+
|
||||||
|
+ -- Triggered by -Wall
|
||||||
|
+ pragma Warnings (Off);
|
||||||
|
return Denotes_Same_Prefix (A2, A1);
|
||||||
|
+ pragma Warnings (On);
|
||||||
|
|
||||||
|
elsif Nkind_In (A1, N_Selected_Component, N_Indexed_Component, N_Slice)
|
||||||
|
and then
|
||||||
|
@@ -4694,7 +4698,7 @@
|
||||||
|
Exp : Node_Id;
|
||||||
|
Assn : Node_Id;
|
||||||
|
Choice : Node_Id;
|
||||||
|
- Comp_Type : Entity_Id;
|
||||||
|
+ Comp_Type : Entity_Id := Empty;
|
||||||
|
Is_Array_Aggr : Boolean;
|
||||||
|
|
||||||
|
begin
|
||||||
|
--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
|
||||||
|
+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
|
||||||
|
@@ -516,6 +516,7 @@ multi-do:
|
||||||
|
ADAFLAGS="$(ADAFLAGS) $${flags}" \
|
||||||
|
prefix="$(prefix)" \
|
||||||
|
exec_prefix="$(exec_prefix)" \
|
||||||
|
+ mandir="$(mandir)" \
|
||||||
|
GCJFLAGS="$(GCJFLAGS) $${flags}" \
|
||||||
|
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||||
|
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
|
47
gcc45-libstdc++-docs.patch
Normal file
47
gcc45-libstdc++-docs.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
--- libstdc++-v3/doc/html/index.html.jj 2010-06-30 09:48:38.000000000 +0200
|
||||||
|
+++ libstdc++-v3/doc/html/index.html 2010-07-01 16:22:25.066491878 +0200
|
||||||
|
@@ -12,7 +12,8 @@
|
||||||
|
<div>
|
||||||
|
<h1>The GNU C++ Library Documentation</h1>
|
||||||
|
|
||||||
|
-<p>Copyright 2008, 2009 FSF</p>
|
||||||
|
+<p>Release 4.5.0</p>
|
||||||
|
+<p>Copyright 2008, 2009, 2010 FSF</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Permission is granted to copy, distribute and/or modify this
|
||||||
|
--- libstdc++-v3/doc/html/api.html.jj 2010-06-30 09:48:38.000000000 +0200
|
||||||
|
+++ libstdc++-v3/doc/html/api.html 2010-07-01 16:24:39.158429410 +0200
|
||||||
|
@@ -17,27 +17,12 @@ useful for examining the signatures of p
|
||||||
|
the library classes, finding out what is in a particular include
|
||||||
|
file, looking at inheritance diagrams, etc.
|
||||||
|
</p><p>
|
||||||
|
-The source-level documentation for the most recent releases can be
|
||||||
|
-viewed online:
|
||||||
|
-</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
|
||||||
|
+The source-level documentation can be viewed here:
|
||||||
|
+</p>
|
||||||
|
+<div class="itemizedlist"><ul type="disc">
|
||||||
|
+ <li><p>
|
||||||
|
+ <a class="ulink" href="api/index.html" target="_top">for the 4.5 release
|
||||||
|
</a>
|
||||||
|
- </p></li><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html" target="_top">for the 4.1 release
|
||||||
|
- </a>
|
||||||
|
- </p></li><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html" target="_top">for the 4.2 release
|
||||||
|
- </a>
|
||||||
|
- </p></li><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html" target="_top">for the 4.3 release
|
||||||
|
- </a>
|
||||||
|
- </p></li><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html" target="_top">for the 4.4 release
|
||||||
|
- </a>
|
||||||
|
- </p></li><li class="listitem"><p>
|
||||||
|
- <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html" target="_top">"the latest collection"
|
||||||
|
- </a>
|
||||||
|
- (For the main development tree; see the date on the first page.)
|
||||||
|
</p></li></ul></div><p>
|
||||||
|
This generated HTML collection, as above, is also available for download in the libstdc++ snapshots directory at
|
||||||
|
<code class="literal"><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></code>.
|
@ -11,18 +11,11 @@
|
|||||||
(gen_compile_unit_die): Use lang_hooks.source_language () to
|
(gen_compile_unit_die): Use lang_hooks.source_language () to
|
||||||
determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
|
determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
|
||||||
|
|
||||||
--- gcc/langhooks.h.jj 2009-03-02 09:45:47.000000000 +0100
|
--- gcc/langhooks.h.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
+++ gcc/langhooks.h 2009-03-18 12:53:24.000000000 +0100
|
+++ gcc/langhooks.h 2010-07-01 16:15:22.432616871 +0200
|
||||||
@@ -1,5 +1,5 @@
|
@@ -454,6 +454,10 @@ struct lang_hooks
|
||||||
/* The lang_hooks data structure.
|
is enabled. */
|
||||||
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
bool eh_use_cxa_end_cleanup;
|
||||||
+ Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This file is part of GCC.
|
|
||||||
@@ -414,6 +414,10 @@ struct lang_hooks
|
|
||||||
if in the process TREE_CONSTANT or TREE_SIDE_EFFECTS need updating. */
|
|
||||||
tree (*expr_to_decl) (tree expr, bool *tc, bool *se);
|
|
||||||
|
|
||||||
+ /* Return year of the source language standard version if the FE supports
|
+ /* Return year of the source language standard version if the FE supports
|
||||||
+ multiple versions of the standard. */
|
+ multiple versions of the standard. */
|
||||||
@ -31,8 +24,8 @@
|
|||||||
/* Whenever you add entries here, make sure you adjust langhooks-def.h
|
/* Whenever you add entries here, make sure you adjust langhooks-def.h
|
||||||
and langhooks.c accordingly. */
|
and langhooks.c accordingly. */
|
||||||
};
|
};
|
||||||
--- gcc/langhooks-def.h.jj 2009-03-02 09:45:47.000000000 +0100
|
--- gcc/langhooks-def.h.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
+++ gcc/langhooks-def.h 2009-03-18 12:53:45.000000000 +0100
|
+++ gcc/langhooks-def.h 2010-07-01 16:16:07.427460761 +0200
|
||||||
@@ -1,5 +1,5 @@
|
@@ -1,5 +1,5 @@
|
||||||
/* Default macros to initialize the lang_hooks data structure.
|
/* Default macros to initialize the lang_hooks data structure.
|
||||||
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||||
@ -40,24 +33,24 @@
|
|||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Alexandre Oliva <aoliva@redhat.com>
|
Contributed by Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
@@ -113,6 +113,7 @@ extern void lhd_omp_firstprivatize_type_
|
@@ -111,6 +111,7 @@ extern void lhd_omp_firstprivatize_type_
|
||||||
#define LANG_HOOKS_EXPR_TO_DECL lhd_expr_to_decl
|
#define LANG_HOOKS_EH_PERSONALITY lhd_gcc_personality
|
||||||
#define LANG_HOOKS_TO_TARGET_CHARSET lhd_to_target_charset
|
#define LANG_HOOKS_EH_RUNTIME_TYPE lhd_pass_through_t
|
||||||
#define LANG_HOOKS_INIT_TS lhd_do_nothing
|
#define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false
|
||||||
+#define LANG_HOOKS_SOURCE_LANGUAGE NULL
|
+#define LANG_HOOKS_SOURCE_LANGUAGE NULL
|
||||||
|
|
||||||
/* Attribute hooks. */
|
/* Attribute hooks. */
|
||||||
#define LANG_HOOKS_ATTRIBUTE_TABLE NULL
|
#define LANG_HOOKS_ATTRIBUTE_TABLE NULL
|
||||||
@@ -270,6 +271,7 @@ extern tree lhd_make_node (enum tree_cod
|
@@ -301,6 +302,7 @@ extern void lhd_end_section (void);
|
||||||
LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE, \
|
LANG_HOOKS_EH_PERSONALITY, \
|
||||||
LANG_HOOKS_INIT_TS, \
|
LANG_HOOKS_EH_RUNTIME_TYPE, \
|
||||||
LANG_HOOKS_EXPR_TO_DECL, \
|
LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
|
||||||
+ LANG_HOOKS_SOURCE_LANGUAGE, \
|
+ LANG_HOOKS_SOURCE_LANGUAGE, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* GCC_LANG_HOOKS_DEF_H */
|
#endif /* GCC_LANG_HOOKS_DEF_H */
|
||||||
--- gcc/c-lang.c.jj 2009-02-20 15:06:14.000000000 +0100
|
--- gcc/c-lang.c.jj 2010-06-30 09:48:30.000000000 +0200
|
||||||
+++ gcc/c-lang.c 2009-03-18 13:33:41.000000000 +0100
|
+++ gcc/c-lang.c 2010-07-01 16:14:25.396197804 +0200
|
||||||
@@ -1,6 +1,6 @@
|
@@ -1,6 +1,6 @@
|
||||||
/* Language-specific hook definitions for C front end.
|
/* Language-specific hook definitions for C front end.
|
||||||
Copyright (C) 1991, 1995, 1997, 1998,
|
Copyright (C) 1991, 1995, 1997, 1998,
|
||||||
@ -87,10 +80,10 @@
|
|||||||
+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
|
+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
|
||||||
|
|
||||||
/* Each front end provides its own lang hook initializer. */
|
/* Each front end provides its own lang hook initializer. */
|
||||||
const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
|
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
|
||||||
--- gcc/dwarf2out.c.jj 2009-03-17 13:06:29.000000000 +0100
|
--- gcc/dwarf2out.c.jj 2010-07-01 14:07:41.000000000 +0200
|
||||||
+++ gcc/dwarf2out.c 2009-03-18 12:55:36.000000000 +0100
|
+++ gcc/dwarf2out.c 2010-07-01 16:13:24.597354717 +0200
|
||||||
@@ -14286,9 +14286,18 @@ add_bit_size_attribute (dw_die_ref die,
|
@@ -17150,9 +17150,18 @@ add_bit_size_attribute (dw_die_ref die,
|
||||||
static inline void
|
static inline void
|
||||||
add_prototyped_attribute (dw_die_ref die, tree func_type)
|
add_prototyped_attribute (dw_die_ref die, tree func_type)
|
||||||
{
|
{
|
||||||
@ -112,7 +105,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add an 'abstract_origin' attribute below a given DIE. The DIE is found
|
/* Add an 'abstract_origin' attribute below a given DIE. The DIE is found
|
||||||
@@ -16290,6 +16299,10 @@ gen_compile_unit_die (const char *filena
|
@@ -19246,6 +19255,10 @@ gen_compile_unit_die (const char *filena
|
||||||
language = DW_LANG_ObjC;
|
language = DW_LANG_ObjC;
|
||||||
else if (strcmp (language_string, "GNU Objective-C++") == 0)
|
else if (strcmp (language_string, "GNU Objective-C++") == 0)
|
||||||
language = DW_LANG_ObjC_plus_plus;
|
language = DW_LANG_ObjC_plus_plus;
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
--- gcc/cfgexpand.c.jj 2010-06-17 17:01:11.964198458 +0200
|
--- gcc/cfgexpand.c.jj 2010-06-17 17:01:11.964198458 +0200
|
||||||
+++ gcc/cfgexpand.c 2010-06-17 18:25:18.940335757 +0200
|
+++ gcc/cfgexpand.c 2010-06-17 18:25:18.940335757 +0200
|
||||||
@@ -839,7 +839,7 @@ static void
|
@@ -705,7 +705,7 @@ static void
|
||||||
expand_one_stack_var_at (tree decl, HOST_WIDE_INT offset)
|
expand_one_stack_var_at (tree decl, HOST_WIDE_INT offset)
|
||||||
{
|
{
|
||||||
/* Alignment is unsigned. */
|
/* Alignment is unsigned. */
|
||||||
@ -18,22 +18,22 @@
|
|||||||
rtx x;
|
rtx x;
|
||||||
|
|
||||||
/* If this fails, we've overflowed the stack frame. Error nicely? */
|
/* If this fails, we've overflowed the stack frame. Error nicely? */
|
||||||
@@ -852,10 +852,10 @@ expand_one_stack_var_at (tree decl, HOST
|
@@ -722,10 +722,10 @@ expand_one_stack_var_at (tree decl, HOST
|
||||||
offset -= frame_phase;
|
offset -= frame_phase;
|
||||||
align = offset & -offset;
|
align = offset & -offset;
|
||||||
align *= BITS_PER_UNIT;
|
align *= BITS_PER_UNIT;
|
||||||
- if (align == 0)
|
- if (align == 0)
|
||||||
- align = STACK_BOUNDARY;
|
- align = STACK_BOUNDARY;
|
||||||
- else if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
|
- else if (align > MAX_SUPPORTED_STACK_ALIGNMENT)
|
||||||
- align = MAX_SUPPORTED_STACK_ALIGNMENT;
|
- align = MAX_SUPPORTED_STACK_ALIGNMENT;
|
||||||
+ max_align = MAX (crtl->max_used_stack_slot_alignment,
|
+ max_align = MAX (crtl->max_used_stack_slot_alignment,
|
||||||
+ PREFERRED_STACK_BOUNDARY);
|
+ PREFERRED_STACK_BOUNDARY);
|
||||||
+ if (align == 0 || align > max_align)
|
+ if (align == 0 || align > max_align)
|
||||||
+ align = max_align;
|
+ align = max_align;
|
||||||
DECL_ALIGN (decl) = align;
|
|
||||||
DECL_USER_ALIGN (decl) = 0;
|
|
||||||
|
|
||||||
@@ -1054,6 +1054,13 @@ expand_one_var (tree var, bool toplevel,
|
DECL_ALIGN (decl) = align;
|
||||||
|
DECL_USER_ALIGN (decl) = 0;
|
||||||
|
@@ -930,6 +930,13 @@ expand_one_var (tree var, bool toplevel,
|
||||||
align = MINIMUM_ALIGNMENT (TREE_TYPE (var),
|
align = MINIMUM_ALIGNMENT (TREE_TYPE (var),
|
||||||
TYPE_MODE (TREE_TYPE (var)),
|
TYPE_MODE (TREE_TYPE (var)),
|
||||||
TYPE_ALIGN (TREE_TYPE (var)));
|
TYPE_ALIGN (TREE_TYPE (var)));
|
27
gcc45-rh330771.patch
Normal file
27
gcc45-rh330771.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
2007-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.am (libgcj_tools_la_LIBADD): Add.
|
||||||
|
* Makefile.in: Regenerated.
|
||||||
|
|
||||||
|
--- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200
|
||||||
|
+++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200
|
||||||
|
@@ -510,7 +510,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS
|
||||||
|
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
|
||||||
|
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||||
|
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
|
||||||
|
-libgcj_tools_la_LIBADD = libgcj.la -lm
|
||||||
|
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la -lm
|
||||||
|
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
|
||||||
|
if BUILD_SUBLIBS
|
||||||
|
libgcj_tools_la_DEPENDENCIES += libgcj-noncore.la
|
||||||
|
--- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200
|
||||||
|
+++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200
|
||||||
|
@@ -1190,7 +1190,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
|
||||||
|
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
|
||||||
|
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
|
||||||
|
|
||||||
|
-libgcj_tools_la_LIBADD = libgcj.la -lm
|
||||||
|
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la -lm
|
||||||
|
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_22)
|
||||||
|
libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS)
|
||||||
|
libjvm_la_SOURCES = jni-libjvm.cc
|
@ -1,21 +1,21 @@
|
|||||||
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
|
||||||
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
|
||||||
@@ -2175,7 +2175,7 @@ sparc-*-elf*)
|
@@ -2393,7 +2393,7 @@ sparc-*-elf*)
|
||||||
tmake_file="sparc/t-elf sparc/t-crtfm"
|
tmake_file="sparc/t-elf sparc/t-crtfm"
|
||||||
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
|
extra_parts="crti.o crtn.o crtbegin.o crtend.o"
|
||||||
;;
|
;;
|
||||||
-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
|
-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||||
+sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
|
+sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
|
||||||
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/gas.h linux.h"
|
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h"
|
||||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
tmake_file="${tmake_file} sparc/t-linux"
|
tmake_file="${tmake_file} sparc/t-linux"
|
||||||
@@ -2287,7 +2287,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
|
@@ -2481,7 +2481,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
|
||||||
*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
|
*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
|
-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||||
+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
|
+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
|
||||||
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/gas.h linux.h sparc/linux64.h"
|
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h glibc-stdint.h sparc/linux64.h"
|
||||||
extra_options="${extra_options} sparc/long-double-switch.opt"
|
extra_options="${extra_options} sparc/long-double-switch.opt"
|
||||||
tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
|
tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
|
||||||
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
|
@ -22,3 +22,4 @@ gcc-4_4_4-7_fc14:HEAD:gcc-4.4.4-7.fc14.src.rpm:1275991256
|
|||||||
gcc-4_4_4-8_fc14:HEAD:gcc-4.4.4-8.fc14.src.rpm:1276244517
|
gcc-4_4_4-8_fc14:HEAD:gcc-4.4.4-8.fc14.src.rpm:1276244517
|
||||||
gcc-4_4_4-9_fc14:HEAD:gcc-4.4.4-9.fc14.src.rpm:1277410688
|
gcc-4_4_4-9_fc14:HEAD:gcc-4.4.4-9.fc14.src.rpm:1277410688
|
||||||
gcc-4_4_4-10_fc14:HEAD:gcc-4.4.4-10.fc14.src.rpm:1277882958
|
gcc-4_4_4-10_fc14:HEAD:gcc-4.4.4-10.fc14.src.rpm:1277882958
|
||||||
|
gcc-4_5_0-1_fc14:HEAD:gcc-4.5.0-1.fc14.src.rpm:1278524061
|
||||||
|
291
protoize.1
291
protoize.1
@ -1,291 +0,0 @@
|
|||||||
.\" Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
|
|
||||||
.\" See section COPYING for conditions for redistribution
|
|
||||||
.\"
|
|
||||||
.TH protoize 1 "8 December 2006" "GCC" "GNU"
|
|
||||||
.SH NAME
|
|
||||||
protoize, unprotoize \- automatically add or remove function prototypes
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.HP 7
|
|
||||||
\fBprotoize\fR [\-CfgklNnqv] [\-B \fIDIRECTORY\fR] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
|
|
||||||
.HP 7
|
|
||||||
\fBunprotoize\fR [\-fkNnqv] [\-c \fICOMPILATION-OPTIONS\fR] [\-d \fIDIRECTORY\fR] [\-i \fISTRING\fR] [\-p \fIPROGRAM\fR] [\-x \fIFILE\fR] [\fIFILE\fR...]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
.PP
|
|
||||||
\fBprotoize\fR is an optional part of GCC.
|
|
||||||
You can use it to add prototypes to a program,
|
|
||||||
thus converting the program to ANSI C in one respect.
|
|
||||||
The companion program
|
|
||||||
\fBunprotoize\fR does the reverse: it removes argument types from any prototypes that are found.
|
|
||||||
.PP
|
|
||||||
When you run these programs, you must specify a set of source files
|
|
||||||
as command line arguments.
|
|
||||||
The conversion programs start out by compiling these files
|
|
||||||
to see what functions they define.
|
|
||||||
The information gathered about a file
|
|
||||||
\fIFOO\fR is saved in a file named \fIFOO.X\fR.
|
|
||||||
.PP
|
|
||||||
After scanning comes the actual conversion.
|
|
||||||
The specified files are all eligible to be converted;
|
|
||||||
any files they include (whether sources or just headers) are eligible as well.
|
|
||||||
.PP
|
|
||||||
But not all the eligible files are converted.
|
|
||||||
By default,
|
|
||||||
\fBprotoize\fR and \fBunprotoize\fR
|
|
||||||
convert only source and header files in the current directory.
|
|
||||||
You can specify additional directories whose files
|
|
||||||
should be converted with the
|
|
||||||
\fB\-d\fR \fIDIRECTORY\fR option.
|
|
||||||
You can also specify particular files to exclude with the
|
|
||||||
\fB\-x\fR \fIFILE\fR option.
|
|
||||||
A file is converted if it is eligible, its directory name matches one of the
|
|
||||||
specified directory names, and its name within the directory has not
|
|
||||||
been excluded.
|
|
||||||
.PP
|
|
||||||
Basic conversion with
|
|
||||||
\fBprotoize\fR consists of rewriting most function definitions and function declarations
|
|
||||||
to specify the types of the arguments.
|
|
||||||
The only ones not rewritten are those for varargs functions.
|
|
||||||
.PP
|
|
||||||
\fBprotoize\fR optionally inserts prototype declarations at the beginning of the source file,
|
|
||||||
to make them available for any calls that precede the function's definition.
|
|
||||||
Or it can insert prototype declarations with block scope
|
|
||||||
in the blocks where undeclared functions are called.
|
|
||||||
.PP
|
|
||||||
Basic conversion with
|
|
||||||
\fBunprotoize\fR
|
|
||||||
consists of rewriting most function declarations to remove any argument types,
|
|
||||||
and rewriting function definitions to the old-style pre-ANSI form.
|
|
||||||
.PP
|
|
||||||
Both conversion programs print a warning for any function
|
|
||||||
declaration or definition that they can't convert.
|
|
||||||
You can suppress these warnings with the
|
|
||||||
\fB\-q\fR option.
|
|
||||||
.PP
|
|
||||||
The output from
|
|
||||||
\fBprotoize\fR or \fBunprotoize\fR
|
|
||||||
replaces the original source file.
|
|
||||||
The original file is renamed to a name ending with
|
|
||||||
\fI.save\fR.
|
|
||||||
If the \fI.save\fR file already exists, then the source file is simply discarded.
|
|
||||||
.PP
|
|
||||||
\fBprotoize\fR and \fBunprotoize\fR both depend on
|
|
||||||
\fBgcc\fR\|(1) to scan the program and collect information about the functions it uses.
|
|
||||||
.PP
|
|
||||||
The options are as follows:
|
|
||||||
.TP
|
|
||||||
\fB\-B\fR \fIDIRECTORY\fR
|
|
||||||
Look for the file
|
|
||||||
\fISYSCALLS.c.X\fR in \fIdirectory\fR,
|
|
||||||
instead of the usual directory (normally \fI/usr/local/lib\fR).
|
|
||||||
This file contains prototype information about standard system functions.
|
|
||||||
This option applies only to \fBprotoize\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-C\fR
|
|
||||||
Rename files to end in
|
|
||||||
\fI.C\fR instead of \fI.c\fR.
|
|
||||||
This is convenient if you are converting a C program to C++.
|
|
||||||
This option applies only to
|
|
||||||
\fBprotoize\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-c\fR \fICOMPILATION-OPTIONS\fR
|
|
||||||
Use \fICOMPILATION-OPTIONS\fR as the options when running \fBgcc\fR\|(1) to produce the
|
|
||||||
\fI.X\fR files.
|
|
||||||
The special option \fB\-aux-info\fR is always passed in addition, to tell gcc to write a
|
|
||||||
\fI.X\fR file.
|
|
||||||
Note that the compilation options must be given as a single argument to
|
|
||||||
\fBprotoize\fR or \fBunprotoize\fR.
|
|
||||||
If you want to specify several gcc options, you must quote the entire set of
|
|
||||||
compilation options to make them a single word in the shell.
|
|
||||||
There are certain gcc arguments that you cannot use, because they
|
|
||||||
would produce the wrong kind of output.
|
|
||||||
These include
|
|
||||||
\fB\-g\fR, \fB\-O\fR, \fB\-c\fR, \fB\-S\fR,\fB\-o\fR.
|
|
||||||
If you include these in the \fICOMPILATION-OPTIONS\fR, they are ignored.
|
|
||||||
.TP
|
|
||||||
\fB\-d\fR \fIDIRECTORY\fR
|
|
||||||
Specify additional directories whose files should be converted.
|
|
||||||
.TP
|
|
||||||
\fB\-g\fR
|
|
||||||
Add explicit global declarations.
|
|
||||||
This means inserting explicit declarations at the beginning of each
|
|
||||||
source file for each function that is called in the file and was not declared.
|
|
||||||
These declarations precede the first function definition that contains a
|
|
||||||
call to an undeclared function.
|
|
||||||
This option applies only to
|
|
||||||
.\fBprotoize\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-i\fR \fISTRING\fR
|
|
||||||
Indent old-style parameter declarations with the string
|
|
||||||
\fISTRING\fR.
|
|
||||||
This option applies only to
|
|
||||||
\fBprotoize\fR.
|
|
||||||
\fBunprotoize\fR converts prototyped function definitions to old-style
|
|
||||||
function definitions, where the arguments are declared between the
|
|
||||||
argument list and the initial
|
|
||||||
\fB{\fR.
|
|
||||||
By default,
|
|
||||||
\fBunprotoize\fR uses five spaces as the indentation.
|
|
||||||
If you want to indent with just one space instead, use
|
|
||||||
\fB\-i " "\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-k\fR
|
|
||||||
Keep the
|
|
||||||
\fI.X\fR files.
|
|
||||||
Normally, they are deleted after conversion is finished.
|
|
||||||
.TP
|
|
||||||
\fB\-l\fR
|
|
||||||
Add explicit local declarations.
|
|
||||||
\fBprotoize\fR with
|
|
||||||
\fB\-l\fR inserts a prototype declaration for each function in each block which calls
|
|
||||||
the function without any declaration.
|
|
||||||
This option applies only to
|
|
||||||
\fBprotoize\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-N\fR
|
|
||||||
Make no \fI.save\fR files.
|
|
||||||
The original files are simply deleted.
|
|
||||||
Use this option with caution.
|
|
||||||
.TP
|
|
||||||
\fB\-n\fR
|
|
||||||
Make no real changes.
|
|
||||||
This mode just prints information about the conversions
|
|
||||||
that would have been done without
|
|
||||||
\fB\-n\fR.
|
|
||||||
.TP
|
|
||||||
\fB\-p\fR \fIPROGRAM\fR
|
|
||||||
Use the program
|
|
||||||
\fBPROGRAM\fR as the compiler.
|
|
||||||
Normally, the name
|
|
||||||
\fBgcc\fR is used.
|
|
||||||
.TP
|
|
||||||
\fB\-q\fR
|
|
||||||
Work quietly.
|
|
||||||
Most warnings are suppressed.
|
|
||||||
.TP
|
|
||||||
\fB\-v\fR
|
|
||||||
Print the version number, just like
|
|
||||||
\fB\-v\fR for gcc.
|
|
||||||
.TP
|
|
||||||
\fB\-x\fR \fBFILE\fR
|
|
||||||
List of files to exclude from the conversion process.
|
|
||||||
.PP
|
|
||||||
If you need special compiler options to compile one of your program's
|
|
||||||
source files, then you should generate that file's
|
|
||||||
\fI.X\fR file specially, by running gcc on that source file with
|
|
||||||
the appropriate options and the option
|
|
||||||
\fB\-aux-info\fR.
|
|
||||||
Then run
|
|
||||||
\fBprotoize\fR on the entire set of files.
|
|
||||||
\fBprotoize\fR will use the existing
|
|
||||||
\fI.X\fR file because it is newer than the source file.
|
|
||||||
For example:
|
|
||||||
.PP
|
|
||||||
.DL $ gcc -Dfoo=bar file1.c -aux-info
|
|
||||||
.DL $ protoize *.c
|
|
||||||
.PP
|
|
||||||
You need to include the special files along with the rest in the
|
|
||||||
\fBprotoize\fR command, even though their
|
|
||||||
\fI.X\fR files already exist, because otherwise they won't get converted.
|
|
||||||
.PP
|
|
||||||
.SH SEE ALSO
|
|
||||||
\fBgcc\fR\|(1), and the Info entry for \fBgcc\fR, particularly
|
|
||||||
\fBRunning protoize\fR section.
|
|
||||||
.SH HISTORY
|
|
||||||
Ron Guilmette implemented the
|
|
||||||
\fBprotoize\fR and \fBunprotoize\fR tools.
|
|
||||||
.SH AUTHORS
|
|
||||||
See the GCC manual for the contributors to GCC.
|
|
||||||
.SH CAVEATS
|
|
||||||
The conversion programs \fBprotoize\fR and \fBunprotoize\fR
|
|
||||||
can sometimes change a source file in a way that won't work
|
|
||||||
unless you rearrange it.
|
|
||||||
.PP
|
|
||||||
\fBprotoize\fR can insert references to a type name or type tag before
|
|
||||||
the definition, or in a file where they are not defined.
|
|
||||||
.PP
|
|
||||||
If this happens, compiler error messages should indicate where the
|
|
||||||
new references are, so fixing the file by hand is straightforward.
|
|
||||||
.PP
|
|
||||||
There are some C constructs which \fBprotoize\fR
|
|
||||||
cannot figure out.
|
|
||||||
For example, it can't determine argument types for declaring a
|
|
||||||
pointer-to-function variable; this must be done by hand. \fBprotoize\fR
|
|
||||||
inserts a comment containing \fB???\fR each time it finds such a variable;
|
|
||||||
all such variables can be found by searching for this string.
|
|
||||||
ANSI C does not require declaring the argument types of
|
|
||||||
pointer-to-function types.
|
|
||||||
.PP
|
|
||||||
Using \fBunprotoize\fR can easily introduce bugs.
|
|
||||||
If the program relied on prototypes to bring about conversion of arguments,
|
|
||||||
these conversions will not take place in the program without prototypes.
|
|
||||||
One case in which you can be sure \fBunprotoize\fR
|
|
||||||
is safe is when you are removing prototypes that were made with
|
|
||||||
\fBprotoize\fR; if the program worked before without any prototypes,
|
|
||||||
it will work again without them.
|
|
||||||
.PP
|
|
||||||
You can find all the places where this problem might occur by
|
|
||||||
compiling the program with the \fB\-Wconversion\fR option.
|
|
||||||
It prints a warning whenever an argument is converted.
|
|
||||||
.PP
|
|
||||||
Both conversion programs can be confused if there are macro calls
|
|
||||||
in and around the text to be converted.
|
|
||||||
In other words, the standard syntax for a declaration or definition
|
|
||||||
must not result from expanding a macro.
|
|
||||||
This problem is inherent in the design of C and cannot be fixed.
|
|
||||||
If only a few functions have confusing macro calls,
|
|
||||||
you can easily convert them manually.
|
|
||||||
.PP
|
|
||||||
\fBprotoize\fR cannot get the argument types for a function whose definition was not
|
|
||||||
actually compiled due to preprocessing conditionals.
|
|
||||||
When this happens, \fBprotoize\fR changes nothing in regard to such a function.
|
|
||||||
\fBprotoize\fR tries to detect such instances and warn about them.
|
|
||||||
.PP
|
|
||||||
You can generally work around this problem by using
|
|
||||||
\fBprotoize\fR step by step, each time specifying a different set of
|
|
||||||
\fB\-D\fR options for compilation, until all of the functions have been converted.
|
|
||||||
There is no automatic way to verify that you have got them all, however.
|
|
||||||
.PP
|
|
||||||
Confusion may result if there is an occasion to convert a function
|
|
||||||
declaration or definition in a region of source code where there
|
|
||||||
is more than one formal parameter list present.
|
|
||||||
Thus, attempts to convert code containing multiple (conditionally compiled)
|
|
||||||
versions of a single function header (in the same vicinity)
|
|
||||||
may not produce the desired (or expected) results.
|
|
||||||
.PP
|
|
||||||
If you plan on converting source files which contain such code,
|
|
||||||
it is recommended that you first make sure that each conditionally
|
|
||||||
compiled region of source code which contains an alternative
|
|
||||||
function header also contains at least one additional follower
|
|
||||||
token (past the final right parenthesis of the function header).
|
|
||||||
This should circumvent the problem.
|
|
||||||
.PP
|
|
||||||
\fBunprotoize\fR can become confused when trying to convert a function
|
|
||||||
definition or declaration which contains a declaration for a
|
|
||||||
pointer-to-function formal argument which has the same name as the
|
|
||||||
function being defined or declared.
|
|
||||||
We recommand you avoid such choices of formal parameter names.
|
|
||||||
.PP
|
|
||||||
It might be necessary to correct some of the indentation by hand and
|
|
||||||
break long lines.
|
|
||||||
(The conversion programs don't write lines longer than eighty characters
|
|
||||||
in any case.)
|
|
||||||
.SH BUGS
|
|
||||||
For instructions on reporting bugs, see the GCC manual.
|
|
||||||
.SH COPYING
|
|
||||||
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
|
||||||
2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
.PP
|
|
||||||
Permission is granted to make and distribute verbatim copies of
|
|
||||||
this manual provided the copyright notice and this permission notice
|
|
||||||
are preserved on all copies.
|
|
||||||
.PP
|
|
||||||
Permission is granted to copy and distribute modified versions of this
|
|
||||||
manual under the conditions for verbatim copying, provided that the
|
|
||||||
entire resulting derived work is distributed under the terms of a
|
|
||||||
permission notice identical to this one.
|
|
||||||
.PP
|
|
||||||
Permission is granted to copy and distribute translations of this
|
|
||||||
manual into another language, under the above conditions for modified
|
|
||||||
versions, except that this permission notice may be included in
|
|
||||||
translations approved by the Free Software Foundation instead of in
|
|
||||||
the original English.
|
|
Loading…
Reference in New Issue
Block a user