Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
04c58a10d0 | ||
|
d615b0818a | ||
|
3f571a51c2 | ||
|
5d98d7edaf | ||
|
0ed39024de | ||
|
4d7c159642 | ||
|
5112141b99 | ||
|
5f74d245e0 | ||
|
3828d4db97 | ||
|
e308cb012d | ||
|
462a694956 | ||
|
3442905dd8 | ||
|
76b93c38a2 | ||
|
a18c3ea684 | ||
|
7eb4bda32b | ||
|
abdbcec5b0 | ||
|
4a75f3b630 | ||
|
2e32ee0420 | ||
|
8e94c30a0c | ||
|
d3daf567b2 | ||
|
c7ea8b534d | ||
|
3ac313c7c8 | ||
|
04b13b88d4 | ||
|
5f4cc7d370 | ||
|
60625efada | ||
|
6df01761ec | ||
|
f6f9558cad | ||
|
1ba2e86ef4 | ||
|
44c3be6bae | ||
|
f3a89dbfed | ||
|
420e395efa |
@ -1,2 +0,0 @@
|
|||||||
fastjar-0.97.tar.gz
|
|
||||||
gcc-4.4.3-20100211.tar.bz2
|
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fastjar-0.97.tar.gz
|
||||||
|
gcc-4.4.5-20101113.tar.bz2
|
21
Makefile
21
Makefile
@ -1,21 +0,0 @@
|
|||||||
# Makefile for source rpm: gcc
|
|
||||||
# $Id: Makefile,v 1.2 2007/10/15 18:46:35 notting Exp $
|
|
||||||
NAME := gcc
|
|
||||||
SPECFILE = $(firstword $(wildcard *.spec))
|
|
||||||
|
|
||||||
define find-makefile-common
|
|
||||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
|
||||||
|
|
||||||
ifeq ($(MAKEFILE_COMMON),)
|
|
||||||
# attempt a checkout
|
|
||||||
define checkout-makefile-common
|
|
||||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
|
||||||
endef
|
|
||||||
|
|
||||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
|
||||||
endif
|
|
||||||
|
|
||||||
include $(MAKEFILE_COMMON)
|
|
14
fastjar-0.97-filename0.patch
Normal file
14
fastjar-0.97-filename0.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
2010-03-01 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
* jartool.c (read_entries): Properly zero-terminate filename.
|
||||||
|
|
||||||
|
--- fastjar-0.97/jartool.c 6 Sep 2009 22:16:00 -0000 1.59
|
||||||
|
+++ fastjar-0.97/jartool.c 1 Mar 2010 15:38:43 -0000 1.60
|
||||||
|
@@ -790,6 +790,7 @@ int read_entries (int fd)
|
||||||
|
progname, jarfile);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
+ ze->filename[len] = '\0';
|
||||||
|
len = UNPACK_UB4(header, CEN_EFLEN);
|
||||||
|
len += UNPACK_UB4(header, CEN_COMLEN);
|
||||||
|
if (lseek (fd, len, SEEK_CUR) == -1)
|
102
fastjar-CVE-2010-0831.patch
Normal file
102
fastjar-CVE-2010-0831.patch
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
2010-06-10 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
Dan Rosenberg <dan.j.rosenberg@gmail.com>
|
||||||
|
|
||||||
|
* jartool.c (extract_jar): Fix up checks for traversal to parent
|
||||||
|
directories, disallow absolute paths, make the code slightly more
|
||||||
|
efficient.
|
||||||
|
|
||||||
|
--- fastjar-0.97/jartool.c.jj 2009-09-07 00:10:47.000000000 +0200
|
||||||
|
+++ fastjar-0.97/jartool.c 2010-06-08 20:00:29.000000000 +0200
|
||||||
|
@@ -1730,7 +1730,17 @@ int extract_jar(int fd, const char **fil
|
||||||
|
struct stat sbuf;
|
||||||
|
int depth = 0;
|
||||||
|
|
||||||
|
- tmp_buff = malloc(sizeof(char) * strlen((const char *)filename));
|
||||||
|
+ if(*filename == '/'){
|
||||||
|
+ fprintf(stderr, "Absolute path names are not allowed.\n");
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ tmp_buff = malloc(strlen((const char *)filename));
|
||||||
|
+
|
||||||
|
+ if(tmp_buff == NULL) {
|
||||||
|
+ fprintf(stderr, "Out of memory.\n");
|
||||||
|
+ exit(EXIT_FAILURE);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
for(;;){
|
||||||
|
const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/');
|
||||||
|
@@ -1738,25 +1748,28 @@ int extract_jar(int fd, const char **fil
|
||||||
|
if(idx == NULL)
|
||||||
|
break;
|
||||||
|
else if(idx == start){
|
||||||
|
+ tmp_buff[idx - filename] = '/';
|
||||||
|
start++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
- start = idx + 1;
|
||||||
|
|
||||||
|
- strncpy(tmp_buff, (const char *)filename, (idx - filename));
|
||||||
|
- tmp_buff[(idx - filename)] = '\0';
|
||||||
|
+ memcpy(tmp_buff + (start - filename), (const char *)start, (idx - start));
|
||||||
|
+ tmp_buff[idx - filename] = '\0';
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("checking the existance of %s\n", tmp_buff);
|
||||||
|
#endif
|
||||||
|
- if(strcmp(tmp_buff, "..") == 0){
|
||||||
|
+ if(idx - start == 2 && memcmp(start, "..", 2) == 0){
|
||||||
|
--depth;
|
||||||
|
if (depth < 0){
|
||||||
|
fprintf(stderr, "Traversal to parent directories during unpacking!\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
- } else if (strcmp(tmp_buff, ".") != 0)
|
||||||
|
+ } else if (idx - start != 1 || *start != '.')
|
||||||
|
++depth;
|
||||||
|
+
|
||||||
|
+ start = idx + 1;
|
||||||
|
+
|
||||||
|
if(stat(tmp_buff, &sbuf) < 0){
|
||||||
|
if(errno != ENOENT)
|
||||||
|
exit_on_error("stat");
|
||||||
|
@@ -1765,6 +1778,7 @@ int extract_jar(int fd, const char **fil
|
||||||
|
#ifdef DEBUG
|
||||||
|
printf("Directory exists\n");
|
||||||
|
#endif
|
||||||
|
+ tmp_buff[idx - filename] = '/';
|
||||||
|
continue;
|
||||||
|
}else {
|
||||||
|
fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n",
|
||||||
|
@@ -1781,10 +1795,11 @@ int extract_jar(int fd, const char **fil
|
||||||
|
if(verbose && handle)
|
||||||
|
printf("%10s: %s/\n", "created", tmp_buff);
|
||||||
|
|
||||||
|
+ tmp_buff[idx - filename] = '/';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* only a directory */
|
||||||
|
- if(strlen((const char *)start) == 0)
|
||||||
|
+ if(*start == '\0')
|
||||||
|
dir = TRUE;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
@@ -1792,7 +1807,7 @@ int extract_jar(int fd, const char **fil
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If the entry was just a directory, don't write to file, etc */
|
||||||
|
- if(strlen((const char *)start) == 0)
|
||||||
|
+ if(*start == '\0')
|
||||||
|
f_fd = -1;
|
||||||
|
|
||||||
|
free(tmp_buff);
|
||||||
|
@@ -1876,7 +1891,8 @@ int extract_jar(int fd, const char **fil
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
- close(f_fd);
|
||||||
|
+ if (f_fd != -1)
|
||||||
|
+ close(f_fd);
|
||||||
|
|
||||||
|
if(verbose && dir == FALSE && handle)
|
||||||
|
printf("%10s: %s\n",
|
27
fastjar-man.patch
Normal file
27
fastjar-man.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
2010-03-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* Makefile.am (POD2MAN): Provide --date from ChangeLog.
|
||||||
|
* Makefile.in: Regenerate.
|
||||||
|
|
||||||
|
--- fastjar-0.97/Makefile.am.jj 2008-10-16 04:24:55.000000000 -0400
|
||||||
|
+++ fastjar-0.97/Makefile.am 2010-06-21 09:29:41.021398000 -0400
|
||||||
|
@@ -39,7 +39,7 @@ EXTRA_DIST = \
|
||||||
|
texi2pod.pl
|
||||||
|
|
||||||
|
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||||
|
-POD2MAN = pod2man --center="GNU" --release=@VERSION@
|
||||||
|
+POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog)
|
||||||
|
|
||||||
|
.pod.1:
|
||||||
|
-($(POD2MAN) --section=1 $< > $(@).T$$$$ && \
|
||||||
|
--- fastjar-0.97/Makefile.in.jj 2008-10-16 04:15:16.000000000 -0400
|
||||||
|
+++ fastjar-0.97/Makefile.in 2010-06-21 09:30:15.882810000 -0400
|
||||||
|
@@ -515,7 +515,7 @@ EXTRA_DIST = \
|
||||||
|
texi2pod.pl
|
||||||
|
|
||||||
|
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
||||||
|
-POD2MAN = pod2man --center="GNU" --release=@VERSION@
|
||||||
|
+POD2MAN = pod2man --center="GNU" --release=@VERSION@ --date=$(shell sed -n '1s/ .*//p' <$(srcdir)/ChangeLog)
|
||||||
|
|
||||||
|
#SPLINT_FLAGS=-I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H +posixlib +weak
|
||||||
|
SPLINT_FLAGS = -I . -I $(srcdir)/lib -I $(srcdir) -DHAVE_CONFIG_H -DPRIx32= -warnposix +weak
|
@ -1,17 +0,0 @@
|
|||||||
2008-01-25 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* lang.c (java_classify_record): Revert 2007-12-20 change.
|
|
||||||
|
|
||||||
--- gcc/java/lang.c 2007-12-27 09:09:49.000000000 +0100
|
|
||||||
+++ gcc/java/lang.c 2008-01-25 17:43:57.000000000 +0100
|
|
||||||
@@ -965,9 +965,7 @@ java_classify_record (tree type)
|
|
||||||
if (! CLASS_P (type))
|
|
||||||
return RECORD_IS_STRUCT;
|
|
||||||
|
|
||||||
- /* ??? GDB does not support DW_TAG_interface_type as of December,
|
|
||||||
- 2007. Re-enable this at a later time. */
|
|
||||||
- if (0 && CLASS_INTERFACE (TYPE_NAME (type)))
|
|
||||||
+ if (CLASS_INTERFACE (TYPE_NAME (type)))
|
|
||||||
return RECORD_IS_INTERFACE;
|
|
||||||
|
|
||||||
return RECORD_IS_CLASS;
|
|
@ -1,229 +0,0 @@
|
|||||||
2010-01-05 Alexandre Oliva <aoliva@redhat.com>
|
|
||||||
|
|
||||||
* params.def (PARAM_MAX_VARTRACK_SIZE): New.
|
|
||||||
* doc/invoke.texi: Document it.
|
|
||||||
* var-tracking.c: Include toplev.h and params.h.
|
|
||||||
(vt_find_locations): Return bool indicating success. Compute
|
|
||||||
hash sizes unconditionally. Check new parameter, report.
|
|
||||||
(variable_tracking_main_1): Check vt_find_locations results and
|
|
||||||
retry. Renamed from...
|
|
||||||
(variable_tracking_main): ... this. New wrapper to preserve
|
|
||||||
flag_var_tracking_assignments.
|
|
||||||
* Makefile.in (var-tracking.o): Adjust dependencies.
|
|
||||||
|
|
||||||
--- gcc/doc/invoke.texi.jj 2010-01-09 20:39:58.000000000 +0100
|
|
||||||
+++ gcc/doc/invoke.texi 2010-01-21 10:00:15.979730377 +0100
|
|
||||||
@@ -7937,6 +7937,15 @@ with more basic blocks than this paramet
|
|
||||||
motion optimization performed on them. The default value of the
|
|
||||||
parameter is 1000 for -O1 and 10000 for -O2 and above.
|
|
||||||
|
|
||||||
+@item max-vartrack-size
|
|
||||||
+Sets a maximum number of hash table slots to use during variable
|
|
||||||
+tracking dataflow analysis of any function. If this limit is exceeded
|
|
||||||
+with variable tracking at assignments enabled, analysis for that
|
|
||||||
+function is retried without it, after removing all debug insns from
|
|
||||||
+the function. If the limit is exceeded even without debug insns, var
|
|
||||||
+tracking analysis is completely disabled for the function. Setting
|
|
||||||
+the parameter to zero makes it unlimited.
|
|
||||||
+
|
|
||||||
@item min-nondebug-insn-uid
|
|
||||||
Use uids starting at this parameter for nondebug insns. The range below
|
|
||||||
the parameter is reserved exclusively for debug insns created by
|
|
||||||
--- gcc/params.def.jj 2010-01-09 20:39:58.000000000 +0100
|
|
||||||
+++ gcc/params.def 2010-01-21 10:00:15.980730943 +0100
|
|
||||||
@@ -771,6 +771,13 @@ DEFPARAM (PARAM_LOOP_INVARIANT_MAX_BBS_I
|
|
||||||
"max basic blocks number in loop for loop invariant motion",
|
|
||||||
10000, 0, 0)
|
|
||||||
|
|
||||||
+/* Set maximum hash table size for var tracking. */
|
|
||||||
+
|
|
||||||
+DEFPARAM (PARAM_MAX_VARTRACK_SIZE,
|
|
||||||
+ "max-vartrack-size",
|
|
||||||
+ "Max. size of var tracking hash tables",
|
|
||||||
+ 50000000, 0, 0)
|
|
||||||
+
|
|
||||||
/* Set minimum insn uid for non-debug insns. */
|
|
||||||
|
|
||||||
DEFPARAM (PARAM_MIN_NONDEBUG_INSN_UID,
|
|
||||||
--- gcc/var-tracking.c.jj 2010-01-21 09:10:37.000000000 +0100
|
|
||||||
+++ gcc/var-tracking.c 2010-01-21 10:00:15.983740989 +0100
|
|
||||||
@@ -109,6 +109,8 @@
|
|
||||||
#include "tree-flow.h"
|
|
||||||
#include "cselib.h"
|
|
||||||
#include "target.h"
|
|
||||||
+#include "toplev.h"
|
|
||||||
+#include "params.h"
|
|
||||||
|
|
||||||
/* var-tracking.c assumes that tree code with the same value as VALUE rtx code
|
|
||||||
has no chance to appear in REG_EXPR/MEM_EXPRs and isn't a decl.
|
|
||||||
@@ -451,7 +453,7 @@ static int add_uses (rtx *, void *);
|
|
||||||
static void add_uses_1 (rtx *, void *);
|
|
||||||
static void add_stores (rtx, const_rtx, void *);
|
|
||||||
static bool compute_bb_dataflow (basic_block);
|
|
||||||
-static void vt_find_locations (void);
|
|
||||||
+static bool vt_find_locations (void);
|
|
||||||
|
|
||||||
static void dump_attrs_list (attrs);
|
|
||||||
static int dump_var_slot (void **, void *);
|
|
||||||
@@ -5511,7 +5513,7 @@ compute_bb_dataflow (basic_block bb)
|
|
||||||
|
|
||||||
/* Find the locations of variables in the whole function. */
|
|
||||||
|
|
||||||
-static void
|
|
||||||
+static bool
|
|
||||||
vt_find_locations (void)
|
|
||||||
{
|
|
||||||
fibheap_t worklist, pending, fibheap_swap;
|
|
||||||
@@ -5522,6 +5524,8 @@ vt_find_locations (void)
|
|
||||||
int *rc_order;
|
|
||||||
int i;
|
|
||||||
int htabsz = 0;
|
|
||||||
+ int htabmax = PARAM_VALUE (PARAM_MAX_VARTRACK_SIZE);
|
|
||||||
+ bool success = true;
|
|
||||||
|
|
||||||
/* Compute reverse completion order of depth first search of the CFG
|
|
||||||
so that the data-flow runs faster. */
|
|
||||||
@@ -5543,7 +5547,7 @@ vt_find_locations (void)
|
|
||||||
fibheap_insert (pending, bb_order[bb->index], bb);
|
|
||||||
sbitmap_ones (in_pending);
|
|
||||||
|
|
||||||
- while (!fibheap_empty (pending))
|
|
||||||
+ while (success && !fibheap_empty (pending))
|
|
||||||
{
|
|
||||||
fibheap_swap = pending;
|
|
||||||
pending = worklist;
|
|
||||||
@@ -5566,11 +5570,11 @@ vt_find_locations (void)
|
|
||||||
|
|
||||||
SET_BIT (visited, bb->index);
|
|
||||||
|
|
||||||
- if (dump_file && VTI (bb)->in.vars)
|
|
||||||
+ if (VTI (bb)->in.vars)
|
|
||||||
{
|
|
||||||
htabsz
|
|
||||||
- -= htab_size (shared_hash_htab (VTI (bb)->in.vars))
|
|
||||||
- + htab_size (shared_hash_htab (VTI (bb)->out.vars));
|
|
||||||
+ -= (htab_size (shared_hash_htab (VTI (bb)->in.vars))
|
|
||||||
+ + htab_size (shared_hash_htab (VTI (bb)->out.vars)));
|
|
||||||
oldinsz
|
|
||||||
= htab_elements (shared_hash_htab (VTI (bb)->in.vars));
|
|
||||||
oldoutsz
|
|
||||||
@@ -5634,9 +5638,20 @@ vt_find_locations (void)
|
|
||||||
}
|
|
||||||
|
|
||||||
changed = compute_bb_dataflow (bb);
|
|
||||||
- if (dump_file)
|
|
||||||
- htabsz += htab_size (shared_hash_htab (VTI (bb)->in.vars))
|
|
||||||
- + htab_size (shared_hash_htab (VTI (bb)->out.vars));
|
|
||||||
+ htabsz += (htab_size (shared_hash_htab (VTI (bb)->in.vars))
|
|
||||||
+ + htab_size (shared_hash_htab (VTI (bb)->out.vars)));
|
|
||||||
+
|
|
||||||
+ if (htabmax && htabsz > htabmax)
|
|
||||||
+ {
|
|
||||||
+ if (MAY_HAVE_DEBUG_INSNS)
|
|
||||||
+ inform (DECL_SOURCE_LOCATION (cfun->decl),
|
|
||||||
+ "variable tracking size limit exceeded with debug insns, retrying without");
|
|
||||||
+ else
|
|
||||||
+ inform (DECL_SOURCE_LOCATION (cfun->decl),
|
|
||||||
+ "variable tracking size limit exceeded");
|
|
||||||
+ success = false;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (changed)
|
|
||||||
{
|
|
||||||
@@ -5687,7 +5702,7 @@ vt_find_locations (void)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (MAY_HAVE_DEBUG_INSNS)
|
|
||||||
+ if (success && MAY_HAVE_DEBUG_INSNS)
|
|
||||||
FOR_EACH_BB (bb)
|
|
||||||
gcc_assert (VTI (bb)->flooded);
|
|
||||||
|
|
||||||
@@ -5698,6 +5713,8 @@ vt_find_locations (void)
|
|
||||||
sbitmap_free (visited);
|
|
||||||
sbitmap_free (in_worklist);
|
|
||||||
sbitmap_free (in_pending);
|
|
||||||
+
|
|
||||||
+ return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print the content of the LIST to dump file. */
|
|
||||||
@@ -7600,9 +7617,11 @@ vt_finalize (void)
|
|
||||||
|
|
||||||
/* The entry point to variable tracking pass. */
|
|
||||||
|
|
||||||
-unsigned int
|
|
||||||
-variable_tracking_main (void)
|
|
||||||
+static inline unsigned int
|
|
||||||
+variable_tracking_main_1 (void)
|
|
||||||
{
|
|
||||||
+ bool success;
|
|
||||||
+
|
|
||||||
if (flag_var_tracking_assignments < 0)
|
|
||||||
{
|
|
||||||
delete_debug_insns ();
|
|
||||||
@@ -7627,7 +7646,31 @@ variable_tracking_main (void)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- vt_find_locations ();
|
|
||||||
+ success = vt_find_locations ();
|
|
||||||
+
|
|
||||||
+ if (!success && flag_var_tracking_assignments > 0)
|
|
||||||
+ {
|
|
||||||
+ vt_finalize ();
|
|
||||||
+
|
|
||||||
+ delete_debug_insns ();
|
|
||||||
+
|
|
||||||
+ /* This is later restored by our caller. */
|
|
||||||
+ flag_var_tracking_assignments = 0;
|
|
||||||
+
|
|
||||||
+ vt_initialize ();
|
|
||||||
+
|
|
||||||
+ if (!frame_pointer_needed && !vt_stack_adjustments ())
|
|
||||||
+ gcc_unreachable ();
|
|
||||||
+
|
|
||||||
+ success = vt_find_locations ();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (!success)
|
|
||||||
+ {
|
|
||||||
+ vt_finalize ();
|
|
||||||
+ vt_debug_insns_local (false);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
|
||||||
{
|
|
||||||
@@ -7641,6 +7684,19 @@ variable_tracking_main (void)
|
|
||||||
vt_debug_insns_local (false);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+unsigned int
|
|
||||||
+variable_tracking_main (void)
|
|
||||||
+{
|
|
||||||
+ unsigned int ret;
|
|
||||||
+ int save = flag_var_tracking_assignments;
|
|
||||||
+
|
|
||||||
+ ret = variable_tracking_main_1 ();
|
|
||||||
+
|
|
||||||
+ flag_var_tracking_assignments = save;
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
|
|
||||||
static bool
|
|
||||||
gate_handle_var_tracking (void)
|
|
||||||
--- gcc/Makefile.in.jj 2010-01-21 08:58:12.000000000 +0100
|
|
||||||
+++ gcc/Makefile.in 2010-01-21 10:00:45.555730868 +0100
|
|
||||||
@@ -2751,7 +2751,7 @@ var-tracking.o : var-tracking.c $(CONFIG
|
|
||||||
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
|
|
||||||
$(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
|
|
||||||
$(REGS_H) $(EXPR_H) $(TIMEVAR_H) tree-pass.h cselib.h $(TARGET_H) \
|
|
||||||
- $(TREE_FLOW_H)
|
|
||||||
+ $(TREE_FLOW_H) $(TOPLEV_H) $(PARAMS_H)
|
|
||||||
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
|
|
||||||
$(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
|
|
||||||
$(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
|
|
@ -1,28 +0,0 @@
|
|||||||
2007-10-21 Jakub Jelinek <jakub@redhat.com>
|
|
||||||
|
|
||||||
* doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
|
|
||||||
timestamp rather than from current date.
|
|
||||||
* doc/Makefile.in: Regenerated.
|
|
||||||
|
|
||||||
--- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100
|
|
||||||
+++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100
|
|
||||||
@@ -31,7 +31,7 @@ TOOLS_MANFILES = \
|
|
||||||
gtnameserv.1 \
|
|
||||||
gjdoc.1
|
|
||||||
|
|
||||||
-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
|
|
||||||
+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
|
|
||||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
|
||||||
STAMP = echo timestamp >
|
|
||||||
|
|
||||||
--- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100
|
|
||||||
+++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100
|
|
||||||
@@ -382,7 +382,7 @@ TOOLS_MANFILES = \
|
|
||||||
gtnameserv.1 \
|
|
||||||
gjdoc.1
|
|
||||||
|
|
||||||
-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
|
|
||||||
+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
|
|
||||||
TEXI2POD = perl $(srcdir)/texi2pod.pl
|
|
||||||
STAMP = echo timestamp >
|
|
||||||
@GENINSRC_FALSE@STAMP_GENINSRC =
|
|
153
gcc44-rh533181.patch
Normal file
153
gcc44-rh533181.patch
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
2010-07-22 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* gimplify.c (enum gimplify_omp_var_data): Add
|
||||||
|
GOVD_THREADPRIVATE_WARNED.
|
||||||
|
(gimplify_bind_expr): Add GOVD_LOCAL | GOVD_SEEN even for global vars.
|
||||||
|
(omp_notice_threadprivate_variable): Note used threadprivate vars
|
||||||
|
with current function's context in shared clauses.
|
||||||
|
(gimplify_adjust_omp_clauses_1): Allow globals with current function's
|
||||||
|
context in taskreg shared clause.
|
||||||
|
* omp-low.c (lower_rec_input_clauses): For function-local is_global_var
|
||||||
|
VAR_DECLs in shared clauses add a decl copy with DECL_VALUE_EXPR
|
||||||
|
pointing to the original.
|
||||||
|
|
||||||
|
* trans-openmp.c (gfc_omp_private_debug_clause): Return false for
|
||||||
|
threadprivate decls.
|
||||||
|
|
||||||
|
* gcc.dg/gomp/tls-3.c: New test.
|
||||||
|
|
||||||
|
--- gcc/fortran/trans-openmp.c.jj 2010-06-24 21:47:09.908230044 +0200
|
||||||
|
+++ gcc/fortran/trans-openmp.c 2010-07-26 10:45:15.830229443 +0200
|
||||||
|
@@ -351,6 +351,18 @@ gfc_omp_disregard_value_expr (tree decl,
|
||||||
|
bool
|
||||||
|
gfc_omp_private_debug_clause (tree decl, bool shared)
|
||||||
|
{
|
||||||
|
+ if (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
|
||||||
|
+ {
|
||||||
|
+ if (DECL_THREAD_LOCAL_P (decl))
|
||||||
|
+ return false;
|
||||||
|
+ if (DECL_HAS_VALUE_EXPR_P (decl))
|
||||||
|
+ {
|
||||||
|
+ tree value = get_base_address (DECL_VALUE_EXPR (decl));
|
||||||
|
+ if (value && DECL_P (value) && DECL_THREAD_LOCAL_P (value))
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (GFC_DECL_CRAY_POINTEE (decl))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
--- gcc/gimplify.c.jj 2010-07-09 09:01:37.049604412 +0200
|
||||||
|
+++ gcc/gimplify.c 2010-07-26 10:50:05.646291216 +0200
|
||||||
|
@@ -66,6 +66,7 @@ enum gimplify_omp_var_data
|
||||||
|
GOVD_LOCAL = 128,
|
||||||
|
GOVD_DEBUG_PRIVATE = 256,
|
||||||
|
GOVD_PRIVATE_OUTER_REF = 512,
|
||||||
|
+ GOVD_THREADPRIVATE_WARNED = 1024,
|
||||||
|
GOVD_DATA_SHARE_CLASS = (GOVD_SHARED | GOVD_PRIVATE | GOVD_FIRSTPRIVATE
|
||||||
|
| GOVD_LASTPRIVATE | GOVD_REDUCTION | GOVD_LOCAL)
|
||||||
|
};
|
||||||
|
@@ -1234,7 +1235,7 @@ gimplify_bind_expr (tree *expr_p, gimple
|
||||||
|
struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp;
|
||||||
|
|
||||||
|
/* Mark variable as local. */
|
||||||
|
- if (ctx && !is_global_var (t)
|
||||||
|
+ if (ctx
|
||||||
|
&& (! DECL_SEEN_IN_BIND_EXPR_P (t)
|
||||||
|
|| splay_tree_lookup (ctx->variables,
|
||||||
|
(splay_tree_key) t) == NULL))
|
||||||
|
@@ -5339,18 +5340,36 @@ omp_notice_threadprivate_variable (struc
|
||||||
|
{
|
||||||
|
splay_tree_node n;
|
||||||
|
|
||||||
|
- if (ctx->region_type != ORT_UNTIED_TASK)
|
||||||
|
+ while (ctx && ctx->region_type == ORT_WORKSHARE)
|
||||||
|
+ {
|
||||||
|
+ n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl);
|
||||||
|
+ if (n != NULL)
|
||||||
|
+ {
|
||||||
|
+ gcc_assert (n->value & GOVD_LOCAL);
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ ctx = ctx->outer_context;
|
||||||
|
+ }
|
||||||
|
+ if (ctx == NULL)
|
||||||
|
return false;
|
||||||
|
+
|
||||||
|
n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl);
|
||||||
|
if (n == NULL)
|
||||||
|
+ n = splay_tree_insert (ctx->variables, (splay_tree_key)decl,
|
||||||
|
+ DECL_CONTEXT (decl) == current_function_decl
|
||||||
|
+ ? GOVD_SHARED | GOVD_SEEN : 0);
|
||||||
|
+ if (ctx->region_type == ORT_UNTIED_TASK
|
||||||
|
+ && (n->value & GOVD_THREADPRIVATE_WARNED) == 0)
|
||||||
|
{
|
||||||
|
error ("threadprivate variable %qs used in untied task",
|
||||||
|
IDENTIFIER_POINTER (DECL_NAME (decl)));
|
||||||
|
error ("%Henclosing task", &ctx->location);
|
||||||
|
- splay_tree_insert (ctx->variables, (splay_tree_key)decl, 0);
|
||||||
|
+ n->value |= GOVD_THREADPRIVATE_WARNED;
|
||||||
|
}
|
||||||
|
if (decl2)
|
||||||
|
- splay_tree_insert (ctx->variables, (splay_tree_key)decl2, 0);
|
||||||
|
+ splay_tree_insert (ctx->variables, (splay_tree_key)decl2,
|
||||||
|
+ DECL_CONTEXT (decl2) == current_function_decl
|
||||||
|
+ ? GOVD_SHARED | GOVD_SEEN : 0);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -5779,7 +5798,9 @@ gimplify_adjust_omp_clauses_1 (splay_tre
|
||||||
|
break;
|
||||||
|
ctx = ctx->outer_context;
|
||||||
|
}
|
||||||
|
- if (ctx == NULL)
|
||||||
|
+ if (ctx == NULL
|
||||||
|
+ && (DECL_CONTEXT (decl) != current_function_decl
|
||||||
|
+ || gimplify_omp_ctxp->region_type == ORT_WORKSHARE))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
code = OMP_CLAUSE_SHARED;
|
||||||
|
--- gcc/omp-low.c.jj 2010-06-11 11:06:00.913659301 +0200
|
||||||
|
+++ gcc/omp-low.c 2010-07-26 10:45:15.866229447 +0200
|
||||||
|
@@ -2222,6 +2222,17 @@ lower_rec_input_clauses (tree clauses, g
|
||||||
|
continue;
|
||||||
|
break;
|
||||||
|
case OMP_CLAUSE_SHARED:
|
||||||
|
+ if (pass == 0
|
||||||
|
+ && is_global_var (OMP_CLAUSE_DECL (c))
|
||||||
|
+ && (DECL_CONTEXT (OMP_CLAUSE_DECL (c))
|
||||||
|
+ == current_function_decl)
|
||||||
|
+ && is_taskreg_ctx (ctx)
|
||||||
|
+ && !DECL_IGNORED_P (OMP_CLAUSE_DECL (c)))
|
||||||
|
+ {
|
||||||
|
+ new_var = omp_copy_decl_1 (OMP_CLAUSE_DECL (c), ctx);
|
||||||
|
+ SET_DECL_VALUE_EXPR (new_var, OMP_CLAUSE_DECL (c));
|
||||||
|
+ DECL_HAS_VALUE_EXPR_P (new_var) = 1;
|
||||||
|
+ }
|
||||||
|
if (maybe_lookup_decl (OMP_CLAUSE_DECL (c), ctx) == NULL)
|
||||||
|
{
|
||||||
|
gcc_assert (is_global_var (OMP_CLAUSE_DECL (c)));
|
||||||
|
--- gcc/testsuite/gcc.dg/gomp/tls-3.c.jj 2010-07-26 10:45:15.868228753 +0200
|
||||||
|
+++ gcc/testsuite/gcc.dg/gomp/tls-3.c 2010-07-26 10:45:15.868228753 +0200
|
||||||
|
@@ -0,0 +1,21 @@
|
||||||
|
+/* { dg-do compile } */
|
||||||
|
+/* { dg-require-effective-target tls_native } */
|
||||||
|
+
|
||||||
|
+int thr;
|
||||||
|
+#pragma omp threadprivate(thr)
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+foo (void)
|
||||||
|
+{
|
||||||
|
+ #pragma omp task untied /* { dg-error "enclosing task" } */
|
||||||
|
+ {
|
||||||
|
+ static int thr2;
|
||||||
|
+ #pragma omp threadprivate(thr2)
|
||||||
|
+ static int thr3;
|
||||||
|
+ #pragma omp threadprivate(thr3)
|
||||||
|
+ thr++; /* { dg-error "used in untied task" } */
|
||||||
|
+ thr2++; /* { dg-error "used in untied task" } */
|
||||||
|
+ thr++;
|
||||||
|
+ thr2++;
|
||||||
|
+ }
|
||||||
|
+}
|
74
gcc44-rh610785.patch
Normal file
74
gcc44-rh610785.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
2010-07-07 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* tree-sra.c (sra_build_assignment): Don't add BIT_XOR_EXPR/MINUS_EXPR
|
||||||
|
of signbit if signbit is the most significant bit of utype already.
|
||||||
|
|
||||||
|
* gcc.c-torture/execute/20100707-1.c: New test.
|
||||||
|
|
||||||
|
--- gcc/tree-sra.c.jj 2010-05-13 13:08:52.000000000 +0200
|
||||||
|
+++ gcc/tree-sra.c 2010-07-06 19:50:09.000000000 +0200
|
||||||
|
@@ -2211,7 +2211,10 @@ sra_build_assignment (tree dst, tree src
|
||||||
|
|
||||||
|
/* Perform sign extension, if required.
|
||||||
|
??? This should never be necessary. */
|
||||||
|
- if (!unsignedp)
|
||||||
|
+ if (!unsignedp
|
||||||
|
+ && (TREE_INT_CST_LOW (width) != TYPE_PRECISION (utype)
|
||||||
|
+ || (TREE_INT_CST_LOW (width)
|
||||||
|
+ != GET_MODE_BITSIZE (TYPE_MODE (utype)))))
|
||||||
|
{
|
||||||
|
tree signbit = int_const_binop (LSHIFT_EXPR,
|
||||||
|
build_int_cst_wide (utype, 1, 0),
|
||||||
|
--- gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-05-27 15:41:40.446237053 +0200
|
||||||
|
+++ gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-07-06 13:55:35.000000000 +0200
|
||||||
|
@@ -0,0 +1,50 @@
|
||||||
|
+struct S { int s; };
|
||||||
|
+struct T { int w; int h; };
|
||||||
|
+int vr;
|
||||||
|
+
|
||||||
|
+inline struct T
|
||||||
|
+bar (const struct S * x)
|
||||||
|
+{
|
||||||
|
+ struct T t;
|
||||||
|
+ t.w = vr;
|
||||||
|
+ t.h = x->s;
|
||||||
|
+ return t;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+__attribute__ ((noinline))
|
||||||
|
+void foo (struct S * w, unsigned char *x, int y, int *z[2])
|
||||||
|
+{
|
||||||
|
+ struct T t;
|
||||||
|
+ int i, j, k;
|
||||||
|
+ t = bar (w);
|
||||||
|
+ k = t.w + 2;
|
||||||
|
+ for (i = 0; i <= t.h; i++)
|
||||||
|
+ {
|
||||||
|
+ int *u = z[i > 0] + 1;
|
||||||
|
+ unsigned char *v;
|
||||||
|
+ int q = 0;
|
||||||
|
+ v = x + k * i + 1;
|
||||||
|
+ for (j = 0; j < t.w; j++)
|
||||||
|
+ {
|
||||||
|
+ int m = u[j];
|
||||||
|
+ if (m > y && !q && v[j - k] != 2)
|
||||||
|
+ v[j] = 0;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+unsigned char b[64];
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+main (void)
|
||||||
|
+{
|
||||||
|
+ int v[32], *z[2];
|
||||||
|
+ struct S s;
|
||||||
|
+ __builtin_memset (v, 0, sizeof (v));
|
||||||
|
+ vr = 16;
|
||||||
|
+ s.s = 16;
|
||||||
|
+ z[0] = v;
|
||||||
|
+ z[1] = v;
|
||||||
|
+ foo (&s, b + 32, -1, z);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
@ -6,7 +6,7 @@
|
|||||||
;;
|
;;
|
||||||
-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 linux.h"
|
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/gas.h linux.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*
|
@@ -2287,7 +2287,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
|
||||||
@ -15,7 +15,7 @@
|
|||||||
;;
|
;;
|
||||||
-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 linux.h sparc/linux64.h"
|
tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/gas.h linux.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
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2010-04-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* unwind-dw2.c (_Unwind_DebugHook): Add used attribute.
|
||||||
|
|
||||||
2009-05-27 Tom Tromey <tromey@redhat.com>
|
2009-05-27 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
* unwind-dw2.c (_Unwind_DebugHook): New function.
|
* unwind-dw2.c (_Unwind_DebugHook): New function.
|
||||||
@ -5,11 +9,12 @@
|
|||||||
|
|
||||||
--- gcc/unwind-dw2.c (revision 147933)
|
--- gcc/unwind-dw2.c (revision 147933)
|
||||||
+++ gcc/unwind-dw2.c (revision 147934)
|
+++ gcc/unwind-dw2.c (revision 147934)
|
||||||
@@ -1473,18 +1473,31 @@ uw_init_context_1 (struct _Unwind_Contex
|
@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex
|
||||||
context->ra = __builtin_extract_return_addr (outer_ra);
|
context->ra = __builtin_extract_return_addr (outer_ra);
|
||||||
}
|
}
|
||||||
|
|
||||||
+static void _Unwind_DebugHook (void *, void *) __attribute__ ((__noinline__));
|
+static void _Unwind_DebugHook (void *, void *)
|
||||||
|
+ __attribute__ ((__noinline__, __used__));
|
||||||
+
|
+
|
||||||
+/* This function is called during unwinding. It is intended as a hook
|
+/* This function is called during unwinding. It is intended as a hook
|
||||||
+ for a debugger to intercept exceptions. CFA is the CFA of the
|
+ for a debugger to intercept exceptions. CFA is the CFA of the
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
gcc-4_4_0-0_3:HEAD:gcc-4.4.0-0.3.src.rpm:1232130841
|
|
||||||
gcc-4_4_0-5:HEAD:gcc-4.4.0-5.src.rpm:1242291126
|
|
||||||
gcc-4_4_2-14_fc13:HEAD:gcc-4.4.2-14.fc13.src.rpm:1259930464
|
|
||||||
gcc-4_4_2-20_fc13:HEAD:gcc-4.4.2-20.fc13.src.rpm:1261484502
|
|
||||||
gcc-4_4_2-25_fc13:HEAD:gcc-4.4.2-25.fc13.src.rpm:1263487371
|
|
||||||
gcc-4_4_3-1_fc13:HEAD:gcc-4.4.3-1.fc13.src.rpm:1264094717
|
|
||||||
gcc-4_4_3-4_fc13:HEAD:gcc-4.4.3-4.fc13.src.rpm:1264621537
|
|
||||||
gcc-4_4_3-5_fc13:HEAD:gcc-4.4.3-5.fc13.src.rpm:1265659730
|
|
||||||
gcc-4_4_3-6_fc13:HEAD:gcc-4.4.3-6.fc13.src.rpm:1265925505
|
|
Loading…
Reference in New Issue
Block a user